barsa-sap-ui 2.0.31 → 2.0.33

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.
@@ -0,0 +1,40 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class AvatarGridColPipe {
4
+ transform(deviceSize, isAvatarCol = true) {
5
+ if (isAvatarCol) {
6
+ switch (deviceSize) {
7
+ case 'l':
8
+ return 3;
9
+ case 'xl':
10
+ return 2;
11
+ case 'm':
12
+ return 2;
13
+ case 's':
14
+ return 1;
15
+ }
16
+ }
17
+ if (isAvatarCol) {
18
+ switch (deviceSize) {
19
+ case 'l':
20
+ return 9;
21
+ case 'xl':
22
+ return 10;
23
+ case 'm':
24
+ return 10;
25
+ case 's':
26
+ return 11;
27
+ }
28
+ }
29
+ return 2;
30
+ }
31
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: AvatarGridColPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
32
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.5", ngImport: i0, type: AvatarGridColPipe, name: "avatarGridCol" }); }
33
+ }
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: AvatarGridColPipe, decorators: [{
35
+ type: Pipe,
36
+ args: [{
37
+ name: 'avatarGridCol'
38
+ }]
39
+ }] });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLXNpemUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2F2YXRhci1zaXplLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxpQkFBaUI7SUFDMUIsU0FBUyxDQUFDLFVBQWlDLEVBQUUsY0FBdUIsSUFBSTtRQUNwRSxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2QsUUFBUSxVQUFVLEVBQUUsQ0FBQztnQkFDakIsS0FBSyxHQUFHO29CQUNKLE9BQU8sQ0FBQyxDQUFDO2dCQUNiLEtBQUssSUFBSTtvQkFDTCxPQUFPLENBQUMsQ0FBQztnQkFDYixLQUFLLEdBQUc7b0JBQ0osT0FBTyxDQUFDLENBQUM7Z0JBQ2IsS0FBSyxHQUFHO29CQUNKLE9BQU8sQ0FBQyxDQUFDO1lBQ2pCLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNkLFFBQVEsVUFBVSxFQUFFLENBQUM7Z0JBQ2pCLEtBQUssR0FBRztvQkFDSixPQUFPLENBQUMsQ0FBQztnQkFDYixLQUFLLElBQUk7b0JBQ0wsT0FBTyxFQUFFLENBQUM7Z0JBQ2QsS0FBSyxHQUFHO29CQUNKLE9BQU8sRUFBRSxDQUFDO2dCQUNkLEtBQUssR0FBRztvQkFDSixPQUFPLEVBQUUsQ0FBQztZQUNsQixDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQzs4R0EzQlEsaUJBQWlCOzRHQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBSDdCLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLGVBQWU7aUJBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZVRyYW5zZm9ybSwgUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYmJyZXZhdGlvbkRldmljZVNpemUgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XHJcblxyXG5AUGlwZSh7XHJcbiAgICBuYW1lOiAnYXZhdGFyR3JpZENvbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEF2YXRhckdyaWRDb2xQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgICB0cmFuc2Zvcm0oZGV2aWNlU2l6ZTogQWJicmV2YXRpb25EZXZpY2VTaXplLCBpc0F2YXRhckNvbDogYm9vbGVhbiA9IHRydWUpOiBudW1iZXIge1xyXG4gICAgICAgIGlmIChpc0F2YXRhckNvbCkge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKGRldmljZVNpemUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2wnOlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAzO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAneGwnOlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAyO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnbSc6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDI7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdzJzpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNBdmF0YXJDb2wpIHtcclxuICAgICAgICAgICAgc3dpdGNoIChkZXZpY2VTaXplKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdsJzpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gOTtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ3hsJzpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTA7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdtJzpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTA7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdzJzpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIDI7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -230,15 +230,16 @@ import * as i206 from "./barsa-tree-item/node-has-one-depth-level.pipe";
230
230
  import * as i207 from "./column-matrix-renderer/matrix-value.pipe";
231
231
  import * as i208 from "./dynamic-page-size.pipe";
232
232
  import * as i209 from "./sap-size.pipe";
233
- import * as i210 from "./wizard-layout.directive";
234
- import * as i211 from "./col-renderer.directive";
235
- import * as i212 from "./apply-conditional-formmatings.directive";
236
- import * as i213 from "./report-view-renderer.directive";
237
- import * as i214 from "./fullscreen-dialog.directive";
238
- import * as i215 from "./fullscreen-files.directive";
239
- import * as i216 from "./download-files.directive";
240
- import * as i217 from "./dialog-handler.directive";
241
- import * as i218 from "@fundamental-ngx/core";
233
+ import * as i210 from "./avatar-size.pipe";
234
+ import * as i211 from "./wizard-layout.directive";
235
+ import * as i212 from "./col-renderer.directive";
236
+ import * as i213 from "./apply-conditional-formmatings.directive";
237
+ import * as i214 from "./report-view-renderer.directive";
238
+ import * as i215 from "./fullscreen-dialog.directive";
239
+ import * as i216 from "./fullscreen-files.directive";
240
+ import * as i217 from "./download-files.directive";
241
+ import * as i218 from "./dialog-handler.directive";
242
+ import * as i219 from "@fundamental-ngx/core";
242
243
  const rootProviders = [
243
244
  Overlay,
244
245
  GlobalContentDensityService,
@@ -269,7 +270,7 @@ export class BarsaSapUiModule extends BaseModule {
269
270
  };
270
271
  }
271
272
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaSapUiModule, deps: [{ token: i1.DynamicComponentService }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.NgModule }); }
272
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.5", ngImport: i0, type: BarsaSapUiModule, declarations: [i2.UiTextFieldComponent, i3.LyLayoutFieldLabelComponent, i4.UiCheckBoxComponent, i5.UiSimpleComboComponent, i6.UiRadioGroupComponent, i7.UiGridComponent, i8.LyLayoutContainerOfRootComponent, i9.LyLayoutPanelComponent, i10.UiReadOnlyFieldComponent, i11.UiContainerWithButtonComponent, i12.UiPictureFileComponent, i13.UiMoInfoUlvComboComponent, i14.UiMultiSelectComboComponent, i15.UiNumDecimalUiComponent, i16.UiNumIntUiComponent, i17.UiTimeSpanComponent, i18.UiFileLinearListBoxComponent, i19.LyEmptySpaceComponent, i20.UiSinglePictureComponent, i21.UlvSelectionComponent, i22.UlvToolbarComponent, i23.UlvPagingComponent, i24.UiGridSortSettingComponent, i25.UiGridSortItemComponent, i26.UiGridColumnsComponent, i27.MaskComponent, i28.UiInfoBarPanelComponent, i29.UiFormPanelComponent, i30.UiSearchCommandInfoUiComponent, i31.UlvSettingsComponent, i32.UiTinymceComponent, i33.UiButtonComponent, i34.UiDateTimeComponent, i35.FormDialogComponent, i36.HeaderFacetKeyValueComponent, i37.HeaderFacetFormComponent, i38.HeaderFacetRateComponent, i39.HeaderFacetProgressComponent, i40.HeaderFacetMicrochartComponent, i41.HeaderFacetPlainTextComponent, i42.UiMoInfoSubFormUiComponent, i43.ResponsiveToolbarComponent, i44.ResponsiveToolbarRendererComponent, i45.UiTextAreaComponent, i46.LayoutControlComponent, i47.LayoutWizardComponent, i48.FormWizardComponent, i49.FormDialogLessComponent, i50.RichTextStaticComponent, i51.UiPicturesInfoComponent, i52.LyHorizontalLayoutComponent, i53.LyVerticalLayoutComponent, i54.LyTabContainerComponent, i55.LyTabPageComponent, i56.LyLabelComponent, i57.UiMoInfoComboViewerComponent, i58.UlMsgBoxAdapterComponent, i59.UiTreeComponent, i60.HeaderAvatarComponent, i61.UiWorkflowPanelUiComponent, i62.UlvContextMenuComponent, i63.UlLoadingMaskUiComponent, i64.UiTextFieldAutoCompleteComponent, i65.CaptchaFieldComponent, i66.LySimpleLabelComponent, i67.GlobalSearchPanelComponent, i68.GlobalSearchModuleComponent, i69.GlobalSearchComponent, i70.HyperlinkComponent, i71.StaticTextComponent, i72.UlToastAdapterComponent, i73.MessageStripComponent, i74.UiLinearListContainerWithButtonComponent, i75.FundamentalDynamicFormComponent, i76.LayoutActionsComponent, i77.LyLayoutContainerComponent, i78.UiUlvFormMultiSelectUiComponent, i79.UlvFormMultiSelectComponent, i80.UlvColumnSettingsComponent, i81.UlvFilterSettingsComponent, i82.UlvSortSettingsComponent, i83.UlvGroupbySettingsComponent, i84.BarsaListFileLinearComponent, i85.UiPdfViewerComponent, i86.BarsaTinyemceComponent, i87.UiMonacoEditorComponent, i88.BarsaMonacoEditorComponent, i89.BarsaDateTimePickerComponent, i90.BarsaTreeItemComponent, i91.UiSwitchButtonComponent, i92.UiColorUiComponent, i93.LyLineComponent, i94.UiUlvMainUiComponent, i95.ReportNavigatorComponent, i96.ManageFiltersReportComponent, i97.ReportSearchFieldsManageComponent, i98.ReportSearchFieldsHiddenSettingsComponent, i99.SearchPanelComponent, i100.ReportSearchPanelSaveComponent, i101.UiGridFilterSettingsComponent, i102.UiGridFilterItemComponent, i103.UiDateRangeExComponent, i104.UlNotifyPopupComponent, i105.UiTableViewComponent, i106.UiListViewComponent, i107.UiCardViewComponent, i108.UiReportContainerComponent, i109.NoDataComponent, i110.ColumnRendererComponent, i111.InlineSaveAndCancelComponent, i112.UiTreeViewComponent, i111.InlineSaveAndCancelComponent, i113.UiCalendarComponent, i114.UiAspReportViewerComponent, i115.UiGraphComponent, i116.UiExceptionFormComponent, i117.UiEditableGridComponent, i118.ColumnMatrixRendererComponent, i119.UiMatrixViewComponent, i120.CustomDateTimeComponent, i121.BarsaAspViewerComponent, i122.FileInDialogComponent, i123.UiMoInfoGeneralObjectUiComponent, i124.UiGanttChartComponent, i125.GanttDhtmlChartViewComponent, i126.ProgressIndicatorComponent, i127.CardViewContentComponent, i128.CardItemComponent, i129.UiCardViewHorizontalGroupComponent, i130.TitleComponent, i131.BarsaUlvMainComponent, i132.ListItemComponent, i133.HtreeCreateNewComponent, i134.BarsaTableHeaderComponent, i135.BarsaTableRowComponent, i136.BarsaTableColumnComponent, i137.BreadcrumbComponent, i138.UiLabelComponent, i139.FormToolbarButtonComponent, i140.BarsaSearchFormComponent, i141.ReportNewTopFormComponent, i142.BarsaNetworkOfflineComponent, i143.FileViewerContentComponent, i144.FileViewerPopoverComponent, i145.FileViewerComponent, i146.BlobViewerComponent, i147.NotificationItemComponent, i148.BarsaCartableTemplateComponent, i149.BarsaCartableGroupComponent, i150.BarsaCartableFormComponent, i151.BarsaColumnIndicatorComponent, i152.BarsaFieldKeyValueComponent, i153.BarsaToolbaritemSearchComponent, i154.UiHtmlViewerComponent, i155.BarsaPishnamayeshPayamComponent, i156.BarsaTextEllipsisComponent, i157.BarsaListFileLinearGmailComponent, i158.BarsaLinkableItemsPanelComponent, i159.BarsaEnumMenuButtonComponent, i160.BarsaCardLayoutPanelComponent, i161.BarsaHorizontalFlexPanelComponent, i162.BarsaBaseLayoutPanelComponent, i163.BarsaBarPanelComponent, i164.BarsaFormSideContentComponent, i165.BarsaSimpleFormComponent, i166.FormToolbarComponent, i167.BarsaListLayoutPanelComponent, i168.BarsaGridLayoutPanelComponent, i169.BarsaDynamicFieldComponent, i170.UiMultiSelectRadioComponent, i171.UiMultiSelectCheckboxComponent, i172.UiNumIntSliderComponent, i173.UiMultiSelectSliderComponent, i174.UiMultiSelectCardComponent, i175.UiMultiSelectSmileComponent, i176.BarsaReportCheckboxSwitchButtonComponent, i177.BarsaColumnRowNumberComponent, i178.BarsaCardRowPayamComponent, i177.BarsaColumnRowNumberComponent, i179.BarsaQuestionPostComponent, i180.BarsaQuestionAnswerFormComponent, i181.BarsaQuestionAnswerFormAddCommentComponent, i182.BarsaAnswerCardComponent, i183.BarsaQuestionAnswerContentActionsSectionComponent, i184.BarsaQuestionAnswerVoteSectionComponent, i185.BarsaQuestionAnswerCreatorTimeSectionComponent, i186.BarsaQuestionAnswerCommentsSectionComponent, i187.BarsaChipComponent, i188.BarsaTagChipComponent, i189.BarsaReportCardFlexViewComponent, i190.BarsaTagsCategoryRowComponent, i191.BarsaTagCategoriesComponent, i192.BarsaReportOneOfListComponent, i178.BarsaCardRowPayamComponent, i193.BarsaCustomInlineEditComponent, i194.BarsaCustomInlineEditRowComponent, i195.BarsaChatComponent, i196.BarsaChatContentComponent, i197.BarsaChatMessageComponent, i198.BarsaChatThreadComponent, i199.BarsaChatThreadsListComponent, i200.BarsaChatThreadsListToolbarComponent, i201.BarsaChatContentToolbarComponent, i202.BarsaChatListComponent, i203.UploadFileStatusPipe, i204.SapFontPipe, i205.SapFontClassPipe, i107.StringToArrayPipe, i206.NodeHasOneDepthLevelPipe, i207.MatrixValuePipe, i208.DynamicPageSizePipe, i209.SapSizePipe, i210.WizardLayoutDirective, i211.ColRendererDirective, i212.ApplyConditionalFormatsDirective, i213.ReportViewRendererDirective, i214.FullscreenDialogDirective, i215.FullscreenFilesDirective, i216.DownloadFilesDirective, i217.DialogHandlerDirective], imports: [CommonModule,
273
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.5", ngImport: i0, type: BarsaSapUiModule, declarations: [i2.UiTextFieldComponent, i3.LyLayoutFieldLabelComponent, i4.UiCheckBoxComponent, i5.UiSimpleComboComponent, i6.UiRadioGroupComponent, i7.UiGridComponent, i8.LyLayoutContainerOfRootComponent, i9.LyLayoutPanelComponent, i10.UiReadOnlyFieldComponent, i11.UiContainerWithButtonComponent, i12.UiPictureFileComponent, i13.UiMoInfoUlvComboComponent, i14.UiMultiSelectComboComponent, i15.UiNumDecimalUiComponent, i16.UiNumIntUiComponent, i17.UiTimeSpanComponent, i18.UiFileLinearListBoxComponent, i19.LyEmptySpaceComponent, i20.UiSinglePictureComponent, i21.UlvSelectionComponent, i22.UlvToolbarComponent, i23.UlvPagingComponent, i24.UiGridSortSettingComponent, i25.UiGridSortItemComponent, i26.UiGridColumnsComponent, i27.MaskComponent, i28.UiInfoBarPanelComponent, i29.UiFormPanelComponent, i30.UiSearchCommandInfoUiComponent, i31.UlvSettingsComponent, i32.UiTinymceComponent, i33.UiButtonComponent, i34.UiDateTimeComponent, i35.FormDialogComponent, i36.HeaderFacetKeyValueComponent, i37.HeaderFacetFormComponent, i38.HeaderFacetRateComponent, i39.HeaderFacetProgressComponent, i40.HeaderFacetMicrochartComponent, i41.HeaderFacetPlainTextComponent, i42.UiMoInfoSubFormUiComponent, i43.ResponsiveToolbarComponent, i44.ResponsiveToolbarRendererComponent, i45.UiTextAreaComponent, i46.LayoutControlComponent, i47.LayoutWizardComponent, i48.FormWizardComponent, i49.FormDialogLessComponent, i50.RichTextStaticComponent, i51.UiPicturesInfoComponent, i52.LyHorizontalLayoutComponent, i53.LyVerticalLayoutComponent, i54.LyTabContainerComponent, i55.LyTabPageComponent, i56.LyLabelComponent, i57.UiMoInfoComboViewerComponent, i58.UlMsgBoxAdapterComponent, i59.UiTreeComponent, i60.HeaderAvatarComponent, i61.UiWorkflowPanelUiComponent, i62.UlvContextMenuComponent, i63.UlLoadingMaskUiComponent, i64.UiTextFieldAutoCompleteComponent, i65.CaptchaFieldComponent, i66.LySimpleLabelComponent, i67.GlobalSearchPanelComponent, i68.GlobalSearchModuleComponent, i69.GlobalSearchComponent, i70.HyperlinkComponent, i71.StaticTextComponent, i72.UlToastAdapterComponent, i73.MessageStripComponent, i74.UiLinearListContainerWithButtonComponent, i75.FundamentalDynamicFormComponent, i76.LayoutActionsComponent, i77.LyLayoutContainerComponent, i78.UiUlvFormMultiSelectUiComponent, i79.UlvFormMultiSelectComponent, i80.UlvColumnSettingsComponent, i81.UlvFilterSettingsComponent, i82.UlvSortSettingsComponent, i83.UlvGroupbySettingsComponent, i84.BarsaListFileLinearComponent, i85.UiPdfViewerComponent, i86.BarsaTinyemceComponent, i87.UiMonacoEditorComponent, i88.BarsaMonacoEditorComponent, i89.BarsaDateTimePickerComponent, i90.BarsaTreeItemComponent, i91.UiSwitchButtonComponent, i92.UiColorUiComponent, i93.LyLineComponent, i94.UiUlvMainUiComponent, i95.ReportNavigatorComponent, i96.ManageFiltersReportComponent, i97.ReportSearchFieldsManageComponent, i98.ReportSearchFieldsHiddenSettingsComponent, i99.SearchPanelComponent, i100.ReportSearchPanelSaveComponent, i101.UiGridFilterSettingsComponent, i102.UiGridFilterItemComponent, i103.UiDateRangeExComponent, i104.UlNotifyPopupComponent, i105.UiTableViewComponent, i106.UiListViewComponent, i107.UiCardViewComponent, i108.UiReportContainerComponent, i109.NoDataComponent, i110.ColumnRendererComponent, i111.InlineSaveAndCancelComponent, i112.UiTreeViewComponent, i111.InlineSaveAndCancelComponent, i113.UiCalendarComponent, i114.UiAspReportViewerComponent, i115.UiGraphComponent, i116.UiExceptionFormComponent, i117.UiEditableGridComponent, i118.ColumnMatrixRendererComponent, i119.UiMatrixViewComponent, i120.CustomDateTimeComponent, i121.BarsaAspViewerComponent, i122.FileInDialogComponent, i123.UiMoInfoGeneralObjectUiComponent, i124.UiGanttChartComponent, i125.GanttDhtmlChartViewComponent, i126.ProgressIndicatorComponent, i127.CardViewContentComponent, i128.CardItemComponent, i129.UiCardViewHorizontalGroupComponent, i130.TitleComponent, i131.BarsaUlvMainComponent, i132.ListItemComponent, i133.HtreeCreateNewComponent, i134.BarsaTableHeaderComponent, i135.BarsaTableRowComponent, i136.BarsaTableColumnComponent, i137.BreadcrumbComponent, i138.UiLabelComponent, i139.FormToolbarButtonComponent, i140.BarsaSearchFormComponent, i141.ReportNewTopFormComponent, i142.BarsaNetworkOfflineComponent, i143.FileViewerContentComponent, i144.FileViewerPopoverComponent, i145.FileViewerComponent, i146.BlobViewerComponent, i147.NotificationItemComponent, i148.BarsaCartableTemplateComponent, i149.BarsaCartableGroupComponent, i150.BarsaCartableFormComponent, i151.BarsaColumnIndicatorComponent, i152.BarsaFieldKeyValueComponent, i153.BarsaToolbaritemSearchComponent, i154.UiHtmlViewerComponent, i155.BarsaPishnamayeshPayamComponent, i156.BarsaTextEllipsisComponent, i157.BarsaListFileLinearGmailComponent, i158.BarsaLinkableItemsPanelComponent, i159.BarsaEnumMenuButtonComponent, i160.BarsaCardLayoutPanelComponent, i161.BarsaHorizontalFlexPanelComponent, i162.BarsaBaseLayoutPanelComponent, i163.BarsaBarPanelComponent, i164.BarsaFormSideContentComponent, i165.BarsaSimpleFormComponent, i166.FormToolbarComponent, i167.BarsaListLayoutPanelComponent, i168.BarsaGridLayoutPanelComponent, i169.BarsaDynamicFieldComponent, i170.UiMultiSelectRadioComponent, i171.UiMultiSelectCheckboxComponent, i172.UiNumIntSliderComponent, i173.UiMultiSelectSliderComponent, i174.UiMultiSelectCardComponent, i175.UiMultiSelectSmileComponent, i176.BarsaReportCheckboxSwitchButtonComponent, i177.BarsaColumnRowNumberComponent, i178.BarsaCardRowPayamComponent, i177.BarsaColumnRowNumberComponent, i179.BarsaQuestionPostComponent, i180.BarsaQuestionAnswerFormComponent, i181.BarsaQuestionAnswerFormAddCommentComponent, i182.BarsaAnswerCardComponent, i183.BarsaQuestionAnswerContentActionsSectionComponent, i184.BarsaQuestionAnswerVoteSectionComponent, i185.BarsaQuestionAnswerCreatorTimeSectionComponent, i186.BarsaQuestionAnswerCommentsSectionComponent, i187.BarsaChipComponent, i188.BarsaTagChipComponent, i189.BarsaReportCardFlexViewComponent, i190.BarsaTagsCategoryRowComponent, i191.BarsaTagCategoriesComponent, i192.BarsaReportOneOfListComponent, i178.BarsaCardRowPayamComponent, i193.BarsaCustomInlineEditComponent, i194.BarsaCustomInlineEditRowComponent, i195.BarsaChatComponent, i196.BarsaChatContentComponent, i197.BarsaChatMessageComponent, i198.BarsaChatThreadComponent, i199.BarsaChatThreadsListComponent, i200.BarsaChatThreadsListToolbarComponent, i201.BarsaChatContentToolbarComponent, i202.BarsaChatListComponent, i203.UploadFileStatusPipe, i204.SapFontPipe, i205.SapFontClassPipe, i107.StringToArrayPipe, i206.NodeHasOneDepthLevelPipe, i207.MatrixValuePipe, i208.DynamicPageSizePipe, i209.SapSizePipe, i210.AvatarGridColPipe, i211.WizardLayoutDirective, i212.ColRendererDirective, i213.ApplyConditionalFormatsDirective, i214.ReportViewRendererDirective, i215.FullscreenDialogDirective, i216.FullscreenFilesDirective, i217.DownloadFilesDirective, i218.DialogHandlerDirective], imports: [CommonModule,
273
274
  FormsModule,
274
275
  ReactiveFormsModule,
275
276
  BarsaNovinRayCoreModule,
@@ -290,9 +291,9 @@ export class BarsaSapUiModule extends BaseModule {
290
291
  BarsaCalendarModule,
291
292
  BarsaSapUiRoutingModule,
292
293
  PdfJsViewerModule,
293
- ResizableModule, i218.ContentDensityModule, ScrollingModule,
294
+ ResizableModule, i219.ContentDensityModule, ScrollingModule,
294
295
  UtilDateToHhMmPipe,
295
- UtilChatTimeBadgePipe], exports: [i2.UiTextFieldComponent, i3.LyLayoutFieldLabelComponent, i4.UiCheckBoxComponent, i5.UiSimpleComboComponent, i6.UiRadioGroupComponent, i7.UiGridComponent, i8.LyLayoutContainerOfRootComponent, i9.LyLayoutPanelComponent, i10.UiReadOnlyFieldComponent, i11.UiContainerWithButtonComponent, i12.UiPictureFileComponent, i13.UiMoInfoUlvComboComponent, i14.UiMultiSelectComboComponent, i15.UiNumDecimalUiComponent, i16.UiNumIntUiComponent, i17.UiTimeSpanComponent, i18.UiFileLinearListBoxComponent, i19.LyEmptySpaceComponent, i20.UiSinglePictureComponent, i21.UlvSelectionComponent, i22.UlvToolbarComponent, i23.UlvPagingComponent, i24.UiGridSortSettingComponent, i25.UiGridSortItemComponent, i26.UiGridColumnsComponent, i27.MaskComponent, i28.UiInfoBarPanelComponent, i29.UiFormPanelComponent, i30.UiSearchCommandInfoUiComponent, i31.UlvSettingsComponent, i32.UiTinymceComponent, i33.UiButtonComponent, i34.UiDateTimeComponent, i35.FormDialogComponent, i36.HeaderFacetKeyValueComponent, i37.HeaderFacetFormComponent, i38.HeaderFacetRateComponent, i39.HeaderFacetProgressComponent, i40.HeaderFacetMicrochartComponent, i41.HeaderFacetPlainTextComponent, i42.UiMoInfoSubFormUiComponent, i43.ResponsiveToolbarComponent, i44.ResponsiveToolbarRendererComponent, i45.UiTextAreaComponent, i46.LayoutControlComponent, i47.LayoutWizardComponent, i48.FormWizardComponent, i49.FormDialogLessComponent, i50.RichTextStaticComponent, i51.UiPicturesInfoComponent, i52.LyHorizontalLayoutComponent, i53.LyVerticalLayoutComponent, i54.LyTabContainerComponent, i55.LyTabPageComponent, i56.LyLabelComponent, i57.UiMoInfoComboViewerComponent, i58.UlMsgBoxAdapterComponent, i59.UiTreeComponent, i60.HeaderAvatarComponent, i61.UiWorkflowPanelUiComponent, i62.UlvContextMenuComponent, i63.UlLoadingMaskUiComponent, i64.UiTextFieldAutoCompleteComponent, i65.CaptchaFieldComponent, i66.LySimpleLabelComponent, i67.GlobalSearchPanelComponent, i68.GlobalSearchModuleComponent, i69.GlobalSearchComponent, i70.HyperlinkComponent, i71.StaticTextComponent, i72.UlToastAdapterComponent, i73.MessageStripComponent, i74.UiLinearListContainerWithButtonComponent, i75.FundamentalDynamicFormComponent, i76.LayoutActionsComponent, i77.LyLayoutContainerComponent, i78.UiUlvFormMultiSelectUiComponent, i79.UlvFormMultiSelectComponent, i80.UlvColumnSettingsComponent, i81.UlvFilterSettingsComponent, i82.UlvSortSettingsComponent, i83.UlvGroupbySettingsComponent, i84.BarsaListFileLinearComponent, i85.UiPdfViewerComponent, i86.BarsaTinyemceComponent, i87.UiMonacoEditorComponent, i88.BarsaMonacoEditorComponent, i89.BarsaDateTimePickerComponent, i90.BarsaTreeItemComponent, i91.UiSwitchButtonComponent, i92.UiColorUiComponent, i93.LyLineComponent, i94.UiUlvMainUiComponent, i95.ReportNavigatorComponent, i96.ManageFiltersReportComponent, i97.ReportSearchFieldsManageComponent, i98.ReportSearchFieldsHiddenSettingsComponent, i99.SearchPanelComponent, i100.ReportSearchPanelSaveComponent, i101.UiGridFilterSettingsComponent, i102.UiGridFilterItemComponent, i103.UiDateRangeExComponent, i104.UlNotifyPopupComponent, i105.UiTableViewComponent, i106.UiListViewComponent, i107.UiCardViewComponent, i108.UiReportContainerComponent, i109.NoDataComponent, i110.ColumnRendererComponent, i111.InlineSaveAndCancelComponent, i112.UiTreeViewComponent, i111.InlineSaveAndCancelComponent, i113.UiCalendarComponent, i114.UiAspReportViewerComponent, i115.UiGraphComponent, i116.UiExceptionFormComponent, i117.UiEditableGridComponent, i118.ColumnMatrixRendererComponent, i119.UiMatrixViewComponent, i120.CustomDateTimeComponent, i121.BarsaAspViewerComponent, i122.FileInDialogComponent, i123.UiMoInfoGeneralObjectUiComponent, i124.UiGanttChartComponent, i125.GanttDhtmlChartViewComponent, i126.ProgressIndicatorComponent, i127.CardViewContentComponent, i128.CardItemComponent, i129.UiCardViewHorizontalGroupComponent, i130.TitleComponent, i131.BarsaUlvMainComponent, i132.ListItemComponent, i133.HtreeCreateNewComponent, i134.BarsaTableHeaderComponent, i135.BarsaTableRowComponent, i136.BarsaTableColumnComponent, i137.BreadcrumbComponent, i138.UiLabelComponent, i139.FormToolbarButtonComponent, i140.BarsaSearchFormComponent, i141.ReportNewTopFormComponent, i142.BarsaNetworkOfflineComponent, i143.FileViewerContentComponent, i144.FileViewerPopoverComponent, i145.FileViewerComponent, i146.BlobViewerComponent, i147.NotificationItemComponent, i148.BarsaCartableTemplateComponent, i149.BarsaCartableGroupComponent, i150.BarsaCartableFormComponent, i151.BarsaColumnIndicatorComponent, i152.BarsaFieldKeyValueComponent, i153.BarsaToolbaritemSearchComponent, i154.UiHtmlViewerComponent, i155.BarsaPishnamayeshPayamComponent, i156.BarsaTextEllipsisComponent, i157.BarsaListFileLinearGmailComponent, i158.BarsaLinkableItemsPanelComponent, i159.BarsaEnumMenuButtonComponent, i160.BarsaCardLayoutPanelComponent, i161.BarsaHorizontalFlexPanelComponent, i162.BarsaBaseLayoutPanelComponent, i163.BarsaBarPanelComponent, i164.BarsaFormSideContentComponent, i165.BarsaSimpleFormComponent, i166.FormToolbarComponent, i167.BarsaListLayoutPanelComponent, i168.BarsaGridLayoutPanelComponent, i169.BarsaDynamicFieldComponent, i170.UiMultiSelectRadioComponent, i171.UiMultiSelectCheckboxComponent, i172.UiNumIntSliderComponent, i173.UiMultiSelectSliderComponent, i174.UiMultiSelectCardComponent, i175.UiMultiSelectSmileComponent, i176.BarsaReportCheckboxSwitchButtonComponent, i177.BarsaColumnRowNumberComponent, i178.BarsaCardRowPayamComponent, i177.BarsaColumnRowNumberComponent, i179.BarsaQuestionPostComponent, i180.BarsaQuestionAnswerFormComponent, i181.BarsaQuestionAnswerFormAddCommentComponent, i182.BarsaAnswerCardComponent, i183.BarsaQuestionAnswerContentActionsSectionComponent, i184.BarsaQuestionAnswerVoteSectionComponent, i185.BarsaQuestionAnswerCreatorTimeSectionComponent, i186.BarsaQuestionAnswerCommentsSectionComponent, i187.BarsaChipComponent, i188.BarsaTagChipComponent, i189.BarsaReportCardFlexViewComponent, i190.BarsaTagsCategoryRowComponent, i191.BarsaTagCategoriesComponent, i192.BarsaReportOneOfListComponent, i178.BarsaCardRowPayamComponent, i193.BarsaCustomInlineEditComponent, i194.BarsaCustomInlineEditRowComponent, i195.BarsaChatComponent, i196.BarsaChatContentComponent, i197.BarsaChatMessageComponent, i198.BarsaChatThreadComponent, i199.BarsaChatThreadsListComponent, i200.BarsaChatThreadsListToolbarComponent, i201.BarsaChatContentToolbarComponent, i202.BarsaChatListComponent, i210.WizardLayoutDirective, i211.ColRendererDirective, i212.ApplyConditionalFormatsDirective, i213.ReportViewRendererDirective, i214.FullscreenDialogDirective, i215.FullscreenFilesDirective, i216.DownloadFilesDirective, i217.DialogHandlerDirective, i203.UploadFileStatusPipe, i204.SapFontPipe, i205.SapFontClassPipe, i107.StringToArrayPipe, i206.NodeHasOneDepthLevelPipe, i207.MatrixValuePipe, i208.DynamicPageSizePipe, i209.SapSizePipe] }); }
296
+ UtilChatTimeBadgePipe], exports: [i2.UiTextFieldComponent, i3.LyLayoutFieldLabelComponent, i4.UiCheckBoxComponent, i5.UiSimpleComboComponent, i6.UiRadioGroupComponent, i7.UiGridComponent, i8.LyLayoutContainerOfRootComponent, i9.LyLayoutPanelComponent, i10.UiReadOnlyFieldComponent, i11.UiContainerWithButtonComponent, i12.UiPictureFileComponent, i13.UiMoInfoUlvComboComponent, i14.UiMultiSelectComboComponent, i15.UiNumDecimalUiComponent, i16.UiNumIntUiComponent, i17.UiTimeSpanComponent, i18.UiFileLinearListBoxComponent, i19.LyEmptySpaceComponent, i20.UiSinglePictureComponent, i21.UlvSelectionComponent, i22.UlvToolbarComponent, i23.UlvPagingComponent, i24.UiGridSortSettingComponent, i25.UiGridSortItemComponent, i26.UiGridColumnsComponent, i27.MaskComponent, i28.UiInfoBarPanelComponent, i29.UiFormPanelComponent, i30.UiSearchCommandInfoUiComponent, i31.UlvSettingsComponent, i32.UiTinymceComponent, i33.UiButtonComponent, i34.UiDateTimeComponent, i35.FormDialogComponent, i36.HeaderFacetKeyValueComponent, i37.HeaderFacetFormComponent, i38.HeaderFacetRateComponent, i39.HeaderFacetProgressComponent, i40.HeaderFacetMicrochartComponent, i41.HeaderFacetPlainTextComponent, i42.UiMoInfoSubFormUiComponent, i43.ResponsiveToolbarComponent, i44.ResponsiveToolbarRendererComponent, i45.UiTextAreaComponent, i46.LayoutControlComponent, i47.LayoutWizardComponent, i48.FormWizardComponent, i49.FormDialogLessComponent, i50.RichTextStaticComponent, i51.UiPicturesInfoComponent, i52.LyHorizontalLayoutComponent, i53.LyVerticalLayoutComponent, i54.LyTabContainerComponent, i55.LyTabPageComponent, i56.LyLabelComponent, i57.UiMoInfoComboViewerComponent, i58.UlMsgBoxAdapterComponent, i59.UiTreeComponent, i60.HeaderAvatarComponent, i61.UiWorkflowPanelUiComponent, i62.UlvContextMenuComponent, i63.UlLoadingMaskUiComponent, i64.UiTextFieldAutoCompleteComponent, i65.CaptchaFieldComponent, i66.LySimpleLabelComponent, i67.GlobalSearchPanelComponent, i68.GlobalSearchModuleComponent, i69.GlobalSearchComponent, i70.HyperlinkComponent, i71.StaticTextComponent, i72.UlToastAdapterComponent, i73.MessageStripComponent, i74.UiLinearListContainerWithButtonComponent, i75.FundamentalDynamicFormComponent, i76.LayoutActionsComponent, i77.LyLayoutContainerComponent, i78.UiUlvFormMultiSelectUiComponent, i79.UlvFormMultiSelectComponent, i80.UlvColumnSettingsComponent, i81.UlvFilterSettingsComponent, i82.UlvSortSettingsComponent, i83.UlvGroupbySettingsComponent, i84.BarsaListFileLinearComponent, i85.UiPdfViewerComponent, i86.BarsaTinyemceComponent, i87.UiMonacoEditorComponent, i88.BarsaMonacoEditorComponent, i89.BarsaDateTimePickerComponent, i90.BarsaTreeItemComponent, i91.UiSwitchButtonComponent, i92.UiColorUiComponent, i93.LyLineComponent, i94.UiUlvMainUiComponent, i95.ReportNavigatorComponent, i96.ManageFiltersReportComponent, i97.ReportSearchFieldsManageComponent, i98.ReportSearchFieldsHiddenSettingsComponent, i99.SearchPanelComponent, i100.ReportSearchPanelSaveComponent, i101.UiGridFilterSettingsComponent, i102.UiGridFilterItemComponent, i103.UiDateRangeExComponent, i104.UlNotifyPopupComponent, i105.UiTableViewComponent, i106.UiListViewComponent, i107.UiCardViewComponent, i108.UiReportContainerComponent, i109.NoDataComponent, i110.ColumnRendererComponent, i111.InlineSaveAndCancelComponent, i112.UiTreeViewComponent, i111.InlineSaveAndCancelComponent, i113.UiCalendarComponent, i114.UiAspReportViewerComponent, i115.UiGraphComponent, i116.UiExceptionFormComponent, i117.UiEditableGridComponent, i118.ColumnMatrixRendererComponent, i119.UiMatrixViewComponent, i120.CustomDateTimeComponent, i121.BarsaAspViewerComponent, i122.FileInDialogComponent, i123.UiMoInfoGeneralObjectUiComponent, i124.UiGanttChartComponent, i125.GanttDhtmlChartViewComponent, i126.ProgressIndicatorComponent, i127.CardViewContentComponent, i128.CardItemComponent, i129.UiCardViewHorizontalGroupComponent, i130.TitleComponent, i131.BarsaUlvMainComponent, i132.ListItemComponent, i133.HtreeCreateNewComponent, i134.BarsaTableHeaderComponent, i135.BarsaTableRowComponent, i136.BarsaTableColumnComponent, i137.BreadcrumbComponent, i138.UiLabelComponent, i139.FormToolbarButtonComponent, i140.BarsaSearchFormComponent, i141.ReportNewTopFormComponent, i142.BarsaNetworkOfflineComponent, i143.FileViewerContentComponent, i144.FileViewerPopoverComponent, i145.FileViewerComponent, i146.BlobViewerComponent, i147.NotificationItemComponent, i148.BarsaCartableTemplateComponent, i149.BarsaCartableGroupComponent, i150.BarsaCartableFormComponent, i151.BarsaColumnIndicatorComponent, i152.BarsaFieldKeyValueComponent, i153.BarsaToolbaritemSearchComponent, i154.UiHtmlViewerComponent, i155.BarsaPishnamayeshPayamComponent, i156.BarsaTextEllipsisComponent, i157.BarsaListFileLinearGmailComponent, i158.BarsaLinkableItemsPanelComponent, i159.BarsaEnumMenuButtonComponent, i160.BarsaCardLayoutPanelComponent, i161.BarsaHorizontalFlexPanelComponent, i162.BarsaBaseLayoutPanelComponent, i163.BarsaBarPanelComponent, i164.BarsaFormSideContentComponent, i165.BarsaSimpleFormComponent, i166.FormToolbarComponent, i167.BarsaListLayoutPanelComponent, i168.BarsaGridLayoutPanelComponent, i169.BarsaDynamicFieldComponent, i170.UiMultiSelectRadioComponent, i171.UiMultiSelectCheckboxComponent, i172.UiNumIntSliderComponent, i173.UiMultiSelectSliderComponent, i174.UiMultiSelectCardComponent, i175.UiMultiSelectSmileComponent, i176.BarsaReportCheckboxSwitchButtonComponent, i177.BarsaColumnRowNumberComponent, i178.BarsaCardRowPayamComponent, i177.BarsaColumnRowNumberComponent, i179.BarsaQuestionPostComponent, i180.BarsaQuestionAnswerFormComponent, i181.BarsaQuestionAnswerFormAddCommentComponent, i182.BarsaAnswerCardComponent, i183.BarsaQuestionAnswerContentActionsSectionComponent, i184.BarsaQuestionAnswerVoteSectionComponent, i185.BarsaQuestionAnswerCreatorTimeSectionComponent, i186.BarsaQuestionAnswerCommentsSectionComponent, i187.BarsaChipComponent, i188.BarsaTagChipComponent, i189.BarsaReportCardFlexViewComponent, i190.BarsaTagsCategoryRowComponent, i191.BarsaTagCategoriesComponent, i192.BarsaReportOneOfListComponent, i178.BarsaCardRowPayamComponent, i193.BarsaCustomInlineEditComponent, i194.BarsaCustomInlineEditRowComponent, i195.BarsaChatComponent, i196.BarsaChatContentComponent, i197.BarsaChatMessageComponent, i198.BarsaChatThreadComponent, i199.BarsaChatThreadsListComponent, i200.BarsaChatThreadsListToolbarComponent, i201.BarsaChatContentToolbarComponent, i202.BarsaChatListComponent, i211.WizardLayoutDirective, i212.ColRendererDirective, i213.ApplyConditionalFormatsDirective, i214.ReportViewRendererDirective, i215.FullscreenDialogDirective, i216.FullscreenFilesDirective, i217.DownloadFilesDirective, i218.DialogHandlerDirective, i203.UploadFileStatusPipe, i204.SapFontPipe, i205.SapFontClassPipe, i107.StringToArrayPipe, i206.NodeHasOneDepthLevelPipe, i207.MatrixValuePipe, i208.DynamicPageSizePipe, i209.SapSizePipe, i210.AvatarGridColPipe] }); }
296
297
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaSapUiModule, providers: [{ provide: DIALOG_SERVICE, useClass: DialogService }], imports: [CommonModule,
297
298
  FormsModule,
298
299
  ReactiveFormsModule,
@@ -357,4 +358,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
357
358
  providers: [{ provide: DIALOG_SERVICE, useClass: DialogService }]
358
359
  }]
359
360
  }], ctorParameters: () => [{ type: i1.DynamicComponentService }, { type: i0.ComponentFactoryResolver }] });
360
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2Etc2FwLXVpLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2JhcnNhLXNhcC11aS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHNCQUFzQixFQUV0QixRQUFRLEVBQ1IsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQ0gsd0JBQXdCLEVBQ3hCLFlBQVksRUFDWixXQUFXLEVBQ1gsY0FBYyxFQUNkLGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLDJCQUEyQixFQUMzQixtQkFBbUIsRUFDbkIsYUFBYSxFQUNiLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsY0FBYyxFQUNkLGNBQWMsRUFDZCxlQUFlLEVBQ2YsbUJBQW1CLEVBQ3RCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXJELE9BQU8sRUFDSCxhQUFhLEVBRWIsdUJBQXVCLEVBQ3ZCLFVBQVUsRUFDVixjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLDBCQUEwQixFQUMxQixhQUFhLEVBQ2IsZUFBZSxFQUNsQixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9B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QkFDekIsT0FBTyxFQUFFLGNBQWMsRUFBRSwyQkFBMkI7NEJBQ3BELFVBQVUsRUFBRSxvQkFBb0I7NEJBQ2hDLDJCQUEyQixFQUFFLGtCQUFrQixDQUFDLE9BQU87eUJBQzFELENBQUM7d0JBQ0YsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLHFCQUFxQjtxQkFDeEI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUUsR0FBRyxVQUFVLEVBQUUsR0FBRyxLQUFLLENBQUM7b0JBQ2pELFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLENBQUM7aUJBQ3BFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXHJcbiAgICBNb2R1bGVXaXRoUHJvdmlkZXJzLFxyXG4gICAgTmdNb2R1bGUsXHJcbiAgICBOT19FUlJPUlNfU0NIRU1BLFxyXG4gICAgQVBQX0lOSVRJQUxJWkVSXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBPdmVybGF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBEcmFnRHJvcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBDZGtUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90YWJsZSc7XHJcbmltcG9ydCB7XHJcbiAgICBGdW5kYW1lbnRhbE5neENvcmVNb2R1bGUsXHJcbiAgICBXaXphcmRNb2R1bGUsXHJcbiAgICBGYWNldE1vZHVsZSxcclxuICAgIFRoZW1pbmdTZXJ2aWNlLFxyXG4gICAgRGlhbG9nU2VydmljZSxcclxuICAgIENvbnRlbnREZW5zaXR5TW9kdWxlLFxyXG4gICAgQ29udGVudERlbnNpdHlNb2RlLFxyXG4gICAgR2xvYmFsQ29udGVudERlbnNpdHlTZXJ2aWNlLFxyXG4gICAgUmF0aW5nU3RhckxhYmVsUGlwZSxcclxuICAgIExpc3RHcm91cFBpcGUsXHJcbiAgICBEYXRlVGltZUZvcm1hdFBpcGUsXHJcbiAgICBEYXRlRnJvbU5vd1BpcGUsXHJcbiAgICBEYXRlRm9ybWF0UGlwZSxcclxuICAgIEF2YXRhckljb25QaXBlLFxyXG4gICAgTm90aWZpY2F0aW9uUmVmLFxyXG4gICAgTWVzc2FnZVRvYXN0U2VydmljZVxyXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XHJcbmltcG9ydCB7IFJ0bFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XHJcbmltcG9ydCB7IFBkZkpzVmlld2VyTW9kdWxlIH0gZnJvbSAnbmcyLXBkZmpzLXZpZXdlcic7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgUG9ydGFsU2VydmljZSxcclxuICAgIER5bmFtaWNDb21wb25lbnRTZXJ2aWNlLFxyXG4gICAgQmFyc2FOb3ZpblJheUNvcmVNb2R1bGUsXHJcbiAgICBCYXNlTW9kdWxlLFxyXG4gICAgRElBTE9HX1NFUlZJQ0UsXHJcbiAgICBGT1JNX0RJQUxPR19DT01QT05FTlQsXHJcbiAgICBOT1RJRklDQVRBSU9OX1BPUFVQX1NFUlZFUixcclxuICAgIFRPQVNUX1NFUlZJQ0UsXHJcbiAgICBSZXNpemFibGVNb2R1bGVcclxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XHJcblxyXG5pbXBvcnQgeyBCYXJzYUNhbGVuZGFyTW9kdWxlIH0gZnJvbSAnYmFyc2EtY2FsZW5kYXInO1xyXG5pbXBvcnQgeyBDb2xvclN3YXRjaGVzTW9kdWxlIH0gZnJvbSAnbmd4LWNvbG9yL3N3YXRjaGVzJztcclxuaW1wb3J0IHsgQ29sb3JDaHJvbWVNb2R1bGUgfSBmcm9tICduZ3gtY29sb3IvY2hyb21lJztcclxuaW1wb3J0IHsgQ2xpcGJvYXJkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NsaXBib2FyZCc7XHJcblxyXG5pbXBvcnQgeyBjb21wb25lbnRzLCBwaXBlcywgZGlyZWN0aXZlcywgSU5JVF9TQVBGSU9SSSB9IGZyb20gJy4vaW5kZXgnO1xyXG5pbXBvcnQgeyBCYXJzYVNhcFVpUm91dGluZ01vZHVsZSB9IGZyb20gJy4vYmFyc2Etc2FwLXVpLXJvdXRpbmcubW9kdWxlJztcclxuaW1wb3J0IHsgRm9ybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1kaWFsb2cvZm9ybS1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uUG9wdXBTZXJ2aWNlIH0gZnJvbSAnLi9ub3RpZmljYXRpb24tcG9wdXAuc2VydmljZSc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBTY3JvbGxpbmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcclxuaW1wb3J0IHsgVXRpbERhdGVUb0hoTW1QaXBlIH0gZnJvbSAnLi91dGlsLWRhdGUtdG8taGgtbW0ucGlwZSc7XHJcbmltcG9ydCB7IFV0aWxDaGF0VGltZUJhZGdlUGlwZSB9IGZyb20gJy4vdXRpbC1jaGF0LXRpbWUtYmFkZ2UucGlwZSc7XHJcblxyXG5jb25zdCByb290UHJvdmlkZXJzID0gW1xyXG4gICAgT3ZlcmxheSxcclxuICAgIEdsb2JhbENvbnRlbnREZW5zaXR5U2VydmljZSxcclxuICAgIFRoZW1pbmdTZXJ2aWNlLFxyXG4gICAgTm90aWZpY2F0aW9uUmVmLFxyXG4gICAgUnRsU2VydmljZSxcclxuICAgIHtcclxuICAgICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXHJcbiAgICAgICAgdXNlRmFjdG9yeTogSU5JVF9TQVBGSU9SSSxcclxuICAgICAgICBkZXBzOiBbUnRsU2VydmljZSwgR2xvYmFsQ29udGVudERlbnNpdHlTZXJ2aWNlLCBUaGVtaW5nU2VydmljZSwgUG9ydGFsU2VydmljZSwgRG9tU2FuaXRpemVyXSxcclxuICAgICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHsgcHJvdmlkZTogRk9STV9ESUFMT0dfQ09NUE9ORU5ULCB1c2VWYWx1ZTogRm9ybURpYWxvZ0NvbXBvbmVudCB9LFxyXG4gICAgeyBwcm92aWRlOiBOT1RJRklDQVRBSU9OX1BPUFVQX1NFUlZFUiwgdXNlQ2xhc3M6IE5vdGlmaWNhdGlvblBvcHVwU2VydmljZSB9LFxyXG4gICAgeyBwcm92aWRlOiBUT0FTVF9TRVJWSUNFLCB1c2VDbGFzczogTWVzc2FnZVRvYXN0U2VydmljZSB9XHJcbl07XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgZGVjbGFyYXRpb25zOiBbLi4uY29tcG9uZW50cywgLi4ucGlwZXMsIC4uLmRpcmVjdGl2ZXNdLFxyXG4gICAgc2NoZW1hczogW05PX0VSUk9SU19TQ0hFTUEsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIENvbW1vbk1vZHVsZSxcclxuICAgICAgICBGb3Jtc01vZHVsZSxcclxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgICAgIEJhcnNhTm92aW5SYXlDb3JlTW9kdWxlLFxyXG4gICAgICAgIERyYWdEcm9wTW9kdWxlLFxyXG4gICAgICAgIENka1RhYmxlTW9kdWxlLFxyXG4gICAgICAgIEZ1bmRhbWVudGFsTmd4Q29yZU1vZHVsZSxcclxuICAgICAgICBGYWNldE1vZHVsZSxcclxuICAgICAgICBXaXphcmRNb2R1bGUsXHJcbiAgICAgICAgUmF0aW5nU3RhckxhYmVsUGlwZSxcclxuICAgICAgICBMaXN0R3JvdXBQaXBlLFxyXG4gICAgICAgIERhdGVUaW1lRm9ybWF0UGlwZSxcclxuICAgICAgICBEYXRlRnJvbU5vd1BpcGUsXHJcbiAgICAgICAgRGF0ZUZvcm1hdFBpcGUsXHJcbiAgICAgICAgQXZhdGFySWNvblBpcGUsXHJcbiAgICAgICAgQ29sb3JTd2F0Y2hlc01vZHVsZSxcclxuICAgICAgICBDb2xvckNocm9tZU1vZHVsZSxcclxuICAgICAgICBDbGlwYm9hcmRNb2R1bGUsXHJcbiAgICAgICAgQmFyc2FDYWxlbmRhck1vZHVsZSxcclxuICAgICAgICBCYXJzYVNhcFVpUm91dGluZ01vZHVsZSxcclxuICAgICAgICBQZGZKc1ZpZXdlck1vZHVsZSxcclxuICAgICAgICBSZXNpemFibGVNb2R1bGUsXHJcbiAgICAgICAgQ29udGVudERlbnNpdHlNb2R1bGUuZm9yUm9vdCh7XHJcbiAgICAgICAgICAgIHN0b3JhZ2U6ICdsb2NhbFN0b3JhZ2UnLCAvLyBjYW4gYmUgJ3VybCcgb3IgJ21lbW9yeSdcclxuICAgICAgICAgICAgc3RvcmFnZUtleTogJ19fY29udGVudERlbnNpdHlfXycsXHJcbiAgICAgICAgICAgIGRlZmF1bHRHbG9iYWxDb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1RcclxuICAgICAgICB9KSxcclxuICAgICAgICBTY3JvbGxpbmdNb2R1bGUsXHJcbiAgICAgICAgVXRpbERhdGVUb0hoTW1QaXBlLFxyXG4gICAgICAgIFV0aWxDaGF0VGltZUJhZGdlUGlwZVxyXG4gICAgXSxcclxuICAgIGV4cG9ydHM6IFsuLi5jb21wb25lbnRzLCAuLi5kaXJlY3RpdmVzLCAuLi5waXBlc10sXHJcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IERJQUxPR19TRVJWSUNFLCB1c2VDbGFzczogRGlhbG9nU2VydmljZSB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFyc2FTYXBVaU1vZHVsZSBleHRlbmRzIEJhc2VNb2R1bGUge1xyXG4gICAgcHJvdGVjdGVkIGR5bmFtaWNDb21wb25lbnRzID0gWy4uLmNvbXBvbmVudHNdO1xyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGRjbTogRHluYW1pY0NvbXBvbmVudFNlcnZpY2UsIHByb3RlY3RlZCBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcikge1xyXG4gICAgICAgIHN1cGVyKGRjbSwgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCAnQmFyc2FTYXBVaU1vZHVsZScpO1xyXG4gICAgfVxyXG4gICAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxCYXJzYVNhcFVpTW9kdWxlPiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbmdNb2R1bGU6IEJhcnNhU2FwVWlNb2R1bGUsXHJcbiAgICAgICAgICAgIHByb3ZpZGVyczogWy4uLnBpcGVzLCAuLi5yb290UHJvdmlkZXJzXVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn1cclxuIl19
361
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2Etc2FwLXVpLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2JhcnNhLXNhcC11aS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHNCQUFzQixFQUV0QixRQUFRLEVBQ1IsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQ0gsd0JBQXdCLEVBQ3hCLFlBQVksRUFDWixXQUFXLEVBQ1gsY0FBYyxFQUNkLGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLDJCQUEyQixFQUMzQixtQkFBbUIsRUFDbkIsYUFBYSxFQUNiLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsY0FBYyxFQUNkLGNBQWMsRUFDZCxlQUFlLEVBQ2YsbUJBQW1CLEVBQ3RCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXJELE9BQU8sRUFDSCxhQUFhLEVBRWIsdUJBQXVCLEVBQ3ZCLFVBQVUsRUFDVixjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLDBCQUEwQixFQUMxQixhQUFhLEVBQ2IsZUFBZSxFQUNsQixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9B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NEJBQ3pCLE9BQU8sRUFBRSxjQUFjLEVBQUUsMkJBQTJCOzRCQUNwRCxVQUFVLEVBQUUsb0JBQW9COzRCQUNoQywyQkFBMkIsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO3lCQUMxRCxDQUFDO3dCQUNGLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixxQkFBcUI7cUJBQ3hCO29CQUNELE9BQU8sRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLEdBQUcsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDO29CQUNqRCxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxDQUFDO2lCQUNwRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgICBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxyXG4gICAgTW9kdWxlV2l0aFByb3ZpZGVycyxcclxuICAgIE5nTW9kdWxlLFxyXG4gICAgTk9fRVJST1JTX1NDSEVNQSxcclxuICAgIEFQUF9JTklUSUFMSVpFUlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRHJhZ0Ryb3BNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgQ2RrVGFibGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvdGFibGUnO1xyXG5pbXBvcnQge1xyXG4gICAgRnVuZGFtZW50YWxOZ3hDb3JlTW9kdWxlLFxyXG4gICAgV2l6YXJkTW9kdWxlLFxyXG4gICAgRmFjZXRNb2R1bGUsXHJcbiAgICBUaGVtaW5nU2VydmljZSxcclxuICAgIERpYWxvZ1NlcnZpY2UsXHJcbiAgICBDb250ZW50RGVuc2l0eU1vZHVsZSxcclxuICAgIENvbnRlbnREZW5zaXR5TW9kZSxcclxuICAgIEdsb2JhbENvbnRlbnREZW5zaXR5U2VydmljZSxcclxuICAgIFJhdGluZ1N0YXJMYWJlbFBpcGUsXHJcbiAgICBMaXN0R3JvdXBQaXBlLFxyXG4gICAgRGF0ZVRpbWVGb3JtYXRQaXBlLFxyXG4gICAgRGF0ZUZyb21Ob3dQaXBlLFxyXG4gICAgRGF0ZUZvcm1hdFBpcGUsXHJcbiAgICBBdmF0YXJJY29uUGlwZSxcclxuICAgIE5vdGlmaWNhdGlvblJlZixcclxuICAgIE1lc3NhZ2VUb2FzdFNlcnZpY2VcclxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xyXG5pbXBvcnQgeyBSdGxTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xyXG5pbXBvcnQgeyBQZGZKc1ZpZXdlck1vZHVsZSB9IGZyb20gJ25nMi1wZGZqcy12aWV3ZXInO1xyXG5cclxuaW1wb3J0IHtcclxuICAgIFBvcnRhbFNlcnZpY2UsXHJcbiAgICBEeW5hbWljQ29tcG9uZW50U2VydmljZSxcclxuICAgIEJhcnNhTm92aW5SYXlDb3JlTW9kdWxlLFxyXG4gICAgQmFzZU1vZHVsZSxcclxuICAgIERJQUxPR19TRVJWSUNFLFxyXG4gICAgRk9STV9ESUFMT0dfQ09NUE9ORU5ULFxyXG4gICAgTk9USUZJQ0FUQUlPTl9QT1BVUF9TRVJWRVIsXHJcbiAgICBUT0FTVF9TRVJWSUNFLFxyXG4gICAgUmVzaXphYmxlTW9kdWxlXHJcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5cclxuaW1wb3J0IHsgQmFyc2FDYWxlbmRhck1vZHVsZSB9IGZyb20gJ2JhcnNhLWNhbGVuZGFyJztcclxuaW1wb3J0IHsgQ29sb3JTd2F0Y2hlc01vZHVsZSB9IGZyb20gJ25neC1jb2xvci9zd2F0Y2hlcyc7XHJcbmltcG9ydCB7IENvbG9yQ2hyb21lTW9kdWxlIH0gZnJvbSAnbmd4LWNvbG9yL2Nocm9tZSc7XHJcbmltcG9ydCB7IENsaXBib2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jbGlwYm9hcmQnO1xyXG5cclxuaW1wb3J0IHsgY29tcG9uZW50cywgcGlwZXMsIGRpcmVjdGl2ZXMsIElOSVRfU0FQRklPUkkgfSBmcm9tICcuL2luZGV4JztcclxuaW1wb3J0IHsgQmFyc2FTYXBVaVJvdXRpbmdNb2R1bGUgfSBmcm9tICcuL2JhcnNhLXNhcC11aS1yb3V0aW5nLm1vZHVsZSc7XHJcbmltcG9ydCB7IEZvcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2Zvcm0tZGlhbG9nL2Zvcm0tZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvblBvcHVwU2VydmljZSB9IGZyb20gJy4vbm90aWZpY2F0aW9uLXBvcHVwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XHJcbmltcG9ydCB7IFV0aWxEYXRlVG9IaE1tUGlwZSB9IGZyb20gJy4vdXRpbC1kYXRlLXRvLWhoLW1tLnBpcGUnO1xyXG5pbXBvcnQgeyBVdGlsQ2hhdFRpbWVCYWRnZVBpcGUgfSBmcm9tICcuL3V0aWwtY2hhdC10aW1lLWJhZGdlLnBpcGUnO1xyXG5cclxuY29uc3Qgcm9vdFByb3ZpZGVycyA9IFtcclxuICAgIE92ZXJsYXksXHJcbiAgICBHbG9iYWxDb250ZW50RGVuc2l0eVNlcnZpY2UsXHJcbiAgICBUaGVtaW5nU2VydmljZSxcclxuICAgIE5vdGlmaWNhdGlvblJlZixcclxuICAgIFJ0bFNlcnZpY2UsXHJcbiAgICB7XHJcbiAgICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxyXG4gICAgICAgIHVzZUZhY3Rvcnk6IElOSVRfU0FQRklPUkksXHJcbiAgICAgICAgZGVwczogW1J0bFNlcnZpY2UsIEdsb2JhbENvbnRlbnREZW5zaXR5U2VydmljZSwgVGhlbWluZ1NlcnZpY2UsIFBvcnRhbFNlcnZpY2UsIERvbVNhbml0aXplcl0sXHJcbiAgICAgICAgbXVsdGk6IHRydWVcclxuICAgIH0sXHJcbiAgICB7IHByb3ZpZGU6IEZPUk1fRElBTE9HX0NPTVBPTkVOVCwgdXNlVmFsdWU6IEZvcm1EaWFsb2dDb21wb25lbnQgfSxcclxuICAgIHsgcHJvdmlkZTogTk9USUZJQ0FUQUlPTl9QT1BVUF9TRVJWRVIsIHVzZUNsYXNzOiBOb3RpZmljYXRpb25Qb3B1cFNlcnZpY2UgfSxcclxuICAgIHsgcHJvdmlkZTogVE9BU1RfU0VSVklDRSwgdXNlQ2xhc3M6IE1lc3NhZ2VUb2FzdFNlcnZpY2UgfVxyXG5dO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIGRlY2xhcmF0aW9uczogWy4uLmNvbXBvbmVudHMsIC4uLnBpcGVzLCAuLi5kaXJlY3RpdmVzXSxcclxuICAgIHNjaGVtYXM6IFtOT19FUlJPUlNfU0NIRU1BLCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcclxuICAgIGltcG9ydHM6IFtcclxuICAgICAgICBDb21tb25Nb2R1bGUsXHJcbiAgICAgICAgRm9ybXNNb2R1bGUsXHJcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgICAgICBCYXJzYU5vdmluUmF5Q29yZU1vZHVsZSxcclxuICAgICAgICBEcmFnRHJvcE1vZHVsZSxcclxuICAgICAgICBDZGtUYWJsZU1vZHVsZSxcclxuICAgICAgICBGdW5kYW1lbnRhbE5neENvcmVNb2R1bGUsXHJcbiAgICAgICAgRmFjZXRNb2R1bGUsXHJcbiAgICAgICAgV2l6YXJkTW9kdWxlLFxyXG4gICAgICAgIFJhdGluZ1N0YXJMYWJlbFBpcGUsXHJcbiAgICAgICAgTGlzdEdyb3VwUGlwZSxcclxuICAgICAgICBEYXRlVGltZUZvcm1hdFBpcGUsXHJcbiAgICAgICAgRGF0ZUZyb21Ob3dQaXBlLFxyXG4gICAgICAgIERhdGVGb3JtYXRQaXBlLFxyXG4gICAgICAgIEF2YXRhckljb25QaXBlLFxyXG4gICAgICAgIENvbG9yU3dhdGNoZXNNb2R1bGUsXHJcbiAgICAgICAgQ29sb3JDaHJvbWVNb2R1bGUsXHJcbiAgICAgICAgQ2xpcGJvYXJkTW9kdWxlLFxyXG4gICAgICAgIEJhcnNhQ2FsZW5kYXJNb2R1bGUsXHJcbiAgICAgICAgQmFyc2FTYXBVaVJvdXRpbmdNb2R1bGUsXHJcbiAgICAgICAgUGRmSnNWaWV3ZXJNb2R1bGUsXHJcbiAgICAgICAgUmVzaXphYmxlTW9kdWxlLFxyXG4gICAgICAgIENvbnRlbnREZW5zaXR5TW9kdWxlLmZvclJvb3Qoe1xyXG4gICAgICAgICAgICBzdG9yYWdlOiAnbG9jYWxTdG9yYWdlJywgLy8gY2FuIGJlICd1cmwnIG9yICdtZW1vcnknXHJcbiAgICAgICAgICAgIHN0b3JhZ2VLZXk6ICdfX2NvbnRlbnREZW5zaXR5X18nLFxyXG4gICAgICAgICAgICBkZWZhdWx0R2xvYmFsQ29udGVudERlbnNpdHk6IENvbnRlbnREZW5zaXR5TW9kZS5DT01QQUNUXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgU2Nyb2xsaW5nTW9kdWxlLFxyXG4gICAgICAgIFV0aWxEYXRlVG9IaE1tUGlwZSxcclxuICAgICAgICBVdGlsQ2hhdFRpbWVCYWRnZVBpcGVcclxuICAgIF0sXHJcbiAgICBleHBvcnRzOiBbLi4uY29tcG9uZW50cywgLi4uZGlyZWN0aXZlcywgLi4ucGlwZXNdLFxyXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBESUFMT0dfU0VSVklDRSwgdXNlQ2xhc3M6IERpYWxvZ1NlcnZpY2UgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEJhcnNhU2FwVWlNb2R1bGUgZXh0ZW5kcyBCYXNlTW9kdWxlIHtcclxuICAgIHByb3RlY3RlZCBkeW5hbWljQ29tcG9uZW50cyA9IFsuLi5jb21wb25lbnRzXTtcclxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBkY206IER5bmFtaWNDb21wb25lbnRTZXJ2aWNlLCBwcm90ZWN0ZWQgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpIHtcclxuICAgICAgICBzdXBlcihkY20sIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgJ0JhcnNhU2FwVWlNb2R1bGUnKTtcclxuICAgIH1cclxuICAgIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QmFyc2FTYXBVaU1vZHVsZT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIG5nTW9kdWxlOiBCYXJzYVNhcFVpTW9kdWxlLFxyXG4gICAgICAgICAgICBwcm92aWRlcnM6IFsuLi5waXBlcywgLi4ucm9vdFByb3ZpZGVyc11cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -3,12 +3,12 @@ import { BaseComponent } from 'barsa-novin-ray-core';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/common";
5
5
  import * as i2 from "@angular/forms";
6
- import * as i3 from "@fundamental-ngx/core/checkbox";
7
- import * as i4 from "@fundamental-ngx/core/list";
8
- import * as i5 from "@fundamental-ngx/core/menu";
9
- import * as i6 from "@fundamental-ngx/core/popover";
10
- import * as i7 from "@fundamental-ngx/core/table";
11
- import * as i8 from "barsa-novin-ray-core";
6
+ import * as i3 from "barsa-novin-ray-core";
7
+ import * as i4 from "@fundamental-ngx/core/checkbox";
8
+ import * as i5 from "@fundamental-ngx/core/list";
9
+ import * as i6 from "@fundamental-ngx/core/menu";
10
+ import * as i7 from "@fundamental-ngx/core/popover";
11
+ import * as i8 from "@fundamental-ngx/core/table";
12
12
  export class BarsaTableHeaderComponent extends BaseComponent {
13
13
  /**
14
14
  *
@@ -25,6 +25,8 @@ export class BarsaTableHeaderComponent extends BaseComponent {
25
25
  this.sortAscending = new EventEmitter();
26
26
  this.sortDescending = new EventEmitter();
27
27
  this.filter = new EventEmitter();
28
+ this.resetGridSettings = new EventEmitter();
29
+ this.resizeHeader = false;
28
30
  }
29
31
  ngOnInit() {
30
32
  super.ngOnInit();
@@ -71,7 +73,11 @@ export class BarsaTableHeaderComponent extends BaseComponent {
71
73
  }
72
74
  detectChanges && this._cdr.detectChanges();
73
75
  }
76
+ onResetColumnsSettings() {
77
+ this.resetGridSettings.emit();
78
+ }
74
79
  onColumnWidthChanging(index, column, width) {
80
+ this.resizeHeader = true;
75
81
  column.Width = width;
76
82
  // console.log('columnWidthChanging number:', width, index);
77
83
  }
@@ -124,11 +130,11 @@ export class BarsaTableHeaderComponent extends BaseComponent {
124
130
  return `${column.Name}${index}`;
125
131
  }
126
132
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaTableHeaderComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
127
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: BarsaTableHeaderComponent, selector: "bsu-barsa-table-header", inputs: { allChecked: "allChecked", isCheckList: "isCheckList", columns: "columns", fitWidth: "fitWidth", contextMenuItems: "contextMenuItems", contextMenuWidth: "contextMenuWidth", showViewButton: "showViewButton", hasSelected: "hasSelected", hideOpenIcon: "hideOpenIcon", disableOverflowContextMenu: "disableOverflowContextMenu", inlineEditMode: "inlineEditMode", hideHeader: "hideHeader", showDetailsInRow: "showDetailsInRow", viewSetting: "viewSetting", tableWidth: "tableWidth", resizedByUser: "resizedByUser", disableResponsive: "disableResponsive", actionList: "actionList", rowIndicator: "rowIndicator", rtl: "rtl", showRowNumber: "showRowNumber", deviceSize: "deviceSize", tableHeaderMode: "tableHeaderMode" }, outputs: { allCheckbox: "allCheckbox", columnResize: "columnResize", fitToContent: "fitToContent", fitToContainer: "fitToContainer", fitToColumn: "fitToColumn", sortAscending: "sortAscending", sortDescending: "sortDescending", filter: "filter" }, viewQueries: [{ propertyName: "thList", predicate: ["thRef"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<thead\n fd-table-header\n [class.inline-edit]=\"inlineEditMode\"\n [class.smallColumns]=\"columnsSmallerThanTableWidth\"\n [attr.columnsWidth]=\"columnsWidth\"\n [attr.tableWidth]=\"tableWidth\"\n>\n <tr fd-table-row>\n @if (!hideHeader) { @if (rowIndicator) {\n <th fd-table-cell fd-table-status-indicator></th>\n } @if (showRowNumber) {\n <th fd-table-cell style=\"width: 40px; max-width: 40px\"></th>\n } @if (isCheckList) {\n <th fd-table-cell>\n <fd-checkbox\n name=\"allCheckbox\"\n [ngModel]=\"allChecked\"\n (ngModelChange)=\"onAllCheckbox($event)\"\n ></fd-checkbox>\n </th>\n } @if (!isCheckList && !showRowNumber) {\n <th fd-table-cell class=\"single-select\"></th>\n } @for (column of columns; track _trackByColumn(i, column); let i = $index; let last = $last) { @if (startIndex\n <= i) {\n <th\n #thRef\n [columnIndex]=\"i\"\n fd-table-cell\n [style.width]=\"\n inlineEditMode\n ? column.FieldTypeId === 5\n ? 'auto'\n : last\n ? '100%'\n : '210px'\n : last\n ? null\n : column.FieldTypeId === 38 ||\n column.FieldTypeId === 42 ||\n ((column.FieldTypeId === 6 || column.FieldTypeId === 5) &&\n column.Extra?.IconDisplayTypeEnum === 'Image')\n ? '40px'\n : column.$Width2 || column.$Width\n \"\n [style.min-width]=\"last ? null : inlineEditMode ? '210px' : last ? '100%' : 'auto'\"\n resizable\n [rtl]=\"rtl\"\n [disableResize]=\"\n last ||\n column.Extra?.IconDisplayTypeEnum === 'Image' ||\n column.FieldTypeId === 38 ||\n column.FieldTypeId === 42 ||\n ((column.FieldTypeId === 6 || column.FieldTypeId === 5) && column.Extra?.IconDisplayTypeEnum)\n \"\n (widthChange)=\"onColumnWidthChange(column)\"\n (widthChanging)=\"onColumnWidthChanging(i, column, $event)\"\n [disableResponsive]=\"disableResponsive\"\n [tableWidth]=\"tableWidth\"\n [columnsWidth]=\"columnsWidth\"\n [attr.columnName]=\"column.Name\"\n [attr.index]=\"i\"\n [ngClass]=\"column.$CSSClassName + ' column__' + column.Caption\"\n [class.displayIcon]=\"column.Extra?.IconDisplayTypeEnum\"\n >\n <fd-popover #menu>\n <fd-popover-control>\n <div style=\"display: flex\">\n <!-- FieldTypeId 38 means it is auto row number field-->\n @if ( (column.Extra?.IconDisplayTypeEnum === 'Image' || column.FieldTypeId === 42) &&\n column.Icon) {\n <img [src]=\"column.Icon\" />\n } @else {\n {{ column.Caption | bbbTranslate }}\n }\n </div>\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n <li fd-list-item>\n <a fd-list-link (click)=\"onSortAscending(column, menu)\">\n <fd-menu-addon position=\"before\" glyph=\"sort-ascending\"></fd-menu-addon>\n <span fd-list-title\n >{{ ('Sort' | bbbTranslate) + ' ' }} {{ 'Ascending' | bbbTranslate }}</span\n >\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"onSortDescending(column, menu)\">\n <fd-menu-addon position=\"before\" glyph=\"sort-descending\"></fd-menu-addon>\n <span fd-list-title\n >{{ ('Sort' | bbbTranslate) + ' ' }} {{ 'Descending' | bbbTranslate }}</span\n >\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"menu.close(); fitToContent.emit(column)\">\n <fd-menu-addon position=\"before\"></fd-menu-addon>\n <span fd-list-title>{{ ('Fit Column To Content' | bbbTranslate) + ' ' }}</span>\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"menu.close(); fitToContainer.emit()\">\n <fd-menu-addon position=\"before\"></fd-menu-addon>\n <span fd-list-title>{{ ('All Columns In Page' | bbbTranslate) + ' ' }}</span>\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"menu.close(); fitToColumn.emit()\">\n <fd-menu-addon position=\"before\"></fd-menu-addon>\n <span fd-list-title>{{ ('Free Columns Size' | bbbTranslate) + ' ' }}</span>\n </a>\n </li>\n <!-- <li fd-list-item>\n <a fd-list-link (click)=\"onFilter(column, menu)\">\n <fd-menu-addon position=\"before\" glyph=\"filter\"></fd-menu-addon>\n <span fd-list-title>{{ 'Filter' | bbbTranslate }}</span>\n </a>\n </li> -->\n </ul>\n </fd-popover-body>\n </fd-popover>\n </th>\n } } @if (contextMenuItems && contextMenuItems.length > 0 && !inlineEditMode) {\n <th\n class=\"col-header col-context-menu\"\n fd-table-cell\n [fitContent]=\"disableOverflowContextMenu\"\n [style.width.px]=\"contextMenuWidth\"\n ></th>\n } @if (showDetailsInRow && !inlineEditMode) {\n <th class=\"col-header col-details\" [style.width]=\"deviceSize === 's' ? 'auto' : '120px'\" fd-table-cell></th>\n } @if (showViewButton) {\n <th class=\"col-header col-view\" [style.width.px]=\"26.5 * (actionList?.length ?? 0) + 8\" fd-table-cell></th>\n } }\n </tr>\n</thead>\n", styles: [":host{display:contents;width:100%}:host.has-toolbar thead{border-top:none!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i4.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: i4.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: i4.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i4.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "component", type: i5.MenuAddonDirective, selector: "fd-menu-addon", inputs: ["position", "submenuIndicator", "ariaHidden"] }, { kind: "component", type: i6.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i6.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i6.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "directive", type: i7.TableHeaderDirective, selector: "[fdTableHeader], [fd-table-header]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i7.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i7.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "key"] }, { kind: "directive", type: i7.TableStatusIndicatorDirective, selector: "[fdTableStatusIndicator], [fd-table-status-indicator]", inputs: ["status"] }, { kind: "component", type: i8.ResizableComponent, selector: "th[resizable]", inputs: ["disableResize", "rtl"], outputs: ["widthChange", "widthChanging"] }, { kind: "pipe", type: i8.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
133
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: BarsaTableHeaderComponent, selector: "bsu-barsa-table-header", inputs: { allChecked: "allChecked", isCheckList: "isCheckList", columns: "columns", fitWidth: "fitWidth", contextMenuItems: "contextMenuItems", contextMenuWidth: "contextMenuWidth", showViewButton: "showViewButton", hasSelected: "hasSelected", hideOpenIcon: "hideOpenIcon", disableOverflowContextMenu: "disableOverflowContextMenu", inlineEditMode: "inlineEditMode", hideHeader: "hideHeader", showDetailsInRow: "showDetailsInRow", viewSetting: "viewSetting", tableWidth: "tableWidth", resizedByUser: "resizedByUser", disableResponsive: "disableResponsive", actionList: "actionList", rowIndicator: "rowIndicator", rtl: "rtl", showRowNumber: "showRowNumber", deviceSize: "deviceSize", tableHeaderMode: "tableHeaderMode" }, outputs: { allCheckbox: "allCheckbox", columnResize: "columnResize", fitToContent: "fitToContent", fitToContainer: "fitToContainer", fitToColumn: "fitToColumn", sortAscending: "sortAscending", sortDescending: "sortDescending", filter: "filter", resetGridSettings: "resetGridSettings" }, viewQueries: [{ propertyName: "thList", predicate: ["thRef"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<thead\n fd-table-header\n [class.inline-edit]=\"inlineEditMode\"\n [class.smallColumns]=\"columnsSmallerThanTableWidth\"\n [attr.columnsWidth]=\"columnsWidth\"\n [attr.tableWidth]=\"tableWidth\"\n>\n <tr fd-table-row>\n @if (!hideHeader) { @if (rowIndicator) {\n <th fd-table-cell fd-table-status-indicator></th>\n } @if (showRowNumber) {\n <th fd-table-cell style=\"width: 40px; max-width: 40px\"></th>\n } @if (isCheckList) {\n <th fd-table-cell>\n <fd-checkbox\n name=\"allCheckbox\"\n [ngModel]=\"allChecked\"\n (ngModelChange)=\"onAllCheckbox($event)\"\n ></fd-checkbox>\n </th>\n } @if (!isCheckList && !showRowNumber) {\n <th fd-table-cell class=\"single-select\"></th>\n } @for (column of columns; track _trackByColumn(i, column); let i = $index; let last = $last) { @if (startIndex\n <= i) {\n <th\n #thRef\n [columnIndex]=\"i\"\n fd-table-cell\n [style.width]=\"\n inlineEditMode\n ? column.FieldTypeId === 5\n ? 'auto'\n : last\n ? '100%'\n : '210px'\n : last && column.$Width !== '100%'\n ? null\n : column.FieldTypeId === 38 ||\n column.FieldTypeId === 42 ||\n ((column.FieldTypeId === 6 || column.FieldTypeId === 5) &&\n column.Extra?.IconDisplayTypeEnum === 'Image')\n ? '40px'\n : column.$Width2 || column.$Width\n \"\n [style.min-width]=\"last ? null : inlineEditMode ? '210px' : last ? '100%' : 'auto'\"\n resizable\n [rtl]=\"rtl\"\n [disableResize]=\"\n last ||\n column.Extra?.IconDisplayTypeEnum === 'Image' ||\n column.FieldTypeId === 38 ||\n column.FieldTypeId === 42 ||\n ((column.FieldTypeId === 6 || column.FieldTypeId === 5) && column.Extra?.IconDisplayTypeEnum)\n \"\n (widthChange)=\"onColumnWidthChange(column)\"\n (widthChanging)=\"onColumnWidthChanging(i, column, $event)\"\n [disableResponsive]=\"disableResponsive\"\n [tableWidth]=\"tableWidth\"\n [columnsWidth]=\"columnsWidth\"\n [attr.columnName]=\"column.Name\"\n [attr.index]=\"i\"\n [ngClass]=\"column.$CSSClassName + ' column__' + column.Caption\"\n [class.displayIcon]=\"column.Extra?.IconDisplayTypeEnum\"\n >\n <fd-popover #menu>\n <fd-popover-control>\n <div style=\"display: flex\">\n <!-- FieldTypeId 38 means it is auto row number field-->\n @if ( (column.Extra?.IconDisplayTypeEnum === 'Image' || column.FieldTypeId === 42) &&\n column.Icon) {\n <img [src]=\"column.Icon\" />\n } @else {\n {{ column.Caption | bbbTranslate }}\n }\n </div>\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n <li fd-list-item>\n <a fd-list-link (click)=\"onSortAscending(column, menu)\">\n <fd-menu-addon position=\"before\" glyph=\"sort-ascending\" fd-list-icon></fd-menu-addon>\n <span fd-list-title\n >{{ ('Sort' | bbbTranslate) + ' ' }} {{ 'Ascending' | bbbTranslate }}</span\n >\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"onSortDescending(column, menu)\" bodyClick>\n <fd-menu-addon position=\"before\" glyph=\"sort-descending\" fd-list-icon></fd-menu-addon>\n <span fd-list-title\n >{{ ('Sort' | bbbTranslate) + ' ' }} {{ 'Descending' | bbbTranslate }}</span\n >\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"fitToContent.emit(column)\" bodyClick>\n <fd-menu-addon position=\"before\" fd-list-icon></fd-menu-addon>\n <span fd-list-title>{{ ('Fit Column To Content' | bbbTranslate) + ' ' }}</span>\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"fitToContainer.emit()\" bodyClick>\n <fd-menu-addon position=\"before\" fd-list-icon></fd-menu-addon>\n <span fd-list-title>{{ ('All Columns In Page' | bbbTranslate) + ' ' }}</span>\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"fitToColumn.emit()\" bodyClick>\n <fd-menu-addon position=\"before\" fd-list-icon></fd-menu-addon>\n <span fd-list-title>{{ ('Free Columns Size' | bbbTranslate) + ' ' }}</span>\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"onResetColumnsSettings()\" bodyClick>\n <fd-menu-addon position=\"before\" glyph=\"reset\" fd-list-icon></fd-menu-addon>\n <span fd-list-title>{{ 'GridSettingBase' | bbbTranslate }}</span>\n </a>\n </li>\n <!-- <li fd-list-item>\n <a fd-list-link (click)=\"onFilter(column, menu)\">\n <fd-menu-addon position=\"before\" glyph=\"filter\"></fd-menu-addon>\n <span fd-list-title>{{ 'Filter' | bbbTranslate }}</span>\n </a>\n </li> -->\n </ul>\n </fd-popover-body>\n </fd-popover>\n </th>\n } } @if (contextMenuItems && contextMenuItems.length > 0 && !inlineEditMode) {\n <th\n class=\"col-header col-context-menu\"\n fd-table-cell\n [fitContent]=\"disableOverflowContextMenu\"\n [style.width.px]=\"contextMenuWidth\"\n ></th>\n } @if (showDetailsInRow && !inlineEditMode) {\n <th class=\"col-header col-details\" [style.width]=\"deviceSize === 's' ? 'auto' : '120px'\" fd-table-cell></th>\n } @if (showViewButton) {\n <th class=\"col-header col-view\" [style.width.px]=\"26.5 * (actionList?.length ?? 0) + 8\" fd-table-cell></th>\n } }\n </tr>\n</thead>\n", styles: [":host{display:contents;width:100%}:host.has-toolbar thead{border-top:none!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.BodyClickDirective, selector: "[bodyClick]", inputs: ["disableBodyClick"] }, { kind: "component", type: i4.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i5.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: i5.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: i5.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i5.ListIconDirective, selector: "[fdListIcon], [fd-list-icon]", inputs: ["glyph", "glyphFont", "class", "role"] }, { kind: "directive", type: i5.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "component", type: i6.MenuAddonDirective, selector: "fd-menu-addon", inputs: ["position", "submenuIndicator", "ariaHidden"] }, { kind: "component", type: i7.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i7.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i7.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "directive", type: i8.TableHeaderDirective, selector: "[fdTableHeader], [fd-table-header]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i8.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i8.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "key"] }, { kind: "directive", type: i8.TableStatusIndicatorDirective, selector: "[fdTableStatusIndicator], [fd-table-status-indicator]", inputs: ["status"] }, { kind: "component", type: i3.ResizableComponent, selector: "th[resizable]", inputs: ["disableResize", "rtl"], outputs: ["widthChange", "widthChanging"] }, { kind: "pipe", type: i3.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
128
134
  }
129
135
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaTableHeaderComponent, decorators: [{
130
136
  type: Component,
131
- args: [{ selector: 'bsu-barsa-table-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<thead\n fd-table-header\n [class.inline-edit]=\"inlineEditMode\"\n [class.smallColumns]=\"columnsSmallerThanTableWidth\"\n [attr.columnsWidth]=\"columnsWidth\"\n [attr.tableWidth]=\"tableWidth\"\n>\n <tr fd-table-row>\n @if (!hideHeader) { @if (rowIndicator) {\n <th fd-table-cell fd-table-status-indicator></th>\n } @if (showRowNumber) {\n <th fd-table-cell style=\"width: 40px; max-width: 40px\"></th>\n } @if (isCheckList) {\n <th fd-table-cell>\n <fd-checkbox\n name=\"allCheckbox\"\n [ngModel]=\"allChecked\"\n (ngModelChange)=\"onAllCheckbox($event)\"\n ></fd-checkbox>\n </th>\n } @if (!isCheckList && !showRowNumber) {\n <th fd-table-cell class=\"single-select\"></th>\n } @for (column of columns; track _trackByColumn(i, column); let i = $index; let last = $last) { @if (startIndex\n <= i) {\n <th\n #thRef\n [columnIndex]=\"i\"\n fd-table-cell\n [style.width]=\"\n inlineEditMode\n ? column.FieldTypeId === 5\n ? 'auto'\n : last\n ? '100%'\n : '210px'\n : last\n ? null\n : column.FieldTypeId === 38 ||\n column.FieldTypeId === 42 ||\n ((column.FieldTypeId === 6 || column.FieldTypeId === 5) &&\n column.Extra?.IconDisplayTypeEnum === 'Image')\n ? '40px'\n : column.$Width2 || column.$Width\n \"\n [style.min-width]=\"last ? null : inlineEditMode ? '210px' : last ? '100%' : 'auto'\"\n resizable\n [rtl]=\"rtl\"\n [disableResize]=\"\n last ||\n column.Extra?.IconDisplayTypeEnum === 'Image' ||\n column.FieldTypeId === 38 ||\n column.FieldTypeId === 42 ||\n ((column.FieldTypeId === 6 || column.FieldTypeId === 5) && column.Extra?.IconDisplayTypeEnum)\n \"\n (widthChange)=\"onColumnWidthChange(column)\"\n (widthChanging)=\"onColumnWidthChanging(i, column, $event)\"\n [disableResponsive]=\"disableResponsive\"\n [tableWidth]=\"tableWidth\"\n [columnsWidth]=\"columnsWidth\"\n [attr.columnName]=\"column.Name\"\n [attr.index]=\"i\"\n [ngClass]=\"column.$CSSClassName + ' column__' + column.Caption\"\n [class.displayIcon]=\"column.Extra?.IconDisplayTypeEnum\"\n >\n <fd-popover #menu>\n <fd-popover-control>\n <div style=\"display: flex\">\n <!-- FieldTypeId 38 means it is auto row number field-->\n @if ( (column.Extra?.IconDisplayTypeEnum === 'Image' || column.FieldTypeId === 42) &&\n column.Icon) {\n <img [src]=\"column.Icon\" />\n } @else {\n {{ column.Caption | bbbTranslate }}\n }\n </div>\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n <li fd-list-item>\n <a fd-list-link (click)=\"onSortAscending(column, menu)\">\n <fd-menu-addon position=\"before\" glyph=\"sort-ascending\"></fd-menu-addon>\n <span fd-list-title\n >{{ ('Sort' | bbbTranslate) + ' ' }} {{ 'Ascending' | bbbTranslate }}</span\n >\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"onSortDescending(column, menu)\">\n <fd-menu-addon position=\"before\" glyph=\"sort-descending\"></fd-menu-addon>\n <span fd-list-title\n >{{ ('Sort' | bbbTranslate) + ' ' }} {{ 'Descending' | bbbTranslate }}</span\n >\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"menu.close(); fitToContent.emit(column)\">\n <fd-menu-addon position=\"before\"></fd-menu-addon>\n <span fd-list-title>{{ ('Fit Column To Content' | bbbTranslate) + ' ' }}</span>\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"menu.close(); fitToContainer.emit()\">\n <fd-menu-addon position=\"before\"></fd-menu-addon>\n <span fd-list-title>{{ ('All Columns In Page' | bbbTranslate) + ' ' }}</span>\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"menu.close(); fitToColumn.emit()\">\n <fd-menu-addon position=\"before\"></fd-menu-addon>\n <span fd-list-title>{{ ('Free Columns Size' | bbbTranslate) + ' ' }}</span>\n </a>\n </li>\n <!-- <li fd-list-item>\n <a fd-list-link (click)=\"onFilter(column, menu)\">\n <fd-menu-addon position=\"before\" glyph=\"filter\"></fd-menu-addon>\n <span fd-list-title>{{ 'Filter' | bbbTranslate }}</span>\n </a>\n </li> -->\n </ul>\n </fd-popover-body>\n </fd-popover>\n </th>\n } } @if (contextMenuItems && contextMenuItems.length > 0 && !inlineEditMode) {\n <th\n class=\"col-header col-context-menu\"\n fd-table-cell\n [fitContent]=\"disableOverflowContextMenu\"\n [style.width.px]=\"contextMenuWidth\"\n ></th>\n } @if (showDetailsInRow && !inlineEditMode) {\n <th class=\"col-header col-details\" [style.width]=\"deviceSize === 's' ? 'auto' : '120px'\" fd-table-cell></th>\n } @if (showViewButton) {\n <th class=\"col-header col-view\" [style.width.px]=\"26.5 * (actionList?.length ?? 0) + 8\" fd-table-cell></th>\n } }\n </tr>\n</thead>\n", styles: [":host{display:contents;width:100%}:host.has-toolbar thead{border-top:none!important}\n"] }]
137
+ args: [{ selector: 'bsu-barsa-table-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<thead\n fd-table-header\n [class.inline-edit]=\"inlineEditMode\"\n [class.smallColumns]=\"columnsSmallerThanTableWidth\"\n [attr.columnsWidth]=\"columnsWidth\"\n [attr.tableWidth]=\"tableWidth\"\n>\n <tr fd-table-row>\n @if (!hideHeader) { @if (rowIndicator) {\n <th fd-table-cell fd-table-status-indicator></th>\n } @if (showRowNumber) {\n <th fd-table-cell style=\"width: 40px; max-width: 40px\"></th>\n } @if (isCheckList) {\n <th fd-table-cell>\n <fd-checkbox\n name=\"allCheckbox\"\n [ngModel]=\"allChecked\"\n (ngModelChange)=\"onAllCheckbox($event)\"\n ></fd-checkbox>\n </th>\n } @if (!isCheckList && !showRowNumber) {\n <th fd-table-cell class=\"single-select\"></th>\n } @for (column of columns; track _trackByColumn(i, column); let i = $index; let last = $last) { @if (startIndex\n <= i) {\n <th\n #thRef\n [columnIndex]=\"i\"\n fd-table-cell\n [style.width]=\"\n inlineEditMode\n ? column.FieldTypeId === 5\n ? 'auto'\n : last\n ? '100%'\n : '210px'\n : last && column.$Width !== '100%'\n ? null\n : column.FieldTypeId === 38 ||\n column.FieldTypeId === 42 ||\n ((column.FieldTypeId === 6 || column.FieldTypeId === 5) &&\n column.Extra?.IconDisplayTypeEnum === 'Image')\n ? '40px'\n : column.$Width2 || column.$Width\n \"\n [style.min-width]=\"last ? null : inlineEditMode ? '210px' : last ? '100%' : 'auto'\"\n resizable\n [rtl]=\"rtl\"\n [disableResize]=\"\n last ||\n column.Extra?.IconDisplayTypeEnum === 'Image' ||\n column.FieldTypeId === 38 ||\n column.FieldTypeId === 42 ||\n ((column.FieldTypeId === 6 || column.FieldTypeId === 5) && column.Extra?.IconDisplayTypeEnum)\n \"\n (widthChange)=\"onColumnWidthChange(column)\"\n (widthChanging)=\"onColumnWidthChanging(i, column, $event)\"\n [disableResponsive]=\"disableResponsive\"\n [tableWidth]=\"tableWidth\"\n [columnsWidth]=\"columnsWidth\"\n [attr.columnName]=\"column.Name\"\n [attr.index]=\"i\"\n [ngClass]=\"column.$CSSClassName + ' column__' + column.Caption\"\n [class.displayIcon]=\"column.Extra?.IconDisplayTypeEnum\"\n >\n <fd-popover #menu>\n <fd-popover-control>\n <div style=\"display: flex\">\n <!-- FieldTypeId 38 means it is auto row number field-->\n @if ( (column.Extra?.IconDisplayTypeEnum === 'Image' || column.FieldTypeId === 42) &&\n column.Icon) {\n <img [src]=\"column.Icon\" />\n } @else {\n {{ column.Caption | bbbTranslate }}\n }\n </div>\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n <li fd-list-item>\n <a fd-list-link (click)=\"onSortAscending(column, menu)\">\n <fd-menu-addon position=\"before\" glyph=\"sort-ascending\" fd-list-icon></fd-menu-addon>\n <span fd-list-title\n >{{ ('Sort' | bbbTranslate) + ' ' }} {{ 'Ascending' | bbbTranslate }}</span\n >\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"onSortDescending(column, menu)\" bodyClick>\n <fd-menu-addon position=\"before\" glyph=\"sort-descending\" fd-list-icon></fd-menu-addon>\n <span fd-list-title\n >{{ ('Sort' | bbbTranslate) + ' ' }} {{ 'Descending' | bbbTranslate }}</span\n >\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"fitToContent.emit(column)\" bodyClick>\n <fd-menu-addon position=\"before\" fd-list-icon></fd-menu-addon>\n <span fd-list-title>{{ ('Fit Column To Content' | bbbTranslate) + ' ' }}</span>\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"fitToContainer.emit()\" bodyClick>\n <fd-menu-addon position=\"before\" fd-list-icon></fd-menu-addon>\n <span fd-list-title>{{ ('All Columns In Page' | bbbTranslate) + ' ' }}</span>\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"fitToColumn.emit()\" bodyClick>\n <fd-menu-addon position=\"before\" fd-list-icon></fd-menu-addon>\n <span fd-list-title>{{ ('Free Columns Size' | bbbTranslate) + ' ' }}</span>\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"onResetColumnsSettings()\" bodyClick>\n <fd-menu-addon position=\"before\" glyph=\"reset\" fd-list-icon></fd-menu-addon>\n <span fd-list-title>{{ 'GridSettingBase' | bbbTranslate }}</span>\n </a>\n </li>\n <!-- <li fd-list-item>\n <a fd-list-link (click)=\"onFilter(column, menu)\">\n <fd-menu-addon position=\"before\" glyph=\"filter\"></fd-menu-addon>\n <span fd-list-title>{{ 'Filter' | bbbTranslate }}</span>\n </a>\n </li> -->\n </ul>\n </fd-popover-body>\n </fd-popover>\n </th>\n } } @if (contextMenuItems && contextMenuItems.length > 0 && !inlineEditMode) {\n <th\n class=\"col-header col-context-menu\"\n fd-table-cell\n [fitContent]=\"disableOverflowContextMenu\"\n [style.width.px]=\"contextMenuWidth\"\n ></th>\n } @if (showDetailsInRow && !inlineEditMode) {\n <th class=\"col-header col-details\" [style.width]=\"deviceSize === 's' ? 'auto' : '120px'\" fd-table-cell></th>\n } @if (showViewButton) {\n <th class=\"col-header col-view\" [style.width.px]=\"26.5 * (actionList?.length ?? 0) + 8\" fd-table-cell></th>\n } }\n </tr>\n</thead>\n", styles: [":host{display:contents;width:100%}:host.has-toolbar thead{border-top:none!important}\n"] }]
132
138
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { thList: [{
133
139
  type: ViewChildren,
134
140
  args: ['thRef', { read: ElementRef }]
@@ -194,5 +200,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
194
200
  type: Output
195
201
  }], filter: [{
196
202
  type: Output
203
+ }], resetGridSettings: [{
204
+ type: Output
197
205
  }] } });
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdGFibGUtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2JhcnNhLXRhYmxlLWhlYWRlci9iYXJzYS10YWJsZS1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdGFibGUtaGVhZGVyL2JhcnNhLXRhYmxlLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULHVCQUF1QixFQUN2QixLQUFLLEVBQ0wsWUFBWSxFQUNaLE1BQU0sRUFHTixZQUFZLEVBQ1osVUFBVSxFQUViLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxhQUFhLEVBS2hCLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7QUFTOUIsTUFBTSxPQUFPLHlCQUEwQixTQUFRLGFBQWE7SUFvQ3hEOztPQUVHO0lBQ0gsWUFBb0IsSUFBdUI7UUFDdkMsS0FBSyxFQUFFLENBQUM7UUFEUSxTQUFJLEdBQUosSUFBSSxDQUFtQjtRQXpCbEMscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBV3hCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUMxQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUE0QixDQUFDO1FBQzVELGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFDcEQsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQzFDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN2QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDeEMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3pDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztJQVN4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biAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBJbnB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBCYXNlQ29tcG9uZW50LFxuICAgIFJlcG9ydFZpZXdDb2x1bW4sXG4gICAgQWJicmV2YXRpb25EZXZpY2VTaXplLFxuICAgIENvbHVtblJlc2l6ZWRBcmdzLFxuICAgIFRhYmxlSGVhZGVyV2lkdGhNb2RlXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcbmltcG9ydCB7IFVpVGFibGVWaWV3U2V0dGluZyB9IGZyb20gJy4uL21vZGVscy9ncmlkLXZpZXcnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JzdS1iYXJzYS10YWJsZS1oZWFkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXJzYS10YWJsZS1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2JhcnNhLXRhYmxlLWhlYWRlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEJhcnNhVGFibGVIZWFkZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgICBAVmlld0NoaWxkcmVuKCd0aFJlZicsIHsgcmVhZDogRWxlbWVudFJlZiB9KSB0aExpc3Q6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxUYWJsZUNlbGxFbGVtZW50Pj47XG4gICAgQElucHV0KCkgYWxsQ2hlY2tlZDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpc0NoZWNrTGlzdDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBjb2x1bW5zOiBSZXBvcnRWaWV3Q29sdW1uW107XG4gICAgQElucHV0KCkgZml0V2lkdGg6IGJvb2xlYW47XG4gICAgQElucHV0KCkgY29udGV4dE1lbnVJdGVtczogYW55W107XG4gICAgQElucHV0KCkgY29udGV4dE1lbnVXaWR0aDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIHNob3dWaWV3QnV0dG9uOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGhhc1NlbGVjdGVkOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGhpZGVPcGVuSWNvbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBkaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpbmxpbmVFZGl0TW9kZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBoaWRlSGVhZGVyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHNob3dEZXRhaWxzSW5Sb3cgPSBmYWxzZTtcbiAgICBASW5wdXQoKSB2aWV3U2V0dGluZzogVWlUYWJsZVZpZXdTZXR0aW5nO1xuICAgIEBJbnB1dCgpIHRhYmxlV2lkdGg6IG51bWJlcjtcbiAgICBASW5wdXQoKSByZXNpemVkQnlVc2VyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGRpc2FibGVSZXNwb25zaXZlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGFjdGlvbkxpc3Q6IGFueVtdO1xuICAgIEBJbnB1dCgpIHJvd0luZGljYXRvcjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBydGw6IGJvb2xlYW47XG4gICAgQElucHV0KCkgc2hvd1Jvd051bWJlcjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBkZXZpY2VTaXplOiBBYmJyZXZhdGlvbkRldmljZVNpemU7XG4gICAgQElucHV0KCkgdGFibGVIZWFkZXJNb2RlOiBUYWJsZUhlYWRlcldpZHRoTW9kZTtcbiAgICBAT3V0cHV0KCkgYWxsQ2hlY2tib3ggPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpIGNvbHVtblJlc2l6ZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8Q29sdW1uUmVzaXplZEFyZ3M+PigpO1xuICAgIEBPdXRwdXQoKSBmaXRUb0NvbnRlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFJlcG9ydFZpZXdDb2x1bW4+KCk7XG4gICAgQE91dHB1dCgpIGZpdFRvQ29udGFpbmVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIEBPdXRwdXQoKSBmaXRUb0NvbHVtbiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBAT3V0cHV0KCkgc29ydEFzY2VuZGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBzb3J0RGVzY2VuZGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBmaWx0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFJlcG9ydFZpZXdDb2x1bW4+KCk7XG4gICAgY29sdW1uc1NtYWxsZXJUaGFuVGFibGVXaWR0aDogYm9vbGVhbjtcbiAgICBjb2x1bW5zV2lkdGg6IG51bWJlcjtcbiAgICBzdGFydEluZGV4OiBudW1iZXI7XG4gICAgLyoqXG4gICAgICpcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICAvLyB0aGlzLl9wcmVwYXJlQ29sdW1uc1dpZHRoKHRoaXMudGFibGVXaWR0aCwgdGhpcy5jb2x1bW5zLCB0cnVlKTtcbiAgICB9XG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICAgICAgY29uc3QgeyBjb2x1bW5zLCBpbmxpbmVFZGl0TW9kZSwgcm93SW5kaWNhdG9yIH0gPSBjaGFuZ2VzO1xuICAgICAgICBsZXQgbmVlZENoYW5nZXMgPSBmYWxzZTtcbiAgICAgICAgaWYgKGNvbHVtbnMgJiYgIWNvbHVtbnMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIC8vIHRoaXMuX3ByZXBhcmVDb2x1bW5zV2lkdGgodGhpcy50YWJsZVdpZHRoLCBjb2x1bW5zLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICAvLyBuZWVkQ2hhbmdlcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlubGluZUVkaXRNb2RlICYmICFpbmxpbmVFZGl0TW9kZS5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgLy8gdGhpcy5fcHJlcGFyZUNvbHVtbnNXaWR0aCh0aGlzLnRhYmxlV2lkdGgsIHRoaXMuY29sdW1ucyk7XG4gICAgICAgICAgICAvLyBuZWVkQ2hhbmdlcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJvd0luZGljYXRvcikge1xuICAgICAgICAgICAgdGhpcy5fc2V0U3RhcnRJbmRleChyb3dJbmRpY2F0b3IuY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgIG5lZWRDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBuZWVkQ2hhbmdlcyAmJiB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3NldFN0YXJ0SW5kZXgocm93SW5kaWNhdG9yOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RhcnRJbmRleCA9IHJvd0luZGljYXRvciA/IDEgOiAwO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3ByZXBhcmVDb2x1bW5zV2lkdGgodmFsOiBudW1iZXIsIGNvbHVtbnM6IFJlcG9ydFZpZXdDb2x1bW5bXSwgZGV0ZWN0Q2hhbmdlcyA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHN1bSA9IGNvbHVtbnMubWFwKChjb2x1bW4pID0+IGNvbHVtbi5XaWR0aCkucmVkdWNlKCh2YWwyLCBjb2x1bW4pID0+IHZhbDIgKyBjb2x1bW4sIDApO1xuICAgICAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4gKGNvbHVtbi4kV2lkdGgyID0gY29sdW1uLiRXaWR0aCkpO1xuICAgICAgICBpZiAodGhpcy5yZXNpemVkQnlVc2VyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGV2aWNlU2l6ZSA9PT0gJ3MnKSB7XG4gICAgICAgICAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbiwgaW5kZXgpID0+IChjb2x1bW4uJFdpZHRoMiA9IGluZGV4ID09PSBjb2x1bW5zLmxlbmd0aCAtIDEgPyAnMTAwJScgOiAnYXV0bycpKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbHVtbnNXaWR0aCA9IHN1bTtcbiAgICAgICAgaWYgKHN1bSA+IHZhbCAmJiB2YWwgPiAwKSB7XG4gICAgICAgICAgICBjb2x1bW5zLmZvckVhY2goXG4gICAgICAgICAgICAgICAgKGNvbHVtbikgPT4gKGNvbHVtbi4kV2lkdGgyID0gdGhpcy5pbmxpbmVFZGl0TW9kZSA/ICcyMTBweCcgOiAoY29sdW1uLldpZHRoICogMTAwKSAvIHZhbCArICclJylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmNvbHVtbnNTbWFsbGVyVGhhblRhYmxlV2lkdGggPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHN1bSArIDEwIDwgdmFsKSB7XG4gICAgICAgICAgICBjb2x1bW5zW2NvbHVtbnMubGVuZ3RoIC0gMV0uJFdpZHRoMiA9ICcxMDAlJztcbiAgICAgICAgfVxuICAgICAgICBkZXRlY3RDaGFuZ2VzICYmIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICAgIG9uQ29sdW1uV2lkdGhDaGFuZ2luZyhpbmRleDogbnVtYmVyLCBjb2x1bW46IFJlcG9ydFZpZXdDb2x1bW4sIHdpZHRoOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29sdW1uLldpZHRoID0gd2lkdGg7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdjb2x1bW5XaWR0aENoYW5naW5nIG51bWJlcjonLCB3aWR0aCwgaW5kZXgpO1xuICAgIH1cbiAgICBvbkNvbHVtbldpZHRoQ2hhbmdlKGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbik6IHZvaWQge1xuICAgICAgICB0aGlzLnRoTGlzdC50b0FycmF5KCkuZm9yRWFjaCgoYywgaW5kZXgyKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5yb3dJbmRpY2F0b3IpIHtcbiAgICAgICAgICAgICAgICBpbmRleDIgKz0gMTtcbiAgICAgICAgICAgIH0gLy8g2KjYr9mE24zZhCDZiNis2YjYryByb3dpbmRpY2F0b3IgINuM2qnbjCDYqNmHIGluZGV4INin2LbYp9mB2Ycg2YXbjNi02YjYr1xuICAgICAgICAgICAgLy8g2YHZgti3INiz2KrZiNmG2YfYp9uMINqv2LLYp9ix2LQg2KjYrNiyIHJvd2luZGljYXRvciDZgtin2KjZhNuM2Kog2LHbjNiz2KfbjNiyINiv2KfYsdmG2K9cbiAgICAgICAgICAgIGNvbnN0IGVsID0gYy5uYXRpdmVFbGVtZW50IGFzIEhUTUxUYWJsZUNlbGxFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgbmV3V2lkdGggPSBlbC5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgIGNvbnN0IGNvbCA9IHRoaXMuY29sdW1uc1tpbmRleDJdO1xuICAgICAgICAgICAgaWYgKGNvbC5OYW1lID09PSBjb2x1bW4uTmFtZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHdpdGgyID0gTWF0aC5yb3VuZChjb2x1bW4uV2lkdGgpO1xuICAgICAgICAgICAgICAgIGNvbC5XaWR0aCA9IHdpdGgyO1xuICAgICAgICAgICAgICAgIGNvbC4kV2lkdGgyID0gYCR7d2l0aDJ9cHhgO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCB3aXRoMiA9IE1hdGgucm91bmQobmV3V2lkdGgpO1xuICAgICAgICAgICAgICAgIGNvbC5XaWR0aCA9IHdpdGgyO1xuICAgICAgICAgICAgICAgIGNvbC4kV2lkdGgyID0gYCR7d2l0aDJ9cHhgO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gIGNvbnNvbGUubG9nKGluZGV4MiwgYy5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY29sdW1uUmVzaXplLmVtaXQodGhpcy5jb2x1bW5zLm1hcCgoYykgPT4gKHsgbmFtZTogYy5OYW1lLCB3aWR0aDogYy5XaWR0aCB9KSkpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnY29sdW1uV2lkdGhDaGFuZ2UnKTtcbiAgICB9XG4gICAgb25BbGxDaGVja2JveChjaGVja2VkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWxsQ2hlY2tib3guZW1pdChjaGVja2VkKTtcbiAgICB9XG4gICAgb25Tb3J0QXNjZW5kaW5nKGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbiwgbWVudSk6IHZvaWQge1xuICAgICAgICBpZiAobWVudSkge1xuICAgICAgICAgICAgbWVudS5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc29ydEFzY2VuZGluZy5lbWl0KGNvbHVtbik7XG4gICAgfVxuICAgIG9uU29ydERlc2NlbmRpbmcoY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uLCBtZW51KTogdm9pZCB7XG4gICAgICAgIGlmIChtZW51KSB7XG4gICAgICAgICAgICBtZW51LmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zb3J0RGVzY2VuZGluZy5lbWl0KGNvbHVtbik7XG4gICAgfVxuICAgIG9uRmlsdGVyKGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbiwgbWVudSk6IHZvaWQge1xuICAgICAgICBpZiAobWVudSkge1xuICAgICAgICAgICAgbWVudS5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlsdGVyLmVtaXQoY29sdW1uKTtcbiAgICB9XG4gICAgX3RyYWNrQnlDb2x1bW4oaW5kZXg6IG51bWJlciwgY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke2NvbHVtbi5OYW1lfSR7aW5kZXh9YDtcbiAgICB9XG59XG4iLCI8dGhlYWRcbiAgICBmZC10YWJsZS1oZWFkZXJcbiAgICBbY2xhc3MuaW5saW5lLWVkaXRdPVwiaW5saW5lRWRpdE1vZGVcIlxuICAgIFtjbGFzcy5zbWFsbENvbHVtbnNdPVwiY29sdW1uc1NtYWxsZXJUaGFuVGFibGVXaWR0aFwiXG4gICAgW2F0dHIuY29sdW1uc1dpZHRoXT1cImNvbHVtbnNXaWR0aFwiXG4gICAgW2F0dHIudGFibGVXaWR0aF09XCJ0YWJsZVdpZHRoXCJcbj5cbiAgICA8dHIgZmQtdGFibGUtcm93PlxuICAgICAgICBAaWYgKCFoaWRlSGVhZGVyKSB7IEBpZiAocm93SW5kaWNhdG9yKSB7XG4gICAgICAgIDx0aCBmZC10YWJsZS1jZWxsIGZkLXRhYmxlLXN0YXR1cy1pbmRpY2F0b3I+PC90aD5cbiAgICAgICAgfSBAaWYgKHNob3dSb3dOdW1iZXIpIHtcbiAgICAgICAgPHRoIGZkLXRhYmxlLWNlbGwgc3R5bGU9XCJ3aWR0aDogNDBweDsgbWF4LXdpZHRoOiA0MHB4XCI+PC90aD5cbiAgICAgICAgfSBAaWYgKGlzQ2hlY2tMaXN0KSB7XG4gICAgICAgIDx0aCBmZC10YWJsZS1jZWxsPlxuICAgICAgICAgICAgPGZkLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgbmFtZT1cImFsbENoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJhbGxDaGVja2VkXCJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkFsbENoZWNrYm94KCRldmVudClcIlxuICAgICAgICAgICAgPjwvZmQtY2hlY2tib3g+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIH0gQGlmICghaXNDaGVja0xpc3QgJiYgIXNob3dSb3dOdW1iZXIpIHtcbiAgICAgICAgPHRoIGZkLXRhYmxlLWNlbGwgY2xhc3M9XCJzaW5nbGUtc2VsZWN0XCI+PC90aD5cbiAgICAgICAgfSBAZm9yIChjb2x1bW4gb2YgY29sdW1uczsgdHJhY2sgX3RyYWNrQnlDb2x1bW4oaSwgY29sdW1uKTsgbGV0IGkgPSAkaW5kZXg7IGxldCBsYXN0ID0gJGxhc3QpIHsgQGlmIChzdGFydEluZGV4XG4gICAgICAgIDw9IGkpIHtcbiAgICAgICAgPHRoXG4gICAgICAgICAgICAjdGhSZWZcbiAgICAgICAgICAgIFtjb2x1bW5JbmRleF09XCJpXCJcbiAgICAgICAgICAgIGZkLXRhYmxlLWNlbGxcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJcbiAgICAgICAgICAgICAgICBpbmxpbmVFZGl0TW9kZVxuICAgICAgICAgICAgICAgICAgICA/IGNvbHVtbi5GaWVsZFR5cGVJZCA9PT0gNVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnYXV0bydcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbGFzdFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnMTAwJSdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJzIxMHB4J1xuICAgICAgICAgICAgICAgICAgICA6IGxhc3RcbiAgICAgICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgICAgIDogY29sdW1uLkZpZWxkVHlwZUlkID09PSAzOCB8fFxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5GaWVsZFR5cGVJZCA9PT0gNDIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAoKGNvbHVtbi5GaWVsZFR5cGVJZCA9PT0gNiB8fCBjb2x1bW4uRmllbGRUeXBlSWQgPT09IDUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5FeHRyYT8uSWNvbkRpc3BsYXlUeXBlRW51bSA9PT0gJ0ltYWdlJylcbiAgICAgICAgICAgICAgICAgICAgPyAnNDBweCdcbiAgICAgICAgICAgICAgICAgICAgOiBjb2x1bW4uJFdpZHRoMiB8fCBjb2x1bW4uJFdpZHRoXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJsYXN0ID8gbnVsbCA6IGlubGluZUVkaXRNb2RlID8gJzIxMHB4JyA6IGxhc3QgPyAnMTAwJScgOiAnYXV0bydcIlxuICAgICAgICAgICAgcmVzaXphYmxlXG4gICAgICAgICAgICBbcnRsXT1cInJ0bFwiXG4gICAgICAgICAgICBbZGlzYWJsZVJlc2l6ZV09XCJcbiAgICAgICAgICAgICAgICBsYXN0IHx8XG4gICAgICAgICAgICAgICAgY29sdW1uLkV4dHJhPy5JY29uRGlzcGxheVR5cGVFbnVtID09PSAnSW1hZ2UnIHx8XG4gICAgICAgICAgICAgICAgY29sdW1uLkZpZWxkVHlwZUlkID09PSAzOCB8fFxuICAgICAgICAgICAgICAgIGNvbHVtbi5GaWVsZFR5cGVJZCA9PT0gNDIgfHxcbiAgICAgICAgICAgICAgICAoKGNvbHVtbi5GaWVsZFR5cGVJZCA9PT0gNiB8fCBjb2x1bW4uRmllbGRUeXBlSWQgPT09IDUpICYmIGNvbHVtbi5FeHRyYT8uSWNvbkRpc3BsYXlUeXBlRW51bSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAod2lkdGhDaGFuZ2UpPVwib25Db2x1bW5XaWR0aENoYW5nZShjb2x1bW4pXCJcbiAgICAgICAgICAgICh3aWR0aENoYW5naW5nKT1cIm9uQ29sdW1uV2lkdGhDaGFuZ2luZyhpLCBjb2x1bW4sICRldmVudClcIlxuICAgICAgICAgICAgW2Rpc2FibGVSZXNwb25zaXZlXT1cImRpc2FibGVSZXNwb25zaXZlXCJcbiAgICAgICAgICAgIFt0YWJsZVdpZHRoXT1cInRhYmxlV2lkdGhcIlxuICAgICAgICAgICAgW2NvbHVtbnNXaWR0aF09XCJjb2x1bW5zV2lkdGhcIlxuICAgICAgICAgICAgW2F0dHIuY29sdW1uTmFtZV09XCJjb2x1bW4uTmFtZVwiXG4gICAgICAgICAgICBbYXR0ci5pbmRleF09XCJpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbHVtbi4kQ1NTQ2xhc3NOYW1lICsgJyBjb2x1bW5fXycgKyBjb2x1bW4uQ2FwdGlvblwiXG4gICAgICAgICAgICBbY2xhc3MuZGlzcGxheUljb25dPVwiY29sdW1uLkV4dHJhPy5JY29uRGlzcGxheVR5cGVFbnVtXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGZkLXBvcG92ZXIgI21lbnU+XG4gICAgICAgICAgICAgICAgPGZkLXBvcG92ZXItY29udHJvbD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRmllbGRUeXBlSWQgMzggbWVhbnMgaXQgaXMgYXV0byByb3cgbnVtYmVyIGZpZWxkLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCAoY29sdW1uLkV4dHJhPy5JY29uRGlzcGxheVR5cGVFbnVtID09PSAnSW1hZ2UnIHx8IGNvbHVtbi5GaWVsZFR5cGVJZCA9PT0gNDIpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uSWNvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImNvbHVtbi5JY29uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sdW1uLkNhcHRpb24gfCBiYmJUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9mZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgICAgICAgICAgPGZkLXBvcG92ZXItYm9keT5cbiAgICAgICAgICAgICAgICAgICAgPHVsIGZkLWxpc3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtbGlzdC1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGZkLWxpc3QtbGluayAoY2xpY2spPVwib25Tb3J0QXNjZW5kaW5nKGNvbHVtbiwgbWVudSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLW1lbnUtYWRkb24gcG9zaXRpb249XCJiZWZvcmVcIiBnbHlwaD1cInNvcnQtYXNjZW5kaW5nXCI+PC9mZC1tZW51LWFkZG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgKCdTb3J0JyB8IGJiYlRyYW5zbGF0ZSkgKyAnICcgfX0ge3sgJ0FzY2VuZGluZycgfCBiYmJUcmFuc2xhdGUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtbGlzdC1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGZkLWxpc3QtbGluayAoY2xpY2spPVwib25Tb3J0RGVzY2VuZGluZyhjb2x1bW4sIG1lbnUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uIHBvc2l0aW9uPVwiYmVmb3JlXCIgZ2x5cGg9XCJzb3J0LWRlc2NlbmRpbmdcIj48L2ZkLW1lbnUtYWRkb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyAoJ1NvcnQnIHwgYmJiVHJhbnNsYXRlKSArICcgJyB9fSB7eyAnRGVzY2VuZGluZycgfCBiYmJUcmFuc2xhdGUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtbGlzdC1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGZkLWxpc3QtbGluayAoY2xpY2spPVwibWVudS5jbG9zZSgpOyBmaXRUb0NvbnRlbnQuZW1pdChjb2x1bW4pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uIHBvc2l0aW9uPVwiYmVmb3JlXCI+PC9mZC1tZW51LWFkZG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPnt7ICgnRml0IENvbHVtbiBUbyBDb250ZW50JyB8IGJiYlRyYW5zbGF0ZSkgKyAnICcgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1saXN0LWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZmQtbGlzdC1saW5rIChjbGljayk9XCJtZW51LmNsb3NlKCk7IGZpdFRvQ29udGFpbmVyLmVtaXQoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtbWVudS1hZGRvbiBwb3NpdGlvbj1cImJlZm9yZVwiPjwvZmQtbWVudS1hZGRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT57eyAoJ0FsbCBDb2x1bW5zIEluIFBhZ2UnIHwgYmJiVHJhbnNsYXRlKSArICcgJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLWxpc3QtaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBmZC1saXN0LWxpbmsgKGNsaWNrKT1cIm1lbnUuY2xvc2UoKTsgZml0VG9Db2x1bW4uZW1pdCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uIHBvc2l0aW9uPVwiYmVmb3JlXCI+PC9mZC1tZW51LWFkZG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPnt7ICgnRnJlZSBDb2x1bW5zIFNpemUnIHwgYmJiVHJhbnNsYXRlKSArICcgJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bGkgZmQtbGlzdC1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgIDxhIGZkLWxpc3QtbGluayAoY2xpY2spPVwib25GaWx0ZXIoY29sdW1uLCBtZW51KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkLW1lbnUtYWRkb24gcG9zaXRpb249XCJiZWZvcmVcIiBnbHlwaD1cImZpbHRlclwiPjwvZmQtbWVudS1hZGRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgJ0ZpbHRlcicgfCBiYmJUcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICA8L2ZkLXBvcG92ZXItYm9keT5cbiAgICAgICAgICAgIDwvZmQtcG9wb3Zlcj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgfSB9IEBpZiAoY29udGV4dE1lbnVJdGVtcyAmJiBjb250ZXh0TWVudUl0ZW1zLmxlbmd0aCA+IDAgJiYgIWlubGluZUVkaXRNb2RlKSB7XG4gICAgICAgIDx0aFxuICAgICAgICAgICAgY2xhc3M9XCJjb2wtaGVhZGVyIGNvbC1jb250ZXh0LW1lbnVcIlxuICAgICAgICAgICAgZmQtdGFibGUtY2VsbFxuICAgICAgICAgICAgW2ZpdENvbnRlbnRdPVwiZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVcIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbnRleHRNZW51V2lkdGhcIlxuICAgICAgICA+PC90aD5cbiAgICAgICAgfSBAaWYgKHNob3dEZXRhaWxzSW5Sb3cgJiYgIWlubGluZUVkaXRNb2RlKSB7XG4gICAgICAgIDx0aCBjbGFzcz1cImNvbC1oZWFkZXIgY29sLWRldGFpbHNcIiBbc3R5bGUud2lkdGhdPVwiZGV2aWNlU2l6ZSA9PT0gJ3MnID8gJ2F1dG8nIDogJzEyMHB4J1wiIGZkLXRhYmxlLWNlbGw+PC90aD5cbiAgICAgICAgfSBAaWYgKHNob3dWaWV3QnV0dG9uKSB7XG4gICAgICAgIDx0aCBjbGFzcz1cImNvbC1oZWFkZXIgY29sLXZpZXdcIiBbc3R5bGUud2lkdGgucHhdPVwiMjYuNSAqIChhY3Rpb25MaXN0Py5sZW5ndGggPz8gMCkgKyA4XCIgZmQtdGFibGUtY2VsbD48L3RoPlxuICAgICAgICB9IH1cbiAgICA8L3RyPlxuPC90aGVhZD5cbiJdfQ==
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdGFibGUtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2JhcnNhLXRhYmxlLWhlYWRlci9iYXJzYS10YWJsZS1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdGFibGUtaGVhZGVyL2JhcnNhLXRhYmxlLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULHVCQUF1QixFQUN2QixLQUFLLEVBQ0wsWUFBWSxFQUNaLE1BQU0sRUFHTixZQUFZLEVBQ1osVUFBVSxFQUViLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxhQUFhLEVBS2hCLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7QUFTOUIsTUFBTSxPQUFPLHlCQUEwQixTQUFRLGFBQWE7SUFzQ3hEOztPQUVHO0lBQ0gsWUFBb0IsSUFBdUI7UUFDdkMsS0FBSyxFQUFFLENBQUM7UUFEUSxTQUFJLEdBQUosSUFBSSxDQUFtQjtRQTNCbEMscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBV3hCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUMxQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUE0QixDQUFDO1FBQzVELGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFDcEQsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQzFDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN2QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDeEMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3pDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUM5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ckIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBJbnB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBCYXNlQ29tcG9uZW50LFxuICAgIFJlcG9ydFZpZXdDb2x1bW4sXG4gICAgQWJicmV2YXRpb25EZXZpY2VTaXplLFxuICAgIENvbHVtblJlc2l6ZWRBcmdzLFxuICAgIFRhYmxlSGVhZGVyV2lkdGhNb2RlXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcbmltcG9ydCB7IFVpVGFibGVWaWV3U2V0dGluZyB9IGZyb20gJy4uL21vZGVscy9ncmlkLXZpZXcnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JzdS1iYXJzYS10YWJsZS1oZWFkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXJzYS10YWJsZS1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2JhcnNhLXRhYmxlLWhlYWRlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEJhcnNhVGFibGVIZWFkZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgICBAVmlld0NoaWxkcmVuKCd0aFJlZicsIHsgcmVhZDogRWxlbWVudFJlZiB9KSB0aExpc3Q6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxUYWJsZUNlbGxFbGVtZW50Pj47XG4gICAgQElucHV0KCkgYWxsQ2hlY2tlZDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpc0NoZWNrTGlzdDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBjb2x1bW5zOiBSZXBvcnRWaWV3Q29sdW1uW107XG4gICAgQElucHV0KCkgZml0V2lkdGg6IGJvb2xlYW47XG4gICAgQElucHV0KCkgY29udGV4dE1lbnVJdGVtczogYW55W107XG4gICAgQElucHV0KCkgY29udGV4dE1lbnVXaWR0aDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIHNob3dWaWV3QnV0dG9uOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGhhc1NlbGVjdGVkOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGhpZGVPcGVuSWNvbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBkaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpbmxpbmVFZGl0TW9kZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBoaWRlSGVhZGVyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHNob3dEZXRhaWxzSW5Sb3cgPSBmYWxzZTtcbiAgICBASW5wdXQoKSB2aWV3U2V0dGluZzogVWlUYWJsZVZpZXdTZXR0aW5nO1xuICAgIEBJbnB1dCgpIHRhYmxlV2lkdGg6IG51bWJlcjtcbiAgICBASW5wdXQoKSByZXNpemVkQnlVc2VyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGRpc2FibGVSZXNwb25zaXZlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGFjdGlvbkxpc3Q6IGFueVtdO1xuICAgIEBJbnB1dCgpIHJvd0luZGljYXRvcjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBydGw6IGJvb2xlYW47XG4gICAgQElucHV0KCkgc2hvd1Jvd051bWJlcjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBkZXZpY2VTaXplOiBBYmJyZXZhdGlvbkRldmljZVNpemU7XG4gICAgQElucHV0KCkgdGFibGVIZWFkZXJNb2RlOiBUYWJsZUhlYWRlcldpZHRoTW9kZTtcbiAgICBAT3V0cHV0KCkgYWxsQ2hlY2tib3ggPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpIGNvbHVtblJlc2l6ZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8Q29sdW1uUmVzaXplZEFyZ3M+PigpO1xuICAgIEBPdXRwdXQoKSBmaXRUb0NvbnRlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFJlcG9ydFZpZXdDb2x1bW4+KCk7XG4gICAgQE91dHB1dCgpIGZpdFRvQ29udGFpbmVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIEBPdXRwdXQoKSBmaXRUb0NvbHVtbiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBAT3V0cHV0KCkgc29ydEFzY2VuZGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBzb3J0RGVzY2VuZGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBmaWx0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFJlcG9ydFZpZXdDb2x1bW4+KCk7XG4gICAgQE91dHB1dCgpIHJlc2V0R3JpZFNldHRpbmdzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIGNvbHVtbnNTbWFsbGVyVGhhblRhYmxlV2lkdGg6IGJvb2xlYW47XG4gICAgY29sdW1uc1dpZHRoOiBudW1iZXI7XG4gICAgc3RhcnRJbmRleDogbnVtYmVyO1xuICAgIHJlc2l6ZUhlYWRlciA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgLy8gdGhpcy5fcHJlcGFyZUNvbHVtbnNXaWR0aCh0aGlzLnRhYmxlV2lkdGgsIHRoaXMuY29sdW1ucywgdHJ1ZSk7XG4gICAgfVxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XG4gICAgICAgIGNvbnN0IHsgY29sdW1ucywgaW5saW5lRWRpdE1vZGUsIHJvd0luZGljYXRvciB9ID0gY2hhbmdlcztcbiAgICAgICAgbGV0IG5lZWRDaGFuZ2VzID0gZmFsc2U7XG4gICAgICAgIGlmIChjb2x1bW5zICYmICFjb2x1bW5zLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICAvLyB0aGlzLl9wcmVwYXJlQ29sdW1uc1dpZHRoKHRoaXMudGFibGVXaWR0aCwgY29sdW1ucy5jdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgLy8gbmVlZENoYW5nZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbmxpbmVFZGl0TW9kZSAmJiAhaW5saW5lRWRpdE1vZGUuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIC8vIHRoaXMuX3ByZXBhcmVDb2x1bW5zV2lkdGgodGhpcy50YWJsZVdpZHRoLCB0aGlzLmNvbHVtbnMpO1xuICAgICAgICAgICAgLy8gbmVlZENoYW5nZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyb3dJbmRpY2F0b3IpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFN0YXJ0SW5kZXgocm93SW5kaWNhdG9yLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICBuZWVkQ2hhbmdlcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgbmVlZENoYW5nZXMgJiYgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9zZXRTdGFydEluZGV4KHJvd0luZGljYXRvcjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnN0YXJ0SW5kZXggPSByb3dJbmRpY2F0b3IgPyAxIDogMDtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9wcmVwYXJlQ29sdW1uc1dpZHRoKHZhbDogbnVtYmVyLCBjb2x1bW5zOiBSZXBvcnRWaWV3Q29sdW1uW10sIGRldGVjdENoYW5nZXMgPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdW0gPSBjb2x1bW5zLm1hcCgoY29sdW1uKSA9PiBjb2x1bW4uV2lkdGgpLnJlZHVjZSgodmFsMiwgY29sdW1uKSA9PiB2YWwyICsgY29sdW1uLCAwKTtcbiAgICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IChjb2x1bW4uJFdpZHRoMiA9IGNvbHVtbi4kV2lkdGgpKTtcbiAgICAgICAgaWYgKHRoaXMucmVzaXplZEJ5VXNlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRldmljZVNpemUgPT09ICdzJykge1xuICAgICAgICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4sIGluZGV4KSA9PiAoY29sdW1uLiRXaWR0aDIgPSBpbmRleCA9PT0gY29sdW1ucy5sZW5ndGggLSAxID8gJzEwMCUnIDogJ2F1dG8nKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb2x1bW5zV2lkdGggPSBzdW07XG4gICAgICAgIGlmIChzdW0gPiB2YWwgJiYgdmFsID4gMCkge1xuICAgICAgICAgICAgY29sdW1ucy5mb3JFYWNoKFxuICAgICAgICAgICAgICAgIChjb2x1bW4pID0+IChjb2x1bW4uJFdpZHRoMiA9IHRoaXMuaW5saW5lRWRpdE1vZGUgPyAnMjEwcHgnIDogKGNvbHVtbi5XaWR0aCAqIDEwMCkgLyB2YWwgKyAnJScpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5jb2x1bW5zU21hbGxlclRoYW5UYWJsZVdpZHRoID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChzdW0gKyAxMCA8IHZhbCkge1xuICAgICAgICAgICAgY29sdW1uc1tjb2x1bW5zLmxlbmd0aCAtIDFdLiRXaWR0aDIgPSAnMTAwJSc7XG4gICAgICAgIH1cbiAgICAgICAgZGV0ZWN0Q2hhbmdlcyAmJiB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgICBvblJlc2V0Q29sdW1uc1NldHRpbmdzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlc2V0R3JpZFNldHRpbmdzLmVtaXQoKTtcbiAgICB9XG4gICAgb25Db2x1bW5XaWR0aENoYW5naW5nKGluZGV4OiBudW1iZXIsIGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbiwgd2lkdGg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnJlc2l6ZUhlYWRlciA9IHRydWU7XG4gICAgICAgIGNvbHVtbi5XaWR0aCA9IHdpZHRoO1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnY29sdW1uV2lkdGhDaGFuZ2luZyBudW1iZXI6Jywgd2lkdGgsIGluZGV4KTtcbiAgICB9XG5cbiAgICBvbkNvbHVtbldpZHRoQ2hhbmdlKGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbik6IHZvaWQge1xuICAgICAgICB0aGlzLnRoTGlzdC50b0FycmF5KCkuZm9yRWFjaCgoYywgaW5kZXgyKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5yb3dJbmRpY2F0b3IpIHtcbiAgICAgICAgICAgICAgICBpbmRleDIgKz0gMTtcbiAgICAgICAgICAgIH0gLy8g2KjYr9mE24zZhCDZiNis2YjYryByb3dpbmRpY2F0b3IgINuM2qnbjCDYqNmHIGluZGV4INin2LbYp9mB2Ycg2YXbjNi02YjYr1xuICAgICAgICAgICAgLy8g2YHZgti3INiz2KrZiNmG2YfYp9uMINqv2LLYp9ix2LQg2KjYrNiyIHJvd2luZGljYXRvciDZgtin2KjZhNuM2Kog2LHbjNiz2KfbjNiyINiv2KfYsdmG2K9cbiAgICAgICAgICAgIGNvbnN0IGVsID0gYy5uYXRpdmVFbGVtZW50IGFzIEhUTUxUYWJsZUNlbGxFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgbmV3V2lkdGggPSBlbC5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgIGNvbnN0IGNvbCA9IHRoaXMuY29sdW1uc1tpbmRleDJdO1xuICAgICAgICAgICAgaWYgKGNvbC5OYW1lID09PSBjb2x1bW4uTmFtZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHdpdGgyID0gTWF0aC5yb3VuZChjb2x1bW4uV2lkdGgpO1xuICAgICAgICAgICAgICAgIGNvbC5XaWR0aCA9IHdpdGgyO1xuICAgICAgICAgICAgICAgIGNvbC4kV2lkdGgyID0gYCR7d2l0aDJ9cHhgO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCB3aXRoMiA9IE1hdGgucm91bmQobmV3V2lkdGgpO1xuICAgICAgICAgICAgICAgIGNvbC5XaWR0aCA9IHdpdGgyO1xuICAgICAgICAgICAgICAgIGNvbC4kV2lkdGgyID0gYCR7d2l0aDJ9cHhgO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gIGNvbnNvbGUubG9nKGluZGV4MiwgYy5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY29sdW1uUmVzaXplLmVtaXQodGhpcy5jb2x1bW5zLm1hcCgoYykgPT4gKHsgbmFtZTogYy5OYW1lLCB3aWR0aDogYy5XaWR0aCB9KSkpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnY29sdW1uV2lkdGhDaGFuZ2UnKTtcbiAgICB9XG4gICAgb25BbGxDaGVja2JveChjaGVja2VkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWxsQ2hlY2tib3guZW1pdChjaGVja2VkKTtcbiAgICB9XG4gICAgb25Tb3J0QXNjZW5kaW5nKGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbiwgbWVudSk6IHZvaWQge1xuICAgICAgICBpZiAobWVudSkge1xuICAgICAgICAgICAgbWVudS5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc29ydEFzY2VuZGluZy5lbWl0KGNvbHVtbik7XG4gICAgfVxuICAgIG9uU29ydERlc2NlbmRpbmcoY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uLCBtZW51KTogdm9pZCB7XG4gICAgICAgIGlmIChtZW51KSB7XG4gICAgICAgICAgICBtZW51LmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zb3J0RGVzY2VuZGluZy5lbWl0KGNvbHVtbik7XG4gICAgfVxuICAgIG9uRmlsdGVyKGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbiwgbWVudSk6IHZvaWQge1xuICAgICAgICBpZiAobWVudSkge1xuICAgICAgICAgICAgbWVudS5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlsdGVyLmVtaXQoY29sdW1uKTtcbiAgICB9XG4gICAgX3RyYWNrQnlDb2x1bW4oaW5kZXg6IG51bWJlciwgY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke2NvbHVtbi5OYW1lfSR7aW5kZXh9YDtcbiAgICB9XG59XG4iLCI8dGhlYWRcbiAgICBmZC10YWJsZS1oZWFkZXJcbiAgICBbY2xhc3MuaW5saW5lLWVkaXRdPVwiaW5saW5lRWRpdE1vZGVcIlxuICAgIFtjbGFzcy5zbWFsbENvbHVtbnNdPVwiY29sdW1uc1NtYWxsZXJUaGFuVGFibGVXaWR0aFwiXG4gICAgW2F0dHIuY29sdW1uc1dpZHRoXT1cImNvbHVtbnNXaWR0aFwiXG4gICAgW2F0dHIudGFibGVXaWR0aF09XCJ0YWJsZVdpZHRoXCJcbj5cbiAgICA8dHIgZmQtdGFibGUtcm93PlxuICAgICAgICBAaWYgKCFoaWRlSGVhZGVyKSB7IEBpZiAocm93SW5kaWNhdG9yKSB7XG4gICAgICAgIDx0aCBmZC10YWJsZS1jZWxsIGZkLXRhYmxlLXN0YXR1cy1pbmRpY2F0b3I+PC90aD5cbiAgICAgICAgfSBAaWYgKHNob3dSb3dOdW1iZXIpIHtcbiAgICAgICAgPHRoIGZkLXRhYmxlLWNlbGwgc3R5bGU9XCJ3aWR0aDogNDBweDsgbWF4LXdpZHRoOiA0MHB4XCI+PC90aD5cbiAgICAgICAgfSBAaWYgKGlzQ2hlY2tMaXN0KSB7XG4gICAgICAgIDx0aCBmZC10YWJsZS1jZWxsPlxuICAgICAgICAgICAgPGZkLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgbmFtZT1cImFsbENoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJhbGxDaGVja2VkXCJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkFsbENoZWNrYm94KCRldmVudClcIlxuICAgICAgICAgICAgPjwvZmQtY2hlY2tib3g+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIH0gQGlmICghaXNDaGVja0xpc3QgJiYgIXNob3dSb3dOdW1iZXIpIHtcbiAgICAgICAgPHRoIGZkLXRhYmxlLWNlbGwgY2xhc3M9XCJzaW5nbGUtc2VsZWN0XCI+PC90aD5cbiAgICAgICAgfSBAZm9yIChjb2x1bW4gb2YgY29sdW1uczsgdHJhY2sgX3RyYWNrQnlDb2x1bW4oaSwgY29sdW1uKTsgbGV0IGkgPSAkaW5kZXg7IGxldCBsYXN0ID0gJGxhc3QpIHsgQGlmIChzdGFydEluZGV4XG4gICAgICAgIDw9IGkpIHtcbiAgICAgICAgPHRoXG4gICAgICAgICAgICAjdGhSZWZcbiAgICAgICAgICAgIFtjb2x1bW5JbmRleF09XCJpXCJcbiAgICAgICAgICAgIGZkLXRhYmxlLWNlbGxcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJcbiAgICAgICAgICAgICAgICBpbmxpbmVFZGl0TW9kZVxuICAgICAgICAgICAgICAgICAgICA/IGNvbHVtbi5GaWVsZFR5cGVJZCA9PT0gNVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnYXV0bydcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbGFzdFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnMTAwJSdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJzIxMHB4J1xuICAgICAgICAgICAgICAgICAgICA6IGxhc3QgJiYgY29sdW1uLiRXaWR0aCAhPT0gJzEwMCUnXG4gICAgICAgICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICAgICAgICA6IGNvbHVtbi5GaWVsZFR5cGVJZCA9PT0gMzggfHxcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uRmllbGRUeXBlSWQgPT09IDQyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgKChjb2x1bW4uRmllbGRUeXBlSWQgPT09IDYgfHwgY29sdW1uLkZpZWxkVHlwZUlkID09PSA1KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uRXh0cmE/Lkljb25EaXNwbGF5VHlwZUVudW0gPT09ICdJbWFnZScpXG4gICAgICAgICAgICAgICAgICAgID8gJzQwcHgnXG4gICAgICAgICAgICAgICAgICAgIDogY29sdW1uLiRXaWR0aDIgfHwgY29sdW1uLiRXaWR0aFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwibGFzdCA/IG51bGwgOiBpbmxpbmVFZGl0TW9kZSA/ICcyMTBweCcgOiBsYXN0ID8gJzEwMCUnIDogJ2F1dG8nXCJcbiAgICAgICAgICAgIHJlc2l6YWJsZVxuICAgICAgICAgICAgW3J0bF09XCJydGxcIlxuICAgICAgICAgICAgW2Rpc2FibGVSZXNpemVdPVwiXG4gICAgICAgICAgICAgICAgbGFzdCB8fFxuICAgICAgICAgICAgICAgIGNvbHVtbi5FeHRyYT8uSWNvbkRpc3BsYXlUeXBlRW51bSA9PT0gJ0ltYWdlJyB8fFxuICAgICAgICAgICAgICAgIGNvbHVtbi5GaWVsZFR5cGVJZCA9PT0gMzggfHxcbiAgICAgICAgICAgICAgICBjb2x1bW4uRmllbGRUeXBlSWQgPT09IDQyIHx8XG4gICAgICAgICAgICAgICAgKChjb2x1bW4uRmllbGRUeXBlSWQgPT09IDYgfHwgY29sdW1uLkZpZWxkVHlwZUlkID09PSA1KSAmJiBjb2x1bW4uRXh0cmE/Lkljb25EaXNwbGF5VHlwZUVudW0pXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKHdpZHRoQ2hhbmdlKT1cIm9uQ29sdW1uV2lkdGhDaGFuZ2UoY29sdW1uKVwiXG4gICAgICAgICAgICAod2lkdGhDaGFuZ2luZyk9XCJvbkNvbHVtbldpZHRoQ2hhbmdpbmcoaSwgY29sdW1uLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlUmVzcG9uc2l2ZV09XCJkaXNhYmxlUmVzcG9uc2l2ZVwiXG4gICAgICAgICAgICBbdGFibGVXaWR0aF09XCJ0YWJsZVdpZHRoXCJcbiAgICAgICAgICAgIFtjb2x1bW5zV2lkdGhdPVwiY29sdW1uc1dpZHRoXCJcbiAgICAgICAgICAgIFthdHRyLmNvbHVtbk5hbWVdPVwiY29sdW1uLk5hbWVcIlxuICAgICAgICAgICAgW2F0dHIuaW5kZXhdPVwiaVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJjb2x1bW4uJENTU0NsYXNzTmFtZSArICcgY29sdW1uX18nICsgY29sdW1uLkNhcHRpb25cIlxuICAgICAgICAgICAgW2NsYXNzLmRpc3BsYXlJY29uXT1cImNvbHVtbi5FeHRyYT8uSWNvbkRpc3BsYXlUeXBlRW51bVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxmZC1wb3BvdmVyICNtZW51PlxuICAgICAgICAgICAgICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEZpZWxkVHlwZUlkIDM4IG1lYW5zIGl0IGlzIGF1dG8gcm93IG51bWJlciBmaWVsZC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmICggKGNvbHVtbi5FeHRyYT8uSWNvbkRpc3BsYXlUeXBlRW51bSA9PT0gJ0ltYWdlJyB8fCBjb2x1bW4uRmllbGRUeXBlSWQgPT09IDQyKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uLkljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJjb2x1bW4uSWNvblwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbHVtbi5DYXB0aW9uIHwgYmJiVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICAgICAgICAgIDxmZC1wb3BvdmVyLWJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDx1bCBmZC1saXN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLWxpc3QtaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBmZC1saXN0LWxpbmsgKGNsaWNrKT1cIm9uU29ydEFzY2VuZGluZyhjb2x1bW4sIG1lbnUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uIHBvc2l0aW9uPVwiYmVmb3JlXCIgZ2x5cGg9XCJzb3J0LWFzY2VuZGluZ1wiIGZkLWxpc3QtaWNvbj48L2ZkLW1lbnUtYWRkb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyAoJ1NvcnQnIHwgYmJiVHJhbnNsYXRlKSArICcgJyB9fSB7eyAnQXNjZW5kaW5nJyB8IGJiYlRyYW5zbGF0ZSB9fTwvc3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1saXN0LWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZmQtbGlzdC1saW5rIChjbGljayk9XCJvblNvcnREZXNjZW5kaW5nKGNvbHVtbiwgbWVudSlcIiBib2R5Q2xpY2s+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uIHBvc2l0aW9uPVwiYmVmb3JlXCIgZ2x5cGg9XCJzb3J0LWRlc2NlbmRpbmdcIiBmZC1saXN0LWljb24+PC9mZC1tZW51LWFkZG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgKCdTb3J0JyB8IGJiYlRyYW5zbGF0ZSkgKyAnICcgfX0ge3sgJ0Rlc2NlbmRpbmcnIHwgYmJiVHJhbnNsYXRlIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLWxpc3QtaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBmZC1saXN0LWxpbmsgKGNsaWNrKT1cImZpdFRvQ29udGVudC5lbWl0KGNvbHVtbilcIiBib2R5Q2xpY2s+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uIHBvc2l0aW9uPVwiYmVmb3JlXCIgZmQtbGlzdC1pY29uPjwvZmQtbWVudS1hZGRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT57eyAoJ0ZpdCBDb2x1bW4gVG8gQ29udGVudCcgfCBiYmJUcmFuc2xhdGUpICsgJyAnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtbGlzdC1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGZkLWxpc3QtbGluayAoY2xpY2spPVwiZml0VG9Db250YWluZXIuZW1pdCgpXCIgYm9keUNsaWNrPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtbWVudS1hZGRvbiBwb3NpdGlvbj1cImJlZm9yZVwiIGZkLWxpc3QtaWNvbj48L2ZkLW1lbnUtYWRkb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgKCdBbGwgQ29sdW1ucyBJbiBQYWdlJyB8IGJiYlRyYW5zbGF0ZSkgKyAnICcgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1saXN0LWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZmQtbGlzdC1saW5rIChjbGljayk9XCJmaXRUb0NvbHVtbi5lbWl0KClcIiBib2R5Q2xpY2s+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uIHBvc2l0aW9uPVwiYmVmb3JlXCIgZmQtbGlzdC1pY29uPjwvZmQtbWVudS1hZGRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT57eyAoJ0ZyZWUgQ29sdW1ucyBTaXplJyB8IGJiYlRyYW5zbGF0ZSkgKyAnICcgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1saXN0LWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZmQtbGlzdC1saW5rIChjbGljayk9XCJvblJlc2V0Q29sdW1uc1NldHRpbmdzKClcIiBib2R5Q2xpY2s+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uIHBvc2l0aW9uPVwiYmVmb3JlXCIgZ2x5cGg9XCJyZXNldFwiIGZkLWxpc3QtaWNvbj48L2ZkLW1lbnUtYWRkb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgJ0dyaWRTZXR0aW5nQmFzZScgfCBiYmJUcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGxpIGZkLWxpc3QtaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICA8YSBmZC1saXN0LWxpbmsgKGNsaWNrKT1cIm9uRmlsdGVyKGNvbHVtbiwgbWVudSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uIHBvc2l0aW9uPVwiYmVmb3JlXCIgZ2x5cGg9XCJmaWx0ZXJcIj48L2ZkLW1lbnUtYWRkb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPnt7ICdGaWx0ZXInIHwgYmJiVHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9saT4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgPC9mZC1wb3BvdmVyLWJvZHk+XG4gICAgICAgICAgICA8L2ZkLXBvcG92ZXI+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIH0gfSBAaWYgKGNvbnRleHRNZW51SXRlbXMgJiYgY29udGV4dE1lbnVJdGVtcy5sZW5ndGggPiAwICYmICFpbmxpbmVFZGl0TW9kZSkge1xuICAgICAgICA8dGhcbiAgICAgICAgICAgIGNsYXNzPVwiY29sLWhlYWRlciBjb2wtY29udGV4dC1tZW51XCJcbiAgICAgICAgICAgIGZkLXRhYmxlLWNlbGxcbiAgICAgICAgICAgIFtmaXRDb250ZW50XT1cImRpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51XCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb250ZXh0TWVudVdpZHRoXCJcbiAgICAgICAgPjwvdGg+XG4gICAgICAgIH0gQGlmIChzaG93RGV0YWlsc0luUm93ICYmICFpbmxpbmVFZGl0TW9kZSkge1xuICAgICAgICA8dGggY2xhc3M9XCJjb2wtaGVhZGVyIGNvbC1kZXRhaWxzXCIgW3N0eWxlLndpZHRoXT1cImRldmljZVNpemUgPT09ICdzJyA/ICdhdXRvJyA6ICcxMjBweCdcIiBmZC10YWJsZS1jZWxsPjwvdGg+XG4gICAgICAgIH0gQGlmIChzaG93Vmlld0J1dHRvbikge1xuICAgICAgICA8dGggY2xhc3M9XCJjb2wtaGVhZGVyIGNvbC12aWV3XCIgW3N0eWxlLndpZHRoLnB4XT1cIjI2LjUgKiAoYWN0aW9uTGlzdD8ubGVuZ3RoID8/IDApICsgOFwiIGZkLXRhYmxlLWNlbGw+PC90aD5cbiAgICAgICAgfSB9XG4gICAgPC90cj5cbjwvdGhlYWQ+XG4iXX0=