ngx-histaff-alpha 1.0.2 → 1.0.4

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.
@@ -276,12 +276,18 @@ export class CoreFormControlSeekerComponent extends CoreFormControlBaseComponent
276
276
  this.valueToShow = "";
277
277
  }
278
278
  onSelectedDataRowDoubleClick(e) {
279
+ console.log("Given row data: ", e);
280
+ if (!e.id) {
281
+ if (isDevMode()) {
282
+ this.alertService.error("No 'id' columns found or current id was null", noneAutoClosedAlertOptions);
283
+ }
284
+ }
279
285
  try {
280
286
  this.editBufferForm?.get('id')?.patchValue(e.id);
281
287
  }
282
288
  catch (ex) {
283
289
  if (isDevMode()) {
284
- this.alertService.error(ex.message);
290
+ this.alertService.error(ex.message, noneAutoClosedAlertOptions);
285
291
  }
286
292
  }
287
293
  if (!!this.multiModeExtendedColumns.length) {
@@ -291,7 +297,7 @@ export class CoreFormControlSeekerComponent extends CoreFormControlBaseComponent
291
297
  }
292
298
  catch (exception) {
293
299
  if (isDevMode()) {
294
- this.alertService.error(exception.message);
300
+ this.alertService.error(exception.message, noneAutoClosedAlertOptions);
295
301
  }
296
302
  }
297
303
  });
@@ -300,7 +306,7 @@ export class CoreFormControlSeekerComponent extends CoreFormControlBaseComponent
300
306
  }
301
307
  catch (exception) {
302
308
  if (isDevMode()) {
303
- this.alertService.error(exception.message);
309
+ this.alertService.error(exception.message, noneAutoClosedAlertOptions);
304
310
  }
305
311
  }
306
312
  this.showEditBuffer = true;
@@ -343,7 +349,7 @@ export class CoreFormControlSeekerComponent extends CoreFormControlBaseComponent
343
349
  CoreWorkingSeekerComponent,
344
350
  CoreWageSeekerComponent,
345
351
  CorePositionSeekerComponent,
346
- ], viewQueries: [{ propertyName: "avatar", first: true, predicate: ["avatar"], descendants: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #container class=\"core-form-control-seeker-container\">\r\n <div class=\"input-wrapper\" [class.d-none]=\"!!multiMode\">\r\n <label #shownText type=\"text\" class=\"text form-control\" [class.form-control-disabled]=\"disabled\">\r\n <span [appTooltip]=\"valueToShow\">{{ valueToShow }}</span>\r\n </label>\r\n <div class=\"clear-icon-wrapper\" *ngIf=\"!!!multiMode\" [class.d-none]=\"!!disabled || !!!value\"\r\n (click)=\"onClickClear()\">\r\n <div class=\"flex-wrapper\" [appTooltip]=\"'UI.CORE_CONTOL_COMMON_CLEAR' | translate: lang\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"seeker-icon-wrapper\" [class.form-control-disabled]=\"disabled\" [class.multi-mode]=\"!!multiMode\"\r\n (click)=\"onClickSeek()\">\r\n <div class=\"flex-wrapper\" [class.form-control-disabled]=\"disabled\">\r\n <i class=\"feather-search\"></i>\r\n </div>\r\n </div>\r\n <div class=\"core-tabbe-wrapper\" *ngIf=\"multiMode\">\r\n <core-table [columns]=\"multiModeColumns\" [data]=\"selectedData\" [showTools]=\"!!!disabled\" [tools]=\"tools\"\r\n [searchSwitchDisabled]=\"true\" (onToolClick)=\"onToolClick($event)\"\r\n (onRowDoubleClick)=\"onSelectedDataRowDoubleClick($event)\"></core-table>\r\n </div>\r\n\r\n <div class=\"modal-container\" *ngIf=\"!!sourceOpen\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header-panel\">\r\n <core-page-header [title]=\"title\" [hideButtonGroup]=\"true\" *ngIf=\"showPageHeader\"></core-page-header>\r\n </div>\r\n <div class=\"source-container\">\r\n <i class=\"feather-x\" (click)=\"onCancel()\"\r\n [class.d-block]=\"seekerSourceType==='ORGANIZATION_UNIT_SEEK'\"></i>\r\n\r\n\r\n @switch (seekerSourceType) {\r\n @case ('EMPLOYEE_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"employeeSeek\">\r\n </ng-container>\r\n }\r\n @case ('CONTRACT_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"contractSeek\">\r\n </ng-container>\r\n }\r\n @case ('WORKING_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"workingSeek\">\r\n </ng-container>\r\n }\r\n @case ('WAGE_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"wageSeek\">\r\n </ng-container>\r\n }\r\n @case ('ORGANIZATION_UNIT_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"organizationUnitSeek\">\r\n </ng-container>\r\n }\r\n @case ('POSITION_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"positionSeek\">\r\n </ng-container>\r\n }\r\n @case ('POSITION_CONCURRENT_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"positionConcurrentSeek\">\r\n </ng-container>\r\n }\r\n }\r\n\r\n </div>\r\n\r\n @if (!hideFooter) {\r\n <div class=\"footer\">\r\n <div class=\"d-flex-end\">\r\n <button class=\"btn btn-primary\" type=\"button\" (click)=\"onSelect()\">{{\r\n 'UI_CORE_CONFIRM_DIALOG_BUTTON_SELECT' | translate: lang }}</button>\r\n <button class=\"btn btn-secondary\" type=\"button\" (click)=\"onCancel()\">{{\r\n 'UI_CORE_CONFIRM_DIALOG_BUTTON_CANCEL' | translate: lang }}</button>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n </div>\r\n\r\n</div>\r\n\r\n<ng-template #employeeSeek>\r\n <core-employee-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-employee-seeker>\r\n</ng-template>\r\n\r\n<ng-template #contractSeek>\r\n <core-contract-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-contract-seeker>\r\n</ng-template>\r\n\r\n<ng-template #workingSeek>\r\n <core-working-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-working-seeker>\r\n</ng-template>\r\n\r\n<ng-template #wageSeek>\r\n <core-wage-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-wage-seeker>\r\n</ng-template>\r\n\r\n<ng-template #positionSeek>\r\n <core-position-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n [seekerVerifyIgnore]=\"seekerVerifyIgnore\" (rowDoubleClick)=\"onRowDoubleClick($event)\"\r\n (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-position-seeker>\r\n</ng-template>\r\n\r\n<ng-template #positionConcurrentSeek>\r\n <core-position-concurrent-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-position-concurrent-seeker>\r\n</ng-template>\r\n\r\n<ng-template #organizationUnitSeek>\r\n <core-org-unit-seeker (itemDoubleClick)=\"onItemDoubleClick($event)\"></core-org-unit-seeker>\r\n</ng-template>\r\n\r\n<ng-template #avatar let-avatar=\"context.avatar\">\r\n <img *ngIf=\"avatar != null\" [src]=\"avatar | mapAvatarToServer\" class=\"in-table-avatar\" appImageErrorResolver>\r\n <img *ngIf=\"avatar == null\" [src]=\"defaultAvatar\" class=\"in-table-avatar\" appImageErrorResolver>\r\n</ng-template>\r\n\r\n@if (!!showEditBuffer) {\r\n <core-page-edit-lite [sections]=\"multiModeExtendedSections\" \r\n (onFormCreated)=\"onEditBufferFormCreated($event)\" (submitLogic)=\"onEditBufferSubmit($event)\"\r\n (cancelLogic)=\"onEditBufferCancel($event)\"></core-page-edit-lite>\r\n}", styles: [".core-form-control-seeker-container{display:block;position:relative;background-color:#fff}.core-form-control-seeker-container>.seeker-icon-wrapper{display:block;position:absolute;background-color:#e9e9e9;right:3px;top:3px;width:29px;height:29px;border-radius:.275rem;cursor:pointer}.core-form-control-seeker-container>.seeker-icon-wrapper>.flex-wrapper{width:29px;height:29px;display:flex;align-items:center;justify-content:center}.core-form-control-seeker-container>.seeker-icon-wrapper>.flex-wrapper>i{color:#848484;font-size:20px}.core-form-control-seeker-container .input-wrapper{height:var(--size-form-control-height)}.core-form-control-seeker-container .input-wrapper label.text span{display:block;height:calc(var(--size-form-control-height) - 12px);line-height:calc(var(--size-form-control-height) - 12px);width:calc(100% - var(--size-form-control-height));overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:inherit}.core-form-control-seeker-container .input-wrapper .clear-icon-wrapper{display:none;position:absolute;background-color:transparent;right:28px;top:3px;width:29px;height:29px;border-radius:.275rem;cursor:pointer}.core-form-control-seeker-container .input-wrapper .clear-icon-wrapper>.flex-wrapper{width:29px;height:29px;display:flex;align-items:center;justify-content:center}.core-form-control-seeker-container .input-wrapper .clear-icon-wrapper>.flex-wrapper>i{color:#848484;font-size:20px}.core-form-control-seeker-container .input-wrapper:hover>.clear-icon-wrapper{display:block}.core-form-control-seeker-container>.seeker-icon-wrapper.multi-mode{position:relative;width:35px;height:35px}.core-form-control-seeker-container>.seeker-icon-wrapper.multi-mode>.flex-wrapper{width:35px;height:35px}.core-form-control-seeker-container .source-container{display:block;background-color:#fff;padding:var(--size-layout-block-cell-spacing);max-width:1200px;max-height:800px;overflow:hidden;border-radius:10px}.core-form-control-seeker-container .source-container i{font-size:20px;cursor:pointer;float:right}.core-form-control-seeker-container .source-container.d-none{display:none}.core-form-control-seeker-container .source-container>caption{display:block;width:100%}.core-form-control-seeker-container .footer{background-color:var(--color-bg-main);border-bottom-left-radius:10px;border-bottom-right-radius:10px;padding:var(--size-layout-block-cell-spacing)}.core-form-control-seeker-container .footer button:first-child{margin-right:var(--size-layout-block-cell-spacing)}.core-form-control-seeker-container .core-tabbe-wrapper{margin-top:5px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: MapAvatarToServerPipe, name: "mapAvatarToServer" }, { kind: "component", type: CorePageEditLiteComponent, selector: "core-page-edit-lite", inputs: ["width", "captionCode", "sections", "submitText", "checkError$"], outputs: ["onFormCreated", "submitLogic", "cancelLogic"] }, { kind: "component", type: CoreTableComponent, selector: "core-table", inputs: ["id", "width", "height", "showCheckbox", "checkboxSize", "outerButtons", "showTools", "tools", "checkingResetFlag", "headerWrap", "headerFirstRowHeight", "headerSecondRowHeight", "wrap", "allowCellScrollY", "loading", "rowHeight", "frozen", "footer", "columns", "data", "selectedIds", "corePageListInstanceNumber", "disableHighlightOnClick", "freeMode", "searchSwitchDisabled", "inlineToolItems", "columnSearchDefaultOpen", "lazyLoading", "noPaddingCell"], outputs: ["onSearching", "onToolClick", "onRowClick", "onRowDoubleClick", "onSelectedIdsChange", "onSelectedDataChange", "onColumnCaptionClick"] }, { kind: "component", type: CoreEmployeeSeekerComponent, selector: "core-employee-seeker", inputs: ["multiMode", "preDefinedOuterParam$"], outputs: ["rowDoubleClick", "selectedIdsChange", "selectedDataChange", "columnsInit"] }, { kind: "component", type: CoreContractSeekerComponent, selector: "core-contract-seeker", inputs: ["multiMode", "preDefinedOuterParam$"], outputs: ["rowDoubleClick", "selectedIdsChange", "selectedDataChange", "columnsInit"] }, { kind: "component", type: CoreWorkingSeekerComponent, selector: "core-working-seeker", inputs: ["multiMode", "preDefinedOuterParam$"], outputs: ["rowDoubleClick", "selectedIdsChange", "selectedDataChange", "columnsInit"] }, { kind: "component", type: CoreWageSeekerComponent, selector: "core-wage-seeker", inputs: ["multiMode", "preDefinedOuterParam$", "employeeId"], outputs: ["rowDoubleClick", "selectedIdsChange", "selectedDataChange", "columnsInit"] }, { kind: "component", type: CoreOrgUnitSeekerComponent, selector: "core-org-unit-seeker", outputs: ["itemDoubleClick"] }, { kind: "component", type: CorePositionSeekerComponent, selector: "core-position-seeker", inputs: ["multiMode", "preDefinedOuterParam$", "seekerVerifyIgnore"], outputs: ["rowDoubleClick", "selectedIdsChange", "selectedDataChange", "columnsInit"] }, { kind: "component", type: CorePositionConcurrentSeekerComponent, selector: "core-position-concurrent-seeker", inputs: ["multiMode", "preDefinedOuterParam$"], outputs: ["rowDoubleClick", "selectedIdsChange", "selectedDataChange", "columnsInit"] }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup"], outputs: ["buttonClick"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "showAnyway", "position"] }] }); }
352
+ ], viewQueries: [{ propertyName: "avatar", first: true, predicate: ["avatar"], descendants: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #container class=\"core-form-control-seeker-container\">\r\n <div class=\"input-wrapper\" [class.d-none]=\"!!multiMode\">\r\n <label #shownText type=\"text\" class=\"text form-control\" [class.form-control-disabled]=\"disabled\">\r\n <span [appTooltip]=\"valueToShow\">{{ valueToShow }}</span>\r\n </label>\r\n <div class=\"clear-icon-wrapper\" *ngIf=\"!!!multiMode\" [class.d-none]=\"!!disabled || !!!value\"\r\n (click)=\"onClickClear()\">\r\n <div class=\"flex-wrapper\" [appTooltip]=\"'UI.CORE_CONTOL_COMMON_CLEAR' | translate: lang\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"seeker-icon-wrapper\" [class.form-control-disabled]=\"disabled\" [class.multi-mode]=\"!!multiMode\"\r\n (click)=\"onClickSeek()\">\r\n <div class=\"flex-wrapper\" [class.form-control-disabled]=\"disabled\">\r\n <i class=\"feather-search\"></i>\r\n </div>\r\n </div>\r\n <div class=\"core-tabbe-wrapper\" *ngIf=\"multiMode\">\r\n <core-table [columns]=\"multiModeColumns\" [data]=\"selectedData\" [showTools]=\"!!!disabled\" [tools]=\"tools\"\r\n [searchSwitchDisabled]=\"true\" (onToolClick)=\"onToolClick($event)\"\r\n (onRowDoubleClick)=\"onSelectedDataRowDoubleClick($event)\"></core-table>\r\n </div>\r\n\r\n <div class=\"modal-container\" *ngIf=\"!!sourceOpen\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header-panel\">\r\n <core-page-header [title]=\"title\" [hideButtonGroup]=\"true\" *ngIf=\"showPageHeader\"></core-page-header>\r\n </div>\r\n <div class=\"source-container\">\r\n <i class=\"feather-x\" (click)=\"onCancel()\"\r\n [class.d-block]=\"seekerSourceType==='ORGANIZATION_UNIT_SEEK'\"></i>\r\n\r\n\r\n @switch (seekerSourceType) {\r\n @case ('EMPLOYEE_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"employeeSeek\">\r\n </ng-container>\r\n }\r\n @case ('CONTRACT_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"contractSeek\">\r\n </ng-container>\r\n }\r\n @case ('WORKING_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"workingSeek\">\r\n </ng-container>\r\n }\r\n @case ('WAGE_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"wageSeek\">\r\n </ng-container>\r\n }\r\n @case ('ORGANIZATION_UNIT_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"organizationUnitSeek\">\r\n </ng-container>\r\n }\r\n @case ('POSITION_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"positionSeek\">\r\n </ng-container>\r\n }\r\n @case ('POSITION_CONCURRENT_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"positionConcurrentSeek\">\r\n </ng-container>\r\n }\r\n }\r\n\r\n </div>\r\n\r\n @if (!hideFooter) {\r\n <div class=\"footer\">\r\n <div class=\"d-flex-end\">\r\n <button class=\"btn btn-primary\" type=\"button\" (click)=\"onSelect()\">{{\r\n 'UI_CORE_CONFIRM_DIALOG_BUTTON_SELECT' | translate: lang }}</button>\r\n <button class=\"btn btn-secondary\" type=\"button\" (click)=\"onCancel()\">{{\r\n 'UI_CORE_CONFIRM_DIALOG_BUTTON_CANCEL' | translate: lang }}</button>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n </div>\r\n\r\n</div>\r\n\r\n<ng-template #employeeSeek>\r\n <core-employee-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-employee-seeker>\r\n</ng-template>\r\n\r\n<ng-template #contractSeek>\r\n <core-contract-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-contract-seeker>\r\n</ng-template>\r\n\r\n<ng-template #workingSeek>\r\n <core-working-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-working-seeker>\r\n</ng-template>\r\n\r\n<ng-template #wageSeek>\r\n <core-wage-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-wage-seeker>\r\n</ng-template>\r\n\r\n<ng-template #positionSeek>\r\n <core-position-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n [seekerVerifyIgnore]=\"seekerVerifyIgnore\" (rowDoubleClick)=\"onRowDoubleClick($event)\"\r\n (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-position-seeker>\r\n</ng-template>\r\n\r\n<ng-template #positionConcurrentSeek>\r\n <core-position-concurrent-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-position-concurrent-seeker>\r\n</ng-template>\r\n\r\n<ng-template #organizationUnitSeek>\r\n <core-org-unit-seeker (itemDoubleClick)=\"onItemDoubleClick($event)\"></core-org-unit-seeker>\r\n</ng-template>\r\n\r\n<ng-template #avatar let-avatar=\"context.avatar\">\r\n <img *ngIf=\"avatar != null\" [src]=\"avatar | mapAvatarToServer\" class=\"in-table-avatar\" appImageErrorResolver>\r\n <img *ngIf=\"avatar == null\" [src]=\"defaultAvatar\" class=\"in-table-avatar\" appImageErrorResolver>\r\n</ng-template>\r\n\r\n<div [class.d-none]=\"!showEditBuffer\">\r\n <core-page-edit-lite [sections]=\"multiModeExtendedSections\" (onFormCreated)=\"onEditBufferFormCreated($event)\"\r\n (submitLogic)=\"onEditBufferSubmit($event)\" (cancelLogic)=\"onEditBufferCancel($event)\"></core-page-edit-lite>\r\n</div>", styles: [".core-form-control-seeker-container{display:block;position:relative;background-color:#fff}.core-form-control-seeker-container>.seeker-icon-wrapper{display:block;position:absolute;background-color:#e9e9e9;right:3px;top:3px;width:29px;height:29px;border-radius:.275rem;cursor:pointer}.core-form-control-seeker-container>.seeker-icon-wrapper>.flex-wrapper{width:29px;height:29px;display:flex;align-items:center;justify-content:center}.core-form-control-seeker-container>.seeker-icon-wrapper>.flex-wrapper>i{color:#848484;font-size:20px}.core-form-control-seeker-container .input-wrapper{height:var(--size-form-control-height)}.core-form-control-seeker-container .input-wrapper label.text span{display:block;height:calc(var(--size-form-control-height) - 12px);line-height:calc(var(--size-form-control-height) - 12px);width:calc(100% - var(--size-form-control-height));overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:inherit}.core-form-control-seeker-container .input-wrapper .clear-icon-wrapper{display:none;position:absolute;background-color:transparent;right:28px;top:3px;width:29px;height:29px;border-radius:.275rem;cursor:pointer}.core-form-control-seeker-container .input-wrapper .clear-icon-wrapper>.flex-wrapper{width:29px;height:29px;display:flex;align-items:center;justify-content:center}.core-form-control-seeker-container .input-wrapper .clear-icon-wrapper>.flex-wrapper>i{color:#848484;font-size:20px}.core-form-control-seeker-container .input-wrapper:hover>.clear-icon-wrapper{display:block}.core-form-control-seeker-container>.seeker-icon-wrapper.multi-mode{position:relative;width:35px;height:35px}.core-form-control-seeker-container>.seeker-icon-wrapper.multi-mode>.flex-wrapper{width:35px;height:35px}.core-form-control-seeker-container .source-container{display:block;background-color:#fff;padding:var(--size-layout-block-cell-spacing);max-width:1200px;max-height:800px;overflow:hidden;border-radius:10px}.core-form-control-seeker-container .source-container i{font-size:20px;cursor:pointer;float:right}.core-form-control-seeker-container .source-container.d-none{display:none}.core-form-control-seeker-container .source-container>caption{display:block;width:100%}.core-form-control-seeker-container .footer{background-color:var(--color-bg-main);border-bottom-left-radius:10px;border-bottom-right-radius:10px;padding:var(--size-layout-block-cell-spacing)}.core-form-control-seeker-container .footer button:first-child{margin-right:var(--size-layout-block-cell-spacing)}.core-form-control-seeker-container .core-tabbe-wrapper{margin-top:5px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: MapAvatarToServerPipe, name: "mapAvatarToServer" }, { kind: "component", type: CorePageEditLiteComponent, selector: "core-page-edit-lite", inputs: ["width", "captionCode", "sections", "submitText", "checkError$"], outputs: ["onFormCreated", "submitLogic", "cancelLogic"] }, { kind: "component", type: CoreTableComponent, selector: "core-table", inputs: ["id", "width", "height", "showCheckbox", "checkboxSize", "outerButtons", "showTools", "tools", "checkingResetFlag", "headerWrap", "headerFirstRowHeight", "headerSecondRowHeight", "wrap", "allowCellScrollY", "loading", "rowHeight", "frozen", "footer", "columns", "data", "selectedIds", "corePageListInstanceNumber", "disableHighlightOnClick", "freeMode", "searchSwitchDisabled", "inlineToolItems", "columnSearchDefaultOpen", "lazyLoading", "noPaddingCell"], outputs: ["onSearching", "onToolClick", "onRowClick", "onRowDoubleClick", "onSelectedIdsChange", "onSelectedDataChange", "onColumnCaptionClick"] }, { kind: "component", type: CoreEmployeeSeekerComponent, selector: "core-employee-seeker", inputs: ["multiMode", "preDefinedOuterParam$"], outputs: ["rowDoubleClick", "selectedIdsChange", "selectedDataChange", "columnsInit"] }, { kind: "component", type: CoreContractSeekerComponent, selector: "core-contract-seeker", inputs: ["multiMode", "preDefinedOuterParam$"], outputs: ["rowDoubleClick", "selectedIdsChange", "selectedDataChange", "columnsInit"] }, { kind: "component", type: CoreWorkingSeekerComponent, selector: "core-working-seeker", inputs: ["multiMode", "preDefinedOuterParam$"], outputs: ["rowDoubleClick", "selectedIdsChange", "selectedDataChange", "columnsInit"] }, { kind: "component", type: CoreWageSeekerComponent, selector: "core-wage-seeker", inputs: ["multiMode", "preDefinedOuterParam$", "employeeId"], outputs: ["rowDoubleClick", "selectedIdsChange", "selectedDataChange", "columnsInit"] }, { kind: "component", type: CoreOrgUnitSeekerComponent, selector: "core-org-unit-seeker", outputs: ["itemDoubleClick"] }, { kind: "component", type: CorePositionSeekerComponent, selector: "core-position-seeker", inputs: ["multiMode", "preDefinedOuterParam$", "seekerVerifyIgnore"], outputs: ["rowDoubleClick", "selectedIdsChange", "selectedDataChange", "columnsInit"] }, { kind: "component", type: CorePositionConcurrentSeekerComponent, selector: "core-position-concurrent-seeker", inputs: ["multiMode", "preDefinedOuterParam$"], outputs: ["rowDoubleClick", "selectedIdsChange", "selectedDataChange", "columnsInit"] }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup"], outputs: ["buttonClick"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "showAnyway", "position"] }] }); }
347
353
  }
348
354
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreFormControlSeekerComponent, decorators: [{
349
355
  type: Component,
@@ -374,7 +380,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
374
380
  CoreWorkingSeekerComponent,
375
381
  CoreWageSeekerComponent,
376
382
  CorePositionSeekerComponent,
377
- ], template: "<div #container class=\"core-form-control-seeker-container\">\r\n <div class=\"input-wrapper\" [class.d-none]=\"!!multiMode\">\r\n <label #shownText type=\"text\" class=\"text form-control\" [class.form-control-disabled]=\"disabled\">\r\n <span [appTooltip]=\"valueToShow\">{{ valueToShow }}</span>\r\n </label>\r\n <div class=\"clear-icon-wrapper\" *ngIf=\"!!!multiMode\" [class.d-none]=\"!!disabled || !!!value\"\r\n (click)=\"onClickClear()\">\r\n <div class=\"flex-wrapper\" [appTooltip]=\"'UI.CORE_CONTOL_COMMON_CLEAR' | translate: lang\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"seeker-icon-wrapper\" [class.form-control-disabled]=\"disabled\" [class.multi-mode]=\"!!multiMode\"\r\n (click)=\"onClickSeek()\">\r\n <div class=\"flex-wrapper\" [class.form-control-disabled]=\"disabled\">\r\n <i class=\"feather-search\"></i>\r\n </div>\r\n </div>\r\n <div class=\"core-tabbe-wrapper\" *ngIf=\"multiMode\">\r\n <core-table [columns]=\"multiModeColumns\" [data]=\"selectedData\" [showTools]=\"!!!disabled\" [tools]=\"tools\"\r\n [searchSwitchDisabled]=\"true\" (onToolClick)=\"onToolClick($event)\"\r\n (onRowDoubleClick)=\"onSelectedDataRowDoubleClick($event)\"></core-table>\r\n </div>\r\n\r\n <div class=\"modal-container\" *ngIf=\"!!sourceOpen\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header-panel\">\r\n <core-page-header [title]=\"title\" [hideButtonGroup]=\"true\" *ngIf=\"showPageHeader\"></core-page-header>\r\n </div>\r\n <div class=\"source-container\">\r\n <i class=\"feather-x\" (click)=\"onCancel()\"\r\n [class.d-block]=\"seekerSourceType==='ORGANIZATION_UNIT_SEEK'\"></i>\r\n\r\n\r\n @switch (seekerSourceType) {\r\n @case ('EMPLOYEE_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"employeeSeek\">\r\n </ng-container>\r\n }\r\n @case ('CONTRACT_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"contractSeek\">\r\n </ng-container>\r\n }\r\n @case ('WORKING_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"workingSeek\">\r\n </ng-container>\r\n }\r\n @case ('WAGE_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"wageSeek\">\r\n </ng-container>\r\n }\r\n @case ('ORGANIZATION_UNIT_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"organizationUnitSeek\">\r\n </ng-container>\r\n }\r\n @case ('POSITION_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"positionSeek\">\r\n </ng-container>\r\n }\r\n @case ('POSITION_CONCURRENT_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"positionConcurrentSeek\">\r\n </ng-container>\r\n }\r\n }\r\n\r\n </div>\r\n\r\n @if (!hideFooter) {\r\n <div class=\"footer\">\r\n <div class=\"d-flex-end\">\r\n <button class=\"btn btn-primary\" type=\"button\" (click)=\"onSelect()\">{{\r\n 'UI_CORE_CONFIRM_DIALOG_BUTTON_SELECT' | translate: lang }}</button>\r\n <button class=\"btn btn-secondary\" type=\"button\" (click)=\"onCancel()\">{{\r\n 'UI_CORE_CONFIRM_DIALOG_BUTTON_CANCEL' | translate: lang }}</button>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n </div>\r\n\r\n</div>\r\n\r\n<ng-template #employeeSeek>\r\n <core-employee-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-employee-seeker>\r\n</ng-template>\r\n\r\n<ng-template #contractSeek>\r\n <core-contract-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-contract-seeker>\r\n</ng-template>\r\n\r\n<ng-template #workingSeek>\r\n <core-working-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-working-seeker>\r\n</ng-template>\r\n\r\n<ng-template #wageSeek>\r\n <core-wage-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-wage-seeker>\r\n</ng-template>\r\n\r\n<ng-template #positionSeek>\r\n <core-position-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n [seekerVerifyIgnore]=\"seekerVerifyIgnore\" (rowDoubleClick)=\"onRowDoubleClick($event)\"\r\n (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-position-seeker>\r\n</ng-template>\r\n\r\n<ng-template #positionConcurrentSeek>\r\n <core-position-concurrent-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-position-concurrent-seeker>\r\n</ng-template>\r\n\r\n<ng-template #organizationUnitSeek>\r\n <core-org-unit-seeker (itemDoubleClick)=\"onItemDoubleClick($event)\"></core-org-unit-seeker>\r\n</ng-template>\r\n\r\n<ng-template #avatar let-avatar=\"context.avatar\">\r\n <img *ngIf=\"avatar != null\" [src]=\"avatar | mapAvatarToServer\" class=\"in-table-avatar\" appImageErrorResolver>\r\n <img *ngIf=\"avatar == null\" [src]=\"defaultAvatar\" class=\"in-table-avatar\" appImageErrorResolver>\r\n</ng-template>\r\n\r\n@if (!!showEditBuffer) {\r\n <core-page-edit-lite [sections]=\"multiModeExtendedSections\" \r\n (onFormCreated)=\"onEditBufferFormCreated($event)\" (submitLogic)=\"onEditBufferSubmit($event)\"\r\n (cancelLogic)=\"onEditBufferCancel($event)\"></core-page-edit-lite>\r\n}", styles: [".core-form-control-seeker-container{display:block;position:relative;background-color:#fff}.core-form-control-seeker-container>.seeker-icon-wrapper{display:block;position:absolute;background-color:#e9e9e9;right:3px;top:3px;width:29px;height:29px;border-radius:.275rem;cursor:pointer}.core-form-control-seeker-container>.seeker-icon-wrapper>.flex-wrapper{width:29px;height:29px;display:flex;align-items:center;justify-content:center}.core-form-control-seeker-container>.seeker-icon-wrapper>.flex-wrapper>i{color:#848484;font-size:20px}.core-form-control-seeker-container .input-wrapper{height:var(--size-form-control-height)}.core-form-control-seeker-container .input-wrapper label.text span{display:block;height:calc(var(--size-form-control-height) - 12px);line-height:calc(var(--size-form-control-height) - 12px);width:calc(100% - var(--size-form-control-height));overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:inherit}.core-form-control-seeker-container .input-wrapper .clear-icon-wrapper{display:none;position:absolute;background-color:transparent;right:28px;top:3px;width:29px;height:29px;border-radius:.275rem;cursor:pointer}.core-form-control-seeker-container .input-wrapper .clear-icon-wrapper>.flex-wrapper{width:29px;height:29px;display:flex;align-items:center;justify-content:center}.core-form-control-seeker-container .input-wrapper .clear-icon-wrapper>.flex-wrapper>i{color:#848484;font-size:20px}.core-form-control-seeker-container .input-wrapper:hover>.clear-icon-wrapper{display:block}.core-form-control-seeker-container>.seeker-icon-wrapper.multi-mode{position:relative;width:35px;height:35px}.core-form-control-seeker-container>.seeker-icon-wrapper.multi-mode>.flex-wrapper{width:35px;height:35px}.core-form-control-seeker-container .source-container{display:block;background-color:#fff;padding:var(--size-layout-block-cell-spacing);max-width:1200px;max-height:800px;overflow:hidden;border-radius:10px}.core-form-control-seeker-container .source-container i{font-size:20px;cursor:pointer;float:right}.core-form-control-seeker-container .source-container.d-none{display:none}.core-form-control-seeker-container .source-container>caption{display:block;width:100%}.core-form-control-seeker-container .footer{background-color:var(--color-bg-main);border-bottom-left-radius:10px;border-bottom-right-radius:10px;padding:var(--size-layout-block-cell-spacing)}.core-form-control-seeker-container .footer button:first-child{margin-right:var(--size-layout-block-cell-spacing)}.core-form-control-seeker-container .core-tabbe-wrapper{margin-top:5px}\n"] }]
383
+ ], template: "<div #container class=\"core-form-control-seeker-container\">\r\n <div class=\"input-wrapper\" [class.d-none]=\"!!multiMode\">\r\n <label #shownText type=\"text\" class=\"text form-control\" [class.form-control-disabled]=\"disabled\">\r\n <span [appTooltip]=\"valueToShow\">{{ valueToShow }}</span>\r\n </label>\r\n <div class=\"clear-icon-wrapper\" *ngIf=\"!!!multiMode\" [class.d-none]=\"!!disabled || !!!value\"\r\n (click)=\"onClickClear()\">\r\n <div class=\"flex-wrapper\" [appTooltip]=\"'UI.CORE_CONTOL_COMMON_CLEAR' | translate: lang\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"seeker-icon-wrapper\" [class.form-control-disabled]=\"disabled\" [class.multi-mode]=\"!!multiMode\"\r\n (click)=\"onClickSeek()\">\r\n <div class=\"flex-wrapper\" [class.form-control-disabled]=\"disabled\">\r\n <i class=\"feather-search\"></i>\r\n </div>\r\n </div>\r\n <div class=\"core-tabbe-wrapper\" *ngIf=\"multiMode\">\r\n <core-table [columns]=\"multiModeColumns\" [data]=\"selectedData\" [showTools]=\"!!!disabled\" [tools]=\"tools\"\r\n [searchSwitchDisabled]=\"true\" (onToolClick)=\"onToolClick($event)\"\r\n (onRowDoubleClick)=\"onSelectedDataRowDoubleClick($event)\"></core-table>\r\n </div>\r\n\r\n <div class=\"modal-container\" *ngIf=\"!!sourceOpen\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header-panel\">\r\n <core-page-header [title]=\"title\" [hideButtonGroup]=\"true\" *ngIf=\"showPageHeader\"></core-page-header>\r\n </div>\r\n <div class=\"source-container\">\r\n <i class=\"feather-x\" (click)=\"onCancel()\"\r\n [class.d-block]=\"seekerSourceType==='ORGANIZATION_UNIT_SEEK'\"></i>\r\n\r\n\r\n @switch (seekerSourceType) {\r\n @case ('EMPLOYEE_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"employeeSeek\">\r\n </ng-container>\r\n }\r\n @case ('CONTRACT_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"contractSeek\">\r\n </ng-container>\r\n }\r\n @case ('WORKING_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"workingSeek\">\r\n </ng-container>\r\n }\r\n @case ('WAGE_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"wageSeek\">\r\n </ng-container>\r\n }\r\n @case ('ORGANIZATION_UNIT_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"organizationUnitSeek\">\r\n </ng-container>\r\n }\r\n @case ('POSITION_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"positionSeek\">\r\n </ng-container>\r\n }\r\n @case ('POSITION_CONCURRENT_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"positionConcurrentSeek\">\r\n </ng-container>\r\n }\r\n }\r\n\r\n </div>\r\n\r\n @if (!hideFooter) {\r\n <div class=\"footer\">\r\n <div class=\"d-flex-end\">\r\n <button class=\"btn btn-primary\" type=\"button\" (click)=\"onSelect()\">{{\r\n 'UI_CORE_CONFIRM_DIALOG_BUTTON_SELECT' | translate: lang }}</button>\r\n <button class=\"btn btn-secondary\" type=\"button\" (click)=\"onCancel()\">{{\r\n 'UI_CORE_CONFIRM_DIALOG_BUTTON_CANCEL' | translate: lang }}</button>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n </div>\r\n\r\n</div>\r\n\r\n<ng-template #employeeSeek>\r\n <core-employee-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-employee-seeker>\r\n</ng-template>\r\n\r\n<ng-template #contractSeek>\r\n <core-contract-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-contract-seeker>\r\n</ng-template>\r\n\r\n<ng-template #workingSeek>\r\n <core-working-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-working-seeker>\r\n</ng-template>\r\n\r\n<ng-template #wageSeek>\r\n <core-wage-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-wage-seeker>\r\n</ng-template>\r\n\r\n<ng-template #positionSeek>\r\n <core-position-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n [seekerVerifyIgnore]=\"seekerVerifyIgnore\" (rowDoubleClick)=\"onRowDoubleClick($event)\"\r\n (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-position-seeker>\r\n</ng-template>\r\n\r\n<ng-template #positionConcurrentSeek>\r\n <core-position-concurrent-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-position-concurrent-seeker>\r\n</ng-template>\r\n\r\n<ng-template #organizationUnitSeek>\r\n <core-org-unit-seeker (itemDoubleClick)=\"onItemDoubleClick($event)\"></core-org-unit-seeker>\r\n</ng-template>\r\n\r\n<ng-template #avatar let-avatar=\"context.avatar\">\r\n <img *ngIf=\"avatar != null\" [src]=\"avatar | mapAvatarToServer\" class=\"in-table-avatar\" appImageErrorResolver>\r\n <img *ngIf=\"avatar == null\" [src]=\"defaultAvatar\" class=\"in-table-avatar\" appImageErrorResolver>\r\n</ng-template>\r\n\r\n<div [class.d-none]=\"!showEditBuffer\">\r\n <core-page-edit-lite [sections]=\"multiModeExtendedSections\" (onFormCreated)=\"onEditBufferFormCreated($event)\"\r\n (submitLogic)=\"onEditBufferSubmit($event)\" (cancelLogic)=\"onEditBufferCancel($event)\"></core-page-edit-lite>\r\n</div>", styles: [".core-form-control-seeker-container{display:block;position:relative;background-color:#fff}.core-form-control-seeker-container>.seeker-icon-wrapper{display:block;position:absolute;background-color:#e9e9e9;right:3px;top:3px;width:29px;height:29px;border-radius:.275rem;cursor:pointer}.core-form-control-seeker-container>.seeker-icon-wrapper>.flex-wrapper{width:29px;height:29px;display:flex;align-items:center;justify-content:center}.core-form-control-seeker-container>.seeker-icon-wrapper>.flex-wrapper>i{color:#848484;font-size:20px}.core-form-control-seeker-container .input-wrapper{height:var(--size-form-control-height)}.core-form-control-seeker-container .input-wrapper label.text span{display:block;height:calc(var(--size-form-control-height) - 12px);line-height:calc(var(--size-form-control-height) - 12px);width:calc(100% - var(--size-form-control-height));overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:inherit}.core-form-control-seeker-container .input-wrapper .clear-icon-wrapper{display:none;position:absolute;background-color:transparent;right:28px;top:3px;width:29px;height:29px;border-radius:.275rem;cursor:pointer}.core-form-control-seeker-container .input-wrapper .clear-icon-wrapper>.flex-wrapper{width:29px;height:29px;display:flex;align-items:center;justify-content:center}.core-form-control-seeker-container .input-wrapper .clear-icon-wrapper>.flex-wrapper>i{color:#848484;font-size:20px}.core-form-control-seeker-container .input-wrapper:hover>.clear-icon-wrapper{display:block}.core-form-control-seeker-container>.seeker-icon-wrapper.multi-mode{position:relative;width:35px;height:35px}.core-form-control-seeker-container>.seeker-icon-wrapper.multi-mode>.flex-wrapper{width:35px;height:35px}.core-form-control-seeker-container .source-container{display:block;background-color:#fff;padding:var(--size-layout-block-cell-spacing);max-width:1200px;max-height:800px;overflow:hidden;border-radius:10px}.core-form-control-seeker-container .source-container i{font-size:20px;cursor:pointer;float:right}.core-form-control-seeker-container .source-container.d-none{display:none}.core-form-control-seeker-container .source-container>caption{display:block;width:100%}.core-form-control-seeker-container .footer{background-color:var(--color-bg-main);border-bottom-left-radius:10px;border-bottom-right-radius:10px;padding:var(--size-layout-block-cell-spacing)}.core-form-control-seeker-container .footer button:first-child{margin-right:var(--size-layout-block-cell-spacing)}.core-form-control-seeker-container .core-tabbe-wrapper{margin-top:5px}\n"] }]
378
384
  }], ctorParameters: () => [{ type: i1.AlertService }, { type: i0.Injector }, { type: i2.MultiLanguageService }, { type: i3.CoreEmployeeSeekerComponent }, { type: i4.CoreContractSeekerComponent }, { type: i5.CoreWorkingSeekerComponent }, { type: i6.CoreWageSeekerComponent }, { type: i7.CorePositionSeekerComponent }, { type: i8.RandomAvatarService }], propDecorators: { avatar: [{
379
385
  type: ViewChild,
380
386
  args: ['avatar']
@@ -419,4 +425,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
419
425
  type: ViewChild,
420
426
  args: ['container']
421
427
  }] } });
422
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1mb3JtLWNvbnRyb2wtc2Vla2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXIvY29yZS1mb3JtLWNvbnRyb2wtc2Vla2VyL2NvcmUtZm9ybS1jb250cm9sLXNlZWtlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1mb3JtLWNvbnRyb2wtc2Vla2VyL2NvcmUtZm9ybS1jb250cm9sLXNlZWtlci9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsS0FBSyxFQUFxQixTQUFTLEVBQUUsU0FBUyxFQUF5QixNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxLLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQzdHLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTdGLE9BQU8sRUFBYSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHdEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUEyRCxNQUFNLHVDQUF1QyxDQUFDO0FBRTdLLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGdGQUFnRixDQUFDO0FBQzdILE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGdGQUFnRixDQUFDO0FBQzdILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZFQUE2RSxDQUFDO0FBQ3pILE9B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S0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQ2hCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNO2dCQUVpQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgaXNEZXZNb2RlLCBWaWV3Q2hpbGQsIEluamVjdG9yLCBUZW1wbGF0ZVJlZiwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29yZUZvcm1Db250cm9sQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtZm9ybS1jb250cm9sLWJhc2UvY29yZS1mb3JtLWNvbnRyb2wtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFbnVtQ29yZUZvcm1Db250cm9sU2Vla2VyU291cmNlVHlwZSB9IGZyb20gJy4uL0VudW1Db3JlRm9ybUNvbnRyb2xTZWVrZXJTb3VyY2VUeXBlJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IElDb3JlRm9ybUNvbnRyb2xTZWVrZXJFeHRyYUJpbmRpbmdNb2RlbCwgSUNvcmVGb3JtU2VjdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUtZm9ybS9jb3JlLWZvcm0vZW51bS1pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgSU9yZ1RyZWVJdGVtIH0gZnJvbSAnLi4vLi4vY29yZS1vcmctdHJlZS9jb3JlLW9yZy10cmVlL0lPcmdUcmVlSXRlbSc7XHJcbmltcG9ydCB7IENvcmVUYWJsZUNvbXBvbmVudCwgRUNvcmVUYWJsZVRvb2xDbGFzcywgRUNvcmVUYWJsZVRvb2xDb2RlLCBJQ29yZVRhYmxlVG9vbENsaWNrRXZlbnRFbWl0dGVyRGF0YSwgSUNvcmVUYWJsZVRvb2xJdGVtIH0gZnJvbSAnLi4vLi4vY29yZS10YWJsZS9jb3JlLXRhYmxlLmNvbXBvbmVudCc7XHJcblxyXG5pbXBvcnQgeyBDb3JlRW1wbG95ZWVTZWVrZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWVtcGxveWVlLXNlZWtlci9jb3JlLWVtcGxveWVlLXNlZWtlci9jb3JlLWVtcGxveWVlLXNlZWtlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlQ29udHJhY3RTZWVrZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWNvbnRyYWN0LXNlZWtlci9jb3JlLWNvbnRyYWN0LXNlZWtlci9jb3JlLWNvbnRyYWN0LXNlZWtlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlV29ya2luZ1NlZWtlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtd29ya2luZy1zZWVrZXIvY29yZS13b3JraW5nLXNlZWtlci9jb3JlLXdvcmtpbmctc2Vla2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVXYWdlU2Vla2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS13YWdlLXNlZWtlci9jb3JlLXdhZ2Utc2Vla2VyL2NvcmUtd2FnZS1zZWVrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZVBvc2l0aW9uU2Vla2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1wb3NpdGlvbi1zZWVrZXIvY29yZS1wb3NpdGlvbi1zZWVrZXIvY29yZS1wb3NpdGlvbi1zZWVrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRW51bVRyYW5zbGF0ZUtleSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFJhbmRvbUF2YXRhclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yYW5kb20tYXZhdGFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9hbGVydE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBJQ29yZVRhYmxlQ29sdW1uSXRlbSB9IGZyb20gJy4uLy4uL2NvcmUtdGFibGUvSUNvcmVUYWJsZUNvbHVtbkl0ZW0nO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLXBpcGVzL3RyYW5zbGF0ZS5waXBlJztcclxuaW1wb3J0IHsgQ29yZVBvc2l0aW9uQ29uY3VycmVudFNlZWtlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtcG9zaXRpb24tY29uY3VycmVudC1zZWVrZXIvY29yZS1wb3NpdGlvbi1jb25jdXJyZW50LXNlZWtlci9jb3JlLXBvc2l0aW9uLWNvbmN1cnJlbnQtc2Vla2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVQYWdlSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1wYWdlLWhlYWRlci9jb3JlLXBhZ2UtaGVhZGVyL2NvcmUtcGFnZS1oZWFkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb3JlT3JnVW5pdFNlZWtlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtb3JnLXVuaXQtc2Vla2VyL2NvcmUtb3JnLXVuaXQtc2Vla2VyL2NvcmUtb3JnLXVuaXQtc2Vla2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hcEF2YXRhclRvU2VydmVyUGlwZSB9IGZyb20gJy4uLy4uLy4uL2FwcC1waXBlcy9tYXAtYXZhdGFyLXRvLXNlcnZlci5waXBlJztcclxuaW1wb3J0IHsgQ29yZVBhZ2VFZGl0TGl0ZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtcGFnZS1lZGl0LWxpdGUvY29yZS1wYWdlLWVkaXQtbGl0ZS5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLWZvcm0tY29udHJvbC1zZWVrZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVQaXBlLFxyXG4gICAgTWFwQXZhdGFyVG9TZXJ2ZXJQaXBlLFxyXG4gICAgQ29yZVBhZ2VFZGl0TGl0ZUNvbXBvbmVudCxcclxuICAgIENvcmVUYWJsZUNvbXBvbmVudCxcclxuICAgIENvcmVFbXBsb3llZVNlZWtlckNvbXBvbmVudCxcclxuICAgIENvcmVDb250cmFjdFNlZWtlckNvbXBvbmVudCxcclxuICAgIENvcmVXb3JraW5nU2Vla2VyQ29tcG9uZW50LFxyXG4gICAgQ29yZVdhZ2VTZWVrZXJDb21wb25lbnQsXHJcbiAgICBDb3JlT3JnVW5pdFNlZWtlckNvbXBvbmVudCxcclxuICAgIENvcmVQb3NpdGlvblNlZWtlckNvbXBvbmVudCxcclxuICAgIENvcmVQb3NpdGlvbkNvbmN1cnJlbnRTZWVrZXJDb21wb25lbnQsXHJcbiAgICBDb3JlUGFnZUhlYWRlckNvbXBvbmVudCxcclxuICAgIFRvb2x0aXBEaXJlY3RpdmVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvcmUtZm9ybS1jb250cm9sLXNlZWtlci5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBDb3JlRm9ybUNvbnRyb2xTZWVrZXJDb21wb25lbnRcclxuICAgIH0sXHJcbiAgICBDb3JlRW1wbG95ZWVTZWVrZXJDb21wb25lbnQsXHJcbiAgICBDb3JlQ29udHJhY3RTZWVrZXJDb21wb25lbnQsXHJcbiAgICBDb3JlV29ya2luZ1NlZWtlckNvbXBvbmVudCxcclxuICAgIENvcmVXYWdlU2Vla2VyQ29tcG9uZW50LFxyXG4gICAgQ29yZVBvc2l0aW9uU2Vla2VyQ29tcG9uZW50LFxyXG4gIF1cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBDb3JlRm9ybUNvbnRyb2xTZWVrZXJDb21wb25lbnQgZXh0ZW5kcyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuXHJcbiAgQFZpZXdDaGlsZCgnYXZhdGFyJykgYXZhdGFyITogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgbmdDb250cm9sITogTmdDb250cm9sO1xyXG5cclxuICBpc0Rldk1vZGUgPSBpc0Rldk1vZGUoKTtcclxuXHJcbiAgbGFuZyE6IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgdGl0bGUhOiBFbnVtVHJhbnNsYXRlS2V5O1xyXG4gIEBJbnB1dCgpIHNob3dQYWdlSGVhZGVyITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBwcmVEZWZpbmVkT3V0ZXJQYXJhbSQhOiBCZWhhdmlvclN1YmplY3Q8YW55PjtcclxuICBASW5wdXQoKSBjbGljayQhOiBCZWhhdmlvclN1YmplY3Q8YW55PiB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBnZXRCeUlkT2JqZWN0JCE6IEJlaGF2aW9yU3ViamVjdDxhbnk+O1xyXG4gIEBJbnB1dCgpIHBhcmFtTW9kZSE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgbXVsdGlNb2RlITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBvYmplY3RMaXN0JCE6IEJlaGF2aW9yU3ViamVjdDxhbnlbXT47XHJcbiAgQElucHV0KCkgc2hvd25TZWVrZXJDb2x1bW5zITogc3RyaW5nW107IC8vIFJlZHVjZSB2aXNpYmxlIGNvbHVtbnMgZnJvbSBiYXNlIGNvbXBvbmVudC5cclxuXHJcbiAgLyogRXh0ZW5kZWQgc2luY2UgMjAyNC0wMy0yNCAqL1xyXG4gIEBJbnB1dCgpIG11bHRpTW9kZUV4dGVuZGVkQ29sdW1ucyE6IElDb3JlVGFibGVDb2x1bW5JdGVtW107XHJcbiAgQElucHV0KCkgbXVsdGlNb2RlRXh0ZW5kZWRTZWN0aW9ucyE6IElDb3JlRm9ybVNlY3Rpb25bXTtcclxuICBASW5wdXQoKSBlZGl0QnVmZmVyRGF0YSQhOiBCZWhhdmlvclN1YmplY3Q8YW55PjtcclxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcblxyXG4gIC8qIFNUQVJUOiBSRVFVSVJFRCAqL1xyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHNlZWtlclNvdXJjZVR5cGUhOiBFbnVtQ29yZUZvcm1Db250cm9sU2Vla2VyU291cmNlVHlwZTtcclxuICBASW5wdXQoKSBib3VuZEZyb20hOiBzdHJpbmc7IC8vIHRha2UgdGhpcyBmaWVsZCBmcm9tIEdldEJ5SWQgcmVzcG9uc2UgaW5uZXJCb2R5IHRvIGJpbmQgdG8gdGhlIHZhbHVlXHJcbiAgQElucHV0KCkgc2hvd25Gcm9tITogc3RyaW5nOyAvLyB0YWtlIHRoaXMgZmllbGQgZnJvbSBHZXRCeUlkIHJlc3BvbnNlIGlubmVyQm9keSB0byBiaW5kIHRvIHRoZSB0ZXh0XHJcbiAgLyogRU5EOiBSRVFVSVJFRCB3aGVuIEVNUExPWUVFX1NFRUtFUiAqL1xyXG5cclxuICBASW5wdXQoKSBhbHNvQmluZFRvITogSUNvcmVGb3JtQ29udHJvbFNlZWtlckV4dHJhQmluZGluZ01vZGVsW107XHJcbiAgQElucHV0KCkgc2Vla2VyVmVyaWZ5SWdub3JlITogYm9vbGVhbjtcclxuXHJcbiAgQE91dHB1dCgpIG9uRG91YmxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgY29udGFpbmVyITogRWxlbWVudFJlZjtcclxuXHJcbiAgc291cmNlT3BlbiE6IGJvb2xlYW47XHJcblxyXG4gIHZhbHVlVG9TaG93ITogc3RyaW5nO1xyXG4gIHBsYWNlaG9sZGVyITogc3RyaW5nO1xyXG5cclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICAvKiBmb3IgbXVsdGlNb2RlICovXHJcbiAgcGVuZGluZ1NlbGVjdGVkRGF0YTogYW55W10gPSBbXTtcclxuICBzZWxlY3RlZERhdGE6IGFueVtdID0gW107XHJcbiAgbXVsdGlNb2RlQ29sdW1uczogSUNvcmVUYWJsZUNvbHVtbkl0ZW1bXSA9IFtdO1xyXG4gIHNob3dFZGl0QnVmZmVyITogYm9vbGVhbjtcclxuICBlZGl0QnVmZmVyRm9ybSE6IEZvcm1Hcm91cDtcclxuICBlZGl0aW5nSWQhOiBudW1iZXI7XHJcbiAgdG9vbHM6IElDb3JlVGFibGVUb29sSXRlbVtdID0gW3tcclxuICAgIGNvZGU6IEVDb3JlVGFibGVUb29sQ29kZS5kZWxldGUsXHJcbiAgICBjbGFzczogRUNvcmVUYWJsZVRvb2xDbGFzcy5kZWxldGUsXHJcbiAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPUkVfQ09OVFJPTF9UQUJMRV9UT09MX0RFTEVURVxyXG4gIH1dO1xyXG5cclxuICBzaG93Q2xlYXJJY29uITogYm9vbGVhbjtcclxuICBkZWZhdWx0QXZhdGFyITogc3RyaW5nO1xyXG4gIGhpZGVGb290ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvcmVFbXBsb3llZVNlZWtlckNvbXBvbmVudDogQ29yZUVtcGxveWVlU2Vla2VyQ29tcG9uZW50LFxyXG4gICAgcHJpdmF0ZSBjb3JlQ29udHJhY3RTZWVrZXJDb21wb25lbnQ6IENvcmVDb250cmFjdFNlZWtlckNvbXBvbmVudCxcclxuICAgIHByaXZhdGUgY29yZVdvcmtpbmdTZWVrZXJDb21wb25lbnQ6IENvcmVXb3JraW5nU2Vla2VyQ29tcG9uZW50LFxyXG4gICAgcHJpdmF0ZSBjb3JlV2FnZVNlZWtlckNvbXBvbmVudDogQ29yZVdhZ2VTZWVrZXJDb21wb25lbnQsXHJcbiAgICBwcml2YXRlIGNvcmVQb3NpdGlvblNlZWtlckNvbXBvbmVudDogQ29yZVBvc2l0aW9uU2Vla2VyQ29tcG9uZW50LFxyXG4gICAgcHJpdmF0ZSByYXM6IFJhbmRvbUF2YXRhclNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLmRlZmF1bHRBdmF0YXIgPSByYXMuZ2V0KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzaWduTXVsdGlNb2RlQ29sdW1ucygpOiB2b2lkIHtcclxuICAgIHN3aXRjaCAodGhpcy5zZWVrZXJTb3VyY2VUeXBlKSB7XHJcbiAgICAgIGNhc2UgRW51bUNvcmVGb3JtQ29udHJvbFNlZWtlclNvdXJjZVR5cGUuRU1QTE9ZRUVfU0VFSzpcclxuICAgICAgICBpZiAoISF0aGlzLm11bHRpTW9kZUV4dGVuZGVkQ29sdW1ucykge1xyXG4gICAgICAgICAgdGhpcy5tdWx0aU1vZGVDb2x1bW5zID0gWy4uLnRoaXMuY29yZUVtcGxveWVlU2Vla2VyQ29tcG9uZW50LmNvbHVtbnMsIC4uLnRoaXMubXVsdGlNb2RlRXh0ZW5kZWRDb2x1bW5zXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5tdWx0aU1vZGVDb2x1bW5zID0gdGhpcy5jb3JlRW1wbG95ZWVTZWVrZXJDb21wb25lbnQuY29sdW1ucztcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKCEhIXRoaXMubXVsdGlNb2RlKSB7XHJcbiAgICAgICAgICB0aGlzLmhpZGVGb290ZXIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtQ29yZUZvcm1Db250cm9sU2Vla2VyU291cmNlVHlwZS5DT05UUkFDVF9TRUVLOlxyXG4gICAgICAgIHRoaXMubXVsdGlNb2RlQ29sdW1ucyA9IHRoaXMuY29yZUNvbnRyYWN0U2Vla2VyQ29tcG9uZW50LmNvbHVtbnM7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRW51bUNvcmVGb3JtQ29udHJvbFNlZWtlclNvdXJjZVR5cGUuV09SS0lOR19TRUVLOlxyXG4gICAgICAgIHRoaXMubXVsdGlNb2RlQ29sdW1ucyA9IHRoaXMuY29yZVdvcmtpbmdTZWVrZXJDb21wb25lbnQuY29sdW1ucztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtQ29yZUZvcm1Db250cm9sU2Vla2VyU291cmNlVHlwZS5XQUdFX1NFRUs6XHJcbiAgICAgICAgdGhpcy5tdWx0aU1vZGVDb2x1bW5zID0gdGhpcy5jb3JlV2FnZVNlZWtlckNvbXBvbmVudC5jb2x1bW5zO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEVudW1Db3JlRm9ybUNvbnRyb2xTZWVrZXJTb3VyY2VUeXBlLlBPU0lUSU9OX1NFRUs6XHJcbiAgICAgICAgdGhpcy5tdWx0aU1vZGVDb2x1bW5zID0gdGhpcy5jb3JlUG9zaXRpb25TZWVrZXJDb21wb25lbnQuY29sdW1ucztcclxuICAgICAgICBpZiAoISEhdGhpcy5tdWx0aU1vZGUpIHtcclxuICAgICAgICAgIHRoaXMuaGlkZUZvb3RlciA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEVudW1Db3JlRm9ybUNvbnRyb2xTZWVrZXJTb3VyY2VUeXBlLk9SR0FOSVpBVElPTl9VTklUX1NFRUs6XHJcbiAgICAgICAgdGhpcy5tdWx0aU1vZGVDb2x1bW5zID0gW107XHJcbiAgICAgICAgaWYgKCEhIXRoaXMubXVsdGlNb2RlKSB7XHJcbiAgICAgICAgICB0aGlzLmhpZGVGb290ZXIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICAvKlxyXG4gICAgSWYgd2UgdHJ5IHRvIGluamVjdCBOZ0NvbnRyb2wgZGlyZWN0bHkgd2l0aGluIHRoZSBjb25zdHJ1Y3Rvciwgd2Ugd2lsbCBnZXQgYW4gZXJyb3I6IOKAnEVycm9yOiBORzAyMDA6IENpcmN1bGFyIGRlcGVuZGVuY3kgaW4gREkgZGV0ZWN0ZWTigKbigJ0uXHJcbiAgICBUaHVzLCB3ZSBpbmplY3QgTmdDb250cm9sIGluIHRoZSBPbkluaXQgbGlmZWN5Y2xlIGhvb2sgdmlhIEluamVjdG9yIHdpdGhvdXQgYW55IGVycm9yLlxyXG4gICAgKi9cclxuICAgIHRoaXMubmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoTmdDb250cm9sKTtcclxuICAgIHRoaXMuYXNpZ25NdWx0aU1vZGVDb2x1bW5zKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cclxuICAgICAgdGhpcy5tdWx0aU1vZGVDb2x1bW5zPy5tYXAoYyA9PiB7XHJcbiAgICAgICAgaWYgKGMuZmllbGQgPT09ICdhdmF0YXInICYmICEhIWMudGVtcGxhdGVSZWYpIGMudGVtcGxhdGVSZWYgPSB0aGlzLmF2YXRhclxyXG4gICAgICB9KVxyXG5cclxuICAgICAgY29uc3QgZWwgPSB0aGlzLmNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudDtcclxuICAgICAgY29uc3QgaGVpZ2h0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xyXG4gICAgICBlbC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1oZWlnaHQnLCAoaGVpZ2h0IHx8IDUwKSArICdweCcpO1xyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5tbHMubGFuZyQuc3Vic2NyaWJlKHggPT4gdGhpcy5sYW5nID0geClcclxuICAgICAgKVxyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbD8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgIGlmICghISF4KSB0aGlzLnZhbHVlVG9TaG93ID0gXCJcIlxyXG4gICAgICAgIH0pIVxyXG4gICAgICApXHJcblxyXG5cclxuICAgICAgLyogU1RBUlQ6IENIRUNLIElOUFVUUyAqL1xyXG5cclxuXHJcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgIGlmICghISF0aGlzLnNlZWtlclNvdXJjZVR5cGUpIHtcclxuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFxyXG4gICAgICAgICAgICBgQ29yZUZvcm1Db250cm9sU2Vla2VyQ29tcG9uZW50IEVycm9yOiBSZXF1aXJlZCBpbnB1dHM6XHJcbiAgICAgICAgICAgICAgICBzZWVrZXJTb3VyY2VUeXBlOiBFbnVtQ29yZUZvcm1Db250cm9sU2Vla2VyU291cmNlVHlwZSAoZm9yICcke3RoaXMubmdDb250cm9sLm5hbWV9JylgXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG5cclxuICAgICAgICAgIGlmICghISF0aGlzLnBhcmFtTW9kZSkge1xyXG5cclxuICAgICAgICAgICAgLy9nZXRCeUlkT2JqZWN0JFxyXG4gICAgICAgICAgICBpZiAoISEhdGhpcy5nZXRCeUlkT2JqZWN0JCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFxyXG4gICAgICAgICAgICAgICAgYENvcmVGb3JtQ29udHJvbFNlZWtlckNvbXBvbmVudCBFcnJvcjogUmVxdWlyZWQgaW5wdXRzOlxyXG4gICAgICAgICAgICAgICAgICBnZXRCeUlkT2JqZWN0JDogQmVoYXZpb3JTdWJqZWN0Jmx0O2FueSZndDsgKGZvciAnJHt0aGlzLm5nQ29udHJvbC5uYW1lfScpYFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoISEhdGhpcy5ib3VuZEZyb20pIHtcclxuICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoXHJcbiAgICAgICAgICAgICAgYEFsbCBfU0VFS0VSIGNvbnRyb2xzIHJlcXVpcmUgaW5wdXQ6XHJcbiAgICAgICAgICAgICAgICAgICAgYm91bmRGcm9tOiBzdHJpbmc7IChmb3IgJyR7dGhpcy5uZ0NvbnRyb2wubmFtZX0nKWAsXHJcbiAgICAgICAgICAgICAgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnNcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghISF0aGlzLnNob3duRnJvbSkge1xyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihcclxuICAgICAgICAgICAgICBgQWxsIF9TRUVLRVIgY29udHJvbHMgcmVxdWlyZSBpbnB1dDpcclxuICAgICAgICAgICAgICAgICAgICBzaG93bkZyb206IHN0cmluZzsgKGZvciAnJHt0aGlzLm5nQ29udHJvbC5uYW1lfScpYCxcclxuICAgICAgICAgICAgICBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9uc1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICAvKiBFTkQ6IENIRUNLIElOUFVUUyAqL1xyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5nZXRCeUlkT2JqZWN0JD8uc3Vic2NyaWJlKHggPT4ge1xyXG5cclxuICAgICAgICAgIGlmICghIXgpIHtcclxuICAgICAgICAgICAgaWYgKCEhIXRoaXMubXVsdGlNb2RlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZVRvU2hvdyA9IHhbdGhpcy5zaG93bkZyb21dO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoISEhdGhpcy5tdWx0aU1vZGUpIHtcclxuICAgICAgICAgICAgICB0aGlzLnZhbHVlVG9TaG93ID0gXCJcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuXHJcbiAgICAgIGlmICghIXRoaXMub2JqZWN0TGlzdCQpIHtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICAgIHRoaXMub2JqZWN0TGlzdCQuc3Vic2NyaWJlKHggPT4gdGhpcy5zZWxlY3RlZERhdGEgPSB4KVxyXG4gICAgICAgIClcclxuICAgICAgfVxyXG5cclxuICAgIH0pXHJcblxyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLm1hcCh4ID0+IHg/LnVuc3Vic2NyaWJlKCkpXHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudmFsdWUgPSBvYmopO1xyXG4gICAgaWYgKCEhdGhpcy5tdWx0aU1vZGUpIHtcclxuICAgICAgY29uc29sZS5ncm91cCgnV3JpdGUgdmFsdWUgZm9yICcgKyB0aGlzLm5nQ29udHJvbC5uYW1lKTtcclxuICAgICAgY29uc29sZS5sb2coXCJ0aGlzLm11bHRpTW9kZUNvbHVtbnNcIiwgdGhpcy5tdWx0aU1vZGVDb2x1bW5zKVxyXG4gICAgICBjb25zb2xlLmxvZygnVG8gZG86IEFzc2lnbiBhcGkgcmVzIHRvIHRoZSBzZWxlY3RlZERhdGEnKVxyXG4gICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrU2VlaygpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xpY2skPy5uZXh0KHRydWUpO1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkgcmV0dXJuO1xyXG4gICAgdGhpcy5zb3VyY2VPcGVuID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0KCk6IHZvaWQge1xyXG4gICAgaWYgKCEhdGhpcy5tdWx0aU1vZGUpIHtcclxuICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5wZW5kaW5nU2VsZWN0ZWREYXRhLmZpbHRlcih4ID0+IHRoaXMuc2VsZWN0ZWREYXRhLmZpbHRlcih5ID0+IHkuaWQgPT09IHguSWQpLmxlbmd0aCA9PT0gMClcclxuICAgICAgY29uc3QgbmV3U2VsZWN0ZWREYXRhID0gWy4uLnRoaXMuc2VsZWN0ZWREYXRhLCAuLi5maWx0ZXJdO1xyXG4gICAgICBjb25zdCBuZXdTZWxlY3RlZElkczogYW55W10gPSBbXTtcclxuICAgICAgbmV3U2VsZWN0ZWREYXRhLm1hcCh4ID0+IG5ld1NlbGVjdGVkSWRzLnB1c2goeC5pZCkpXHJcbiAgICAgIHRoaXMub2JqZWN0TGlzdCQubmV4dChuZXdTZWxlY3RlZERhdGEpO1xyXG4gICAgICAvL3RoaXMuc2VsZWN0ZWREYXRhID0gbmV3U2VsZWN0ZWREYXRhO1xyXG4gICAgICB0aGlzLnZhbHVlID0gbmV3U2VsZWN0ZWRJZHM7XHJcbiAgICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKG5ld1NlbGVjdGVkSWRzKVxyXG4gICAgICB0aGlzLnBlbmRpbmdTZWxlY3RlZERhdGEgPSBbXTtcclxuICAgICAgdGhpcy5zb3VyY2VPcGVuID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zb3VyY2VPcGVuID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvblJvd0RvdWJsZUNsaWNrKGU6IGFueSkge1xyXG4gICAgdGhpcy53cml0ZVZhbHVlKGVbdGhpcy5ib3VuZEZyb21dKTtcclxuICAgIHRoaXMub25DaGFuZ2UoZVt0aGlzLmJvdW5kRnJvbV0pO1xyXG4gICAgdGhpcy52YWx1ZVRvU2hvdyA9IGVbdGhpcy5zaG93bkZyb21dO1xyXG4gICAgdGhpcy5zb3VyY2VPcGVuID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKCEhdGhpcy5hbHNvQmluZFRvKSB7XHJcbiAgICAgIGNvbnN0IGZvcm0gPSB0aGlzLm5nQ29udHJvbC5jb250cm9sPy5wYXJlbnQ7XHJcbiAgICAgIGlmIChmb3JtKSB7XHJcbiAgICAgICAgdGhpcy5hbHNvQmluZFRvLm1hcCgoeCwgaW5kZXgpID0+IHtcclxuXHJcbiAgICAgICAgICAvKlxyXG4gICAgICAgICAgc3RhcnQ6IFZhbGlkYXRlIERldmVsb3BlciBpbnB1dFxyXG4gICAgICAgICAgKi9cclxuICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSAmJiBpbmRleCA9PT0gMCkge1xyXG4gICAgICAgICAgICBpZiAoISEheC50YWtlRnJvbSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFwidGFrZUZyb20gd2FzIHVuZGVmaW5lZFwiLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoISEhZVt4LnRha2VGcm9tXSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoYFlvdSBleHBlY3QgYSB2YWx1ZSBmcm9tICcke3gudGFrZUZyb219JywgYnV0IHRoZSBzZWVrZXIgZ3JpZCBkb2VzIG5vdCBoYXZlIHRoaXMgY29sdW1uYCwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghISF4LmJpbmRUbykge1xyXG4gICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFwiYmluZFRvIHdhcyB1bmRlZmluZWRcIiwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKCEhIWZvcm0uZ2V0KHguYmluZFRvKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoYFlvdSBleHBlY3QgdG8gYmluZCB2YWx1ZSB0byAnJHt4LmJpbmRUb30nLCBidXQgdGhlIGZvcm0gZ3JvdXAgZG9lcyBub3QgaGF2ZSB0aGlzIGNvbnRyb2xgLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvKlxyXG4gICAgICAgICAgZW5kOiBWYWxpZGF0ZSBEZXZlbG9wZXIgaW5wdXRcclxuICAgICAgICAgICovXHJcblxyXG4gICAgICAgICAgZm9ybS5nZXQoeC5iaW5kVG8pPy5zZXRWYWx1ZShlW3gudGFrZUZyb21dKTtcclxuICAgICAgICAgIGZvcm0uZ2V0KHguYmluZFRvKT8ubWFya0FzVG91Y2hlZDtcclxuICAgICAgICAgIGZvcm0uZ2V0KHguYmluZFRvKT8ubWFya0FzRGlydHkoKTtcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkl0ZW1Eb3VibGVDbGljayhlOiBJT3JnVHJlZUl0ZW0pIHtcclxuICAgIHRoaXMud3JpdGVWYWx1ZShlLmlkKTtcclxuICAgIHRoaXMudmFsdWVUb1Nob3cgPSBlLnRyZWUkVGl0bGU7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKGUuaWQpO1xyXG4gICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICB0aGlzLnNvdXJjZU9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMub25Eb3VibGVDbGljay5lbWl0KGUpO1xyXG4gIH1cclxuXHJcbiAgb25Db2x1bW5zSW5pdChlOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICghIXRoaXMubXVsdGlNb2RlRXh0ZW5kZWRDb2x1bW5zKSB7XHJcbiAgICAgIHRoaXMubXVsdGlNb2RlQ29sdW1ucyA9IFsuLi5lLCAuLi50aGlzLm11bHRpTW9kZUV4dGVuZGVkQ29sdW1uc107XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm11bHRpTW9kZUNvbHVtbnMgPSBlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RlZERhdGFDaGFuZ2UoZTogYW55KSB7XHJcbiAgICBpZiAoISF0aGlzLm11bHRpTW9kZUV4dGVuZGVkQ29sdW1ucykge1xyXG4gICAgICB0aGlzLm11bHRpTW9kZUNvbHVtbnMgPSBbLi4uZS5jb2x1bW5zLCAuLi50aGlzLm11bHRpTW9kZUV4dGVuZGVkQ29sdW1uc107XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm11bHRpTW9kZUNvbHVtbnMgPSBlLmNvbHVtbnM7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMucGVuZGluZ1NlbGVjdGVkRGF0YSA9IGUuZGF0YTtcclxuICB9XHJcblxyXG4gIG9uVG9vbENsaWNrKGU6IElDb3JlVGFibGVUb29sQ2xpY2tFdmVudEVtaXR0ZXJEYXRhKSB7XHJcbiAgICBpZiAoZS5jb2RlID09PSBFQ29yZVRhYmxlVG9vbENvZGUuZGVsZXRlKSB7XHJcbiAgICAgIGNvbnN0IG5ld09iamVjdExpc3QgPSB0aGlzLm9iamVjdExpc3QkLnZhbHVlLmZpbHRlcih4ID0+IHguaWQgIT09IGUuaWQpXHJcbiAgICAgIGNvbnN0IG5ld0lkcyA9IHRoaXMudmFsdWUuZmlsdGVyKCh4OiBhbnkpID0+IHggIT09IGUuaWQpXHJcblxyXG4gICAgICB0aGlzLnZhbHVlID0gbmV3SWRzO1xyXG4gICAgICB0aGlzLm9iamVjdExpc3QkLm5leHQobmV3T2JqZWN0TGlzdCk7XHJcblxyXG4gICAgICB0aGlzLm9uQ2hhbmdlKG5ld0lkcyk7XHJcbiAgICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DbGlja0NsZWFyKCkge1xyXG5cclxuICAgIHRoaXMud3JpdGVWYWx1ZShudWxsKTtcclxuICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XHJcbiAgICB0aGlzLnZhbHVlVG9TaG93ID0gXCJcIjtcclxuXHJcbiAgfVxyXG5cclxuICBvblNlbGVjdGVkRGF0YVJvd0RvdWJsZUNsaWNrKGU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5lZGl0QnVmZmVyRm9ybT8uZ2V0KCdpZCcpPy5wYXRjaFZhbHVlKGUuaWQpXHJcbiAgICB9IGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKGV4Lm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoISF0aGlzLm11bHRpTW9kZUV4dGVuZGVkQ29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5tdWx0aU1vZGVFeHRlbmRlZENvbHVtbnMubWFwKHggPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICB0aGlzLmVkaXRCdWZmZXJGb3JtPy5nZXQoeC5maWVsZCk/LnBhdGNoVmFsdWUoZVt4LmZpZWxkXSlcclxuICAgICAgICB9IGNhdGNoIChleGNlcHRpb246IGFueSkge1xyXG4gICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKGV4Y2VwdGlvbi5tZXNzYWdlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgdGhpcy5lZGl0aW5nSWQgPSBlLmlkO1xyXG4gICAgICB9IGNhdGNoIChleGNlcHRpb246IGFueSkge1xyXG4gICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoZXhjZXB0aW9uLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgdGhpcy5zaG93RWRpdEJ1ZmZlciA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkVkaXRCdWZmZXJTdWJtaXQoZTogYW55KSB7XHJcbiAgICB2YXIgZm9ybURhdGEgPSB0aGlzLmVkaXRCdWZmZXJGb3JtLmdldFJhd1ZhbHVlKCk7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLnNlbGVjdGVkRGF0YT8uZmlsdGVyKHggPT4geC5pZCA9PT0gdGhpcy5lZGl0aW5nSWQpO1xyXG4gICAgICBpZiAoZmlsdGVyPy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICB0aGlzLm11bHRpTW9kZUV4dGVuZGVkQ29sdW1ucz8ubWFwKGMgPT4ge1xyXG4gICAgICAgICAgZmlsdGVyWzBdW2MuZmllbGRdID0gZm9ybURhdGFbYy5maWVsZF07XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmVkaXRCdWZmZXJEYXRhJC5uZXh0KGZvcm1EYXRhKTtcclxuICAgICAgdGhpcy5zaG93RWRpdEJ1ZmZlciA9IGZhbHNlO1xyXG4gICAgfSBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhleCk7XHJcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoZXgubWVzc2FnZSB8fCAnQW4gZXJyb3Igb2NjdXJlZCB3aGlsZSB0cnlpbmcgdG8gdXBkYXRlIHNlbGVjdGVkRGF0YScsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkVkaXRCdWZmZXJDYW5jZWwoZTogYW55KSB7XHJcbiAgICB0aGlzLnNob3dFZGl0QnVmZmVyID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvbkVkaXRCdWZmZXJGb3JtQ3JlYXRlZChlOiBGb3JtR3JvdXApIHtcclxuICAgIHRoaXMuZWRpdEJ1ZmZlckZvcm0gPSBlO1xyXG4gIH1cclxuXHJcbn0iLCI8ZGl2ICNjb250YWluZXIgY2xhc3M9XCJjb3JlLWZvcm0tY29udHJvbC1zZWVrZXItY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtd3JhcHBlclwiIFtjbGFzcy5kLW5vbmVdPVwiISFtdWx0aU1vZGVcIj5cclxuICAgICAgICA8bGFiZWwgI3Nob3duVGV4dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwidGV4dCBmb3JtLWNvbnRyb2xcIiBbY2xhc3MuZm9ybS1jb250cm9sLWRpc2FibGVkXT1cImRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIFthcHBUb29sdGlwXT1cInZhbHVlVG9TaG93XCI+e3sgdmFsdWVUb1Nob3cgfX08L3NwYW4+XHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2xlYXItaWNvbi13cmFwcGVyXCIgKm5nSWY9XCIhISFtdWx0aU1vZGVcIiBbY2xhc3MuZC1ub25lXT1cIiEhZGlzYWJsZWQgfHwgISEhdmFsdWVcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25DbGlja0NsZWFyKClcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtd3JhcHBlclwiIFthcHBUb29sdGlwXT1cIidVSS5DT1JFX0NPTlRPTF9DT01NT05fQ0xFQVInIHwgdHJhbnNsYXRlOiBsYW5nXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZlYXRoZXIteFwiPjwvaT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzZWVrZXItaWNvbi13cmFwcGVyXCIgW2NsYXNzLmZvcm0tY29udHJvbC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtjbGFzcy5tdWx0aS1tb2RlXT1cIiEhbXVsdGlNb2RlXCJcclxuICAgICAgICAoY2xpY2spPVwib25DbGlja1NlZWsoKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXdyYXBwZXJcIiBbY2xhc3MuZm9ybS1jb250cm9sLWRpc2FibGVkXT1cImRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmVhdGhlci1zZWFyY2hcIj48L2k+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb3JlLXRhYmJlLXdyYXBwZXJcIiAqbmdJZj1cIm11bHRpTW9kZVwiPlxyXG4gICAgICAgIDxjb3JlLXRhYmxlIFtjb2x1bW5zXT1cIm11bHRpTW9kZUNvbHVtbnNcIiBbZGF0YV09XCJzZWxlY3RlZERhdGFcIiBbc2hvd1Rvb2xzXT1cIiEhIWRpc2FibGVkXCIgW3Rvb2xzXT1cInRvb2xzXCJcclxuICAgICAgICAgICAgW3NlYXJjaFN3aXRjaERpc2FibGVkXT1cInRydWVcIiAob25Ub29sQ2xpY2spPVwib25Ub29sQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChvblJvd0RvdWJsZUNsaWNrKT1cIm9uU2VsZWN0ZWREYXRhUm93RG91YmxlQ2xpY2soJGV2ZW50KVwiPjwvY29yZS10YWJsZT5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250YWluZXJcIiAqbmdJZj1cIiEhc291cmNlT3BlblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXItcGFuZWxcIj5cclxuICAgICAgICAgICAgICAgIDxjb3JlLXBhZ2UtaGVhZGVyIFt0aXRsZV09XCJ0aXRsZVwiIFtoaWRlQnV0dG9uR3JvdXBdPVwidHJ1ZVwiICpuZ0lmPVwic2hvd1BhZ2VIZWFkZXJcIj48L2NvcmUtcGFnZS1oZWFkZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic291cmNlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmZWF0aGVyLXhcIiAoY2xpY2spPVwib25DYW5jZWwoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmQtYmxvY2tdPVwic2Vla2VyU291cmNlVHlwZT09PSdPUkdBTklaQVRJT05fVU5JVF9TRUVLJ1wiPjwvaT5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgQHN3aXRjaCAoc2Vla2VyU291cmNlVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIEBjYXNlICgnRU1QTE9ZRUVfU0VFSycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVtcGxveWVlU2Vla1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdDT05UUkFDVF9TRUVLJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udHJhY3RTZWVrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ1dPUktJTkdfU0VFSycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIndvcmtpbmdTZWVrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ1dBR0VfU0VFSycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIndhZ2VTZWVrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ09SR0FOSVpBVElPTl9VTklUX1NFRUsnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJvcmdhbml6YXRpb25Vbml0U2Vla1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdQT1NJVElPTl9TRUVLJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicG9zaXRpb25TZWVrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ1BPU0lUSU9OX0NPTkNVUlJFTlRfU0VFSycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBvc2l0aW9uQ29uY3VycmVudFNlZWtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICBAaWYgKCFoaWRlRm9vdGVyKSB7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25TZWxlY3QoKVwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVUlfQ09SRV9DT05GSVJNX0RJQUxPR19CVVRUT05fU0VMRUNUJyB8IHRyYW5zbGF0ZTogbGFuZyB9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1VJX0NPUkVfQ09ORklSTV9ESUFMT0dfQlVUVE9OX0NBTkNFTCcgfCB0cmFuc2xhdGU6IGxhbmcgfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZW1wbG95ZWVTZWVrPlxyXG4gICAgPGNvcmUtZW1wbG95ZWUtc2Vla2VyIFtwcmVEZWZpbmVkT3V0ZXJQYXJhbSRdPVwicHJlRGVmaW5lZE91dGVyUGFyYW0kXCIgW211bHRpTW9kZV09XCJtdWx0aU1vZGVcIlxyXG4gICAgICAgIChyb3dEb3VibGVDbGljayk9XCJvblJvd0RvdWJsZUNsaWNrKCRldmVudClcIiAoY29sdW1uc0luaXQpPVwib25Db2x1bW5zSW5pdCgkZXZlbnQpXCJcclxuICAgICAgICAoc2VsZWN0ZWREYXRhQ2hhbmdlKT1cIm9uU2VsZWN0ZWREYXRhQ2hhbmdlKCRldmVudClcIj48L2NvcmUtZW1wbG95ZWUtc2Vla2VyPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjb250cmFjdFNlZWs+XHJcbiAgICA8Y29yZS1jb250cmFjdC1zZWVrZXIgW3ByZURlZmluZWRPdXRlclBhcmFtJF09XCJwcmVEZWZpbmVkT3V0ZXJQYXJhbSRcIiBbbXVsdGlNb2RlXT1cIm11bHRpTW9kZVwiXHJcbiAgICAgICAgKHJvd0RvdWJsZUNsaWNrKT1cIm9uUm93RG91YmxlQ2xpY2soJGV2ZW50KVwiIChjb2x1bW5zSW5pdCk9XCJvbkNvbHVtbnNJbml0KCRldmVudClcIlxyXG4gICAgICAgIChzZWxlY3RlZERhdGFDaGFuZ2UpPVwib25TZWxlY3RlZERhdGFDaGFuZ2UoJGV2ZW50KVwiPjwvY29yZS1jb250cmFjdC1zZWVrZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3dvcmtpbmdTZWVrPlxyXG4gICAgPGNvcmUtd29ya2luZy1zZWVrZXIgW3ByZURlZmluZWRPdXRlclBhcmFtJF09XCJwcmVEZWZpbmVkT3V0ZXJQYXJhbSRcIiBbbXVsdGlNb2RlXT1cIm11bHRpTW9kZVwiXHJcbiAgICAgICAgKHJvd0RvdWJsZUNsaWNrKT1cIm9uUm93RG91YmxlQ2xpY2soJGV2ZW50KVwiIChjb2x1bW5zSW5pdCk9XCJvbkNvbHVtbnNJbml0KCRldmVudClcIlxyXG4gICAgICAgIChzZWxlY3RlZERhdGFDaGFuZ2UpPVwib25TZWxlY3RlZERhdGFDaGFuZ2UoJGV2ZW50KVwiPjwvY29yZS13b3JraW5nLXNlZWtlcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjd2FnZVNlZWs+XHJcbiAgICA8Y29yZS13YWdlLXNlZWtlciBbcHJlRGVmaW5lZE91dGVyUGFyYW0kXT1cInByZURlZmluZWRPdXRlclBhcmFtJFwiIFttdWx0aU1vZGVdPVwibXVsdGlNb2RlXCJcclxuICAgICAgICAocm93RG91YmxlQ2xpY2spPVwib25Sb3dEb3VibGVDbGljaygkZXZlbnQpXCIgKGNvbHVtbnNJbml0KT1cIm9uQ29sdW1uc0luaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgKHNlbGVjdGVkRGF0YUNoYW5nZSk9XCJvblNlbGVjdGVkRGF0YUNoYW5nZSgkZXZlbnQpXCI+PC9jb3JlLXdhZ2Utc2Vla2VyPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNwb3NpdGlvblNlZWs+XHJcbiAgICA8Y29yZS1wb3NpdGlvbi1zZWVrZXIgW3ByZURlZmluZWRPdXRlclBhcmFtJF09XCJwcmVEZWZpbmVkT3V0ZXJQYXJhbSRcIiBbbXVsdGlNb2RlXT1cIm11bHRpTW9kZVwiXHJcbiAgICAgICAgW3NlZWtlclZlcmlmeUlnbm9yZV09XCJzZWVrZXJWZXJpZnlJZ25vcmVcIiAocm93RG91YmxlQ2xpY2spPVwib25Sb3dEb3VibGVDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAoY29sdW1uc0luaXQpPVwib25Db2x1bW5zSW5pdCgkZXZlbnQpXCJcclxuICAgICAgICAoc2VsZWN0ZWREYXRhQ2hhbmdlKT1cIm9uU2VsZWN0ZWREYXRhQ2hhbmdlKCRldmVudClcIj48L2NvcmUtcG9zaXRpb24tc2Vla2VyPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNwb3NpdGlvbkNvbmN1cnJlbnRTZWVrPlxyXG4gICAgPGNvcmUtcG9zaXRpb24tY29uY3VycmVudC1zZWVrZXIgW3ByZURlZmluZWRPdXRlclBhcmFtJF09XCJwcmVEZWZpbmVkT3V0ZXJQYXJhbSRcIiBbbXVsdGlNb2RlXT1cIm11bHRpTW9kZVwiXHJcbiAgICAgICAgKHJvd0RvdWJsZUNsaWNrKT1cIm9uUm93RG91YmxlQ2xpY2soJGV2ZW50KVwiIChjb2x1bW5zSW5pdCk9XCJvbkNvbHVtbnNJbml0KCRldmVudClcIlxyXG4gICAgICAgIChzZWxlY3RlZERhdGFDaGFuZ2UpPVwib25TZWxlY3RlZERhdGFDaGFuZ2UoJGV2ZW50KVwiPjwvY29yZS1wb3NpdGlvbi1jb25jdXJyZW50LXNlZWtlcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjb3JnYW5pemF0aW9uVW5pdFNlZWs+XHJcbiAgICA8Y29yZS1vcmctdW5pdC1zZWVrZXIgKGl0ZW1Eb3VibGVDbGljayk9XCJvbkl0ZW1Eb3VibGVDbGljaygkZXZlbnQpXCI+PC9jb3JlLW9yZy11bml0LXNlZWtlcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYXZhdGFyIGxldC1hdmF0YXI9XCJjb250ZXh0LmF2YXRhclwiPlxyXG4gICAgPGltZyAqbmdJZj1cImF2YXRhciAhPSBudWxsXCIgW3NyY109XCJhdmF0YXIgfCBtYXBBdmF0YXJUb1NlcnZlclwiIGNsYXNzPVwiaW4tdGFibGUtYXZhdGFyXCIgYXBwSW1hZ2VFcnJvclJlc29sdmVyPlxyXG4gICAgPGltZyAqbmdJZj1cImF2YXRhciA9PSBudWxsXCIgW3NyY109XCJkZWZhdWx0QXZhdGFyXCIgY2xhc3M9XCJpbi10YWJsZS1hdmF0YXJcIiBhcHBJbWFnZUVycm9yUmVzb2x2ZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG5AaWYgKCEhc2hvd0VkaXRCdWZmZXIpIHtcclxuICAgIDxjb3JlLXBhZ2UtZWRpdC1saXRlIFtzZWN0aW9uc109XCJtdWx0aU1vZGVFeHRlbmRlZFNlY3Rpb25zXCIgXHJcbiAgICAgICAgKG9uRm9ybUNyZWF0ZWQpPVwib25FZGl0QnVmZmVyRm9ybUNyZWF0ZWQoJGV2ZW50KVwiIChzdWJtaXRMb2dpYyk9XCJvbkVkaXRCdWZmZXJTdWJtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgKGNhbmNlbExvZ2ljKT1cIm9uRWRpdEJ1ZmZlckNhbmNlbCgkZXZlbnQpXCI+PC9jb3JlLXBhZ2UtZWRpdC1saXRlPlxyXG59Il19
428
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1mb3JtLWNvbnRyb2wtc2Vla2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXIvY29yZS1mb3JtLWNvbnRyb2wtc2Vla2VyL2NvcmUtZm9ybS1jb250cm9sLXNlZWtlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1mb3JtLWNvbnRyb2wtc2Vla2VyL2NvcmUtZm9ybS1jb250cm9sLXNlZWtlci9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsS0FBSyxFQUFxQixTQUFTLEVBQUUsU0FBUyxFQUF5QixNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxLLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQzdHLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTdGLE9BQU8sRUFBYSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHdEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUEyRCxNQUFNLHVDQUF1QyxDQUFDO0FBRTdLLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGdGQUFnRixDQUFDO0FBQzdILE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGdGQUFnRixDQUFDO0FBQzdILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZFQUE2RSxDQUFDO0FBQ3pILE9B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QU07c0JBQWQsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFHRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0cseUJBQXlCO3NCQUFqQyxLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBSXFCLGdCQUFnQjtzQkFBMUMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQ2hCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNO2dCQUVpQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgaXNEZXZNb2RlLCBWaWV3Q2hpbGQsIEluamVjdG9yLCBUZW1wbGF0ZVJlZiwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29yZUZvcm1Db250cm9sQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtZm9ybS1jb250cm9sLWJhc2UvY29yZS1mb3JtLWNvbnRyb2wtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFbnVtQ29yZUZvcm1Db250cm9sU2Vla2VyU291cmNlVHlwZSB9IGZyb20gJy4uL0VudW1Db3JlRm9ybUNvbnRyb2xTZWVrZXJTb3VyY2VUeXBlJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IElDb3JlRm9ybUNvbnRyb2xTZWVrZXJFeHRyYUJpbmRpbmdNb2RlbCwgSUNvcmVGb3JtU2VjdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUtZm9ybS9jb3JlLWZvcm0vZW51bS1pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgSU9yZ1RyZWVJdGVtIH0gZnJvbSAnLi4vLi4vY29yZS1vcmctdHJlZS9jb3JlLW9yZy10cmVlL0lPcmdUcmVlSXRlbSc7XHJcbmltcG9ydCB7IENvcmVUYWJsZUNvbXBvbmVudCwgRUNvcmVUYWJsZVRvb2xDbGFzcywgRUNvcmVUYWJsZVRvb2xDb2RlLCBJQ29yZVRhYmxlVG9vbENsaWNrRXZlbnRFbWl0dGVyRGF0YSwgSUNvcmVUYWJsZVRvb2xJdGVtIH0gZnJvbSAnLi4vLi4vY29yZS10YWJsZS9jb3JlLXRhYmxlLmNvbXBvbmVudCc7XHJcblxyXG5pbXBvcnQgeyBDb3JlRW1wbG95ZWVTZWVrZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWVtcGxveWVlLXNlZWtlci9jb3JlLWVtcGxveWVlLXNlZWtlci9jb3JlLWVtcGxveWVlLXNlZWtlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlQ29udHJhY3RTZWVrZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWNvbnRyYWN0LXNlZWtlci9jb3JlLWNvbnRyYWN0LXNlZWtlci9jb3JlLWNvbnRyYWN0LXNlZWtlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlV29ya2luZ1NlZWtlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtd29ya2luZy1zZWVrZXIvY29yZS13b3JraW5nLXNlZWtlci9jb3JlLXdvcmtpbmctc2Vla2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVXYWdlU2Vla2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS13YWdlLXNlZWtlci9jb3JlLXdhZ2Utc2Vla2VyL2NvcmUtd2FnZS1zZWVrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZVBvc2l0aW9uU2Vla2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1wb3NpdGlvbi1zZWVrZXIvY29yZS1wb3NpdGlvbi1zZWVrZXIvY29yZS1wb3NpdGlvbi1zZWVrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRW51bVRyYW5zbGF0ZUtleSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFJhbmRvbUF2YXRhclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yYW5kb20tYXZhdGFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9hbGVydE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBJQ29yZVRhYmxlQ29sdW1uSXRlbSB9IGZyb20gJy4uLy4uL2NvcmUtdGFibGUvSUNvcmVUYWJsZUNvbHVtbkl0ZW0nO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLXBpcGVzL3RyYW5zbGF0ZS5waXBlJztcclxuaW1wb3J0IHsgQ29yZVBvc2l0aW9uQ29uY3VycmVudFNlZWtlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtcG9zaXRpb24tY29uY3VycmVudC1zZWVrZXIvY29yZS1wb3NpdGlvbi1jb25jdXJyZW50LXNlZWtlci9jb3JlLXBvc2l0aW9uLWNvbmN1cnJlbnQtc2Vla2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVQYWdlSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1wYWdlLWhlYWRlci9jb3JlLXBhZ2UtaGVhZGVyL2NvcmUtcGFnZS1oZWFkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb3JlT3JnVW5pdFNlZWtlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtb3JnLXVuaXQtc2Vla2VyL2NvcmUtb3JnLXVuaXQtc2Vla2VyL2NvcmUtb3JnLXVuaXQtc2Vla2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hcEF2YXRhclRvU2VydmVyUGlwZSB9IGZyb20gJy4uLy4uLy4uL2FwcC1waXBlcy9tYXAtYXZhdGFyLXRvLXNlcnZlci5waXBlJztcclxuaW1wb3J0IHsgQ29yZVBhZ2VFZGl0TGl0ZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtcGFnZS1lZGl0LWxpdGUvY29yZS1wYWdlLWVkaXQtbGl0ZS5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLWZvcm0tY29udHJvbC1zZWVrZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVQaXBlLFxyXG4gICAgTWFwQXZhdGFyVG9TZXJ2ZXJQaXBlLFxyXG4gICAgQ29yZVBhZ2VFZGl0TGl0ZUNvbXBvbmVudCxcclxuICAgIENvcmVUYWJsZUNvbXBvbmVudCxcclxuICAgIENvcmVFbXBsb3llZVNlZWtlckNvbXBvbmVudCxcclxuICAgIENvcmVDb250cmFjdFNlZWtlckNvbXBvbmVudCxcclxuICAgIENvcmVXb3JraW5nU2Vla2VyQ29tcG9uZW50LFxyXG4gICAgQ29yZVdhZ2VTZWVrZXJDb21wb25lbnQsXHJcbiAgICBDb3JlT3JnVW5pdFNlZWtlckNvbXBvbmVudCxcclxuICAgIENvcmVQb3NpdGlvblNlZWtlckNvbXBvbmVudCxcclxuICAgIENvcmVQb3NpdGlvbkNvbmN1cnJlbnRTZWVrZXJDb21wb25lbnQsXHJcbiAgICBDb3JlUGFnZUhlYWRlckNvbXBvbmVudCxcclxuICAgIFRvb2x0aXBEaXJlY3RpdmVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvcmUtZm9ybS1jb250cm9sLXNlZWtlci5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBDb3JlRm9ybUNvbnRyb2xTZWVrZXJDb21wb25lbnRcclxuICAgIH0sXHJcbiAgICBDb3JlRW1wbG95ZWVTZWVrZXJDb21wb25lbnQsXHJcbiAgICBDb3JlQ29udHJhY3RTZWVrZXJDb21wb25lbnQsXHJcbiAgICBDb3JlV29ya2luZ1NlZWtlckNvbXBvbmVudCxcclxuICAgIENvcmVXYWdlU2Vla2VyQ29tcG9uZW50LFxyXG4gICAgQ29yZVBvc2l0aW9uU2Vla2VyQ29tcG9uZW50LFxyXG4gIF1cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBDb3JlRm9ybUNvbnRyb2xTZWVrZXJDb21wb25lbnQgZXh0ZW5kcyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuXHJcbiAgQFZpZXdDaGlsZCgnYXZhdGFyJykgYXZhdGFyITogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgbmdDb250cm9sITogTmdDb250cm9sO1xyXG5cclxuICBpc0Rldk1vZGUgPSBpc0Rldk1vZGUoKTtcclxuXHJcbiAgbGFuZyE6IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgdGl0bGUhOiBFbnVtVHJhbnNsYXRlS2V5O1xyXG4gIEBJbnB1dCgpIHNob3dQYWdlSGVhZGVyITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBwcmVEZWZpbmVkT3V0ZXJQYXJhbSQhOiBCZWhhdmlvclN1YmplY3Q8YW55PjtcclxuICBASW5wdXQoKSBjbGljayQhOiBCZWhhdmlvclN1YmplY3Q8YW55PiB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBnZXRCeUlkT2JqZWN0JCE6IEJlaGF2aW9yU3ViamVjdDxhbnk+O1xyXG4gIEBJbnB1dCgpIHBhcmFtTW9kZSE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgbXVsdGlNb2RlITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBvYmplY3RMaXN0JCE6IEJlaGF2aW9yU3ViamVjdDxhbnlbXT47XHJcbiAgQElucHV0KCkgc2hvd25TZWVrZXJDb2x1bW5zITogc3RyaW5nW107IC8vIFJlZHVjZSB2aXNpYmxlIGNvbHVtbnMgZnJvbSBiYXNlIGNvbXBvbmVudC5cclxuXHJcbiAgLyogRXh0ZW5kZWQgc2luY2UgMjAyNC0wMy0yNCAqL1xyXG4gIEBJbnB1dCgpIG11bHRpTW9kZUV4dGVuZGVkQ29sdW1ucyE6IElDb3JlVGFibGVDb2x1bW5JdGVtW107XHJcbiAgQElucHV0KCkgbXVsdGlNb2RlRXh0ZW5kZWRTZWN0aW9ucyE6IElDb3JlRm9ybVNlY3Rpb25bXTtcclxuICBASW5wdXQoKSBlZGl0QnVmZmVyRGF0YSQhOiBCZWhhdmlvclN1YmplY3Q8YW55PjtcclxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcblxyXG4gIC8qIFNUQVJUOiBSRVFVSVJFRCAqL1xyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHNlZWtlclNvdXJjZVR5cGUhOiBFbnVtQ29yZUZvcm1Db250cm9sU2Vla2VyU291cmNlVHlwZTtcclxuICBASW5wdXQoKSBib3VuZEZyb20hOiBzdHJpbmc7IC8vIHRha2UgdGhpcyBmaWVsZCBmcm9tIEdldEJ5SWQgcmVzcG9uc2UgaW5uZXJCb2R5IHRvIGJpbmQgdG8gdGhlIHZhbHVlXHJcbiAgQElucHV0KCkgc2hvd25Gcm9tITogc3RyaW5nOyAvLyB0YWtlIHRoaXMgZmllbGQgZnJvbSBHZXRCeUlkIHJlc3BvbnNlIGlubmVyQm9keSB0byBiaW5kIHRvIHRoZSB0ZXh0XHJcbiAgLyogRU5EOiBSRVFVSVJFRCB3aGVuIEVNUExPWUVFX1NFRUtFUiAqL1xyXG5cclxuICBASW5wdXQoKSBhbHNvQmluZFRvITogSUNvcmVGb3JtQ29udHJvbFNlZWtlckV4dHJhQmluZGluZ01vZGVsW107XHJcbiAgQElucHV0KCkgc2Vla2VyVmVyaWZ5SWdub3JlITogYm9vbGVhbjtcclxuXHJcbiAgQE91dHB1dCgpIG9uRG91YmxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgY29udGFpbmVyITogRWxlbWVudFJlZjtcclxuXHJcbiAgc291cmNlT3BlbiE6IGJvb2xlYW47XHJcblxyXG4gIHZhbHVlVG9TaG93ITogc3RyaW5nO1xyXG4gIHBsYWNlaG9sZGVyITogc3RyaW5nO1xyXG5cclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICAvKiBmb3IgbXVsdGlNb2RlICovXHJcbiAgcGVuZGluZ1NlbGVjdGVkRGF0YTogYW55W10gPSBbXTtcclxuICBzZWxlY3RlZERhdGE6IGFueVtdID0gW107XHJcbiAgbXVsdGlNb2RlQ29sdW1uczogSUNvcmVUYWJsZUNvbHVtbkl0ZW1bXSA9IFtdO1xyXG4gIHNob3dFZGl0QnVmZmVyITogYm9vbGVhbjtcclxuICBlZGl0QnVmZmVyRm9ybSE6IEZvcm1Hcm91cDtcclxuICBlZGl0aW5nSWQhOiBudW1iZXI7XHJcbiAgdG9vbHM6IElDb3JlVGFibGVUb29sSXRlbVtdID0gW3tcclxuICAgIGNvZGU6IEVDb3JlVGFibGVUb29sQ29kZS5kZWxldGUsXHJcbiAgICBjbGFzczogRUNvcmVUYWJsZVRvb2xDbGFzcy5kZWxldGUsXHJcbiAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPUkVfQ09OVFJPTF9UQUJMRV9UT09MX0RFTEVURVxyXG4gIH1dO1xyXG5cclxuICBzaG93Q2xlYXJJY29uITogYm9vbGVhbjtcclxuICBkZWZhdWx0QXZhdGFyITogc3RyaW5nO1xyXG4gIGhpZGVGb290ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvcmVFbXBsb3llZVNlZWtlckNvbXBvbmVudDogQ29yZUVtcGxveWVlU2Vla2VyQ29tcG9uZW50LFxyXG4gICAgcHJpdmF0ZSBjb3JlQ29udHJhY3RTZWVrZXJDb21wb25lbnQ6IENvcmVDb250cmFjdFNlZWtlckNvbXBvbmVudCxcclxuICAgIHByaXZhdGUgY29yZVdvcmtpbmdTZWVrZXJDb21wb25lbnQ6IENvcmVXb3JraW5nU2Vla2VyQ29tcG9uZW50LFxyXG4gICAgcHJpdmF0ZSBjb3JlV2FnZVNlZWtlckNvbXBvbmVudDogQ29yZVdhZ2VTZWVrZXJDb21wb25lbnQsXHJcbiAgICBwcml2YXRlIGNvcmVQb3NpdGlvblNlZWtlckNvbXBvbmVudDogQ29yZVBvc2l0aW9uU2Vla2VyQ29tcG9uZW50LFxyXG4gICAgcHJpdmF0ZSByYXM6IFJhbmRvbUF2YXRhclNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLmRlZmF1bHRBdmF0YXIgPSByYXMuZ2V0KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzaWduTXVsdGlNb2RlQ29sdW1ucygpOiB2b2lkIHtcclxuICAgIHN3aXRjaCAodGhpcy5zZWVrZXJTb3VyY2VUeXBlKSB7XHJcbiAgICAgIGNhc2UgRW51bUNvcmVGb3JtQ29udHJvbFNlZWtlclNvdXJjZVR5cGUuRU1QTE9ZRUVfU0VFSzpcclxuICAgICAgICBpZiAoISF0aGlzLm11bHRpTW9kZUV4dGVuZGVkQ29sdW1ucykge1xyXG4gICAgICAgICAgdGhpcy5tdWx0aU1vZGVDb2x1bW5zID0gWy4uLnRoaXMuY29yZUVtcGxveWVlU2Vla2VyQ29tcG9uZW50LmNvbHVtbnMsIC4uLnRoaXMubXVsdGlNb2RlRXh0ZW5kZWRDb2x1bW5zXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5tdWx0aU1vZGVDb2x1bW5zID0gdGhpcy5jb3JlRW1wbG95ZWVTZWVrZXJDb21wb25lbnQuY29sdW1ucztcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKCEhIXRoaXMubXVsdGlNb2RlKSB7XHJcbiAgICAgICAgICB0aGlzLmhpZGVGb290ZXIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtQ29yZUZvcm1Db250cm9sU2Vla2VyU291cmNlVHlwZS5DT05UUkFDVF9TRUVLOlxyXG4gICAgICAgIHRoaXMubXVsdGlNb2RlQ29sdW1ucyA9IHRoaXMuY29yZUNvbnRyYWN0U2Vla2VyQ29tcG9uZW50LmNvbHVtbnM7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRW51bUNvcmVGb3JtQ29udHJvbFNlZWtlclNvdXJjZVR5cGUuV09SS0lOR19TRUVLOlxyXG4gICAgICAgIHRoaXMubXVsdGlNb2RlQ29sdW1ucyA9IHRoaXMuY29yZVdvcmtpbmdTZWVrZXJDb21wb25lbnQuY29sdW1ucztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtQ29yZUZvcm1Db250cm9sU2Vla2VyU291cmNlVHlwZS5XQUdFX1NFRUs6XHJcbiAgICAgICAgdGhpcy5tdWx0aU1vZGVDb2x1bW5zID0gdGhpcy5jb3JlV2FnZVNlZWtlckNvbXBvbmVudC5jb2x1bW5zO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEVudW1Db3JlRm9ybUNvbnRyb2xTZWVrZXJTb3VyY2VUeXBlLlBPU0lUSU9OX1NFRUs6XHJcbiAgICAgICAgdGhpcy5tdWx0aU1vZGVDb2x1bW5zID0gdGhpcy5jb3JlUG9zaXRpb25TZWVrZXJDb21wb25lbnQuY29sdW1ucztcclxuICAgICAgICBpZiAoISEhdGhpcy5tdWx0aU1vZGUpIHtcclxuICAgICAgICAgIHRoaXMuaGlkZUZvb3RlciA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEVudW1Db3JlRm9ybUNvbnRyb2xTZWVrZXJTb3VyY2VUeXBlLk9SR0FOSVpBVElPTl9VTklUX1NFRUs6XHJcbiAgICAgICAgdGhpcy5tdWx0aU1vZGVDb2x1bW5zID0gW107XHJcbiAgICAgICAgaWYgKCEhIXRoaXMubXVsdGlNb2RlKSB7XHJcbiAgICAgICAgICB0aGlzLmhpZGVGb290ZXIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICAvKlxyXG4gICAgSWYgd2UgdHJ5IHRvIGluamVjdCBOZ0NvbnRyb2wgZGlyZWN0bHkgd2l0aGluIHRoZSBjb25zdHJ1Y3Rvciwgd2Ugd2lsbCBnZXQgYW4gZXJyb3I6IOKAnEVycm9yOiBORzAyMDA6IENpcmN1bGFyIGRlcGVuZGVuY3kgaW4gREkgZGV0ZWN0ZWTigKbigJ0uXHJcbiAgICBUaHVzLCB3ZSBpbmplY3QgTmdDb250cm9sIGluIHRoZSBPbkluaXQgbGlmZWN5Y2xlIGhvb2sgdmlhIEluamVjdG9yIHdpdGhvdXQgYW55IGVycm9yLlxyXG4gICAgKi9cclxuICAgIHRoaXMubmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoTmdDb250cm9sKTtcclxuICAgIHRoaXMuYXNpZ25NdWx0aU1vZGVDb2x1bW5zKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cclxuICAgICAgdGhpcy5tdWx0aU1vZGVDb2x1bW5zPy5tYXAoYyA9PiB7XHJcbiAgICAgICAgaWYgKGMuZmllbGQgPT09ICdhdmF0YXInICYmICEhIWMudGVtcGxhdGVSZWYpIGMudGVtcGxhdGVSZWYgPSB0aGlzLmF2YXRhclxyXG4gICAgICB9KVxyXG5cclxuICAgICAgY29uc3QgZWwgPSB0aGlzLmNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudDtcclxuICAgICAgY29uc3QgaGVpZ2h0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xyXG4gICAgICBlbC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1oZWlnaHQnLCAoaGVpZ2h0IHx8IDUwKSArICdweCcpO1xyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5tbHMubGFuZyQuc3Vic2NyaWJlKHggPT4gdGhpcy5sYW5nID0geClcclxuICAgICAgKVxyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbD8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgIGlmICghISF4KSB0aGlzLnZhbHVlVG9TaG93ID0gXCJcIlxyXG4gICAgICAgIH0pIVxyXG4gICAgICApXHJcblxyXG5cclxuICAgICAgLyogU1RBUlQ6IENIRUNLIElOUFVUUyAqL1xyXG5cclxuXHJcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgIGlmICghISF0aGlzLnNlZWtlclNvdXJjZVR5cGUpIHtcclxuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFxyXG4gICAgICAgICAgICBgQ29yZUZvcm1Db250cm9sU2Vla2VyQ29tcG9uZW50IEVycm9yOiBSZXF1aXJlZCBpbnB1dHM6XHJcbiAgICAgICAgICAgICAgICBzZWVrZXJTb3VyY2VUeXBlOiBFbnVtQ29yZUZvcm1Db250cm9sU2Vla2VyU291cmNlVHlwZSAoZm9yICcke3RoaXMubmdDb250cm9sLm5hbWV9JylgXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG5cclxuICAgICAgICAgIGlmICghISF0aGlzLnBhcmFtTW9kZSkge1xyXG5cclxuICAgICAgICAgICAgLy9nZXRCeUlkT2JqZWN0JFxyXG4gICAgICAgICAgICBpZiAoISEhdGhpcy5nZXRCeUlkT2JqZWN0JCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFxyXG4gICAgICAgICAgICAgICAgYENvcmVGb3JtQ29udHJvbFNlZWtlckNvbXBvbmVudCBFcnJvcjogUmVxdWlyZWQgaW5wdXRzOlxyXG4gICAgICAgICAgICAgICAgICBnZXRCeUlkT2JqZWN0JDogQmVoYXZpb3JTdWJqZWN0Jmx0O2FueSZndDsgKGZvciAnJHt0aGlzLm5nQ29udHJvbC5uYW1lfScpYFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoISEhdGhpcy5ib3VuZEZyb20pIHtcclxuICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoXHJcbiAgICAgICAgICAgICAgYEFsbCBfU0VFS0VSIGNvbnRyb2xzIHJlcXVpcmUgaW5wdXQ6XHJcbiAgICAgICAgICAgICAgICAgICAgYm91bmRGcm9tOiBzdHJpbmc7IChmb3IgJyR7dGhpcy5uZ0NvbnRyb2wubmFtZX0nKWAsXHJcbiAgICAgICAgICAgICAgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnNcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghISF0aGlzLnNob3duRnJvbSkge1xyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihcclxuICAgICAgICAgICAgICBgQWxsIF9TRUVLRVIgY29udHJvbHMgcmVxdWlyZSBpbnB1dDpcclxuICAgICAgICAgICAgICAgICAgICBzaG93bkZyb206IHN0cmluZzsgKGZvciAnJHt0aGlzLm5nQ29udHJvbC5uYW1lfScpYCxcclxuICAgICAgICAgICAgICBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9uc1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICAvKiBFTkQ6IENIRUNLIElOUFVUUyAqL1xyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5nZXRCeUlkT2JqZWN0JD8uc3Vic2NyaWJlKHggPT4ge1xyXG5cclxuICAgICAgICAgIGlmICghIXgpIHtcclxuICAgICAgICAgICAgaWYgKCEhIXRoaXMubXVsdGlNb2RlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZVRvU2hvdyA9IHhbdGhpcy5zaG93bkZyb21dO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoISEhdGhpcy5tdWx0aU1vZGUpIHtcclxuICAgICAgICAgICAgICB0aGlzLnZhbHVlVG9TaG93ID0gXCJcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuXHJcbiAgICAgIGlmICghIXRoaXMub2JqZWN0TGlzdCQpIHtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICAgIHRoaXMub2JqZWN0TGlzdCQuc3Vic2NyaWJlKHggPT4gdGhpcy5zZWxlY3RlZERhdGEgPSB4KVxyXG4gICAgICAgIClcclxuICAgICAgfVxyXG5cclxuICAgIH0pXHJcblxyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLm1hcCh4ID0+IHg/LnVuc3Vic2NyaWJlKCkpXHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudmFsdWUgPSBvYmopO1xyXG4gICAgaWYgKCEhdGhpcy5tdWx0aU1vZGUpIHtcclxuICAgICAgY29uc29sZS5ncm91cCgnV3JpdGUgdmFsdWUgZm9yICcgKyB0aGlzLm5nQ29udHJvbC5uYW1lKTtcclxuICAgICAgY29uc29sZS5sb2coXCJ0aGlzLm11bHRpTW9kZUNvbHVtbnNcIiwgdGhpcy5tdWx0aU1vZGVDb2x1bW5zKVxyXG4gICAgICBjb25zb2xlLmxvZygnVG8gZG86IEFzc2lnbiBhcGkgcmVzIHRvIHRoZSBzZWxlY3RlZERhdGEnKVxyXG4gICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrU2VlaygpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xpY2skPy5uZXh0KHRydWUpO1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkgcmV0dXJuO1xyXG4gICAgdGhpcy5zb3VyY2VPcGVuID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0KCk6IHZvaWQge1xyXG4gICAgaWYgKCEhdGhpcy5tdWx0aU1vZGUpIHtcclxuICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5wZW5kaW5nU2VsZWN0ZWREYXRhLmZpbHRlcih4ID0+IHRoaXMuc2VsZWN0ZWREYXRhLmZpbHRlcih5ID0+IHkuaWQgPT09IHguSWQpLmxlbmd0aCA9PT0gMClcclxuICAgICAgY29uc3QgbmV3U2VsZWN0ZWREYXRhID0gWy4uLnRoaXMuc2VsZWN0ZWREYXRhLCAuLi5maWx0ZXJdO1xyXG4gICAgICBjb25zdCBuZXdTZWxlY3RlZElkczogYW55W10gPSBbXTtcclxuICAgICAgbmV3U2VsZWN0ZWREYXRhLm1hcCh4ID0+IG5ld1NlbGVjdGVkSWRzLnB1c2goeC5pZCkpXHJcbiAgICAgIHRoaXMub2JqZWN0TGlzdCQubmV4dChuZXdTZWxlY3RlZERhdGEpO1xyXG4gICAgICAvL3RoaXMuc2VsZWN0ZWREYXRhID0gbmV3U2VsZWN0ZWREYXRhO1xyXG4gICAgICB0aGlzLnZhbHVlID0gbmV3U2VsZWN0ZWRJZHM7XHJcbiAgICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKG5ld1NlbGVjdGVkSWRzKVxyXG4gICAgICB0aGlzLnBlbmRpbmdTZWxlY3RlZERhdGEgPSBbXTtcclxuICAgICAgdGhpcy5zb3VyY2VPcGVuID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zb3VyY2VPcGVuID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvblJvd0RvdWJsZUNsaWNrKGU6IGFueSkge1xyXG4gICAgdGhpcy53cml0ZVZhbHVlKGVbdGhpcy5ib3VuZEZyb21dKTtcclxuICAgIHRoaXMub25DaGFuZ2UoZVt0aGlzLmJvdW5kRnJvbV0pO1xyXG4gICAgdGhpcy52YWx1ZVRvU2hvdyA9IGVbdGhpcy5zaG93bkZyb21dO1xyXG4gICAgdGhpcy5zb3VyY2VPcGVuID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKCEhdGhpcy5hbHNvQmluZFRvKSB7XHJcbiAgICAgIGNvbnN0IGZvcm0gPSB0aGlzLm5nQ29udHJvbC5jb250cm9sPy5wYXJlbnQ7XHJcbiAgICAgIGlmIChmb3JtKSB7XHJcbiAgICAgICAgdGhpcy5hbHNvQmluZFRvLm1hcCgoeCwgaW5kZXgpID0+IHtcclxuXHJcbiAgICAgICAgICAvKlxyXG4gICAgICAgICAgc3RhcnQ6IFZhbGlkYXRlIERldmVsb3BlciBpbnB1dFxyXG4gICAgICAgICAgKi9cclxuICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSAmJiBpbmRleCA9PT0gMCkge1xyXG4gICAgICAgICAgICBpZiAoISEheC50YWtlRnJvbSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFwidGFrZUZyb20gd2FzIHVuZGVmaW5lZFwiLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoISEhZVt4LnRha2VGcm9tXSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoYFlvdSBleHBlY3QgYSB2YWx1ZSBmcm9tICcke3gudGFrZUZyb219JywgYnV0IHRoZSBzZWVrZXIgZ3JpZCBkb2VzIG5vdCBoYXZlIHRoaXMgY29sdW1uYCwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghISF4LmJpbmRUbykge1xyXG4gICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFwiYmluZFRvIHdhcyB1bmRlZmluZWRcIiwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKCEhIWZvcm0uZ2V0KHguYmluZFRvKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoYFlvdSBleHBlY3QgdG8gYmluZCB2YWx1ZSB0byAnJHt4LmJpbmRUb30nLCBidXQgdGhlIGZvcm0gZ3JvdXAgZG9lcyBub3QgaGF2ZSB0aGlzIGNvbnRyb2xgLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvKlxyXG4gICAgICAgICAgZW5kOiBWYWxpZGF0ZSBEZXZlbG9wZXIgaW5wdXRcclxuICAgICAgICAgICovXHJcblxyXG4gICAgICAgICAgZm9ybS5nZXQoeC5iaW5kVG8pPy5zZXRWYWx1ZShlW3gudGFrZUZyb21dKTtcclxuICAgICAgICAgIGZvcm0uZ2V0KHguYmluZFRvKT8ubWFya0FzVG91Y2hlZDtcclxuICAgICAgICAgIGZvcm0uZ2V0KHguYmluZFRvKT8ubWFya0FzRGlydHkoKTtcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkl0ZW1Eb3VibGVDbGljayhlOiBJT3JnVHJlZUl0ZW0pIHtcclxuICAgIHRoaXMud3JpdGVWYWx1ZShlLmlkKTtcclxuICAgIHRoaXMudmFsdWVUb1Nob3cgPSBlLnRyZWUkVGl0bGU7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKGUuaWQpO1xyXG4gICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICB0aGlzLnNvdXJjZU9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMub25Eb3VibGVDbGljay5lbWl0KGUpO1xyXG4gIH1cclxuXHJcbiAgb25Db2x1bW5zSW5pdChlOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICghIXRoaXMubXVsdGlNb2RlRXh0ZW5kZWRDb2x1bW5zKSB7XHJcbiAgICAgIHRoaXMubXVsdGlNb2RlQ29sdW1ucyA9IFsuLi5lLCAuLi50aGlzLm11bHRpTW9kZUV4dGVuZGVkQ29sdW1uc107XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm11bHRpTW9kZUNvbHVtbnMgPSBlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RlZERhdGFDaGFuZ2UoZTogYW55KSB7XHJcbiAgICBpZiAoISF0aGlzLm11bHRpTW9kZUV4dGVuZGVkQ29sdW1ucykge1xyXG4gICAgICB0aGlzLm11bHRpTW9kZUNvbHVtbnMgPSBbLi4uZS5jb2x1bW5zLCAuLi50aGlzLm11bHRpTW9kZUV4dGVuZGVkQ29sdW1uc107XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm11bHRpTW9kZUNvbHVtbnMgPSBlLmNvbHVtbnM7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMucGVuZGluZ1NlbGVjdGVkRGF0YSA9IGUuZGF0YTtcclxuICB9XHJcblxyXG4gIG9uVG9vbENsaWNrKGU6IElDb3JlVGFibGVUb29sQ2xpY2tFdmVudEVtaXR0ZXJEYXRhKSB7XHJcbiAgICBpZiAoZS5jb2RlID09PSBFQ29yZVRhYmxlVG9vbENvZGUuZGVsZXRlKSB7XHJcbiAgICAgIGNvbnN0IG5ld09iamVjdExpc3QgPSB0aGlzLm9iamVjdExpc3QkLnZhbHVlLmZpbHRlcih4ID0+IHguaWQgIT09IGUuaWQpXHJcbiAgICAgIGNvbnN0IG5ld0lkcyA9IHRoaXMudmFsdWUuZmlsdGVyKCh4OiBhbnkpID0+IHggIT09IGUuaWQpXHJcblxyXG4gICAgICB0aGlzLnZhbHVlID0gbmV3SWRzO1xyXG4gICAgICB0aGlzLm9iamVjdExpc3QkLm5leHQobmV3T2JqZWN0TGlzdCk7XHJcblxyXG4gICAgICB0aGlzLm9uQ2hhbmdlKG5ld0lkcyk7XHJcbiAgICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DbGlja0NsZWFyKCkge1xyXG5cclxuICAgIHRoaXMud3JpdGVWYWx1ZShudWxsKTtcclxuICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XHJcbiAgICB0aGlzLnZhbHVlVG9TaG93ID0gXCJcIjtcclxuXHJcbiAgfVxyXG5cclxuICBvblNlbGVjdGVkRGF0YVJvd0RvdWJsZUNsaWNrKGU6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coXCJHaXZlbiByb3cgZGF0YTogXCIsIGUpXHJcbiAgICBpZiAoIWUuaWQpIHtcclxuICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoXCJObyAnaWQnIGNvbHVtbnMgZm91bmQgb3IgY3VycmVudCBpZCB3YXMgbnVsbFwiLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmVkaXRCdWZmZXJGb3JtPy5nZXQoJ2lkJyk/LnBhdGNoVmFsdWUoZS5pZClcclxuICAgIH0gY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoZXgubWVzc2FnZSwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoISF0aGlzLm11bHRpTW9kZUV4dGVuZGVkQ29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5tdWx0aU1vZGVFeHRlbmRlZENvbHVtbnMubWFwKHggPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICB0aGlzLmVkaXRCdWZmZXJGb3JtPy5nZXQoeC5maWVsZCk/LnBhdGNoVmFsdWUoZVt4LmZpZWxkXSlcclxuICAgICAgICB9IGNhdGNoIChleGNlcHRpb246IGFueSkge1xyXG4gICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKGV4Y2VwdGlvbi5tZXNzYWdlLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHRoaXMuZWRpdGluZ0lkID0gZS5pZDtcclxuICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uOiBhbnkpIHtcclxuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKGV4Y2VwdGlvbi5tZXNzYWdlLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLnNob3dFZGl0QnVmZmVyID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRWRpdEJ1ZmZlclN1Ym1pdChlOiBhbnkpIHtcclxuICAgIHZhciBmb3JtRGF0YSA9IHRoaXMuZWRpdEJ1ZmZlckZvcm0uZ2V0UmF3VmFsdWUoKTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuc2VsZWN0ZWREYXRhPy5maWx0ZXIoeCA9PiB4LmlkID09PSB0aGlzLmVkaXRpbmdJZCk7XHJcbiAgICAgIGlmIChmaWx0ZXI/Lmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgIHRoaXMubXVsdGlNb2RlRXh0ZW5kZWRDb2x1bW5zPy5tYXAoYyA9PiB7XHJcbiAgICAgICAgICBmaWx0ZXJbMF1bYy5maWVsZF0gPSBmb3JtRGF0YVtjLmZpZWxkXTtcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZWRpdEJ1ZmZlckRhdGEkLm5leHQoZm9ybURhdGEpO1xyXG4gICAgICB0aGlzLnNob3dFZGl0QnVmZmVyID0gZmFsc2U7XHJcbiAgICB9IGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGV4KTtcclxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihleC5tZXNzYWdlIHx8ICdBbiBlcnJvciBvY2N1cmVkIHdoaWxlIHRyeWluZyB0byB1cGRhdGUgc2VsZWN0ZWREYXRhJywgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRWRpdEJ1ZmZlckNhbmNlbChlOiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd0VkaXRCdWZmZXIgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG9uRWRpdEJ1ZmZlckZvcm1DcmVhdGVkKGU6IEZvcm1Hcm91cCkge1xyXG4gICAgdGhpcy5lZGl0QnVmZmVyRm9ybSA9IGU7XHJcbiAgfVxyXG5cclxufSIsIjxkaXYgI2NvbnRhaW5lciBjbGFzcz1cImNvcmUtZm9ybS1jb250cm9sLXNlZWtlci1jb250YWluZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC13cmFwcGVyXCIgW2NsYXNzLmQtbm9uZV09XCIhIW11bHRpTW9kZVwiPlxyXG4gICAgICAgIDxsYWJlbCAjc2hvd25UZXh0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJ0ZXh0IGZvcm0tY29udHJvbFwiIFtjbGFzcy5mb3JtLWNvbnRyb2wtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgPHNwYW4gW2FwcFRvb2x0aXBdPVwidmFsdWVUb1Nob3dcIj57eyB2YWx1ZVRvU2hvdyB9fTwvc3Bhbj5cclxuICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjbGVhci1pY29uLXdyYXBwZXJcIiAqbmdJZj1cIiEhIW11bHRpTW9kZVwiIFtjbGFzcy5kLW5vbmVdPVwiISFkaXNhYmxlZCB8fCAhISF2YWx1ZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrQ2xlYXIoKVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC13cmFwcGVyXCIgW2FwcFRvb2x0aXBdPVwiJ1VJLkNPUkVfQ09OVE9MX0NPTU1PTl9DTEVBUicgfCB0cmFuc2xhdGU6IGxhbmdcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmVhdGhlci14XCI+PC9pPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInNlZWtlci1pY29uLXdyYXBwZXJcIiBbY2xhc3MuZm9ybS1jb250cm9sLWRpc2FibGVkXT1cImRpc2FibGVkXCIgW2NsYXNzLm11bHRpLW1vZGVdPVwiISFtdWx0aU1vZGVcIlxyXG4gICAgICAgIChjbGljayk9XCJvbkNsaWNrU2VlaygpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtd3JhcHBlclwiIFtjbGFzcy5mb3JtLWNvbnRyb2wtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmZWF0aGVyLXNlYXJjaFwiPjwvaT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvcmUtdGFiYmUtd3JhcHBlclwiICpuZ0lmPVwibXVsdGlNb2RlXCI+XHJcbiAgICAgICAgPGNvcmUtdGFibGUgW2NvbHVtbnNdPVwibXVsdGlNb2RlQ29sdW1uc1wiIFtkYXRhXT1cInNlbGVjdGVkRGF0YVwiIFtzaG93VG9vbHNdPVwiISEhZGlzYWJsZWRcIiBbdG9vbHNdPVwidG9vbHNcIlxyXG4gICAgICAgICAgICBbc2VhcmNoU3dpdGNoRGlzYWJsZWRdPVwidHJ1ZVwiIChvblRvb2xDbGljayk9XCJvblRvb2xDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgKG9uUm93RG91YmxlQ2xpY2spPVwib25TZWxlY3RlZERhdGFSb3dEb3VibGVDbGljaygkZXZlbnQpXCI+PC9jb3JlLXRhYmxlPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRhaW5lclwiICpuZ0lmPVwiISFzb3VyY2VPcGVuXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlci1wYW5lbFwiPlxyXG4gICAgICAgICAgICAgICAgPGNvcmUtcGFnZS1oZWFkZXIgW3RpdGxlXT1cInRpdGxlXCIgW2hpZGVCdXR0b25Hcm91cF09XCJ0cnVlXCIgKm5nSWY9XCJzaG93UGFnZUhlYWRlclwiPjwvY29yZS1wYWdlLWhlYWRlcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzb3VyY2UtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZlYXRoZXIteFwiIChjbGljayk9XCJvbkNhbmNlbCgpXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZC1ibG9ja109XCJzZWVrZXJTb3VyY2VUeXBlPT09J09SR0FOSVpBVElPTl9VTklUX1NFRUsnXCI+PC9pPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICBAc3dpdGNoIChzZWVrZXJTb3VyY2VUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICBAY2FzZSAoJ0VNUExPWUVFX1NFRUsnKSB7XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wbG95ZWVTZWVrXCI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIEBjYXNlICgnQ09OVFJBQ1RfU0VFSycpIHtcclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250cmFjdFNlZWtcIj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGNhc2UgKCdXT1JLSU5HX1NFRUsnKSB7XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwid29ya2luZ1NlZWtcIj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGNhc2UgKCdXQUdFX1NFRUsnKSB7XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwid2FnZVNlZWtcIj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGNhc2UgKCdPUkdBTklaQVRJT05fVU5JVF9TRUVLJykge1xyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm9yZ2FuaXphdGlvblVuaXRTZWVrXCI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIEBjYXNlICgnUE9TSVRJT05fU0VFSycpIHtcclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwb3NpdGlvblNlZWtcIj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGNhc2UgKCdQT1NJVElPTl9DT05DVVJSRU5UX1NFRUsnKSB7XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicG9zaXRpb25Db25jdXJyZW50U2Vla1wiPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIEBpZiAoIWhpZGVGb290ZXIpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvblNlbGVjdCgpXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ1VJX0NPUkVfQ09ORklSTV9ESUFMT0dfQlVUVE9OX1NFTEVDVCcgfCB0cmFuc2xhdGU6IGxhbmcgfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnVUlfQ09SRV9DT05GSVJNX0RJQUxPR19CVVRUT05fQ0FOQ0VMJyB8IHRyYW5zbGF0ZTogbGFuZyB9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZW1wbG95ZWVTZWVrPlxyXG4gICAgPGNvcmUtZW1wbG95ZWUtc2Vla2VyIFtwcmVEZWZpbmVkT3V0ZXJQYXJhbSRdPVwicHJlRGVmaW5lZE91dGVyUGFyYW0kXCIgW211bHRpTW9kZV09XCJtdWx0aU1vZGVcIlxyXG4gICAgICAgIChyb3dEb3VibGVDbGljayk9XCJvblJvd0RvdWJsZUNsaWNrKCRldmVudClcIiAoY29sdW1uc0luaXQpPVwib25Db2x1bW5zSW5pdCgkZXZlbnQpXCJcclxuICAgICAgICAoc2VsZWN0ZWREYXRhQ2hhbmdlKT1cIm9uU2VsZWN0ZWREYXRhQ2hhbmdlKCRldmVudClcIj48L2NvcmUtZW1wbG95ZWUtc2Vla2VyPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjb250cmFjdFNlZWs+XHJcbiAgICA8Y29yZS1jb250cmFjdC1zZWVrZXIgW3ByZURlZmluZWRPdXRlclBhcmFtJF09XCJwcmVEZWZpbmVkT3V0ZXJQYXJhbSRcIiBbbXVsdGlNb2RlXT1cIm11bHRpTW9kZVwiXHJcbiAgICAgICAgKHJvd0RvdWJsZUNsaWNrKT1cIm9uUm93RG91YmxlQ2xpY2soJGV2ZW50KVwiIChjb2x1bW5zSW5pdCk9XCJvbkNvbHVtbnNJbml0KCRldmVudClcIlxyXG4gICAgICAgIChzZWxlY3RlZERhdGFDaGFuZ2UpPVwib25TZWxlY3RlZERhdGFDaGFuZ2UoJGV2ZW50KVwiPjwvY29yZS1jb250cmFjdC1zZWVrZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3dvcmtpbmdTZWVrPlxyXG4gICAgPGNvcmUtd29ya2luZy1zZWVrZXIgW3ByZURlZmluZWRPdXRlclBhcmFtJF09XCJwcmVEZWZpbmVkT3V0ZXJQYXJhbSRcIiBbbXVsdGlNb2RlXT1cIm11bHRpTW9kZVwiXHJcbiAgICAgICAgKHJvd0RvdWJsZUNsaWNrKT1cIm9uUm93RG91YmxlQ2xpY2soJGV2ZW50KVwiIChjb2x1bW5zSW5pdCk9XCJvbkNvbHVtbnNJbml0KCRldmVudClcIlxyXG4gICAgICAgIChzZWxlY3RlZERhdGFDaGFuZ2UpPVwib25TZWxlY3RlZERhdGFDaGFuZ2UoJGV2ZW50KVwiPjwvY29yZS13b3JraW5nLXNlZWtlcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjd2FnZVNlZWs+XHJcbiAgICA8Y29yZS13YWdlLXNlZWtlciBbcHJlRGVmaW5lZE91dGVyUGFyYW0kXT1cInByZURlZmluZWRPdXRlclBhcmFtJFwiIFttdWx0aU1vZGVdPVwibXVsdGlNb2RlXCJcclxuICAgICAgICAocm93RG91YmxlQ2xpY2spPVwib25Sb3dEb3VibGVDbGljaygkZXZlbnQpXCIgKGNvbHVtbnNJbml0KT1cIm9uQ29sdW1uc0luaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgKHNlbGVjdGVkRGF0YUNoYW5nZSk9XCJvblNlbGVjdGVkRGF0YUNoYW5nZSgkZXZlbnQpXCI+PC9jb3JlLXdhZ2Utc2Vla2VyPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNwb3NpdGlvblNlZWs+XHJcbiAgICA8Y29yZS1wb3NpdGlvbi1zZWVrZXIgW3ByZURlZmluZWRPdXRlclBhcmFtJF09XCJwcmVEZWZpbmVkT3V0ZXJQYXJhbSRcIiBbbXVsdGlNb2RlXT1cIm11bHRpTW9kZVwiXHJcbiAgICAgICAgW3NlZWtlclZlcmlmeUlnbm9yZV09XCJzZWVrZXJWZXJpZnlJZ25vcmVcIiAocm93RG91YmxlQ2xpY2spPVwib25Sb3dEb3VibGVDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAoY29sdW1uc0luaXQpPVwib25Db2x1bW5zSW5pdCgkZXZlbnQpXCJcclxuICAgICAgICAoc2VsZWN0ZWREYXRhQ2hhbmdlKT1cIm9uU2VsZWN0ZWREYXRhQ2hhbmdlKCRldmVudClcIj48L2NvcmUtcG9zaXRpb24tc2Vla2VyPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNwb3NpdGlvbkNvbmN1cnJlbnRTZWVrPlxyXG4gICAgPGNvcmUtcG9zaXRpb24tY29uY3VycmVudC1zZWVrZXIgW3ByZURlZmluZWRPdXRlclBhcmFtJF09XCJwcmVEZWZpbmVkT3V0ZXJQYXJhbSRcIiBbbXVsdGlNb2RlXT1cIm11bHRpTW9kZVwiXHJcbiAgICAgICAgKHJvd0RvdWJsZUNsaWNrKT1cIm9uUm93RG91YmxlQ2xpY2soJGV2ZW50KVwiIChjb2x1bW5zSW5pdCk9XCJvbkNvbHVtbnNJbml0KCRldmVudClcIlxyXG4gICAgICAgIChzZWxlY3RlZERhdGFDaGFuZ2UpPVwib25TZWxlY3RlZERhdGFDaGFuZ2UoJGV2ZW50KVwiPjwvY29yZS1wb3NpdGlvbi1jb25jdXJyZW50LXNlZWtlcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjb3JnYW5pemF0aW9uVW5pdFNlZWs+XHJcbiAgICA8Y29yZS1vcmctdW5pdC1zZWVrZXIgKGl0ZW1Eb3VibGVDbGljayk9XCJvbkl0ZW1Eb3VibGVDbGljaygkZXZlbnQpXCI+PC9jb3JlLW9yZy11bml0LXNlZWtlcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYXZhdGFyIGxldC1hdmF0YXI9XCJjb250ZXh0LmF2YXRhclwiPlxyXG4gICAgPGltZyAqbmdJZj1cImF2YXRhciAhPSBudWxsXCIgW3NyY109XCJhdmF0YXIgfCBtYXBBdmF0YXJUb1NlcnZlclwiIGNsYXNzPVwiaW4tdGFibGUtYXZhdGFyXCIgYXBwSW1hZ2VFcnJvclJlc29sdmVyPlxyXG4gICAgPGltZyAqbmdJZj1cImF2YXRhciA9PSBudWxsXCIgW3NyY109XCJkZWZhdWx0QXZhdGFyXCIgY2xhc3M9XCJpbi10YWJsZS1hdmF0YXJcIiBhcHBJbWFnZUVycm9yUmVzb2x2ZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48ZGl2IFtjbGFzcy5kLW5vbmVdPVwiIXNob3dFZGl0QnVmZmVyXCI+XHJcbiAgICA8Y29yZS1wYWdlLWVkaXQtbGl0ZSBbc2VjdGlvbnNdPVwibXVsdGlNb2RlRXh0ZW5kZWRTZWN0aW9uc1wiIChvbkZvcm1DcmVhdGVkKT1cIm9uRWRpdEJ1ZmZlckZvcm1DcmVhdGVkKCRldmVudClcIlxyXG4gICAgICAgIChzdWJtaXRMb2dpYyk9XCJvbkVkaXRCdWZmZXJTdWJtaXQoJGV2ZW50KVwiIChjYW5jZWxMb2dpYyk9XCJvbkVkaXRCdWZmZXJDYW5jZWwoJGV2ZW50KVwiPjwvY29yZS1wYWdlLWVkaXQtbGl0ZT5cclxuPC9kaXY+Il19
@@ -13090,12 +13090,18 @@ class CoreFormControlSeekerComponent extends CoreFormControlBaseComponent {
13090
13090
  this.valueToShow = "";
13091
13091
  }
13092
13092
  onSelectedDataRowDoubleClick(e) {
13093
+ console.log("Given row data: ", e);
13094
+ if (!e.id) {
13095
+ if (isDevMode()) {
13096
+ this.alertService.error("No 'id' columns found or current id was null", noneAutoClosedAlertOptions);
13097
+ }
13098
+ }
13093
13099
  try {
13094
13100
  this.editBufferForm?.get('id')?.patchValue(e.id);
13095
13101
  }
13096
13102
  catch (ex) {
13097
13103
  if (isDevMode()) {
13098
- this.alertService.error(ex.message);
13104
+ this.alertService.error(ex.message, noneAutoClosedAlertOptions);
13099
13105
  }
13100
13106
  }
13101
13107
  if (!!this.multiModeExtendedColumns.length) {
@@ -13105,7 +13111,7 @@ class CoreFormControlSeekerComponent extends CoreFormControlBaseComponent {
13105
13111
  }
13106
13112
  catch (exception) {
13107
13113
  if (isDevMode()) {
13108
- this.alertService.error(exception.message);
13114
+ this.alertService.error(exception.message, noneAutoClosedAlertOptions);
13109
13115
  }
13110
13116
  }
13111
13117
  });
@@ -13114,7 +13120,7 @@ class CoreFormControlSeekerComponent extends CoreFormControlBaseComponent {
13114
13120
  }
13115
13121
  catch (exception) {
13116
13122
  if (isDevMode()) {
13117
- this.alertService.error(exception.message);
13123
+ this.alertService.error(exception.message, noneAutoClosedAlertOptions);
13118
13124
  }
13119
13125
  }
13120
13126
  this.showEditBuffer = true;
@@ -13157,7 +13163,7 @@ class CoreFormControlSeekerComponent extends CoreFormControlBaseComponent {
13157
13163
  CoreWorkingSeekerComponent,
13158
13164
  CoreWageSeekerComponent,
13159
13165
  CorePositionSeekerComponent,
13160
- ], viewQueries: [{ propertyName: "avatar", first: true, predicate: ["avatar"], descendants: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #container class=\"core-form-control-seeker-container\">\r\n <div class=\"input-wrapper\" [class.d-none]=\"!!multiMode\">\r\n <label #shownText type=\"text\" class=\"text form-control\" [class.form-control-disabled]=\"disabled\">\r\n <span [appTooltip]=\"valueToShow\">{{ valueToShow }}</span>\r\n </label>\r\n <div class=\"clear-icon-wrapper\" *ngIf=\"!!!multiMode\" [class.d-none]=\"!!disabled || !!!value\"\r\n (click)=\"onClickClear()\">\r\n <div class=\"flex-wrapper\" [appTooltip]=\"'UI.CORE_CONTOL_COMMON_CLEAR' | translate: lang\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"seeker-icon-wrapper\" [class.form-control-disabled]=\"disabled\" [class.multi-mode]=\"!!multiMode\"\r\n (click)=\"onClickSeek()\">\r\n <div class=\"flex-wrapper\" [class.form-control-disabled]=\"disabled\">\r\n <i class=\"feather-search\"></i>\r\n </div>\r\n </div>\r\n <div class=\"core-tabbe-wrapper\" *ngIf=\"multiMode\">\r\n <core-table [columns]=\"multiModeColumns\" [data]=\"selectedData\" [showTools]=\"!!!disabled\" [tools]=\"tools\"\r\n [searchSwitchDisabled]=\"true\" (onToolClick)=\"onToolClick($event)\"\r\n (onRowDoubleClick)=\"onSelectedDataRowDoubleClick($event)\"></core-table>\r\n </div>\r\n\r\n <div class=\"modal-container\" *ngIf=\"!!sourceOpen\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header-panel\">\r\n <core-page-header [title]=\"title\" [hideButtonGroup]=\"true\" *ngIf=\"showPageHeader\"></core-page-header>\r\n </div>\r\n <div class=\"source-container\">\r\n <i class=\"feather-x\" (click)=\"onCancel()\"\r\n [class.d-block]=\"seekerSourceType==='ORGANIZATION_UNIT_SEEK'\"></i>\r\n\r\n\r\n @switch (seekerSourceType) {\r\n @case ('EMPLOYEE_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"employeeSeek\">\r\n </ng-container>\r\n }\r\n @case ('CONTRACT_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"contractSeek\">\r\n </ng-container>\r\n }\r\n @case ('WORKING_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"workingSeek\">\r\n </ng-container>\r\n }\r\n @case ('WAGE_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"wageSeek\">\r\n </ng-container>\r\n }\r\n @case ('ORGANIZATION_UNIT_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"organizationUnitSeek\">\r\n </ng-container>\r\n }\r\n @case ('POSITION_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"positionSeek\">\r\n </ng-container>\r\n }\r\n @case ('POSITION_CONCURRENT_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"positionConcurrentSeek\">\r\n </ng-container>\r\n }\r\n }\r\n\r\n </div>\r\n\r\n @if (!hideFooter) {\r\n <div class=\"footer\">\r\n <div class=\"d-flex-end\">\r\n <button class=\"btn btn-primary\" type=\"button\" (click)=\"onSelect()\">{{\r\n 'UI_CORE_CONFIRM_DIALOG_BUTTON_SELECT' | translate: lang }}</button>\r\n <button class=\"btn btn-secondary\" type=\"button\" (click)=\"onCancel()\">{{\r\n 'UI_CORE_CONFIRM_DIALOG_BUTTON_CANCEL' | translate: lang }}</button>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n </div>\r\n\r\n</div>\r\n\r\n<ng-template #employeeSeek>\r\n <core-employee-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-employee-seeker>\r\n</ng-template>\r\n\r\n<ng-template #contractSeek>\r\n <core-contract-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-contract-seeker>\r\n</ng-template>\r\n\r\n<ng-template #workingSeek>\r\n <core-working-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-working-seeker>\r\n</ng-template>\r\n\r\n<ng-template #wageSeek>\r\n <core-wage-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-wage-seeker>\r\n</ng-template>\r\n\r\n<ng-template #positionSeek>\r\n <core-position-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n [seekerVerifyIgnore]=\"seekerVerifyIgnore\" (rowDoubleClick)=\"onRowDoubleClick($event)\"\r\n (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-position-seeker>\r\n</ng-template>\r\n\r\n<ng-template #positionConcurrentSeek>\r\n <core-position-concurrent-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-position-concurrent-seeker>\r\n</ng-template>\r\n\r\n<ng-template #organizationUnitSeek>\r\n <core-org-unit-seeker (itemDoubleClick)=\"onItemDoubleClick($event)\"></core-org-unit-seeker>\r\n</ng-template>\r\n\r\n<ng-template #avatar let-avatar=\"context.avatar\">\r\n <img *ngIf=\"avatar != null\" [src]=\"avatar | mapAvatarToServer\" class=\"in-table-avatar\" appImageErrorResolver>\r\n <img *ngIf=\"avatar == null\" [src]=\"defaultAvatar\" class=\"in-table-avatar\" appImageErrorResolver>\r\n</ng-template>\r\n\r\n@if (!!showEditBuffer) {\r\n <core-page-edit-lite [sections]=\"multiModeExtendedSections\" \r\n (onFormCreated)=\"onEditBufferFormCreated($event)\" (submitLogic)=\"onEditBufferSubmit($event)\"\r\n (cancelLogic)=\"onEditBufferCancel($event)\"></core-page-edit-lite>\r\n}", styles: [".core-form-control-seeker-container{display:block;position:relative;background-color:#fff}.core-form-control-seeker-container>.seeker-icon-wrapper{display:block;position:absolute;background-color:#e9e9e9;right:3px;top:3px;width:29px;height:29px;border-radius:.275rem;cursor:pointer}.core-form-control-seeker-container>.seeker-icon-wrapper>.flex-wrapper{width:29px;height:29px;display:flex;align-items:center;justify-content:center}.core-form-control-seeker-container>.seeker-icon-wrapper>.flex-wrapper>i{color:#848484;font-size:20px}.core-form-control-seeker-container .input-wrapper{height:var(--size-form-control-height)}.core-form-control-seeker-container .input-wrapper label.text span{display:block;height:calc(var(--size-form-control-height) - 12px);line-height:calc(var(--size-form-control-height) - 12px);width:calc(100% - var(--size-form-control-height));overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:inherit}.core-form-control-seeker-container .input-wrapper .clear-icon-wrapper{display:none;position:absolute;background-color:transparent;right:28px;top:3px;width:29px;height:29px;border-radius:.275rem;cursor:pointer}.core-form-control-seeker-container .input-wrapper .clear-icon-wrapper>.flex-wrapper{width:29px;height:29px;display:flex;align-items:center;justify-content:center}.core-form-control-seeker-container .input-wrapper .clear-icon-wrapper>.flex-wrapper>i{color:#848484;font-size:20px}.core-form-control-seeker-container .input-wrapper:hover>.clear-icon-wrapper{display:block}.core-form-control-seeker-container>.seeker-icon-wrapper.multi-mode{position:relative;width:35px;height:35px}.core-form-control-seeker-container>.seeker-icon-wrapper.multi-mode>.flex-wrapper{width:35px;height:35px}.core-form-control-seeker-container .source-container{display:block;background-color:#fff;padding:var(--size-layout-block-cell-spacing);max-width:1200px;max-height:800px;overflow:hidden;border-radius:10px}.core-form-control-seeker-container .source-container i{font-size:20px;cursor:pointer;float:right}.core-form-control-seeker-container .source-container.d-none{display:none}.core-form-control-seeker-container .source-container>caption{display:block;width:100%}.core-form-control-seeker-container .footer{background-color:var(--color-bg-main);border-bottom-left-radius:10px;border-bottom-right-radius:10px;padding:var(--size-layout-block-cell-spacing)}.core-form-control-seeker-container .footer button:first-child{margin-right:var(--size-layout-block-cell-spacing)}.core-form-control-seeker-container .core-tabbe-wrapper{margin-top:5px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: MapAvatarToServerPipe, name: "mapAvatarToServer" }, { kind: "component", type: CorePageEditLiteComponent, selector: "core-page-edit-lite", inputs: ["width", "captionCode", "sections", "submitText", "checkError$"], outputs: ["onFormCreated", "submitLogic", "cancelLogic"] }, { kind: "component", type: CoreTableComponent, selector: "core-table", inputs: ["id", "width", "height", "showCheckbox", "checkboxSize", "outerButtons", "showTools", "tools", "checkingResetFlag", "headerWrap", "headerFirstRowHeight", "headerSecondRowHeight", "wrap", "allowCellScrollY", "loading", "rowHeight", "frozen", "footer", "columns", "data", "selectedIds", "corePageListInstanceNumber", "disableHighlightOnClick", "freeMode", "searchSwitchDisabled", "inlineToolItems", "columnSearchDefaultOpen", "lazyLoading", "noPaddingCell"], outputs: ["onSearching", "onToolClick", "onRowClick", "onRowDoubleClick", "onSelectedIdsChange", "onSelectedDataChange", "onColumnCaptionClick"] }, { kind: "component", type: CoreEmployeeSeekerComponent, selector: "core-employee-seeker", inputs: ["multiMode", "preDefinedOuterParam$"], outputs: ["rowDoubleClick", "selectedIdsChange", "selectedDataChange", "columnsInit"] }, { kind: "component", type: CoreContractSeekerComponent, selector: "core-contract-seeker", inputs: ["multiMode", "preDefinedOuterParam$"], outputs: ["rowDoubleClick", "selectedIdsChange", "selectedDataChange", "columnsInit"] }, { kind: "component", type: CoreWorkingSeekerComponent, selector: "core-working-seeker", inputs: ["multiMode", "preDefinedOuterParam$"], outputs: ["rowDoubleClick", "selectedIdsChange", "selectedDataChange", "columnsInit"] }, { kind: "component", type: CoreWageSeekerComponent, selector: "core-wage-seeker", inputs: ["multiMode", "preDefinedOuterParam$", "employeeId"], outputs: ["rowDoubleClick", "selectedIdsChange", "selectedDataChange", "columnsInit"] }, { kind: "component", type: CoreOrgUnitSeekerComponent, selector: "core-org-unit-seeker", outputs: ["itemDoubleClick"] }, { kind: "component", type: CorePositionSeekerComponent, selector: "core-position-seeker", inputs: ["multiMode", "preDefinedOuterParam$", "seekerVerifyIgnore"], outputs: ["rowDoubleClick", "selectedIdsChange", "selectedDataChange", "columnsInit"] }, { kind: "component", type: CorePositionConcurrentSeekerComponent, selector: "core-position-concurrent-seeker", inputs: ["multiMode", "preDefinedOuterParam$"], outputs: ["rowDoubleClick", "selectedIdsChange", "selectedDataChange", "columnsInit"] }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup"], outputs: ["buttonClick"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "showAnyway", "position"] }] }); }
13166
+ ], viewQueries: [{ propertyName: "avatar", first: true, predicate: ["avatar"], descendants: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #container class=\"core-form-control-seeker-container\">\r\n <div class=\"input-wrapper\" [class.d-none]=\"!!multiMode\">\r\n <label #shownText type=\"text\" class=\"text form-control\" [class.form-control-disabled]=\"disabled\">\r\n <span [appTooltip]=\"valueToShow\">{{ valueToShow }}</span>\r\n </label>\r\n <div class=\"clear-icon-wrapper\" *ngIf=\"!!!multiMode\" [class.d-none]=\"!!disabled || !!!value\"\r\n (click)=\"onClickClear()\">\r\n <div class=\"flex-wrapper\" [appTooltip]=\"'UI.CORE_CONTOL_COMMON_CLEAR' | translate: lang\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"seeker-icon-wrapper\" [class.form-control-disabled]=\"disabled\" [class.multi-mode]=\"!!multiMode\"\r\n (click)=\"onClickSeek()\">\r\n <div class=\"flex-wrapper\" [class.form-control-disabled]=\"disabled\">\r\n <i class=\"feather-search\"></i>\r\n </div>\r\n </div>\r\n <div class=\"core-tabbe-wrapper\" *ngIf=\"multiMode\">\r\n <core-table [columns]=\"multiModeColumns\" [data]=\"selectedData\" [showTools]=\"!!!disabled\" [tools]=\"tools\"\r\n [searchSwitchDisabled]=\"true\" (onToolClick)=\"onToolClick($event)\"\r\n (onRowDoubleClick)=\"onSelectedDataRowDoubleClick($event)\"></core-table>\r\n </div>\r\n\r\n <div class=\"modal-container\" *ngIf=\"!!sourceOpen\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header-panel\">\r\n <core-page-header [title]=\"title\" [hideButtonGroup]=\"true\" *ngIf=\"showPageHeader\"></core-page-header>\r\n </div>\r\n <div class=\"source-container\">\r\n <i class=\"feather-x\" (click)=\"onCancel()\"\r\n [class.d-block]=\"seekerSourceType==='ORGANIZATION_UNIT_SEEK'\"></i>\r\n\r\n\r\n @switch (seekerSourceType) {\r\n @case ('EMPLOYEE_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"employeeSeek\">\r\n </ng-container>\r\n }\r\n @case ('CONTRACT_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"contractSeek\">\r\n </ng-container>\r\n }\r\n @case ('WORKING_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"workingSeek\">\r\n </ng-container>\r\n }\r\n @case ('WAGE_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"wageSeek\">\r\n </ng-container>\r\n }\r\n @case ('ORGANIZATION_UNIT_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"organizationUnitSeek\">\r\n </ng-container>\r\n }\r\n @case ('POSITION_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"positionSeek\">\r\n </ng-container>\r\n }\r\n @case ('POSITION_CONCURRENT_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"positionConcurrentSeek\">\r\n </ng-container>\r\n }\r\n }\r\n\r\n </div>\r\n\r\n @if (!hideFooter) {\r\n <div class=\"footer\">\r\n <div class=\"d-flex-end\">\r\n <button class=\"btn btn-primary\" type=\"button\" (click)=\"onSelect()\">{{\r\n 'UI_CORE_CONFIRM_DIALOG_BUTTON_SELECT' | translate: lang }}</button>\r\n <button class=\"btn btn-secondary\" type=\"button\" (click)=\"onCancel()\">{{\r\n 'UI_CORE_CONFIRM_DIALOG_BUTTON_CANCEL' | translate: lang }}</button>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n </div>\r\n\r\n</div>\r\n\r\n<ng-template #employeeSeek>\r\n <core-employee-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-employee-seeker>\r\n</ng-template>\r\n\r\n<ng-template #contractSeek>\r\n <core-contract-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-contract-seeker>\r\n</ng-template>\r\n\r\n<ng-template #workingSeek>\r\n <core-working-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-working-seeker>\r\n</ng-template>\r\n\r\n<ng-template #wageSeek>\r\n <core-wage-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-wage-seeker>\r\n</ng-template>\r\n\r\n<ng-template #positionSeek>\r\n <core-position-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n [seekerVerifyIgnore]=\"seekerVerifyIgnore\" (rowDoubleClick)=\"onRowDoubleClick($event)\"\r\n (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-position-seeker>\r\n</ng-template>\r\n\r\n<ng-template #positionConcurrentSeek>\r\n <core-position-concurrent-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-position-concurrent-seeker>\r\n</ng-template>\r\n\r\n<ng-template #organizationUnitSeek>\r\n <core-org-unit-seeker (itemDoubleClick)=\"onItemDoubleClick($event)\"></core-org-unit-seeker>\r\n</ng-template>\r\n\r\n<ng-template #avatar let-avatar=\"context.avatar\">\r\n <img *ngIf=\"avatar != null\" [src]=\"avatar | mapAvatarToServer\" class=\"in-table-avatar\" appImageErrorResolver>\r\n <img *ngIf=\"avatar == null\" [src]=\"defaultAvatar\" class=\"in-table-avatar\" appImageErrorResolver>\r\n</ng-template>\r\n\r\n<div [class.d-none]=\"!showEditBuffer\">\r\n <core-page-edit-lite [sections]=\"multiModeExtendedSections\" (onFormCreated)=\"onEditBufferFormCreated($event)\"\r\n (submitLogic)=\"onEditBufferSubmit($event)\" (cancelLogic)=\"onEditBufferCancel($event)\"></core-page-edit-lite>\r\n</div>", styles: [".core-form-control-seeker-container{display:block;position:relative;background-color:#fff}.core-form-control-seeker-container>.seeker-icon-wrapper{display:block;position:absolute;background-color:#e9e9e9;right:3px;top:3px;width:29px;height:29px;border-radius:.275rem;cursor:pointer}.core-form-control-seeker-container>.seeker-icon-wrapper>.flex-wrapper{width:29px;height:29px;display:flex;align-items:center;justify-content:center}.core-form-control-seeker-container>.seeker-icon-wrapper>.flex-wrapper>i{color:#848484;font-size:20px}.core-form-control-seeker-container .input-wrapper{height:var(--size-form-control-height)}.core-form-control-seeker-container .input-wrapper label.text span{display:block;height:calc(var(--size-form-control-height) - 12px);line-height:calc(var(--size-form-control-height) - 12px);width:calc(100% - var(--size-form-control-height));overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:inherit}.core-form-control-seeker-container .input-wrapper .clear-icon-wrapper{display:none;position:absolute;background-color:transparent;right:28px;top:3px;width:29px;height:29px;border-radius:.275rem;cursor:pointer}.core-form-control-seeker-container .input-wrapper .clear-icon-wrapper>.flex-wrapper{width:29px;height:29px;display:flex;align-items:center;justify-content:center}.core-form-control-seeker-container .input-wrapper .clear-icon-wrapper>.flex-wrapper>i{color:#848484;font-size:20px}.core-form-control-seeker-container .input-wrapper:hover>.clear-icon-wrapper{display:block}.core-form-control-seeker-container>.seeker-icon-wrapper.multi-mode{position:relative;width:35px;height:35px}.core-form-control-seeker-container>.seeker-icon-wrapper.multi-mode>.flex-wrapper{width:35px;height:35px}.core-form-control-seeker-container .source-container{display:block;background-color:#fff;padding:var(--size-layout-block-cell-spacing);max-width:1200px;max-height:800px;overflow:hidden;border-radius:10px}.core-form-control-seeker-container .source-container i{font-size:20px;cursor:pointer;float:right}.core-form-control-seeker-container .source-container.d-none{display:none}.core-form-control-seeker-container .source-container>caption{display:block;width:100%}.core-form-control-seeker-container .footer{background-color:var(--color-bg-main);border-bottom-left-radius:10px;border-bottom-right-radius:10px;padding:var(--size-layout-block-cell-spacing)}.core-form-control-seeker-container .footer button:first-child{margin-right:var(--size-layout-block-cell-spacing)}.core-form-control-seeker-container .core-tabbe-wrapper{margin-top:5px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: MapAvatarToServerPipe, name: "mapAvatarToServer" }, { kind: "component", type: CorePageEditLiteComponent, selector: "core-page-edit-lite", inputs: ["width", "captionCode", "sections", "submitText", "checkError$"], outputs: ["onFormCreated", "submitLogic", "cancelLogic"] }, { kind: "component", type: CoreTableComponent, selector: "core-table", inputs: ["id", "width", "height", "showCheckbox", "checkboxSize", "outerButtons", "showTools", "tools", "checkingResetFlag", "headerWrap", "headerFirstRowHeight", "headerSecondRowHeight", "wrap", "allowCellScrollY", "loading", "rowHeight", "frozen", "footer", "columns", "data", "selectedIds", "corePageListInstanceNumber", "disableHighlightOnClick", "freeMode", "searchSwitchDisabled", "inlineToolItems", "columnSearchDefaultOpen", "lazyLoading", "noPaddingCell"], outputs: ["onSearching", "onToolClick", "onRowClick", "onRowDoubleClick", "onSelectedIdsChange", "onSelectedDataChange", "onColumnCaptionClick"] }, { kind: "component", type: CoreEmployeeSeekerComponent, selector: "core-employee-seeker", inputs: ["multiMode", "preDefinedOuterParam$"], outputs: ["rowDoubleClick", "selectedIdsChange", "selectedDataChange", "columnsInit"] }, { kind: "component", type: CoreContractSeekerComponent, selector: "core-contract-seeker", inputs: ["multiMode", "preDefinedOuterParam$"], outputs: ["rowDoubleClick", "selectedIdsChange", "selectedDataChange", "columnsInit"] }, { kind: "component", type: CoreWorkingSeekerComponent, selector: "core-working-seeker", inputs: ["multiMode", "preDefinedOuterParam$"], outputs: ["rowDoubleClick", "selectedIdsChange", "selectedDataChange", "columnsInit"] }, { kind: "component", type: CoreWageSeekerComponent, selector: "core-wage-seeker", inputs: ["multiMode", "preDefinedOuterParam$", "employeeId"], outputs: ["rowDoubleClick", "selectedIdsChange", "selectedDataChange", "columnsInit"] }, { kind: "component", type: CoreOrgUnitSeekerComponent, selector: "core-org-unit-seeker", outputs: ["itemDoubleClick"] }, { kind: "component", type: CorePositionSeekerComponent, selector: "core-position-seeker", inputs: ["multiMode", "preDefinedOuterParam$", "seekerVerifyIgnore"], outputs: ["rowDoubleClick", "selectedIdsChange", "selectedDataChange", "columnsInit"] }, { kind: "component", type: CorePositionConcurrentSeekerComponent, selector: "core-position-concurrent-seeker", inputs: ["multiMode", "preDefinedOuterParam$"], outputs: ["rowDoubleClick", "selectedIdsChange", "selectedDataChange", "columnsInit"] }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup"], outputs: ["buttonClick"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "showAnyway", "position"] }] }); }
13161
13167
  }
13162
13168
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreFormControlSeekerComponent, decorators: [{
13163
13169
  type: Component,
@@ -13188,7 +13194,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
13188
13194
  CoreWorkingSeekerComponent,
13189
13195
  CoreWageSeekerComponent,
13190
13196
  CorePositionSeekerComponent,
13191
- ], template: "<div #container class=\"core-form-control-seeker-container\">\r\n <div class=\"input-wrapper\" [class.d-none]=\"!!multiMode\">\r\n <label #shownText type=\"text\" class=\"text form-control\" [class.form-control-disabled]=\"disabled\">\r\n <span [appTooltip]=\"valueToShow\">{{ valueToShow }}</span>\r\n </label>\r\n <div class=\"clear-icon-wrapper\" *ngIf=\"!!!multiMode\" [class.d-none]=\"!!disabled || !!!value\"\r\n (click)=\"onClickClear()\">\r\n <div class=\"flex-wrapper\" [appTooltip]=\"'UI.CORE_CONTOL_COMMON_CLEAR' | translate: lang\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"seeker-icon-wrapper\" [class.form-control-disabled]=\"disabled\" [class.multi-mode]=\"!!multiMode\"\r\n (click)=\"onClickSeek()\">\r\n <div class=\"flex-wrapper\" [class.form-control-disabled]=\"disabled\">\r\n <i class=\"feather-search\"></i>\r\n </div>\r\n </div>\r\n <div class=\"core-tabbe-wrapper\" *ngIf=\"multiMode\">\r\n <core-table [columns]=\"multiModeColumns\" [data]=\"selectedData\" [showTools]=\"!!!disabled\" [tools]=\"tools\"\r\n [searchSwitchDisabled]=\"true\" (onToolClick)=\"onToolClick($event)\"\r\n (onRowDoubleClick)=\"onSelectedDataRowDoubleClick($event)\"></core-table>\r\n </div>\r\n\r\n <div class=\"modal-container\" *ngIf=\"!!sourceOpen\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header-panel\">\r\n <core-page-header [title]=\"title\" [hideButtonGroup]=\"true\" *ngIf=\"showPageHeader\"></core-page-header>\r\n </div>\r\n <div class=\"source-container\">\r\n <i class=\"feather-x\" (click)=\"onCancel()\"\r\n [class.d-block]=\"seekerSourceType==='ORGANIZATION_UNIT_SEEK'\"></i>\r\n\r\n\r\n @switch (seekerSourceType) {\r\n @case ('EMPLOYEE_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"employeeSeek\">\r\n </ng-container>\r\n }\r\n @case ('CONTRACT_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"contractSeek\">\r\n </ng-container>\r\n }\r\n @case ('WORKING_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"workingSeek\">\r\n </ng-container>\r\n }\r\n @case ('WAGE_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"wageSeek\">\r\n </ng-container>\r\n }\r\n @case ('ORGANIZATION_UNIT_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"organizationUnitSeek\">\r\n </ng-container>\r\n }\r\n @case ('POSITION_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"positionSeek\">\r\n </ng-container>\r\n }\r\n @case ('POSITION_CONCURRENT_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"positionConcurrentSeek\">\r\n </ng-container>\r\n }\r\n }\r\n\r\n </div>\r\n\r\n @if (!hideFooter) {\r\n <div class=\"footer\">\r\n <div class=\"d-flex-end\">\r\n <button class=\"btn btn-primary\" type=\"button\" (click)=\"onSelect()\">{{\r\n 'UI_CORE_CONFIRM_DIALOG_BUTTON_SELECT' | translate: lang }}</button>\r\n <button class=\"btn btn-secondary\" type=\"button\" (click)=\"onCancel()\">{{\r\n 'UI_CORE_CONFIRM_DIALOG_BUTTON_CANCEL' | translate: lang }}</button>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n </div>\r\n\r\n</div>\r\n\r\n<ng-template #employeeSeek>\r\n <core-employee-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-employee-seeker>\r\n</ng-template>\r\n\r\n<ng-template #contractSeek>\r\n <core-contract-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-contract-seeker>\r\n</ng-template>\r\n\r\n<ng-template #workingSeek>\r\n <core-working-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-working-seeker>\r\n</ng-template>\r\n\r\n<ng-template #wageSeek>\r\n <core-wage-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-wage-seeker>\r\n</ng-template>\r\n\r\n<ng-template #positionSeek>\r\n <core-position-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n [seekerVerifyIgnore]=\"seekerVerifyIgnore\" (rowDoubleClick)=\"onRowDoubleClick($event)\"\r\n (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-position-seeker>\r\n</ng-template>\r\n\r\n<ng-template #positionConcurrentSeek>\r\n <core-position-concurrent-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-position-concurrent-seeker>\r\n</ng-template>\r\n\r\n<ng-template #organizationUnitSeek>\r\n <core-org-unit-seeker (itemDoubleClick)=\"onItemDoubleClick($event)\"></core-org-unit-seeker>\r\n</ng-template>\r\n\r\n<ng-template #avatar let-avatar=\"context.avatar\">\r\n <img *ngIf=\"avatar != null\" [src]=\"avatar | mapAvatarToServer\" class=\"in-table-avatar\" appImageErrorResolver>\r\n <img *ngIf=\"avatar == null\" [src]=\"defaultAvatar\" class=\"in-table-avatar\" appImageErrorResolver>\r\n</ng-template>\r\n\r\n@if (!!showEditBuffer) {\r\n <core-page-edit-lite [sections]=\"multiModeExtendedSections\" \r\n (onFormCreated)=\"onEditBufferFormCreated($event)\" (submitLogic)=\"onEditBufferSubmit($event)\"\r\n (cancelLogic)=\"onEditBufferCancel($event)\"></core-page-edit-lite>\r\n}", styles: [".core-form-control-seeker-container{display:block;position:relative;background-color:#fff}.core-form-control-seeker-container>.seeker-icon-wrapper{display:block;position:absolute;background-color:#e9e9e9;right:3px;top:3px;width:29px;height:29px;border-radius:.275rem;cursor:pointer}.core-form-control-seeker-container>.seeker-icon-wrapper>.flex-wrapper{width:29px;height:29px;display:flex;align-items:center;justify-content:center}.core-form-control-seeker-container>.seeker-icon-wrapper>.flex-wrapper>i{color:#848484;font-size:20px}.core-form-control-seeker-container .input-wrapper{height:var(--size-form-control-height)}.core-form-control-seeker-container .input-wrapper label.text span{display:block;height:calc(var(--size-form-control-height) - 12px);line-height:calc(var(--size-form-control-height) - 12px);width:calc(100% - var(--size-form-control-height));overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:inherit}.core-form-control-seeker-container .input-wrapper .clear-icon-wrapper{display:none;position:absolute;background-color:transparent;right:28px;top:3px;width:29px;height:29px;border-radius:.275rem;cursor:pointer}.core-form-control-seeker-container .input-wrapper .clear-icon-wrapper>.flex-wrapper{width:29px;height:29px;display:flex;align-items:center;justify-content:center}.core-form-control-seeker-container .input-wrapper .clear-icon-wrapper>.flex-wrapper>i{color:#848484;font-size:20px}.core-form-control-seeker-container .input-wrapper:hover>.clear-icon-wrapper{display:block}.core-form-control-seeker-container>.seeker-icon-wrapper.multi-mode{position:relative;width:35px;height:35px}.core-form-control-seeker-container>.seeker-icon-wrapper.multi-mode>.flex-wrapper{width:35px;height:35px}.core-form-control-seeker-container .source-container{display:block;background-color:#fff;padding:var(--size-layout-block-cell-spacing);max-width:1200px;max-height:800px;overflow:hidden;border-radius:10px}.core-form-control-seeker-container .source-container i{font-size:20px;cursor:pointer;float:right}.core-form-control-seeker-container .source-container.d-none{display:none}.core-form-control-seeker-container .source-container>caption{display:block;width:100%}.core-form-control-seeker-container .footer{background-color:var(--color-bg-main);border-bottom-left-radius:10px;border-bottom-right-radius:10px;padding:var(--size-layout-block-cell-spacing)}.core-form-control-seeker-container .footer button:first-child{margin-right:var(--size-layout-block-cell-spacing)}.core-form-control-seeker-container .core-tabbe-wrapper{margin-top:5px}\n"] }]
13197
+ ], template: "<div #container class=\"core-form-control-seeker-container\">\r\n <div class=\"input-wrapper\" [class.d-none]=\"!!multiMode\">\r\n <label #shownText type=\"text\" class=\"text form-control\" [class.form-control-disabled]=\"disabled\">\r\n <span [appTooltip]=\"valueToShow\">{{ valueToShow }}</span>\r\n </label>\r\n <div class=\"clear-icon-wrapper\" *ngIf=\"!!!multiMode\" [class.d-none]=\"!!disabled || !!!value\"\r\n (click)=\"onClickClear()\">\r\n <div class=\"flex-wrapper\" [appTooltip]=\"'UI.CORE_CONTOL_COMMON_CLEAR' | translate: lang\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"seeker-icon-wrapper\" [class.form-control-disabled]=\"disabled\" [class.multi-mode]=\"!!multiMode\"\r\n (click)=\"onClickSeek()\">\r\n <div class=\"flex-wrapper\" [class.form-control-disabled]=\"disabled\">\r\n <i class=\"feather-search\"></i>\r\n </div>\r\n </div>\r\n <div class=\"core-tabbe-wrapper\" *ngIf=\"multiMode\">\r\n <core-table [columns]=\"multiModeColumns\" [data]=\"selectedData\" [showTools]=\"!!!disabled\" [tools]=\"tools\"\r\n [searchSwitchDisabled]=\"true\" (onToolClick)=\"onToolClick($event)\"\r\n (onRowDoubleClick)=\"onSelectedDataRowDoubleClick($event)\"></core-table>\r\n </div>\r\n\r\n <div class=\"modal-container\" *ngIf=\"!!sourceOpen\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header-panel\">\r\n <core-page-header [title]=\"title\" [hideButtonGroup]=\"true\" *ngIf=\"showPageHeader\"></core-page-header>\r\n </div>\r\n <div class=\"source-container\">\r\n <i class=\"feather-x\" (click)=\"onCancel()\"\r\n [class.d-block]=\"seekerSourceType==='ORGANIZATION_UNIT_SEEK'\"></i>\r\n\r\n\r\n @switch (seekerSourceType) {\r\n @case ('EMPLOYEE_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"employeeSeek\">\r\n </ng-container>\r\n }\r\n @case ('CONTRACT_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"contractSeek\">\r\n </ng-container>\r\n }\r\n @case ('WORKING_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"workingSeek\">\r\n </ng-container>\r\n }\r\n @case ('WAGE_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"wageSeek\">\r\n </ng-container>\r\n }\r\n @case ('ORGANIZATION_UNIT_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"organizationUnitSeek\">\r\n </ng-container>\r\n }\r\n @case ('POSITION_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"positionSeek\">\r\n </ng-container>\r\n }\r\n @case ('POSITION_CONCURRENT_SEEK') {\r\n <ng-container *ngTemplateOutlet=\"positionConcurrentSeek\">\r\n </ng-container>\r\n }\r\n }\r\n\r\n </div>\r\n\r\n @if (!hideFooter) {\r\n <div class=\"footer\">\r\n <div class=\"d-flex-end\">\r\n <button class=\"btn btn-primary\" type=\"button\" (click)=\"onSelect()\">{{\r\n 'UI_CORE_CONFIRM_DIALOG_BUTTON_SELECT' | translate: lang }}</button>\r\n <button class=\"btn btn-secondary\" type=\"button\" (click)=\"onCancel()\">{{\r\n 'UI_CORE_CONFIRM_DIALOG_BUTTON_CANCEL' | translate: lang }}</button>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n </div>\r\n\r\n</div>\r\n\r\n<ng-template #employeeSeek>\r\n <core-employee-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-employee-seeker>\r\n</ng-template>\r\n\r\n<ng-template #contractSeek>\r\n <core-contract-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-contract-seeker>\r\n</ng-template>\r\n\r\n<ng-template #workingSeek>\r\n <core-working-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-working-seeker>\r\n</ng-template>\r\n\r\n<ng-template #wageSeek>\r\n <core-wage-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-wage-seeker>\r\n</ng-template>\r\n\r\n<ng-template #positionSeek>\r\n <core-position-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n [seekerVerifyIgnore]=\"seekerVerifyIgnore\" (rowDoubleClick)=\"onRowDoubleClick($event)\"\r\n (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-position-seeker>\r\n</ng-template>\r\n\r\n<ng-template #positionConcurrentSeek>\r\n <core-position-concurrent-seeker [preDefinedOuterParam$]=\"preDefinedOuterParam$\" [multiMode]=\"multiMode\"\r\n (rowDoubleClick)=\"onRowDoubleClick($event)\" (columnsInit)=\"onColumnsInit($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-position-concurrent-seeker>\r\n</ng-template>\r\n\r\n<ng-template #organizationUnitSeek>\r\n <core-org-unit-seeker (itemDoubleClick)=\"onItemDoubleClick($event)\"></core-org-unit-seeker>\r\n</ng-template>\r\n\r\n<ng-template #avatar let-avatar=\"context.avatar\">\r\n <img *ngIf=\"avatar != null\" [src]=\"avatar | mapAvatarToServer\" class=\"in-table-avatar\" appImageErrorResolver>\r\n <img *ngIf=\"avatar == null\" [src]=\"defaultAvatar\" class=\"in-table-avatar\" appImageErrorResolver>\r\n</ng-template>\r\n\r\n<div [class.d-none]=\"!showEditBuffer\">\r\n <core-page-edit-lite [sections]=\"multiModeExtendedSections\" (onFormCreated)=\"onEditBufferFormCreated($event)\"\r\n (submitLogic)=\"onEditBufferSubmit($event)\" (cancelLogic)=\"onEditBufferCancel($event)\"></core-page-edit-lite>\r\n</div>", styles: [".core-form-control-seeker-container{display:block;position:relative;background-color:#fff}.core-form-control-seeker-container>.seeker-icon-wrapper{display:block;position:absolute;background-color:#e9e9e9;right:3px;top:3px;width:29px;height:29px;border-radius:.275rem;cursor:pointer}.core-form-control-seeker-container>.seeker-icon-wrapper>.flex-wrapper{width:29px;height:29px;display:flex;align-items:center;justify-content:center}.core-form-control-seeker-container>.seeker-icon-wrapper>.flex-wrapper>i{color:#848484;font-size:20px}.core-form-control-seeker-container .input-wrapper{height:var(--size-form-control-height)}.core-form-control-seeker-container .input-wrapper label.text span{display:block;height:calc(var(--size-form-control-height) - 12px);line-height:calc(var(--size-form-control-height) - 12px);width:calc(100% - var(--size-form-control-height));overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:inherit}.core-form-control-seeker-container .input-wrapper .clear-icon-wrapper{display:none;position:absolute;background-color:transparent;right:28px;top:3px;width:29px;height:29px;border-radius:.275rem;cursor:pointer}.core-form-control-seeker-container .input-wrapper .clear-icon-wrapper>.flex-wrapper{width:29px;height:29px;display:flex;align-items:center;justify-content:center}.core-form-control-seeker-container .input-wrapper .clear-icon-wrapper>.flex-wrapper>i{color:#848484;font-size:20px}.core-form-control-seeker-container .input-wrapper:hover>.clear-icon-wrapper{display:block}.core-form-control-seeker-container>.seeker-icon-wrapper.multi-mode{position:relative;width:35px;height:35px}.core-form-control-seeker-container>.seeker-icon-wrapper.multi-mode>.flex-wrapper{width:35px;height:35px}.core-form-control-seeker-container .source-container{display:block;background-color:#fff;padding:var(--size-layout-block-cell-spacing);max-width:1200px;max-height:800px;overflow:hidden;border-radius:10px}.core-form-control-seeker-container .source-container i{font-size:20px;cursor:pointer;float:right}.core-form-control-seeker-container .source-container.d-none{display:none}.core-form-control-seeker-container .source-container>caption{display:block;width:100%}.core-form-control-seeker-container .footer{background-color:var(--color-bg-main);border-bottom-left-radius:10px;border-bottom-right-radius:10px;padding:var(--size-layout-block-cell-spacing)}.core-form-control-seeker-container .footer button:first-child{margin-right:var(--size-layout-block-cell-spacing)}.core-form-control-seeker-container .core-tabbe-wrapper{margin-top:5px}\n"] }]
13192
13198
  }], ctorParameters: () => [{ type: AlertService }, { type: i0.Injector }, { type: MultiLanguageService }, { type: CoreEmployeeSeekerComponent }, { type: CoreContractSeekerComponent }, { type: CoreWorkingSeekerComponent }, { type: CoreWageSeekerComponent }, { type: CorePositionSeekerComponent }, { type: RandomAvatarService }], propDecorators: { avatar: [{
13193
13199
  type: ViewChild,
13194
13200
  args: ['avatar']