commons-assessment 12.0.39-dev.1 → 12.0.39-dev.3
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/README.md +1 -0
- package/bundles/commons-assessment.umd.js +167 -85
- package/bundles/commons-assessment.umd.js.map +1 -1
- package/esm2015/lib/modules/assessment-maker/assessment-maker.component.js +1 -1
- package/esm2015/lib/modules/assessment-maker/components/add-edit-section-introduction/add-edit-section-introduction.component.js +1 -1
- package/esm2015/lib/modules/assessment-maker/components/assessment-builder/assessment-builder.component.js +1 -1
- package/esm2015/lib/modules/assessment-maker/components/question-details/question-details.component.js +1 -1
- package/esm2015/lib/modules/assessment-taker/assessment-taker.component.js +81 -5
- package/esm2015/lib/modules/assessment-taker/components/proctoring-consent/proctoring-consent.component.js +2 -2
- package/esm2015/lib/modules/assessment-taker/components/proctoring-result/proctoring-result.component.js +2 -2
- package/esm2015/lib/modules/assessment-taker/components/question-type-date-picker/question-type-date-picker.component.js +1 -1
- package/esm2015/lib/modules/assessment-taker/components/question-type-editor/question-type-editor.component.js +1 -1
- package/esm2015/lib/modules/assessment-taker/components/question-type-file-upload/question-type-file-upload.component.js +1 -1
- package/esm2015/lib/modules/assessment-taker/components/question-type-long/question-type-long.component.js +1 -1
- package/esm2015/lib/modules/assessment-taker/components/question-type-multiselect/question-type-multiselect.component.js +1 -1
- package/esm2015/lib/modules/assessment-taker/components/question-type-objective/question-type-objective.component.js +1 -1
- package/esm2015/lib/modules/assessment-taker/components/question-type-preference/question-type-preference.component.js +1 -1
- package/esm2015/lib/modules/assessment-taker/components/question-type-short/question-type-short.component.js +1 -1
- package/esm2015/lib/modules/assessment-taker/components/section-instructions/section-instructions.component.js +1 -1
- package/esm2015/lib/modules/assessment-taker/services/proctoring.service.js +14 -6
- package/esm2015/lib/shared/components/confirmation-dialog/confirmation-dialog.component.js +2 -2
- package/esm2015/lib/shared/components/skill-allocation/skill-allocation.component.js +1 -1
- package/esm2015/lib/shared/interfaces/proctoring.interface.js +1 -1
- package/fesm2015/commons-assessment.js +159 -76
- package/fesm2015/commons-assessment.js.map +1 -1
- package/lib/modules/assessment-taker/assessment-taker.component.d.ts +20 -1
- package/lib/modules/assessment-taker/services/proctoring.service.d.ts +1 -0
- package/lib/shared/interfaces/proctoring.interface.d.ts +7 -0
- package/package.json +1 -1
- package/src/lib/assets/json/labelConfig.json +3 -0
- package/src/lib/assets/theme/_theme.global.scss +1 -0
- package/src/lib/assets/theme/styles.global.scss +18 -0
|
@@ -103,7 +103,7 @@ export class ProctoringConsentComponent {
|
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
105
|
ProctoringConsentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProctoringConsentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
106
|
-
ProctoringConsentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ProctoringConsentComponent, selector: "lib-proctoring-consent", inputs: { labelConfig: "labelConfig", proctoringEnabled: "proctoringEnabled", requireCapture: "requireCapture", sectionCount: "sectionCount", questionCount: "questionCount", durationSeconds: "durationSeconds", confirmAction: "confirmAction" }, outputs: { proceeded: "proceeded" }, viewQueries: [{ propertyName: "videoRef", first: true, predicate: ["video"], descendants: true }, { propertyName: "canvasRef", first: true, predicate: ["canvas"], descendants: true }], ngImport: i0, template: "<div class=\"proctoring-intro d-flex flex-column align-items-center justify-content-start py-4\">\r\n <div class=\"proctoring-intro-card w-100\">\r\n\r\n <h2 class=\"assessment-text-semibold-18 assessment-text-grey-ten mb-1\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.INTRO_TITLE'] }}\r\n </h2>\r\n <p class=\"assessment-text-regular-13 assessment-text-grey-seven mb-3\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.INTRO_SUBTITLE'] }}\r\n </p>\r\n\r\n <!-- Assessment stats -->\r\n <div class=\"row g-2 mb-4\">\r\n <div class=\"col\">\r\n <div class=\"border rounded p-3 text-center h-100\">\r\n <p class=\"assessment-text-semibold-18 assessment-text-grey-ten mb-1\">{{ sectionCount }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.INTRO_SECTIONS'] }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"border rounded p-3 text-center h-100\">\r\n <p class=\"assessment-text-semibold-18 assessment-text-grey-ten mb-1\">{{ questionCount }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.LABEL.QUESTIONS'] }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col\" *ngIf=\"durationSeconds > 0\">\r\n <div class=\"border rounded p-3 text-center h-100\">\r\n <p class=\"assessment-text-semibold-18 assessment-text-grey-ten mb-1\">{{ durationMinutes }} {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.INTRO_MINUTES'] }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.INTRO_TIME'] }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Warnings -->\r\n <div class=\"assessment-bg-palette-FEF1E8 assessment-border-radius-two p-3 mb-4\">\r\n <p class=\"assessment-text-semibold-13 assessment-text-grey-ten mb-2\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.INTRO_WARNINGS_TITLE'] }}</p>\r\n <ul class=\"assessment-text-regular-13 assessment-text-grey-ten mb-0 ps-3\">\r\n <li class=\"mb-1\" *ngIf=\"durationSeconds > 0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.WARN_AUTO_SUBMIT'] }}</li>\r\n <li class=\"mb-1\" *ngIf=\"proctoringEnabled\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.WARN_ONE_ATTEMPT'] }}</li>\r\n <li class=\"mb-1\" *ngIf=\"proctoringEnabled\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.WARN_NO_TAB_SWITCH'] }}</li>\r\n <li class=\"mb-1\" *ngIf=\"proctoringEnabled\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.WARN_NO_REFRESH'] }}</li>\r\n <li *ngIf=\"proctoringEnabled\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.WARN_QUIET_ROOM'] }}</li>\r\n </ul>\r\n </div>\r\n\r\n <!-- Proctoring consent (only when proctoring is enabled) -->\r\n <p *ngIf=\"proctoringEnabled\" class=\"assessment-text-regular-13 assessment-text-grey-ten mb-3\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.CONSENT_MESSAGE'] }}\r\n </p>\r\n\r\n <!-- Reference-image capture (first attempt only) -->\r\n <ng-container *ngIf=\"requireCapture\">\r\n <p class=\"assessment-text-medium-13 assessment-text-grey-ten mb-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.CAPTURE_INSTRUCTION'] }}\r\n </p>\r\n\r\n <div class=\"position-relative overflow-hidden assessment-bg-grey-two assessment-border-radius-two mb-2\">\r\n <video #video autoplay playsinline muted class=\"proctoring-cam proctoring-cam--mirror\" [hidden]=\"captured\"></video>\r\n <img *ngIf=\"captured\" [src]=\"capturedUrl\" class=\"proctoring-cam\" alt=\"reference\" />\r\n <canvas #canvas hidden></canvas>\r\n\r\n <div *ngIf=\"!cameraReady && !cameraError && !captured\"\r\n class=\"proctoring-cam-overlay assessment-text-regular-12 assessment-text-grey-seven position-absolute d-flex align-items-center justify-content-center\">\r\n <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.CAMERA_STARTING'] }}\r\n </div>\r\n </div>\r\n\r\n <p *ngIf=\"cameraError\" class=\"assessment-text-regular-12 assessment-text-danger mb-2\">{{ cameraError }}</p>\r\n\r\n <div class=\"d-flex gap-2 mb-3\">\r\n <button *ngIf=\"!captured\" type=\"button\" (click)=\"capture()\" [disabled]=\"!cameraReady || starting\"\r\n class=\"assessment-btn-primary assessment-border-radius-two assessment-text-semibold-13 px-3 py-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.CAPTURE'] }}\r\n </button>\r\n <button *ngIf=\"captured\" type=\"button\" (click)=\"retake()\" [disabled]=\"starting\"\r\n class=\"assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.RETAKE'] }}\r\n </button>\r\n <button *ngIf=\"cameraError\" type=\"button\" (click)=\"startCamera()\" [disabled]=\"starting\"\r\n class=\"assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORTS_RETRY'] }}\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <p *ngIf=\"startError\" class=\"assessment-text-regular-12 assessment-text-danger mb-3\">{{ startError }}</p>\r\n\r\n <div class=\"d-flex justify-content-end\">\r\n <button type=\"button\" (click)=\"proceed()\" [disabled]=\"!canProceed || starting\"\r\n class=\"assessment-btn-primary assessment-border-radius-two assessment-text-semibold-13 px-4 py-2 d-inline-flex align-items-center gap-2\">\r\n <span *ngIf=\"starting\" class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.CONSENT_ACCEPT'] }}\r\n </button>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.assessment-text-grey-ten{color:var(--assessment-grey-ten)!important}.assessment-bg-grey-ten{background-color:var(--assessment-grey-ten)!important}.assessment-text-grey-nine{color:var(--assessment-grey-nine)!important}.assessment-bg-grey-nine{background-color:var(--assessment-grey-nine)!important}.assessment-text-grey-eight{color:var(--assessment-grey-eight)!important}.assessment-bg-grey-eight{background-color:var(--assessment-grey-eight)!important}.assessment-text-grey-seven{color:var(--assessment-grey-seven)!important}.assessment-bg-grey-seven{background-color:var(--assessment-grey-seven)!important}.assessment-text-grey-six{color:var(--assessment-grey-six)!important}.assessment-bg-grey-six{background-color:var(--assessment-grey-six)!important}.assessment-text-grey-five{color:var(--assessment-grey-five)!important}.assessment-bg-grey-five{background-color:var(--assessment-grey-five)!important}.assessment-text-grey-four{color:var(--assessment-grey-four)!important}.assessment-bg-grey-four{background-color:var(--assessment-grey-four)!important}.assessment-text-grey-three{color:var(--assessment-grey-three)!important}.assessment-bg-grey-three{background-color:var(--assessment-grey-three)!important}.assessment-text-grey-two{color:var(--assessment-grey-two)!important}.assessment-bg-grey-two{background-color:var(--assessment-grey-two)!important}.assessment-text-grey-one{color:var(--assessment-grey-one)!important}.assessment-bg-grey-one{background-color:var(--assessment-grey-one)!important}.assessment-text-white{color:var(--assessment-white)!important}.assessment-bg-white{background-color:var(--assessment-white)!important}.assessment-text-black{color:var(--assessment-black)!important}.assessment-bg-black{background-color:var(--assessment-black)!important}.assessment-text-danger{color:var(--assessment-danger)!important}.assessment-bg-danger{background-color:var(--assessment-danger)!important}.assessment-text-danger-bg{color:var(--assessment-danger-bg)!important}.assessment-bg-danger-bg{background-color:var(--assessment-danger-bg)!important}.assessment-text-success{color:var(--assessment-success)!important}.assessment-bg-success{background-color:var(--assessment-success)!important}.assessment-text-success-bg{color:var(--assessment-success-bg)!important}.assessment-bg-success-bg{background-color:var(--assessment-success-bg)!important}.assessment-text-warning{color:var(--assessment-warning)!important}.assessment-bg-warning{background-color:var(--assessment-warning)!important}.assessment-text-warning-bg{color:var(--assessment-warning-bg)!important}.assessment-bg-warning-bg{background-color:var(--assessment-warning-bg)!important}.assessment-text-primary-one{color:var(--assessment-primary-one)!important}.assessment-bg-primary-one{background-color:var(--assessment-primary-one)!important}.assessment-text-primary-four{color:var(--assessment-primary-four)!important}.assessment-bg-primary-four{background-color:var(--assessment-primary-four)!important}.assessment-text-palette-EDF3FD{color:var(--assessment-palette-EDF3FD)!important}.assessment-bg-palette-EDF3FD{background-color:var(--assessment-palette-EDF3FD)!important}.assessment-text-palette-C8DAF9{color:var(--assessment-palette-C8DAF9)!important}.assessment-bg-palette-C8DAF9{background-color:var(--assessment-palette-C8DAF9)!important}.assessment-text-palette-ADC9F6{color:var(--assessment-palette-ADC9F6)!important}.assessment-bg-palette-ADC9F6{background-color:var(--assessment-palette-ADC9F6)!important}.assessment-text-palette-FEF9F1{color:var(--assessment-palette-FEF9F1)!important}.assessment-bg-palette-FEF9F1{background-color:var(--assessment-palette-FEF9F1)!important}.assessment-text-palette-F9DAA6{color:var(--assessment-palette-F9DAA6)!important}.assessment-bg-palette-F9DAA6{background-color:var(--assessment-palette-F9DAA6)!important}.assessment-text-palette-E8F7F0{color:var(--assessment-palette-E8F7F0)!important}.assessment-bg-palette-E8F7F0{background-color:var(--assessment-palette-E8F7F0)!important}.assessment-text-palette-B7E7CF{color:var(--assessment-palette-B7E7CF)!important}.assessment-bg-palette-B7E7CF{background-color:var(--assessment-palette-B7E7CF)!important}.assessment-text-palette-FEF1E8{color:var(--assessment-palette-FEF1E8)!important}.assessment-bg-palette-FEF1E8{background-color:var(--assessment-palette-FEF1E8)!important}.assessment-text-palette-FAD2B9{color:var(--assessment-palette-FAD2B9)!important}.assessment-bg-palette-FAD2B9{background-color:var(--assessment-palette-FAD2B9)!important}.assessment-box-shadow-one{box-shadow:var(--assessment-box-shadow-one)!important}.assessment-border-radius-one{border-radius:var(--assessment-border-radius-one)!important}.assessment-border-radius-two{border-radius:var(--assessment-border-radius-two)!important}.assessment-border-radius-three{border-radius:var(--assessment-border-radius-three)!important}.assessment-border-radius-four{border-radius:var(--assessment-border-radius-four)!important}.assessment-border-radius-five{border-radius:var(--assessment-border-radius-five)!important}.assessment-border-radius-six{border-radius:var(--assessment-border-radius-six)!important}.assessment-input-border-one{border:var(--assessment-input-border-one)!important}.assessment-input-border-invalid{border:var(--assessment-input-border-invalid)!important}.assessment-input-focus-border{border:var(--assessment-input-focus-border)!important}.assessment-border-two{border:var(--assessment-border-two)!important}.assessment-card-border{border:var(--assessment-card-border)!important}.assessment-tooltip-border{border:var(--assessment-tooltip-border)!important}.assessment-box-shadow-tooltip{box-shadow:var(--assessment-box-shadow-tooltip)!important}.assessment-button-padding{padding:var(--assessment-button-padding)!important}.assessment-button-padding-large{padding:var(--assessment-button-padding-large)!important}.assessment-input-padding{padding:var(--assessment-input-padding)!important}.assessment-text-font-family{color:var(--assessment-font-family)!important}.assessment-bg-font-family{background-color:var(--assessment-font-family)!important}.assessment-text-regular-12{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(.48rem + .3vw);line-height:calc(.9rem + .3vw)}.assessment-text-semibold-12{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.48rem + .3vw);line-height:calc(.9rem + .3vw)}.assessment-text-medium-11{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.48rem + .25vw);line-height:calc(.8rem + .25vw)}.assessment-text-medium-10{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.42rem + .2vw);line-height:calc(.72rem + .2vw)}.assessment-text-regular-11{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(.48rem + .25vw);line-height:calc(.8rem + .25vw)}.assessment-text-medium-12{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.48rem + .3vw);line-height:calc(.9rem + .3vw)}.assessment-text-regular-13{font-weight:400;font-family:var(--assessment-font-family)!important;font-size:calc(.64rem + .2vw)!important;line-height:calc(.9rem + .2vw)!important}.assessment-text-semibold-13{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.64rem + .2vw)!important;line-height:calc(.9rem + .2vw)!important}.assessment-text-medium-13{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(.64rem + .2vw)!important;line-height:calc(.9rem + .2vw)!important}.assessment-text-medium-14{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(.7rem + .2vw)!important;line-height:calc(1.2rem + .2vw)!important}.assessment-text-semibold-14{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.7rem + .2vw);line-height:calc(1.2rem + .2vw)}.assessment-text-regular-15{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(.85rem + .1vw);line-height:calc(1.4rem + .1vw)}.assessment-text-medium-15{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.85rem + .1vw);line-height:calc(1.25rem + .1vw)}.assessment-text-semibold-15{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.85rem + .1vw);line-height:calc(1.25rem + .1vw)}.assessment-text-semibold-16{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.77rem + .25vw);line-height:calc(1.25rem + .2vw)}.assessment-text-medium-16{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(.77rem + .25vw);line-height:calc(1.25rem + .2vw)}.assessment-text-medium-18{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(1rem + .125vw)!important;line-height:calc(1.5rem + .1vw)!important}.assessment-text-semibold-18{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(1rem + .125vw)!important;line-height:calc(1.5rem + .1vw)!important}@media (min-height: 100vw) and (orientation: portrait){.assessment-text-medium-18,.assessment-text-semibold-18{font-size:calc(1rem + .1vh)!important;line-height:calc(1.6rem + .1vh)!important}.assessment-text-medium-16,.assessment-text-semibold-16{font-size:calc(.9rem + .2vh)!important;line-height:calc(1.4rem + .2vh)!important}.assessment-text-regular-15,.assessment-text-semibold-15{font-size:calc(.8rem + .2vh);line-height:calc(1.27rem + .2vh)}.assessment-text-medium-15{font-size:calc(.82rem + .2vh);line-height:calc(1.27rem + .2vh)}.assessment-text-medium-12,.assessment-text-regular-12,.assessment-text-semibold-12{font-size:calc(.5rem + .4vh);line-height:calc(.8rem + .4vh)}.assessment-text-medium-14,.assessment-text-semibold-14{font-size:calc(.8rem + .1vh)!important;line-height:calc(1.2rem + .2vh)!important}.assessment-text-regular-13,.assessment-text-medium-13,.assessment-text-semibold-13{font-size:calc(.7rem + .2vh)!important;line-height:calc(1rem + .3vh)!important}.assessment-text-regular-11,.assessment-text-medium-11{font-size:calc(.5rem + .2vh)!important;line-height:calc(.8rem + .2vh)!important}.assessment-text-medium-10{font-size:calc(.45rem + .2vh)!important;line-height:calc(.72rem + .2vh)!important}}.assessment-btn-primary{background-color:var(--assessment-primary-one);color:var(--assessment-white);border:.064rem solid var(--assessment-primary-one);border-radius:var(--assessment-border-radius-two)}.assessment-btn-primary-transparent{background-color:var(--assessment-white);color:var(--assessment-primary-one);border-radius:var(--assessment-border-radius-two);border:.064rem solid var(--assessment-primary-one)}.assessment-zoom-animation{transition:transform .2s ease;transform:translateZ(0);text-rendering:optimizeLegibility}.assessment-zoom-animation:hover{transform:scale(1.03)}.assessment-zoom-animation:active{transform:scale(1)}.assessment-zoom-animation:disabled{transform:none!important}.change-direction{transform:rotate(180deg);transition:.3s ease-out}.change-direction-reverse{transform:rotate(0);transition:.3s ease-out}.outline-0{outline:none}.cursor-grab{cursor:grab}.cursor-pointer{cursor:pointer}.action-icon{width:1.2rem}.mat-menu-item,.mat-mdc-menu-item{height:inherit;min-height:unset;--mat-menu-item-label-text-font: var(--assessment-font-family) !important;--mat-menu-item-label-text-size: 14px !important;--mat-menu-item-label-text-weight: 600 !important;--mat-menu-item-label-text-line-height: inherit !important}.skill-chip{width:-moz-fit-content;width:fit-content;background:var(--assessment-palette-EDF3FD);border:.064rem solid var(--assessment-palette-C8DAF9)}.assessment-form-check-input-primary-one{min-height:unset}.assessment-form-check-input-primary-one .form-check-input{width:1rem;height:1rem}.assessment-form-check-input-primary-one .form-check-input:checked{background-color:var(--assessment-primary-one);color:var(--assessment-primary-one)}.assessment-form-check-input-primary-one .form-check-input:disabled{opacity:.8}.form-check-input:checked{background-color:var(--assessment-primary-one);border-color:var(--assessment-primary-one)}.form-check-input:focus{border-color:var(--assessment-primary-one);box-shadow:none}.proctoring-intro-card{max-width:40rem}.proctoring-cam{display:block;width:100%;aspect-ratio:16/9;object-fit:cover}.proctoring-cam--mirror{transform:scaleX(-1)}.proctoring-cam-overlay{inset:0}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
106
|
+
ProctoringConsentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ProctoringConsentComponent, selector: "lib-proctoring-consent", inputs: { labelConfig: "labelConfig", proctoringEnabled: "proctoringEnabled", requireCapture: "requireCapture", sectionCount: "sectionCount", questionCount: "questionCount", durationSeconds: "durationSeconds", confirmAction: "confirmAction" }, outputs: { proceeded: "proceeded" }, viewQueries: [{ propertyName: "videoRef", first: true, predicate: ["video"], descendants: true }, { propertyName: "canvasRef", first: true, predicate: ["canvas"], descendants: true }], ngImport: i0, template: "<div class=\"proctoring-intro d-flex flex-column align-items-center justify-content-start py-4\">\r\n <div class=\"proctoring-intro-card w-100\">\r\n\r\n <h2 class=\"assessment-text-semibold-18 assessment-text-grey-ten mb-1\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.INTRO_TITLE'] }}\r\n </h2>\r\n <p class=\"assessment-text-regular-13 assessment-text-grey-seven mb-3\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.INTRO_SUBTITLE'] }}\r\n </p>\r\n\r\n <!-- Assessment stats -->\r\n <div class=\"row g-2 mb-4\">\r\n <div class=\"col\">\r\n <div class=\"border rounded p-3 text-center h-100\">\r\n <p class=\"assessment-text-semibold-18 assessment-text-grey-ten mb-1\">{{ sectionCount }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.INTRO_SECTIONS'] }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"border rounded p-3 text-center h-100\">\r\n <p class=\"assessment-text-semibold-18 assessment-text-grey-ten mb-1\">{{ questionCount }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.LABEL.QUESTIONS'] }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col\" *ngIf=\"durationSeconds > 0\">\r\n <div class=\"border rounded p-3 text-center h-100\">\r\n <p class=\"assessment-text-semibold-18 assessment-text-grey-ten mb-1\">{{ durationMinutes }} {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.INTRO_MINUTES'] }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.INTRO_TIME'] }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Proctoring consent (only when proctoring is enabled) -->\r\n <p *ngIf=\"proctoringEnabled\" class=\"assessment-text-regular-13 assessment-text-grey-ten mb-3\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.CONSENT_MESSAGE'] }}\r\n </p>\r\n\r\n <!-- Notes -->\r\n <div class=\"assessment-bg-palette-FEF1E8 assessment-border-radius-two p-3 mb-4\">\r\n <p class=\"assessment-text-semibold-13 assessment-text-grey-ten mb-2\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.INTRO_WARNINGS_TITLE'] }}</p>\r\n <ul class=\"assessment-text-regular-13 assessment-text-grey-ten mb-0 ps-3\">\r\n <li class=\"mb-1\" *ngIf=\"durationSeconds > 0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.WARN_AUTO_SUBMIT'] }}</li>\r\n <li class=\"mb-1\" *ngIf=\"proctoringEnabled\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.WARN_ONE_ATTEMPT'] }}</li>\r\n <li class=\"mb-1\" *ngIf=\"proctoringEnabled\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.WARN_NO_TAB_SWITCH'] }}</li>\r\n <li class=\"mb-1\" *ngIf=\"proctoringEnabled\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.WARN_NO_REFRESH'] }}</li>\r\n <li *ngIf=\"proctoringEnabled\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.WARN_QUIET_ROOM'] }}</li>\r\n </ul>\r\n </div>\r\n\r\n <!-- Reference-image capture (first attempt only) -->\r\n <ng-container *ngIf=\"requireCapture\">\r\n <p class=\"assessment-text-medium-13 assessment-text-grey-ten mb-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.CAPTURE_INSTRUCTION'] }}\r\n </p>\r\n\r\n <div class=\"position-relative overflow-hidden assessment-bg-grey-two assessment-border-radius-two mb-2\">\r\n <video #video autoplay playsinline muted class=\"proctoring-cam proctoring-cam--mirror\" [hidden]=\"captured\"></video>\r\n <img *ngIf=\"captured\" [src]=\"capturedUrl\" class=\"proctoring-cam\" alt=\"reference\" />\r\n <canvas #canvas hidden></canvas>\r\n\r\n <div *ngIf=\"!cameraReady && !cameraError && !captured\"\r\n class=\"proctoring-cam-overlay assessment-text-regular-12 assessment-text-grey-seven position-absolute d-flex align-items-center justify-content-center\">\r\n <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.CAMERA_STARTING'] }}\r\n </div>\r\n </div>\r\n\r\n <p *ngIf=\"cameraError\" class=\"assessment-text-regular-12 assessment-text-danger mb-2\">{{ cameraError }}</p>\r\n\r\n <div class=\"d-flex gap-2 mb-3\">\r\n <button *ngIf=\"captured\" type=\"button\" (click)=\"retake()\" [disabled]=\"starting\"\r\n class=\"assessment-zoom-animation assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.RETAKE'] }}\r\n </button>\r\n <button *ngIf=\"cameraError\" type=\"button\" (click)=\"startCamera()\" [disabled]=\"starting\"\r\n class=\"assessment-zoom-animation assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORTS_RETRY'] }}\r\n </button>\r\n <button *ngIf=\"!captured\" type=\"button\" (click)=\"capture()\" [disabled]=\"!cameraReady || starting\"\r\n class=\"assessment-zoom-animation assessment-btn-primary assessment-border-radius-two assessment-text-semibold-13 px-3 py-2 ms-auto\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.CAPTURE'] }}\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <p *ngIf=\"startError\" class=\"assessment-text-regular-12 assessment-text-danger mb-3\">{{ startError }}</p>\r\n\r\n <div class=\"d-flex justify-content-end\">\r\n <button *ngIf=\"canProceed\" type=\"button\" (click)=\"proceed()\" [disabled]=\"starting\"\r\n class=\"assessment-zoom-animation assessment-btn-primary assessment-border-radius-two assessment-text-semibold-13 px-4 py-2 d-inline-flex align-items-center gap-2\">\r\n <span *ngIf=\"starting\" class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.CONSENT_ACCEPT'] }}\r\n </button>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.assessment-text-grey-ten{color:var(--assessment-grey-ten)!important}.assessment-bg-grey-ten{background-color:var(--assessment-grey-ten)!important}.assessment-text-grey-nine{color:var(--assessment-grey-nine)!important}.assessment-bg-grey-nine{background-color:var(--assessment-grey-nine)!important}.assessment-text-grey-eight{color:var(--assessment-grey-eight)!important}.assessment-bg-grey-eight{background-color:var(--assessment-grey-eight)!important}.assessment-text-grey-seven{color:var(--assessment-grey-seven)!important}.assessment-bg-grey-seven{background-color:var(--assessment-grey-seven)!important}.assessment-text-grey-six{color:var(--assessment-grey-six)!important}.assessment-bg-grey-six{background-color:var(--assessment-grey-six)!important}.assessment-text-grey-five{color:var(--assessment-grey-five)!important}.assessment-bg-grey-five{background-color:var(--assessment-grey-five)!important}.assessment-text-grey-four{color:var(--assessment-grey-four)!important}.assessment-bg-grey-four{background-color:var(--assessment-grey-four)!important}.assessment-text-grey-three{color:var(--assessment-grey-three)!important}.assessment-bg-grey-three{background-color:var(--assessment-grey-three)!important}.assessment-text-grey-two{color:var(--assessment-grey-two)!important}.assessment-bg-grey-two{background-color:var(--assessment-grey-two)!important}.assessment-text-grey-one{color:var(--assessment-grey-one)!important}.assessment-bg-grey-one{background-color:var(--assessment-grey-one)!important}.assessment-text-white{color:var(--assessment-white)!important}.assessment-bg-white{background-color:var(--assessment-white)!important}.assessment-text-black{color:var(--assessment-black)!important}.assessment-bg-black{background-color:var(--assessment-black)!important}.assessment-text-danger{color:var(--assessment-danger)!important}.assessment-bg-danger{background-color:var(--assessment-danger)!important}.assessment-text-danger-bg{color:var(--assessment-danger-bg)!important}.assessment-bg-danger-bg{background-color:var(--assessment-danger-bg)!important}.assessment-text-success{color:var(--assessment-success)!important}.assessment-bg-success{background-color:var(--assessment-success)!important}.assessment-text-success-bg{color:var(--assessment-success-bg)!important}.assessment-bg-success-bg{background-color:var(--assessment-success-bg)!important}.assessment-text-warning{color:var(--assessment-warning)!important}.assessment-bg-warning{background-color:var(--assessment-warning)!important}.assessment-text-warning-bg{color:var(--assessment-warning-bg)!important}.assessment-bg-warning-bg{background-color:var(--assessment-warning-bg)!important}.assessment-text-primary-one{color:var(--assessment-primary-one)!important}.assessment-bg-primary-one{background-color:var(--assessment-primary-one)!important}.assessment-text-primary-four{color:var(--assessment-primary-four)!important}.assessment-bg-primary-four{background-color:var(--assessment-primary-four)!important}.assessment-text-palette-EDF3FD{color:var(--assessment-palette-EDF3FD)!important}.assessment-bg-palette-EDF3FD{background-color:var(--assessment-palette-EDF3FD)!important}.assessment-text-palette-C8DAF9{color:var(--assessment-palette-C8DAF9)!important}.assessment-bg-palette-C8DAF9{background-color:var(--assessment-palette-C8DAF9)!important}.assessment-text-palette-ADC9F6{color:var(--assessment-palette-ADC9F6)!important}.assessment-bg-palette-ADC9F6{background-color:var(--assessment-palette-ADC9F6)!important}.assessment-text-palette-FEF9F1{color:var(--assessment-palette-FEF9F1)!important}.assessment-bg-palette-FEF9F1{background-color:var(--assessment-palette-FEF9F1)!important}.assessment-text-palette-F9DAA6{color:var(--assessment-palette-F9DAA6)!important}.assessment-bg-palette-F9DAA6{background-color:var(--assessment-palette-F9DAA6)!important}.assessment-text-palette-E8F7F0{color:var(--assessment-palette-E8F7F0)!important}.assessment-bg-palette-E8F7F0{background-color:var(--assessment-palette-E8F7F0)!important}.assessment-text-palette-B7E7CF{color:var(--assessment-palette-B7E7CF)!important}.assessment-bg-palette-B7E7CF{background-color:var(--assessment-palette-B7E7CF)!important}.assessment-text-palette-FEF1E8{color:var(--assessment-palette-FEF1E8)!important}.assessment-bg-palette-FEF1E8{background-color:var(--assessment-palette-FEF1E8)!important}.assessment-text-palette-FAD2B9{color:var(--assessment-palette-FAD2B9)!important}.assessment-bg-palette-FAD2B9{background-color:var(--assessment-palette-FAD2B9)!important}.assessment-box-shadow-one{box-shadow:var(--assessment-box-shadow-one)!important}.assessment-border-radius-one{border-radius:var(--assessment-border-radius-one)!important}.assessment-border-radius-two{border-radius:var(--assessment-border-radius-two)!important}.assessment-border-radius-three{border-radius:var(--assessment-border-radius-three)!important}.assessment-border-radius-four{border-radius:var(--assessment-border-radius-four)!important}.assessment-border-radius-five{border-radius:var(--assessment-border-radius-five)!important}.assessment-border-radius-six{border-radius:var(--assessment-border-radius-six)!important}.assessment-input-border-one{border:var(--assessment-input-border-one)!important}.assessment-input-border-invalid{border:var(--assessment-input-border-invalid)!important}.assessment-input-focus-border{border:var(--assessment-input-focus-border)!important}.assessment-border-two{border:var(--assessment-border-two)!important}.assessment-card-border{border:var(--assessment-card-border)!important}.assessment-tooltip-border{border:var(--assessment-tooltip-border)!important}.assessment-box-shadow-tooltip{box-shadow:var(--assessment-box-shadow-tooltip)!important}.assessment-input-focus-box-shadow{box-shadow:var(--assessment-input-focus-box-shadow)!important}.assessment-button-padding{padding:var(--assessment-button-padding)!important}.assessment-button-padding-large{padding:var(--assessment-button-padding-large)!important}.assessment-input-padding{padding:var(--assessment-input-padding)!important}.assessment-text-font-family{color:var(--assessment-font-family)!important}.assessment-bg-font-family{background-color:var(--assessment-font-family)!important}.assessment-text-regular-12{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(.48rem + .3vw);line-height:calc(.9rem + .3vw)}.assessment-text-semibold-12{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.48rem + .3vw);line-height:calc(.9rem + .3vw)}.assessment-text-medium-11{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.48rem + .25vw);line-height:calc(.8rem + .25vw)}.assessment-text-medium-10{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.42rem + .2vw);line-height:calc(.72rem + .2vw)}.assessment-text-regular-11{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(.48rem + .25vw);line-height:calc(.8rem + .25vw)}.assessment-text-medium-12{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.48rem + .3vw);line-height:calc(.9rem + .3vw)}.assessment-text-regular-13{font-weight:400;font-family:var(--assessment-font-family)!important;font-size:calc(.64rem + .2vw)!important;line-height:calc(.9rem + .2vw)!important}.assessment-text-semibold-13{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.64rem + .2vw)!important;line-height:calc(.9rem + .2vw)!important}.assessment-text-medium-13{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(.64rem + .2vw)!important;line-height:calc(.9rem + .2vw)!important}.assessment-text-medium-14{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(.7rem + .2vw)!important;line-height:calc(1.2rem + .2vw)!important}.assessment-text-semibold-14{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.7rem + .2vw);line-height:calc(1.2rem + .2vw)}.assessment-text-regular-15{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(.85rem + .1vw);line-height:calc(1.4rem + .1vw)}.assessment-text-medium-15{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.85rem + .1vw);line-height:calc(1.25rem + .1vw)}.assessment-text-semibold-15{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.85rem + .1vw);line-height:calc(1.25rem + .1vw)}.assessment-text-semibold-16{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.77rem + .25vw);line-height:calc(1.25rem + .2vw)}.assessment-text-medium-16{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(.77rem + .25vw);line-height:calc(1.25rem + .2vw)}.assessment-text-medium-18{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(1rem + .125vw)!important;line-height:calc(1.5rem + .1vw)!important}.assessment-text-semibold-18{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(1rem + .125vw)!important;line-height:calc(1.5rem + .1vw)!important}@media (min-height: 100vw) and (orientation: portrait){.assessment-text-medium-18,.assessment-text-semibold-18{font-size:calc(1rem + .1vh)!important;line-height:calc(1.6rem + .1vh)!important}.assessment-text-medium-16,.assessment-text-semibold-16{font-size:calc(.9rem + .2vh)!important;line-height:calc(1.4rem + .2vh)!important}.assessment-text-regular-15,.assessment-text-semibold-15{font-size:calc(.8rem + .2vh);line-height:calc(1.27rem + .2vh)}.assessment-text-medium-15{font-size:calc(.82rem + .2vh);line-height:calc(1.27rem + .2vh)}.assessment-text-medium-12,.assessment-text-regular-12,.assessment-text-semibold-12{font-size:calc(.5rem + .4vh);line-height:calc(.8rem + .4vh)}.assessment-text-medium-14,.assessment-text-semibold-14{font-size:calc(.8rem + .1vh)!important;line-height:calc(1.2rem + .2vh)!important}.assessment-text-regular-13,.assessment-text-medium-13,.assessment-text-semibold-13{font-size:calc(.7rem + .2vh)!important;line-height:calc(1rem + .3vh)!important}.assessment-text-regular-11,.assessment-text-medium-11{font-size:calc(.5rem + .2vh)!important;line-height:calc(.8rem + .2vh)!important}.assessment-text-medium-10{font-size:calc(.45rem + .2vh)!important;line-height:calc(.72rem + .2vh)!important}}.assessment-btn-primary{background-color:var(--assessment-primary-one);color:var(--assessment-white);border:.064rem solid var(--assessment-primary-one);border-radius:var(--assessment-border-radius-two)}.assessment-btn-primary-transparent{background-color:var(--assessment-white);color:var(--assessment-primary-one);border-radius:var(--assessment-border-radius-two);border:.064rem solid var(--assessment-primary-one)}.assessment-zoom-animation{transition:transform .2s ease;transform:translateZ(0);text-rendering:optimizeLegibility}.assessment-zoom-animation:hover{transform:scale(1.03)}.assessment-zoom-animation:active{transform:scale(1)}.assessment-zoom-animation:disabled{transform:none!important}.change-direction{transform:rotate(180deg);transition:.3s ease-out}.change-direction-reverse{transform:rotate(0);transition:.3s ease-out}.outline-0{outline:none}.cursor-grab{cursor:grab}.cursor-pointer{cursor:pointer}.action-icon{width:1.2rem}.mat-menu-item,.mat-mdc-menu-item{height:inherit;min-height:unset;--mat-menu-item-label-text-font: var(--assessment-font-family) !important;--mat-menu-item-label-text-size: 14px !important;--mat-menu-item-label-text-weight: 600 !important;--mat-menu-item-label-text-line-height: inherit !important}.skill-chip{width:-moz-fit-content;width:fit-content;background:var(--assessment-palette-EDF3FD);border:.064rem solid var(--assessment-palette-C8DAF9)}.assessment-form-check-input-primary-one{min-height:unset}.assessment-form-check-input-primary-one .form-check-input{width:1rem;height:1rem}.assessment-form-check-input-primary-one .form-check-input:checked{background-color:var(--assessment-primary-one);color:var(--assessment-primary-one)}.assessment-form-check-input-primary-one .form-check-input:disabled{opacity:.8}.form-check-input:checked{background-color:var(--assessment-primary-one);border-color:var(--assessment-primary-one)}.form-check-input:focus{border-color:var(--assessment-primary-one);box-shadow:none}.proctoring-intro-card{max-width:40rem}.proctoring-cam{display:block;width:100%;aspect-ratio:16/9;object-fit:cover}.proctoring-cam--mirror{transform:scaleX(-1)}.proctoring-cam-overlay{inset:0}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
107
107
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProctoringConsentComponent, decorators: [{
|
|
108
108
|
type: Component,
|
|
109
109
|
args: [{
|
|
@@ -134,4 +134,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
134
134
|
}], proceeded: [{
|
|
135
135
|
type: Output
|
|
136
136
|
}] } });
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY3RvcmluZy1jb25zZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbW1vbnMtYXNzZXNzbWVudC9zcmMvbGliL21vZHVsZXMvYXNzZXNzbWVudC10YWtlci9jb21wb25lbnRzL3Byb2N0b3JpbmctY29uc2VudC9wcm9jdG9yaW5nLWNvbnNlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9ucy1hc3Nlc3NtZW50L3NyYy9saWIvbW9kdWxlcy9hc3Nlc3NtZW50LXRha2VyL2NvbXBvbmVudHMvcHJvY3RvcmluZy1jb25zZW50L3Byb2N0b3JpbmctY29uc2VudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVF4SCxNQUFNLE9BQU8sMEJBQTBCO0lBTHZDO1FBU1csZ0JBQVcsR0FBOEIsRUFBRSxDQUFDO1FBQ3JELG1HQUFtRztRQUMxRixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDbkMsdUdBQXVHO1FBQzlGLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBSTdCLDZFQUE2RTtRQUNuRSxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUUvQyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsZUFBVSxH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ekZhLDBCQUEwQjtrQkFMdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxXQUFXLEVBQUUscUNBQXFDO29CQUNsRCxTQUFTLEVBQUUsQ0FBQyxxQ0FBcUMsQ0FBQztpQkFDbkQ7OEJBRXFCLFFBQVE7c0JBQTNCLFNBQVM7dUJBQUMsT0FBTztnQkFDRyxTQUFTO3NCQUE3QixTQUFTO3VCQUFDLFFBQVE7Z0JBRVYsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItcHJvY3RvcmluZy1jb25zZW50JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcHJvY3RvcmluZy1jb25zZW50LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wcm9jdG9yaW5nLWNvbnNlbnQuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvY3RvcmluZ0NvbnNlbnRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ3ZpZGVvJykgdmlkZW9SZWYhOiBFbGVtZW50UmVmPEhUTUxWaWRlb0VsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2NhbnZhcycpIGNhbnZhc1JlZiE6IEVsZW1lbnRSZWY8SFRNTENhbnZhc0VsZW1lbnQ+O1xyXG5cclxuICBASW5wdXQoKSBsYWJlbENvbmZpZzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xyXG4gIC8vIHdoZW4gdHJ1ZSwgc2hvd3MgdGhlIHByb2N0b3JpbmcgY29uc2VudCBub3RpY2UgKGJpb21ldHJpYyBjYXB0dXJlKTsgZmFsc2UgZm9yIGEgdGltZWQtb25seSBpbnRyb1xyXG4gIEBJbnB1dCgpIHByb2N0b3JpbmdFbmFibGVkID0gZmFsc2U7XHJcbiAgLy8gd2hlbiB0cnVlLCB0aGUgY2FuZGlkYXRlIG11c3QgY2FwdHVyZSBhIHJlZmVyZW5jZSBwaG90byBiZWZvcmUgcHJvY2VlZGluZyAocHJvY3RvcmluZyBmaXJzdCBhdHRlbXB0KVxyXG4gIEBJbnB1dCgpIHJlcXVpcmVDYXB0dXJlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2VjdGlvbkNvdW50ID0gMDtcclxuICBASW5wdXQoKSBxdWVzdGlvbkNvdW50ID0gMDtcclxuICBASW5wdXQoKSBkdXJhdGlvblNlY29uZHMgPSAwO1xyXG4gIC8vIHN0YXJ0cyB0aGUgcHJvY3RvcmluZyBzZXNzaW9uLCBwYXNzaW5nIHRoZSBjYXB0dXJlZCByZWZlcmVuY2UgaW1hZ2UgKGJhc2U2NCwgbm8gZGF0YSBVUkkgcHJlZml4O1xyXG4gIC8vIGVtcHR5IHdoZW4gbm8gY2FwdHVyZSBpcyByZXF1aXJlZCkuIFJldHVybnMgYW4gb2JzZXJ2YWJsZSB0aGF0IGNvbXBsZXRlcyBvbmNlIHRoZSBzZXNzaW9uIGlzIGxpdmUuXHJcbiAgQElucHV0KCkgY29uZmlybUFjdGlvbj86IChyZWZlcmVuY2VJbWFnZUJhc2U2NDogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPGFueT47XHJcbiAgLy8gZW1pdHRlZCBvbmNlIHRoZSBjYW5kaWRhdGUgcHJvY2VlZHMgYW5kIHRoZSBwcm9jdG9yaW5nIHNlc3Npb24gaGFzIHN0YXJ0ZWRcclxuICBAT3V0cHV0KCkgcHJvY2VlZGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBjYW1lcmFSZWFkeSA9IGZhbHNlO1xyXG4gIGNhbWVyYUVycm9yID0gJyc7XHJcbiAgY2FwdHVyZWQgPSBmYWxzZTtcclxuICBjYXB0dXJlZFVybCA9ICcnO1xyXG4gIHN0YXJ0aW5nID0gZmFsc2U7XHJcbiAgc3RhcnRFcnJvciA9ICcnO1xyXG5cclxuICBwcml2YXRlIHN0cmVhbT86IE1lZGlhU3RyZWFtO1xyXG4gIHByaXZhdGUgY2FwdHVyZWRCYXNlNjQgPSAnJztcclxuXHJcbiAgLyoqIFByb2NlZWQgaXMgYWxsb3dlZCBvbmNlIGEgcGhvdG8gaXMgY2FwdHVyZWQsIG9yIGltbWVkaWF0ZWx5IHdoZW4gbm8gY2FwdHVyZSBpcyByZXF1aXJlZC4gKi9cclxuICBnZXQgY2FuUHJvY2VlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5yZXF1aXJlQ2FwdHVyZSB8fCB0aGlzLmNhcHR1cmVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGR1cmF0aW9uTWludXRlcygpOiBudW1iZXIge1xyXG4gICAgLy8ga2VlcCBmcmFjdGlvbmFsIG1pbnV0ZXMgKGUuZy4gMzBzIC0+IDAuNSkgc28gdGhlIGRpc3BsYXkgbWF0Y2hlcyB0aGUgc2F2ZWQgZHVyYXRpb25cclxuICAgIHJldHVybiBNYXRoLnJvdW5kKCh0aGlzLmR1cmF0aW9uU2Vjb25kcyAvIDYwKSAqIDEwMCkgLyAxMDA7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5yZXF1aXJlQ2FwdHVyZSkge1xyXG4gICAgICB0aGlzLnN0YXJ0Q2FtZXJhKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RvcENhbWVyYSgpO1xyXG4gIH1cclxuXHJcbiAgc3RhcnRDYW1lcmEoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbWVyYUVycm9yID0gJyc7XHJcbiAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzPy5nZXRVc2VyTWVkaWEoeyB2aWRlbzogeyBmYWNpbmdNb2RlOiAndXNlcicgfSwgYXVkaW86IGZhbHNlIH0pXHJcbiAgICAgIC50aGVuKChzdHJlYW0pID0+IHtcclxuICAgICAgICB0aGlzLnN0cmVhbSA9IHN0cmVhbTtcclxuICAgICAgICB0aGlzLmNhbWVyYVJlYWR5ID0gdHJ1ZTtcclxuICAgICAgICBpZiAodGhpcy52aWRlb1JlZj8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgdGhpcy52aWRlb1JlZi5uYXRpdmVFbGVtZW50LnNyY09iamVjdCA9IHN0cmVhbTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jYW1lcmFSZWFkeSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2FtZXJhRXJyb3IgPSB0aGlzLmxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5DQU1FUkFfREVOSUVEJ107XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIEdyYWJzIGEgc3RpbGwgZnJhbWUgZnJvbSB0aGUgbGl2ZSBwcmV2aWV3IGludG8gYSBKUEVHICh1c2VkIGFzIHRoZSByZWZlcmVuY2UgaW1hZ2UpLiAqL1xyXG4gIGNhcHR1cmUoKTogdm9pZCB7XHJcbiAgICBjb25zdCB2aWRlbyA9IHRoaXMudmlkZW9SZWY/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBjb25zdCBjYW52YXMgPSB0aGlzLmNhbnZhc1JlZj8ubmF0aXZlRWxlbWVudDtcclxuICAgIGlmICghdmlkZW8gfHwgIWNhbnZhcyB8fCAhdGhpcy5jYW1lcmFSZWFkeSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjYW52YXMud2lkdGggPSB2aWRlby52aWRlb1dpZHRoO1xyXG4gICAgY2FudmFzLmhlaWdodCA9IHZpZGVvLnZpZGVvSGVpZ2h0O1xyXG4gICAgY2FudmFzLmdldENvbnRleHQoJzJkJyk/LmRyYXdJbWFnZSh2aWRlbywgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTtcclxuICAgIHRoaXMuY2FwdHVyZWRVcmwgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJywgMC45KTtcclxuICAgIC8vIHN0cmlwIHRoZSBgZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCxgIHByZWZpeCDigJQgdGhlIEFQSSBmaWVsZCBjYXJyaWVzIHJhdyBiYXNlNjRcclxuICAgIHRoaXMuY2FwdHVyZWRCYXNlNjQgPSB0aGlzLmNhcHR1cmVkVXJsLnNwbGl0KCcsJylbMV0gfHwgJyc7XHJcbiAgICB0aGlzLmNhcHR1cmVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHJldGFrZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2FwdHVyZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuY2FwdHVyZWRVcmwgPSAnJztcclxuICAgIHRoaXMuY2FwdHVyZWRCYXNlNjQgPSAnJztcclxuICAgIHRoaXMuc3RhcnRFcnJvciA9ICcnO1xyXG4gIH1cclxuXHJcbiAgLyoqIEVuYWJsZWQgb25seSBvbmNlIGEgcGhvdG8gaXMgY2FwdHVyZWQgKHdoZW4gcmVxdWlyZWQpOyBydW5zIHRoZSBzZXNzaW9uLXN0YXJ0IGFjdGlvbi4gKi9cclxuICBwcm9jZWVkKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmNhblByb2NlZWQgfHwgdGhpcy5zdGFydGluZykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyByZWxlYXNlIG91ciBjYXB0dXJlIHN0cmVhbSBiZWZvcmUgdGhlIFNESyBvcGVucyB0aGUgY2FtZXJhIGZvciB0aGUgbGl2ZSBzZXNzaW9uXHJcbiAgICB0aGlzLnN0b3BDYW1lcmEoKTtcclxuICAgIGlmICghdGhpcy5jb25maXJtQWN0aW9uKSB7XHJcbiAgICAgIHRoaXMucHJvY2VlZGVkLmVtaXQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdGFydGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnN0YXJ0RXJyb3IgPSAnJztcclxuICAgIHRoaXMuY29uZmlybUFjdGlvbih0aGlzLmNhcHR1cmVkQmFzZTY0KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoKSA9PiB0aGlzLnByb2NlZWRlZC5lbWl0KCksXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnN0YXJ0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zdGFydEVycm9yID0gKHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnID8gZXJyIDogZXJyPy5tZXNzYWdlKVxyXG4gICAgICAgICAgfHwgdGhpcy5sYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuU0VTU0lPTl9FUlJPUiddO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RvcENhbWVyYSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RyZWFtPy5nZXRUcmFja3MoKS5mb3JFYWNoKCh0KSA9PiB0LnN0b3AoKSk7XHJcbiAgICB0aGlzLnN0cmVhbSA9IHVuZGVmaW5lZDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInByb2N0b3JpbmctaW50cm8gZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgcHktNFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJwcm9jdG9yaW5nLWludHJvLWNhcmQgdy0xMDBcIj5cclxuXHJcbiAgICA8aDIgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTggYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuIG1iLTFcIj5cclxuICAgICAge3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLklOVFJPX1RJVExFJ10gfX1cclxuICAgIDwvaDI+XHJcbiAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXNldmVuIG1iLTNcIj5cclxuICAgICAge3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLklOVFJPX1NVQlRJVExFJ10gfX1cclxuICAgIDwvcD5cclxuXHJcbiAgICA8IS0tIEFzc2Vzc21lbnQgc3RhdHMgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGctMiBtYi00XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHJvdW5kZWQgcC0zIHRleHQtY2VudGVyIGgtMTAwXCI+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xOCBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW4gbWItMVwiPnt7IHNlY3Rpb25Db3VudCB9fTwvcD5cclxuICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTEgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gbWItMFwiPnt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5JTlRST19TRUNUSU9OUyddIH19PC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZCBwLTMgdGV4dC1jZW50ZXIgaC0xMDBcIj5cclxuICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTE4IGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlbiBtYi0xXCI+e3sgcXVlc3Rpb25Db3VudCB9fTwvcD5cclxuICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTEgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gbWItMFwiPnt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuUVVFU1RJT05TJ10gfX08L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgKm5nSWY9XCJkdXJhdGlvblNlY29uZHMgPiAwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkIHAtMyB0ZXh0LWNlbnRlciBoLTEwMFwiPlxyXG4gICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTggYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuIG1iLTFcIj57eyBkdXJhdGlvbk1pbnV0ZXMgfX0ge3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLklOVFJPX01JTlVURVMnXSB9fTwvcD5cclxuICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTEgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gbWItMFwiPnt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5JTlRST19USU1FJ10gfX08L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBXYXJuaW5ncyAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJhc3Nlc3NtZW50LWJnLXBhbGV0dGUtRkVGMUU4IGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gcC0zIG1iLTRcIj5cclxuICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuIG1iLTJcIj57eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuSU5UUk9fV0FSTklOR1NfVElUTEUnXSB9fTwvcD5cclxuICAgICAgPHVsIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuIG1iLTAgcHMtM1wiPlxyXG4gICAgICAgIDxsaSBjbGFzcz1cIm1iLTFcIiAqbmdJZj1cImR1cmF0aW9uU2Vjb25kcyA+IDBcIj57eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuV0FSTl9BVVRPX1NVQk1JVCddIH19PC9saT5cclxuICAgICAgICA8bGkgY2xhc3M9XCJtYi0xXCIgKm5nSWY9XCJwcm9jdG9yaW5nRW5hYmxlZFwiPnt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5XQVJOX09ORV9BVFRFTVBUJ10gfX08L2xpPlxyXG4gICAgICAgIDxsaSBjbGFzcz1cIm1iLTFcIiAqbmdJZj1cInByb2N0b3JpbmdFbmFibGVkXCI+e3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLldBUk5fTk9fVEFCX1NXSVRDSCddIH19PC9saT5cclxuICAgICAgICA8bGkgY2xhc3M9XCJtYi0xXCIgKm5nSWY9XCJwcm9jdG9yaW5nRW5hYmxlZFwiPnt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5XQVJOX05PX1JFRlJFU0gnXSB9fTwvbGk+XHJcbiAgICAgICAgPGxpICpuZ0lmPVwicHJvY3RvcmluZ0VuYWJsZWRcIj57eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuV0FSTl9RVUlFVF9ST09NJ10gfX08L2xpPlxyXG4gICAgICA8L3VsPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBQcm9jdG9yaW5nIGNvbnNlbnQgKG9ubHkgd2hlbiBwcm9jdG9yaW5nIGlzIGVuYWJsZWQpIC0tPlxyXG4gICAgPHAgKm5nSWY9XCJwcm9jdG9yaW5nRW5hYmxlZFwiIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuIG1iLTNcIj5cclxuICAgICAge3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLkNPTlNFTlRfTUVTU0FHRSddIH19XHJcbiAgICA8L3A+XHJcblxyXG4gICAgPCEtLSBSZWZlcmVuY2UtaW1hZ2UgY2FwdHVyZSAoZmlyc3QgYXR0ZW1wdCBvbmx5KSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXF1aXJlQ2FwdHVyZVwiPlxyXG4gICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuIG1iLTJcIj5cclxuICAgICAgICB7eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuQ0FQVFVSRV9JTlNUUlVDVElPTiddIH19XHJcbiAgICAgIDwvcD5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBvdmVyZmxvdy1oaWRkZW4gYXNzZXNzbWVudC1iZy1ncmV5LXR3byBhc3Nlc3NtZW50LWJvcmRlci1yYWRpdXMtdHdvIG1iLTJcIj5cclxuICAgICAgICA8dmlkZW8gI3ZpZGVvIGF1dG9wbGF5IHBsYXlzaW5saW5lIG11dGVkIGNsYXNzPVwicHJvY3RvcmluZy1jYW0gcHJvY3RvcmluZy1jYW0tLW1pcnJvclwiIFtoaWRkZW5dPVwiY2FwdHVyZWRcIj48L3ZpZGVvPlxyXG4gICAgICAgIDxpbWcgKm5nSWY9XCJjYXB0dXJlZFwiIFtzcmNdPVwiY2FwdHVyZWRVcmxcIiBjbGFzcz1cInByb2N0b3JpbmctY2FtXCIgYWx0PVwicmVmZXJlbmNlXCIgLz5cclxuICAgICAgICA8Y2FudmFzICNjYW52YXMgaGlkZGVuPjwvY2FudmFzPlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWNhbWVyYVJlYWR5ICYmICFjYW1lcmFFcnJvciAmJiAhY2FwdHVyZWRcIlxyXG4gICAgICAgICAgY2xhc3M9XCJwcm9jdG9yaW5nLWNhbS1vdmVybGF5IGFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEyIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXNldmVuIHBvc2l0aW9uLWFic29sdXRlIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbSBtZS0yXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgIHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5DQU1FUkFfU1RBUlRJTkcnXSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxwICpuZ0lmPVwiY2FtZXJhRXJyb3JcIiBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEyIGFzc2Vzc21lbnQtdGV4dC1kYW5nZXIgbWItMlwiPnt7IGNhbWVyYUVycm9yIH19PC9wPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMiBtYi0zXCI+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFjYXB0dXJlZFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2FwdHVyZSgpXCIgW2Rpc2FibGVkXT1cIiFjYW1lcmFSZWFkeSB8fCBzdGFydGluZ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtYnRuLXByaW1hcnkgYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTMgcHgtMyBweS0yXCI+XHJcbiAgICAgICAgICB7eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuQ0FQVFVSRSddIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNhcHR1cmVkXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXRha2UoKVwiIFtkaXNhYmxlZF09XCJzdGFydGluZ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtYnRuLXByaW1hcnktdHJhbnNwYXJlbnQgYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTMgcHgtMyBweS0yXCI+XHJcbiAgICAgICAgICB7eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVUQUtFJ10gfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY2FtZXJhRXJyb3JcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInN0YXJ0Q2FtZXJhKClcIiBbZGlzYWJsZWRdPVwic3RhcnRpbmdcIlxyXG4gICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LWJ0bi1wcmltYXJ5LXRyYW5zcGFyZW50IGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEzIHB4LTMgcHktMlwiPlxyXG4gICAgICAgICAge3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVFNfUkVUUlknXSB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxwICpuZ0lmPVwic3RhcnRFcnJvclwiIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWRhbmdlciBtYi0zXCI+e3sgc3RhcnRFcnJvciB9fTwvcD5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInByb2NlZWQoKVwiIFtkaXNhYmxlZF09XCIhY2FuUHJvY2VlZCB8fCBzdGFydGluZ1wiXHJcbiAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LWJ0bi1wcmltYXJ5IGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEzIHB4LTQgcHktMiBkLWlubGluZS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwic3RhcnRpbmdcIiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cclxuICAgICAgICB7eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuQ09OU0VOVF9BQ0NFUFQnXSB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY3RvcmluZy1jb25zZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbW1vbnMtYXNzZXNzbWVudC9zcmMvbGliL21vZHVsZXMvYXNzZXNzbWVudC10YWtlci9jb21wb25lbnRzL3Byb2N0b3JpbmctY29uc2VudC9wcm9jdG9yaW5nLWNvbnNlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9ucy1hc3Nlc3NtZW50L3NyYy9saWIvbW9kdWxlcy9hc3Nlc3NtZW50LXRha2VyL2NvbXBvbmVudHMvcHJvY3RvcmluZy1jb25zZW50L3Byb2N0b3JpbmctY29uc2VudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVF4SCxNQUFNLE9BQU8sMEJBQTBCO0lBTHZDO1FBU1csZ0JBQVcsR0FBOEIsRUFBRSxDQUFDO1FBQ3JELG1HQUFtRztRQUMxRixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDbkMsdUdBQXVHO1FBQzlGLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBSTdCLDZFQUE2RTtRQUNuRSxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUUvQyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsZUFBVSxH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ekZhLDBCQUEwQjtrQkFMdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxXQUFXLEVBQUUscUNBQXFDO29CQUNsRCxTQUFTLEVBQUUsQ0FBQyxxQ0FBcUMsQ0FBQztpQkFDbkQ7OEJBRXFCLFFBQVE7c0JBQTNCLFNBQVM7dUJBQUMsT0FBTztnQkFDRyxTQUFTO3NCQUE3QixTQUFTO3VCQUFDLFFBQVE7Z0JBRVYsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItcHJvY3RvcmluZy1jb25zZW50JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcHJvY3RvcmluZy1jb25zZW50LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wcm9jdG9yaW5nLWNvbnNlbnQuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvY3RvcmluZ0NvbnNlbnRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ3ZpZGVvJykgdmlkZW9SZWYhOiBFbGVtZW50UmVmPEhUTUxWaWRlb0VsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2NhbnZhcycpIGNhbnZhc1JlZiE6IEVsZW1lbnRSZWY8SFRNTENhbnZhc0VsZW1lbnQ+O1xyXG5cclxuICBASW5wdXQoKSBsYWJlbENvbmZpZzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xyXG4gIC8vIHdoZW4gdHJ1ZSwgc2hvd3MgdGhlIHByb2N0b3JpbmcgY29uc2VudCBub3RpY2UgKGJpb21ldHJpYyBjYXB0dXJlKTsgZmFsc2UgZm9yIGEgdGltZWQtb25seSBpbnRyb1xyXG4gIEBJbnB1dCgpIHByb2N0b3JpbmdFbmFibGVkID0gZmFsc2U7XHJcbiAgLy8gd2hlbiB0cnVlLCB0aGUgY2FuZGlkYXRlIG11c3QgY2FwdHVyZSBhIHJlZmVyZW5jZSBwaG90byBiZWZvcmUgcHJvY2VlZGluZyAocHJvY3RvcmluZyBmaXJzdCBhdHRlbXB0KVxyXG4gIEBJbnB1dCgpIHJlcXVpcmVDYXB0dXJlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2VjdGlvbkNvdW50ID0gMDtcclxuICBASW5wdXQoKSBxdWVzdGlvbkNvdW50ID0gMDtcclxuICBASW5wdXQoKSBkdXJhdGlvblNlY29uZHMgPSAwO1xyXG4gIC8vIHN0YXJ0cyB0aGUgcHJvY3RvcmluZyBzZXNzaW9uLCBwYXNzaW5nIHRoZSBjYXB0dXJlZCByZWZlcmVuY2UgaW1hZ2UgKGJhc2U2NCwgbm8gZGF0YSBVUkkgcHJlZml4O1xyXG4gIC8vIGVtcHR5IHdoZW4gbm8gY2FwdHVyZSBpcyByZXF1aXJlZCkuIFJldHVybnMgYW4gb2JzZXJ2YWJsZSB0aGF0IGNvbXBsZXRlcyBvbmNlIHRoZSBzZXNzaW9uIGlzIGxpdmUuXHJcbiAgQElucHV0KCkgY29uZmlybUFjdGlvbj86IChyZWZlcmVuY2VJbWFnZUJhc2U2NDogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPGFueT47XHJcbiAgLy8gZW1pdHRlZCBvbmNlIHRoZSBjYW5kaWRhdGUgcHJvY2VlZHMgYW5kIHRoZSBwcm9jdG9yaW5nIHNlc3Npb24gaGFzIHN0YXJ0ZWRcclxuICBAT3V0cHV0KCkgcHJvY2VlZGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBjYW1lcmFSZWFkeSA9IGZhbHNlO1xyXG4gIGNhbWVyYUVycm9yID0gJyc7XHJcbiAgY2FwdHVyZWQgPSBmYWxzZTtcclxuICBjYXB0dXJlZFVybCA9ICcnO1xyXG4gIHN0YXJ0aW5nID0gZmFsc2U7XHJcbiAgc3RhcnRFcnJvciA9ICcnO1xyXG5cclxuICBwcml2YXRlIHN0cmVhbT86IE1lZGlhU3RyZWFtO1xyXG4gIHByaXZhdGUgY2FwdHVyZWRCYXNlNjQgPSAnJztcclxuXHJcbiAgLyoqIFByb2NlZWQgaXMgYWxsb3dlZCBvbmNlIGEgcGhvdG8gaXMgY2FwdHVyZWQsIG9yIGltbWVkaWF0ZWx5IHdoZW4gbm8gY2FwdHVyZSBpcyByZXF1aXJlZC4gKi9cclxuICBnZXQgY2FuUHJvY2VlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5yZXF1aXJlQ2FwdHVyZSB8fCB0aGlzLmNhcHR1cmVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGR1cmF0aW9uTWludXRlcygpOiBudW1iZXIge1xyXG4gICAgLy8ga2VlcCBmcmFjdGlvbmFsIG1pbnV0ZXMgKGUuZy4gMzBzIC0+IDAuNSkgc28gdGhlIGRpc3BsYXkgbWF0Y2hlcyB0aGUgc2F2ZWQgZHVyYXRpb25cclxuICAgIHJldHVybiBNYXRoLnJvdW5kKCh0aGlzLmR1cmF0aW9uU2Vjb25kcyAvIDYwKSAqIDEwMCkgLyAxMDA7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5yZXF1aXJlQ2FwdHVyZSkge1xyXG4gICAgICB0aGlzLnN0YXJ0Q2FtZXJhKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RvcENhbWVyYSgpO1xyXG4gIH1cclxuXHJcbiAgc3RhcnRDYW1lcmEoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbWVyYUVycm9yID0gJyc7XHJcbiAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzPy5nZXRVc2VyTWVkaWEoeyB2aWRlbzogeyBmYWNpbmdNb2RlOiAndXNlcicgfSwgYXVkaW86IGZhbHNlIH0pXHJcbiAgICAgIC50aGVuKChzdHJlYW0pID0+IHtcclxuICAgICAgICB0aGlzLnN0cmVhbSA9IHN0cmVhbTtcclxuICAgICAgICB0aGlzLmNhbWVyYVJlYWR5ID0gdHJ1ZTtcclxuICAgICAgICBpZiAodGhpcy52aWRlb1JlZj8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgdGhpcy52aWRlb1JlZi5uYXRpdmVFbGVtZW50LnNyY09iamVjdCA9IHN0cmVhbTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jYW1lcmFSZWFkeSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2FtZXJhRXJyb3IgPSB0aGlzLmxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5DQU1FUkFfREVOSUVEJ107XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIEdyYWJzIGEgc3RpbGwgZnJhbWUgZnJvbSB0aGUgbGl2ZSBwcmV2aWV3IGludG8gYSBKUEVHICh1c2VkIGFzIHRoZSByZWZlcmVuY2UgaW1hZ2UpLiAqL1xyXG4gIGNhcHR1cmUoKTogdm9pZCB7XHJcbiAgICBjb25zdCB2aWRlbyA9IHRoaXMudmlkZW9SZWY/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBjb25zdCBjYW52YXMgPSB0aGlzLmNhbnZhc1JlZj8ubmF0aXZlRWxlbWVudDtcclxuICAgIGlmICghdmlkZW8gfHwgIWNhbnZhcyB8fCAhdGhpcy5jYW1lcmFSZWFkeSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjYW52YXMud2lkdGggPSB2aWRlby52aWRlb1dpZHRoO1xyXG4gICAgY2FudmFzLmhlaWdodCA9IHZpZGVvLnZpZGVvSGVpZ2h0O1xyXG4gICAgY2FudmFzLmdldENvbnRleHQoJzJkJyk/LmRyYXdJbWFnZSh2aWRlbywgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTtcclxuICAgIHRoaXMuY2FwdHVyZWRVcmwgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJywgMC45KTtcclxuICAgIC8vIHN0cmlwIHRoZSBgZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCxgIHByZWZpeCDigJQgdGhlIEFQSSBmaWVsZCBjYXJyaWVzIHJhdyBiYXNlNjRcclxuICAgIHRoaXMuY2FwdHVyZWRCYXNlNjQgPSB0aGlzLmNhcHR1cmVkVXJsLnNwbGl0KCcsJylbMV0gfHwgJyc7XHJcbiAgICB0aGlzLmNhcHR1cmVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHJldGFrZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2FwdHVyZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuY2FwdHVyZWRVcmwgPSAnJztcclxuICAgIHRoaXMuY2FwdHVyZWRCYXNlNjQgPSAnJztcclxuICAgIHRoaXMuc3RhcnRFcnJvciA9ICcnO1xyXG4gIH1cclxuXHJcbiAgLyoqIEVuYWJsZWQgb25seSBvbmNlIGEgcGhvdG8gaXMgY2FwdHVyZWQgKHdoZW4gcmVxdWlyZWQpOyBydW5zIHRoZSBzZXNzaW9uLXN0YXJ0IGFjdGlvbi4gKi9cclxuICBwcm9jZWVkKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmNhblByb2NlZWQgfHwgdGhpcy5zdGFydGluZykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyByZWxlYXNlIG91ciBjYXB0dXJlIHN0cmVhbSBiZWZvcmUgdGhlIFNESyBvcGVucyB0aGUgY2FtZXJhIGZvciB0aGUgbGl2ZSBzZXNzaW9uXHJcbiAgICB0aGlzLnN0b3BDYW1lcmEoKTtcclxuICAgIGlmICghdGhpcy5jb25maXJtQWN0aW9uKSB7XHJcbiAgICAgIHRoaXMucHJvY2VlZGVkLmVtaXQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdGFydGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnN0YXJ0RXJyb3IgPSAnJztcclxuICAgIHRoaXMuY29uZmlybUFjdGlvbih0aGlzLmNhcHR1cmVkQmFzZTY0KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoKSA9PiB0aGlzLnByb2NlZWRlZC5lbWl0KCksXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnN0YXJ0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zdGFydEVycm9yID0gKHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnID8gZXJyIDogZXJyPy5tZXNzYWdlKVxyXG4gICAgICAgICAgfHwgdGhpcy5sYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuU0VTU0lPTl9FUlJPUiddO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RvcENhbWVyYSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RyZWFtPy5nZXRUcmFja3MoKS5mb3JFYWNoKCh0KSA9PiB0LnN0b3AoKSk7XHJcbiAgICB0aGlzLnN0cmVhbSA9IHVuZGVmaW5lZDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInByb2N0b3JpbmctaW50cm8gZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgcHktNFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJwcm9jdG9yaW5nLWludHJvLWNhcmQgdy0xMDBcIj5cclxuXHJcbiAgICA8aDIgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTggYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuIG1iLTFcIj5cclxuICAgICAge3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLklOVFJPX1RJVExFJ10gfX1cclxuICAgIDwvaDI+XHJcbiAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXNldmVuIG1iLTNcIj5cclxuICAgICAge3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLklOVFJPX1NVQlRJVExFJ10gfX1cclxuICAgIDwvcD5cclxuXHJcbiAgICA8IS0tIEFzc2Vzc21lbnQgc3RhdHMgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGctMiBtYi00XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHJvdW5kZWQgcC0zIHRleHQtY2VudGVyIGgtMTAwXCI+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xOCBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW4gbWItMVwiPnt7IHNlY3Rpb25Db3VudCB9fTwvcD5cclxuICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTEgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gbWItMFwiPnt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5JTlRST19TRUNUSU9OUyddIH19PC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZCBwLTMgdGV4dC1jZW50ZXIgaC0xMDBcIj5cclxuICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTE4IGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlbiBtYi0xXCI+e3sgcXVlc3Rpb25Db3VudCB9fTwvcD5cclxuICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTEgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gbWItMFwiPnt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuUVVFU1RJT05TJ10gfX08L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgKm5nSWY9XCJkdXJhdGlvblNlY29uZHMgPiAwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkIHAtMyB0ZXh0LWNlbnRlciBoLTEwMFwiPlxyXG4gICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTggYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuIG1iLTFcIj57eyBkdXJhdGlvbk1pbnV0ZXMgfX0ge3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLklOVFJPX01JTlVURVMnXSB9fTwvcD5cclxuICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTEgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gbWItMFwiPnt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5JTlRST19USU1FJ10gfX08L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBQcm9jdG9yaW5nIGNvbnNlbnQgKG9ubHkgd2hlbiBwcm9jdG9yaW5nIGlzIGVuYWJsZWQpIC0tPlxyXG4gICAgPHAgKm5nSWY9XCJwcm9jdG9yaW5nRW5hYmxlZFwiIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuIG1iLTNcIj5cclxuICAgICAge3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLkNPTlNFTlRfTUVTU0FHRSddIH19XHJcbiAgICA8L3A+XHJcblxyXG4gICAgPCEtLSBOb3RlcyAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJhc3Nlc3NtZW50LWJnLXBhbGV0dGUtRkVGMUU4IGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gcC0zIG1iLTRcIj5cclxuICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuIG1iLTJcIj57eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuSU5UUk9fV0FSTklOR1NfVElUTEUnXSB9fTwvcD5cclxuICAgICAgPHVsIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuIG1iLTAgcHMtM1wiPlxyXG4gICAgICAgIDxsaSBjbGFzcz1cIm1iLTFcIiAqbmdJZj1cImR1cmF0aW9uU2Vjb25kcyA+IDBcIj57eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuV0FSTl9BVVRPX1NVQk1JVCddIH19PC9saT5cclxuICAgICAgICA8bGkgY2xhc3M9XCJtYi0xXCIgKm5nSWY9XCJwcm9jdG9yaW5nRW5hYmxlZFwiPnt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5XQVJOX09ORV9BVFRFTVBUJ10gfX08L2xpPlxyXG4gICAgICAgIDxsaSBjbGFzcz1cIm1iLTFcIiAqbmdJZj1cInByb2N0b3JpbmdFbmFibGVkXCI+e3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLldBUk5fTk9fVEFCX1NXSVRDSCddIH19PC9saT5cclxuICAgICAgICA8bGkgY2xhc3M9XCJtYi0xXCIgKm5nSWY9XCJwcm9jdG9yaW5nRW5hYmxlZFwiPnt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5XQVJOX05PX1JFRlJFU0gnXSB9fTwvbGk+XHJcbiAgICAgICAgPGxpICpuZ0lmPVwicHJvY3RvcmluZ0VuYWJsZWRcIj57eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuV0FSTl9RVUlFVF9ST09NJ10gfX08L2xpPlxyXG4gICAgICA8L3VsPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBSZWZlcmVuY2UtaW1hZ2UgY2FwdHVyZSAoZmlyc3QgYXR0ZW1wdCBvbmx5KSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXF1aXJlQ2FwdHVyZVwiPlxyXG4gICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuIG1iLTJcIj5cclxuICAgICAgICB7eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuQ0FQVFVSRV9JTlNUUlVDVElPTiddIH19XHJcbiAgICAgIDwvcD5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBvdmVyZmxvdy1oaWRkZW4gYXNzZXNzbWVudC1iZy1ncmV5LXR3byBhc3Nlc3NtZW50LWJvcmRlci1yYWRpdXMtdHdvIG1iLTJcIj5cclxuICAgICAgICA8dmlkZW8gI3ZpZGVvIGF1dG9wbGF5IHBsYXlzaW5saW5lIG11dGVkIGNsYXNzPVwicHJvY3RvcmluZy1jYW0gcHJvY3RvcmluZy1jYW0tLW1pcnJvclwiIFtoaWRkZW5dPVwiY2FwdHVyZWRcIj48L3ZpZGVvPlxyXG4gICAgICAgIDxpbWcgKm5nSWY9XCJjYXB0dXJlZFwiIFtzcmNdPVwiY2FwdHVyZWRVcmxcIiBjbGFzcz1cInByb2N0b3JpbmctY2FtXCIgYWx0PVwicmVmZXJlbmNlXCIgLz5cclxuICAgICAgICA8Y2FudmFzICNjYW52YXMgaGlkZGVuPjwvY2FudmFzPlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWNhbWVyYVJlYWR5ICYmICFjYW1lcmFFcnJvciAmJiAhY2FwdHVyZWRcIlxyXG4gICAgICAgICAgY2xhc3M9XCJwcm9jdG9yaW5nLWNhbS1vdmVybGF5IGFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEyIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXNldmVuIHBvc2l0aW9uLWFic29sdXRlIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbSBtZS0yXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgIHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5DQU1FUkFfU1RBUlRJTkcnXSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxwICpuZ0lmPVwiY2FtZXJhRXJyb3JcIiBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEyIGFzc2Vzc21lbnQtdGV4dC1kYW5nZXIgbWItMlwiPnt7IGNhbWVyYUVycm9yIH19PC9wPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMiBtYi0zXCI+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNhcHR1cmVkXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXRha2UoKVwiIFtkaXNhYmxlZF09XCJzdGFydGluZ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtem9vbS1hbmltYXRpb24gYXNzZXNzbWVudC1idG4tcHJpbWFyeS10cmFuc3BhcmVudCBhc3Nlc3NtZW50LWJvcmRlci1yYWRpdXMtdHdvIGFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xMyBweC0zIHB5LTJcIj5cclxuICAgICAgICAgIHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVRBS0UnXSB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJjYW1lcmFFcnJvclwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic3RhcnRDYW1lcmEoKVwiIFtkaXNhYmxlZF09XCJzdGFydGluZ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtem9vbS1hbmltYXRpb24gYXNzZXNzbWVudC1idG4tcHJpbWFyeS10cmFuc3BhcmVudCBhc3Nlc3NtZW50LWJvcmRlci1yYWRpdXMtdHdvIGFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xMyBweC0zIHB5LTJcIj5cclxuICAgICAgICAgIHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRTX1JFVFJZJ10gfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWNhcHR1cmVkXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjYXB0dXJlKClcIiBbZGlzYWJsZWRdPVwiIWNhbWVyYVJlYWR5IHx8IHN0YXJ0aW5nXCJcclxuICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC16b29tLWFuaW1hdGlvbiBhc3Nlc3NtZW50LWJ0bi1wcmltYXJ5IGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEzIHB4LTMgcHktMiBtcy1hdXRvXCI+XHJcbiAgICAgICAgICB7eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuQ0FQVFVSRSddIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPHAgKm5nSWY9XCJzdGFydEVycm9yXCIgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZGFuZ2VyIG1iLTNcIj57eyBzdGFydEVycm9yIH19PC9wPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICA8YnV0dG9uICpuZ0lmPVwiY2FuUHJvY2VlZFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicHJvY2VlZCgpXCIgW2Rpc2FibGVkXT1cInN0YXJ0aW5nXCJcclxuICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtem9vbS1hbmltYXRpb24gYXNzZXNzbWVudC1idG4tcHJpbWFyeSBhc3Nlc3NtZW50LWJvcmRlci1yYWRpdXMtdHdvIGFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xMyBweC00IHB5LTIgZC1pbmxpbmUtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cInN0YXJ0aW5nXCIgY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbVwiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XHJcbiAgICAgICAge3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLkNPTlNFTlRfQUNDRVBUJ10gfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -162,7 +162,7 @@ export class ProctoringResultComponent {
|
|
|
162
162
|
}
|
|
163
163
|
}
|
|
164
164
|
ProctoringResultComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProctoringResultComponent, deps: [{ token: i1.MatDialogRef }, { token: i2.AssessmentTakerService }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
165
|
-
ProctoringResultComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ProctoringResultComponent, selector: "lib-proctoring-result", ngImport: i0, template: "<div class=\"d-flex flex-column h-100 overflow-hidden assessment-bg-white\">\r\n\r\n <!-- Header -->\r\n <div class=\"d-flex align-items-start justify-content-between gap-3 p-3 px-md-4 border-bottom\">\r\n <div class=\"flex-grow-1\">\r\n <p class=\"assessment-text-semibold-16 assessment-text-grey-ten mb-1\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.RESULT_TITLE'] }}\r\n </p>\r\n <p class=\"assessment-text-regular-12 assessment-text-grey-seven mb-0\">\r\n <span *ngIf=\"assesseeName\">{{ assesseeName }} \u00B7 </span>{{ totalElements }} {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSIONS_COUNT'] }}\r\n </p>\r\n </div>\r\n <button type=\"button\" class=\"btn-close\" (click)=\"close()\" aria-label=\"Close\"></button>\r\n </div>\r\n\r\n <!-- Body -->\r\n <div class=\"flex-grow-1 overflow-auto p-3 px-md-4\">\r\n\r\n <!-- Loading (initial) -->\r\n <div *ngIf=\"loading && !sessions.length\" class=\"d-flex align-items-center justify-content-center gap-2 py-5 assessment-text-regular-13 assessment-text-grey-seven\">\r\n <span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSIONS_LOADING'] }}\r\n </div>\r\n\r\n <!-- Error -->\r\n <div *ngIf=\"errored && !sessions.length\" class=\"text-center py-5\">\r\n <p class=\"assessment-text-regular-13 assessment-text-danger mb-3\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSIONS_ERROR'] }}</p>\r\n <button type=\"button\" (click)=\"loadSessions()\"\r\n class=\"assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORTS_RETRY'] }}\r\n </button>\r\n </div>\r\n\r\n <!-- Empty -->\r\n <div *ngIf=\"!loading && !errored && !sessions.length\" class=\"text-center py-5 assessment-text-regular-13 assessment-text-grey-seven\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSIONS_EMPTY'] }}\r\n </div>\r\n\r\n <!-- Sessions accordion -->\r\n <mat-accordion class=\"d-block\" *ngIf=\"sessions.length\">\r\n <mat-expansion-panel *ngFor=\"let session of sessions; trackBy: trackBySessionId\"\r\n class=\"shadow-none assessment-border-radius-two assessment-panel border mb-2\" (opened)=\"loadReport(session)\">\r\n\r\n <mat-expansion-panel-header class=\"proctoring-panel-header p-3\">\r\n <mat-panel-title class=\"d-flex flex-column my-1 align-items-start\">\r\n <span class=\"assessment-text-semibold-13 assessment-text-grey-ten\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_SESSION'] }} {{ session.id }}\r\n </span>\r\n <span class=\"d-flex align-items-center gap-2 mt-1\">\r\n <span *ngIf=\"session.status\" class=\"badge rounded-pill text-capitalize assessment-text-medium-10\" [ngClass]=\"statusBadgeClass(session.status)\">\r\n {{ session.status }}\r\n </span>\r\n <span *ngIf=\"session.integrityFlagged || reportBySession[session.id!]?.integrityFlagged\"\r\n class=\"badge rounded-pill assessment-bg-danger assessment-text-white assessment-text-medium-10\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_FLAGGED'] }}\r\n </span>\r\n </span>\r\n </mat-panel-title>\r\n <mat-panel-description class=\"justify-content-end align-items-center me-3\">\r\n <span *ngIf=\"toMillis(session.startedAt) as started\" class=\"assessment-text-regular-11 assessment-text-grey-seven\">\r\n {{ started | date:'dd MMM, HH:mm' }}\r\n </span>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n\r\n <!-- Report is fetched when the panel opens -->\r\n <ng-template matExpansionPanelContent>\r\n <div class=\"p-3 pt-1\" [ngSwitch]=\"reportState[session.id!]\">\r\n\r\n <!-- Loading -->\r\n <div *ngSwitchCase=\"'loading'\" class=\"d-flex align-items-center gap-2 py-3 assessment-text-regular-13 assessment-text-grey-seven\">\r\n <span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_LOADING'] }}\r\n </div>\r\n\r\n <!-- Error -->\r\n <div *ngSwitchCase=\"'error'\" class=\"py-3\">\r\n <p class=\"assessment-text-regular-13 assessment-text-danger mb-2\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_ERROR'] }}</p>\r\n <button type=\"button\" (click)=\"loadReport(session)\"\r\n class=\"assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORTS_RETRY'] }}\r\n </button>\r\n </div>\r\n\r\n <!-- No report yet -->\r\n <div *ngSwitchCase=\"'empty'\" class=\"py-3 assessment-text-regular-13 assessment-text-grey-seven\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_EMPTY'] }}\r\n </div>\r\n\r\n <!-- Loaded report -->\r\n <ng-container *ngSwitchCase=\"'loaded'\">\r\n <ng-container *ngIf=\"reportBySession[session.id!] as report\">\r\n\r\n <!-- Integrity summary (report top-level) -->\r\n <div class=\"row g-2\">\r\n <div class=\"col-6\">\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven text-uppercase mb-1\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_INTEGRITY_SCORE'] }}</p>\r\n <p class=\"assessment-text-regular-13 assessment-text-grey-ten mb-0\" [class.assessment-text-danger]=\"report.integrityFlagged\">\r\n {{ report.integrityScore }}<span *ngIf=\"report.integrityLevel\"> ({{ report.integrityLevel }})</span>\r\n </p>\r\n </div>\r\n <div class=\"col-6\" *ngIf=\"report.identityMatch\">\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven text-uppercase mb-1\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_IDENTITY_MATCH'] }}</p>\r\n <p class=\"assessment-text-regular-13 assessment-text-grey-ten mb-0\">{{ report.identityMatch }}</p>\r\n </div>\r\n <div class=\"col-12\" *ngIf=\"report.failureReason\">\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven text-uppercase mb-1\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_FAILURE_REASON'] }}</p>\r\n <p class=\"assessment-text-regular-13 assessment-text-danger mb-0\">{{ report.failureReason }}</p>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"getParsedPayload(report) as p; else rawPayload\">\r\n\r\n <!-- Summary meta -->\r\n <div class=\"d-flex flex-wrap align-items-center gap-2 mt-3 assessment-text-regular-12 assessment-text-grey-seven\">\r\n <span *ngIf=\"p.duration_seconds != null\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_DURATION'] }}: {{ formatDuration(p.duration_seconds) }}</span>\r\n <span *ngIf=\"p.started_at\">\u00B7 {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_STARTED'] }}: {{ p.started_at | date:'dd MMM, HH:mm:ss' }}</span>\r\n <span *ngIf=\"p.ended_at\">\u00B7 {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_ENDED'] }}: {{ p.ended_at | date:'HH:mm:ss' }}</span>\r\n </div>\r\n\r\n <!-- Reasons -->\r\n <div *ngIf=\"p.integrity?.reasons?.length\" class=\"d-flex flex-column gap-2 mt-2\">\r\n <div *ngFor=\"let r of p.integrity?.reasons; trackBy: trackByIndex\" class=\"border rounded p-2\">\r\n <div class=\"d-flex align-items-center justify-content-between gap-2\">\r\n <span class=\"assessment-text-semibold-12 assessment-text-grey-ten\">{{ reasonCodeLabel(r.code) }}</span>\r\n <span *ngIf=\"r.weight != null\" class=\"badge rounded-pill assessment-text-white\" [ngClass]=\"(r.weight || 0) < 0 ? 'assessment-bg-danger' : 'assessment-bg-success'\">{{ (r.weight || 0) > 0 ? '+' : '' }}{{ r.weight }}</span>\r\n </div>\r\n <p class=\"assessment-text-regular-12 assessment-text-grey-seven mb-0 mt-1\">{{ r.detail }}</p>\r\n </div>\r\n </div>\r\n\r\n <!-- Stat tiles: face analysis -->\r\n <p class=\"assessment-text-semibold-13 assessment-text-grey-ten mt-3 mb-2\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_ANALYSIS'] }}</p>\r\n <div class=\"row row-cols-2 row-cols-md-4 g-2 text-center\">\r\n <div class=\"col\">\r\n <div class=\"border rounded p-2 h-100\">\r\n <p class=\"assessment-text-semibold-18 mb-1\">{{ p.face_analysis?.frames_checked ?? 0 }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_FRAMES'] }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"border rounded p-2 h-100\">\r\n <p class=\"assessment-text-semibold-18 mb-1\" [class.assessment-text-danger]=\"(p.face_analysis?.no_face_frames || 0) > 0\">{{ p.face_analysis?.no_face_frames ?? 0 }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_NO_FACE'] }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"border rounded p-2 h-100\">\r\n <p class=\"assessment-text-semibold-18 mb-1\" [class.assessment-text-danger]=\"(p.face_analysis?.multi_face_frames || 0) > 0\">{{ p.face_analysis?.multi_face_frames ?? 0 }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_MULTI_FACE'] }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"border rounded p-2 h-100\">\r\n <p class=\"assessment-text-semibold-18 mb-1\" [class.assessment-text-danger]=\"(p.face_analysis?.impersonation_frames || 0) > 0\">{{ p.face_analysis?.impersonation_frames ?? 0 }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_IMPERSONATION'] }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Activity breakdown -->\r\n <div *ngIf=\"p.activity?.by_type\" class=\"d-flex flex-wrap gap-2 mt-3\">\r\n <span *ngFor=\"let item of (p.activity?.by_type | keyvalue); trackBy: trackByIndex\"\r\n class=\"badge rounded-pill assessment-bg-palette-EDF3FD assessment-text-grey-ten assessment-text-medium-12\">\r\n {{ eventTypeLabel(item.key) }} <span class=\"assessment-text-semibold-12\">{{ item.value }}</span>\r\n </span>\r\n </div>\r\n\r\n <!-- Evidence images -->\r\n <ng-container *ngIf=\"p.evidence?.length\">\r\n <p class=\"assessment-text-semibold-13 assessment-text-grey-ten mt-3 mb-2\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_EVIDENCE'] }}</p>\r\n <div class=\"d-flex flex-wrap gap-3\">\r\n <a *ngFor=\"let ev of p.evidence; trackBy: trackByIndex\" class=\"text-center text-decoration-none\"\r\n [href]=\"ev.image_url\" target=\"_blank\" rel=\"noopener\">\r\n <img class=\"proctoring-evi-img rounded border\" [src]=\"ev.image_url\" [attr.alt]=\"'frame ' + ev.seq\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/user.svg')\" />\r\n <span class=\"d-block assessment-text-regular-11 assessment-text-grey-seven mt-1\">\r\n <span *ngIf=\"ev.is_reference\" class=\"badge rounded-pill assessment-bg-primary-one assessment-text-white me-1\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_REFERENCE'] }}</span>\r\n #{{ ev.seq }} \u00B7 {{ ev.captured_at | date:'HH:mm:ss' }}\r\n </span>\r\n </a>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Timeline -->\r\n <ng-container *ngIf=\"p.timeline?.length\">\r\n <p class=\"assessment-text-semibold-13 assessment-text-grey-ten mt-3 mb-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_TIMELINE'] }} ({{ p.timeline?.length }})\r\n </p>\r\n <div class=\"proctoring-log assessment-bg-grey-ten assessment-text-grey-one font-monospace small rounded p-3 overflow-auto\">\r\n <div *ngFor=\"let ev of p.timeline; trackBy: trackByIndex\" class=\"text-nowrap\" [class.fw-semibold]=\"isNoteworthy(ev.type)\">\r\n <span class=\"assessment-text-grey-five me-2\">#{{ ev.seq }}</span>\r\n <span [class.assessment-text-palette-ADC9F6]=\"isNoteworthy(ev.type)\">{{ eventTypeLabel(ev.type) }}</span>\r\n <span class=\"assessment-text-grey-five ms-2\">{{ ev.at | date:'HH:mm:ss' }} ({{ ev.source }})</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n <!-- Fallback: raw payload if it isn't parseable JSON -->\r\n <ng-template #rawPayload>\r\n <pre *ngIf=\"report.reportPayload\" class=\"proctoring-payload assessment-bg-grey-ten assessment-text-grey-one small rounded p-3 overflow-auto mb-0 mt-3\">{{ report.reportPayload }}</pre>\r\n </ng-template>\r\n\r\n </ng-container>\r\n </ng-container>\r\n\r\n </div>\r\n </ng-template>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n\r\n <!-- Load more -->\r\n <div *ngIf=\"sessions.length && !last\" class=\"text-center mt-3\">\r\n <button type=\"button\" (click)=\"loadMore()\" [disabled]=\"loading\"\r\n class=\"assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2 d-inline-flex align-items-center gap-2\">\r\n <span *ngIf=\"loading\" class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.LOAD_MORE'] }}\r\n </button>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.assessment-text-grey-ten{color:var(--assessment-grey-ten)!important}.assessment-bg-grey-ten{background-color:var(--assessment-grey-ten)!important}.assessment-text-grey-nine{color:var(--assessment-grey-nine)!important}.assessment-bg-grey-nine{background-color:var(--assessment-grey-nine)!important}.assessment-text-grey-eight{color:var(--assessment-grey-eight)!important}.assessment-bg-grey-eight{background-color:var(--assessment-grey-eight)!important}.assessment-text-grey-seven{color:var(--assessment-grey-seven)!important}.assessment-bg-grey-seven{background-color:var(--assessment-grey-seven)!important}.assessment-text-grey-six{color:var(--assessment-grey-six)!important}.assessment-bg-grey-six{background-color:var(--assessment-grey-six)!important}.assessment-text-grey-five{color:var(--assessment-grey-five)!important}.assessment-bg-grey-five{background-color:var(--assessment-grey-five)!important}.assessment-text-grey-four{color:var(--assessment-grey-four)!important}.assessment-bg-grey-four{background-color:var(--assessment-grey-four)!important}.assessment-text-grey-three{color:var(--assessment-grey-three)!important}.assessment-bg-grey-three{background-color:var(--assessment-grey-three)!important}.assessment-text-grey-two{color:var(--assessment-grey-two)!important}.assessment-bg-grey-two{background-color:var(--assessment-grey-two)!important}.assessment-text-grey-one{color:var(--assessment-grey-one)!important}.assessment-bg-grey-one{background-color:var(--assessment-grey-one)!important}.assessment-text-white{color:var(--assessment-white)!important}.assessment-bg-white{background-color:var(--assessment-white)!important}.assessment-text-black{color:var(--assessment-black)!important}.assessment-bg-black{background-color:var(--assessment-black)!important}.assessment-text-danger{color:var(--assessment-danger)!important}.assessment-bg-danger{background-color:var(--assessment-danger)!important}.assessment-text-danger-bg{color:var(--assessment-danger-bg)!important}.assessment-bg-danger-bg{background-color:var(--assessment-danger-bg)!important}.assessment-text-success{color:var(--assessment-success)!important}.assessment-bg-success{background-color:var(--assessment-success)!important}.assessment-text-success-bg{color:var(--assessment-success-bg)!important}.assessment-bg-success-bg{background-color:var(--assessment-success-bg)!important}.assessment-text-warning{color:var(--assessment-warning)!important}.assessment-bg-warning{background-color:var(--assessment-warning)!important}.assessment-text-warning-bg{color:var(--assessment-warning-bg)!important}.assessment-bg-warning-bg{background-color:var(--assessment-warning-bg)!important}.assessment-text-primary-one{color:var(--assessment-primary-one)!important}.assessment-bg-primary-one{background-color:var(--assessment-primary-one)!important}.assessment-text-primary-four{color:var(--assessment-primary-four)!important}.assessment-bg-primary-four{background-color:var(--assessment-primary-four)!important}.assessment-text-palette-EDF3FD{color:var(--assessment-palette-EDF3FD)!important}.assessment-bg-palette-EDF3FD{background-color:var(--assessment-palette-EDF3FD)!important}.assessment-text-palette-C8DAF9{color:var(--assessment-palette-C8DAF9)!important}.assessment-bg-palette-C8DAF9{background-color:var(--assessment-palette-C8DAF9)!important}.assessment-text-palette-ADC9F6{color:var(--assessment-palette-ADC9F6)!important}.assessment-bg-palette-ADC9F6{background-color:var(--assessment-palette-ADC9F6)!important}.assessment-text-palette-FEF9F1{color:var(--assessment-palette-FEF9F1)!important}.assessment-bg-palette-FEF9F1{background-color:var(--assessment-palette-FEF9F1)!important}.assessment-text-palette-F9DAA6{color:var(--assessment-palette-F9DAA6)!important}.assessment-bg-palette-F9DAA6{background-color:var(--assessment-palette-F9DAA6)!important}.assessment-text-palette-E8F7F0{color:var(--assessment-palette-E8F7F0)!important}.assessment-bg-palette-E8F7F0{background-color:var(--assessment-palette-E8F7F0)!important}.assessment-text-palette-B7E7CF{color:var(--assessment-palette-B7E7CF)!important}.assessment-bg-palette-B7E7CF{background-color:var(--assessment-palette-B7E7CF)!important}.assessment-text-palette-FEF1E8{color:var(--assessment-palette-FEF1E8)!important}.assessment-bg-palette-FEF1E8{background-color:var(--assessment-palette-FEF1E8)!important}.assessment-text-palette-FAD2B9{color:var(--assessment-palette-FAD2B9)!important}.assessment-bg-palette-FAD2B9{background-color:var(--assessment-palette-FAD2B9)!important}.assessment-box-shadow-one{box-shadow:var(--assessment-box-shadow-one)!important}.assessment-border-radius-one{border-radius:var(--assessment-border-radius-one)!important}.assessment-border-radius-two{border-radius:var(--assessment-border-radius-two)!important}.assessment-border-radius-three{border-radius:var(--assessment-border-radius-three)!important}.assessment-border-radius-four{border-radius:var(--assessment-border-radius-four)!important}.assessment-border-radius-five{border-radius:var(--assessment-border-radius-five)!important}.assessment-border-radius-six{border-radius:var(--assessment-border-radius-six)!important}.assessment-input-border-one{border:var(--assessment-input-border-one)!important}.assessment-input-border-invalid{border:var(--assessment-input-border-invalid)!important}.assessment-input-focus-border{border:var(--assessment-input-focus-border)!important}.assessment-border-two{border:var(--assessment-border-two)!important}.assessment-card-border{border:var(--assessment-card-border)!important}.assessment-tooltip-border{border:var(--assessment-tooltip-border)!important}.assessment-box-shadow-tooltip{box-shadow:var(--assessment-box-shadow-tooltip)!important}.assessment-button-padding{padding:var(--assessment-button-padding)!important}.assessment-button-padding-large{padding:var(--assessment-button-padding-large)!important}.assessment-input-padding{padding:var(--assessment-input-padding)!important}.assessment-text-font-family{color:var(--assessment-font-family)!important}.assessment-bg-font-family{background-color:var(--assessment-font-family)!important}.assessment-text-regular-12{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(.48rem + .3vw);line-height:calc(.9rem + .3vw)}.assessment-text-semibold-12{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.48rem + .3vw);line-height:calc(.9rem + .3vw)}.assessment-text-medium-11{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.48rem + .25vw);line-height:calc(.8rem + .25vw)}.assessment-text-medium-10{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.42rem + .2vw);line-height:calc(.72rem + .2vw)}.assessment-text-regular-11{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(.48rem + .25vw);line-height:calc(.8rem + .25vw)}.assessment-text-medium-12{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.48rem + .3vw);line-height:calc(.9rem + .3vw)}.assessment-text-regular-13{font-weight:400;font-family:var(--assessment-font-family)!important;font-size:calc(.64rem + .2vw)!important;line-height:calc(.9rem + .2vw)!important}.assessment-text-semibold-13{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.64rem + .2vw)!important;line-height:calc(.9rem + .2vw)!important}.assessment-text-medium-13{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(.64rem + .2vw)!important;line-height:calc(.9rem + .2vw)!important}.assessment-text-medium-14{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(.7rem + .2vw)!important;line-height:calc(1.2rem + .2vw)!important}.assessment-text-semibold-14{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.7rem + .2vw);line-height:calc(1.2rem + .2vw)}.assessment-text-regular-15{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(.85rem + .1vw);line-height:calc(1.4rem + .1vw)}.assessment-text-medium-15{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.85rem + .1vw);line-height:calc(1.25rem + .1vw)}.assessment-text-semibold-15{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.85rem + .1vw);line-height:calc(1.25rem + .1vw)}.assessment-text-semibold-16{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.77rem + .25vw);line-height:calc(1.25rem + .2vw)}.assessment-text-medium-16{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(.77rem + .25vw);line-height:calc(1.25rem + .2vw)}.assessment-text-medium-18{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(1rem + .125vw)!important;line-height:calc(1.5rem + .1vw)!important}.assessment-text-semibold-18{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(1rem + .125vw)!important;line-height:calc(1.5rem + .1vw)!important}@media (min-height: 100vw) and (orientation: portrait){.assessment-text-medium-18,.assessment-text-semibold-18{font-size:calc(1rem + .1vh)!important;line-height:calc(1.6rem + .1vh)!important}.assessment-text-medium-16,.assessment-text-semibold-16{font-size:calc(.9rem + .2vh)!important;line-height:calc(1.4rem + .2vh)!important}.assessment-text-regular-15,.assessment-text-semibold-15{font-size:calc(.8rem + .2vh);line-height:calc(1.27rem + .2vh)}.assessment-text-medium-15{font-size:calc(.82rem + .2vh);line-height:calc(1.27rem + .2vh)}.assessment-text-medium-12,.assessment-text-regular-12,.assessment-text-semibold-12{font-size:calc(.5rem + .4vh);line-height:calc(.8rem + .4vh)}.assessment-text-medium-14,.assessment-text-semibold-14{font-size:calc(.8rem + .1vh)!important;line-height:calc(1.2rem + .2vh)!important}.assessment-text-regular-13,.assessment-text-medium-13,.assessment-text-semibold-13{font-size:calc(.7rem + .2vh)!important;line-height:calc(1rem + .3vh)!important}.assessment-text-regular-11,.assessment-text-medium-11{font-size:calc(.5rem + .2vh)!important;line-height:calc(.8rem + .2vh)!important}.assessment-text-medium-10{font-size:calc(.45rem + .2vh)!important;line-height:calc(.72rem + .2vh)!important}}.assessment-btn-primary{background-color:var(--assessment-primary-one);color:var(--assessment-white);border:.064rem solid var(--assessment-primary-one);border-radius:var(--assessment-border-radius-two)}.assessment-btn-primary-transparent{background-color:var(--assessment-white);color:var(--assessment-primary-one);border-radius:var(--assessment-border-radius-two);border:.064rem solid var(--assessment-primary-one)}.assessment-zoom-animation{transition:transform .2s ease;transform:translateZ(0);text-rendering:optimizeLegibility}.assessment-zoom-animation:hover{transform:scale(1.03)}.assessment-zoom-animation:active{transform:scale(1)}.assessment-zoom-animation:disabled{transform:none!important}.change-direction{transform:rotate(180deg);transition:.3s ease-out}.change-direction-reverse{transform:rotate(0);transition:.3s ease-out}.outline-0{outline:none}.cursor-grab{cursor:grab}.cursor-pointer{cursor:pointer}.action-icon{width:1.2rem}.mat-menu-item,.mat-mdc-menu-item{height:inherit;min-height:unset;--mat-menu-item-label-text-font: var(--assessment-font-family) !important;--mat-menu-item-label-text-size: 14px !important;--mat-menu-item-label-text-weight: 600 !important;--mat-menu-item-label-text-line-height: inherit !important}.skill-chip{width:-moz-fit-content;width:fit-content;background:var(--assessment-palette-EDF3FD);border:.064rem solid var(--assessment-palette-C8DAF9)}.assessment-form-check-input-primary-one{min-height:unset}.assessment-form-check-input-primary-one .form-check-input{width:1rem;height:1rem}.assessment-form-check-input-primary-one .form-check-input:checked{background-color:var(--assessment-primary-one);color:var(--assessment-primary-one)}.assessment-form-check-input-primary-one .form-check-input:disabled{opacity:.8}.form-check-input:checked{background-color:var(--assessment-primary-one);border-color:var(--assessment-primary-one)}.form-check-input:focus{border-color:var(--assessment-primary-one);box-shadow:none}.badge{font-weight:500}.proctoring-panel-header{height:auto!important}.proctoring-log{max-height:16rem}.proctoring-payload{max-height:18rem;white-space:pre-wrap;word-break:break-word}.proctoring-evi-img{width:5rem;height:5rem;object-fit:cover}\n"], components: [{ type: i3.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { type: i3.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.MatAccordion, selector: "mat-accordion", inputs: ["multi", "displayMode", "togglePosition", "hideToggle"], exportAs: ["matAccordion"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.MatExpansionPanelTitle, selector: "mat-panel-title" }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.MatExpansionPanelDescription, selector: "mat-panel-description" }, { type: i3.MatExpansionPanelContent, selector: "ng-template[matExpansionPanelContent]" }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], pipes: { "date": i4.DatePipe, "keyvalue": i4.KeyValuePipe } });
|
|
165
|
+
ProctoringResultComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ProctoringResultComponent, selector: "lib-proctoring-result", ngImport: i0, template: "<div class=\"d-flex flex-column h-100 overflow-hidden assessment-bg-white\">\r\n\r\n <!-- Header -->\r\n <div class=\"d-flex align-items-start justify-content-between gap-3 p-3 px-md-4 border-bottom\">\r\n <div class=\"flex-grow-1\">\r\n <p class=\"assessment-text-semibold-16 assessment-text-grey-ten mb-1\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.RESULT_TITLE'] }}\r\n </p>\r\n <p class=\"assessment-text-regular-12 assessment-text-grey-seven mb-0\">\r\n <span *ngIf=\"assesseeName\">{{ assesseeName }} \u00B7 </span>{{ totalElements }} {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSIONS_COUNT'] }}\r\n </p>\r\n </div>\r\n <button type=\"button\" class=\"btn-close\" (click)=\"close()\" aria-label=\"Close\"></button>\r\n </div>\r\n\r\n <!-- Body -->\r\n <div class=\"flex-grow-1 overflow-auto p-3 px-md-4\">\r\n\r\n <!-- Loading (initial) -->\r\n <div *ngIf=\"loading && !sessions.length\" class=\"d-flex align-items-center justify-content-center gap-2 py-5 assessment-text-regular-13 assessment-text-grey-seven\">\r\n <span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSIONS_LOADING'] }}\r\n </div>\r\n\r\n <!-- Error -->\r\n <div *ngIf=\"errored && !sessions.length\" class=\"text-center py-5\">\r\n <p class=\"assessment-text-regular-13 assessment-text-danger mb-3\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSIONS_ERROR'] }}</p>\r\n <button type=\"button\" (click)=\"loadSessions()\"\r\n class=\"assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORTS_RETRY'] }}\r\n </button>\r\n </div>\r\n\r\n <!-- Empty -->\r\n <div *ngIf=\"!loading && !errored && !sessions.length\" class=\"text-center py-5 assessment-text-regular-13 assessment-text-grey-seven\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSIONS_EMPTY'] }}\r\n </div>\r\n\r\n <!-- Sessions accordion -->\r\n <mat-accordion class=\"d-block\" *ngIf=\"sessions.length\">\r\n <mat-expansion-panel *ngFor=\"let session of sessions; trackBy: trackBySessionId\"\r\n class=\"shadow-none assessment-border-radius-two assessment-panel border mb-2\" (opened)=\"loadReport(session)\">\r\n\r\n <mat-expansion-panel-header class=\"proctoring-panel-header p-3\">\r\n <mat-panel-title class=\"d-flex flex-column my-1 align-items-start\">\r\n <span class=\"assessment-text-semibold-13 assessment-text-grey-ten\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_SESSION'] }} {{ session.id }}\r\n </span>\r\n <span class=\"d-flex align-items-center gap-2 mt-1\">\r\n <span *ngIf=\"session.status\" class=\"badge rounded-pill text-capitalize assessment-text-medium-10\" [ngClass]=\"statusBadgeClass(session.status)\">\r\n {{ session.status }}\r\n </span>\r\n <span *ngIf=\"session?.integritySummary?.integrityFlagged\"\r\n class=\"badge rounded-pill assessment-bg-danger assessment-text-white assessment-text-medium-10\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_FLAGGED'] }}\r\n </span>\r\n </span>\r\n </mat-panel-title>\r\n <mat-panel-description class=\"justify-content-end align-items-center me-3\">\r\n <span *ngIf=\"toMillis(session.startedAt) as started\" class=\"assessment-text-regular-11 assessment-text-grey-seven\">\r\n {{ started | date:'dd MMM, HH:mm' }}\r\n </span>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n\r\n <!-- Report is fetched when the panel opens -->\r\n <ng-template matExpansionPanelContent>\r\n <div class=\"p-3 pt-1\" [ngSwitch]=\"reportState[session.id!]\">\r\n\r\n <!-- Loading -->\r\n <div *ngSwitchCase=\"'loading'\" class=\"d-flex align-items-center gap-2 py-3 assessment-text-regular-13 assessment-text-grey-seven\">\r\n <span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_LOADING'] }}\r\n </div>\r\n\r\n <!-- Error -->\r\n <div *ngSwitchCase=\"'error'\" class=\"py-3\">\r\n <p class=\"assessment-text-regular-13 assessment-text-danger mb-2\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_ERROR'] }}</p>\r\n <button type=\"button\" (click)=\"loadReport(session)\"\r\n class=\"assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORTS_RETRY'] }}\r\n </button>\r\n </div>\r\n\r\n <!-- No report yet -->\r\n <div *ngSwitchCase=\"'empty'\" class=\"py-3 assessment-text-regular-13 assessment-text-grey-seven\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_EMPTY'] }}\r\n </div>\r\n\r\n <!-- Loaded report -->\r\n <ng-container *ngSwitchCase=\"'loaded'\">\r\n <ng-container *ngIf=\"reportBySession[session.id!] as report\">\r\n\r\n <!-- Integrity summary (report top-level) -->\r\n <div class=\"row g-2\">\r\n <div class=\"col-6\">\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven text-uppercase mb-1\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_INTEGRITY_SCORE'] }}</p>\r\n <p class=\"assessment-text-regular-13 assessment-text-grey-ten mb-0\" [class.assessment-text-danger]=\"report.integrityFlagged\">\r\n {{ report.integrityScore }}<span *ngIf=\"report.integrityLevel\"> ({{ report.integrityLevel }})</span>\r\n </p>\r\n </div>\r\n <div class=\"col-6\" *ngIf=\"report.identityMatch\">\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven text-uppercase mb-1\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_IDENTITY_MATCH'] }}</p>\r\n <p class=\"assessment-text-regular-13 assessment-text-grey-ten mb-0\">{{ report.identityMatch }}</p>\r\n </div>\r\n <div class=\"col-12\" *ngIf=\"report.failureReason\">\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven text-uppercase mb-1\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_FAILURE_REASON'] }}</p>\r\n <p class=\"assessment-text-regular-13 assessment-text-danger mb-0\">{{ report.failureReason }}</p>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"getParsedPayload(report) as p; else rawPayload\">\r\n\r\n <!-- Summary meta -->\r\n <div class=\"d-flex flex-wrap align-items-center gap-2 mt-3 assessment-text-regular-12 assessment-text-grey-seven\">\r\n <span *ngIf=\"p.duration_seconds != null\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_DURATION'] }}: {{ formatDuration(p.duration_seconds) }}</span>\r\n <span *ngIf=\"p.started_at\">\u00B7 {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_STARTED'] }}: {{ p.started_at | date:'dd MMM, HH:mm:ss' }}</span>\r\n <span *ngIf=\"p.ended_at\">\u00B7 {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_ENDED'] }}: {{ p.ended_at | date:'HH:mm:ss' }}</span>\r\n </div>\r\n\r\n <!-- Reasons -->\r\n <div *ngIf=\"p.integrity?.reasons?.length\" class=\"d-flex flex-column gap-2 mt-2\">\r\n <div *ngFor=\"let r of p.integrity?.reasons; trackBy: trackByIndex\" class=\"border rounded p-2\">\r\n <div class=\"d-flex align-items-center justify-content-between gap-2\">\r\n <span class=\"assessment-text-semibold-12 assessment-text-grey-ten\">{{ reasonCodeLabel(r.code) }}</span>\r\n <span *ngIf=\"r.weight != null\" class=\"badge rounded-pill assessment-text-white\" [ngClass]=\"(r.weight || 0) < 0 ? 'assessment-bg-danger' : 'assessment-bg-success'\">{{ (r.weight || 0) > 0 ? '+' : '' }}{{ r.weight }}</span>\r\n </div>\r\n <p class=\"assessment-text-regular-12 assessment-text-grey-seven mb-0 mt-1\">{{ r.detail }}</p>\r\n </div>\r\n </div>\r\n\r\n <!-- Stat tiles: face analysis -->\r\n <p class=\"assessment-text-semibold-13 assessment-text-grey-ten mt-3 mb-2\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_ANALYSIS'] }}</p>\r\n <div class=\"row row-cols-2 row-cols-md-4 g-2 text-center\">\r\n <div class=\"col\">\r\n <div class=\"border rounded p-2 h-100\">\r\n <p class=\"assessment-text-semibold-18 mb-1\">{{ p.face_analysis?.frames_checked ?? 0 }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_FRAMES'] }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"border rounded p-2 h-100\">\r\n <p class=\"assessment-text-semibold-18 mb-1\" [class.assessment-text-danger]=\"(p.face_analysis?.no_face_frames || 0) > 0\">{{ p.face_analysis?.no_face_frames ?? 0 }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_NO_FACE'] }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"border rounded p-2 h-100\">\r\n <p class=\"assessment-text-semibold-18 mb-1\" [class.assessment-text-danger]=\"(p.face_analysis?.multi_face_frames || 0) > 0\">{{ p.face_analysis?.multi_face_frames ?? 0 }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_MULTI_FACE'] }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"border rounded p-2 h-100\">\r\n <p class=\"assessment-text-semibold-18 mb-1\" [class.assessment-text-danger]=\"(p.face_analysis?.impersonation_frames || 0) > 0\">{{ p.face_analysis?.impersonation_frames ?? 0 }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_IMPERSONATION'] }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Activity breakdown -->\r\n <div *ngIf=\"p.activity?.by_type\" class=\"d-flex flex-wrap gap-2 mt-3\">\r\n <span *ngFor=\"let item of (p.activity?.by_type | keyvalue); trackBy: trackByIndex\"\r\n class=\"badge rounded-pill assessment-bg-palette-EDF3FD assessment-text-grey-ten assessment-text-medium-12\">\r\n {{ eventTypeLabel(item.key) }} <span class=\"assessment-text-semibold-12\">{{ item.value }}</span>\r\n </span>\r\n </div>\r\n\r\n <!-- Evidence images -->\r\n <ng-container *ngIf=\"p.evidence?.length\">\r\n <p class=\"assessment-text-semibold-13 assessment-text-grey-ten mt-3 mb-2\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_EVIDENCE'] }}</p>\r\n <div class=\"d-flex flex-wrap gap-3\">\r\n <a *ngFor=\"let ev of p.evidence; trackBy: trackByIndex\" class=\"text-center text-decoration-none\"\r\n [href]=\"ev.image_url\" target=\"_blank\" rel=\"noopener\">\r\n <img class=\"proctoring-evi-img rounded border\" [src]=\"ev.image_url\" [attr.alt]=\"'frame ' + ev.seq\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/user.svg')\" />\r\n <span class=\"d-block assessment-text-regular-11 assessment-text-grey-seven mt-1\">\r\n <span *ngIf=\"ev.is_reference\" class=\"badge rounded-pill assessment-bg-primary-one assessment-text-white me-1\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_REFERENCE'] }}</span>\r\n #{{ ev.seq }} \u00B7 {{ ev.captured_at | date:'HH:mm:ss' }}\r\n </span>\r\n </a>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Timeline -->\r\n <ng-container *ngIf=\"p.timeline?.length\">\r\n <p class=\"assessment-text-semibold-13 assessment-text-grey-ten mt-3 mb-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_TIMELINE'] }} ({{ p.timeline?.length }})\r\n </p>\r\n <div class=\"proctoring-log assessment-bg-grey-ten assessment-text-grey-one font-monospace small rounded p-3 overflow-auto\">\r\n <div *ngFor=\"let ev of p.timeline; trackBy: trackByIndex\" class=\"text-nowrap\" [class.fw-semibold]=\"isNoteworthy(ev.type)\">\r\n <span class=\"assessment-text-grey-five me-2\">#{{ ev.seq }}</span>\r\n <span [class.assessment-text-palette-ADC9F6]=\"isNoteworthy(ev.type)\">{{ eventTypeLabel(ev.type) }}</span>\r\n <span class=\"assessment-text-grey-five ms-2\">{{ ev.at | date:'HH:mm:ss' }} ({{ ev.source }})</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n <!-- Fallback: raw payload if it isn't parseable JSON -->\r\n <ng-template #rawPayload>\r\n <pre *ngIf=\"report.reportPayload\" class=\"proctoring-payload assessment-bg-grey-ten assessment-text-grey-one small rounded p-3 overflow-auto mb-0 mt-3\">{{ report.reportPayload }}</pre>\r\n </ng-template>\r\n\r\n </ng-container>\r\n </ng-container>\r\n\r\n </div>\r\n </ng-template>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n\r\n <!-- Load more -->\r\n <div *ngIf=\"sessions.length && !last\" class=\"text-center mt-3\">\r\n <button type=\"button\" (click)=\"loadMore()\" [disabled]=\"loading\"\r\n class=\"assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2 d-inline-flex align-items-center gap-2\">\r\n <span *ngIf=\"loading\" class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.LOAD_MORE'] }}\r\n </button>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.assessment-text-grey-ten{color:var(--assessment-grey-ten)!important}.assessment-bg-grey-ten{background-color:var(--assessment-grey-ten)!important}.assessment-text-grey-nine{color:var(--assessment-grey-nine)!important}.assessment-bg-grey-nine{background-color:var(--assessment-grey-nine)!important}.assessment-text-grey-eight{color:var(--assessment-grey-eight)!important}.assessment-bg-grey-eight{background-color:var(--assessment-grey-eight)!important}.assessment-text-grey-seven{color:var(--assessment-grey-seven)!important}.assessment-bg-grey-seven{background-color:var(--assessment-grey-seven)!important}.assessment-text-grey-six{color:var(--assessment-grey-six)!important}.assessment-bg-grey-six{background-color:var(--assessment-grey-six)!important}.assessment-text-grey-five{color:var(--assessment-grey-five)!important}.assessment-bg-grey-five{background-color:var(--assessment-grey-five)!important}.assessment-text-grey-four{color:var(--assessment-grey-four)!important}.assessment-bg-grey-four{background-color:var(--assessment-grey-four)!important}.assessment-text-grey-three{color:var(--assessment-grey-three)!important}.assessment-bg-grey-three{background-color:var(--assessment-grey-three)!important}.assessment-text-grey-two{color:var(--assessment-grey-two)!important}.assessment-bg-grey-two{background-color:var(--assessment-grey-two)!important}.assessment-text-grey-one{color:var(--assessment-grey-one)!important}.assessment-bg-grey-one{background-color:var(--assessment-grey-one)!important}.assessment-text-white{color:var(--assessment-white)!important}.assessment-bg-white{background-color:var(--assessment-white)!important}.assessment-text-black{color:var(--assessment-black)!important}.assessment-bg-black{background-color:var(--assessment-black)!important}.assessment-text-danger{color:var(--assessment-danger)!important}.assessment-bg-danger{background-color:var(--assessment-danger)!important}.assessment-text-danger-bg{color:var(--assessment-danger-bg)!important}.assessment-bg-danger-bg{background-color:var(--assessment-danger-bg)!important}.assessment-text-success{color:var(--assessment-success)!important}.assessment-bg-success{background-color:var(--assessment-success)!important}.assessment-text-success-bg{color:var(--assessment-success-bg)!important}.assessment-bg-success-bg{background-color:var(--assessment-success-bg)!important}.assessment-text-warning{color:var(--assessment-warning)!important}.assessment-bg-warning{background-color:var(--assessment-warning)!important}.assessment-text-warning-bg{color:var(--assessment-warning-bg)!important}.assessment-bg-warning-bg{background-color:var(--assessment-warning-bg)!important}.assessment-text-primary-one{color:var(--assessment-primary-one)!important}.assessment-bg-primary-one{background-color:var(--assessment-primary-one)!important}.assessment-text-primary-four{color:var(--assessment-primary-four)!important}.assessment-bg-primary-four{background-color:var(--assessment-primary-four)!important}.assessment-text-palette-EDF3FD{color:var(--assessment-palette-EDF3FD)!important}.assessment-bg-palette-EDF3FD{background-color:var(--assessment-palette-EDF3FD)!important}.assessment-text-palette-C8DAF9{color:var(--assessment-palette-C8DAF9)!important}.assessment-bg-palette-C8DAF9{background-color:var(--assessment-palette-C8DAF9)!important}.assessment-text-palette-ADC9F6{color:var(--assessment-palette-ADC9F6)!important}.assessment-bg-palette-ADC9F6{background-color:var(--assessment-palette-ADC9F6)!important}.assessment-text-palette-FEF9F1{color:var(--assessment-palette-FEF9F1)!important}.assessment-bg-palette-FEF9F1{background-color:var(--assessment-palette-FEF9F1)!important}.assessment-text-palette-F9DAA6{color:var(--assessment-palette-F9DAA6)!important}.assessment-bg-palette-F9DAA6{background-color:var(--assessment-palette-F9DAA6)!important}.assessment-text-palette-E8F7F0{color:var(--assessment-palette-E8F7F0)!important}.assessment-bg-palette-E8F7F0{background-color:var(--assessment-palette-E8F7F0)!important}.assessment-text-palette-B7E7CF{color:var(--assessment-palette-B7E7CF)!important}.assessment-bg-palette-B7E7CF{background-color:var(--assessment-palette-B7E7CF)!important}.assessment-text-palette-FEF1E8{color:var(--assessment-palette-FEF1E8)!important}.assessment-bg-palette-FEF1E8{background-color:var(--assessment-palette-FEF1E8)!important}.assessment-text-palette-FAD2B9{color:var(--assessment-palette-FAD2B9)!important}.assessment-bg-palette-FAD2B9{background-color:var(--assessment-palette-FAD2B9)!important}.assessment-box-shadow-one{box-shadow:var(--assessment-box-shadow-one)!important}.assessment-border-radius-one{border-radius:var(--assessment-border-radius-one)!important}.assessment-border-radius-two{border-radius:var(--assessment-border-radius-two)!important}.assessment-border-radius-three{border-radius:var(--assessment-border-radius-three)!important}.assessment-border-radius-four{border-radius:var(--assessment-border-radius-four)!important}.assessment-border-radius-five{border-radius:var(--assessment-border-radius-five)!important}.assessment-border-radius-six{border-radius:var(--assessment-border-radius-six)!important}.assessment-input-border-one{border:var(--assessment-input-border-one)!important}.assessment-input-border-invalid{border:var(--assessment-input-border-invalid)!important}.assessment-input-focus-border{border:var(--assessment-input-focus-border)!important}.assessment-border-two{border:var(--assessment-border-two)!important}.assessment-card-border{border:var(--assessment-card-border)!important}.assessment-tooltip-border{border:var(--assessment-tooltip-border)!important}.assessment-box-shadow-tooltip{box-shadow:var(--assessment-box-shadow-tooltip)!important}.assessment-input-focus-box-shadow{box-shadow:var(--assessment-input-focus-box-shadow)!important}.assessment-button-padding{padding:var(--assessment-button-padding)!important}.assessment-button-padding-large{padding:var(--assessment-button-padding-large)!important}.assessment-input-padding{padding:var(--assessment-input-padding)!important}.assessment-text-font-family{color:var(--assessment-font-family)!important}.assessment-bg-font-family{background-color:var(--assessment-font-family)!important}.assessment-text-regular-12{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(.48rem + .3vw);line-height:calc(.9rem + .3vw)}.assessment-text-semibold-12{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.48rem + .3vw);line-height:calc(.9rem + .3vw)}.assessment-text-medium-11{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.48rem + .25vw);line-height:calc(.8rem + .25vw)}.assessment-text-medium-10{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.42rem + .2vw);line-height:calc(.72rem + .2vw)}.assessment-text-regular-11{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(.48rem + .25vw);line-height:calc(.8rem + .25vw)}.assessment-text-medium-12{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.48rem + .3vw);line-height:calc(.9rem + .3vw)}.assessment-text-regular-13{font-weight:400;font-family:var(--assessment-font-family)!important;font-size:calc(.64rem + .2vw)!important;line-height:calc(.9rem + .2vw)!important}.assessment-text-semibold-13{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.64rem + .2vw)!important;line-height:calc(.9rem + .2vw)!important}.assessment-text-medium-13{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(.64rem + .2vw)!important;line-height:calc(.9rem + .2vw)!important}.assessment-text-medium-14{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(.7rem + .2vw)!important;line-height:calc(1.2rem + .2vw)!important}.assessment-text-semibold-14{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.7rem + .2vw);line-height:calc(1.2rem + .2vw)}.assessment-text-regular-15{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(.85rem + .1vw);line-height:calc(1.4rem + .1vw)}.assessment-text-medium-15{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.85rem + .1vw);line-height:calc(1.25rem + .1vw)}.assessment-text-semibold-15{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.85rem + .1vw);line-height:calc(1.25rem + .1vw)}.assessment-text-semibold-16{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.77rem + .25vw);line-height:calc(1.25rem + .2vw)}.assessment-text-medium-16{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(.77rem + .25vw);line-height:calc(1.25rem + .2vw)}.assessment-text-medium-18{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(1rem + .125vw)!important;line-height:calc(1.5rem + .1vw)!important}.assessment-text-semibold-18{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(1rem + .125vw)!important;line-height:calc(1.5rem + .1vw)!important}@media (min-height: 100vw) and (orientation: portrait){.assessment-text-medium-18,.assessment-text-semibold-18{font-size:calc(1rem + .1vh)!important;line-height:calc(1.6rem + .1vh)!important}.assessment-text-medium-16,.assessment-text-semibold-16{font-size:calc(.9rem + .2vh)!important;line-height:calc(1.4rem + .2vh)!important}.assessment-text-regular-15,.assessment-text-semibold-15{font-size:calc(.8rem + .2vh);line-height:calc(1.27rem + .2vh)}.assessment-text-medium-15{font-size:calc(.82rem + .2vh);line-height:calc(1.27rem + .2vh)}.assessment-text-medium-12,.assessment-text-regular-12,.assessment-text-semibold-12{font-size:calc(.5rem + .4vh);line-height:calc(.8rem + .4vh)}.assessment-text-medium-14,.assessment-text-semibold-14{font-size:calc(.8rem + .1vh)!important;line-height:calc(1.2rem + .2vh)!important}.assessment-text-regular-13,.assessment-text-medium-13,.assessment-text-semibold-13{font-size:calc(.7rem + .2vh)!important;line-height:calc(1rem + .3vh)!important}.assessment-text-regular-11,.assessment-text-medium-11{font-size:calc(.5rem + .2vh)!important;line-height:calc(.8rem + .2vh)!important}.assessment-text-medium-10{font-size:calc(.45rem + .2vh)!important;line-height:calc(.72rem + .2vh)!important}}.assessment-btn-primary{background-color:var(--assessment-primary-one);color:var(--assessment-white);border:.064rem solid var(--assessment-primary-one);border-radius:var(--assessment-border-radius-two)}.assessment-btn-primary-transparent{background-color:var(--assessment-white);color:var(--assessment-primary-one);border-radius:var(--assessment-border-radius-two);border:.064rem solid var(--assessment-primary-one)}.assessment-zoom-animation{transition:transform .2s ease;transform:translateZ(0);text-rendering:optimizeLegibility}.assessment-zoom-animation:hover{transform:scale(1.03)}.assessment-zoom-animation:active{transform:scale(1)}.assessment-zoom-animation:disabled{transform:none!important}.change-direction{transform:rotate(180deg);transition:.3s ease-out}.change-direction-reverse{transform:rotate(0);transition:.3s ease-out}.outline-0{outline:none}.cursor-grab{cursor:grab}.cursor-pointer{cursor:pointer}.action-icon{width:1.2rem}.mat-menu-item,.mat-mdc-menu-item{height:inherit;min-height:unset;--mat-menu-item-label-text-font: var(--assessment-font-family) !important;--mat-menu-item-label-text-size: 14px !important;--mat-menu-item-label-text-weight: 600 !important;--mat-menu-item-label-text-line-height: inherit !important}.skill-chip{width:-moz-fit-content;width:fit-content;background:var(--assessment-palette-EDF3FD);border:.064rem solid var(--assessment-palette-C8DAF9)}.assessment-form-check-input-primary-one{min-height:unset}.assessment-form-check-input-primary-one .form-check-input{width:1rem;height:1rem}.assessment-form-check-input-primary-one .form-check-input:checked{background-color:var(--assessment-primary-one);color:var(--assessment-primary-one)}.assessment-form-check-input-primary-one .form-check-input:disabled{opacity:.8}.form-check-input:checked{background-color:var(--assessment-primary-one);border-color:var(--assessment-primary-one)}.form-check-input:focus{border-color:var(--assessment-primary-one);box-shadow:none}.badge{font-weight:500}.proctoring-panel-header{height:auto!important}.proctoring-log{max-height:16rem}.proctoring-payload{max-height:18rem;white-space:pre-wrap;word-break:break-word}.proctoring-evi-img{width:5rem;height:5rem;object-fit:cover}\n"], components: [{ type: i3.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { type: i3.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.MatAccordion, selector: "mat-accordion", inputs: ["multi", "displayMode", "togglePosition", "hideToggle"], exportAs: ["matAccordion"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.MatExpansionPanelTitle, selector: "mat-panel-title" }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.MatExpansionPanelDescription, selector: "mat-panel-description" }, { type: i3.MatExpansionPanelContent, selector: "ng-template[matExpansionPanelContent]" }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], pipes: { "date": i4.DatePipe, "keyvalue": i4.KeyValuePipe } });
|
|
166
166
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProctoringResultComponent, decorators: [{
|
|
167
167
|
type: Component,
|
|
168
168
|
args: [{
|
|
@@ -174,4 +174,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
174
174
|
type: Inject,
|
|
175
175
|
args: [MAT_DIALOG_DATA]
|
|
176
176
|
}] }]; } });
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY3RvcmluZy1yZXN1bHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9ucy1hc3Nlc3NtZW50L3NyYy9saWIvbW9kdWxlcy9hc3Nlc3NtZW50LXRha2VyL2NvbXBvbmVudHMvcHJvY3RvcmluZy1yZXN1bHQvcHJvY3RvcmluZy1yZXN1bHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9ucy1hc3Nlc3NtZW50L3NyYy9saWIvbW9kdWxlcy9hc3Nlc3NtZW50LXRha2VyL2NvbXBvbmVudHMvcHJvY3RvcmluZy1yZXN1bHQvcHJvY3RvcmluZy1yZXN1bHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7O0FBV3pFLE1BQU0sT0FBTyx5QkFBeUI7SUFtQnBDLFlBQ1MsU0FBa0QsRUFDakQsc0JBQThDLEVBQ3RCLElBSy9CO1FBUE0sY0FBUyxHQUFULFNBQVMsQ0FBeUM7UUFDakQsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUN0QixTQUFJLEdBQUosSUFBSSxDQUtuQztRQXJCSCxhQUFRLEdBQStCLEVBQUUsQ0FBQztRQUMxQyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFDbEIsU0FBSSxHQUFHLElBQUksQ0FBQztRQUNKLFNBQUksR0FBRyxDQUFDLENBQUM7UUFDQSxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBRTNCLDZEQUE2RDtRQUM3RCxvQkFBZSxHQUE4QyxFQUFFLENBQUM7UUFDaEUsZ0JBQVcsR0FBeUMsRUFBRSxDQUFD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LENBQUMsS0FBVSxFQUFFLFFBQWdCO1FBQzVDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQztJQUM5QixDQUFDOzt1SEF4S1UseUJBQXlCLG9GQXNCMUIsZUFBZTsyR0F0QmQseUJBQXlCLDZEQ1p0QyxxbmVBZ09BOzRGRHBOYSx5QkFBeUI7a0JBTHJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsV0FBVyxFQUFFLG9DQUFvQztvQkFDakQsU0FBUyxFQUFFLENBQUMsb0NBQW9DLENBQUM7aUJBQ2xEOzswQkF1QkksTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEFzc2Vzc21lbnRUYWtlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hc3Nlc3NtZW50LXRha2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm9jdG9yaW5nUGF5bG9hZCwgUHJvY3RvcmluZ1JlcG9ydCwgUHJvY3RvcmluZ1Nlc3Npb25TdW1tYXJ5IH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2ludGVyZmFjZXMvcHJvY3RvcmluZy5pbnRlcmZhY2UnO1xyXG5cclxudHlwZSBSZXBvcnRTdGF0ZSA9ICdsb2FkaW5nJyB8ICdsb2FkZWQnIHwgJ2VtcHR5JyB8ICdlcnJvcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1wcm9jdG9yaW5nLXJlc3VsdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2N0b3JpbmctcmVzdWx0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wcm9jdG9yaW5nLXJlc3VsdC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9jdG9yaW5nUmVzdWx0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBsYWJlbENvbmZpZzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcclxuICBpbWFnZUNvbmZpZzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcclxuICBhc3Nlc3NlZUlkOiBudW1iZXI7XHJcbiAgYXNzZXNzZWVOYW1lOiBzdHJpbmc7XHJcblxyXG4gIHNlc3Npb25zOiBQcm9jdG9yaW5nU2Vzc2lvblN1bW1hcnlbXSA9IFtdO1xyXG4gIGxvYWRpbmcgPSBmYWxzZTtcclxuICBlcnJvcmVkID0gZmFsc2U7XHJcbiAgdG90YWxFbGVtZW50cyA9IDA7XHJcbiAgbGFzdCA9IHRydWU7XHJcbiAgcHJpdmF0ZSBwYWdlID0gMDtcclxuICBwcml2YXRlIHJlYWRvbmx5IHNpemUgPSAyMDtcclxuXHJcbiAgLy8gcGVyLXNlc3Npb24gbGF6eSByZXBvcnQgZGF0YSArIHN0YXRlIChrZXllZCBieSBzZXNzaW9uIGlkKVxyXG4gIHJlcG9ydEJ5U2Vzc2lvbjogeyBbc2Vzc2lvbklkOiBudW1iZXJdOiBQcm9jdG9yaW5nUmVwb3J0IH0gPSB7fTtcclxuICByZXBvcnRTdGF0ZTogeyBbc2Vzc2lvbklkOiBudW1iZXJdOiBSZXBvcnRTdGF0ZSB9ID0ge307XHJcbiAgcHJpdmF0ZSBwYXJzZWRDYWNoZTogeyBbcmVwb3J0SWQ6IG51bWJlcl06IFByb2N0b3JpbmdQYXlsb2FkIHwgbnVsbCB9ID0ge307XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFByb2N0b3JpbmdSZXN1bHRDb21wb25lbnQ+LFxyXG4gICAgcHJpdmF0ZSBhc3Nlc3NtZW50VGFrZXJTZXJ2aWNlOiBBc3Nlc3NtZW50VGFrZXJTZXJ2aWNlLFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiB7XHJcbiAgICAgIGxhYmVsQ29uZmlnPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcclxuICAgICAgaW1hZ2VDb25maWc/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xyXG4gICAgICBhc3Nlc3NlZUlkPzogbnVtYmVyO1xyXG4gICAgICBhc3Nlc3NlZU5hbWU/OiBzdHJpbmc7XHJcbiAgICB9XHJcbiAgKSB7XHJcbiAgICB0aGlzLmxhYmVsQ29uZmlnID0gZGF0YT8ubGFiZWxDb25maWcgfHwge307XHJcbiAgICB0aGlzLmltYWdlQ29uZmlnID0gZGF0YT8uaW1hZ2VDb25maWcgfHwge307XHJcbiAgICB0aGlzLmFzc2Vzc2VlSWQgPSBkYXRhPy5hc3Nlc3NlZUlkIGFzIG51bWJlcjtcclxuICAgIHRoaXMuYXNzZXNzZWVOYW1lID0gZGF0YT8uYXNzZXNzZWVOYW1lIHx8ICcnO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRTZXNzaW9ucygpO1xyXG4gIH1cclxuXHJcbiAgbG9hZFNlc3Npb25zKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmFzc2Vzc2VlSWQgfHwgdGhpcy5sb2FkaW5nKSB7XHJcbiAgICAgIGlmICghdGhpcy5hc3Nlc3NlZUlkKSB7IHRoaXMuZXJyb3JlZCA9IHRydWU7IH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuZXJyb3JlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5hc3Nlc3NtZW50VGFrZXJTZXJ2aWNlXHJcbiAgICAgIC5nZXRQcm9jdG9yaW5nU2Vzc2lvbnModGhpcy5hc3Nlc3NlZUlkLCB7IGRpcmVjdGlvbjogJ2Rlc2MnLCBwYWdlOiB0aGlzLnBhZ2UsIHNpemU6IHRoaXMuc2l6ZSwgc29ydEJ5OiAnaWQnIH0pXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZXNzaW9ucyA9IFsuLi50aGlzLnNlc3Npb25zLCAuLi4ocmVzPy5jb250ZW50IHx8IFtdKV07XHJcbiAgICAgICAgICB0aGlzLnRvdGFsRWxlbWVudHMgPSByZXM/LnRvdGFsRWxlbWVudHMgPz8gdGhpcy5zZXNzaW9ucy5sZW5ndGg7XHJcbiAgICAgICAgICB0aGlzLmxhc3QgPSByZXM/Lmxhc3QgPz8gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5lcnJvcmVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZE1vcmUoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMubGFzdCAmJiAhdGhpcy5sb2FkaW5nKSB7XHJcbiAgICAgIHRoaXMucGFnZSsrO1xyXG4gICAgICB0aGlzLmxvYWRTZXNzaW9ucygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEZldGNoZXMgdGhlIHJlcG9ydCBmb3IgYSBzZXNzaW9uIHRoZSBmaXJzdCB0aW1lIGl0cyBwYW5lbCBpcyBleHBhbmRlZC4gKi9cclxuICBsb2FkUmVwb3J0KHNlc3Npb246IFByb2N0b3JpbmdTZXNzaW9uU3VtbWFyeSk6IHZvaWQge1xyXG4gICAgY29uc3QgaWQgPSBzZXNzaW9uPy5pZDtcclxuICAgIGlmIChpZCA9PSBudWxsIHx8IHRoaXMucmVwb3J0U3RhdGVbaWRdID09PSAnbG9hZGluZycgfHwgdGhpcy5yZXBvcnRTdGF0ZVtpZF0gPT09ICdsb2FkZWQnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMucmVwb3J0U3RhdGVbaWRdID0gJ2xvYWRpbmcnO1xyXG4gICAgdGhpcy5hc3Nlc3NtZW50VGFrZXJTZXJ2aWNlLmdldFByb2N0b3JpbmdSZXBvcnRCeVNlc3Npb24oaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICghcmVzIHx8IHR5cGVvZiByZXMgIT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICB0aGlzLnJlcG9ydFN0YXRlW2lkXSA9ICdlbXB0eSc7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVwb3J0QnlTZXNzaW9uW2lkXSA9IHJlcztcclxuICAgICAgICB0aGlzLnJlcG9ydFN0YXRlW2lkXSA9ICdsb2FkZWQnO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgLy8gbm8gcmVwb3J0IHlldCAoZS5nLiBzZXNzaW9uIG5vdCB2YWxpZGF0ZWQpIOKGkiBlbXB0eTsgYW55dGhpbmcgZWxzZSDihpIgZXJyb3JcclxuICAgICAgICB0aGlzLnJlcG9ydFN0YXRlW2lkXSA9IGVycj8uc3RhdHVzID09PSA0MDQgPyAnZW1wdHknIDogJ2Vycm9yJztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5U2Vzc2lvbklkKF9pbmRleDogbnVtYmVyLCBzZXNzaW9uOiBQcm9jdG9yaW5nU2Vzc2lvblN1bW1hcnkpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHNlc3Npb24/LmlkID8/IF9pbmRleDtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBpbmRleDtcclxuICB9XHJcblxyXG4gIC8qKiBQYXJzZXMgKGFuZCBjYWNoZXMpIHRoZSByZXBvcnRQYXlsb2FkIEpTT04uIFJldHVybnMgbnVsbCBpZiBhYnNlbnQgb3Igbm90IHZhbGlkIEpTT04uICovXHJcbiAgZ2V0UGFyc2VkUGF5bG9hZChyZXBvcnQ6IFByb2N0b3JpbmdSZXBvcnQpOiBQcm9jdG9yaW5nUGF5bG9hZCB8IG51bGwge1xyXG4gICAgY29uc3QgaWQgPSByZXBvcnQ/LmlkID8/IC0xO1xyXG4gICAgaWYgKCEoaWQgaW4gdGhpcy5wYXJzZWRDYWNoZSkpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICB0aGlzLnBhcnNlZENhY2hlW2lkXSA9IHJlcG9ydD8ucmVwb3J0UGF5bG9hZCA/IEpTT04ucGFyc2UocmVwb3J0LnJlcG9ydFBheWxvYWQpIDogbnVsbDtcclxuICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgdGhpcy5wYXJzZWRDYWNoZVtpZF0gPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5wYXJzZWRDYWNoZVtpZF07XHJcbiAgfVxyXG5cclxuICAvKiogRm9ybWF0cyBhIGR1cmF0aW9uIGluIHNlY29uZHMgYXMgYE1tIFNzYCAob3IgYFNzYCB1bmRlciBhIG1pbnV0ZSkuICovXHJcbiAgZm9ybWF0RHVyYXRpb24oc2Vjb25kcz86IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAoc2Vjb25kcyA9PSBudWxsKSB7IHJldHVybiAnJzsgfVxyXG4gICAgY29uc3QgbSA9IE1hdGguZmxvb3Ioc2Vjb25kcyAvIDYwKTtcclxuICAgIGNvbnN0IHMgPSBzZWNvbmRzICUgNjA7XHJcbiAgICByZXR1cm4gbSA+IDAgPyBgJHttfW0gJHtzfXNgIDogYCR7c31zYDtcclxuICB9XHJcblxyXG4gIC8qKiBTZXNzaW9uIHRpbWVzdGFtcHMgYXJlIGVwb2NoIG1pbGxpc2Vjb25kcyBhbHJlYWR5OyBndWFyZCAwL3VuZGVmaW5lZCBzbyBub3RoaW5nIHJlbmRlcnMuICovXHJcbiAgdG9NaWxsaXMoZXBvY2hNaWxsaXM/OiBudW1iZXIpOiBudW1iZXIgfCBudWxsIHtcclxuICAgIHJldHVybiBlcG9jaE1pbGxpcyA/IGVwb2NoTWlsbGlzIDogbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZW1lIGJhZGdlIGNsYXNzZXMgZm9yIGEgc2Vzc2lvbiBzdGF0dXMuXHJcbiAgICogQUNUSVZFID0gcnVubmluZywgVkFMSURBVElORyA9IHJlcG9ydCBpbiBwcm9ncmVzcywgVkFMSURBVEVEID0gcmVwb3J0IHJlYWR5LFxyXG4gICAqIEVOREVEID0gc3RvcHBlZC9pbnZhbGlkYXRlZCwgRkFJTEVEID0gZXJyb3JlZC5cclxuICAgKi9cclxuICBzdGF0dXNCYWRnZUNsYXNzKHN0YXR1cz86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKChzdGF0dXMgfHwgJycpLnRvVXBwZXJDYXNlKCkpIHtcclxuICAgICAgY2FzZSAnQUNUSVZFJzogcmV0dXJuICdhc3Nlc3NtZW50LWJnLXByaW1hcnktb25lIGFzc2Vzc21lbnQtdGV4dC13aGl0ZSc7XHJcbiAgICAgIGNhc2UgJ1ZBTElEQVRJTkcnOiByZXR1cm4gJ2Fzc2Vzc21lbnQtYmctd2FybmluZyBhc3Nlc3NtZW50LXRleHQtd2hpdGUnO1xyXG4gICAgICBjYXNlICdWQUxJREFURUQnOiByZXR1cm4gJ2Fzc2Vzc21lbnQtYmctc3VjY2VzcyBhc3Nlc3NtZW50LXRleHQtd2hpdGUnO1xyXG4gICAgICBjYXNlICdGQUlMRUQnOiByZXR1cm4gJ2Fzc2Vzc21lbnQtYmctZGFuZ2VyIGFzc2Vzc21lbnQtdGV4dC13aGl0ZSc7XHJcbiAgICAgIGNhc2UgJ0VOREVEJzpcclxuICAgICAgZGVmYXVsdDogcmV0dXJuICdhc3Nlc3NtZW50LWJnLWdyZXktc2l4IGFzc2Vzc21lbnQtdGV4dC13aGl0ZSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogTWFwcyBhIHJhdyBldmVudCBjb2RlIChlLmcuIGB0YWIuaGlkZGVuYCkgdG8gYSBmcmllbmRseSBsYWJlbCwgZmFsbGluZyBiYWNrIHRvIHRoZSByYXcgY29kZS4gKi9cclxuICBldmVudFR5cGVMYWJlbCh0eXBlPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghdHlwZSkgeyByZXR1cm4gJyc7IH1cclxuICAgIHJldHVybiB0aGlzLmxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5FVkVOVC4nICsgdHlwZV0gfHwgdHlwZTtcclxuICB9XHJcblxyXG4gIC8qKiBNYXBzIGEgcmF3IHJlYXNvbiBjb2RlIChlLmcuIGBicm93c2VyX2FjdGl2aXR5YCkgdG8gYSBmcmllbmRseSBsYWJlbCwgZmFsbGluZyBiYWNrIHRvIHRoZSByYXcgY29kZS4gKi9cclxuICByZWFzb25Db2RlTGFiZWwoY29kZT86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIWNvZGUpIHsgcmV0dXJuICcnOyB9XHJcbiAgICByZXR1cm4gdGhpcy5sYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVBU09OLicgKyBjb2RlXSB8fCBjb2RlO1xyXG4gIH1cclxuXHJcbiAgLyoqIEhpZ2hsaWdodHMgaW50ZWdyaXR5LXJlbGV2YW50IHRpbWVsaW5lIGV2ZW50cyAodGFiIHN3aXRjaGVzLCBmYWNlIGlzc3Vlcywgc2Vzc2lvbiBtYXJrZXJzKS4gKi9cclxuICBpc05vdGV3b3J0aHkodHlwZT86IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0eXBlKSB7IHJldHVybiBmYWxzZTsgfVxyXG4gICAgcmV0dXJuIHR5cGUuaW5jbHVkZXMoJ3RhYi4nKSB8fCB0eXBlLmluY2x1ZGVzKCdub19mYWNlJykgfHwgdHlwZS5pbmNsdWRlcygnbXVsdGlfZmFjZScpXHJcbiAgICAgIHx8IHR5cGUuaW5jbHVkZXMoJ3Nlc3Npb24uJykgfHwgdHlwZS5pbmNsdWRlcygnY2FtZXJhLicpIHx8IHR5cGUuaW5jbHVkZXMoJ2NsaXBib2FyZCcpXHJcbiAgICAgIHx8IHR5cGUuaW5jbHVkZXMoJ2Z1bGxzY3JlZW4nKTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIGltYWdlRXJyb3JIYW5kbGVyKGV2ZW50OiBhbnksIGZpbGVQYXRoOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGV2ZW50LnRhcmdldC5zcmMgPSBmaWxlUGF0aDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBoLTEwMCBvdmVyZmxvdy1oaWRkZW4gYXNzZXNzbWVudC1iZy13aGl0ZVwiPlxyXG5cclxuICA8IS0tIEhlYWRlciAtLT5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXN0YXJ0IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGdhcC0zIHAtMyBweC1tZC00IGJvcmRlci1ib3R0b21cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPlxyXG4gICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xNiBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW4gbWItMVwiPlxyXG4gICAgICAgIHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVNVTFRfVElUTEUnXSB9fVxyXG4gICAgICA8L3A+XHJcbiAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gbWItMFwiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiYXNzZXNzZWVOYW1lXCI+e3sgYXNzZXNzZWVOYW1lIH19IMK3IDwvc3Bhbj57eyB0b3RhbEVsZW1lbnRzIH19IHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5TRVNTSU9OU19DT1VOVCddIH19XHJcbiAgICAgIDwvcD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiAoY2xpY2spPVwiY2xvc2UoKVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiPjwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIEJvZHkgLS0+XHJcbiAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIG92ZXJmbG93LWF1dG8gcC0zIHB4LW1kLTRcIj5cclxuXHJcbiAgICA8IS0tIExvYWRpbmcgKGluaXRpYWwpIC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cImxvYWRpbmcgJiYgIXNlc3Npb25zLmxlbmd0aFwiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0yIHB5LTUgYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW5cIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbVwiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XHJcbiAgICAgIHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5TRVNTSU9OU19MT0FESU5HJ10gfX1cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gRXJyb3IgLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZXJyb3JlZCAmJiAhc2Vzc2lvbnMubGVuZ3RoXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciBweS01XCI+XHJcbiAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTMgYXNzZXNzbWVudC10ZXh0LWRhbmdlciBtYi0zXCI+e3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlNFU1NJT05TX0VSUk9SJ10gfX08L3A+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJsb2FkU2Vzc2lvbnMoKVwiXHJcbiAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LWJ0bi1wcmltYXJ5LXRyYW5zcGFyZW50IGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEzIHB4LTMgcHktMlwiPlxyXG4gICAgICAgIHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRTX1JFVFJZJ10gfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEVtcHR5IC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nICYmICFlcnJvcmVkICYmICFzZXNzaW9ucy5sZW5ndGhcIiBjbGFzcz1cInRleHQtY2VudGVyIHB5LTUgYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW5cIj5cclxuICAgICAge3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlNFU1NJT05TX0VNUFRZJ10gfX1cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gU2Vzc2lvbnMgYWNjb3JkaW9uIC0tPlxyXG4gICAgPG1hdC1hY2NvcmRpb24gY2xhc3M9XCJkLWJsb2NrXCIgKm5nSWY9XCJzZXNzaW9ucy5sZW5ndGhcIj5cclxuICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwgKm5nRm9yPVwibGV0IHNlc3Npb24gb2Ygc2Vzc2lvbnM7IHRyYWNrQnk6IHRyYWNrQnlTZXNzaW9uSWRcIlxyXG4gICAgICAgIGNsYXNzPVwic2hhZG93LW5vbmUgYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBhc3Nlc3NtZW50LXBhbmVsIGJvcmRlciBtYi0yXCIgKG9wZW5lZCk9XCJsb2FkUmVwb3J0KHNlc3Npb24pXCI+XHJcblxyXG4gICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlciBjbGFzcz1cInByb2N0b3JpbmctcGFuZWwtaGVhZGVyIHAtM1wiPlxyXG4gICAgICAgICAgPG1hdC1wYW5lbC10aXRsZSBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBteS0xIGFsaWduLWl0ZW1zLXN0YXJ0XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlblwiPlxyXG4gICAgICAgICAgICAgIHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRfU0VTU0lPTiddIH19IHt7IHNlc3Npb24uaWQgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgbXQtMVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2Vzc2lvbi5zdGF0dXNcIiBjbGFzcz1cImJhZGdlIHJvdW5kZWQtcGlsbCB0ZXh0LWNhcGl0YWxpemUgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMFwiIFtuZ0NsYXNzXT1cInN0YXR1c0JhZGdlQ2xhc3Moc2Vzc2lvbi5zdGF0dXMpXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBzZXNzaW9uLnN0YXR1cyB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlc3Npb24uaW50ZWdyaXR5RmxhZ2dlZCB8fCByZXBvcnRCeVNlc3Npb25bc2Vzc2lvbi5pZCFdPy5pbnRlZ3JpdHlGbGFnZ2VkXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2Ugcm91bmRlZC1waWxsIGFzc2Vzc21lbnQtYmctZGFuZ2VyIGFzc2Vzc21lbnQtdGV4dC13aGl0ZSBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEwXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVQT1JUX0ZMQUdHRUQnXSB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XHJcbiAgICAgICAgICA8bWF0LXBhbmVsLWRlc2NyaXB0aW9uIGNsYXNzPVwianVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXIgbWUtM1wiPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRvTWlsbGlzKHNlc3Npb24uc3RhcnRlZEF0KSBhcyBzdGFydGVkXCIgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMSBhc3Nlc3NtZW50LXRleHQtZ3JleS1zZXZlblwiPlxyXG4gICAgICAgICAgICAgIHt7IHN0YXJ0ZWQgfCBkYXRlOidkZCBNTU0sIEhIOm1tJyB9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L21hdC1wYW5lbC1kZXNjcmlwdGlvbj5cclxuICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cclxuICAgICAgICA8IS0tIFJlcG9ydCBpcyBmZXRjaGVkIHdoZW4gdGhlIHBhbmVsIG9wZW5zIC0tPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRFeHBhbnNpb25QYW5lbENvbnRlbnQ+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zIHB0LTFcIiBbbmdTd2l0Y2hdPVwicmVwb3J0U3RhdGVbc2Vzc2lvbi5pZCFdXCI+XHJcblxyXG4gICAgICAgICAgICA8IS0tIExvYWRpbmcgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidsb2FkaW5nJ1wiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBweS0zIGFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXNldmVuXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbVwiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAge3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVF9MT0FESU5HJ10gfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIEVycm9yIC0tPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInZXJyb3InXCIgY2xhc3M9XCJweS0zXCI+XHJcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMyBhc3Nlc3NtZW50LXRleHQtZGFuZ2VyIG1iLTJcIj57eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVQT1JUX0VSUk9SJ10gfX08L3A+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImxvYWRSZXBvcnQoc2Vzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LWJ0bi1wcmltYXJ5LXRyYW5zcGFyZW50IGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEzIHB4LTMgcHktMlwiPlxyXG4gICAgICAgICAgICAgICAge3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVFNfUkVUUlknXSB9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gTm8gcmVwb3J0IHlldCAtLT5cclxuICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2VtcHR5J1wiIGNsYXNzPVwicHktMyBhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMyBhc3Nlc3NtZW50LXRleHQtZ3JleS1zZXZlblwiPlxyXG4gICAgICAgICAgICAgIHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRfRU1QVFknXSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gTG9hZGVkIHJlcG9ydCAtLT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2xvYWRlZCdcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVwb3J0QnlTZXNzaW9uW3Nlc3Npb24uaWQhXSBhcyByZXBvcnRcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIEludGVncml0eSBzdW1tYXJ5IChyZXBvcnQgdG9wLWxldmVsKSAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTEgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gdGV4dC11cHBlcmNhc2UgbWItMVwiPnt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRfSU5URUdSSVRZX1NDT1JFJ10gfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMyBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW4gbWItMFwiIFtjbGFzcy5hc3Nlc3NtZW50LXRleHQtZGFuZ2VyXT1cInJlcG9ydC5pbnRlZ3JpdHlGbGFnZ2VkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyByZXBvcnQuaW50ZWdyaXR5U2NvcmUgfX08c3BhbiAqbmdJZj1cInJlcG9ydC5pbnRlZ3JpdHlMZXZlbFwiPiAoe3sgcmVwb3J0LmludGVncml0eUxldmVsIH19KTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIiAqbmdJZj1cInJlcG9ydC5pZGVudGl0eU1hdGNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMSBhc3Nlc3NtZW50LXRleHQtZ3JleS1zZXZlbiB0ZXh0LXVwcGVyY2FzZSBtYi0xXCI+e3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVF9JREVOVElUWV9NQVRDSCddIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuIG1iLTBcIj57eyByZXBvcnQuaWRlbnRpdHlNYXRjaCB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIiAqbmdJZj1cInJlcG9ydC5mYWlsdXJlUmVhc29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMSBhc3Nlc3NtZW50LXRleHQtZ3JleS1zZXZlbiB0ZXh0LXVwcGVyY2FzZSBtYi0xXCI+e3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVF9GQUlMVVJFX1JFQVNPTiddIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTMgYXNzZXNzbWVudC10ZXh0LWRhbmdlciBtYi0wXCI+e3sgcmVwb3J0LmZhaWx1cmVSZWFzb24gfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdldFBhcnNlZFBheWxvYWQocmVwb3J0KSBhcyBwOyBlbHNlIHJhd1BheWxvYWRcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gU3VtbWFyeSBtZXRhIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgbXQtMyBhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZ3JleS1zZXZlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicC5kdXJhdGlvbl9zZWNvbmRzICE9IG51bGxcIj57eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVQT1JUX0RVUkFUSU9OJ10gfX06IHt7IGZvcm1hdER1cmF0aW9uKHAuZHVyYXRpb25fc2Vjb25kcykgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwLnN0YXJ0ZWRfYXRcIj7CtyB7eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVQT1JUX1NUQVJURUQnXSB9fToge3sgcC5zdGFydGVkX2F0IHwgZGF0ZTonZGQgTU1NLCBISDptbTpzcycgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwLmVuZGVkX2F0XCI+wrcge3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVF9FTkRFRCddIH19OiB7eyBwLmVuZGVkX2F0IHwgZGF0ZTonSEg6bW06c3MnIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gUmVhc29ucyAtLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInAuaW50ZWdyaXR5Py5yZWFzb25zPy5sZW5ndGhcIiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMiBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgciBvZiBwLmludGVncml0eT8ucmVhc29uczsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCIgY2xhc3M9XCJib3JkZXIgcm91bmRlZCBwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEyIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlblwiPnt7IHJlYXNvbkNvZGVMYWJlbChyLmNvZGUpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInIud2VpZ2h0ICE9IG51bGxcIiBjbGFzcz1cImJhZGdlIHJvdW5kZWQtcGlsbCBhc3Nlc3NtZW50LXRleHQtd2hpdGVcIiBbbmdDbGFzc109XCIoci53ZWlnaHQgfHwgMCkgPCAwID8gJ2Fzc2Vzc21lbnQtYmctZGFuZ2VyJyA6ICdhc3Nlc3NtZW50LWJnLXN1Y2Nlc3MnXCI+e3sgKHIud2VpZ2h0IHx8IDApID4gMCA/ICcrJyA6ICcnIH19e3sgci53ZWlnaHQgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gbWItMCBtdC0xXCI+e3sgci5kZXRhaWwgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBTdGF0IHRpbGVzOiBmYWNlIGFuYWx5c2lzIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xMyBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW4gbXQtMyBtYi0yXCI+e3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVF9BTkFMWVNJUyddIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHJvdy1jb2xzLTIgcm93LWNvbHMtbWQtNCBnLTIgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHJvdW5kZWQgcC0yIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTE4IG1iLTFcIj57eyBwLmZhY2VfYW5hbHlzaXM/LmZyYW1lc19jaGVja2VkID8/IDAgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTEgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gbWItMFwiPnt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRfRlJBTUVTJ10gfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHJvdW5kZWQgcC0yIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTE4IG1iLTFcIiBbY2xhc3MuYXNzZXNzbWVudC10ZXh0LWRhbmdlcl09XCIocC5mYWNlX2FuYWx5c2lzPy5ub19mYWNlX2ZyYW1lcyB8fCAwKSA+IDBcIj57eyBwLmZhY2VfYW5hbHlzaXM/Lm5vX2ZhY2VfZnJhbWVzID8/IDAgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTEgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gbWItMFwiPnt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRfTk9fRkFDRSddIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkIHAtMiBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xOCBtYi0xXCIgW2NsYXNzLmFzc2Vzc21lbnQtdGV4dC1kYW5nZXJdPVwiKHAuZmFjZV9hbmFseXNpcz8ubXVsdGlfZmFjZV9mcmFtZXMgfHwgMCkgPiAwXCI+e3sgcC5mYWNlX2FuYWx5c2lzPy5tdWx0aV9mYWNlX2ZyYW1lcyA/PyAwIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTExIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXNldmVuIG1iLTBcIj57eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVQT1JUX01VTFRJX0ZBQ0UnXSB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZCBwLTIgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTggbWItMVwiIFtjbGFzcy5hc3Nlc3NtZW50LXRleHQtZGFuZ2VyXT1cIihwLmZhY2VfYW5hbHlzaXM/LmltcGVyc29uYXRpb25fZnJhbWVzIHx8IDApID4gMFwiPnt7IHAuZmFjZV9hbmFseXNpcz8uaW1wZXJzb25hdGlvbl9mcmFtZXMgPz8gMCB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMSBhc3Nlc3NtZW50LXRleHQtZ3JleS1zZXZlbiBtYi0wXCI+e3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVF9JTVBFUlNPTkFUSU9OJ10gfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8IS0tIEFjdGl2aXR5IGJyZWFrZG93biAtLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInAuYWN0aXZpdHk/LmJ5X3R5cGVcIiBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXAgZ2FwLTIgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIChwLmFjdGl2aXR5Py5ieV90eXBlIHwga2V5dmFsdWUpOyB0cmFja0J5OiB0cmFja0J5SW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYWRnZSByb3VuZGVkLXBpbGwgYXNzZXNzbWVudC1iZy1wYWxldHRlLUVERjNGRCBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW4gYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgZXZlbnRUeXBlTGFiZWwoaXRlbS5rZXkpIH19IDxzcGFuIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEyXCI+e3sgaXRlbS52YWx1ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBFdmlkZW5jZSBpbWFnZXMgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwLmV2aWRlbmNlPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xMyBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW4gbXQtMyBtYi0yXCI+e3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVF9FVklERU5DRSddIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwIGdhcC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YSAqbmdGb3I9XCJsZXQgZXYgb2YgcC5ldmlkZW5jZTsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0ZXh0LWRlY29yYXRpb24tbm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImV2LmltYWdlX3VybFwiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJwcm9jdG9yaW5nLWV2aS1pbWcgcm91bmRlZCBib3JkZXJcIiBbc3JjXT1cImV2LmltYWdlX3VybFwiIFthdHRyLmFsdF09XCInZnJhbWUgJyArIGV2LnNlcVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yKT1cImltYWdlRXJyb3JIYW5kbGVyKCRldmVudCwgJ2Fzc2V0cy9jb21tb25zLWFzc2Vzc21lbnQvaW1hZ2VzL3VzZXIuc3ZnJylcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtYmxvY2sgYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTEgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gbXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZXYuaXNfcmVmZXJlbmNlXCIgY2xhc3M9XCJiYWRnZSByb3VuZGVkLXBpbGwgYXNzZXNzbWVudC1iZy1wcmltYXJ5LW9uZSBhc3Nlc3NtZW50LXRleHQtd2hpdGUgbWUtMVwiPnt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRfUkVGRVJFTkNFJ10gfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgI3t7IGV2LnNlcSB9fSDCtyB7eyBldi5jYXB0dXJlZF9hdCB8IGRhdGU6J0hIOm1tOnNzJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBUaW1lbGluZSAtLT5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInAudGltZWxpbmU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlbiBtdC0zIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRfVElNRUxJTkUnXSB9fSAoe3sgcC50aW1lbGluZT8ubGVuZ3RoIH19KVxyXG4gICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvY3RvcmluZy1sb2cgYXNzZXNzbWVudC1iZy1ncmV5LXRlbiBhc3Nlc3NtZW50LXRleHQtZ3JleS1vbmUgZm9udC1tb25vc3BhY2Ugc21hbGwgcm91bmRlZCBwLTMgb3ZlcmZsb3ctYXV0b1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZXYgb2YgcC50aW1lbGluZTsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCIgY2xhc3M9XCJ0ZXh0LW5vd3JhcFwiIFtjbGFzcy5mdy1zZW1pYm9sZF09XCJpc05vdGV3b3J0aHkoZXYudHlwZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtZ3JleS1maXZlIG1lLTJcIj4je3sgZXYuc2VxIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbY2xhc3MuYXNzZXNzbWVudC10ZXh0LXBhbGV0dGUtQURDOUY2XT1cImlzTm90ZXdvcnRoeShldi50eXBlKVwiPnt7IGV2ZW50VHlwZUxhYmVsKGV2LnR5cGUpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1ncmV5LWZpdmUgbXMtMlwiPnt7IGV2LmF0IHwgZGF0ZTonSEg6bW06c3MnIH19ICh7eyBldi5zb3VyY2UgfX0pPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gRmFsbGJhY2s6IHJhdyBwYXlsb2FkIGlmIGl0IGlzbid0IHBhcnNlYWJsZSBKU09OIC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNyYXdQYXlsb2FkPlxyXG4gICAgICAgICAgICAgICAgICA8cHJlICpuZ0lmPVwicmVwb3J0LnJlcG9ydFBheWxvYWRcIiBjbGFzcz1cInByb2N0b3JpbmctcGF5bG9hZCBhc3Nlc3NtZW50LWJnLWdyZXktdGVuIGFzc2Vzc21lbnQtdGV4dC1ncmV5LW9uZSBzbWFsbCByb3VuZGVkIHAtMyBvdmVyZmxvdy1hdXRvIG1iLTAgbXQtM1wiPnt7IHJlcG9ydC5yZXBvcnRQYXlsb2FkIH19PC9wcmU+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG4gICAgPC9tYXQtYWNjb3JkaW9uPlxyXG5cclxuICAgIDwhLS0gTG9hZCBtb3JlIC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cInNlc3Npb25zLmxlbmd0aCAmJiAhbGFzdFwiIGNsYXNzPVwidGV4dC1jZW50ZXIgbXQtM1wiPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwibG9hZE1vcmUoKVwiIFtkaXNhYmxlZF09XCJsb2FkaW5nXCJcclxuICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtYnRuLXByaW1hcnktdHJhbnNwYXJlbnQgYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTMgcHgtMyBweS0yIGQtaW5saW5lLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbVwiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XHJcbiAgICAgICAge3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLkxPQURfTU9SRSddIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY3RvcmluZy1yZXN1bHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9ucy1hc3Nlc3NtZW50L3NyYy9saWIvbW9kdWxlcy9hc3Nlc3NtZW50LXRha2VyL2NvbXBvbmVudHMvcHJvY3RvcmluZy1yZXN1bHQvcHJvY3RvcmluZy1yZXN1bHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9ucy1hc3Nlc3NtZW50L3NyYy9saWIvbW9kdWxlcy9hc3Nlc3NtZW50LXRha2VyL2NvbXBvbmVudHMvcHJvY3RvcmluZy1yZXN1bHQvcHJvY3RvcmluZy1yZXN1bHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7O0FBV3pFLE1BQU0sT0FBTyx5QkFBeUI7SUFtQnBDLFlBQ1MsU0FBa0QsRUFDakQsc0JBQThDLEVBQ3RCLElBSy9CO1FBUE0sY0FBUyxHQUFULFNBQVMsQ0FBeUM7UUFDakQsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUN0QixTQUFJLEdBQUosSUFBSSxDQUtuQztRQXJCSCxhQUFRLEdBQStCLEVBQUUsQ0FBQztRQUMxQyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFDbEIsU0FBSSxHQUFHLElBQUksQ0FBQztRQUNKLFNBQUksR0FBRyxDQUFDLENBQUM7UUFDQSxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBRTNCLDZEQUE2RDtRQUM3RCxvQkFBZSxHQUE4QyxFQUFFLENBQUM7UUFDaEUsZ0JBQVcsR0FBeUMsRUFBRSxDQUFD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LENBQUMsS0FBVSxFQUFFLFFBQWdCO1FBQzVDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQztJQUM5QixDQUFDOzt1SEF4S1UseUJBQXlCLG9GQXNCMUIsZUFBZTsyR0F0QmQseUJBQXlCLDZEQ1p0QyxzbGVBZ09BOzRGRHBOYSx5QkFBeUI7a0JBTHJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsV0FBVyxFQUFFLG9DQUFvQztvQkFDakQsU0FBUyxFQUFFLENBQUMsb0NBQW9DLENBQUM7aUJBQ2xEOzswQkF1QkksTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEFzc2Vzc21lbnRUYWtlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hc3Nlc3NtZW50LXRha2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm9jdG9yaW5nUGF5bG9hZCwgUHJvY3RvcmluZ1JlcG9ydCwgUHJvY3RvcmluZ1Nlc3Npb25TdW1tYXJ5IH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2ludGVyZmFjZXMvcHJvY3RvcmluZy5pbnRlcmZhY2UnO1xyXG5cclxudHlwZSBSZXBvcnRTdGF0ZSA9ICdsb2FkaW5nJyB8ICdsb2FkZWQnIHwgJ2VtcHR5JyB8ICdlcnJvcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1wcm9jdG9yaW5nLXJlc3VsdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2N0b3JpbmctcmVzdWx0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wcm9jdG9yaW5nLXJlc3VsdC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9jdG9yaW5nUmVzdWx0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBsYWJlbENvbmZpZzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcclxuICBpbWFnZUNvbmZpZzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcclxuICBhc3Nlc3NlZUlkOiBudW1iZXI7XHJcbiAgYXNzZXNzZWVOYW1lOiBzdHJpbmc7XHJcblxyXG4gIHNlc3Npb25zOiBQcm9jdG9yaW5nU2Vzc2lvblN1bW1hcnlbXSA9IFtdO1xyXG4gIGxvYWRpbmcgPSBmYWxzZTtcclxuICBlcnJvcmVkID0gZmFsc2U7XHJcbiAgdG90YWxFbGVtZW50cyA9IDA7XHJcbiAgbGFzdCA9IHRydWU7XHJcbiAgcHJpdmF0ZSBwYWdlID0gMDtcclxuICBwcml2YXRlIHJlYWRvbmx5IHNpemUgPSAyMDtcclxuXHJcbiAgLy8gcGVyLXNlc3Npb24gbGF6eSByZXBvcnQgZGF0YSArIHN0YXRlIChrZXllZCBieSBzZXNzaW9uIGlkKVxyXG4gIHJlcG9ydEJ5U2Vzc2lvbjogeyBbc2Vzc2lvbklkOiBudW1iZXJdOiBQcm9jdG9yaW5nUmVwb3J0IH0gPSB7fTtcclxuICByZXBvcnRTdGF0ZTogeyBbc2Vzc2lvbklkOiBudW1iZXJdOiBSZXBvcnRTdGF0ZSB9ID0ge307XHJcbiAgcHJpdmF0ZSBwYXJzZWRDYWNoZTogeyBbcmVwb3J0SWQ6IG51bWJlcl06IFByb2N0b3JpbmdQYXlsb2FkIHwgbnVsbCB9ID0ge307XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFByb2N0b3JpbmdSZXN1bHRDb21wb25lbnQ+LFxyXG4gICAgcHJpdmF0ZSBhc3Nlc3NtZW50VGFrZXJTZXJ2aWNlOiBBc3Nlc3NtZW50VGFrZXJTZXJ2aWNlLFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiB7XHJcbiAgICAgIGxhYmVsQ29uZmlnPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcclxuICAgICAgaW1hZ2VDb25maWc/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xyXG4gICAgICBhc3Nlc3NlZUlkPzogbnVtYmVyO1xyXG4gICAgICBhc3Nlc3NlZU5hbWU/OiBzdHJpbmc7XHJcbiAgICB9XHJcbiAgKSB7XHJcbiAgICB0aGlzLmxhYmVsQ29uZmlnID0gZGF0YT8ubGFiZWxDb25maWcgfHwge307XHJcbiAgICB0aGlzLmltYWdlQ29uZmlnID0gZGF0YT8uaW1hZ2VDb25maWcgfHwge307XHJcbiAgICB0aGlzLmFzc2Vzc2VlSWQgPSBkYXRhPy5hc3Nlc3NlZUlkIGFzIG51bWJlcjtcclxuICAgIHRoaXMuYXNzZXNzZWVOYW1lID0gZGF0YT8uYXNzZXNzZWVOYW1lIHx8ICcnO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRTZXNzaW9ucygpO1xyXG4gIH1cclxuXHJcbiAgbG9hZFNlc3Npb25zKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmFzc2Vzc2VlSWQgfHwgdGhpcy5sb2FkaW5nKSB7XHJcbiAgICAgIGlmICghdGhpcy5hc3Nlc3NlZUlkKSB7IHRoaXMuZXJyb3JlZCA9IHRydWU7IH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuZXJyb3JlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5hc3Nlc3NtZW50VGFrZXJTZXJ2aWNlXHJcbiAgICAgIC5nZXRQcm9jdG9yaW5nU2Vzc2lvbnModGhpcy5hc3Nlc3NlZUlkLCB7IGRpcmVjdGlvbjogJ2Rlc2MnLCBwYWdlOiB0aGlzLnBhZ2UsIHNpemU6IHRoaXMuc2l6ZSwgc29ydEJ5OiAnaWQnIH0pXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZXNzaW9ucyA9IFsuLi50aGlzLnNlc3Npb25zLCAuLi4ocmVzPy5jb250ZW50IHx8IFtdKV07XHJcbiAgICAgICAgICB0aGlzLnRvdGFsRWxlbWVudHMgPSByZXM/LnRvdGFsRWxlbWVudHMgPz8gdGhpcy5zZXNzaW9ucy5sZW5ndGg7XHJcbiAgICAgICAgICB0aGlzLmxhc3QgPSByZXM/Lmxhc3QgPz8gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5lcnJvcmVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZE1vcmUoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMubGFzdCAmJiAhdGhpcy5sb2FkaW5nKSB7XHJcbiAgICAgIHRoaXMucGFnZSsrO1xyXG4gICAgICB0aGlzLmxvYWRTZXNzaW9ucygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEZldGNoZXMgdGhlIHJlcG9ydCBmb3IgYSBzZXNzaW9uIHRoZSBmaXJzdCB0aW1lIGl0cyBwYW5lbCBpcyBleHBhbmRlZC4gKi9cclxuICBsb2FkUmVwb3J0KHNlc3Npb246IFByb2N0b3JpbmdTZXNzaW9uU3VtbWFyeSk6IHZvaWQge1xyXG4gICAgY29uc3QgaWQgPSBzZXNzaW9uPy5pZDtcclxuICAgIGlmIChpZCA9PSBudWxsIHx8IHRoaXMucmVwb3J0U3RhdGVbaWRdID09PSAnbG9hZGluZycgfHwgdGhpcy5yZXBvcnRTdGF0ZVtpZF0gPT09ICdsb2FkZWQnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMucmVwb3J0U3RhdGVbaWRdID0gJ2xvYWRpbmcnO1xyXG4gICAgdGhpcy5hc3Nlc3NtZW50VGFrZXJTZXJ2aWNlLmdldFByb2N0b3JpbmdSZXBvcnRCeVNlc3Npb24oaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICghcmVzIHx8IHR5cGVvZiByZXMgIT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICB0aGlzLnJlcG9ydFN0YXRlW2lkXSA9ICdlbXB0eSc7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVwb3J0QnlTZXNzaW9uW2lkXSA9IHJlcztcclxuICAgICAgICB0aGlzLnJlcG9ydFN0YXRlW2lkXSA9ICdsb2FkZWQnO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgLy8gbm8gcmVwb3J0IHlldCAoZS5nLiBzZXNzaW9uIG5vdCB2YWxpZGF0ZWQpIOKGkiBlbXB0eTsgYW55dGhpbmcgZWxzZSDihpIgZXJyb3JcclxuICAgICAgICB0aGlzLnJlcG9ydFN0YXRlW2lkXSA9IGVycj8uc3RhdHVzID09PSA0MDQgPyAnZW1wdHknIDogJ2Vycm9yJztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5U2Vzc2lvbklkKF9pbmRleDogbnVtYmVyLCBzZXNzaW9uOiBQcm9jdG9yaW5nU2Vzc2lvblN1bW1hcnkpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHNlc3Npb24/LmlkID8/IF9pbmRleDtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBpbmRleDtcclxuICB9XHJcblxyXG4gIC8qKiBQYXJzZXMgKGFuZCBjYWNoZXMpIHRoZSByZXBvcnRQYXlsb2FkIEpTT04uIFJldHVybnMgbnVsbCBpZiBhYnNlbnQgb3Igbm90IHZhbGlkIEpTT04uICovXHJcbiAgZ2V0UGFyc2VkUGF5bG9hZChyZXBvcnQ6IFByb2N0b3JpbmdSZXBvcnQpOiBQcm9jdG9yaW5nUGF5bG9hZCB8IG51bGwge1xyXG4gICAgY29uc3QgaWQgPSByZXBvcnQ/LmlkID8/IC0xO1xyXG4gICAgaWYgKCEoaWQgaW4gdGhpcy5wYXJzZWRDYWNoZSkpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICB0aGlzLnBhcnNlZENhY2hlW2lkXSA9IHJlcG9ydD8ucmVwb3J0UGF5bG9hZCA/IEpTT04ucGFyc2UocmVwb3J0LnJlcG9ydFBheWxvYWQpIDogbnVsbDtcclxuICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgdGhpcy5wYXJzZWRDYWNoZVtpZF0gPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5wYXJzZWRDYWNoZVtpZF07XHJcbiAgfVxyXG5cclxuICAvKiogRm9ybWF0cyBhIGR1cmF0aW9uIGluIHNlY29uZHMgYXMgYE1tIFNzYCAob3IgYFNzYCB1bmRlciBhIG1pbnV0ZSkuICovXHJcbiAgZm9ybWF0RHVyYXRpb24oc2Vjb25kcz86IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAoc2Vjb25kcyA9PSBudWxsKSB7IHJldHVybiAnJzsgfVxyXG4gICAgY29uc3QgbSA9IE1hdGguZmxvb3Ioc2Vjb25kcyAvIDYwKTtcclxuICAgIGNvbnN0IHMgPSBzZWNvbmRzICUgNjA7XHJcbiAgICByZXR1cm4gbSA+IDAgPyBgJHttfW0gJHtzfXNgIDogYCR7c31zYDtcclxuICB9XHJcblxyXG4gIC8qKiBTZXNzaW9uIHRpbWVzdGFtcHMgYXJlIGVwb2NoIG1pbGxpc2Vjb25kcyBhbHJlYWR5OyBndWFyZCAwL3VuZGVmaW5lZCBzbyBub3RoaW5nIHJlbmRlcnMuICovXHJcbiAgdG9NaWxsaXMoZXBvY2hNaWxsaXM/OiBudW1iZXIpOiBudW1iZXIgfCBudWxsIHtcclxuICAgIHJldHVybiBlcG9jaE1pbGxpcyA/IGVwb2NoTWlsbGlzIDogbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZW1lIGJhZGdlIGNsYXNzZXMgZm9yIGEgc2Vzc2lvbiBzdGF0dXMuXHJcbiAgICogQUNUSVZFID0gcnVubmluZywgVkFMSURBVElORyA9IHJlcG9ydCBpbiBwcm9ncmVzcywgVkFMSURBVEVEID0gcmVwb3J0IHJlYWR5LFxyXG4gICAqIEVOREVEID0gc3RvcHBlZC9pbnZhbGlkYXRlZCwgRkFJTEVEID0gZXJyb3JlZC5cclxuICAgKi9cclxuICBzdGF0dXNCYWRnZUNsYXNzKHN0YXR1cz86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKChzdGF0dXMgfHwgJycpLnRvVXBwZXJDYXNlKCkpIHtcclxuICAgICAgY2FzZSAnQUNUSVZFJzogcmV0dXJuICdhc3Nlc3NtZW50LWJnLXByaW1hcnktb25lIGFzc2Vzc21lbnQtdGV4dC13aGl0ZSc7XHJcbiAgICAgIGNhc2UgJ1ZBTElEQVRJTkcnOiByZXR1cm4gJ2Fzc2Vzc21lbnQtYmctd2FybmluZyBhc3Nlc3NtZW50LXRleHQtd2hpdGUnO1xyXG4gICAgICBjYXNlICdWQUxJREFURUQnOiByZXR1cm4gJ2Fzc2Vzc21lbnQtYmctc3VjY2VzcyBhc3Nlc3NtZW50LXRleHQtd2hpdGUnO1xyXG4gICAgICBjYXNlICdGQUlMRUQnOiByZXR1cm4gJ2Fzc2Vzc21lbnQtYmctZGFuZ2VyIGFzc2Vzc21lbnQtdGV4dC13aGl0ZSc7XHJcbiAgICAgIGNhc2UgJ0VOREVEJzpcclxuICAgICAgZGVmYXVsdDogcmV0dXJuICdhc3Nlc3NtZW50LWJnLWdyZXktc2l4IGFzc2Vzc21lbnQtdGV4dC13aGl0ZSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogTWFwcyBhIHJhdyBldmVudCBjb2RlIChlLmcuIGB0YWIuaGlkZGVuYCkgdG8gYSBmcmllbmRseSBsYWJlbCwgZmFsbGluZyBiYWNrIHRvIHRoZSByYXcgY29kZS4gKi9cclxuICBldmVudFR5cGVMYWJlbCh0eXBlPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghdHlwZSkgeyByZXR1cm4gJyc7IH1cclxuICAgIHJldHVybiB0aGlzLmxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5FVkVOVC4nICsgdHlwZV0gfHwgdHlwZTtcclxuICB9XHJcblxyXG4gIC8qKiBNYXBzIGEgcmF3IHJlYXNvbiBjb2RlIChlLmcuIGBicm93c2VyX2FjdGl2aXR5YCkgdG8gYSBmcmllbmRseSBsYWJlbCwgZmFsbGluZyBiYWNrIHRvIHRoZSByYXcgY29kZS4gKi9cclxuICByZWFzb25Db2RlTGFiZWwoY29kZT86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIWNvZGUpIHsgcmV0dXJuICcnOyB9XHJcbiAgICByZXR1cm4gdGhpcy5sYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVBU09OLicgKyBjb2RlXSB8fCBjb2RlO1xyXG4gIH1cclxuXHJcbiAgLyoqIEhpZ2hsaWdodHMgaW50ZWdyaXR5LXJlbGV2YW50IHRpbWVsaW5lIGV2ZW50cyAodGFiIHN3aXRjaGVzLCBmYWNlIGlzc3Vlcywgc2Vzc2lvbiBtYXJrZXJzKS4gKi9cclxuICBpc05vdGV3b3J0aHkodHlwZT86IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0eXBlKSB7IHJldHVybiBmYWxzZTsgfVxyXG4gICAgcmV0dXJuIHR5cGUuaW5jbHVkZXMoJ3RhYi4nKSB8fCB0eXBlLmluY2x1ZGVzKCdub19mYWNlJykgfHwgdHlwZS5pbmNsdWRlcygnbXVsdGlfZmFjZScpXHJcbiAgICAgIHx8IHR5cGUuaW5jbHVkZXMoJ3Nlc3Npb24uJykgfHwgdHlwZS5pbmNsdWRlcygnY2FtZXJhLicpIHx8IHR5cGUuaW5jbHVkZXMoJ2NsaXBib2FyZCcpXHJcbiAgICAgIHx8IHR5cGUuaW5jbHVkZXMoJ2Z1bGxzY3JlZW4nKTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIGltYWdlRXJyb3JIYW5kbGVyKGV2ZW50OiBhbnksIGZpbGVQYXRoOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGV2ZW50LnRhcmdldC5zcmMgPSBmaWxlUGF0aDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBoLTEwMCBvdmVyZmxvdy1oaWRkZW4gYXNzZXNzbWVudC1iZy13aGl0ZVwiPlxyXG5cclxuICA8IS0tIEhlYWRlciAtLT5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXN0YXJ0IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGdhcC0zIHAtMyBweC1tZC00IGJvcmRlci1ib3R0b21cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPlxyXG4gICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xNiBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW4gbWItMVwiPlxyXG4gICAgICAgIHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVNVTFRfVElUTEUnXSB9fVxyXG4gICAgICA8L3A+XHJcbiAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gbWItMFwiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiYXNzZXNzZWVOYW1lXCI+e3sgYXNzZXNzZWVOYW1lIH19IMK3IDwvc3Bhbj57eyB0b3RhbEVsZW1lbnRzIH19IHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5TRVNTSU9OU19DT1VOVCddIH19XHJcbiAgICAgIDwvcD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiAoY2xpY2spPVwiY2xvc2UoKVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiPjwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIEJvZHkgLS0+XHJcbiAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIG92ZXJmbG93LWF1dG8gcC0zIHB4LW1kLTRcIj5cclxuXHJcbiAgICA8IS0tIExvYWRpbmcgKGluaXRpYWwpIC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cImxvYWRpbmcgJiYgIXNlc3Npb25zLmxlbmd0aFwiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0yIHB5LTUgYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW5cIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbVwiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XHJcbiAgICAgIHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5TRVNTSU9OU19MT0FESU5HJ10gfX1cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gRXJyb3IgLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZXJyb3JlZCAmJiAhc2Vzc2lvbnMubGVuZ3RoXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciBweS01XCI+XHJcbiAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTMgYXNzZXNzbWVudC10ZXh0LWRhbmdlciBtYi0zXCI+e3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlNFU1NJT05TX0VSUk9SJ10gfX08L3A+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJsb2FkU2Vzc2lvbnMoKVwiXHJcbiAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LWJ0bi1wcmltYXJ5LXRyYW5zcGFyZW50IGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEzIHB4LTMgcHktMlwiPlxyXG4gICAgICAgIHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRTX1JFVFJZJ10gfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEVtcHR5IC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nICYmICFlcnJvcmVkICYmICFzZXNzaW9ucy5sZW5ndGhcIiBjbGFzcz1cInRleHQtY2VudGVyIHB5LTUgYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW5cIj5cclxuICAgICAge3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlNFU1NJT05TX0VNUFRZJ10gfX1cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gU2Vzc2lvbnMgYWNjb3JkaW9uIC0tPlxyXG4gICAgPG1hdC1hY2NvcmRpb24gY2xhc3M9XCJkLWJsb2NrXCIgKm5nSWY9XCJzZXNzaW9ucy5sZW5ndGhcIj5cclxuICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwgKm5nRm9yPVwibGV0IHNlc3Npb24gb2Ygc2Vzc2lvbnM7IHRyYWNrQnk6IHRyYWNrQnlTZXNzaW9uSWRcIlxyXG4gICAgICAgIGNsYXNzPVwic2hhZG93LW5vbmUgYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBhc3Nlc3NtZW50LXBhbmVsIGJvcmRlciBtYi0yXCIgKG9wZW5lZCk9XCJsb2FkUmVwb3J0KHNlc3Npb24pXCI+XHJcblxyXG4gICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlciBjbGFzcz1cInByb2N0b3JpbmctcGFuZWwtaGVhZGVyIHAtM1wiPlxyXG4gICAgICAgICAgPG1hdC1wYW5lbC10aXRsZSBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBteS0xIGFsaWduLWl0ZW1zLXN0YXJ0XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlblwiPlxyXG4gICAgICAgICAgICAgIHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRfU0VTU0lPTiddIH19IHt7IHNlc3Npb24uaWQgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgbXQtMVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2Vzc2lvbi5zdGF0dXNcIiBjbGFzcz1cImJhZGdlIHJvdW5kZWQtcGlsbCB0ZXh0LWNhcGl0YWxpemUgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMFwiIFtuZ0NsYXNzXT1cInN0YXR1c0JhZGdlQ2xhc3Moc2Vzc2lvbi5zdGF0dXMpXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBzZXNzaW9uLnN0YXR1cyB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlc3Npb24/LmludGVncml0eVN1bW1hcnk/LmludGVncml0eUZsYWdnZWRcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJiYWRnZSByb3VuZGVkLXBpbGwgYXNzZXNzbWVudC1iZy1kYW5nZXIgYXNzZXNzbWVudC10ZXh0LXdoaXRlIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTBcIj5cclxuICAgICAgICAgICAgICAgIHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRfRkxBR0dFRCddIH19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cclxuICAgICAgICAgIDxtYXQtcGFuZWwtZGVzY3JpcHRpb24gY2xhc3M9XCJqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWNlbnRlciBtZS0zXCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidG9NaWxsaXMoc2Vzc2lvbi5zdGFydGVkQXQpIGFzIHN0YXJ0ZWRcIiBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTExIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXNldmVuXCI+XHJcbiAgICAgICAgICAgICAge3sgc3RhcnRlZCB8IGRhdGU6J2RkIE1NTSwgSEg6bW0nIH19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvbWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxyXG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcblxyXG4gICAgICAgIDwhLS0gUmVwb3J0IGlzIGZldGNoZWQgd2hlbiB0aGUgcGFuZWwgb3BlbnMgLS0+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIG1hdEV4cGFuc2lvblBhbmVsQ29udGVudD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTMgcHQtMVwiIFtuZ1N3aXRjaF09XCJyZXBvcnRTdGF0ZVtzZXNzaW9uLmlkIV1cIj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gTG9hZGluZyAtLT5cclxuICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2xvYWRpbmcnXCIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIHB5LTMgYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW5cIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICB7eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVQT1JUX0xPQURJTkcnXSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gRXJyb3IgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidlcnJvcidcIiBjbGFzcz1cInB5LTNcIj5cclxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEzIGFzc2Vzc21lbnQtdGV4dC1kYW5nZXIgbWItMlwiPnt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRfRVJST1InXSB9fTwvcD5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwibG9hZFJlcG9ydChzZXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtYnRuLXByaW1hcnktdHJhbnNwYXJlbnQgYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTMgcHgtMyBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVQT1JUU19SRVRSWSddIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBObyByZXBvcnQgeWV0IC0tPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInZW1wdHknXCIgY2xhc3M9XCJweS0zIGFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXNldmVuXCI+XHJcbiAgICAgICAgICAgICAge3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVF9FTVBUWSddIH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBMb2FkZWQgcmVwb3J0IC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbG9hZGVkJ1wiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXBvcnRCeVNlc3Npb25bc2Vzc2lvbi5pZCFdIGFzIHJlcG9ydFwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gSW50ZWdyaXR5IHN1bW1hcnkgKHJlcG9ydCB0b3AtbGV2ZWwpIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBnLTJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMSBhc3Nlc3NtZW50LXRleHQtZ3JleS1zZXZlbiB0ZXh0LXVwcGVyY2FzZSBtYi0xXCI+e3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVF9JTlRFR1JJVFlfU0NPUkUnXSB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlbiBtYi0wXCIgW2NsYXNzLmFzc2Vzc21lbnQtdGV4dC1kYW5nZXJdPVwicmVwb3J0LmludGVncml0eUZsYWdnZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IHJlcG9ydC5pbnRlZ3JpdHlTY29yZSB9fTxzcGFuICpuZ0lmPVwicmVwb3J0LmludGVncml0eUxldmVsXCI+ICh7eyByZXBvcnQuaW50ZWdyaXR5TGV2ZWwgfX0pPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiICpuZ0lmPVwicmVwb3J0LmlkZW50aXR5TWF0Y2hcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTExIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXNldmVuIHRleHQtdXBwZXJjYXNlIG1iLTFcIj57eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVQT1JUX0lERU5USVRZX01BVENIJ10gfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMyBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW4gbWItMFwiPnt7IHJlcG9ydC5pZGVudGl0eU1hdGNoIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiICpuZ0lmPVwicmVwb3J0LmZhaWx1cmVSZWFzb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTExIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXNldmVuIHRleHQtdXBwZXJjYXNlIG1iLTFcIj57eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVQT1JUX0ZBSUxVUkVfUkVBU09OJ10gfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMyBhc3Nlc3NtZW50LXRleHQtZGFuZ2VyIG1iLTBcIj57eyByZXBvcnQuZmFpbHVyZVJlYXNvbiB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ2V0UGFyc2VkUGF5bG9hZChyZXBvcnQpIGFzIHA7IGVsc2UgcmF3UGF5bG9hZFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBTdW1tYXJ5IG1ldGEgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBtdC0zIGFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEyIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXNldmVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwLmR1cmF0aW9uX3NlY29uZHMgIT0gbnVsbFwiPnt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRfRFVSQVRJT04nXSB9fToge3sgZm9ybWF0RHVyYXRpb24ocC5kdXJhdGlvbl9zZWNvbmRzKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInAuc3RhcnRlZF9hdFwiPsK3IHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRfU1RBUlRFRCddIH19OiB7eyBwLnN0YXJ0ZWRfYXQgfCBkYXRlOidkZCBNTU0sIEhIOm1tOnNzJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInAuZW5kZWRfYXRcIj7CtyB7eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVQT1JUX0VOREVEJ10gfX06IHt7IHAuZW5kZWRfYXQgfCBkYXRlOidISDptbTpzcycgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBSZWFzb25zIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicC5pbnRlZ3JpdHk/LnJlYXNvbnM/Lmxlbmd0aFwiIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0yIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByIG9mIHAuaW50ZWdyaXR5Py5yZWFzb25zOyB0cmFja0J5OiB0cmFja0J5SW5kZXhcIiBjbGFzcz1cImJvcmRlciByb3VuZGVkIHAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTIgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuXCI+e3sgcmVhc29uQ29kZUxhYmVsKHIuY29kZSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwici53ZWlnaHQgIT0gbnVsbFwiIGNsYXNzPVwiYmFkZ2Ugcm91bmRlZC1waWxsIGFzc2Vzc21lbnQtdGV4dC13aGl0ZVwiIFtuZ0NsYXNzXT1cIihyLndlaWdodCB8fCAwKSA8IDAgPyAnYXNzZXNzbWVudC1iZy1kYW5nZXInIDogJ2Fzc2Vzc21lbnQtYmctc3VjY2VzcydcIj57eyAoci53ZWlnaHQgfHwgMCkgPiAwID8gJysnIDogJycgfX17eyByLndlaWdodCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZ3JleS1zZXZlbiBtYi0wIG10LTFcIj57eyByLmRldGFpbCB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8IS0tIFN0YXQgdGlsZXM6IGZhY2UgYW5hbHlzaXMgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlbiBtdC0zIG1iLTJcIj57eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVQT1JUX0FOQUxZU0lTJ10gfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcm93LWNvbHMtMiByb3ctY29scy1tZC00IGctMiB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZCBwLTIgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTggbWItMVwiPnt7IHAuZmFjZV9hbmFseXNpcz8uZnJhbWVzX2NoZWNrZWQgPz8gMCB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMSBhc3Nlc3NtZW50LXRleHQtZ3JleS1zZXZlbiBtYi0wXCI+e3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVF9GUkFNRVMnXSB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZCBwLTIgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTggbWItMVwiIFtjbGFzcy5hc3Nlc3NtZW50LXRleHQtZGFuZ2VyXT1cIihwLmZhY2VfYW5hbHlzaXM/Lm5vX2ZhY2VfZnJhbWVzIHx8IDApID4gMFwiPnt7IHAuZmFjZV9hbmFseXNpcz8ubm9fZmFjZV9mcmFtZXMgPz8gMCB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMSBhc3Nlc3NtZW50LXRleHQtZ3JleS1zZXZlbiBtYi0wXCI+e3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVF9OT19GQUNFJ10gfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHJvdW5kZWQgcC0yIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTE4IG1iLTFcIiBbY2xhc3MuYXNzZXNzbWVudC10ZXh0LWRhbmdlcl09XCIocC5mYWNlX2FuYWx5c2lzPy5tdWx0aV9mYWNlX2ZyYW1lcyB8fCAwKSA+IDBcIj57eyBwLmZhY2VfYW5hbHlzaXM/Lm11bHRpX2ZhY2VfZnJhbWVzID8/IDAgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTEgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gbWItMFwiPnt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRfTVVMVElfRkFDRSddIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkIHAtMiBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xOCBtYi0xXCIgW2NsYXNzLmFzc2Vzc21lbnQtdGV4dC1kYW5nZXJdPVwiKHAuZmFjZV9hbmFseXNpcz8uaW1wZXJzb25hdGlvbl9mcmFtZXMgfHwgMCkgPiAwXCI+e3sgcC5mYWNlX2FuYWx5c2lzPy5pbXBlcnNvbmF0aW9uX2ZyYW1lcyA/PyAwIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTExIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXNldmVuIG1iLTBcIj57eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVQT1JUX0lNUEVSU09OQVRJT04nXSB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gQWN0aXZpdHkgYnJlYWtkb3duIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicC5hY3Rpdml0eT8uYnlfdHlwZVwiIGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBnYXAtMiBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGl0ZW0gb2YgKHAuYWN0aXZpdHk/LmJ5X3R5cGUgfCBrZXl2YWx1ZSk7IHRyYWNrQnk6IHRyYWNrQnlJbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhZGdlIHJvdW5kZWQtcGlsbCBhc3Nlc3NtZW50LWJnLXBhbGV0dGUtRURGM0ZEIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlbiBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBldmVudFR5cGVMYWJlbChpdGVtLmtleSkgfX0gPHNwYW4gY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTJcIj57eyBpdGVtLnZhbHVlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8IS0tIEV2aWRlbmNlIGltYWdlcyAtLT5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInAuZXZpZGVuY2U/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlbiBtdC0zIG1iLTJcIj57eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVQT1JUX0VWSURFTkNFJ10gfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXAgZ2FwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxhICpuZ0Zvcj1cImxldCBldiBvZiBwLmV2aWRlbmNlOyB0cmFja0J5OiB0cmFja0J5SW5kZXhcIiBjbGFzcz1cInRleHQtY2VudGVyIHRleHQtZGVjb3JhdGlvbi1ub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwiZXYuaW1hZ2VfdXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cInByb2N0b3JpbmctZXZpLWltZyByb3VuZGVkIGJvcmRlclwiIFtzcmNdPVwiZXYuaW1hZ2VfdXJsXCIgW2F0dHIuYWx0XT1cIidmcmFtZSAnICsgZXYuc2VxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IpPVwiaW1hZ2VFcnJvckhhbmRsZXIoJGV2ZW50LCAnYXNzZXRzL2NvbW1vbnMtYXNzZXNzbWVudC9pbWFnZXMvdXNlci5zdmcnKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZC1ibG9jayBhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMSBhc3Nlc3NtZW50LXRleHQtZ3JleS1zZXZlbiBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJldi5pc19yZWZlcmVuY2VcIiBjbGFzcz1cImJhZGdlIHJvdW5kZWQtcGlsbCBhc3Nlc3NtZW50LWJnLXByaW1hcnktb25lIGFzc2Vzc21lbnQtdGV4dC13aGl0ZSBtZS0xXCI+e3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVF9SRUZFUkVOQ0UnXSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAje3sgZXYuc2VxIH19IMK3IHt7IGV2LmNhcHR1cmVkX2F0IHwgZGF0ZTonSEg6bW06c3MnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8IS0tIFRpbWVsaW5lIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicC50aW1lbGluZT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuIG10LTMgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVF9USU1FTElORSddIH19ICh7eyBwLnRpbWVsaW5lPy5sZW5ndGggfX0pXHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9jdG9yaW5nLWxvZyBhc3Nlc3NtZW50LWJnLWdyZXktdGVuIGFzc2Vzc21lbnQtdGV4dC1ncmV5LW9uZSBmb250LW1vbm9zcGFjZSBzbWFsbCByb3VuZGVkIHAtMyBvdmVyZmxvdy1hdXRvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBldiBvZiBwLnRpbWVsaW5lOyB0cmFja0J5OiB0cmFja0J5SW5kZXhcIiBjbGFzcz1cInRleHQtbm93cmFwXCIgW2NsYXNzLmZ3LXNlbWlib2xkXT1cImlzTm90ZXdvcnRoeShldi50eXBlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1ncmV5LWZpdmUgbWUtMlwiPiN7eyBldi5zZXEgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtjbGFzcy5hc3Nlc3NtZW50LXRleHQtcGFsZXR0ZS1BREM5RjZdPVwiaXNOb3Rld29ydGh5KGV2LnR5cGUpXCI+e3sgZXZlbnRUeXBlTGFiZWwoZXYudHlwZSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LWdyZXktZml2ZSBtcy0yXCI+e3sgZXYuYXQgfCBkYXRlOidISDptbTpzcycgfX0gKHt7IGV2LnNvdXJjZSB9fSk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBGYWxsYmFjazogcmF3IHBheWxvYWQgaWYgaXQgaXNuJ3QgcGFyc2VhYmxlIEpTT04gLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Jhd1BheWxvYWQ+XHJcbiAgICAgICAgICAgICAgICAgIDxwcmUgKm5nSWY9XCJyZXBvcnQucmVwb3J0UGF5bG9hZFwiIGNsYXNzPVwicHJvY3RvcmluZy1wYXlsb2FkIGFzc2Vzc21lbnQtYmctZ3JleS10ZW4gYXNzZXNzbWVudC10ZXh0LWdyZXktb25lIHNtYWxsIHJvdW5kZWQgcC0zIG92ZXJmbG93LWF1dG8gbWItMCBtdC0zXCI+e3sgcmVwb3J0LnJlcG9ydFBheWxvYWQgfX08L3ByZT5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcbiAgICA8L21hdC1hY2NvcmRpb24+XHJcblxyXG4gICAgPCEtLSBMb2FkIG1vcmUgLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic2Vzc2lvbnMubGVuZ3RoICYmICFsYXN0XCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtdC0zXCI+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJsb2FkTW9yZSgpXCIgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxyXG4gICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC1idG4tcHJpbWFyeS10cmFuc3BhcmVudCBhc3Nlc3NtZW50LWJvcmRlci1yYWRpdXMtdHdvIGFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xMyBweC0zIHB5LTIgZC1pbmxpbmUtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cclxuICAgICAgICB7eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuTE9BRF9NT1JFJ10gfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|