@bnsights/bbsf-controls 1.0.106 → 1.0.109
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -0
- package/esm2020/bnsights-bbsf-controls.mjs +5 -0
- package/esm2020/lib/Shared/Components/app-base-component.mjs +226 -0
- package/esm2020/lib/Shared/Components/ng-tag-input.mjs +331 -0
- package/esm2020/lib/Shared/Directives/template-name.directive.mjs +18 -0
- package/{esm2015/lib/Shared/Models/DropdownListItem.js → esm2020/lib/Shared/Models/DropdownListItem.mjs} +1 -1
- package/esm2020/lib/Shared/Pipes/bbsf-date-time.pipe.mjs +21 -0
- package/esm2020/lib/Shared/Pipes/bbsf-date.pipe.mjs +21 -0
- package/esm2020/lib/Shared/default_intl.mjs +29 -0
- package/esm2020/lib/Shared/services/ControlUtility.mjs +162 -0
- package/esm2020/lib/Shared/services/GlobalSettings.service.mjs +30 -0
- package/esm2020/lib/Shared/services/OnPagingFiltersChange.service.mjs +24 -0
- package/esm2020/lib/Shared/services/render-component-service.service.mjs +30 -0
- package/esm2020/lib/Shared/services/validationErrorMassage.service.mjs +170 -0
- package/esm2020/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.mjs +262 -0
- package/esm2020/lib/controls/Calendar/Calendar.component.mjs +173 -0
- package/esm2020/lib/controls/CheckBox/CheckBox.component.mjs +117 -0
- package/esm2020/lib/controls/ConfirmationModal/ConfirmationModal.component.mjs +136 -0
- package/esm2020/lib/controls/DateTimePicker/DateTimePicker.component.mjs +223 -0
- package/esm2020/lib/controls/DropdownList/DropdownList.component.mjs +194 -0
- package/esm2020/lib/controls/FileUplaod/FileUplaod.component.mjs +447 -0
- package/esm2020/lib/controls/Form/Form.component.mjs +101 -0
- package/esm2020/lib/controls/HtmlEditor/HtmlEditor.component.mjs +226 -0
- package/esm2020/lib/controls/ImageUpload/ImageUpload.component.mjs +350 -0
- package/esm2020/lib/controls/MapAutoComplete/MapAutoComplete.component.mjs +325 -0
- package/esm2020/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.mjs +427 -0
- package/esm2020/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.mjs +429 -0
- package/esm2020/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.mjs +428 -0
- package/esm2020/lib/controls/Paging/JwPagination.component.mjs +156 -0
- package/esm2020/lib/controls/Paging/Paging.component.mjs +312 -0
- package/esm2020/lib/controls/Phone/Phone.component.mjs +129 -0
- package/esm2020/lib/controls/ProfileImageUploader/ProfileImageUploader.component.mjs +376 -0
- package/esm2020/lib/controls/RadioButton/RadioButton.component.mjs +109 -0
- package/esm2020/lib/controls/Recaptcha/Recaptcha.component.mjs +135 -0
- package/esm2020/lib/controls/Repeater/repeater/repeater.component.mjs +125 -0
- package/esm2020/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.mjs +750 -0
- package/esm2020/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.mjs +21 -0
- package/esm2020/lib/controls/Repeater/repeater-table/repeater-table.component.mjs +108 -0
- package/esm2020/lib/controls/TagsInput/TagsInput.component.mjs +277 -0
- package/esm2020/lib/controls/TextArea/TextArea.component.mjs +196 -0
- package/esm2020/lib/controls/TextBox/TextBox.component.mjs +312 -0
- package/esm2020/lib/controls/Toggleslide/toggleslide.component.mjs +90 -0
- package/esm2020/lib/controls/bbsf-controls.module.mjs +361 -0
- package/esm2020/lib/controls/page-header-component/page-header-component.component.mjs +37 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +2 -2
- package/fesm2015/{bnsights-bbsf-controls.js → bnsights-bbsf-controls.mjs} +2214 -2111
- package/fesm2015/bnsights-bbsf-controls.mjs.map +1 -0
- package/fesm2020/bnsights-bbsf-controls.mjs +9098 -0
- package/fesm2020/bnsights-bbsf-controls.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/Shared/Components/app-base-component.d.ts +7 -0
- package/lib/Shared/Components/ng-tag-input.d.ts +4 -1
- package/lib/Shared/Directives/template-name.directive.d.ts +3 -0
- package/lib/Shared/Models/DropdownListItem.d.ts +2 -2
- package/lib/Shared/Pipes/bbsf-date-time.pipe.d.ts +3 -0
- package/lib/Shared/Pipes/bbsf-date.pipe.d.ts +3 -0
- package/lib/Shared/default_intl.d.ts +3 -0
- package/lib/Shared/services/ControlUtility.d.ts +3 -0
- package/lib/Shared/services/GlobalSettings.service.d.ts +3 -0
- package/lib/Shared/services/OnPagingFiltersChange.service.d.ts +3 -0
- package/lib/Shared/services/render-component-service.service.d.ts +3 -0
- package/lib/Shared/services/validationErrorMassage.service.d.ts +4 -3
- package/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.d.ts +3 -0
- package/lib/controls/Calendar/Calendar.component.d.ts +3 -0
- package/lib/controls/CheckBox/CheckBox.component.d.ts +3 -0
- package/lib/controls/ConfirmationModal/ConfirmationModal.component.d.ts +3 -0
- package/lib/controls/DateTimePicker/DateTimePicker.component.d.ts +3 -0
- package/lib/controls/DropdownList/DropdownList.component.d.ts +5 -0
- package/lib/controls/FileUplaod/FileUplaod.component.d.ts +3 -0
- package/lib/controls/Form/Form.component.d.ts +3 -0
- package/lib/controls/HtmlEditor/HtmlEditor.component.d.ts +3 -0
- package/lib/controls/ImageUpload/ImageUpload.component.d.ts +3 -0
- package/lib/controls/MapAutoComplete/MapAutoComplete.component.d.ts +3 -0
- package/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.d.ts +3 -0
- package/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.d.ts +3 -0
- package/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.d.ts +3 -0
- package/lib/controls/Paging/JwPagination.component.d.ts +3 -0
- package/lib/controls/Paging/Paging.component.d.ts +3 -0
- package/lib/controls/Phone/Phone.component.d.ts +3 -0
- package/lib/controls/ProfileImageUploader/ProfileImageUploader.component.d.ts +3 -0
- package/lib/controls/RadioButton/RadioButton.component.d.ts +3 -0
- package/lib/controls/Recaptcha/Recaptcha.component.d.ts +3 -0
- package/lib/controls/Repeater/repeater/repeater.component.d.ts +3 -0
- package/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.d.ts +3 -0
- package/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.d.ts +3 -0
- package/lib/controls/Repeater/repeater-table/repeater-table.component.d.ts +3 -0
- package/lib/controls/TagsInput/TagsInput.component.d.ts +3 -0
- package/lib/controls/TextArea/TextArea.component.d.ts +3 -0
- package/lib/controls/TextBox/TextBox.component.d.ts +3 -0
- package/lib/controls/Toggleslide/toggleslide.component.d.ts +3 -0
- package/lib/controls/bbsf-controls.module.d.ts +71 -4
- package/lib/controls/page-header-component/page-header-component.component.d.ts +3 -0
- package/package.json +44 -48
- package/public-api.d.ts +1 -1
- package/bnsights-bbsf-controls-1.0.106.tgz +0 -0
- package/bnsights-bbsf-controls.d.ts +0 -5
- package/bnsights-bbsf-controls.metadata.json +0 -1
- package/bundles/bnsights-bbsf-controls.umd.js +0 -9636
- package/bundles/bnsights-bbsf-controls.umd.js.map +0 -1
- package/esm2015/bnsights-bbsf-controls.js +0 -6
- package/esm2015/lib/Shared/Components/app-base-component.js +0 -202
- package/esm2015/lib/Shared/Components/ng-tag-input.js +0 -323
- package/esm2015/lib/Shared/Directives/template-name.directive.js +0 -18
- package/esm2015/lib/Shared/Pipes/bbsf-date-time.pipe.js +0 -20
- package/esm2015/lib/Shared/Pipes/bbsf-date.pipe.js +0 -20
- package/esm2015/lib/Shared/default_intl.js +0 -29
- package/esm2015/lib/Shared/services/ControlUtility.js +0 -164
- package/esm2015/lib/Shared/services/GlobalSettings.service.js +0 -28
- package/esm2015/lib/Shared/services/OnPagingFiltersChange.service.js +0 -22
- package/esm2015/lib/Shared/services/render-component-service.service.js +0 -30
- package/esm2015/lib/Shared/services/validationErrorMassage.service.js +0 -172
- package/esm2015/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.js +0 -266
- package/esm2015/lib/controls/Calendar/Calendar.component.js +0 -177
- package/esm2015/lib/controls/CheckBox/CheckBox.component.js +0 -118
- package/esm2015/lib/controls/ConfirmationModal/ConfirmationModal.component.js +0 -139
- package/esm2015/lib/controls/DateTimePicker/DateTimePicker.component.js +0 -227
- package/esm2015/lib/controls/DropdownList/DropdownList.component.js +0 -192
- package/esm2015/lib/controls/FileUplaod/FileUplaod.component.js +0 -447
- package/esm2015/lib/controls/Form/Form.component.js +0 -106
- package/esm2015/lib/controls/HtmlEditor/HtmlEditor.component.js +0 -226
- package/esm2015/lib/controls/ImageUpload/ImageUpload.component.js +0 -347
- package/esm2015/lib/controls/MapAutoComplete/MapAutoComplete.component.js +0 -325
- package/esm2015/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.js +0 -429
- package/esm2015/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.js +0 -434
- package/esm2015/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.js +0 -433
- package/esm2015/lib/controls/Paging/JwPagination.component.js +0 -129
- package/esm2015/lib/controls/Paging/Paging.component.js +0 -312
- package/esm2015/lib/controls/Phone/Phone.component.js +0 -129
- package/esm2015/lib/controls/ProfileImageUploader/ProfileImageUploader.component.js +0 -371
- package/esm2015/lib/controls/RadioButton/RadioButton.component.js +0 -111
- package/esm2015/lib/controls/Recaptcha/Recaptcha.component.js +0 -135
- package/esm2015/lib/controls/Repeater/repeater/repeater.component.js +0 -117
- package/esm2015/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.js +0 -748
- package/esm2015/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.js +0 -19
- package/esm2015/lib/controls/Repeater/repeater-table/repeater-table.component.js +0 -108
- package/esm2015/lib/controls/TagsInput/TagsInput.component.js +0 -278
- package/esm2015/lib/controls/TextArea/TextArea.component.js +0 -197
- package/esm2015/lib/controls/TextBox/TextBox.component.js +0 -309
- package/esm2015/lib/controls/Toggleslide/toggleslide.component.js +0 -90
- package/esm2015/lib/controls/bbsf-controls.module.js +0 -240
- package/esm2015/lib/controls/page-header-component/page-header-component.component.js +0 -32
- package/fesm2015/bnsights-bbsf-controls.js.map +0 -1
- package/src/lib/assets/.gitkeep +0 -0
- /package/{esm2015/lib/Shared/Enums/CalendarView.js → esm2020/lib/Shared/Enums/CalendarView.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/ControlLayout.js → esm2020/lib/Shared/Enums/ControlLayout.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/Countries.js → esm2020/lib/Shared/Enums/Countries.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/Enums.js → esm2020/lib/Shared/Enums/Enums.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/FileType.js → esm2020/lib/Shared/Enums/FileType.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/FilterType.js → esm2020/lib/Shared/Enums/FilterType.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/FontSize.js → esm2020/lib/Shared/Enums/FontSize.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/ForceDirection.js → esm2020/lib/Shared/Enums/ForceDirection.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/IconPosition.js → esm2020/lib/Shared/Enums/IconPosition.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/ImageType.js → esm2020/lib/Shared/Enums/ImageType.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/InputType.js → esm2020/lib/Shared/Enums/InputType.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/Insert.js → esm2020/lib/Shared/Enums/Insert.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/LanguageMode.js → esm2020/lib/Shared/Enums/LanguageMode.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/LanguageValidation.js → esm2020/lib/Shared/Enums/LanguageValidation.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/Misc.js → esm2020/lib/Shared/Enums/Misc.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/PagingActionMode.js → esm2020/lib/Shared/Enums/PagingActionMode.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/Para.js → esm2020/lib/Shared/Enums/Para.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/PickerType.js → esm2020/lib/Shared/Enums/PickerType.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/SelectMode.js → esm2020/lib/Shared/Enums/SelectMode.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/StartView.js → esm2020/lib/Shared/Enums/StartView.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/Style.js → esm2020/lib/Shared/Enums/Style.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/StyleConfirmationMode.js → esm2020/lib/Shared/Enums/StyleConfirmationMode.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/TagInputView.js → esm2020/lib/Shared/Enums/TagInputView.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/menu-list-enum.js → esm2020/lib/Shared/Enums/menu-list-enum.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/Attribute.js → esm2020/lib/Shared/Models/Attribute.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/AutocompleteDTO.js → esm2020/lib/Shared/Models/AutocompleteDTO.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/AutocompleteOptions.js → esm2020/lib/Shared/Models/AutocompleteOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/CalendarEventDTO.js → esm2020/lib/Shared/Models/CalendarEventDTO.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/CalendarOptions.js → esm2020/lib/Shared/Models/CalendarOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/CancelDTO.js → esm2020/lib/Shared/Models/CancelDTO.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/CaptchaStyle.js → esm2020/lib/Shared/Models/CaptchaStyle.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/CheckBoxOptions.js → esm2020/lib/Shared/Models/CheckBoxOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/ConfirmationModalOptions.js → esm2020/lib/Shared/Models/ConfirmationModalOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/ControlOptionsBase.js → esm2020/lib/Shared/Models/ControlOptionsBase.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/CustomValidation.js → esm2020/lib/Shared/Models/CustomValidation.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/DropdownOptions.js → esm2020/lib/Shared/Models/DropdownOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/EditPersonalImage.js → esm2020/lib/Shared/Models/EditPersonalImage.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/EnglishArabicDTO.js → esm2020/lib/Shared/Models/EnglishArabicDTO.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/FileDTO.js → esm2020/lib/Shared/Models/FileDTO.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/FileUploadModel.js → esm2020/lib/Shared/Models/FileUploadModel.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/FileUploadOptions.js → esm2020/lib/Shared/Models/FileUploadOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/FilterItem.js → esm2020/lib/Shared/Models/FilterItem.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/FormOptions.js → esm2020/lib/Shared/Models/FormOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/HtmlEditorOptions.js → esm2020/lib/Shared/Models/HtmlEditorOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/ImageUploadOptions.js → esm2020/lib/Shared/Models/ImageUploadOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/MapAutoCompleteOptions.js → esm2020/lib/Shared/Models/MapAutoCompleteOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/MapAutocompleteDTO.js → esm2020/lib/Shared/Models/MapAutocompleteDTO.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/MultiLingualHtmlEditorOptions.js → esm2020/lib/Shared/Models/MultiLingualHtmlEditorOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/MultiLingualTextAreaOptions.js → esm2020/lib/Shared/Models/MultiLingualTextAreaOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/MultilingualControlOptionsBase.js → esm2020/lib/Shared/Models/MultilingualControlOptionsBase.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/MultilingualTextBoxOptions.js → esm2020/lib/Shared/Models/MultilingualTextBoxOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/MultipleFileUploadModel.js → esm2020/lib/Shared/Models/MultipleFileUploadModel.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/PagingDTO.js → esm2020/lib/Shared/Models/PagingDTO.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/PagingOptions.js → esm2020/lib/Shared/Models/PagingOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/PagingPayload.js → esm2020/lib/Shared/Models/PagingPayload.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/PhoneOptions.js → esm2020/lib/Shared/Models/PhoneOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/ProfileImageUploadOptions.js → esm2020/lib/Shared/Models/ProfileImageUploadOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/ProfilePictureDTO.js → esm2020/lib/Shared/Models/ProfilePictureDTO.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/RadioButtonItem.js → esm2020/lib/Shared/Models/RadioButtonItem.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/RadioButtonOptions.js → esm2020/lib/Shared/Models/RadioButtonOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/RangeNumber.js → esm2020/lib/Shared/Models/RangeNumber.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/Recaptcha.js → esm2020/lib/Shared/Models/Recaptcha.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/RecaptchaOptions.js → esm2020/lib/Shared/Models/RecaptchaOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/RepeaterField.js → esm2020/lib/Shared/Models/RepeaterField.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/RepeaterOptions.js → esm2020/lib/Shared/Models/RepeaterOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/SaveDTO.js → esm2020/lib/Shared/Models/SaveDTO.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/TagsInputDTO.js → esm2020/lib/Shared/Models/TagsInputDTO.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/TagsInputOptions.js → esm2020/lib/Shared/Models/TagsInputOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/TextAreaOptions.js → esm2020/lib/Shared/Models/TextAreaOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/TextBoxOptions.js → esm2020/lib/Shared/Models/TextBoxOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/ToggleslideOptions.js → esm2020/lib/Shared/Models/ToggleslideOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/UploadPersonalImage.js → esm2020/lib/Shared/Models/UploadPersonalImage.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/bread-crumb.js → esm2020/lib/Shared/Models/bread-crumb.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/control-filter-Item.js → esm2020/lib/Shared/Models/control-filter-Item.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/datePickerOptions.js → esm2020/lib/Shared/Models/datePickerOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/filter-options.js → esm2020/lib/Shared/Models/filter-options.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/page-header-options.js → esm2020/lib/Shared/Models/page-header-options.mjs} +0 -0
- /package/{esm2015/lib/Shared/config/environment.js → esm2020/lib/Shared/config/environment.mjs} +0 -0
package/README.md
CHANGED
|
@@ -5,6 +5,17 @@ BBSF Controls package is part of BBSF 3 packages. It has all the form controls t
|
|
|
5
5
|
For more info please visit [BBSF Controls documenation](https://bbsfadmin.bnsights.com/controls) or [BBSF documentation](https://bnsightsprojects.visualstudio.com/BBSF%203/_wiki/wikis/BBSF-3.wiki/65/BBSF-Documentation)
|
|
6
6
|
|
|
7
7
|
# Change Log
|
|
8
|
+
## 1.0.109 / 3-12-2023
|
|
9
|
+
===================
|
|
10
|
+
* Update Utilities Library
|
|
11
|
+
|
|
12
|
+
## 1.0.108 / 3-12-2023
|
|
13
|
+
===================
|
|
14
|
+
* Update Utilities Library
|
|
15
|
+
|
|
16
|
+
## 1.0.107 / 29-11-2023
|
|
17
|
+
===================
|
|
18
|
+
* Update Utilities Library
|
|
8
19
|
|
|
9
20
|
## 1.0.106 / 19-11-2023
|
|
10
21
|
===================
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm5zaWdodHMtYmJzZi1jb250cm9scy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2Juc2lnaHRzLWJic2YtY29udHJvbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Title } from '@angular/platform-browser';
|
|
3
|
+
import { UtilityService, AuthService, ConfigurationService, } from '@bnsights/bbsf-utilities';
|
|
4
|
+
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
|
|
5
|
+
import { ControlUtility } from '../services/ControlUtility';
|
|
6
|
+
import { CustomValidation } from '../Models/CustomValidation';
|
|
7
|
+
import { saveAs } from 'file-saver';
|
|
8
|
+
import { EnvironmentService } from '@bnsights/bbsf-utilities';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
export class AppBaseComponent {
|
|
11
|
+
constructor(injector) {
|
|
12
|
+
this.pageTitle = '';
|
|
13
|
+
this.PageCount = 12;
|
|
14
|
+
this.onSuccessAddHandler = (success) => {
|
|
15
|
+
this.utilityService.notifySuccessMessage(this.l('RecordAdded'), null, null, false);
|
|
16
|
+
};
|
|
17
|
+
this.onSuccessEditHandler = (success) => {
|
|
18
|
+
this.utilityService.notifySuccessMessage(this.l('RecordUpdated'), null, null, false);
|
|
19
|
+
};
|
|
20
|
+
this.onSuccessDeleteHandler = (success) => {
|
|
21
|
+
this.utilityService.notifySuccessMessage(this.l('RecordDeleted'), null, null, false);
|
|
22
|
+
};
|
|
23
|
+
this.utilityService = injector.get(UtilityService);
|
|
24
|
+
this.controlUtility = injector.get(ControlUtility);
|
|
25
|
+
this.configurationService = injector.get(ConfigurationService);
|
|
26
|
+
this.environmentService = injector.get(EnvironmentService);
|
|
27
|
+
this.modalService = injector.get(NgbModal);
|
|
28
|
+
this.titleService = injector.get(Title);
|
|
29
|
+
this.auhService = injector.get(AuthService);
|
|
30
|
+
this.exportLabel = this.utilityService.getResourceValue('Export');
|
|
31
|
+
this.filtersLabel = this.utilityService.getResourceValue('Filters');
|
|
32
|
+
this.addLabel = this.utilityService.getResourceValue('Add');
|
|
33
|
+
this.userName = this.auhService.name();
|
|
34
|
+
this.isEN = this.utilityService.isCurrentLanguageEnglish();
|
|
35
|
+
}
|
|
36
|
+
updatePageTitle(title) {
|
|
37
|
+
this.titleService.setTitle(this.calculatePageTitle(title));
|
|
38
|
+
}
|
|
39
|
+
l(key) {
|
|
40
|
+
return this.utilityService.getResourceValue(key);
|
|
41
|
+
}
|
|
42
|
+
getConfigurationValue(key) {
|
|
43
|
+
return this.configurationService.getConfigurationValue(key);
|
|
44
|
+
}
|
|
45
|
+
getLanguageModeValue() {
|
|
46
|
+
return this.configurationService.getConfigurationValue('LanguageMode');
|
|
47
|
+
}
|
|
48
|
+
stopBlockUI() {
|
|
49
|
+
this.utilityService.stopBlockUI();
|
|
50
|
+
}
|
|
51
|
+
startBlockUI() {
|
|
52
|
+
this.utilityService.startBlockUI();
|
|
53
|
+
}
|
|
54
|
+
openModal(modal, size) {
|
|
55
|
+
if (size)
|
|
56
|
+
this.modalService.open(modal, {
|
|
57
|
+
size: size,
|
|
58
|
+
backdrop: 'static',
|
|
59
|
+
keyboard: false,
|
|
60
|
+
});
|
|
61
|
+
else
|
|
62
|
+
this.modalService.open(modal, { backdrop: 'static', keyboard: false });
|
|
63
|
+
}
|
|
64
|
+
download(fileDTO, fileName) {
|
|
65
|
+
/*let blob = new Blob([file]);*/
|
|
66
|
+
let file = new Blob([fileDTO], {
|
|
67
|
+
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
|
68
|
+
});
|
|
69
|
+
saveAs(file, fileName);
|
|
70
|
+
}
|
|
71
|
+
downloadPDF(fileDTO, fileName) {
|
|
72
|
+
let file = new Blob([fileDTO], { type: "application/pdf" });
|
|
73
|
+
saveAs(file, fileName);
|
|
74
|
+
}
|
|
75
|
+
downloadWord(fileDTO, fileName) {
|
|
76
|
+
let file = new Blob([fileDTO], { type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document" });
|
|
77
|
+
saveAs(file, fileName);
|
|
78
|
+
}
|
|
79
|
+
base64toBlob(base64Data, contentType) {
|
|
80
|
+
contentType = contentType || '';
|
|
81
|
+
var sliceSize = 1024;
|
|
82
|
+
var byteCharacters = atob(base64Data);
|
|
83
|
+
var bytesLength = byteCharacters.length;
|
|
84
|
+
var slicesCount = Math.ceil(bytesLength / sliceSize);
|
|
85
|
+
var byteArrays = new Array(slicesCount);
|
|
86
|
+
for (var sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) {
|
|
87
|
+
var begin = sliceIndex * sliceSize;
|
|
88
|
+
var end = Math.min(begin + sliceSize, bytesLength);
|
|
89
|
+
var bytes = new Array(end - begin);
|
|
90
|
+
for (var offset = begin, i = 0; offset < end; ++i, ++offset) {
|
|
91
|
+
bytes[i] = byteCharacters[offset].charCodeAt(0);
|
|
92
|
+
}
|
|
93
|
+
byteArrays[sliceIndex] = new Uint8Array(bytes);
|
|
94
|
+
}
|
|
95
|
+
return new Blob(byteArrays, { type: contentType });
|
|
96
|
+
}
|
|
97
|
+
calculatePageTitle(title) {
|
|
98
|
+
return title
|
|
99
|
+
? title.substring(0, 100) + ` | ${this.l('ApplicationName')}`
|
|
100
|
+
: `${this.l('ApplicationName')}`;
|
|
101
|
+
}
|
|
102
|
+
getPagingFiltersValues(form, filters) {
|
|
103
|
+
let model = new Object();
|
|
104
|
+
for (var i = 0; i < filters.length; i++) {
|
|
105
|
+
let filterItem = filters[i];
|
|
106
|
+
if (form.controls[filterItem.FormControlName].value == undefined)
|
|
107
|
+
continue;
|
|
108
|
+
model[filterItem.ActionParameterName] =
|
|
109
|
+
form.controls[filterItem.FormControlName].value == undefined
|
|
110
|
+
? ''
|
|
111
|
+
: form.controls[filterItem.FormControlName].value;
|
|
112
|
+
// params = params.append(filterItem.ActionParameterName, form.controls[filterItem.FormControlName].value == undefined ? '' : form.controls[filterItem.FormControlName].value);
|
|
113
|
+
}
|
|
114
|
+
return model;
|
|
115
|
+
}
|
|
116
|
+
removeControl(controlName, form) {
|
|
117
|
+
form.removeControl(controlName);
|
|
118
|
+
}
|
|
119
|
+
copyToClipboard(val) {
|
|
120
|
+
const selBox = document.createElement('textarea');
|
|
121
|
+
selBox.style.position = 'fixed';
|
|
122
|
+
selBox.style.left = '0';
|
|
123
|
+
selBox.style.top = '0';
|
|
124
|
+
selBox.style.opacity = '0';
|
|
125
|
+
selBox.value = val;
|
|
126
|
+
document.body.appendChild(selBox);
|
|
127
|
+
selBox.focus();
|
|
128
|
+
selBox.select();
|
|
129
|
+
document.execCommand('copy');
|
|
130
|
+
document.body.removeChild(selBox);
|
|
131
|
+
this.utilityService.notifySuccessMessage(this.l('CopiedSuccessfully'));
|
|
132
|
+
}
|
|
133
|
+
addRequiredRule(control, controlOptions) {
|
|
134
|
+
this.controlUtility.addRequiredToControl(control, controlOptions);
|
|
135
|
+
}
|
|
136
|
+
removeRequiredRule(control, controlOptions) {
|
|
137
|
+
this.controlUtility.removeRequiredFromControl(control, controlOptions);
|
|
138
|
+
}
|
|
139
|
+
validateDates(form, fromDateControl, toDateControl, validationMessageKey) {
|
|
140
|
+
var validator = new CustomValidation();
|
|
141
|
+
validator.functionBody = (control) => {
|
|
142
|
+
let fromDate = form.controls[fromDateControl].value;
|
|
143
|
+
let toDate = form.controls[toDateControl].value;
|
|
144
|
+
if (fromDate && toDate && toDate <= fromDate)
|
|
145
|
+
return { customerError: true };
|
|
146
|
+
return null;
|
|
147
|
+
};
|
|
148
|
+
validator.massage = this.l(validationMessageKey);
|
|
149
|
+
return validator;
|
|
150
|
+
}
|
|
151
|
+
recalculatePageTitle() {
|
|
152
|
+
this.titleService.setTitle(this.calculatePageTitle(''));
|
|
153
|
+
}
|
|
154
|
+
isEnglish() {
|
|
155
|
+
return this.utilityService.isCurrentLanguageEnglish();
|
|
156
|
+
}
|
|
157
|
+
calculateInitials(name) {
|
|
158
|
+
let language = localStorage.getItem('language');
|
|
159
|
+
let currentUser = this.auhService.user.profile;
|
|
160
|
+
console.log(currentUser);
|
|
161
|
+
let userName = language == 'en' ? currentUser.given_nameEn : currentUser.given_nameAr;
|
|
162
|
+
if (currentUser) {
|
|
163
|
+
let fullName = userName.split(' ');
|
|
164
|
+
let initials;
|
|
165
|
+
if (fullName.length > 1) {
|
|
166
|
+
if (this.isEN)
|
|
167
|
+
initials = fullName.shift().charAt(0) + fullName.pop().charAt(0);
|
|
168
|
+
else
|
|
169
|
+
initials =
|
|
170
|
+
fullName.shift().charAt(0) + ' ' + fullName.pop().charAt(0);
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
initials = fullName.pop().charAt(0);
|
|
174
|
+
}
|
|
175
|
+
return initials.toUpperCase();
|
|
176
|
+
}
|
|
177
|
+
return '';
|
|
178
|
+
}
|
|
179
|
+
getCurrentUserInitials() {
|
|
180
|
+
return this.calculateInitials(this.auhService.name());
|
|
181
|
+
}
|
|
182
|
+
getCurrentFailOver(val) {
|
|
183
|
+
if (this.isEnglish()) {
|
|
184
|
+
if (val.English)
|
|
185
|
+
return val.English;
|
|
186
|
+
else
|
|
187
|
+
return val.Arabic;
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
if (val.Arabic)
|
|
191
|
+
return val.Arabic;
|
|
192
|
+
else
|
|
193
|
+
return val.English;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
//#region validation actions
|
|
197
|
+
addRequiredValidation(customControlOption, form, formOptions) {
|
|
198
|
+
customControlOption.forEach(control => {
|
|
199
|
+
if (form.get(control.Name))
|
|
200
|
+
this.addRequiredRule(form.get(control.Name), formOptions);
|
|
201
|
+
else
|
|
202
|
+
control.IsRequired = true;
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
removeRequiredValidation(customControlOption, form, formOptions) {
|
|
206
|
+
customControlOption.forEach(control => {
|
|
207
|
+
if (form.get(control.Name))
|
|
208
|
+
this.removeRequiredRule(form.get(control.Name), formOptions);
|
|
209
|
+
else
|
|
210
|
+
control.IsRequired = false;
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
resetFormControlsValue(customControlsOptions, form) {
|
|
214
|
+
customControlsOptions.forEach(option => {
|
|
215
|
+
let formControl = form.get(option.Name);
|
|
216
|
+
if (formControl)
|
|
217
|
+
formControl.reset();
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
AppBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AppBaseComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
222
|
+
AppBaseComponent.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AppBaseComponent });
|
|
223
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AppBaseComponent, decorators: [{
|
|
224
|
+
type: Injectable
|
|
225
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
226
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWJhc2UtY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL1NoYXJlZC9Db21wb25lbnRzL2FwcC1iYXNlLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVksVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsY0FBYyxFQUNkLFdBQVcsRUFDWCxvQkFBb0IsR0FDckIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBSTlELE1BQU0sT0FBZ0IsZ0JBQWdCO0lBZ0JwQyxZQUFZLFFBQWtCO1FBRnZCLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFDdkIsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQXlKOUIsd0JBQW1CLEdBQUcsQ0FBQyxPQUFZLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUN0QyxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUNyQixJQUFJLEVBQ0osSUFBSSxFQUNKLEtBQUssQ0FDTixDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBRUYseUJBQW9CLEdBQUcsQ0FBQyxPQUFZLEVBQUUsRUFBRTtZQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUN0QyxJQUFJLENBQUMsQ0FB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SSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDOztnQkFFN0QsT0FBTyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsc0JBQXNCLENBQUMscUJBQTRCLEVBQUUsSUFBZTtRQUNsRSxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDckMsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEMsSUFBSSxXQUFXO2dCQUNiLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7OzhHQTNRbUIsZ0JBQWdCO2tIQUFoQixnQkFBZ0I7NEZBQWhCLGdCQUFnQjtrQkFEckMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7XHJcbiAgVXRpbGl0eVNlcnZpY2UsXHJcbiAgQXV0aFNlcnZpY2UsXHJcbiAgQ29uZmlndXJhdGlvblNlcnZpY2UsXHJcbn0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uL3NlcnZpY2VzL0NvbnRyb2xVdGlsaXR5JztcclxuaW1wb3J0IHsgRmlsdGVySXRlbSB9IGZyb20gJy4uL01vZGVscy9GaWx0ZXJJdGVtJztcclxuaW1wb3J0IHsgQ3VzdG9tVmFsaWRhdGlvbiB9IGZyb20gJy4uL01vZGVscy9DdXN0b21WYWxpZGF0aW9uJztcclxuaW1wb3J0IHsgRW5nbGlzaEFyYWJpY0RUTyB9IGZyb20gJy4uL01vZGVscy9FbmdsaXNoQXJhYmljRFRPJztcclxuaW1wb3J0IHsgc2F2ZUFzIH0gZnJvbSAnZmlsZS1zYXZlcic7XHJcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IEZvcm1PcHRpb25zIH0gZnJvbSAnLi4vTW9kZWxzL0Zvcm1PcHRpb25zJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFwcEJhc2VDb21wb25lbnQge1xyXG4gIHB1YmxpYyB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2U7XHJcbiAgcHVibGljIG1vZGFsU2VydmljZTogTmdiTW9kYWw7XHJcbiAgcHJpdmF0ZSBjb250cm9sVXRpbGl0eTogQ29udHJvbFV0aWxpdHk7XHJcbiAgcHJpdmF0ZSB0aXRsZVNlcnZpY2U6IFRpdGxlO1xyXG4gIHByaXZhdGUgYXVoU2VydmljZTogQXV0aFNlcnZpY2U7XHJcbiAgcHJpdmF0ZSBjb25maWd1cmF0aW9uU2VydmljZTogQ29uZmlndXJhdGlvblNlcnZpY2U7XHJcbiAgcHVibGljIGVudmlyb25tZW50U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlO1xyXG4gIHB1YmxpYyBpc0VOOiBib29sZWFuO1xyXG4gIC8vTGFiZWxzXHJcbiAgcHVibGljIGV4cG9ydExhYmVsOiBzdHJpbmc7XHJcbiAgcHVibGljIGZpbHRlcnNMYWJlbDogc3RyaW5nO1xyXG4gIHB1YmxpYyBhZGRMYWJlbDogc3RyaW5nO1xyXG4gIHB1YmxpYyB1c2VyTmFtZTogc3RyaW5nO1xyXG4gIHB1YmxpYyBwYWdlVGl0bGU6IHN0cmluZyA9ICcnO1xyXG4gIHB1YmxpYyBQYWdlQ291bnQ6IG51bWJlciA9IDEyO1xyXG4gIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZSA9IGluamVjdG9yLmdldChVdGlsaXR5U2VydmljZSk7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5ID0gaW5qZWN0b3IuZ2V0KENvbnRyb2xVdGlsaXR5KTtcclxuICAgIHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UgPSBpbmplY3Rvci5nZXQoQ29uZmlndXJhdGlvblNlcnZpY2UpO1xyXG4gICAgdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UgPSBpbmplY3Rvci5nZXQoRW52aXJvbm1lbnRTZXJ2aWNlKTtcclxuICAgIHRoaXMubW9kYWxTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KE5nYk1vZGFsKTtcclxuICAgIHRoaXMudGl0bGVTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFRpdGxlKTtcclxuICAgIHRoaXMuYXVoU2VydmljZSA9IGluamVjdG9yLmdldChBdXRoU2VydmljZSk7XHJcbiAgICB0aGlzLmV4cG9ydExhYmVsID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdFeHBvcnQnKTtcclxuICAgIHRoaXMuZmlsdGVyc0xhYmVsID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdGaWx0ZXJzJyk7XHJcbiAgICB0aGlzLmFkZExhYmVsID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBZGQnKTtcclxuICAgIHRoaXMudXNlck5hbWUgPSB0aGlzLmF1aFNlcnZpY2UubmFtZSgpO1xyXG4gICAgdGhpcy5pc0VOID0gdGhpcy51dGlsaXR5U2VydmljZS5pc0N1cnJlbnRMYW5ndWFnZUVuZ2xpc2goKTtcclxuICB9XHJcbiAgdXBkYXRlUGFnZVRpdGxlKHRpdGxlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKHRoaXMuY2FsY3VsYXRlUGFnZVRpdGxlKHRpdGxlKSk7XHJcbiAgfVxyXG5cclxuICBsKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoa2V5KTtcclxuICB9XHJcbiAgZ2V0Q29uZmlndXJhdGlvblZhbHVlKGtleTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5nZXRDb25maWd1cmF0aW9uVmFsdWUoa2V5KTtcclxuICB9XHJcbiAgZ2V0TGFuZ3VhZ2VNb2RlVmFsdWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5nZXRDb25maWd1cmF0aW9uVmFsdWUoJ0xhbmd1YWdlTW9kZScpO1xyXG4gIH1cclxuICBzdG9wQmxvY2tVSSgpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICB9XHJcblxyXG4gIHN0YXJ0QmxvY2tVSSgpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgfVxyXG5cclxuICBvcGVuTW9kYWwobW9kYWw6IGFueSwgc2l6ZT86IHN0cmluZykge1xyXG4gICAgaWYgKHNpemUpXHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4obW9kYWwsIHtcclxuICAgICAgICBzaXplOiBzaXplLFxyXG4gICAgICAgIGJhY2tkcm9wOiAnc3RhdGljJyxcclxuICAgICAgICBrZXlib2FyZDogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgZWxzZSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKG1vZGFsLCB7IGJhY2tkcm9wOiAnc3RhdGljJywga2V5Ym9hcmQ6IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgZG93bmxvYWQoZmlsZURUTzogYW55LCBmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAvKmxldCBibG9iID0gbmV3IEJsb2IoW2ZpbGVdKTsqL1xyXG4gICAgbGV0IGZpbGUgPSBuZXcgQmxvYihbZmlsZURUT10sIHtcclxuICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JyxcclxuICAgIH0pO1xyXG4gICAgc2F2ZUFzKGZpbGUsIGZpbGVOYW1lKTtcclxuICB9XHJcblxyXG4gIGRvd25sb2FkUERGKGZpbGVEVE86IGFueSwgZmlsZU5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IGZpbGUgPSBuZXcgQmxvYihbZmlsZURUT10sIHsgdHlwZTogXCJhcHBsaWNhdGlvbi9wZGZcIiB9KTtcclxuICAgIHNhdmVBcyhmaWxlLCBmaWxlTmFtZSk7XHJcbiAgfVxyXG4gIGRvd25sb2FkV29yZChmaWxlRFRPOiBhbnksIGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBmaWxlID0gbmV3IEJsb2IoW2ZpbGVEVE9dLCB7IHR5cGU6IFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnRcIiB9KTtcclxuICAgIHNhdmVBcyhmaWxlLCBmaWxlTmFtZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBiYXNlNjR0b0Jsb2IoYmFzZTY0RGF0YSwgY29udGVudFR5cGUpIHtcclxuICAgIGNvbnRlbnRUeXBlID0gY29udGVudFR5cGUgfHwgJyc7XHJcbiAgICB2YXIgc2xpY2VTaXplID0gMTAyNDtcclxuICAgIHZhciBieXRlQ2hhcmFjdGVycyA9IGF0b2IoYmFzZTY0RGF0YSk7XHJcbiAgICB2YXIgYnl0ZXNMZW5ndGggPSBieXRlQ2hhcmFjdGVycy5sZW5ndGg7XHJcbiAgICB2YXIgc2xpY2VzQ291bnQgPSBNYXRoLmNlaWwoYnl0ZXNMZW5ndGggLyBzbGljZVNpemUpO1xyXG4gICAgdmFyIGJ5dGVBcnJheXMgPSBuZXcgQXJyYXkoc2xpY2VzQ291bnQpO1xyXG5cclxuICAgIGZvciAodmFyIHNsaWNlSW5kZXggPSAwOyBzbGljZUluZGV4IDwgc2xpY2VzQ291bnQ7ICsrc2xpY2VJbmRleCkge1xyXG4gICAgICB2YXIgYmVnaW4gPSBzbGljZUluZGV4ICogc2xpY2VTaXplO1xyXG4gICAgICB2YXIgZW5kID0gTWF0aC5taW4oYmVnaW4gKyBzbGljZVNpemUsIGJ5dGVzTGVuZ3RoKTtcclxuXHJcbiAgICAgIHZhciBieXRlcyA9IG5ldyBBcnJheShlbmQgLSBiZWdpbik7XHJcbiAgICAgIGZvciAodmFyIG9mZnNldCA9IGJlZ2luLCBpID0gMDsgb2Zmc2V0IDwgZW5kOyArK2ksICsrb2Zmc2V0KSB7XHJcbiAgICAgICAgYnl0ZXNbaV0gPSBieXRlQ2hhcmFjdGVyc1tvZmZzZXRdLmNoYXJDb2RlQXQoMCk7XHJcbiAgICAgIH1cclxuICAgICAgYnl0ZUFycmF5c1tzbGljZUluZGV4XSA9IG5ldyBVaW50OEFycmF5KGJ5dGVzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgQmxvYihieXRlQXJyYXlzLCB7IHR5cGU6IGNvbnRlbnRUeXBlIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVQYWdlVGl0bGUodGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGl0bGVcclxuICAgICAgPyB0aXRsZS5zdWJzdHJpbmcoMCwgMTAwKSArIGAgfCAke3RoaXMubCgnQXBwbGljYXRpb25OYW1lJyl9YFxyXG4gICAgICA6IGAke3RoaXMubCgnQXBwbGljYXRpb25OYW1lJyl9YDtcclxuICB9XHJcblxyXG4gIGdldFBhZ2luZ0ZpbHRlcnNWYWx1ZXMoZm9ybTogRm9ybUdyb3VwLCBmaWx0ZXJzOiBGaWx0ZXJJdGVtW10pOiBhbnkge1xyXG4gICAgbGV0IG1vZGVsID0gbmV3IE9iamVjdCgpO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWx0ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBmaWx0ZXJJdGVtID0gZmlsdGVyc1tpXTtcclxuICAgICAgaWYgKGZvcm0uY29udHJvbHNbZmlsdGVySXRlbS5Gb3JtQ29udHJvbE5hbWVdLnZhbHVlID09IHVuZGVmaW5lZClcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgbW9kZWxbZmlsdGVySXRlbS5BY3Rpb25QYXJhbWV0ZXJOYW1lXSA9XHJcbiAgICAgICAgZm9ybS5jb250cm9sc1tmaWx0ZXJJdGVtLkZvcm1Db250cm9sTmFtZV0udmFsdWUgPT0gdW5kZWZpbmVkXHJcbiAgICAgICAgICA/ICcnXHJcbiAgICAgICAgICA6IGZvcm0uY29udHJvbHNbZmlsdGVySXRlbS5Gb3JtQ29udHJvbE5hbWVdLnZhbHVlO1xyXG4gICAgICAvLyBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKGZpbHRlckl0ZW0uQWN0aW9uUGFyYW1ldGVyTmFtZSwgZm9ybS5jb250cm9sc1tmaWx0ZXJJdGVtLkZvcm1Db250cm9sTmFtZV0udmFsdWUgPT0gdW5kZWZpbmVkID8gJycgOiBmb3JtLmNvbnRyb2xzW2ZpbHRlckl0ZW0uRm9ybUNvbnRyb2xOYW1lXS52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbW9kZWw7XHJcbiAgfVxyXG5cclxuICByZW1vdmVDb250cm9sKGNvbnRyb2xOYW1lOiBzdHJpbmcsIGZvcm06IEZvcm1Hcm91cCkge1xyXG4gICAgZm9ybS5yZW1vdmVDb250cm9sKGNvbnRyb2xOYW1lKTtcclxuICB9XHJcblxyXG4gIGNvcHlUb0NsaXBib2FyZCh2YWw6IHN0cmluZykge1xyXG4gICAgY29uc3Qgc2VsQm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcclxuICAgIHNlbEJveC5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7XHJcbiAgICBzZWxCb3guc3R5bGUubGVmdCA9ICcwJztcclxuICAgIHNlbEJveC5zdHlsZS50b3AgPSAnMCc7XHJcbiAgICBzZWxCb3guc3R5bGUub3BhY2l0eSA9ICcwJztcclxuICAgIHNlbEJveC52YWx1ZSA9IHZhbDtcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2VsQm94KTtcclxuICAgIHNlbEJveC5mb2N1cygpO1xyXG4gICAgc2VsQm94LnNlbGVjdCgpO1xyXG4gICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoc2VsQm94KTtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5U3VjY2Vzc01lc3NhZ2UodGhpcy5sKCdDb3BpZWRTdWNjZXNzZnVsbHknKSk7XHJcbiAgfVxyXG5cclxuICBhZGRSZXF1aXJlZFJ1bGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBjb250cm9sT3B0aW9uczogYW55KSB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LmFkZFJlcXVpcmVkVG9Db250cm9sKGNvbnRyb2wsIGNvbnRyb2xPcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVJlcXVpcmVkUnVsZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIGNvbnRyb2xPcHRpb25zOiBhbnkpIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkucmVtb3ZlUmVxdWlyZWRGcm9tQ29udHJvbChjb250cm9sLCBjb250cm9sT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZURhdGVzKFxyXG4gICAgZm9ybTogRm9ybUdyb3VwLFxyXG4gICAgZnJvbURhdGVDb250cm9sOiBzdHJpbmcsXHJcbiAgICB0b0RhdGVDb250cm9sOiBzdHJpbmcsXHJcbiAgICB2YWxpZGF0aW9uTWVzc2FnZUtleTogc3RyaW5nXHJcbiAgKTogQ3VzdG9tVmFsaWRhdGlvbiB7XHJcbiAgICB2YXIgdmFsaWRhdG9yID0gbmV3IEN1c3RvbVZhbGlkYXRpb24oKTtcclxuICAgIHZhbGlkYXRvci5mdW5jdGlvbkJvZHkgPSAoY29udHJvbCkgPT4ge1xyXG4gICAgICBsZXQgZnJvbURhdGUgPSBmb3JtLmNvbnRyb2xzW2Zyb21EYXRlQ29udHJvbF0udmFsdWU7XHJcbiAgICAgIGxldCB0b0RhdGUgPSBmb3JtLmNvbnRyb2xzW3RvRGF0ZUNvbnRyb2xdLnZhbHVlO1xyXG5cclxuICAgICAgaWYgKGZyb21EYXRlICYmIHRvRGF0ZSAmJiB0b0RhdGUgPD0gZnJvbURhdGUpXHJcbiAgICAgICAgcmV0dXJuIHsgY3VzdG9tZXJFcnJvcjogdHJ1ZSB9O1xyXG5cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gICAgdmFsaWRhdG9yLm1hc3NhZ2UgPSB0aGlzLmwodmFsaWRhdGlvbk1lc3NhZ2VLZXkpO1xyXG4gICAgcmV0dXJuIHZhbGlkYXRvcjtcclxuICB9XHJcblxyXG4gIG9uU3VjY2Vzc0FkZEhhbmRsZXIgPSAoc3VjY2VzczogYW55KSA9PiB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeVN1Y2Nlc3NNZXNzYWdlKFxyXG4gICAgICB0aGlzLmwoJ1JlY29yZEFkZGVkJyksXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIGZhbHNlXHJcbiAgICApO1xyXG4gIH07XHJcblxyXG4gIG9uU3VjY2Vzc0VkaXRIYW5kbGVyID0gKHN1Y2Nlc3M6IGFueSkgPT4ge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlTdWNjZXNzTWVzc2FnZShcclxuICAgICAgdGhpcy5sKCdSZWNvcmRVcGRhdGVkJyksXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIGZhbHNlXHJcbiAgICApO1xyXG4gIH07XHJcblxyXG4gIG9uU3VjY2Vzc0RlbGV0ZUhhbmRsZXIgPSAoc3VjY2VzczogYW55KSA9PiB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeVN1Y2Nlc3NNZXNzYWdlKFxyXG4gICAgICB0aGlzLmwoJ1JlY29yZERlbGV0ZWQnKSxcclxuICAgICAgbnVsbCxcclxuICAgICAgbnVsbCxcclxuICAgICAgZmFsc2VcclxuICAgICk7XHJcbiAgfTtcclxuXHJcbiAgcmVjYWxjdWxhdGVQYWdlVGl0bGUoKSB7XHJcbiAgICB0aGlzLnRpdGxlU2VydmljZS5zZXRUaXRsZSh0aGlzLmNhbGN1bGF0ZVBhZ2VUaXRsZSgnJykpO1xyXG4gIH1cclxuXHJcbiAgaXNFbmdsaXNoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbGl0eVNlcnZpY2UuaXNDdXJyZW50TGFuZ3VhZ2VFbmdsaXNoKCk7XHJcbiAgfVxyXG5cclxuICBjYWxjdWxhdGVJbml0aWFscyhuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IGxhbmd1YWdlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJyk7XHJcbiAgICBsZXQgY3VycmVudFVzZXIgPSB0aGlzLmF1aFNlcnZpY2UudXNlci5wcm9maWxlO1xyXG4gICAgY29uc29sZS5sb2coY3VycmVudFVzZXIpO1xyXG4gICAgbGV0IHVzZXJOYW1lID1cclxuICAgICAgbGFuZ3VhZ2UgPT0gJ2VuJyA/IGN1cnJlbnRVc2VyLmdpdmVuX25hbWVFbiA6IGN1cnJlbnRVc2VyLmdpdmVuX25hbWVBcjtcclxuICAgIGlmIChjdXJyZW50VXNlcikge1xyXG4gICAgICBsZXQgZnVsbE5hbWUgPSB1c2VyTmFtZS5zcGxpdCgnICcpO1xyXG4gICAgICBsZXQgaW5pdGlhbHM6IHN0cmluZztcclxuICAgICAgaWYgKGZ1bGxOYW1lLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICBpZiAodGhpcy5pc0VOKVxyXG4gICAgICAgICAgaW5pdGlhbHMgPSBmdWxsTmFtZS5zaGlmdCgpLmNoYXJBdCgwKSArIGZ1bGxOYW1lLnBvcCgpLmNoYXJBdCgwKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBpbml0aWFscyA9XHJcbiAgICAgICAgICAgIGZ1bGxOYW1lLnNoaWZ0KCkuY2hhckF0KDApICsgJyAnICsgZnVsbE5hbWUucG9wKCkuY2hhckF0KDApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGluaXRpYWxzID0gZnVsbE5hbWUucG9wKCkuY2hhckF0KDApO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBpbml0aWFscy50b1VwcGVyQ2FzZSgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q3VycmVudFVzZXJJbml0aWFscygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlSW5pdGlhbHModGhpcy5hdWhTZXJ2aWNlLm5hbWUoKSk7XHJcbiAgfVxyXG5cclxuICBnZXRDdXJyZW50RmFpbE92ZXIodmFsOiBFbmdsaXNoQXJhYmljRFRPKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmlzRW5nbGlzaCgpKSB7XHJcbiAgICAgIGlmICh2YWwuRW5nbGlzaCkgcmV0dXJuIHZhbC5FbmdsaXNoO1xyXG4gICAgICBlbHNlIHJldHVybiB2YWwuQXJhYmljO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHZhbC5BcmFiaWMpIHJldHVybiB2YWwuQXJhYmljO1xyXG4gICAgICBlbHNlIHJldHVybiB2YWwuRW5nbGlzaDtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvLyNyZWdpb24gdmFsaWRhdGlvbiBhY3Rpb25zXHJcblxyXG4gIGFkZFJlcXVpcmVkVmFsaWRhdGlvbihjdXN0b21Db250cm9sT3B0aW9uOiBhbnlbXSwgZm9ybTogRm9ybUdyb3VwLCBmb3JtT3B0aW9uczogRm9ybU9wdGlvbnMpOiB2b2lkIHtcclxuICAgIGN1c3RvbUNvbnRyb2xPcHRpb24uZm9yRWFjaChjb250cm9sID0+IHtcclxuICAgICAgaWYgKGZvcm0uZ2V0KGNvbnRyb2wuTmFtZSkpXHJcbiAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoZm9ybS5nZXQoY29udHJvbC5OYW1lKSwgZm9ybU9wdGlvbnMpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgY29udHJvbC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uKGN1c3RvbUNvbnRyb2xPcHRpb246IGFueVtdLCBmb3JtOiBGb3JtR3JvdXAsIGZvcm1PcHRpb25zOiBGb3JtT3B0aW9ucyk6IHZvaWQge1xyXG4gICAgY3VzdG9tQ29udHJvbE9wdGlvbi5mb3JFYWNoKGNvbnRyb2wgPT4ge1xyXG4gICAgICBpZiAoZm9ybS5nZXQoY29udHJvbC5OYW1lKSlcclxuICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShmb3JtLmdldChjb250cm9sLk5hbWUpLCBmb3JtT3B0aW9ucyk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBjb250cm9sLklzUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRGb3JtQ29udHJvbHNWYWx1ZShjdXN0b21Db250cm9sc09wdGlvbnM6IGFueVtdLCBmb3JtOiBGb3JtR3JvdXApOiB2b2lkIHtcclxuICAgIGN1c3RvbUNvbnRyb2xzT3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XHJcbiAgICAgIGxldCBmb3JtQ29udHJvbCA9IGZvcm0uZ2V0KG9wdGlvbi5OYW1lKTtcclxuICAgICAgaWYgKGZvcm1Db250cm9sKVxyXG4gICAgICAgIGZvcm1Db250cm9sLnJlc2V0KCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG59XHJcbiJdfQ==
|