@c8y/ngx-components 1018.0.205 → 1018.0.208
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/api/api.service.d.ts +7 -1
- package/ecosystem/shared/ecosystem.constants.d.ts +1 -1
- package/esm2020/api/api.service.mjs +17 -2
- package/esm2020/assets-navigator/asset-node.service.mjs +2 -2
- package/esm2020/auth-configuration/sso-configuration/template-parts/external-token-config.component.mjs +3 -3
- package/esm2020/cockpit-config/cockpit-configuration.component.mjs +3 -3
- package/esm2020/cockpit-config/setup/cockpit-setup-step3.component.mjs +3 -3
- package/esm2020/core/file-picker-new/file-picker-new.component.mjs +3 -3
- package/esm2020/core/file-picker-new/file-picker-validators.mjs +4 -4
- package/esm2020/core/help/help.component.mjs +3 -3
- package/esm2020/ecosystem/license-confirm/license-confirm-modal.component.mjs +5 -5
- package/esm2020/ecosystem/shared/ecosystem.constants.mjs +2 -2
- package/esm2020/icon-selector/icons/hands/index.mjs +2 -2
- package/esm2020/map/map-status.component.mjs +3 -3
- package/esm2020/protocol-lwm2m/factories/lwm2m-device-grid.factory.mjs +2 -2
- package/esm2020/sub-assets/assign-devices/assign-devices.component.mjs +3 -3
- package/esm2020/widgets/implementations/map/map-widget-config.component.mjs +3 -3
- package/fesm2015/c8y-ngx-components-api.mjs +16 -1
- package/fesm2015/c8y-ngx-components-api.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-assets-navigator.mjs +1 -1
- package/fesm2015/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-auth-configuration.mjs +2 -2
- package/fesm2015/c8y-ngx-components-auth-configuration.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-cockpit-config.mjs +4 -4
- package/fesm2015/c8y-ngx-components-cockpit-config.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-ecosystem-license-confirm.mjs +4 -4
- package/fesm2015/c8y-ngx-components-ecosystem-license-confirm.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-ecosystem-shared.mjs +1 -1
- package/fesm2015/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-icon-selector-icons-hands.mjs +1 -1
- package/fesm2015/c8y-ngx-components-icon-selector-icons-hands.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-map.mjs +2 -2
- package/fesm2015/c8y-ngx-components-map.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-protocol-lwm2m-factories.mjs +1 -1
- package/fesm2015/c8y-ngx-components-protocol-lwm2m-factories.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-sub-assets.mjs +2 -2
- package/fesm2015/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-widgets-implementations-map.mjs +2 -2
- package/fesm2015/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components.mjs +7 -7
- package/fesm2015/c8y-ngx-components.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-api.mjs +16 -1
- package/fesm2020/c8y-ngx-components-api.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-assets-navigator.mjs +1 -1
- package/fesm2020/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-auth-configuration.mjs +2 -2
- package/fesm2020/c8y-ngx-components-auth-configuration.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-cockpit-config.mjs +4 -4
- package/fesm2020/c8y-ngx-components-cockpit-config.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-ecosystem-license-confirm.mjs +4 -4
- package/fesm2020/c8y-ngx-components-ecosystem-license-confirm.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-ecosystem-shared.mjs +1 -1
- package/fesm2020/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-icon-selector-icons-hands.mjs +1 -1
- package/fesm2020/c8y-ngx-components-icon-selector-icons-hands.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-map.mjs +2 -2
- package/fesm2020/c8y-ngx-components-map.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-protocol-lwm2m-factories.mjs +1 -1
- package/fesm2020/c8y-ngx-components-protocol-lwm2m-factories.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-sub-assets.mjs +2 -2
- package/fesm2020/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-widgets-implementations-map.mjs +2 -2
- package/fesm2020/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components.mjs +7 -7
- package/fesm2020/c8y-ngx-components.mjs.map +1 -1
- package/icon-selector/icons/hands/index.d.ts +1 -1
- package/locales/de.po +519 -166
- package/locales/en.po +4 -1
- package/locales/es.po +816 -305
- package/locales/fr.po +732 -220
- package/locales/ja_JP.po +812 -225
- package/locales/ko.po +940 -429
- package/locales/locales.pot +20 -38
- package/locales/nl.po +804 -293
- package/locales/pl.po +712 -222
- package/locales/pt_BR.po +875 -364
- package/locales/ru.po +752 -250
- package/locales/zh_CN.po +823 -312
- package/locales/zh_TW.po +1188 -677
- package/package.json +1 -1
|
@@ -202,7 +202,7 @@ FilePickerNewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
202
202
|
multi: true,
|
|
203
203
|
useExisting: forwardRef(() => FilePickerNewComponent)
|
|
204
204
|
}
|
|
205
|
-
], viewQueries: [{ propertyName: "filePlaceholder", first: true, predicate: ["filePlaceholder"], descendants: true, static: true }], ngImport: i0, template: "<c8y-form-group class=\"m-0\">\n <div\n class=\"file-picker-drop-zone\"\n [class.dragging]=\"isDropAreaEnlarged$ | async\"\n [class.unsupported-format]=\"isDraggedFileUnsupported$ | async\"\n tabindex=\"0\"\n >\n <div\n #filePlaceholder\n class=\"file-placeholder pointer\"\n [class.drag-over]=\"isDraggingOverFilePlaceholder$ | async\"\n (drop)=\"onDrop($event)\"\n (click)=\"!uploadInProgress && picker.click()\"\n >\n <div\n *ngIf=\"isDraggedFileUnsupported$ | async; else defaultHint\"\n class=\"hint-placeholder pointer\"\n >\n <i c8yIcon=\"warning\" class=\"warning\"></i>\n <p>\n <b translate>Unsupported file format.</b>\n </p>\n </div>\n\n <ng-template #defaultHint>\n <div *ngIf=\"!uploadInProgress\" class=\"hint-placeholder\">\n <i c8yIcon=\"upload\"></i>\n <p>\n <b>{{ 'Drop files here or click to browse' | translate }}</b>\n </p>\n <p *ngIf=\"accept\" class=\"m-t-8 text-12 text-muted\">\n {{ 'Supported file
|
|
205
|
+
], viewQueries: [{ propertyName: "filePlaceholder", first: true, predicate: ["filePlaceholder"], descendants: true, static: true }], ngImport: i0, template: "<c8y-form-group class=\"m-0\">\n <div\n class=\"file-picker-drop-zone\"\n [class.dragging]=\"isDropAreaEnlarged$ | async\"\n [class.unsupported-format]=\"isDraggedFileUnsupported$ | async\"\n tabindex=\"0\"\n >\n <div\n #filePlaceholder\n class=\"file-placeholder pointer\"\n [class.drag-over]=\"isDraggingOverFilePlaceholder$ | async\"\n (drop)=\"onDrop($event)\"\n (click)=\"!uploadInProgress && picker.click()\"\n >\n <div\n *ngIf=\"isDraggedFileUnsupported$ | async; else defaultHint\"\n class=\"hint-placeholder pointer\"\n >\n <i c8yIcon=\"warning\" class=\"warning\"></i>\n <p>\n <b translate>Unsupported file format.</b>\n </p>\n </div>\n\n <ng-template #defaultHint>\n <div *ngIf=\"!uploadInProgress\" class=\"hint-placeholder\">\n <i c8yIcon=\"upload\"></i>\n <p>\n <b>{{ 'Drop files here or click to browse' | translate }}</b>\n </p>\n <p *ngIf=\"accept\" class=\"m-t-8 text-12 text-muted\">\n {{ 'Supported file types:' | translate }} {{ accept }}\n </p>\n <div\n class=\"c8y-messages has-error p-b-8 text-left\"\n *ngIf=\"\n controlInstance.touched && controlInstance.errors && controlInstance.errors\n | filterNonArrayValidationErrors\n \"\n >\n <ng-container\n *ngFor=\"\n let error of controlInstance.errors | filterNonArrayValidationErrors | keyvalue\n \"\n >\n <small class=\"form-control-feedback-message\">\n {{ error.key | humanizeValidationMessage | translate: error.value }}\n </small>\n </ng-container>\n </div>\n </div>\n <div *ngIf=\"uploadInProgress\" class=\"d-flex d-col p-4 flex-center\">\n <c8y-loading></c8y-loading>\n <p class=\"m-t-auto m-b-auto m-r-8 text-center\">\n {{ loadingMessage | translate }}\n </p>\n </div>\n </ng-template>\n </div>\n </div>\n <div class=\"file-container\">\n <ul class=\"list-group\">\n <ng-container *ngFor=\"let file of droppedFiles; let i = index\">\n <li class=\"list-group-item p-4 a-i-center\">\n <div class=\"d-flex a-i-center\">\n <i [c8yIcon]=\"file | fileIcon\" class=\"icon-20 m-r-8\"></i>\n <div class=\"m-r-16 text-truncate\" [title]=\"file.name\">\n {{ file.name }}\n </div>\n <div class=\"m-r-16 text-nowrap\">({{ file.size | bytes }})</div>\n <div class=\"m-l-auto\">\n <button\n *ngIf=\"!uploadInProgress\"\n (click)=\"deleteAt(i)\"\n class=\"btn btn-dot btn-dot--danger\"\n type=\"button\"\n [attr.aria-label]=\"'Remove' | translate\"\n title=\"{{ 'Remove' | translate }}\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n <div class=\"btn-dot btn\" *ngIf=\"uploadInProgress\" disabled=\"disabled\">\n <i c8yIcon=\"circled-notch\" class=\"icon-spin\"></i>\n </div>\n </div>\n </div>\n <ng-container\n *ngFor=\"\n let error of controlInstance.errors | extractArrayValidationErrors: i | keyvalue\n \"\n >\n <div class=\"c8y-messages has-error p-b-24\">\n <small class=\"form-control-feedback-message m-0\" style=\"margin-top: -6px !important\">\n {{ error.key | humanizeValidationMessage | translate: error.value }}\n </small>\n </div>\n </ng-container>\n </li>\n </ng-container>\n </ul>\n </div>\n <input\n #picker\n (change)=\"filesSelected($event)\"\n [accept]=\"acceptedExts\"\n [multiple]=\"maxAllowedFiles > 1\"\n type=\"file\"\n class=\"hidden\"\n id=\"file\"\n />\n</c8y-form-group>\n", dependencies: [{ kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: i6.LoadingComponent, selector: "c8y-loading" }, { kind: "pipe", type: i7.ExtractArrayValidationErrorsPipe, name: "extractArrayValidationErrors" }, { kind: "pipe", type: i8.FilterNonArrayValidationErrorsPipe, name: "filterNonArrayValidationErrors" }, { kind: "pipe", type: i9.HumanizeValidationMessagePipe, name: "humanizeValidationMessage" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i10.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i11.BytesPipe, name: "bytes" }, { kind: "pipe", type: i12.GenericFileIconPipe, name: "fileIcon" }] });
|
|
206
206
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: FilePickerNewComponent, decorators: [{
|
|
207
207
|
type: Component,
|
|
208
208
|
args: [{ selector: 'c8y-file-picker-new', providers: [
|
|
@@ -216,7 +216,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
216
216
|
multi: true,
|
|
217
217
|
useExisting: forwardRef(() => FilePickerNewComponent)
|
|
218
218
|
}
|
|
219
|
-
], template: "<c8y-form-group class=\"m-0\">\n <div\n class=\"file-picker-drop-zone\"\n [class.dragging]=\"isDropAreaEnlarged$ | async\"\n [class.unsupported-format]=\"isDraggedFileUnsupported$ | async\"\n tabindex=\"0\"\n >\n <div\n #filePlaceholder\n class=\"file-placeholder pointer\"\n [class.drag-over]=\"isDraggingOverFilePlaceholder$ | async\"\n (drop)=\"onDrop($event)\"\n (click)=\"!uploadInProgress && picker.click()\"\n >\n <div\n *ngIf=\"isDraggedFileUnsupported$ | async; else defaultHint\"\n class=\"hint-placeholder pointer\"\n >\n <i c8yIcon=\"warning\" class=\"warning\"></i>\n <p>\n <b translate>Unsupported file format.</b>\n </p>\n </div>\n\n <ng-template #defaultHint>\n <div *ngIf=\"!uploadInProgress\" class=\"hint-placeholder\">\n <i c8yIcon=\"upload\"></i>\n <p>\n <b>{{ 'Drop files here or click to browse' | translate }}</b>\n </p>\n <p *ngIf=\"accept\" class=\"m-t-8 text-12 text-muted\">\n {{ 'Supported file
|
|
219
|
+
], template: "<c8y-form-group class=\"m-0\">\n <div\n class=\"file-picker-drop-zone\"\n [class.dragging]=\"isDropAreaEnlarged$ | async\"\n [class.unsupported-format]=\"isDraggedFileUnsupported$ | async\"\n tabindex=\"0\"\n >\n <div\n #filePlaceholder\n class=\"file-placeholder pointer\"\n [class.drag-over]=\"isDraggingOverFilePlaceholder$ | async\"\n (drop)=\"onDrop($event)\"\n (click)=\"!uploadInProgress && picker.click()\"\n >\n <div\n *ngIf=\"isDraggedFileUnsupported$ | async; else defaultHint\"\n class=\"hint-placeholder pointer\"\n >\n <i c8yIcon=\"warning\" class=\"warning\"></i>\n <p>\n <b translate>Unsupported file format.</b>\n </p>\n </div>\n\n <ng-template #defaultHint>\n <div *ngIf=\"!uploadInProgress\" class=\"hint-placeholder\">\n <i c8yIcon=\"upload\"></i>\n <p>\n <b>{{ 'Drop files here or click to browse' | translate }}</b>\n </p>\n <p *ngIf=\"accept\" class=\"m-t-8 text-12 text-muted\">\n {{ 'Supported file types:' | translate }} {{ accept }}\n </p>\n <div\n class=\"c8y-messages has-error p-b-8 text-left\"\n *ngIf=\"\n controlInstance.touched && controlInstance.errors && controlInstance.errors\n | filterNonArrayValidationErrors\n \"\n >\n <ng-container\n *ngFor=\"\n let error of controlInstance.errors | filterNonArrayValidationErrors | keyvalue\n \"\n >\n <small class=\"form-control-feedback-message\">\n {{ error.key | humanizeValidationMessage | translate: error.value }}\n </small>\n </ng-container>\n </div>\n </div>\n <div *ngIf=\"uploadInProgress\" class=\"d-flex d-col p-4 flex-center\">\n <c8y-loading></c8y-loading>\n <p class=\"m-t-auto m-b-auto m-r-8 text-center\">\n {{ loadingMessage | translate }}\n </p>\n </div>\n </ng-template>\n </div>\n </div>\n <div class=\"file-container\">\n <ul class=\"list-group\">\n <ng-container *ngFor=\"let file of droppedFiles; let i = index\">\n <li class=\"list-group-item p-4 a-i-center\">\n <div class=\"d-flex a-i-center\">\n <i [c8yIcon]=\"file | fileIcon\" class=\"icon-20 m-r-8\"></i>\n <div class=\"m-r-16 text-truncate\" [title]=\"file.name\">\n {{ file.name }}\n </div>\n <div class=\"m-r-16 text-nowrap\">({{ file.size | bytes }})</div>\n <div class=\"m-l-auto\">\n <button\n *ngIf=\"!uploadInProgress\"\n (click)=\"deleteAt(i)\"\n class=\"btn btn-dot btn-dot--danger\"\n type=\"button\"\n [attr.aria-label]=\"'Remove' | translate\"\n title=\"{{ 'Remove' | translate }}\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n <div class=\"btn-dot btn\" *ngIf=\"uploadInProgress\" disabled=\"disabled\">\n <i c8yIcon=\"circled-notch\" class=\"icon-spin\"></i>\n </div>\n </div>\n </div>\n <ng-container\n *ngFor=\"\n let error of controlInstance.errors | extractArrayValidationErrors: i | keyvalue\n \"\n >\n <div class=\"c8y-messages has-error p-b-24\">\n <small class=\"form-control-feedback-message m-0\" style=\"margin-top: -6px !important\">\n {{ error.key | humanizeValidationMessage | translate: error.value }}\n </small>\n </div>\n </ng-container>\n </li>\n </ng-container>\n </ul>\n </div>\n <input\n #picker\n (change)=\"filesSelected($event)\"\n [accept]=\"acceptedExts\"\n [multiple]=\"maxAllowedFiles > 1\"\n type=\"file\"\n class=\"hidden\"\n id=\"file\"\n />\n</c8y-form-group>\n" }]
|
|
220
220
|
}], ctorParameters: function () { return [{ type: i1.FilesService }, { type: i0.Injector, decorators: [{
|
|
221
221
|
type: Inject,
|
|
222
222
|
args: [Injector]
|
|
@@ -245,4 +245,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
245
245
|
function appendErrors(errors, newErrors) {
|
|
246
246
|
return newErrors ? { ...errors, ...newErrors } : errors;
|
|
247
247
|
}
|
|
248
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1waWNrZXItbmV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvZmlsZS1waWNrZXItbmV3L2ZpbGUtcGlja2VyLW5ldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2ZpbGUtcGlja2VyLW5ldy9maWxlLXBpY2tlci1uZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFFVixZQUFZLEVBRVosVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUNILE1BQU0sRUFDTixTQUFTLEVBQ1QsR0FBRyxFQUNILGNBQWMsRUFDZixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sS0FBSyxNQUFNLE1BQU0sU0FBUyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxFQUdMLFdBQVcsRUFDWCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLFNBQVMsRUFHVixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQVFsQzs7R0FFRztBQWtCSCxNQUFNLE9BQU8sc0JBQXNCO0lBbUVqQyxZQUFvQixZQUEwQixFQUE0QixRQUFrQjtRQUF4RSxpQkFB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IEVsZW1lbnRSZWYsXG4gIEFmdGVyVmlld0luaXQsXG4gIEhvc3RMaXN0ZW5lcixcbiAgT25Jbml0LFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgZmlsdGVyLFxuICBtYXAsXG4gIHNhbXBsZSxcbiAgc3dpdGNoTWFwLFxuICB0YXAsXG4gIHdpdGhMYXRlc3RGcm9tXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCAqIGFzIG1pbWVEQiBmcm9tICdtaW1lLWRiJztcbmltcG9ydCB7IEZpbGVzU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtQ29udHJvbCxcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIE5nQ29udHJvbCxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpbGVQaWNrZXJWYWxpZGF0b3JzIH0gZnJvbSAnLi9maWxlLXBpY2tlci12YWxpZGF0b3JzJztcbmltcG9ydCB7IHZhbGlkYXRlQXJyYXlFbGVtZW50cyB9IGZyb20gJy4uL2Zvcm1zJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICcuLi9pMThuJztcblxuaW50ZXJmYWNlIElBdmFpbGFibGVWYWxpZGF0b3JzIHtcbiAgZmlsZU1heFNpemU/OiBib29sZWFuO1xuICBmaWxlTm9uRW1wdHk/OiBib29sZWFuO1xuICBmaWxlTmFtZU1heExlbmd0aD86IGJvb2xlYW47XG59XG5cbi8qKlxuIEZpbGUgdXBsb2FkZXJcbiAqL1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZmlsZS1waWNrZXItbmV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtcGlja2VyLW5ldy5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRmlsZVBpY2tlck5ld0NvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRmlsZVBpY2tlck5ld0NvbXBvbmVudClcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRmlsZVBpY2tlck5ld0NvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvclxue1xuICBAVmlld0NoaWxkKCdmaWxlUGxhY2Vob2xkZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBmaWxlUGxhY2Vob2xkZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIC8qKiBTcGVjaWZpZXMgYSBmaWx0ZXIgZm9yIHdoYXQgZmlsZSB0eXBlcyB0aGUgdXNlciBjYW4gcGljayBmcm9tIHRoZSBmaWxlIGlucHV0IGRpYWxvZyBib3guXG4gICAqIEJ5IGRlZmF1bHQgYWxsIHR5cGVzIGFyZSBhY2NlcHRlZC5cbiAgICogIyMgRXhhbXBsZTpcbiAgICpcbiAgICogU3BlY2lmeSBmaWxlIHR5cGVzIGJ5IGV4dGVuc2lvbnM6XG4gICAqIGBgYGh0bWxcbiAgICogIC4uLlxuICAgKiAgW2FjY2VwdF09XCInLnppcCwuN3onXCJcbiAgICogIC4uLlxuICAgKiBgYGBcbiAgICpcbiAgICogU3BlY2lmeSBmaWxlIHR5cGVzIGJ5IGV4dGVuc2lvbnMgYW5kIGdlbmVyaWMgdHlwZXMgW0dFTkVSSUNfRklMRV9UWVBFXXtAbGluayBHRU5FUklDX0ZJTEVfVFlQRX06XG4gICAqIGBgYGh0bWxcbiAgICogIC4uLlxuICAgKiAgW2FjY2VwdF09XCInLnBkZixhcmNoaXZlJ1wiXG4gICAqICAuLi5cbiAgICogYGBgXG4gICAqXG4gICAqIFNwZWNpZnkgZmlsZSB0eXBlcyBieSBnZW5lcmljIHR5cGVzIFtHRU5FUklDX0ZJTEVfVFlQRV17QGxpbmsgR0VORVJJQ19GSUxFX1RZUEV9OlxuICAgKiAgYGBgaHRtbFxuICAgKiAgLi4uXG4gICAqICBbYWNjZXB0XT1cIidhcmNoaXZlLHZpZGVvJ1wiXG4gICAqICAuLi5cbiAgICpcbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoKVxuICBhY2NlcHQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIG1heEFsbG93ZWRGaWxlcz86IG51bWJlciA9IEluZmluaXR5O1xuICBASW5wdXQoKVxuICBtaW5SZXF1aXJlZEZpbGVzPzogbnVtYmVyID0gMTtcbiAgQElucHV0KClcbiAgZGlzYWJsZVZhbGlkYXRvcnM6IElBdmFpbGFibGVWYWxpZGF0b3JzID0ge307XG4gIEBJbnB1dCgpXG4gIHVwbG9hZEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgQE91dHB1dCgpXG4gIGRyb3BwZWQ6IEV2ZW50RW1pdHRlcjxGaWxlW10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGRyb3BwZWRGaWxlczogRmlsZVtdID0gW107XG5cbiAgaXNEcmFnZ2luZ0ZpbGVzJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgaXNEcmFnZ2luZ092ZXJGaWxlUGxhY2Vob2xkZXIkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpc0V4dGVuc2lvbkFsbG93ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpc0Ryb3BBcmVhRW5sYXJnZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpc0RyYWdnZWRGaWxlVW5zdXBwb3J0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBhY2NlcHRlZEV4dHM6IHN0cmluZ1tdO1xuICB2YWxpZDogYm9vbGVhbjtcbiAgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzO1xuICBjb250cm9sSW5zdGFuY2U6IEFic3RyYWN0Q29udHJvbDtcbiAgLy8gVE9ETyBoYW5kbGUgY29udHJvbCBkaXNhYmxlZCBzdGF0ZVxuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgZGlzYWJsZWRWYWxpZGF0b3JzOiBJQXZhaWxhYmxlVmFsaWRhdG9ycyA9IHtcbiAgICBmaWxlTWF4U2l6ZTogZmFsc2UsXG4gICAgZmlsZU5vbkVtcHR5OiBmYWxzZSxcbiAgICBmaWxlTmFtZU1heExlbmd0aDogZmFsc2VcbiAgfTtcbiAgbG9hZGluZ01lc3NhZ2UgPSBnZXR0ZXh0KCdVcGxvYWQgaW4gcHJvZ3Jlc3MnKTtcbiAgcHJpdmF0ZSBpc0V4dGVuc2lvbkFsbG93ZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgZmlsZVNpemVMaW1pdDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmlsZXNTZXJ2aWNlOiBGaWxlc1NlcnZpY2UsIEBJbmplY3QoSW5qZWN0b3IpIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IG5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0PE5nQ29udHJvbCB8IGZhbHNlPihOZ0NvbnRyb2wsIGZhbHNlKTtcblxuICAgIGlmIChuZ0NvbnRyb2wgJiYgbmdDb250cm9sLmNvbnRyb2wpIHtcbiAgICAgIHRoaXMuY29udHJvbEluc3RhbmNlID0gbmdDb250cm9sLmNvbnRyb2w7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8qKlxuICAgICAgICogSW4gY2FzZSBpZiBjb21wb25lbnQgaXMgdXNlZCB3aXRob3V0IHV0aWxpemluZyBDb250cm9sVmFsdWVBY2Nlc3NvciwgaW50ZXJuYWwgY29udHJvbFxuICAgICAgICogaW5zdGFuY2UgaXMgY3JlYXRlZCwgc28gaXQgY2FuIHN0aWxsIGJlbmVmaXQgZnJvbSBidWlsdCBpbiB2YWxpZGF0b3JzLlxuICAgICAgICogKGRyb3BwZWQpIEBPdXRwdXQgZXZlbnQgY2FuIGJlIHVzZWQgdG8gZ2V0IGxpc3Qgb2YgZmlsZXMuXG4gICAgICAgKi9cbiAgICAgIHRoaXMuY29udHJvbEluc3RhbmNlID0gbmV3IEZvcm1Db250cm9sKFtdLCB0aGlzLnZhbGlkYXRlLmJpbmQodGhpcykpO1xuICAgICAgdGhpcy5vbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5jb250cm9sSW5zdGFuY2Uuc2V0VmFsdWUodGhpcy5kcm9wcGVkRmlsZXMpO1xuICAgICAgfTtcbiAgICAgIHRoaXMub25WYWxpZGF0b3JDaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuY29udHJvbEluc3RhbmNlLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgIH07XG4gICAgICB0aGlzLm9uVG91Y2hlZCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5jb250cm9sSW5zdGFuY2UubWFya0FzVG91Y2hlZCgpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLmFjY2VwdGVkRXh0cyA9IHRoaXMuZmlsZXNTZXJ2aWNlLmV4dHJhY3RGaWxlRXh0ZW5zaW9ucyh0aGlzLmFjY2VwdCkubWFwKHQgPT4gYC4ke3R9YCk7XG5cbiAgICB0aGlzLmRpc2FibGVkVmFsaWRhdG9ycyA9IHsgLi4udGhpcy5kaXNhYmxlZFZhbGlkYXRvcnMsIC4uLnRoaXMuZGlzYWJsZVZhbGlkYXRvcnMgfTtcblxuICAgIHRoaXMuZmlsZXNTZXJ2aWNlLmxvYWRCeXRlc1NpemVMaW1pdCgpLnRoZW4oc2l6ZUxpbWl0ID0+IHtcbiAgICAgIHRoaXMuZmlsZVNpemVMaW1pdCA9IHNpemVMaW1pdDtcbiAgICAgIHRoaXMub25WYWxpZGF0b3JDaGFuZ2UoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAvKipcbiAgICAgKiBFbWl0cyBEcmFnRXZlbnQgd2hlbiB1c2VyIGRyYWcgZmlsZSBpbnNpZGUgb3Igb3V0c2lkZSB2aWV3cG9ydC4gT25seSB3b3JrcyB3aGVuIHR5cGUgb2YgZHJhZ2dlZCBlbGVtZW50cyBpcyAnRmlsZXMnLlxuICAgICAqL1xuICAgIGNvbnN0IGRyYWdnaW5nRmlsZXNHbG9iYWxseSQgPSBtZXJnZShcbiAgICAgIGZyb21FdmVudChkb2N1bWVudCwgJ2RyYWdlbnRlcicpLFxuICAgICAgZnJvbUV2ZW50KGRvY3VtZW50LCAnZHJhZ2xlYXZlJykucGlwZShcbiAgICAgICAgLy8gVE9ETyByZXZpZXcgd2h5IHRoaXMgc3BlY2lmaWMgZmlsdGVyIGlzIG5lZWRlZFxuICAgICAgICBmaWx0ZXIoKGU6IERyYWdFdmVudCkgPT4gZS5wYWdlWCA9PT0gMCAmJiBlLnBhZ2VZID09PSAwKVxuICAgICAgKVxuICAgICkucGlwZShcbiAgICAgIGZpbHRlcigoZXY6IERyYWdFdmVudCkgPT4gZXYuZGF0YVRyYW5zZmVyPy50eXBlcy50b1N0cmluZygpID09PSAnRmlsZXMnKSxcbiAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy51cGxvYWRJblByb2dyZXNzKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyBib29sZWFuIHZhbHVlIHdoZW4gZmlsZSBpcyBkcmFnZ2VkIGluc2lkZSBvciBvdXRzaWRlIG9mIHZpZXdwb3J0LCBvciBmaWxlIGlzIG5vdCBkcmFnZ2VkIGFueW1vcmUuXG4gICAgICovXG4gICAgdGhpcy5pc0RyYWdnaW5nRmlsZXMkID0gbWVyZ2UoXG4gICAgICBkcmFnZ2luZ0ZpbGVzR2xvYmFsbHkkLnBpcGUobWFwKGV2ID0+IGV2LnR5cGUgPT09ICdkcmFnZW50ZXInKSksXG4gICAgICBmcm9tRXZlbnQoZG9jdW1lbnQsICdtb3VzZWVudGVyJykucGlwZShtYXAoKCkgPT4gZmFsc2UpKSxcbiAgICAgIGZyb21FdmVudChkb2N1bWVudCwgJ2Ryb3AnKS5waXBlKG1hcCgoKSA9PiBmYWxzZSkpXG4gICAgKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgYm9vbGVhbiB2YWx1ZSBhZnRlciBjaGVja2luZyBpZiBkcmFnZ2VkIGZpbGVzIG1hdGNoIGNvbmZpZ3VyZWQgZXh0ZW5zaW9ucyBsaXN0LFxuICAgICAqIFdoZW4gZHJhZ2dpbmcgb2YgZmlsZSBzdGFydHMsIGdldCBtaW1ldHlwZXMgb2YgZWFjaCBmaWxlLCBjb252ZXJ0IHRoZW0gdG8gcG9zc2libGUgZXh0ZW5zaW9ucyBsaXN0XG4gICAgICogdGhhdCBtYXkgYmUgYXNzb2NpYXRlZCB3aXRoIGdpdmVuIG1pbWV0eXBlLCBhbmQgdGhlbiBjaGVjayBpZiBhbnkgb2YgdGhlc2UgZXh0ZW5zaW9ucyBtYXRjaCBjb25maWd1cmVkXG4gICAgICogZXh0ZW5zaW9ucyBhY2NlcHQgbGlzdC5cbiAgICAgKi9cbiAgICB0aGlzLmlzRXh0ZW5zaW9uQWxsb3dlZCQgPSBkcmFnZ2luZ0ZpbGVzR2xvYmFsbHkkLnBpcGUoXG4gICAgICBzYW1wbGUodGhpcy5pc0RyYWdnaW5nRmlsZXMkLnBpcGUoZmlsdGVyKGVubGFyZ2VkID0+IGVubGFyZ2VkKSkpLFxuICAgICAgc3dpdGNoTWFwKGV2ID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmFjY2VwdCkge1xuICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvZihldikucGlwZShcbiAgICAgICAgICBtYXAoZXYgPT4gWy4uLihldi5kYXRhVHJhbnNmZXIuaXRlbXMgYXMgdW5rbm93biBhcyBEYXRhVHJhbnNmZXJJdGVtW10pXSksXG4gICAgICAgICAgbWFwKGZpbGVzID0+XG4gICAgICAgICAgICBmaWxlcy5tYXAoZmlsZSA9PiAobWltZURCW2ZpbGUudHlwZV0uZXh0ZW5zaW9ucyBhcyBzdHJpbmdbXSB8IHVuZGVmaW5lZCkgfHwgWyd1bmtub3duJ10pXG4gICAgICAgICAgKSxcbiAgICAgICAgICBtYXAoZXh0ZW5zaW9uc0ZvckZpbGVzID0+XG4gICAgICAgICAgICBleHRlbnNpb25zRm9yRmlsZXMuZXZlcnkoZXh0ZW5zaW9uc0ZvckZpbGUgPT5cbiAgICAgICAgICAgICAgZXh0ZW5zaW9uc0ZvckZpbGUuc29tZShleHQgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVzU2VydmljZS5leHRyYWN0RmlsZUV4dGVuc2lvbnModGhpcy5hY2NlcHQpLmluY2x1ZGVzKGV4dClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICAgdGFwKGFsbG93ZWQgPT4ge1xuICAgICAgICB0aGlzLmlzRXh0ZW5zaW9uQWxsb3dlZCA9IGFsbG93ZWQ7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBJZiBGaWxlIGlzIGJlaW5nIGRyYWdnZWQgYW5kIGV4dGVuc2lvbnMgbWVldHMgcmVxdWlyZW1lbnRzLCB0aGVuIGRyb3AtYXJlYSBjYW4gYmUgZW5sYXJnZWQuXG4gICAgICovXG4gICAgdGhpcy5pc0Ryb3BBcmVhRW5sYXJnZWQkID0gdGhpcy5pc0RyYWdnaW5nRmlsZXMkLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmlzRXh0ZW5zaW9uQWxsb3dlZCQpLFxuICAgICAgbWFwKChbZmlsZURyYWdnZWQsIGV4dEFsbG93ZWRdKSA9PiBmaWxlRHJhZ2dlZCAmJiBleHRBbGxvd2VkKVxuICAgICk7XG5cbiAgICB0aGlzLmlzRHJhZ2dlZEZpbGVVbnN1cHBvcnRlZCQgPSB0aGlzLmlzRHJhZ2dpbmdGaWxlcyQucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuaXNFeHRlbnNpb25BbGxvd2VkJCksXG4gICAgICBtYXAoKFtmaWxlRHJhZ2dlZCwgZXh0QWxsb3dlZF0pID0+IGZpbGVEcmFnZ2VkICYmICFleHRBbGxvd2VkKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyB0cnVlIHdoZW4gZmlsZSBpcyBob3ZlcmluZyBhYm92ZSBkcm9wLWFyZWEuIE9ubHkgd29ya3Mgd2hlbiBpc0Ryb3BBcmVhRW5sYXJnZWQkIGFsc28gZW1pdHMgdHJ1ZS5cbiAgICAgKiBUaGlzIGlzIHdvcmthcm91bmQgZm9yIENTUyA6aG92ZXIgcHNldWRvLWNsYXNzIG5vdCB0cmlnZ2VyaW5nIHdoZW4gZHJhZ2dpbmcgZmlsZS5cbiAgICAgKi9cbiAgICB0aGlzLmlzRHJhZ2dpbmdPdmVyRmlsZVBsYWNlaG9sZGVyJCA9IG1lcmdlKFxuICAgICAgZnJvbUV2ZW50KHRoaXMuZmlsZVBsYWNlaG9sZGVyLm5hdGl2ZUVsZW1lbnQsICdkcmFnZW50ZXInKSxcbiAgICAgIGZyb21FdmVudCh0aGlzLmZpbGVQbGFjZWhvbGRlci5uYXRpdmVFbGVtZW50LCAnZHJhZ2xlYXZlJyksXG4gICAgICBmcm9tRXZlbnQodGhpcy5maWxlUGxhY2Vob2xkZXIubmF0aXZlRWxlbWVudCwgJ2Ryb3AnKVxuICAgICkucGlwZShcbiAgICAgIGZpbHRlcigoZXY6IERyYWdFdmVudCkgPT4gZXYuZGF0YVRyYW5zZmVyPy50eXBlcy50b1N0cmluZygpID09PSAnRmlsZXMnKSxcbiAgICAgIG1hcChldiA9PiBldi50eXBlID09PSAnZHJhZ2VudGVyJyksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmlzRHJvcEFyZWFFbmxhcmdlZCQpLFxuICAgICAgbWFwKChbZHJhZ2dpbmdPdmVyLCBkcm9wQXJlYUVubGFyZ2VkXSkgPT4gZHJhZ2dpbmdPdmVyICYmIGRyb3BBcmVhRW5sYXJnZWQpXG4gICAgKTtcbiAgfVxuXG4gIGFmdGVyVmFsdWVDaGFuZ2VkKCkge1xuICAgIHRoaXMub25DaGFuZ2UoWy4uLnRoaXMuZHJvcHBlZEZpbGVzXSk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB0aGlzLmRyb3BwZWQuZW1pdChbLi4udGhpcy5kcm9wcGVkRmlsZXNdKTtcbiAgICB0aGlzLnZhbGlkID0gdGhpcy5jb250cm9sSW5zdGFuY2UudmFsaWQ7XG4gICAgdGhpcy5lcnJvcnMgPSB0aGlzLmNvbnRyb2xJbnN0YW5jZS5lcnJvcnM7XG4gIH1cblxuICBvbkRyb3AoZTogRHJhZ0V2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmlzRXh0ZW5zaW9uQWxsb3dlZCB8fCB0aGlzLnVwbG9hZEluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZS5kYXRhVHJhbnNmZXIudHlwZXMudG9TdHJpbmcoKSAhPT0gJ0ZpbGVzJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmaWxlcyA9IGUuZGF0YVRyYW5zZmVyLmZpbGVzO1xuICAgIGlmICghZmlsZXM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuZHJvcHBlZEZpbGVzLnB1c2goZmlsZXMuaXRlbShpKSk7XG4gICAgfVxuICAgIHRoaXMuYWZ0ZXJWYWx1ZUNoYW5nZWQoKTtcbiAgfVxuXG4gIGZpbGVzU2VsZWN0ZWQoZXY6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXRFbGVtZW50ID0gZXYudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3QgZmlsZXM6IEZpbGVbXSA9IEFycmF5LmZyb20oaW5wdXRFbGVtZW50LmZpbGVzKTtcbiAgICB0aGlzLmRyb3BwZWRGaWxlcy5wdXNoKC4uLmZpbGVzKTtcbiAgICBpbnB1dEVsZW1lbnQudmFsdWUgPSBudWxsO1xuICAgIHRoaXMuYWZ0ZXJWYWx1ZUNoYW5nZWQoKTtcbiAgfVxuXG4gIGRlbGV0ZUF0KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmRyb3BwZWRGaWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuYWZ0ZXJWYWx1ZUNoYW5nZWQoKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IG5ldmVyKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IG5ldmVyKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25WYWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHdyaXRlVmFsdWUoZmlsZXM6IEZpbGVbXSB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoIWZpbGVzKSB7XG4gICAgICBmaWxlcyA9IFtdO1xuICAgIH1cbiAgICB0aGlzLmRyb3BwZWRGaWxlcyA9IFsuLi5maWxlc107XG4gICAgdGhpcy5vblZhbGlkYXRvckNoYW5nZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmRyYWdvdmVyJywgWyckZXZlbnQnXSlcbiAgb25EcmFnT3ZlcihlKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmRyb3AnLCBbJyRldmVudCddKVxuICBvbldpbmRvd0Ryb3AoZSkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBsZXQgZXJyb3JzID0ge307XG5cbiAgICBpZiAoIXRoaXMuZGlzYWJsZVZhbGlkYXRvcnMuZmlsZU1heFNpemUpIHtcbiAgICAgIGVycm9ycyA9IGFwcGVuZEVycm9ycyhcbiAgICAgICAgZXJyb3JzLFxuICAgICAgICB2YWxpZGF0ZUFycmF5RWxlbWVudHMoXG4gICAgICAgICAgRmlsZVBpY2tlclZhbGlkYXRvcnMuZmlsZU1heFNpemUodGhpcy5maWxlU2l6ZUxpbWl0LCB0aGlzLmZpbGVzU2VydmljZSlcbiAgICAgICAgKShjb250cm9sKVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmRpc2FibGVWYWxpZGF0b3JzLmZpbGVOb25FbXB0eSkge1xuICAgICAgZXJyb3JzID0gYXBwZW5kRXJyb3JzKFxuICAgICAgICBlcnJvcnMsXG4gICAgICAgIHZhbGlkYXRlQXJyYXlFbGVtZW50cyhGaWxlUGlja2VyVmFsaWRhdG9ycy5maWxlTm9uRW1wdHkodGhpcy5maWxlc1NlcnZpY2UpKShjb250cm9sKVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmRpc2FibGVWYWxpZGF0b3JzLmZpbGVOYW1lTWF4TGVuZ3RoKSB7XG4gICAgICBlcnJvcnMgPSBhcHBlbmRFcnJvcnMoXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgdmFsaWRhdGVBcnJheUVsZW1lbnRzKEZpbGVQaWNrZXJWYWxpZGF0b3JzLmZpbGVOYW1lTWF4TGVuZ3RoKHRoaXMuZmlsZXNTZXJ2aWNlKSkoY29udHJvbClcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLmFjY2VwdCkge1xuICAgICAgZXJyb3JzID0gYXBwZW5kRXJyb3JzKFxuICAgICAgICBlcnJvcnMsXG4gICAgICAgIHZhbGlkYXRlQXJyYXlFbGVtZW50cyhcbiAgICAgICAgICBGaWxlUGlja2VyVmFsaWRhdG9ycy5oYXZlVmFsaWRFeHRlbnNpb25zKHRoaXMuZmlsZXNTZXJ2aWNlLCB0aGlzLmFjY2VwdClcbiAgICAgICAgKShjb250cm9sKVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubWF4QWxsb3dlZEZpbGVzKSB7XG4gICAgICBlcnJvcnMgPSBhcHBlbmRFcnJvcnMoXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgRmlsZVBpY2tlclZhbGlkYXRvcnMuZmlsZUNvdW50TWF4KHRoaXMubWF4QWxsb3dlZEZpbGVzKShjb250cm9sKVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubWluUmVxdWlyZWRGaWxlcykge1xuICAgICAgZXJyb3JzID0gYXBwZW5kRXJyb3JzKFxuICAgICAgICBlcnJvcnMsXG4gICAgICAgIEZpbGVQaWNrZXJWYWxpZGF0b3JzLmZpbGVDb3VudE1pbih0aGlzLm1pblJlcXVpcmVkRmlsZXMpKGNvbnRyb2wpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aCA/IGVycm9ycyA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIG9uQ2hhbmdlOiAoZmlsZXM6IEZpbGVbXSkgPT4gdm9pZCA9ICgpID0+IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG4gIHByaXZhdGUgb25WYWxpZGF0b3JDaGFuZ2U6ICgpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZEVycm9ycyhcbiAgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzLFxuICBuZXdFcnJvcnM6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsXG4pOiBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgcmV0dXJuIG5ld0Vycm9ycyA/IHsgLi4uZXJyb3JzLCAuLi5uZXdFcnJvcnMgfSA6IGVycm9ycztcbn1cbiIsIjxjOHktZm9ybS1ncm91cCBjbGFzcz1cIm0tMFwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJmaWxlLXBpY2tlci1kcm9wLXpvbmVcIlxuICAgIFtjbGFzcy5kcmFnZ2luZ109XCJpc0Ryb3BBcmVhRW5sYXJnZWQkIHwgYXN5bmNcIlxuICAgIFtjbGFzcy51bnN1cHBvcnRlZC1mb3JtYXRdPVwiaXNEcmFnZ2VkRmlsZVVuc3VwcG9ydGVkJCB8IGFzeW5jXCJcbiAgICB0YWJpbmRleD1cIjBcIlxuICA+XG4gICAgPGRpdlxuICAgICAgI2ZpbGVQbGFjZWhvbGRlclxuICAgICAgY2xhc3M9XCJmaWxlLXBsYWNlaG9sZGVyIHBvaW50ZXJcIlxuICAgICAgW2NsYXNzLmRyYWctb3Zlcl09XCJpc0RyYWdnaW5nT3ZlckZpbGVQbGFjZWhvbGRlciQgfCBhc3luY1wiXG4gICAgICAoZHJvcCk9XCJvbkRyb3AoJGV2ZW50KVwiXG4gICAgICAoY2xpY2spPVwiIXVwbG9hZEluUHJvZ3Jlc3MgJiYgcGlja2VyLmNsaWNrKClcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJpc0RyYWdnZWRGaWxlVW5zdXBwb3J0ZWQkIHwgYXN5bmM7IGVsc2UgZGVmYXVsdEhpbnRcIlxuICAgICAgICBjbGFzcz1cImhpbnQtcGxhY2Vob2xkZXIgcG9pbnRlclwiXG4gICAgICA+XG4gICAgICAgIDxpIGM4eUljb249XCJ3YXJuaW5nXCIgY2xhc3M9XCJ3YXJuaW5nXCI+PC9pPlxuICAgICAgICA8cD5cbiAgICAgICAgICA8YiB0cmFuc2xhdGU+VW5zdXBwb3J0ZWQgZmlsZSBmb3JtYXQuPC9iPlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SGludD5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiF1cGxvYWRJblByb2dyZXNzXCIgY2xhc3M9XCJoaW50LXBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgPGkgYzh5SWNvbj1cInVwbG9hZFwiPjwvaT5cbiAgICAgICAgICA8cD5cbiAgICAgICAgICAgIDxiPnt7ICdEcm9wIGZpbGVzIGhlcmUgb3IgY2xpY2sgdG8gYnJvd3NlJyB8IHRyYW5zbGF0ZSB9fTwvYj5cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPHAgKm5nSWY9XCJhY2NlcHRcIiBjbGFzcz1cIm0tdC04IHRleHQtMTIgdGV4dC1tdXRlZFwiPlxuICAgICAgICAgICAge3sgJ1N1cHBvcnRlZCBmaWxlIGZvcm1hdHM6JyB8IHRyYW5zbGF0ZSB9fSB7eyBhY2NlcHQgfX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjOHktbWVzc2FnZXMgaGFzLWVycm9yIHAtYi04IHRleHQtbGVmdFwiXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBjb250cm9sSW5zdGFuY2UudG91Y2hlZCAmJiBjb250cm9sSW5zdGFuY2UuZXJyb3JzICYmIGNvbnRyb2xJbnN0YW5jZS5lcnJvcnNcbiAgICAgICAgICAgICAgICB8IGZpbHRlck5vbkFycmF5VmFsaWRhdGlvbkVycm9yc1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBlcnJvciBvZiBjb250cm9sSW5zdGFuY2UuZXJyb3JzIHwgZmlsdGVyTm9uQXJyYXlWYWxpZGF0aW9uRXJyb3JzIHwga2V5dmFsdWVcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZm9ybS1jb250cm9sLWZlZWRiYWNrLW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICB7eyBlcnJvci5rZXkgfCBodW1hbml6ZVZhbGlkYXRpb25NZXNzYWdlIHwgdHJhbnNsYXRlOiBlcnJvci52YWx1ZSB9fVxuICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwidXBsb2FkSW5Qcm9ncmVzc1wiIGNsYXNzPVwiZC1mbGV4IGQtY29sIHAtNCBmbGV4LWNlbnRlclwiPlxuICAgICAgICAgIDxjOHktbG9hZGluZz48L2M4eS1sb2FkaW5nPlxuICAgICAgICAgIDxwIGNsYXNzPVwibS10LWF1dG8gbS1iLWF1dG8gbS1yLTggdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIHt7IGxvYWRpbmdNZXNzYWdlIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZmlsZS1jb250YWluZXJcIj5cbiAgICA8dWwgY2xhc3M9XCJsaXN0LWdyb3VwXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWxlIG9mIGRyb3BwZWRGaWxlczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gcC00IGEtaS1jZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cImZpbGUgfCBmaWxlSWNvblwiIGNsYXNzPVwiaWNvbi0yMCBtLXItOFwiPjwvaT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLXItMTYgdGV4dC10cnVuY2F0ZVwiIFt0aXRsZV09XCJmaWxlLm5hbWVcIj5cbiAgICAgICAgICAgICAge3sgZmlsZS5uYW1lIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLXItMTYgdGV4dC1ub3dyYXBcIj4oe3sgZmlsZS5zaXplIHwgYnl0ZXMgfX0pPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1sLWF1dG9cIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIXVwbG9hZEluUHJvZ3Jlc3NcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVBdChpKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRvdCBidG4tZG90LS1kYW5nZXJcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1JlbW92ZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1JlbW92ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cIm1pbnVzLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZG90IGJ0blwiICpuZ0lmPVwidXBsb2FkSW5Qcm9ncmVzc1wiIGRpc2FibGVkPVwiZGlzYWJsZWRcIj5cbiAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwiY2lyY2xlZC1ub3RjaFwiIGNsYXNzPVwiaWNvbi1zcGluXCI+PC9pPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICBsZXQgZXJyb3Igb2YgY29udHJvbEluc3RhbmNlLmVycm9ycyB8IGV4dHJhY3RBcnJheVZhbGlkYXRpb25FcnJvcnM6IGkgfCBrZXl2YWx1ZVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LW1lc3NhZ2VzIGhhcy1lcnJvciBwLWItMjRcIj5cbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZm9ybS1jb250cm9sLWZlZWRiYWNrLW1lc3NhZ2UgbS0wXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAtNnB4ICFpbXBvcnRhbnRcIj5cbiAgICAgICAgICAgICAgICB7eyBlcnJvci5rZXkgfCBodW1hbml6ZVZhbGlkYXRpb25NZXNzYWdlIHwgdHJhbnNsYXRlOiBlcnJvci52YWx1ZSB9fVxuICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbiAgPGlucHV0XG4gICAgI3BpY2tlclxuICAgIChjaGFuZ2UpPVwiZmlsZXNTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICBbYWNjZXB0XT1cImFjY2VwdGVkRXh0c1wiXG4gICAgW211bHRpcGxlXT1cIm1heEFsbG93ZWRGaWxlcyA+IDFcIlxuICAgIHR5cGU9XCJmaWxlXCJcbiAgICBjbGFzcz1cImhpZGRlblwiXG4gICAgaWQ9XCJmaWxlXCJcbiAgLz5cbjwvYzh5LWZvcm0tZ3JvdXA+XG4iXX0=
|
|
248
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1waWNrZXItbmV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvZmlsZS1waWNrZXItbmV3L2ZpbGUtcGlja2VyLW5ldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2ZpbGUtcGlja2VyLW5ldy9maWxlLXBpY2tlci1uZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFFVixZQUFZLEVBRVosVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUNILE1BQU0sRUFDTixTQUFTLEVBQ1QsR0FBRyxFQUNILGNBQWMsRUFDZixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sS0FBSyxNQUFNLE1BQU0sU0FBUyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxFQUdMLFdBQVcsRUFDWCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLFNBQVMsRUFHVixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQVFsQzs7R0FFRztBQWtCSCxNQUFNLE9BQU8sc0JBQXNCO0lBbUVqQyxZQUFvQixZQUEwQixFQUE0QixRQUFrQjtRQUF4RSxpQkFB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IEVsZW1lbnRSZWYsXG4gIEFmdGVyVmlld0luaXQsXG4gIEhvc3RMaXN0ZW5lcixcbiAgT25Jbml0LFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgZmlsdGVyLFxuICBtYXAsXG4gIHNhbXBsZSxcbiAgc3dpdGNoTWFwLFxuICB0YXAsXG4gIHdpdGhMYXRlc3RGcm9tXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCAqIGFzIG1pbWVEQiBmcm9tICdtaW1lLWRiJztcbmltcG9ydCB7IEZpbGVzU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtQ29udHJvbCxcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIE5nQ29udHJvbCxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpbGVQaWNrZXJWYWxpZGF0b3JzIH0gZnJvbSAnLi9maWxlLXBpY2tlci12YWxpZGF0b3JzJztcbmltcG9ydCB7IHZhbGlkYXRlQXJyYXlFbGVtZW50cyB9IGZyb20gJy4uL2Zvcm1zJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICcuLi9pMThuJztcblxuaW50ZXJmYWNlIElBdmFpbGFibGVWYWxpZGF0b3JzIHtcbiAgZmlsZU1heFNpemU/OiBib29sZWFuO1xuICBmaWxlTm9uRW1wdHk/OiBib29sZWFuO1xuICBmaWxlTmFtZU1heExlbmd0aD86IGJvb2xlYW47XG59XG5cbi8qKlxuIEZpbGUgdXBsb2FkZXJcbiAqL1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZmlsZS1waWNrZXItbmV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtcGlja2VyLW5ldy5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRmlsZVBpY2tlck5ld0NvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRmlsZVBpY2tlck5ld0NvbXBvbmVudClcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRmlsZVBpY2tlck5ld0NvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvclxue1xuICBAVmlld0NoaWxkKCdmaWxlUGxhY2Vob2xkZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBmaWxlUGxhY2Vob2xkZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIC8qKiBTcGVjaWZpZXMgYSBmaWx0ZXIgZm9yIHdoYXQgZmlsZSB0eXBlcyB0aGUgdXNlciBjYW4gcGljayBmcm9tIHRoZSBmaWxlIGlucHV0IGRpYWxvZyBib3guXG4gICAqIEJ5IGRlZmF1bHQgYWxsIHR5cGVzIGFyZSBhY2NlcHRlZC5cbiAgICogIyMgRXhhbXBsZTpcbiAgICpcbiAgICogU3BlY2lmeSBmaWxlIHR5cGVzIGJ5IGV4dGVuc2lvbnM6XG4gICAqIGBgYGh0bWxcbiAgICogIC4uLlxuICAgKiAgW2FjY2VwdF09XCInLnppcCwuN3onXCJcbiAgICogIC4uLlxuICAgKiBgYGBcbiAgICpcbiAgICogU3BlY2lmeSBmaWxlIHR5cGVzIGJ5IGV4dGVuc2lvbnMgYW5kIGdlbmVyaWMgdHlwZXMgW0dFTkVSSUNfRklMRV9UWVBFXXtAbGluayBHRU5FUklDX0ZJTEVfVFlQRX06XG4gICAqIGBgYGh0bWxcbiAgICogIC4uLlxuICAgKiAgW2FjY2VwdF09XCInLnBkZixhcmNoaXZlJ1wiXG4gICAqICAuLi5cbiAgICogYGBgXG4gICAqXG4gICAqIFNwZWNpZnkgZmlsZSB0eXBlcyBieSBnZW5lcmljIHR5cGVzIFtHRU5FUklDX0ZJTEVfVFlQRV17QGxpbmsgR0VORVJJQ19GSUxFX1RZUEV9OlxuICAgKiAgYGBgaHRtbFxuICAgKiAgLi4uXG4gICAqICBbYWNjZXB0XT1cIidhcmNoaXZlLHZpZGVvJ1wiXG4gICAqICAuLi5cbiAgICpcbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoKVxuICBhY2NlcHQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIG1heEFsbG93ZWRGaWxlcz86IG51bWJlciA9IEluZmluaXR5O1xuICBASW5wdXQoKVxuICBtaW5SZXF1aXJlZEZpbGVzPzogbnVtYmVyID0gMTtcbiAgQElucHV0KClcbiAgZGlzYWJsZVZhbGlkYXRvcnM6IElBdmFpbGFibGVWYWxpZGF0b3JzID0ge307XG4gIEBJbnB1dCgpXG4gIHVwbG9hZEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgQE91dHB1dCgpXG4gIGRyb3BwZWQ6IEV2ZW50RW1pdHRlcjxGaWxlW10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGRyb3BwZWRGaWxlczogRmlsZVtdID0gW107XG5cbiAgaXNEcmFnZ2luZ0ZpbGVzJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgaXNEcmFnZ2luZ092ZXJGaWxlUGxhY2Vob2xkZXIkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpc0V4dGVuc2lvbkFsbG93ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpc0Ryb3BBcmVhRW5sYXJnZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpc0RyYWdnZWRGaWxlVW5zdXBwb3J0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBhY2NlcHRlZEV4dHM6IHN0cmluZ1tdO1xuICB2YWxpZDogYm9vbGVhbjtcbiAgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzO1xuICBjb250cm9sSW5zdGFuY2U6IEFic3RyYWN0Q29udHJvbDtcbiAgLy8gVE9ETyBoYW5kbGUgY29udHJvbCBkaXNhYmxlZCBzdGF0ZVxuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgZGlzYWJsZWRWYWxpZGF0b3JzOiBJQXZhaWxhYmxlVmFsaWRhdG9ycyA9IHtcbiAgICBmaWxlTWF4U2l6ZTogZmFsc2UsXG4gICAgZmlsZU5vbkVtcHR5OiBmYWxzZSxcbiAgICBmaWxlTmFtZU1heExlbmd0aDogZmFsc2VcbiAgfTtcbiAgbG9hZGluZ01lc3NhZ2UgPSBnZXR0ZXh0KCdVcGxvYWQgaW4gcHJvZ3Jlc3MnKTtcbiAgcHJpdmF0ZSBpc0V4dGVuc2lvbkFsbG93ZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgZmlsZVNpemVMaW1pdDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmlsZXNTZXJ2aWNlOiBGaWxlc1NlcnZpY2UsIEBJbmplY3QoSW5qZWN0b3IpIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IG5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0PE5nQ29udHJvbCB8IGZhbHNlPihOZ0NvbnRyb2wsIGZhbHNlKTtcblxuICAgIGlmIChuZ0NvbnRyb2wgJiYgbmdDb250cm9sLmNvbnRyb2wpIHtcbiAgICAgIHRoaXMuY29udHJvbEluc3RhbmNlID0gbmdDb250cm9sLmNvbnRyb2w7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8qKlxuICAgICAgICogSW4gY2FzZSBpZiBjb21wb25lbnQgaXMgdXNlZCB3aXRob3V0IHV0aWxpemluZyBDb250cm9sVmFsdWVBY2Nlc3NvciwgaW50ZXJuYWwgY29udHJvbFxuICAgICAgICogaW5zdGFuY2UgaXMgY3JlYXRlZCwgc28gaXQgY2FuIHN0aWxsIGJlbmVmaXQgZnJvbSBidWlsdCBpbiB2YWxpZGF0b3JzLlxuICAgICAgICogKGRyb3BwZWQpIEBPdXRwdXQgZXZlbnQgY2FuIGJlIHVzZWQgdG8gZ2V0IGxpc3Qgb2YgZmlsZXMuXG4gICAgICAgKi9cbiAgICAgIHRoaXMuY29udHJvbEluc3RhbmNlID0gbmV3IEZvcm1Db250cm9sKFtdLCB0aGlzLnZhbGlkYXRlLmJpbmQodGhpcykpO1xuICAgICAgdGhpcy5vbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5jb250cm9sSW5zdGFuY2Uuc2V0VmFsdWUodGhpcy5kcm9wcGVkRmlsZXMpO1xuICAgICAgfTtcbiAgICAgIHRoaXMub25WYWxpZGF0b3JDaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuY29udHJvbEluc3RhbmNlLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgIH07XG4gICAgICB0aGlzLm9uVG91Y2hlZCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5jb250cm9sSW5zdGFuY2UubWFya0FzVG91Y2hlZCgpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLmFjY2VwdGVkRXh0cyA9IHRoaXMuZmlsZXNTZXJ2aWNlLmV4dHJhY3RGaWxlRXh0ZW5zaW9ucyh0aGlzLmFjY2VwdCkubWFwKHQgPT4gYC4ke3R9YCk7XG5cbiAgICB0aGlzLmRpc2FibGVkVmFsaWRhdG9ycyA9IHsgLi4udGhpcy5kaXNhYmxlZFZhbGlkYXRvcnMsIC4uLnRoaXMuZGlzYWJsZVZhbGlkYXRvcnMgfTtcblxuICAgIHRoaXMuZmlsZXNTZXJ2aWNlLmxvYWRCeXRlc1NpemVMaW1pdCgpLnRoZW4oc2l6ZUxpbWl0ID0+IHtcbiAgICAgIHRoaXMuZmlsZVNpemVMaW1pdCA9IHNpemVMaW1pdDtcbiAgICAgIHRoaXMub25WYWxpZGF0b3JDaGFuZ2UoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAvKipcbiAgICAgKiBFbWl0cyBEcmFnRXZlbnQgd2hlbiB1c2VyIGRyYWcgZmlsZSBpbnNpZGUgb3Igb3V0c2lkZSB2aWV3cG9ydC4gT25seSB3b3JrcyB3aGVuIHR5cGUgb2YgZHJhZ2dlZCBlbGVtZW50cyBpcyAnRmlsZXMnLlxuICAgICAqL1xuICAgIGNvbnN0IGRyYWdnaW5nRmlsZXNHbG9iYWxseSQgPSBtZXJnZShcbiAgICAgIGZyb21FdmVudChkb2N1bWVudCwgJ2RyYWdlbnRlcicpLFxuICAgICAgZnJvbUV2ZW50KGRvY3VtZW50LCAnZHJhZ2xlYXZlJykucGlwZShcbiAgICAgICAgLy8gVE9ETyByZXZpZXcgd2h5IHRoaXMgc3BlY2lmaWMgZmlsdGVyIGlzIG5lZWRlZFxuICAgICAgICBmaWx0ZXIoKGU6IERyYWdFdmVudCkgPT4gZS5wYWdlWCA9PT0gMCAmJiBlLnBhZ2VZID09PSAwKVxuICAgICAgKVxuICAgICkucGlwZShcbiAgICAgIGZpbHRlcigoZXY6IERyYWdFdmVudCkgPT4gZXYuZGF0YVRyYW5zZmVyPy50eXBlcy50b1N0cmluZygpID09PSAnRmlsZXMnKSxcbiAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy51cGxvYWRJblByb2dyZXNzKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyBib29sZWFuIHZhbHVlIHdoZW4gZmlsZSBpcyBkcmFnZ2VkIGluc2lkZSBvciBvdXRzaWRlIG9mIHZpZXdwb3J0LCBvciBmaWxlIGlzIG5vdCBkcmFnZ2VkIGFueW1vcmUuXG4gICAgICovXG4gICAgdGhpcy5pc0RyYWdnaW5nRmlsZXMkID0gbWVyZ2UoXG4gICAgICBkcmFnZ2luZ0ZpbGVzR2xvYmFsbHkkLnBpcGUobWFwKGV2ID0+IGV2LnR5cGUgPT09ICdkcmFnZW50ZXInKSksXG4gICAgICBmcm9tRXZlbnQoZG9jdW1lbnQsICdtb3VzZWVudGVyJykucGlwZShtYXAoKCkgPT4gZmFsc2UpKSxcbiAgICAgIGZyb21FdmVudChkb2N1bWVudCwgJ2Ryb3AnKS5waXBlKG1hcCgoKSA9PiBmYWxzZSkpXG4gICAgKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgYm9vbGVhbiB2YWx1ZSBhZnRlciBjaGVja2luZyBpZiBkcmFnZ2VkIGZpbGVzIG1hdGNoIGNvbmZpZ3VyZWQgZXh0ZW5zaW9ucyBsaXN0LFxuICAgICAqIFdoZW4gZHJhZ2dpbmcgb2YgZmlsZSBzdGFydHMsIGdldCBtaW1ldHlwZXMgb2YgZWFjaCBmaWxlLCBjb252ZXJ0IHRoZW0gdG8gcG9zc2libGUgZXh0ZW5zaW9ucyBsaXN0XG4gICAgICogdGhhdCBtYXkgYmUgYXNzb2NpYXRlZCB3aXRoIGdpdmVuIG1pbWV0eXBlLCBhbmQgdGhlbiBjaGVjayBpZiBhbnkgb2YgdGhlc2UgZXh0ZW5zaW9ucyBtYXRjaCBjb25maWd1cmVkXG4gICAgICogZXh0ZW5zaW9ucyBhY2NlcHQgbGlzdC5cbiAgICAgKi9cbiAgICB0aGlzLmlzRXh0ZW5zaW9uQWxsb3dlZCQgPSBkcmFnZ2luZ0ZpbGVzR2xvYmFsbHkkLnBpcGUoXG4gICAgICBzYW1wbGUodGhpcy5pc0RyYWdnaW5nRmlsZXMkLnBpcGUoZmlsdGVyKGVubGFyZ2VkID0+IGVubGFyZ2VkKSkpLFxuICAgICAgc3dpdGNoTWFwKGV2ID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmFjY2VwdCkge1xuICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvZihldikucGlwZShcbiAgICAgICAgICBtYXAoZXYgPT4gWy4uLihldi5kYXRhVHJhbnNmZXIuaXRlbXMgYXMgdW5rbm93biBhcyBEYXRhVHJhbnNmZXJJdGVtW10pXSksXG4gICAgICAgICAgbWFwKGZpbGVzID0+XG4gICAgICAgICAgICBmaWxlcy5tYXAoZmlsZSA9PiAobWltZURCW2ZpbGUudHlwZV0uZXh0ZW5zaW9ucyBhcyBzdHJpbmdbXSB8IHVuZGVmaW5lZCkgfHwgWyd1bmtub3duJ10pXG4gICAgICAgICAgKSxcbiAgICAgICAgICBtYXAoZXh0ZW5zaW9uc0ZvckZpbGVzID0+XG4gICAgICAgICAgICBleHRlbnNpb25zRm9yRmlsZXMuZXZlcnkoZXh0ZW5zaW9uc0ZvckZpbGUgPT5cbiAgICAgICAgICAgICAgZXh0ZW5zaW9uc0ZvckZpbGUuc29tZShleHQgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVzU2VydmljZS5leHRyYWN0RmlsZUV4dGVuc2lvbnModGhpcy5hY2NlcHQpLmluY2x1ZGVzKGV4dClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICAgdGFwKGFsbG93ZWQgPT4ge1xuICAgICAgICB0aGlzLmlzRXh0ZW5zaW9uQWxsb3dlZCA9IGFsbG93ZWQ7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBJZiBGaWxlIGlzIGJlaW5nIGRyYWdnZWQgYW5kIGV4dGVuc2lvbnMgbWVldHMgcmVxdWlyZW1lbnRzLCB0aGVuIGRyb3AtYXJlYSBjYW4gYmUgZW5sYXJnZWQuXG4gICAgICovXG4gICAgdGhpcy5pc0Ryb3BBcmVhRW5sYXJnZWQkID0gdGhpcy5pc0RyYWdnaW5nRmlsZXMkLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmlzRXh0ZW5zaW9uQWxsb3dlZCQpLFxuICAgICAgbWFwKChbZmlsZURyYWdnZWQsIGV4dEFsbG93ZWRdKSA9PiBmaWxlRHJhZ2dlZCAmJiBleHRBbGxvd2VkKVxuICAgICk7XG5cbiAgICB0aGlzLmlzRHJhZ2dlZEZpbGVVbnN1cHBvcnRlZCQgPSB0aGlzLmlzRHJhZ2dpbmdGaWxlcyQucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuaXNFeHRlbnNpb25BbGxvd2VkJCksXG4gICAgICBtYXAoKFtmaWxlRHJhZ2dlZCwgZXh0QWxsb3dlZF0pID0+IGZpbGVEcmFnZ2VkICYmICFleHRBbGxvd2VkKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyB0cnVlIHdoZW4gZmlsZSBpcyBob3ZlcmluZyBhYm92ZSBkcm9wLWFyZWEuIE9ubHkgd29ya3Mgd2hlbiBpc0Ryb3BBcmVhRW5sYXJnZWQkIGFsc28gZW1pdHMgdHJ1ZS5cbiAgICAgKiBUaGlzIGlzIHdvcmthcm91bmQgZm9yIENTUyA6aG92ZXIgcHNldWRvLWNsYXNzIG5vdCB0cmlnZ2VyaW5nIHdoZW4gZHJhZ2dpbmcgZmlsZS5cbiAgICAgKi9cbiAgICB0aGlzLmlzRHJhZ2dpbmdPdmVyRmlsZVBsYWNlaG9sZGVyJCA9IG1lcmdlKFxuICAgICAgZnJvbUV2ZW50KHRoaXMuZmlsZVBsYWNlaG9sZGVyLm5hdGl2ZUVsZW1lbnQsICdkcmFnZW50ZXInKSxcbiAgICAgIGZyb21FdmVudCh0aGlzLmZpbGVQbGFjZWhvbGRlci5uYXRpdmVFbGVtZW50LCAnZHJhZ2xlYXZlJyksXG4gICAgICBmcm9tRXZlbnQodGhpcy5maWxlUGxhY2Vob2xkZXIubmF0aXZlRWxlbWVudCwgJ2Ryb3AnKVxuICAgICkucGlwZShcbiAgICAgIGZpbHRlcigoZXY6IERyYWdFdmVudCkgPT4gZXYuZGF0YVRyYW5zZmVyPy50eXBlcy50b1N0cmluZygpID09PSAnRmlsZXMnKSxcbiAgICAgIG1hcChldiA9PiBldi50eXBlID09PSAnZHJhZ2VudGVyJyksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmlzRHJvcEFyZWFFbmxhcmdlZCQpLFxuICAgICAgbWFwKChbZHJhZ2dpbmdPdmVyLCBkcm9wQXJlYUVubGFyZ2VkXSkgPT4gZHJhZ2dpbmdPdmVyICYmIGRyb3BBcmVhRW5sYXJnZWQpXG4gICAgKTtcbiAgfVxuXG4gIGFmdGVyVmFsdWVDaGFuZ2VkKCkge1xuICAgIHRoaXMub25DaGFuZ2UoWy4uLnRoaXMuZHJvcHBlZEZpbGVzXSk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB0aGlzLmRyb3BwZWQuZW1pdChbLi4udGhpcy5kcm9wcGVkRmlsZXNdKTtcbiAgICB0aGlzLnZhbGlkID0gdGhpcy5jb250cm9sSW5zdGFuY2UudmFsaWQ7XG4gICAgdGhpcy5lcnJvcnMgPSB0aGlzLmNvbnRyb2xJbnN0YW5jZS5lcnJvcnM7XG4gIH1cblxuICBvbkRyb3AoZTogRHJhZ0V2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmlzRXh0ZW5zaW9uQWxsb3dlZCB8fCB0aGlzLnVwbG9hZEluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZS5kYXRhVHJhbnNmZXIudHlwZXMudG9TdHJpbmcoKSAhPT0gJ0ZpbGVzJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmaWxlcyA9IGUuZGF0YVRyYW5zZmVyLmZpbGVzO1xuICAgIGlmICghZmlsZXM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuZHJvcHBlZEZpbGVzLnB1c2goZmlsZXMuaXRlbShpKSk7XG4gICAgfVxuICAgIHRoaXMuYWZ0ZXJWYWx1ZUNoYW5nZWQoKTtcbiAgfVxuXG4gIGZpbGVzU2VsZWN0ZWQoZXY6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXRFbGVtZW50ID0gZXYudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3QgZmlsZXM6IEZpbGVbXSA9IEFycmF5LmZyb20oaW5wdXRFbGVtZW50LmZpbGVzKTtcbiAgICB0aGlzLmRyb3BwZWRGaWxlcy5wdXNoKC4uLmZpbGVzKTtcbiAgICBpbnB1dEVsZW1lbnQudmFsdWUgPSBudWxsO1xuICAgIHRoaXMuYWZ0ZXJWYWx1ZUNoYW5nZWQoKTtcbiAgfVxuXG4gIGRlbGV0ZUF0KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmRyb3BwZWRGaWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuYWZ0ZXJWYWx1ZUNoYW5nZWQoKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IG5ldmVyKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IG5ldmVyKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25WYWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHdyaXRlVmFsdWUoZmlsZXM6IEZpbGVbXSB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoIWZpbGVzKSB7XG4gICAgICBmaWxlcyA9IFtdO1xuICAgIH1cbiAgICB0aGlzLmRyb3BwZWRGaWxlcyA9IFsuLi5maWxlc107XG4gICAgdGhpcy5vblZhbGlkYXRvckNoYW5nZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmRyYWdvdmVyJywgWyckZXZlbnQnXSlcbiAgb25EcmFnT3ZlcihlKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmRyb3AnLCBbJyRldmVudCddKVxuICBvbldpbmRvd0Ryb3AoZSkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBsZXQgZXJyb3JzID0ge307XG5cbiAgICBpZiAoIXRoaXMuZGlzYWJsZVZhbGlkYXRvcnMuZmlsZU1heFNpemUpIHtcbiAgICAgIGVycm9ycyA9IGFwcGVuZEVycm9ycyhcbiAgICAgICAgZXJyb3JzLFxuICAgICAgICB2YWxpZGF0ZUFycmF5RWxlbWVudHMoXG4gICAgICAgICAgRmlsZVBpY2tlclZhbGlkYXRvcnMuZmlsZU1heFNpemUodGhpcy5maWxlU2l6ZUxpbWl0LCB0aGlzLmZpbGVzU2VydmljZSlcbiAgICAgICAgKShjb250cm9sKVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmRpc2FibGVWYWxpZGF0b3JzLmZpbGVOb25FbXB0eSkge1xuICAgICAgZXJyb3JzID0gYXBwZW5kRXJyb3JzKFxuICAgICAgICBlcnJvcnMsXG4gICAgICAgIHZhbGlkYXRlQXJyYXlFbGVtZW50cyhGaWxlUGlja2VyVmFsaWRhdG9ycy5maWxlTm9uRW1wdHkodGhpcy5maWxlc1NlcnZpY2UpKShjb250cm9sKVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmRpc2FibGVWYWxpZGF0b3JzLmZpbGVOYW1lTWF4TGVuZ3RoKSB7XG4gICAgICBlcnJvcnMgPSBhcHBlbmRFcnJvcnMoXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgdmFsaWRhdGVBcnJheUVsZW1lbnRzKEZpbGVQaWNrZXJWYWxpZGF0b3JzLmZpbGVOYW1lTWF4TGVuZ3RoKHRoaXMuZmlsZXNTZXJ2aWNlKSkoY29udHJvbClcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLmFjY2VwdCkge1xuICAgICAgZXJyb3JzID0gYXBwZW5kRXJyb3JzKFxuICAgICAgICBlcnJvcnMsXG4gICAgICAgIHZhbGlkYXRlQXJyYXlFbGVtZW50cyhcbiAgICAgICAgICBGaWxlUGlja2VyVmFsaWRhdG9ycy5oYXZlVmFsaWRFeHRlbnNpb25zKHRoaXMuZmlsZXNTZXJ2aWNlLCB0aGlzLmFjY2VwdClcbiAgICAgICAgKShjb250cm9sKVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubWF4QWxsb3dlZEZpbGVzKSB7XG4gICAgICBlcnJvcnMgPSBhcHBlbmRFcnJvcnMoXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgRmlsZVBpY2tlclZhbGlkYXRvcnMuZmlsZUNvdW50TWF4KHRoaXMubWF4QWxsb3dlZEZpbGVzKShjb250cm9sKVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubWluUmVxdWlyZWRGaWxlcykge1xuICAgICAgZXJyb3JzID0gYXBwZW5kRXJyb3JzKFxuICAgICAgICBlcnJvcnMsXG4gICAgICAgIEZpbGVQaWNrZXJWYWxpZGF0b3JzLmZpbGVDb3VudE1pbih0aGlzLm1pblJlcXVpcmVkRmlsZXMpKGNvbnRyb2wpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aCA/IGVycm9ycyA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIG9uQ2hhbmdlOiAoZmlsZXM6IEZpbGVbXSkgPT4gdm9pZCA9ICgpID0+IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG4gIHByaXZhdGUgb25WYWxpZGF0b3JDaGFuZ2U6ICgpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZEVycm9ycyhcbiAgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzLFxuICBuZXdFcnJvcnM6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsXG4pOiBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgcmV0dXJuIG5ld0Vycm9ycyA/IHsgLi4uZXJyb3JzLCAuLi5uZXdFcnJvcnMgfSA6IGVycm9ycztcbn1cbiIsIjxjOHktZm9ybS1ncm91cCBjbGFzcz1cIm0tMFwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJmaWxlLXBpY2tlci1kcm9wLXpvbmVcIlxuICAgIFtjbGFzcy5kcmFnZ2luZ109XCJpc0Ryb3BBcmVhRW5sYXJnZWQkIHwgYXN5bmNcIlxuICAgIFtjbGFzcy51bnN1cHBvcnRlZC1mb3JtYXRdPVwiaXNEcmFnZ2VkRmlsZVVuc3VwcG9ydGVkJCB8IGFzeW5jXCJcbiAgICB0YWJpbmRleD1cIjBcIlxuICA+XG4gICAgPGRpdlxuICAgICAgI2ZpbGVQbGFjZWhvbGRlclxuICAgICAgY2xhc3M9XCJmaWxlLXBsYWNlaG9sZGVyIHBvaW50ZXJcIlxuICAgICAgW2NsYXNzLmRyYWctb3Zlcl09XCJpc0RyYWdnaW5nT3ZlckZpbGVQbGFjZWhvbGRlciQgfCBhc3luY1wiXG4gICAgICAoZHJvcCk9XCJvbkRyb3AoJGV2ZW50KVwiXG4gICAgICAoY2xpY2spPVwiIXVwbG9hZEluUHJvZ3Jlc3MgJiYgcGlja2VyLmNsaWNrKClcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJpc0RyYWdnZWRGaWxlVW5zdXBwb3J0ZWQkIHwgYXN5bmM7IGVsc2UgZGVmYXVsdEhpbnRcIlxuICAgICAgICBjbGFzcz1cImhpbnQtcGxhY2Vob2xkZXIgcG9pbnRlclwiXG4gICAgICA+XG4gICAgICAgIDxpIGM4eUljb249XCJ3YXJuaW5nXCIgY2xhc3M9XCJ3YXJuaW5nXCI+PC9pPlxuICAgICAgICA8cD5cbiAgICAgICAgICA8YiB0cmFuc2xhdGU+VW5zdXBwb3J0ZWQgZmlsZSBmb3JtYXQuPC9iPlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SGludD5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiF1cGxvYWRJblByb2dyZXNzXCIgY2xhc3M9XCJoaW50LXBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgPGkgYzh5SWNvbj1cInVwbG9hZFwiPjwvaT5cbiAgICAgICAgICA8cD5cbiAgICAgICAgICAgIDxiPnt7ICdEcm9wIGZpbGVzIGhlcmUgb3IgY2xpY2sgdG8gYnJvd3NlJyB8IHRyYW5zbGF0ZSB9fTwvYj5cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPHAgKm5nSWY9XCJhY2NlcHRcIiBjbGFzcz1cIm0tdC04IHRleHQtMTIgdGV4dC1tdXRlZFwiPlxuICAgICAgICAgICAge3sgJ1N1cHBvcnRlZCBmaWxlIHR5cGVzOicgfCB0cmFuc2xhdGUgfX0ge3sgYWNjZXB0IH19XG4gICAgICAgICAgPC9wPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiYzh5LW1lc3NhZ2VzIGhhcy1lcnJvciBwLWItOCB0ZXh0LWxlZnRcIlxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgY29udHJvbEluc3RhbmNlLnRvdWNoZWQgJiYgY29udHJvbEluc3RhbmNlLmVycm9ycyAmJiBjb250cm9sSW5zdGFuY2UuZXJyb3JzXG4gICAgICAgICAgICAgICAgfCBmaWx0ZXJOb25BcnJheVZhbGlkYXRpb25FcnJvcnNcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3Igb2YgY29udHJvbEluc3RhbmNlLmVycm9ycyB8IGZpbHRlck5vbkFycmF5VmFsaWRhdGlvbkVycm9ycyB8IGtleXZhbHVlXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImZvcm0tY29udHJvbC1mZWVkYmFjay1tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAge3sgZXJyb3Iua2V5IHwgaHVtYW5pemVWYWxpZGF0aW9uTWVzc2FnZSB8IHRyYW5zbGF0ZTogZXJyb3IudmFsdWUgfX1cbiAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInVwbG9hZEluUHJvZ3Jlc3NcIiBjbGFzcz1cImQtZmxleCBkLWNvbCBwLTQgZmxleC1jZW50ZXJcIj5cbiAgICAgICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICAgICAgICA8cCBjbGFzcz1cIm0tdC1hdXRvIG0tYi1hdXRvIG0tci04IHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICB7eyBsb2FkaW5nTWVzc2FnZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImZpbGUtY29udGFpbmVyXCI+XG4gICAgPHVsIGNsYXNzPVwibGlzdC1ncm91cFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmlsZSBvZiBkcm9wcGVkRmlsZXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIHAtNCBhLWktY2VudGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyXCI+XG4gICAgICAgICAgICA8aSBbYzh5SWNvbl09XCJmaWxlIHwgZmlsZUljb25cIiBjbGFzcz1cImljb24tMjAgbS1yLThcIj48L2k+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1yLTE2IHRleHQtdHJ1bmNhdGVcIiBbdGl0bGVdPVwiZmlsZS5uYW1lXCI+XG4gICAgICAgICAgICAgIHt7IGZpbGUubmFtZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1yLTE2IHRleHQtbm93cmFwXCI+KHt7IGZpbGUuc2l6ZSB8IGJ5dGVzIH19KTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tbC1hdXRvXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cIiF1cGxvYWRJblByb2dyZXNzXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlQXQoaSlcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kb3QgYnRuLWRvdC0tZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidSZW1vdmUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdSZW1vdmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIGM4eUljb249XCJtaW51cy1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWRvdCBidG5cIiAqbmdJZj1cInVwbG9hZEluUHJvZ3Jlc3NcIiBkaXNhYmxlZD1cImRpc2FibGVkXCI+XG4gICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cImNpcmNsZWQtbm90Y2hcIiBjbGFzcz1cImljb24tc3BpblwiPjwvaT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgbGV0IGVycm9yIG9mIGNvbnRyb2xJbnN0YW5jZS5lcnJvcnMgfCBleHRyYWN0QXJyYXlWYWxpZGF0aW9uRXJyb3JzOiBpIHwga2V5dmFsdWVcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1tZXNzYWdlcyBoYXMtZXJyb3IgcC1iLTI0XCI+XG4gICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImZvcm0tY29udHJvbC1mZWVkYmFjay1tZXNzYWdlIG0tMFwiIHN0eWxlPVwibWFyZ2luLXRvcDogLTZweCAhaW1wb3J0YW50XCI+XG4gICAgICAgICAgICAgICAge3sgZXJyb3Iua2V5IHwgaHVtYW5pemVWYWxpZGF0aW9uTWVzc2FnZSB8IHRyYW5zbGF0ZTogZXJyb3IudmFsdWUgfX1cbiAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2xpPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC91bD5cbiAgPC9kaXY+XG4gIDxpbnB1dFxuICAgICNwaWNrZXJcbiAgICAoY2hhbmdlKT1cImZpbGVzU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgW2FjY2VwdF09XCJhY2NlcHRlZEV4dHNcIlxuICAgIFttdWx0aXBsZV09XCJtYXhBbGxvd2VkRmlsZXMgPiAxXCJcbiAgICB0eXBlPVwiZmlsZVwiXG4gICAgY2xhc3M9XCJoaWRkZW5cIlxuICAgIGlkPVwiZmlsZVwiXG4gIC8+XG48L2M4eS1mb3JtLWdyb3VwPlxuIl19
|
|
@@ -47,16 +47,16 @@ export class FilePickerValidators {
|
|
|
47
47
|
};
|
|
48
48
|
}
|
|
49
49
|
static fileCountMax(fileCountMax) {
|
|
50
|
-
const msg = gettext('Too many files selected. Limit: {{
|
|
50
|
+
const msg = gettext('Too many files selected. Limit: {{ fileCountMax }}.');
|
|
51
51
|
return (control) => {
|
|
52
52
|
if (Array.isArray(control.value)) {
|
|
53
|
-
return control.value.length > fileCountMax ? { [msg]: {
|
|
53
|
+
return control.value.length > fileCountMax ? { [msg]: { fileCountMax } } : null;
|
|
54
54
|
}
|
|
55
55
|
return null;
|
|
56
56
|
};
|
|
57
57
|
}
|
|
58
58
|
static fileCountMin(fileCountMin) {
|
|
59
|
-
const msg = gettext('
|
|
59
|
+
const msg = gettext('Requires min. {{ fileCountMin }} file(s).');
|
|
60
60
|
return (control) => {
|
|
61
61
|
if (Array.isArray(control.value)) {
|
|
62
62
|
return control.value.length < fileCountMin ? { [msg]: { fileCountMin } } : null;
|
|
@@ -65,4 +65,4 @@ export class FilePickerValidators {
|
|
|
65
65
|
};
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1waWNrZXItdmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvZmlsZS1waWNrZXItbmV3L2ZpbGUtcGlja2VyLXZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsTUFBTSxXQUFXLENBQUM7QUFFcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVsQyxNQUFNLE9BQWdCLG9CQUFvQjtJQUN4QyxNQUFNLENBQUMsV0FBVyxDQUFDLFlBQW9CLEVBQUUsWUFBMEI7UUFDakUsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLGdFQUFnRSxDQUFDLENBQUM7UUFFdEYsT0FBTyxDQUFDLE9BQXdCLEVBQUUsRUFBRTtZQUNsQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFlBQVksSUFBSSxFQUFFO2dCQUNqQyxNQUFNLElBQUksR0FBUyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUNqQyxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWTtvQkFDM0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUN4RCxDQUFDLENBQUMsSUFBSSxDQUFDO2FBQ1Y7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLFlBQTBCO1FBQzVDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO1FBRW5FLE9BQU8sQ0FBQyxPQUF3QixFQUFFLEVBQUU7WUFDbEMsSUFBSSxPQUFPLENBQUMsS0FBSyxZQUFZLElBQUksRUFBRTtnQkFDakMsTUFBTSxJQUFJLEdBQVMsT0FBTyxDQUFDLEtBQUssQ0FB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L2NvbW1vbic7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJy4uL2kxOG4nO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRmlsZVBpY2tlclZhbGlkYXRvcnMge1xuICBzdGF0aWMgZmlsZU1heFNpemUobWF4U2l6ZUJ5dGVzOiBudW1iZXIsIGZpbGVzU2VydmljZTogRmlsZXNTZXJ2aWNlKTogVmFsaWRhdG9yRm4ge1xuICAgIGNvbnN0IG1zZyA9IGdldHRleHQoJ1RoZSBzZWxlY3RlZCBmaWxlIGlzIHRvbyBsYXJnZS4gVGhlIHNpemUgbGltaXQgaXMge3sgbGltaXQgfX0uJyk7XG5cbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICAgICAgaWYgKGNvbnRyb2wudmFsdWUgaW5zdGFuY2VvZiBGaWxlKSB7XG4gICAgICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBjb250cm9sLnZhbHVlO1xuICAgICAgICByZXR1cm4gZmlsZXNTZXJ2aWNlLnNpemUoZmlsZSkgPiBtYXhTaXplQnl0ZXNcbiAgICAgICAgICA/IHsgW21zZ106IHsgbGltaXQ6IEJ5dGVzUGlwZS5ieXRlcyhtYXhTaXplQnl0ZXMsIDEpIH0gfVxuICAgICAgICAgIDogbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZmlsZU5vbkVtcHR5KGZpbGVzU2VydmljZTogRmlsZXNTZXJ2aWNlKTogVmFsaWRhdG9yRm4ge1xuICAgIGNvbnN0IG1zZyA9IGdldHRleHQoJ0ZpbGUgbXVzdCBub3QgYmUgZW1wdHksIHNlbGVjdCBhbm90aGVyIG9uZS4nKTtcblxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XG4gICAgICBpZiAoY29udHJvbC52YWx1ZSBpbnN0YW5jZW9mIEZpbGUpIHtcbiAgICAgICAgY29uc3QgZmlsZTogRmlsZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgICAgIHJldHVybiBmaWxlc1NlcnZpY2Uuc2l6ZShmaWxlKSA9PT0gMCA/IHsgW21zZ106IHRydWUgfSA6IG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGZpbGVOYW1lTWF4TGVuZ3RoKGZpbGVzU2VydmljZTogRmlsZXNTZXJ2aWNlKTogVmFsaWRhdG9yRm4ge1xuICAgIGNvbnN0IG1zZyA9IGdldHRleHQoJ1RoZSBmaWxlbmFtZSBleGNlZWRzIGxpbWl0IG9mIHt7IGxpbWl0IH19IGNoYXJhY3RlcnMuJyk7XG4gICAgY29uc3QgZmlsZW5hbWVMZW5ndGhMaW1pdCA9IGZpbGVzU2VydmljZS5GSUxFTkFNRV9NQVhfTEVOR1RIO1xuXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcbiAgICAgIGlmIChjb250cm9sLnZhbHVlIGluc3RhbmNlb2YgRmlsZSkge1xuICAgICAgICBjb25zdCBmaWxlOiBGaWxlID0gY29udHJvbC52YWx1ZTtcbiAgICAgICAgcmV0dXJuIGZpbGUubmFtZS5sZW5ndGggPiBmaWxlbmFtZUxlbmd0aExpbWl0XG4gICAgICAgICAgPyB7IFttc2ddOiB7IGxpbWl0OiBmaWxlbmFtZUxlbmd0aExpbWl0IH0gfVxuICAgICAgICAgIDogbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICBzdGF0aWMgaGF2ZVZhbGlkRXh0ZW5zaW9ucyhmaWxlc1NlcnZpY2U6IEZpbGVzU2VydmljZSwgYWNjZXB0OiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XG4gICAgY29uc3QgbXNnID0gZ2V0dGV4dCgnVGhlIHNlbGVjdGVkIGZpbGUgaXMgbm90IHN1cHBvcnRlZC4gU3VwcG9ydGVkIHR5cGVzIGFyZToge3sgYWNjZXB0IH19Jyk7XG5cbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICAgICAgaWYgKGNvbnRyb2wudmFsdWUgaW5zdGFuY2VvZiBGaWxlKSB7XG4gICAgICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBjb250cm9sLnZhbHVlO1xuICAgICAgICByZXR1cm4gIWZpbGVzU2VydmljZS5oYXZlVmFsaWRFeHRlbnNpb25zKFtmaWxlXSwgYWNjZXB0KSA/IHsgW21zZ106IHsgYWNjZXB0IH0gfSA6IG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGZpbGVDb3VudE1heChmaWxlQ291bnRNYXg6IG51bWJlcik6IFZhbGlkYXRvckZuIHtcbiAgICBjb25zdCBtc2cgPSBnZXR0ZXh0KCdUb28gbWFueSBmaWxlcyBzZWxlY3RlZC4gTGltaXQ6IHt7IGZpbGVDb3VudE1heCB9fS4nKTtcblxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShjb250cm9sLnZhbHVlKSkge1xuICAgICAgICByZXR1cm4gY29udHJvbC52YWx1ZS5sZW5ndGggPiBmaWxlQ291bnRNYXggPyB7IFttc2ddOiB7IGZpbGVDb3VudE1heCB9IH0gOiBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBmaWxlQ291bnRNaW4oZmlsZUNvdW50TWluOiBudW1iZXIpOiBWYWxpZGF0b3JGbiB7XG4gICAgY29uc3QgbXNnID0gZ2V0dGV4dCgnUmVxdWlyZXMgbWluLiB7eyBmaWxlQ291bnRNaW4gfX0gZmlsZShzKS4nKTtcblxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShjb250cm9sLnZhbHVlKSkge1xuICAgICAgICByZXR1cm4gY29udHJvbC52YWx1ZS5sZW5ndGggPCBmaWxlQ291bnRNaW4gPyB7IFttc2ddOiB7IGZpbGVDb3VudE1pbiB9IH0gOiBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -172,10 +172,10 @@ export class HelpComponent {
|
|
|
172
172
|
}
|
|
173
173
|
}
|
|
174
174
|
HelpComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: HelpComponent, deps: [{ token: i1.DocsService }, { token: i2.HelpService }], target: i0.ɵɵFactoryTarget.Component });
|
|
175
|
-
HelpComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: HelpComponent, selector: "c8y-help", inputs: { src: "src", isCollapsed: "isCollapsed", priority: "priority", icon: "icon" }, ngImport: i0, template: "<c8y-action-bar-item\n [placement]=\"'right'\"\n itemClass=\"pull-right m-l-8\"\n [priority]=\"priority\"\n *ngIf=\"!!(helpService.contextHelp | async)\"\n>\n <button\n class=\"btn-help\"\n type=\"button\"\n [attr.aria-label]=\"'About this page' | translate\"\n data-cy=\"help--help-btn\"\n tooltip=\"{{ 'About this page' | translate }}\"\n [delay]=\"750\"\n placement=\"left\"\n container=\"body\"\n [attr.aria-expanded]=\"!isCollapsed\"\n aria-controls=\"collapseHelp\"\n (click)=\"toggle()\"\n c8yProductExperience\n [actionName]=\"isCollapsed ? 'helpOpened' : 'helpClosed'\"\n [actionData]=\"{ src: src }\"\n ></button>\n</c8y-action-bar-item>\n\n<div\n id=\"collapseHelp\"\n class=\"c8y-help-drawer\"\n [collapse]=\"isCollapsed\"\n [isAnimated]=\"true\"\n (collapsed)=\"onCollapsed()\"\n>\n <div\n [ngClass]=\"{ 'c8y-help-drawer-block': isInit }\"\n #docOutlet\n data-cy=\"c8y-help--c8y-help-drawer-block\"\n >\n <div *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </div>\n\n <div *ngIf=\"!isLoading\">\n <div class=\"d-flex\">\n <i\n [c8yIcon]=\"!hasError ? icon : 'unlink'\"\n [ngClass]=\"{ 'text-warning': hasError, 'text-muted': !hasError }\"\n class=\"c8y-icon-duocolor icon-48\"\n ></i>\n <div class=\"p-l-16 flex-grow\" *ngIf=\"!hasError\">\n <div\n class=\"alert alert-info m-b-16\"\n *ngIf=\"\n !helpService.isSupportedLanguage() &&\n !showLangWarning &&\n !helpService.isWarningAlertViewed\n \"\n >\n <button\n class=\"close\"\n [attr.aria-label]=\"'Close' | translate\"\n type=\"button\"\n (click)=\"\n showLangWarning = !showLangWarning;\n helpService.isWarningAlertViewed = !helpService.isWarningAlertViewed\n \"\n >\n <span aria-hidden=\"true\">\u00D7</span>\n <span class=\"sr-only\">Close</span>\n </button>\n <p>\n {{ 'Help content is only available in English.' | translate }}\n </p>\n </div>\n <h4 class=\"text-bold text-primary p-t-16 m-b-16\">\n {{ title }}\n </h4>\n <div id=\"helpContent\" class=\"help-content\" [innerHTML]=\"sectionContent\" data-cy=\"help--c8y-help-content\"></div>\n </div>\n\n <div class=\"p-l-16 p-t-16 flex-grow\" *ngIf=\"hasError\">\n <h4 class=\"text-bold m-b-16\" translate>Content couldn't be loaded.</h4>\n <div class=\"help-content\">\n <p translate>Check connection or reload page.</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"c8y-help-drawer-footer animated fadeIn\"\n style=\"animation-delay: 0.35s\"\n *ngIf=\"!isLoading && !hasError\"\n data-cy=\"c8y-help--c8y-help-drawer-footer\"\n >\n <button\n class=\"btn btn-default\"\n type=\"button\"\n [title]=\"'Close help' | translate\"\n (click)=\"toggle()\"\n [attr.aria-expanded]=\"!isCollapsed\"\n aria-controls=\"collapseHelp\"\n translate\n >\n Close\n </button>\n <a\n data-cy=\"help--href-value\"\n href=\"{{ hasError ? getUrl() : getUrl(src) }}\"\n class=\"btn btn-primary\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span translate *ngIf=\"!hasError\">\n Open the\n <span>User guide`KEEP_ORIGINAL`</span>\n </span>\n <span translate *ngIf=\"hasError\">\n Check the\n <span>User guide`KEEP_ORIGINAL`</span>\n </span>\n </a>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i4.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.LoadingComponent, selector: "c8y-loading" }, { kind: "directive", type: i7.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "directive", type: i8.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "component", type: i9.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "directive", type: i10.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "pipe", type: i11.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] });
|
|
175
|
+
HelpComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: HelpComponent, selector: "c8y-help", inputs: { src: "src", isCollapsed: "isCollapsed", priority: "priority", icon: "icon" }, ngImport: i0, template: "<c8y-action-bar-item\n [placement]=\"'right'\"\n itemClass=\"pull-right m-l-8\"\n [priority]=\"priority\"\n *ngIf=\"!!(helpService.contextHelp | async)\"\n>\n <button\n class=\"btn-help\"\n type=\"button\"\n [attr.aria-label]=\"'About this page' | translate\"\n data-cy=\"help--help-btn\"\n tooltip=\"{{ 'About this page' | translate }}\"\n [delay]=\"750\"\n placement=\"left\"\n container=\"body\"\n [attr.aria-expanded]=\"!isCollapsed\"\n aria-controls=\"collapseHelp\"\n (click)=\"toggle()\"\n c8yProductExperience\n [actionName]=\"isCollapsed ? 'helpOpened' : 'helpClosed'\"\n [actionData]=\"{ src: src }\"\n ></button>\n</c8y-action-bar-item>\n\n<div\n id=\"collapseHelp\"\n class=\"c8y-help-drawer\"\n [collapse]=\"isCollapsed\"\n [isAnimated]=\"true\"\n (collapsed)=\"onCollapsed()\"\n>\n <div\n [ngClass]=\"{ 'c8y-help-drawer-block': isInit }\"\n #docOutlet\n data-cy=\"c8y-help--c8y-help-drawer-block\"\n >\n <div *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </div>\n\n <div *ngIf=\"!isLoading\">\n <div class=\"d-flex\">\n <i\n [c8yIcon]=\"!hasError ? icon : 'unlink'\"\n [ngClass]=\"{ 'text-warning': hasError, 'text-muted': !hasError }\"\n class=\"c8y-icon-duocolor icon-48\"\n ></i>\n <div class=\"p-l-16 flex-grow\" *ngIf=\"!hasError\">\n <div\n class=\"alert alert-info m-b-16\"\n *ngIf=\"\n !helpService.isSupportedLanguage() &&\n !showLangWarning &&\n !helpService.isWarningAlertViewed\n \"\n >\n <button\n class=\"close\"\n [attr.aria-label]=\"'Close' | translate\"\n type=\"button\"\n (click)=\"\n showLangWarning = !showLangWarning;\n helpService.isWarningAlertViewed = !helpService.isWarningAlertViewed\n \"\n >\n <span aria-hidden=\"true\">\u00D7</span>\n <span class=\"sr-only\">Close</span>\n </button>\n <p>\n {{ 'Help content is only available in English.' | translate }}\n </p>\n </div>\n <h4 class=\"text-bold text-primary p-t-16 m-b-16\">\n {{ title }}\n </h4>\n <div id=\"helpContent\" class=\"help-content\" [innerHTML]=\"sectionContent\" data-cy=\"help--c8y-help-content\"></div>\n </div>\n\n <div class=\"p-l-16 p-t-16 flex-grow\" *ngIf=\"hasError\">\n <h4 class=\"text-bold m-b-16\" translate>Content couldn't be loaded.</h4>\n <div class=\"help-content\">\n <p translate>Check internet connection or reload page.</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"c8y-help-drawer-footer animated fadeIn\"\n style=\"animation-delay: 0.35s\"\n *ngIf=\"!isLoading && !hasError\"\n data-cy=\"c8y-help--c8y-help-drawer-footer\"\n >\n <button\n class=\"btn btn-default\"\n type=\"button\"\n [title]=\"'Close help' | translate\"\n (click)=\"toggle()\"\n [attr.aria-expanded]=\"!isCollapsed\"\n aria-controls=\"collapseHelp\"\n translate\n >\n Close\n </button>\n <a\n data-cy=\"help--href-value\"\n href=\"{{ hasError ? getUrl() : getUrl(src) }}\"\n class=\"btn btn-primary\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span translate *ngIf=\"!hasError\">\n Open the\n <span>User guide`KEEP_ORIGINAL`</span>\n </span>\n <span translate *ngIf=\"hasError\">\n Check the\n <span>User guide`KEEP_ORIGINAL`</span>\n </span>\n </a>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i4.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.LoadingComponent, selector: "c8y-loading" }, { kind: "directive", type: i7.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "directive", type: i8.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "component", type: i9.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "directive", type: i10.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "pipe", type: i11.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] });
|
|
176
176
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: HelpComponent, decorators: [{
|
|
177
177
|
type: Component,
|
|
178
|
-
args: [{ selector: 'c8y-help', template: "<c8y-action-bar-item\n [placement]=\"'right'\"\n itemClass=\"pull-right m-l-8\"\n [priority]=\"priority\"\n *ngIf=\"!!(helpService.contextHelp | async)\"\n>\n <button\n class=\"btn-help\"\n type=\"button\"\n [attr.aria-label]=\"'About this page' | translate\"\n data-cy=\"help--help-btn\"\n tooltip=\"{{ 'About this page' | translate }}\"\n [delay]=\"750\"\n placement=\"left\"\n container=\"body\"\n [attr.aria-expanded]=\"!isCollapsed\"\n aria-controls=\"collapseHelp\"\n (click)=\"toggle()\"\n c8yProductExperience\n [actionName]=\"isCollapsed ? 'helpOpened' : 'helpClosed'\"\n [actionData]=\"{ src: src }\"\n ></button>\n</c8y-action-bar-item>\n\n<div\n id=\"collapseHelp\"\n class=\"c8y-help-drawer\"\n [collapse]=\"isCollapsed\"\n [isAnimated]=\"true\"\n (collapsed)=\"onCollapsed()\"\n>\n <div\n [ngClass]=\"{ 'c8y-help-drawer-block': isInit }\"\n #docOutlet\n data-cy=\"c8y-help--c8y-help-drawer-block\"\n >\n <div *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </div>\n\n <div *ngIf=\"!isLoading\">\n <div class=\"d-flex\">\n <i\n [c8yIcon]=\"!hasError ? icon : 'unlink'\"\n [ngClass]=\"{ 'text-warning': hasError, 'text-muted': !hasError }\"\n class=\"c8y-icon-duocolor icon-48\"\n ></i>\n <div class=\"p-l-16 flex-grow\" *ngIf=\"!hasError\">\n <div\n class=\"alert alert-info m-b-16\"\n *ngIf=\"\n !helpService.isSupportedLanguage() &&\n !showLangWarning &&\n !helpService.isWarningAlertViewed\n \"\n >\n <button\n class=\"close\"\n [attr.aria-label]=\"'Close' | translate\"\n type=\"button\"\n (click)=\"\n showLangWarning = !showLangWarning;\n helpService.isWarningAlertViewed = !helpService.isWarningAlertViewed\n \"\n >\n <span aria-hidden=\"true\">\u00D7</span>\n <span class=\"sr-only\">Close</span>\n </button>\n <p>\n {{ 'Help content is only available in English.' | translate }}\n </p>\n </div>\n <h4 class=\"text-bold text-primary p-t-16 m-b-16\">\n {{ title }}\n </h4>\n <div id=\"helpContent\" class=\"help-content\" [innerHTML]=\"sectionContent\" data-cy=\"help--c8y-help-content\"></div>\n </div>\n\n <div class=\"p-l-16 p-t-16 flex-grow\" *ngIf=\"hasError\">\n <h4 class=\"text-bold m-b-16\" translate>Content couldn't be loaded.</h4>\n <div class=\"help-content\">\n <p translate>Check connection or reload page.</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"c8y-help-drawer-footer animated fadeIn\"\n style=\"animation-delay: 0.35s\"\n *ngIf=\"!isLoading && !hasError\"\n data-cy=\"c8y-help--c8y-help-drawer-footer\"\n >\n <button\n class=\"btn btn-default\"\n type=\"button\"\n [title]=\"'Close help' | translate\"\n (click)=\"toggle()\"\n [attr.aria-expanded]=\"!isCollapsed\"\n aria-controls=\"collapseHelp\"\n translate\n >\n Close\n </button>\n <a\n data-cy=\"help--href-value\"\n href=\"{{ hasError ? getUrl() : getUrl(src) }}\"\n class=\"btn btn-primary\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span translate *ngIf=\"!hasError\">\n Open the\n <span>User guide`KEEP_ORIGINAL`</span>\n </span>\n <span translate *ngIf=\"hasError\">\n Check the\n <span>User guide`KEEP_ORIGINAL`</span>\n </span>\n </a>\n </div>\n</div>\n" }]
|
|
178
|
+
args: [{ selector: 'c8y-help', template: "<c8y-action-bar-item\n [placement]=\"'right'\"\n itemClass=\"pull-right m-l-8\"\n [priority]=\"priority\"\n *ngIf=\"!!(helpService.contextHelp | async)\"\n>\n <button\n class=\"btn-help\"\n type=\"button\"\n [attr.aria-label]=\"'About this page' | translate\"\n data-cy=\"help--help-btn\"\n tooltip=\"{{ 'About this page' | translate }}\"\n [delay]=\"750\"\n placement=\"left\"\n container=\"body\"\n [attr.aria-expanded]=\"!isCollapsed\"\n aria-controls=\"collapseHelp\"\n (click)=\"toggle()\"\n c8yProductExperience\n [actionName]=\"isCollapsed ? 'helpOpened' : 'helpClosed'\"\n [actionData]=\"{ src: src }\"\n ></button>\n</c8y-action-bar-item>\n\n<div\n id=\"collapseHelp\"\n class=\"c8y-help-drawer\"\n [collapse]=\"isCollapsed\"\n [isAnimated]=\"true\"\n (collapsed)=\"onCollapsed()\"\n>\n <div\n [ngClass]=\"{ 'c8y-help-drawer-block': isInit }\"\n #docOutlet\n data-cy=\"c8y-help--c8y-help-drawer-block\"\n >\n <div *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </div>\n\n <div *ngIf=\"!isLoading\">\n <div class=\"d-flex\">\n <i\n [c8yIcon]=\"!hasError ? icon : 'unlink'\"\n [ngClass]=\"{ 'text-warning': hasError, 'text-muted': !hasError }\"\n class=\"c8y-icon-duocolor icon-48\"\n ></i>\n <div class=\"p-l-16 flex-grow\" *ngIf=\"!hasError\">\n <div\n class=\"alert alert-info m-b-16\"\n *ngIf=\"\n !helpService.isSupportedLanguage() &&\n !showLangWarning &&\n !helpService.isWarningAlertViewed\n \"\n >\n <button\n class=\"close\"\n [attr.aria-label]=\"'Close' | translate\"\n type=\"button\"\n (click)=\"\n showLangWarning = !showLangWarning;\n helpService.isWarningAlertViewed = !helpService.isWarningAlertViewed\n \"\n >\n <span aria-hidden=\"true\">\u00D7</span>\n <span class=\"sr-only\">Close</span>\n </button>\n <p>\n {{ 'Help content is only available in English.' | translate }}\n </p>\n </div>\n <h4 class=\"text-bold text-primary p-t-16 m-b-16\">\n {{ title }}\n </h4>\n <div id=\"helpContent\" class=\"help-content\" [innerHTML]=\"sectionContent\" data-cy=\"help--c8y-help-content\"></div>\n </div>\n\n <div class=\"p-l-16 p-t-16 flex-grow\" *ngIf=\"hasError\">\n <h4 class=\"text-bold m-b-16\" translate>Content couldn't be loaded.</h4>\n <div class=\"help-content\">\n <p translate>Check internet connection or reload page.</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"c8y-help-drawer-footer animated fadeIn\"\n style=\"animation-delay: 0.35s\"\n *ngIf=\"!isLoading && !hasError\"\n data-cy=\"c8y-help--c8y-help-drawer-footer\"\n >\n <button\n class=\"btn btn-default\"\n type=\"button\"\n [title]=\"'Close help' | translate\"\n (click)=\"toggle()\"\n [attr.aria-expanded]=\"!isCollapsed\"\n aria-controls=\"collapseHelp\"\n translate\n >\n Close\n </button>\n <a\n data-cy=\"help--href-value\"\n href=\"{{ hasError ? getUrl() : getUrl(src) }}\"\n class=\"btn btn-primary\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span translate *ngIf=\"!hasError\">\n Open the\n <span>User guide`KEEP_ORIGINAL`</span>\n </span>\n <span translate *ngIf=\"hasError\">\n Check the\n <span>User guide`KEEP_ORIGINAL`</span>\n </span>\n </a>\n </div>\n</div>\n" }]
|
|
179
179
|
}], ctorParameters: function () { return [{ type: i1.DocsService }, { type: i2.HelpService }]; }, propDecorators: { src: [{
|
|
180
180
|
type: Input
|
|
181
181
|
}], isCollapsed: [{
|
|
@@ -185,4 +185,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
185
185
|
}], icon: [{
|
|
186
186
|
type: Input
|
|
187
187
|
}] } });
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2hlbHAvaGVscC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2hlbHAvaGVscC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBRTdDOzs7Ozs7OztHQVFHO0FBS0gsTUFBTSxPQUFPLGFBQWE7SUE2RHhCOztPQUVHO0lBQ0gsWUFBb0IsV0FBd0IsRUFBUyxXQUF3QjtRQUF6RCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFTLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBL0Q3RTs7O1dBR0c7UUFFSCxRQUFHLEdBQUcsRUFBRSxDQUFDO1FBRVQ7O1dBRUc7UUFFSCxnQkFBVyxHQUFHLElBQUksQ0FBQztRQUVuQjs7V0FFRztRQUVILGFBQVEsR0FBRyxRQUFRLENBQUM7UUFRcEI7O1dBRUc7UUFDSCxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBRVg7O1dBRUc7UUFDSCxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUVwQjs7V0FFRztRQUNILG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBRXBCOztXQUVHO1FBQ0gsY0FBUyxHQUFHLElBQUksQ0FBQztRQUVqQjs7V0FFRztRQUNILGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakI7O1dBRUc7UUFDSCxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUV4Qjs7V0FFRztRQUNILFdBQU0sR0FBRyxLQUFLLENBQUM7SUFLaUUsQ0FBQztJQUVqRjs7OztPQUlHO0lBQ0gsV0FBVztRQUNULElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFD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c0JBRFAsS0FBSztnQkFPTixJQUFJO3NCQURILEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb2NzU2VydmljZSB9IGZyb20gJy4uL2RvY3MvZG9jcy5zZXJ2aWNlJztcbmltcG9ydCB7IEhlbHBTZXJ2aWNlIH0gZnJvbSAnLi9oZWxwLnNlcnZpY2UnO1xuXG4vKipcbiAqIEEgY29tcG9uZW50IHdoaWNoIHNob3dzIGEgY29udGV4dCBoZWxwIGluXG4gKiB0aGUgYWN0aW9uIGJhci5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPGM4eS1oZWxwIHNyYz1cIi91c2Vycy1ndWlkZS9jb2NrcGl0LyNkYXNoYm9hcmRzXCI+PC9jOHktaGVscD5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktaGVscCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWxwLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBIZWxwQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSBzb3VyY2Ugb2YgdGhlIGRvY3VtZW50YXRpb24uIFVzZWQgdG8gbGluayB0byB0aGUgZG9jdW1lbnRhdGlvbiBhcyB3ZWxsIGFzXG4gICAqIHRvIHBhcnNlIHRoZSBzb3VyY2UgdG8gZGlzcGxheS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNyYyA9ICcnO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGhlbHAgZGlhbG9nIGlzIGNvbGxhcHNlZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGlzQ29sbGFwc2VkID0gdHJ1ZTtcblxuICAvKipcbiAgICogVGhlIHByaW9yaXR5IHdoZXJlIHRoZSBoZWxwIGljb24gc2hvdWxkIGJlIHNob3duIGluIHRoZSBhY3Rpb24gYmFyXG4gICAqL1xuICBASW5wdXQoKVxuICBwcmlvcml0eSA9IEluZmluaXR5O1xuXG4gIC8qKlxuICAgKiBBIGN1c3RvbSBpY29uLiBJZiBub3Qgc2V0LCB0aGUgbmF2aWdhdG9yIGljb24gaXMgcmVzb2x2ZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIGljb247XG5cbiAgLyoqXG4gICAqIEEgdGl0bGUuIFNldCBpbiBvcGVuIGJ5IHBhc3NpbmcgdGhlIHNvdXJjZS5cbiAgICovXG4gIHRpdGxlID0gJyc7XG5cbiAgLyoqXG4gICAqIFRoZSBzZWN0aW9uIGhlYWRpbmcgaW4gdGhlIGRvYyB3aGljaCBpcyBnb2luZyB0byBiZSBkaXNwbGF5ZWQuXG4gICAqL1xuICBzZWN0aW9uSGVhZGluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VjdGlvbiBjb250ZW50IGluIHRoZSBkb2Mgd2hpY2ggaXMgZ29pbmcgdG8gYmUgZGlzcGxheWVkLlxuICAgKi9cbiAgc2VjdGlvbkNvbnRlbnQgPSAnJztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBjb21wb25lbnQgaXMgbG9hZGluZy5cbiAgICovXG4gIGlzTG9hZGluZyA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgY29tcG9uZW50IGZhaWxlZCBsb2FkaW5nIHRoZSBzb3VyY2UuXG4gICAqL1xuICBoYXNFcnJvciA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgYSB3YXJuaW5nIHNob3VsZCBiZSBzaG93bi5cbiAgICovXG4gIHNob3dMYW5nV2FybmluZyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBpc0luaXQgPSBmYWxzZTtcblxuICAvKipcbiAgICogQGlnbm9yZSBPbmx5IHByaXZhdGUgRElcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZG9jc1NlcnZpY2U6IERvY3NTZXJ2aWNlLCBwdWJsaWMgaGVscFNlcnZpY2U6IEhlbHBTZXJ2aWNlKSB7fVxuXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IGlzIHNob3duIGJ5IGRlZmF1bHQgYW5kIHRoZXJlZm9yZSBicmVha3MgZTJlIHRlc3QuIFRoaXMgaXNcbiAgICogdG8gcHJldmVudCB0aGUgdmlzaWJpbGl0eSBvbiBmaXJzdCBuYXZpZ2F0aW9uLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkNvbGxhcHNlZCgpIHtcbiAgICB0aGlzLmlzSW5pdCA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBVUkwgYmFzZWQgb24gdGhlIHNyYy4gVGhlIEJhc2UgVVJMIGNhbiBiZSBzZXQgaW4gdGhlIGFwcGxpY2F0aW9uIG9wdGlvbnMgZG9jQmFzZVVybC5cbiAgICogQHBhcmFtIHNyYyBUaGUgc291cmNlIG9mIHRoZSBoZWxwIG9uIHRoZSBndWlkZS5cbiAgICogQHBhcmFtIGluZGV4IFRoaXMgZmxhZyBpcyB1c2VkIHRvIGNhbGwgdGhlIGluZGV4Lmpzb24gY29udGVudCBvZiBhIGd1aWRlLiBGb3IgZXhhbXBsZSwgXCJodHRwczovL3d3dy5jdW11bG9jaXR5LmNvbS9ndWlkZXMvdXNlcnMtZ3VpZGUvY29ja3BpdC9pbmRleC5qc29uXCIuXG4gICAqL1xuICBnZXRVcmwoc3JjID0gJycsIGluZGV4ID0gZmFsc2UpOiBzdHJpbmcge1xuICAgIGxldCBkb2NzVXJsOiBVUkw7XG5cbiAgICB0cnkge1xuICAgICAgZG9jc1VybCA9XG4gICAgICAgIHR5cGVvZiB0aGlzLmhlbHBTZXJ2aWNlLmNvbnRleHRIZWxwLnZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgICAgID8gbmV3IFVSTCh0aGlzLmRvY3NTZXJ2aWNlLmdldFVybFdpdGhEb2NzVmVyc2lvbih0aGlzLmhlbHBTZXJ2aWNlLmNvbnRleHRIZWxwLnZhbHVlKSlcbiAgICAgICAgICA6IG5ldyBVUkwodGhpcy5kb2NzU2VydmljZS5nZXRCYXNlVXJsKCkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBkb2NzVXJsID0gbmV3IFVSTCh0aGlzLmRvY3NTZXJ2aWNlLmdldEJhc2VVcmwoKSk7XG4gICAgICBjb25zb2xlLndhcm4oZXJyb3IpO1xuICAgIH1cblxuICAgIGNvbnN0IFt1cmwsIGhhc2hGcmFnbWVudF0gPSBzcmMuc3BsaXQoJyMnKTtcbiAgICB0aGlzLnNlY3Rpb25IZWFkaW5nID0gaGFzaEZyYWdtZW50O1xuXG4gICAgaWYgKGluZGV4KSB7XG4gICAgICBzcmMgPSBgJHt1cmx9aW5kZXguanNvbmA7XG4gICAgfVxuICAgIHJldHVybiBgJHtkb2NzVXJsLmhyZWZ9JHtzcmN9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBoZWxwIGRpYWxvZy5cbiAgICovXG4gIHRvZ2dsZSgpIHtcbiAgICBpZiAodGhpcy5pc0NvbGxhcHNlZCkge1xuICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIGhlbHAgZGlhbG9nLlxuICAgKi9cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5pc0NvbGxhcHNlZCA9IHRydWU7XG4gICAgdGhpcy5jbGVhbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSBoZWxwIGRpYWxvZy5cbiAgICovXG4gIG9wZW4oKSB7XG4gICAgdGhpcy5pc0NvbGxhcHNlZCA9IGZhbHNlO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnJlcXVlc3RDb250ZW50KCk7XG4gICAgaWYgKCF0aGlzLmljb24pIHtcbiAgICAgIHRoaXMuaWNvbiA9IHRoaXMucmVzb2x2ZUljb24oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlcXVlc3RDb250ZW50KCkge1xuICAgIGNvbnN0IHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSAoKSA9PiB0aGlzLnJlbmRlcihyZXEpO1xuICAgIHJlcS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4gdGhpcy5yZW5kZXIocmVxKSk7XG4gICAgcmVxLm9wZW4oJ0dFVCcsIHRoaXMuZ2V0VXJsKHRoaXMuc3JjLCB0cnVlKSk7XG4gICAgcmVxLnJlc3BvbnNlVHlwZSA9ICdqc29uJztcbiAgICByZXEuc2V0UmVxdWVzdEhlYWRlcignQWNjZXB0JywgJ3RleHQvaHRtbCcpO1xuICAgIHJlcS5zZW5kKCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFuKCkge1xuICAgIHRoaXMudGl0bGUgPSAnJztcbiAgICB0aGlzLmhhc0Vycm9yID0gZmFsc2U7XG4gICAgdGhpcy5zZWN0aW9uQ29udGVudCA9ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlSWNvbigpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgaWNvbiA9IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbmF2IC5hY3RpdmUgaScpLmNsYXNzTGlzdCkuZmluZChcbiAgICAgICAgY2xhc3NlcyA9PiBjbGFzc2VzLnN0YXJ0c1dpdGgoJ2M4eS1pY29uLScpIHx8IGNsYXNzZXMuc3RhcnRzV2l0aCgnZGx0LWM4eS1pY29uLScpXG4gICAgICApO1xuICAgICAgcmV0dXJuIGljb24ucmVwbGFjZSgnZGx0LWM4eS1pY29uLScsICcnKS5yZXBsYWNlKCdjOHktaWNvbi0nLCAnYzh5LScpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICByZXR1cm4gJ2xpZmUtc2F2ZXInO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyKHJlcTogWE1MSHR0cFJlcXVlc3QpIHtcbiAgICBpZiAocmVxLnJlYWR5U3RhdGUgPT09IDQpIHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICBpZiAocmVxLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgIHRoaXMuaGFzRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgY29uc3Qgc2VjdGlvbkRhdGEgPSByZXEucmVzcG9uc2VbdGhpcy5zZWN0aW9uSGVhZGluZ107XG4gICAgICAgIGlmIChzZWN0aW9uRGF0YSkge1xuICAgICAgICAgIHRoaXMudGl0bGUgPSBzZWN0aW9uRGF0YS50aXRsZTtcbiAgICAgICAgICB0aGlzLnNlY3Rpb25Db250ZW50ID0gc2VjdGlvbkRhdGEuaGVscGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaGFzRXJyb3IgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgW3BsYWNlbWVudF09XCIncmlnaHQnXCJcbiAgaXRlbUNsYXNzPVwicHVsbC1yaWdodCBtLWwtOFwiXG4gIFtwcmlvcml0eV09XCJwcmlvcml0eVwiXG4gICpuZ0lmPVwiISEoaGVscFNlcnZpY2UuY29udGV4dEhlbHAgfCBhc3luYylcIlxuPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4taGVscFwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQWJvdXQgdGhpcyBwYWdlJyB8IHRyYW5zbGF0ZVwiXG4gICAgZGF0YS1jeT1cImhlbHAtLWhlbHAtYnRuXCJcbiAgICB0b29sdGlwPVwie3sgJ0Fib3V0IHRoaXMgcGFnZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgIFtkZWxheV09XCI3NTBcIlxuICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiIWlzQ29sbGFwc2VkXCJcbiAgICBhcmlhLWNvbnRyb2xzPVwiY29sbGFwc2VIZWxwXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgW2FjdGlvbk5hbWVdPVwiaXNDb2xsYXBzZWQgPyAnaGVscE9wZW5lZCcgOiAnaGVscENsb3NlZCdcIlxuICAgIFthY3Rpb25EYXRhXT1cInsgc3JjOiBzcmMgfVwiXG4gID48L2J1dHRvbj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGRpdlxuICBpZD1cImNvbGxhcHNlSGVscFwiXG4gIGNsYXNzPVwiYzh5LWhlbHAtZHJhd2VyXCJcbiAgW2NvbGxhcHNlXT1cImlzQ29sbGFwc2VkXCJcbiAgW2lzQW5pbWF0ZWRdPVwidHJ1ZVwiXG4gIChjb2xsYXBzZWQpPVwib25Db2xsYXBzZWQoKVwiXG4+XG4gIDxkaXZcbiAgICBbbmdDbGFzc109XCJ7ICdjOHktaGVscC1kcmF3ZXItYmxvY2snOiBpc0luaXQgfVwiXG4gICAgI2RvY091dGxldFxuICAgIGRhdGEtY3k9XCJjOHktaGVscC0tYzh5LWhlbHAtZHJhd2VyLWJsb2NrXCJcbiAgPlxuICAgIDxkaXYgKm5nSWY9XCJpc0xvYWRpbmdcIj5cbiAgICAgIDxjOHktbG9hZGluZz48L2M4eS1sb2FkaW5nPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cIiFpc0xvYWRpbmdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgPGlcbiAgICAgICAgICBbYzh5SWNvbl09XCIhaGFzRXJyb3IgPyBpY29uIDogJ3VubGluaydcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3RleHQtd2FybmluZyc6IGhhc0Vycm9yLCAndGV4dC1tdXRlZCc6ICFoYXNFcnJvciB9XCJcbiAgICAgICAgICBjbGFzcz1cImM4eS1pY29uLWR1b2NvbG9yIGljb24tNDhcIlxuICAgICAgICA+PC9pPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicC1sLTE2IGZsZXgtZ3Jvd1wiICpuZ0lmPVwiIWhhc0Vycm9yXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJhbGVydCBhbGVydC1pbmZvIG0tYi0xNlwiXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAhaGVscFNlcnZpY2UuaXNTdXBwb3J0ZWRMYW5ndWFnZSgpICYmXG4gICAgICAgICAgICAgICFzaG93TGFuZ1dhcm5pbmcgJiZcbiAgICAgICAgICAgICAgIWhlbHBTZXJ2aWNlLmlzV2FybmluZ0FsZXJ0Vmlld2VkXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJjbG9zZVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0Nsb3NlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgc2hvd0xhbmdXYXJuaW5nID0gIXNob3dMYW5nV2FybmluZztcbiAgICAgICAgICAgICAgICBoZWxwU2VydmljZS5pc1dhcm5pbmdBbGVydFZpZXdlZCA9ICFoZWxwU2VydmljZS5pc1dhcm5pbmdBbGVydFZpZXdlZFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj7Dlzwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+Q2xvc2U8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICB7eyAnSGVscCBjb250ZW50IGlzIG9ubHkgYXZhaWxhYmxlIGluIEVuZ2xpc2guJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxoNCBjbGFzcz1cInRleHQtYm9sZCB0ZXh0LXByaW1hcnkgcC10LTE2IG0tYi0xNlwiPlxuICAgICAgICAgICAge3sgdGl0bGUgfX1cbiAgICAgICAgICA8L2g0PlxuICAgICAgICAgIDxkaXYgaWQ9XCJoZWxwQ29udGVudFwiIGNsYXNzPVwiaGVscC1jb250ZW50XCIgW2lubmVySFRNTF09XCJzZWN0aW9uQ29udGVudFwiIGRhdGEtY3k9XCJoZWxwLS1jOHktaGVscC1jb250ZW50XCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLWwtMTYgcC10LTE2IGZsZXgtZ3Jvd1wiICpuZ0lmPVwiaGFzRXJyb3JcIj5cbiAgICAgICAgICA8aDQgY2xhc3M9XCJ0ZXh0LWJvbGQgbS1iLTE2XCIgdHJhbnNsYXRlPkNvbnRlbnQgY291bGRuJ3QgYmUgbG9hZGVkLjwvaDQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImhlbHAtY29udGVudFwiPlxuICAgICAgICAgICAgPHAgdHJhbnNsYXRlPkNoZWNrIGNvbm5lY3Rpb24gb3IgcmVsb2FkIHBhZ2UuPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYzh5LWhlbHAtZHJhd2VyLWZvb3RlciBhbmltYXRlZCBmYWRlSW5cIlxuICAgIHN0eWxlPVwiYW5pbWF0aW9uLWRlbGF5OiAwLjM1c1wiXG4gICAgKm5nSWY9XCIhaXNMb2FkaW5nICYmICFoYXNFcnJvclwiXG4gICAgZGF0YS1jeT1cImM4eS1oZWxwLS1jOHktaGVscC1kcmF3ZXItZm9vdGVyXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW3RpdGxlXT1cIidDbG9zZSBoZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCIhaXNDb2xsYXBzZWRcIlxuICAgICAgYXJpYS1jb250cm9scz1cImNvbGxhcHNlSGVscFwiXG4gICAgICB0cmFuc2xhdGVcbiAgICA+XG4gICAgICBDbG9zZVxuICAgIDwvYnV0dG9uPlxuICAgIDxhXG4gICAgICBkYXRhLWN5PVwiaGVscC0taHJlZi12YWx1ZVwiXG4gICAgICBocmVmPVwie3sgaGFzRXJyb3IgPyBnZXRVcmwoKSA6IGdldFVybChzcmMpIH19XCJcbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICA+XG4gICAgICA8c3BhbiB0cmFuc2xhdGUgKm5nSWY9XCIhaGFzRXJyb3JcIj5cbiAgICAgICAgT3BlbiB0aGVcbiAgICAgICAgPHNwYW4+VXNlciBndWlkZWBLRUVQX09SSUdJTkFMYDwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIHRyYW5zbGF0ZSAqbmdJZj1cImhhc0Vycm9yXCI+XG4gICAgICAgIENoZWNrIHRoZVxuICAgICAgICA8c3Bhbj5Vc2VyIGd1aWRlYEtFRVBfT1JJR0lOQUxgPC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvYT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
188
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2hlbHAvaGVscC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2hlbHAvaGVscC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBRTdDOzs7Ozs7OztHQVFHO0FBS0gsTUFBTSxPQUFPLGFBQWE7SUE2RHhCOztPQUVHO0lBQ0gsWUFBb0IsV0FBd0IsRUFBUyxXQUF3QjtRQUF6RCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFTLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBL0Q3RTs7O1dBR0c7UUFFSCxRQUFHLEdBQUcsRUFBRSxDQUFDO1FBRVQ7O1dBRUc7UUFFSCxnQkFBVyxHQUFHLElBQUksQ0FBQztRQUVuQjs7V0FFRztRQUVILGFBQVEsR0FBRyxRQUFRLENBQUM7UUFRcEI7O1dBRUc7UUFDSCxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBRVg7O1dBRUc7UUFDSCxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUVwQjs7V0FFRztRQUNILG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBRXBCOztXQUVHO1FBQ0gsY0FBUyxHQUFHLElBQUksQ0FBQztRQUVqQjs7V0FFRztRQUNILGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakI7O1dBRUc7UUFDSCxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUV4Qjs7V0FFRztRQUNILFdBQU0sR0FBRyxLQUFLLENBQUM7SUFLaUUsQ0FBQztJQUVqRjs7OztPQUlHO0lBQ0gsV0FBVztRQUNULElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFD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c0JBRFAsS0FBSztnQkFPTixJQUFJO3NCQURILEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb2NzU2VydmljZSB9IGZyb20gJy4uL2RvY3MvZG9jcy5zZXJ2aWNlJztcbmltcG9ydCB7IEhlbHBTZXJ2aWNlIH0gZnJvbSAnLi9oZWxwLnNlcnZpY2UnO1xuXG4vKipcbiAqIEEgY29tcG9uZW50IHdoaWNoIHNob3dzIGEgY29udGV4dCBoZWxwIGluXG4gKiB0aGUgYWN0aW9uIGJhci5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPGM4eS1oZWxwIHNyYz1cIi91c2Vycy1ndWlkZS9jb2NrcGl0LyNkYXNoYm9hcmRzXCI+PC9jOHktaGVscD5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktaGVscCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWxwLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBIZWxwQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSBzb3VyY2Ugb2YgdGhlIGRvY3VtZW50YXRpb24uIFVzZWQgdG8gbGluayB0byB0aGUgZG9jdW1lbnRhdGlvbiBhcyB3ZWxsIGFzXG4gICAqIHRvIHBhcnNlIHRoZSBzb3VyY2UgdG8gZGlzcGxheS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNyYyA9ICcnO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGhlbHAgZGlhbG9nIGlzIGNvbGxhcHNlZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGlzQ29sbGFwc2VkID0gdHJ1ZTtcblxuICAvKipcbiAgICogVGhlIHByaW9yaXR5IHdoZXJlIHRoZSBoZWxwIGljb24gc2hvdWxkIGJlIHNob3duIGluIHRoZSBhY3Rpb24gYmFyXG4gICAqL1xuICBASW5wdXQoKVxuICBwcmlvcml0eSA9IEluZmluaXR5O1xuXG4gIC8qKlxuICAgKiBBIGN1c3RvbSBpY29uLiBJZiBub3Qgc2V0LCB0aGUgbmF2aWdhdG9yIGljb24gaXMgcmVzb2x2ZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIGljb247XG5cbiAgLyoqXG4gICAqIEEgdGl0bGUuIFNldCBpbiBvcGVuIGJ5IHBhc3NpbmcgdGhlIHNvdXJjZS5cbiAgICovXG4gIHRpdGxlID0gJyc7XG5cbiAgLyoqXG4gICAqIFRoZSBzZWN0aW9uIGhlYWRpbmcgaW4gdGhlIGRvYyB3aGljaCBpcyBnb2luZyB0byBiZSBkaXNwbGF5ZWQuXG4gICAqL1xuICBzZWN0aW9uSGVhZGluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VjdGlvbiBjb250ZW50IGluIHRoZSBkb2Mgd2hpY2ggaXMgZ29pbmcgdG8gYmUgZGlzcGxheWVkLlxuICAgKi9cbiAgc2VjdGlvbkNvbnRlbnQgPSAnJztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBjb21wb25lbnQgaXMgbG9hZGluZy5cbiAgICovXG4gIGlzTG9hZGluZyA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgY29tcG9uZW50IGZhaWxlZCBsb2FkaW5nIHRoZSBzb3VyY2UuXG4gICAqL1xuICBoYXNFcnJvciA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgYSB3YXJuaW5nIHNob3VsZCBiZSBzaG93bi5cbiAgICovXG4gIHNob3dMYW5nV2FybmluZyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBpc0luaXQgPSBmYWxzZTtcblxuICAvKipcbiAgICogQGlnbm9yZSBPbmx5IHByaXZhdGUgRElcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZG9jc1NlcnZpY2U6IERvY3NTZXJ2aWNlLCBwdWJsaWMgaGVscFNlcnZpY2U6IEhlbHBTZXJ2aWNlKSB7fVxuXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IGlzIHNob3duIGJ5IGRlZmF1bHQgYW5kIHRoZXJlZm9yZSBicmVha3MgZTJlIHRlc3QuIFRoaXMgaXNcbiAgICogdG8gcHJldmVudCB0aGUgdmlzaWJpbGl0eSBvbiBmaXJzdCBuYXZpZ2F0aW9uLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkNvbGxhcHNlZCgpIHtcbiAgICB0aGlzLmlzSW5pdCA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBVUkwgYmFzZWQgb24gdGhlIHNyYy4gVGhlIEJhc2UgVVJMIGNhbiBiZSBzZXQgaW4gdGhlIGFwcGxpY2F0aW9uIG9wdGlvbnMgZG9jQmFzZVVybC5cbiAgICogQHBhcmFtIHNyYyBUaGUgc291cmNlIG9mIHRoZSBoZWxwIG9uIHRoZSBndWlkZS5cbiAgICogQHBhcmFtIGluZGV4IFRoaXMgZmxhZyBpcyB1c2VkIHRvIGNhbGwgdGhlIGluZGV4Lmpzb24gY29udGVudCBvZiBhIGd1aWRlLiBGb3IgZXhhbXBsZSwgXCJodHRwczovL3d3dy5jdW11bG9jaXR5LmNvbS9ndWlkZXMvdXNlcnMtZ3VpZGUvY29ja3BpdC9pbmRleC5qc29uXCIuXG4gICAqL1xuICBnZXRVcmwoc3JjID0gJycsIGluZGV4ID0gZmFsc2UpOiBzdHJpbmcge1xuICAgIGxldCBkb2NzVXJsOiBVUkw7XG5cbiAgICB0cnkge1xuICAgICAgZG9jc1VybCA9XG4gICAgICAgIHR5cGVvZiB0aGlzLmhlbHBTZXJ2aWNlLmNvbnRleHRIZWxwLnZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgICAgID8gbmV3IFVSTCh0aGlzLmRvY3NTZXJ2aWNlLmdldFVybFdpdGhEb2NzVmVyc2lvbih0aGlzLmhlbHBTZXJ2aWNlLmNvbnRleHRIZWxwLnZhbHVlKSlcbiAgICAgICAgICA6IG5ldyBVUkwodGhpcy5kb2NzU2VydmljZS5nZXRCYXNlVXJsKCkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBkb2NzVXJsID0gbmV3IFVSTCh0aGlzLmRvY3NTZXJ2aWNlLmdldEJhc2VVcmwoKSk7XG4gICAgICBjb25zb2xlLndhcm4oZXJyb3IpO1xuICAgIH1cblxuICAgIGNvbnN0IFt1cmwsIGhhc2hGcmFnbWVudF0gPSBzcmMuc3BsaXQoJyMnKTtcbiAgICB0aGlzLnNlY3Rpb25IZWFkaW5nID0gaGFzaEZyYWdtZW50O1xuXG4gICAgaWYgKGluZGV4KSB7XG4gICAgICBzcmMgPSBgJHt1cmx9aW5kZXguanNvbmA7XG4gICAgfVxuICAgIHJldHVybiBgJHtkb2NzVXJsLmhyZWZ9JHtzcmN9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBoZWxwIGRpYWxvZy5cbiAgICovXG4gIHRvZ2dsZSgpIHtcbiAgICBpZiAodGhpcy5pc0NvbGxhcHNlZCkge1xuICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIGhlbHAgZGlhbG9nLlxuICAgKi9cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5pc0NvbGxhcHNlZCA9IHRydWU7XG4gICAgdGhpcy5jbGVhbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSBoZWxwIGRpYWxvZy5cbiAgICovXG4gIG9wZW4oKSB7XG4gICAgdGhpcy5pc0NvbGxhcHNlZCA9IGZhbHNlO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnJlcXVlc3RDb250ZW50KCk7XG4gICAgaWYgKCF0aGlzLmljb24pIHtcbiAgICAgIHRoaXMuaWNvbiA9IHRoaXMucmVzb2x2ZUljb24oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlcXVlc3RDb250ZW50KCkge1xuICAgIGNvbnN0IHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSAoKSA9PiB0aGlzLnJlbmRlcihyZXEpO1xuICAgIHJlcS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4gdGhpcy5yZW5kZXIocmVxKSk7XG4gICAgcmVxLm9wZW4oJ0dFVCcsIHRoaXMuZ2V0VXJsKHRoaXMuc3JjLCB0cnVlKSk7XG4gICAgcmVxLnJlc3BvbnNlVHlwZSA9ICdqc29uJztcbiAgICByZXEuc2V0UmVxdWVzdEhlYWRlcignQWNjZXB0JywgJ3RleHQvaHRtbCcpO1xuICAgIHJlcS5zZW5kKCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFuKCkge1xuICAgIHRoaXMudGl0bGUgPSAnJztcbiAgICB0aGlzLmhhc0Vycm9yID0gZmFsc2U7XG4gICAgdGhpcy5zZWN0aW9uQ29udGVudCA9ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlSWNvbigpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgaWNvbiA9IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbmF2IC5hY3RpdmUgaScpLmNsYXNzTGlzdCkuZmluZChcbiAgICAgICAgY2xhc3NlcyA9PiBjbGFzc2VzLnN0YXJ0c1dpdGgoJ2M4eS1pY29uLScpIHx8IGNsYXNzZXMuc3RhcnRzV2l0aCgnZGx0LWM4eS1pY29uLScpXG4gICAgICApO1xuICAgICAgcmV0dXJuIGljb24ucmVwbGFjZSgnZGx0LWM4eS1pY29uLScsICcnKS5yZXBsYWNlKCdjOHktaWNvbi0nLCAnYzh5LScpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICByZXR1cm4gJ2xpZmUtc2F2ZXInO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyKHJlcTogWE1MSHR0cFJlcXVlc3QpIHtcbiAgICBpZiAocmVxLnJlYWR5U3RhdGUgPT09IDQpIHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICBpZiAocmVxLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgIHRoaXMuaGFzRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgY29uc3Qgc2VjdGlvbkRhdGEgPSByZXEucmVzcG9uc2VbdGhpcy5zZWN0aW9uSGVhZGluZ107XG4gICAgICAgIGlmIChzZWN0aW9uRGF0YSkge1xuICAgICAgICAgIHRoaXMudGl0bGUgPSBzZWN0aW9uRGF0YS50aXRsZTtcbiAgICAgICAgICB0aGlzLnNlY3Rpb25Db250ZW50ID0gc2VjdGlvbkRhdGEuaGVscGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaGFzRXJyb3IgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgW3BsYWNlbWVudF09XCIncmlnaHQnXCJcbiAgaXRlbUNsYXNzPVwicHVsbC1yaWdodCBtLWwtOFwiXG4gIFtwcmlvcml0eV09XCJwcmlvcml0eVwiXG4gICpuZ0lmPVwiISEoaGVscFNlcnZpY2UuY29udGV4dEhlbHAgfCBhc3luYylcIlxuPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4taGVscFwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQWJvdXQgdGhpcyBwYWdlJyB8IHRyYW5zbGF0ZVwiXG4gICAgZGF0YS1jeT1cImhlbHAtLWhlbHAtYnRuXCJcbiAgICB0b29sdGlwPVwie3sgJ0Fib3V0IHRoaXMgcGFnZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgIFtkZWxheV09XCI3NTBcIlxuICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiIWlzQ29sbGFwc2VkXCJcbiAgICBhcmlhLWNvbnRyb2xzPVwiY29sbGFwc2VIZWxwXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgW2FjdGlvbk5hbWVdPVwiaXNDb2xsYXBzZWQgPyAnaGVscE9wZW5lZCcgOiAnaGVscENsb3NlZCdcIlxuICAgIFthY3Rpb25EYXRhXT1cInsgc3JjOiBzcmMgfVwiXG4gID48L2J1dHRvbj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGRpdlxuICBpZD1cImNvbGxhcHNlSGVscFwiXG4gIGNsYXNzPVwiYzh5LWhlbHAtZHJhd2VyXCJcbiAgW2NvbGxhcHNlXT1cImlzQ29sbGFwc2VkXCJcbiAgW2lzQW5pbWF0ZWRdPVwidHJ1ZVwiXG4gIChjb2xsYXBzZWQpPVwib25Db2xsYXBzZWQoKVwiXG4+XG4gIDxkaXZcbiAgICBbbmdDbGFzc109XCJ7ICdjOHktaGVscC1kcmF3ZXItYmxvY2snOiBpc0luaXQgfVwiXG4gICAgI2RvY091dGxldFxuICAgIGRhdGEtY3k9XCJjOHktaGVscC0tYzh5LWhlbHAtZHJhd2VyLWJsb2NrXCJcbiAgPlxuICAgIDxkaXYgKm5nSWY9XCJpc0xvYWRpbmdcIj5cbiAgICAgIDxjOHktbG9hZGluZz48L2M4eS1sb2FkaW5nPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cIiFpc0xvYWRpbmdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgPGlcbiAgICAgICAgICBbYzh5SWNvbl09XCIhaGFzRXJyb3IgPyBpY29uIDogJ3VubGluaydcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3RleHQtd2FybmluZyc6IGhhc0Vycm9yLCAndGV4dC1tdXRlZCc6ICFoYXNFcnJvciB9XCJcbiAgICAgICAgICBjbGFzcz1cImM4eS1pY29uLWR1b2NvbG9yIGljb24tNDhcIlxuICAgICAgICA+PC9pPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicC1sLTE2IGZsZXgtZ3Jvd1wiICpuZ0lmPVwiIWhhc0Vycm9yXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJhbGVydCBhbGVydC1pbmZvIG0tYi0xNlwiXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAhaGVscFNlcnZpY2UuaXNTdXBwb3J0ZWRMYW5ndWFnZSgpICYmXG4gICAgICAgICAgICAgICFzaG93TGFuZ1dhcm5pbmcgJiZcbiAgICAgICAgICAgICAgIWhlbHBTZXJ2aWNlLmlzV2FybmluZ0FsZXJ0Vmlld2VkXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJjbG9zZVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0Nsb3NlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgc2hvd0xhbmdXYXJuaW5nID0gIXNob3dMYW5nV2FybmluZztcbiAgICAgICAgICAgICAgICBoZWxwU2VydmljZS5pc1dhcm5pbmdBbGVydFZpZXdlZCA9ICFoZWxwU2VydmljZS5pc1dhcm5pbmdBbGVydFZpZXdlZFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj7Dlzwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+Q2xvc2U8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICB7eyAnSGVscCBjb250ZW50IGlzIG9ubHkgYXZhaWxhYmxlIGluIEVuZ2xpc2guJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxoNCBjbGFzcz1cInRleHQtYm9sZCB0ZXh0LXByaW1hcnkgcC10LTE2IG0tYi0xNlwiPlxuICAgICAgICAgICAge3sgdGl0bGUgfX1cbiAgICAgICAgICA8L2g0PlxuICAgICAgICAgIDxkaXYgaWQ9XCJoZWxwQ29udGVudFwiIGNsYXNzPVwiaGVscC1jb250ZW50XCIgW2lubmVySFRNTF09XCJzZWN0aW9uQ29udGVudFwiIGRhdGEtY3k9XCJoZWxwLS1jOHktaGVscC1jb250ZW50XCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLWwtMTYgcC10LTE2IGZsZXgtZ3Jvd1wiICpuZ0lmPVwiaGFzRXJyb3JcIj5cbiAgICAgICAgICA8aDQgY2xhc3M9XCJ0ZXh0LWJvbGQgbS1iLTE2XCIgdHJhbnNsYXRlPkNvbnRlbnQgY291bGRuJ3QgYmUgbG9hZGVkLjwvaDQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImhlbHAtY29udGVudFwiPlxuICAgICAgICAgICAgPHAgdHJhbnNsYXRlPkNoZWNrIGludGVybmV0IGNvbm5lY3Rpb24gb3IgcmVsb2FkIHBhZ2UuPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYzh5LWhlbHAtZHJhd2VyLWZvb3RlciBhbmltYXRlZCBmYWRlSW5cIlxuICAgIHN0eWxlPVwiYW5pbWF0aW9uLWRlbGF5OiAwLjM1c1wiXG4gICAgKm5nSWY9XCIhaXNMb2FkaW5nICYmICFoYXNFcnJvclwiXG4gICAgZGF0YS1jeT1cImM4eS1oZWxwLS1jOHktaGVscC1kcmF3ZXItZm9vdGVyXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW3RpdGxlXT1cIidDbG9zZSBoZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCIhaXNDb2xsYXBzZWRcIlxuICAgICAgYXJpYS1jb250cm9scz1cImNvbGxhcHNlSGVscFwiXG4gICAgICB0cmFuc2xhdGVcbiAgICA+XG4gICAgICBDbG9zZVxuICAgIDwvYnV0dG9uPlxuICAgIDxhXG4gICAgICBkYXRhLWN5PVwiaGVscC0taHJlZi12YWx1ZVwiXG4gICAgICBocmVmPVwie3sgaGFzRXJyb3IgPyBnZXRVcmwoKSA6IGdldFVybChzcmMpIH19XCJcbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICA+XG4gICAgICA8c3BhbiB0cmFuc2xhdGUgKm5nSWY9XCIhaGFzRXJyb3JcIj5cbiAgICAgICAgT3BlbiB0aGVcbiAgICAgICAgPHNwYW4+VXNlciBndWlkZWBLRUVQX09SSUdJTkFMYDwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIHRyYW5zbGF0ZSAqbmdJZj1cImhhc0Vycm9yXCI+XG4gICAgICAgIENoZWNrIHRoZVxuICAgICAgICA8c3Bhbj5Vc2VyIGd1aWRlYEtFRVBfT1JJR0lOQUxgPC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvYT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|