myrta-ui 13.0.34 → 13.0.35

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.
@@ -164,10 +164,10 @@ export class GalleryItemComponent {
164
164
  }
165
165
  }
166
166
  GalleryItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: GalleryItemComponent, deps: [{ token: i1.GalleryService }, { token: i2.SimpleModalService }, { token: i3.Store }], target: i0.ɵɵFactoryTarget.Component });
167
- GalleryItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: GalleryItemComponent, selector: "mrx-gallery-item", inputs: { preview: "preview", index: "index", isEditing: "isEditing", descriptionMaxLength: "descriptionMaxLength", deleteEndPoint: "deleteEndPoint", updateEndPoint: "updateEndPoint", rotateSlides: "rotateSlides", showDate: "showDate", showCounterparties: "showCounterparties", minDate: "minDate", maxDate: "maxDate", requiredDate: "requiredDate", setIsLoading: ["isLoading", "setIsLoading"], needToSaveInvalidDate: "needToSaveInvalidDate", minDateInvalidMessage: "minDateInvalidMessage", maxDateInvalidMessage: "maxDateInvalidMessage", validateOnSubmit: "validateOnSubmit" }, outputs: { openGalleryModal: "openGalleryModal", deletePhoto: "deletePhoto", updatePhoto: "updatePhoto" }, providers: [MrxAutosaveService], ngImport: i0, template: "<div class=\"mrx-gallery-item\">\r\n <div class=\"mrx-gallery-item__preview\" (click)=\"onOpenGalleryModal()\">\r\n\r\n <img [src]=\"getImageUrl()\" [alt]=\"preview.imageName || 'image'\" *ngIf=\"!isLoadingImage; else skeletonTemplate\">\r\n\r\n <ng-template #skeletonTemplate>\r\n <div class=\"d-flex align-items-center justify-content-center w-100 h-100\">\r\n <mrx-loader size=\"medium\" color=\"brand\"></mrx-loader>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"mrx-gallery-item__preview-overlay\" *ngIf=\"!isLoadingImage\"></div>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls\" *ngIf=\"!isLoadingImage\">\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"yandexCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_12346_12076)\">\r\n <path d=\"M8.00031 15.9838C12.4096 15.9838 15.984 12.4093 15.984 8.00006C15.984 3.59078 12.4096 0.0163574 8.00031 0.0163574C3.59103 0.0163574 0.0166016 3.59078 0.0166016 8.00006C0.0166016 12.4093 3.59103 15.9838 8.00031 15.9838Z\" fill=\"white\"/>\r\n <path d=\"M10.8893 13.0118H9.1367V4.34361H8.35596C6.92484 4.34361 6.17521 5.05916 6.17521 6.12731C6.17521 7.33916 6.69225 7.90065 7.76188 8.6162L8.64336 9.21028L6.11003 13.0103H4.22559L6.50559 9.61768C5.19447 8.68139 4.4567 7.76731 4.4567 6.22509C4.4567 4.29768 5.8004 2.98657 8.3441 2.98657H10.8774V13.0088H10.8893V13.0118Z\" fill=\"#FC3F1D\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_12346_12076\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </a>\r\n\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"googleCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M11.5561 4.8901H11.0997V4.86659H5.99967V7.13325H9.20219C8.73497 8.45273 7.47952 9.39992 5.99967 9.39992C4.12202 9.39992 2.59967 7.87757 2.59967 5.99992C2.59967 4.12227 4.12202 2.59992 5.99967 2.59992C6.86639 2.59992 7.65491 2.92689 8.25529 3.46097L9.85811 1.85815C8.84604 0.914935 7.49227 0.333252 5.99967 0.333252C2.87026 0.333252 0.333008 2.8705 0.333008 5.99992C0.333008 9.12934 2.87026 11.6666 5.99967 11.6666C9.12909 11.6666 11.6663 9.12934 11.6663 5.99992C11.6663 5.61997 11.6272 5.24909 11.5561 4.8901Z\" fill=\"#FBC02D\"/>\r\n <path d=\"M0.987305 3.36237L2.84909 4.72775C3.35285 3.48052 4.57289 2.59992 6.0006 2.59992C6.86732 2.59992 7.65584 2.92689 8.25622 3.46097L9.85904 1.85815C8.84697 0.914935 7.4932 0.333252 6.0006 0.333252C3.82404 0.333252 1.93647 1.56207 0.987305 3.36237Z\" fill=\"#E53935\"/>\r\n <path d=\"M6.0008 11.6665C7.4645 11.6665 8.79447 11.1063 9.80002 10.1954L8.04619 8.7113C7.47725 9.14225 6.77005 9.3998 6.0008 9.3998C4.5269 9.3998 3.27542 8.45999 2.80395 7.14844L0.956055 8.57219C1.89389 10.4073 3.79845 11.6665 6.0008 11.6665Z\" fill=\"#4CAF50\"/>\r\n <path d=\"M11.5564 4.88997L11.5519 4.86646H11.1H6V7.13312H9.20252C8.97812 7.76694 8.5704 8.31349 8.04453 8.71157C8.04482 8.71129 8.0451 8.71129 8.04538 8.71101L9.79922 10.1951C9.67512 10.3079 11.6667 8.83312 11.6667 5.99979C11.6667 5.61984 11.6276 5.24896 11.5564 4.88997Z\" fill=\"#1565C0\"/>\r\n </svg>\r\n </a>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls__button d-flex align-items-center justify-content-center\" *ngIf=\"isEditing\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"mrx-icon icon-delete icon-font-16 text-bold\" (click)=\"deleteImage()\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showDate\" class=\"mrx-gallery-item__date mb-2\">\r\n <ng-container *ngIf=\"isEditing; else dateTemplate\">\r\n <mrx-label [required]=\"requiredDate\">\u0414\u0430\u0442\u0430 \u043C\u0435\u0440\u043E\u043F\u0440\u0438\u044F\u0442\u0438\u044F</mrx-label>\r\n\r\n <mrx-input-datepicker\r\n [fields]=\"(fields$ | async)!\"\r\n [(ngModel)]=\"preview.eventDate\"\r\n [invalid]=\"isDateInvalid\"\r\n [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\"\r\n [isShowMessages]=\"false\"\r\n [invalidMessage]=\"dateInvalidMessage\"\r\n [closable]=\"false\"\r\n [format]=\"'YYYY-MM-DD'\"\r\n [timepicker]=\"false\"\r\n [leadZeroDateTime]=\"true\"\r\n [mask]=\"'d0.M0.0000'\"\r\n (modelChange)=\"changeField(ChangeableField.EventDate, $event)\"\r\n ></mrx-input-datepicker>\r\n </ng-container>\r\n\r\n <ng-template #dateTemplate>\r\n <p>\u0414\u0430\u0442\u0430 \u043C\u0435\u0440\u043E\u043F\u0440\u0438\u044F\u0442\u0438\u044F: {{ preview.eventDate | dateFormat }}</p>\r\n </ng-template>\r\n </div>\r\n\r\n <div *ngIf=\"showCounterparties\" class=\"mrx-gallery-item__counterparties mb-2\">\r\n <ng-container *ngIf=\"isEditing; else counterpartiesTemplate\">\r\n <mrx-label>\u041D\u0430\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u0435 \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430</mrx-label>\r\n\r\n <mrx-input-select\r\n [fields]=\"(fields$ | async)!\"\r\n [(ngModel)]=\"preview.counterpartySelectedIds\"\r\n [items]=\"preview.counterparties || []\"\r\n [multiple]=\"true\"\r\n [sortable]=\"true\"\r\n [clearable]=\"false\"\r\n [maxSelectedItems]=\"3\"\r\n [bindValue]=\"'value'\"\r\n [bindLabel]=\"'text'\"\r\n [placeholder]=\"'\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430'\"\r\n [checkInvalid]=\"counterpartiesCheckInvalid\"\r\n [invalid]=\"isCounterpartiesInvalid\"\r\n [invalidMessage]=\"counterpartiesInvalidMessage\"\r\n (modelChange)=\"changeField(ChangeableField.Counterparties, $event)\"\r\n >\r\n <ng-template #contentTemplate>\r\n <span class=\"py-1 px-3 mnh-px-36 d-flex align-items-center color-text-secondary\">\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043E\u0442 1 \u0434\u043E 3 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432</span>\r\n </ng-template>\r\n </mrx-input-select>\r\n </ng-container>\r\n\r\n <ng-template #counterpartiesTemplate>\r\n <p>\u041D\u0430\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u0435 \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430: {{ counterpartiesText }}</p>\r\n </ng-template>\r\n </div>\r\n\r\n <div class=\"mrx-gallery-item__description\">\r\n <mrx-input-textarea\r\n *ngIf=\"isEditing; else textTemplate\"\r\n [fields]=\"(fields$ | async)!\"\r\n [ngModel]=\"preview.description\"\r\n [autosize]=\"false\"\r\n [rows]=\"2\"\r\n [maxlength]=\"descriptionMaxLength\"\r\n [placeholder]=\"'\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u0435'\"\r\n [checkInvalid]=\"descriptionCheckInvalid\"\r\n [invalid]=\"isDescriptionInvalid\"\r\n [invalidMessage]=\"descriptionInvalidMessage\"\r\n (modelChange)=\"changeField(ChangeableField.Description, $event)\"\r\n ></mrx-input-textarea>\r\n\r\n <ng-template #textTemplate>\r\n {{ preview.description }}\r\n </ng-template>\r\n </div>\r\n</div>\r\n", styles: [".mrx-gallery-item{cursor:pointer}.mrx-gallery-item__preview{width:100%;height:180px;border-radius:4px;overflow:hidden;position:relative;margin-bottom:8px}.mrx-gallery-item__preview img{width:100%;height:100%;object-fit:cover;object-position:center top}.mrx-gallery-item__preview-overlay{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(0,0,0,0) 78.93%,rgba(0,0,0,.35) 91.52%)}.mrx-gallery-item__preview-controls{position:absolute;bottom:0;left:0;right:0;z-index:2;padding:8px;display:flex;align-items:center;justify-content:flex-end;gap:8px}.mrx-gallery-item__preview-controls--text{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height);color:var(--neutral-text-inverse);opacity:.8}.mrx-gallery-item__preview-controls--icon{width:16px;height:16px;display:flex;align-items:center;justify-content:center;background-color:#fff;border-radius:50%}.mrx-gallery-item__preview-controls__button{padding:4px;border-radius:4px;background:var(--system-white, #FFF)}.mrx-gallery-item__description{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-primary);word-break:break-word}.mrx-gallery-item__date p,.mrx-gallery-item__counterparties p{font-family:var(--body-md-bold-font-family);font-size:var(--body-md-bold-font-size);font-weight:var(--body-md-bold-font-weight);line-height:var(--body-md-bold-line-height);color:var(--neutral-text-primary)}.mrx-gallery-item ::ng-deep .ng-value-label{text-wrap:wrap;word-break:break-word}\n"], components: [{ type: i4.LoaderComponent, selector: "mrx-loader", inputs: ["size", "color", "customClasses"] }, { type: i5.LabelComponent, selector: "mrx-label", inputs: ["requiredHidden", "required", "boldLabel", "placeholder", "label", "customClasses", "triggerTextPosition", "isPublicInfo", "publicInfoTooltip", "disabled", "isSwitch", "switchLabel", "switchValue", "isCheckbox", "checkboxLabel", "checkboxValue", "counter", "linkText", "linkPrevent", "linkType", "linkMonochrome", "href", "triggerType", "tooltip", "tooltipInitialVisible", "isSaveToStorage"], outputs: ["changeCheckboxValue", "clickedLink"] }, { type: i6.InputDatepickerComponent, selector: "mrx-input-datepicker", inputs: ["fields", "size", "format", "locale", "customClasses", "dateLabel", "timeLabel", "datePlaceholder", "placeholder", "disabled", "readonly", "required", "timepicker", "minDate", "maxDate", "inline", "closable", "leadZeroDateTime", "mask", "container", "validationType", "disableValidation", "invalid", "invalidMessage", "checkInvalid", "isShowMessages"], outputs: ["changed", "modelChange"] }, { type: i7.InputSelectComponent, selector: "mrx-input-select", inputs: ["fields", "size", "selected", "bindValue", "bindLabel", "customClasses", "wrapperCustomClasses", "multiple", "loading", "addTag", "clearable", "items", "groupBy", "emptyValue", "virtualScroll", "trackByFn", "displayValue", "disabledFromDisplay", "hideSelected", "maxLength", "customSearchFn", "isBottomLabel", "search", "required", "disabled", "readonly", "showEmptyFields", "placeholder", "searchable", "sortable", "loadLabel", "notFoundText", "closeOnSelect", "multiCollapseCount", "editableSearchTerm", "invalid", "invalidMessage", "checkInvalid", "label", "labelRequiredHidden", "labelExtraClass", "tooltip", "tooltipHidden", "tooltipVisible", "maxSelectedItems"], outputs: ["changed", "modelChange", "searched", "cleared"] }, { type: i8.InputTextareaComponent, selector: "mrx-input-textarea", inputs: ["fields", "disabled", "readonly", "autosize", "maxlength", "minlength", "rows", "placeholder", "customClasses", "mask", "size", "invalid", "invalidMessage", "checkInvalid", "restrictInput", "allowPattern"], outputs: ["changed", "blurred", "modelChange"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i10.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }], pipes: { "async": i9.AsyncPipe, "dateFormat": i11.DateFormatPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
167
+ GalleryItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: GalleryItemComponent, selector: "mrx-gallery-item", inputs: { preview: "preview", index: "index", isEditing: "isEditing", descriptionMaxLength: "descriptionMaxLength", deleteEndPoint: "deleteEndPoint", updateEndPoint: "updateEndPoint", rotateSlides: "rotateSlides", showDate: "showDate", showCounterparties: "showCounterparties", minDate: "minDate", maxDate: "maxDate", requiredDate: "requiredDate", maxSelectedItems: "maxSelectedItems", counterpartySelectionHint: "counterpartySelectionHint", setIsLoading: ["isLoading", "setIsLoading"], needToSaveInvalidDate: "needToSaveInvalidDate", minDateInvalidMessage: "minDateInvalidMessage", maxDateInvalidMessage: "maxDateInvalidMessage", validateOnSubmit: "validateOnSubmit" }, outputs: { openGalleryModal: "openGalleryModal", deletePhoto: "deletePhoto", updatePhoto: "updatePhoto" }, providers: [MrxAutosaveService], ngImport: i0, template: "<div class=\"mrx-gallery-item\">\r\n <div class=\"mrx-gallery-item__preview\" (click)=\"onOpenGalleryModal()\">\r\n\r\n <img [src]=\"getImageUrl()\" [alt]=\"preview.imageName || 'image'\" *ngIf=\"!isLoadingImage; else skeletonTemplate\">\r\n\r\n <ng-template #skeletonTemplate>\r\n <div class=\"d-flex align-items-center justify-content-center w-100 h-100\">\r\n <mrx-loader size=\"medium\" color=\"brand\"></mrx-loader>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"mrx-gallery-item__preview-overlay\" *ngIf=\"!isLoadingImage\"></div>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls\" *ngIf=\"!isLoadingImage\">\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"yandexCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_12346_12076)\">\r\n <path d=\"M8.00031 15.9838C12.4096 15.9838 15.984 12.4093 15.984 8.00006C15.984 3.59078 12.4096 0.0163574 8.00031 0.0163574C3.59103 0.0163574 0.0166016 3.59078 0.0166016 8.00006C0.0166016 12.4093 3.59103 15.9838 8.00031 15.9838Z\" fill=\"white\"/>\r\n <path d=\"M10.8893 13.0118H9.1367V4.34361H8.35596C6.92484 4.34361 6.17521 5.05916 6.17521 6.12731C6.17521 7.33916 6.69225 7.90065 7.76188 8.6162L8.64336 9.21028L6.11003 13.0103H4.22559L6.50559 9.61768C5.19447 8.68139 4.4567 7.76731 4.4567 6.22509C4.4567 4.29768 5.8004 2.98657 8.3441 2.98657H10.8774V13.0088H10.8893V13.0118Z\" fill=\"#FC3F1D\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_12346_12076\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </a>\r\n\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"googleCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M11.5561 4.8901H11.0997V4.86659H5.99967V7.13325H9.20219C8.73497 8.45273 7.47952 9.39992 5.99967 9.39992C4.12202 9.39992 2.59967 7.87757 2.59967 5.99992C2.59967 4.12227 4.12202 2.59992 5.99967 2.59992C6.86639 2.59992 7.65491 2.92689 8.25529 3.46097L9.85811 1.85815C8.84604 0.914935 7.49227 0.333252 5.99967 0.333252C2.87026 0.333252 0.333008 2.8705 0.333008 5.99992C0.333008 9.12934 2.87026 11.6666 5.99967 11.6666C9.12909 11.6666 11.6663 9.12934 11.6663 5.99992C11.6663 5.61997 11.6272 5.24909 11.5561 4.8901Z\" fill=\"#FBC02D\"/>\r\n <path d=\"M0.987305 3.36237L2.84909 4.72775C3.35285 3.48052 4.57289 2.59992 6.0006 2.59992C6.86732 2.59992 7.65584 2.92689 8.25622 3.46097L9.85904 1.85815C8.84697 0.914935 7.4932 0.333252 6.0006 0.333252C3.82404 0.333252 1.93647 1.56207 0.987305 3.36237Z\" fill=\"#E53935\"/>\r\n <path d=\"M6.0008 11.6665C7.4645 11.6665 8.79447 11.1063 9.80002 10.1954L8.04619 8.7113C7.47725 9.14225 6.77005 9.3998 6.0008 9.3998C4.5269 9.3998 3.27542 8.45999 2.80395 7.14844L0.956055 8.57219C1.89389 10.4073 3.79845 11.6665 6.0008 11.6665Z\" fill=\"#4CAF50\"/>\r\n <path d=\"M11.5564 4.88997L11.5519 4.86646H11.1H6V7.13312H9.20252C8.97812 7.76694 8.5704 8.31349 8.04453 8.71157C8.04482 8.71129 8.0451 8.71129 8.04538 8.71101L9.79922 10.1951C9.67512 10.3079 11.6667 8.83312 11.6667 5.99979C11.6667 5.61984 11.6276 5.24896 11.5564 4.88997Z\" fill=\"#1565C0\"/>\r\n </svg>\r\n </a>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls__button d-flex align-items-center justify-content-center\" *ngIf=\"isEditing\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"mrx-icon icon-delete icon-font-16 text-bold\" (click)=\"deleteImage()\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showDate\" class=\"mrx-gallery-item__date mb-2\">\r\n <ng-container *ngIf=\"isEditing; else dateTemplate\">\r\n <mrx-label [required]=\"requiredDate\">\u0414\u0430\u0442\u0430 \u043C\u0435\u0440\u043E\u043F\u0440\u0438\u044F\u0442\u0438\u044F</mrx-label>\r\n\r\n <mrx-input-datepicker\r\n [fields]=\"(fields$ | async)!\"\r\n [(ngModel)]=\"preview.eventDate\"\r\n [invalid]=\"isDateInvalid\"\r\n [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\"\r\n [isShowMessages]=\"false\"\r\n [invalidMessage]=\"dateInvalidMessage\"\r\n [closable]=\"false\"\r\n [format]=\"'YYYY-MM-DD'\"\r\n [timepicker]=\"false\"\r\n [leadZeroDateTime]=\"true\"\r\n [mask]=\"'d0.M0.0000'\"\r\n (modelChange)=\"changeField(ChangeableField.EventDate, $event)\"\r\n ></mrx-input-datepicker>\r\n </ng-container>\r\n\r\n <ng-template #dateTemplate>\r\n <p>\u0414\u0430\u0442\u0430 \u043C\u0435\u0440\u043E\u043F\u0440\u0438\u044F\u0442\u0438\u044F: {{ preview.eventDate | dateFormat }}</p>\r\n </ng-template>\r\n </div>\r\n\r\n <div *ngIf=\"showCounterparties\" class=\"mrx-gallery-item__counterparties mb-2\">\r\n <ng-container *ngIf=\"isEditing; else counterpartiesTemplate\">\r\n <mrx-label>\u041D\u0430\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u0435 \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430</mrx-label>\r\n\r\n <mrx-input-select\r\n [fields]=\"(fields$ | async)!\"\r\n [(ngModel)]=\"preview.counterpartySelectedIds\"\r\n [items]=\"preview.counterparties || []\"\r\n [multiple]=\"true\"\r\n [sortable]=\"true\"\r\n [clearable]=\"false\"\r\n [maxSelectedItems]=\"maxSelectedItems\"\r\n [bindValue]=\"'value'\"\r\n [bindLabel]=\"'text'\"\r\n [placeholder]=\"'\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430'\"\r\n [checkInvalid]=\"counterpartiesCheckInvalid\"\r\n [invalid]=\"isCounterpartiesInvalid\"\r\n [invalidMessage]=\"counterpartiesInvalidMessage\"\r\n (modelChange)=\"changeField(ChangeableField.Counterparties, $event)\"\r\n >\r\n <ng-template #contentTemplate>\r\n <span class=\"py-1 px-3 mnh-px-36 d-flex align-items-center color-text-secondary\">{{ counterpartySelectionHint }}</span>\r\n </ng-template>\r\n </mrx-input-select>\r\n </ng-container>\r\n\r\n <ng-template #counterpartiesTemplate>\r\n <p>\u041D\u0430\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u0435 \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430: {{ counterpartiesText }}</p>\r\n </ng-template>\r\n </div>\r\n\r\n <div class=\"mrx-gallery-item__description\">\r\n <mrx-input-textarea\r\n *ngIf=\"isEditing; else textTemplate\"\r\n [fields]=\"(fields$ | async)!\"\r\n [ngModel]=\"preview.description\"\r\n [autosize]=\"false\"\r\n [rows]=\"2\"\r\n [maxlength]=\"descriptionMaxLength\"\r\n [placeholder]=\"'\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u0435'\"\r\n [checkInvalid]=\"descriptionCheckInvalid\"\r\n [invalid]=\"isDescriptionInvalid\"\r\n [invalidMessage]=\"descriptionInvalidMessage\"\r\n (modelChange)=\"changeField(ChangeableField.Description, $event)\"\r\n ></mrx-input-textarea>\r\n\r\n <ng-template #textTemplate>\r\n {{ preview.description }}\r\n </ng-template>\r\n </div>\r\n</div>\r\n", styles: [".mrx-gallery-item{cursor:pointer}.mrx-gallery-item__preview{width:100%;height:180px;border-radius:4px;overflow:hidden;position:relative;margin-bottom:8px}.mrx-gallery-item__preview img{width:100%;height:100%;object-fit:cover;object-position:center top}.mrx-gallery-item__preview-overlay{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(0,0,0,0) 78.93%,rgba(0,0,0,.35) 91.52%)}.mrx-gallery-item__preview-controls{position:absolute;bottom:0;left:0;right:0;z-index:2;padding:8px;display:flex;align-items:center;justify-content:flex-end;gap:8px}.mrx-gallery-item__preview-controls--text{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height);color:var(--neutral-text-inverse);opacity:.8}.mrx-gallery-item__preview-controls--icon{width:16px;height:16px;display:flex;align-items:center;justify-content:center;background-color:#fff;border-radius:50%}.mrx-gallery-item__preview-controls__button{padding:4px;border-radius:4px;background:var(--system-white, #FFF)}.mrx-gallery-item__description{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-primary);word-break:break-word}.mrx-gallery-item__date p,.mrx-gallery-item__counterparties p{font-family:var(--body-md-bold-font-family);font-size:var(--body-md-bold-font-size);font-weight:var(--body-md-bold-font-weight);line-height:var(--body-md-bold-line-height);color:var(--neutral-text-primary)}.mrx-gallery-item ::ng-deep .ng-value-label{text-wrap:wrap;word-break:break-word}\n"], components: [{ type: i4.LoaderComponent, selector: "mrx-loader", inputs: ["size", "color", "customClasses"] }, { type: i5.LabelComponent, selector: "mrx-label", inputs: ["requiredHidden", "required", "boldLabel", "placeholder", "label", "customClasses", "triggerTextPosition", "isPublicInfo", "publicInfoTooltip", "disabled", "isSwitch", "switchLabel", "switchValue", "isCheckbox", "checkboxLabel", "checkboxValue", "counter", "linkText", "linkPrevent", "linkType", "linkMonochrome", "href", "triggerType", "tooltip", "tooltipInitialVisible", "isSaveToStorage"], outputs: ["changeCheckboxValue", "clickedLink"] }, { type: i6.InputDatepickerComponent, selector: "mrx-input-datepicker", inputs: ["fields", "size", "format", "locale", "customClasses", "dateLabel", "timeLabel", "datePlaceholder", "placeholder", "disabled", "readonly", "required", "timepicker", "minDate", "maxDate", "inline", "closable", "leadZeroDateTime", "mask", "container", "validationType", "disableValidation", "invalid", "invalidMessage", "checkInvalid", "isShowMessages"], outputs: ["changed", "modelChange"] }, { type: i7.InputSelectComponent, selector: "mrx-input-select", inputs: ["fields", "size", "selected", "bindValue", "bindLabel", "customClasses", "wrapperCustomClasses", "multiple", "loading", "addTag", "clearable", "items", "groupBy", "emptyValue", "virtualScroll", "trackByFn", "displayValue", "disabledFromDisplay", "hideSelected", "maxLength", "customSearchFn", "isBottomLabel", "search", "required", "disabled", "readonly", "showEmptyFields", "placeholder", "searchable", "sortable", "loadLabel", "notFoundText", "closeOnSelect", "multiCollapseCount", "editableSearchTerm", "invalid", "invalidMessage", "checkInvalid", "label", "labelRequiredHidden", "labelExtraClass", "tooltip", "tooltipHidden", "tooltipVisible", "maxSelectedItems"], outputs: ["changed", "modelChange", "searched", "cleared"] }, { type: i8.InputTextareaComponent, selector: "mrx-input-textarea", inputs: ["fields", "disabled", "readonly", "autosize", "maxlength", "minlength", "rows", "placeholder", "customClasses", "mask", "size", "invalid", "invalidMessage", "checkInvalid", "restrictInput", "allowPattern"], outputs: ["changed", "blurred", "modelChange"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i10.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }], pipes: { "async": i9.AsyncPipe, "dateFormat": i11.DateFormatPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
168
168
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: GalleryItemComponent, decorators: [{
169
169
  type: Component,
170
- args: [{ selector: 'mrx-gallery-item', changeDetection: ChangeDetectionStrategy.OnPush, providers: [MrxAutosaveService], template: "<div class=\"mrx-gallery-item\">\r\n <div class=\"mrx-gallery-item__preview\" (click)=\"onOpenGalleryModal()\">\r\n\r\n <img [src]=\"getImageUrl()\" [alt]=\"preview.imageName || 'image'\" *ngIf=\"!isLoadingImage; else skeletonTemplate\">\r\n\r\n <ng-template #skeletonTemplate>\r\n <div class=\"d-flex align-items-center justify-content-center w-100 h-100\">\r\n <mrx-loader size=\"medium\" color=\"brand\"></mrx-loader>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"mrx-gallery-item__preview-overlay\" *ngIf=\"!isLoadingImage\"></div>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls\" *ngIf=\"!isLoadingImage\">\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"yandexCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_12346_12076)\">\r\n <path d=\"M8.00031 15.9838C12.4096 15.9838 15.984 12.4093 15.984 8.00006C15.984 3.59078 12.4096 0.0163574 8.00031 0.0163574C3.59103 0.0163574 0.0166016 3.59078 0.0166016 8.00006C0.0166016 12.4093 3.59103 15.9838 8.00031 15.9838Z\" fill=\"white\"/>\r\n <path d=\"M10.8893 13.0118H9.1367V4.34361H8.35596C6.92484 4.34361 6.17521 5.05916 6.17521 6.12731C6.17521 7.33916 6.69225 7.90065 7.76188 8.6162L8.64336 9.21028L6.11003 13.0103H4.22559L6.50559 9.61768C5.19447 8.68139 4.4567 7.76731 4.4567 6.22509C4.4567 4.29768 5.8004 2.98657 8.3441 2.98657H10.8774V13.0088H10.8893V13.0118Z\" fill=\"#FC3F1D\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_12346_12076\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </a>\r\n\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"googleCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M11.5561 4.8901H11.0997V4.86659H5.99967V7.13325H9.20219C8.73497 8.45273 7.47952 9.39992 5.99967 9.39992C4.12202 9.39992 2.59967 7.87757 2.59967 5.99992C2.59967 4.12227 4.12202 2.59992 5.99967 2.59992C6.86639 2.59992 7.65491 2.92689 8.25529 3.46097L9.85811 1.85815C8.84604 0.914935 7.49227 0.333252 5.99967 0.333252C2.87026 0.333252 0.333008 2.8705 0.333008 5.99992C0.333008 9.12934 2.87026 11.6666 5.99967 11.6666C9.12909 11.6666 11.6663 9.12934 11.6663 5.99992C11.6663 5.61997 11.6272 5.24909 11.5561 4.8901Z\" fill=\"#FBC02D\"/>\r\n <path d=\"M0.987305 3.36237L2.84909 4.72775C3.35285 3.48052 4.57289 2.59992 6.0006 2.59992C6.86732 2.59992 7.65584 2.92689 8.25622 3.46097L9.85904 1.85815C8.84697 0.914935 7.4932 0.333252 6.0006 0.333252C3.82404 0.333252 1.93647 1.56207 0.987305 3.36237Z\" fill=\"#E53935\"/>\r\n <path d=\"M6.0008 11.6665C7.4645 11.6665 8.79447 11.1063 9.80002 10.1954L8.04619 8.7113C7.47725 9.14225 6.77005 9.3998 6.0008 9.3998C4.5269 9.3998 3.27542 8.45999 2.80395 7.14844L0.956055 8.57219C1.89389 10.4073 3.79845 11.6665 6.0008 11.6665Z\" fill=\"#4CAF50\"/>\r\n <path d=\"M11.5564 4.88997L11.5519 4.86646H11.1H6V7.13312H9.20252C8.97812 7.76694 8.5704 8.31349 8.04453 8.71157C8.04482 8.71129 8.0451 8.71129 8.04538 8.71101L9.79922 10.1951C9.67512 10.3079 11.6667 8.83312 11.6667 5.99979C11.6667 5.61984 11.6276 5.24896 11.5564 4.88997Z\" fill=\"#1565C0\"/>\r\n </svg>\r\n </a>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls__button d-flex align-items-center justify-content-center\" *ngIf=\"isEditing\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"mrx-icon icon-delete icon-font-16 text-bold\" (click)=\"deleteImage()\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showDate\" class=\"mrx-gallery-item__date mb-2\">\r\n <ng-container *ngIf=\"isEditing; else dateTemplate\">\r\n <mrx-label [required]=\"requiredDate\">\u0414\u0430\u0442\u0430 \u043C\u0435\u0440\u043E\u043F\u0440\u0438\u044F\u0442\u0438\u044F</mrx-label>\r\n\r\n <mrx-input-datepicker\r\n [fields]=\"(fields$ | async)!\"\r\n [(ngModel)]=\"preview.eventDate\"\r\n [invalid]=\"isDateInvalid\"\r\n [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\"\r\n [isShowMessages]=\"false\"\r\n [invalidMessage]=\"dateInvalidMessage\"\r\n [closable]=\"false\"\r\n [format]=\"'YYYY-MM-DD'\"\r\n [timepicker]=\"false\"\r\n [leadZeroDateTime]=\"true\"\r\n [mask]=\"'d0.M0.0000'\"\r\n (modelChange)=\"changeField(ChangeableField.EventDate, $event)\"\r\n ></mrx-input-datepicker>\r\n </ng-container>\r\n\r\n <ng-template #dateTemplate>\r\n <p>\u0414\u0430\u0442\u0430 \u043C\u0435\u0440\u043E\u043F\u0440\u0438\u044F\u0442\u0438\u044F: {{ preview.eventDate | dateFormat }}</p>\r\n </ng-template>\r\n </div>\r\n\r\n <div *ngIf=\"showCounterparties\" class=\"mrx-gallery-item__counterparties mb-2\">\r\n <ng-container *ngIf=\"isEditing; else counterpartiesTemplate\">\r\n <mrx-label>\u041D\u0430\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u0435 \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430</mrx-label>\r\n\r\n <mrx-input-select\r\n [fields]=\"(fields$ | async)!\"\r\n [(ngModel)]=\"preview.counterpartySelectedIds\"\r\n [items]=\"preview.counterparties || []\"\r\n [multiple]=\"true\"\r\n [sortable]=\"true\"\r\n [clearable]=\"false\"\r\n [maxSelectedItems]=\"3\"\r\n [bindValue]=\"'value'\"\r\n [bindLabel]=\"'text'\"\r\n [placeholder]=\"'\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430'\"\r\n [checkInvalid]=\"counterpartiesCheckInvalid\"\r\n [invalid]=\"isCounterpartiesInvalid\"\r\n [invalidMessage]=\"counterpartiesInvalidMessage\"\r\n (modelChange)=\"changeField(ChangeableField.Counterparties, $event)\"\r\n >\r\n <ng-template #contentTemplate>\r\n <span class=\"py-1 px-3 mnh-px-36 d-flex align-items-center color-text-secondary\">\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043E\u0442 1 \u0434\u043E 3 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432</span>\r\n </ng-template>\r\n </mrx-input-select>\r\n </ng-container>\r\n\r\n <ng-template #counterpartiesTemplate>\r\n <p>\u041D\u0430\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u0435 \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430: {{ counterpartiesText }}</p>\r\n </ng-template>\r\n </div>\r\n\r\n <div class=\"mrx-gallery-item__description\">\r\n <mrx-input-textarea\r\n *ngIf=\"isEditing; else textTemplate\"\r\n [fields]=\"(fields$ | async)!\"\r\n [ngModel]=\"preview.description\"\r\n [autosize]=\"false\"\r\n [rows]=\"2\"\r\n [maxlength]=\"descriptionMaxLength\"\r\n [placeholder]=\"'\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u0435'\"\r\n [checkInvalid]=\"descriptionCheckInvalid\"\r\n [invalid]=\"isDescriptionInvalid\"\r\n [invalidMessage]=\"descriptionInvalidMessage\"\r\n (modelChange)=\"changeField(ChangeableField.Description, $event)\"\r\n ></mrx-input-textarea>\r\n\r\n <ng-template #textTemplate>\r\n {{ preview.description }}\r\n </ng-template>\r\n </div>\r\n</div>\r\n", styles: [".mrx-gallery-item{cursor:pointer}.mrx-gallery-item__preview{width:100%;height:180px;border-radius:4px;overflow:hidden;position:relative;margin-bottom:8px}.mrx-gallery-item__preview img{width:100%;height:100%;object-fit:cover;object-position:center top}.mrx-gallery-item__preview-overlay{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(0,0,0,0) 78.93%,rgba(0,0,0,.35) 91.52%)}.mrx-gallery-item__preview-controls{position:absolute;bottom:0;left:0;right:0;z-index:2;padding:8px;display:flex;align-items:center;justify-content:flex-end;gap:8px}.mrx-gallery-item__preview-controls--text{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height);color:var(--neutral-text-inverse);opacity:.8}.mrx-gallery-item__preview-controls--icon{width:16px;height:16px;display:flex;align-items:center;justify-content:center;background-color:#fff;border-radius:50%}.mrx-gallery-item__preview-controls__button{padding:4px;border-radius:4px;background:var(--system-white, #FFF)}.mrx-gallery-item__description{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-primary);word-break:break-word}.mrx-gallery-item__date p,.mrx-gallery-item__counterparties p{font-family:var(--body-md-bold-font-family);font-size:var(--body-md-bold-font-size);font-weight:var(--body-md-bold-font-weight);line-height:var(--body-md-bold-line-height);color:var(--neutral-text-primary)}.mrx-gallery-item ::ng-deep .ng-value-label{text-wrap:wrap;word-break:break-word}\n"] }]
170
+ args: [{ selector: 'mrx-gallery-item', changeDetection: ChangeDetectionStrategy.OnPush, providers: [MrxAutosaveService], template: "<div class=\"mrx-gallery-item\">\r\n <div class=\"mrx-gallery-item__preview\" (click)=\"onOpenGalleryModal()\">\r\n\r\n <img [src]=\"getImageUrl()\" [alt]=\"preview.imageName || 'image'\" *ngIf=\"!isLoadingImage; else skeletonTemplate\">\r\n\r\n <ng-template #skeletonTemplate>\r\n <div class=\"d-flex align-items-center justify-content-center w-100 h-100\">\r\n <mrx-loader size=\"medium\" color=\"brand\"></mrx-loader>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"mrx-gallery-item__preview-overlay\" *ngIf=\"!isLoadingImage\"></div>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls\" *ngIf=\"!isLoadingImage\">\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"yandexCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_12346_12076)\">\r\n <path d=\"M8.00031 15.9838C12.4096 15.9838 15.984 12.4093 15.984 8.00006C15.984 3.59078 12.4096 0.0163574 8.00031 0.0163574C3.59103 0.0163574 0.0166016 3.59078 0.0166016 8.00006C0.0166016 12.4093 3.59103 15.9838 8.00031 15.9838Z\" fill=\"white\"/>\r\n <path d=\"M10.8893 13.0118H9.1367V4.34361H8.35596C6.92484 4.34361 6.17521 5.05916 6.17521 6.12731C6.17521 7.33916 6.69225 7.90065 7.76188 8.6162L8.64336 9.21028L6.11003 13.0103H4.22559L6.50559 9.61768C5.19447 8.68139 4.4567 7.76731 4.4567 6.22509C4.4567 4.29768 5.8004 2.98657 8.3441 2.98657H10.8774V13.0088H10.8893V13.0118Z\" fill=\"#FC3F1D\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_12346_12076\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </a>\r\n\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"googleCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M11.5561 4.8901H11.0997V4.86659H5.99967V7.13325H9.20219C8.73497 8.45273 7.47952 9.39992 5.99967 9.39992C4.12202 9.39992 2.59967 7.87757 2.59967 5.99992C2.59967 4.12227 4.12202 2.59992 5.99967 2.59992C6.86639 2.59992 7.65491 2.92689 8.25529 3.46097L9.85811 1.85815C8.84604 0.914935 7.49227 0.333252 5.99967 0.333252C2.87026 0.333252 0.333008 2.8705 0.333008 5.99992C0.333008 9.12934 2.87026 11.6666 5.99967 11.6666C9.12909 11.6666 11.6663 9.12934 11.6663 5.99992C11.6663 5.61997 11.6272 5.24909 11.5561 4.8901Z\" fill=\"#FBC02D\"/>\r\n <path d=\"M0.987305 3.36237L2.84909 4.72775C3.35285 3.48052 4.57289 2.59992 6.0006 2.59992C6.86732 2.59992 7.65584 2.92689 8.25622 3.46097L9.85904 1.85815C8.84697 0.914935 7.4932 0.333252 6.0006 0.333252C3.82404 0.333252 1.93647 1.56207 0.987305 3.36237Z\" fill=\"#E53935\"/>\r\n <path d=\"M6.0008 11.6665C7.4645 11.6665 8.79447 11.1063 9.80002 10.1954L8.04619 8.7113C7.47725 9.14225 6.77005 9.3998 6.0008 9.3998C4.5269 9.3998 3.27542 8.45999 2.80395 7.14844L0.956055 8.57219C1.89389 10.4073 3.79845 11.6665 6.0008 11.6665Z\" fill=\"#4CAF50\"/>\r\n <path d=\"M11.5564 4.88997L11.5519 4.86646H11.1H6V7.13312H9.20252C8.97812 7.76694 8.5704 8.31349 8.04453 8.71157C8.04482 8.71129 8.0451 8.71129 8.04538 8.71101L9.79922 10.1951C9.67512 10.3079 11.6667 8.83312 11.6667 5.99979C11.6667 5.61984 11.6276 5.24896 11.5564 4.88997Z\" fill=\"#1565C0\"/>\r\n </svg>\r\n </a>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls__button d-flex align-items-center justify-content-center\" *ngIf=\"isEditing\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"mrx-icon icon-delete icon-font-16 text-bold\" (click)=\"deleteImage()\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showDate\" class=\"mrx-gallery-item__date mb-2\">\r\n <ng-container *ngIf=\"isEditing; else dateTemplate\">\r\n <mrx-label [required]=\"requiredDate\">\u0414\u0430\u0442\u0430 \u043C\u0435\u0440\u043E\u043F\u0440\u0438\u044F\u0442\u0438\u044F</mrx-label>\r\n\r\n <mrx-input-datepicker\r\n [fields]=\"(fields$ | async)!\"\r\n [(ngModel)]=\"preview.eventDate\"\r\n [invalid]=\"isDateInvalid\"\r\n [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\"\r\n [isShowMessages]=\"false\"\r\n [invalidMessage]=\"dateInvalidMessage\"\r\n [closable]=\"false\"\r\n [format]=\"'YYYY-MM-DD'\"\r\n [timepicker]=\"false\"\r\n [leadZeroDateTime]=\"true\"\r\n [mask]=\"'d0.M0.0000'\"\r\n (modelChange)=\"changeField(ChangeableField.EventDate, $event)\"\r\n ></mrx-input-datepicker>\r\n </ng-container>\r\n\r\n <ng-template #dateTemplate>\r\n <p>\u0414\u0430\u0442\u0430 \u043C\u0435\u0440\u043E\u043F\u0440\u0438\u044F\u0442\u0438\u044F: {{ preview.eventDate | dateFormat }}</p>\r\n </ng-template>\r\n </div>\r\n\r\n <div *ngIf=\"showCounterparties\" class=\"mrx-gallery-item__counterparties mb-2\">\r\n <ng-container *ngIf=\"isEditing; else counterpartiesTemplate\">\r\n <mrx-label>\u041D\u0430\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u0435 \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430</mrx-label>\r\n\r\n <mrx-input-select\r\n [fields]=\"(fields$ | async)!\"\r\n [(ngModel)]=\"preview.counterpartySelectedIds\"\r\n [items]=\"preview.counterparties || []\"\r\n [multiple]=\"true\"\r\n [sortable]=\"true\"\r\n [clearable]=\"false\"\r\n [maxSelectedItems]=\"maxSelectedItems\"\r\n [bindValue]=\"'value'\"\r\n [bindLabel]=\"'text'\"\r\n [placeholder]=\"'\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430'\"\r\n [checkInvalid]=\"counterpartiesCheckInvalid\"\r\n [invalid]=\"isCounterpartiesInvalid\"\r\n [invalidMessage]=\"counterpartiesInvalidMessage\"\r\n (modelChange)=\"changeField(ChangeableField.Counterparties, $event)\"\r\n >\r\n <ng-template #contentTemplate>\r\n <span class=\"py-1 px-3 mnh-px-36 d-flex align-items-center color-text-secondary\">{{ counterpartySelectionHint }}</span>\r\n </ng-template>\r\n </mrx-input-select>\r\n </ng-container>\r\n\r\n <ng-template #counterpartiesTemplate>\r\n <p>\u041D\u0430\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u0435 \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430: {{ counterpartiesText }}</p>\r\n </ng-template>\r\n </div>\r\n\r\n <div class=\"mrx-gallery-item__description\">\r\n <mrx-input-textarea\r\n *ngIf=\"isEditing; else textTemplate\"\r\n [fields]=\"(fields$ | async)!\"\r\n [ngModel]=\"preview.description\"\r\n [autosize]=\"false\"\r\n [rows]=\"2\"\r\n [maxlength]=\"descriptionMaxLength\"\r\n [placeholder]=\"'\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u0435'\"\r\n [checkInvalid]=\"descriptionCheckInvalid\"\r\n [invalid]=\"isDescriptionInvalid\"\r\n [invalidMessage]=\"descriptionInvalidMessage\"\r\n (modelChange)=\"changeField(ChangeableField.Description, $event)\"\r\n ></mrx-input-textarea>\r\n\r\n <ng-template #textTemplate>\r\n {{ preview.description }}\r\n </ng-template>\r\n </div>\r\n</div>\r\n", styles: [".mrx-gallery-item{cursor:pointer}.mrx-gallery-item__preview{width:100%;height:180px;border-radius:4px;overflow:hidden;position:relative;margin-bottom:8px}.mrx-gallery-item__preview img{width:100%;height:100%;object-fit:cover;object-position:center top}.mrx-gallery-item__preview-overlay{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(0,0,0,0) 78.93%,rgba(0,0,0,.35) 91.52%)}.mrx-gallery-item__preview-controls{position:absolute;bottom:0;left:0;right:0;z-index:2;padding:8px;display:flex;align-items:center;justify-content:flex-end;gap:8px}.mrx-gallery-item__preview-controls--text{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height);color:var(--neutral-text-inverse);opacity:.8}.mrx-gallery-item__preview-controls--icon{width:16px;height:16px;display:flex;align-items:center;justify-content:center;background-color:#fff;border-radius:50%}.mrx-gallery-item__preview-controls__button{padding:4px;border-radius:4px;background:var(--system-white, #FFF)}.mrx-gallery-item__description{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-primary);word-break:break-word}.mrx-gallery-item__date p,.mrx-gallery-item__counterparties p{font-family:var(--body-md-bold-font-family);font-size:var(--body-md-bold-font-size);font-weight:var(--body-md-bold-font-weight);line-height:var(--body-md-bold-line-height);color:var(--neutral-text-primary)}.mrx-gallery-item ::ng-deep .ng-value-label{text-wrap:wrap;word-break:break-word}\n"] }]
171
171
  }], ctorParameters: function () { return [{ type: i1.GalleryService }, { type: i2.SimpleModalService }, { type: i3.Store }]; }, propDecorators: { preview: [{
172
172
  type: Input
173
173
  }], index: [{
@@ -192,6 +192,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
192
192
  type: Input
193
193
  }], requiredDate: [{
194
194
  type: Input
195
+ }], maxSelectedItems: [{
196
+ type: Input
197
+ }], counterpartySelectionHint: [{
198
+ type: Input
195
199
  }], setIsLoading: [{
196
200
  type: Input,
197
201
  args: ['isLoading']
@@ -210,4 +214,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
210
214
  }], updatePhoto: [{
211
215
  type: Output
212
216
  }] } });
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVyeS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9nYWxsZXJ5L2NvbXBvbmVudHMvZ2FsbGVyeS1pdGVtL2dhbGxlcnktaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZ2FsbGVyeS9jb21wb25lbnRzL2dhbGxlcnktaXRlbS9nYWxsZXJ5LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQ0wsZUFBZSxFQUloQixNQUFNLGlDQUFpQyxDQUFDO0FBR3pDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3hHLE9BQU8sRUFDTCxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBRXJFLGtCQUFrQixFQUNsQixZQUFZLEVBQ2IsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVc5QixNQUFNLE9BQU8sb0JBQW9CO0lBbUMvQixZQUNVLGNBQThCLEVBQzlCLG1CQUF1QyxFQUN2QyxNQUFhO1FBRmIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFDdkMsV0FBTSxHQUFOLE1BQU0sQ0FBTztRQXJDZixjQUFTLEdBQVcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0MsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUdWLG9CQUFlLEdBQUcsZUFBZSxDQUFDO1FBQzNDLFlB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QVc7c0JBQXBCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZWFibGVGaWVsZCxcclxuICBHYWxsZXJ5SXRlbU1vZGVsLFxyXG4gIEdhbGxlcnlSb3RhdGVTbGlkZXMsXHJcbiAgR2FsbGVyeVVwZGF0ZVBheWxvYWRcclxufSBmcm9tICcuLi8uLi9tb2RlbHMvZ2FsbGVyeS1pdGVtLm1vZGVsJztcclxuaW1wb3J0IHsgR2FsbGVyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9nYWxsZXJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTaW1wbGVNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtc2ltcGxlLW1vZGFsJztcclxuaW1wb3J0IHsgR2FsbGVyeUNvbmZpcm1Nb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL2dhbGxlcnktY29uZmlybS1tb2RhbC9nYWxsZXJ5LWNvbmZpcm0tbW9kYWwuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBhdXRvc2F2ZUFkZElkLCBhdXRvc2F2ZUVycm9yRm9yLCBhdXRvc2F2ZVN0YXJ0Rm9yLCBhdXRvc2F2ZVN1Y2Nlc3NGb3IsXHJcbiAgRmllbGQsXHJcbiAgTXJ4QXV0b3NhdmVTZXJ2aWNlLFxyXG4gIHNlbGVjdEZpZWxkc1xyXG59IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgU3RvcmUgfSBmcm9tIFwiQG5ncngvc3RvcmVcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21yeC1nYWxsZXJ5LWl0ZW0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9nYWxsZXJ5LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2dhbGxlcnktaXRlbS5jb21wb25lbnQubGVzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW01yeEF1dG9zYXZlU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEdhbGxlcnlJdGVtQ29tcG9uZW50IHtcclxuICBwcml2YXRlIHRpbWVTdGFtcDogbnVtYmVyID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcclxuICBwcml2YXRlIGlzTG9hZGluZyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3RpbWVyITogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBDaGFuZ2VhYmxlRmllbGQgPSBDaGFuZ2VhYmxlRmllbGQ7XHJcbiAgcHVibGljIGZpZWxkcyQ6IE9ic2VydmFibGU8RmllbGRbXT4gPSB0aGlzLl9zdG9yZS5zZWxlY3Qoc2VsZWN0RmllbGRzKVxyXG5cclxuICBASW5wdXQoKSBwcmV2aWV3ITogR2FsbGVyeUl0ZW1Nb2RlbDtcclxuICBASW5wdXQoKSBpbmRleCE6IG51bWJlcjtcclxuICBASW5wdXQoKSBpc0VkaXRpbmcgPSBmYWxzZTtcclxuICBASW5wdXQoKSBkZXNjcmlwdGlvbk1heExlbmd0aCA9IDA7XHJcbiAgQElucHV0KCkgZGVsZXRlRW5kUG9pbnQhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdXBkYXRlRW5kUG9pbnQhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcm90YXRlU2xpZGVzOiBHYWxsZXJ5Um90YXRlU2xpZGVzW10gPSBbXTtcclxuICBASW5wdXQoKSBzaG93RGF0ZSE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc2hvd0NvdW50ZXJwYXJ0aWVzITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBtaW5EYXRlITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG1heERhdGUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcmVxdWlyZWREYXRlITogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KCdpc0xvYWRpbmcnKSBzZXQgc2V0SXNMb2FkaW5nKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHZhbHVlO1xyXG4gICAgdGhpcy50aW1lU3RhbXAgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgbmVlZFRvU2F2ZUludmFsaWREYXRlOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBtaW5EYXRlSW52YWxpZE1lc3NhZ2U6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIG1heERhdGVJbnZhbGlkTWVzc2FnZTogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgdmFsaWRhdGVPblN1Ym1pdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgb3BlbkdhbGxlcnlNb2RhbDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuICBAT3V0cHV0KCkgZGVsZXRlUGhvdG86IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIHVwZGF0ZVBob3RvOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZ2FsbGVyeVNlcnZpY2U6IEdhbGxlcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2ltcGxlTW9kYWxTZXJ2aWNlOiBTaW1wbGVNb2RhbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zdG9yZTogU3RvcmVcclxuICApIHtcclxuICB9XHJcblxyXG4gIGdldEltYWdlVXJsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5wcmV2aWV3LnByZXZpZXdVcmwgKyAnPycgKyB0aGlzLnRpbWVTdGFtcDtcclxuICB9XHJcblxyXG4gIGdldCB5YW5kZXhDaGVja1VybCgpIHtcclxuICAgIHJldHVybiBgaHR0cHM6Ly95YW5kZXgucnUvaW1hZ2VzL3NlYXJjaD9zb3VyY2U9Y29sbGVjdGlvbnMmcnB0PWltYWdldmlldyZ1cmw9JHt0aGlzLnByZXZpZXcudXJsfWA7XHJcbiAgfVxyXG5cclxuICBnZXQgZ29vZ2xlQ2hlY2tVcmwoKSB7XHJcbiAgICByZXR1cm4gYGh0dHBzOi8vbGVucy5nb29nbGUuY29tL3VwbG9hZGJ5dXJsP3VybD0ke3RoaXMucHJldmlldy51cmx9YDtcclxuICB9XHJcblxyXG4gIGdldCBpc0xvYWRpbmdJbWFnZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlzTG9hZGluZyAmJiAhIXRoaXMucm90YXRlU2xpZGVzLmZpbmQoKHMpID0+IHMucHJldmlld0ltYWdlSWQgPT09IHRoaXMucHJldmlldy5wcmV2aWV3SW1hZ2VJZCk7XHJcbiAgfVxyXG5cclxuICBnZXQgY291bnRlcnBhcnRpZXNUZXh0KCk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXRoaXMucHJldmlldy5jb3VudGVycGFydGllcykge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMucHJldmlldy5jb3VudGVycGFydGllcy5tYXAoaXRlbSA9PiBpdGVtLnRleHQpLmpvaW4oJywgJyk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNDb3VudGVycGFydGllc0ludmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMudmFsaWRhdGVPblN1Ym1pdCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICF0aGlzLnByZXZpZXcuY291bnRlcnBhcnR5U2VsZWN0ZWRJZHMgfHwgdGhpcy5wcmV2aWV3LmNvdW50ZXJwYXJ0eVNlbGVjdGVkSWRzLmxlbmd0aCA9PT0gMDtcclxuICB9XHJcblxyXG4gIGdldCBjb3VudGVycGFydGllc0NoZWNrSW52YWxpZCgpOiB0cnVlIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0NvdW50ZXJwYXJ0aWVzSW52YWxpZCA/IHRydWUgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNvdW50ZXJwYXJ0aWVzSW52YWxpZE1lc3NhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmlzQ291bnRlcnBhcnRpZXNJbnZhbGlkID8gJ9CS0YvQsdC10YDQuNGC0LUg0L7RgiAxINC00L4gMyDQstCw0YDQuNCw0L3RgtC+0LInIDogJyc7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNEZXNjcmlwdGlvbkludmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMudmFsaWRhdGVPblN1Ym1pdCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICF0aGlzLnByZXZpZXcuZGVzY3JpcHRpb24gfHwgIXRoaXMucHJldmlldy5kZXNjcmlwdGlvbi50cmltKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgZGVzY3JpcHRpb25DaGVja0ludmFsaWQoKTogdHJ1ZSB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNEZXNjcmlwdGlvbkludmFsaWQgPyB0cnVlIDogbnVsbDtcclxuICB9XHJcblxyXG4gIGdldCBkZXNjcmlwdGlvbkludmFsaWRNZXNzYWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0Rlc2NyaXB0aW9uSW52YWxpZCA/ICfQn9C+0LvQtSDQvtCx0Y/Qt9Cw0YLQtdC70YzQvdC+INC00LvRjyDQt9Cw0L/QvtC70L3QtdC90LjRjycgOiAnJztcclxuICB9XHJcblxyXG4gIGdldCBpc0Vycm9yTWluRGF0ZSgpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5wcmV2aWV3LmV2ZW50RGF0ZSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZmFjdERhdGUgPSBuZXcgRGF0ZSh0aGlzLnByZXZpZXcuZXZlbnREYXRlKTtcclxuICAgIHJldHVybiAhIXRoaXMubWluRGF0ZSA/IG5ldyBEYXRlKHRoaXMubWluRGF0ZSkuZ2V0VGltZSgpID4gZmFjdERhdGUuZ2V0VGltZSgpIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNFcnJvck1heERhdGUoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMucHJldmlldy5ldmVudERhdGUpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZhY3REYXRlID0gbmV3IERhdGUodGhpcy5wcmV2aWV3LmV2ZW50RGF0ZSk7XHJcbiAgICByZXR1cm4gISF0aGlzLm1heERhdGUgPyBuZXcgRGF0ZSh0aGlzLm1heERhdGUpLmdldFRpbWUoKSA8IGZhY3REYXRlLmdldFRpbWUoKSA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzRGF0ZUludmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKHRoaXMuaXNFcnJvck1pbkRhdGUgfHwgdGhpcy5pc0Vycm9yTWF4RGF0ZSkgfHxcclxuICAgICAgKCF0aGlzLnByZXZpZXcuZXZlbnREYXRlICYmIHRoaXMucmVxdWlyZWREYXRlKTtcclxuICB9XHJcblxyXG4gIGdldCBkYXRlSW52YWxpZE1lc3NhZ2UoKSB7XHJcbiAgICBpZiAoIXRoaXMucHJldmlldy5ldmVudERhdGUpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZhY3REYXRlID0gbmV3IERhdGUodGhpcy5wcmV2aWV3LmV2ZW50RGF0ZSk7XHJcbiAgICBjb25zdCBtaW5EYXRlID0gdGhpcy5taW5EYXRlID8gbmV3IERhdGUodGhpcy5taW5EYXRlKSA6IG51bGw7XHJcbiAgICBjb25zdCBtYXhEYXRlID0gdGhpcy5tYXhEYXRlID8gbmV3IERhdGUodGhpcy5tYXhEYXRlKSA6IG51bGw7XHJcblxyXG4gICAgaWYgKG1pbkRhdGUgJiYgbWluRGF0ZS5nZXRUaW1lKCkgPiBmYWN0RGF0ZS5nZXRUaW1lKCkpIHtcclxuICAgICAgcmV0dXJuICEhdGhpcy5taW5EYXRlSW52YWxpZE1lc3NhZ2UgPyB0aGlzLm1pbkRhdGVJbnZhbGlkTWVzc2FnZSA6IHRoaXMuZm9ybWF0RGF0ZUVycm9yTWVzc2FnZSh0aGlzLm1pbkRhdGUsICfQndC10LvRjNC30Y8g0YPRgdGC0LDQvdC+0LLQuNGC0Ywg0LTQsNGC0YMsINGA0LDQvdC10LUg0YfQtdC8Jyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG1heERhdGUgJiYgbWF4RGF0ZS5nZXRUaW1lKCkgPCBmYWN0RGF0ZS5nZXRUaW1lKCkpIHtcclxuICAgICAgcmV0dXJuICEhdGhpcy5tYXhEYXRlSW52YWxpZE1lc3NhZ2UgPyB0aGlzLm1heERhdGVJbnZhbGlkTWVzc2FnZSA6IHRoaXMuZm9ybWF0RGF0ZUVycm9yTWVzc2FnZSh0aGlzLm1heERhdGUsICfQndC10LvRjNC30Y8g0YPRgdGC0LDQvdC+0LLQuNGC0Ywg0LTQsNGC0YMsINC/0L7Qt9C00L3QtdC1INGH0LXQvCcpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG5cclxuICBmb3JtYXREYXRlRXJyb3JNZXNzYWdlKGRhdGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSBuZXcgRGF0ZShkYXRlKS50b0xvY2FsZURhdGVTdHJpbmcoJ3J1LVJVJywge1xyXG4gICAgICBkYXk6ICcyLWRpZ2l0JyxcclxuICAgICAgbW9udGg6ICcyLWRpZ2l0JyxcclxuICAgICAgeWVhcjogJ251bWVyaWMnXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBgJHttZXNzYWdlfSAke2Zvcm1hdHRlZERhdGV9YDtcclxuICB9XHJcblxyXG4gIG9uT3BlbkdhbGxlcnlNb2RhbCgpIHtcclxuICAgIHRoaXMub3BlbkdhbGxlcnlNb2RhbC5lbWl0KHRoaXMuaW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlSW1hZ2UoKSB7XHJcbiAgICB0aGlzLl9zaW1wbGVNb2RhbFNlcnZpY2UuYWRkTW9kYWwoR2FsbGVyeUNvbmZpcm1Nb2RhbENvbXBvbmVudCwge1xyXG4gICAgICB0aXRsZTogJ9Cj0JTQkNCb0JXQndCY0JUg0KTQntCi0J7Qk9Cg0JDQpNCY0JgnLFxyXG4gICAgICBtZXNzYWdlOiAn0JLRiyDRhdC+0YLQuNGC0LUg0YPQtNCw0LvQuNGC0Ywg0YTQvtGC0L7Qs9GA0LDRhNC40Y4/J1xyXG4gICAgfSwge3dyYXBwZXJEZWZhdWx0Q2xhc3NlczogJ21yeC1tb2RhbCBmYWRlLWFuaW0nfSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcy5yZXN1bHQpIHtcclxuICAgICAgICAgIHRoaXMuZ2FsbGVyeVNlcnZpY2UuZGVsZXRlKHRoaXMuZGVsZXRlRW5kUG9pbnQsIHRoaXMucHJldmlldy51dWlkKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kZWxldGVQaG90by5lbWl0KHJlcyk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBjaGFuZ2VGaWVsZChmaWVsZDogQ2hhbmdlYWJsZUZpZWxkLCBvYmo6IGFueSkge1xyXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyKTtcclxuXHJcbiAgICB0aGlzLnByZXZpZXdbZmllbGRdID0gb2JqLnZhbHVlO1xyXG5cclxuICAgIGlmKCF0aGlzLm5lZWRUb1NhdmVJbnZhbGlkRGF0ZSAmJiB0aGlzLmlzRGF0ZUludmFsaWQpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChhdXRvc2F2ZUFkZElkKHtpZDogb2JqLmlkLCBncm91cElkOiB0aGlzLnByZXZpZXcudXVpZH0pKVxyXG4gICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2goYXV0b3NhdmVTdGFydEZvcih7aWQ6IG9iai5pZCwgZ3JvdXBJZDogdGhpcy5wcmV2aWV3LnV1aWR9KSlcclxuXHJcbiAgICB0aGlzLl90aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCB1cGRhdGVEYXRhOiBHYWxsZXJ5VXBkYXRlUGF5bG9hZCA9IHtcclxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5wcmV2aWV3LmRlc2NyaXB0aW9uXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBpZiAodGhpcy5wcmV2aWV3LmV2ZW50RGF0ZSkge1xyXG4gICAgICAgIHVwZGF0ZURhdGEuZXZlbnREYXRlID0gdGhpcy5wcmV2aWV3LmV2ZW50RGF0ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMucHJldmlldy5jb3VudGVycGFydHlTZWxlY3RlZElkcykge1xyXG4gICAgICAgIHVwZGF0ZURhdGEuY291bnRlcnBhcnR5U2VsZWN0ZWRJZHMgPSB0aGlzLnByZXZpZXcuY291bnRlcnBhcnR5U2VsZWN0ZWRJZHM7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZ2FsbGVyeVNlcnZpY2UudXBkYXRlKHRoaXMudXBkYXRlRW5kUG9pbnQsIHRoaXMucHJldmlldy51dWlkLCB1cGRhdGVEYXRhKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVBob3RvLmVtaXQocmVzKTtcclxuICAgICAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChhdXRvc2F2ZVN1Y2Nlc3NGb3Ioe2lkOiBvYmouaWQsIGdyb3VwSWQ6IHRoaXMucHJldmlldy51dWlkfSkpXHJcbiAgICAgIH0sICgpID0+IHtcclxuICAgICAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChhdXRvc2F2ZUVycm9yRm9yKHtpZDogb2JqLmlkLCBncm91cElkOiB0aGlzLnByZXZpZXcudXVpZH0pKVxyXG4gICAgICB9KTtcclxuICAgIH0sIDE1MDApO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibXJ4LWdhbGxlcnktaXRlbVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJtcngtZ2FsbGVyeS1pdGVtX19wcmV2aWV3XCIgKGNsaWNrKT1cIm9uT3BlbkdhbGxlcnlNb2RhbCgpXCI+XHJcblxyXG4gICAgPGltZyBbc3JjXT1cImdldEltYWdlVXJsKClcIiBbYWx0XT1cInByZXZpZXcuaW1hZ2VOYW1lIHx8ICdpbWFnZSdcIiAqbmdJZj1cIiFpc0xvYWRpbmdJbWFnZTsgZWxzZSBza2VsZXRvblRlbXBsYXRlXCI+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICNza2VsZXRvblRlbXBsYXRlPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHctMTAwIGgtMTAwXCI+XHJcbiAgICAgICAgPG1yeC1sb2FkZXIgc2l6ZT1cIm1lZGl1bVwiIGNvbG9yPVwiYnJhbmRcIj48L21yeC1sb2FkZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibXJ4LWdhbGxlcnktaXRlbV9fcHJldmlldy1vdmVybGF5XCIgKm5nSWY9XCIhaXNMb2FkaW5nSW1hZ2VcIj48L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibXJ4LWdhbGxlcnktaXRlbV9fcHJldmlldy1jb250cm9sc1wiICpuZ0lmPVwiIWlzTG9hZGluZ0ltYWdlXCI+XHJcbiAgICAgIDxhIGNsYXNzPVwibXJ4LWdhbGxlcnktaXRlbV9fcHJldmlldy1jb250cm9scy0taWNvblwiIFtocmVmXT1cInlhbmRleENoZWNrVXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xMjM0Nl8xMjA3NilcIj5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk04LjAwMDMxIDE1Ljk4MzhDMTIuNDA5NiAxNS45ODM4IDE1Ljk4NCAxMi40MDkzIDE1Ljk4NCA4LjAwMDA2QzE1Ljk4NCAzLjU5MDc4IDEyLjQwOTYgMC4wMTYzNTc0IDguMDAwMzEgMC4wMTYzNTc0QzMuNTkxMDMgMC4wMTYzNTc0IDAuMDE2NjAxNiAzLjU5MDc4IDAuMDE2NjAxNiA4LjAwMDA2QzAuMDE2NjAxNiAxMi40MDkzIDMuNTkxMDMgMTUuOTgzOCA4LjAwMDMxIDE1Ljk4MzhaXCIgZmlsbD1cIndoaXRlXCIvPlxyXG4gICAgICAgICAgICA8cGF0aCBkPVwiTTEwLjg4OTMgMTMuMDExOEg5LjEzNjdWNC4zNDM2MUg4LjM1NTk2QzYuOTI0ODQgNC4zNDM2MSA2LjE3NTIxIDUuMDU5MTYgNi4xNzUyMSA2LjEyNzMxQzYuMTc1MjEgNy4zMzkxNiA2LjY5MjI1IDcuOTAwNjUgNy43NjE4OCA4LjYxNjJMOC42NDMzNiA5LjIxMDI4TDYuMTEwMDMgMTMuMDEwM0g0LjIyNTU5TDYuNTA1NTkgOS42MTc2OEM1LjE5NDQ3IDguNjgxMzkgNC40NTY3IDcuNzY3MzEgNC40NTY3IDYuMjI1MDlDNC40NTY3IDQuMjk3NjggNS44MDA0IDIuOTg2NTcgOC4zNDQxIDIuOTg2NTdIMTAuODc3NFYxMy4wMDg4SDEwLjg4OTNWMTMuMDExOFpcIiBmaWxsPVwiI0ZDM0YxRFwiLz5cclxuICAgICAgICAgIDwvZz5cclxuICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xMjM0Nl8xMjA3NlwiPlxyXG4gICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiLz5cclxuICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9hPlxyXG5cclxuICAgICAgPGEgY2xhc3M9XCJtcngtZ2FsbGVyeS1pdGVtX19wcmV2aWV3LWNvbnRyb2xzLS1pY29uXCIgW2hyZWZdPVwiZ29vZ2xlQ2hlY2tVcmxcIiB0YXJnZXQ9XCJfYmxhbmtcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTExLjU1NjEgNC44OTAxSDExLjA5OTdWNC44NjY1OUg1Ljk5OTY3VjcuMTMzMjVIOS4yMDIxOUM4LjczNDk3IDguNDUyNzMgNy40Nzk1MiA5LjM5OTkyIDUuOTk5NjcgOS4zOTk5MkM0LjEyMjAyIDkuMzk5OTIgMi41OTk2NyA3Ljg3NzU3IDIuNTk5NjcgNS45OTk5MkMyLjU5OTY3IDQuMTIyMjcgNC4xMjIwMiAyLjU5OTkyIDUuOTk5NjcgMi41OTk5MkM2Ljg2NjM5IDIuNTk5OTIgNy42NTQ5MSAyLjkyNjg5IDguMjU1MjkgMy40NjA5N0w5Ljg1ODExIDEuODU4MTVDOC44NDYwNCAwLjkxNDkzNSA3LjQ5MjI3IDAuMzMzMjUyIDUuOTk5NjcgMC4zMzMyNTJDMi44NzAyNiAwLjMzMzI1MiAwLjMzMzAwOCAyLjg3MDUgMC4zMzMwMDggNS45OTk5MkMwLjMzMzAwOCA5LjEyOTM0IDIuODcwMjYgMTEuNjY2NiA1Ljk5OTY3IDExLjY2NjZDOS4xMjkwOSAxMS42NjY2IDExLjY2NjMgOS4xMjkzNCAxMS42NjYzIDUuOTk5OTJDMTEuNjY2MyA1LjYxOTk3IDExLjYyNzIgNS4yNDkwOSAxMS41NTYxIDQuODkwMVpcIiBmaWxsPVwiI0ZCQzAyRFwiLz5cclxuICAgICAgICAgIDxwYXRoIGQ9XCJNMC45ODczMDUgMy4zNjIzN0wyLjg0OTA5IDQuNzI3NzVDMy4zNTI4NSAzLjQ4MDUyIDQuNTcyODkgMi41OTk5MiA2LjAwMDYgMi41OTk5MkM2Ljg2NzMyIDIuNTk5OTIgNy42NTU4NCAyLjkyNjg5IDguMjU2MjIgMy40NjA5N0w5Ljg1OTA0IDEuODU4MTVDOC44NDY5NyAwLjkxNDkzNSA3LjQ5MzIgMC4zMzMyNTIgNi4wMDA2IDAuMzMzMjUyQzMuODI0MDQgMC4zMzMyNTIgMS45MzY0NyAxLjU2MjA3IDAuOTg3MzA1IDMuMzYyMzdaXCIgZmlsbD1cIiNFNTM5MzVcIi8+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwOCAxMS42NjY1QzcuNDY0NSAxMS42NjY1IDguNzk0NDcgMTEuMTA2MyA5LjgwMDAyIDEwLjE5NTRMOC4wNDYxOSA4LjcxMTNDNy40NzcyNSA5LjE0MjI1IDYuNzcwMDUgOS4zOTk4IDYuMDAwOCA5LjM5OThDNC41MjY5IDkuMzk5OCAzLjI3NTQyIDguNDU5OTkgMi44MDM5NSA3LjE0ODQ0TDAuOTU2MDU1IDguNTcyMTlDMS44OTM4OSAxMC40MDczIDMuNzk4NDUgMTEuNjY2NSA2LjAwMDggMTEuNjY2NVpcIiBmaWxsPVwiIzRDQUY1MFwiLz5cclxuICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNTU2NCA0Ljg4OTk3TDExLjU1MTkgNC44NjY0NkgxMS4xSDZWNy4xMzMxMkg5LjIwMjUyQzguOTc4MTIgNy43NjY5NCA4LjU3MDQgOC4zMTM0OSA4LjA0NDUzIDguNzExNTdDOC4wNDQ4MiA4LjcxMTI5IDguMDQ1MSA4LjcxMTI5IDguMDQ1MzggOC43MTEwMUw5Ljc5OTIyIDEwLjE5NTFDOS42NzUxMiAxMC4zMDc5IDExLjY2NjcgOC44MzMxMiAxMS42NjY3IDUuOTk5NzlDMTEuNjY2NyA1LjYxOTg0IDExLjYyNzYgNS4yNDg5NiAxMS41NTY0IDQuODg5OTdaXCIgZmlsbD1cIiMxNTY1QzBcIi8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvYT5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtcngtZ2FsbGVyeS1pdGVtX19wcmV2aWV3LWNvbnRyb2xzX19idXR0b24gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgKm5nSWY9XCJpc0VkaXRpbmdcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWRlbGV0ZSBpY29uLWZvbnQtMTYgdGV4dC1ib2xkXCIgKGNsaWNrKT1cImRlbGV0ZUltYWdlKClcIj48L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJzaG93RGF0ZVwiIGNsYXNzPVwibXJ4LWdhbGxlcnktaXRlbV9fZGF0ZSBtYi0yXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFZGl0aW5nOyBlbHNlIGRhdGVUZW1wbGF0ZVwiPlxyXG4gICAgICA8bXJ4LWxhYmVsIFtyZXF1aXJlZF09XCJyZXF1aXJlZERhdGVcIj7QlNCw0YLQsCDQvNC10YDQvtC/0YDQuNGP0YLQuNGPPC9tcngtbGFiZWw+XHJcblxyXG4gICAgICA8bXJ4LWlucHV0LWRhdGVwaWNrZXJcclxuICAgICAgICBbZmllbGRzXT1cIihmaWVsZHMkIHwgYXN5bmMpIVwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJwcmV2aWV3LmV2ZW50RGF0ZVwiXHJcbiAgICAgICAgW2ludmFsaWRdPVwiaXNEYXRlSW52YWxpZFwiXHJcbiAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXHJcbiAgICAgICAgW21heERhdGVdPVwibWF4RGF0ZVwiXHJcbiAgICAgICAgW2lzU2hvd01lc3NhZ2VzXT1cImZhbHNlXCJcclxuICAgICAgICBbaW52YWxpZE1lc3NhZ2VdPVwiZGF0ZUludmFsaWRNZXNzYWdlXCJcclxuICAgICAgICBbY2xvc2FibGVdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtmb3JtYXRdPVwiJ1lZWVktTU0tREQnXCJcclxuICAgICAgICBbdGltZXBpY2tlcl09XCJmYWxzZVwiXHJcbiAgICAgICAgW2xlYWRaZXJvRGF0ZVRpbWVdPVwidHJ1ZVwiXHJcbiAgICAgICAgW21hc2tdPVwiJ2QwLk0wLjAwMDAnXCJcclxuICAgICAgICAobW9kZWxDaGFuZ2UpPVwiY2hhbmdlRmllbGQoQ2hhbmdlYWJsZUZpZWxkLkV2ZW50RGF0ZSwgJGV2ZW50KVwiXHJcbiAgICAgID48L21yeC1pbnB1dC1kYXRlcGlja2VyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICNkYXRlVGVtcGxhdGU+XHJcbiAgICAgIDxwPtCU0LDRgtCwINC80LXRgNC+0L/RgNC40Y/RgtC40Y86IHt7IHByZXZpZXcuZXZlbnREYXRlIHwgZGF0ZUZvcm1hdCB9fTwvcD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJzaG93Q291bnRlcnBhcnRpZXNcIiBjbGFzcz1cIm1yeC1nYWxsZXJ5LWl0ZW1fX2NvdW50ZXJwYXJ0aWVzIG1iLTJcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0VkaXRpbmc7IGVsc2UgY291bnRlcnBhcnRpZXNUZW1wbGF0ZVwiPlxyXG4gICAgICA8bXJ4LWxhYmVsPtCd0LDQuNC80LXQvdC+0LLQsNC90LjQtSDQutC+0L3RgtGA0LDQs9C10L3RgtCwPC9tcngtbGFiZWw+XHJcblxyXG4gICAgICA8bXJ4LWlucHV0LXNlbGVjdFxyXG4gICAgICAgIFtmaWVsZHNdPVwiKGZpZWxkcyQgfCBhc3luYykhXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cInByZXZpZXcuY291bnRlcnBhcnR5U2VsZWN0ZWRJZHNcIlxyXG4gICAgICAgIFtpdGVtc109XCJwcmV2aWV3LmNvdW50ZXJwYXJ0aWVzIHx8IFtdXCJcclxuICAgICAgICBbbXVsdGlwbGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3NvcnRhYmxlXT1cInRydWVcIlxyXG4gICAgICAgIFtjbGVhcmFibGVdPVwiZmFsc2VcIlxyXG4gICAgICAgIFttYXhTZWxlY3RlZEl0ZW1zXT1cIjNcIlxyXG4gICAgICAgIFtiaW5kVmFsdWVdPVwiJ3ZhbHVlJ1wiXHJcbiAgICAgICAgW2JpbmRMYWJlbF09XCIndGV4dCdcIlxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCIn0JLRi9Cx0LXRgNC40YLQtSDQutC+0L3RgtGA0LDQs9C10L3RgtCwJ1wiXHJcbiAgICAgICAgW2NoZWNrSW52YWxpZF09XCJjb3VudGVycGFydGllc0NoZWNrSW52YWxpZFwiXHJcbiAgICAgICAgW2ludmFsaWRdPVwiaXNDb3VudGVycGFydGllc0ludmFsaWRcIlxyXG4gICAgICAgIFtpbnZhbGlkTWVzc2FnZV09XCJjb3VudGVycGFydGllc0ludmFsaWRNZXNzYWdlXCJcclxuICAgICAgICAobW9kZWxDaGFuZ2UpPVwiY2hhbmdlRmllbGQoQ2hhbmdlYWJsZUZpZWxkLkNvdW50ZXJwYXJ0aWVzLCAkZXZlbnQpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjY29udGVudFRlbXBsYXRlPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJweS0xIHB4LTMgbW5oLXB4LTM2IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgY29sb3ItdGV4dC1zZWNvbmRhcnlcIj7QktGL0LHQtdGA0LjRgtC1INC+0YIgMSDQtNC+IDMg0LLQsNGA0LjQsNC90YLQvtCyPC9zcGFuPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvbXJ4LWlucHV0LXNlbGVjdD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjY291bnRlcnBhcnRpZXNUZW1wbGF0ZT5cclxuICAgICAgPHA+0J3QsNC40LzQtdC90L7QstCw0L3QuNC1INC60L7QvdGC0YDQsNCz0LXQvdGC0LA6IHt7IGNvdW50ZXJwYXJ0aWVzVGV4dCB9fTwvcD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJtcngtZ2FsbGVyeS1pdGVtX19kZXNjcmlwdGlvblwiPlxyXG4gICAgPG1yeC1pbnB1dC10ZXh0YXJlYVxyXG4gICAgICAqbmdJZj1cImlzRWRpdGluZzsgZWxzZSB0ZXh0VGVtcGxhdGVcIlxyXG4gICAgICBbZmllbGRzXT1cIihmaWVsZHMkIHwgYXN5bmMpIVwiXHJcbiAgICAgIFtuZ01vZGVsXT1cInByZXZpZXcuZGVzY3JpcHRpb25cIlxyXG4gICAgICBbYXV0b3NpemVdPVwiZmFsc2VcIlxyXG4gICAgICBbcm93c109XCIyXCJcclxuICAgICAgW21heGxlbmd0aF09XCJkZXNjcmlwdGlvbk1heExlbmd0aFwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCIn0JLQstC10LTQuNGC0LUg0L7Qv9C40YHQsNC90LjQtSdcIlxyXG4gICAgICBbY2hlY2tJbnZhbGlkXT1cImRlc2NyaXB0aW9uQ2hlY2tJbnZhbGlkXCJcclxuICAgICAgW2ludmFsaWRdPVwiaXNEZXNjcmlwdGlvbkludmFsaWRcIlxyXG4gICAgICBbaW52YWxpZE1lc3NhZ2VdPVwiZGVzY3JpcHRpb25JbnZhbGlkTWVzc2FnZVwiXHJcbiAgICAgIChtb2RlbENoYW5nZSk9XCJjaGFuZ2VGaWVsZChDaGFuZ2VhYmxlRmllbGQuRGVzY3JpcHRpb24sICRldmVudClcIlxyXG4gICAgPjwvbXJ4LWlucHV0LXRleHRhcmVhPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjdGV4dFRlbXBsYXRlPlxyXG4gICAgICB7eyBwcmV2aWV3LmRlc2NyaXB0aW9uIH19XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVyeS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9nYWxsZXJ5L2NvbXBvbmVudHMvZ2FsbGVyeS1pdGVtL2dhbGxlcnktaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZ2FsbGVyeS9jb21wb25lbnRzL2dhbGxlcnktaXRlbS9nYWxsZXJ5LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQ0wsZUFBZSxFQUloQixNQUFNLGlDQUFpQyxDQUFDO0FBR3pDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3hHLE9BQU8sRUFDTCxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBRXJFLGtCQUFrQixFQUNsQixZQUFZLEVBQ2IsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVc5QixNQUFNLE9BQU8sb0JBQW9CO0lBcUMvQixZQUNVLGNBQThCLEVBQzlCLG1CQUF1QyxFQUN2QyxNQUFhO1FBRmIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFDdkMsV0FBTSxHQUFOLE1BQU0sQ0FBTztRQXZDZixjQUFTLEdBQVcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0MsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUdWLG9CQUFlLEdBQUcsZUFBZSxDQUFDO1FBQzNDLFlB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QUFnQjtzQkFBeEIsS0FBSztnQkFFSSxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlYWJsZUZpZWxkLFxyXG4gIEdhbGxlcnlJdGVtTW9kZWwsXHJcbiAgR2FsbGVyeVJvdGF0ZVNsaWRlcyxcclxuICBHYWxsZXJ5VXBkYXRlUGF5bG9hZFxyXG59IGZyb20gJy4uLy4uL21vZGVscy9nYWxsZXJ5LWl0ZW0ubW9kZWwnO1xyXG5pbXBvcnQgeyBHYWxsZXJ5U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2dhbGxlcnkuc2VydmljZSc7XHJcbmltcG9ydCB7IFNpbXBsZU1vZGFsU2VydmljZSB9IGZyb20gJ25neC1zaW1wbGUtbW9kYWwnO1xyXG5pbXBvcnQgeyBHYWxsZXJ5Q29uZmlybU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vZ2FsbGVyeS1jb25maXJtLW1vZGFsL2dhbGxlcnktY29uZmlybS1tb2RhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gIGF1dG9zYXZlQWRkSWQsIGF1dG9zYXZlRXJyb3JGb3IsIGF1dG9zYXZlU3RhcnRGb3IsIGF1dG9zYXZlU3VjY2Vzc0ZvcixcclxuICBGaWVsZCxcclxuICBNcnhBdXRvc2F2ZVNlcnZpY2UsXHJcbiAgc2VsZWN0RmllbGRzXHJcbn0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gXCJAbmdyeC9zdG9yZVwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXJ4LWdhbGxlcnktaXRlbScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dhbGxlcnktaXRlbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ2FsbGVyeS1pdGVtLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbTXJ4QXV0b3NhdmVTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgR2FsbGVyeUl0ZW1Db21wb25lbnQge1xyXG4gIHByaXZhdGUgdGltZVN0YW1wOiBudW1iZXIgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xyXG4gIHByaXZhdGUgaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfdGltZXIhOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IENoYW5nZWFibGVGaWVsZCA9IENoYW5nZWFibGVGaWVsZDtcclxuICBwdWJsaWMgZmllbGRzJDogT2JzZXJ2YWJsZTxGaWVsZFtdPiA9IHRoaXMuX3N0b3JlLnNlbGVjdChzZWxlY3RGaWVsZHMpXHJcblxyXG4gIEBJbnB1dCgpIHByZXZpZXchOiBHYWxsZXJ5SXRlbU1vZGVsO1xyXG4gIEBJbnB1dCgpIGluZGV4ITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGlzRWRpdGluZyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uTWF4TGVuZ3RoID0gMDtcclxuICBASW5wdXQoKSBkZWxldGVFbmRQb2ludCE6IHN0cmluZztcclxuICBASW5wdXQoKSB1cGRhdGVFbmRQb2ludCE6IHN0cmluZztcclxuICBASW5wdXQoKSByb3RhdGVTbGlkZXM6IEdhbGxlcnlSb3RhdGVTbGlkZXNbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHNob3dEYXRlITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzaG93Q291bnRlcnBhcnRpZXMhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIG1pbkRhdGUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbWF4RGF0ZSE6IHN0cmluZztcclxuICBASW5wdXQoKSByZXF1aXJlZERhdGUhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIG1heFNlbGVjdGVkSXRlbXMhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgY291bnRlcnBhcnR5U2VsZWN0aW9uSGludCE6IHN0cmluZztcclxuXHJcbiAgQElucHV0KCdpc0xvYWRpbmcnKSBzZXQgc2V0SXNMb2FkaW5nKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHZhbHVlO1xyXG4gICAgdGhpcy50aW1lU3RhbXAgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgbmVlZFRvU2F2ZUludmFsaWREYXRlOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBtaW5EYXRlSW52YWxpZE1lc3NhZ2U6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIG1heERhdGVJbnZhbGlkTWVzc2FnZTogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgdmFsaWRhdGVPblN1Ym1pdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgb3BlbkdhbGxlcnlNb2RhbDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuICBAT3V0cHV0KCkgZGVsZXRlUGhvdG86IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIHVwZGF0ZVBob3RvOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZ2FsbGVyeVNlcnZpY2U6IEdhbGxlcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2ltcGxlTW9kYWxTZXJ2aWNlOiBTaW1wbGVNb2RhbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zdG9yZTogU3RvcmVcclxuICApIHtcclxuICB9XHJcblxyXG4gIGdldEltYWdlVXJsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5wcmV2aWV3LnByZXZpZXdVcmwgKyAnPycgKyB0aGlzLnRpbWVTdGFtcDtcclxuICB9XHJcblxyXG4gIGdldCB5YW5kZXhDaGVja1VybCgpIHtcclxuICAgIHJldHVybiBgaHR0cHM6Ly95YW5kZXgucnUvaW1hZ2VzL3NlYXJjaD9zb3VyY2U9Y29sbGVjdGlvbnMmcnB0PWltYWdldmlldyZ1cmw9JHt0aGlzLnByZXZpZXcudXJsfWA7XHJcbiAgfVxyXG5cclxuICBnZXQgZ29vZ2xlQ2hlY2tVcmwoKSB7XHJcbiAgICByZXR1cm4gYGh0dHBzOi8vbGVucy5nb29nbGUuY29tL3VwbG9hZGJ5dXJsP3VybD0ke3RoaXMucHJldmlldy51cmx9YDtcclxuICB9XHJcblxyXG4gIGdldCBpc0xvYWRpbmdJbWFnZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlzTG9hZGluZyAmJiAhIXRoaXMucm90YXRlU2xpZGVzLmZpbmQoKHMpID0+IHMucHJldmlld0ltYWdlSWQgPT09IHRoaXMucHJldmlldy5wcmV2aWV3SW1hZ2VJZCk7XHJcbiAgfVxyXG5cclxuICBnZXQgY291bnRlcnBhcnRpZXNUZXh0KCk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXRoaXMucHJldmlldy5jb3VudGVycGFydGllcykge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMucHJldmlldy5jb3VudGVycGFydGllcy5tYXAoaXRlbSA9PiBpdGVtLnRleHQpLmpvaW4oJywgJyk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNDb3VudGVycGFydGllc0ludmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMudmFsaWRhdGVPblN1Ym1pdCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICF0aGlzLnByZXZpZXcuY291bnRlcnBhcnR5U2VsZWN0ZWRJZHMgfHwgdGhpcy5wcmV2aWV3LmNvdW50ZXJwYXJ0eVNlbGVjdGVkSWRzLmxlbmd0aCA9PT0gMDtcclxuICB9XHJcblxyXG4gIGdldCBjb3VudGVycGFydGllc0NoZWNrSW52YWxpZCgpOiB0cnVlIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0NvdW50ZXJwYXJ0aWVzSW52YWxpZCA/IHRydWUgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNvdW50ZXJwYXJ0aWVzSW52YWxpZE1lc3NhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmlzQ291bnRlcnBhcnRpZXNJbnZhbGlkID8gJ9CS0YvQsdC10YDQuNGC0LUg0L7RgiAxINC00L4gMyDQstCw0YDQuNCw0L3RgtC+0LInIDogJyc7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNEZXNjcmlwdGlvbkludmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMudmFsaWRhdGVPblN1Ym1pdCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICF0aGlzLnByZXZpZXcuZGVzY3JpcHRpb24gfHwgIXRoaXMucHJldmlldy5kZXNjcmlwdGlvbi50cmltKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgZGVzY3JpcHRpb25DaGVja0ludmFsaWQoKTogdHJ1ZSB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNEZXNjcmlwdGlvbkludmFsaWQgPyB0cnVlIDogbnVsbDtcclxuICB9XHJcblxyXG4gIGdldCBkZXNjcmlwdGlvbkludmFsaWRNZXNzYWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0Rlc2NyaXB0aW9uSW52YWxpZCA/ICfQn9C+0LvQtSDQvtCx0Y/Qt9Cw0YLQtdC70YzQvdC+INC00LvRjyDQt9Cw0L/QvtC70L3QtdC90LjRjycgOiAnJztcclxuICB9XHJcblxyXG4gIGdldCBpc0Vycm9yTWluRGF0ZSgpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5wcmV2aWV3LmV2ZW50RGF0ZSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZmFjdERhdGUgPSBuZXcgRGF0ZSh0aGlzLnByZXZpZXcuZXZlbnREYXRlKTtcclxuICAgIHJldHVybiAhIXRoaXMubWluRGF0ZSA/IG5ldyBEYXRlKHRoaXMubWluRGF0ZSkuZ2V0VGltZSgpID4gZmFjdERhdGUuZ2V0VGltZSgpIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNFcnJvck1heERhdGUoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMucHJldmlldy5ldmVudERhdGUpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZhY3REYXRlID0gbmV3IERhdGUodGhpcy5wcmV2aWV3LmV2ZW50RGF0ZSk7XHJcbiAgICByZXR1cm4gISF0aGlzLm1heERhdGUgPyBuZXcgRGF0ZSh0aGlzLm1heERhdGUpLmdldFRpbWUoKSA8IGZhY3REYXRlLmdldFRpbWUoKSA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzRGF0ZUludmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKHRoaXMuaXNFcnJvck1pbkRhdGUgfHwgdGhpcy5pc0Vycm9yTWF4RGF0ZSkgfHxcclxuICAgICAgKCF0aGlzLnByZXZpZXcuZXZlbnREYXRlICYmIHRoaXMucmVxdWlyZWREYXRlKTtcclxuICB9XHJcblxyXG4gIGdldCBkYXRlSW52YWxpZE1lc3NhZ2UoKSB7XHJcbiAgICBpZiAoIXRoaXMucHJldmlldy5ldmVudERhdGUpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZhY3REYXRlID0gbmV3IERhdGUodGhpcy5wcmV2aWV3LmV2ZW50RGF0ZSk7XHJcbiAgICBjb25zdCBtaW5EYXRlID0gdGhpcy5taW5EYXRlID8gbmV3IERhdGUodGhpcy5taW5EYXRlKSA6IG51bGw7XHJcbiAgICBjb25zdCBtYXhEYXRlID0gdGhpcy5tYXhEYXRlID8gbmV3IERhdGUodGhpcy5tYXhEYXRlKSA6IG51bGw7XHJcblxyXG4gICAgaWYgKG1pbkRhdGUgJiYgbWluRGF0ZS5nZXRUaW1lKCkgPiBmYWN0RGF0ZS5nZXRUaW1lKCkpIHtcclxuICAgICAgcmV0dXJuICEhdGhpcy5taW5EYXRlSW52YWxpZE1lc3NhZ2UgPyB0aGlzLm1pbkRhdGVJbnZhbGlkTWVzc2FnZSA6IHRoaXMuZm9ybWF0RGF0ZUVycm9yTWVzc2FnZSh0aGlzLm1pbkRhdGUsICfQndC10LvRjNC30Y8g0YPRgdGC0LDQvdC+0LLQuNGC0Ywg0LTQsNGC0YMsINGA0LDQvdC10LUg0YfQtdC8Jyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG1heERhdGUgJiYgbWF4RGF0ZS5nZXRUaW1lKCkgPCBmYWN0RGF0ZS5nZXRUaW1lKCkpIHtcclxuICAgICAgcmV0dXJuICEhdGhpcy5tYXhEYXRlSW52YWxpZE1lc3NhZ2UgPyB0aGlzLm1heERhdGVJbnZhbGlkTWVzc2FnZSA6IHRoaXMuZm9ybWF0RGF0ZUVycm9yTWVzc2FnZSh0aGlzLm1heERhdGUsICfQndC10LvRjNC30Y8g0YPRgdGC0LDQvdC+0LLQuNGC0Ywg0LTQsNGC0YMsINC/0L7Qt9C00L3QtdC1INGH0LXQvCcpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG5cclxuICBmb3JtYXREYXRlRXJyb3JNZXNzYWdlKGRhdGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSBuZXcgRGF0ZShkYXRlKS50b0xvY2FsZURhdGVTdHJpbmcoJ3J1LVJVJywge1xyXG4gICAgICBkYXk6ICcyLWRpZ2l0JyxcclxuICAgICAgbW9udGg6ICcyLWRpZ2l0JyxcclxuICAgICAgeWVhcjogJ251bWVyaWMnXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBgJHttZXNzYWdlfSAke2Zvcm1hdHRlZERhdGV9YDtcclxuICB9XHJcblxyXG4gIG9uT3BlbkdhbGxlcnlNb2RhbCgpIHtcclxuICAgIHRoaXMub3BlbkdhbGxlcnlNb2RhbC5lbWl0KHRoaXMuaW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlSW1hZ2UoKSB7XHJcbiAgICB0aGlzLl9zaW1wbGVNb2RhbFNlcnZpY2UuYWRkTW9kYWwoR2FsbGVyeUNvbmZpcm1Nb2RhbENvbXBvbmVudCwge1xyXG4gICAgICB0aXRsZTogJ9Cj0JTQkNCb0JXQndCY0JUg0KTQntCi0J7Qk9Cg0JDQpNCY0JgnLFxyXG4gICAgICBtZXNzYWdlOiAn0JLRiyDRhdC+0YLQuNGC0LUg0YPQtNCw0LvQuNGC0Ywg0YTQvtGC0L7Qs9GA0LDRhNC40Y4/J1xyXG4gICAgfSwge3dyYXBwZXJEZWZhdWx0Q2xhc3NlczogJ21yeC1tb2RhbCBmYWRlLWFuaW0nfSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcy5yZXN1bHQpIHtcclxuICAgICAgICAgIHRoaXMuZ2FsbGVyeVNlcnZpY2UuZGVsZXRlKHRoaXMuZGVsZXRlRW5kUG9pbnQsIHRoaXMucHJldmlldy51dWlkKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kZWxldGVQaG90by5lbWl0KHJlcyk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBjaGFuZ2VGaWVsZChmaWVsZDogQ2hhbmdlYWJsZUZpZWxkLCBvYmo6IGFueSkge1xyXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyKTtcclxuXHJcbiAgICB0aGlzLnByZXZpZXdbZmllbGRdID0gb2JqLnZhbHVlO1xyXG5cclxuICAgIGlmKCF0aGlzLm5lZWRUb1NhdmVJbnZhbGlkRGF0ZSAmJiB0aGlzLmlzRGF0ZUludmFsaWQpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChhdXRvc2F2ZUFkZElkKHtpZDogb2JqLmlkLCBncm91cElkOiB0aGlzLnByZXZpZXcudXVpZH0pKVxyXG4gICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2goYXV0b3NhdmVTdGFydEZvcih7aWQ6IG9iai5pZCwgZ3JvdXBJZDogdGhpcy5wcmV2aWV3LnV1aWR9KSlcclxuXHJcbiAgICB0aGlzLl90aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCB1cGRhdGVEYXRhOiBHYWxsZXJ5VXBkYXRlUGF5bG9hZCA9IHtcclxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5wcmV2aWV3LmRlc2NyaXB0aW9uXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBpZiAodGhpcy5wcmV2aWV3LmV2ZW50RGF0ZSkge1xyXG4gICAgICAgIHVwZGF0ZURhdGEuZXZlbnREYXRlID0gdGhpcy5wcmV2aWV3LmV2ZW50RGF0ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMucHJldmlldy5jb3VudGVycGFydHlTZWxlY3RlZElkcykge1xyXG4gICAgICAgIHVwZGF0ZURhdGEuY291bnRlcnBhcnR5U2VsZWN0ZWRJZHMgPSB0aGlzLnByZXZpZXcuY291bnRlcnBhcnR5U2VsZWN0ZWRJZHM7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZ2FsbGVyeVNlcnZpY2UudXBkYXRlKHRoaXMudXBkYXRlRW5kUG9pbnQsIHRoaXMucHJldmlldy51dWlkLCB1cGRhdGVEYXRhKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVBob3RvLmVtaXQocmVzKTtcclxuICAgICAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChhdXRvc2F2ZVN1Y2Nlc3NGb3Ioe2lkOiBvYmouaWQsIGdyb3VwSWQ6IHRoaXMucHJldmlldy51dWlkfSkpXHJcbiAgICAgIH0sICgpID0+IHtcclxuICAgICAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChhdXRvc2F2ZUVycm9yRm9yKHtpZDogb2JqLmlkLCBncm91cElkOiB0aGlzLnByZXZpZXcudXVpZH0pKVxyXG4gICAgICB9KTtcclxuICAgIH0sIDE1MDApO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibXJ4LWdhbGxlcnktaXRlbVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJtcngtZ2FsbGVyeS1pdGVtX19wcmV2aWV3XCIgKGNsaWNrKT1cIm9uT3BlbkdhbGxlcnlNb2RhbCgpXCI+XHJcblxyXG4gICAgPGltZyBbc3JjXT1cImdldEltYWdlVXJsKClcIiBbYWx0XT1cInByZXZpZXcuaW1hZ2VOYW1lIHx8ICdpbWFnZSdcIiAqbmdJZj1cIiFpc0xvYWRpbmdJbWFnZTsgZWxzZSBza2VsZXRvblRlbXBsYXRlXCI+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICNza2VsZXRvblRlbXBsYXRlPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHctMTAwIGgtMTAwXCI+XHJcbiAgICAgICAgPG1yeC1sb2FkZXIgc2l6ZT1cIm1lZGl1bVwiIGNvbG9yPVwiYnJhbmRcIj48L21yeC1sb2FkZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibXJ4LWdhbGxlcnktaXRlbV9fcHJldmlldy1vdmVybGF5XCIgKm5nSWY9XCIhaXNMb2FkaW5nSW1hZ2VcIj48L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibXJ4LWdhbGxlcnktaXRlbV9fcHJldmlldy1jb250cm9sc1wiICpuZ0lmPVwiIWlzTG9hZGluZ0ltYWdlXCI+XHJcbiAgICAgIDxhIGNsYXNzPVwibXJ4LWdhbGxlcnktaXRlbV9fcHJldmlldy1jb250cm9scy0taWNvblwiIFtocmVmXT1cInlhbmRleENoZWNrVXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xMjM0Nl8xMjA3NilcIj5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk04LjAwMDMxIDE1Ljk4MzhDMTIuNDA5NiAxNS45ODM4IDE1Ljk4NCAxMi40MDkzIDE1Ljk4NCA4LjAwMDA2QzE1Ljk4NCAzLjU5MDc4IDEyLjQwOTYgMC4wMTYzNTc0IDguMDAwMzEgMC4wMTYzNTc0QzMuNTkxMDMgMC4wMTYzNTc0IDAuMDE2NjAxNiAzLjU5MDc4IDAuMDE2NjAxNiA4LjAwMDA2QzAuMDE2NjAxNiAxMi40MDkzIDMuNTkxMDMgMTUuOTgzOCA4LjAwMDMxIDE1Ljk4MzhaXCIgZmlsbD1cIndoaXRlXCIvPlxyXG4gICAgICAgICAgICA8cGF0aCBkPVwiTTEwLjg4OTMgMTMuMDExOEg5LjEzNjdWNC4zNDM2MUg4LjM1NTk2QzYuOTI0ODQgNC4zNDM2MSA2LjE3NTIxIDUuMDU5MTYgNi4xNzUyMSA2LjEyNzMxQzYuMTc1MjEgNy4zMzkxNiA2LjY5MjI1IDcuOTAwNjUgNy43NjE4OCA4LjYxNjJMOC42NDMzNiA5LjIxMDI4TDYuMTEwMDMgMTMuMDEwM0g0LjIyNTU5TDYuNTA1NTkgOS42MTc2OEM1LjE5NDQ3IDguNjgxMzkgNC40NTY3IDcuNzY3MzEgNC40NTY3IDYuMjI1MDlDNC40NTY3IDQuMjk3NjggNS44MDA0IDIuOTg2NTcgOC4zNDQxIDIuOTg2NTdIMTAuODc3NFYxMy4wMDg4SDEwLjg4OTNWMTMuMDExOFpcIiBmaWxsPVwiI0ZDM0YxRFwiLz5cclxuICAgICAgICAgIDwvZz5cclxuICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xMjM0Nl8xMjA3NlwiPlxyXG4gICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiLz5cclxuICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9hPlxyXG5cclxuICAgICAgPGEgY2xhc3M9XCJtcngtZ2FsbGVyeS1pdGVtX19wcmV2aWV3LWNvbnRyb2xzLS1pY29uXCIgW2hyZWZdPVwiZ29vZ2xlQ2hlY2tVcmxcIiB0YXJnZXQ9XCJfYmxhbmtcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTExLjU1NjEgNC44OTAxSDExLjA5OTdWNC44NjY1OUg1Ljk5OTY3VjcuMTMzMjVIOS4yMDIxOUM4LjczNDk3IDguNDUyNzMgNy40Nzk1MiA5LjM5OTkyIDUuOTk5NjcgOS4zOTk5MkM0LjEyMjAyIDkuMzk5OTIgMi41OTk2NyA3Ljg3NzU3IDIuNTk5NjcgNS45OTk5MkMyLjU5OTY3IDQuMTIyMjcgNC4xMjIwMiAyLjU5OTkyIDUuOTk5NjcgMi41OTk5MkM2Ljg2NjM5IDIuNTk5OTIgNy42NTQ5MSAyLjkyNjg5IDguMjU1MjkgMy40NjA5N0w5Ljg1ODExIDEuODU4MTVDOC44NDYwNCAwLjkxNDkzNSA3LjQ5MjI3IDAuMzMzMjUyIDUuOTk5NjcgMC4zMzMyNTJDMi44NzAyNiAwLjMzMzI1MiAwLjMzMzAwOCAyLjg3MDUgMC4zMzMwMDggNS45OTk5MkMwLjMzMzAwOCA5LjEyOTM0IDIuODcwMjYgMTEuNjY2NiA1Ljk5OTY3IDExLjY2NjZDOS4xMjkwOSAxMS42NjY2IDExLjY2NjMgOS4xMjkzNCAxMS42NjYzIDUuOTk5OTJDMTEuNjY2MyA1LjYxOTk3IDExLjYyNzIgNS4yNDkwOSAxMS41NTYxIDQuODkwMVpcIiBmaWxsPVwiI0ZCQzAyRFwiLz5cclxuICAgICAgICAgIDxwYXRoIGQ9XCJNMC45ODczMDUgMy4zNjIzN0wyLjg0OTA5IDQuNzI3NzVDMy4zNTI4NSAzLjQ4MDUyIDQuNTcyODkgMi41OTk5MiA2LjAwMDYgMi41OTk5MkM2Ljg2NzMyIDIuNTk5OTIgNy42NTU4NCAyLjkyNjg5IDguMjU2MjIgMy40NjA5N0w5Ljg1OTA0IDEuODU4MTVDOC44NDY5NyAwLjkxNDkzNSA3LjQ5MzIgMC4zMzMyNTIgNi4wMDA2IDAuMzMzMjUyQzMuODI0MDQgMC4zMzMyNTIgMS45MzY0NyAxLjU2MjA3IDAuOTg3MzA1IDMuMzYyMzdaXCIgZmlsbD1cIiNFNTM5MzVcIi8+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwOCAxMS42NjY1QzcuNDY0NSAxMS42NjY1IDguNzk0NDcgMTEuMTA2MyA5LjgwMDAyIDEwLjE5NTRMOC4wNDYxOSA4LjcxMTNDNy40NzcyNSA5LjE0MjI1IDYuNzcwMDUgOS4zOTk4IDYuMDAwOCA5LjM5OThDNC41MjY5IDkuMzk5OCAzLjI3NTQyIDguNDU5OTkgMi44MDM5NSA3LjE0ODQ0TDAuOTU2MDU1IDguNTcyMTlDMS44OTM4OSAxMC40MDczIDMuNzk4NDUgMTEuNjY2NSA2LjAwMDggMTEuNjY2NVpcIiBmaWxsPVwiIzRDQUY1MFwiLz5cclxuICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNTU2NCA0Ljg4OTk3TDExLjU1MTkgNC44NjY0NkgxMS4xSDZWNy4xMzMxMkg5LjIwMjUyQzguOTc4MTIgNy43NjY5NCA4LjU3MDQgOC4zMTM0OSA4LjA0NDUzIDguNzExNTdDOC4wNDQ4MiA4LjcxMTI5IDguMDQ1MSA4LjcxMTI5IDguMDQ1MzggOC43MTEwMUw5Ljc5OTIyIDEwLjE5NTFDOS42NzUxMiAxMC4zMDc5IDExLjY2NjcgOC44MzMxMiAxMS42NjY3IDUuOTk5NzlDMTEuNjY2NyA1LjYxOTg0IDExLjYyNzYgNS4yNDg5NiAxMS41NTY0IDQuODg5OTdaXCIgZmlsbD1cIiMxNTY1QzBcIi8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvYT5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtcngtZ2FsbGVyeS1pdGVtX19wcmV2aWV3LWNvbnRyb2xzX19idXR0b24gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgKm5nSWY9XCJpc0VkaXRpbmdcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWRlbGV0ZSBpY29uLWZvbnQtMTYgdGV4dC1ib2xkXCIgKGNsaWNrKT1cImRlbGV0ZUltYWdlKClcIj48L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJzaG93RGF0ZVwiIGNsYXNzPVwibXJ4LWdhbGxlcnktaXRlbV9fZGF0ZSBtYi0yXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFZGl0aW5nOyBlbHNlIGRhdGVUZW1wbGF0ZVwiPlxyXG4gICAgICA8bXJ4LWxhYmVsIFtyZXF1aXJlZF09XCJyZXF1aXJlZERhdGVcIj7QlNCw0YLQsCDQvNC10YDQvtC/0YDQuNGP0YLQuNGPPC9tcngtbGFiZWw+XHJcblxyXG4gICAgICA8bXJ4LWlucHV0LWRhdGVwaWNrZXJcclxuICAgICAgICBbZmllbGRzXT1cIihmaWVsZHMkIHwgYXN5bmMpIVwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJwcmV2aWV3LmV2ZW50RGF0ZVwiXHJcbiAgICAgICAgW2ludmFsaWRdPVwiaXNEYXRlSW52YWxpZFwiXHJcbiAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXHJcbiAgICAgICAgW21heERhdGVdPVwibWF4RGF0ZVwiXHJcbiAgICAgICAgW2lzU2hvd01lc3NhZ2VzXT1cImZhbHNlXCJcclxuICAgICAgICBbaW52YWxpZE1lc3NhZ2VdPVwiZGF0ZUludmFsaWRNZXNzYWdlXCJcclxuICAgICAgICBbY2xvc2FibGVdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtmb3JtYXRdPVwiJ1lZWVktTU0tREQnXCJcclxuICAgICAgICBbdGltZXBpY2tlcl09XCJmYWxzZVwiXHJcbiAgICAgICAgW2xlYWRaZXJvRGF0ZVRpbWVdPVwidHJ1ZVwiXHJcbiAgICAgICAgW21hc2tdPVwiJ2QwLk0wLjAwMDAnXCJcclxuICAgICAgICAobW9kZWxDaGFuZ2UpPVwiY2hhbmdlRmllbGQoQ2hhbmdlYWJsZUZpZWxkLkV2ZW50RGF0ZSwgJGV2ZW50KVwiXHJcbiAgICAgID48L21yeC1pbnB1dC1kYXRlcGlja2VyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICNkYXRlVGVtcGxhdGU+XHJcbiAgICAgIDxwPtCU0LDRgtCwINC80LXRgNC+0L/RgNC40Y/RgtC40Y86IHt7IHByZXZpZXcuZXZlbnREYXRlIHwgZGF0ZUZvcm1hdCB9fTwvcD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJzaG93Q291bnRlcnBhcnRpZXNcIiBjbGFzcz1cIm1yeC1nYWxsZXJ5LWl0ZW1fX2NvdW50ZXJwYXJ0aWVzIG1iLTJcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0VkaXRpbmc7IGVsc2UgY291bnRlcnBhcnRpZXNUZW1wbGF0ZVwiPlxyXG4gICAgICA8bXJ4LWxhYmVsPtCd0LDQuNC80LXQvdC+0LLQsNC90LjQtSDQutC+0L3RgtGA0LDQs9C10L3RgtCwPC9tcngtbGFiZWw+XHJcblxyXG4gICAgICA8bXJ4LWlucHV0LXNlbGVjdFxyXG4gICAgICAgIFtmaWVsZHNdPVwiKGZpZWxkcyQgfCBhc3luYykhXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cInByZXZpZXcuY291bnRlcnBhcnR5U2VsZWN0ZWRJZHNcIlxyXG4gICAgICAgIFtpdGVtc109XCJwcmV2aWV3LmNvdW50ZXJwYXJ0aWVzIHx8IFtdXCJcclxuICAgICAgICBbbXVsdGlwbGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3NvcnRhYmxlXT1cInRydWVcIlxyXG4gICAgICAgIFtjbGVhcmFibGVdPVwiZmFsc2VcIlxyXG4gICAgICAgIFttYXhTZWxlY3RlZEl0ZW1zXT1cIm1heFNlbGVjdGVkSXRlbXNcIlxyXG4gICAgICAgIFtiaW5kVmFsdWVdPVwiJ3ZhbHVlJ1wiXHJcbiAgICAgICAgW2JpbmRMYWJlbF09XCIndGV4dCdcIlxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCIn0JLRi9Cx0LXRgNC40YLQtSDQutC+0L3RgtGA0LDQs9C10L3RgtCwJ1wiXHJcbiAgICAgICAgW2NoZWNrSW52YWxpZF09XCJjb3VudGVycGFydGllc0NoZWNrSW52YWxpZFwiXHJcbiAgICAgICAgW2ludmFsaWRdPVwiaXNDb3VudGVycGFydGllc0ludmFsaWRcIlxyXG4gICAgICAgIFtpbnZhbGlkTWVzc2FnZV09XCJjb3VudGVycGFydGllc0ludmFsaWRNZXNzYWdlXCJcclxuICAgICAgICAobW9kZWxDaGFuZ2UpPVwiY2hhbmdlRmllbGQoQ2hhbmdlYWJsZUZpZWxkLkNvdW50ZXJwYXJ0aWVzLCAkZXZlbnQpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjY29udGVudFRlbXBsYXRlPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJweS0xIHB4LTMgbW5oLXB4LTM2IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgY29sb3ItdGV4dC1zZWNvbmRhcnlcIj57eyBjb3VudGVycGFydHlTZWxlY3Rpb25IaW50IH19PC9zcGFuPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvbXJ4LWlucHV0LXNlbGVjdD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjY291bnRlcnBhcnRpZXNUZW1wbGF0ZT5cclxuICAgICAgPHA+0J3QsNC40LzQtdC90L7QstCw0L3QuNC1INC60L7QvdGC0YDQsNCz0LXQvdGC0LA6IHt7IGNvdW50ZXJwYXJ0aWVzVGV4dCB9fTwvcD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJtcngtZ2FsbGVyeS1pdGVtX19kZXNjcmlwdGlvblwiPlxyXG4gICAgPG1yeC1pbnB1dC10ZXh0YXJlYVxyXG4gICAgICAqbmdJZj1cImlzRWRpdGluZzsgZWxzZSB0ZXh0VGVtcGxhdGVcIlxyXG4gICAgICBbZmllbGRzXT1cIihmaWVsZHMkIHwgYXN5bmMpIVwiXHJcbiAgICAgIFtuZ01vZGVsXT1cInByZXZpZXcuZGVzY3JpcHRpb25cIlxyXG4gICAgICBbYXV0b3NpemVdPVwiZmFsc2VcIlxyXG4gICAgICBbcm93c109XCIyXCJcclxuICAgICAgW21heGxlbmd0aF09XCJkZXNjcmlwdGlvbk1heExlbmd0aFwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCIn0JLQstC10LTQuNGC0LUg0L7Qv9C40YHQsNC90LjQtSdcIlxyXG4gICAgICBbY2hlY2tJbnZhbGlkXT1cImRlc2NyaXB0aW9uQ2hlY2tJbnZhbGlkXCJcclxuICAgICAgW2ludmFsaWRdPVwiaXNEZXNjcmlwdGlvbkludmFsaWRcIlxyXG4gICAgICBbaW52YWxpZE1lc3NhZ2VdPVwiZGVzY3JpcHRpb25JbnZhbGlkTWVzc2FnZVwiXHJcbiAgICAgIChtb2RlbENoYW5nZSk9XCJjaGFuZ2VGaWVsZChDaGFuZ2VhYmxlRmllbGQuRGVzY3JpcHRpb24sICRldmVudClcIlxyXG4gICAgPjwvbXJ4LWlucHV0LXRleHRhcmVhPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjdGV4dFRlbXBsYXRlPlxyXG4gICAgICB7eyBwcmV2aWV3LmRlc2NyaXB0aW9uIH19XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19