From 3d106932d75eb147ea1102ca2919eda049e36fc7 Mon Sep 17 00:00:00 2001 From: Vikram Reddy Date: Sat, 27 Apr 2024 22:12:54 +0530 Subject: [PATCH] Moved from master to main branch and fixed copy right issues --- .gitattributes | 66 + .github/FUNDING.yml | 13 + .github/ISSUE_TEMPLATE/bug_report.md | 50 + .github/workflows/publish-docs.yml | 52 + .github/workflows/sonar.yml | 48 + .github/workflows/static-web-app.yml | 63 + .github/workflows/web-app.yml | 61 + .gitignore | 365 + BlazorBootstrap.Demo.Hosted/Client/App.razor | 12 + .../BlazorBootstrap.Demo.Hosted.Client.csproj | 19 + BlazorBootstrap.Demo.Hosted/Client/Program.cs | 8 + .../Client/Properties/launchSettings.json | 30 + BlazorBootstrap.Demo.Hosted/Client/Usings.cs | 2 + .../Client/_Imports.razor | 10 + .../Client/wwwroot/appsettings.json | 16 + .../Client/wwwroot/images/logo/128X128.png | Bin 0 -> 7074 bytes .../Client/wwwroot/images/logo/150X150.png | Bin 0 -> 7926 bytes .../Client/wwwroot/images/logo/16X16.png | Bin 0 -> 673 bytes .../Client/wwwroot/images/logo/180X180.png | Bin 0 -> 9809 bytes .../Client/wwwroot/images/logo/192X192.png | Bin 0 -> 10430 bytes .../Client/wwwroot/images/logo/24X24.png | Bin 0 -> 1088 bytes .../Client/wwwroot/images/logo/256X256.png | Bin 0 -> 14476 bytes .../Client/wwwroot/images/logo/310X310.png | Bin 0 -> 17267 bytes .../Client/wwwroot/images/logo/32X32.png | Bin 0 -> 1513 bytes .../Client/wwwroot/images/logo/48X48.png | Bin 0 -> 2493 bytes .../Client/wwwroot/images/logo/64X64.png | Bin 0 -> 3435 bytes .../Client/wwwroot/images/logo/96X96.png | Bin 0 -> 5130 bytes .../Client/wwwroot/images/logo/logo-color.svg | 1 + .../Client/wwwroot/images/logo/logo-white.svg | 1 + .../Client/wwwroot/images/logo/logo.svg | 17632 ++++++++++++ .../Client/wwwroot/images/placeholder.png | Bin 0 -> 2680 bytes .../sample-data/customer/customer.json | 1 + .../Client/wwwroot/sitemap.xml | 118 + .../BlazorBootstrap.Demo.Hosted.Server.csproj | 18 + .../Controllers/WeatherForecastController.cs | 11 + .../Server/Pages/Error.cshtml | 42 + .../Server/Pages/Error.cshtml.cs | 26 + .../Server/Pages/_Host.cshtml | 66 + BlazorBootstrap.Demo.Hosted/Server/Program.cs | 36 + .../Server/Properties/launchSettings.json | 30 + BlazorBootstrap.Demo.Hosted/Server/Using.cs | 1 + .../Server/appsettings.Development.json | 8 + .../Server/appsettings.json | 9 + BlazorBootstrap.Demo.RCL/App.cs | 5 + .../BlazorBootstrap.Demo.RCL.csproj | 30 + .../Components/Layout/EmptyLayout.razor | 141 + .../Components/Layout/EmptyLayout.razor.css | 3 + .../Components/Layout/MainLayout.razor | 73 + .../Components/Layout/MainLayout.razor.cs | 106 + .../Components/Layout/MainLayout.razor.css | 73 + .../Accordion/AccordionDocumentation.razor | 111 + .../Accordion_Demo_01_Examples.razor | 17 + .../Accordion_Demo_02_Title_with_Icon.razor | 26 + .../Accordion/Accordion_Demo_03_Flush.razor | 17 + ...Accordion_Demo_04_Set_Default_Active.razor | 17 + .../Accordion_Demo_05_Always_Open.razor | 17 + ..._Show_Hide_Individual_AccordionItems.razor | 67 + ...Demo_07_Show_Hide_All_AccordionItems.razor | 27 + .../Accordion/Accordion_Demo_08_Events.razor | 55 + .../Pages/Alerts/AlertDocumentation.razor | 44 + .../Pages/Alerts/Alert_Demo_01_Examples.razor | 8 + .../Alert_Demo_02_Additional_Content.razor | 6 + .../Pages/Alerts/Alert_Demo_03_Icons.razor | 4 + .../Alerts/Alert_Demo_04_Dismissing_A.razor | 1 + .../Alerts/Alert_Demo_04_Dismissing_B.razor | 8 + ...emo_05_Switch_Alert_Type_Dynamically.razor | 33 + .../Pages/Badge/BadgeDocumentation.razor | 61 + .../Pages/Badge/Badge_Demo_01_Examples.razor | 6 + .../Badge_Demo_02_Background_Colors.razor | 21 + .../Badge/Badge_Demo_03_Pill_Badges.razor | 22 + .../Pages/Badge/Badge_Demo_04_Buttons.razor | 16 + .../Badge/Badge_Demo_05_Positioned.razor | 84 + .../Badge_Demo_06_Generic_Indicator.razor | 8 + .../Breadcrumb/BreadcrumbDocumentation.razor | 28 + .../Breadcrumb_Demo_01_Examples.razor | 23 + .../Breadcrumb_Demo_02_Dividers.razor | 15 + .../Breadcrumb_Demo_03_Embedded_SVG.razor | 15 + .../Pages/Buttons/ButtonDocumentation.razor | 94 + .../Buttons/Button_Demo_01_Examples.razor | 9 + .../Buttons/Button_Demo_02_Button_Tags.razor | 2 + .../Button_Demo_03_Outline_Buttons.razor | 7 + .../Buttons/Button_Demo_04_Sizes_A.razor | 2 + .../Buttons/Button_Demo_04_Sizes_B.razor | 2 + .../Buttons/Button_Demo_04_Sizes_C.razor | 5 + .../Button_Demo_05_Disabled_State_A.razor | 2 + .../Button_Demo_05_Disabled_State_B.razor | 2 + .../Button_Demo_06_Block_Buttons_A.razor | 4 + .../Button_Demo_06_Block_Buttons_B.razor | 4 + .../Button_Demo_06_Block_Buttons_C.razor | 4 + .../Button_Demo_06_Block_Buttons_D.razor | 4 + .../Button_Demo_07_Toggle_States_A.razor | 3 + .../Button_Demo_07_Toggle_States_B.razor | 3 + .../Button_Demo_08_Loading_Spinner.razor | 8 + ...on_Demo_08_Show_Hide_Loading_Spinner.razor | 63 + .../Button_Demo_09_A_Show_Tooltip.razor | 7 + ..._Dynamically_update_the_tooltip_text.razor | 11 + .../Button_Demo_09_C_Tooltip_Color.razor | 9 + .../Buttons/Button_Demo_10_Click_Event.razor | 8 + .../Button_Demo_11_Double_Click_Event.razor | 8 + ...Button_Demo_12_Click_Event_With_Args.razor | 10 + ...n_Demo_13_Disable_Enable_Dynamically.razor | 18 + .../Pages/Callout/CalloutDocumentation.razor | 31 + .../Callout/Callout_Demo_01_Examples.razor | 23 + .../Callout_Demo_02_Change_Heading.razor | 19 + .../Callout/Callout_Demo_03_Large_Text.razor | 24 + .../Callout_Demo_04_Hide_Heading.razor | 24 + .../Pages/Card/CardDocumentation.razor | 97 + .../Pages/Card/Card_Demo_01_Examples.razor | 7 + .../Card_Demo_02_Content_Types_Body.razor | 5 + ..._Content_Types_Titles_Text_And_Links.razor | 9 + .../Card_Demo_04_Content_Types_Images.razor | 19 + ...rd_Demo_05_Content_Types_List_Groups.razor | 7 + ...d_Demo_06_Content_Types_Kitchen_Sink.razor | 16 + .../Card/Card_Demo_07_Header_And_Footer.razor | 10 + .../Pages/Card/Card_Demo_08_Sizing.razor | 20 + .../Card/Card_Demo_09_Text_Alignment.razor | 23 + .../Card_Demo_10_Background_And_Color.razor | 63 + .../Pages/Card/Card_Demo_11_Card_Groups.razor | 26 + ...Card_Demo_12_Card_Groups_With_Footer.razor | 32 + .../BarCharts/BarChartDocumentation.razor | 50 + .../BarCharts/BarChart_Demo_01_Examples.razor | 164 + ...BarChart_Demo_02_Horizontal_BarChart.razor | 48 + .../BarChart_Demo_03_Stacked_BarChart.razor | 77 + .../BarCharts/BarChart_Demo_04_Locale.razor | 78 + ..._05_Stacked_BarChart_with_Datalabels.razor | 78 + .../Pages/Charts/ChartsDocumentation.razor | 40 + .../Charts/Charts_Demo_00_Examples.razor | 118 + .../DoughnutChartDocumentation.razor | 39 + .../DoughnutChart_Demo_01_Examples.razor | 157 + .../DoughnutChart_Demo_02_Datalabels.razor | 158 + .../LineCharts/LineChartDocumentation.razor | 50 + .../LineChart_Demo_01_A_Examples.razor | 163 + .../LineChart_Demo_01_B_Examples.razor | 86 + .../LineCharts/LineChart_Demo_02_Locale.razor | 87 + ...neChart_Demo_03_Dynamically_add_data.razor | 106 + .../LineChart_Demo_04_Datalabels.razor | 99 + .../PieCharts/PieChartDocumentation.razor | 43 + .../PieCharts/PieChart_Demo_01_Examples.razor | 155 + .../PieChart_Demo_02_Datalabels.razor | 156 + ...Chart_Demo_03_Change_Legend_Position.razor | 111 + .../Pages/Charts/Utils_Colors.razor | 199 + .../Collapse/CollapseDocumentation.razor | 74 + .../Collapse/Collapse_Demo_01_Examples.razor | 19 + .../Collapse_Demo_02_Horizontal.razor | 19 + .../Collapse/Collapse_Demo_03_Events.razor | 44 + .../ConfirmDialogDocumentation.razor | 74 + .../ConfirmDialog_Demo_01_Examples.razor | 24 + ..._Dynamic_Component_As_Confirm_Dialog.razor | 26 + ...emo_04_Change_Buttons_Text_And_Color.razor | 32 + ...ConfirmDialog_Demo_05_Optional_Sizes.razor | 28 + ...og_Demo_06_Scrolling_Long_Content_01.razor | 21 + ...og_Demo_06_Scrolling_Long_Content_02.razor | 24 + ...ialog_Demo_07_Vertically_Centered_01.razor | 25 + ...ialog_Demo_07_Vertically_Centered_02.razor | 23 + ...Demo_08_Disable_AutoFocus_Yes_Button.razor | 24 + .../ConfirmDialog/EmployeeDemoComponent.razor | 27 + .../LongContentDemoComponent.razor | 2 + .../Dropdowns/DropdownDocumentation.razor | 181 + .../Dropdown_Demo_01_Single_Button.razor | 8 + .../Dropdowns/Dropdown_Demo_02_Color.razor | 50 + .../Dropdown_Demo_03_Split_Button.razor | 56 + .../Dropdowns/Dropdown_Demo_04_A_Sizing.razor | 19 + .../Dropdowns/Dropdown_Demo_04_B_Sizing.razor | 19 + ...Dropdown_Demo_05_A_Directions_Dropup.razor | 19 + ..._Demo_05_B_Directions_DropupCentered.razor | 10 + ...ropdown_Demo_05_C_Directions_Dropend.razor | 19 + ...pdown_Demo_05_D_Directions_Dropstart.razor | 19 + .../Dropdowns/Dropdown_Demo_06_Active.razor | 8 + .../Dropdown_Demo_07_A_Disabled.razor | 19 + .../Dropdown_Demo_07_B_Disabled.razor | 8 + .../Dropdown_Demo_08_Menu_Position.razor | 8 + .../Dropdowns/Dropdown_Demo_09_Header.razor | 9 + .../Dropdowns/Dropdown_Demo_10_Dividers.razor | 10 + .../Dropdowns/Dropdown_Demo_11_Text.razor | 7 + .../Dropdowns/Dropdown_Demo_12_Forms.razor | 112 + .../Dropdown_Demo_13_AutoClose.razor | 32 + .../Dropdowns/Dropdown_Demo_14_Methods.razor | 20 + .../Dropdowns/Dropdown_Demo_15_Events.razor | 30 + .../AutoCompleteDocumentation.razor | 94 + ...lete_Demo_01_A_Client_Side_Filtering.razor | 59 + ...ide_Filtering_With_StringComparision.razor | 60 + ...mplete_Demo_02_Server_Side_Filtering.razor | 29 + ...toComplete_Demo_03_Set_Default_Value.razor | 64 + .../AutoComplete_Demo_04_Validations.razor | 86 + .../AutoComplete_Demo_05_A_Disable.razor | 42 + .../AutoComplete_Demo_05_B_Disable.razor | 39 + .../AutoComplete_Demo_06_Sizing.razor | 85 + .../CurrencyInputDocumentation.razor | 89 + .../CurrencyInput_Demo_01_Basic_Usage.razor | 8 + ...cy_Symbols_for_the_Different_Locales.razor | 65 + ...cyInput_Demo_03_Hide_Currency_Symbol.razor | 12 + ...ing_FractionDigits_and_IntegerDigits.razor | 13 + ...es_Instead_of_Appending_A_Minus_Sign.razor | 12 + .../CurrencyInput_Demo_06_Generic_Type.razor | 50 + ...CurrencyInput_Demo_07_Enable_Min_Max.razor | 10 + ...CurrencyInput_Demo_08_Text_Alignment.razor | 16 + ...Input_Demo_09_Allow_Negative_Numbers.razor | 10 + ...Input_Demo_10_A_Disable_Number_Input.razor | 22 + ...Input_Demo_10_B_Disable_Number_Input.razor | 19 + .../CurrencyInput_Demo_11_Validations.razor | 113 + .../CurrencyInput_Demo_12_Decimals.razor | 65 + ...cyInput_Demo_13_Events_Value_Changed.razor | 20 + .../DateInput/DateInputDocumentation.razor | 79 + .../DateInput_Demo_01_Basic_Usage.razor | 8 + .../DateInput_Demo_02_Generic_Type.razor | 38 + .../DateInput/DateInput_Demo_03_Max_Min.razor | 69 + ...teInput_Demo_04_A_Disable_Date_Input.razor | 22 + ...teInput_Demo_04_B_Disable_Date_Input.razor | 20 + .../DateInput_Demo_05_Validations.razor | 74 + ...teInput_Demo_06_Events_Value_Changed.razor | 17 + ...d_On_The_Entry_In_Another_Date_Field.razor | 128 + .../NumberInputDocumentation.razor | 71 + .../NumberInput_Demo_01_Basic_Usage.razor | 9 + .../NumberInput_Demo_02_Generic_Type.razor | 58 + .../NumberInput_Demo_03_Enable_Min_Max.razor | 10 + .../NumberInput_Demo_04_Step.razor | 18 + .../NumberInput_Demo_05_Text_Alignment.razor | 16 + ...Input_Demo_06_Allow_Negative_Numbers.razor | 10 + ...Input_Demo_07_A_Disable_Number_Input.razor | 22 + ...Input_Demo_07_B_Disable_Number_Input.razor | 19 + .../NumberInput_Demo_08_Validations.razor | 113 + ...erInput_Demo_09_Events_Value_Changed.razor | 19 + .../RangeInput/RangeInputDocumentation.razor | 63 + .../RangeInput_Demo_01_Basic_Usage_A.razor | 5 + .../RangeInput_Demo_01_Basic_Usage_B.razor | 23 + .../RangeInput_Demo_02_Disabled_A.razor | 33 + .../RangeInput_Demo_02_Disabled_B.razor | 20 + .../RangeInput_Demo_03_Min_Max.razor | 8 + .../RangeInput/RangeInput_Demo_04_Step.razor | 23 + .../RangeInput_Demo_05_Decimals.razor | 6 + .../RangeInput_Demo_06_Tick_Marks.razor | 20 + .../Form/Switch/SwitchDocumentation.razor | 47 + .../Switch/Switch_Demo_01_Basic_Usage.razor | 10 + .../Switch/Switch_Demo_02_A_Disable.razor | 18 + .../Switch/Switch_Demo_02_B_Disable.razor | 15 + .../Form/Switch/Switch_Demo_03_Reverse.razor | 5 + .../Switch_Demo_04_Events_Value_Changed.razor | 18 + .../Form/Switch/Switch_Demo_05_Form.razor | 115 + .../TimeInput/TimeInputDocumentation.razor | 76 + .../TimeInput_Demo_01_Basic_Usage.razor | 8 + .../TimeInput_Demo_02_Generic_Type.razor | 20 + .../TimeInput/TimeInput_Demo_03_Max_Min.razor | 35 + .../TimeInput_Demo_04_A_Disable.razor | 19 + .../TimeInput_Demo_04_B_Disable.razor | 17 + .../TimeInput_Demo_05_Validations.razor | 115 + ...meInput_Demo_06_Events_Value_Changed.razor | 17 + ...d_On_The_Entry_In_Another_Time_Field.razor | 118 + .../GettingStartedDocumentation.razor | 119 + .../Pages/Grid/GridDocumentation.razor | 214 + ...Grid_Demo_01_A_Client_Side_Filtering.razor | 59 + ...ide_Filtering_With_StringComparision.razor | 45 + .../Grid_Demo_02_Client_Side_Paging.razor | 55 + .../Grid_Demo_03_Client_Side_Sorting.razor | 56 + ...nt_Side_Filtering_Paging_And_Sorting.razor | 82 + .../Grid_Demo_05_Set_Default_Filter.razor | 51 + ...mo_06_Disable_Specific_Column_Filter.razor | 45 + ...emo_06_Increase_Filter_Textbox_Width.razor | 57 + ...er_Side_Filtering_Paging_And_Sorting.razor | 50 + .../Grid/Grid_Demo_08_Default_Sorting.razor | 45 + ...o_09_Disable_Specific_Column_Sorting.razor | 45 + .../Grid_Demo_10_Header_Text_Alignment.razor | 45 + .../Grid_Demo_11_Grid_Cell_Alignment.razor | 45 + .../Grid_Demo_12_Grid_Cell_Formating.razor | 45 + .../Grid/Grid_Demo_13_Grid_Cell_Nowrap.razor | 57 + .../Pages/Grid/Grid_Demo_15_Empty_Data.razor | 23 + ..._Demo_16_Save_And_Load_Grid_Settings.razor | 84 + ...7_A_Data_Parameter_Assign_Collection.razor | 40 + ...7_B_Data_Parameter_Update_Collection.razor | 65 + ...rid_Demo_18_Specify_Custom_Row_Class.razor | 68 + ..._Demo_19_Specify_Custom_Column_Class.razor | 61 + .../Grid/Grid_Demo_20_Column_Css_Class.razor | 57 + ...Demo_21_Specify_Custom_Column_Header.razor | 70 + .../Pages/Grid/Grid_Demo_22_Selection.razor | 76 + .../Grid_Demo_23_Multiple_Selection.razor | 78 + .../Grid/Grid_Demo_24_Disable_Selection.razor | 87 + .../Grid/Grid_Demo_25_Dynamic_Page_Size.razor | 62 + .../Grid_Demo_26_Page_Size_Selection.razor | 57 + .../Grid_Demo_27_Header_Row_CSS_Class.razor | 140 + .../Grid_Demo_28_Filters_Row_CSS_Class.razor | 241 + .../Pages/Grid/Grid_Demo_29_Row_Click.razor | 62 + .../Grid/Grid_Demo_30_Row_Double_Click.razor | 62 + .../Grid/Grid_Demo_31_Translations.razor | 87 + .../Grid/Grid_Demo_32_Fixed_Header_A.razor | 82 + ..._Demo_32_Fixed_Header_B_With_Filters.razor | 52 + ..._Demo_33_Freeze_Column_A_Text_Nowrap.razor | 50 + ...Demo_33_Freeze_Column_B_Fixed_Header.razor | 51 + ...e_Column_C_Fixed_Header_With_Filters.razor | 52 + .../Grid/Grid_Demo_34_AutoHide_Paging.razor | 60 + .../Pages/Icons/IconDocumentation.razor | 61 + .../Pages/Icons/Icon_Demo_01_Examples.razor | 4 + .../Pages/Icons/Icon_Demo_02_Sizes.razor | 4 + .../Icon_Demo_03_Font_Awesome_Icons.razor | 6 + .../Pages/Icons/Icon_Demo_04_Colors.razor | 11 + .../Icon_Demo_05_Inline_Text_With_Icon.razor | 1 + .../Icons/Icon_Demo_06_A_Link_With_Icon.razor | 3 + ...Icon_Demo_06_B_Link_With_Custom_Icon.razor | 3 + ..._Demo_07_A_Button_With_Icon_And_Text.razor | 3 + ...Icon_Demo_07_B_Button_With_Icon_Only.razor | 1 + ...o_07_C_Button_With_Font_Awesome_Icon.razor | 6 + .../Pages/Icons/Icon_Demo_09_Tooltip.razor | 3 + .../Icons/Icon_Demo_10_Bootstrap_Icons.razor | 13 + .../Components/Pages/Index.razor | 319 + .../server/LayoutServerDocumentation.razor | 46 + .../Layout/server/Layout_Server_Demo_01.razor | 47 + .../LayoutWebAssemblyDocumentation.razor | 47 + .../Layout_WebAssembly_Demo_01.razor | 47 + .../Pages/Modal/EmployeeDemoComponent1.razor | 27 + .../Pages/Modal/EmployeeDemoComponent2.razor | 33 + .../Pages/Modal/ModalDocumentation.razor | 72 + .../Pages/Modal/Modal_Demo_01_Examples.razor | 25 + ...dal_Demo_02_A_Show_Dynamic_Component.razor | 14 + ...vent_Callback_to_a_Dynamic_Component.razor | 22 + .../Modal/Modal_Demo_02_Static_Backdrop.razor | 25 + ...dal_Demo_03_Scrolling_Long_Content_A.razor | 26 + ...dal_Demo_03_Scrolling_Long_Content_B.razor | 26 + .../Modal_Demo_04_Vertically_Centered.razor | 25 + ...4_Vertically_Centered_And_Scrollable.razor | 26 + .../Modal/Modal_Demo_05_Optional_Sizes.razor | 19 + .../Modal_Demo_06_Fullscreen_Modal.razor | 34 + .../Pages/Modal/Modal_Demo_07_Events.razor | 61 + .../Offcanvas/EmployeeDemoComponent1.razor | 27 + .../Offcanvas/EmployeeDemoComponent2.razor | 33 + .../Offcanvas/OffcanvasDocumentation.razor | 66 + .../Offcanvas_Demo_01_Examples.razor | 27 + ...vas_Demo_02_A_Show_Dynamic_Component.razor | 14 + ...vent_Callback_to_a_Dynamic_Component.razor | 22 + .../Offcanvas_Demo_03_Placement.razor | 18 + .../Offcanvas_Demo_04_Static_Backdrop.razor | 19 + .../Offcanvas_Demo_05_Sizes_A_Small.razor | 19 + .../Offcanvas_Demo_05_Sizes_B_Large.razor | 19 + .../Offcanvas/Offcanvas_Demo_06_Events.razor | 28 + .../Pagination/PaginationDocumentation.razor | 39 + .../Pagination_Demo_01_Examples.razor | 5 + ...agination_Demo_02_Working_With_Icons.razor | 7 + ...n_Demo_03_Disabled_And_Active_States.razor | 3 + .../Pagination_Demo_04_Sizing.razor | 3 + .../Pagination_Demo_05_Alignment.razor | 3 + .../Pagination_Demo_06_Events.razor | 15 + .../PdfViewer/PdfViewerDocumentation.razor | 35 + .../PdfViewer_Demo_01_Examples.razor | 16 + .../PdfViewer_Demo_02_Orientation.razor | 17 + .../PdfViewer_Demo_03_Base64String.razor | 23 + .../PlaceholderDocumentation.razor | 43 + .../Placeholder_Demo_01_Examples.razor | 6 + .../Placeholder_Demo_02_Width.razor | 3 + .../Placeholder_Demo_03_Color.razor | 9 + .../Placeholder_Demo_04_Sizing.razor | 4 + .../Placeholder_Demo_05_Animation.razor | 16 + .../Pages/Preload/PreloadDocumentation.razor | 58 + ..._01_Global_Preload_For_Application_A.razor | 9 + ..._01_Global_Preload_For_Application_B.razor | 22 + .../Preload_Demo_02_Loading_Text.razor | 20 + ...Preload_Demo_03_Change_Spinner_Color.razor | 21 + .../Progress/ProgressDocumentation.razor | 55 + .../Progress_Demo_01_How_It_Works.razor | 24 + .../Progress/Progress_Demo_02_Labels.razor | 3 + ...s_Demo_03_Set_Width_Programmatically.razor | 29 + .../Progress/Progress_Demo_04_Height.razor | 12 + .../Progress_Demo_05_Backgrounds.razor | 21 + ...o_06_Set_Background_Programmatically.razor | 17 + .../Progress_Demo_07_MultipleBars.razor | 6 + .../Progress/Progress_Demo_08_Striped.razor | 21 + .../Progress_Demo_09_Animated_Stripes.razor | 21 + .../Progress_Demo_10_Dynamic_Progress.razor | 78 + .../Pages/Ribbon/RibbonDocumentation.razor | 29 + .../Ribbon/Ribbon_Demo_01_How_It_Works.razor | 59 + .../Pages/Ribbon/Ribbon_Demo_02_Images.razor | 59 + .../ScriptLoaderDocumentation.razor | 59 + .../ScriptLoader_Demo_01_Examples.razor | 4 + .../ScriptLoader_Demo_02_Events.razor | 14 + .../ModalServiceDocumentation.razor | 42 + .../ModalService_Demo_01_How_It_Works.razor | 24 + ...ce_Demo_02_Vertically_Centered_Modal.razor | 25 + .../ModalService_Demo_03_Size.razor | 20 + ..._Change_Footer_Button_Color_and_Text.razor | 18 + ...alService_Demo_05_Hide_Footer_Button.razor | 17 + .../ModalService_Demo_06_Callback.razor | 32 + ...bal_Modal_Service_For_Application_01.razor | 9 + ...bal_Modal_Service_For_Application_02.razor | 33 + .../Pages/Sidebar/SidebarDocumentation.razor | 59 + .../Sidebar/Sidebar_Demo_01_Basic_Usage.razor | 30 + ...Sidebar_Demo_02_Two_level_navigation.razor | 41 + .../Sidebar_Demo_03_Change_Icons_Color.razor | 41 + ...bar_Demo_04_Full_layout_with_sidebar.razor | 55 + ...05_Toggle_Sidebar_to_Show_Icons_Only.razor | 58 + .../Sidebar/Sidebar_Demo_06_Show_Badge.razor | 59 + .../Sidebar_Demo_07_Custom_Brand_Icon.razor | 59 + ...bar_Demo_08_Show_Image_as_Brand_Logo.razor | 59 + .../Sidebar_Demo_09_Customize_Sidebar.razor | 89 + ...10_Apply_Custom_CSS_Class_to_NavItem.razor | 41 + .../Sidebar2/Sidebar2Documentation.razor | 43 + .../Sidebar2_Demo_01_Basic_Usage.razor | 45 + .../Sidebar2_Demo_02_More_Nested_Levels.razor | 52 + .../Sidebar2_Demo_03_Change_Icons_Color.razor | 52 + ...ar2_Demo_04_Full_layout_with_sidebar.razor | 66 + .../Sidebar2_Demo_07_Custom_Brand_Icon.razor | 66 + ...ar2_Demo_08_Show_Image_as_Brand_Logo.razor | 66 + .../SortableListDocumentation.razor | 79 + .../SortableList_Demo_00_Setup.razor | 1 + .../SortableList_Demo_01_Examples.razor | 26 + .../SortableList_Demo_02_Shared_Lists_A.razor | 84 + ...t_Demo_02_Shared_Lists_B_Three_Lists.razor | 116 + .../SortableList_Demo_03_Cloning.razor | 82 + ...SortableList_Demo_04_Disable_Sorting.razor | 18 + .../SortableList_Demo_05_Handle.razor | 33 + .../SortableList_Demo_06_Disable_Item.razor | 28 + ...ortableList_Demo_07_Nested_Sortables.razor | 101 + .../SortableList_Demo_08_Dynamic_Data.razor | 40 + .../SortableList_Demo_09_Empty_Data.razor | 13 + .../Spinners/SpinnersDocumentation.razor | 65 + .../Spinners_Demo_01_Border_Spinner.razor | 1 + .../Spinners/Spinners_Demo_02_Colors.razor | 8 + .../Spinners_Demo_03_Grow_spinner_A.razor | 1 + .../Spinners_Demo_03_Grow_spinner_B.razor | 8 + ...nners_Demo_04_Loading_dots_spinner_A.razor | 1 + ...nners_Demo_04_Loading_dots_spinner_B.razor | 8 + .../Spinners_Demo_05_Alignment_A_Margin.razor | 1 + ...emo_05_Alignment_B_Palcement_Flex_01.razor | 3 + ...emo_05_Alignment_B_Palcement_Flex_02.razor | 4 + ...Demo_05_Alignment_C_Palcement_Floats.razor | 3 + ..._05_Alignment_D_Palcement_Text_align.razor | 3 + .../Spinners_Demo_06_Size_A_Border.razor | 4 + .../Spinners_Demo_06_Size_B_Grow.razor | 4 + .../Spinners_Demo_06_Size_C_Dots.razor | 4 + .../Spinners/Spinners_Demo_07_Visible.razor | 14 + .../Pages/Tabs/TabsDocumentation.razor | 115 + .../Pages/Tabs/Tabs_Demo_01_Examples.razor | 22 + .../Tabs/Tabs_Demo_02_Enable_FadeEffect.razor | 17 + .../Tabs/Tabs_Demo_03_Title_with_Icon.razor | 26 + .../Pages/Tabs/Tabs_Demo_04_Disable_Tab.razor | 22 + .../Tabs/Tabs_Demo_05_Nav_Style_Pills.razor | 17 + .../Tabs_Demo_06_Nav_Style_Underline.razor | 17 + .../Pages/Tabs/Tabs_Demo_07_Vertical_A.razor | 22 + .../Tabs/Tabs_Demo_07_Vertical_B_Pills.razor | 22 + .../Tabs_Demo_07_Vertical_C_Underline.razor | 22 + ...abs_Demo_08_Activate_Individual_Tabs.razor | 50 + .../Tabs/Tabs_Demo_09_Events_Order.razor | 46 + .../Tabs/Tabs_Demo_10_Events_Example.razor | 53 + ...Methods_Set_Active_Tab_OnAfterRender.razor | 53 + ...s_Demo_12_Tab_Callback_Event_OnClick.razor | 29 + .../Tabs/Tabs_Demo_13_Dynamic_Tabs.razor | 41 + .../Tabs_Demo_14_Remove_Dynamic_Tabs.razor | 57 + .../Pages/Toasts/ToastsDocumentation.razor | 58 + .../Toasts_Demo_01_Toast_With_Title.razor | 24 + .../Toasts_Demo_02_Toast_Without_Title.razor | 23 + .../Toasts/Toasts_Demo_03_A_Auto_Hide.razor | 24 + ...o_03_B_Auto_Hide_Individual_Messages.razor | 29 + .../Toasts/Toasts_Demo_04_Placement.razor | 32 + .../Toasts/Toasts_Demo_05_StackLength.razor | 24 + ...al_Toasts_Service_For_Application_01.razor | 9 + ...al_Toasts_Service_For_Application_02.razor | 20 + .../Tooltips/TooltipsDocumentation.razor | 51 + .../Tooltips/Tooltips_Demo_01_Examples.razor | 4 + ...Demo_02_Disabled_Button_With_Tooltip.razor | 3 + ...oltips_Demo_03_Icon_With_Click_Event.razor | 10 + ...o_04_Dynamically_Update_Tooltip_Text.razor | 10 + ...Demo_05_Tooltip_With_Navigation_Link.razor | 11 + .../Tooltips/Tooltips_Demo_06_Colors.razor | 29 + ...ips_Demo_07_Dynamically_Change_Color.razor | 31 + .../Tooltips/Tooltips_Demo_08_HTML.razor | 1 + .../Components/Shared/CarbonAds.razor | 6 + .../Components/Shared/CarbonAds.razor.cs | 11 + .../Components/Shared/CodeSnippet.cs | 90 + .../Components/Shared/Demo.razor | 91 + .../Components/Shared/Demo.razor.cs | 117 + .../Components/Shared/Demo.razor.css | 4 + .../Components/Shared/MetaTags.razor | 25 + .../Components/Shared/MetaTags.razor.cs | 43 + .../Components/Shared/SectionHeading.razor | 32 + .../Components/Shared/SectionHeading.razor.cs | 39 + .../Components/Shared/Skippy.razor | 10 + .../Components/Shared/Skippy.razor.cs | 10 + .../Components/Shared/Skippy.razor.css | 0 BlazorBootstrap.Demo.RCL/Models/Customer.cs | 3 + BlazorBootstrap.Demo.RCL/Models/Customer2.cs | 12 + BlazorBootstrap.Demo.RCL/Models/Department.cs | 13 + BlazorBootstrap.Demo.RCL/Models/Employee.cs | 12 + BlazorBootstrap.Demo.RCL/Models/Employee1.cs | 10 + BlazorBootstrap.Demo.RCL/Models/Employee2.cs | 10 + BlazorBootstrap.Demo.RCL/Models/Employee3.cs | 14 + BlazorBootstrap.Demo.RCL/Models/Employee4.cs | 10 + BlazorBootstrap.Demo.RCL/RegisterServices.cs | 12 + .../Services/CustomerService.cs | 102 + .../Services/EmployeeService.cs | 106 + .../Services/ICustomerService.cs | 7 + .../Services/IEmployeeService.cs | 6 + BlazorBootstrap.Demo.RCL/Usings.cs | 10 + BlazorBootstrap.Demo.RCL/_Imports.razor | 12 + .../wwwroot/css/blazorbootstrap.demo.rcl.css | 417 + .../wwwroot/icons/archive.png | Bin 0 -> 398 bytes .../wwwroot/icons/bin.png | Bin 0 -> 465 bytes .../wwwroot/icons/calendar.png | Bin 0 -> 913 bytes .../wwwroot/icons/cancel-button.png | Bin 0 -> 713 bytes .../wwwroot/icons/cancelled.png | Bin 0 -> 1050 bytes .../wwwroot/icons/folder-add.png | Bin 0 -> 554 bytes .../wwwroot/icons/folder-copy.png | Bin 0 -> 604 bytes .../wwwroot/icons/folder-delete.png | Bin 0 -> 635 bytes .../wwwroot/icons/folder-move.png | Bin 0 -> 421 bytes .../wwwroot/icons/folder-rename.png | Bin 0 -> 602 bytes .../wwwroot/icons/folder-search.png | Bin 0 -> 658 bytes .../wwwroot/icons/folder-sync.png | Bin 0 -> 729 bytes .../wwwroot/icons/loading-bar.png | Bin 0 -> 698 bytes .../wwwroot/icons/new-email.png | Bin 0 -> 691 bytes .../wwwroot/icons/refresh.png | Bin 0 -> 753 bytes .../wwwroot/js/blazorbootstrap.demo.rcl.js | 35 + .../BlazorBootstrap.Demo.Server.csproj | 13 + .../Components/App.razor | 60 + .../Components/Routes.razor | 12 + .../Components/_Imports.razor | 10 + BlazorBootstrap.Demo.Server/Program.cs | 34 + .../Properties/launchSettings.json | 38 + BlazorBootstrap.Demo.Server/Usings.cs | 2 + .../appsettings.Development.json | 11 + BlazorBootstrap.Demo.Server/appsettings.json | 23 + .../wwwroot/images/logo/128X128.png | Bin 0 -> 7074 bytes .../wwwroot/images/logo/150X150.png | Bin 0 -> 7926 bytes .../wwwroot/images/logo/16X16.png | Bin 0 -> 673 bytes .../wwwroot/images/logo/180X180.png | Bin 0 -> 9809 bytes .../wwwroot/images/logo/192X192.png | Bin 0 -> 10430 bytes .../wwwroot/images/logo/24X24.png | Bin 0 -> 1088 bytes .../wwwroot/images/logo/256X256.png | Bin 0 -> 14476 bytes .../wwwroot/images/logo/310X310.png | Bin 0 -> 17267 bytes .../wwwroot/images/logo/32X32.png | Bin 0 -> 1513 bytes .../wwwroot/images/logo/48X48.png | Bin 0 -> 2493 bytes .../wwwroot/images/logo/64X64.png | Bin 0 -> 3435 bytes .../wwwroot/images/logo/96X96.png | Bin 0 -> 5130 bytes .../wwwroot/images/logo/logo-color.svg | 1 + .../wwwroot/images/logo/logo-white.svg | 1 + .../wwwroot/images/logo/logo.svg | 17632 ++++++++++++ .../wwwroot/images/placeholder.png | Bin 0 -> 2680 bytes .../sample-data/customer/customer.json | 1 + .../wwwroot/sitemap.xml | 118 + BlazorBootstrap.Demo.WebAssembly/App.razor | 12 + .../BlazorBootstrap.Demo.WebAssembly.csproj | 19 + BlazorBootstrap.Demo.WebAssembly/Program.cs | 12 + .../Properties/launchSettings.json | 41 + BlazorBootstrap.Demo.WebAssembly/Usings.cs | 3 + .../_Imports.razor | 11 + .../wwwroot/appsettings.json | 16 + .../wwwroot/images/logo/128X128.png | Bin 0 -> 7074 bytes .../wwwroot/images/logo/150X150.png | Bin 0 -> 7926 bytes .../wwwroot/images/logo/16X16.png | Bin 0 -> 673 bytes .../wwwroot/images/logo/180X180.png | Bin 0 -> 9809 bytes .../wwwroot/images/logo/192X192.png | Bin 0 -> 10430 bytes .../wwwroot/images/logo/24X24.png | Bin 0 -> 1088 bytes .../wwwroot/images/logo/256X256.png | Bin 0 -> 14476 bytes .../wwwroot/images/logo/310X310.png | Bin 0 -> 17267 bytes .../wwwroot/images/logo/32X32.png | Bin 0 -> 1513 bytes .../wwwroot/images/logo/48X48.png | Bin 0 -> 2493 bytes .../wwwroot/images/logo/64X64.png | Bin 0 -> 3435 bytes .../wwwroot/images/logo/96X96.png | Bin 0 -> 5130 bytes .../wwwroot/images/logo/logo-color.svg | 1 + .../wwwroot/images/logo/logo-white.svg | 1 + .../wwwroot/images/logo/logo.svg | 17632 ++++++++++++ .../wwwroot/images/placeholder.png | Bin 0 -> 2680 bytes .../wwwroot/index.html | 67 + .../sample-data/customer/customer.json | 1 + .../wwwroot/sitemap.xml | 123 + .../wwwroot/staticwebapp.config.json | 6 + CODE_OF_CONDUCT.md | 133 + CREDITS.md | 37 + LICENSE.txt | 202 + README.md | 206 + blazorbootstrap.sln | 67 + blazorbootstrap/BlazorBootstrap.csproj | 51 + .../Components/Accordion/Accordion.razor | 8 + .../Components/Accordion/Accordion.razor.cs | 229 + .../Components/Accordion/AccordionItem.razor | 30 + .../Accordion/AccordionItem.razor.cs | 110 + blazorbootstrap/Components/Alert/Alert.razor | 10 + .../Components/Alert/Alert.razor.cs | 107 + blazorbootstrap/Components/Badge/Badge.razor | 10 + .../Components/Badge/Badge.razor.cs | 60 + .../Components/Breadcrumb/Breadcrumb.razor | 23 + .../Components/Breadcrumb/Breadcrumb.razor.cs | 53 + .../Components/Button/Button.razor | 44 + .../Components/Button/Button.razor.cs | 417 + .../Components/Callout/Callout.razor | 16 + .../Components/Callout/Callout.razor.cs | 76 + .../Components/Callout/Callout.razor.css | 50 + blazorbootstrap/Components/Card/Card.razor | 6 + blazorbootstrap/Components/Card/Card.razor.cs | 38 + .../Components/Card/CardBody.razor | 6 + .../Components/Card/CardBody.razor.cs | 24 + .../Components/Card/CardFooter.razor | 6 + .../Components/Card/CardFooter.razor.cs | 24 + .../Components/Card/CardGroup.razor | 6 + .../Components/Card/CardGroup.razor.cs | 24 + .../Components/Card/CardHeader.razor | 6 + .../Components/Card/CardHeader.razor.cs | 31 + .../Components/Card/CardLink.razor | 6 + .../Components/Card/CardLink.razor.cs | 156 + .../Components/Card/CardSubTitle.razor | 39 + .../Components/Card/CardSubTitle.razor.cs | 30 + .../Components/Card/CardText.razor | 6 + .../Components/Card/CardText.razor.cs | 24 + .../Components/Card/CardTitle.razor | 39 + .../Components/Card/CardTitle.razor.cs | 30 + .../Components/Charts/BarChart.razor | 6 + .../Components/Charts/BarChart.razor.cs | 123 + .../Components/Charts/BlazorBootstrapChart.cs | 188 + .../Components/Charts/DoughnutChart.razor | 6 + .../Components/Charts/DoughnutChart.razor.cs | 129 + .../Components/Charts/LineChart.razor | 6 + .../Components/Charts/LineChart.razor.cs | 139 + .../Components/Charts/PieChart.razor | 6 + .../Components/Charts/PieChart.razor.cs | 129 + .../Components/Collapse/Collapse.razor | 6 + .../Components/Collapse/Collapse.razor.cs | 141 + .../ConfirmDialog/ConfirmDialog.razor | 56 + .../ConfirmDialog/ConfirmDialog.razor.cs | 136 + .../Core/BlazorBootstrapComponentBase.cs | 107 + .../Components/Dropdown/Dropdown.razor | 16 + .../Components/Dropdown/Dropdown.razor.cs | 164 + .../Dropdown/DropdownActionButton.razor | 11 + .../Dropdown/DropdownActionButton.razor.cs | 60 + .../Components/Dropdown/DropdownDivider.razor | 6 + .../Dropdown/DropdownDivider.razor.cs | 14 + .../Components/Dropdown/DropdownHeader.razor | 8 + .../Dropdown/DropdownHeader.razor.cs | 24 + .../Components/Dropdown/DropdownItem.razor | 28 + .../Components/Dropdown/DropdownItem.razor.cs | 219 + .../Components/Dropdown/DropdownMenu.razor | 6 + .../Components/Dropdown/DropdownMenu.razor.cs | 31 + .../Dropdown/DropdownToggleButton.razor | 11 + .../Dropdown/DropdownToggleButton.razor.cs | 99 + .../Form/AutoComplete/AutoComplete.razor | 50 + .../Form/AutoComplete/AutoComplete.razor.cs | 389 + .../Form/AutoComplete/AutoComplete.razor.css | 31 + .../Form/CurrencyInput/CurrencyInput.razor | 17 + .../Form/CurrencyInput/CurrencyInput.razor.cs | 511 + .../Components/Form/DateInput/DateInput.razor | 19 + .../Form/DateInput/DateInput.razor.cs | 356 + .../Form/NumberInput/NumberInput.razor | 16 + .../Form/NumberInput/NumberInput.razor.cs | 440 + .../Form/RangeInput/RangeInput.razor | 27 + .../Form/RangeInput/RangeInput.razor.cs | 428 + .../Components/Form/Switch/Switch.razor | 20 + .../Components/Form/Switch/Switch.razor.cs | 115 + .../Components/Form/TimeInput/TimeInput.razor | 19 + .../Form/TimeInput/TimeInput.razor.cs | 318 + .../Components/Grid/FilterOperatorHelper.cs | 111 + blazorbootstrap/Components/Grid/Grid.razor | 170 + blazorbootstrap/Components/Grid/Grid.razor.cs | 798 + .../Components/Grid/GridColumn.razor | 3 + .../Components/Grid/GridColumn.razor.cs | 398 + .../Components/Grid/GridColumnFilter.razor | 59 + .../Components/Grid/GridColumnFilter.razor.cs | 182 + .../Components/Grid/GridSettings.cs | 23 + blazorbootstrap/Components/Icon/Icon.razor | 4 + blazorbootstrap/Components/Icon/Icon.razor.cs | 46 + blazorbootstrap/Components/Modals/Modal.razor | 62 + .../Components/Modals/Modal.razor.cs | 363 + .../Components/Offcanvas/Offcanvas.razor | 41 + .../Components/Offcanvas/Offcanvas.razor.cs | 234 + .../Components/Pagination/Pagination.razor | 24 + .../Components/Pagination/Pagination.razor.cs | 182 + .../Pagination/PaginationItem.razor | 6 + .../Pagination/PaginationItem.razor.cs | 48 + .../Pagination/PaginationLink.razor | 15 + .../Pagination/PaginationLink.razor.cs | 34 + .../Components/PdfViewer/PdfViewer.razor | 50 + .../Components/PdfViewer/PdfViewer.razor.cs | 239 + .../PdfViewer/PdfViewerJsInterop.cs | 86 + .../Components/Placeholders/Placeholder.razor | 5 + .../Placeholders/Placeholder.razor.cs | 39 + .../Placeholders/PlaceholderContainer.razor | 6 + .../PlaceholderContainer.razor.cs | 30 + .../Components/Preload/Preload.razor | 36 + .../Components/Preload/Preload.razor.cs | 88 + .../Components/Progress/Progress.razor | 6 + .../Components/Progress/Progress.razor.cs | 45 + .../Components/Progress/ProgressBar.razor | 6 + .../Components/Progress/ProgressBar.razor.cs | 141 + .../Components/Ribbon/Ribbon.razor | 46 + .../Components/Ribbon/Ribbon.razor.cs | 351 + .../Components/Ribbon/RibbonGroup.razor | 6 + .../Components/Ribbon/RibbonGroup.razor.cs | 27 + .../Components/Ribbon/RibbonGroup.razor.css | 0 .../Components/Ribbon/RibbonItem.razor | 37 + .../Components/Ribbon/RibbonItem.razor.cs | 108 + .../Components/Ribbon/RibbonItem.razor.css | 11 + .../Components/Ribbon/RibbonItemGroup.razor | 11 + .../Ribbon/RibbonItemGroup.razor.cs | 34 + .../Ribbon/RibbonItemGroup.razor.css | 0 .../Components/Ribbon/RibbonTab.razor | 2 + .../Components/Ribbon/RibbonTab.razor.cs | 89 + .../ScriptLoader/ScriptLoader.razor | 5 + .../ScriptLoader/ScriptLoader.razor.cs | 108 + .../Components/Sidebar/Sidebar.razor | 48 + .../Components/Sidebar/Sidebar.razor.cs | 166 + .../Components/Sidebar/Sidebar.razor.css | 94 + .../Components/Sidebar/SidebarItem.razor | 72 + .../Components/Sidebar/SidebarItem.razor.cs | 79 + .../Components/Sidebar/SidebarItem.razor.css | 34 + .../Components/Sidebar/SidebarItemGroup.razor | 21 + .../Sidebar/SidebarItemGroup.razor.cs | 22 + .../Sidebar/SidebarItemGroup.razor.css | 1 + .../Components/Sidebar2/Sidebar2.razor | 48 + .../Components/Sidebar2/Sidebar2.razor.cs | 167 + .../Components/Sidebar2/Sidebar2.razor.css | 91 + .../Components/Sidebar2/Sidebar2Item.razor | 69 + .../Components/Sidebar2/Sidebar2Item.razor.cs | 98 + .../Sidebar2/Sidebar2Item.razor.css | 42 + .../Sidebar2/Sidebar2ItemGroup.razor | 24 + .../Sidebar2/Sidebar2ItemGroup.razor.cs | 30 + .../Sidebar2/Sidebar2ItemGroup.razor.css | 0 .../SortableList/SortableList.razor | 46 + .../SortableList/SortableList.razor.cs | 198 + .../SortableList/SortableList.razor.css | 3 + .../SortableList/SortableListJsInterop.cs | 38 + .../Components/Spinner/Spinner.razor | 24 + .../Components/Spinner/Spinner.razor.cs | 111 + .../Components/Spinner/Spinner.razor.css | 88 + blazorbootstrap/Components/Tabs/Tab.razor | 2 + blazorbootstrap/Components/Tabs/Tab.razor.cs | 90 + blazorbootstrap/Components/Tabs/Tabs.razor | 42 + blazorbootstrap/Components/Tabs/Tabs.razor.cs | 343 + .../Components/Toasts/SimpleToast.razor | 16 + .../Components/Toasts/SimpleToast.razor.cs | 121 + blazorbootstrap/Components/Toasts/Toast.razor | 20 + .../Components/Toasts/Toast.razor.cs | 209 + .../Components/Toasts/Toasts.razor | 19 + .../Components/Toasts/Toasts.razor.cs | 131 + .../Components/Tooltip/Tooltip.razor | 15 + .../Components/Tooltip/Tooltip.razor.cs | 118 + blazorbootstrap/Config.cs | 30 + blazorbootstrap/Constants/BootstrapClass.cs | 122 + blazorbootstrap/Enums/Alignment.cs | 9 + blazorbootstrap/Enums/AutoCompleteSize.cs | 8 + blazorbootstrap/Enums/BackgroundColor.cs | 21 + blazorbootstrap/Enums/BadgeIndicatorType.cs | 8 + blazorbootstrap/Enums/BadgePlacement.cs | 15 + blazorbootstrap/Enums/ButtonType.cs | 9 + blazorbootstrap/Enums/ChartType.cs | 13 + blazorbootstrap/Enums/CheckboxState.cs | 8 + blazorbootstrap/Enums/Color/AlterColor.cs | 14 + blazorbootstrap/Enums/Color/BadgeColor.cs | 14 + blazorbootstrap/Enums/Color/ButtonColor.cs | 15 + blazorbootstrap/Enums/Color/CalloutColor.cs | 12 + blazorbootstrap/Enums/Color/CardColor.cs | 14 + blazorbootstrap/Enums/Color/IconColor.cs | 17 + blazorbootstrap/Enums/Color/LinkColor.cs | 14 + .../Enums/Color/PlaceholderColor.cs | 14 + blazorbootstrap/Enums/Color/ProgressColor.cs | 13 + blazorbootstrap/Enums/Color/SpinnerColor.cs | 14 + blazorbootstrap/Enums/Color/TabColor.cs | 14 + blazorbootstrap/Enums/Color/TextColor.cs | 17 + blazorbootstrap/Enums/Color/TooltipColor.cs | 14 + blazorbootstrap/Enums/DialogSize.cs | 27 + .../Enums/DropdownAutoCloseBehavior.cs | 19 + blazorbootstrap/Enums/DropdownDirection.cs | 36 + blazorbootstrap/Enums/DropdownMenuPosition.cs | 7 + blazorbootstrap/Enums/FilterOperator.cs | 84 + blazorbootstrap/Enums/FlexDirection.cs | 9 + blazorbootstrap/Enums/FreezeDirection.cs | 7 + blazorbootstrap/Enums/GridSelectionMode.cs | 10 + blazorbootstrap/Enums/HeadingSize.cs | 11 + blazorbootstrap/Enums/IconName.cs | 2055 ++ blazorbootstrap/Enums/IconSize.cs | 42 + blazorbootstrap/Enums/ModalFullscreen.cs | 42 + blazorbootstrap/Enums/ModalSize.cs | 27 + blazorbootstrap/Enums/ModalType.cs | 47 + blazorbootstrap/Enums/NavStyle.cs | 37 + blazorbootstrap/Enums/OffcanvasSize.cs | 22 + blazorbootstrap/Enums/Orientation.cs | 7 + blazorbootstrap/Enums/PaginationSize.cs | 8 + blazorbootstrap/Enums/PlaceholderAnimation.cs | 17 + blazorbootstrap/Enums/PlaceholderSize.cs | 9 + blazorbootstrap/Enums/PlaceholderWidth.cs | 17 + blazorbootstrap/Enums/Placement.cs | 9 + blazorbootstrap/Enums/Position.cs | 44 + blazorbootstrap/Enums/Priority.cs | 8 + blazorbootstrap/Enums/ProgressType.cs | 8 + blazorbootstrap/Enums/Size.cs | 37 + blazorbootstrap/Enums/SortDirection.cs | 8 + blazorbootstrap/Enums/SortableListPullMode.cs | 9 + blazorbootstrap/Enums/SortableListPutMode.cs | 8 + blazorbootstrap/Enums/SpinnerSize.cs | 9 + blazorbootstrap/Enums/SpinnerType.cs | 8 + blazorbootstrap/Enums/StringFilterOperator.cs | 24 + blazorbootstrap/Enums/Target.cs | 10 + blazorbootstrap/Enums/ToastType.cs | 48 + blazorbootstrap/Enums/ToastsPlacement.cs | 46 + blazorbootstrap/Enums/TooltipPlacement.cs | 32 + blazorbootstrap/Enums/Unit.cs | 57 + .../EventArguments/AccordionEventArgs.cs | 28 + .../EventArguments/FilterEventArgs.cs | 3 + .../EventArguments/GridRowEventArgs.cs | 19 + .../EventArguments/PdfViewerEventArgs.cs | 22 + .../EventArguments/Ribbon/RibbonEventArgs.cs | 21 + .../Ribbon/RibbonItemEventArgs.cs | 22 + .../Ribbon/RibbonTabEventArgs.cs | 28 + .../EventArguments/SortableListEventArgs.cs | 31 + .../EventArguments/Tabs/TabEventArgs.cs | 28 + .../EventArguments/Tabs/TabsEventArgs.cs | 21 + .../EventArguments/ToastEventArgs.cs | 22 + blazorbootstrap/Extensions/ColorExtensions.cs | 48 + blazorbootstrap/Extensions/EnumExtensions.cs | 571 + .../Extensions/ExpressionExtensions.cs | 689 + .../Extensions/NavLinkExtensions.cs | 70 + blazorbootstrap/Extensions/TypeExtensions.cs | 63 + .../AutoCompleteDataProviderDelegate.cs | 6 + .../Models/AutoCompleteDataProviderRequest.cs | 42 + .../Models/AutoCompleteDataProviderResult.cs | 18 + blazorbootstrap/Models/BreadcrumbItem.cs | 17 + blazorbootstrap/Models/Charts/ChartData.cs | 12 + .../Charts/ChartDataset/BarChartDataset.cs | 67 + .../ChartDataset/BarChartDatasetData.cs | 10 + .../Charts/ChartDataset/BubbleChartDataset.cs | 49 + .../Charts/ChartDataset/ChartDataset.cs | 84 + .../Charts/ChartDataset/ChartDatasetData.cs | 24 + .../ChartDataset/DoughnutChartDataset.cs | 34 + .../ChartDataset/DoughnutChartDatasetData.cs | 19 + .../Charts/ChartDataset/LineChartDataset.cs | 170 + .../ChartDataset/LineChartDatasetData.cs | 10 + .../Charts/ChartDataset/PieChartDataset.cs | 34 + .../ChartDataset/PieChartDatasetData.cs | 19 + .../ChartDataset/PolarAreaChartDataset.cs | 3 + .../Charts/ChartDataset/RadarChartDataset.cs | 22 + blazorbootstrap/Models/Charts/ChartLabel.cs | 3 + .../Charts/ChartOptions/BarChartOptions.cs | 28 + .../Charts/ChartOptions/ChartOptions.cs | 259 + .../ChartOptions/DoughnutChartOptions.cs | 10 + .../Charts/ChartOptions/LineChartOptions.cs | 28 + .../Charts/ChartOptions/PieChartOptions.cs | 10 + .../Charts/ChartPlugins/BarChartPlugins.cs | 29 + .../Charts/ChartPlugins/ChartPlugins.cs | 232 + .../ChartPlugins/DoughnutChartPlugins.cs | 33 + .../Charts/ChartPlugins/LineChartPlugins.cs | 31 + .../Charts/ChartPlugins/PieChartPlugins.cs | 33 + blazorbootstrap/Models/Charts/ChartRGB.cs | 3 + blazorbootstrap/Models/Charts/ChartRGBA.cs | 3 + .../Models/ConfirmDialogOptions.cs | 63 + blazorbootstrap/Models/Constants.cs | 22 + .../Models/CurrencyFormatOptions.cs | 30 + blazorbootstrap/Models/FilterItem.cs | 3 + blazorbootstrap/Models/FilterOperatorInfo.cs | 3 + .../Models/GridDataProviderDelegate.cs | 6 + .../Models/GridDataProviderRequest.cs | 105 + .../Models/GridDataProviderResult.cs | 18 + .../Models/GridFiltersTranslationDelegate.cs | 6 + .../Models/GridSettingsProviderDelegate.cs | 6 + blazorbootstrap/Models/GridState.cs | 31 + blazorbootstrap/Models/ModalOption.cs | 53 + blazorbootstrap/Models/NavItem.cs | 78 + blazorbootstrap/Models/PdfViewerModel.cs | 7 + .../Models/Sidebar2DataProviderDelegate.cs | 6 + .../Models/Sidebar2DataProviderRequest.cs | 92 + .../Models/Sidebar2DataProviderResult.cs | 13 + .../Models/SidebarDataProviderDelegate.cs | 6 + .../Models/SidebarDataProviderRequest.cs | 38 + .../Models/SidebarDataProviderResult.cs | 13 + blazorbootstrap/Models/SortingItem.cs | 40 + blazorbootstrap/Models/SpinnerCircle.cs | 3 + blazorbootstrap/Models/TickMark.cs | 7 + blazorbootstrap/Models/ToastMessage.cs | 110 + blazorbootstrap/Services/BreadcrumbService.cs | 16 + blazorbootstrap/Services/ModalService.cs | 62 + blazorbootstrap/Services/PreloadService.cs | 19 + blazorbootstrap/Services/ToastService.cs | 16 + blazorbootstrap/Usings.cs | 11 + .../Utilities/BootstrapIconProvider.cs | 2108 ++ blazorbootstrap/Utilities/ColorBuilder.cs | 20 + blazorbootstrap/Utilities/CssClassBuilder.cs | 45 + blazorbootstrap/Utilities/CssStyleBuilder.cs | 45 + blazorbootstrap/Utilities/IdGenerator.cs | 69 + blazorbootstrap/_Imports.razor | 4 + blazorbootstrap/wwwroot/blazor.bootstrap.css | 550 + blazorbootstrap/wwwroot/blazor.bootstrap.js | 1336 + .../wwwroot/blazor.bootstrap.pdf.js | 267 + .../wwwroot/blazor.bootstrap.sortable-list.js | 49 + blazorbootstrap/wwwroot/icon/128X128.png | Bin 0 -> 7074 bytes blazorbootstrap/wwwroot/pdfjs-4.0.379.min.mjs | 21 + .../wwwroot/pdfjs-4.0.379.worker.min.mjs | 22 + docs/.gitignore | 20 + docs/README.md | 33 + docs/babel.config.js | 3 + docs/blog/2021-11-23-blazorbootstrap-0.0.1.md | 22 + docs/blog/2021-11-27-blazorbootstrap-0.0.2.md | 22 + docs/blog/2021-12-08-blazorbootstrap-0.0.3.md | 17 + docs/blog/2021-12-12-blazorbootstrap-0.0.4.md | 55 + docs/blog/2021-12-20-blazorbootstrap-0.1.0.md | 32 + docs/blog/2021-12-21-blazorbootstrap-0.1.1.md | 24 + docs/blog/2022-01-15-blazorbootstrap-0.2.0.md | 32 + docs/blog/2022-02-27-blazorbootstrap-0.2.1.md | 30 + docs/blog/2022-03-15-blazorbootstrap-0.2.2.md | 23 + docs/blog/2022-04-30-blazorbootstrap-0.2.3.md | 23 + docs/blog/2022-06-19-blazorbootstrap-0.2.4.md | 23 + docs/blog/2022-07-28-blazorbootstrap-0.2.5.md | 25 + docs/blog/2022-08-13-blazorbootstrap-0.2.6.md | 25 + docs/blog/2022-08-31-blazorbootstrap-0.3.0.md | 40 + docs/blog/2022-09-04-blazorbootstrap-0.4.0.md | 34 + docs/blog/2022-09-12-blazorbootstrap-0.4.1.md | 43 + docs/blog/2022-09-17-blazorbootstrap-0.4.2.md | 20 + docs/blog/2022-10-16-blazorbootstrap-0.5.0.md | 44 + docs/blog/2022-10-22-blazorbootstrap-0.5.1.md | 26 + docs/blog/2022-10-30-blazorbootstrap-0.6.0.md | 43 + docs/blog/2022-11-18-blazorbootstrap-1.0.0.md | 53 + docs/blog/2022-11-22-blazorbootstrap-1.0.1.md | 36 + docs/blog/2022-11-28-blazorbootstrap-1.1.0.md | 42 + docs/blog/2022-12-12-blazorbootstrap-1.2.0.md | 29 + docs/blog/2022-12-15-blazorbootstrap-1.3.0.md | 29 + docs/blog/2022-12-18-blazorbootstrap-1.3.1.md | 29 + docs/blog/2023-01-15-blazorbootstrap-1.4.0.md | 28 + docs/blog/2023-01-23-blazorbootstrap-1.4.1.md | 33 + docs/blog/2023-01-30-blazorbootstrap-1.4.2.md | 33 + docs/blog/2023-02-07-blazorbootstrap-1.4.3.md | 26 + docs/blog/2023-02-10-blazorbootstrap-1.4.4.md | 26 + docs/blog/2023-02-23-blazorbootstrap-1.4.5.md | 25 + docs/blog/2023-03-05-blazorbootstrap-1.5.0.md | 45 + docs/blog/2023-03-12-blazorbootstrap-1.6.0.md | 51 + docs/blog/2023-04-10-blazorbootstrap-1.7.0.md | 57 + docs/blog/2023-04-19-blazorbootstrap-1.7.1.md | 32 + docs/blog/2023-04-24-blazorbootstrap-1.7.2.md | 25 + docs/blog/2023-04-29-blazorbootstrap-1.7.3.md | 29 + docs/blog/2023-05-28-blazorbootstrap-1.8.0.md | 71 + docs/blog/2023-05-31-blazorbootstrap-1.8.1.md | 35 + docs/blog/2023-06-11-blazorbootstrap-1.8.2.md | 34 + docs/blog/2023-06-16-blazorbootstrap-1.8.3.md | 29 + docs/blog/2023-06-30-blazorbootstrap-1.9.0.md | 43 + docs/blog/2023-06-31-blazorbootstrap-1.9.1.md | 25 + docs/blog/2023-07-01-blazorbootstrap-1.9.2.md | 29 + docs/blog/2023-07-04-blazorbootstrap-1.9.3.md | 27 + docs/blog/2023-07-05-blazorbootstrap-1.9.4.md | 25 + docs/blog/2023-07-16-blazorbootstrap-1.9.5.md | 48 + .../blog/2023-08-13-blazorbootstrap-1.10.0.md | 77 + .../blog/2023-08-29-blazorbootstrap-1.10.1.md | 36 + .../blog/2023-09-15-blazorbootstrap-1.10.2.md | 42 + .../blog/2023-10-15-blazorbootstrap-1.10.3.md | 36 + .../blog/2023-11-18-blazorbootstrap-1.10.4.md | 39 + .../blog/2024-01-01-blazorbootstrap-1.10.5.md | 45 + .../blog/2024-02-04-blazorbootstrap-1.11.0.md | 58 + .../blog/2024-02-04-blazorbootstrap-1.11.1.md | 27 + docs/blog/2024-02-25-blazorbootstrap-2.0.0.md | 34 + docs/blog/2024-02-25-upgrade-to-v2.0.0.md | 28 + docs/blog/2024-03-17-blazorbootstrap-2.1.0.md | 43 + docs/blog/2024-04-14-blazorbootstrap-2.2.0.md | 37 + docs/blog/2024-04-21-blazorbootstrap-2.2.1.md | 27 + docs/blog/authors.yml | 11 + docs/carbon-ad.mdx | 3 + ...01-a-getting-started-webassembly-NET-8.mdx | 217 + ...ing-started-webapp-server-global-NET-8.mdx | 229 + ...tting-started-webapp-auto-global-NET-8.mdx | 293 + ...01-d-getting-started-maui-blazor-NET-8.mdx | 87 + ...02-a-getting-started-webassembly-NET-7.mdx | 237 + .../02-b-getting-started-server-NET-7.mdx | 261 + ...02-c-getting-started-maui-blazor-NET-7.mdx | 94 + ...03-a-getting-started-webassembly-NET-6.mdx | 231 + .../03-b-getting-started-server-NET-6.mdx | 258 + docs/docs/01-getting-started/_category_.json | 4 + docs/docs/02-layout/_category_.json | 4 + .../docs/02-layout/getting-started-server.mdx | 97 + .../02-layout/getting-started-webassembly.mdx | 97 + docs/docs/03-content/_category_.json | 4 + docs/docs/03-content/icons.mdx | 181 + docs/docs/04-forms/_category_.json | 4 + docs/docs/04-forms/autocomplete.mdx | 544 + docs/docs/04-forms/currency-input.mdx | 672 + docs/docs/04-forms/date-input.mdx | 530 + docs/docs/04-forms/number-input.mdx | 476 + docs/docs/04-forms/range-input.mdx | 275 + docs/docs/04-forms/switch.mdx | 164 + docs/docs/04-forms/time-input.mdx | 498 + docs/docs/05-components/_category_.json | 4 + docs/docs/05-components/accordion.mdx | 398 + docs/docs/05-components/alerts.mdx | 131 + docs/docs/05-components/badge.mdx | 230 + docs/docs/05-components/breadcrumb.mdx | 117 + docs/docs/05-components/buttons.mdx | 388 + docs/docs/05-components/callout.mdx | 146 + docs/docs/05-components/card.mdx | 462 + docs/docs/05-components/charts.mdx | 68 + docs/docs/05-components/collapse.mdx | 172 + docs/docs/05-components/confirm-dialog.mdx | 422 + docs/docs/05-components/dropdown.mdx | 776 + docs/docs/05-components/grid.mdx | 3136 +++ docs/docs/05-components/modal.mdx | 534 + docs/docs/05-components/offcanvas.mdx | 428 + docs/docs/05-components/pagination.mdx | 138 + docs/docs/05-components/pdf-viewer.mdx | 123 + docs/docs/05-components/placeholders.mdx | 124 + docs/docs/05-components/preload.mdx | 152 + docs/docs/05-components/progress.mdx | 306 + docs/docs/05-components/ribbon.mdx | 244 + docs/docs/05-components/script-loader.mdx | 76 + docs/docs/05-components/sidebar.mdx | 699 + docs/docs/05-components/sidebar2.mdx | 413 + docs/docs/05-components/sortable-list.mdx | 616 + docs/docs/05-components/spinners.mdx | 215 + docs/docs/05-components/tabs.mdx | 682 + docs/docs/05-components/toasts.mdx | 338 + docs/docs/05-components/tooltips.mdx | 119 + .../06-data-visualization/_category_.json | 4 + docs/docs/06-data-visualization/bar-chart.mdx | 607 + .../06-data-visualization/doughnut-chart.mdx | 537 + .../docs/06-data-visualization/line-chart.mdx | 502 + docs/docs/06-data-visualization/pie-chart.mdx | 550 + docs/docs/07-services/_category_.json | 4 + docs/docs/07-services/modal.mdx | 256 + docs/docusaurus.config.js | 293 + docs/package-lock.json | 22364 ++++++++++++++++ docs/package.json | 44 + docs/sidebars.js | 31 + docs/src/components/HomepageFeatures.js | 61 + .../components/HomepageFeatures.module.css | 11 + docs/src/css/custom.css | 121 + docs/src/js/carbon-ad.js | 47 + docs/src/pages/index.js | 43 + docs/src/pages/index.module.css | 27 + docs/static/.nojekyll | 0 docs/static/CNAME | 1 + docs/static/img/blazorbootstrap.png | Bin 0 -> 10430 bytes docs/static/img/favicon.ico | Bin 0 -> 3626 bytes docs/static/img/logo.svg | 17632 ++++++++++++ docs/static/img/logo/128X128.png | Bin 0 -> 7074 bytes docs/static/img/logo/150X150.png | Bin 0 -> 7926 bytes docs/static/img/logo/16X16.png | Bin 0 -> 673 bytes docs/static/img/logo/180X180.png | Bin 0 -> 9809 bytes docs/static/img/logo/192X192.png | Bin 0 -> 10430 bytes docs/static/img/logo/24X24.png | Bin 0 -> 1088 bytes docs/static/img/logo/256X256.png | Bin 0 -> 14476 bytes docs/static/img/logo/310X310.png | Bin 0 -> 17267 bytes docs/static/img/logo/32X32.png | Bin 0 -> 1513 bytes docs/static/img/logo/48X48.png | Bin 0 -> 2493 bytes docs/static/img/logo/64X64.png | Bin 0 -> 3435 bytes docs/static/img/logo/96X96.png | Bin 0 -> 5130 bytes docs/static/img/logo/logo-color.svg | 1 + docs/static/img/logo/logo-white.svg | 1 + .../img/tutorial/docsVersionDropdown.png | Bin 0 -> 25102 bytes docs/static/img/tutorial/localeDropdown.png | Bin 0 -> 30020 bytes .../static/img/undraw_docusaurus_mountain.svg | 170 + docs/static/img/undraw_docusaurus_react.svg | 169 + docs/static/img/undraw_docusaurus_tree.svg | 1 + docs/yarn.lock | 7905 ++++++ nuget/README.md | 89 + 1036 files changed, 168972 insertions(+) create mode 100644 .gitattributes create mode 100644 .github/FUNDING.yml create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/workflows/publish-docs.yml create mode 100644 .github/workflows/sonar.yml create mode 100644 .github/workflows/static-web-app.yml create mode 100644 .github/workflows/web-app.yml create mode 100644 .gitignore create mode 100644 BlazorBootstrap.Demo.Hosted/Client/App.razor create mode 100644 BlazorBootstrap.Demo.Hosted/Client/BlazorBootstrap.Demo.Hosted.Client.csproj create mode 100644 BlazorBootstrap.Demo.Hosted/Client/Program.cs create mode 100644 BlazorBootstrap.Demo.Hosted/Client/Properties/launchSettings.json create mode 100644 BlazorBootstrap.Demo.Hosted/Client/Usings.cs create mode 100644 BlazorBootstrap.Demo.Hosted/Client/_Imports.razor create mode 100644 BlazorBootstrap.Demo.Hosted/Client/wwwroot/appsettings.json create mode 100644 BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/128X128.png create mode 100644 BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/150X150.png create mode 100644 BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/16X16.png create mode 100644 BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/180X180.png create mode 100644 BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/192X192.png create mode 100644 BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/24X24.png create mode 100644 BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/256X256.png create mode 100644 BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/310X310.png create mode 100644 BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/32X32.png create mode 100644 BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/48X48.png create mode 100644 BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/64X64.png create mode 100644 BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/96X96.png create mode 100644 BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/logo-color.svg create mode 100644 BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/logo-white.svg create mode 100644 BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/logo.svg create mode 100644 BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/placeholder.png create mode 100644 BlazorBootstrap.Demo.Hosted/Client/wwwroot/sample-data/customer/customer.json create mode 100644 BlazorBootstrap.Demo.Hosted/Client/wwwroot/sitemap.xml create mode 100644 BlazorBootstrap.Demo.Hosted/Server/BlazorBootstrap.Demo.Hosted.Server.csproj create mode 100644 BlazorBootstrap.Demo.Hosted/Server/Controllers/WeatherForecastController.cs create mode 100644 BlazorBootstrap.Demo.Hosted/Server/Pages/Error.cshtml create mode 100644 BlazorBootstrap.Demo.Hosted/Server/Pages/Error.cshtml.cs create mode 100644 BlazorBootstrap.Demo.Hosted/Server/Pages/_Host.cshtml create mode 100644 BlazorBootstrap.Demo.Hosted/Server/Program.cs create mode 100644 BlazorBootstrap.Demo.Hosted/Server/Properties/launchSettings.json create mode 100644 BlazorBootstrap.Demo.Hosted/Server/Using.cs create mode 100644 BlazorBootstrap.Demo.Hosted/Server/appsettings.Development.json create mode 100644 BlazorBootstrap.Demo.Hosted/Server/appsettings.json create mode 100644 BlazorBootstrap.Demo.RCL/App.cs create mode 100644 BlazorBootstrap.Demo.RCL/BlazorBootstrap.Demo.RCL.csproj create mode 100644 BlazorBootstrap.Demo.RCL/Components/Layout/EmptyLayout.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Layout/EmptyLayout.razor.css create mode 100644 BlazorBootstrap.Demo.RCL/Components/Layout/MainLayout.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Layout/MainLayout.razor.cs create mode 100644 BlazorBootstrap.Demo.RCL/Components/Layout/MainLayout.razor.css create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/AccordionDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_01_Examples.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_02_Title_with_Icon.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_03_Flush.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_04_Set_Default_Active.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_05_Always_Open.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_06_Show_Hide_Individual_AccordionItems.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_07_Show_Hide_All_AccordionItems.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_08_Events.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/AlertDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/Alert_Demo_01_Examples.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/Alert_Demo_02_Additional_Content.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/Alert_Demo_03_Icons.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/Alert_Demo_04_Dismissing_A.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/Alert_Demo_04_Dismissing_B.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/Alert_Demo_05_Switch_Alert_Type_Dynamically.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Badge/BadgeDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Badge/Badge_Demo_01_Examples.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Badge/Badge_Demo_02_Background_Colors.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Badge/Badge_Demo_03_Pill_Badges.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Badge/Badge_Demo_04_Buttons.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Badge/Badge_Demo_05_Positioned.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Badge/Badge_Demo_06_Generic_Indicator.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Breadcrumb/BreadcrumbDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Breadcrumb/Breadcrumb_Demo_01_Examples.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Breadcrumb/Breadcrumb_Demo_02_Dividers.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Breadcrumb/Breadcrumb_Demo_03_Embedded_SVG.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/ButtonDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_01_Examples.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_02_Button_Tags.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_03_Outline_Buttons.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_04_Sizes_A.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_04_Sizes_B.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_04_Sizes_C.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_05_Disabled_State_A.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_05_Disabled_State_B.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_06_Block_Buttons_A.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_06_Block_Buttons_B.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_06_Block_Buttons_C.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_06_Block_Buttons_D.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_07_Toggle_States_A.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_07_Toggle_States_B.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_08_Loading_Spinner.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_08_Show_Hide_Loading_Spinner.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_09_A_Show_Tooltip.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_09_B_Dynamically_update_the_tooltip_text.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_09_C_Tooltip_Color.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_10_Click_Event.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_11_Double_Click_Event.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_12_Click_Event_With_Args.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_13_Disable_Enable_Dynamically.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Callout/CalloutDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Callout/Callout_Demo_01_Examples.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Callout/Callout_Demo_02_Change_Heading.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Callout/Callout_Demo_03_Large_Text.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Callout/Callout_Demo_04_Hide_Heading.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Card/CardDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_01_Examples.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_02_Content_Types_Body.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_03_Content_Types_Titles_Text_And_Links.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_04_Content_Types_Images.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_05_Content_Types_List_Groups.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_06_Content_Types_Kitchen_Sink.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_07_Header_And_Footer.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_08_Sizing.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_09_Text_Alignment.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_10_Background_And_Color.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_11_Card_Groups.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_12_Card_Groups_With_Footer.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Charts/BarCharts/BarChartDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Charts/BarCharts/BarChart_Demo_01_Examples.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Charts/BarCharts/BarChart_Demo_02_Horizontal_BarChart.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Charts/BarCharts/BarChart_Demo_03_Stacked_BarChart.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Charts/BarCharts/BarChart_Demo_04_Locale.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Charts/BarCharts/BarChart_Demo_05_Stacked_BarChart_with_Datalabels.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Charts/ChartsDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Charts/Charts_Demo_00_Examples.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Charts/DoughnutCharts/DoughnutChartDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Charts/DoughnutCharts/DoughnutChart_Demo_01_Examples.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Charts/DoughnutCharts/DoughnutChart_Demo_02_Datalabels.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Charts/LineCharts/LineChartDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Charts/LineCharts/LineChart_Demo_01_A_Examples.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Charts/LineCharts/LineChart_Demo_01_B_Examples.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Charts/LineCharts/LineChart_Demo_02_Locale.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Charts/LineCharts/LineChart_Demo_03_Dynamically_add_data.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Charts/LineCharts/LineChart_Demo_04_Datalabels.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Charts/PieCharts/PieChartDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Charts/PieCharts/PieChart_Demo_01_Examples.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Charts/PieCharts/PieChart_Demo_02_Datalabels.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Charts/PieCharts/PieChart_Demo_03_Change_Legend_Position.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Charts/Utils_Colors.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Collapse/CollapseDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Collapse/Collapse_Demo_01_Examples.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Collapse/Collapse_Demo_02_Horizontal.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Collapse/Collapse_Demo_03_Events.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialogDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_01_Examples.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_03_Dynamic_Component_As_Confirm_Dialog.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_04_Change_Buttons_Text_And_Color.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_05_Optional_Sizes.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_06_Scrolling_Long_Content_01.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_06_Scrolling_Long_Content_02.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_07_Vertically_Centered_01.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_07_Vertically_Centered_02.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_08_Disable_AutoFocus_Yes_Button.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/EmployeeDemoComponent.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/LongContentDemoComponent.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/DropdownDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_01_Single_Button.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_02_Color.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_03_Split_Button.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_04_A_Sizing.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_04_B_Sizing.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_05_A_Directions_Dropup.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_05_B_Directions_DropupCentered.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_05_C_Directions_Dropend.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_05_D_Directions_Dropstart.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_06_Active.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_07_A_Disabled.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_07_B_Disabled.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_08_Menu_Position.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_09_Header.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_10_Dividers.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_11_Text.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_12_Forms.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_13_AutoClose.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_14_Methods.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_15_Events.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoCompleteDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_01_A_Client_Side_Filtering.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_01_B_Client_Side_Filtering_With_StringComparision.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_02_Server_Side_Filtering.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_03_Set_Default_Value.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_04_Validations.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_05_A_Disable.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_05_B_Disable.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_06_Sizing.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInputDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_01_Basic_Usage.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_02_Show_Currency_Symbols_for_the_Different_Locales.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_03_Hide_Currency_Symbol.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_04_Using_FractionDigits_and_IntegerDigits.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_05_Parentheses_Instead_of_Appending_A_Minus_Sign.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_06_Generic_Type.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_07_Enable_Min_Max.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_08_Text_Alignment.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_09_Allow_Negative_Numbers.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_10_A_Disable_Number_Input.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_10_B_Disable_Number_Input.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_11_Validations.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_12_Decimals.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_13_Events_Value_Changed.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInputDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_01_Basic_Usage.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_02_Generic_Type.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_03_Max_Min.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_04_A_Disable_Date_Input.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_04_B_Disable_Date_Input.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_05_Validations.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_06_Events_Value_Changed.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_07_Restrict_The_Date_Field_Based_On_The_Entry_In_Another_Date_Field.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInputDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_01_Basic_Usage.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_02_Generic_Type.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_03_Enable_Min_Max.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_04_Step.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_05_Text_Alignment.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_06_Allow_Negative_Numbers.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_07_A_Disable_Number_Input.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_07_B_Disable_Number_Input.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_08_Validations.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_09_Events_Value_Changed.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInputDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_01_Basic_Usage_A.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_01_Basic_Usage_B.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_02_Disabled_A.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_02_Disabled_B.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_03_Min_Max.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_04_Step.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_05_Decimals.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_06_Tick_Marks.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/SwitchDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/Switch_Demo_01_Basic_Usage.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/Switch_Demo_02_A_Disable.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/Switch_Demo_02_B_Disable.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/Switch_Demo_03_Reverse.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/Switch_Demo_04_Events_Value_Changed.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/Switch_Demo_05_Form.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInputDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_01_Basic_Usage.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_02_Generic_Type.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_03_Max_Min.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_04_A_Disable.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_04_B_Disable.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_05_Validations.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_06_Events_Value_Changed.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_07_Restrict_The_Time_Field_Based_On_The_Entry_In_Another_Time_Field.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/GettingStarted/GettingStartedDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/GridDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_01_A_Client_Side_Filtering.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_01_B_Client_Side_Filtering_With_StringComparision.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_02_Client_Side_Paging.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_03_Client_Side_Sorting.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_04_Client_Side_Filtering_Paging_And_Sorting.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_05_Set_Default_Filter.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_06_Disable_Specific_Column_Filter.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_06_Increase_Filter_Textbox_Width.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_07_Server_Side_Filtering_Paging_And_Sorting.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_08_Default_Sorting.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_09_Disable_Specific_Column_Sorting.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_10_Header_Text_Alignment.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_11_Grid_Cell_Alignment.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_12_Grid_Cell_Formating.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_13_Grid_Cell_Nowrap.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_15_Empty_Data.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_16_Save_And_Load_Grid_Settings.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_17_A_Data_Parameter_Assign_Collection.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_17_B_Data_Parameter_Update_Collection.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_18_Specify_Custom_Row_Class.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_19_Specify_Custom_Column_Class.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_20_Column_Css_Class.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_21_Specify_Custom_Column_Header.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_22_Selection.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_23_Multiple_Selection.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_24_Disable_Selection.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_25_Dynamic_Page_Size.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_26_Page_Size_Selection.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_27_Header_Row_CSS_Class.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_28_Filters_Row_CSS_Class.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_29_Row_Click.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_30_Row_Double_Click.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_31_Translations.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_32_Fixed_Header_A.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_32_Fixed_Header_B_With_Filters.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_33_Freeze_Column_A_Text_Nowrap.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_33_Freeze_Column_B_Fixed_Header.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_33_Freeze_Column_C_Fixed_Header_With_Filters.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_34_AutoHide_Paging.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Icons/IconDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_01_Examples.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_02_Sizes.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_03_Font_Awesome_Icons.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_04_Colors.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_05_Inline_Text_With_Icon.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_06_A_Link_With_Icon.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_06_B_Link_With_Custom_Icon.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_07_A_Button_With_Icon_And_Text.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_07_B_Button_With_Icon_Only.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_07_C_Button_With_Font_Awesome_Icon.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_09_Tooltip.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_10_Bootstrap_Icons.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Index.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Layout/server/LayoutServerDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Layout/server/Layout_Server_Demo_01.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Layout/webassembly/LayoutWebAssemblyDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Layout/webassembly/Layout_WebAssembly_Demo_01.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Modal/EmployeeDemoComponent1.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Modal/EmployeeDemoComponent2.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Modal/ModalDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_01_Examples.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_02_A_Show_Dynamic_Component.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_02_B_Pass_Event_Callback_to_a_Dynamic_Component.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_02_Static_Backdrop.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_03_Scrolling_Long_Content_A.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_03_Scrolling_Long_Content_B.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_04_Vertically_Centered.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_04_Vertically_Centered_And_Scrollable.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_05_Optional_Sizes.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_06_Fullscreen_Modal.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_07_Events.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/EmployeeDemoComponent1.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/EmployeeDemoComponent2.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/OffcanvasDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_01_Examples.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_02_A_Show_Dynamic_Component.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_02_B_Pass_Event_Callback_to_a_Dynamic_Component.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_03_Placement.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_04_Static_Backdrop.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_05_Sizes_A_Small.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_05_Sizes_B_Large.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_06_Events.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/PaginationDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/Pagination_Demo_01_Examples.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/Pagination_Demo_02_Working_With_Icons.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/Pagination_Demo_03_Disabled_And_Active_States.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/Pagination_Demo_04_Sizing.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/Pagination_Demo_05_Alignment.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/Pagination_Demo_06_Events.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/PdfViewer/PdfViewerDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/PdfViewer/PdfViewer_Demo_01_Examples.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/PdfViewer/PdfViewer_Demo_02_Orientation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/PdfViewer/PdfViewer_Demo_03_Base64String.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Placeholders/PlaceholderDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Placeholders/Placeholder_Demo_01_Examples.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Placeholders/Placeholder_Demo_02_Width.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Placeholders/Placeholder_Demo_03_Color.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Placeholders/Placeholder_Demo_04_Sizing.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Placeholders/Placeholder_Demo_05_Animation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Preload/PreloadDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Preload/Preload_Demo_01_Global_Preload_For_Application_A.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Preload/Preload_Demo_01_Global_Preload_For_Application_B.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Preload/Preload_Demo_02_Loading_Text.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Preload/Preload_Demo_03_Change_Spinner_Color.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Progress/ProgressDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_01_How_It_Works.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_02_Labels.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_03_Set_Width_Programmatically.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_04_Height.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_05_Backgrounds.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_06_Set_Background_Programmatically.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_07_MultipleBars.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_08_Striped.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_09_Animated_Stripes.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_10_Dynamic_Progress.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Ribbon/RibbonDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Ribbon/Ribbon_Demo_01_How_It_Works.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Ribbon/Ribbon_Demo_02_Images.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/ScriptLoader/ScriptLoaderDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/ScriptLoader/ScriptLoader_Demo_01_Examples.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/ScriptLoader/ScriptLoader_Demo_02_Events.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalServiceDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_01_How_It_Works.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_02_Vertically_Centered_Modal.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_03_Size.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_04_Change_Footer_Button_Color_and_Text.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_05_Hide_Footer_Button.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_06_Callback.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_100_Global_Modal_Service_For_Application_01.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_100_Global_Modal_Service_For_Application_02.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/SidebarDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_01_Basic_Usage.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_02_Two_level_navigation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_03_Change_Icons_Color.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_04_Full_layout_with_sidebar.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_05_Toggle_Sidebar_to_Show_Icons_Only.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_06_Show_Badge.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_07_Custom_Brand_Icon.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_08_Show_Image_as_Brand_Logo.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_09_Customize_Sidebar.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_10_Apply_Custom_CSS_Class_to_NavItem.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2Documentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2_Demo_01_Basic_Usage.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2_Demo_02_More_Nested_Levels.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2_Demo_03_Change_Icons_Color.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2_Demo_04_Full_layout_with_sidebar.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2_Demo_07_Custom_Brand_Icon.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2_Demo_08_Show_Image_as_Brand_Logo.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableListDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_00_Setup.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_01_Examples.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_02_Shared_Lists_A.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_02_Shared_Lists_B_Three_Lists.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_03_Cloning.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_04_Disable_Sorting.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_05_Handle.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_06_Disable_Item.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_07_Nested_Sortables.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_08_Dynamic_Data.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_09_Empty_Data.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/SpinnersDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_01_Border_Spinner.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_02_Colors.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_03_Grow_spinner_A.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_03_Grow_spinner_B.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_04_Loading_dots_spinner_A.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_04_Loading_dots_spinner_B.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_05_Alignment_A_Margin.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_05_Alignment_B_Palcement_Flex_01.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_05_Alignment_B_Palcement_Flex_02.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_05_Alignment_C_Palcement_Floats.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_05_Alignment_D_Palcement_Text_align.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_06_Size_A_Border.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_06_Size_B_Grow.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_06_Size_C_Dots.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_07_Visible.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/TabsDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_01_Examples.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_02_Enable_FadeEffect.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_03_Title_with_Icon.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_04_Disable_Tab.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_05_Nav_Style_Pills.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_06_Nav_Style_Underline.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_07_Vertical_A.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_07_Vertical_B_Pills.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_07_Vertical_C_Underline.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_08_Activate_Individual_Tabs.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_09_Events_Order.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_10_Events_Example.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_11_Methods_Set_Active_Tab_OnAfterRender.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_12_Tab_Callback_Event_OnClick.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_13_Dynamic_Tabs.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_14_Remove_Dynamic_Tabs.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/ToastsDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_01_Toast_With_Title.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_02_Toast_Without_Title.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_03_A_Auto_Hide.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_03_B_Auto_Hide_Individual_Messages.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_04_Placement.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_05_StackLength.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_06_Global_Toasts_Service_For_Application_01.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_06_Global_Toasts_Service_For_Application_02.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/TooltipsDocumentation.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_01_Examples.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_02_Disabled_Button_With_Tooltip.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_03_Icon_With_Click_Event.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_04_Dynamically_Update_Tooltip_Text.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_05_Tooltip_With_Navigation_Link.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_06_Colors.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_07_Dynamically_Change_Color.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_08_HTML.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Shared/CarbonAds.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Shared/CarbonAds.razor.cs create mode 100644 BlazorBootstrap.Demo.RCL/Components/Shared/CodeSnippet.cs create mode 100644 BlazorBootstrap.Demo.RCL/Components/Shared/Demo.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Shared/Demo.razor.cs create mode 100644 BlazorBootstrap.Demo.RCL/Components/Shared/Demo.razor.css create mode 100644 BlazorBootstrap.Demo.RCL/Components/Shared/MetaTags.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Shared/MetaTags.razor.cs create mode 100644 BlazorBootstrap.Demo.RCL/Components/Shared/SectionHeading.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Shared/SectionHeading.razor.cs create mode 100644 BlazorBootstrap.Demo.RCL/Components/Shared/Skippy.razor create mode 100644 BlazorBootstrap.Demo.RCL/Components/Shared/Skippy.razor.cs create mode 100644 BlazorBootstrap.Demo.RCL/Components/Shared/Skippy.razor.css create mode 100644 BlazorBootstrap.Demo.RCL/Models/Customer.cs create mode 100644 BlazorBootstrap.Demo.RCL/Models/Customer2.cs create mode 100644 BlazorBootstrap.Demo.RCL/Models/Department.cs create mode 100644 BlazorBootstrap.Demo.RCL/Models/Employee.cs create mode 100644 BlazorBootstrap.Demo.RCL/Models/Employee1.cs create mode 100644 BlazorBootstrap.Demo.RCL/Models/Employee2.cs create mode 100644 BlazorBootstrap.Demo.RCL/Models/Employee3.cs create mode 100644 BlazorBootstrap.Demo.RCL/Models/Employee4.cs create mode 100644 BlazorBootstrap.Demo.RCL/RegisterServices.cs create mode 100644 BlazorBootstrap.Demo.RCL/Services/CustomerService.cs create mode 100644 BlazorBootstrap.Demo.RCL/Services/EmployeeService.cs create mode 100644 BlazorBootstrap.Demo.RCL/Services/ICustomerService.cs create mode 100644 BlazorBootstrap.Demo.RCL/Services/IEmployeeService.cs create mode 100644 BlazorBootstrap.Demo.RCL/Usings.cs create mode 100644 BlazorBootstrap.Demo.RCL/_Imports.razor create mode 100644 BlazorBootstrap.Demo.RCL/wwwroot/css/blazorbootstrap.demo.rcl.css create mode 100644 BlazorBootstrap.Demo.RCL/wwwroot/icons/archive.png create mode 100644 BlazorBootstrap.Demo.RCL/wwwroot/icons/bin.png create mode 100644 BlazorBootstrap.Demo.RCL/wwwroot/icons/calendar.png create mode 100644 BlazorBootstrap.Demo.RCL/wwwroot/icons/cancel-button.png create mode 100644 BlazorBootstrap.Demo.RCL/wwwroot/icons/cancelled.png create mode 100644 BlazorBootstrap.Demo.RCL/wwwroot/icons/folder-add.png create mode 100644 BlazorBootstrap.Demo.RCL/wwwroot/icons/folder-copy.png create mode 100644 BlazorBootstrap.Demo.RCL/wwwroot/icons/folder-delete.png create mode 100644 BlazorBootstrap.Demo.RCL/wwwroot/icons/folder-move.png create mode 100644 BlazorBootstrap.Demo.RCL/wwwroot/icons/folder-rename.png create mode 100644 BlazorBootstrap.Demo.RCL/wwwroot/icons/folder-search.png create mode 100644 BlazorBootstrap.Demo.RCL/wwwroot/icons/folder-sync.png create mode 100644 BlazorBootstrap.Demo.RCL/wwwroot/icons/loading-bar.png create mode 100644 BlazorBootstrap.Demo.RCL/wwwroot/icons/new-email.png create mode 100644 BlazorBootstrap.Demo.RCL/wwwroot/icons/refresh.png create mode 100644 BlazorBootstrap.Demo.RCL/wwwroot/js/blazorbootstrap.demo.rcl.js create mode 100644 BlazorBootstrap.Demo.Server/BlazorBootstrap.Demo.Server.csproj create mode 100644 BlazorBootstrap.Demo.Server/Components/App.razor create mode 100644 BlazorBootstrap.Demo.Server/Components/Routes.razor create mode 100644 BlazorBootstrap.Demo.Server/Components/_Imports.razor create mode 100644 BlazorBootstrap.Demo.Server/Program.cs create mode 100644 BlazorBootstrap.Demo.Server/Properties/launchSettings.json create mode 100644 BlazorBootstrap.Demo.Server/Usings.cs create mode 100644 BlazorBootstrap.Demo.Server/appsettings.Development.json create mode 100644 BlazorBootstrap.Demo.Server/appsettings.json create mode 100644 BlazorBootstrap.Demo.Server/wwwroot/images/logo/128X128.png create mode 100644 BlazorBootstrap.Demo.Server/wwwroot/images/logo/150X150.png create mode 100644 BlazorBootstrap.Demo.Server/wwwroot/images/logo/16X16.png create mode 100644 BlazorBootstrap.Demo.Server/wwwroot/images/logo/180X180.png create mode 100644 BlazorBootstrap.Demo.Server/wwwroot/images/logo/192X192.png create mode 100644 BlazorBootstrap.Demo.Server/wwwroot/images/logo/24X24.png create mode 100644 BlazorBootstrap.Demo.Server/wwwroot/images/logo/256X256.png create mode 100644 BlazorBootstrap.Demo.Server/wwwroot/images/logo/310X310.png create mode 100644 BlazorBootstrap.Demo.Server/wwwroot/images/logo/32X32.png create mode 100644 BlazorBootstrap.Demo.Server/wwwroot/images/logo/48X48.png create mode 100644 BlazorBootstrap.Demo.Server/wwwroot/images/logo/64X64.png create mode 100644 BlazorBootstrap.Demo.Server/wwwroot/images/logo/96X96.png create mode 100644 BlazorBootstrap.Demo.Server/wwwroot/images/logo/logo-color.svg create mode 100644 BlazorBootstrap.Demo.Server/wwwroot/images/logo/logo-white.svg create mode 100644 BlazorBootstrap.Demo.Server/wwwroot/images/logo/logo.svg create mode 100644 BlazorBootstrap.Demo.Server/wwwroot/images/placeholder.png create mode 100644 BlazorBootstrap.Demo.Server/wwwroot/sample-data/customer/customer.json create mode 100644 BlazorBootstrap.Demo.Server/wwwroot/sitemap.xml create mode 100644 BlazorBootstrap.Demo.WebAssembly/App.razor create mode 100644 BlazorBootstrap.Demo.WebAssembly/BlazorBootstrap.Demo.WebAssembly.csproj create mode 100644 BlazorBootstrap.Demo.WebAssembly/Program.cs create mode 100644 BlazorBootstrap.Demo.WebAssembly/Properties/launchSettings.json create mode 100644 BlazorBootstrap.Demo.WebAssembly/Usings.cs create mode 100644 BlazorBootstrap.Demo.WebAssembly/_Imports.razor create mode 100644 BlazorBootstrap.Demo.WebAssembly/wwwroot/appsettings.json create mode 100644 BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/128X128.png create mode 100644 BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/150X150.png create mode 100644 BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/16X16.png create mode 100644 BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/180X180.png create mode 100644 BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/192X192.png create mode 100644 BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/24X24.png create mode 100644 BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/256X256.png create mode 100644 BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/310X310.png create mode 100644 BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/32X32.png create mode 100644 BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/48X48.png create mode 100644 BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/64X64.png create mode 100644 BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/96X96.png create mode 100644 BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/logo-color.svg create mode 100644 BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/logo-white.svg create mode 100644 BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/logo.svg create mode 100644 BlazorBootstrap.Demo.WebAssembly/wwwroot/images/placeholder.png create mode 100644 BlazorBootstrap.Demo.WebAssembly/wwwroot/index.html create mode 100644 BlazorBootstrap.Demo.WebAssembly/wwwroot/sample-data/customer/customer.json create mode 100644 BlazorBootstrap.Demo.WebAssembly/wwwroot/sitemap.xml create mode 100644 BlazorBootstrap.Demo.WebAssembly/wwwroot/staticwebapp.config.json create mode 100644 CODE_OF_CONDUCT.md create mode 100644 CREDITS.md create mode 100644 LICENSE.txt create mode 100644 README.md create mode 100644 blazorbootstrap.sln create mode 100644 blazorbootstrap/BlazorBootstrap.csproj create mode 100644 blazorbootstrap/Components/Accordion/Accordion.razor create mode 100644 blazorbootstrap/Components/Accordion/Accordion.razor.cs create mode 100644 blazorbootstrap/Components/Accordion/AccordionItem.razor create mode 100644 blazorbootstrap/Components/Accordion/AccordionItem.razor.cs create mode 100644 blazorbootstrap/Components/Alert/Alert.razor create mode 100644 blazorbootstrap/Components/Alert/Alert.razor.cs create mode 100644 blazorbootstrap/Components/Badge/Badge.razor create mode 100644 blazorbootstrap/Components/Badge/Badge.razor.cs create mode 100644 blazorbootstrap/Components/Breadcrumb/Breadcrumb.razor create mode 100644 blazorbootstrap/Components/Breadcrumb/Breadcrumb.razor.cs create mode 100644 blazorbootstrap/Components/Button/Button.razor create mode 100644 blazorbootstrap/Components/Button/Button.razor.cs create mode 100644 blazorbootstrap/Components/Callout/Callout.razor create mode 100644 blazorbootstrap/Components/Callout/Callout.razor.cs create mode 100644 blazorbootstrap/Components/Callout/Callout.razor.css create mode 100644 blazorbootstrap/Components/Card/Card.razor create mode 100644 blazorbootstrap/Components/Card/Card.razor.cs create mode 100644 blazorbootstrap/Components/Card/CardBody.razor create mode 100644 blazorbootstrap/Components/Card/CardBody.razor.cs create mode 100644 blazorbootstrap/Components/Card/CardFooter.razor create mode 100644 blazorbootstrap/Components/Card/CardFooter.razor.cs create mode 100644 blazorbootstrap/Components/Card/CardGroup.razor create mode 100644 blazorbootstrap/Components/Card/CardGroup.razor.cs create mode 100644 blazorbootstrap/Components/Card/CardHeader.razor create mode 100644 blazorbootstrap/Components/Card/CardHeader.razor.cs create mode 100644 blazorbootstrap/Components/Card/CardLink.razor create mode 100644 blazorbootstrap/Components/Card/CardLink.razor.cs create mode 100644 blazorbootstrap/Components/Card/CardSubTitle.razor create mode 100644 blazorbootstrap/Components/Card/CardSubTitle.razor.cs create mode 100644 blazorbootstrap/Components/Card/CardText.razor create mode 100644 blazorbootstrap/Components/Card/CardText.razor.cs create mode 100644 blazorbootstrap/Components/Card/CardTitle.razor create mode 100644 blazorbootstrap/Components/Card/CardTitle.razor.cs create mode 100644 blazorbootstrap/Components/Charts/BarChart.razor create mode 100644 blazorbootstrap/Components/Charts/BarChart.razor.cs create mode 100644 blazorbootstrap/Components/Charts/BlazorBootstrapChart.cs create mode 100644 blazorbootstrap/Components/Charts/DoughnutChart.razor create mode 100644 blazorbootstrap/Components/Charts/DoughnutChart.razor.cs create mode 100644 blazorbootstrap/Components/Charts/LineChart.razor create mode 100644 blazorbootstrap/Components/Charts/LineChart.razor.cs create mode 100644 blazorbootstrap/Components/Charts/PieChart.razor create mode 100644 blazorbootstrap/Components/Charts/PieChart.razor.cs create mode 100644 blazorbootstrap/Components/Collapse/Collapse.razor create mode 100644 blazorbootstrap/Components/Collapse/Collapse.razor.cs create mode 100644 blazorbootstrap/Components/ConfirmDialog/ConfirmDialog.razor create mode 100644 blazorbootstrap/Components/ConfirmDialog/ConfirmDialog.razor.cs create mode 100644 blazorbootstrap/Components/Core/BlazorBootstrapComponentBase.cs create mode 100644 blazorbootstrap/Components/Dropdown/Dropdown.razor create mode 100644 blazorbootstrap/Components/Dropdown/Dropdown.razor.cs create mode 100644 blazorbootstrap/Components/Dropdown/DropdownActionButton.razor create mode 100644 blazorbootstrap/Components/Dropdown/DropdownActionButton.razor.cs create mode 100644 blazorbootstrap/Components/Dropdown/DropdownDivider.razor create mode 100644 blazorbootstrap/Components/Dropdown/DropdownDivider.razor.cs create mode 100644 blazorbootstrap/Components/Dropdown/DropdownHeader.razor create mode 100644 blazorbootstrap/Components/Dropdown/DropdownHeader.razor.cs create mode 100644 blazorbootstrap/Components/Dropdown/DropdownItem.razor create mode 100644 blazorbootstrap/Components/Dropdown/DropdownItem.razor.cs create mode 100644 blazorbootstrap/Components/Dropdown/DropdownMenu.razor create mode 100644 blazorbootstrap/Components/Dropdown/DropdownMenu.razor.cs create mode 100644 blazorbootstrap/Components/Dropdown/DropdownToggleButton.razor create mode 100644 blazorbootstrap/Components/Dropdown/DropdownToggleButton.razor.cs create mode 100644 blazorbootstrap/Components/Form/AutoComplete/AutoComplete.razor create mode 100644 blazorbootstrap/Components/Form/AutoComplete/AutoComplete.razor.cs create mode 100644 blazorbootstrap/Components/Form/AutoComplete/AutoComplete.razor.css create mode 100644 blazorbootstrap/Components/Form/CurrencyInput/CurrencyInput.razor create mode 100644 blazorbootstrap/Components/Form/CurrencyInput/CurrencyInput.razor.cs create mode 100644 blazorbootstrap/Components/Form/DateInput/DateInput.razor create mode 100644 blazorbootstrap/Components/Form/DateInput/DateInput.razor.cs create mode 100644 blazorbootstrap/Components/Form/NumberInput/NumberInput.razor create mode 100644 blazorbootstrap/Components/Form/NumberInput/NumberInput.razor.cs create mode 100644 blazorbootstrap/Components/Form/RangeInput/RangeInput.razor create mode 100644 blazorbootstrap/Components/Form/RangeInput/RangeInput.razor.cs create mode 100644 blazorbootstrap/Components/Form/Switch/Switch.razor create mode 100644 blazorbootstrap/Components/Form/Switch/Switch.razor.cs create mode 100644 blazorbootstrap/Components/Form/TimeInput/TimeInput.razor create mode 100644 blazorbootstrap/Components/Form/TimeInput/TimeInput.razor.cs create mode 100644 blazorbootstrap/Components/Grid/FilterOperatorHelper.cs create mode 100644 blazorbootstrap/Components/Grid/Grid.razor create mode 100644 blazorbootstrap/Components/Grid/Grid.razor.cs create mode 100644 blazorbootstrap/Components/Grid/GridColumn.razor create mode 100644 blazorbootstrap/Components/Grid/GridColumn.razor.cs create mode 100644 blazorbootstrap/Components/Grid/GridColumnFilter.razor create mode 100644 blazorbootstrap/Components/Grid/GridColumnFilter.razor.cs create mode 100644 blazorbootstrap/Components/Grid/GridSettings.cs create mode 100644 blazorbootstrap/Components/Icon/Icon.razor create mode 100644 blazorbootstrap/Components/Icon/Icon.razor.cs create mode 100644 blazorbootstrap/Components/Modals/Modal.razor create mode 100644 blazorbootstrap/Components/Modals/Modal.razor.cs create mode 100644 blazorbootstrap/Components/Offcanvas/Offcanvas.razor create mode 100644 blazorbootstrap/Components/Offcanvas/Offcanvas.razor.cs create mode 100644 blazorbootstrap/Components/Pagination/Pagination.razor create mode 100644 blazorbootstrap/Components/Pagination/Pagination.razor.cs create mode 100644 blazorbootstrap/Components/Pagination/PaginationItem.razor create mode 100644 blazorbootstrap/Components/Pagination/PaginationItem.razor.cs create mode 100644 blazorbootstrap/Components/Pagination/PaginationLink.razor create mode 100644 blazorbootstrap/Components/Pagination/PaginationLink.razor.cs create mode 100644 blazorbootstrap/Components/PdfViewer/PdfViewer.razor create mode 100644 blazorbootstrap/Components/PdfViewer/PdfViewer.razor.cs create mode 100644 blazorbootstrap/Components/PdfViewer/PdfViewerJsInterop.cs create mode 100644 blazorbootstrap/Components/Placeholders/Placeholder.razor create mode 100644 blazorbootstrap/Components/Placeholders/Placeholder.razor.cs create mode 100644 blazorbootstrap/Components/Placeholders/PlaceholderContainer.razor create mode 100644 blazorbootstrap/Components/Placeholders/PlaceholderContainer.razor.cs create mode 100644 blazorbootstrap/Components/Preload/Preload.razor create mode 100644 blazorbootstrap/Components/Preload/Preload.razor.cs create mode 100644 blazorbootstrap/Components/Progress/Progress.razor create mode 100644 blazorbootstrap/Components/Progress/Progress.razor.cs create mode 100644 blazorbootstrap/Components/Progress/ProgressBar.razor create mode 100644 blazorbootstrap/Components/Progress/ProgressBar.razor.cs create mode 100644 blazorbootstrap/Components/Ribbon/Ribbon.razor create mode 100644 blazorbootstrap/Components/Ribbon/Ribbon.razor.cs create mode 100644 blazorbootstrap/Components/Ribbon/RibbonGroup.razor create mode 100644 blazorbootstrap/Components/Ribbon/RibbonGroup.razor.cs create mode 100644 blazorbootstrap/Components/Ribbon/RibbonGroup.razor.css create mode 100644 blazorbootstrap/Components/Ribbon/RibbonItem.razor create mode 100644 blazorbootstrap/Components/Ribbon/RibbonItem.razor.cs create mode 100644 blazorbootstrap/Components/Ribbon/RibbonItem.razor.css create mode 100644 blazorbootstrap/Components/Ribbon/RibbonItemGroup.razor create mode 100644 blazorbootstrap/Components/Ribbon/RibbonItemGroup.razor.cs create mode 100644 blazorbootstrap/Components/Ribbon/RibbonItemGroup.razor.css create mode 100644 blazorbootstrap/Components/Ribbon/RibbonTab.razor create mode 100644 blazorbootstrap/Components/Ribbon/RibbonTab.razor.cs create mode 100644 blazorbootstrap/Components/ScriptLoader/ScriptLoader.razor create mode 100644 blazorbootstrap/Components/ScriptLoader/ScriptLoader.razor.cs create mode 100644 blazorbootstrap/Components/Sidebar/Sidebar.razor create mode 100644 blazorbootstrap/Components/Sidebar/Sidebar.razor.cs create mode 100644 blazorbootstrap/Components/Sidebar/Sidebar.razor.css create mode 100644 blazorbootstrap/Components/Sidebar/SidebarItem.razor create mode 100644 blazorbootstrap/Components/Sidebar/SidebarItem.razor.cs create mode 100644 blazorbootstrap/Components/Sidebar/SidebarItem.razor.css create mode 100644 blazorbootstrap/Components/Sidebar/SidebarItemGroup.razor create mode 100644 blazorbootstrap/Components/Sidebar/SidebarItemGroup.razor.cs create mode 100644 blazorbootstrap/Components/Sidebar/SidebarItemGroup.razor.css create mode 100644 blazorbootstrap/Components/Sidebar2/Sidebar2.razor create mode 100644 blazorbootstrap/Components/Sidebar2/Sidebar2.razor.cs create mode 100644 blazorbootstrap/Components/Sidebar2/Sidebar2.razor.css create mode 100644 blazorbootstrap/Components/Sidebar2/Sidebar2Item.razor create mode 100644 blazorbootstrap/Components/Sidebar2/Sidebar2Item.razor.cs create mode 100644 blazorbootstrap/Components/Sidebar2/Sidebar2Item.razor.css create mode 100644 blazorbootstrap/Components/Sidebar2/Sidebar2ItemGroup.razor create mode 100644 blazorbootstrap/Components/Sidebar2/Sidebar2ItemGroup.razor.cs create mode 100644 blazorbootstrap/Components/Sidebar2/Sidebar2ItemGroup.razor.css create mode 100644 blazorbootstrap/Components/SortableList/SortableList.razor create mode 100644 blazorbootstrap/Components/SortableList/SortableList.razor.cs create mode 100644 blazorbootstrap/Components/SortableList/SortableList.razor.css create mode 100644 blazorbootstrap/Components/SortableList/SortableListJsInterop.cs create mode 100644 blazorbootstrap/Components/Spinner/Spinner.razor create mode 100644 blazorbootstrap/Components/Spinner/Spinner.razor.cs create mode 100644 blazorbootstrap/Components/Spinner/Spinner.razor.css create mode 100644 blazorbootstrap/Components/Tabs/Tab.razor create mode 100644 blazorbootstrap/Components/Tabs/Tab.razor.cs create mode 100644 blazorbootstrap/Components/Tabs/Tabs.razor create mode 100644 blazorbootstrap/Components/Tabs/Tabs.razor.cs create mode 100644 blazorbootstrap/Components/Toasts/SimpleToast.razor create mode 100644 blazorbootstrap/Components/Toasts/SimpleToast.razor.cs create mode 100644 blazorbootstrap/Components/Toasts/Toast.razor create mode 100644 blazorbootstrap/Components/Toasts/Toast.razor.cs create mode 100644 blazorbootstrap/Components/Toasts/Toasts.razor create mode 100644 blazorbootstrap/Components/Toasts/Toasts.razor.cs create mode 100644 blazorbootstrap/Components/Tooltip/Tooltip.razor create mode 100644 blazorbootstrap/Components/Tooltip/Tooltip.razor.cs create mode 100644 blazorbootstrap/Config.cs create mode 100644 blazorbootstrap/Constants/BootstrapClass.cs create mode 100644 blazorbootstrap/Enums/Alignment.cs create mode 100644 blazorbootstrap/Enums/AutoCompleteSize.cs create mode 100644 blazorbootstrap/Enums/BackgroundColor.cs create mode 100644 blazorbootstrap/Enums/BadgeIndicatorType.cs create mode 100644 blazorbootstrap/Enums/BadgePlacement.cs create mode 100644 blazorbootstrap/Enums/ButtonType.cs create mode 100644 blazorbootstrap/Enums/ChartType.cs create mode 100644 blazorbootstrap/Enums/CheckboxState.cs create mode 100644 blazorbootstrap/Enums/Color/AlterColor.cs create mode 100644 blazorbootstrap/Enums/Color/BadgeColor.cs create mode 100644 blazorbootstrap/Enums/Color/ButtonColor.cs create mode 100644 blazorbootstrap/Enums/Color/CalloutColor.cs create mode 100644 blazorbootstrap/Enums/Color/CardColor.cs create mode 100644 blazorbootstrap/Enums/Color/IconColor.cs create mode 100644 blazorbootstrap/Enums/Color/LinkColor.cs create mode 100644 blazorbootstrap/Enums/Color/PlaceholderColor.cs create mode 100644 blazorbootstrap/Enums/Color/ProgressColor.cs create mode 100644 blazorbootstrap/Enums/Color/SpinnerColor.cs create mode 100644 blazorbootstrap/Enums/Color/TabColor.cs create mode 100644 blazorbootstrap/Enums/Color/TextColor.cs create mode 100644 blazorbootstrap/Enums/Color/TooltipColor.cs create mode 100644 blazorbootstrap/Enums/DialogSize.cs create mode 100644 blazorbootstrap/Enums/DropdownAutoCloseBehavior.cs create mode 100644 blazorbootstrap/Enums/DropdownDirection.cs create mode 100644 blazorbootstrap/Enums/DropdownMenuPosition.cs create mode 100644 blazorbootstrap/Enums/FilterOperator.cs create mode 100644 blazorbootstrap/Enums/FlexDirection.cs create mode 100644 blazorbootstrap/Enums/FreezeDirection.cs create mode 100644 blazorbootstrap/Enums/GridSelectionMode.cs create mode 100644 blazorbootstrap/Enums/HeadingSize.cs create mode 100644 blazorbootstrap/Enums/IconName.cs create mode 100644 blazorbootstrap/Enums/IconSize.cs create mode 100644 blazorbootstrap/Enums/ModalFullscreen.cs create mode 100644 blazorbootstrap/Enums/ModalSize.cs create mode 100644 blazorbootstrap/Enums/ModalType.cs create mode 100644 blazorbootstrap/Enums/NavStyle.cs create mode 100644 blazorbootstrap/Enums/OffcanvasSize.cs create mode 100644 blazorbootstrap/Enums/Orientation.cs create mode 100644 blazorbootstrap/Enums/PaginationSize.cs create mode 100644 blazorbootstrap/Enums/PlaceholderAnimation.cs create mode 100644 blazorbootstrap/Enums/PlaceholderSize.cs create mode 100644 blazorbootstrap/Enums/PlaceholderWidth.cs create mode 100644 blazorbootstrap/Enums/Placement.cs create mode 100644 blazorbootstrap/Enums/Position.cs create mode 100644 blazorbootstrap/Enums/Priority.cs create mode 100644 blazorbootstrap/Enums/ProgressType.cs create mode 100644 blazorbootstrap/Enums/Size.cs create mode 100644 blazorbootstrap/Enums/SortDirection.cs create mode 100644 blazorbootstrap/Enums/SortableListPullMode.cs create mode 100644 blazorbootstrap/Enums/SortableListPutMode.cs create mode 100644 blazorbootstrap/Enums/SpinnerSize.cs create mode 100644 blazorbootstrap/Enums/SpinnerType.cs create mode 100644 blazorbootstrap/Enums/StringFilterOperator.cs create mode 100644 blazorbootstrap/Enums/Target.cs create mode 100644 blazorbootstrap/Enums/ToastType.cs create mode 100644 blazorbootstrap/Enums/ToastsPlacement.cs create mode 100644 blazorbootstrap/Enums/TooltipPlacement.cs create mode 100644 blazorbootstrap/Enums/Unit.cs create mode 100644 blazorbootstrap/EventArguments/AccordionEventArgs.cs create mode 100644 blazorbootstrap/EventArguments/FilterEventArgs.cs create mode 100644 blazorbootstrap/EventArguments/GridRowEventArgs.cs create mode 100644 blazorbootstrap/EventArguments/PdfViewerEventArgs.cs create mode 100644 blazorbootstrap/EventArguments/Ribbon/RibbonEventArgs.cs create mode 100644 blazorbootstrap/EventArguments/Ribbon/RibbonItemEventArgs.cs create mode 100644 blazorbootstrap/EventArguments/Ribbon/RibbonTabEventArgs.cs create mode 100644 blazorbootstrap/EventArguments/SortableListEventArgs.cs create mode 100644 blazorbootstrap/EventArguments/Tabs/TabEventArgs.cs create mode 100644 blazorbootstrap/EventArguments/Tabs/TabsEventArgs.cs create mode 100644 blazorbootstrap/EventArguments/ToastEventArgs.cs create mode 100644 blazorbootstrap/Extensions/ColorExtensions.cs create mode 100644 blazorbootstrap/Extensions/EnumExtensions.cs create mode 100644 blazorbootstrap/Extensions/ExpressionExtensions.cs create mode 100644 blazorbootstrap/Extensions/NavLinkExtensions.cs create mode 100644 blazorbootstrap/Extensions/TypeExtensions.cs create mode 100644 blazorbootstrap/Models/AutoCompleteDataProviderDelegate.cs create mode 100644 blazorbootstrap/Models/AutoCompleteDataProviderRequest.cs create mode 100644 blazorbootstrap/Models/AutoCompleteDataProviderResult.cs create mode 100644 blazorbootstrap/Models/BreadcrumbItem.cs create mode 100644 blazorbootstrap/Models/Charts/ChartData.cs create mode 100644 blazorbootstrap/Models/Charts/ChartDataset/BarChartDataset.cs create mode 100644 blazorbootstrap/Models/Charts/ChartDataset/BarChartDatasetData.cs create mode 100644 blazorbootstrap/Models/Charts/ChartDataset/BubbleChartDataset.cs create mode 100644 blazorbootstrap/Models/Charts/ChartDataset/ChartDataset.cs create mode 100644 blazorbootstrap/Models/Charts/ChartDataset/ChartDatasetData.cs create mode 100644 blazorbootstrap/Models/Charts/ChartDataset/DoughnutChartDataset.cs create mode 100644 blazorbootstrap/Models/Charts/ChartDataset/DoughnutChartDatasetData.cs create mode 100644 blazorbootstrap/Models/Charts/ChartDataset/LineChartDataset.cs create mode 100644 blazorbootstrap/Models/Charts/ChartDataset/LineChartDatasetData.cs create mode 100644 blazorbootstrap/Models/Charts/ChartDataset/PieChartDataset.cs create mode 100644 blazorbootstrap/Models/Charts/ChartDataset/PieChartDatasetData.cs create mode 100644 blazorbootstrap/Models/Charts/ChartDataset/PolarAreaChartDataset.cs create mode 100644 blazorbootstrap/Models/Charts/ChartDataset/RadarChartDataset.cs create mode 100644 blazorbootstrap/Models/Charts/ChartLabel.cs create mode 100644 blazorbootstrap/Models/Charts/ChartOptions/BarChartOptions.cs create mode 100644 blazorbootstrap/Models/Charts/ChartOptions/ChartOptions.cs create mode 100644 blazorbootstrap/Models/Charts/ChartOptions/DoughnutChartOptions.cs create mode 100644 blazorbootstrap/Models/Charts/ChartOptions/LineChartOptions.cs create mode 100644 blazorbootstrap/Models/Charts/ChartOptions/PieChartOptions.cs create mode 100644 blazorbootstrap/Models/Charts/ChartPlugins/BarChartPlugins.cs create mode 100644 blazorbootstrap/Models/Charts/ChartPlugins/ChartPlugins.cs create mode 100644 blazorbootstrap/Models/Charts/ChartPlugins/DoughnutChartPlugins.cs create mode 100644 blazorbootstrap/Models/Charts/ChartPlugins/LineChartPlugins.cs create mode 100644 blazorbootstrap/Models/Charts/ChartPlugins/PieChartPlugins.cs create mode 100644 blazorbootstrap/Models/Charts/ChartRGB.cs create mode 100644 blazorbootstrap/Models/Charts/ChartRGBA.cs create mode 100644 blazorbootstrap/Models/ConfirmDialogOptions.cs create mode 100644 blazorbootstrap/Models/Constants.cs create mode 100644 blazorbootstrap/Models/CurrencyFormatOptions.cs create mode 100644 blazorbootstrap/Models/FilterItem.cs create mode 100644 blazorbootstrap/Models/FilterOperatorInfo.cs create mode 100644 blazorbootstrap/Models/GridDataProviderDelegate.cs create mode 100644 blazorbootstrap/Models/GridDataProviderRequest.cs create mode 100644 blazorbootstrap/Models/GridDataProviderResult.cs create mode 100644 blazorbootstrap/Models/GridFiltersTranslationDelegate.cs create mode 100644 blazorbootstrap/Models/GridSettingsProviderDelegate.cs create mode 100644 blazorbootstrap/Models/GridState.cs create mode 100644 blazorbootstrap/Models/ModalOption.cs create mode 100644 blazorbootstrap/Models/NavItem.cs create mode 100644 blazorbootstrap/Models/PdfViewerModel.cs create mode 100644 blazorbootstrap/Models/Sidebar2DataProviderDelegate.cs create mode 100644 blazorbootstrap/Models/Sidebar2DataProviderRequest.cs create mode 100644 blazorbootstrap/Models/Sidebar2DataProviderResult.cs create mode 100644 blazorbootstrap/Models/SidebarDataProviderDelegate.cs create mode 100644 blazorbootstrap/Models/SidebarDataProviderRequest.cs create mode 100644 blazorbootstrap/Models/SidebarDataProviderResult.cs create mode 100644 blazorbootstrap/Models/SortingItem.cs create mode 100644 blazorbootstrap/Models/SpinnerCircle.cs create mode 100644 blazorbootstrap/Models/TickMark.cs create mode 100644 blazorbootstrap/Models/ToastMessage.cs create mode 100644 blazorbootstrap/Services/BreadcrumbService.cs create mode 100644 blazorbootstrap/Services/ModalService.cs create mode 100644 blazorbootstrap/Services/PreloadService.cs create mode 100644 blazorbootstrap/Services/ToastService.cs create mode 100644 blazorbootstrap/Usings.cs create mode 100644 blazorbootstrap/Utilities/BootstrapIconProvider.cs create mode 100644 blazorbootstrap/Utilities/ColorBuilder.cs create mode 100644 blazorbootstrap/Utilities/CssClassBuilder.cs create mode 100644 blazorbootstrap/Utilities/CssStyleBuilder.cs create mode 100644 blazorbootstrap/Utilities/IdGenerator.cs create mode 100644 blazorbootstrap/_Imports.razor create mode 100644 blazorbootstrap/wwwroot/blazor.bootstrap.css create mode 100644 blazorbootstrap/wwwroot/blazor.bootstrap.js create mode 100644 blazorbootstrap/wwwroot/blazor.bootstrap.pdf.js create mode 100644 blazorbootstrap/wwwroot/blazor.bootstrap.sortable-list.js create mode 100644 blazorbootstrap/wwwroot/icon/128X128.png create mode 100644 blazorbootstrap/wwwroot/pdfjs-4.0.379.min.mjs create mode 100644 blazorbootstrap/wwwroot/pdfjs-4.0.379.worker.min.mjs create mode 100644 docs/.gitignore create mode 100644 docs/README.md create mode 100644 docs/babel.config.js create mode 100644 docs/blog/2021-11-23-blazorbootstrap-0.0.1.md create mode 100644 docs/blog/2021-11-27-blazorbootstrap-0.0.2.md create mode 100644 docs/blog/2021-12-08-blazorbootstrap-0.0.3.md create mode 100644 docs/blog/2021-12-12-blazorbootstrap-0.0.4.md create mode 100644 docs/blog/2021-12-20-blazorbootstrap-0.1.0.md create mode 100644 docs/blog/2021-12-21-blazorbootstrap-0.1.1.md create mode 100644 docs/blog/2022-01-15-blazorbootstrap-0.2.0.md create mode 100644 docs/blog/2022-02-27-blazorbootstrap-0.2.1.md create mode 100644 docs/blog/2022-03-15-blazorbootstrap-0.2.2.md create mode 100644 docs/blog/2022-04-30-blazorbootstrap-0.2.3.md create mode 100644 docs/blog/2022-06-19-blazorbootstrap-0.2.4.md create mode 100644 docs/blog/2022-07-28-blazorbootstrap-0.2.5.md create mode 100644 docs/blog/2022-08-13-blazorbootstrap-0.2.6.md create mode 100644 docs/blog/2022-08-31-blazorbootstrap-0.3.0.md create mode 100644 docs/blog/2022-09-04-blazorbootstrap-0.4.0.md create mode 100644 docs/blog/2022-09-12-blazorbootstrap-0.4.1.md create mode 100644 docs/blog/2022-09-17-blazorbootstrap-0.4.2.md create mode 100644 docs/blog/2022-10-16-blazorbootstrap-0.5.0.md create mode 100644 docs/blog/2022-10-22-blazorbootstrap-0.5.1.md create mode 100644 docs/blog/2022-10-30-blazorbootstrap-0.6.0.md create mode 100644 docs/blog/2022-11-18-blazorbootstrap-1.0.0.md create mode 100644 docs/blog/2022-11-22-blazorbootstrap-1.0.1.md create mode 100644 docs/blog/2022-11-28-blazorbootstrap-1.1.0.md create mode 100644 docs/blog/2022-12-12-blazorbootstrap-1.2.0.md create mode 100644 docs/blog/2022-12-15-blazorbootstrap-1.3.0.md create mode 100644 docs/blog/2022-12-18-blazorbootstrap-1.3.1.md create mode 100644 docs/blog/2023-01-15-blazorbootstrap-1.4.0.md create mode 100644 docs/blog/2023-01-23-blazorbootstrap-1.4.1.md create mode 100644 docs/blog/2023-01-30-blazorbootstrap-1.4.2.md create mode 100644 docs/blog/2023-02-07-blazorbootstrap-1.4.3.md create mode 100644 docs/blog/2023-02-10-blazorbootstrap-1.4.4.md create mode 100644 docs/blog/2023-02-23-blazorbootstrap-1.4.5.md create mode 100644 docs/blog/2023-03-05-blazorbootstrap-1.5.0.md create mode 100644 docs/blog/2023-03-12-blazorbootstrap-1.6.0.md create mode 100644 docs/blog/2023-04-10-blazorbootstrap-1.7.0.md create mode 100644 docs/blog/2023-04-19-blazorbootstrap-1.7.1.md create mode 100644 docs/blog/2023-04-24-blazorbootstrap-1.7.2.md create mode 100644 docs/blog/2023-04-29-blazorbootstrap-1.7.3.md create mode 100644 docs/blog/2023-05-28-blazorbootstrap-1.8.0.md create mode 100644 docs/blog/2023-05-31-blazorbootstrap-1.8.1.md create mode 100644 docs/blog/2023-06-11-blazorbootstrap-1.8.2.md create mode 100644 docs/blog/2023-06-16-blazorbootstrap-1.8.3.md create mode 100644 docs/blog/2023-06-30-blazorbootstrap-1.9.0.md create mode 100644 docs/blog/2023-06-31-blazorbootstrap-1.9.1.md create mode 100644 docs/blog/2023-07-01-blazorbootstrap-1.9.2.md create mode 100644 docs/blog/2023-07-04-blazorbootstrap-1.9.3.md create mode 100644 docs/blog/2023-07-05-blazorbootstrap-1.9.4.md create mode 100644 docs/blog/2023-07-16-blazorbootstrap-1.9.5.md create mode 100644 docs/blog/2023-08-13-blazorbootstrap-1.10.0.md create mode 100644 docs/blog/2023-08-29-blazorbootstrap-1.10.1.md create mode 100644 docs/blog/2023-09-15-blazorbootstrap-1.10.2.md create mode 100644 docs/blog/2023-10-15-blazorbootstrap-1.10.3.md create mode 100644 docs/blog/2023-11-18-blazorbootstrap-1.10.4.md create mode 100644 docs/blog/2024-01-01-blazorbootstrap-1.10.5.md create mode 100644 docs/blog/2024-02-04-blazorbootstrap-1.11.0.md create mode 100644 docs/blog/2024-02-04-blazorbootstrap-1.11.1.md create mode 100644 docs/blog/2024-02-25-blazorbootstrap-2.0.0.md create mode 100644 docs/blog/2024-02-25-upgrade-to-v2.0.0.md create mode 100644 docs/blog/2024-03-17-blazorbootstrap-2.1.0.md create mode 100644 docs/blog/2024-04-14-blazorbootstrap-2.2.0.md create mode 100644 docs/blog/2024-04-21-blazorbootstrap-2.2.1.md create mode 100644 docs/blog/authors.yml create mode 100644 docs/carbon-ad.mdx create mode 100644 docs/docs/01-getting-started/01-a-getting-started-webassembly-NET-8.mdx create mode 100644 docs/docs/01-getting-started/01-b-getting-started-webapp-server-global-NET-8.mdx create mode 100644 docs/docs/01-getting-started/01-c-getting-started-webapp-auto-global-NET-8.mdx create mode 100644 docs/docs/01-getting-started/01-d-getting-started-maui-blazor-NET-8.mdx create mode 100644 docs/docs/01-getting-started/02-a-getting-started-webassembly-NET-7.mdx create mode 100644 docs/docs/01-getting-started/02-b-getting-started-server-NET-7.mdx create mode 100644 docs/docs/01-getting-started/02-c-getting-started-maui-blazor-NET-7.mdx create mode 100644 docs/docs/01-getting-started/03-a-getting-started-webassembly-NET-6.mdx create mode 100644 docs/docs/01-getting-started/03-b-getting-started-server-NET-6.mdx create mode 100644 docs/docs/01-getting-started/_category_.json create mode 100644 docs/docs/02-layout/_category_.json create mode 100644 docs/docs/02-layout/getting-started-server.mdx create mode 100644 docs/docs/02-layout/getting-started-webassembly.mdx create mode 100644 docs/docs/03-content/_category_.json create mode 100644 docs/docs/03-content/icons.mdx create mode 100644 docs/docs/04-forms/_category_.json create mode 100644 docs/docs/04-forms/autocomplete.mdx create mode 100644 docs/docs/04-forms/currency-input.mdx create mode 100644 docs/docs/04-forms/date-input.mdx create mode 100644 docs/docs/04-forms/number-input.mdx create mode 100644 docs/docs/04-forms/range-input.mdx create mode 100644 docs/docs/04-forms/switch.mdx create mode 100644 docs/docs/04-forms/time-input.mdx create mode 100644 docs/docs/05-components/_category_.json create mode 100644 docs/docs/05-components/accordion.mdx create mode 100644 docs/docs/05-components/alerts.mdx create mode 100644 docs/docs/05-components/badge.mdx create mode 100644 docs/docs/05-components/breadcrumb.mdx create mode 100644 docs/docs/05-components/buttons.mdx create mode 100644 docs/docs/05-components/callout.mdx create mode 100644 docs/docs/05-components/card.mdx create mode 100644 docs/docs/05-components/charts.mdx create mode 100644 docs/docs/05-components/collapse.mdx create mode 100644 docs/docs/05-components/confirm-dialog.mdx create mode 100644 docs/docs/05-components/dropdown.mdx create mode 100644 docs/docs/05-components/grid.mdx create mode 100644 docs/docs/05-components/modal.mdx create mode 100644 docs/docs/05-components/offcanvas.mdx create mode 100644 docs/docs/05-components/pagination.mdx create mode 100644 docs/docs/05-components/pdf-viewer.mdx create mode 100644 docs/docs/05-components/placeholders.mdx create mode 100644 docs/docs/05-components/preload.mdx create mode 100644 docs/docs/05-components/progress.mdx create mode 100644 docs/docs/05-components/ribbon.mdx create mode 100644 docs/docs/05-components/script-loader.mdx create mode 100644 docs/docs/05-components/sidebar.mdx create mode 100644 docs/docs/05-components/sidebar2.mdx create mode 100644 docs/docs/05-components/sortable-list.mdx create mode 100644 docs/docs/05-components/spinners.mdx create mode 100644 docs/docs/05-components/tabs.mdx create mode 100644 docs/docs/05-components/toasts.mdx create mode 100644 docs/docs/05-components/tooltips.mdx create mode 100644 docs/docs/06-data-visualization/_category_.json create mode 100644 docs/docs/06-data-visualization/bar-chart.mdx create mode 100644 docs/docs/06-data-visualization/doughnut-chart.mdx create mode 100644 docs/docs/06-data-visualization/line-chart.mdx create mode 100644 docs/docs/06-data-visualization/pie-chart.mdx create mode 100644 docs/docs/07-services/_category_.json create mode 100644 docs/docs/07-services/modal.mdx create mode 100644 docs/docusaurus.config.js create mode 100644 docs/package-lock.json create mode 100644 docs/package.json create mode 100644 docs/sidebars.js create mode 100644 docs/src/components/HomepageFeatures.js create mode 100644 docs/src/components/HomepageFeatures.module.css create mode 100644 docs/src/css/custom.css create mode 100644 docs/src/js/carbon-ad.js create mode 100644 docs/src/pages/index.js create mode 100644 docs/src/pages/index.module.css create mode 100644 docs/static/.nojekyll create mode 100644 docs/static/CNAME create mode 100644 docs/static/img/blazorbootstrap.png create mode 100644 docs/static/img/favicon.ico create mode 100644 docs/static/img/logo.svg create mode 100644 docs/static/img/logo/128X128.png create mode 100644 docs/static/img/logo/150X150.png create mode 100644 docs/static/img/logo/16X16.png create mode 100644 docs/static/img/logo/180X180.png create mode 100644 docs/static/img/logo/192X192.png create mode 100644 docs/static/img/logo/24X24.png create mode 100644 docs/static/img/logo/256X256.png create mode 100644 docs/static/img/logo/310X310.png create mode 100644 docs/static/img/logo/32X32.png create mode 100644 docs/static/img/logo/48X48.png create mode 100644 docs/static/img/logo/64X64.png create mode 100644 docs/static/img/logo/96X96.png create mode 100644 docs/static/img/logo/logo-color.svg create mode 100644 docs/static/img/logo/logo-white.svg create mode 100644 docs/static/img/tutorial/docsVersionDropdown.png create mode 100644 docs/static/img/tutorial/localeDropdown.png create mode 100644 docs/static/img/undraw_docusaurus_mountain.svg create mode 100644 docs/static/img/undraw_docusaurus_react.svg create mode 100644 docs/static/img/undraw_docusaurus_tree.svg create mode 100644 docs/yarn.lock create mode 100644 nuget/README.md diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..9b8dd82f9 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,66 @@ +############################################################################### +# Set default behavior to automatically normalize line endings. +############################################################################### +* text=auto + +############################################################################### +# Set default behavior for command prompt diff. +# +# This is need for earlier builds of msysgit that does not have it on by +# default for csharp files. +# Note: This is only used by command line +############################################################################### +#*.cs diff=csharp + +############################################################################### +# Set the merge driver for project and solution files +# +# Merging from the command prompt will add diff markers to the files if there +# are conflicts (Merging from VS is not affected by the settings below, in VS +# the diff markers are never inserted). Diff markers may cause the following +# file extensions to fail to load in VS. An alternative would be to treat +# these files as binary and thus will always conflict and require user +# intervention with every merge. To do so, just uncomment the entries below +############################################################################### +#*.sln merge=binary +#*.csproj merge=binary +#*.vbproj merge=binary +#*.vcxproj merge=binary +#*.vcproj merge=binary +#*.dbproj merge=binary +#*.fsproj merge=binary +#*.lsproj merge=binary +#*.wixproj merge=binary +#*.modelproj merge=binary +#*.sqlproj merge=binary +#*.wwaproj merge=binary + +############################################################################### +# behavior for image files +# +# image files are treated as binary by default. +############################################################################### +#*.jpg binary +#*.png binary +#*.gif binary + +############################################################################### +# diff behavior for common document formats +# +# Convert binary document formats to text before diffing them. This feature +# is only available from the command line. Turn it on by uncommenting the +# entries below. +############################################################################### +#*.doc diff=astextplain +#*.DOC diff=astextplain +#*.docx diff=astextplain +#*.DOCX diff=astextplain +#*.dot diff=astextplain +#*.DOT diff=astextplain +#*.pdf diff=astextplain +#*.PDF diff=astextplain +#*.rtf diff=astextplain +#*.RTF diff=astextplain + +# blazor dlls +*.dll binary \ No newline at end of file diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 000000000..33831feee --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,13 @@ +# These are supported funding model platforms + +github: [gvreddy04] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: BlazorBootstrap +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 000000000..4160c1472 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,50 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Versions (please complete the following information):** + - .NET Version: [e.g. .NET 6, .NET 7, .NET 8] + - BlazorBootstrap: [e.g. 2.0.0, 2.1.0, 2.2.0] + - Blazor WebAssembly / Server: [e.g. WebAssembly, Server] + - Blazor Interactive Render Mode: [e.g. Auto, Server, WebAssembly, None] + - Blazor Interactivity Location: [e.g. Global, Per page/component] + +**Sample code** +Sample code to reproduce the issue. + +**GitHub repo** +GitHub repo with minimal code to reproduce the issue. + +**Desktop (please complete the following information):** + - OS: [e.g. iOS] + - Browser [e.g. chrome, safari] + - Version [e.g. 22] + +**Smartphone (please complete the following information):** + - Device: [e.g. iPhone6] + - OS: [e.g. iOS8.1] + - Browser [e.g. stock browser, safari] + - Version [e.g. 22] + +**Additional context** +Add any other context about the problem here. diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml new file mode 100644 index 000000000..e97220144 --- /dev/null +++ b/.github/workflows/publish-docs.yml @@ -0,0 +1,52 @@ +name: Publish Documentation +on: + # Trigger the workflow on push, + # but only for the main branch + push: + branches: + - main + workflow_dispatch: + inputs: + prod_release: + description: 'Do you want to release to production?' + required: true + default: false + type: boolean +jobs: + Build-Deploy-Documentation: + runs-on: ubuntu-latest + steps: + - name: Check 🛎️ + uses: actions/checkout@v2 + + - name: Install Node 16 + uses: actions/setup-node@v2 + with: + node-version: '16' + - name: Build & Test Documentation + run: | + cd docs + if [ -e package-lock.json ]; then + npm ci + else + npm i + fi + npm run build + # Adding publshing content + - name: Publish Content + if: ${{ inputs.prod_release }} + env: + GIT_USER: ${{ secrets.GIT_USER }} + GIT_PASS: ${{ secrets.GIT_USER_TOKEN }} + run: | + cd docs + git config --global user.name "${{ secrets.GIT_USER }}" + git config --global user.email "${{ secrets.GIT_USER_EMAIL }}" + if [ -e package-lock.json ]; then + npm ci + else + npm i + fi + echo 'docs.blazorbootstrap.com' > CNAME + cat CNAME + npm run deploy diff --git a/.github/workflows/sonar.yml b/.github/workflows/sonar.yml new file mode 100644 index 000000000..077c8ebbb --- /dev/null +++ b/.github/workflows/sonar.yml @@ -0,0 +1,48 @@ +name: SonarCloud + +on: + push: + branches: [ "main" ] + pull_request: + types: [opened, synchronize, reopened] +jobs: + Analysis: + name: Static Code Analysis + runs-on: windows-latest + steps: + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + distribution: 'microsoft' # See 'Supported distributions' for available options + java-version: '17' + - uses: actions/checkout@v2 + with: + fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis + - name: Cache SonarCloud packages + uses: actions/cache@v1 + with: + path: ~\sonar\cache + key: ${{ runner.os }}-sonar + restore-keys: ${{ runner.os }}-sonar + - name: Cache SonarCloud scanner + id: cache-sonar-scanner + uses: actions/cache@v1 + with: + path: .\.sonar\scanner + key: ${{ runner.os }}-sonar-scanner + restore-keys: ${{ runner.os }}-sonar-scanner + - name: Install SonarCloud scanner + if: steps.cache-sonar-scanner.outputs.cache-hit != 'true' + shell: powershell + run: | + New-Item -Path .\.sonar\scanner -ItemType Directory + dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner + - name: Build and analyze + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + shell: powershell + run: | + .\.sonar\scanner\dotnet-sonarscanner begin /k:"vikramlearning.blazorbootstrap" /o:"vikramlearning" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" + dotnet build + .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}" \ No newline at end of file diff --git a/.github/workflows/static-web-app.yml b/.github/workflows/static-web-app.yml new file mode 100644 index 000000000..515688aa6 --- /dev/null +++ b/.github/workflows/static-web-app.yml @@ -0,0 +1,63 @@ +name: Static WebApp (Blazor WebAssembly) + +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened, closed] + branches: + - main + workflow_dispatch: + inputs: + prod_release: + description: 'Do you want to release to production?' + required: true + default: false + type: boolean + +jobs: + build_and_deploy_job: + if: ${{ inputs.prod_release }} || (github.event_name == 'pull_request' && github.event.action != 'closed') + runs-on: ubuntu-latest + name: Build and Deploy Job + steps: + - uses: actions/checkout@v2 + with: + submodules: true + + - name: Setup .NET Core SDK + uses: actions/setup-dotnet@v1 + with: + dotnet-version: '8.0.x' + + - name: Build And Deploy + id: builddeploy + uses: Azure/static-web-apps-deploy@v1 + with: + dotnet-version: '8.0.x' + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_GRAY_WAVE_0E4848710 }} + skip_deploy_on_missing_secrets: true + repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments) + action: "upload" + ###### Repository/Build Configurations - These values can be configured to match your app requirements. ###### + # For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig + app_location: "BlazorBootstrap.Demo.WebAssembly" # App source code path + #api_location: "Api" # Api source code path - optional + #output_location: "build/wwwroot" # Built app content directory - optional + output_location: "wwwroot" # Built app content directory - optional + app_build_command: 'dotnet publish --configuration Release --output build' + ###### End of Repository/Build Configurations ###### + + close_pull_request_job: + if: github.event_name == 'pull_request' && github.event.action == 'closed' + runs-on: ubuntu-latest + name: Close Pull Request Job + steps: + - name: Close Pull Request + id: closepullrequest + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_GRAY_WAVE_0E4848710 }} + skip_deploy_on_missing_secrets: true + action: "close" diff --git a/.github/workflows/web-app.yml b/.github/workflows/web-app.yml new file mode 100644 index 000000000..e41ec7400 --- /dev/null +++ b/.github/workflows/web-app.yml @@ -0,0 +1,61 @@ +name: WebApp (Blazor Server) + +on: + push: + branches: + - main + workflow_dispatch: + inputs: + prod_release: + description: 'Do you want to release to production?' + required: true + default: false + type: boolean + +jobs: + build: + runs-on: windows-latest + + steps: + - uses: actions/checkout@v2 + + - name: Set up .NET 8.0.x + uses: actions/setup-dotnet@v1 + with: + dotnet-version: '8.0.x' + include-prerelease: false + + - name: Build + run: dotnet build ./BlazorBootstrap.Demo.Server/BlazorBootstrap.Demo.Server.csproj --configuration Release + + - name: Publish + run: dotnet publish ./BlazorBootstrap.Demo.Server/BlazorBootstrap.Demo.Server.csproj -c Release -o ${{env.DOTNET_ROOT}}/myapp + + - name: Upload artifact for deployment job + uses: actions/upload-artifact@v2 + with: + name: .net-app + path: ${{env.DOTNET_ROOT}}/myapp + + deploy: + runs-on: windows-latest + if: ${{ inputs.prod_release }} + needs: build + environment: + name: 'Production' + url: ${{ steps.deploy-to-webapp.outputs.webapp-url }} + + steps: + - name: Download artifact from build job + uses: actions/download-artifact@v2 + with: + name: .net-app + + - name: Deploy to Azure Web App + id: deploy-to-webapp + uses: azure/webapps-deploy@v2 + with: + app-name: 'blazorbootstrap' + slot-name: 'Production' + publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_1F484B42E8E9491C82F21EED2A6E2C15 }} + package: . diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..5d91e72ad --- /dev/null +++ b/.gitignore @@ -0,0 +1,365 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Oo]ut/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd +.DS_Store +/.idea/.idea.blazorbootstrap/.idea diff --git a/BlazorBootstrap.Demo.Hosted/Client/App.razor b/BlazorBootstrap.Demo.Hosted/Client/App.razor new file mode 100644 index 000000000..94953bc3e --- /dev/null +++ b/BlazorBootstrap.Demo.Hosted/Client/App.razor @@ -0,0 +1,12 @@ + + + + + + + Not found + +

Sorry, there's nothing at this address.

+
+
+
diff --git a/BlazorBootstrap.Demo.Hosted/Client/BlazorBootstrap.Demo.Hosted.Client.csproj b/BlazorBootstrap.Demo.Hosted/Client/BlazorBootstrap.Demo.Hosted.Client.csproj new file mode 100644 index 000000000..f92bf057a --- /dev/null +++ b/BlazorBootstrap.Demo.Hosted/Client/BlazorBootstrap.Demo.Hosted.Client.csproj @@ -0,0 +1,19 @@ + + + + net7.0 + enable + enable + + + + + + + + + + + + + diff --git a/BlazorBootstrap.Demo.Hosted/Client/Program.cs b/BlazorBootstrap.Demo.Hosted/Client/Program.cs new file mode 100644 index 000000000..ff2e8ae02 --- /dev/null +++ b/BlazorBootstrap.Demo.Hosted/Client/Program.cs @@ -0,0 +1,8 @@ +var builder = WebAssemblyHostBuilder.CreateDefault(args); + +builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); + +builder.Services.AddBlazorBootstrap(); +builder.Services.AddDemoServices(); + +await builder.Build().RunAsync(); diff --git a/BlazorBootstrap.Demo.Hosted/Client/Properties/launchSettings.json b/BlazorBootstrap.Demo.Hosted/Client/Properties/launchSettings.json new file mode 100644 index 000000000..a11e419ed --- /dev/null +++ b/BlazorBootstrap.Demo.Hosted/Client/Properties/launchSettings.json @@ -0,0 +1,30 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:7232", + "sslPort": 44372 + } + }, + "profiles": { + "BlazorBootstrap.Demos": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "applicationUrl": "https://localhost:7020;http://localhost:5127", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/BlazorBootstrap.Demo.Hosted/Client/Usings.cs b/BlazorBootstrap.Demo.Hosted/Client/Usings.cs new file mode 100644 index 000000000..eeb3a44bd --- /dev/null +++ b/BlazorBootstrap.Demo.Hosted/Client/Usings.cs @@ -0,0 +1,2 @@ +global using BlazorBootstrap.Demo.RCL; +global using Microsoft.AspNetCore.Components.WebAssembly.Hosting; diff --git a/BlazorBootstrap.Demo.Hosted/Client/_Imports.razor b/BlazorBootstrap.Demo.Hosted/Client/_Imports.razor new file mode 100644 index 000000000..2dbf7e3e1 --- /dev/null +++ b/BlazorBootstrap.Demo.Hosted/Client/_Imports.razor @@ -0,0 +1,10 @@ +@using System.Net.Http +@using System.Net.Http.Json +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.AspNetCore.Components.WebAssembly.Http +@using Microsoft.JSInterop +@using BlazorBootstrap; +@using BlazorBootstrap.Demo.Hosted.Client diff --git a/BlazorBootstrap.Demo.Hosted/Client/wwwroot/appsettings.json b/BlazorBootstrap.Demo.Hosted/Client/wwwroot/appsettings.json new file mode 100644 index 000000000..879baab77 --- /dev/null +++ b/BlazorBootstrap.Demo.Hosted/Client/wwwroot/appsettings.json @@ -0,0 +1,16 @@ +{ + "version": "2.2.1", + "release": { + "short_description": "Confirm Dialog, Grid Updates, and Demo Projects Upgraded to .NET 8!!!" + }, + "urls": { + "docs": "//docs.blazorbootstrap.com/docs/getting-started/blazor-webassembly", + "blog": "//docs.blazorbootstrap.com/blog", + "github": "//github.com/vikramlearning/blazorbootstrap", + "twitter": "//twitter.com/blazorbootstrap", + "linkedin": "//www.linkedin.com/groups/14161025", + "github_issues": "//github.com/vikramlearning/blazorbootstrap/issues", + "github_discussions": "//github.com/vikramlearning/blazorbootstrap/discussions", + "stackoverflow": "//stackoverflow.com/questions/tagged/blazor-bootstrap" + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/128X128.png b/BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/128X128.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc404fcb6a25dcb4468c6ff787089f846b3e862 GIT binary patch literal 7074 zcmV;T8(rjyP)7%-*ey?7=diClRV-bo_gd!B72t_DD5sFZRE-sQH zRq*?zaRcT`KzKb4znnC^??}CSq9WDwyQW)_Vv$CS8#wp+2m@SHt$!Y*yY!R~&f_8s zaPhVNIG_KAjvF}Vst5yI9IZbZS+?eMRisBF3~+G}0j=rtW%_eJq(F7wv(b^d3N2;z zS{Vh+{B;2GbxuL&XWei81x--)GX|F%A`L+LBq9MS1^iVF)XE=@RKxA^pBzv?WqyEE z&t#DQXrv3M9Ps~uYzfls>Zt=kcn$UYT{!n7jT+ioH9ogLuib#k^05^c|zVSMMn}@?RU9CHiHsll}eQzIlFYl0qdD`Kp$3+;x zF6iAhL)(@~^gfP!fI&ZRM4vhUpX~XsAdPV0XS9VLP&L8;7APZSOEY9c0Qx^#!Pw!pu25t(s6!Mjs9Lp;$UX-=R;gaOO|Pu^AsL%Dbyc0aLrIB?F9VRYKK$t+&NVtR?bh0Ocy=jU-9F40&DrUjwO%x8+GP!+Ax) zrd%q^>AXj2ol?a$Ny+gJPn5shmaToLWJwzAMw%}U{t_}9PeWPll^4musOqNCVFY?p zWU1=-l!jCdtaYz;fC^g0>d~Z}`H9?@J=u5ZW%#TK_^yX7DVO#tr%7}r0!{!AMk2d3 zf#1qmiLw)gD2U|!2AT!@$n37HzRPYwHWv4HXToM(*(ndyjjjaXY5e&Z(jCn0IdRD@ z=(5dwg`OkLe+*jxd0pW96w+{Vyt#HS2aTblLj*cg#X1xkmK4;NNg@>}TLjZl#s52J zLBe)F(0i|-7JfT)lKW70d~g}o=YFXY7y#fC;5kU~_DYZiK$dMXhD-cqT=t1F*X*ob zt4N9Mg?rKE$vxC@I7bf&eitSM5qKK2PG&yN2e!bM%D5LAecAusbG~_*X0K}dOx9}r z>b;(dk%6Qc8F-&z{^hFgWj@ye?_>J+E5|bKpNach)`h{L9z9U+@32`q8#_ zSw{l+F;!u7kiaKx{yn5WR2~bL6X}9Z`4^Ov{TU7*l+79h7^{lYS{@Yvjo4Ar3+)_t>hB;G?ss# z#+430Coh=~k!DQYU9&hCKXz>V!AsCr_C-HC6#YIFGP!EGo}kyK>-5EvZ$BKM1NiF) z<$bbgpYDH7^3@B>bO3E1U(Rqk`hkfKAh`hkXr?$p*l{i)zqmJPs07gWg_85r6ZbVj zWsCp=Jd8?j9C`-uy|?0=B&76(0RyP^`dq3@8;>7DdJgF&0DrtPMPPc;?&<*b�Kc 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 M07*qoM6N<$f<@(i8UO$Q literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/150X150.png b/BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/150X150.png new file mode 100644 index 0000000000000000000000000000000000000000..007f6e095892e6090c7f3aa8312dca1bc5f4c84e GIT binary patch literal 7926 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 literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/16X16.png b/BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/16X16.png new file mode 100644 index 0000000000000000000000000000000000000000..975865786b1cbe5e30dcbfd87e5588b2a3f2f8eb GIT binary patch literal 673 zcmV;S0$%-zP){ilWvQR47z1eqgnF(38}I6sbJ~0@WU*p%-fe^&)~Gir^PktWc~~p;WZA8tAPa zT0zi*hk^k&iP`RE{J&(?SQHflzr5MqnRzq+H;?E)fBY}bCwD)Oo*iz^7`vzK(JEqX zm%k0}j!iU>O3K)$_Kif9_&$*y`Kf|^r`5G1vwnrv`1i`IXZi579 zW+|qXG(*b0B*i+sn<{UkHM~GM8^KYmH^5=A0?fc;DH|s)5*6hc3mru8Fy5>Q5|vS! zG8MFgN$?I_H>he0zP3QLIw)NY!Mae%>GIB6Dcc>Bz?44#j)IqP_|$bRGP*ypXcWOo zFo81SsgbP%3l7E{=M|H{0<&Nv7)RZvXNoMwCx+6bKH9OmcT6sa{r+43sN?vV2YWL% z>>Pk2y#U9sWAE&1e`QH!m754itI|gi&&T)LVE0S?gM03l^n{3=SUbQj@CLkP%k9Gq zu!Nl?+h4}mcBjd5Pax@Pkmw)Ue);<;fLkCLoPrVW9;$d)G3*=gKL=w7$J&N!<|>7d zi_;M!Ml48j2#$?N(pXLgls02vYLWCQh?NHISC@xIRFQFXnf`gHD)91$4IlsGPUj-Nd8dJqkXi!FT00000NkvXX Hu0mjfsn0M; literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/180X180.png b/BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/180X180.png new file mode 100644 index 0000000000000000000000000000000000000000..7a54949c732e318672eb41905a0a5299165a4476 GIT binary patch literal 9809 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

pBJvlzs#?2NcFc#r+} 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 Fe*j6Hy8QqE literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/310X310.png b/BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/310X310.png new file mode 100644 index 0000000000000000000000000000000000000000..af0f803c13ee2c2e3d8102f52d0dc52741c9c86d GIT binary patch literal 17267 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 literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/32X32.png b/BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/32X32.png new file mode 100644 index 0000000000000000000000000000000000000000..86ecffdc832d0c831669d2e95ce73cd7de9e9038 GIT binary patch literal 1513 zcmVJPpX*HRF-VxYG5p=cn;plJftBB1za zw!Ul)49ZAI2Hf|ae&@XBz4ztb%ST(Te|)!x=Q+=L@B93okMo=dLT*3*!;|x5?Qzgb zE-Sanh%Nr|9NXicKI~z9`}q}Msf4hMTLxf%Tx&QX^b^oxqdt3E{TxQq?9FqL&IR5g_>vk@r>oelu}0kG1>2= zrg1{eAk#PnUqlo&5R^!m`V?FWls{>38sFNukPycOSd0{gU9N{u8-Wb#=w`58phTed zrHY*p(*z7p=l}$VaY2--E}5{kc()&3W&-$2L~;0V&nfp_5C_5znx`=QAXpjbA-Am& z&=`KaQ1gO$N6yFqQCJ>ch{i(Em0li2@nSp)tXUc#233d%FzQ>gjN3>CnUOl$kLFJE&XOzmdx_7*3P=`@#0|B0~)<<@rZ$ZzBH&*41+Vi!nhjQe&T*#FC z0z$4?^ShN?qIXe_+R}L?2-I67$1T01fFuK<7wG_xclzU-9M4FvG*Q) zs2Ab`@TeI4dGI3WQnYiMg!({S*5i$fok#{@Aw2!iEi9klPI>!rOytChzEX!Fs9eg!d`{g+N{>b+3za zPsoDpHXrgso1NU{r;y}>^LY-#yia7o@I!hWM8t|D!s9V5$63@+iZLAIbU< z&yv+*4+4>sufL5uVSk3ioQI|&N$ z(eoQPInOLe3O79S?_6i+ok{%L8-V*H|IVOW1v=`=BO}-QRbug@`tk_&1`UPPEd|pQ z`F}I7I-zD#FP4QSZYIeu8TMZW^?^n&l#YuO1cjN&(KKOmu(&0RyT$MK_W`DfdnbRl zb+YHe`{Vg%-jkN7Z|O3ut%2`A2)EJCAx19+Pbt2b{bI;|f5Oi_WIa0B*2l zUa8kA{|dCNpze_bEepy%OCL#UGx0jtL}MAfVCyc1s6 z;=OZ)jcdgiW=psffORr%zsmfYn4uW~ND%2@N92;s|8c<*?7{)CyK7^vY zh9aDF;B9fOxECB*AS);dQ5c+61Pmaak>l8WsXB!ZT|@+$F%f-hd>6xr8G8{ZzA#k# zGJuOiM3$f)a-lzjG^jJ(iFAsYFcj=9P@J;}d9f+Z0#rdJF&pqfRXc8f0l>R>w*VK? zwb@SFGfl;ON=nCvHz5MyavCxYBR>N`D~vY4>(hlzk;AwD@%*>XKLQK@{7FKZq<*~@ P00000NkvXXu0mjfeXZ0W literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/48X48.png b/BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/48X48.png new file mode 100644 index 0000000000000000000000000000000000000000..6b72cc6a62ee7a3ca5a3e710ec35abd98888c157 GIT binary patch literal 2493 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 literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/96X96.png b/BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/96X96.png new file mode 100644 index 0000000000000000000000000000000000000000..d78b76e8e7d69bf52a5e59ad4dfa4ffcee1abfda GIT binary patch literal 5130 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 sDE1 \ No newline at end of file diff --git a/BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/logo-white.svg b/BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/logo-white.svg new file mode 100644 index 000000000..629cd3367 --- /dev/null +++ b/BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/logo-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/logo.svg b/BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/logo.svg new file mode 100644 index 000000000..86d94bf13 --- /dev/null +++ b/BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/logo/logo.svg @@ -0,0 +1,17632 @@ + + + + + + + + + + + + + + + + + + B + + diff --git a/BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/placeholder.png b/BlazorBootstrap.Demo.Hosted/Client/wwwroot/images/placeholder.png new file mode 100644 index 0000000000000000000000000000000000000000..6928765e15125d25db4c4dc0faa36a8514200456 GIT binary patch literal 2680 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 literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.Hosted/Client/wwwroot/sample-data/customer/customer.json b/BlazorBootstrap.Demo.Hosted/Client/wwwroot/sample-data/customer/customer.json new file mode 100644 index 000000000..c7b07bbf2 --- /dev/null +++ b/BlazorBootstrap.Demo.Hosted/Client/wwwroot/sample-data/customer/customer.json @@ -0,0 +1 @@ +[{"customerId":1,"customerName":"Laith Berger","phone":"(379) 882-1444","email":"auctor.velit@protonmail.com","address":"278-7577 Inceptos Ave","postalZip":"5481","country":"Norway"},{"customerId":2,"customerName":"Ivor Burnett","phone":"(551) 710-5413","email":"donec.non@outlook.com","address":"Ap #206-2313 A, Ave","postalZip":"KF91 6RO","country":"Australia"},{"customerId":3,"customerName":"Yasir Hobbs","phone":"(538) 773-6771","email":"et@outlook.com","address":"P.O. Box 209, 6872 Mollis. Av.","postalZip":"56137","country":"Singapore"},{"customerId":4,"customerName":"Rinah Bowman","phone":"(834) 224-3856","email":"elit@protonmail.ca","address":"Ap #657-4008 Nulla Rd.","postalZip":"99566","country":"Philippines"},{"customerId":5,"customerName":"Montana Avery","phone":"(514) 546-4034","email":"tristique.senectus@hotmail.couk","address":"Ap #915-2989 Venenatis Ave","postalZip":"25425-84215","country":"South Africa"},{"customerId":6,"customerName":"Kevyn Smith","phone":"1-152-749-6373","email":"neque@protonmail.ca","address":"431-4752 Neque St.","postalZip":"3697","country":"India"},{"customerId":7,"customerName":"Maite Faulkner","phone":"(466) 210-3875","email":"malesuada@outlook.couk","address":"P.O. Box 254, 3766 Quisque Street","postalZip":"55263","country":"New Zealand"},{"customerId":8,"customerName":"Anne Meadows","phone":"(527) 848-2270","email":"donec.tempus@icloud.ca","address":"Ap #378-2309 Ornare. Av.","postalZip":"19845","country":"Germany"},{"customerId":9,"customerName":"Kamal Bush","phone":"(937) 745-2871","email":"nec.luctus@protonmail.org","address":"7491 Egestas. Rd.","postalZip":"13-185","country":"Chile"},{"customerId":10,"customerName":"Tasha Gill","phone":"(755) 756-9385","email":"justo.faucibus@hotmail.couk","address":"487-2374 Sed Street","postalZip":"800173","country":"Mexico"},{"customerId":11,"customerName":"Vernon Clark","phone":"(630) 344-8774","email":"velit.cras@protonmail.net","address":"1885 Proin Road","postalZip":"414742","country":"Colombia"},{"customerId":12,"customerName":"Kibo Shelton","phone":"(278) 258-8502","email":"ante.maecenas@yahoo.com","address":"P.O. Box 336, 5076 Fringilla St.","postalZip":"87-381","country":"Turkey"},{"customerId":13,"customerName":"Shelly Vazquez","phone":"(643) 452-4588","email":"lacus.nulla@outlook.ca","address":"602-8739 Mauris St.","postalZip":"56-22","country":"France"},{"customerId":14,"customerName":"Hilary Poole","phone":"(937) 972-7551","email":"suspendisse.sagittis@hotmail.ca","address":"875-9021 Sed Av.","postalZip":"66320","country":"United States"},{"customerId":15,"customerName":"Tarik England","phone":"(554) 498-3672","email":"nec.metus.facilisis@hotmail.com","address":"P.O. Box 316, 3800 Pellentesque Rd.","postalZip":"75-22","country":"Italy"},{"customerId":16,"customerName":"Hamilton Hayden","phone":"1-882-568-0494","email":"class.aptent.taciti@protonmail.couk","address":"567-8292 Sed Road","postalZip":"52861","country":"Poland"},{"customerId":17,"customerName":"Uriel Barton","phone":"(176) 435-5738","email":"dolor.sit.amet@protonmail.net","address":"882-7144 Arcu. Street","postalZip":"5663-2444","country":"Germany"},{"customerId":18,"customerName":"Craig Richmond","phone":"(927) 236-8054","email":"ut.odio@outlook.com","address":"Ap #571-6322 Tortor Ave","postalZip":"39143","country":"Philippines"},{"customerId":19,"customerName":"Brent Robbins","phone":"(492) 936-5527","email":"interdum@aol.ca","address":"Ap #494-482 Egestas St.","postalZip":"36751","country":"Costa Rica"},{"customerId":20,"customerName":"Chaney Short","phone":"1-733-537-5892","email":"sed@outlook.edu","address":"P.O. Box 567, 8641 Fermentum Avenue","postalZip":"243631","country":"Pakistan"},{"customerId":21,"customerName":"Orlando Chapman","phone":"1-798-564-3871","email":"mauris@hotmail.edu","address":"9021 Sem Av.","postalZip":"8706","country":"Vietnam"},{"customerId":22,"customerName":"Holly Long","phone":"(613) 844-0530","email":"non.nisi@icloud.org","address":"411-5020 At St.","postalZip":"3183-2246","country":"Netherlands"},{"customerId":23,"customerName":"Jane Salas","phone":"1-746-223-2024","email":"odio@google.ca","address":"Ap #842-2591 Consectetuer Avenue","postalZip":"73-48","country":"China"},{"customerId":24,"customerName":"Deirdre Simmons","phone":"1-925-245-4398","email":"sed.turpis.nec@protonmail.ca","address":"Ap #214-2638 Mauris, Avenue","postalZip":"377358","country":"Peru"},{"customerId":25,"customerName":"Sigourney Melendez","phone":"1-147-785-7367","email":"odio.nam@icloud.ca","address":"876-3056 Non, St.","postalZip":"9543-3653","country":"Chile"},{"customerId":26,"customerName":"Zachary Merritt","phone":"1-636-602-5539","email":"semper.et@aol.edu","address":"806 Posuere Street","postalZip":"12467","country":"Norway"},{"customerId":27,"customerName":"Derek Glover","phone":"(150) 931-4838","email":"donec.fringilla@google.couk","address":"Ap #365-6386 Neque Avenue","postalZip":"454395","country":"Canada"},{"customerId":28,"customerName":"Alfonso Rasmussen","phone":"(927) 264-8247","email":"lorem.fringilla@aol.net","address":"Ap #229-4362 Eros St.","postalZip":"3171","country":"Netherlands"},{"customerId":29,"customerName":"Nadine Oneal","phone":"(188) 746-1660","email":"a.odio@google.edu","address":"746-5975 Eu, Avenue","postalZip":"1865","country":"Belgium"},{"customerId":30,"customerName":"Naomi Dejesus","phone":"1-265-639-0296","email":"fames@aol.couk","address":"P.O. Box 290, 9020 Pellentesque St.","postalZip":"897421","country":"Canada"},{"customerId":31,"customerName":"Winter Weber","phone":"(538) 648-2568","email":"faucibus.leo.in@protonmail.org","address":"Ap #725-3539 Dolor Street","postalZip":"40507","country":"Ireland"},{"customerId":32,"customerName":"Jennifer Hurst","phone":"(531) 733-3049","email":"urna.nunc@outlook.couk","address":"P.O. Box 174, 9406 Ante St.","postalZip":"14153","country":"Nigeria"},{"customerId":33,"customerName":"Kevin Guy","phone":"(283) 229-1753","email":"mauris@yahoo.ca","address":"P.O. Box 436, 3613 Ligula. Rd.","postalZip":"523981","country":"Norway"},{"customerId":34,"customerName":"Hakeem Henson","phone":"1-264-857-8861","email":"mus@outlook.com","address":"907-8892 Montes, Rd.","postalZip":"46-846","country":"United Kingdom"},{"customerId":35,"customerName":"Avram Hardin","phone":"1-764-303-7127","email":"vel.pede.blandit@protonmail.org","address":"Ap #328-2448 Velit. Rd.","postalZip":"728900","country":"Germany"},{"customerId":36,"customerName":"Kiayada Bray","phone":"(935) 824-3485","email":"lectus.rutrum@hotmail.edu","address":"580-9599 Mattis St.","postalZip":"4055","country":"Philippines"},{"customerId":37,"customerName":"Elizabeth Cardenas","phone":"1-633-852-7760","email":"hendrerit.id.ante@hotmail.org","address":"Ap #628-1875 Egestas. Rd.","postalZip":"18990","country":"Pakistan"},{"customerId":38,"customerName":"Kimberley Durham","phone":"(746) 731-5318","email":"et@hotmail.org","address":"P.O. Box 469, 7337 Neque Street","postalZip":"4187","country":"Brazil"},{"customerId":39,"customerName":"Arthur Clarke","phone":"(287) 129-2460","email":"egestas@google.org","address":"8458 Vivamus Rd.","postalZip":"1827 JX","country":"Russian Federation"},{"customerId":40,"customerName":"Giacomo Newton","phone":"1-182-675-4805","email":"non.enim.commodo@google.com","address":"Ap #341-8380 Ut Rd.","postalZip":"41715","country":"Vietnam"},{"customerId":41,"customerName":"Amelia Alexander","phone":"1-718-582-4253","email":"non.vestibulum.nec@outlook.ca","address":"413-9679 Cum Avenue","postalZip":"26744","country":"Spain"},{"customerId":42,"customerName":"Stacy Davenport","phone":"1-819-211-8276","email":"risus.donec.egestas@yahoo.org","address":"P.O. Box 415, 2772 Vitae, St.","postalZip":"597735","country":"Germany"},{"customerId":43,"customerName":"Rosalyn Patrick","phone":"1-995-906-7898","email":"vitae@google.com","address":"P.O. Box 693, 5762 Porttitor Rd.","postalZip":"9759 WE","country":"Ukraine"},{"customerId":44,"customerName":"Logan Buckner","phone":"(516) 386-2835","email":"donec.nibh@google.com","address":"Ap #275-1807 Dictum Ave","postalZip":"40233","country":"Canada"},{"customerId":45,"customerName":"Stewart Johnston","phone":"1-967-407-4365","email":"pharetra.felis.eget@hotmail.org","address":"Ap #710-3875 Lectus, St.","postalZip":"55065","country":"Nigeria"},{"customerId":46,"customerName":"Colton Myers","phone":"1-100-736-7463","email":"nam.ligula@aol.com","address":"443-1273 Natoque Rd.","postalZip":"14672","country":"Peru"},{"customerId":47,"customerName":"Sylvester Phillips","phone":"(297) 713-3040","email":"lorem.vehicula@hotmail.org","address":"P.O. Box 642, 9852 Nulla. St.","postalZip":"7660","country":"Nigeria"},{"customerId":48,"customerName":"Deacon Barnes","phone":"(571) 242-4528","email":"gravida.mauris@yahoo.org","address":"334-9465 Amet, Av.","postalZip":"382115","country":"Pakistan"},{"customerId":49,"customerName":"Drew Terrell","phone":"1-715-909-4824","email":"et@icloud.com","address":"Ap #616-7205 Turpis St.","postalZip":"10087","country":"Norway"},{"customerId":50,"customerName":"Britanni Bennett","phone":"1-220-669-3332","email":"turpis@icloud.org","address":"4222 Lobortis Street","postalZip":"6523","country":"Singapore"},{"customerId":51,"customerName":"Desirae Houston","phone":"(726) 847-0251","email":"iaculis@outlook.couk","address":"P.O. Box 950, 421 Ipsum Road","postalZip":"654802","country":"Canada"},{"customerId":52,"customerName":"Jordan Knight","phone":"1-674-723-2927","email":"dolor.elit@protonmail.edu","address":"P.O. Box 604, 3917 Commodo Rd.","postalZip":"33-746","country":"Sweden"},{"customerId":53,"customerName":"Lucy Newman","phone":"1-795-382-9988","email":"mollis.lectus.pede@protonmail.edu","address":"Ap #457-3018 Non Road","postalZip":"151381","country":"China"},{"customerId":54,"customerName":"Kylan Church","phone":"1-593-716-9158","email":"dictum.eu@protonmail.net","address":"Ap #519-178 Ut Street","postalZip":"83-26","country":"Nigeria"},{"customerId":55,"customerName":"Nevada Howard","phone":"(324) 886-7525","email":"litora@icloud.ca","address":"P.O. Box 215, 2750 Pellentesque St.","postalZip":"12444","country":"Colombia"},{"customerId":56,"customerName":"Kirby Wilder","phone":"1-552-868-5375","email":"ullamcorper.nisl@icloud.org","address":"3404 Iaculis Road","postalZip":"695822","country":"Brazil"},{"customerId":57,"customerName":"Risa Hendrix","phone":"(877) 579-6357","email":"faucibus.lectus@hotmail.org","address":"330-3283 Magnis Rd.","postalZip":"7527 JE","country":"Vietnam"},{"customerId":58,"customerName":"Hu Wong","phone":"1-461-816-4756","email":"per@icloud.org","address":"681-2058 Feugiat. Rd.","postalZip":"51362","country":"Netherlands"},{"customerId":59,"customerName":"Sonya Hughes","phone":"(858) 658-3635","email":"faucibus.lectus.a@hotmail.net","address":"P.O. Box 553, 3124 Aliquam St.","postalZip":"27829","country":"Vietnam"},{"customerId":60,"customerName":"Craig Logan","phone":"(906) 473-4868","email":"tristique@google.ca","address":"P.O. Box 942, 610 Est, Av.","postalZip":"3547","country":"Netherlands"},{"customerId":61,"customerName":"Raja Dorsey","phone":"1-829-181-5111","email":"varius.orci.in@google.org","address":"P.O. Box 566, 8429 Enim. Rd.","postalZip":"4450 HZ","country":"Ireland"},{"customerId":62,"customerName":"Asher Morin","phone":"(221) 262-6862","email":"mauris@google.org","address":"P.O. Box 671, 2035 Vulputate, Rd.","postalZip":"8552","country":"Mexico"},{"customerId":63,"customerName":"Bruce Ferrell","phone":"(820) 342-4472","email":"eu.euismod.ac@protonmail.edu","address":"Ap #767-7889 Sed Av.","postalZip":"11532","country":"Chile"},{"customerId":64,"customerName":"Erasmus Adkins","phone":"(928) 341-5433","email":"enim.nisl@outlook.edu","address":"P.O. Box 951, 5448 Pharetra Avenue","postalZip":"173364","country":"South Africa"},{"customerId":65,"customerName":"TaShya Huber","phone":"(997) 425-5262","email":"erat.vitae@icloud.com","address":"517 Non St.","postalZip":"38416-44863","country":"Indonesia"},{"customerId":66,"customerName":"Tate Blackburn","phone":"1-524-604-6431","email":"dui.suspendisse.ac@protonmail.edu","address":"Ap #570-9373 Sed Street","postalZip":"3377","country":"China"},{"customerId":67,"customerName":"Neve Stewart","phone":"(886) 554-7149","email":"non@yahoo.couk","address":"887 Nullam Road","postalZip":"16823","country":"Sweden"},{"customerId":68,"customerName":"Emerald Workman","phone":"1-358-673-5524","email":"mauris.erat.eget@protonmail.ca","address":"691-5554 Odio Road","postalZip":"47582","country":"Nigeria"},{"customerId":69,"customerName":"Lisandra Roman","phone":"(726) 475-0331","email":"proin@aol.edu","address":"Ap #505-3613 Mauris Rd.","postalZip":"35506","country":"Australia"},{"customerId":70,"customerName":"Dalton Duran","phone":"(478) 837-6585","email":"aenean.euismod@yahoo.edu","address":"4588 Molestie Ave","postalZip":"1653","country":"Vietnam"},{"customerId":71,"customerName":"Victor Mckee","phone":"1-660-287-2856","email":"nam.ligula.elit@protonmail.edu","address":"Ap #536-3369 Non Rd.","postalZip":"62360","country":"Canada"},{"customerId":72,"customerName":"Salvador Robles","phone":"1-935-528-6827","email":"nulla.interdum.curabitur@aol.com","address":"672-4225 Malesuada St.","postalZip":"21618","country":"France"},{"customerId":73,"customerName":"Jerry Gallegos","phone":"(418) 584-9666","email":"et@protonmail.edu","address":"583-642 Lobortis Av.","postalZip":"261152","country":"Brazil"},{"customerId":74,"customerName":"Holmes Elliott","phone":"(829) 533-8718","email":"tellus.suspendisse@outlook.com","address":"P.O. Box 625, 133 Sed Ave","postalZip":"56286","country":"Singapore"},{"customerId":75,"customerName":"Summer O'donnell","phone":"1-775-462-1128","email":"orci@yahoo.ca","address":"P.O. Box 292, 723 Fringilla Avenue","postalZip":"383881","country":"Brazil"},{"customerId":76,"customerName":"Whoopi Ashley","phone":"(444) 234-8486","email":"placerat@yahoo.com","address":"370-7703 Nullam Rd.","postalZip":"7255","country":"South Korea"},{"customerId":77,"customerName":"Brenden Rojas","phone":"(551) 747-6714","email":"euismod.urna@outlook.couk","address":"725-3109 Vel, Av.","postalZip":"33768","country":"Sweden"},{"customerId":78,"customerName":"Cody Valencia","phone":"1-765-411-6783","email":"donec.est@yahoo.net","address":"482-2216 Nunc Rd.","postalZip":"5767","country":"Brazil"},{"customerId":79,"customerName":"Evelyn Young","phone":"(261) 753-5708","email":"non@protonmail.org","address":"108-7247 Non, Av.","postalZip":"2241","country":"Peru"},{"customerId":80,"customerName":"Madeline Gay","phone":"1-777-735-1512","email":"sit.amet@google.com","address":"250-9455 Et Av.","postalZip":"26-969","country":"Sweden"},{"customerId":81,"customerName":"Chloe Buchanan","phone":"1-741-492-5197","email":"lorem@icloud.com","address":"560-7818 Phasellus Street","postalZip":"348619","country":"Brazil"},{"customerId":82,"customerName":"Deirdre Sanchez","phone":"(255) 431-3593","email":"lectus@outlook.ca","address":"167-7082 Pharetra Rd.","postalZip":"84825","country":"France"},{"customerId":83,"customerName":"Patience Ayala","phone":"1-175-835-6043","email":"eu@hotmail.edu","address":"Ap #939-8609 Ullamcorper, Avenue","postalZip":"424592","country":"Netherlands"},{"customerId":84,"customerName":"Raphael Meyers","phone":"1-618-652-5132","email":"diam.luctus@hotmail.edu","address":"897-234 Integer Road","postalZip":"323418","country":"Philippines"},{"customerId":85,"customerName":"Grady Mcconnell","phone":"(415) 838-4695","email":"elementum.at@hotmail.ca","address":"Ap #573-1091 Lobortis Road","postalZip":"9136-2302","country":"India"},{"customerId":86,"customerName":"Forrest Gallagher","phone":"(889) 734-2185","email":"aliquam.adipiscing@hotmail.ca","address":"699-4186 Sed Avenue","postalZip":"2529","country":"Turkey"},{"customerId":87,"customerName":"Vincent Christensen","phone":"(657) 527-7613","email":"sed@protonmail.net","address":"6745 Cursus Avenue","postalZip":"28371","country":"New Zealand"},{"customerId":88,"customerName":"Knox Christensen","phone":"1-644-505-3615","email":"parturient.montes@google.edu","address":"Ap #137-6596 Magna Avenue","postalZip":"30746","country":"Philippines"},{"customerId":89,"customerName":"Bruno Rose","phone":"1-386-544-9221","email":"diam.luctus.lobortis@icloud.ca","address":"Ap #834-6610 Nullam St.","postalZip":"88306-862","country":"Mexico"},{"customerId":90,"customerName":"Ainsley Cardenas","phone":"1-403-423-2787","email":"fringilla.est@outlook.com","address":"Ap #881-2935 Ac Street","postalZip":"66813","country":"Austria"},{"customerId":91,"customerName":"Eve Haley","phone":"(598) 779-1786","email":"etiam.bibendum@google.ca","address":"272-4961 Accumsan Rd.","postalZip":"26918","country":"Norway"},{"customerId":92,"customerName":"Holly Suarez","phone":"1-134-603-2874","email":"curabitur.sed@protonmail.ca","address":"4423 Magnis Street","postalZip":"977634","country":"United States"},{"customerId":93,"customerName":"Kylynn Sanchez","phone":"1-408-582-5546","email":"tincidunt@yahoo.ca","address":"6963 Vel Ave","postalZip":"3581","country":"Netherlands"},{"customerId":94,"customerName":"Unity Joyner","phone":"1-272-884-1422","email":"rhoncus.proin@protonmail.edu","address":"Ap #124-5421 Rhoncus Rd.","postalZip":"23-55","country":"South Africa"},{"customerId":95,"customerName":"Uma Bates","phone":"1-483-533-3821","email":"lorem.ipsum@outlook.ca","address":"Ap #442-8734 Nam St.","postalZip":"1175","country":"Austria"},{"customerId":96,"customerName":"Laura Barrera","phone":"(471) 953-1134","email":"vehicula.aliquet@protonmail.edu","address":"103-2810 Quis, Rd.","postalZip":"611481","country":"Colombia"},{"customerId":97,"customerName":"Maya Floyd","phone":"1-225-552-3173","email":"enim.commodo@outlook.com","address":"P.O. Box 323, 419 Sodales Avenue","postalZip":"78575","country":"Mexico"},{"customerId":98,"customerName":"Keane Bates","phone":"1-763-432-1755","email":"dolor@icloud.org","address":"7976 Lobortis St.","postalZip":"415765","country":"Pakistan"},{"customerId":99,"customerName":"Daniel Oneil","phone":"1-898-887-1438","email":"rutrum@google.org","address":"4147 Blandit. St.","postalZip":"862013","country":"Ireland"},{"customerId":100,"customerName":"Whoopi Kirby","phone":"1-227-963-8934","email":"non.sapien@protonmail.couk","address":"Ap #616-9146 Vitae Street","postalZip":"S2N 3G4","country":"Philippines"},{"customerId":101,"customerName":"Chancellor Schmidt","phone":"1-257-278-1512","email":"elementum.dui@google.ca","address":"709-4368 Eget Avenue","postalZip":"84192","country":"Singapore"},{"customerId":102,"customerName":"Jeanette Mcclain","phone":"(594) 232-4539","email":"interdum.curabitur.dictum@protonmail.couk","address":"1491 Suscipit Rd.","postalZip":"98169","country":"China"},{"customerId":103,"customerName":"Cassady House","phone":"(587) 515-2289","email":"mauris.molestie@protonmail.org","address":"379-2361 Orci. Rd.","postalZip":"58451-626","country":"Germany"},{"customerId":104,"customerName":"Paloma Marks","phone":"1-845-404-6778","email":"donec.non@google.com","address":"3701 Tincidunt, Av.","postalZip":"27812-705","country":"Austria"},{"customerId":105,"customerName":"Mona Ramos","phone":"(626) 558-5848","email":"facilisis.non@hotmail.edu","address":"4240 Et, Avenue","postalZip":"4208","country":"Italy"},{"customerId":106,"customerName":"Charissa Mccray","phone":"(304) 568-2336","email":"in.lobortis.tellus@icloud.couk","address":"Ap #857-2334 Consequat Ave","postalZip":"6545","country":"Colombia"},{"customerId":107,"customerName":"Xander Manning","phone":"1-366-929-4289","email":"libero.mauris@yahoo.net","address":"Ap #856-8433 Sed St.","postalZip":"0843","country":"Vietnam"},{"customerId":108,"customerName":"Alisa Hensley","phone":"(887) 788-9532","email":"cum.sociis@google.net","address":"Ap #214-2529 Tellus Street","postalZip":"71577","country":"United Kingdom"},{"customerId":109,"customerName":"Sean Cantu","phone":"1-341-487-4494","email":"pellentesque@aol.couk","address":"4230 Ipsum Av.","postalZip":"243618","country":"Ireland"},{"customerId":110,"customerName":"Anastasia Park","phone":"1-330-813-7504","email":"hendrerit.consectetuer@outlook.couk","address":"966-6254 At Rd.","postalZip":"31141","country":"Brazil"},{"customerId":111,"customerName":"Penelope Chan","phone":"(298) 403-8351","email":"mauris@hotmail.couk","address":"644-6055 Cubilia Ave","postalZip":"36-698","country":"Sweden"},{"customerId":112,"customerName":"Dane Gould","phone":"(763) 516-0833","email":"a@aol.net","address":"9900 Vitae St.","postalZip":"5074","country":"Chile"},{"customerId":113,"customerName":"Rigel Morrow","phone":"1-486-135-8227","email":"phasellus.elit@outlook.couk","address":"Ap #513-1698 Nam Road","postalZip":"9888 CG","country":"Germany"},{"customerId":114,"customerName":"Rachel Walter","phone":"(168) 802-6672","email":"eleifend.vitae@protonmail.couk","address":"P.O. Box 252, 5440 Dictum Av.","postalZip":"475378","country":"Vietnam"},{"customerId":115,"customerName":"Dieter Bryant","phone":"1-600-315-4688","email":"donec.at@hotmail.edu","address":"P.O. Box 235, 6138 Augue Avenue","postalZip":"10799","country":"Ukraine"},{"customerId":116,"customerName":"Trevor Cook","phone":"(934) 210-2974","email":"nullam.feugiat.placerat@yahoo.net","address":"346-1650 Est Ave","postalZip":"8721 FE","country":"Italy"},{"customerId":117,"customerName":"Amanda Richards","phone":"(649) 729-2153","email":"nec.tellus.nunc@google.com","address":"493 Elit Rd.","postalZip":"14169","country":"China"},{"customerId":118,"customerName":"Francis Hunt","phone":"(828) 818-6888","email":"non.sollicitudin.a@aol.org","address":"7808 Ut St.","postalZip":"38-27","country":"New Zealand"},{"customerId":119,"customerName":"Catherine Hahn","phone":"(295) 899-8645","email":"hendrerit.consectetuer@hotmail.edu","address":"601-7752 Maecenas Street","postalZip":"23649","country":"Canada"},{"customerId":120,"customerName":"Victoria O'brien","phone":"1-137-599-3115","email":"enim.mi@google.couk","address":"P.O. Box 853, 3183 Nulla. Av.","postalZip":"20262","country":"Germany"},{"customerId":121,"customerName":"Dale Mcgowan","phone":"(725) 237-5823","email":"interdum.curabitur.dictum@google.com","address":"547-7664 Orci. Rd.","postalZip":"8109","country":"Costa Rica"},{"customerId":122,"customerName":"Quail Bolton","phone":"(832) 674-8829","email":"tristique@outlook.net","address":"Ap #924-9195 Scelerisque Rd.","postalZip":"161618","country":"South Korea"},{"customerId":123,"customerName":"Colleen Buchanan","phone":"(489) 652-9221","email":"gravida.non.sollicitudin@outlook.com","address":"Ap #585-4765 Curabitur Rd.","postalZip":"9155","country":"New Zealand"},{"customerId":124,"customerName":"Jordan Hull","phone":"1-486-233-4722","email":"velit@yahoo.org","address":"3842 Ut St.","postalZip":"17373","country":"India"},{"customerId":125,"customerName":"Quintessa Sampson","phone":"(847) 389-1866","email":"risus.duis.a@google.com","address":"334-4544 Et Rd.","postalZip":"33-62","country":"Norway"},{"customerId":126,"customerName":"Karly Craft","phone":"1-524-364-4215","email":"tellus.justo@hotmail.org","address":"354-9670 Urna Street","postalZip":"787883","country":"New Zealand"},{"customerId":127,"customerName":"Barrett Dean","phone":"1-380-362-3015","email":"semper.rutrum@google.com","address":"842-4346 Quis Avenue","postalZip":"2289","country":"South Korea"},{"customerId":128,"customerName":"India Whitaker","phone":"(522) 788-6541","email":"sed@yahoo.com","address":"P.O. Box 108, 3306 Non Rd.","postalZip":"02488","country":"Netherlands"},{"customerId":129,"customerName":"Thomas Richard","phone":"1-824-641-6273","email":"neque@outlook.ca","address":"316-1643 Nulla Avenue","postalZip":"61874-416","country":"Indonesia"},{"customerId":130,"customerName":"Jasmine Crane","phone":"1-891-646-0226","email":"diam.proin@protonmail.net","address":"Ap #377-2730 Arcu. St.","postalZip":"39781-73286","country":"Norway"},{"customerId":131,"customerName":"Wallace Doyle","phone":"(254) 654-2761","email":"ultrices@aol.edu","address":"Ap #457-8572 Integer Road","postalZip":"7765-3087","country":"Ireland"},{"customerId":132,"customerName":"Alec Pierce","phone":"(197) 667-1536","email":"pede.praesent@protonmail.com","address":"Ap #727-3783 Donec St.","postalZip":"16697","country":"Norway"},{"customerId":133,"customerName":"Colleen Mercado","phone":"1-794-170-8235","email":"sed.orci@google.ca","address":"Ap #551-4511 Ut, St.","postalZip":"5506","country":"India"},{"customerId":134,"customerName":"Idola Dotson","phone":"(312) 785-6651","email":"arcu@aol.couk","address":"Ap #228-5653 Purus. Avenue","postalZip":"8901 HD","country":"South Africa"},{"customerId":135,"customerName":"Leah Wilkinson","phone":"1-339-577-0861","email":"diam.dictum@yahoo.com","address":"5480 Risus. Street","postalZip":"14901","country":"Norway"},{"customerId":136,"customerName":"Amal Evans","phone":"1-167-757-4737","email":"amet.orci@google.edu","address":"Ap #544-6344 Metus. Road","postalZip":"9286","country":"Poland"},{"customerId":137,"customerName":"Hollee Strickland","phone":"(279) 204-7726","email":"odio@aol.ca","address":"3157 Varius Street","postalZip":"85572-75813","country":"Australia"},{"customerId":138,"customerName":"Adrian Walter","phone":"1-663-544-8567","email":"nec.mollis@outlook.couk","address":"7658 Est Rd.","postalZip":"489734","country":"Belgium"},{"customerId":139,"customerName":"Alisa Ayala","phone":"(370) 634-7253","email":"semper.tellus@yahoo.ca","address":"6653 Dictum Ave","postalZip":"6156","country":"Nigeria"},{"customerId":140,"customerName":"Petra Orr","phone":"1-118-977-8874","email":"et.rutrum@google.com","address":"198-117 Interdum. Av.","postalZip":"75848","country":"Singapore"},{"customerId":141,"customerName":"Remedios Wade","phone":"1-453-153-7725","email":"velit.eget.laoreet@hotmail.edu","address":"398-2243 Risus. Street","postalZip":"3145","country":"Philippines"},{"customerId":142,"customerName":"Daria Fisher","phone":"1-922-693-0450","email":"mauris.ipsum.porta@outlook.net","address":"P.O. Box 517, 9472 Id Street","postalZip":"5760-3343","country":"Poland"},{"customerId":143,"customerName":"Wang Shaffer","phone":"(488) 297-7564","email":"nibh.sit@icloud.edu","address":"248-3849 Nulla Rd.","postalZip":"45566","country":"India"},{"customerId":144,"customerName":"Nichole William","phone":"(341) 312-6916","email":"erat.sed@protonmail.com","address":"1929 Est Avenue","postalZip":"63715","country":"France"},{"customerId":145,"customerName":"Lee Patterson","phone":"1-874-858-8879","email":"nulla.integer@icloud.com","address":"Ap #890-550 Ad St.","postalZip":"4895","country":"China"},{"customerId":146,"customerName":"Phelan Peterson","phone":"(670) 464-0740","email":"vivamus.euismod@icloud.edu","address":"8281 Ac Ave","postalZip":"166723","country":"Indonesia"},{"customerId":147,"customerName":"Willa Bradshaw","phone":"(867) 712-4721","email":"cursus@yahoo.com","address":"Ap #582-6883 Mauris Street","postalZip":"671047","country":"South Korea"},{"customerId":148,"customerName":"Mohammad Spencer","phone":"(288) 753-0218","email":"amet.consectetuer.adipiscing@google.edu","address":"Ap #677-7632 Ac Av.","postalZip":"94-68","country":"South Africa"},{"customerId":149,"customerName":"Jemima Ramsey","phone":"(661) 120-0528","email":"mi.tempor@outlook.com","address":"7627 Risus. Rd.","postalZip":"573033","country":"Peru"},{"customerId":150,"customerName":"Branden Flynn","phone":"1-280-949-5552","email":"ornare.lectus.ante@icloud.net","address":"P.O. Box 546, 6023 Hendrerit Avenue","postalZip":"461852","country":"Netherlands"},{"customerId":151,"customerName":"Hamish Horton","phone":"1-120-249-8810","email":"nullam@protonmail.com","address":"Ap #703-3807 Cras Rd.","postalZip":"3109 QK","country":"Vietnam"},{"customerId":152,"customerName":"Nissim Bolton","phone":"(317) 269-3680","email":"iaculis.enim.sit@icloud.net","address":"677-2899 Semper Rd.","postalZip":"968232","country":"Turkey"},{"customerId":153,"customerName":"Graiden Moon","phone":"(709) 852-2733","email":"erat.vitae@outlook.com","address":"890-441 Ultrices. Street","postalZip":"51808","country":"Poland"},{"customerId":154,"customerName":"Ferris Lancaster","phone":"(996) 822-7520","email":"lacinia.sed.congue@protonmail.edu","address":"Ap #688-7311 Sem Av.","postalZip":"0238","country":"Ireland"},{"customerId":155,"customerName":"Clio Mccarthy","phone":"(164) 332-8316","email":"dictum@google.net","address":"948-6813 Arcu. St.","postalZip":"6864","country":"United States"},{"customerId":156,"customerName":"Kaseem Greene","phone":"(935) 829-2472","email":"magna.a@google.edu","address":"Ap #799-4143 Id Rd.","postalZip":"5655","country":"Costa Rica"},{"customerId":157,"customerName":"Sybill Pitts","phone":"1-947-253-5977","email":"molestie.dapibus@protonmail.ca","address":"568-480 Nibh St.","postalZip":"31145","country":"Sweden"},{"customerId":158,"customerName":"Conan Meyer","phone":"1-493-424-1552","email":"arcu.vestibulum@outlook.edu","address":"Ap #442-2569 Tincidunt Rd.","postalZip":"A9S 7B4","country":"Costa Rica"},{"customerId":159,"customerName":"Lev Small","phone":"(450) 596-7551","email":"sem.magna@yahoo.org","address":"P.O. Box 388, 2942 Elit, Rd.","postalZip":"214938","country":"Poland"},{"customerId":160,"customerName":"Nayda Rowe","phone":"(656) 765-3487","email":"vulputate.posuere@protonmail.org","address":"Ap #299-7971 Maecenas Street","postalZip":"433098","country":"Vietnam"},{"customerId":161,"customerName":"Brenden Taylor","phone":"1-681-577-3266","email":"phasellus.dolor.elit@protonmail.net","address":"P.O. Box 370, 9840 Ante. Ave","postalZip":"64289-11548","country":"Austria"},{"customerId":162,"customerName":"Timothy Sutton","phone":"(444) 218-4545","email":"nulla.at@aol.net","address":"485-1176 Eget Avenue","postalZip":"10709","country":"Germany"},{"customerId":163,"customerName":"Zephania Banks","phone":"1-544-569-2574","email":"magnis@outlook.org","address":"7028 Risus. Avenue","postalZip":"21-851","country":"Nigeria"},{"customerId":164,"customerName":"Reagan O'brien","phone":"(231) 373-3319","email":"phasellus.dapibus@hotmail.net","address":"Ap #169-271 Facilisis St.","postalZip":"8753-2182","country":"Belgium"},{"customerId":165,"customerName":"Bradley Bartlett","phone":"1-388-513-4174","email":"erat.semper@yahoo.edu","address":"Ap #918-9331 Ultrices. Av.","postalZip":"85220","country":"Norway"},{"customerId":166,"customerName":"Lani Jackson","phone":"(877) 547-9285","email":"malesuada.fringilla@yahoo.org","address":"6411 Mus. Av.","postalZip":"3467-3394","country":"Turkey"},{"customerId":167,"customerName":"Igor Gay","phone":"1-314-412-6528","email":"enim.commodo.hendrerit@protonmail.com","address":"Ap #708-7859 Donec Road","postalZip":"65384","country":"Norway"},{"customerId":168,"customerName":"Gay Howell","phone":"(545) 978-4368","email":"et.magnis@yahoo.net","address":"Ap #120-418 Nunc, St.","postalZip":"3234","country":"Indonesia"},{"customerId":169,"customerName":"Maisie Mcclain","phone":"(457) 122-1351","email":"libero.mauris@protonmail.net","address":"Ap #415-705 Non, Rd.","postalZip":"11303","country":"Russian Federation"},{"customerId":170,"customerName":"Sylvia Hayes","phone":"1-200-348-8041","email":"pellentesque.habitant@icloud.edu","address":"Ap #553-9909 Aptent Road","postalZip":"813866","country":"Colombia"},{"customerId":171,"customerName":"Constance Hernandez","phone":"1-214-776-7702","email":"pede.ac@icloud.org","address":"Ap #847-9411 Eget Street","postalZip":"81376-48226","country":"Brazil"},{"customerId":172,"customerName":"Xenos Acosta","phone":"(245) 831-2348","email":"nec.euismod.in@yahoo.net","address":"637-7178 Vitae Ave","postalZip":"170998","country":"Netherlands"},{"customerId":173,"customerName":"Leandra Navarro","phone":"1-417-731-8039","email":"praesent@protonmail.couk","address":"7250 Dictum St.","postalZip":"14152","country":"United States"},{"customerId":174,"customerName":"Yolanda Frye","phone":"1-747-856-8765","email":"aenean@icloud.net","address":"773-9543 Ac St.","postalZip":"3762","country":"Netherlands"},{"customerId":175,"customerName":"Melyssa Moran","phone":"(851) 742-5120","email":"eget.ipsum@aol.org","address":"P.O. Box 141, 8487 Iaculis Street","postalZip":"21135-58571","country":"Vietnam"},{"customerId":176,"customerName":"Jermaine Whitley","phone":"1-713-959-8547","email":"eleifend.vitae@outlook.com","address":"204-8232 Nec, Rd.","postalZip":"411316","country":"Norway"},{"customerId":177,"customerName":"Ramona Cunningham","phone":"1-739-817-2821","email":"eu.enim.etiam@aol.couk","address":"4073 Gravida. Rd.","postalZip":"41213","country":"Austria"},{"customerId":178,"customerName":"Kirk Holcomb","phone":"1-238-478-4240","email":"integer.mollis.integer@icloud.com","address":"P.O. Box 570, 7087 Euismod Av.","postalZip":"484232","country":"Indonesia"},{"customerId":179,"customerName":"Erin Moses","phone":"1-737-387-2710","email":"nec.luctus.felis@aol.ca","address":"Ap #582-3463 A Rd.","postalZip":"1638","country":"Germany"},{"customerId":180,"customerName":"Joelle Casey","phone":"1-235-245-1813","email":"et.risus@icloud.couk","address":"P.O. Box 757, 7096 Tellus Av.","postalZip":"51106","country":"Belgium"},{"customerId":181,"customerName":"Hamilton Serrano","phone":"1-237-330-2730","email":"suspendisse.sed@outlook.org","address":"223 Justo Av.","postalZip":"484955","country":"India"},{"customerId":182,"customerName":"Sierra Bridges","phone":"1-214-790-6763","email":"vitae.nibh.donec@aol.couk","address":"1165 Elit Street","postalZip":"4136","country":"Chile"},{"customerId":183,"customerName":"Jamalia Slater","phone":"1-967-277-3814","email":"nam.ac@hotmail.couk","address":"685-1393 Vulputate, Street","postalZip":"3664","country":"Singapore"},{"customerId":184,"customerName":"Cleo O'brien","phone":"1-336-515-1247","email":"ipsum.phasellus.vitae@yahoo.net","address":"9200 Nam Road","postalZip":"9183-7785","country":"China"},{"customerId":185,"customerName":"Yardley Weeks","phone":"(771) 775-6528","email":"donec.felis@google.com","address":"Ap #821-6615 Porttitor St.","postalZip":"9522","country":"Chile"},{"customerId":186,"customerName":"Gabriel Mullins","phone":"1-653-117-9264","email":"eros.turpis@outlook.net","address":"Ap #974-645 Vel Rd.","postalZip":"32943","country":"Italy"},{"customerId":187,"customerName":"Kirestin Kent","phone":"1-555-824-7829","email":"dignissim.lacus@hotmail.net","address":"560-439 Morbi Ave","postalZip":"71913","country":"Italy"},{"customerId":188,"customerName":"Guinevere Foreman","phone":"(763) 953-1852","email":"ultrices.sit@google.edu","address":"Ap #625-949 Ut, St.","postalZip":"1616","country":"Netherlands"},{"customerId":189,"customerName":"Dean Gordon","phone":"1-191-202-1640","email":"bibendum.fermentum.metus@hotmail.com","address":"303-7358 At, Road","postalZip":"49913","country":"Turkey"},{"customerId":190,"customerName":"Quemby Ayala","phone":"1-211-475-1683","email":"aliquam.ornare.libero@icloud.org","address":"Ap #491-2446 Sed Ave","postalZip":"1682","country":"Spain"},{"customerId":191,"customerName":"Lynn Crosby","phone":"(913) 614-2347","email":"suspendisse.eleifend@outlook.edu","address":"810-1069 A, Avenue","postalZip":"16-36","country":"Ireland"},{"customerId":192,"customerName":"Shelly Raymond","phone":"1-361-965-5339","email":"duis@icloud.net","address":"Ap #819-9220 Laoreet Rd.","postalZip":"Y7L 6W3","country":"Austria"},{"customerId":193,"customerName":"Baxter Valenzuela","phone":"(193) 276-6247","email":"mi.lacinia@yahoo.ca","address":"192-1805 Ac Street","postalZip":"415859","country":"Germany"},{"customerId":194,"customerName":"Caleb Montgomery","phone":"(817) 602-7763","email":"fusce.aliquet@aol.com","address":"6251 Dui. St.","postalZip":"65473","country":"Canada"},{"customerId":195,"customerName":"Isabella Trujillo","phone":"(788) 924-6787","email":"neque.non@hotmail.edu","address":"4601 Donec Ave","postalZip":"123342","country":"Chile"},{"customerId":196,"customerName":"Fitzgerald Buckley","phone":"(151) 130-3142","email":"non.dapibus.rutrum@outlook.ca","address":"680-2290 Dis St.","postalZip":"896833","country":"Austria"},{"customerId":197,"customerName":"Paul Frank","phone":"1-954-730-1417","email":"sed@hotmail.net","address":"3205 Varius Avenue","postalZip":"6311","country":"Austria"},{"customerId":198,"customerName":"Alexa Holland","phone":"(451) 214-3886","email":"augue.sed@icloud.com","address":"Ap #634-8004 Odio. Rd.","postalZip":"66-138","country":"Austria"},{"customerId":199,"customerName":"Holly Hutchinson","phone":"(759) 626-2541","email":"est.mollis@hotmail.com","address":"441-2070 Tristique Avenue","postalZip":"8852 CD","country":"France"},{"customerId":200,"customerName":"Colette Vega","phone":"1-809-541-0225","email":"nam.ac@google.edu","address":"949-8812 Quam Avenue","postalZip":"95240","country":"France"},{"customerId":201,"customerName":"Aurelia Mccullough","phone":"(529) 578-8112","email":"amet.diam@protonmail.net","address":"812-920 Ligula Rd.","postalZip":"51017","country":"Brazil"},{"customerId":202,"customerName":"Nicholas King","phone":"1-335-959-0268","email":"eget.ipsum@icloud.com","address":"P.O. Box 770, 237 Volutpat Av.","postalZip":"3715","country":"Nigeria"},{"customerId":203,"customerName":"Palmer Wheeler","phone":"(277) 292-2618","email":"non.dapibus@google.net","address":"372-8673 Odio. Street","postalZip":"385823","country":"Canada"},{"customerId":204,"customerName":"Samuel Berry","phone":"(475) 337-4578","email":"id.libero.donec@hotmail.net","address":"894-3616 Nonummy Road","postalZip":"66977","country":"Ukraine"},{"customerId":205,"customerName":"Yasir Montoya","phone":"(137) 236-3582","email":"a.felis@yahoo.couk","address":"P.O. Box 930, 4496 Integer Rd.","postalZip":"6634-7162","country":"Ireland"},{"customerId":206,"customerName":"Evan Harper","phone":"1-887-985-5954","email":"ut@aol.couk","address":"Ap #839-4041 Metus Av.","postalZip":"74-66","country":"Australia"},{"customerId":207,"customerName":"Gregory Leach","phone":"(817) 526-9671","email":"fusce.fermentum@outlook.net","address":"9527 Ultrices. Ave","postalZip":"6625","country":"Pakistan"},{"customerId":208,"customerName":"Josephine Burris","phone":"1-280-667-8722","email":"mus.proin@hotmail.ca","address":"911-6465 Condimentum Rd.","postalZip":"52514","country":"Nigeria"},{"customerId":209,"customerName":"Otto Mercer","phone":"1-437-258-2150","email":"inceptos.hymenaeos.mauris@icloud.net","address":"8671 Scelerisque Rd.","postalZip":"32147","country":"Belgium"},{"customerId":210,"customerName":"Illana Kennedy","phone":"(921) 287-4668","email":"tristique@protonmail.ca","address":"P.O. Box 427, 7016 Nibh St.","postalZip":"6991","country":"Nigeria"},{"customerId":211,"customerName":"Cally Kaufman","phone":"1-721-125-2623","email":"ut.mi.duis@outlook.com","address":"Ap #829-867 Eget Ave","postalZip":"70-258","country":"Norway"},{"customerId":212,"customerName":"Jameson Mosley","phone":"1-727-864-9532","email":"aliquam.nec@icloud.edu","address":"Ap #315-119 Phasellus St.","postalZip":"635531","country":"New Zealand"},{"customerId":213,"customerName":"Henry Humphrey","phone":"(166) 817-2735","email":"turpis.aliquam@aol.edu","address":"713-1242 Id, Ave","postalZip":"27672","country":"Poland"},{"customerId":214,"customerName":"Gloria England","phone":"1-386-252-4973","email":"eu.enim@hotmail.org","address":"Ap #736-8873 Dui Avenue","postalZip":"414340","country":"Australia"},{"customerId":215,"customerName":"Helen Wilkinson","phone":"1-677-472-2742","email":"non@yahoo.edu","address":"741-6586 Molestie St.","postalZip":"5051","country":"United Kingdom"},{"customerId":216,"customerName":"Talon Pitts","phone":"(666) 839-7372","email":"sem.consequat@protonmail.edu","address":"5571 Mi. St.","postalZip":"66-68","country":"Russian Federation"},{"customerId":217,"customerName":"Ursula Newman","phone":"1-657-729-5559","email":"arcu.nunc.mauris@icloud.couk","address":"Ap #631-751 Fames Road","postalZip":"889247","country":"Belgium"},{"customerId":218,"customerName":"Fatima Boyd","phone":"1-663-334-7121","email":"lorem.luctus@yahoo.ca","address":"701-8986 A Av.","postalZip":"8463-2931","country":"Netherlands"},{"customerId":219,"customerName":"Aline Battle","phone":"(251) 310-2663","email":"vivamus.nisi@yahoo.ca","address":"P.O. Box 581, 6213 Duis Av.","postalZip":"22332","country":"Mexico"},{"customerId":220,"customerName":"Brent Allen","phone":"(875) 515-3322","email":"non.feugiat@protonmail.com","address":"724-9470 Elementum Ave","postalZip":"757793","country":"New Zealand"},{"customerId":221,"customerName":"Yetta Powell","phone":"(329) 142-3882","email":"justo.faucibus@icloud.org","address":"Ap #901-6412 Nam Rd.","postalZip":"48676","country":"Russian Federation"},{"customerId":222,"customerName":"Zeus Lynch","phone":"1-515-704-3286","email":"ut.cursus.luctus@yahoo.com","address":"P.O. Box 391, 9445 Rutrum St.","postalZip":"37598-75017","country":"South Korea"},{"customerId":223,"customerName":"Matthew Bryan","phone":"(927) 453-7193","email":"porttitor.scelerisque@outlook.net","address":"Ap #709-3616 Praesent Ave","postalZip":"58027","country":"Austria"},{"customerId":224,"customerName":"Aidan Emerson","phone":"(672) 720-9542","email":"nulla@hotmail.org","address":"2395 Purus St.","postalZip":"72813","country":"New Zealand"},{"customerId":225,"customerName":"Whilemina Fitzgerald","phone":"(267) 247-9036","email":"eu.neque.pellentesque@google.edu","address":"P.O. Box 265, 1761 Nisi Rd.","postalZip":"35530","country":"China"},{"customerId":226,"customerName":"Talon Little","phone":"1-896-644-3685","email":"mauris.sapien@hotmail.couk","address":"Ap #600-3214 Natoque St.","postalZip":"009406","country":"Netherlands"},{"customerId":227,"customerName":"Deborah Davenport","phone":"1-488-593-0067","email":"adipiscing.non.luctus@hotmail.net","address":"500-8011 Eget, Av.","postalZip":"287534","country":"United States"},{"customerId":228,"customerName":"MacKensie Fernandez","phone":"1-316-265-6465","email":"urna@yahoo.couk","address":"746-7829 In St.","postalZip":"38827","country":"Mexico"},{"customerId":229,"customerName":"Marcia Snider","phone":"(259) 882-5376","email":"integer@hotmail.net","address":"P.O. Box 651, 9732 Porttitor St.","postalZip":"01674","country":"Italy"},{"customerId":230,"customerName":"Selma Gray","phone":"(825) 777-6846","email":"commodo.ipsum@yahoo.ca","address":"9975 Quam Rd.","postalZip":"303114","country":"United States"},{"customerId":231,"customerName":"Igor Brady","phone":"1-224-170-7577","email":"quis.urna.nunc@google.edu","address":"P.O. Box 843, 3207 Eros Avenue","postalZip":"120342","country":"South Korea"},{"customerId":232,"customerName":"Marsden Scott","phone":"(312) 469-4156","email":"semper@yahoo.edu","address":"9821 Magna. St.","postalZip":"5755 IZ","country":"Sweden"},{"customerId":233,"customerName":"Caleb Beasley","phone":"1-761-565-3058","email":"gravida.nunc.sed@yahoo.edu","address":"Ap #678-9550 Quisque Avenue","postalZip":"3878","country":"Russian Federation"},{"customerId":234,"customerName":"Allen Soto","phone":"(486) 921-8537","email":"non@icloud.net","address":"Ap #552-1964 Semper Street","postalZip":"735428","country":"Norway"},{"customerId":235,"customerName":"Belle Kramer","phone":"1-963-314-4195","email":"nec.diam.duis@protonmail.ca","address":"Ap #533-5143 Odio, Ave","postalZip":"621357","country":"France"},{"customerId":236,"customerName":"Savannah Martin","phone":"1-604-634-2426","email":"suspendisse@protonmail.couk","address":"950-171 Ultricies Avenue","postalZip":"22253","country":"Ukraine"},{"customerId":237,"customerName":"Jasmine Stokes","phone":"(826) 644-4729","email":"aliquam@protonmail.org","address":"6372 Nunc St.","postalZip":"513382","country":"Netherlands"},{"customerId":238,"customerName":"Alexander Doyle","phone":"1-488-354-9546","email":"ipsum@yahoo.edu","address":"6847 Ipsum Av.","postalZip":"7886","country":"South Africa"},{"customerId":239,"customerName":"Lamar Bush","phone":"1-756-173-6359","email":"ipsum@hotmail.ca","address":"985 Donec Rd.","postalZip":"45-86","country":"India"},{"customerId":240,"customerName":"Isadora Fuller","phone":"1-484-722-9103","email":"sed.dictum.proin@yahoo.net","address":"838-5569 Nunc St.","postalZip":"73-13","country":"Philippines"},{"customerId":241,"customerName":"Mallory Goodwin","phone":"(831) 123-7927","email":"dapibus@outlook.com","address":"5849 Lacus. Road","postalZip":"3756","country":"Netherlands"},{"customerId":242,"customerName":"Carol Clay","phone":"1-513-371-2533","email":"ornare.placerat@protonmail.couk","address":"Ap #629-2448 Tortor Avenue","postalZip":"3567 TX","country":"France"},{"customerId":243,"customerName":"Emerald Valenzuela","phone":"1-311-823-3821","email":"id.ante@yahoo.net","address":"1237 Aliquam Av.","postalZip":"43732","country":"Costa Rica"},{"customerId":244,"customerName":"Lynn Dean","phone":"(853) 220-5171","email":"nulla@outlook.ca","address":"592-4473 Cras Street","postalZip":"136265","country":"Colombia"},{"customerId":245,"customerName":"Deanna Drake","phone":"(907) 704-8403","email":"viverra.maecenas@hotmail.com","address":"Ap #245-5061 Ultricies Av.","postalZip":"53261-077","country":"China"},{"customerId":246,"customerName":"Risa Barnett","phone":"1-484-724-7792","email":"nam.tempor@google.ca","address":"387-3289 Id, Ave","postalZip":"42324","country":"Belgium"},{"customerId":247,"customerName":"Chanda Goff","phone":"1-363-136-6294","email":"auctor.ullamcorper@google.com","address":"P.O. Box 445, 2913 Amet, Road","postalZip":"1586","country":"Colombia"},{"customerId":248,"customerName":"Cecilia Elliott","phone":"(323) 556-6283","email":"consectetuer.adipiscing@protonmail.ca","address":"2794 Mauris Street","postalZip":"854730","country":"Ireland"},{"customerId":249,"customerName":"Deacon Monroe","phone":"(712) 334-2351","email":"risus.donec@hotmail.net","address":"9360 Odio Rd.","postalZip":"14707-637","country":"Spain"},{"customerId":250,"customerName":"Edan Nguyen","phone":"1-433-816-3453","email":"ad.litora@google.ca","address":"566-2831 Nam St.","postalZip":"68-356","country":"Brazil"},{"customerId":251,"customerName":"Wesley Hughes","phone":"(216) 437-1077","email":"tristique.senectus@icloud.couk","address":"359-7242 Mi Rd.","postalZip":"577763","country":"Nigeria"},{"customerId":252,"customerName":"Henry Coffey","phone":"1-604-438-7321","email":"risus.nulla@outlook.couk","address":"9846 Natoque Rd.","postalZip":"6432-1728","country":"Brazil"},{"customerId":253,"customerName":"Nolan Lara","phone":"1-865-914-8666","email":"justo.faucibus@hotmail.couk","address":"Ap #712-8382 Urna, St.","postalZip":"5615","country":"Canada"},{"customerId":254,"customerName":"Justin Willis","phone":"1-412-547-4767","email":"et.magna@icloud.com","address":"498-9593 Nisl St.","postalZip":"665044","country":"United Kingdom"},{"customerId":255,"customerName":"Selma English","phone":"(696) 953-3985","email":"nec.mauris@aol.org","address":"Ap #349-4635 Sapien. St.","postalZip":"18597","country":"Brazil"},{"customerId":256,"customerName":"Donna Todd","phone":"(778) 814-1364","email":"nibh.dolor.nonummy@protonmail.ca","address":"Ap #106-3050 Aliquam Rd.","postalZip":"34752-75482","country":"South Africa"},{"customerId":257,"customerName":"Noah Francis","phone":"1-488-212-7714","email":"molestie@icloud.org","address":"429 Et, Road","postalZip":"3336","country":"Mexico"},{"customerId":258,"customerName":"Dora Head","phone":"(395) 855-5634","email":"donec.tempor@google.couk","address":"Ap #309-2891 Vitae, Rd.","postalZip":"35713","country":"South Korea"},{"customerId":259,"customerName":"Louis Gallegos","phone":"1-530-425-6764","email":"nec.cursus.a@outlook.edu","address":"624-7788 Lacinia. St.","postalZip":"694428","country":"Nigeria"},{"customerId":260,"customerName":"Penelope Hogan","phone":"(255) 416-4132","email":"ornare.libero@icloud.com","address":"P.O. Box 728, 7345 Cras Avenue","postalZip":"8522","country":"South Africa"},{"customerId":261,"customerName":"Cedric Hopkins","phone":"1-582-252-8036","email":"a.aliquet.vel@google.net","address":"341-9236 Porta Street","postalZip":"7332","country":"Australia"},{"customerId":262,"customerName":"Craig Alvarado","phone":"(644) 405-5215","email":"morbi@google.couk","address":"Ap #204-2795 A, Avenue","postalZip":"ET1 7NM","country":"Chile"},{"customerId":263,"customerName":"Callie Conner","phone":"(541) 433-7779","email":"amet.dapibus.id@google.net","address":"Ap #773-8201 A Rd.","postalZip":"10301","country":"Peru"},{"customerId":264,"customerName":"Brenden Bell","phone":"1-816-372-4255","email":"pellentesque.ultricies.dignissim@protonmail.ca","address":"Ap #723-1428 Nec Street","postalZip":"41001","country":"United Kingdom"},{"customerId":265,"customerName":"Adria Booth","phone":"1-818-603-5565","email":"lobortis.mauris@protonmail.edu","address":"273-9905 Sit Rd.","postalZip":"88761","country":"United Kingdom"},{"customerId":266,"customerName":"Chava Fischer","phone":"1-313-245-0765","email":"id.erat@yahoo.ca","address":"Ap #919-1096 Venenatis Rd.","postalZip":"31811","country":"United States"},{"customerId":267,"customerName":"Clayton Hoffman","phone":"(895) 786-3262","email":"adipiscing@google.org","address":"Ap #179-174 Cras Street","postalZip":"7268","country":"Poland"},{"customerId":268,"customerName":"Hayes Ferrell","phone":"1-443-337-3613","email":"vel.sapien.imperdiet@yahoo.org","address":"8251 Eu St.","postalZip":"5178","country":"United States"},{"customerId":269,"customerName":"Emma Newton","phone":"(228) 715-2705","email":"eu@yahoo.com","address":"Ap #581-3655 Ac Av.","postalZip":"1231-1389","country":"Canada"},{"customerId":270,"customerName":"Giacomo Fitzpatrick","phone":"1-627-382-2524","email":"nec.ante@google.ca","address":"9491 Velit Road","postalZip":"380298","country":"Indonesia"},{"customerId":271,"customerName":"Christine Steele","phone":"1-325-646-8233","email":"dignissim@google.couk","address":"780-3131 Augue. Rd.","postalZip":"616127","country":"China"},{"customerId":272,"customerName":"Ray Bush","phone":"(872) 462-4427","email":"sed.id.risus@yahoo.com","address":"362-359 Nullam Rd.","postalZip":"755108","country":"South Africa"},{"customerId":273,"customerName":"Price Cote","phone":"1-388-854-2213","email":"ipsum@protonmail.edu","address":"Ap #927-651 Mauris Rd.","postalZip":"22353","country":"Peru"},{"customerId":274,"customerName":"Silas Maynard","phone":"1-765-832-6975","email":"velit@google.org","address":"6731 Fusce Avenue","postalZip":"22773","country":"Ireland"},{"customerId":275,"customerName":"Zena Brooks","phone":"(288) 273-1375","email":"donec.nibh@aol.org","address":"Ap #156-9306 Lectus Rd.","postalZip":"8268","country":"Singapore"},{"customerId":276,"customerName":"Ferdinand Hampton","phone":"(915) 920-8532","email":"erat.semper.rutrum@yahoo.com","address":"Ap #561-5241 Aliquet Street","postalZip":"14556","country":"Singapore"},{"customerId":277,"customerName":"Keefe Gilliam","phone":"(845) 657-5376","email":"augue@aol.edu","address":"Ap #662-5036 Mauris Rd.","postalZip":"39-666","country":"India"},{"customerId":278,"customerName":"Timon Barr","phone":"1-488-359-0136","email":"accumsan.laoreet.ipsum@icloud.org","address":"626-8640 Nec, St.","postalZip":"07460","country":"South Korea"},{"customerId":279,"customerName":"Harlan Beard","phone":"1-994-671-3557","email":"nam@yahoo.net","address":"Ap #332-1742 Vitae, St.","postalZip":"652675","country":"Colombia"},{"customerId":280,"customerName":"Fletcher Mclean","phone":"(255) 876-5491","email":"in@outlook.com","address":"P.O. Box 898, 9802 Sollicitudin Rd.","postalZip":"46626","country":"United States"},{"customerId":281,"customerName":"Griffin Woods","phone":"(541) 325-1702","email":"nulla.eu@icloud.edu","address":"Ap #404-6111 Per Rd.","postalZip":"772818","country":"New Zealand"},{"customerId":282,"customerName":"Angela Ferguson","phone":"1-430-334-0671","email":"luctus.vulputate@protonmail.org","address":"Ap #541-9833 Aliquet. Ave","postalZip":"46575","country":"Chile"},{"customerId":283,"customerName":"Hashim Lowe","phone":"1-377-593-3919","email":"proin@google.couk","address":"668-8867 Lorem, Rd.","postalZip":"467422","country":"Russian Federation"},{"customerId":284,"customerName":"Wyatt Joyce","phone":"(530) 212-6652","email":"tellus.imperdiet@icloud.org","address":"646-7638 Ut Road","postalZip":"5978-5762","country":"New Zealand"},{"customerId":285,"customerName":"Gregory Bradshaw","phone":"(545) 483-8816","email":"aliquet.sem@outlook.com","address":"P.O. Box 275, 9869 Rhoncus. Road","postalZip":"64-53","country":"Mexico"},{"customerId":286,"customerName":"Pearl Wood","phone":"1-618-481-2183","email":"feugiat@google.couk","address":"Ap #620-3056 Lobortis Avenue","postalZip":"866376","country":"Nigeria"},{"customerId":287,"customerName":"Richard Ortiz","phone":"(469) 876-8463","email":"consequat@protonmail.couk","address":"Ap #637-5686 Elementum, Rd.","postalZip":"85742","country":"Peru"},{"customerId":288,"customerName":"Hakeem Hayden","phone":"(313) 793-7137","email":"quisque.ornare@yahoo.com","address":"428-4459 Turpis Av.","postalZip":"01238","country":"France"},{"customerId":289,"customerName":"Byron Cooper","phone":"(665) 687-0031","email":"amet.ante.vivamus@protonmail.ca","address":"6402 Amet, St.","postalZip":"7349 HW","country":"United States"},{"customerId":290,"customerName":"Ruby Wolfe","phone":"1-547-568-7216","email":"morbi.sit@yahoo.org","address":"7422 Eu Rd.","postalZip":"21129-965","country":"Ukraine"},{"customerId":291,"customerName":"Odysseus Howard","phone":"1-689-722-4560","email":"eros.non@yahoo.couk","address":"Ap #665-4091 Magna Road","postalZip":"584207","country":"Netherlands"},{"customerId":292,"customerName":"Magee Mann","phone":"1-864-488-5741","email":"donec.nibh@hotmail.com","address":"531-6849 Est, Ave","postalZip":"5480","country":"Costa Rica"},{"customerId":293,"customerName":"Inez Sexton","phone":"1-323-835-7826","email":"penatibus.et@protonmail.couk","address":"Ap #518-9623 Posuere Ave","postalZip":"43554","country":"Italy"},{"customerId":294,"customerName":"Charde Rose","phone":"1-994-423-0323","email":"mauris@icloud.ca","address":"819-7349 In St.","postalZip":"77224","country":"Canada"},{"customerId":295,"customerName":"Quinn Burnett","phone":"(327) 234-6675","email":"sit.amet@hotmail.edu","address":"Ap #978-3339 Curabitur Rd.","postalZip":"66725","country":"Pakistan"},{"customerId":296,"customerName":"Hollee Fletcher","phone":"(401) 671-5652","email":"vehicula.aliquet.libero@yahoo.ca","address":"2459 Elit, Avenue","postalZip":"6784-1011","country":"Costa Rica"},{"customerId":297,"customerName":"Sybill Hoover","phone":"1-749-153-7298","email":"nec@hotmail.com","address":"183-1871 Ante. Street","postalZip":"389383","country":"Austria"},{"customerId":298,"customerName":"Keefe Blackburn","phone":"1-835-251-3502","email":"tempus@yahoo.net","address":"Ap #110-5064 Duis Street","postalZip":"39211-11883","country":"Singapore"},{"customerId":299,"customerName":"Coby Evans","phone":"(528) 295-9329","email":"metus.sit.amet@outlook.ca","address":"Ap #540-8073 Sem. St.","postalZip":"5351","country":"Ireland"},{"customerId":300,"customerName":"Reese Mccarthy","phone":"(525) 665-1876","email":"vitae.dolor.donec@outlook.edu","address":"P.O. Box 537, 6955 Libero. St.","postalZip":"5857","country":"Spain"},{"customerId":301,"customerName":"Gisela Collins","phone":"1-983-834-2244","email":"donec@aol.org","address":"492-7356 Risus Rd.","postalZip":"Y1G 8N4","country":"Nigeria"},{"customerId":302,"customerName":"Rylee Sears","phone":"(281) 220-3044","email":"semper.erat.in@hotmail.ca","address":"Ap #396-3079 Pellentesque, Ave","postalZip":"I5 8YA","country":"Poland"},{"customerId":303,"customerName":"Jana Parsons","phone":"(469) 784-9162","email":"elementum@protonmail.couk","address":"356-7478 Id St.","postalZip":"30765","country":"Poland"},{"customerId":304,"customerName":"Chiquita Giles","phone":"(690) 282-1110","email":"nec.mauris@icloud.edu","address":"P.O. Box 623, 2780 Massa St.","postalZip":"325151","country":"South Korea"},{"customerId":305,"customerName":"Leah Jefferson","phone":"(534) 837-4432","email":"pede.cum@protonmail.couk","address":"3960 Consectetuer, Ave","postalZip":"803683","country":"Pakistan"},{"customerId":306,"customerName":"Amy Middleton","phone":"1-425-639-1978","email":"quisque@icloud.ca","address":"P.O. Box 271, 3429 Tortor St.","postalZip":"2367","country":"South Africa"},{"customerId":307,"customerName":"Maris Underwood","phone":"(635) 838-8174","email":"elit.curabitur@protonmail.net","address":"972-8674 Non Street","postalZip":"188425","country":"Australia"},{"customerId":308,"customerName":"Hall Mendoza","phone":"1-581-423-4214","email":"sed@aol.couk","address":"594-1417 Libero St.","postalZip":"50109","country":"Ireland"},{"customerId":309,"customerName":"Kibo Curtis","phone":"1-318-489-5448","email":"integer.sem@hotmail.com","address":"P.O. Box 491, 6073 Semper Rd.","postalZip":"79457","country":"Belgium"},{"customerId":310,"customerName":"Ian Hyde","phone":"(503) 424-7209","email":"eget@google.com","address":"Ap #443-3234 Arcu Rd.","postalZip":"81322-448","country":"Chile"},{"customerId":311,"customerName":"Vincent Rivers","phone":"1-415-129-2713","email":"id@yahoo.com","address":"Ap #185-3842 Integer Rd.","postalZip":"571644","country":"Nigeria"},{"customerId":312,"customerName":"Elton Duran","phone":"(824) 759-8438","email":"aenean.eget.magna@yahoo.com","address":"790-3169 Nullam St.","postalZip":"517453","country":"Sweden"},{"customerId":313,"customerName":"Anne Barnes","phone":"1-250-658-2841","email":"ipsum.non@outlook.ca","address":"Ap #137-9867 Sapien Av.","postalZip":"40300","country":"Ukraine"},{"customerId":314,"customerName":"Althea Holland","phone":"(938) 787-6943","email":"a@yahoo.org","address":"783-1382 Cursus Rd.","postalZip":"4773","country":"India"},{"customerId":315,"customerName":"Sade Brooks","phone":"1-641-623-2307","email":"cras.dictum@icloud.edu","address":"9034 Sit Rd.","postalZip":"3443","country":"Philippines"},{"customerId":316,"customerName":"Elvis Mann","phone":"1-384-864-5311","email":"facilisis.lorem@icloud.edu","address":"Ap #500-9323 Vehicula. St.","postalZip":"23541","country":"New Zealand"},{"customerId":317,"customerName":"Jason Ewing","phone":"(764) 231-5857","email":"magna.a@protonmail.edu","address":"441-5511 Gravida Road","postalZip":"637943","country":"South Africa"},{"customerId":318,"customerName":"Brennan Dunn","phone":"(285) 940-6155","email":"ultricies@outlook.org","address":"5191 Quam Street","postalZip":"952885","country":"Canada"},{"customerId":319,"customerName":"Griffith Gonzales","phone":"1-146-961-5197","email":"egestas.aliquam@icloud.net","address":"518-4398 In, Rd.","postalZip":"862432","country":"Nigeria"},{"customerId":320,"customerName":"Demetrius Spencer","phone":"(620) 245-2604","email":"amet.ultricies@yahoo.ca","address":"Ap #563-4210 Lorem St.","postalZip":"35144","country":"Mexico"},{"customerId":321,"customerName":"Jerry Houston","phone":"1-100-235-6447","email":"ornare@protonmail.com","address":"238-4106 Odio St.","postalZip":"21156","country":"Germany"},{"customerId":322,"customerName":"Madonna May","phone":"1-541-883-2666","email":"nullam.scelerisque@outlook.com","address":"860-2657 Ultrices Avenue","postalZip":"7827 SF","country":"India"},{"customerId":323,"customerName":"Vance Cunningham","phone":"(477) 661-9718","email":"nunc.quisque@icloud.edu","address":"559-7825 Sapien. St.","postalZip":"S4 7MU","country":"Colombia"},{"customerId":324,"customerName":"Timothy Garrison","phone":"1-398-261-7157","email":"imperdiet@aol.net","address":"Ap #928-9398 Vivamus Road","postalZip":"33252","country":"Italy"},{"customerId":325,"customerName":"Berk Carver","phone":"1-128-645-8082","email":"in.scelerisque@google.com","address":"182-8065 Adipiscing Rd.","postalZip":"768627","country":"Norway"},{"customerId":326,"customerName":"Jason Torres","phone":"1-153-624-7418","email":"velit.in@outlook.com","address":"3286 Morbi Ave","postalZip":"67-245","country":"Germany"},{"customerId":327,"customerName":"Lane Mitchell","phone":"(347) 133-6044","email":"ridiculus.mus@yahoo.net","address":"862-8773 Dictum Rd.","postalZip":"08-554","country":"Germany"},{"customerId":328,"customerName":"Amir Albert","phone":"(957) 879-0145","email":"congue.in@aol.org","address":"229-7578 Euismod St.","postalZip":"6584","country":"New Zealand"},{"customerId":329,"customerName":"Magee Guthrie","phone":"(526) 884-0836","email":"dictum.eu@icloud.com","address":"P.O. Box 724, 9254 Neque. St.","postalZip":"4435","country":"Austria"},{"customerId":330,"customerName":"Jerry Rasmussen","phone":"1-458-356-2655","email":"elementum.sem@hotmail.edu","address":"P.O. Box 914, 3761 Risus. Ave","postalZip":"MK4 7RL","country":"Chile"},{"customerId":331,"customerName":"Kaseem Leon","phone":"1-243-864-6476","email":"proin.sed@hotmail.edu","address":"696 Sed Rd.","postalZip":"9125","country":"Mexico"},{"customerId":332,"customerName":"Olympia Noble","phone":"(537) 635-6386","email":"justo.nec@hotmail.com","address":"466-2060 Vitae Road","postalZip":"83128","country":"Brazil"},{"customerId":333,"customerName":"Phillip Cabrera","phone":"1-556-315-7456","email":"ligula.consectetuer.rhoncus@icloud.org","address":"P.O. Box 639, 8994 Egestas. Rd.","postalZip":"703516","country":"France"},{"customerId":334,"customerName":"Diana Chavez","phone":"1-729-354-1853","email":"ullamcorper.duis@google.couk","address":"309-9819 Cras Street","postalZip":"B2N 9J5","country":"Peru"},{"customerId":335,"customerName":"Shay Kline","phone":"(332) 131-7766","email":"porttitor.interdum@outlook.edu","address":"5658 Lacinia Street","postalZip":"5055 HD","country":"Nigeria"},{"customerId":336,"customerName":"Lana Santana","phone":"1-945-466-5287","email":"pretium.et@hotmail.ca","address":"5118 Bibendum Road","postalZip":"318788","country":"United Kingdom"},{"customerId":337,"customerName":"Hammett Raymond","phone":"1-229-452-6520","email":"dictum@hotmail.edu","address":"3144 Egestas. Road","postalZip":"6324","country":"Philippines"},{"customerId":338,"customerName":"Francis Harper","phone":"1-357-421-4528","email":"ultrices.duis.volutpat@aol.ca","address":"P.O. Box 832, 2212 Tellus St.","postalZip":"87-69","country":"Norway"},{"customerId":339,"customerName":"Rylee Hooper","phone":"1-214-823-1015","email":"sodales.mauris.blandit@yahoo.net","address":"7186 Ornare, Street","postalZip":"502473","country":"Australia"},{"customerId":340,"customerName":"Kaye Alvarez","phone":"(855) 158-7702","email":"parturient.montes.nascetur@aol.edu","address":"862-5219 Placerat Rd.","postalZip":"382323","country":"Brazil"},{"customerId":341,"customerName":"Quail Kennedy","phone":"(867) 221-6583","email":"nunc.quis.arcu@aol.org","address":"196-1452 Magna Ave","postalZip":"05255","country":"Costa Rica"},{"customerId":342,"customerName":"Violet Massey","phone":"1-277-634-2381","email":"ante@hotmail.ca","address":"Ap #378-4290 Suspendisse Avenue","postalZip":"43560","country":"Philippines"},{"customerId":343,"customerName":"Thomas Whitaker","phone":"1-767-722-9632","email":"orci.donec@aol.ca","address":"647-1109 Mi Rd.","postalZip":"16775","country":"Pakistan"},{"customerId":344,"customerName":"Orson Kidd","phone":"(671) 558-1733","email":"montes.nascetur@yahoo.couk","address":"Ap #139-5917 Rutrum Avenue","postalZip":"T5X 1EN","country":"Indonesia"},{"customerId":345,"customerName":"Sharon Sanders","phone":"1-709-128-4651","email":"orci.lobortis@icloud.ca","address":"182-6607 Accumsan Av.","postalZip":"54164","country":"Indonesia"},{"customerId":346,"customerName":"Kuame Gilmore","phone":"1-164-623-2250","email":"montes.nascetur@icloud.couk","address":"P.O. Box 611, 8816 Dapibus Ave","postalZip":"5476-8827","country":"South Korea"},{"customerId":347,"customerName":"Yetta Gamble","phone":"(113) 772-2838","email":"nisi.nibh@aol.com","address":"P.O. Box 136, 8433 Mauris, St.","postalZip":"23471","country":"China"},{"customerId":348,"customerName":"Cleo Bruce","phone":"(494) 454-5412","email":"euismod.urna@protonmail.edu","address":"P.O. Box 415, 9066 Neque. St.","postalZip":"49257","country":"Peru"},{"customerId":349,"customerName":"Rigel Miller","phone":"(557) 666-8730","email":"ultrices.duis@google.com","address":"770-4112 Fermentum Av.","postalZip":"2382-7561","country":"Germany"},{"customerId":350,"customerName":"Erica Ratliff","phone":"1-633-695-3559","email":"gravida@aol.ca","address":"Ap #114-9821 Nullam Avenue","postalZip":"47-128","country":"Turkey"},{"customerId":351,"customerName":"Asher Barnes","phone":"1-731-790-1527","email":"volutpat.nulla@hotmail.edu","address":"686-9182 Mattis. Rd.","postalZip":"5607","country":"South Africa"},{"customerId":352,"customerName":"Jane Bond","phone":"1-773-962-6237","email":"sit@hotmail.com","address":"9982 Arcu. Street","postalZip":"241644","country":"Singapore"},{"customerId":353,"customerName":"Veda Gates","phone":"1-525-719-1234","email":"ut.semper.pretium@hotmail.ca","address":"536-950 Mattis. Rd.","postalZip":"18354","country":"Spain"},{"customerId":354,"customerName":"Lisandra Hull","phone":"1-913-744-5839","email":"non.bibendum@outlook.edu","address":"P.O. Box 482, 5103 In Ave","postalZip":"69565","country":"Costa Rica"},{"customerId":355,"customerName":"Echo Diaz","phone":"(445) 405-4587","email":"non.cursus.non@google.edu","address":"Ap #855-3934 Proin Ave","postalZip":"3205","country":"Colombia"},{"customerId":356,"customerName":"Celeste Preston","phone":"1-261-688-8369","email":"ultrices.a.auctor@hotmail.com","address":"Ap #189-425 Metus Ave","postalZip":"413248","country":"China"},{"customerId":357,"customerName":"Keane Cervantes","phone":"1-582-238-7332","email":"urna.nunc@aol.edu","address":"Ap #870-6101 Dignissim Ave","postalZip":"54385","country":"New Zealand"},{"customerId":358,"customerName":"Kieran Lowe","phone":"1-524-443-9131","email":"duis.dignissim@protonmail.ca","address":"882 Etiam St.","postalZip":"J5X 7C4","country":"Singapore"},{"customerId":359,"customerName":"Isaiah Duran","phone":"1-511-634-8106","email":"tincidunt.neque@google.com","address":"P.O. Box 370, 4907 Risus Rd.","postalZip":"4572","country":"Nigeria"},{"customerId":360,"customerName":"Armando Yang","phone":"(718) 531-1069","email":"imperdiet@google.org","address":"571-4395 Montes, Street","postalZip":"774564","country":"Sweden"},{"customerId":361,"customerName":"Aretha Sawyer","phone":"(794) 398-6437","email":"urna@icloud.net","address":"995-4838 Euismod Street","postalZip":"1512","country":"Costa Rica"},{"customerId":362,"customerName":"Rogan Sloan","phone":"(889) 457-2267","email":"risus.a@protonmail.couk","address":"169-3718 Neque Rd.","postalZip":"625058","country":"Poland"},{"customerId":363,"customerName":"Julian Branch","phone":"1-128-430-2363","email":"libero@hotmail.ca","address":"P.O. Box 383, 1112 Neque Rd.","postalZip":"3657","country":"Poland"},{"customerId":364,"customerName":"Aidan Ayers","phone":"1-594-977-5864","email":"ac.risus@icloud.org","address":"P.O. Box 369, 4964 Tellus, Street","postalZip":"621482","country":"South Korea"},{"customerId":365,"customerName":"Kaitlin Peterson","phone":"(483) 656-1820","email":"sit@google.ca","address":"Ap #908-5222 Consectetuer Road","postalZip":"80440-32248","country":"South Korea"},{"customerId":366,"customerName":"Mark Jimenez","phone":"1-834-270-4558","email":"cras.vehicula@yahoo.couk","address":"P.O. Box 323, 4116 Neque Rd.","postalZip":"2825","country":"Germany"},{"customerId":367,"customerName":"Jin Lane","phone":"(284) 561-6240","email":"sem.mollis@outlook.com","address":"P.O. Box 443, 7371 Vitae Rd.","postalZip":"5311","country":"China"},{"customerId":368,"customerName":"Malachi Bender","phone":"(212) 377-1120","email":"at.arcu@yahoo.couk","address":"696-467 Nunc Rd.","postalZip":"21167","country":"Sweden"},{"customerId":369,"customerName":"Kasimir Strickland","phone":"(365) 534-5724","email":"arcu@yahoo.org","address":"Ap #778-5996 Tristique Ave","postalZip":"408322","country":"Austria"},{"customerId":370,"customerName":"Avram Landry","phone":"(725) 567-1191","email":"ante@outlook.edu","address":"Ap #595-7217 Fermentum Av.","postalZip":"95251","country":"Ukraine"},{"customerId":371,"customerName":"Charissa Soto","phone":"1-862-478-0734","email":"scelerisque.scelerisque.dui@icloud.com","address":"Ap #109-9179 Elit. Av.","postalZip":"872388","country":"New Zealand"},{"customerId":372,"customerName":"Josiah Rocha","phone":"(788) 631-9275","email":"eleifend.nec@hotmail.couk","address":"510-3381 Nunc St.","postalZip":"853868","country":"Indonesia"},{"customerId":373,"customerName":"Adara Tillman","phone":"1-878-908-6832","email":"commodo.hendrerit.donec@icloud.org","address":"Ap #639-5997 Nec Rd.","postalZip":"50212","country":"Norway"},{"customerId":374,"customerName":"Louis Skinner","phone":"(367) 631-2734","email":"at@hotmail.edu","address":"Ap #976-3050 Orci Street","postalZip":"PD6R 3PI","country":"United Kingdom"},{"customerId":375,"customerName":"Lacey Weeks","phone":"1-722-936-2754","email":"integer.mollis.integer@icloud.couk","address":"9313 Sem. Avenue","postalZip":"42176","country":"Poland"},{"customerId":376,"customerName":"Yvonne Kim","phone":"1-279-868-1631","email":"semper.pretium.neque@google.net","address":"Ap #656-7665 Est Avenue","postalZip":"13693","country":"South Africa"},{"customerId":377,"customerName":"Damian Jefferson","phone":"(741) 385-7251","email":"massa@yahoo.ca","address":"P.O. Box 511, 5696 Nam Av.","postalZip":"F8H 9Z4","country":"Ireland"},{"customerId":378,"customerName":"Craig Short","phone":"(763) 637-2831","email":"quisque@protonmail.edu","address":"Ap #282-3271 Est Street","postalZip":"4539","country":"South Korea"},{"customerId":379,"customerName":"Rhoda Mcknight","phone":"(741) 458-7914","email":"penatibus.et@icloud.ca","address":"Ap #565-6944 Cras Rd.","postalZip":"31824","country":"New Zealand"},{"customerId":380,"customerName":"Maile Mercer","phone":"1-566-245-7657","email":"luctus.lobortis.class@yahoo.edu","address":"Ap #439-3970 Fringilla Ave","postalZip":"28693","country":"Philippines"},{"customerId":381,"customerName":"Cullen Sellers","phone":"(398) 340-9244","email":"ac.orci@protonmail.net","address":"P.O. Box 460, 3283 Elit, Rd.","postalZip":"570427","country":"Philippines"},{"customerId":382,"customerName":"Kato Olson","phone":"(735) 555-2525","email":"at@google.couk","address":"Ap #391-8711 Ante Street","postalZip":"976564","country":"Italy"},{"customerId":383,"customerName":"Lionel Good","phone":"(474) 544-6638","email":"fermentum@hotmail.org","address":"Ap #863-5541 Vulputate St.","postalZip":"7317","country":"Norway"},{"customerId":384,"customerName":"Owen Mueller","phone":"(486) 407-7500","email":"leo.vivamus@google.net","address":"Ap #119-5560 Enim St.","postalZip":"C7Z 3Y5","country":"South Africa"},{"customerId":385,"customerName":"Kennan Acosta","phone":"1-394-556-5185","email":"magna@google.org","address":"Ap #306-7782 Sollicitudin St.","postalZip":"4693-7121","country":"Brazil"},{"customerId":386,"customerName":"Bruce Buckley","phone":"1-374-282-4315","email":"ac.eleifend@aol.edu","address":"Ap #695-1546 Eget Avenue","postalZip":"8714","country":"Pakistan"},{"customerId":387,"customerName":"Caldwell England","phone":"1-833-581-4760","email":"pharetra.nam.ac@google.couk","address":"Ap #614-3781 Suspendisse Street","postalZip":"439634","country":"Colombia"},{"customerId":388,"customerName":"Moses Gordon","phone":"(566) 867-2182","email":"elit.etiam@google.edu","address":"869-5000 Ac Ave","postalZip":"78-55","country":"Netherlands"},{"customerId":389,"customerName":"Abigail Mcintyre","phone":"1-799-679-0214","email":"ac.arcu@outlook.ca","address":"180-5468 Nec Rd.","postalZip":"308060","country":"Singapore"},{"customerId":390,"customerName":"Virginia Travis","phone":"(456) 164-4253","email":"neque.et@hotmail.org","address":"6945 Tincidunt, Av.","postalZip":"J6P 2G5","country":"Germany"},{"customerId":391,"customerName":"Iris Morse","phone":"1-766-815-6360","email":"dis.parturient.montes@icloud.ca","address":"P.O. Box 663, 9844 Sit Avenue","postalZip":"423762","country":"Canada"},{"customerId":392,"customerName":"Samson Douglas","phone":"(728) 447-8454","email":"aliquam.adipiscing@aol.ca","address":"Ap #573-5089 Orci, Av.","postalZip":"287604","country":"Sweden"},{"customerId":393,"customerName":"Stone Daniel","phone":"1-770-405-4824","email":"tempus@icloud.couk","address":"Ap #954-1907 Et Rd.","postalZip":"72021","country":"China"},{"customerId":394,"customerName":"Jade Vasquez","phone":"1-452-435-1738","email":"nec.quam@google.net","address":"7410 Imperdiet Rd.","postalZip":"82725","country":"Germany"},{"customerId":395,"customerName":"Mia Nguyen","phone":"(925) 746-8536","email":"tempor.est.ac@icloud.edu","address":"Ap #232-4245 At, St.","postalZip":"99515","country":"United Kingdom"},{"customerId":396,"customerName":"Jeremy Holloway","phone":"(379) 222-9206","email":"nec.ligula@icloud.couk","address":"P.O. Box 283, 2641 Consectetuer Rd.","postalZip":"08481","country":"Canada"},{"customerId":397,"customerName":"Dieter Richard","phone":"(338) 298-6841","email":"sit@icloud.net","address":"P.O. Box 852, 629 Laoreet, Rd.","postalZip":"YY6 5JT","country":"Italy"},{"customerId":398,"customerName":"Kylie Ballard","phone":"1-478-336-7431","email":"nec.imperdiet.nec@aol.org","address":"1952 Ipsum Rd.","postalZip":"73168","country":"Australia"},{"customerId":399,"customerName":"Winter Cox","phone":"(516) 421-8332","email":"pede.nonummy@hotmail.couk","address":"620-473 Lectus Rd.","postalZip":"57931","country":"Germany"},{"customerId":400,"customerName":"Maisie Vaughn","phone":"1-825-318-6435","email":"tempor.erat@yahoo.org","address":"453-4253 Tincidunt St.","postalZip":"74-74","country":"Pakistan"},{"customerId":401,"customerName":"Burton Lucas","phone":"(376) 658-4612","email":"libero.integer.in@protonmail.org","address":"Ap #898-8853 Eu Road","postalZip":"386871","country":"Canada"},{"customerId":402,"customerName":"Unity Mullins","phone":"1-837-312-6128","email":"lorem.vehicula@yahoo.ca","address":"386-632 Tellus Road","postalZip":"73338-56432","country":"Nigeria"},{"customerId":403,"customerName":"Basia Parks","phone":"1-440-883-7962","email":"erat.volutpat.nulla@protonmail.com","address":"Ap #599-610 Pharetra Street","postalZip":"68534-211","country":"Russian Federation"},{"customerId":404,"customerName":"Cameran Guy","phone":"1-271-354-1648","email":"bibendum.donec.felis@outlook.edu","address":"933-4282 Amet St.","postalZip":"77771","country":"Indonesia"},{"customerId":405,"customerName":"Wilma Lindsay","phone":"(963) 948-3167","email":"et.netus@aol.org","address":"Ap #935-3952 Mus. Avenue","postalZip":"363977","country":"Germany"},{"customerId":406,"customerName":"Axel Reyes","phone":"1-604-514-3222","email":"vestibulum.ante@icloud.net","address":"897-6751 Vitae Rd.","postalZip":"183503","country":"United States"},{"customerId":407,"customerName":"Sara Tran","phone":"(716) 494-7543","email":"interdum.enim@aol.net","address":"106-4176 Amet Av.","postalZip":"6200","country":"Russian Federation"},{"customerId":408,"customerName":"Zenia Dotson","phone":"1-265-516-3169","email":"pellentesque.ultricies.dignissim@google.ca","address":"Ap #433-2117 Lacus, Avenue","postalZip":"1893 FY","country":"Nigeria"},{"customerId":409,"customerName":"Ignatius Coleman","phone":"1-576-225-2466","email":"diam@yahoo.org","address":"757-8359 Sed Ave","postalZip":"33452","country":"United Kingdom"},{"customerId":410,"customerName":"Xavier Hughes","phone":"(204) 656-2774","email":"enim.nec@google.edu","address":"660-2867 Suspendisse Av.","postalZip":"62S 9R8","country":"Canada"},{"customerId":411,"customerName":"Kirestin Mcmillan","phone":"1-885-268-9515","email":"id.enim@aol.edu","address":"P.O. Box 517, 8457 Pede. Ave","postalZip":"11268","country":"Peru"},{"customerId":412,"customerName":"Herman Whitfield","phone":"(230) 690-5961","email":"gravida.aliquam@aol.edu","address":"344-3824 Morbi Street","postalZip":"9454","country":"New Zealand"},{"customerId":413,"customerName":"Dylan Pickett","phone":"(339) 874-7973","email":"posuere.at.velit@yahoo.net","address":"P.O. Box 362, 1266 Commodo Rd.","postalZip":"87661","country":"Philippines"},{"customerId":414,"customerName":"Gary Espinoza","phone":"(904) 288-9363","email":"vitae.velit.egestas@google.couk","address":"342-9066 Auctor Rd.","postalZip":"ZG2G 3JX","country":"Belgium"},{"customerId":415,"customerName":"Nehru Byrd","phone":"1-891-575-8280","email":"nonummy.fusce@icloud.com","address":"Ap #843-8303 Quis, St.","postalZip":"875063","country":"Ireland"},{"customerId":416,"customerName":"Tyler Riley","phone":"1-181-559-5170","email":"ornare@yahoo.net","address":"4328 Dui. Av.","postalZip":"6472","country":"Russian Federation"},{"customerId":417,"customerName":"Kelsey Faulkner","phone":"(522) 458-3587","email":"faucibus.orci.luctus@outlook.ca","address":"9385 Nibh Road","postalZip":"74703-435","country":"China"},{"customerId":418,"customerName":"Bruno Clark","phone":"(636) 893-0237","email":"phasellus@google.couk","address":"Ap #938-7753 At St.","postalZip":"GT7 9OV","country":"Germany"},{"customerId":419,"customerName":"Damian Burch","phone":"1-576-884-6072","email":"odio.sagittis@aol.com","address":"P.O. Box 391, 5587 Donec Av.","postalZip":"X82 4UF","country":"New Zealand"},{"customerId":420,"customerName":"Carol Ramsey","phone":"1-887-238-9733","email":"augue.ut.lacus@aol.ca","address":"Ap #799-2575 Ante Av.","postalZip":"189592","country":"Philippines"},{"customerId":421,"customerName":"Jena Barr","phone":"1-275-516-7237","email":"in.tempus.eu@protonmail.org","address":"Ap #359-2483 Nec Road","postalZip":"18381","country":"Singapore"},{"customerId":422,"customerName":"Kimberly Mays","phone":"1-251-208-1467","email":"sed.et.libero@outlook.edu","address":"198-9512 Aliquam St.","postalZip":"157671","country":"Poland"},{"customerId":423,"customerName":"Laith Kim","phone":"(478) 948-4743","email":"duis.a.mi@hotmail.net","address":"342-6341 Feugiat. Ave","postalZip":"3637","country":"Pakistan"},{"customerId":424,"customerName":"Orla Oneil","phone":"(388) 849-8159","email":"egestas.urna@aol.org","address":"6735 Nunc. Av.","postalZip":"29696","country":"Germany"},{"customerId":425,"customerName":"Charles Morton","phone":"(767) 519-3695","email":"aliquet.molestie.tellus@google.couk","address":"202-5602 Mi. Ave","postalZip":"12241","country":"Costa Rica"},{"customerId":426,"customerName":"Debra Sosa","phone":"1-201-400-2217","email":"justo.sit@icloud.org","address":"Ap #540-2810 Tincidunt, Av.","postalZip":"65718","country":"Colombia"},{"customerId":427,"customerName":"Hedwig Rosario","phone":"1-256-395-7566","email":"porttitor.scelerisque@protonmail.couk","address":"598-3605 Mi Ave","postalZip":"73746-699","country":"Vietnam"},{"customerId":428,"customerName":"Maxwell Shaffer","phone":"(305) 288-9774","email":"nam.tempor.diam@google.edu","address":"Ap #440-7692 Dictum. Road","postalZip":"27-74","country":"Vietnam"},{"customerId":429,"customerName":"Hamish Foreman","phone":"1-683-565-4311","email":"ac@google.com","address":"2305 Mauris Ave","postalZip":"S5K 6H8","country":"Russian Federation"},{"customerId":430,"customerName":"MacKenzie Cortez","phone":"1-418-976-4523","email":"at.nisi@google.net","address":"387-287 Nam Ave","postalZip":"77969","country":"Spain"},{"customerId":431,"customerName":"Oleg Stephens","phone":"1-436-287-3161","email":"elementum.lorem@icloud.ca","address":"9093 Sed Avenue","postalZip":"26532","country":"South Korea"},{"customerId":432,"customerName":"Joseph Fry","phone":"1-279-190-2967","email":"porttitor.vulputate@google.ca","address":"P.O. Box 593, 4292 Sagittis St.","postalZip":"85-24","country":"Australia"},{"customerId":433,"customerName":"Sybil Bullock","phone":"(878) 282-8810","email":"mi@aol.net","address":"Ap #821-9673 Eget Road","postalZip":"42-72","country":"China"},{"customerId":434,"customerName":"Tucker Stephens","phone":"1-485-422-1135","email":"nulla@icloud.ca","address":"P.O. Box 992, 1019 Amet Av.","postalZip":"2897","country":"Belgium"},{"customerId":435,"customerName":"Barrett Harmon","phone":"1-647-944-8773","email":"at@hotmail.edu","address":"462-1221 Aenean St.","postalZip":"442288","country":"Italy"},{"customerId":436,"customerName":"Kirk Sweeney","phone":"(452) 412-2973","email":"sodales@aol.net","address":"457-5872 Id, Av.","postalZip":"O56 7YS","country":"Chile"},{"customerId":437,"customerName":"Orson Bowers","phone":"1-948-408-6471","email":"facilisis.suspendisse@google.org","address":"995-7530 Nullam Avenue","postalZip":"1117","country":"Ireland"},{"customerId":438,"customerName":"Lila Gomez","phone":"(777) 644-5534","email":"ipsum.cursus.vestibulum@yahoo.edu","address":"734-9379 Suspendisse Rd.","postalZip":"4722","country":"Poland"},{"customerId":439,"customerName":"Jerry Hensley","phone":"1-522-705-8983","email":"orci.in@yahoo.couk","address":"Ap #664-8633 Orci St.","postalZip":"1215-1724","country":"South Africa"},{"customerId":440,"customerName":"Jackson Rodriquez","phone":"(405) 608-1438","email":"nullam.feugiat@hotmail.org","address":"P.O. Box 472, 8587 Ante Rd.","postalZip":"6883","country":"Austria"},{"customerId":441,"customerName":"Emi Tyler","phone":"1-206-862-4695","email":"neque.morbi@outlook.net","address":"407-4268 Penatibus Street","postalZip":"52323","country":"Chile"},{"customerId":442,"customerName":"Brynne Todd","phone":"(893) 834-3819","email":"vulputate.lacus@protonmail.net","address":"Ap #462-5927 Faucibus Av.","postalZip":"5748","country":"Nigeria"},{"customerId":443,"customerName":"Fitzgerald Valencia","phone":"1-447-557-3238","email":"lorem.ipsum@outlook.edu","address":"4238 Aliquam Road","postalZip":"85473","country":"Italy"},{"customerId":444,"customerName":"Martina Henson","phone":"(269) 158-1591","email":"ut@icloud.ca","address":"Ap #724-2429 Vel Street","postalZip":"12353","country":"United States"},{"customerId":445,"customerName":"Hasad Beach","phone":"1-810-426-2541","email":"faucibus@hotmail.com","address":"202-2982 Nec Rd.","postalZip":"9114 ZY","country":"United Kingdom"},{"customerId":446,"customerName":"Aphrodite Schneider","phone":"1-734-453-1155","email":"vitae.sodales.at@icloud.net","address":"3628 Aliquam Rd.","postalZip":"874155","country":"Norway"},{"customerId":447,"customerName":"Farrah Everett","phone":"1-467-236-7028","email":"ligula@hotmail.com","address":"949-7839 Sagittis. Av.","postalZip":"5495","country":"Singapore"},{"customerId":448,"customerName":"Silas Parks","phone":"1-212-565-6775","email":"suspendisse@outlook.net","address":"356-7448 Eu Rd.","postalZip":"54427","country":"Indonesia"},{"customerId":449,"customerName":"Aretha Whitney","phone":"1-133-722-0766","email":"facilisis@protonmail.edu","address":"187-5686 Urna Ave","postalZip":"664376","country":"Canada"},{"customerId":450,"customerName":"Chanda Kidd","phone":"(235) 285-8558","email":"euismod@outlook.edu","address":"P.O. Box 438, 6067 Cras Rd.","postalZip":"54444","country":"Germany"},{"customerId":451,"customerName":"Devin Nicholson","phone":"(537) 841-2636","email":"nunc@google.org","address":"Ap #727-5591 Vitae Avenue","postalZip":"9813","country":"Norway"},{"customerId":452,"customerName":"Mira Conner","phone":"1-731-932-6305","email":"sapien.gravida@outlook.net","address":"712-540 Congue Avenue","postalZip":"215067","country":"Italy"},{"customerId":453,"customerName":"Cameron Avery","phone":"1-711-110-5289","email":"mattis@google.edu","address":"962-2700 Duis Road","postalZip":"3807","country":"China"},{"customerId":454,"customerName":"Tara Mercado","phone":"(476) 424-5325","email":"vivamus@aol.edu","address":"327-4369 Feugiat. Rd.","postalZip":"68-88","country":"France"},{"customerId":455,"customerName":"Abdul Lyons","phone":"(393) 179-5521","email":"nunc.sed@yahoo.edu","address":"P.O. Box 252, 9089 Cursus St.","postalZip":"40616","country":"United Kingdom"},{"customerId":456,"customerName":"Kelsey Woods","phone":"1-598-278-2470","email":"scelerisque.neque.sed@hotmail.couk","address":"2006 Vivamus Avenue","postalZip":"177122","country":"China"},{"customerId":457,"customerName":"Ciara Russell","phone":"1-601-466-4670","email":"magna@icloud.edu","address":"P.O. Box 673, 3257 Sed, Av.","postalZip":"5876","country":"Sweden"},{"customerId":458,"customerName":"Doris Head","phone":"(458) 563-1867","email":"imperdiet.ullamcorper@yahoo.com","address":"Ap #821-2942 Lectus St.","postalZip":"67834-782","country":"Peru"},{"customerId":459,"customerName":"Simone Blackwell","phone":"(812) 501-7644","email":"ac.ipsum@protonmail.edu","address":"Ap #735-3018 Egestas Rd.","postalZip":"05571","country":"Turkey"},{"customerId":460,"customerName":"Laith Carlson","phone":"(825) 855-8848","email":"adipiscing.enim.mi@google.net","address":"8988 Amet, Street","postalZip":"8997 WU","country":"Germany"},{"customerId":461,"customerName":"Lavinia Mccall","phone":"(229) 384-0166","email":"dictum.augue@protonmail.couk","address":"687-598 Nisi. Ave","postalZip":"2805","country":"Pakistan"},{"customerId":462,"customerName":"Cynthia Lindsey","phone":"1-616-547-4933","email":"duis@yahoo.org","address":"Ap #542-1629 Dictum Rd.","postalZip":"681507","country":"Austria"},{"customerId":463,"customerName":"Mason Dennis","phone":"(630) 332-8318","email":"natoque.penatibus@yahoo.ca","address":"Ap #323-3212 Sociis Ave","postalZip":"87-746","country":"United Kingdom"},{"customerId":464,"customerName":"Rajah Osborn","phone":"1-542-883-3541","email":"ac.sem.ut@icloud.ca","address":"Ap #938-3674 Accumsan Av.","postalZip":"35041-33265","country":"Sweden"},{"customerId":465,"customerName":"Sopoline Watts","phone":"(676) 369-1232","email":"sodales@google.couk","address":"9673 Tincidunt, Rd.","postalZip":"316104","country":"Mexico"},{"customerId":466,"customerName":"Ifeoma Anthony","phone":"(616) 102-5432","email":"sapien.molestie@protonmail.ca","address":"586-5080 Eleifend Av.","postalZip":"8606","country":"Mexico"},{"customerId":467,"customerName":"Chandler Hunter","phone":"1-260-566-7096","email":"lorem@yahoo.com","address":"7734 Sed Rd.","postalZip":"3558","country":"Mexico"},{"customerId":468,"customerName":"Jackson Hernandez","phone":"1-467-786-5912","email":"orci.lobortis@outlook.couk","address":"P.O. Box 175, 4872 Eu, Av.","postalZip":"80108","country":"Canada"},{"customerId":469,"customerName":"Mark Roy","phone":"1-682-266-1885","email":"lorem@outlook.org","address":"Ap #636-8909 Velit St.","postalZip":"9763-1377","country":"New Zealand"},{"customerId":470,"customerName":"Amos Burke","phone":"(421) 955-9430","email":"ipsum.ac.mi@hotmail.edu","address":"Ap #183-2811 Nulla Rd.","postalZip":"12779","country":"United States"},{"customerId":471,"customerName":"Amethyst Reed","phone":"(551) 727-1287","email":"mi.duis@google.couk","address":"Ap #146-7303 Eu Avenue","postalZip":"635241","country":"New Zealand"},{"customerId":472,"customerName":"Josephine Skinner","phone":"(975) 427-6472","email":"egestas.hendrerit@outlook.net","address":"Ap #170-7914 Aliquam Avenue","postalZip":"6166 JN","country":"Chile"},{"customerId":473,"customerName":"Alan Sampson","phone":"1-132-527-6711","email":"eleifend.nec.malesuada@hotmail.org","address":"5271 Aptent Av.","postalZip":"4458-0172","country":"Russian Federation"},{"customerId":474,"customerName":"Samantha Rich","phone":"1-273-959-9671","email":"sed.molestie@protonmail.couk","address":"Ap #394-3258 Nascetur St.","postalZip":"5819-6511","country":"Germany"},{"customerId":475,"customerName":"Nicholas Robinson","phone":"1-462-463-0236","email":"pede@icloud.org","address":"Ap #875-8527 Cras Rd.","postalZip":"67-71","country":"Turkey"},{"customerId":476,"customerName":"Kareem Marquez","phone":"(766) 672-5176","email":"nulla.semper.tellus@hotmail.com","address":"Ap #940-2093 Commodo Ave","postalZip":"5680","country":"Costa Rica"},{"customerId":477,"customerName":"Griffin Clark","phone":"1-512-157-9846","email":"erat@protonmail.com","address":"6407 Tristique St.","postalZip":"31564","country":"France"},{"customerId":478,"customerName":"Keaton Hardin","phone":"(875) 498-4537","email":"placerat.velit@yahoo.edu","address":"347-3408 Et, Ave","postalZip":"34790","country":"United States"},{"customerId":479,"customerName":"Kyra Hawkins","phone":"(324) 476-1898","email":"mauris.eu@protonmail.net","address":"618-4767 Dolor Ave","postalZip":"6385-2734","country":"New Zealand"},{"customerId":480,"customerName":"Ivy Pugh","phone":"(174) 460-2389","email":"tempus@google.net","address":"246-3973 Aenean Avenue","postalZip":"53579-717","country":"Indonesia"},{"customerId":481,"customerName":"Henry Kirk","phone":"(343) 498-2121","email":"pellentesque.tincidunt@protonmail.com","address":"657-4860 Integer Avenue","postalZip":"143526","country":"China"},{"customerId":482,"customerName":"Harrison Kinney","phone":"(431) 984-6387","email":"nunc.sed@icloud.couk","address":"P.O. Box 722, 4947 Dignissim Avenue","postalZip":"41706","country":"Singapore"},{"customerId":483,"customerName":"Anthony Nicholson","phone":"(582) 854-4315","email":"feugiat.placerat@yahoo.edu","address":"665-1352 Ipsum Ave","postalZip":"21512","country":"Ireland"},{"customerId":484,"customerName":"Lionel Hurley","phone":"(448) 310-1278","email":"a.mi.fringilla@icloud.edu","address":"P.O. Box 945, 7019 Luctus. St.","postalZip":"74344","country":"Canada"},{"customerId":485,"customerName":"Lunea Mcleod","phone":"(482) 278-4754","email":"et.nunc.quisque@yahoo.ca","address":"Ap #198-3491 Arcu. Av.","postalZip":"418946","country":"Canada"},{"customerId":486,"customerName":"Mannix Pate","phone":"1-758-697-1711","email":"curabitur@icloud.com","address":"P.O. Box 480, 1716 Sed, St.","postalZip":"56-212","country":"Mexico"},{"customerId":487,"customerName":"Audrey Rosario","phone":"(756) 546-7628","email":"ultricies.dignissim@google.ca","address":"Ap #969-5674 Sed, St.","postalZip":"464523","country":"Turkey"},{"customerId":488,"customerName":"Regina Mcgowan","phone":"(795) 882-8157","email":"id@yahoo.com","address":"965 Magna. Avenue","postalZip":"97171","country":"Austria"},{"customerId":489,"customerName":"Fuller Huffman","phone":"1-665-460-8027","email":"suspendisse.non@outlook.couk","address":"Ap #412-6907 Mauris Avenue","postalZip":"23357","country":"Austria"},{"customerId":490,"customerName":"Knox Mclean","phone":"(652) 257-4851","email":"duis.sit.amet@yahoo.net","address":"Ap #613-8130 Scelerisque, Road","postalZip":"36640","country":"Australia"},{"customerId":491,"customerName":"Bethany Strickland","phone":"(745) 788-0145","email":"lacinia@icloud.org","address":"1365 Diam. Road","postalZip":"3548","country":"Colombia"},{"customerId":492,"customerName":"Minerva Garrett","phone":"1-327-405-1467","email":"cursus.et@hotmail.couk","address":"Ap #541-3798 A, Street","postalZip":"74183","country":"Costa Rica"},{"customerId":493,"customerName":"Callie Case","phone":"(453) 680-7347","email":"eu.nibh.vulputate@yahoo.edu","address":"543 Neque. St.","postalZip":"530125","country":"Netherlands"},{"customerId":494,"customerName":"Noelle Ellis","phone":"(558) 382-1374","email":"velit@google.edu","address":"P.O. Box 862, 280 Libero Ave","postalZip":"701885","country":"Russian Federation"},{"customerId":495,"customerName":"Paul Roth","phone":"1-754-620-5397","email":"commodo.tincidunt@google.couk","address":"P.O. Box 762, 5952 Cras Avenue","postalZip":"62712","country":"Poland"},{"customerId":496,"customerName":"Teagan Bailey","phone":"1-836-387-6271","email":"sed@yahoo.net","address":"P.O. Box 598, 4857 Pede St.","postalZip":"8046","country":"Costa Rica"},{"customerId":497,"customerName":"Lila Goff","phone":"(887) 136-9291","email":"nec@aol.couk","address":"Ap #569-661 Elit, Road","postalZip":"37427","country":"Mexico"},{"customerId":498,"customerName":"Chancellor Richards","phone":"1-828-651-5128","email":"dui@aol.edu","address":"P.O. Box 765, 9239 Integer Road","postalZip":"k2K 7C5","country":"Austria"},{"customerId":499,"customerName":"Inga Harvey","phone":"(240) 782-4863","email":"est.tempor@outlook.ca","address":"396-3585 Pellentesque, Road","postalZip":"55929-261","country":"Poland"},{"customerId":500,"customerName":"Glenna Norris","phone":"1-927-316-4142","email":"nunc@google.net","address":"P.O. Box 929, 9946 Dis Rd.","postalZip":"8563","country":"Brazil"},{"customerId":501,"customerName":"Nyssa Stephenson","phone":"(488) 446-9193","email":"nisi.sem@aol.net","address":"651-4051 Nunc Rd.","postalZip":"143764","country":"Canada"},{"customerId":502,"customerName":"Harrison Kirk","phone":"(673) 560-0943","email":"sociis@icloud.couk","address":"788-5989 Dolor. Rd.","postalZip":"59P 2S4","country":"United States"},{"customerId":503,"customerName":"Adara Beach","phone":"1-246-878-6774","email":"lectus@protonmail.net","address":"135-3892 Turpis Rd.","postalZip":"435146","country":"China"},{"customerId":504,"customerName":"Connor Collier","phone":"1-880-821-9747","email":"cras.pellentesque.sed@outlook.net","address":"426-8911 Enim Rd.","postalZip":"57684","country":"Canada"},{"customerId":505,"customerName":"Hadassah Marshall","phone":"(301) 783-2235","email":"fermentum.vel@icloud.ca","address":"519-7138 Mauris, Rd.","postalZip":"3874 XP","country":"Russian Federation"},{"customerId":506,"customerName":"Veronica O'brien","phone":"1-375-561-3633","email":"tincidunt.orci@protonmail.ca","address":"P.O. Box 191, 9421 Convallis Avenue","postalZip":"27283","country":"Brazil"},{"customerId":507,"customerName":"Raven Valentine","phone":"(223) 657-8582","email":"vehicula.et@hotmail.ca","address":"125-8482 Sapien. Avenue","postalZip":"37883","country":"Netherlands"},{"customerId":508,"customerName":"Britanney Rollins","phone":"(168) 257-6713","email":"ante.nunc.mauris@aol.org","address":"286-6279 Donec Rd.","postalZip":"51218","country":"Nigeria"},{"customerId":509,"customerName":"Valentine Koch","phone":"(321) 147-3456","email":"risus@icloud.net","address":"Ap #456-4172 Neque Rd.","postalZip":"21961","country":"Italy"},{"customerId":510,"customerName":"Anika Best","phone":"(977) 515-1763","email":"ligula.aenean@icloud.edu","address":"Ap #251-8905 Aliquet Street","postalZip":"82869-325","country":"France"},{"customerId":511,"customerName":"MacKensie Mendoza","phone":"1-179-987-4866","email":"at@protonmail.couk","address":"393 Etiam Street","postalZip":"353482","country":"Poland"},{"customerId":512,"customerName":"Kelly Marshall","phone":"1-577-874-3916","email":"augue.id@icloud.org","address":"623-343 Facilisis Rd.","postalZip":"6315","country":"Russian Federation"},{"customerId":513,"customerName":"Hedda Mcknight","phone":"1-417-992-7045","email":"tincidunt.nunc.ac@hotmail.com","address":"Ap #317-6393 Malesuada Road","postalZip":"46362","country":"Singapore"},{"customerId":514,"customerName":"Joseph Fields","phone":"1-213-582-5211","email":"libero.est.congue@yahoo.org","address":"296-8925 Tellus Road","postalZip":"87823","country":"Peru"},{"customerId":515,"customerName":"Madeline Mcdonald","phone":"1-658-662-6768","email":"nec@aol.org","address":"Ap #781-9617 Et Av.","postalZip":"72278","country":"Spain"},{"customerId":516,"customerName":"Uriah Mathews","phone":"(605) 535-2516","email":"pede.cum@yahoo.ca","address":"769-6678 Praesent St.","postalZip":"05172","country":"Mexico"},{"customerId":517,"customerName":"Mannix Watson","phone":"1-212-818-9062","email":"est@outlook.org","address":"Ap #380-1306 Magna Rd.","postalZip":"23-450","country":"Colombia"},{"customerId":518,"customerName":"Shafira Lawson","phone":"1-862-248-6621","email":"lectus.sit@outlook.com","address":"280-5710 Vestibulum Rd.","postalZip":"917435","country":"Ukraine"},{"customerId":519,"customerName":"Hyatt Roberts","phone":"1-475-223-8566","email":"nec@google.couk","address":"686-8777 Sit Ave","postalZip":"28241","country":"United Kingdom"},{"customerId":520,"customerName":"Nathan Ferguson","phone":"1-593-743-5347","email":"dictum.augue@outlook.net","address":"Ap #403-6631 Tortor. Rd.","postalZip":"7747","country":"Sweden"},{"customerId":521,"customerName":"Ciara Estes","phone":"(373) 665-9438","email":"sed.sem@protonmail.org","address":"Ap #608-2106 Molestie Rd.","postalZip":"365735","country":"Netherlands"},{"customerId":522,"customerName":"Irma Joseph","phone":"1-250-492-4536","email":"sed@yahoo.org","address":"778-7888 Id, Av.","postalZip":"7528","country":"Turkey"},{"customerId":523,"customerName":"Felix Melendez","phone":"(250) 270-7740","email":"mi.ac.mattis@yahoo.com","address":"P.O. Box 965, 2381 Eget St.","postalZip":"36470","country":"Philippines"},{"customerId":524,"customerName":"Blaze Wright","phone":"(315) 172-3485","email":"gravida@google.org","address":"8120 Nisl Ave","postalZip":"776259","country":"Poland"},{"customerId":525,"customerName":"Teegan Hanson","phone":"(547) 593-2365","email":"vulputate.nisi@hotmail.couk","address":"997-5345 Donec Avenue","postalZip":"54164","country":"Russian Federation"},{"customerId":526,"customerName":"Kalia Benjamin","phone":"1-827-847-1767","email":"nulla@yahoo.couk","address":"P.O. Box 874, 5418 Cursus Avenue","postalZip":"27558-72291","country":"Poland"},{"customerId":527,"customerName":"Hakeem Hunter","phone":"1-798-638-1667","email":"facilisis.suspendisse@google.net","address":"Ap #263-6555 Nascetur Ave","postalZip":"UY17 6RB","country":"United Kingdom"},{"customerId":528,"customerName":"Ginger Brooks","phone":"1-792-783-8388","email":"phasellus.fermentum.convallis@google.ca","address":"Ap #499-2572 Sit Street","postalZip":"12457","country":"China"},{"customerId":529,"customerName":"Lucius Pena","phone":"1-192-813-4825","email":"phasellus@icloud.couk","address":"830-4696 Eleifend Avenue","postalZip":"4126","country":"Germany"},{"customerId":530,"customerName":"Jayme Melendez","phone":"1-712-732-1982","email":"eu.turpis@google.net","address":"2860 Et, St.","postalZip":"648327","country":"Austria"},{"customerId":531,"customerName":"Jeanette Fisher","phone":"(280) 695-8221","email":"eu.tellus.eu@icloud.com","address":"Ap #171-4982 Dolor. Rd.","postalZip":"85445","country":"South Africa"},{"customerId":532,"customerName":"Cedric Gates","phone":"(393) 170-5143","email":"sit.amet@outlook.com","address":"6696 Amet, Rd.","postalZip":"8982","country":"Russian Federation"},{"customerId":533,"customerName":"Baxter Jacobs","phone":"(853) 758-7675","email":"neque.sed@outlook.ca","address":"P.O. Box 835, 4149 Et St.","postalZip":"J72 5EB","country":"Ireland"},{"customerId":534,"customerName":"Davis Conner","phone":"(416) 253-4837","email":"in.ornare.sagittis@icloud.couk","address":"643-4536 Ut Road","postalZip":"8920","country":"China"},{"customerId":535,"customerName":"Leilani Newman","phone":"1-787-122-5970","email":"tincidunt@aol.org","address":"Ap #662-9508 Nunc Avenue","postalZip":"729769","country":"Pakistan"},{"customerId":536,"customerName":"Driscoll Ochoa","phone":"1-242-343-0177","email":"fusce.diam.nunc@hotmail.net","address":"P.O. Box 812, 2146 Eget, Rd.","postalZip":"63523","country":"Ukraine"},{"customerId":537,"customerName":"Victoria Mcdonald","phone":"(570) 557-7966","email":"est@yahoo.edu","address":"913-7220 Placerat Avenue","postalZip":"14343","country":"Peru"},{"customerId":538,"customerName":"Wallace Rollins","phone":"(381) 193-2399","email":"felis@hotmail.net","address":"649-3006 Feugiat. Ave","postalZip":"31625","country":"Indonesia"},{"customerId":539,"customerName":"Yasir Fitzgerald","phone":"1-195-178-4435","email":"dignissim.pharetra@icloud.org","address":"Ap #190-296 Curae Avenue","postalZip":"67-37","country":"Mexico"},{"customerId":540,"customerName":"Jacqueline Olsen","phone":"1-562-756-8492","email":"metus@outlook.ca","address":"109-8931 Interdum Ave","postalZip":"731498","country":"Austria"},{"customerId":541,"customerName":"Ciaran Mcguire","phone":"(946) 115-4129","email":"erat@protonmail.org","address":"917-832 A, Av.","postalZip":"279857","country":"South Korea"},{"customerId":542,"customerName":"Dale Sargent","phone":"1-916-558-6909","email":"posuere.cubilia.curae@hotmail.couk","address":"896-6396 Cursus Rd.","postalZip":"17231","country":"Canada"},{"customerId":543,"customerName":"Maite Byers","phone":"1-626-684-6956","email":"odio.phasellus.at@hotmail.com","address":"198-5028 Donec Avenue","postalZip":"A4N 9K2","country":"Nigeria"},{"customerId":544,"customerName":"Evelyn Kidd","phone":"1-611-680-5685","email":"morbi.neque@icloud.org","address":"4637 Dolor Street","postalZip":"61660","country":"Canada"},{"customerId":545,"customerName":"Beverly Kennedy","phone":"(763) 572-2412","email":"arcu.vestibulum@google.couk","address":"9133 Pharetra Rd.","postalZip":"7452","country":"China"},{"customerId":546,"customerName":"Desiree Munoz","phone":"1-836-604-3260","email":"euismod.mauris@hotmail.com","address":"635-5531 Rutrum. St.","postalZip":"112837","country":"Australia"},{"customerId":547,"customerName":"Scott Young","phone":"1-415-751-2421","email":"nisi.sem@google.org","address":"Ap #768-7965 Id Road","postalZip":"DS8 2WM","country":"Chile"},{"customerId":548,"customerName":"Fritz Guthrie","phone":"(902) 730-6354","email":"quis.accumsan@outlook.ca","address":"Ap #810-7058 Tortor. Rd.","postalZip":"3463","country":"Indonesia"},{"customerId":549,"customerName":"Delilah Olson","phone":"1-935-206-6679","email":"molestie.sed@outlook.couk","address":"749-4811 Elit, Avenue","postalZip":"989687","country":"Italy"},{"customerId":550,"customerName":"Ocean Hammond","phone":"(625) 612-8475","email":"mauris.eu@google.net","address":"P.O. Box 627, 8827 Dignissim Av.","postalZip":"43-273","country":"Vietnam"},{"customerId":551,"customerName":"Yetta Estrada","phone":"(479) 924-2674","email":"pretium.neque@outlook.ca","address":"Ap #159-4500 Sed St.","postalZip":"754962","country":"Italy"},{"customerId":552,"customerName":"Ora Farley","phone":"1-677-747-5388","email":"nullam.scelerisque.neque@aol.net","address":"371-7270 Quis St.","postalZip":"505824","country":"South Korea"},{"customerId":553,"customerName":"Garrett Smith","phone":"(618) 432-5482","email":"tellus.non@hotmail.net","address":"427-2190 Bibendum Street","postalZip":"214110","country":"Chile"},{"customerId":554,"customerName":"Wyoming Vinson","phone":"1-887-555-4779","email":"rhoncus.proin.nisl@icloud.ca","address":"P.O. Box 562, 5139 Tincidunt Street","postalZip":"455286","country":"Canada"},{"customerId":555,"customerName":"Bert Poole","phone":"(662) 763-9768","email":"feugiat.lorem.ipsum@aol.couk","address":"625-9145 Eget, Av.","postalZip":"7734","country":"Ireland"},{"customerId":556,"customerName":"Octavius Leach","phone":"1-325-773-2762","email":"sodales.elit@google.ca","address":"3879 Pellentesque St.","postalZip":"546511","country":"United States"},{"customerId":557,"customerName":"Tana Kidd","phone":"1-825-533-5192","email":"nullam.vitae.diam@aol.org","address":"Ap #313-1958 Ullamcorper St.","postalZip":"5298","country":"Pakistan"},{"customerId":558,"customerName":"Jacqueline Olsen","phone":"(433) 134-1288","email":"suspendisse.non@icloud.couk","address":"Ap #413-9184 Rhoncus. Street","postalZip":"6812","country":"Austria"},{"customerId":559,"customerName":"Marvin Gutierrez","phone":"1-617-681-2368","email":"placerat.cras@protonmail.edu","address":"879-1720 Risus. Avenue","postalZip":"88-455","country":"South Korea"},{"customerId":560,"customerName":"Noelani Cooke","phone":"1-539-824-3543","email":"tortor.integer@yahoo.net","address":"P.O. Box 336, 5241 Euismod Rd.","postalZip":"5518","country":"Indonesia"},{"customerId":561,"customerName":"Dorian Gallegos","phone":"(920) 221-2964","email":"est.arcu.ac@google.org","address":"Ap #640-2766 Dapibus Street","postalZip":"4182","country":"Vietnam"},{"customerId":562,"customerName":"Dalton Deleon","phone":"1-147-904-5687","email":"at.velit.cras@yahoo.couk","address":"Ap #520-8053 Etiam Street","postalZip":"13815","country":"India"},{"customerId":563,"customerName":"Aquila Hardy","phone":"1-892-471-1741","email":"sociosqu.ad.litora@protonmail.net","address":"163-4575 Mi, St.","postalZip":"358622","country":"Costa Rica"},{"customerId":564,"customerName":"Hilel Velasquez","phone":"(360) 462-0252","email":"ac.orci@aol.couk","address":"Ap #101-5936 Nonummy. Street","postalZip":"1330 HL","country":"Turkey"},{"customerId":565,"customerName":"Gray Adkins","phone":"(623) 381-8277","email":"ac.mattis@hotmail.couk","address":"Ap #502-8134 Ultrices. St.","postalZip":"85-604","country":"Belgium"},{"customerId":566,"customerName":"Maisie Figueroa","phone":"(362) 422-5624","email":"aenean.eget.magna@aol.com","address":"949 Dapibus St.","postalZip":"JD21 7CN","country":"China"},{"customerId":567,"customerName":"Wilma Waller","phone":"(628) 453-8081","email":"fringilla.donec@outlook.com","address":"999-1556 Consequat St.","postalZip":"2450","country":"United States"},{"customerId":568,"customerName":"Azalia Jefferson","phone":"1-388-342-7824","email":"at@outlook.edu","address":"Ap #997-4777 Auctor Rd.","postalZip":"631737","country":"New Zealand"},{"customerId":569,"customerName":"Jasmine Paul","phone":"1-263-736-6933","email":"natoque@protonmail.couk","address":"Ap #555-9404 Massa. Street","postalZip":"874231","country":"South Korea"},{"customerId":570,"customerName":"Dominic Reyes","phone":"1-256-778-6437","email":"curabitur@icloud.net","address":"Ap #760-9437 Pharetra. St.","postalZip":"20519","country":"Italy"},{"customerId":571,"customerName":"Samantha Cooke","phone":"1-434-524-2483","email":"egestas@outlook.net","address":"Ap #368-4676 Mauris. Rd.","postalZip":"17494","country":"Germany"},{"customerId":572,"customerName":"Shaine Gutierrez","phone":"1-434-746-3559","email":"cras@hotmail.couk","address":"521-7500 Vel, Ave","postalZip":"40094-65025","country":"Canada"},{"customerId":573,"customerName":"Gareth Merritt","phone":"(232) 648-2262","email":"eu.odio.phasellus@google.ca","address":"179-8793 Aliquet. Ave","postalZip":"80722-03176","country":"Vietnam"},{"customerId":574,"customerName":"Grant Spears","phone":"(446) 575-1687","email":"natoque.penatibus@icloud.net","address":"P.O. Box 882, 5281 Sed Av.","postalZip":"Y1X 6C2","country":"Indonesia"},{"customerId":575,"customerName":"Fatima Briggs","phone":"(817) 466-2347","email":"mauris@google.com","address":"Ap #499-6101 Nisl Rd.","postalZip":"685408","country":"Austria"},{"customerId":576,"customerName":"Adena Jenkins","phone":"1-827-384-4189","email":"phasellus@icloud.net","address":"639-4162 Fermentum Ave","postalZip":"S0T 7M7","country":"Indonesia"},{"customerId":577,"customerName":"Daniel Gould","phone":"1-642-838-4917","email":"elementum.sem@hotmail.com","address":"Ap #259-3320 Ornare, Road","postalZip":"3254","country":"Nigeria"},{"customerId":578,"customerName":"Teegan Ballard","phone":"(775) 167-9434","email":"eget.metus@yahoo.org","address":"7074 Ultrices Street","postalZip":"492735","country":"United States"},{"customerId":579,"customerName":"Mira Simpson","phone":"1-784-686-7061","email":"luctus@icloud.com","address":"393-8282 Arcu Av.","postalZip":"75566","country":"Colombia"},{"customerId":580,"customerName":"Orla Blackburn","phone":"(760) 519-1668","email":"lobortis@outlook.org","address":"Ap #225-2349 Lorem Rd.","postalZip":"31-275","country":"Indonesia"},{"customerId":581,"customerName":"Libby Ayala","phone":"1-881-348-0370","email":"litora@outlook.net","address":"944-9556 Mauris Street","postalZip":"64394","country":"France"},{"customerId":582,"customerName":"Fleur Bryant","phone":"1-570-373-5022","email":"quis.lectus@google.edu","address":"Ap #587-2992 Fusce St.","postalZip":"88-673","country":"South Africa"},{"customerId":583,"customerName":"Silas Solomon","phone":"1-687-266-0815","email":"ipsum.phasellus.vitae@protonmail.edu","address":"Ap #301-1947 Tincidunt Av.","postalZip":"5684","country":"France"},{"customerId":584,"customerName":"Ferdinand Huff","phone":"1-664-644-8882","email":"pellentesque.habitant.morbi@outlook.net","address":"Ap #561-9750 Lacinia Road","postalZip":"0825","country":"Chile"},{"customerId":585,"customerName":"Leandra Diaz","phone":"(240) 640-0661","email":"et.arcu@yahoo.org","address":"P.O. Box 267, 7684 Dui. Avenue","postalZip":"365186","country":"Australia"},{"customerId":586,"customerName":"Minerva Harrington","phone":"(754) 263-5758","email":"lorem.eu@outlook.net","address":"P.O. Box 451, 1025 Proin Road","postalZip":"764417","country":"Colombia"},{"customerId":587,"customerName":"Thomas Simpson","phone":"1-208-772-3126","email":"luctus.aliquet.odio@hotmail.couk","address":"P.O. Box 703, 5490 Adipiscing Rd.","postalZip":"A2X 5G8","country":"Russian Federation"},{"customerId":588,"customerName":"Erin Henson","phone":"1-350-661-7063","email":"pellentesque.ultricies@outlook.ca","address":"2751 Cum Avenue","postalZip":"4198","country":"Sweden"},{"customerId":589,"customerName":"Calista Scott","phone":"1-620-596-3205","email":"diam.eu@protonmail.edu","address":"Ap #129-5858 Ligula. Rd.","postalZip":"3724-8534","country":"Australia"},{"customerId":590,"customerName":"Bruno Stewart","phone":"1-553-168-7857","email":"gravida.sagittis@protonmail.couk","address":"702-8683 Vulputate St.","postalZip":"144072","country":"Italy"},{"customerId":591,"customerName":"Bianca Aguirre","phone":"(331) 966-6162","email":"aliquam.adipiscing@icloud.net","address":"458-2329 Luctus, Road","postalZip":"85566-704","country":"South Korea"},{"customerId":592,"customerName":"Beverly Rios","phone":"(601) 583-8069","email":"lacus@protonmail.couk","address":"Ap #636-9265 Duis Road","postalZip":"2672-8608","country":"United States"},{"customerId":593,"customerName":"Roth Phillips","phone":"1-734-760-8340","email":"nec@google.org","address":"1107 Ac Avenue","postalZip":"752238","country":"Philippines"},{"customerId":594,"customerName":"Kasimir Gibson","phone":"(776) 752-1682","email":"quis.arcu@icloud.org","address":"P.O. Box 109, 5024 Aliquet. Avenue","postalZip":"34655","country":"United Kingdom"},{"customerId":595,"customerName":"Tasha Franco","phone":"1-621-287-0694","email":"sodales@aol.org","address":"207-3833 Felis. St.","postalZip":"20171","country":"Belgium"},{"customerId":596,"customerName":"Keith Price","phone":"(493) 756-7826","email":"donec.elementum@yahoo.net","address":"736-8931 Tempus, Rd.","postalZip":"24195","country":"United States"},{"customerId":597,"customerName":"Lara Goodman","phone":"(494) 243-3514","email":"nascetur.ridiculus.mus@google.couk","address":"573-4759 Morbi Rd.","postalZip":"06169","country":"Ireland"},{"customerId":598,"customerName":"Latifah Carney","phone":"(821) 755-4774","email":"lectus.sit.amet@icloud.couk","address":"587 Bibendum Ave","postalZip":"394378","country":"Chile"},{"customerId":599,"customerName":"Marshall O'donnell","phone":"(757) 348-3863","email":"posuere.enim.nisl@yahoo.couk","address":"319-3666 Nisi St.","postalZip":"30151","country":"Peru"},{"customerId":600,"customerName":"Holmes Fry","phone":"(912) 516-3702","email":"mauris.blandit.mattis@google.edu","address":"952-4860 Nec Avenue","postalZip":"44746","country":"Singapore"},{"customerId":601,"customerName":"Addison Deleon","phone":"(212) 482-6884","email":"suscipit@google.net","address":"Ap #371-3261 Netus St.","postalZip":"215748","country":"Chile"},{"customerId":602,"customerName":"Emmanuel Padilla","phone":"1-798-831-9342","email":"velit.quisque@protonmail.org","address":"Ap #102-5764 Enim Street","postalZip":"0368","country":"Spain"},{"customerId":603,"customerName":"Reese Bowman","phone":"1-148-532-8595","email":"ornare.sagittis@icloud.ca","address":"Ap #279-411 Pede Av.","postalZip":"R1H 5M3","country":"Sweden"},{"customerId":604,"customerName":"Veronica Patel","phone":"1-877-740-5385","email":"nibh.phasellus@google.com","address":"P.O. Box 673, 4242 Praesent St.","postalZip":"606153","country":"Australia"},{"customerId":605,"customerName":"Scarlet Reilly","phone":"1-182-353-3428","email":"commodo.hendrerit@protonmail.edu","address":"Ap #827-4924 Neque St.","postalZip":"738494","country":"Norway"},{"customerId":606,"customerName":"Gwendolyn Mathews","phone":"1-508-473-4884","email":"accumsan@outlook.edu","address":"645-2639 Arcu. St.","postalZip":"15178","country":"Austria"},{"customerId":607,"customerName":"Isabella Rios","phone":"(246) 593-1542","email":"arcu.et@yahoo.edu","address":"P.O. Box 370, 2215 Erat Ave","postalZip":"T0C 8Z7","country":"Canada"},{"customerId":608,"customerName":"Lucas Mendez","phone":"1-425-765-6172","email":"vehicula@aol.ca","address":"P.O. Box 897, 1093 Natoque Av.","postalZip":"1224","country":"Singapore"},{"customerId":609,"customerName":"Roth Navarro","phone":"1-547-632-4738","email":"condimentum.donec@protonmail.net","address":"Ap #585-2964 Nunc St.","postalZip":"29266","country":"Costa Rica"},{"customerId":610,"customerName":"Zahir Hart","phone":"(297) 368-8321","email":"faucibus.leo@hotmail.edu","address":"5085 A Rd.","postalZip":"164438","country":"Spain"},{"customerId":611,"customerName":"Stuart Patton","phone":"(251) 356-9123","email":"in.cursus.et@protonmail.ca","address":"2626 Posuere St.","postalZip":"5630","country":"South Africa"},{"customerId":612,"customerName":"Acton Mcclure","phone":"1-547-240-2255","email":"eget.varius@aol.edu","address":"483-2879 Morbi St.","postalZip":"WW8 8AE","country":"United Kingdom"},{"customerId":613,"customerName":"Kirk Glass","phone":"(427) 981-2115","email":"aenean.egestas@hotmail.com","address":"136-6488 Vel Ave","postalZip":"156088","country":"Philippines"},{"customerId":614,"customerName":"Shaine Doyle","phone":"(323) 236-1058","email":"odio.auctor@google.ca","address":"821-8566 Vivamus Rd.","postalZip":"68-46","country":"Netherlands"},{"customerId":615,"customerName":"Charissa Nelson","phone":"(101) 779-7370","email":"est.congue@protonmail.org","address":"P.O. Box 750, 4014 Sit Av.","postalZip":"91652","country":"Poland"},{"customerId":616,"customerName":"Kylan Hess","phone":"1-636-781-3576","email":"erat.vel@icloud.com","address":"5559 Est. St.","postalZip":"43166","country":"Belgium"},{"customerId":617,"customerName":"Oliver Kidd","phone":"(774) 826-1866","email":"magna.malesuada@protonmail.couk","address":"5401 Felis Ave","postalZip":"1612","country":"Turkey"},{"customerId":618,"customerName":"Reuben Weiss","phone":"(446) 844-1200","email":"donec@outlook.net","address":"P.O. Box 963, 2495 Cum Ave","postalZip":"7660","country":"New Zealand"},{"customerId":619,"customerName":"Urielle Hoover","phone":"(434) 254-0953","email":"enim.nec.tempus@yahoo.couk","address":"110-3560 Vel St.","postalZip":"3673","country":"Pakistan"},{"customerId":620,"customerName":"Herrod Salinas","phone":"(669) 771-1778","email":"iaculis.lacus.pede@protonmail.org","address":"225 Vestibulum St.","postalZip":"1120","country":"Chile"},{"customerId":621,"customerName":"Hilel Dawson","phone":"1-123-123-2258","email":"aliquam.eros@google.edu","address":"4536 Euismod Av.","postalZip":"1625 LF","country":"Germany"},{"customerId":622,"customerName":"MacKenzie Goodwin","phone":"(564) 222-3923","email":"luctus@aol.org","address":"Ap #703-4059 Sed St.","postalZip":"12821","country":"Nigeria"},{"customerId":623,"customerName":"Charles Alvarado","phone":"1-427-285-1374","email":"imperdiet.nec.leo@google.edu","address":"Ap #705-1155 Lobortis St.","postalZip":"AW89 4SR","country":"Canada"},{"customerId":624,"customerName":"Wallace Pacheco","phone":"(772) 608-4537","email":"eu.euismod.ac@protonmail.net","address":"989-328 Dictum Ave","postalZip":"SG6M 6PC","country":"India"},{"customerId":625,"customerName":"Alika Hopkins","phone":"(430) 434-4238","email":"lobortis.quis.pede@outlook.com","address":"369-2013 Vestibulum Av.","postalZip":"43017","country":"China"},{"customerId":626,"customerName":"Nigel Sanchez","phone":"(348) 575-6596","email":"aliquet.diam@yahoo.couk","address":"Ap #770-6731 Viverra. Av.","postalZip":"45454","country":"Sweden"},{"customerId":627,"customerName":"Serina Mcdaniel","phone":"(211) 826-1378","email":"non.feugiat.nec@google.ca","address":"380-2587 Tincidunt Av.","postalZip":"834268","country":"Singapore"},{"customerId":628,"customerName":"Mary Chandler","phone":"1-596-179-8727","email":"egestas.a@yahoo.net","address":"Ap #644-2525 Nunc. St.","postalZip":"57885","country":"Nigeria"},{"customerId":629,"customerName":"Brennan Orr","phone":"(897) 271-4681","email":"nam@yahoo.net","address":"4038 Ac, Ave","postalZip":"0458-4457","country":"Turkey"},{"customerId":630,"customerName":"Kaseem Bray","phone":"1-232-894-6176","email":"aenean@aol.com","address":"177-2498 Libero. Av.","postalZip":"26777-65688","country":"Chile"},{"customerId":631,"customerName":"Perry Graham","phone":"(879) 766-4653","email":"feugiat.placerat@icloud.com","address":"P.O. Box 246, 2060 Enim Road","postalZip":"744244","country":"United States"},{"customerId":632,"customerName":"Alea Valdez","phone":"1-461-710-7814","email":"diam.vel@protonmail.com","address":"110-6708 Auctor Avenue","postalZip":"183890","country":"Vietnam"},{"customerId":633,"customerName":"Regan Chan","phone":"(363) 671-1723","email":"orci@yahoo.edu","address":"P.O. Box 264, 9041 Phasellus St.","postalZip":"81183","country":"Ukraine"},{"customerId":634,"customerName":"Joseph Vaughan","phone":"1-366-717-1684","email":"tempor.arcu.vestibulum@aol.com","address":"P.O. Box 798, 7326 Nunc Street","postalZip":"20167","country":"Ukraine"},{"customerId":635,"customerName":"Amela Waller","phone":"1-840-538-2183","email":"ornare.facilisis@protonmail.net","address":"864-3029 Luctus Ave","postalZip":"31322","country":"Netherlands"},{"customerId":636,"customerName":"Quamar Frederick","phone":"(179) 524-8652","email":"cras@yahoo.ca","address":"Ap #931-4100 Nunc Ave","postalZip":"47297","country":"Belgium"},{"customerId":637,"customerName":"Burton Nixon","phone":"1-737-195-4332","email":"dui.suspendisse.ac@google.net","address":"P.O. Box 106, 3415 Nunc Street","postalZip":"18416","country":"Canada"},{"customerId":638,"customerName":"John Mcknight","phone":"1-545-501-7021","email":"aliquam.ultrices@hotmail.edu","address":"Ap #217-8190 Malesuada Road","postalZip":"744443","country":"Turkey"},{"customerId":639,"customerName":"Abigail Melton","phone":"(147) 938-2385","email":"rutrum@hotmail.ca","address":"282-5786 Senectus Rd.","postalZip":"57910","country":"Pakistan"},{"customerId":640,"customerName":"Tanner Wilcox","phone":"(798) 267-7743","email":"accumsan@outlook.net","address":"690-1638 A, Avenue","postalZip":"2488","country":"Netherlands"},{"customerId":641,"customerName":"Callum Reid","phone":"(156) 229-7883","email":"mattis.velit.justo@google.com","address":"3702 Sit Av.","postalZip":"54-28","country":"Austria"},{"customerId":642,"customerName":"Cain Galloway","phone":"(363) 249-6466","email":"id@aol.com","address":"Ap #842-8547 Aenean Street","postalZip":"58954-577","country":"United Kingdom"},{"customerId":643,"customerName":"Remedios Mason","phone":"1-774-284-8441","email":"posuere.vulputate@aol.edu","address":"458-2050 Posuere Road","postalZip":"701631","country":"New Zealand"},{"customerId":644,"customerName":"Deanna Cooper","phone":"1-782-834-4857","email":"tempor@icloud.ca","address":"464-4869 Adipiscing, Rd.","postalZip":"8445","country":"Germany"},{"customerId":645,"customerName":"Steven Woodward","phone":"1-523-213-6682","email":"eu.tellus.eu@aol.couk","address":"P.O. Box 369, 838 Eget, Ave","postalZip":"412482","country":"Norway"},{"customerId":646,"customerName":"Irma West","phone":"1-651-575-1113","email":"orci@hotmail.ca","address":"337-6977 Vivamus Rd.","postalZip":"7325","country":"South Africa"},{"customerId":647,"customerName":"Hall Jordan","phone":"1-987-762-8380","email":"praesent.interdum.ligula@yahoo.net","address":"8740 Tortor, Rd.","postalZip":"972310","country":"Chile"},{"customerId":648,"customerName":"Hammett Hoover","phone":"(543) 389-3255","email":"eros@outlook.org","address":"873-6316 Aptent St.","postalZip":"34254","country":"Russian Federation"},{"customerId":649,"customerName":"Jared Vazquez","phone":"(124) 883-2424","email":"sit@icloud.com","address":"145-4203 Ac St.","postalZip":"08126","country":"Costa Rica"},{"customerId":650,"customerName":"Stuart Solis","phone":"1-785-565-7532","email":"elit@protonmail.net","address":"Ap #773-7339 Ut Avenue","postalZip":"459651","country":"Pakistan"},{"customerId":651,"customerName":"Ezra Randall","phone":"1-286-196-2577","email":"nulla.aliquet.proin@aol.ca","address":"361-3578 Non, St.","postalZip":"3974152","country":"Indonesia"},{"customerId":652,"customerName":"Rosalyn Cline","phone":"(445) 586-6211","email":"lacus.quisque.imperdiet@protonmail.edu","address":"Ap #521-8621 Nullam St.","postalZip":"88690-78194","country":"South Africa"},{"customerId":653,"customerName":"Levi Montoya","phone":"1-388-255-0464","email":"erat.etiam@google.net","address":"416 Gravida Rd.","postalZip":"18-34","country":"Italy"},{"customerId":654,"customerName":"Carissa Simpson","phone":"1-753-856-2484","email":"consequat@outlook.com","address":"548-646 Molestie Rd.","postalZip":"3661","country":"United Kingdom"},{"customerId":655,"customerName":"Justina Spencer","phone":"1-511-332-1866","email":"hendrerit.neque.in@yahoo.com","address":"5947 Ullamcorper Ave","postalZip":"603471","country":"France"},{"customerId":656,"customerName":"Brandon Shaw","phone":"1-730-528-0576","email":"mauris@yahoo.net","address":"4160 Mattis. St.","postalZip":"47742","country":"Costa Rica"},{"customerId":657,"customerName":"Edward Vang","phone":"1-715-387-4508","email":"nonummy@protonmail.couk","address":"Ap #440-5219 Phasellus Rd.","postalZip":"A23 2QR","country":"Nigeria"},{"customerId":658,"customerName":"Aurora Grimes","phone":"(515) 242-7709","email":"proin.velit@protonmail.org","address":"Ap #597-539 Consectetuer Av.","postalZip":"22090","country":"Brazil"},{"customerId":659,"customerName":"Benedict Stewart","phone":"1-541-537-9186","email":"cubilia.curae.donec@outlook.couk","address":"371-3926 Tincidunt Rd.","postalZip":"58487","country":"Nigeria"},{"customerId":660,"customerName":"Ali Greer","phone":"1-752-415-4598","email":"cras@google.org","address":"Ap #476-6926 Sem. Rd.","postalZip":"23072","country":"Vietnam"},{"customerId":661,"customerName":"Amanda Stout","phone":"1-714-859-7121","email":"in.lorem@outlook.net","address":"158-4725 Metus Road","postalZip":"60379-412","country":"Singapore"},{"customerId":662,"customerName":"Zephania Melton","phone":"1-162-285-7203","email":"vitae@icloud.com","address":"Ap #508-2203 Dolor Av.","postalZip":"752838","country":"United States"},{"customerId":663,"customerName":"Ila Wells","phone":"(408) 892-5835","email":"augue.scelerisque.mollis@outlook.couk","address":"169-2929 Dictum Street","postalZip":"6523","country":"Ireland"},{"customerId":664,"customerName":"Zelda Osborne","phone":"1-694-428-8215","email":"pellentesque.massa@protonmail.ca","address":"957-3193 Vitae Ave","postalZip":"63838","country":"Turkey"},{"customerId":665,"customerName":"Hayfa Morse","phone":"(504) 553-1070","email":"sit@google.ca","address":"101-6493 Nisl. Rd.","postalZip":"42781","country":"South Korea"},{"customerId":666,"customerName":"Laura Pearson","phone":"1-516-646-4418","email":"leo@yahoo.org","address":"Ap #279-8832 Fusce Rd.","postalZip":"184383","country":"Russian Federation"},{"customerId":667,"customerName":"Germaine Browning","phone":"(467) 471-6433","email":"donec@aol.org","address":"9800 Dolor St.","postalZip":"345658","country":"Brazil"},{"customerId":668,"customerName":"Colleen Gay","phone":"(173) 837-5983","email":"aliquam.adipiscing.lobortis@aol.org","address":"854-9919 Diam Rd.","postalZip":"439477","country":"Singapore"},{"customerId":669,"customerName":"Jin Gomez","phone":"1-508-953-4683","email":"scelerisque.scelerisque@outlook.com","address":"Ap #492-9808 Lorem Street","postalZip":"50513","country":"Austria"},{"customerId":670,"customerName":"Beverly O'Neill","phone":"(424) 629-8591","email":"sodales.elit@icloud.edu","address":"3160 Nulla Av.","postalZip":"M08 5IQ","country":"Canada"},{"customerId":671,"customerName":"Abel Wilkerson","phone":"1-828-866-8232","email":"rhoncus.nullam@protonmail.edu","address":"918-1271 Enim, Street","postalZip":"726762","country":"Italy"},{"customerId":672,"customerName":"Serena Olson","phone":"(497) 648-1175","email":"neque.sed.sem@aol.couk","address":"Ap #599-5709 Lorem Ave","postalZip":"7852","country":"Belgium"},{"customerId":673,"customerName":"Melodie Banks","phone":"(981) 482-2153","email":"ipsum.donec@yahoo.org","address":"304-4015 Nulla Street","postalZip":"66745-17125","country":"Belgium"},{"customerId":674,"customerName":"Samuel Padilla","phone":"(631) 341-4296","email":"non.sollicitudin@aol.couk","address":"Ap #354-4137 A, Rd.","postalZip":"08422","country":"Pakistan"},{"customerId":675,"customerName":"Kiara Wilkins","phone":"(769) 278-5299","email":"mauris@icloud.couk","address":"1414 Ullamcorper Rd.","postalZip":"46725","country":"Brazil"},{"customerId":676,"customerName":"Brenna Noble","phone":"(772) 413-0763","email":"arcu.ac@protonmail.net","address":"Ap #704-1686 Eu Rd.","postalZip":"645582","country":"Costa Rica"},{"customerId":677,"customerName":"Ferris Cochran","phone":"1-252-258-7184","email":"feugiat.metus.sit@yahoo.couk","address":"Ap #608-624 Varius Ave","postalZip":"444011","country":"Netherlands"},{"customerId":678,"customerName":"Alfreda Dunlap","phone":"(872) 136-2334","email":"at.pretium@hotmail.couk","address":"Ap #172-6043 Nunc Avenue","postalZip":"697784","country":"Singapore"},{"customerId":679,"customerName":"Ishmael Huffman","phone":"1-826-514-6037","email":"ornare.in@google.ca","address":"Ap #708-1539 Mi St.","postalZip":"2417-5672","country":"Philippines"},{"customerId":680,"customerName":"Fredericka Rojas","phone":"1-922-673-8608","email":"et@icloud.edu","address":"Ap #991-728 Primis Rd.","postalZip":"16231","country":"Russian Federation"},{"customerId":681,"customerName":"Emmanuel Bray","phone":"(429) 581-3113","email":"aliquam.gravida@outlook.net","address":"P.O. Box 617, 9505 Pellentesque Rd.","postalZip":"6622","country":"Italy"},{"customerId":682,"customerName":"Gage Holland","phone":"(275) 344-5235","email":"ac.ipsum@google.net","address":"3807 Porttitor St.","postalZip":"645584","country":"France"},{"customerId":683,"customerName":"Kellie Fleming","phone":"(543) 716-3161","email":"eu.erat@icloud.ca","address":"250-9433 Conubia Street","postalZip":"53L 5N9","country":"Belgium"},{"customerId":684,"customerName":"Dennis Stephens","phone":"1-665-763-3476","email":"pede.cras@yahoo.ca","address":"P.O. Box 797, 5672 Dolor. Rd.","postalZip":"65441","country":"Sweden"},{"customerId":685,"customerName":"Graiden Kerr","phone":"(806) 625-2677","email":"sed@aol.couk","address":"993-1068 Vulputate Rd.","postalZip":"46138","country":"Chile"},{"customerId":686,"customerName":"Chancellor Cooper","phone":"(673) 268-1631","email":"gravida.molestie.arcu@protonmail.edu","address":"Ap #284-6591 Eu, Street","postalZip":"386178","country":"Australia"},{"customerId":687,"customerName":"Kaitlin Hogan","phone":"(316) 511-2546","email":"turpis.egestas@yahoo.couk","address":"P.O. Box 720, 7028 Fermentum Av.","postalZip":"41673","country":"Australia"},{"customerId":688,"customerName":"Bianca Andrews","phone":"(359) 741-5673","email":"non.ante@protonmail.com","address":"4456 Odio. Rd.","postalZip":"M3T 0P7","country":"Nigeria"},{"customerId":689,"customerName":"Daria Lewis","phone":"(575) 419-6548","email":"urna.vivamus.molestie@yahoo.org","address":"105-7264 Erat Street","postalZip":"2825 XE","country":"New Zealand"},{"customerId":690,"customerName":"Ivan Long","phone":"(164) 596-2633","email":"ac@icloud.net","address":"484 Facilisis, Road","postalZip":"3575","country":"Peru"},{"customerId":691,"customerName":"Chiquita Bird","phone":"1-324-512-8855","email":"fusce.dolor@hotmail.ca","address":"P.O. Box 348, 4763 Velit Rd.","postalZip":"27917","country":"Chile"},{"customerId":692,"customerName":"Illiana Schultz","phone":"(440) 283-9144","email":"libero@yahoo.edu","address":"Ap #975-2907 Eu Street","postalZip":"43936","country":"Pakistan"},{"customerId":693,"customerName":"Halee Vazquez","phone":"1-882-448-9353","email":"nulla.facilisi@hotmail.couk","address":"Ap #164-3419 Risus. Rd.","postalZip":"4594","country":"Spain"},{"customerId":694,"customerName":"Jamalia Salas","phone":"1-146-328-6621","email":"ultricies.ligula.nullam@protonmail.edu","address":"6789 Lacus Av.","postalZip":"21204","country":"Colombia"},{"customerId":695,"customerName":"Gavin Russell","phone":"1-323-845-2223","email":"elementum.at.egestas@outlook.ca","address":"Ap #416-4357 Odio. Ave","postalZip":"34376","country":"Sweden"},{"customerId":696,"customerName":"Yvette Nieves","phone":"(336) 891-7526","email":"varius.ultrices@icloud.couk","address":"3116 Iaculis Rd.","postalZip":"11213","country":"Austria"},{"customerId":697,"customerName":"Fatima Tillman","phone":"(357) 418-1563","email":"donec@yahoo.org","address":"P.O. Box 975, 5025 Ligula St.","postalZip":"7337 BA","country":"Chile"},{"customerId":698,"customerName":"Zorita Robbins","phone":"1-976-388-2265","email":"et.rutrum@protonmail.ca","address":"Ap #509-2128 Urna. St.","postalZip":"7164","country":"Singapore"},{"customerId":699,"customerName":"Maile Holman","phone":"1-254-562-4216","email":"semper.dui.lectus@aol.couk","address":"2754 Ac, St.","postalZip":"15478","country":"Colombia"},{"customerId":700,"customerName":"Henry Cotton","phone":"1-734-963-6549","email":"sit.amet@outlook.net","address":"Ap #741-4742 Etiam Street","postalZip":"CT9 9FZ","country":"Ukraine"},{"customerId":701,"customerName":"Bryar Leon","phone":"1-729-516-3877","email":"commodo.tincidunt.nibh@google.ca","address":"Ap #519-5538 Aliquam Avenue","postalZip":"T3X 8B3","country":"Russian Federation"},{"customerId":702,"customerName":"Chelsea Holmes","phone":"(202) 348-1646","email":"ultrices@hotmail.edu","address":"P.O. Box 651, 8269 Mauris Av.","postalZip":"52452","country":"South Korea"},{"customerId":703,"customerName":"Basil Haney","phone":"(591) 637-0485","email":"sodales@outlook.org","address":"646-6912 Semper, Ave","postalZip":"4352","country":"Peru"},{"customerId":704,"customerName":"Cassidy Farley","phone":"1-814-856-3941","email":"sed.facilisis@icloud.edu","address":"1655 Pellentesque Rd.","postalZip":"6372","country":"United Kingdom"},{"customerId":705,"customerName":"Emery Good","phone":"(434) 474-4664","email":"auctor@hotmail.org","address":"Ap #777-8861 Rhoncus. Avenue","postalZip":"202163","country":"Chile"},{"customerId":706,"customerName":"Shelly Bruce","phone":"1-628-875-1071","email":"magna.et.ipsum@protonmail.couk","address":"Ap #111-4955 Mauris Rd.","postalZip":"80444","country":"Peru"},{"customerId":707,"customerName":"Colby Kelley","phone":"(680) 511-1099","email":"urna.ut@google.ca","address":"P.O. Box 717, 1718 Sed Rd.","postalZip":"570435","country":"Mexico"},{"customerId":708,"customerName":"Brendan Cobb","phone":"(870) 875-3861","email":"felis.donec@aol.ca","address":"Ap #885-3934 Inceptos St.","postalZip":"7686","country":"Ireland"},{"customerId":709,"customerName":"Forrest Espinoza","phone":"1-504-595-2337","email":"augue.ut.lacus@protonmail.couk","address":"3498 Ullamcorper St.","postalZip":"703717","country":"United Kingdom"},{"customerId":710,"customerName":"Tad Malone","phone":"(361) 344-7431","email":"adipiscing@icloud.org","address":"895-742 At Street","postalZip":"438731","country":"Peru"},{"customerId":711,"customerName":"Astra Newman","phone":"(572) 140-0633","email":"imperdiet@aol.com","address":"903-9715 Lacus St.","postalZip":"69074","country":"Indonesia"},{"customerId":712,"customerName":"Patrick Watkins","phone":"1-458-248-9709","email":"eget.laoreet.posuere@protonmail.edu","address":"Ap #896-231 Etiam Rd.","postalZip":"25365","country":"South Africa"},{"customerId":713,"customerName":"Isabelle Hutchinson","phone":"1-561-668-9303","email":"elit.etiam@yahoo.net","address":"P.O. Box 487, 8571 Amet St.","postalZip":"747278","country":"Philippines"},{"customerId":714,"customerName":"Jordan Wilder","phone":"(851) 986-1221","email":"donec.vitae@icloud.edu","address":"7147 Sollicitudin Rd.","postalZip":"16816","country":"Germany"},{"customerId":715,"customerName":"Fay Phelps","phone":"(544) 381-8265","email":"interdum.ligula.eu@icloud.org","address":"224-5460 Ante Rd.","postalZip":"766345","country":"Ukraine"},{"customerId":716,"customerName":"Jenna Roy","phone":"(815) 281-8427","email":"elementum.at.egestas@google.edu","address":"Ap #386-4543 Sollicitudin Street","postalZip":"56322","country":"Philippines"},{"customerId":717,"customerName":"Felicia Waller","phone":"1-358-255-0045","email":"non.lobortis.quis@outlook.couk","address":"9807 Velit Av.","postalZip":"168116","country":"United Kingdom"},{"customerId":718,"customerName":"Alan Keith","phone":"(193) 661-4113","email":"et@protonmail.couk","address":"Ap #894-6893 Velit Ave","postalZip":"7515","country":"Italy"},{"customerId":719,"customerName":"Kenneth Mcpherson","phone":"1-742-284-2165","email":"leo@google.net","address":"Ap #416-2641 Sed Rd.","postalZip":"8513","country":"South Africa"},{"customerId":720,"customerName":"Anthony Le","phone":"(251) 880-6573","email":"aliquam@aol.net","address":"728-9448 Ornare Avenue","postalZip":"8771","country":"Poland"},{"customerId":721,"customerName":"Ginger Lawson","phone":"(323) 888-3662","email":"interdum@yahoo.couk","address":"639-3476 Faucibus. Ave","postalZip":"9727","country":"Costa Rica"},{"customerId":722,"customerName":"Jamal Suarez","phone":"1-548-947-7622","email":"fames@icloud.edu","address":"P.O. Box 583, 2803 Posuere Street","postalZip":"23725","country":"India"},{"customerId":723,"customerName":"Wylie Stokes","phone":"(351) 661-8245","email":"et.libero.proin@aol.edu","address":"154-4462 Egestas Ave","postalZip":"36-24","country":"India"},{"customerId":724,"customerName":"Bernard Harris","phone":"1-843-327-6984","email":"molestie.orci@icloud.com","address":"P.O. Box 336, 2665 At Rd.","postalZip":"16885-551","country":"United Kingdom"},{"customerId":725,"customerName":"Ronan Arnold","phone":"1-537-142-6668","email":"vestibulum.nec@protonmail.ca","address":"149-5046 Sed Ave","postalZip":"582183","country":"Pakistan"},{"customerId":726,"customerName":"Jeanette Stanley","phone":"1-812-894-5900","email":"facilisis.lorem.tristique@outlook.org","address":"683-4049 Phasellus Rd.","postalZip":"07715","country":"Netherlands"},{"customerId":727,"customerName":"Shana Merritt","phone":"1-543-784-1204","email":"ullamcorper.nisl@aol.com","address":"539-6837 Non, Rd.","postalZip":"362432","country":"Turkey"},{"customerId":728,"customerName":"Xavier Fuentes","phone":"(313) 657-6636","email":"eros@protonmail.ca","address":"211-6474 At Road","postalZip":"4521","country":"Ukraine"},{"customerId":729,"customerName":"Eleanor Hayden","phone":"1-983-243-3953","email":"nec@yahoo.org","address":"P.O. Box 382, 8343 Ac Avenue","postalZip":"7403","country":"Singapore"},{"customerId":730,"customerName":"Rafael Roach","phone":"1-101-312-1215","email":"ut.semper.pretium@outlook.org","address":"9218 Tellus Road","postalZip":"386632","country":"Singapore"},{"customerId":731,"customerName":"Cecilia Hester","phone":"(813) 702-3565","email":"lorem.eget@google.org","address":"Ap #655-5528 Imperdiet Ave","postalZip":"84851","country":"Netherlands"},{"customerId":732,"customerName":"Uriah Mcpherson","phone":"1-656-842-2712","email":"tincidunt.nibh.phasellus@hotmail.com","address":"804-2950 Tellus. Road","postalZip":"28588","country":"Ukraine"},{"customerId":733,"customerName":"Beck Walton","phone":"1-457-558-9798","email":"fermentum@google.com","address":"Ap #193-3401 Bibendum Street","postalZip":"51J 8H8","country":"Pakistan"},{"customerId":734,"customerName":"Yetta Lowery","phone":"(117) 748-0961","email":"erat.sed.nunc@outlook.couk","address":"7459 Vivamus Rd.","postalZip":"1703-2538","country":"Belgium"},{"customerId":735,"customerName":"Cleo Guerrero","phone":"(253) 193-4524","email":"pede.praesent.eu@icloud.couk","address":"266-8321 Mauris Road","postalZip":"85055","country":"Costa Rica"},{"customerId":736,"customerName":"Cruz Aguilar","phone":"1-516-686-9331","email":"in.lobortis@aol.couk","address":"282-3045 Tristique St.","postalZip":"446632","country":"Netherlands"},{"customerId":737,"customerName":"Perry Morales","phone":"1-814-853-8324","email":"molestie.sodales.mauris@yahoo.edu","address":"Ap #865-6691 Sollicitudin Rd.","postalZip":"8718","country":"United States"},{"customerId":738,"customerName":"Velma Weeks","phone":"(511) 467-9457","email":"purus.accumsan@google.org","address":"Ap #794-128 Ullamcorper Road","postalZip":"622268","country":"Ukraine"},{"customerId":739,"customerName":"Emily Byers","phone":"(243) 570-2798","email":"scelerisque.neque@protonmail.org","address":"9669 Cursus St.","postalZip":"3655 XW","country":"Philippines"},{"customerId":740,"customerName":"Jasmine Moss","phone":"(481) 349-4651","email":"nibh.aliquam@protonmail.org","address":"684-8132 Fringilla Rd.","postalZip":"25798","country":"Costa Rica"},{"customerId":741,"customerName":"Galvin Maynard","phone":"(845) 816-4842","email":"vitae.risus@outlook.com","address":"8005 Bibendum Street","postalZip":"16562","country":"Turkey"},{"customerId":742,"customerName":"Lareina Ross","phone":"(460) 444-2286","email":"velit.quisque@aol.ca","address":"790-7763 Vulputate Rd.","postalZip":"26927","country":"Nigeria"},{"customerId":743,"customerName":"Yen Hayes","phone":"(807) 198-9279","email":"in.lobortis.tellus@aol.couk","address":"Ap #355-191 Velit. St.","postalZip":"802563","country":"South Korea"},{"customerId":744,"customerName":"Basil Green","phone":"1-223-457-6313","email":"ac.mattis@yahoo.edu","address":"Ap #754-3145 Tristique Av.","postalZip":"5171","country":"Netherlands"},{"customerId":745,"customerName":"Madaline Boyle","phone":"1-154-476-4752","email":"nunc.id.enim@hotmail.net","address":"698-9976 Pharetra Rd.","postalZip":"841437","country":"Spain"},{"customerId":746,"customerName":"Melanie Good","phone":"1-778-867-2546","email":"mauris@outlook.net","address":"P.O. Box 401, 3994 Vivamus Av.","postalZip":"37996","country":"Netherlands"},{"customerId":747,"customerName":"Xena Mills","phone":"1-853-852-6659","email":"phasellus.dolor@yahoo.net","address":"981-5350 Justo Street","postalZip":"46145","country":"Netherlands"},{"customerId":748,"customerName":"Victor Campos","phone":"1-246-872-7204","email":"dolor@yahoo.edu","address":"P.O. Box 945, 8808 Nibh Road","postalZip":"8661","country":"New Zealand"},{"customerId":749,"customerName":"Jelani Kaufman","phone":"(773) 553-6441","email":"justo.nec@yahoo.ca","address":"168-3069 Gravida Avenue","postalZip":"43864-439","country":"Ukraine"},{"customerId":750,"customerName":"Whoopi Ratliff","phone":"(556) 928-7102","email":"adipiscing.fringilla.porttitor@hotmail.couk","address":"Ap #828-8835 At Av.","postalZip":"83531","country":"Vietnam"},{"customerId":751,"customerName":"Basia Finch","phone":"1-123-511-6769","email":"tortor@outlook.couk","address":"1308 Tincidunt Rd.","postalZip":"54632","country":"Norway"},{"customerId":752,"customerName":"Gavin Elliott","phone":"1-631-521-2887","email":"sapien.molestie@outlook.org","address":"Ap #102-9337 Massa. Ave","postalZip":"3315","country":"Norway"},{"customerId":753,"customerName":"Jayme William","phone":"1-532-882-9532","email":"vitae@yahoo.com","address":"Ap #185-1545 Orci Rd.","postalZip":"671325","country":"Germany"},{"customerId":754,"customerName":"Patrick Abbott","phone":"(415) 867-6685","email":"massa.rutrum@icloud.edu","address":"736-9586 Lacinia Rd.","postalZip":"T5M 5Z4","country":"Canada"},{"customerId":755,"customerName":"Marvin Shields","phone":"1-826-727-7976","email":"libero.mauris@aol.ca","address":"6858 Curabitur St.","postalZip":"945894","country":"Ukraine"},{"customerId":756,"customerName":"Yael Bauer","phone":"(558) 586-8252","email":"nec.ante@yahoo.edu","address":"6253 Blandit Ave","postalZip":"60787","country":"South Korea"},{"customerId":757,"customerName":"Price Hansen","phone":"(591) 797-0973","email":"porttitor@icloud.ca","address":"Ap #519-1535 Sapien, St.","postalZip":"37692","country":"United Kingdom"},{"customerId":758,"customerName":"Jameson Harris","phone":"1-956-770-7240","email":"consectetuer.cursus.et@hotmail.edu","address":"Ap #610-3611 Ornare, St.","postalZip":"668360","country":"Australia"},{"customerId":759,"customerName":"Isaac Beach","phone":"(403) 241-7154","email":"lectus.pede@icloud.ca","address":"254-1041 Ligula Road","postalZip":"678392","country":"Pakistan"},{"customerId":760,"customerName":"Jada Larsen","phone":"(448) 672-7335","email":"a@aol.couk","address":"8908 Tellus St.","postalZip":"75833","country":"Mexico"},{"customerId":761,"customerName":"Kenneth Rowe","phone":"1-842-206-3504","email":"auctor.odio@google.ca","address":"774-7848 Dolor Street","postalZip":"41589","country":"Singapore"},{"customerId":762,"customerName":"Inez Wagner","phone":"(158) 587-2881","email":"augue@icloud.net","address":"6221 Per St.","postalZip":"732338","country":"China"},{"customerId":763,"customerName":"Ann Townsend","phone":"1-617-277-5296","email":"justo.eu@aol.net","address":"764-8751 Suspendisse Av.","postalZip":"27-17","country":"Italy"},{"customerId":764,"customerName":"Warren Mccall","phone":"1-558-855-1859","email":"nec.ante@outlook.com","address":"4006 Amet, Rd.","postalZip":"7661","country":"Indonesia"},{"customerId":765,"customerName":"Gillian Caldwell","phone":"(343) 379-1567","email":"aliquam.nisl@outlook.edu","address":"439-5857 Velit. Rd.","postalZip":"65120-808","country":"Philippines"},{"customerId":766,"customerName":"Philip Mcneil","phone":"(118) 138-6654","email":"pharetra.quisque.ac@icloud.ca","address":"126-9845 Dolor. Street","postalZip":"5922","country":"Sweden"},{"customerId":767,"customerName":"Carla Griffith","phone":"(935) 961-6277","email":"aliquam.iaculis.lacus@protonmail.edu","address":"3978 Velit St.","postalZip":"1869-7334","country":"United States"},{"customerId":768,"customerName":"Althea Turner","phone":"(433) 381-4446","email":"per.conubia.nostra@google.couk","address":"330-4113 Et Ave","postalZip":"638243","country":"Poland"},{"customerId":769,"customerName":"Quinn Sandoval","phone":"(721) 758-4826","email":"enim.commodo.hendrerit@yahoo.org","address":"Ap #363-3098 Ornare Road","postalZip":"y3S 6L5","country":"Costa Rica"},{"customerId":770,"customerName":"Zeph Gay","phone":"1-999-235-9676","email":"nulla.eu@aol.ca","address":"483-1542 Mauris Street","postalZip":"VG14 3WR","country":"Nigeria"},{"customerId":771,"customerName":"Lester Herring","phone":"1-735-246-5755","email":"erat.in@google.org","address":"Ap #939-6519 Lorem. Road","postalZip":"366614","country":"Spain"},{"customerId":772,"customerName":"Gareth Huff","phone":"1-356-343-4077","email":"eleifend.vitae@aol.net","address":"324-8669 Cras Rd.","postalZip":"346843","country":"India"},{"customerId":773,"customerName":"Sigourney Pruitt","phone":"1-676-416-8753","email":"ullamcorper.viverra.maecenas@icloud.org","address":"Ap #480-7841 Ullamcorper Av.","postalZip":"573673","country":"China"},{"customerId":774,"customerName":"Joan Medina","phone":"1-427-641-3357","email":"nec.imperdiet@yahoo.edu","address":"Ap #312-9806 Fringilla St.","postalZip":"4473 BC","country":"Norway"},{"customerId":775,"customerName":"Quinlan Espinoza","phone":"1-497-643-1247","email":"ultricies.sem@protonmail.org","address":"Ap #716-8093 Mus. Avenue","postalZip":"02-223","country":"Vietnam"},{"customerId":776,"customerName":"Cooper Bernard","phone":"1-742-847-2173","email":"tristique.pharetra@protonmail.com","address":"Ap #612-624 Arcu Road","postalZip":"B3J 1M4","country":"Ukraine"},{"customerId":777,"customerName":"Zephr Frost","phone":"(598) 227-1472","email":"porttitor.interdum@yahoo.edu","address":"974-1307 Vitae Ave","postalZip":"528762","country":"Singapore"},{"customerId":778,"customerName":"Reese Battle","phone":"1-732-761-0485","email":"tristique@yahoo.edu","address":"Ap #569-9593 Sodales St.","postalZip":"77-53","country":"Canada"},{"customerId":779,"customerName":"Sydney Harmon","phone":"1-471-558-5615","email":"duis.ac@icloud.ca","address":"Ap #585-7272 Rutrum Av.","postalZip":"400134","country":"Italy"},{"customerId":780,"customerName":"Meghan Farrell","phone":"1-267-536-8443","email":"dictum@protonmail.couk","address":"267-778 Neque. Avenue","postalZip":"70162","country":"Indonesia"},{"customerId":781,"customerName":"Plato Guthrie","phone":"1-228-530-2717","email":"diam@icloud.edu","address":"237-8041 Lacus. Avenue","postalZip":"416567","country":"Germany"},{"customerId":782,"customerName":"Philip Slater","phone":"1-657-181-5496","email":"auctor.non@aol.com","address":"865-9756 Ut St.","postalZip":"487316","country":"Spain"},{"customerId":783,"customerName":"Lillian Wells","phone":"1-583-520-3487","email":"risus.donec@outlook.com","address":"589-2712 Odio. Rd.","postalZip":"4335 UU","country":"South Africa"},{"customerId":784,"customerName":"Kalia Terry","phone":"(663) 776-7659","email":"etiam@google.net","address":"P.O. Box 859, 7194 Duis Ave","postalZip":"345505","country":"Poland"},{"customerId":785,"customerName":"Darius Bridges","phone":"1-493-751-5738","email":"cursus@protonmail.com","address":"800-8647 Sit Street","postalZip":"18323","country":"Brazil"},{"customerId":786,"customerName":"Piper Dunlap","phone":"1-222-965-7102","email":"consectetuer.cursus@protonmail.com","address":"380-3734 Mollis. Av.","postalZip":"12882","country":"Norway"},{"customerId":787,"customerName":"Slade Rocha","phone":"1-268-556-1838","email":"pharetra.quisque@hotmail.couk","address":"4235 Dis Ave","postalZip":"1159","country":"Singapore"},{"customerId":788,"customerName":"Priscilla Mcguire","phone":"1-542-281-8822","email":"arcu.sed@outlook.org","address":"431-2224 Ac Avenue","postalZip":"07202","country":"France"},{"customerId":789,"customerName":"Flavia Gamble","phone":"(626) 374-7779","email":"a.malesuada.id@yahoo.com","address":"267-3312 Id, Street","postalZip":"R5T 7H3","country":"Peru"},{"customerId":790,"customerName":"Scarlett Baird","phone":"(447) 503-0226","email":"iaculis.lacus@google.net","address":"911-7429 At, Ave","postalZip":"51E 1T3","country":"China"},{"customerId":791,"customerName":"Keegan Daugherty","phone":"1-116-624-7627","email":"et.libero@outlook.com","address":"P.O. Box 404, 5035 Lacus, Rd.","postalZip":"843551","country":"Norway"},{"customerId":792,"customerName":"Hiram Chen","phone":"(871) 345-8822","email":"consequat@protonmail.net","address":"625-6632 Vel Avenue","postalZip":"32159","country":"Turkey"},{"customerId":793,"customerName":"Branden Rodriquez","phone":"(664) 889-1642","email":"aliquam.arcu@outlook.ca","address":"320-2559 Nibh Rd.","postalZip":"8232","country":"United Kingdom"},{"customerId":794,"customerName":"Cassidy Peters","phone":"1-767-872-5576","email":"sem.nulla@outlook.couk","address":"Ap #116-8989 Lectus St.","postalZip":"924516","country":"China"},{"customerId":795,"customerName":"Ila Wall","phone":"1-601-548-5284","email":"consequat.lectus@protonmail.com","address":"Ap #976-3079 Lorem Rd.","postalZip":"339167","country":"Turkey"},{"customerId":796,"customerName":"Kenneth Newman","phone":"1-177-673-9169","email":"eleifend@icloud.couk","address":"P.O. Box 466, 8754 Ullamcorper, Street","postalZip":"665660","country":"Nigeria"},{"customerId":797,"customerName":"Vivian Barrett","phone":"(480) 851-0581","email":"massa.integer@yahoo.net","address":"300-8590 Mollis. Rd.","postalZip":"26586","country":"Ireland"},{"customerId":798,"customerName":"Henry Barlow","phone":"1-245-974-2855","email":"vulputate@icloud.com","address":"7076 Egestas St.","postalZip":"6561-2875","country":"Netherlands"},{"customerId":799,"customerName":"Vivien House","phone":"1-852-433-5728","email":"nunc.lectus.pede@aol.couk","address":"Ap #468-6391 Parturient Road","postalZip":"254680","country":"Ireland"},{"customerId":800,"customerName":"Roth Burt","phone":"1-771-306-5541","email":"lacus.etiam.bibendum@outlook.com","address":"P.O. Box 817, 1806 Eros St.","postalZip":"88247","country":"Russian Federation"},{"customerId":801,"customerName":"Dylan Long","phone":"(443) 982-3151","email":"ut.nulla@aol.com","address":"7136 Non, Avenue","postalZip":"12618","country":"South Africa"},{"customerId":802,"customerName":"Basil Owen","phone":"(153) 354-8786","email":"elementum.dui@outlook.couk","address":"Ap #394-7158 Libero Avenue","postalZip":"184276","country":"United Kingdom"},{"customerId":803,"customerName":"Nerea Sparks","phone":"1-166-874-2120","email":"mauris@protonmail.com","address":"Ap #316-199 Risus St.","postalZip":"678162","country":"Norway"},{"customerId":804,"customerName":"Jack Powers","phone":"1-829-458-5289","email":"accumsan.interdum@icloud.couk","address":"4061 Amet Av.","postalZip":"85876","country":"Mexico"},{"customerId":805,"customerName":"Haley Garcia","phone":"1-967-828-8134","email":"cras.vulputate.velit@icloud.com","address":"Ap #795-2694 Blandit. Street","postalZip":"70786","country":"Brazil"},{"customerId":806,"customerName":"Knox Madden","phone":"(451) 576-9610","email":"varius@protonmail.org","address":"P.O. Box 852, 9518 Maecenas Rd.","postalZip":"6897","country":"Chile"},{"customerId":807,"customerName":"Sacha Morin","phone":"1-462-304-0622","email":"vehicula.pellentesque.tincidunt@aol.edu","address":"9224 Non, Ave","postalZip":"54356","country":"Brazil"},{"customerId":808,"customerName":"Quon Short","phone":"1-777-131-3837","email":"parturient.montes@protonmail.edu","address":"Ap #175-5392 Et, Avenue","postalZip":"311598","country":"Turkey"},{"customerId":809,"customerName":"Imani Giles","phone":"1-544-870-1471","email":"viverra.donec@protonmail.edu","address":"241-4421 Mauris St.","postalZip":"626817","country":"Pakistan"},{"customerId":810,"customerName":"Aurelia Foreman","phone":"1-315-273-2481","email":"elit.sed.consequat@hotmail.ca","address":"848-6809 Primis Rd.","postalZip":"897573","country":"Nigeria"},{"customerId":811,"customerName":"Axel Brooks","phone":"(256) 312-8477","email":"fringilla.mi.lacinia@outlook.org","address":"611-1564 Aliquam Rd.","postalZip":"15461","country":"Pakistan"},{"customerId":812,"customerName":"Alexander Snyder","phone":"(131) 112-1368","email":"aliquet.lobortis.nisi@yahoo.edu","address":"P.O. Box 903, 4493 Auctor Rd.","postalZip":"381361","country":"Netherlands"},{"customerId":813,"customerName":"Priscilla Meadows","phone":"(627) 987-1735","email":"in.cursus@yahoo.org","address":"Ap #698-7856 Ligula Road","postalZip":"661825","country":"Indonesia"},{"customerId":814,"customerName":"Mohammad Anthony","phone":"(167) 228-0486","email":"nec.ante.blandit@icloud.couk","address":"Ap #822-8154 Suspendisse Av.","postalZip":"43572-322","country":"Pakistan"},{"customerId":815,"customerName":"Illana Craig","phone":"(798) 435-2076","email":"posuere.vulputate@hotmail.ca","address":"1300 Eleifend, Street","postalZip":"5122-1837","country":"Brazil"},{"customerId":816,"customerName":"Pamela Haney","phone":"1-247-228-3672","email":"montes@outlook.org","address":"260-6269 Sagittis Rd.","postalZip":"952330","country":"Ireland"},{"customerId":817,"customerName":"Lucas Sargent","phone":"(810) 477-6551","email":"tincidunt.nunc@outlook.com","address":"4814 Amet Av.","postalZip":"31234","country":"Peru"},{"customerId":818,"customerName":"Benedict Carver","phone":"(724) 912-8252","email":"ut.semper.pretium@aol.edu","address":"763-1191 Lectus Road","postalZip":"7822","country":"Nigeria"},{"customerId":819,"customerName":"Giacomo Stark","phone":"(312) 765-7184","email":"lorem.semper@protonmail.edu","address":"Ap #453-9694 Placerat, Road","postalZip":"55-36","country":"New Zealand"},{"customerId":820,"customerName":"Emerson Herring","phone":"(778) 540-8339","email":"ultrices.a@hotmail.couk","address":"9245 Massa. St.","postalZip":"84780","country":"Canada"},{"customerId":821,"customerName":"Claudia Hinton","phone":"(549) 452-8272","email":"eget.nisi@hotmail.couk","address":"395-4879 Posuere Av.","postalZip":"74738-315","country":"Netherlands"},{"customerId":822,"customerName":"Desirae Vasquez","phone":"(208) 953-6477","email":"nec.tellus@yahoo.couk","address":"Ap #708-215 Pede. Road","postalZip":"3331","country":"Ireland"},{"customerId":823,"customerName":"Stuart Lewis","phone":"1-919-738-2208","email":"elementum@protonmail.net","address":"P.O. Box 486, 2329 Dictum St.","postalZip":"461808","country":"Mexico"},{"customerId":824,"customerName":"Katell Velasquez","phone":"1-942-515-6421","email":"cum.sociis@yahoo.org","address":"809-6388 Dolor. Ave","postalZip":"3525 QV","country":"Costa Rica"},{"customerId":825,"customerName":"Bianca Riley","phone":"1-961-928-5087","email":"facilisis.suspendisse@aol.couk","address":"2351 Nullam St.","postalZip":"266575","country":"Canada"},{"customerId":826,"customerName":"Sage Knight","phone":"1-458-540-4775","email":"porttitor@icloud.edu","address":"Ap #680-5468 Consequat St.","postalZip":"8227","country":"Netherlands"},{"customerId":827,"customerName":"Ocean Long","phone":"(424) 378-6757","email":"sem.molestie@hotmail.org","address":"P.O. Box 161, 1610 Donec Av.","postalZip":"542154","country":"China"},{"customerId":828,"customerName":"Cassidy Baird","phone":"(185) 545-0611","email":"nibh.sit.amet@outlook.net","address":"Ap #531-3794 Vivamus Ave","postalZip":"14518","country":"Ireland"},{"customerId":829,"customerName":"Sheila Clark","phone":"1-315-340-3827","email":"quisque.nonummy@protonmail.edu","address":"891-7010 Fermentum St.","postalZip":"5458","country":"South Korea"},{"customerId":830,"customerName":"Merrill Mendoza","phone":"1-796-387-2608","email":"non.sapien.molestie@google.org","address":"905-4272 Odio Avenue","postalZip":"281587","country":"New Zealand"},{"customerId":831,"customerName":"Alexis Rogers","phone":"(614) 746-0825","email":"sagittis.semper@google.edu","address":"9027 Nunc Avenue","postalZip":"53731","country":"India"},{"customerId":832,"customerName":"Jerome Dudley","phone":"1-822-174-5274","email":"quis@aol.org","address":"Ap #370-3923 Arcu. Av.","postalZip":"6170","country":"South Korea"},{"customerId":833,"customerName":"Felix Ayers","phone":"1-760-107-8310","email":"lorem.ipsum@outlook.ca","address":"719-7108 Nunc Ave","postalZip":"5464","country":"Canada"},{"customerId":834,"customerName":"Emerson Hartman","phone":"(856) 922-7278","email":"tincidunt.dui@hotmail.edu","address":"3703 Nec, Rd.","postalZip":"625522","country":"United States"},{"customerId":835,"customerName":"Evan Decker","phone":"1-593-244-9271","email":"adipiscing.fringilla@protonmail.net","address":"889-4084 Donec St.","postalZip":"39112","country":"Pakistan"},{"customerId":836,"customerName":"Cecilia Hickman","phone":"1-974-482-7515","email":"arcu.ac@protonmail.couk","address":"Ap #130-7762 Orci Rd.","postalZip":"36396","country":"South Africa"},{"customerId":837,"customerName":"Brynn Lawson","phone":"1-247-415-5994","email":"ornare.egestas@google.ca","address":"375-6552 Lorem Rd.","postalZip":"52726-88363","country":"Sweden"},{"customerId":838,"customerName":"Debra Lewis","phone":"1-641-381-8565","email":"libero.et.tristique@yahoo.net","address":"628-1249 Dolor Avenue","postalZip":"115819","country":"Norway"},{"customerId":839,"customerName":"Samuel Holt","phone":"(512) 274-3759","email":"vel@protonmail.com","address":"3363 Amet Rd.","postalZip":"5440","country":"Philippines"},{"customerId":840,"customerName":"Moana Mcintosh","phone":"(314) 630-6702","email":"duis.gravida.praesent@yahoo.net","address":"8414 Convallis St.","postalZip":"50119","country":"Vietnam"},{"customerId":841,"customerName":"Kerry Walls","phone":"(555) 885-6918","email":"magna.ut@hotmail.net","address":"703-5970 Tristique Avenue","postalZip":"JS8 8ZE","country":"Philippines"},{"customerId":842,"customerName":"McKenzie Castillo","phone":"(262) 547-3385","email":"ac.arcu.nunc@hotmail.couk","address":"Ap #616-9585 Varius. Road","postalZip":"47163","country":"Chile"},{"customerId":843,"customerName":"Zia Marshall","phone":"(830) 836-2689","email":"enim@aol.ca","address":"Ap #524-9069 Nulla Rd.","postalZip":"327185","country":"New Zealand"},{"customerId":844,"customerName":"Daquan Conrad","phone":"1-838-536-5118","email":"urna@google.org","address":"4082 Metus Ave","postalZip":"46445-67493","country":"Peru"},{"customerId":845,"customerName":"Warren Tyler","phone":"1-453-673-7100","email":"elit.curabitur@icloud.com","address":"652-3013 At, Rd.","postalZip":"34141","country":"India"},{"customerId":846,"customerName":"Nero Allen","phone":"(670) 446-3652","email":"id@yahoo.ca","address":"101-7152 Eu, Av.","postalZip":"3302","country":"France"},{"customerId":847,"customerName":"Renee Avila","phone":"1-806-978-6067","email":"sapien.molestie@icloud.ca","address":"834-9784 Dis Rd.","postalZip":"89711-812","country":"Costa Rica"},{"customerId":848,"customerName":"Kylan Warren","phone":"1-231-558-4253","email":"fusce@protonmail.couk","address":"1007 Velit. Av.","postalZip":"51206","country":"Norway"},{"customerId":849,"customerName":"Chelsea Best","phone":"(665) 586-1871","email":"neque@google.couk","address":"674-5498 At St.","postalZip":"2559-3940","country":"Singapore"},{"customerId":850,"customerName":"Juliet Hansen","phone":"1-751-353-7508","email":"egestas.a@aol.net","address":"908-9856 Laoreet Ave","postalZip":"437630","country":"India"},{"customerId":851,"customerName":"Emerson Flores","phone":"(842) 341-9728","email":"bibendum.sed@icloud.net","address":"409-6884 Ipsum Road","postalZip":"6975-8454","country":"Pakistan"},{"customerId":852,"customerName":"Jasmine Conway","phone":"(830) 723-0622","email":"pellentesque@google.edu","address":"P.O. Box 238, 1636 Ridiculus Rd.","postalZip":"06889","country":"South Korea"},{"customerId":853,"customerName":"Kim Strong","phone":"(255) 458-6411","email":"vitae.sodales@yahoo.com","address":"6054 Integer Rd.","postalZip":"8456-0817","country":"India"},{"customerId":854,"customerName":"Josiah Sanders","phone":"(234) 920-3784","email":"non@aol.couk","address":"Ap #370-7210 Magna. Ave","postalZip":"8360","country":"Poland"},{"customerId":855,"customerName":"Eugenia Harrison","phone":"1-535-715-1251","email":"interdum.feugiat@yahoo.com","address":"1740 Neque. St.","postalZip":"94176","country":"Brazil"},{"customerId":856,"customerName":"Baker Herring","phone":"(497) 584-8574","email":"a.auctor.non@yahoo.ca","address":"Ap #128-1480 Sit Road","postalZip":"30207","country":"Brazil"},{"customerId":857,"customerName":"Wynne Rodriquez","phone":"1-623-964-7218","email":"non@protonmail.org","address":"889-8829 Cras Road","postalZip":"17387","country":"Pakistan"},{"customerId":858,"customerName":"Mollie Harrell","phone":"1-482-630-3926","email":"felis.eget.varius@icloud.ca","address":"Ap #366-9332 Et, Ave","postalZip":"641087","country":"Brazil"},{"customerId":859,"customerName":"Colby Miranda","phone":"1-775-556-5921","email":"erat.etiam.vestibulum@yahoo.net","address":"5333 Egestas St.","postalZip":"568221","country":"Belgium"},{"customerId":860,"customerName":"Olympia Bowen","phone":"1-601-957-5517","email":"arcu.vel.quam@aol.org","address":"P.O. Box 289, 1594 Et, Av.","postalZip":"1577","country":"Brazil"},{"customerId":861,"customerName":"Prescott French","phone":"1-257-342-1139","email":"malesuada@hotmail.ca","address":"P.O. Box 595, 3504 Posuere Road","postalZip":"4364","country":"Mexico"},{"customerId":862,"customerName":"Simone Compton","phone":"(893) 915-7716","email":"suspendisse@outlook.net","address":"135-3881 Elit. Road","postalZip":"593220","country":"Australia"},{"customerId":863,"customerName":"Jared Duffy","phone":"1-857-779-6827","email":"convallis.ante@yahoo.org","address":"Ap #225-6226 Phasellus Av.","postalZip":"5248","country":"Australia"},{"customerId":864,"customerName":"Armand Baird","phone":"1-868-386-7557","email":"placerat.augue@hotmail.org","address":"P.O. Box 795, 5865 Quis Ave","postalZip":"27354","country":"Mexico"},{"customerId":865,"customerName":"Isaiah Woodard","phone":"(972) 736-5497","email":"quis.diam@outlook.couk","address":"785-3996 Mi. Street","postalZip":"11041","country":"Singapore"},{"customerId":866,"customerName":"Lars Hart","phone":"1-320-941-1073","email":"sapien@google.couk","address":"Ap #191-3940 Nec Rd.","postalZip":"72957","country":"China"},{"customerId":867,"customerName":"Zenia Joyner","phone":"(358) 582-3514","email":"magna.ut@icloud.couk","address":"1620 Nonummy. St.","postalZip":"7672","country":"Vietnam"},{"customerId":868,"customerName":"Kylan Stevens","phone":"1-625-591-6631","email":"pellentesque@aol.net","address":"8512 Diam Street","postalZip":"4327","country":"Pakistan"},{"customerId":869,"customerName":"Eric Moss","phone":"1-552-565-1277","email":"varius.ultrices.mauris@aol.ca","address":"Ap #632-7134 A St.","postalZip":"9771","country":"Turkey"},{"customerId":870,"customerName":"Jacob Banks","phone":"(727) 919-4579","email":"molestie@icloud.net","address":"Ap #827-3069 Diam St.","postalZip":"9648 TQ","country":"France"},{"customerId":871,"customerName":"Moana Stark","phone":"1-813-722-1263","email":"molestie.pharetra.nibh@protonmail.edu","address":"Ap #791-2094 A Av.","postalZip":"27580","country":"Colombia"},{"customerId":872,"customerName":"Amaya Palmer","phone":"1-873-252-3643","email":"sapien@icloud.edu","address":"527-2942 Consequat Av.","postalZip":"580131","country":"Mexico"},{"customerId":873,"customerName":"Hollee Duncan","phone":"(625) 822-8336","email":"nunc.sed@aol.net","address":"P.O. Box 610, 8482 Auctor. Avenue","postalZip":"68798","country":"Ukraine"},{"customerId":874,"customerName":"Isabella Schmidt","phone":"1-777-838-7484","email":"donec.egestas@google.couk","address":"8838 Ipsum. Av.","postalZip":"AI67 1UV","country":"Sweden"},{"customerId":875,"customerName":"Mason Pruitt","phone":"(645) 751-8778","email":"blandit.nam@hotmail.ca","address":"9611 Euismod St.","postalZip":"49-617","country":"Netherlands"},{"customerId":876,"customerName":"Candice Glover","phone":"(356) 348-3131","email":"curabitur.ut@hotmail.ca","address":"405-9717 Integer Av.","postalZip":"9657","country":"Sweden"},{"customerId":877,"customerName":"Hamilton Park","phone":"(142) 125-5266","email":"sit.amet@outlook.couk","address":"Ap #148-8251 Donec Road","postalZip":"8559","country":"Spain"},{"customerId":878,"customerName":"Finn Hardy","phone":"(925) 523-6709","email":"phasellus.in@hotmail.com","address":"P.O. Box 802, 3447 Vel Av.","postalZip":"1619","country":"United Kingdom"},{"customerId":879,"customerName":"Garrison Best","phone":"(340) 332-7016","email":"phasellus.vitae@aol.edu","address":"6526 Vestibulum Road","postalZip":"632215","country":"Australia"},{"customerId":880,"customerName":"Shelly Landry","phone":"1-397-259-9786","email":"non@protonmail.couk","address":"Ap #345-1957 Fringilla Av.","postalZip":"6285 JI","country":"Pakistan"},{"customerId":881,"customerName":"Stacey Walter","phone":"1-685-786-8947","email":"in.scelerisque@aol.net","address":"337-5711 Convallis Avenue","postalZip":"748917","country":"Canada"},{"customerId":882,"customerName":"Rhonda Chambers","phone":"(781) 268-1152","email":"a@aol.ca","address":"936-5244 Placerat Road","postalZip":"56371-69464","country":"United Kingdom"},{"customerId":883,"customerName":"Virginia Norman","phone":"1-907-553-9287","email":"lectus@yahoo.net","address":"Ap #944-7355 Sit Avenue","postalZip":"4328","country":"Philippines"},{"customerId":884,"customerName":"Roary Reese","phone":"(228) 767-1658","email":"justo.praesent@outlook.edu","address":"252-3778 Duis Av.","postalZip":"3885","country":"China"},{"customerId":885,"customerName":"Macey Young","phone":"(332) 788-9582","email":"sed.molestie@yahoo.couk","address":"547-9496 Quis St.","postalZip":"362467","country":"Turkey"},{"customerId":886,"customerName":"Xander Andrews","phone":"1-412-136-2272","email":"neque@outlook.net","address":"Ap #469-2682 Enim St.","postalZip":"694036","country":"United States"},{"customerId":887,"customerName":"Giacomo Santana","phone":"1-243-994-3413","email":"sociis.natoque.penatibus@outlook.org","address":"Ap #520-804 Non Rd.","postalZip":"1922 QJ","country":"Netherlands"},{"customerId":888,"customerName":"Austin Ashley","phone":"(413) 713-1285","email":"eu.enim@aol.ca","address":"864-7367 Tristique Av.","postalZip":"07942-73448","country":"Poland"},{"customerId":889,"customerName":"Kennan Cochran","phone":"1-388-351-9077","email":"penatibus@hotmail.net","address":"259-7129 Dictum Rd.","postalZip":"906305","country":"Poland"},{"customerId":890,"customerName":"Emi Clay","phone":"(254) 847-2864","email":"enim.suspendisse@yahoo.net","address":"6605 In Rd.","postalZip":"07608","country":"China"},{"customerId":891,"customerName":"Hilel Parrish","phone":"1-123-656-0967","email":"tortor.integer.aliquam@google.net","address":"920-9375 Turpis Avenue","postalZip":"3174","country":"United Kingdom"},{"customerId":892,"customerName":"Vera Garrison","phone":"(215) 206-2836","email":"felis.eget@outlook.com","address":"P.O. Box 285, 4574 Libero. Rd.","postalZip":"51208","country":"Australia"},{"customerId":893,"customerName":"Nasim Salas","phone":"1-703-889-1643","email":"eu@outlook.net","address":"Ap #374-9346 Non Rd.","postalZip":"6368","country":"Peru"},{"customerId":894,"customerName":"McKenzie Lloyd","phone":"1-432-573-2779","email":"egestas.a@icloud.edu","address":"127-6709 Nulla Ave","postalZip":"22446","country":"Italy"},{"customerId":895,"customerName":"Isadora Meyer","phone":"1-526-824-5811","email":"ante@hotmail.net","address":"Ap #121-5287 Et Street","postalZip":"977540","country":"Colombia"},{"customerId":896,"customerName":"Thomas Sullivan","phone":"1-747-833-2156","email":"eget.volutpat.ornare@aol.couk","address":"875-6723 Eget, St.","postalZip":"798142","country":"Singapore"},{"customerId":897,"customerName":"Nolan Robles","phone":"1-665-326-8766","email":"metus.vivamus@yahoo.net","address":"Ap #958-8902 Consectetuer Av.","postalZip":"667486","country":"Costa Rica"},{"customerId":898,"customerName":"Armando Bird","phone":"1-270-981-5850","email":"vitae@outlook.com","address":"Ap #174-3966 Posuere Av.","postalZip":"3453","country":"Brazil"},{"customerId":899,"customerName":"Tallulah Kirkland","phone":"(710) 371-8747","email":"turpis.vitae@protonmail.net","address":"Ap #778-7766 Est St.","postalZip":"57311","country":"Indonesia"},{"customerId":900,"customerName":"Laith Bell","phone":"(893) 690-8661","email":"sed.eu.eros@hotmail.com","address":"Ap #325-1564 Ut St.","postalZip":"497439","country":"South Africa"},{"customerId":901,"customerName":"Quon Stephens","phone":"(818) 985-7538","email":"sit.amet@outlook.net","address":"901-7663 Dictum Avenue","postalZip":"38284","country":"Belgium"},{"customerId":902,"customerName":"Shad Chang","phone":"1-527-865-4263","email":"risus.morbi@google.com","address":"623-5201 Aliquet. Av.","postalZip":"48228","country":"Norway"},{"customerId":903,"customerName":"Aurelia Silva","phone":"(839) 527-4353","email":"non.dapibus@google.org","address":"Ap #222-9662 Varius St.","postalZip":"16773","country":"Australia"},{"customerId":904,"customerName":"Forrest Kelley","phone":"1-621-820-6822","email":"et.magnis@outlook.net","address":"7082 Sagittis St.","postalZip":"546966","country":"Ireland"},{"customerId":905,"customerName":"Upton Miles","phone":"1-743-519-6755","email":"elit.erat.vitae@yahoo.edu","address":"P.O. Box 317, 6564 Interdum St.","postalZip":"7957","country":"Austria"},{"customerId":906,"customerName":"Zia Randall","phone":"(288) 382-5107","email":"primis.in@protonmail.net","address":"952-8194 Arcu. Rd.","postalZip":"43263","country":"Singapore"},{"customerId":907,"customerName":"Lacey Maddox","phone":"1-303-603-3635","email":"dolor.tempus@protonmail.org","address":"Ap #608-7831 Facilisis St.","postalZip":"64856","country":"Ireland"},{"customerId":908,"customerName":"Scott Haley","phone":"1-745-309-7551","email":"eu@google.couk","address":"1856 Ac Street","postalZip":"935096","country":"Russian Federation"},{"customerId":909,"customerName":"Maite Dyer","phone":"(254) 654-5465","email":"in.scelerisque@yahoo.ca","address":"Ap #293-7870 Tincidunt St.","postalZip":"76173-41626","country":"Chile"},{"customerId":910,"customerName":"Timon Tanner","phone":"1-533-624-6173","email":"eget.massa@hotmail.org","address":"481-6415 Nascetur St.","postalZip":"85563","country":"France"},{"customerId":911,"customerName":"Caldwell Mcpherson","phone":"1-241-617-6537","email":"elit.sed.consequat@outlook.org","address":"P.O. Box 857, 9466 Ipsum Avenue","postalZip":"3375","country":"Mexico"},{"customerId":912,"customerName":"Clinton Sloan","phone":"1-272-313-5420","email":"turpis.non@icloud.ca","address":"657-8967 Risus. St.","postalZip":"27833","country":"Mexico"},{"customerId":913,"customerName":"Jocelyn Moore","phone":"1-895-833-3862","email":"erat.volutpat@hotmail.com","address":"P.O. Box 469, 1402 At Rd.","postalZip":"69151-88340","country":"China"},{"customerId":914,"customerName":"Lamar Frost","phone":"(781) 854-8743","email":"eu.nibh@outlook.com","address":"6341 At St.","postalZip":"06496","country":"South Africa"},{"customerId":915,"customerName":"Axel Roth","phone":"1-845-403-2013","email":"non.cursus@aol.couk","address":"P.O. Box 162, 6074 Vulputate St.","postalZip":"8434","country":"France"},{"customerId":916,"customerName":"Wade Sloan","phone":"(726) 945-5788","email":"in.magna@google.net","address":"234-4912 Nunc. Road","postalZip":"429441","country":"Austria"},{"customerId":917,"customerName":"Elizabeth Rich","phone":"1-721-199-1325","email":"integer.id.magna@google.org","address":"Ap #205-4303 Natoque Av.","postalZip":"32356","country":"United Kingdom"},{"customerId":918,"customerName":"Buffy Gutierrez","phone":"1-877-762-8235","email":"ac.fermentum.vel@aol.com","address":"700-1480 Est, Rd.","postalZip":"10151","country":"Nigeria"},{"customerId":919,"customerName":"Sara Schneider","phone":"(987) 216-9299","email":"aenean.gravida@hotmail.org","address":"708-7047 Ac Road","postalZip":"7942","country":"Indonesia"},{"customerId":920,"customerName":"Colton Jefferson","phone":"(580) 735-6818","email":"nisl.nulla@hotmail.net","address":"1117 Parturient Ave","postalZip":"73725","country":"Russian Federation"},{"customerId":921,"customerName":"Dexter Ochoa","phone":"1-725-148-6256","email":"lacinia.at@yahoo.org","address":"P.O. Box 456, 3422 Sit Ave","postalZip":"1254","country":"France"},{"customerId":922,"customerName":"Adele English","phone":"1-503-633-2654","email":"gravida.molestie@icloud.net","address":"2238 Amet Road","postalZip":"30697","country":"Canada"},{"customerId":923,"customerName":"Omar Mcleod","phone":"1-134-392-7889","email":"laoreet.posuere@google.org","address":"5954 Pede, St.","postalZip":"872786","country":"Vietnam"},{"customerId":924,"customerName":"Ciara Holcomb","phone":"1-583-372-7555","email":"luctus.ut.pellentesque@protonmail.ca","address":"4796 Metus St.","postalZip":"62874","country":"Philippines"},{"customerId":925,"customerName":"Regina Atkinson","phone":"(534) 258-5425","email":"lorem@google.edu","address":"Ap #402-8294 Mauris Ave","postalZip":"15267","country":"Pakistan"},{"customerId":926,"customerName":"Damian Hampton","phone":"(462) 903-4041","email":"tempus.non@icloud.org","address":"Ap #438-7817 Pede Street","postalZip":"6321","country":"Norway"},{"customerId":927,"customerName":"Lavinia Barton","phone":"1-531-751-3961","email":"augue@hotmail.net","address":"Ap #426-4097 Aliquet Rd.","postalZip":"3872","country":"Canada"},{"customerId":928,"customerName":"Orli Lewis","phone":"(473) 492-3227","email":"auctor@aol.org","address":"8765 Egestas St.","postalZip":"42374","country":"Ukraine"},{"customerId":929,"customerName":"Patience Maxwell","phone":"1-443-417-6659","email":"tempus.risus@outlook.ca","address":"615-716 A, St.","postalZip":"747669","country":"Spain"},{"customerId":930,"customerName":"Urielle Mckinney","phone":"1-587-151-6352","email":"dui.cum@outlook.ca","address":"Ap #876-9997 Ac Avenue","postalZip":"5325","country":"Peru"},{"customerId":931,"customerName":"Sade Tran","phone":"1-508-329-7233","email":"ipsum.cursus@aol.edu","address":"P.O. Box 807, 5999 Vitae, Road","postalZip":"53736-56842","country":"Ireland"},{"customerId":932,"customerName":"Graham Morales","phone":"(993) 262-1871","email":"arcu.eu.odio@yahoo.edu","address":"Ap #711-5399 Arcu. St.","postalZip":"54-235","country":"Poland"},{"customerId":933,"customerName":"Merrill Booth","phone":"(969) 655-6452","email":"massa@yahoo.edu","address":"3631 Libero St.","postalZip":"485279","country":"United Kingdom"},{"customerId":934,"customerName":"Quin Farley","phone":"1-427-843-1463","email":"malesuada@yahoo.edu","address":"933-1916 Donec St.","postalZip":"34864","country":"China"},{"customerId":935,"customerName":"Chase Jordan","phone":"1-366-526-4663","email":"dolor.elit.pellentesque@yahoo.ca","address":"P.O. Box 163, 9960 Pellentesque Road","postalZip":"04599-64083","country":"United States"},{"customerId":936,"customerName":"Travis Walters","phone":"1-831-614-0583","email":"erat.vel@protonmail.org","address":"P.O. Box 848, 5042 In Av.","postalZip":"728258","country":"China"},{"customerId":937,"customerName":"Aspen Campbell","phone":"1-985-344-7859","email":"mus.aenean@yahoo.couk","address":"533 Ipsum Avenue","postalZip":"927535","country":"Peru"},{"customerId":938,"customerName":"Graham Mcmahon","phone":"(124) 415-1304","email":"maecenas@protonmail.edu","address":"Ap #582-5744 Nec Rd.","postalZip":"882466","country":"Colombia"},{"customerId":939,"customerName":"Francis Evans","phone":"(521) 395-7885","email":"sem.nulla.interdum@protonmail.com","address":"811-190 Non Rd.","postalZip":"47576","country":"Netherlands"},{"customerId":940,"customerName":"Martha Lee","phone":"(300) 237-1457","email":"fringilla.ornare@google.net","address":"Ap #926-7942 Est. Ave","postalZip":"851530","country":"South Africa"},{"customerId":941,"customerName":"Helen Foley","phone":"1-609-820-7112","email":"id.ante@outlook.net","address":"9531 Non Ave","postalZip":"46431-684","country":"Indonesia"},{"customerId":942,"customerName":"Zeus Byers","phone":"1-613-708-2182","email":"id.sapien@hotmail.edu","address":"9951 Consequat St.","postalZip":"62922","country":"South Korea"},{"customerId":943,"customerName":"Marsden Norman","phone":"1-341-273-4286","email":"ipsum.nunc@google.couk","address":"Ap #795-1007 Facilisis Avenue","postalZip":"44277","country":"China"},{"customerId":944,"customerName":"Gabriel Melendez","phone":"(770) 224-3114","email":"arcu.ac@outlook.couk","address":"Ap #155-1057 Vel Road","postalZip":"519282","country":"Sweden"},{"customerId":945,"customerName":"Macaulay Dalton","phone":"(551) 710-9454","email":"ornare.elit@aol.net","address":"330-4789 Scelerisque Street","postalZip":"344643","country":"Mexico"},{"customerId":946,"customerName":"Indira Larson","phone":"(612) 289-2228","email":"egestas.sed@outlook.couk","address":"Ap #694-987 Lorem Avenue","postalZip":"J1M 6S6","country":"Mexico"},{"customerId":947,"customerName":"Lisandra Jones","phone":"1-245-157-4874","email":"tempus.eu@aol.com","address":"9993 Faucibus Ave","postalZip":"30387","country":"France"},{"customerId":948,"customerName":"Bruce Abbott","phone":"(200) 764-1300","email":"lorem.fringilla@hotmail.com","address":"P.O. Box 307, 208 Enim. Rd.","postalZip":"34587","country":"Norway"},{"customerId":949,"customerName":"Amos Gibbs","phone":"1-836-859-9683","email":"nec.urna@google.ca","address":"954-2928 Eu, Street","postalZip":"89445-593","country":"France"},{"customerId":950,"customerName":"Brenda Dejesus","phone":"(768) 867-6715","email":"at.sem@icloud.com","address":"P.O. Box 525, 3212 Aliquet Avenue","postalZip":"11951","country":"Russian Federation"},{"customerId":951,"customerName":"Madonna Aguirre","phone":"1-958-725-7792","email":"aliquam.nec.enim@hotmail.ca","address":"8532 Inceptos St.","postalZip":"162175","country":"South Africa"},{"customerId":952,"customerName":"Adria Wells","phone":"1-274-813-1556","email":"faucibus@icloud.edu","address":"849-4155 Mollis. Avenue","postalZip":"41918","country":"Poland"},{"customerId":953,"customerName":"Ayanna Case","phone":"1-230-785-5557","email":"arcu.iaculis.enim@outlook.edu","address":"373-2601 Consectetuer Rd.","postalZip":"612727","country":"Mexico"},{"customerId":954,"customerName":"Dawn Rhodes","phone":"1-602-268-1478","email":"massa.rutrum@icloud.ca","address":"P.O. Box 708, 6403 Conubia Road","postalZip":"65888","country":"Brazil"},{"customerId":955,"customerName":"Kelly Delacruz","phone":"1-413-974-6640","email":"elit.elit@yahoo.net","address":"6302 Scelerisque Ave","postalZip":"4437","country":"Ukraine"},{"customerId":956,"customerName":"Fatima Parsons","phone":"1-453-618-5576","email":"lobortis@hotmail.com","address":"P.O. Box 126, 3973 Ante St.","postalZip":"65221-108","country":"Australia"},{"customerId":957,"customerName":"Stone Christian","phone":"1-853-758-5363","email":"consectetuer.ipsum@protonmail.ca","address":"Ap #604-6420 Nunc St.","postalZip":"97748","country":"Norway"},{"customerId":958,"customerName":"Philip Mejia","phone":"1-836-348-1421","email":"est.mollis.non@outlook.org","address":"P.O. Box 875, 7017 Vel St.","postalZip":"2518","country":"South Korea"},{"customerId":959,"customerName":"Xantha Burnett","phone":"(950) 347-1125","email":"nibh@google.edu","address":"144-6941 Sapien, Rd.","postalZip":"1112","country":"Peru"},{"customerId":960,"customerName":"Kameko Collier","phone":"1-920-939-8935","email":"luctus.felis.purus@aol.ca","address":"P.O. Box 984, 1468 Parturient Rd.","postalZip":"5676","country":"Mexico"},{"customerId":961,"customerName":"Holmes Butler","phone":"1-161-335-8829","email":"sem.magna@google.net","address":"943 Ut, St.","postalZip":"64877","country":"Spain"},{"customerId":962,"customerName":"Olivia Gallagher","phone":"1-868-686-0406","email":"ac.mi@icloud.net","address":"P.O. Box 740, 6114 Adipiscing St.","postalZip":"7271","country":"Netherlands"},{"customerId":963,"customerName":"Kelsey Moran","phone":"(453) 764-1048","email":"est@aol.net","address":"605-1372 Sodales Avenue","postalZip":"48430","country":"India"},{"customerId":964,"customerName":"Gray Rollins","phone":"1-918-258-3389","email":"eget.lacus@aol.ca","address":"Ap #903-7570 Lectus Av.","postalZip":"V7 7SH","country":"Pakistan"},{"customerId":965,"customerName":"Martena Ochoa","phone":"(561) 338-6364","email":"arcu@protonmail.org","address":"157-5745 Ipsum Rd.","postalZip":"460925","country":"Pakistan"},{"customerId":966,"customerName":"Hamilton Morin","phone":"(503) 821-2144","email":"integer.urna@aol.net","address":"242-6500 Cras Avenue","postalZip":"15523","country":"China"},{"customerId":967,"customerName":"Cecilia Marks","phone":"(835) 984-3049","email":"nec@yahoo.net","address":"P.O. Box 917, 3781 Phasellus Street","postalZip":"94686","country":"Pakistan"},{"customerId":968,"customerName":"Jessamine Saunders","phone":"(585) 363-1684","email":"in.lobortis.tellus@yahoo.couk","address":"Ap #947-7107 Molestie Rd.","postalZip":"353800","country":"Spain"},{"customerId":969,"customerName":"Kennan Alston","phone":"1-439-615-5885","email":"lobortis.quis.pede@hotmail.org","address":"Ap #585-6008 Natoque Av.","postalZip":"42433","country":"Netherlands"},{"customerId":970,"customerName":"Frances Mcmillan","phone":"(484) 538-7663","email":"erat.volutpat.nulla@aol.com","address":"1911 Phasellus Road","postalZip":"76L 8W8","country":"India"},{"customerId":971,"customerName":"Inga Bauer","phone":"(302) 374-9235","email":"ipsum.primis@aol.net","address":"Ap #774-3768 Ridiculus Avenue","postalZip":"15052","country":"Spain"},{"customerId":972,"customerName":"Anthony Blevins","phone":"1-556-833-4262","email":"vitae.odio@outlook.com","address":"6624 Vivamus Street","postalZip":"191871","country":"Costa Rica"},{"customerId":973,"customerName":"Ann Mason","phone":"(231) 641-4517","email":"sed.molestie.sed@yahoo.ca","address":"705-8650 Cursus St.","postalZip":"426539","country":"Belgium"},{"customerId":974,"customerName":"Ursa Stafford","phone":"(488) 575-8823","email":"libero@icloud.ca","address":"3815 Dignissim. St.","postalZip":"77-498","country":"Australia"},{"customerId":975,"customerName":"Jonah Duncan","phone":"(462) 764-2513","email":"condimentum.eget@protonmail.net","address":"789-7025 Dolor Av.","postalZip":"44100-948","country":"Australia"},{"customerId":976,"customerName":"Rogan Calhoun","phone":"1-473-293-9553","email":"vel.turpis@google.net","address":"Ap #212-936 Nunc. Road","postalZip":"85607","country":"Brazil"},{"customerId":977,"customerName":"Thane Rivera","phone":"1-718-239-6854","email":"ultrices@google.org","address":"4381 Pede Street","postalZip":"749581","country":"Belgium"},{"customerId":978,"customerName":"Justina Gay","phone":"(937) 387-5284","email":"cursus.et@hotmail.org","address":"3656 Mus. Rd.","postalZip":"14487","country":"Chile"},{"customerId":979,"customerName":"Adria Banks","phone":"1-859-887-5987","email":"dolor.sit@outlook.edu","address":"216-4692 Duis St.","postalZip":"86436","country":"South Korea"},{"customerId":980,"customerName":"Kelsey Moran","phone":"(478) 819-4431","email":"metus.sit@protonmail.com","address":"Ap #541-5522 Lacus. Street","postalZip":"82117","country":"Peru"},{"customerId":981,"customerName":"Cynthia Meyers","phone":"1-292-171-4752","email":"risus.at@aol.couk","address":"257-7916 Nullam Street","postalZip":"3456","country":"Poland"},{"customerId":982,"customerName":"Arthur Robbins","phone":"(223) 239-3905","email":"euismod.enim@yahoo.edu","address":"Ap #687-7105 At Ave","postalZip":"12866","country":"Indonesia"},{"customerId":983,"customerName":"Quemby Macdonald","phone":"(547) 527-5482","email":"et@google.ca","address":"8385 Leo Av.","postalZip":"6980","country":"Italy"},{"customerId":984,"customerName":"Gage Nicholson","phone":"(524) 160-7989","email":"pellentesque.tellus@outlook.org","address":"P.O. Box 395, 230 Nunc St.","postalZip":"710437","country":"Colombia"},{"customerId":985,"customerName":"Charles Mccullough","phone":"1-427-715-4713","email":"tempor.diam@icloud.ca","address":"526-8007 Ut Rd.","postalZip":"535843","country":"Ireland"},{"customerId":986,"customerName":"Holly Bolton","phone":"(374) 520-7920","email":"in.faucibus.orci@aol.ca","address":"Ap #713-4176 Eleifend. St.","postalZip":"87493","country":"Belgium"},{"customerId":987,"customerName":"Lysandra Mcpherson","phone":"1-403-226-4192","email":"vulputate@google.couk","address":"4290 Ligula Street","postalZip":"42-13","country":"Australia"},{"customerId":988,"customerName":"Dora Rollins","phone":"(744) 645-0189","email":"metus@google.net","address":"144-3498 Sem, St.","postalZip":"8725 WM","country":"Norway"},{"customerId":989,"customerName":"Germane Clay","phone":"1-401-848-6048","email":"orci.luctus@icloud.com","address":"4451 Pharetra Road","postalZip":"73-094","country":"Singapore"},{"customerId":990,"customerName":"Hu Carrillo","phone":"(803) 178-4184","email":"ultrices.mauris@google.com","address":"Ap #570-6629 Non, Avenue","postalZip":"399243","country":"Brazil"},{"customerId":991,"customerName":"Ezekiel Webster","phone":"1-572-614-4388","email":"commodo.auctor.velit@hotmail.org","address":"Ap #935-3203 Vivamus Rd.","postalZip":"3527","country":"Ukraine"},{"customerId":992,"customerName":"Lacy Snow","phone":"(743) 434-6333","email":"augue.porttitor@hotmail.ca","address":"522-4690 Purus. Street","postalZip":"493283","country":"Vietnam"},{"customerId":993,"customerName":"Quin Joyner","phone":"1-185-311-5577","email":"non.enim@yahoo.couk","address":"705-2787 Nulla. Rd.","postalZip":"11647-35869","country":"Italy"},{"customerId":994,"customerName":"Fiona Mathis","phone":"1-824-222-5041","email":"libero.proin@google.edu","address":"P.O. Box 647, 4198 Sed Rd.","postalZip":"597431","country":"France"},{"customerId":995,"customerName":"Basia Skinner","phone":"(555) 185-9729","email":"nunc.nulla@outlook.ca","address":"9754 Proin Street","postalZip":"225528","country":"France"},{"customerId":996,"customerName":"Hashim Mcbride","phone":"(346) 751-6442","email":"metus@outlook.couk","address":"Ap #838-4039 Lobortis, St.","postalZip":"53-024","country":"Norway"},{"customerId":997,"customerName":"Rooney Lynch","phone":"1-487-422-2875","email":"aliquam.arcu@aol.ca","address":"648-2993 Sed, Road","postalZip":"6513","country":"Ireland"},{"customerId":998,"customerName":"Leila Fox","phone":"1-341-444-3115","email":"sem@outlook.edu","address":"Ap #459-9582 Non Rd.","postalZip":"81222","country":"Pakistan"},{"customerId":999,"customerName":"Brynne Branch","phone":"(288) 310-8139","email":"non.luctus@yahoo.org","address":"Ap #177-7697 Scelerisque Road","postalZip":"52949","country":"Italy"},{"customerId":1000,"customerName":"Keane Shelton","phone":"1-346-394-1095","email":"duis.cursus@aol.ca","address":"P.O. Box 746, 9534 Id, Rd.","postalZip":"72-99","country":"Sweden"},{"customerId":1001,"customerName":"Ariana Gallagher","phone":"(641) 245-7160","email":"nunc.est.mollis@hotmail.ca","address":"957-8413 Tincidunt, Ave","postalZip":"13388-198","country":"Turkey"},{"customerId":1002,"customerName":"Dieter Cleveland","phone":"1-241-428-6807","email":"tortor.integer@yahoo.ca","address":"Ap #877-9843 Ligula Road","postalZip":"1582-2940","country":"Netherlands"},{"customerId":1003,"customerName":"Rahim Tanner","phone":"1-570-418-6621","email":"donec.fringilla@icloud.org","address":"6638 Orci Avenue","postalZip":"258854","country":"China"},{"customerId":1004,"customerName":"Brady Ruiz","phone":"1-354-841-1142","email":"iaculis.enim@yahoo.couk","address":"4636 Donec Road","postalZip":"87618","country":"Costa Rica"},{"customerId":1005,"customerName":"Dora Walsh","phone":"1-256-412-0822","email":"nunc.risus.varius@icloud.org","address":"576-5293 Velit St.","postalZip":"68582","country":"Ireland"},{"customerId":1006,"customerName":"Ora Ochoa","phone":"(364) 571-9386","email":"nibh.aliquam@protonmail.com","address":"7788 Sed Avenue","postalZip":"67334","country":"South Korea"},{"customerId":1007,"customerName":"Moses Blair","phone":"1-220-451-1713","email":"commodo.at.libero@aol.ca","address":"928-296 Sit St.","postalZip":"174531","country":"Turkey"},{"customerId":1008,"customerName":"Jenna Clay","phone":"1-844-514-1457","email":"at@aol.net","address":"712-4619 Mauris, Rd.","postalZip":"912471","country":"Poland"},{"customerId":1009,"customerName":"Quynn Contreras","phone":"1-177-616-7856","email":"donec.nibh@yahoo.ca","address":"4981 Commodo Avenue","postalZip":"023512","country":"Colombia"},{"customerId":1010,"customerName":"Jeanette Gray","phone":"(762) 811-9255","email":"nullam@aol.org","address":"522-5179 Neque St.","postalZip":"R1Y 2KI","country":"Pakistan"},{"customerId":1011,"customerName":"Minerva Shaw","phone":"1-531-439-8381","email":"et.netus@outlook.ca","address":"885-6589 Suspendisse Rd.","postalZip":"1873","country":"Ukraine"},{"customerId":1012,"customerName":"Lamar Maddox","phone":"(530) 332-4351","email":"sed.sem@aol.edu","address":"840-1307 Mauris Street","postalZip":"91128-55184","country":"New Zealand"},{"customerId":1013,"customerName":"Gregory Gomez","phone":"(891) 431-4536","email":"fermentum.fermentum@protonmail.ca","address":"P.O. Box 969, 845 Pharetra Rd.","postalZip":"03115","country":"Singapore"},{"customerId":1014,"customerName":"Cody Holden","phone":"(550) 427-4608","email":"gravida.nunc.sed@icloud.net","address":"742-9148 Aenean St.","postalZip":"25260","country":"Colombia"},{"customerId":1015,"customerName":"Emmanuel Riggs","phone":"1-912-331-6058","email":"taciti.sociosqu@yahoo.edu","address":"Ap #971-8106 Nec Av.","postalZip":"622627","country":"Ireland"},{"customerId":1016,"customerName":"Caldwell Duran","phone":"1-468-665-2707","email":"egestas.hendrerit@protonmail.net","address":"1006 Proin Avenue","postalZip":"50207","country":"Peru"},{"customerId":1017,"customerName":"Daniel Mcdonald","phone":"(543) 736-7397","email":"accumsan.sed@google.org","address":"8050 Vivamus Av.","postalZip":"C3T 9V1","country":"South Korea"},{"customerId":1018,"customerName":"Oprah Hebert","phone":"(325) 345-6944","email":"vehicula.aliquet@hotmail.ca","address":"P.O. Box 516, 8769 Fames Av.","postalZip":"2423","country":"Ukraine"},{"customerId":1019,"customerName":"Cadman Conrad","phone":"(728) 281-1819","email":"volutpat.nunc.sit@hotmail.net","address":"Ap #590-914 Velit. Street","postalZip":"9805 RI","country":"Singapore"},{"customerId":1020,"customerName":"Kasimir Cortez","phone":"1-206-137-2017","email":"ante.lectus@google.com","address":"351-6955 Posuere, Av.","postalZip":"826698","country":"Colombia"},{"customerId":1021,"customerName":"Cynthia Boone","phone":"(508) 698-5167","email":"sed.orci@aol.net","address":"1708 Tincidunt Ave","postalZip":"44341-764","country":"Mexico"},{"customerId":1022,"customerName":"Herman Glass","phone":"1-168-238-3032","email":"mauris@google.com","address":"P.O. Box 206, 2392 Felis Street","postalZip":"56547","country":"Ireland"},{"customerId":1023,"customerName":"Nash English","phone":"(553) 788-2625","email":"et.magnis@yahoo.edu","address":"Ap #508-8133 Ac, Rd.","postalZip":"42-211","country":"Brazil"},{"customerId":1024,"customerName":"Gavin Mcgee","phone":"1-147-539-3812","email":"tempus.scelerisque@protonmail.org","address":"850-422 Feugiat Street","postalZip":"10347-23032","country":"Colombia"},{"customerId":1025,"customerName":"Paul Moss","phone":"(473) 820-2758","email":"eu.odio@google.edu","address":"832-8547 Non Rd.","postalZip":"82761","country":"Sweden"},{"customerId":1026,"customerName":"Marah Summers","phone":"1-445-248-4535","email":"iaculis.aliquet@hotmail.com","address":"P.O. Box 537, 8161 Risus Avenue","postalZip":"72571","country":"Peru"},{"customerId":1027,"customerName":"Hannah Hobbs","phone":"(636) 221-8122","email":"velit@aol.couk","address":"8199 Mattis Avenue","postalZip":"52254","country":"Vietnam"},{"customerId":1028,"customerName":"Ishmael David","phone":"1-634-546-7937","email":"sollicitudin.a@icloud.couk","address":"Ap #630-2933 Amet Av.","postalZip":"9962","country":"New Zealand"},{"customerId":1029,"customerName":"Cassidy Sparks","phone":"1-711-258-2412","email":"eleifend.egestas.sed@hotmail.org","address":"489-3034 Elit, Rd.","postalZip":"4729","country":"Peru"},{"customerId":1030,"customerName":"Mira Holland","phone":"(364) 476-7833","email":"dignissim.maecenas@outlook.edu","address":"164-643 Sed, St.","postalZip":"48024","country":"Peru"},{"customerId":1031,"customerName":"Robert Marquez","phone":"(921) 589-2158","email":"at.sem.molestie@outlook.com","address":"Ap #439-2737 Blandit St.","postalZip":"75-687","country":"France"},{"customerId":1032,"customerName":"Yoko Ashley","phone":"(730) 635-2298","email":"velit.justo.nec@hotmail.com","address":"Ap #373-2310 Sapien, Rd.","postalZip":"1448","country":"Germany"},{"customerId":1033,"customerName":"Joel Jenkins","phone":"(707) 809-3532","email":"maecenas.malesuada@icloud.couk","address":"P.O. Box 129, 7723 Ac Rd.","postalZip":"9486","country":"United Kingdom"},{"customerId":1034,"customerName":"Odette Gallegos","phone":"(851) 787-2816","email":"tincidunt.vehicula.risus@icloud.net","address":"591-844 Fringilla. Road","postalZip":"3047","country":"Pakistan"},{"customerId":1035,"customerName":"Mariko Velazquez","phone":"1-165-379-5034","email":"donec.tempus.lorem@aol.ca","address":"9630 Gravida Road","postalZip":"87735","country":"Singapore"},{"customerId":1036,"customerName":"Cain Beach","phone":"1-588-385-1677","email":"bibendum@aol.edu","address":"P.O. Box 817, 5584 Ipsum Road","postalZip":"68480","country":"Spain"},{"customerId":1037,"customerName":"Sierra Mills","phone":"(726) 555-1837","email":"mauris@google.org","address":"240-2253 Fermentum Rd.","postalZip":"25246-087","country":"Ireland"},{"customerId":1038,"customerName":"Kadeem Richards","phone":"(684) 147-4282","email":"morbi@aol.org","address":"315-1103 Suspendisse Rd.","postalZip":"DM1V 9BE","country":"Spain"},{"customerId":1039,"customerName":"Allistair Rutledge","phone":"(514) 528-5537","email":"mollis.integer@protonmail.net","address":"199-4270 Lobortis Road","postalZip":"88827","country":"Singapore"},{"customerId":1040,"customerName":"Chastity Whitley","phone":"(490) 767-2223","email":"quam.quis@aol.org","address":"Ap #910-8270 Pede Street","postalZip":"29536","country":"Italy"},{"customerId":1041,"customerName":"Beatrice Powers","phone":"1-587-326-9593","email":"velit.eu.sem@protonmail.com","address":"260-8757 Conubia Av.","postalZip":"46-44","country":"Netherlands"},{"customerId":1042,"customerName":"Reese Cohen","phone":"1-363-964-4177","email":"bibendum.fermentum@icloud.ca","address":"P.O. Box 594, 900 Et Ave","postalZip":"831474","country":"Nigeria"},{"customerId":1043,"customerName":"Yael Casey","phone":"(322) 547-1593","email":"consequat.lectus.sit@outlook.org","address":"P.O. Box 811, 9733 Tincidunt Avenue","postalZip":"548718","country":"Nigeria"},{"customerId":1044,"customerName":"Eagan Watts","phone":"(145) 750-8246","email":"egestas.fusce.aliquet@hotmail.edu","address":"P.O. Box 213, 5059 Eu Street","postalZip":"25246-41217","country":"Brazil"},{"customerId":1045,"customerName":"Amber Walters","phone":"1-148-169-2585","email":"massa@hotmail.edu","address":"Ap #420-7879 Vulputate, St.","postalZip":"04734","country":"Norway"},{"customerId":1046,"customerName":"Todd Bradford","phone":"(788) 884-3024","email":"ut.erat@outlook.com","address":"7278 Posuere Ave","postalZip":"781684","country":"China"},{"customerId":1047,"customerName":"Brendan Diaz","phone":"1-826-216-4856","email":"tempus@aol.org","address":"923-6416 Diam Street","postalZip":"03262-31584","country":"Sweden"},{"customerId":1048,"customerName":"Keaton Greer","phone":"(117) 892-7302","email":"nec.urna@outlook.com","address":"Ap #828-6847 Mauris Road","postalZip":"875327","country":"United Kingdom"},{"customerId":1049,"customerName":"Danielle Higgins","phone":"1-575-353-5252","email":"sed.dictum.proin@outlook.org","address":"P.O. Box 609, 8360 Libero Rd.","postalZip":"73660-08243","country":"Indonesia"},{"customerId":1050,"customerName":"Lucius Keith","phone":"(203) 293-5528","email":"nulla.eget.metus@google.couk","address":"616-8765 Turpis. Ave","postalZip":"45511","country":"Peru"},{"customerId":1051,"customerName":"Aspen James","phone":"1-517-328-5524","email":"lorem.fringilla.ornare@google.ca","address":"591-522 Primis Avenue","postalZip":"16341","country":"Netherlands"},{"customerId":1052,"customerName":"Kitra Marshall","phone":"(783) 862-4799","email":"nulla.donec@yahoo.couk","address":"P.O. Box 473, 5243 Aliquam Road","postalZip":"73-56","country":"Indonesia"},{"customerId":1053,"customerName":"Ivana Gibson","phone":"(267) 430-1406","email":"diam@protonmail.edu","address":"Ap #169-612 Accumsan St.","postalZip":"768017","country":"Singapore"},{"customerId":1054,"customerName":"Stacey Pennington","phone":"1-266-858-4381","email":"est.congue@outlook.com","address":"528-9940 Vivamus Rd.","postalZip":"25744","country":"Colombia"},{"customerId":1055,"customerName":"Jin Witt","phone":"(248) 264-8545","email":"vel.est@protonmail.org","address":"Ap #376-7684 Nunc St.","postalZip":"7689","country":"South Africa"},{"customerId":1056,"customerName":"Cody Adams","phone":"1-447-838-3049","email":"elit.fermentum@icloud.net","address":"Ap #690-8326 Velit St.","postalZip":"SP28 9UU","country":"India"},{"customerId":1057,"customerName":"Dora Winters","phone":"(426) 866-7651","email":"risus.quis@outlook.com","address":"7692 Vivamus St.","postalZip":"2742 GW","country":"India"},{"customerId":1058,"customerName":"Alika Noble","phone":"1-763-392-2802","email":"urna.justo@google.com","address":"6135 Velit. St.","postalZip":"905227","country":"China"},{"customerId":1059,"customerName":"Kibo Johnson","phone":"1-864-565-1385","email":"quisque.libero@outlook.net","address":"Ap #702-7679 Ultrices Street","postalZip":"07050","country":"Netherlands"},{"customerId":1060,"customerName":"Rylee Anderson","phone":"1-611-755-1689","email":"libero.et@hotmail.org","address":"P.O. Box 975, 3746 In Street","postalZip":"477914","country":"United States"},{"customerId":1061,"customerName":"Marshall Koch","phone":"(411) 523-4501","email":"nam.consequat.dolor@protonmail.net","address":"Ap #247-5935 Nec Street","postalZip":"446337","country":"United Kingdom"},{"customerId":1062,"customerName":"Alexander Nicholson","phone":"1-569-580-2732","email":"dignissim.maecenas.ornare@icloud.org","address":"986-9730 Molestie. Avenue","postalZip":"33859","country":"Ireland"},{"customerId":1063,"customerName":"Owen Bridges","phone":"1-576-206-1581","email":"lorem.auctor@icloud.edu","address":"Ap #535-4368 Ac Rd.","postalZip":"723362","country":"Ireland"},{"customerId":1064,"customerName":"Jennifer Mosley","phone":"(585) 231-8686","email":"lobortis.quam.a@outlook.ca","address":"P.O. Box 115, 6594 Quis Road","postalZip":"354543","country":"France"},{"customerId":1065,"customerName":"Elijah Randolph","phone":"(202) 442-4167","email":"vulputate.posuere@icloud.org","address":"P.O. Box 164, 5081 Amet Street","postalZip":"49914","country":"France"},{"customerId":1066,"customerName":"Hadley Knox","phone":"(191) 667-1973","email":"consectetuer.adipiscing@protonmail.edu","address":"495-4729 A, Av.","postalZip":"0110","country":"Turkey"},{"customerId":1067,"customerName":"Zelda Stone","phone":"1-558-567-7988","email":"nunc@google.edu","address":"Ap #482-9942 Dui Ave","postalZip":"3613 DE","country":"Mexico"},{"customerId":1068,"customerName":"Tate Mann","phone":"(117) 635-3662","email":"vitae.nibh.donec@protonmail.edu","address":"Ap #590-307 Semper Ave","postalZip":"KP76 6WI","country":"Vietnam"},{"customerId":1069,"customerName":"Elton Gould","phone":"(477) 266-7917","email":"erat.vel.pede@icloud.net","address":"P.O. Box 850, 4739 Consectetuer Road","postalZip":"3493","country":"Vietnam"},{"customerId":1070,"customerName":"Allistair Cohen","phone":"(863) 878-8640","email":"magna.praesent.interdum@protonmail.ca","address":"6475 Laoreet Av.","postalZip":"85794","country":"Philippines"},{"customerId":1071,"customerName":"Kalia Benjamin","phone":"1-853-794-3044","email":"ut.quam.vel@aol.net","address":"348-7185 Parturient St.","postalZip":"646015","country":"Turkey"},{"customerId":1072,"customerName":"Raven Henderson","phone":"(588) 366-6885","email":"integer.aliquam.adipiscing@icloud.edu","address":"Ap #913-7124 Nam Street","postalZip":"61843","country":"Belgium"},{"customerId":1073,"customerName":"Unity Pennington","phone":"(725) 834-8565","email":"nisi.magna@icloud.com","address":"617-6753 Etiam Rd.","postalZip":"S5C 4G0","country":"United Kingdom"},{"customerId":1074,"customerName":"Selma David","phone":"(521) 757-6781","email":"nunc@hotmail.com","address":"5999 Nulla Av.","postalZip":"633676","country":"Sweden"},{"customerId":1075,"customerName":"Mollie Moran","phone":"(543) 252-3367","email":"donec.egestas@icloud.edu","address":"9056 Duis Av.","postalZip":"301876","country":"Australia"},{"customerId":1076,"customerName":"Glenna Sosa","phone":"1-732-431-1548","email":"adipiscing.elit@yahoo.org","address":"507-9280 Auctor Street","postalZip":"36412","country":"Costa Rica"},{"customerId":1077,"customerName":"Daniel Tanner","phone":"1-234-351-8186","email":"suspendisse.commodo.tincidunt@icloud.couk","address":"752 Quis Rd.","postalZip":"23081","country":"Canada"},{"customerId":1078,"customerName":"Alana Herman","phone":"1-856-728-5444","email":"ultrices.posuere@outlook.org","address":"Ap #412-3114 Egestas. Street","postalZip":"181699","country":"Norway"},{"customerId":1079,"customerName":"Chester Bullock","phone":"1-656-895-8798","email":"vel.arcu@icloud.couk","address":"8472 Dolor. Avenue","postalZip":"42826","country":"Netherlands"},{"customerId":1080,"customerName":"Kamal Joyner","phone":"(845) 232-1459","email":"auctor@yahoo.ca","address":"Ap #334-6950 Amet, Rd.","postalZip":"8305","country":"Ukraine"},{"customerId":1081,"customerName":"Hedley Burks","phone":"(335) 570-2917","email":"imperdiet.dictum.magna@google.net","address":"6202 Est, Rd.","postalZip":"53446-285","country":"Australia"},{"customerId":1082,"customerName":"Igor Crosby","phone":"1-777-810-0582","email":"vivamus.rhoncus@icloud.org","address":"Ap #343-5545 Lobortis Avenue","postalZip":"1681-3208","country":"Sweden"},{"customerId":1083,"customerName":"Julian Dodson","phone":"1-906-263-3321","email":"ut@icloud.net","address":"604-4393 Natoque Av.","postalZip":"9431","country":"Peru"},{"customerId":1084,"customerName":"Steven Callahan","phone":"1-868-626-8530","email":"leo@yahoo.ca","address":"P.O. Box 688, 317 Metus Rd.","postalZip":"41466","country":"Russian Federation"},{"customerId":1085,"customerName":"Rosalyn Douglas","phone":"1-848-817-4238","email":"ante.lectus@outlook.edu","address":"368-3802 Aliquam Street","postalZip":"66617-480","country":"Austria"},{"customerId":1086,"customerName":"Raya Gillespie","phone":"(266) 563-1628","email":"vitae.risus@outlook.net","address":"Ap #522-9239 Fusce Road","postalZip":"116166","country":"Netherlands"},{"customerId":1087,"customerName":"Rhea Munoz","phone":"1-614-533-2099","email":"eu@yahoo.couk","address":"Ap #876-5161 Proin Street","postalZip":"4188","country":"United States"},{"customerId":1088,"customerName":"Kylan Brock","phone":"(662) 681-0156","email":"vulputate.risus@google.couk","address":"Ap #468-6891 Cubilia Rd.","postalZip":"30-286","country":"South Africa"},{"customerId":1089,"customerName":"Cairo Roth","phone":"1-617-885-9422","email":"inceptos.hymenaeos.mauris@protonmail.couk","address":"154-7919 Cursus. Street","postalZip":"1926-4231","country":"China"},{"customerId":1090,"customerName":"Amos Barrera","phone":"(629) 636-2417","email":"donec.nibh@protonmail.couk","address":"628-1708 Eget Street","postalZip":"43122","country":"United Kingdom"},{"customerId":1091,"customerName":"Adara Schultz","phone":"(315) 848-4318","email":"sem.molestie.sodales@aol.ca","address":"Ap #658-5506 Vestibulum Rd.","postalZip":"24540","country":"Netherlands"},{"customerId":1092,"customerName":"MacKensie Jacobs","phone":"(757) 258-9474","email":"consequat@hotmail.ca","address":"192-6726 Ipsum. Street","postalZip":"66-736","country":"Brazil"},{"customerId":1093,"customerName":"Lamar Knapp","phone":"1-671-486-7612","email":"nunc.pulvinar@hotmail.ca","address":"Ap #511-9259 Ultricies St.","postalZip":"1128","country":"Vietnam"},{"customerId":1094,"customerName":"Yoshio Noble","phone":"1-128-337-5122","email":"cursus.nunc.mauris@icloud.com","address":"Ap #878-2882 Aliquam Rd.","postalZip":"8266 ZQ","country":"Ireland"},{"customerId":1095,"customerName":"Eve Jarvis","phone":"(515) 785-2254","email":"vel.faucibus.id@hotmail.couk","address":"Ap #630-5639 Mollis Road","postalZip":"724885","country":"Sweden"},{"customerId":1096,"customerName":"Yvette Duke","phone":"1-355-784-3674","email":"pede.praesent@yahoo.net","address":"743-377 Iaculis, Rd.","postalZip":"4258 BV","country":"United States"},{"customerId":1097,"customerName":"Alyssa Hinton","phone":"(872) 832-0260","email":"faucibus.id.libero@yahoo.edu","address":"P.O. Box 589, 8074 Consectetuer Avenue","postalZip":"4233","country":"Mexico"},{"customerId":1098,"customerName":"Hyacinth Stafford","phone":"(634) 554-7716","email":"aenean.euismod@outlook.couk","address":"Ap #223-9590 Id, St.","postalZip":"278437","country":"Sweden"},{"customerId":1099,"customerName":"Cora Madden","phone":"1-877-714-2826","email":"lacus.quisque@yahoo.org","address":"P.O. Box 831, 9368 Est Ave","postalZip":"86745-14284","country":"United States"},{"customerId":1100,"customerName":"Dane Blackburn","phone":"(152) 405-2513","email":"pellentesque.ut@icloud.com","address":"Ap #901-9101 Eget, St.","postalZip":"5567","country":"Colombia"},{"customerId":1101,"customerName":"Melvin Weaver","phone":"(722) 372-6198","email":"ac.arcu@yahoo.edu","address":"Ap #933-3117 Ultricies Avenue","postalZip":"5411","country":"Austria"},{"customerId":1102,"customerName":"Castor Stevenson","phone":"1-956-610-1734","email":"nulla.aliquet@outlook.couk","address":"Ap #210-4589 Non Street","postalZip":"Y7C 6L1","country":"South Africa"},{"customerId":1103,"customerName":"Latifah Boyle","phone":"(268) 358-3508","email":"enim.commodo.hendrerit@yahoo.couk","address":"P.O. Box 675, 5130 Lorem Avenue","postalZip":"2264","country":"Nigeria"},{"customerId":1104,"customerName":"Juliet Roberson","phone":"1-546-184-6608","email":"mauris.ut@icloud.edu","address":"902-8841 Etiam Road","postalZip":"74147","country":"Philippines"},{"customerId":1105,"customerName":"Beatrice Bush","phone":"1-443-678-3571","email":"dapibus.rutrum@yahoo.ca","address":"Ap #104-522 Risus St.","postalZip":"518181","country":"Poland"},{"customerId":1106,"customerName":"Alice Ayala","phone":"1-568-422-7254","email":"dictum.sapien@google.edu","address":"Ap #488-8241 Natoque St.","postalZip":"510030","country":"Chile"},{"customerId":1107,"customerName":"Quentin Santana","phone":"1-662-407-7562","email":"amet.metus@aol.edu","address":"Ap #961-9610 Nullam St.","postalZip":"44814","country":"Pakistan"},{"customerId":1108,"customerName":"Darius Underwood","phone":"1-271-437-4785","email":"aliquam.fringilla@google.com","address":"P.O. Box 578, 4380 Sapien, Street","postalZip":"2894","country":"Poland"},{"customerId":1109,"customerName":"Adrienne Mccullough","phone":"1-445-842-8402","email":"lectus.rutrum.urna@aol.ca","address":"9973 Dui St.","postalZip":"0077-0443","country":"China"},{"customerId":1110,"customerName":"Logan Mcdaniel","phone":"(214) 932-2487","email":"faucibus@yahoo.org","address":"Ap #915-4053 Tellus Rd.","postalZip":"48153","country":"United Kingdom"},{"customerId":1111,"customerName":"Xavier William","phone":"(271) 624-0074","email":"id.magna.et@aol.ca","address":"387-7976 Scelerisque Av.","postalZip":"4688","country":"Brazil"},{"customerId":1112,"customerName":"Wyoming Solomon","phone":"1-724-835-9394","email":"consequat.purus.maecenas@outlook.net","address":"6859 Tempor Avenue","postalZip":"0667","country":"Nigeria"},{"customerId":1113,"customerName":"Lucy Mercado","phone":"1-718-647-2771","email":"ornare.lectus@google.net","address":"388-281 Ut Ave","postalZip":"76182","country":"Italy"},{"customerId":1114,"customerName":"Lee Barry","phone":"(482) 632-4144","email":"arcu.vivamus.sit@icloud.org","address":"Ap #733-294 Donec Ave","postalZip":"5267","country":"Ukraine"},{"customerId":1115,"customerName":"Mallory Meyers","phone":"(845) 369-9308","email":"aliquam.tincidunt@icloud.ca","address":"273-9646 Parturient Ave","postalZip":"68223-16370","country":"Turkey"},{"customerId":1116,"customerName":"Tanek Russo","phone":"1-161-720-6327","email":"orci.tincidunt@aol.net","address":"Ap #621-444 Aliquam Avenue","postalZip":"15882","country":"Belgium"},{"customerId":1117,"customerName":"Fleur Cash","phone":"1-172-397-9439","email":"magna.suspendisse.tristique@protonmail.edu","address":"4428 Pellentesque. Rd.","postalZip":"QG77 5VG","country":"Mexico"},{"customerId":1118,"customerName":"Robert Bray","phone":"(903) 618-3631","email":"non.bibendum@outlook.edu","address":"Ap #208-4373 Nulla Av.","postalZip":"399453","country":"Mexico"},{"customerId":1119,"customerName":"Portia Young","phone":"1-274-193-1726","email":"massa.non.ante@hotmail.org","address":"948-8716 Suspendisse Av.","postalZip":"72-41","country":"Chile"},{"customerId":1120,"customerName":"Dane Harris","phone":"1-805-371-3427","email":"est.tempor@icloud.org","address":"Ap #237-4085 Elit. St.","postalZip":"34624","country":"Philippines"},{"customerId":1121,"customerName":"Kelly Lloyd","phone":"1-480-842-3168","email":"ac.turpis@icloud.ca","address":"186-8823 Erat. St.","postalZip":"6342","country":"Colombia"},{"customerId":1122,"customerName":"Edward Walters","phone":"1-772-171-9420","email":"porttitor.tellus.non@outlook.couk","address":"Ap #513-3763 Risus, Av.","postalZip":"13236-44113","country":"New Zealand"},{"customerId":1123,"customerName":"Tatum Mcguire","phone":"(458) 318-8761","email":"at.velit@outlook.com","address":"310-6225 Quam Ave","postalZip":"7351","country":"New Zealand"},{"customerId":1124,"customerName":"Hayden Howell","phone":"(645) 782-7079","email":"nisi.sem@yahoo.net","address":"Ap #151-929 Ipsum Avenue","postalZip":"8813","country":"Spain"},{"customerId":1125,"customerName":"Lawrence Stein","phone":"1-823-902-6126","email":"turpis.egestas@yahoo.org","address":"Ap #543-1025 Mauris St.","postalZip":"483528","country":"Ukraine"},{"customerId":1126,"customerName":"Fulton Navarro","phone":"(289) 500-0651","email":"cras@outlook.couk","address":"385-7251 Vel Avenue","postalZip":"5140","country":"Chile"},{"customerId":1127,"customerName":"Aileen Walton","phone":"(572) 957-0289","email":"tellus@protonmail.com","address":"Ap #796-1199 Nisi Road","postalZip":"9637 RJ","country":"Turkey"},{"customerId":1128,"customerName":"Otto Guerrero","phone":"(828) 670-3167","email":"in.ornare@icloud.com","address":"Ap #983-2171 Non, Rd.","postalZip":"14756-28750","country":"Colombia"},{"customerId":1129,"customerName":"Hamish Higgins","phone":"1-680-308-1103","email":"posuere.cubilia.curae@aol.edu","address":"Ap #886-9957 Libero. Rd.","postalZip":"73731-574","country":"South Korea"},{"customerId":1130,"customerName":"Melodie Sears","phone":"(337) 229-1564","email":"lacinia.orci@protonmail.net","address":"134 Eu Street","postalZip":"8507","country":"Spain"},{"customerId":1131,"customerName":"Juliet Pierce","phone":"(375) 234-0415","email":"ac.mi@protonmail.org","address":"P.O. Box 825, 4047 Et, Rd.","postalZip":"174333","country":"Norway"},{"customerId":1132,"customerName":"Paki Branch","phone":"(884) 433-8414","email":"lacus.quisque@outlook.edu","address":"P.O. Box 682, 7617 Sed St.","postalZip":"12145","country":"Russian Federation"},{"customerId":1133,"customerName":"Tamara Baldwin","phone":"1-218-677-1038","email":"dui@outlook.ca","address":"377 Aliquam Rd.","postalZip":"84276","country":"Italy"},{"customerId":1134,"customerName":"Daquan Beard","phone":"(443) 748-1456","email":"at.velit@aol.com","address":"673-8314 Integer Avenue","postalZip":"31222","country":"Norway"},{"customerId":1135,"customerName":"Alexandra Mcfadden","phone":"1-226-470-0333","email":"tellus.justo.sit@outlook.couk","address":"3365 Phasellus Road","postalZip":"877389","country":"Germany"},{"customerId":1136,"customerName":"Isaac Brennan","phone":"1-923-403-2154","email":"habitant.morbi@aol.org","address":"6954 Urna. St.","postalZip":"218717","country":"Belgium"},{"customerId":1137,"customerName":"Eagan Hess","phone":"1-588-671-5306","email":"ut@aol.couk","address":"Ap #725-1376 Vivamus Rd.","postalZip":"2588","country":"Singapore"},{"customerId":1138,"customerName":"Hamilton Davis","phone":"(832) 289-5235","email":"magna.cras@google.ca","address":"P.O. Box 702, 5818 Erat St.","postalZip":"547183","country":"India"},{"customerId":1139,"customerName":"Maya Mcintyre","phone":"1-339-163-7246","email":"nunc@yahoo.ca","address":"P.O. Box 175, 5889 Et Avenue","postalZip":"30206","country":"Austria"},{"customerId":1140,"customerName":"Benedict Conrad","phone":"(361) 760-9402","email":"libero@aol.ca","address":"930-9828 Enim. Rd.","postalZip":"316434","country":"Peru"},{"customerId":1141,"customerName":"Cally Nichols","phone":"(188) 296-3978","email":"pede@icloud.ca","address":"147-3879 Tortor. St.","postalZip":"0466 DY","country":"United Kingdom"},{"customerId":1142,"customerName":"Lev Huff","phone":"1-644-984-3841","email":"tincidunt.nunc@hotmail.ca","address":"Ap #451-588 Aenean Rd.","postalZip":"510223","country":"Austria"},{"customerId":1143,"customerName":"Burton Kerr","phone":"1-308-551-1118","email":"consectetuer.adipiscing@protonmail.org","address":"Ap #130-3436 Curae Road","postalZip":"8132","country":"Austria"},{"customerId":1144,"customerName":"Dara Horn","phone":"1-437-393-2415","email":"scelerisque@protonmail.edu","address":"P.O. Box 856, 8744 Nulla. Rd.","postalZip":"706580","country":"Norway"},{"customerId":1145,"customerName":"Marshall Barrett","phone":"1-674-153-7213","email":"ipsum.primis@icloud.ca","address":"801-8227 Nullam Av.","postalZip":"76-64","country":"Nigeria"},{"customerId":1146,"customerName":"Ivy Olsen","phone":"(779) 236-5665","email":"non.quam@icloud.com","address":"Ap #399-2054 Sit Avenue","postalZip":"9517","country":"Pakistan"},{"customerId":1147,"customerName":"Callum Hurley","phone":"(228) 268-0845","email":"nam.ac.nulla@outlook.ca","address":"221-4220 Gravida Rd.","postalZip":"692817","country":"Nigeria"},{"customerId":1148,"customerName":"Hilary Barry","phone":"1-921-538-7222","email":"non.vestibulum@google.edu","address":"Ap #731-2219 At Road","postalZip":"39-652","country":"Ukraine"},{"customerId":1149,"customerName":"Yetta Wilson","phone":"1-381-155-2506","email":"odio.vel@hotmail.edu","address":"258-3369 Dis Road","postalZip":"723487","country":"Nigeria"},{"customerId":1150,"customerName":"Armando Chavez","phone":"(612) 867-3153","email":"donec.luctus@protonmail.org","address":"410-1737 Ante Avenue","postalZip":"81327","country":"Philippines"},{"customerId":1151,"customerName":"Chelsea Good","phone":"(428) 567-4223","email":"tempor.bibendum@yahoo.ca","address":"Ap #893-6132 Ligula. Road","postalZip":"43101-22691","country":"New Zealand"},{"customerId":1152,"customerName":"Craig Schmidt","phone":"1-378-734-1470","email":"turpis.vitae.purus@hotmail.couk","address":"Ap #438-8189 Est. Rd.","postalZip":"916126","country":"Ukraine"},{"customerId":1153,"customerName":"Brenda Wells","phone":"(567) 863-1757","email":"non.hendrerit@aol.com","address":"Ap #492-5578 Quis, Rd.","postalZip":"9964","country":"United States"},{"customerId":1154,"customerName":"Jackson Sullivan","phone":"1-187-130-3494","email":"mus.proin.vel@outlook.ca","address":"P.O. Box 760, 5924 Non Ave","postalZip":"17977","country":"United States"},{"customerId":1155,"customerName":"Marvin Mcknight","phone":"1-848-886-2358","email":"orci@protonmail.com","address":"1595 Quisque Street","postalZip":"4396","country":"Australia"},{"customerId":1156,"customerName":"Summer Christian","phone":"(416) 828-7112","email":"eu.enim@outlook.edu","address":"567-5210 At Av.","postalZip":"03325-08467","country":"United Kingdom"},{"customerId":1157,"customerName":"Finn Marks","phone":"1-841-738-7143","email":"scelerisque.sed@outlook.ca","address":"Ap #954-8922 Id, Av.","postalZip":"22322","country":"United Kingdom"},{"customerId":1158,"customerName":"Nita Bates","phone":"(654) 725-8233","email":"magna.a.tortor@aol.com","address":"Ap #309-3421 Commodo Road","postalZip":"975193","country":"South Korea"},{"customerId":1159,"customerName":"Briar Langley","phone":"(608) 472-7010","email":"vivamus@yahoo.ca","address":"2879 Lectus St.","postalZip":"H6C 4M4","country":"New Zealand"},{"customerId":1160,"customerName":"Laurel Cummings","phone":"1-988-134-4690","email":"velit.eget@icloud.couk","address":"Ap #788-9364 Donec Road","postalZip":"531859","country":"Indonesia"},{"customerId":1161,"customerName":"Ulric Kim","phone":"(346) 441-9341","email":"sagittis@aol.couk","address":"100-1804 Neque Street","postalZip":"1122","country":"France"},{"customerId":1162,"customerName":"Sybil Sykes","phone":"1-875-204-7862","email":"laoreet.ipsum.curabitur@outlook.ca","address":"Ap #126-5269 Fusce Rd.","postalZip":"117416","country":"Russian Federation"},{"customerId":1163,"customerName":"Leonard Hoffman","phone":"1-341-772-3286","email":"a@aol.ca","address":"444-2072 Justo St.","postalZip":"11668","country":"Russian Federation"},{"customerId":1164,"customerName":"Quon Blackwell","phone":"(831) 635-3562","email":"neque.sed@protonmail.edu","address":"204-5991 Aliquam Rd.","postalZip":"3155","country":"Philippines"},{"customerId":1165,"customerName":"Miriam Bryan","phone":"1-527-513-2857","email":"vitae.dolor@icloud.couk","address":"461-5695 Cras Avenue","postalZip":"75-27","country":"Belgium"},{"customerId":1166,"customerName":"Armand Pugh","phone":"(482) 501-1233","email":"ridiculus.mus@outlook.edu","address":"P.O. Box 947, 9910 Amet Ave","postalZip":"3411","country":"Germany"},{"customerId":1167,"customerName":"Blaze Battle","phone":"(428) 853-6886","email":"adipiscing.lacus.ut@yahoo.org","address":"P.O. Box 602, 8847 Arcu St.","postalZip":"37286","country":"Costa Rica"},{"customerId":1168,"customerName":"Calista Hensley","phone":"1-327-399-7565","email":"vulputate.ullamcorper.magna@icloud.com","address":"847-2586 Suspendisse Av.","postalZip":"776816","country":"United Kingdom"},{"customerId":1169,"customerName":"Bo Rios","phone":"1-170-647-6987","email":"in.condimentum.donec@aol.edu","address":"Ap #945-706 Ut, Rd.","postalZip":"8076","country":"Germany"},{"customerId":1170,"customerName":"Larissa Rodgers","phone":"(126) 443-8736","email":"tellus.id@protonmail.couk","address":"721-8783 Rutrum Av.","postalZip":"6659","country":"China"},{"customerId":1171,"customerName":"Shelby Cummings","phone":"(734) 275-3839","email":"a.felis@google.com","address":"Ap #533-2648 Semper St.","postalZip":"4102","country":"Chile"},{"customerId":1172,"customerName":"Rajah Haynes","phone":"(912) 376-0821","email":"erat.vel@aol.edu","address":"798-6238 Lobortis Avenue","postalZip":"879367","country":"South Africa"},{"customerId":1173,"customerName":"Eric Porter","phone":"(438) 829-8875","email":"est.congue@icloud.couk","address":"152-3129 Eget Road","postalZip":"51575","country":"Belgium"},{"customerId":1174,"customerName":"Sade Tanner","phone":"(176) 628-4565","email":"nulla.at.sem@aol.edu","address":"Ap #897-5047 Pede. St.","postalZip":"14691","country":"Russian Federation"},{"customerId":1175,"customerName":"Rooney Whitley","phone":"1-603-488-8598","email":"inceptos@icloud.net","address":"Ap #305-7788 Metus. Rd.","postalZip":"495747","country":"Netherlands"},{"customerId":1176,"customerName":"Lareina Roth","phone":"1-683-817-8779","email":"mus.aenean@hotmail.com","address":"Ap #500-9224 Nam Rd.","postalZip":"622405","country":"India"},{"customerId":1177,"customerName":"Yuli Ashley","phone":"1-527-243-1156","email":"laoreet@hotmail.net","address":"Ap #462-2830 Lorem Rd.","postalZip":"8659","country":"South Korea"},{"customerId":1178,"customerName":"Hanae Reed","phone":"1-274-288-6220","email":"cubilia.curae@outlook.edu","address":"562-9851 Vestibulum St.","postalZip":"2730","country":"Sweden"},{"customerId":1179,"customerName":"Marsden Kelley","phone":"(802) 265-9337","email":"lectus.a.sollicitudin@icloud.ca","address":"921-3613 Dis Rd.","postalZip":"36516","country":"Austria"},{"customerId":1180,"customerName":"Chandler Cooke","phone":"1-886-874-8176","email":"ultrices.vivamus@hotmail.couk","address":"Ap #440-2350 Aliquet Ave","postalZip":"75956","country":"Russian Federation"},{"customerId":1181,"customerName":"Oren Craig","phone":"(355) 808-0474","email":"sed.libero@outlook.com","address":"Ap #284-5512 Etiam Ave","postalZip":"72646","country":"United Kingdom"},{"customerId":1182,"customerName":"Cecilia Drake","phone":"(846) 325-0244","email":"magnis.dis@aol.couk","address":"P.O. Box 664, 1872 Dictum Avenue","postalZip":"865143","country":"Costa Rica"},{"customerId":1183,"customerName":"Myles Huber","phone":"(558) 433-4791","email":"non.luctus.sit@protonmail.org","address":"Ap #721-322 Arcu. Road","postalZip":"8272","country":"Russian Federation"},{"customerId":1184,"customerName":"Garrett Horton","phone":"1-303-643-5354","email":"quisque@google.com","address":"579-5270 In Road","postalZip":"5426","country":"Brazil"},{"customerId":1185,"customerName":"Summer Downs","phone":"(799) 252-8435","email":"sociis.natoque@icloud.edu","address":"1530 Mauris Rd.","postalZip":"4644","country":"Belgium"},{"customerId":1186,"customerName":"Stephen Ramirez","phone":"1-958-659-2032","email":"blandit.enim@aol.ca","address":"P.O. Box 617, 7127 Lobortis Avenue","postalZip":"142618","country":"Sweden"},{"customerId":1187,"customerName":"Alden Ochoa","phone":"(751) 226-3554","email":"phasellus.elit.pede@google.edu","address":"P.O. Box 838, 1887 Tellus. Rd.","postalZip":"83996","country":"China"},{"customerId":1188,"customerName":"Doris Moreno","phone":"(471) 824-1287","email":"nullam.feugiat.placerat@outlook.edu","address":"Ap #260-386 Orci Av.","postalZip":"210139","country":"Norway"},{"customerId":1189,"customerName":"Indigo Carey","phone":"(662) 936-5124","email":"mi.pede@yahoo.org","address":"Ap #322-3050 Magna. Road","postalZip":"45-25","country":"Turkey"},{"customerId":1190,"customerName":"Dolan Jordan","phone":"(478) 872-8613","email":"nec.malesuada@yahoo.net","address":"898-938 Nulla Ave","postalZip":"7887","country":"South Korea"},{"customerId":1191,"customerName":"Bo Dudley","phone":"(610) 335-7788","email":"euismod.et@aol.net","address":"3468 Nulla Street","postalZip":"141974","country":"China"},{"customerId":1192,"customerName":"Gillian Clemons","phone":"1-919-152-8757","email":"placerat.velit.quisque@yahoo.ca","address":"710-190 Massa. Road","postalZip":"2353","country":"Chile"},{"customerId":1193,"customerName":"Caldwell Hansen","phone":"1-661-497-3770","email":"volutpat.nulla@outlook.org","address":"919-6956 Sit Ave","postalZip":"30035","country":"Costa Rica"},{"customerId":1194,"customerName":"Chadwick Langley","phone":"1-740-424-6843","email":"pede@aol.edu","address":"Ap #557-4847 Arcu Rd.","postalZip":"75647","country":"South Africa"},{"customerId":1195,"customerName":"Robert Glass","phone":"(322) 300-6525","email":"blandit@icloud.org","address":"746-2653 Eu Av.","postalZip":"432218","country":"Norway"},{"customerId":1196,"customerName":"Rogan Gibson","phone":"(173) 446-7654","email":"ipsum.suspendisse.non@google.edu","address":"P.O. Box 548, 8634 Fringilla Rd.","postalZip":"1554-0130","country":"France"},{"customerId":1197,"customerName":"Shay Chase","phone":"1-817-937-9663","email":"eu@outlook.couk","address":"Ap #130-5565 Faucibus Rd.","postalZip":"3221","country":"Italy"},{"customerId":1198,"customerName":"Hayes Griffin","phone":"(219) 652-0611","email":"ultrices.duis@hotmail.ca","address":"Ap #405-6309 Est. Rd.","postalZip":"19755","country":"Netherlands"},{"customerId":1199,"customerName":"Emerson Trujillo","phone":"(142) 333-1545","email":"suspendisse.aliquet.molestie@google.couk","address":"536-2607 Ligula. Av.","postalZip":"17575","country":"Indonesia"},{"customerId":1200,"customerName":"Charde Sellers","phone":"(765) 208-5630","email":"leo.in@outlook.couk","address":"782-8699 Consequat, Rd.","postalZip":"63413-332","country":"Norway"},{"customerId":1201,"customerName":"Kimberly Bruce","phone":"1-463-679-5074","email":"vivamus.sit.amet@aol.net","address":"923-5701 Aliquam St.","postalZip":"70587","country":"Indonesia"},{"customerId":1202,"customerName":"Cynthia Guzman","phone":"1-331-975-8907","email":"suspendisse@google.com","address":"8055 Dapibus Av.","postalZip":"06404","country":"Norway"},{"customerId":1203,"customerName":"Quyn Cotton","phone":"(914) 432-9528","email":"convallis.ligula@google.ca","address":"7102 Et, Av.","postalZip":"03544","country":"United Kingdom"},{"customerId":1204,"customerName":"Harding Hunter","phone":"1-777-787-2274","email":"egestas.aliquam@protonmail.org","address":"956-2959 Aliquam Avenue","postalZip":"8823","country":"Norway"},{"customerId":1205,"customerName":"Sara Blankenship","phone":"1-766-993-7718","email":"ante.blandit.viverra@icloud.edu","address":"Ap #765-4621 Nulla St.","postalZip":"WA7U 5DD","country":"Turkey"},{"customerId":1206,"customerName":"Karen Mcfarland","phone":"1-101-451-0174","email":"sed.dui@aol.edu","address":"379-132 Vulputate Avenue","postalZip":"30200","country":"Poland"},{"customerId":1207,"customerName":"Freya Skinner","phone":"1-859-639-2765","email":"quis.arcu@outlook.ca","address":"733-152 In Rd.","postalZip":"66842","country":"France"},{"customerId":1208,"customerName":"Minerva Blankenship","phone":"(547) 979-5625","email":"luctus.ipsum@yahoo.com","address":"311-4470 Arcu Avenue","postalZip":"12886","country":"Netherlands"},{"customerId":1209,"customerName":"Cody Figueroa","phone":"(312) 873-1696","email":"ipsum.dolor@hotmail.net","address":"5812 Est, St.","postalZip":"444566","country":"Italy"},{"customerId":1210,"customerName":"Christian Berger","phone":"(827) 212-4278","email":"bibendum.ullamcorper@outlook.org","address":"Ap #976-925 Eu Ave","postalZip":"73246","country":"Costa Rica"},{"customerId":1211,"customerName":"Geraldine Benson","phone":"(686) 771-0523","email":"rutrum.justo@google.com","address":"468-9285 Sit Av.","postalZip":"4178 LZ","country":"China"},{"customerId":1212,"customerName":"Rhona Mckay","phone":"1-249-718-6439","email":"eu.arcu@protonmail.net","address":"783-2662 Malesuada St.","postalZip":"4734","country":"France"},{"customerId":1213,"customerName":"Mohammad Holland","phone":"1-616-294-7414","email":"elit.a@google.net","address":"456-4028 Cursus St.","postalZip":"37507","country":"Germany"},{"customerId":1214,"customerName":"Fulton Lowery","phone":"(971) 538-3365","email":"placerat.velit@yahoo.net","address":"435-6035 Blandit Rd.","postalZip":"481178","country":"Canada"},{"customerId":1215,"customerName":"Shaine Stevenson","phone":"1-224-316-1576","email":"eleifend.cras.sed@google.org","address":"Ap #800-1048 Accumsan St.","postalZip":"5507","country":"Poland"},{"customerId":1216,"customerName":"Shad Moses","phone":"1-663-446-6058","email":"dui.in@google.com","address":"P.O. Box 202, 4862 Vitae Rd.","postalZip":"42806","country":"United States"},{"customerId":1217,"customerName":"Colt Stewart","phone":"1-531-643-7652","email":"est.arcu@outlook.org","address":"166-7253 Senectus St.","postalZip":"71-760","country":"Ukraine"},{"customerId":1218,"customerName":"Prescott Newton","phone":"(673) 986-0514","email":"felis.purus@hotmail.org","address":"P.O. Box 359, 7008 Etiam St.","postalZip":"69759","country":"New Zealand"},{"customerId":1219,"customerName":"Hashim Myers","phone":"1-299-612-8826","email":"aliquet.magna@google.couk","address":"Ap #799-8129 Mi. St.","postalZip":"76081","country":"Pakistan"},{"customerId":1220,"customerName":"Gisela Simpson","phone":"(781) 688-2283","email":"lorem@protonmail.org","address":"994-7036 Laoreet, Road","postalZip":"0628","country":"France"},{"customerId":1221,"customerName":"Alice Beasley","phone":"(861) 125-1151","email":"lectus@aol.net","address":"191-8262 Quam. Av.","postalZip":"61784","country":"Russian Federation"},{"customerId":1222,"customerName":"Baxter Alvarez","phone":"1-597-217-4715","email":"aliquam.adipiscing@aol.org","address":"497-5274 Et, Street","postalZip":"50606","country":"United Kingdom"},{"customerId":1223,"customerName":"Eric Wallace","phone":"(828) 814-2311","email":"sociosqu.ad@google.edu","address":"Ap #851-8445 Fusce Avenue","postalZip":"371855","country":"Russian Federation"},{"customerId":1224,"customerName":"Virginia Nichols","phone":"(158) 415-6514","email":"mattis.ornare@hotmail.com","address":"2551 Orci Rd.","postalZip":"93284","country":"China"},{"customerId":1225,"customerName":"Joelle Aguirre","phone":"(854) 516-7135","email":"velit@aol.ca","address":"989-339 Non Ave","postalZip":"31922","country":"Philippines"},{"customerId":1226,"customerName":"Amanda Hebert","phone":"1-232-775-8274","email":"ut.erat.sed@hotmail.org","address":"586-9506 Ridiculus Ave","postalZip":"9885","country":"Peru"},{"customerId":1227,"customerName":"Ryder Vang","phone":"1-575-823-1726","email":"libero@google.net","address":"P.O. Box 223, 8835 Vestibulum Road","postalZip":"7134","country":"Turkey"},{"customerId":1228,"customerName":"Cole Hebert","phone":"1-795-415-3404","email":"aliquet.sem.ut@google.net","address":"759-1631 Eget Rd.","postalZip":"26-729","country":"India"},{"customerId":1229,"customerName":"Zelenia Goff","phone":"(970) 563-5745","email":"nisi.aenean.eget@google.org","address":"453-9241 Non, Road","postalZip":"95-537","country":"Philippines"},{"customerId":1230,"customerName":"Duncan Little","phone":"1-282-913-6876","email":"gravida.nunc.sed@outlook.org","address":"P.O. Box 551, 1705 Morbi St.","postalZip":"36-75","country":"Indonesia"},{"customerId":1231,"customerName":"Zephania Burch","phone":"(348) 442-1242","email":"pede.cras.vulputate@yahoo.ca","address":"5084 Vitae Rd.","postalZip":"21965","country":"Peru"},{"customerId":1232,"customerName":"Basil Lloyd","phone":"1-341-344-7427","email":"nulla.tempor@icloud.ca","address":"Ap #843-7443 Integer Rd.","postalZip":"345108","country":"Netherlands"},{"customerId":1233,"customerName":"Melyssa Brooks","phone":"(508) 884-1383","email":"montes.nascetur.ridiculus@hotmail.edu","address":"Ap #456-6388 Rutrum St.","postalZip":"16-211","country":"New Zealand"},{"customerId":1234,"customerName":"Aurora Leonard","phone":"(316) 665-6644","email":"ipsum.primis@icloud.org","address":"428-6242 Sit Street","postalZip":"973687","country":"Sweden"},{"customerId":1235,"customerName":"Anika Le","phone":"(685) 626-7388","email":"primis.in@yahoo.couk","address":"Ap #640-168 Phasellus Street","postalZip":"8873","country":"Sweden"},{"customerId":1236,"customerName":"Quintessa Shepard","phone":"1-226-348-8571","email":"consectetuer.mauris@outlook.couk","address":"Ap #794-1498 Turpis. St.","postalZip":"35015","country":"Ukraine"},{"customerId":1237,"customerName":"Quintessa Walter","phone":"1-757-517-3627","email":"accumsan.convallis@protonmail.edu","address":"788 Ornare. Av.","postalZip":"340373","country":"Spain"},{"customerId":1238,"customerName":"Jeanette Ingram","phone":"1-408-761-8781","email":"lacinia.orci@icloud.org","address":"751-744 Molestie. Rd.","postalZip":"7822","country":"Ukraine"},{"customerId":1239,"customerName":"Magee Logan","phone":"1-762-419-3843","email":"tincidunt.vehicula@google.org","address":"369-2642 Proin Ave","postalZip":"BW82 2KE","country":"Mexico"},{"customerId":1240,"customerName":"Reagan Clements","phone":"1-412-723-3895","email":"pharetra.quisque@google.org","address":"Ap #110-6548 Tempus, Av.","postalZip":"E3W 5E7","country":"Austria"},{"customerId":1241,"customerName":"Dennis Taylor","phone":"(739) 486-3238","email":"eleifend.non@google.net","address":"Ap #933-6271 Consequat Rd.","postalZip":"265283","country":"France"},{"customerId":1242,"customerName":"Alvin Ray","phone":"1-475-608-8144","email":"ligula.aenean@icloud.net","address":"389-1590 Rutrum Street","postalZip":"24343-512","country":"Chile"},{"customerId":1243,"customerName":"Devin Sweeney","phone":"1-836-658-2998","email":"dolor@outlook.com","address":"3386 Fermentum Road","postalZip":"Y64 1TQ","country":"Norway"},{"customerId":1244,"customerName":"Rajah Duke","phone":"(828) 875-5614","email":"nec@google.net","address":"Ap #103-6999 Tempus Road","postalZip":"403585","country":"Ukraine"},{"customerId":1245,"customerName":"Yoshio Olson","phone":"1-641-435-1196","email":"cubilia.curae@google.edu","address":"176-3215 Sed Road","postalZip":"15288-379","country":"United Kingdom"},{"customerId":1246,"customerName":"Reuben Hodge","phone":"1-239-725-4351","email":"sit.amet@outlook.org","address":"P.O. Box 809, 4971 Maecenas Rd.","postalZip":"15787-48453","country":"Sweden"},{"customerId":1247,"customerName":"Aline Mccarty","phone":"1-710-583-3497","email":"odio.semper.cursus@aol.couk","address":"7836 Faucibus Rd.","postalZip":"7178","country":"Ukraine"},{"customerId":1248,"customerName":"Kylie Kim","phone":"1-539-363-6835","email":"mi.enim.condimentum@icloud.couk","address":"P.O. Box 463, 3487 Dictum Road","postalZip":"18877","country":"Nigeria"},{"customerId":1249,"customerName":"Sage Bowers","phone":"1-224-410-8556","email":"eget.laoreet@outlook.net","address":"Ap #539-2641 A, Avenue","postalZip":"18446","country":"South Korea"},{"customerId":1250,"customerName":"Brynn Miller","phone":"(386) 396-7094","email":"lectus@hotmail.couk","address":"168-7085 Egestas. Rd.","postalZip":"14794","country":"Colombia"},{"customerId":1251,"customerName":"Cruz Durham","phone":"(678) 223-1384","email":"in.cursus@icloud.ca","address":"Ap #116-2724 Aliquam St.","postalZip":"726827","country":"India"},{"customerId":1252,"customerName":"Raphael Lambert","phone":"(647) 930-4484","email":"eleifend.nec.malesuada@yahoo.couk","address":"Ap #342-2310 Integer Av.","postalZip":"829183","country":"Netherlands"},{"customerId":1253,"customerName":"Barrett Barber","phone":"(257) 348-8468","email":"massa.mauris@yahoo.ca","address":"822-9335 Nunc Rd.","postalZip":"455544","country":"Chile"},{"customerId":1254,"customerName":"Alfonso Tran","phone":"(375) 735-1642","email":"a@aol.couk","address":"723-2618 In Rd.","postalZip":"07310","country":"France"},{"customerId":1255,"customerName":"Quamar Duran","phone":"(575) 354-6717","email":"sapien@protonmail.net","address":"Ap #889-6343 Sociosqu Avenue","postalZip":"88438-60533","country":"China"},{"customerId":1256,"customerName":"Doris Huff","phone":"1-734-846-7929","email":"lorem.donec@outlook.ca","address":"P.O. Box 557, 9450 Dictum Road","postalZip":"460487","country":"Spain"},{"customerId":1257,"customerName":"Anastasia Morrow","phone":"(930) 605-1289","email":"lectus.nullam.suscipit@yahoo.org","address":"482-1037 Blandit Ave","postalZip":"7115","country":"Philippines"},{"customerId":1258,"customerName":"Ashely Trujillo","phone":"1-516-852-1250","email":"vitae.sodales.at@yahoo.couk","address":"Ap #859-4386 Rutrum Street","postalZip":"03111","country":"South Africa"},{"customerId":1259,"customerName":"Adrienne Mcconnell","phone":"1-286-881-6866","email":"at.fringilla@icloud.ca","address":"464-6392 Convallis Road","postalZip":"8538-8927","country":"Spain"},{"customerId":1260,"customerName":"Cassandra Sanders","phone":"1-635-255-4629","email":"consectetuer@icloud.edu","address":"303-3212 Sollicitudin St.","postalZip":"14457","country":"United States"},{"customerId":1261,"customerName":"Cameron Valentine","phone":"1-600-664-6489","email":"sollicitudin.orci@aol.edu","address":"P.O. Box 834, 1814 Et Rd.","postalZip":"37162","country":"New Zealand"},{"customerId":1262,"customerName":"Norman Griffin","phone":"(419) 768-0314","email":"neque.vitae@aol.net","address":"P.O. Box 556, 1579 Scelerisque Ave","postalZip":"881244","country":"India"},{"customerId":1263,"customerName":"Carlos Ramsey","phone":"1-435-347-3869","email":"vestibulum@yahoo.couk","address":"3943 Et St.","postalZip":"33416","country":"Germany"},{"customerId":1264,"customerName":"Mariam Howe","phone":"(639) 461-4086","email":"velit.dui.semper@protonmail.couk","address":"Ap #931-7415 Faucibus Rd.","postalZip":"427079","country":"India"},{"customerId":1265,"customerName":"MacKenzie Alford","phone":"1-894-538-1015","email":"tincidunt.neque.vitae@aol.ca","address":"Ap #937-6343 Dictum. St.","postalZip":"95268","country":"Philippines"},{"customerId":1266,"customerName":"Graham Holloway","phone":"1-914-671-1572","email":"facilisis.eget@google.ca","address":"Ap #741-5080 Facilisi. Street","postalZip":"51478","country":"Philippines"},{"customerId":1267,"customerName":"Heidi Mays","phone":"1-734-713-2514","email":"sem@hotmail.net","address":"396-4900 Sem Rd.","postalZip":"1446-8660","country":"New Zealand"},{"customerId":1268,"customerName":"Amelia Farmer","phone":"1-317-724-8376","email":"libero.donec@yahoo.edu","address":"Ap #662-8397 Lorem Street","postalZip":"Y6P 7N7","country":"Russian Federation"},{"customerId":1269,"customerName":"Holly Hernandez","phone":"1-565-529-5693","email":"placerat.orci.lacus@aol.org","address":"7601 Vel Ave","postalZip":"4786","country":"Turkey"},{"customerId":1270,"customerName":"Philip Hurley","phone":"1-605-754-4983","email":"nibh.sit@google.org","address":"Ap #757-1677 Vivamus Ave","postalZip":"40188","country":"Russian Federation"},{"customerId":1271,"customerName":"Veronica Maddox","phone":"1-342-207-4242","email":"ac.metus.vitae@icloud.ca","address":"Ap #301-4476 Orci, Street","postalZip":"236475","country":"Indonesia"},{"customerId":1272,"customerName":"Nolan Wallace","phone":"1-625-178-4338","email":"donec@hotmail.ca","address":"838-1885 Non, Av.","postalZip":"11705","country":"Austria"},{"customerId":1273,"customerName":"Grace Ford","phone":"(771) 717-4359","email":"ornare@aol.couk","address":"1650 Sed Ave","postalZip":"853817","country":"Philippines"},{"customerId":1274,"customerName":"Imelda Bird","phone":"1-256-394-3476","email":"in.hendrerit.consectetuer@hotmail.com","address":"Ap #207-873 Faucibus Ave","postalZip":"58544","country":"Costa Rica"},{"customerId":1275,"customerName":"Amos Barnett","phone":"(217) 753-0167","email":"vestibulum.massa.rutrum@outlook.org","address":"Ap #504-7391 Id Road","postalZip":"428658","country":"Brazil"},{"customerId":1276,"customerName":"Vance Davidson","phone":"(632) 848-0851","email":"tortor@google.com","address":"8164 Libero. Av.","postalZip":"59-452","country":"China"},{"customerId":1277,"customerName":"George Valdez","phone":"1-267-365-8404","email":"quisque@icloud.couk","address":"580 Sed Avenue","postalZip":"9231","country":"Colombia"},{"customerId":1278,"customerName":"Rama Dejesus","phone":"(994) 521-1473","email":"duis.cursus@yahoo.couk","address":"395-357 Tellus Av.","postalZip":"3577","country":"United Kingdom"},{"customerId":1279,"customerName":"Tyler Ferguson","phone":"1-737-618-0663","email":"arcu@hotmail.edu","address":"P.O. Box 486, 7908 Tempor Av.","postalZip":"1354","country":"Pakistan"},{"customerId":1280,"customerName":"Fallon Ryan","phone":"(673) 362-7218","email":"quis.arcu@hotmail.edu","address":"916-7982 Egestas, Rd.","postalZip":"73151","country":"Poland"},{"customerId":1281,"customerName":"Rhiannon Riddle","phone":"(379) 427-8051","email":"mi.lacinia@icloud.org","address":"1538 Ut Avenue","postalZip":"96418","country":"Chile"},{"customerId":1282,"customerName":"Mannix Stokes","phone":"1-952-667-7440","email":"tempus@icloud.couk","address":"Ap #465-924 Placerat Rd.","postalZip":"8941","country":"Netherlands"},{"customerId":1283,"customerName":"Kirsten Beard","phone":"(386) 552-8516","email":"ipsum@hotmail.com","address":"Ap #314-2610 Donec Rd.","postalZip":"865232","country":"Netherlands"},{"customerId":1284,"customerName":"Colton Greer","phone":"(544) 639-1708","email":"eros.proin@icloud.net","address":"Ap #905-1422 Non Road","postalZip":"528183","country":"Costa Rica"},{"customerId":1285,"customerName":"Beck Rasmussen","phone":"(701) 185-3456","email":"sagittis@protonmail.edu","address":"6434 Amet Road","postalZip":"27272","country":"Brazil"},{"customerId":1286,"customerName":"Driscoll Walter","phone":"(315) 868-2551","email":"natoque.penatibus@yahoo.net","address":"6840 Ac Avenue","postalZip":"39757","country":"Colombia"},{"customerId":1287,"customerName":"Guinevere Bolton","phone":"1-560-309-8068","email":"mauris.vel.turpis@aol.org","address":"9282 Fringilla Street","postalZip":"635531","country":"Sweden"},{"customerId":1288,"customerName":"Talon Barr","phone":"(281) 571-6497","email":"tellus.phasellus@protonmail.edu","address":"8955 Tincidunt Rd.","postalZip":"A8M 4Z5","country":"Pakistan"},{"customerId":1289,"customerName":"Fatima Mccoy","phone":"(685) 483-3596","email":"mus.proin@yahoo.org","address":"Ap #684-6010 Etiam Ave","postalZip":"25617","country":"Netherlands"},{"customerId":1290,"customerName":"Ivana Mays","phone":"1-858-558-1483","email":"ultricies.adipiscing.enim@protonmail.ca","address":"5110 Ut Street","postalZip":"B2W 3L8","country":"Belgium"},{"customerId":1291,"customerName":"Kenneth Burnett","phone":"1-873-670-1824","email":"lectus.pede.et@icloud.edu","address":"Ap #350-2238 Orci. Road","postalZip":"289227","country":"Netherlands"},{"customerId":1292,"customerName":"Raymond Daniel","phone":"1-543-681-3471","email":"odio.a@yahoo.com","address":"266-9313 Urna St.","postalZip":"49309","country":"Italy"},{"customerId":1293,"customerName":"Lael Delacruz","phone":"(542) 282-5126","email":"adipiscing@outlook.net","address":"742-7498 Dis Avenue","postalZip":"68087","country":"Costa Rica"},{"customerId":1294,"customerName":"Stephen Navarro","phone":"(964) 652-1134","email":"quis.arcu@yahoo.edu","address":"P.O. Box 777, 6051 Ipsum Ave","postalZip":"3769","country":"Poland"},{"customerId":1295,"customerName":"Keith Sykes","phone":"(240) 371-6114","email":"sodales.nisi@google.couk","address":"P.O. Box 712, 4196 Sed Road","postalZip":"3124","country":"Italy"},{"customerId":1296,"customerName":"Hop Wheeler","phone":"(882) 852-2134","email":"tellus.id@aol.couk","address":"1148 Quisque St.","postalZip":"07388","country":"Vietnam"},{"customerId":1297,"customerName":"Austin Browning","phone":"1-564-808-1387","email":"velit.sed@protonmail.org","address":"Ap #508-3125 Sollicitudin Rd.","postalZip":"153452","country":"Russian Federation"},{"customerId":1298,"customerName":"Ulric Harrington","phone":"(404) 767-7164","email":"lectus@yahoo.edu","address":"727-6859 Metus. Road","postalZip":"10-672","country":"Norway"},{"customerId":1299,"customerName":"Hanae Hyde","phone":"1-578-859-4133","email":"non.justo.proin@protonmail.net","address":"P.O. Box 780, 4090 Dapibus Av.","postalZip":"61255","country":"Ireland"},{"customerId":1300,"customerName":"Baker Morse","phone":"(826) 500-9636","email":"amet.dapibus@yahoo.couk","address":"570-7315 Bibendum Rd.","postalZip":"36605","country":"India"},{"customerId":1301,"customerName":"Evangeline Leon","phone":"1-658-285-7538","email":"ac.turpis@yahoo.com","address":"Ap #632-3608 Ac St.","postalZip":"25893-07660","country":"Norway"},{"customerId":1302,"customerName":"Noble Donaldson","phone":"(672) 816-8714","email":"quis@icloud.net","address":"4300 Iaculis, Ave","postalZip":"02707","country":"Colombia"},{"customerId":1303,"customerName":"Kalia Colon","phone":"(427) 123-2426","email":"vel.pede.blandit@hotmail.couk","address":"P.O. Box 870, 3590 Eleifend. St.","postalZip":"206846","country":"Indonesia"},{"customerId":1304,"customerName":"Linus Hess","phone":"1-619-136-5385","email":"nunc.sed@outlook.ca","address":"Ap #880-3705 Eu, Street","postalZip":"L3X 5S1","country":"Spain"},{"customerId":1305,"customerName":"Colt Stout","phone":"1-543-909-7130","email":"suspendisse.sed.dolor@yahoo.ca","address":"P.O. Box 653, 6054 Massa Rd.","postalZip":"T2T 3W6","country":"Netherlands"},{"customerId":1306,"customerName":"Ronan Taylor","phone":"1-753-561-8886","email":"dolor@protonmail.edu","address":"Ap #207-9022 Ac St.","postalZip":"268624","country":"Philippines"},{"customerId":1307,"customerName":"Rahim Roberson","phone":"1-278-767-3521","email":"nunc.quisque@google.net","address":"720-6909 Non, Rd.","postalZip":"5815","country":"South Korea"},{"customerId":1308,"customerName":"Hayden Crane","phone":"(335) 968-3323","email":"porta.elit.a@aol.com","address":"Ap #920-4101 Quis St.","postalZip":"425565","country":"Spain"},{"customerId":1309,"customerName":"Halla Hooper","phone":"(259) 162-0866","email":"ac.mattis@aol.com","address":"P.O. Box 253, 4701 Fusce Rd.","postalZip":"58871-613","country":"Ukraine"},{"customerId":1310,"customerName":"Mohammad Morse","phone":"(516) 866-3151","email":"semper.et@outlook.org","address":"Ap #774-5318 Mauris Ave","postalZip":"63371","country":"Indonesia"},{"customerId":1311,"customerName":"Yeo Summers","phone":"(677) 386-8129","email":"sed.tortor@outlook.com","address":"P.O. Box 172, 7153 Mauris. Ave","postalZip":"10808","country":"United Kingdom"},{"customerId":1312,"customerName":"Abdul Bartlett","phone":"(368) 654-6656","email":"malesuada@outlook.com","address":"P.O. Box 353, 3630 Orci, Street","postalZip":"4786","country":"Chile"},{"customerId":1313,"customerName":"Alvin Kirk","phone":"1-561-308-0898","email":"mauris@protonmail.ca","address":"253-692 Ipsum Street","postalZip":"I6B 7XE","country":"Vietnam"},{"customerId":1314,"customerName":"Cora Jimenez","phone":"1-748-974-5722","email":"aliquet.diam.sed@yahoo.com","address":"670-5496 Sed Street","postalZip":"43176","country":"Mexico"},{"customerId":1315,"customerName":"Sybill Osborn","phone":"1-447-771-6596","email":"ultricies@google.ca","address":"659-6176 Mauris Road","postalZip":"589008","country":"United States"},{"customerId":1316,"customerName":"Dominique Sandoval","phone":"1-787-906-6357","email":"tellus.imperdiet@outlook.ca","address":"440-5486 Eu Road","postalZip":"9191","country":"Brazil"},{"customerId":1317,"customerName":"Kyra Gross","phone":"1-380-721-5074","email":"quis.accumsan.convallis@google.net","address":"762-318 Vestibulum St.","postalZip":"88-859","country":"Sweden"},{"customerId":1318,"customerName":"Joelle Buckner","phone":"(881) 445-5503","email":"malesuada.vel.venenatis@yahoo.com","address":"P.O. Box 523, 2613 Dui, Road","postalZip":"909421","country":"Australia"},{"customerId":1319,"customerName":"Kyle Santiago","phone":"(829) 759-2866","email":"at.velit@yahoo.couk","address":"902-9693 Elit, St.","postalZip":"96721-726","country":"China"},{"customerId":1320,"customerName":"Colorado Cook","phone":"1-413-651-3683","email":"at.fringilla.purus@yahoo.ca","address":"Ap #819-1809 In Street","postalZip":"1808","country":"Italy"},{"customerId":1321,"customerName":"Lev Robinson","phone":"1-196-234-2414","email":"sed.congue.elit@icloud.net","address":"Ap #223-9304 At Avenue","postalZip":"V0Z 7E1","country":"Sweden"},{"customerId":1322,"customerName":"Linus Lloyd","phone":"1-944-270-7136","email":"diam@outlook.edu","address":"Ap #767-5684 Lobortis. Avenue","postalZip":"S5G 2L0","country":"Indonesia"},{"customerId":1323,"customerName":"Chaim Kinney","phone":"1-555-209-8729","email":"ac@google.org","address":"Ap #299-238 Lobortis Rd.","postalZip":"18474","country":"Poland"},{"customerId":1324,"customerName":"Keane Meadows","phone":"(356) 754-9635","email":"vitae.sodales@hotmail.ca","address":"Ap #698-3225 Donec Ave","postalZip":"28357-282","country":"Australia"},{"customerId":1325,"customerName":"Amaya Carroll","phone":"1-285-137-8225","email":"ac.metus@protonmail.edu","address":"204-6242 Nunc St.","postalZip":"66321-333","country":"Belgium"},{"customerId":1326,"customerName":"Hayfa Yang","phone":"1-518-607-9630","email":"augue@aol.ca","address":"P.O. Box 777, 611 Dui, St.","postalZip":"88577","country":"Australia"},{"customerId":1327,"customerName":"Jenette Rivera","phone":"1-117-899-8340","email":"porta@hotmail.couk","address":"6330 Erat Road","postalZip":"1156","country":"Spain"},{"customerId":1328,"customerName":"Oren Faulkner","phone":"(626) 935-7176","email":"pretium.et@google.edu","address":"976-459 Orci, Road","postalZip":"2248","country":"Turkey"},{"customerId":1329,"customerName":"Jakeem Hopkins","phone":"1-821-356-4816","email":"quisque.fringilla.euismod@yahoo.com","address":"Ap #163-6401 Orci. Street","postalZip":"17747","country":"Canada"},{"customerId":1330,"customerName":"Dana Walker","phone":"(613) 682-2416","email":"mauris@google.couk","address":"231-3124 Ultrices Avenue","postalZip":"584075","country":"South Korea"},{"customerId":1331,"customerName":"Griffith Hardin","phone":"(601) 585-9447","email":"varius.et@google.net","address":"Ap #363-9006 Aliquam Ave","postalZip":"8465-8387","country":"Pakistan"},{"customerId":1332,"customerName":"Axel Horn","phone":"(354) 604-8388","email":"libero.dui@hotmail.net","address":"Ap #684-3222 Purus Street","postalZip":"50615","country":"Canada"},{"customerId":1333,"customerName":"Raya Ochoa","phone":"(547) 494-1328","email":"donec.fringilla@yahoo.org","address":"Ap #383-3711 Aliquam Rd.","postalZip":"566332","country":"United States"},{"customerId":1334,"customerName":"Berk Best","phone":"1-783-723-4745","email":"suspendisse.aliquet@google.net","address":"218-782 Proin Av.","postalZip":"30214","country":"Pakistan"},{"customerId":1335,"customerName":"Roanna Rodriquez","phone":"1-351-606-1374","email":"maecenas.iaculis.aliquet@yahoo.couk","address":"Ap #435-2602 Nunc Street","postalZip":"56724","country":"Netherlands"},{"customerId":1336,"customerName":"Simon Navarro","phone":"(776) 407-3328","email":"condimentum.donec@hotmail.edu","address":"500-2422 Lacinia Road","postalZip":"65-796","country":"Australia"},{"customerId":1337,"customerName":"Jaime Sullivan","phone":"(444) 875-8366","email":"odio@yahoo.couk","address":"P.O. Box 248, 6669 Sem Ave","postalZip":"253020","country":"Australia"},{"customerId":1338,"customerName":"Boris Fowler","phone":"(276) 788-0236","email":"duis.gravida@outlook.org","address":"738-2917 Nibh Avenue","postalZip":"11808","country":"New Zealand"},{"customerId":1339,"customerName":"Xenos Newman","phone":"(866) 561-7975","email":"feugiat.metus@hotmail.couk","address":"7339 Morbi Ave","postalZip":"64462","country":"Austria"},{"customerId":1340,"customerName":"Hayley Russell","phone":"(150) 601-3338","email":"vel.pede@yahoo.com","address":"6306 Placerat, Street","postalZip":"3627","country":"Russian Federation"},{"customerId":1341,"customerName":"Bernard Frederick","phone":"(670) 424-2679","email":"at.velit.cras@aol.ca","address":"P.O. Box 388, 8445 Condimentum. Ave","postalZip":"487516","country":"Italy"},{"customerId":1342,"customerName":"Desiree Williams","phone":"(250) 588-7416","email":"sollicitudin.a@icloud.org","address":"796-3664 Lobortis Avenue","postalZip":"87204","country":"South Korea"},{"customerId":1343,"customerName":"Clare Bowen","phone":"1-346-496-3723","email":"nullam.vitae.diam@outlook.couk","address":"479-6977 Gravida Av.","postalZip":"9716 QG","country":"Turkey"},{"customerId":1344,"customerName":"Colorado Ochoa","phone":"(231) 914-2689","email":"in.magna@hotmail.net","address":"881-2543 Morbi St.","postalZip":"647653","country":"Mexico"},{"customerId":1345,"customerName":"Idona Gates","phone":"(264) 925-3735","email":"inceptos.hymenaeos@google.ca","address":"929-2560 Accumsan Street","postalZip":"249589","country":"Vietnam"},{"customerId":1346,"customerName":"Dalton Simpson","phone":"1-568-501-2571","email":"pharetra@aol.edu","address":"631-5847 Aliquet Ave","postalZip":"44554","country":"United States"},{"customerId":1347,"customerName":"Tate Santiago","phone":"(978) 525-5134","email":"nunc.in.at@icloud.org","address":"P.O. Box 355, 283 Ridiculus Ave","postalZip":"8719","country":"Mexico"},{"customerId":1348,"customerName":"Demetrius Boyle","phone":"1-863-361-1919","email":"per.conubia@aol.couk","address":"Ap #455-1160 Nam St.","postalZip":"46594","country":"Belgium"},{"customerId":1349,"customerName":"Walter Dudley","phone":"1-662-882-1484","email":"vitae.aliquet@aol.net","address":"396-1095 Augue Street","postalZip":"86113","country":"South Africa"},{"customerId":1350,"customerName":"Buckminster Knapp","phone":"1-721-445-1634","email":"fringilla.donec@aol.com","address":"463-3365 Tellus. Street","postalZip":"3845","country":"Mexico"},{"customerId":1351,"customerName":"Claudia Monroe","phone":"(377) 474-8872","email":"libero.mauris.aliquam@protonmail.ca","address":"Ap #631-2128 Orci Avenue","postalZip":"45-114","country":"Australia"},{"customerId":1352,"customerName":"Perry Barnes","phone":"(376) 706-8457","email":"amet@google.net","address":"768-739 Integer Ave","postalZip":"543444","country":"Italy"},{"customerId":1353,"customerName":"Rylee Manning","phone":"1-145-872-5110","email":"lorem.fringilla.ornare@hotmail.org","address":"P.O. Box 743, 9906 Elit, St.","postalZip":"94671","country":"Ireland"},{"customerId":1354,"customerName":"Thane Velez","phone":"(477) 965-7329","email":"risus@yahoo.net","address":"4619 Nisl Road","postalZip":"5831","country":"Poland"},{"customerId":1355,"customerName":"Karen Padilla","phone":"(555) 480-6185","email":"fringilla.est@yahoo.edu","address":"Ap #291-7380 Non St.","postalZip":"41791","country":"China"},{"customerId":1356,"customerName":"Jeremy Haney","phone":"1-503-552-3914","email":"varius.orci@hotmail.couk","address":"Ap #982-1886 Justo St.","postalZip":"416248","country":"Germany"},{"customerId":1357,"customerName":"Illiana Henderson","phone":"(848) 154-5971","email":"ac.urna@aol.net","address":"462-1517 Convallis Street","postalZip":"19712","country":"Chile"},{"customerId":1358,"customerName":"Quon Snyder","phone":"(258) 274-6291","email":"dictum.placerat@icloud.com","address":"202-3794 Odio. Av.","postalZip":"675528","country":"China"},{"customerId":1359,"customerName":"Rogan Adkins","phone":"(834) 232-7960","email":"senectus@icloud.edu","address":"P.O. Box 446, 7362 Proin St.","postalZip":"07481","country":"Norway"},{"customerId":1360,"customerName":"Delilah Greene","phone":"1-641-330-0447","email":"sagittis.augue@google.com","address":"7027 Pellentesque. St.","postalZip":"8727-8221","country":"India"},{"customerId":1361,"customerName":"Quynn Sandoval","phone":"(955) 103-3732","email":"nec.ante.maecenas@aol.com","address":"P.O. Box 247, 5287 Pellentesque Av.","postalZip":"84-68","country":"Nigeria"},{"customerId":1362,"customerName":"Lydia Sargent","phone":"1-856-740-7823","email":"a.arcu@icloud.couk","address":"785-6677 Arcu. Rd.","postalZip":"86286","country":"India"},{"customerId":1363,"customerName":"Marshall Dawson","phone":"1-416-827-7501","email":"a.sollicitudin.orci@icloud.couk","address":"698-4234 Consectetuer Ave","postalZip":"16607","country":"Colombia"},{"customerId":1364,"customerName":"Ivan O'Neill","phone":"(455) 224-7425","email":"natoque@google.net","address":"P.O. Box 148, 1124 Ultrices Rd.","postalZip":"61073","country":"Singapore"},{"customerId":1365,"customerName":"Nash Camacho","phone":"1-997-274-3587","email":"donec@protonmail.org","address":"Ap #357-6667 Mi Ave","postalZip":"34782","country":"Russian Federation"},{"customerId":1366,"customerName":"Brynn Forbes","phone":"(975) 296-1204","email":"vitae.sodales.at@outlook.net","address":"P.O. Box 993, 945 Faucibus. Ave","postalZip":"226329","country":"Netherlands"},{"customerId":1367,"customerName":"Guinevere Cote","phone":"1-389-545-7549","email":"posuere.vulputate@icloud.net","address":"341-5041 Nunc Rd.","postalZip":"4043","country":"China"},{"customerId":1368,"customerName":"Fritz Mcdowell","phone":"(624) 556-6133","email":"nulla.at@protonmail.couk","address":"P.O. Box 267, 5900 Arcu Rd.","postalZip":"9117 YN","country":"Vietnam"},{"customerId":1369,"customerName":"Abel Rollins","phone":"1-935-533-1320","email":"integer.tincidunt.aliquam@aol.edu","address":"4591 Quis, Street","postalZip":"410943","country":"China"},{"customerId":1370,"customerName":"Shay Sexton","phone":"1-672-295-8772","email":"nulla@protonmail.ca","address":"8330 Id, Rd.","postalZip":"25994","country":"Peru"},{"customerId":1371,"customerName":"Rebekah Potts","phone":"1-753-351-3583","email":"aenean.sed@protonmail.couk","address":"743-2372 Senectus Rd.","postalZip":"26632","country":"China"},{"customerId":1372,"customerName":"Abel Callahan","phone":"1-238-897-4737","email":"ipsum.ac@protonmail.ca","address":"602-9571 Et Rd.","postalZip":"676111","country":"Ukraine"},{"customerId":1373,"customerName":"Mary Giles","phone":"(735) 725-4428","email":"libero.dui@outlook.ca","address":"Ap #165-736 Nulla Ave","postalZip":"6821","country":"Australia"},{"customerId":1374,"customerName":"Philip Oneil","phone":"(257) 629-2555","email":"aptent.taciti@google.edu","address":"157-3521 Proin Ave","postalZip":"Y0P 8C1","country":"Poland"},{"customerId":1375,"customerName":"Patrick Castro","phone":"1-640-726-6319","email":"elementum.sem@aol.edu","address":"717-1600 Mi St.","postalZip":"598875","country":"New Zealand"},{"customerId":1376,"customerName":"Hilary Whitney","phone":"1-435-463-7643","email":"semper.cursus@icloud.org","address":"967-2948 Cursus Av.","postalZip":"2152","country":"Pakistan"},{"customerId":1377,"customerName":"Remedios Chen","phone":"1-353-715-3714","email":"ac.sem@outlook.net","address":"1176 Massa. Av.","postalZip":"8947","country":"Austria"},{"customerId":1378,"customerName":"Oliver Garrison","phone":"1-888-763-3744","email":"proin@hotmail.net","address":"384-7892 Cras Av.","postalZip":"12817","country":"United States"},{"customerId":1379,"customerName":"Deborah Banks","phone":"1-689-256-5736","email":"facilisis.vitae@yahoo.ca","address":"693-2272 Nec, Road","postalZip":"436775","country":"South Africa"},{"customerId":1380,"customerName":"Gray Dickson","phone":"1-342-858-0605","email":"duis.ac@aol.edu","address":"213-1391 Eu Road","postalZip":"391188","country":"Singapore"},{"customerId":1381,"customerName":"Idola Emerson","phone":"(337) 452-8241","email":"duis.a@protonmail.org","address":"8660 Pharetra Avenue","postalZip":"8263-8908","country":"Mexico"},{"customerId":1382,"customerName":"Elijah Mcfarland","phone":"(736) 200-7353","email":"nec@google.edu","address":"4989 In Road","postalZip":"287217","country":"United States"},{"customerId":1383,"customerName":"Fuller Briggs","phone":"1-761-488-5674","email":"pellentesque.massa@aol.org","address":"Ap #414-1834 Phasellus Ave","postalZip":"68-67","country":"Nigeria"},{"customerId":1384,"customerName":"Cassandra Kline","phone":"(375) 844-8213","email":"augue.ut@aol.ca","address":"2860 Enim. Avenue","postalZip":"T7R 5HK","country":"South Africa"},{"customerId":1385,"customerName":"Dante Schwartz","phone":"1-671-992-7859","email":"mi@aol.org","address":"4007 Sed Road","postalZip":"58671-152","country":"Spain"},{"customerId":1386,"customerName":"Troy Herrera","phone":"1-848-134-1888","email":"integer.urna@google.ca","address":"Ap #894-2060 Ante, Rd.","postalZip":"71831","country":"Nigeria"},{"customerId":1387,"customerName":"Brandon Carter","phone":"(375) 550-5413","email":"blandit.nam.nulla@yahoo.org","address":"Ap #505-8566 Curabitur Street","postalZip":"2163-7106","country":"Chile"},{"customerId":1388,"customerName":"Jane Richardson","phone":"1-687-726-2155","email":"eu.tempor.erat@hotmail.couk","address":"Ap #495-9237 Convallis, St.","postalZip":"5621","country":"Turkey"},{"customerId":1389,"customerName":"Georgia Barber","phone":"(732) 462-7264","email":"cras.vehicula@protonmail.net","address":"P.O. Box 389, 622 Diam Street","postalZip":"67-457","country":"Chile"},{"customerId":1390,"customerName":"Blake Morse","phone":"(368) 540-3115","email":"proin.sed@yahoo.edu","address":"9857 Blandit St.","postalZip":"2634","country":"Netherlands"},{"customerId":1391,"customerName":"Graham King","phone":"1-231-496-2332","email":"metus.vitae.velit@yahoo.ca","address":"Ap #696-8137 In, Rd.","postalZip":"61623","country":"Spain"},{"customerId":1392,"customerName":"Kevyn Cotton","phone":"(724) 617-2252","email":"enim.sit@icloud.ca","address":"Ap #274-4472 Pellentesque Rd.","postalZip":"B1C 9Y0","country":"Norway"},{"customerId":1393,"customerName":"Matthew Powell","phone":"1-330-146-8282","email":"nonummy.ac.feugiat@outlook.ca","address":"P.O. Box 319, 810 Aliquam Av.","postalZip":"28842","country":"Italy"},{"customerId":1394,"customerName":"Hyatt Jacobs","phone":"1-764-370-3841","email":"nunc.id@icloud.com","address":"P.O. Box 130, 8495 Convallis Road","postalZip":"37288","country":"Chile"},{"customerId":1395,"customerName":"Xaviera Porter","phone":"(603) 632-9282","email":"tincidunt@google.ca","address":"P.O. Box 973, 1320 Etiam Av.","postalZip":"776726","country":"Indonesia"},{"customerId":1396,"customerName":"Byron Bender","phone":"1-800-455-2084","email":"enim@google.net","address":"3781 Dolor Avenue","postalZip":"3283","country":"Italy"},{"customerId":1397,"customerName":"Indira Harrell","phone":"(654) 738-6165","email":"convallis.est@hotmail.ca","address":"365-2891 Scelerisque Rd.","postalZip":"73422","country":"China"},{"customerId":1398,"customerName":"Brady Mcdonald","phone":"1-715-461-5072","email":"nulla@yahoo.com","address":"937-4396 Vitae, Street","postalZip":"2628","country":"Chile"},{"customerId":1399,"customerName":"Hadley Sharp","phone":"1-433-710-7754","email":"a@protonmail.edu","address":"420-4962 Mi St.","postalZip":"622548","country":"Peru"},{"customerId":1400,"customerName":"Jared Mercado","phone":"(248) 846-3824","email":"bibendum.fermentum.metus@aol.ca","address":"4990 Blandit St.","postalZip":"3463","country":"Chile"},{"customerId":1401,"customerName":"Robert Guy","phone":"1-357-829-2343","email":"ut.eros.non@protonmail.ca","address":"1961 Quam St.","postalZip":"9271","country":"Russian Federation"},{"customerId":1402,"customerName":"Breanna Mosley","phone":"1-771-929-4147","email":"donec.sollicitudin@google.net","address":"232-6807 Sit Rd.","postalZip":"82425","country":"Costa Rica"},{"customerId":1403,"customerName":"Paula Atkins","phone":"(344) 599-3220","email":"integer.vulputate@google.com","address":"752-1940 Nibh Avenue","postalZip":"5238","country":"Sweden"},{"customerId":1404,"customerName":"Brenda Salinas","phone":"(550) 302-6150","email":"tortor@outlook.com","address":"Ap #558-2552 Dapibus Rd.","postalZip":"4156","country":"South Korea"},{"customerId":1405,"customerName":"Macaulay Trujillo","phone":"1-877-845-3785","email":"est@yahoo.org","address":"337-6767 A, Street","postalZip":"6412","country":"Netherlands"},{"customerId":1406,"customerName":"Mason Cooke","phone":"(351) 681-6735","email":"leo.in@protonmail.edu","address":"Ap #918-8413 Turpis Rd.","postalZip":"Y2M 4T1","country":"United Kingdom"},{"customerId":1407,"customerName":"Karly White","phone":"1-228-311-8259","email":"ac.sem@google.net","address":"Ap #399-1965 Id, St.","postalZip":"2288","country":"Sweden"},{"customerId":1408,"customerName":"Shelly Velasquez","phone":"(177) 208-7167","email":"nunc@google.edu","address":"5845 Eu, Road","postalZip":"534955","country":"Belgium"},{"customerId":1409,"customerName":"Hayes Garrison","phone":"(249) 725-6442","email":"magnis@aol.ca","address":"Ap #454-8593 Eu Ave","postalZip":"577247","country":"Germany"},{"customerId":1410,"customerName":"Cally Graham","phone":"1-236-136-0781","email":"sed.turpis.nec@google.edu","address":"855-351 Auctor St.","postalZip":"0306 CF","country":"Belgium"},{"customerId":1411,"customerName":"Shellie Chen","phone":"1-566-412-5218","email":"tristique@icloud.net","address":"P.O. Box 973, 883 Id St.","postalZip":"62546-868","country":"Ireland"},{"customerId":1412,"customerName":"Kaitlin Newman","phone":"(146) 425-3974","email":"ultrices.posuere@icloud.edu","address":"3837 Eget Rd.","postalZip":"482654","country":"China"},{"customerId":1413,"customerName":"Karyn Webb","phone":"1-472-581-4721","email":"amet.nulla@outlook.ca","address":"P.O. Box 676, 5623 Tristique Av.","postalZip":"30612","country":"Austria"},{"customerId":1414,"customerName":"Sebastian Hendrix","phone":"1-712-549-3131","email":"dolor.sit.amet@yahoo.edu","address":"P.O. Box 294, 6115 Ut Rd.","postalZip":"8706","country":"New Zealand"},{"customerId":1415,"customerName":"Sarah Schroeder","phone":"(274) 632-7831","email":"sit.amet@outlook.ca","address":"704-2747 Adipiscing St.","postalZip":"13-63","country":"Russian Federation"},{"customerId":1416,"customerName":"Malik Head","phone":"(879) 526-5425","email":"ultricies.sem@aol.ca","address":"294-6499 Eu Street","postalZip":"5826","country":"United States"},{"customerId":1417,"customerName":"Mark Downs","phone":"1-398-312-6149","email":"auctor.velit.eget@hotmail.edu","address":"1587 Convallis Road","postalZip":"613182","country":"Netherlands"},{"customerId":1418,"customerName":"Hedley Warner","phone":"(732) 564-7748","email":"proin.sed.turpis@icloud.edu","address":"902-201 In Avenue","postalZip":"8855 WH","country":"Brazil"},{"customerId":1419,"customerName":"Lee Hendrix","phone":"(844) 751-1313","email":"odio.semper@protonmail.com","address":"Ap #441-4472 Fusce Ave","postalZip":"93282","country":"South Africa"},{"customerId":1420,"customerName":"Hadley Carney","phone":"1-743-635-8227","email":"etiam@aol.couk","address":"7589 Augue, Av.","postalZip":"51621","country":"Chile"},{"customerId":1421,"customerName":"Amanda Armstrong","phone":"(921) 533-8075","email":"senectus.et@protonmail.edu","address":"Ap #394-8637 Sit St.","postalZip":"473854","country":"Italy"},{"customerId":1422,"customerName":"Simon Boyd","phone":"1-687-372-4535","email":"aenean@yahoo.com","address":"P.O. Box 374, 2081 Hendrerit Road","postalZip":"8208","country":"Poland"},{"customerId":1423,"customerName":"Regina Guerrero","phone":"(160) 753-3871","email":"nullam.feugiat@aol.com","address":"590-4169 Tellus. Av.","postalZip":"63H 2C8","country":"Norway"},{"customerId":1424,"customerName":"Teagan Maddox","phone":"(347) 225-1895","email":"elementum.at@google.com","address":"Ap #616-2976 Elit Road","postalZip":"16051","country":"Ukraine"},{"customerId":1425,"customerName":"Clementine Meadows","phone":"(815) 346-8474","email":"proin.nisl.sem@google.couk","address":"7562 Fringilla, Ave","postalZip":"5218","country":"Pakistan"},{"customerId":1426,"customerName":"Carter Mcgee","phone":"(485) 816-9556","email":"purus.sapien@google.com","address":"Ap #604-2617 Proin Rd.","postalZip":"72-38","country":"Colombia"},{"customerId":1427,"customerName":"Ray Diaz","phone":"(570) 856-5463","email":"nonummy@yahoo.com","address":"P.O. Box 410, 9374 Dolor. Road","postalZip":"347542","country":"Turkey"},{"customerId":1428,"customerName":"Medge Smith","phone":"1-172-522-0656","email":"enim.non.nisi@google.net","address":"982-3692 Id Rd.","postalZip":"2127","country":"Sweden"},{"customerId":1429,"customerName":"Venus Durham","phone":"1-877-220-6950","email":"lorem.ipsum@aol.net","address":"524-3668 Morbi Rd.","postalZip":"81159-587","country":"Chile"},{"customerId":1430,"customerName":"Jordan Barry","phone":"(319) 823-4618","email":"purus.maecenas@hotmail.couk","address":"Ap #170-4836 Gravida. St.","postalZip":"M01 4FO","country":"Colombia"},{"customerId":1431,"customerName":"Darryl Kidd","phone":"(374) 815-7524","email":"ultricies.ornare.elit@outlook.com","address":"5756 Facilisis Av.","postalZip":"8668","country":"Vietnam"},{"customerId":1432,"customerName":"Rudyard Richmond","phone":"1-686-596-4093","email":"semper@yahoo.ca","address":"403-3191 Nunc Street","postalZip":"472111","country":"Ireland"},{"customerId":1433,"customerName":"Burton Murphy","phone":"(332) 388-1202","email":"felis.donec@google.com","address":"7095 Porttitor Street","postalZip":"85-28","country":"Nigeria"},{"customerId":1434,"customerName":"Shellie Silva","phone":"1-544-711-5586","email":"feugiat.nec@protonmail.edu","address":"495-6059 Felis Avenue","postalZip":"695718","country":"China"},{"customerId":1435,"customerName":"Boris Cummings","phone":"1-448-430-4422","email":"diam.at.pretium@yahoo.org","address":"842-1880 Euismod St.","postalZip":"354827","country":"Poland"},{"customerId":1436,"customerName":"Melyssa Sweeney","phone":"1-773-385-2255","email":"fermentum.arcu@outlook.org","address":"6543 Suspendisse Rd.","postalZip":"1143 WM","country":"Colombia"},{"customerId":1437,"customerName":"Elizabeth Adkins","phone":"1-492-238-3683","email":"luctus.curabitur.egestas@outlook.edu","address":"Ap #186-4670 Ullamcorper, Street","postalZip":"34733","country":"Austria"},{"customerId":1438,"customerName":"Regan Chase","phone":"(427) 874-0222","email":"nulla.tincidunt@google.couk","address":"P.O. Box 729, 9658 Ante. Av.","postalZip":"421677","country":"Canada"},{"customerId":1439,"customerName":"Marcia Hayden","phone":"1-517-454-6216","email":"luctus.ipsum@outlook.couk","address":"4343 Posuere St.","postalZip":"65571","country":"Italy"},{"customerId":1440,"customerName":"Nathan Woodard","phone":"(864) 221-8233","email":"sed.pede@outlook.edu","address":"Ap #721-6523 Nisl St.","postalZip":"958646","country":"Peru"},{"customerId":1441,"customerName":"Patrick Joseph","phone":"(397) 337-8161","email":"enim.etiam@protonmail.org","address":"646 Nibh. Rd.","postalZip":"541326","country":"Indonesia"},{"customerId":1442,"customerName":"Nell Terry","phone":"(319) 269-2944","email":"cursus@google.com","address":"5599 Sapien. Street","postalZip":"14758","country":"Costa Rica"},{"customerId":1443,"customerName":"Jackson Hood","phone":"1-333-858-3511","email":"vel.venenatis@google.com","address":"5730 Integer Rd.","postalZip":"R1M 5M4","country":"Italy"},{"customerId":1444,"customerName":"Bo Townsend","phone":"(982) 834-0159","email":"odio.nam@google.couk","address":"Ap #409-5038 Hendrerit. St.","postalZip":"7330","country":"Canada"},{"customerId":1445,"customerName":"Kasimir Cobb","phone":"1-226-827-6362","email":"libero.morbi@outlook.net","address":"718-687 Laoreet Rd.","postalZip":"73577","country":"Peru"},{"customerId":1446,"customerName":"Seth Clay","phone":"(373) 374-3584","email":"vulputate.posuere@yahoo.com","address":"Ap #282-5429 Odio, Street","postalZip":"543124","country":"Ireland"},{"customerId":1447,"customerName":"May Morse","phone":"(650) 978-2239","email":"enim@outlook.net","address":"216-3840 Sed Rd.","postalZip":"62784","country":"Germany"},{"customerId":1448,"customerName":"Regan Hunt","phone":"1-230-987-0487","email":"faucibus.orci@yahoo.net","address":"404-6518 Lectus Road","postalZip":"27725","country":"Mexico"},{"customerId":1449,"customerName":"Oren Weiss","phone":"1-657-169-2093","email":"interdum.enim@yahoo.com","address":"Ap #520-7390 Orci Av.","postalZip":"83828","country":"China"},{"customerId":1450,"customerName":"Xander Lyons","phone":"(251) 743-6084","email":"sed@icloud.edu","address":"298 Adipiscing. Rd.","postalZip":"557583","country":"Poland"},{"customerId":1451,"customerName":"Jerome Lawson","phone":"1-346-144-0305","email":"dolor@outlook.net","address":"Ap #494-5240 Metus Road","postalZip":"25141","country":"New Zealand"},{"customerId":1452,"customerName":"Lester Morton","phone":"(261) 480-6322","email":"nullam.nisl@google.com","address":"619-705 Posuere, Ave","postalZip":"876325","country":"China"},{"customerId":1453,"customerName":"Daphne Hutchinson","phone":"1-588-521-0089","email":"cras.eget@protonmail.edu","address":"132-2342 Imperdiet St.","postalZip":"53-281","country":"South Korea"},{"customerId":1454,"customerName":"Noel Bell","phone":"1-522-123-1613","email":"mauris.erat@aol.ca","address":"271-8137 Eget Av.","postalZip":"5577","country":"Singapore"},{"customerId":1455,"customerName":"Neil Mcgee","phone":"1-393-523-7116","email":"pretium.et.rutrum@protonmail.couk","address":"4057 Duis Avenue","postalZip":"0245","country":"Sweden"},{"customerId":1456,"customerName":"Rajah Kaufman","phone":"(623) 206-3689","email":"vel@google.edu","address":"P.O. Box 263, 2713 Vivamus Av.","postalZip":"78846","country":"New Zealand"},{"customerId":1457,"customerName":"Pamela Barron","phone":"1-282-880-3258","email":"non.lacinia@yahoo.edu","address":"Ap #339-8091 Egestas Rd.","postalZip":"268541","country":"Germany"},{"customerId":1458,"customerName":"Judith Ortega","phone":"1-430-910-7469","email":"nec.luctus@hotmail.ca","address":"P.O. Box 285, 6251 Etiam Avenue","postalZip":"8597","country":"Turkey"},{"customerId":1459,"customerName":"Quyn Cervantes","phone":"1-661-857-5314","email":"phasellus.nulla@protonmail.org","address":"4746 Lacus. Avenue","postalZip":"76388","country":"Netherlands"},{"customerId":1460,"customerName":"Rebekah Solis","phone":"(621) 685-7840","email":"neque.sed@google.com","address":"743-7503 Sed Street","postalZip":"92472","country":"Ireland"},{"customerId":1461,"customerName":"Rajah Ferguson","phone":"(519) 271-1344","email":"in.dolor.fusce@yahoo.com","address":"678-2766 Tortor. Rd.","postalZip":"25485","country":"United States"},{"customerId":1462,"customerName":"Beau Moran","phone":"(257) 616-6112","email":"ut@hotmail.org","address":"810-5322 Nam Av.","postalZip":"7042","country":"Australia"},{"customerId":1463,"customerName":"Sebastian Gutierrez","phone":"(125) 232-2042","email":"elit.pretium.et@outlook.com","address":"1581 Est. St.","postalZip":"628394","country":"Singapore"},{"customerId":1464,"customerName":"Pearl Brooks","phone":"1-962-618-4885","email":"dui@protonmail.net","address":"P.O. Box 537, 4680 Euismod Ave","postalZip":"12307","country":"Philippines"},{"customerId":1465,"customerName":"Zachery Rowe","phone":"(704) 388-7845","email":"natoque.penatibus.et@aol.ca","address":"Ap #730-411 Id, Street","postalZip":"243539","country":"Russian Federation"},{"customerId":1466,"customerName":"Constance Kirkland","phone":"1-952-518-1532","email":"dolor.sit@aol.org","address":"P.O. Box 137, 950 Eu Rd.","postalZip":"259766","country":"New Zealand"},{"customerId":1467,"customerName":"Callum Melton","phone":"1-740-226-4104","email":"quam.vel.sapien@google.com","address":"248-862 Auctor Street","postalZip":"8573","country":"Mexico"},{"customerId":1468,"customerName":"Byron Pratt","phone":"(188) 775-5788","email":"risus.duis@protonmail.edu","address":"P.O. Box 469, 8493 Neque. St.","postalZip":"83348","country":"Nigeria"},{"customerId":1469,"customerName":"Raymond Mendez","phone":"1-386-551-1685","email":"phasellus@google.net","address":"Ap #810-8261 Quisque St.","postalZip":"283756","country":"Spain"},{"customerId":1470,"customerName":"Dorothy Molina","phone":"1-924-226-0519","email":"dictum.augue@yahoo.com","address":"738-1375 Quam St.","postalZip":"04276","country":"Ireland"},{"customerId":1471,"customerName":"Judith Bryan","phone":"(232) 371-0652","email":"amet.orci.ut@yahoo.edu","address":"665-3294 Erat St.","postalZip":"317846","country":"United Kingdom"},{"customerId":1472,"customerName":"Fletcher Hayes","phone":"1-764-338-1455","email":"orci.quis.lectus@icloud.org","address":"1076 Ornare Road","postalZip":"55514","country":"France"},{"customerId":1473,"customerName":"Brittany Chandler","phone":"(744) 892-8876","email":"duis.mi@protonmail.couk","address":"Ap #561-2067 Sagittis Avenue","postalZip":"871363","country":"Turkey"},{"customerId":1474,"customerName":"Mikayla Jensen","phone":"(485) 285-1430","email":"morbi.tristique.senectus@aol.org","address":"851-6767 Volutpat Road","postalZip":"4292","country":"Nigeria"},{"customerId":1475,"customerName":"Briar King","phone":"(356) 212-7474","email":"non.arcu@google.net","address":"359-6927 Turpis. Street","postalZip":"21-874","country":"Colombia"},{"customerId":1476,"customerName":"Lacey Mercer","phone":"(885) 333-9474","email":"venenatis.a@outlook.org","address":"Ap #419-3943 Duis St.","postalZip":"539142","country":"France"},{"customerId":1477,"customerName":"Eleanor Floyd","phone":"1-177-533-7375","email":"volutpat.ornare@yahoo.com","address":"Ap #960-4112 Elementum, Rd.","postalZip":"718548","country":"Germany"},{"customerId":1478,"customerName":"Maile Mayer","phone":"1-322-315-8111","email":"tincidunt.aliquam@yahoo.com","address":"Ap #486-649 Fusce Rd.","postalZip":"56241","country":"Netherlands"},{"customerId":1479,"customerName":"Hillary Wade","phone":"1-443-311-0868","email":"arcu@google.com","address":"197-6962 Enim. Avenue","postalZip":"5513-2453","country":"Philippines"},{"customerId":1480,"customerName":"Melodie Nieves","phone":"1-988-553-3198","email":"rutrum.urna@google.couk","address":"825 Imperdiet, Rd.","postalZip":"35-49","country":"Australia"},{"customerId":1481,"customerName":"Rudyard Sherman","phone":"(888) 322-1271","email":"amet.lorem@icloud.com","address":"4138 Pede Street","postalZip":"939718","country":"United Kingdom"},{"customerId":1482,"customerName":"Demetria England","phone":"1-501-219-5570","email":"arcu.vestibulum@google.ca","address":"282-7794 Velit. Av.","postalZip":"134573","country":"Ireland"},{"customerId":1483,"customerName":"Travis Barron","phone":"(831) 197-9763","email":"sem.pellentesque.ut@google.net","address":"Ap #987-3412 Tincidunt, St.","postalZip":"40337","country":"Australia"},{"customerId":1484,"customerName":"Fuller Barnes","phone":"(854) 764-4813","email":"purus@hotmail.net","address":"9191 Congue Rd.","postalZip":"S6V 6C2","country":"Brazil"},{"customerId":1485,"customerName":"Jacqueline Riggs","phone":"(210) 411-0395","email":"sed.auctor.odio@icloud.com","address":"Ap #758-4793 Pharetra, Rd.","postalZip":"631719","country":"Australia"},{"customerId":1486,"customerName":"Cherokee Cherry","phone":"1-759-146-3635","email":"condimentum.eget@icloud.com","address":"1779 Semper St.","postalZip":"2555","country":"Colombia"},{"customerId":1487,"customerName":"Eliana Wiggins","phone":"1-340-861-3284","email":"nulla.facilisis@google.com","address":"874-4413 Nulla St.","postalZip":"18721","country":"India"},{"customerId":1488,"customerName":"Ocean Nolan","phone":"(440) 888-6142","email":"urna@google.ca","address":"7353 Magna St.","postalZip":"P6N 8IW","country":"Pakistan"},{"customerId":1489,"customerName":"Phillip Malone","phone":"1-298-214-1548","email":"donec.tempus.lorem@protonmail.net","address":"816-1177 Ac Av.","postalZip":"874549","country":"Italy"},{"customerId":1490,"customerName":"Bertha Browning","phone":"1-976-795-7866","email":"scelerisque.scelerisque.dui@icloud.org","address":"Ap #584-7985 Ultrices. St.","postalZip":"75771-071","country":"Netherlands"},{"customerId":1491,"customerName":"Kiara Keller","phone":"(532) 654-4924","email":"duis.a@aol.org","address":"P.O. Box 462, 6705 Mauris Avenue","postalZip":"16101","country":"Philippines"},{"customerId":1492,"customerName":"Roary Mcguire","phone":"1-584-974-2759","email":"tincidunt.tempus@hotmail.com","address":"351-5478 Lorem Av.","postalZip":"29739","country":"Netherlands"},{"customerId":1493,"customerName":"Gretchen Terrell","phone":"1-753-115-8564","email":"magna@protonmail.ca","address":"P.O. Box 450, 4866 Aptent St.","postalZip":"6975-9289","country":"Singapore"},{"customerId":1494,"customerName":"Wilma Lewis","phone":"1-242-889-5854","email":"adipiscing.elit@google.couk","address":"Ap #107-998 Fermentum Av.","postalZip":"78445","country":"Philippines"},{"customerId":1495,"customerName":"Malcolm Flynn","phone":"(362) 465-8764","email":"integer@yahoo.edu","address":"596-7143 Et, St.","postalZip":"79-629","country":"United Kingdom"},{"customerId":1496,"customerName":"Noah Summers","phone":"1-127-528-8858","email":"convallis@google.net","address":"Ap #573-9650 Et Street","postalZip":"763186","country":"Mexico"},{"customerId":1497,"customerName":"Athena Noel","phone":"(185) 760-5457","email":"molestie.arcu@google.couk","address":"938-1487 Nunc, Av.","postalZip":"58593","country":"Philippines"},{"customerId":1498,"customerName":"William Tyler","phone":"1-705-351-4918","email":"faucibus.lectus@aol.net","address":"559-438 Risus. Road","postalZip":"7065","country":"Vietnam"},{"customerId":1499,"customerName":"Dylan Hutchinson","phone":"(652) 906-4717","email":"sed.diam@yahoo.edu","address":"356-3693 Blandit Road","postalZip":"77279","country":"United States"},{"customerId":1500,"customerName":"Flynn Hartman","phone":"1-468-568-4494","email":"turpis.vitae.purus@google.net","address":"675-5870 Sapien. St.","postalZip":"791118","country":"Austria"},{"customerId":1501,"customerName":"McKenzie Mcneil","phone":"(166) 390-7282","email":"praesent.luctus.curabitur@outlook.com","address":"Ap #116-7259 Interdum. Avenue","postalZip":"2110","country":"Ireland"},{"customerId":1502,"customerName":"Tarik Fields","phone":"1-866-750-2706","email":"libero.proin@outlook.org","address":"7574 Donec Rd.","postalZip":"80177","country":"Nigeria"},{"customerId":1503,"customerName":"Whilemina Reilly","phone":"1-501-858-3298","email":"dictum.phasellus@yahoo.net","address":"Ap #120-762 Rhoncus. Rd.","postalZip":"B7S 5A2","country":"China"},{"customerId":1504,"customerName":"Aaron Lewis","phone":"1-526-722-6692","email":"nunc@icloud.edu","address":"419-2134 Vitae St.","postalZip":"37464","country":"Ukraine"},{"customerId":1505,"customerName":"Basil Sloan","phone":"(328) 668-5437","email":"nec@protonmail.edu","address":"Ap #565-1866 Mi Rd.","postalZip":"21507","country":"United States"},{"customerId":1506,"customerName":"Ezra Banks","phone":"1-233-743-6012","email":"vulputate.posuere.vulputate@google.edu","address":"840-4158 Nibh. Road","postalZip":"63478","country":"Mexico"},{"customerId":1507,"customerName":"Ian Wyatt","phone":"(467) 713-5531","email":"orci@outlook.ca","address":"Ap #686-9816 Vitae Av.","postalZip":"93364","country":"Austria"},{"customerId":1508,"customerName":"Ahmed James","phone":"1-707-235-8866","email":"egestas@hotmail.org","address":"Ap #960-1187 Massa. Ave","postalZip":"UB4 7RK","country":"Mexico"},{"customerId":1509,"customerName":"Cailin Smith","phone":"1-885-601-4724","email":"purus.in.molestie@google.com","address":"928-392 Ligula. Ave","postalZip":"24831","country":"New Zealand"},{"customerId":1510,"customerName":"Kylee Gallegos","phone":"1-701-158-4685","email":"porta.elit.a@outlook.edu","address":"571-6772 Erat Road","postalZip":"50447-730","country":"Germany"},{"customerId":1511,"customerName":"Aimee Myers","phone":"(868) 615-7841","email":"aliquet.nec@protonmail.net","address":"P.O. Box 543, 5797 Eu Avenue","postalZip":"37494","country":"Canada"},{"customerId":1512,"customerName":"Abbot Spencer","phone":"(771) 675-6803","email":"blandit.enim@protonmail.edu","address":"Ap #645-8349 Ad Ave","postalZip":"12153","country":"Germany"},{"customerId":1513,"customerName":"Nell Wilcox","phone":"(466) 387-5621","email":"eu.arcu.morbi@protonmail.couk","address":"P.O. Box 295, 2886 Ante. St.","postalZip":"8567-6327","country":"Colombia"},{"customerId":1514,"customerName":"Maggy Hood","phone":"1-856-525-6187","email":"sed.eget@icloud.com","address":"P.O. Box 732, 6922 Odio. St.","postalZip":"515861","country":"Singapore"},{"customerId":1515,"customerName":"Macon Mccall","phone":"1-884-618-4634","email":"cubilia.curae@protonmail.ca","address":"8746 Vel Street","postalZip":"8911","country":"United States"},{"customerId":1516,"customerName":"Ezekiel Cooley","phone":"1-302-114-6634","email":"amet.metus@google.com","address":"880-2620 Egestas. Street","postalZip":"9912 DN","country":"New Zealand"},{"customerId":1517,"customerName":"Russell Hendrix","phone":"(328) 841-5878","email":"condimentum.eget.volutpat@outlook.ca","address":"Ap #520-4463 Metus Avenue","postalZip":"24768","country":"Austria"},{"customerId":1518,"customerName":"Tad Norman","phone":"(539) 650-8887","email":"eu.augue@yahoo.net","address":"Ap #655-4472 Vitae Rd.","postalZip":"74831","country":"Mexico"},{"customerId":1519,"customerName":"Adena Baxter","phone":"1-412-781-7545","email":"ultrices.duis@icloud.org","address":"245 Cras Road","postalZip":"5765","country":"South Africa"},{"customerId":1520,"customerName":"Tate Dawson","phone":"(841) 344-1704","email":"vestibulum.neque@outlook.net","address":"6714 Hendrerit Rd.","postalZip":"72656","country":"Mexico"},{"customerId":1521,"customerName":"Dara George","phone":"1-346-386-2181","email":"sed.et@hotmail.couk","address":"586-3321 Elit St.","postalZip":"14847","country":"Sweden"},{"customerId":1522,"customerName":"Jessica Bell","phone":"(740) 633-3725","email":"vestibulum@outlook.net","address":"8717 Proin Street","postalZip":"14761","country":"Nigeria"},{"customerId":1523,"customerName":"Steel Dale","phone":"1-586-946-4061","email":"imperdiet.dictum@protonmail.net","address":"3549 Vestibulum Ave","postalZip":"306701","country":"Singapore"},{"customerId":1524,"customerName":"Grace Thornton","phone":"1-404-815-9933","email":"semper.rutrum@google.org","address":"562-2784 Molestie Street","postalZip":"432990","country":"Russian Federation"},{"customerId":1525,"customerName":"Christian Copeland","phone":"1-569-813-8954","email":"risus.quisque@icloud.couk","address":"7909 Dictum Road","postalZip":"78383-26021","country":"Pakistan"},{"customerId":1526,"customerName":"Nissim Jackson","phone":"(646) 231-6467","email":"in.molestie@hotmail.ca","address":"990-3298 Orci Av.","postalZip":"15158","country":"Nigeria"},{"customerId":1527,"customerName":"Anthony Spencer","phone":"1-207-684-3725","email":"a.tortor@google.edu","address":"P.O. Box 692, 9331 Tincidunt Road","postalZip":"426698","country":"Turkey"},{"customerId":1528,"customerName":"Yoshio Herman","phone":"(557) 625-9833","email":"sapien.imperdiet.ornare@outlook.ca","address":"256-8143 Aliquam, St.","postalZip":"51045","country":"United States"},{"customerId":1529,"customerName":"Karleigh William","phone":"1-876-823-6379","email":"a.facilisis.non@google.couk","address":"9877 Mattis. Av.","postalZip":"86464","country":"Sweden"},{"customerId":1530,"customerName":"Jeremy Lloyd","phone":"(460) 415-3476","email":"scelerisque.neque.nullam@google.ca","address":"P.O. Box 338, 8128 Donec Avenue","postalZip":"61407-521","country":"Germany"},{"customerId":1531,"customerName":"Ivy English","phone":"1-179-798-6357","email":"dictum@aol.ca","address":"583 Dui, Rd.","postalZip":"213345","country":"Turkey"},{"customerId":1532,"customerName":"Jenette Bentley","phone":"1-782-772-5541","email":"convallis@outlook.edu","address":"P.O. Box 123, 4816 Tristique St.","postalZip":"8861","country":"Singapore"},{"customerId":1533,"customerName":"Mary Miranda","phone":"1-759-387-2924","email":"lacus.aliquam@icloud.ca","address":"1032 Massa. Road","postalZip":"338261","country":"Ireland"},{"customerId":1534,"customerName":"Neil Meyers","phone":"(784) 575-4741","email":"quis@yahoo.com","address":"299-1192 At, St.","postalZip":"564168","country":"Pakistan"},{"customerId":1535,"customerName":"Burke Guthrie","phone":"1-737-670-8343","email":"massa.mauris.vestibulum@icloud.org","address":"3879 Justo Road","postalZip":"61176","country":"Peru"},{"customerId":1536,"customerName":"Uriel Cervantes","phone":"1-648-388-3587","email":"at.velit.cras@yahoo.net","address":"7752 Et, Road","postalZip":"PG5A 1OK","country":"Canada"},{"customerId":1537,"customerName":"Alexander Ryan","phone":"1-807-745-3807","email":"dictum.ultricies@google.edu","address":"125-2358 Consectetuer Avenue","postalZip":"56-15","country":"South Korea"},{"customerId":1538,"customerName":"Mechelle Gilbert","phone":"1-362-242-5351","email":"vestibulum.lorem@outlook.com","address":"835-6325 Sapien. Road","postalZip":"785957","country":"Sweden"},{"customerId":1539,"customerName":"Serina Ratliff","phone":"1-733-412-4228","email":"libero.dui@yahoo.couk","address":"Ap #179-2329 Duis Avenue","postalZip":"795272","country":"Russian Federation"},{"customerId":1540,"customerName":"Baker Sloan","phone":"(753) 257-3255","email":"tortor.dictum.eu@protonmail.ca","address":"486-2340 Fringilla Av.","postalZip":"2801","country":"India"},{"customerId":1541,"customerName":"Zena Rowe","phone":"(575) 288-5544","email":"quam.a@outlook.couk","address":"161-2481 Nec Rd.","postalZip":"02070","country":"Ireland"},{"customerId":1542,"customerName":"Nadine Duke","phone":"(835) 884-7769","email":"maecenas.malesuada@protonmail.net","address":"5794 Vel St.","postalZip":"50105","country":"France"},{"customerId":1543,"customerName":"Sara Mcdonald","phone":"(581) 214-4133","email":"nullam@outlook.edu","address":"170-1390 Viverra. Rd.","postalZip":"248080","country":"Ireland"},{"customerId":1544,"customerName":"Quinlan Garner","phone":"(238) 571-0284","email":"lectus.ante@yahoo.com","address":"Ap #292-3354 Eu St.","postalZip":"7152","country":"Singapore"},{"customerId":1545,"customerName":"Cade Garza","phone":"1-724-688-3790","email":"congue.in@outlook.org","address":"Ap #112-7956 Donec Road","postalZip":"53-59","country":"Mexico"},{"customerId":1546,"customerName":"Leonard Nicholson","phone":"1-970-237-7180","email":"vitae.posuere@outlook.org","address":"Ap #744-3445 Tempor Rd.","postalZip":"2672","country":"Sweden"},{"customerId":1547,"customerName":"Julian Rodriguez","phone":"(974) 443-3175","email":"quisque.ac.libero@outlook.net","address":"3467 Hymenaeos. Av.","postalZip":"8453","country":"Costa Rica"},{"customerId":1548,"customerName":"Carolyn Mcfadden","phone":"1-825-506-0384","email":"orci.luctus@icloud.net","address":"323-6285 Risus. Road","postalZip":"7046","country":"Brazil"},{"customerId":1549,"customerName":"Tate Morin","phone":"1-635-725-4085","email":"montes.nascetur.ridiculus@protonmail.org","address":"Ap #688-4955 Arcu. St.","postalZip":"30881","country":"New Zealand"},{"customerId":1550,"customerName":"Xander Bullock","phone":"1-974-842-8466","email":"metus.in@outlook.net","address":"509-6735 Non St.","postalZip":"393524","country":"South Africa"},{"customerId":1551,"customerName":"Chester Lyons","phone":"1-438-891-7757","email":"consectetuer.adipiscing@protonmail.org","address":"Ap #513-1993 Quisque Street","postalZip":"45140-18471","country":"Sweden"},{"customerId":1552,"customerName":"Odessa Becker","phone":"(456) 252-3811","email":"sodales@hotmail.ca","address":"Ap #674-147 Augue Ave","postalZip":"21528-58414","country":"New Zealand"},{"customerId":1553,"customerName":"Tara Best","phone":"1-838-562-6847","email":"cum.sociis@outlook.com","address":"Ap #319-8597 Velit. Ave","postalZip":"12603","country":"Belgium"},{"customerId":1554,"customerName":"Lael Gross","phone":"1-461-738-3675","email":"varius.nam@yahoo.net","address":"515-995 Rhoncus. Avenue","postalZip":"21237","country":"Russian Federation"},{"customerId":1555,"customerName":"Kelly Savage","phone":"1-665-770-0615","email":"erat@google.net","address":"Ap #775-3829 Et, Avenue","postalZip":"671683","country":"Pakistan"},{"customerId":1556,"customerName":"Theodore Mcneil","phone":"1-817-208-4768","email":"consequat.enim@aol.ca","address":"649-3431 Nunc St.","postalZip":"33426","country":"Costa Rica"},{"customerId":1557,"customerName":"Hilary Guthrie","phone":"(441) 586-5208","email":"in.consequat@icloud.ca","address":"662-355 Viverra. Avenue","postalZip":"202273","country":"France"},{"customerId":1558,"customerName":"Carissa Perkins","phone":"1-227-673-1245","email":"habitant@aol.edu","address":"947-3502 Auctor Rd.","postalZip":"157261","country":"Italy"},{"customerId":1559,"customerName":"Claudia Foreman","phone":"(618) 390-6326","email":"nascetur@aol.org","address":"Ap #474-9359 Tellus. Av.","postalZip":"33525452","country":"Philippines"},{"customerId":1560,"customerName":"Shana Valdez","phone":"(204) 242-7458","email":"diam.proin@google.edu","address":"959-8629 Mus. Ave","postalZip":"245686","country":"France"},{"customerId":1561,"customerName":"Nadine Kim","phone":"(566) 178-6838","email":"phasellus.in@outlook.com","address":"Ap #880-6632 At, Road","postalZip":"604233","country":"South Korea"},{"customerId":1562,"customerName":"Tamekah Calderon","phone":"(589) 642-1591","email":"lectus.convallis@hotmail.edu","address":"3995 Sit Ave","postalZip":"8486","country":"India"},{"customerId":1563,"customerName":"Leah Battle","phone":"1-265-436-2635","email":"odio.phasellus@hotmail.couk","address":"Ap #694-436 Cras Rd.","postalZip":"311774","country":"Philippines"},{"customerId":1564,"customerName":"Vance Battle","phone":"1-815-769-4626","email":"condimentum.donec@icloud.com","address":"386-9686 Quisque Rd.","postalZip":"3812","country":"Norway"},{"customerId":1565,"customerName":"Fallon Mcdowell","phone":"(244) 856-6414","email":"arcu.iaculis.enim@hotmail.couk","address":"P.O. Box 120, 2304 Id, Road","postalZip":"48533","country":"Australia"},{"customerId":1566,"customerName":"Guinevere James","phone":"1-859-864-6361","email":"nonummy.ut@hotmail.com","address":"Ap #216-8629 Neque Rd.","postalZip":"34658","country":"Nigeria"},{"customerId":1567,"customerName":"Kylynn Villarreal","phone":"1-748-281-4551","email":"conubia.nostra.per@outlook.org","address":"500-8908 In Street","postalZip":"903978","country":"Russian Federation"},{"customerId":1568,"customerName":"James Baxter","phone":"1-861-691-8354","email":"vel.sapien.imperdiet@outlook.net","address":"Ap #188-5927 Sodales Road","postalZip":"666693","country":"Nigeria"},{"customerId":1569,"customerName":"Dominic Randolph","phone":"1-846-244-6548","email":"libero.donec@hotmail.org","address":"Ap #962-5268 Neque. Rd.","postalZip":"48-25","country":"Colombia"},{"customerId":1570,"customerName":"Jael Boone","phone":"(675) 840-5703","email":"cursus.diam@google.edu","address":"5719 Et, Street","postalZip":"S2N 5B5","country":"Sweden"},{"customerId":1571,"customerName":"Axel Moses","phone":"1-572-176-6541","email":"lobortis.augue.scelerisque@aol.net","address":"Ap #866-9703 Aliquet St.","postalZip":"892948","country":"Colombia"},{"customerId":1572,"customerName":"Kirby Olson","phone":"1-318-371-3883","email":"in.magna@yahoo.com","address":"Ap #297-7935 Ipsum Avenue","postalZip":"F8B 6AE","country":"France"},{"customerId":1573,"customerName":"Griffith Wright","phone":"1-775-697-9174","email":"molestie@protonmail.couk","address":"Ap #882-9342 Amet Rd.","postalZip":"2158","country":"Australia"},{"customerId":1574,"customerName":"Jemima Beck","phone":"(467) 488-2618","email":"montes.nascetur@aol.couk","address":"P.O. Box 664, 7037 Amet St.","postalZip":"UV75 0QY","country":"India"},{"customerId":1575,"customerName":"Tallulah Branch","phone":"(880) 338-1627","email":"tristique.senectus@icloud.net","address":"2481 Urna Av.","postalZip":"30515","country":"Australia"},{"customerId":1576,"customerName":"Dara Herman","phone":"(760) 541-2943","email":"lectus.justo.eu@google.ca","address":"3211 Luctus Rd.","postalZip":"10-363","country":"Australia"},{"customerId":1577,"customerName":"Reece Carter","phone":"(265) 319-3355","email":"quam@hotmail.couk","address":"P.O. Box 767, 682 Sem, Road","postalZip":"54867","country":"Mexico"},{"customerId":1578,"customerName":"Xyla Butler","phone":"1-384-877-3155","email":"cum.sociis.natoque@aol.net","address":"Ap #186-6630 Tempus St.","postalZip":"3698","country":"Vietnam"},{"customerId":1579,"customerName":"Libby Madden","phone":"(479) 936-4346","email":"enim@hotmail.ca","address":"Ap #383-3743 Accumsan Avenue","postalZip":"4784","country":"Chile"},{"customerId":1580,"customerName":"Keaton Gonzales","phone":"1-630-158-6984","email":"odio.auctor@aol.edu","address":"7406 Arcu. Street","postalZip":"338469","country":"China"},{"customerId":1581,"customerName":"Guinevere Dixon","phone":"(763) 788-7542","email":"nunc.lectus.pede@aol.edu","address":"643-1844 Lorem. Ave","postalZip":"40213","country":"Colombia"},{"customerId":1582,"customerName":"Priscilla Pena","phone":"1-607-730-5138","email":"consequat.purus@protonmail.edu","address":"P.O. Box 563, 824 Aliquet Street","postalZip":"9853","country":"Australia"},{"customerId":1583,"customerName":"Timon Hopper","phone":"1-790-808-7406","email":"dictum.mi.ac@outlook.net","address":"Ap #341-8394 Luctus Street","postalZip":"11563","country":"Sweden"},{"customerId":1584,"customerName":"Carl Castaneda","phone":"1-926-562-5316","email":"elit.a@outlook.couk","address":"832-5155 Nascetur Ave","postalZip":"56205","country":"Peru"},{"customerId":1585,"customerName":"Xaviera Kelley","phone":"(723) 911-7523","email":"cum.sociis@icloud.org","address":"Ap #427-903 Euismod Av.","postalZip":"820757","country":"Netherlands"},{"customerId":1586,"customerName":"Unity Henson","phone":"1-953-684-5154","email":"a.purus@protonmail.org","address":"Ap #695-2807 Senectus Rd.","postalZip":"9382","country":"Italy"},{"customerId":1587,"customerName":"Gage Holden","phone":"1-355-247-5242","email":"odio.sagittis@google.couk","address":"457-1090 Enim Rd.","postalZip":"475296","country":"Brazil"},{"customerId":1588,"customerName":"Nita Adkins","phone":"1-584-691-5154","email":"amet@google.com","address":"5126 Nunc. Av.","postalZip":"WU31 2QK","country":"Australia"},{"customerId":1589,"customerName":"Keegan Lamb","phone":"1-716-343-3456","email":"pulvinar@yahoo.net","address":"Ap #372-4204 At Road","postalZip":"87-67","country":"Philippines"},{"customerId":1590,"customerName":"Quinn Sweet","phone":"1-239-328-7187","email":"adipiscing.elit@yahoo.net","address":"476-7064 Libero. Ave","postalZip":"7228","country":"Philippines"},{"customerId":1591,"customerName":"Ezra Greene","phone":"1-841-595-9177","email":"feugiat.non@aol.net","address":"Ap #718-444 Eros St.","postalZip":"43955","country":"Russian Federation"},{"customerId":1592,"customerName":"Frances Flowers","phone":"1-146-387-1926","email":"accumsan@hotmail.ca","address":"645-5000 Aliquam Street","postalZip":"852576","country":"Poland"},{"customerId":1593,"customerName":"Trevor Dejesus","phone":"(884) 636-8153","email":"ultrices.posuere.cubilia@icloud.edu","address":"Ap #276-122 Donec Street","postalZip":"541234","country":"Vietnam"},{"customerId":1594,"customerName":"Neil Cummings","phone":"1-612-507-2021","email":"ligula.tortor.dictum@google.ca","address":"Ap #612-9353 Sagittis. Street","postalZip":"337068","country":"Singapore"},{"customerId":1595,"customerName":"Lillith Gay","phone":"(274) 572-2548","email":"imperdiet@yahoo.edu","address":"Ap #622-2006 Cursus Ave","postalZip":"30811","country":"Ukraine"},{"customerId":1596,"customerName":"Illiana Vincent","phone":"(826) 460-8876","email":"maecenas.libero@aol.org","address":"P.O. Box 217, 4003 Ut, Rd.","postalZip":"T2M 4S4","country":"New Zealand"},{"customerId":1597,"customerName":"Ezra Finch","phone":"1-454-647-1191","email":"iaculis.odio@google.org","address":"288-2063 Auctor, Ave","postalZip":"5297","country":"Sweden"},{"customerId":1598,"customerName":"Chadwick Carney","phone":"(850) 217-8180","email":"nascetur.ridiculus.mus@icloud.couk","address":"Ap #246-2593 Eu Ave","postalZip":"4458","country":"United Kingdom"},{"customerId":1599,"customerName":"Ira Molina","phone":"(431) 332-4783","email":"feugiat@yahoo.ca","address":"Ap #310-1089 Semper Avenue","postalZip":"30765","country":"Sweden"},{"customerId":1600,"customerName":"Maya Chang","phone":"1-792-445-6513","email":"velit.aliquam@yahoo.net","address":"Ap #376-990 Risus. Street","postalZip":"36147","country":"Philippines"},{"customerId":1601,"customerName":"Ferris Mcpherson","phone":"(281) 367-9438","email":"elit.elit@protonmail.edu","address":"P.O. Box 186, 4085 Senectus Rd.","postalZip":"57188","country":"Italy"},{"customerId":1602,"customerName":"Rebekah Mason","phone":"1-563-616-6157","email":"sagittis@hotmail.org","address":"P.O. Box 662, 8738 Nullam St.","postalZip":"3617 FY","country":"Sweden"},{"customerId":1603,"customerName":"Ahmed Booker","phone":"1-825-659-3780","email":"dui.nec@hotmail.ca","address":"4536 Adipiscing Avenue","postalZip":"17455","country":"Pakistan"},{"customerId":1604,"customerName":"Azalia Huber","phone":"(825) 379-6869","email":"sed.libero.proin@icloud.net","address":"558-7276 Eleifend, St.","postalZip":"965025","country":"Brazil"},{"customerId":1605,"customerName":"Ella Preston","phone":"(831) 264-7575","email":"nibh.quisque.nonummy@yahoo.couk","address":"566-8199 Mus. Rd.","postalZip":"3439","country":"Ukraine"},{"customerId":1606,"customerName":"Blythe Pittman","phone":"(834) 671-7126","email":"mauris.blandit@aol.org","address":"125-4326 Purus St.","postalZip":"4317","country":"Ukraine"},{"customerId":1607,"customerName":"Yoshio Chapman","phone":"(898) 986-1273","email":"sit.amet@protonmail.edu","address":"Ap #155-2288 Libero Av.","postalZip":"44743","country":"Philippines"},{"customerId":1608,"customerName":"Anika Little","phone":"1-594-637-8201","email":"donec@outlook.couk","address":"Ap #294-872 Mauris Ave","postalZip":"06379","country":"Poland"},{"customerId":1609,"customerName":"Macon Workman","phone":"(289) 594-1157","email":"dis.parturient.montes@google.edu","address":"936-3514 Vitae, Ave","postalZip":"0252","country":"Canada"},{"customerId":1610,"customerName":"Garrison Durham","phone":"(258) 870-0620","email":"libero.integer@icloud.net","address":"P.O. Box 876, 1097 Magnis St.","postalZip":"30815","country":"Colombia"},{"customerId":1611,"customerName":"Veda Rios","phone":"(466) 365-7576","email":"mollis.integer@hotmail.org","address":"Ap #592-8065 Lacus. Street","postalZip":"835424","country":"Brazil"},{"customerId":1612,"customerName":"Whilemina Dominguez","phone":"(284) 662-2143","email":"sit.amet@icloud.couk","address":"938-7019 Sociis St.","postalZip":"485445","country":"China"},{"customerId":1613,"customerName":"Brett Morris","phone":"1-196-128-3152","email":"mi.ac@protonmail.edu","address":"545-3988 Mattis. Avenue","postalZip":"36438","country":"Spain"},{"customerId":1614,"customerName":"Elliott Gray","phone":"1-552-222-8342","email":"fermentum.metus@google.org","address":"284-9443 Justo Road","postalZip":"77-479","country":"Australia"},{"customerId":1615,"customerName":"Graham Norton","phone":"(867) 546-3531","email":"cursus.et@icloud.edu","address":"1955 Lorem, Av.","postalZip":"74772-058","country":"China"},{"customerId":1616,"customerName":"Palmer White","phone":"(855) 828-3747","email":"in.scelerisque@yahoo.edu","address":"Ap #694-6826 Tincidunt. Ave","postalZip":"16885","country":"China"},{"customerId":1617,"customerName":"Erasmus Camacho","phone":"1-948-196-9143","email":"vitae.nibh@aol.ca","address":"Ap #363-1053 Class Avenue","postalZip":"38169","country":"Mexico"},{"customerId":1618,"customerName":"Imogene Guy","phone":"1-276-653-6350","email":"metus.vitae.velit@outlook.ca","address":"5267 Dictum St.","postalZip":"041885","country":"Philippines"},{"customerId":1619,"customerName":"Aaron Bennett","phone":"(833) 375-4642","email":"et.lacinia@google.couk","address":"9677 Eleifend St.","postalZip":"831378","country":"Netherlands"},{"customerId":1620,"customerName":"Arden Patel","phone":"(622) 136-5410","email":"duis.a@hotmail.org","address":"202-1668 Gravida. Avenue","postalZip":"19038","country":"Colombia"},{"customerId":1621,"customerName":"Nissim Gray","phone":"1-405-952-2632","email":"aliquam@google.org","address":"Ap #919-8162 Ipsum Rd.","postalZip":"8488-8333","country":"Netherlands"},{"customerId":1622,"customerName":"Joshua Travis","phone":"(737) 261-3075","email":"mauris@google.org","address":"P.O. Box 475, 3136 Vitae Av.","postalZip":"818843","country":"Brazil"},{"customerId":1623,"customerName":"Benedict Sullivan","phone":"(458) 408-9656","email":"velit.justo@icloud.couk","address":"P.O. Box 632, 5450 Dui Road","postalZip":"6156 QH","country":"Costa Rica"},{"customerId":1624,"customerName":"Rudyard Battle","phone":"(665) 849-7813","email":"nullam.feugiat@icloud.net","address":"317-6615 Turpis Av.","postalZip":"7505","country":"Colombia"},{"customerId":1625,"customerName":"Clio Maddox","phone":"1-428-714-9741","email":"cras.vehicula.aliquet@outlook.com","address":"Ap #335-8353 Ultricies St.","postalZip":"1185 JV","country":"Russian Federation"},{"customerId":1626,"customerName":"Peter Gallagher","phone":"1-614-870-0551","email":"nunc.mauris@outlook.ca","address":"459-6842 Aenean St.","postalZip":"74645-22584","country":"New Zealand"},{"customerId":1627,"customerName":"Chester Reed","phone":"(840) 373-0625","email":"at@yahoo.com","address":"521-9750 Luctus Ave","postalZip":"53878","country":"France"},{"customerId":1628,"customerName":"Basia O'Neill","phone":"(782) 198-3175","email":"odio.phasellus@google.couk","address":"773-7288 Phasellus Rd.","postalZip":"490253","country":"Chile"},{"customerId":1629,"customerName":"Jack Benson","phone":"(281) 256-6334","email":"vulputate.lacus@yahoo.com","address":"194 Sed Road","postalZip":"8222","country":"Turkey"},{"customerId":1630,"customerName":"Shoshana Maddox","phone":"(568) 652-9811","email":"massa.non.ante@icloud.ca","address":"Ap #342-1108 Vel, St.","postalZip":"28638","country":"Sweden"},{"customerId":1631,"customerName":"Wing Atkinson","phone":"(467) 822-4681","email":"cras.convallis@hotmail.org","address":"Ap #120-3919 Hymenaeos. Road","postalZip":"7757","country":"South Korea"},{"customerId":1632,"customerName":"Callum Hobbs","phone":"(372) 578-6405","email":"nisi.cum.sociis@yahoo.couk","address":"9163 Lectus Avenue","postalZip":"445227","country":"Singapore"},{"customerId":1633,"customerName":"Lucian Tate","phone":"(862) 273-4625","email":"rutrum.magna@yahoo.edu","address":"Ap #525-9688 Suspendisse Ave","postalZip":"50111","country":"United Kingdom"},{"customerId":1634,"customerName":"Upton Holloway","phone":"(946) 658-1201","email":"in.aliquet@outlook.org","address":"759-5589 Dictum Road","postalZip":"3983","country":"United States"},{"customerId":1635,"customerName":"Dylan Wong","phone":"1-727-363-2861","email":"eros@icloud.ca","address":"7860 Ac Road","postalZip":"M3N 5W3","country":"China"},{"customerId":1636,"customerName":"Tara Aguilar","phone":"(765) 709-4857","email":"in.consectetuer@icloud.ca","address":"139-9509 Dolor Av.","postalZip":"64-615","country":"South Africa"},{"customerId":1637,"customerName":"Rafael Olson","phone":"(226) 352-1331","email":"et@protonmail.ca","address":"8503 Varius Road","postalZip":"66052","country":"Norway"},{"customerId":1638,"customerName":"Bernard Walton","phone":"(281) 540-7265","email":"rutrum.lorem.ac@aol.couk","address":"Ap #567-7048 Sem St.","postalZip":"645666","country":"Norway"},{"customerId":1639,"customerName":"Katelyn Pena","phone":"1-548-345-8795","email":"ligula.nullam.enim@yahoo.ca","address":"P.O. Box 887, 2166 Mus. Ave","postalZip":"128582","country":"France"},{"customerId":1640,"customerName":"Elmo Hewitt","phone":"(298) 925-8748","email":"a.auctor@icloud.com","address":"P.O. Box 251, 5241 Eget Street","postalZip":"471522","country":"Ukraine"},{"customerId":1641,"customerName":"Natalie Robertson","phone":"(678) 825-2562","email":"vitae@outlook.edu","address":"Ap #879-4782 Vehicula Street","postalZip":"38740","country":"France"},{"customerId":1642,"customerName":"Dawn Merritt","phone":"1-265-210-8913","email":"magnis.dis.parturient@hotmail.ca","address":"445-8990 Non, Rd.","postalZip":"18-48","country":"Philippines"},{"customerId":1643,"customerName":"Brenda Levy","phone":"(701) 974-6316","email":"et.ultrices@outlook.com","address":"3530 Scelerisque Ave","postalZip":"9006-6437","country":"Sweden"},{"customerId":1644,"customerName":"Nasim Moran","phone":"(567) 458-4753","email":"non.hendrerit@hotmail.edu","address":"Ap #581-143 Quisque Road","postalZip":"6935","country":"Brazil"},{"customerId":1645,"customerName":"Jessamine Castro","phone":"1-396-829-8782","email":"felis.ullamcorper@aol.edu","address":"P.O. Box 313, 3068 Morbi Road","postalZip":"7386","country":"Vietnam"},{"customerId":1646,"customerName":"Melvin Schwartz","phone":"(513) 964-3682","email":"hendrerit@protonmail.ca","address":"Ap #357-5828 Fermentum Ave","postalZip":"79164","country":"Spain"},{"customerId":1647,"customerName":"Emerald Edwards","phone":"1-376-557-4732","email":"purus@icloud.couk","address":"Ap #895-3768 Facilisis, St.","postalZip":"23882","country":"Colombia"},{"customerId":1648,"customerName":"Octavia Singleton","phone":"(579) 846-1365","email":"a.facilisis@icloud.edu","address":"Ap #706-6281 Sed Av.","postalZip":"8703","country":"China"},{"customerId":1649,"customerName":"Gretchen Scott","phone":"(241) 921-9732","email":"vivamus.non.lorem@aol.ca","address":"P.O. Box 729, 7299 Nulla. St.","postalZip":"6466","country":"United States"},{"customerId":1650,"customerName":"Dylan Jacobs","phone":"(642) 372-6730","email":"aliquam.erat@icloud.net","address":"337-7653 Sem. Street","postalZip":"398270","country":"Vietnam"},{"customerId":1651,"customerName":"Zorita Kirk","phone":"1-503-741-2357","email":"hendrerit.donec.porttitor@aol.couk","address":"641-7996 Gravida Road","postalZip":"62368","country":"Belgium"},{"customerId":1652,"customerName":"Marshall Lancaster","phone":"1-283-486-3777","email":"at@hotmail.org","address":"5317 Euismod Ave","postalZip":"19042","country":"Australia"},{"customerId":1653,"customerName":"Mohammad Ford","phone":"(959) 306-2558","email":"augue.malesuada@icloud.org","address":"Ap #911-585 Per Ave","postalZip":"231830","country":"Sweden"},{"customerId":1654,"customerName":"Ebony Kidd","phone":"1-893-313-7544","email":"orci@yahoo.org","address":"Ap #751-6262 Mollis Av.","postalZip":"559633","country":"Ireland"},{"customerId":1655,"customerName":"Dylan Garrett","phone":"1-684-466-1701","email":"at.arcu.vestibulum@yahoo.couk","address":"Ap #664-9498 Praesent Av.","postalZip":"7930","country":"Norway"},{"customerId":1656,"customerName":"Prescott Robinson","phone":"(887) 633-3623","email":"laoreet.posuere@protonmail.net","address":"190-4174 Ut, St.","postalZip":"6234","country":"Belgium"},{"customerId":1657,"customerName":"Seth Sharpe","phone":"1-853-372-5157","email":"erat.neque@icloud.com","address":"Ap #819-8855 Sem Av.","postalZip":"981156","country":"Belgium"},{"customerId":1658,"customerName":"Amena Sloan","phone":"(648) 164-6150","email":"quisque.fringilla@google.couk","address":"P.O. Box 599, 3942 Eget St.","postalZip":"33906","country":"New Zealand"},{"customerId":1659,"customerName":"Magee Wagner","phone":"(852) 438-3264","email":"curabitur.egestas.nunc@google.couk","address":"766-9757 Fusce Rd.","postalZip":"142020","country":"Costa Rica"},{"customerId":1660,"customerName":"Nash Goodman","phone":"1-406-853-4116","email":"et.euismod@aol.edu","address":"P.O. Box 408, 6575 Eros. Rd.","postalZip":"4756-7136","country":"Pakistan"},{"customerId":1661,"customerName":"September Ferrell","phone":"1-211-240-2216","email":"cubilia.curae@google.net","address":"732-8003 Mi. Ave","postalZip":"51124","country":"Sweden"},{"customerId":1662,"customerName":"Brett Blackwell","phone":"(803) 682-4371","email":"nonummy.ultricies@outlook.edu","address":"980-5214 Nulla. St.","postalZip":"443986","country":"Russian Federation"},{"customerId":1663,"customerName":"Lilah Cash","phone":"1-732-344-5483","email":"aenean.euismod.mauris@yahoo.net","address":"356-252 Tincidunt Ave","postalZip":"731535","country":"Pakistan"},{"customerId":1664,"customerName":"Brett Paul","phone":"1-650-481-3482","email":"aliquam.enim@yahoo.ca","address":"Ap #286-4140 Vivamus St.","postalZip":"636562","country":"Peru"},{"customerId":1665,"customerName":"Shelby Sanchez","phone":"1-516-412-2638","email":"ligula.nullam@outlook.com","address":"P.O. Box 348, 4141 Magna. Street","postalZip":"605328","country":"Sweden"},{"customerId":1666,"customerName":"Castor Bishop","phone":"(944) 121-4301","email":"ultricies@aol.ca","address":"Ap #743-6671 Phasellus St.","postalZip":"621783","country":"Mexico"},{"customerId":1667,"customerName":"Chase Wyatt","phone":"1-613-173-6522","email":"sed.orci.lobortis@outlook.org","address":"Ap #881-5816 Dolor Road","postalZip":"52594","country":"Netherlands"},{"customerId":1668,"customerName":"Tucker Alford","phone":"(423) 531-4822","email":"senectus.et.netus@hotmail.net","address":"481-2575 Primis Ave","postalZip":"888295","country":"Spain"},{"customerId":1669,"customerName":"Cruz Wells","phone":"1-507-806-1934","email":"quis.pede.praesent@icloud.com","address":"930-4088 Aliquet Av.","postalZip":"44255","country":"Turkey"},{"customerId":1670,"customerName":"Yardley Buchanan","phone":"1-783-863-9251","email":"sit@yahoo.edu","address":"Ap #978-8991 Nunc St.","postalZip":"8132 QE","country":"United Kingdom"},{"customerId":1671,"customerName":"Mariam Buckley","phone":"1-198-385-7483","email":"nibh@protonmail.ca","address":"575 Vestibulum Ave","postalZip":"4775","country":"Ukraine"},{"customerId":1672,"customerName":"Bevis Hewitt","phone":"(770) 456-1452","email":"curabitur@hotmail.com","address":"Ap #556-7092 A, St.","postalZip":"28766","country":"Philippines"},{"customerId":1673,"customerName":"Tanya Richardson","phone":"(847) 763-3342","email":"convallis@protonmail.couk","address":"2511 Orci, Av.","postalZip":"NL3H 5DU","country":"Mexico"},{"customerId":1674,"customerName":"Barry Woodward","phone":"(637) 296-0268","email":"a@yahoo.net","address":"Ap #290-5074 Pellentesque St.","postalZip":"526268","country":"United Kingdom"},{"customerId":1675,"customerName":"Daniel Velasquez","phone":"1-333-781-2793","email":"et.magnis@outlook.edu","address":"Ap #732-5193 Risus. Rd.","postalZip":"154364","country":"Mexico"},{"customerId":1676,"customerName":"Darius Foley","phone":"(887) 758-2389","email":"ornare.placerat.orci@aol.org","address":"Ap #690-1754 Netus St.","postalZip":"5988-9356","country":"Ireland"},{"customerId":1677,"customerName":"Xenos Nielsen","phone":"1-365-875-5822","email":"libero.integer@aol.couk","address":"Ap #339-784 Fusce Rd.","postalZip":"7483","country":"Spain"},{"customerId":1678,"customerName":"Idona Zamora","phone":"(635) 323-6142","email":"nec.tellus@google.ca","address":"Ap #140-642 Lectus Street","postalZip":"2197","country":"Mexico"},{"customerId":1679,"customerName":"Ciara O'brien","phone":"1-168-874-5243","email":"dolor.sit.amet@google.couk","address":"843-2358 Parturient Street","postalZip":"80009","country":"Colombia"},{"customerId":1680,"customerName":"Shelley Wall","phone":"(225) 633-7548","email":"libero.morbi.accumsan@protonmail.edu","address":"Ap #381-488 Quis Rd.","postalZip":"4026","country":"Peru"},{"customerId":1681,"customerName":"Stacey Perry","phone":"1-535-321-4212","email":"sed.pede@icloud.edu","address":"Ap #564-794 Vitae, Av.","postalZip":"7876 UD","country":"Mexico"},{"customerId":1682,"customerName":"Colleen Pickett","phone":"(742) 741-5565","email":"in.sodales.elit@hotmail.ca","address":"Ap #637-1333 Mauris Av.","postalZip":"645842","country":"Colombia"},{"customerId":1683,"customerName":"Sydnee Lowe","phone":"(320) 244-4030","email":"etiam.laoreet.libero@yahoo.com","address":"4435 Senectus Ave","postalZip":"30902","country":"Vietnam"},{"customerId":1684,"customerName":"Aiko Patton","phone":"(215) 551-6732","email":"molestie.sodales.mauris@protonmail.org","address":"920-4686 Tellus Avenue","postalZip":"67-27","country":"Poland"},{"customerId":1685,"customerName":"Thane Martinez","phone":"(514) 378-4784","email":"libero.proin@google.org","address":"813-1161 Curae Road","postalZip":"21113","country":"Italy"},{"customerId":1686,"customerName":"Kimberly Dillon","phone":"1-878-431-4544","email":"pellentesque.sed@hotmail.com","address":"Ap #118-4240 Montes, Road","postalZip":"37717","country":"Poland"},{"customerId":1687,"customerName":"Belle Newman","phone":"(855) 547-4333","email":"mauris@outlook.ca","address":"189-3660 Nam Street","postalZip":"4386","country":"Sweden"},{"customerId":1688,"customerName":"Lareina Gilmore","phone":"1-278-922-8676","email":"vitae.orci@icloud.com","address":"625-2261 Convallis St.","postalZip":"3214-4318","country":"Russian Federation"},{"customerId":1689,"customerName":"Rahim Dejesus","phone":"(672) 377-3160","email":"pede.cum@icloud.com","address":"326-3392 Dolor Rd.","postalZip":"501067","country":"Colombia"},{"customerId":1690,"customerName":"Dale Houston","phone":"(658) 121-5125","email":"ipsum@outlook.edu","address":"Ap #162-1267 Erat Av.","postalZip":"27711","country":"United Kingdom"},{"customerId":1691,"customerName":"Kaseem Delaney","phone":"(643) 691-8186","email":"fermentum.fermentum@google.com","address":"Ap #418-6382 Vitae Rd.","postalZip":"44766","country":"Norway"},{"customerId":1692,"customerName":"Avye Hardin","phone":"1-273-860-5670","email":"eget.ipsum@hotmail.org","address":"477-4210 Mi Street","postalZip":"8862","country":"Norway"},{"customerId":1693,"customerName":"Susan Baldwin","phone":"(964) 364-8434","email":"dignissim@aol.couk","address":"202-7842 In Road","postalZip":"218375","country":"Australia"},{"customerId":1694,"customerName":"Lilah West","phone":"1-796-169-5322","email":"fringilla.cursus@icloud.net","address":"Ap #310-580 Enim, Road","postalZip":"245344","country":"Spain"},{"customerId":1695,"customerName":"Coby Mckenzie","phone":"(213) 845-8650","email":"orci.tincidunt@protonmail.com","address":"806-7767 Quis Road","postalZip":"4177","country":"Norway"},{"customerId":1696,"customerName":"Christine Jennings","phone":"(715) 537-2464","email":"in.scelerisque@google.ca","address":"124-5918 Cubilia Rd.","postalZip":"1361","country":"Vietnam"},{"customerId":1697,"customerName":"Lewis Grimes","phone":"(572) 464-6213","email":"ullamcorper.velit.in@icloud.net","address":"229-7576 Ligula Rd.","postalZip":"613522","country":"Germany"},{"customerId":1698,"customerName":"Emily Collier","phone":"(278) 870-4749","email":"suspendisse.commodo@icloud.com","address":"4977 Eu Ave","postalZip":"1385 OM","country":"Belgium"},{"customerId":1699,"customerName":"Nevada Hebert","phone":"(843) 650-1745","email":"pellentesque.ut@outlook.couk","address":"P.O. Box 531, 4654 Non, St.","postalZip":"82187","country":"Norway"},{"customerId":1700,"customerName":"Lamar Hunter","phone":"(737) 457-2372","email":"morbi@outlook.couk","address":"P.O. Box 210, 9393 Porttitor Rd.","postalZip":"34348-85852","country":"Canada"},{"customerId":1701,"customerName":"Clio Sutton","phone":"(522) 825-4448","email":"fringilla.euismod@google.ca","address":"777-1845 Sollicitudin St.","postalZip":"163246","country":"Pakistan"},{"customerId":1702,"customerName":"MacKensie Bennett","phone":"1-739-635-7427","email":"id@icloud.org","address":"Ap #584-7811 Amet St.","postalZip":"574645","country":"Canada"},{"customerId":1703,"customerName":"Harding Mosley","phone":"(873) 224-4335","email":"pretium.neque.morbi@yahoo.com","address":"3540 Est, Ave","postalZip":"8237","country":"Ukraine"},{"customerId":1704,"customerName":"Sylvester Suarez","phone":"(325) 788-6486","email":"sed.orci.lobortis@outlook.com","address":"234-9600 Hendrerit. Road","postalZip":"15426","country":"Australia"},{"customerId":1705,"customerName":"Amy Gillespie","phone":"(152) 523-4975","email":"egestas@outlook.com","address":"Ap #158-2997 Dignissim St.","postalZip":"97-167","country":"Germany"},{"customerId":1706,"customerName":"Hayden Moon","phone":"(935) 260-7756","email":"nisi.mauris.nulla@hotmail.net","address":"427-1201 Auctor St.","postalZip":"66Z 2W8","country":"Colombia"},{"customerId":1707,"customerName":"Sara Anderson","phone":"(718) 748-8122","email":"iaculis@google.com","address":"Ap #677-4355 Vulputate St.","postalZip":"8283","country":"Peru"},{"customerId":1708,"customerName":"Stacy Meyers","phone":"(328) 335-6716","email":"elementum@protonmail.org","address":"Ap #449-8065 Amet St.","postalZip":"20T 5A4","country":"Philippines"},{"customerId":1709,"customerName":"Cedric Roberts","phone":"1-341-646-8248","email":"morbi@yahoo.edu","address":"P.O. Box 415, 8188 Dignissim Road","postalZip":"84-65","country":"Australia"},{"customerId":1710,"customerName":"Amity Roberson","phone":"(628) 627-8750","email":"arcu.sed@aol.com","address":"Ap #338-3979 Commodo Av.","postalZip":"228578","country":"Australia"},{"customerId":1711,"customerName":"Adele Newman","phone":"(203) 571-8100","email":"sagittis.felis.donec@protonmail.org","address":"P.O. Box 671, 5754 Sed Rd.","postalZip":"341169","country":"Indonesia"},{"customerId":1712,"customerName":"Caleb Osborn","phone":"(935) 615-2648","email":"placerat@google.edu","address":"P.O. Box 492, 5843 Ipsum. Av.","postalZip":"56826","country":"Peru"},{"customerId":1713,"customerName":"Xyla Waters","phone":"(818) 779-4231","email":"aenean.eget@aol.net","address":"6226 Leo Av.","postalZip":"41327","country":"Sweden"},{"customerId":1714,"customerName":"Samson Chan","phone":"(439) 813-0536","email":"posuere.at@icloud.com","address":"Ap #287-2311 Erat, Ave","postalZip":"9992","country":"Chile"},{"customerId":1715,"customerName":"Kevyn Horn","phone":"1-874-485-4475","email":"velit@yahoo.couk","address":"197-545 Eu Avenue","postalZip":"ST5 3VT","country":"United States"},{"customerId":1716,"customerName":"Evangeline Finch","phone":"(582) 173-5533","email":"integer.urna@icloud.com","address":"Ap #804-798 Mi. Avenue","postalZip":"48308","country":"China"},{"customerId":1717,"customerName":"Damian Pace","phone":"1-773-447-4366","email":"lorem@aol.couk","address":"223-4156 Id Ave","postalZip":"5612","country":"Pakistan"},{"customerId":1718,"customerName":"Jenna Mcneil","phone":"1-844-688-2542","email":"quis.diam@icloud.edu","address":"Ap #681-370 Malesuada Rd.","postalZip":"362646","country":"Indonesia"},{"customerId":1719,"customerName":"Raya Hickman","phone":"(586) 301-1642","email":"a.enim@google.edu","address":"847-8413 Donec Av.","postalZip":"7422","country":"Brazil"},{"customerId":1720,"customerName":"Rana Willis","phone":"1-861-551-8589","email":"aliquam.arcu@protonmail.org","address":"P.O. Box 762, 7096 Dolor. Rd.","postalZip":"74285","country":"Austria"},{"customerId":1721,"customerName":"Lani Britt","phone":"(367) 875-1722","email":"facilisis.non@hotmail.com","address":"P.O. Box 981, 4572 Dolor St.","postalZip":"418266","country":"Costa Rica"},{"customerId":1722,"customerName":"Duncan Fowler","phone":"(412) 556-7453","email":"egestas.a@outlook.ca","address":"Ap #767-3723 Nec Av.","postalZip":"7357","country":"Colombia"},{"customerId":1723,"customerName":"Linus Carey","phone":"1-391-844-2845","email":"vitae@hotmail.edu","address":"7570 Nulla St.","postalZip":"2973","country":"South Africa"},{"customerId":1724,"customerName":"Brianna Brooks","phone":"(405) 452-2352","email":"varius.ultrices@icloud.couk","address":"385 Eget, Avenue","postalZip":"56726-876","country":"Australia"},{"customerId":1725,"customerName":"Tanya Riggs","phone":"(138) 673-5782","email":"sociis.natoque@icloud.ca","address":"Ap #344-675 Lacus, Rd.","postalZip":"XV3 1SI","country":"South Africa"},{"customerId":1726,"customerName":"Sopoline Macdonald","phone":"1-271-591-6086","email":"penatibus.et@aol.com","address":"4243 Dui, St.","postalZip":"2866","country":"Turkey"},{"customerId":1727,"customerName":"Sybil Dillard","phone":"1-911-143-8841","email":"accumsan.neque@yahoo.net","address":"Ap #160-4400 Sed St.","postalZip":"306819","country":"Spain"},{"customerId":1728,"customerName":"Raphael Dean","phone":"(385) 414-3368","email":"tellus.aenean@aol.ca","address":"737-4581 Ligula Ave","postalZip":"R84 5VW","country":"Chile"},{"customerId":1729,"customerName":"Aline Blanchard","phone":"1-266-647-2786","email":"vel.arcu@aol.net","address":"Ap #975-5147 Odio. Street","postalZip":"43122","country":"Austria"},{"customerId":1730,"customerName":"Calvin Watkins","phone":"(533) 578-8483","email":"donec@hotmail.edu","address":"2175 Tempus St.","postalZip":"264537","country":"Costa Rica"},{"customerId":1731,"customerName":"Mallory Foley","phone":"1-560-215-0146","email":"nisi.nibh.lacinia@outlook.com","address":"8619 Libero. St.","postalZip":"547483","country":"Mexico"},{"customerId":1732,"customerName":"Lillith Hubbard","phone":"(806) 617-7872","email":"luctus.vulputate@yahoo.com","address":"Ap #794-6524 Enim, Av.","postalZip":"23-739","country":"United States"},{"customerId":1733,"customerName":"Kellie Ramirez","phone":"(323) 866-9423","email":"parturient.montes.nascetur@hotmail.org","address":"P.O. Box 800, 9339 A, Street","postalZip":"9730","country":"Norway"},{"customerId":1734,"customerName":"Alfonso Hampton","phone":"1-751-293-7671","email":"cras.interdum.nunc@aol.couk","address":"839-1907 Inceptos Av.","postalZip":"533273","country":"Russian Federation"},{"customerId":1735,"customerName":"Shad Vance","phone":"1-877-577-7578","email":"dictum.augue@icloud.org","address":"Ap #934-5519 Diam Avenue","postalZip":"37265","country":"Sweden"},{"customerId":1736,"customerName":"Davis Gill","phone":"(372) 548-8655","email":"commodo.hendrerit.donec@icloud.ca","address":"334-998 Ac Ave","postalZip":"85486-525","country":"Peru"},{"customerId":1737,"customerName":"Honorato Hester","phone":"(277) 235-2260","email":"cras@outlook.net","address":"Ap #315-322 At Av.","postalZip":"75-45","country":"Australia"},{"customerId":1738,"customerName":"Melodie Watkins","phone":"(695) 611-5373","email":"donec.elementum.lorem@hotmail.edu","address":"5158 Eu St.","postalZip":"43978","country":"India"},{"customerId":1739,"customerName":"Noel Carlson","phone":"1-717-155-2656","email":"blandit@google.edu","address":"190-3256 Risus. Street","postalZip":"24649","country":"New Zealand"},{"customerId":1740,"customerName":"Chester Ballard","phone":"(235) 746-0634","email":"lorem.ac@google.com","address":"4124 Laoreet Avenue","postalZip":"97-134","country":"Indonesia"},{"customerId":1741,"customerName":"Daniel Knapp","phone":"1-323-285-1218","email":"a.dui.cras@hotmail.org","address":"P.O. Box 641, 1963 Tristique Road","postalZip":"7125","country":"Germany"},{"customerId":1742,"customerName":"Dara Battle","phone":"1-558-514-2465","email":"commodo.at.libero@yahoo.org","address":"P.O. Box 497, 386 Morbi Street","postalZip":"277351","country":"Indonesia"},{"customerId":1743,"customerName":"Henry Sharpe","phone":"(521) 283-1806","email":"nunc.nulla@aol.couk","address":"8274 Etiam St.","postalZip":"86510","country":"Pakistan"},{"customerId":1744,"customerName":"Ethan Chandler","phone":"(557) 838-2445","email":"purus.sapien@icloud.ca","address":"P.O. Box 511, 4478 Quis Avenue","postalZip":"336594","country":"Italy"},{"customerId":1745,"customerName":"Ezekiel Collier","phone":"1-622-387-0656","email":"phasellus.dapibus.quam@google.net","address":"734-2366 Eget Street","postalZip":"74715-329","country":"Canada"},{"customerId":1746,"customerName":"Nigel Rowland","phone":"(163) 488-1288","email":"eleifend@protonmail.ca","address":"5461 Malesuada Street","postalZip":"719436","country":"China"},{"customerId":1747,"customerName":"Roary Byers","phone":"1-419-463-5765","email":"dolor@hotmail.org","address":"1244 Sit Street","postalZip":"57778","country":"Chile"},{"customerId":1748,"customerName":"Nasim Hickman","phone":"(347) 956-8632","email":"nam.interdum@icloud.edu","address":"181-9755 Cum Ave","postalZip":"122776","country":"Russian Federation"},{"customerId":1749,"customerName":"Maya Shelton","phone":"1-912-563-1276","email":"vulputate.risus@protonmail.edu","address":"Ap #169-6106 Lorem Street","postalZip":"338952","country":"Indonesia"},{"customerId":1750,"customerName":"Ahmed May","phone":"1-484-672-8434","email":"vel.venenatis@google.couk","address":"847-6348 Dui Av.","postalZip":"67857","country":"Belgium"},{"customerId":1751,"customerName":"Jena Watts","phone":"1-628-737-1989","email":"cursus.diam@protonmail.net","address":"120-2380 Ut, Rd.","postalZip":"36031223","country":"Costa Rica"},{"customerId":1752,"customerName":"Sylvester Sherman","phone":"(413) 839-4337","email":"laoreet@outlook.edu","address":"Ap #514-6542 Mattis. Road","postalZip":"7771","country":"Indonesia"},{"customerId":1753,"customerName":"Ruth Booker","phone":"1-468-486-1678","email":"quisque.libero@yahoo.ca","address":"P.O. Box 665, 1469 Turpis. Rd.","postalZip":"37595","country":"United Kingdom"},{"customerId":1754,"customerName":"Raja Mayer","phone":"(304) 302-3799","email":"risus.donec.egestas@outlook.net","address":"P.O. Box 878, 5902 Metus. Av.","postalZip":"13003","country":"Brazil"},{"customerId":1755,"customerName":"Theodore Bryan","phone":"(115) 851-7252","email":"dignissim.maecenas@protonmail.edu","address":"P.O. Box 270, 7392 Eu, St.","postalZip":"83-848","country":"Netherlands"},{"customerId":1756,"customerName":"Jayme Becker","phone":"(918) 537-1685","email":"rhoncus.id.mollis@hotmail.com","address":"342-4576 Nulla St.","postalZip":"6380","country":"Philippines"},{"customerId":1757,"customerName":"Denton Day","phone":"1-624-955-6135","email":"amet.consectetuer.adipiscing@hotmail.com","address":"Ap #766-904 Nunc St.","postalZip":"806901","country":"Austria"},{"customerId":1758,"customerName":"Clinton Lewis","phone":"(297) 239-0718","email":"orci.lacus@icloud.edu","address":"Ap #432-1003 Ac Rd.","postalZip":"267623","country":"Indonesia"},{"customerId":1759,"customerName":"Brody Saunders","phone":"1-433-337-4683","email":"ut.sagittis@aol.couk","address":"P.O. Box 739, 6128 Dignissim Rd.","postalZip":"23673","country":"Chile"},{"customerId":1760,"customerName":"Harriet Howell","phone":"1-540-430-7152","email":"aliquet@google.com","address":"5252 Maecenas Avenue","postalZip":"528483","country":"Philippines"},{"customerId":1761,"customerName":"Todd Fisher","phone":"(667) 877-9308","email":"dictum.phasellus@icloud.com","address":"Ap #301-3983 Montes, St.","postalZip":"651870","country":"New Zealand"},{"customerId":1762,"customerName":"Giselle Moon","phone":"(424) 655-1381","email":"et.magnis.dis@hotmail.edu","address":"638-7918 Luctus Rd.","postalZip":"613656","country":"Mexico"},{"customerId":1763,"customerName":"Caryn Adkins","phone":"(733) 891-3838","email":"accumsan.laoreet@protonmail.com","address":"162-7076 Morbi Street","postalZip":"34282","country":"Austria"},{"customerId":1764,"customerName":"Sydney Haynes","phone":"1-355-161-5018","email":"penatibus@google.ca","address":"485-7517 Fusce St.","postalZip":"605943","country":"Ireland"},{"customerId":1765,"customerName":"Tatyana Dalton","phone":"(814) 373-1703","email":"libero@yahoo.com","address":"685-2282 Dolor. St.","postalZip":"47046","country":"Poland"},{"customerId":1766,"customerName":"Elvis Jacobs","phone":"1-264-716-1507","email":"nisi@icloud.com","address":"P.O. Box 161, 6636 Vestibulum Avenue","postalZip":"94547","country":"France"},{"customerId":1767,"customerName":"Cally Barber","phone":"1-632-478-8265","email":"class.aptent@outlook.edu","address":"427-4554 Suspendisse Rd.","postalZip":"81183","country":"Indonesia"},{"customerId":1768,"customerName":"Harrison David","phone":"1-773-694-6658","email":"tellus.id.nunc@icloud.couk","address":"Ap #270-9912 Nibh. Road","postalZip":"7588","country":"Peru"},{"customerId":1769,"customerName":"Georgia Shepherd","phone":"(847) 315-8517","email":"ullamcorper.viverra.maecenas@hotmail.com","address":"368-2564 Ac Road","postalZip":"BG4 7PS","country":"Austria"},{"customerId":1770,"customerName":"Buffy Sanders","phone":"(712) 741-6568","email":"nam.ac.nulla@aol.net","address":"P.O. Box 415, 6925 Vitae, Avenue","postalZip":"04251","country":"Belgium"},{"customerId":1771,"customerName":"Brenda Payne","phone":"1-816-969-4577","email":"penatibus@aol.edu","address":"Ap #922-1366 Et, Avenue","postalZip":"58281-68196","country":"South Korea"},{"customerId":1772,"customerName":"Wylie Morton","phone":"(245) 427-8237","email":"aliquam.vulputate@outlook.couk","address":"861-9336 Magna. St.","postalZip":"45948","country":"Austria"},{"customerId":1773,"customerName":"Noah Powers","phone":"(173) 562-2488","email":"vitae@protonmail.net","address":"465-8904 Vivamus Av.","postalZip":"5824","country":"Ukraine"},{"customerId":1774,"customerName":"Ava Harmon","phone":"(221) 295-1966","email":"cum@aol.net","address":"505-5922 Curae St.","postalZip":"R3M 3R3","country":"Colombia"},{"customerId":1775,"customerName":"Jesse Brock","phone":"1-596-872-5628","email":"integer.sem.elit@yahoo.net","address":"1958 Amet, St.","postalZip":"04649","country":"Norway"},{"customerId":1776,"customerName":"Melinda O'brien","phone":"(468) 555-8182","email":"suscipit.nonummy@aol.edu","address":"509-5138 Ante Ave","postalZip":"5557","country":"Austria"},{"customerId":1777,"customerName":"Charles Skinner","phone":"1-156-831-7663","email":"et.magnis@outlook.org","address":"744-9893 Vel St.","postalZip":"6230","country":"South Africa"},{"customerId":1778,"customerName":"Jeremy Bailey","phone":"(414) 432-2193","email":"lectus.pede@protonmail.ca","address":"258-1229 Nec St.","postalZip":"5549","country":"Canada"},{"customerId":1779,"customerName":"Hannah Richard","phone":"1-551-851-4881","email":"enim.nisl@hotmail.com","address":"Ap #951-9530 Magna, Avenue","postalZip":"53-475","country":"Australia"},{"customerId":1780,"customerName":"Michael Long","phone":"(133) 817-2544","email":"vitae.orci@aol.couk","address":"241-1013 At, Rd.","postalZip":"427153","country":"Austria"},{"customerId":1781,"customerName":"Ulysses Gutierrez","phone":"(411) 761-4166","email":"faucibus.morbi.vehicula@hotmail.ca","address":"Ap #943-3504 Enim, St.","postalZip":"263511","country":"South Korea"},{"customerId":1782,"customerName":"Harrison Francis","phone":"1-643-914-3553","email":"metus@hotmail.org","address":"Ap #201-3925 Libero Road","postalZip":"454198","country":"Vietnam"},{"customerId":1783,"customerName":"Neil Williamson","phone":"(748) 412-4278","email":"quam.vel@google.ca","address":"575 Sed Rd.","postalZip":"98-14","country":"South Korea"},{"customerId":1784,"customerName":"Price Fernandez","phone":"(549) 322-5658","email":"tincidunt.nibh@google.edu","address":"522-1392 Non Road","postalZip":"5371","country":"Pakistan"},{"customerId":1785,"customerName":"Clark Conner","phone":"1-869-767-9227","email":"ante.blandit.viverra@protonmail.edu","address":"3083 Ullamcorper, Street","postalZip":"955573","country":"Singapore"},{"customerId":1786,"customerName":"Jason Callahan","phone":"(116) 867-7430","email":"quis.lectus.nullam@icloud.net","address":"864-1456 Quisque Ave","postalZip":"4963","country":"Vietnam"},{"customerId":1787,"customerName":"Alyssa Mathis","phone":"1-802-719-9555","email":"neque@icloud.ca","address":"177-5985 Malesuada Av.","postalZip":"39-58","country":"United States"},{"customerId":1788,"customerName":"Elijah Jones","phone":"(524) 683-1743","email":"ut.sagittis.lobortis@hotmail.com","address":"207-9847 Pede, Avenue","postalZip":"53213","country":"Poland"},{"customerId":1789,"customerName":"Georgia Nash","phone":"(969) 557-6952","email":"turpis.nec@outlook.com","address":"P.O. Box 944, 6476 Interdum. St.","postalZip":"8925","country":"Ukraine"},{"customerId":1790,"customerName":"Dara Riley","phone":"(526) 520-1646","email":"phasellus.in@icloud.org","address":"P.O. Box 441, 426 Eu Rd.","postalZip":"B7A 8T3","country":"Philippines"},{"customerId":1791,"customerName":"Belle Warner","phone":"1-415-566-7517","email":"blandit.at.nisi@outlook.net","address":"549-8717 Dui Rd.","postalZip":"758163","country":"Austria"},{"customerId":1792,"customerName":"Coby Merritt","phone":"1-618-671-8465","email":"ipsum@yahoo.couk","address":"Ap #785-8280 Mauris Rd.","postalZip":"644746","country":"Ukraine"},{"customerId":1793,"customerName":"Mannix Haynes","phone":"1-554-897-5620","email":"et@protonmail.edu","address":"P.O. Box 131, 6568 A St.","postalZip":"165169","country":"France"},{"customerId":1794,"customerName":"Blossom Kemp","phone":"1-854-674-8451","email":"adipiscing.mauris@icloud.net","address":"P.O. Box 128, 9829 Nulla. Avenue","postalZip":"216419","country":"Costa Rica"},{"customerId":1795,"customerName":"Ferris Greene","phone":"(532) 724-8962","email":"convallis.ligula@icloud.edu","address":"814-9823 Est. Street","postalZip":"445322","country":"Indonesia"},{"customerId":1796,"customerName":"Anika Petersen","phone":"1-263-356-6285","email":"adipiscing.enim@protonmail.net","address":"Ap #757-2085 In Road","postalZip":"58602-945","country":"Pakistan"},{"customerId":1797,"customerName":"Thane Lewis","phone":"(621) 351-7054","email":"porttitor.vulputate@google.ca","address":"P.O. Box 128, 7773 Eu, St.","postalZip":"43346-654","country":"Pakistan"},{"customerId":1798,"customerName":"Harriet Buckner","phone":"(341) 946-9522","email":"facilisis@hotmail.edu","address":"Ap #811-1435 Cursus Rd.","postalZip":"33541","country":"Philippines"},{"customerId":1799,"customerName":"Ishmael Haley","phone":"(172) 970-7286","email":"nec.quam.curabitur@protonmail.ca","address":"606-6505 Nulla Ave","postalZip":"27874","country":"Turkey"},{"customerId":1800,"customerName":"Hayes Heath","phone":"(294) 863-1797","email":"dapibus.ligula.aliquam@google.org","address":"802-7664 Sit Street","postalZip":"5841","country":"Ireland"},{"customerId":1801,"customerName":"Ivor Yang","phone":"1-489-721-6641","email":"sed@icloud.com","address":"Ap #511-8042 Turpis. Av.","postalZip":"30414","country":"Belgium"},{"customerId":1802,"customerName":"Zachary Fuller","phone":"(569) 501-6280","email":"curabitur.vel@outlook.edu","address":"Ap #479-149 Mi Road","postalZip":"45138-56581","country":"China"},{"customerId":1803,"customerName":"Boris Carr","phone":"(246) 426-8635","email":"nunc.mauris@hotmail.edu","address":"5988 Augue Rd.","postalZip":"71483","country":"Norway"},{"customerId":1804,"customerName":"Jillian Hester","phone":"1-842-170-8880","email":"libero.donec.consectetuer@yahoo.ca","address":"Ap #473-5694 Donec Street","postalZip":"13735","country":"Indonesia"},{"customerId":1805,"customerName":"Molly Curtis","phone":"1-463-287-9365","email":"donec.non.justo@protonmail.net","address":"Ap #100-5411 Integer Street","postalZip":"62107","country":"Brazil"},{"customerId":1806,"customerName":"August Glenn","phone":"(786) 700-3867","email":"auctor.non.feugiat@hotmail.org","address":"Ap #102-6496 Tincidunt Rd.","postalZip":"71173","country":"Turkey"},{"customerId":1807,"customerName":"Guinevere Watkins","phone":"1-744-686-4053","email":"suspendisse.aliquet@outlook.com","address":"346-3526 Aliquam Road","postalZip":"78-885","country":"Austria"},{"customerId":1808,"customerName":"Fletcher Snyder","phone":"(782) 222-2403","email":"aliquam.rutrum@yahoo.couk","address":"299-6142 Mauris, St.","postalZip":"15543","country":"Colombia"},{"customerId":1809,"customerName":"Emi Hendricks","phone":"1-365-569-6802","email":"maecenas.iaculis.aliquet@google.org","address":"Ap #468-2981 Molestie Rd.","postalZip":"139735","country":"Netherlands"},{"customerId":1810,"customerName":"Griffith Koch","phone":"1-677-712-7032","email":"diam@icloud.edu","address":"848-5850 Ante Street","postalZip":"273287","country":"Indonesia"},{"customerId":1811,"customerName":"Oleg Benson","phone":"1-438-842-5605","email":"enim.sit@outlook.edu","address":"966-7757 Cras Av.","postalZip":"932172","country":"Mexico"},{"customerId":1812,"customerName":"Brian Tanner","phone":"1-522-315-2414","email":"nec@icloud.ca","address":"Ap #784-640 Nunc, Rd.","postalZip":"9305","country":"Spain"},{"customerId":1813,"customerName":"Macaulay Emerson","phone":"1-256-558-1718","email":"dolor.sit.amet@protonmail.net","address":"602-1910 Egestas St.","postalZip":"5143","country":"Sweden"},{"customerId":1814,"customerName":"Donovan Farrell","phone":"1-262-998-8322","email":"a@outlook.com","address":"3197 Auctor Ave","postalZip":"660874","country":"Germany"},{"customerId":1815,"customerName":"Jack Mcgowan","phone":"1-844-617-1574","email":"ipsum.cursus@icloud.couk","address":"7325 Sagittis Rd.","postalZip":"844446","country":"Italy"},{"customerId":1816,"customerName":"Carly Sweet","phone":"(809) 648-3876","email":"amet.diam.eu@outlook.org","address":"Ap #622-1658 Mauris Rd.","postalZip":"80270-737","country":"Netherlands"},{"customerId":1817,"customerName":"Jemima Foley","phone":"1-852-247-2287","email":"semper.nam@yahoo.com","address":"Ap #770-6836 Vitae, Rd.","postalZip":"S71 2ME","country":"Italy"},{"customerId":1818,"customerName":"Cameron Norton","phone":"(239) 640-5270","email":"libero.lacus.varius@google.net","address":"970 Cursus. Rd.","postalZip":"3864","country":"Singapore"},{"customerId":1819,"customerName":"Cameron Moran","phone":"1-335-431-4146","email":"adipiscing@protonmail.org","address":"Ap #699-2557 Non Av.","postalZip":"82601","country":"Philippines"},{"customerId":1820,"customerName":"Harper Chang","phone":"(657) 168-5387","email":"phasellus@aol.ca","address":"P.O. Box 583, 4501 Netus Avenue","postalZip":"52-85","country":"South Korea"},{"customerId":1821,"customerName":"Wayne Ward","phone":"(103) 545-3443","email":"accumsan.neque@icloud.ca","address":"472-2686 Morbi Rd.","postalZip":"67283-89433","country":"Indonesia"},{"customerId":1822,"customerName":"Melanie Lopez","phone":"(400) 623-2558","email":"nibh.quisque.nonummy@yahoo.net","address":"Ap #911-261 Bibendum St.","postalZip":"49474","country":"Austria"},{"customerId":1823,"customerName":"Emi Maddox","phone":"1-416-492-6492","email":"enim.mi.tempor@google.ca","address":"692-6228 Vitae, Rd.","postalZip":"842514","country":"Brazil"},{"customerId":1824,"customerName":"Anjolie Lara","phone":"(864) 413-3315","email":"praesent.interdum.ligula@google.org","address":"595-325 Suspendisse Road","postalZip":"4426 UI","country":"Ukraine"},{"customerId":1825,"customerName":"Quail Norris","phone":"1-257-603-7737","email":"dolor.tempus@protonmail.couk","address":"213-8882 Lorem Street","postalZip":"22038","country":"Russian Federation"},{"customerId":1826,"customerName":"Marah Fletcher","phone":"(326) 705-0128","email":"faucibus.lectus@hotmail.org","address":"764-8019 Pede Road","postalZip":"58238","country":"Norway"},{"customerId":1827,"customerName":"Melinda Grant","phone":"(370) 534-5882","email":"est@yahoo.com","address":"184-2603 Tellus, Avenue","postalZip":"5477","country":"Chile"},{"customerId":1828,"customerName":"Cleo Tate","phone":"1-618-442-5272","email":"lectus.a@aol.couk","address":"2491 Et, Rd.","postalZip":"50106","country":"Indonesia"},{"customerId":1829,"customerName":"Keefe Carlson","phone":"(912) 721-8764","email":"dolor.nonummy@aol.edu","address":"298-2756 Ornare Av.","postalZip":"13995","country":"Pakistan"},{"customerId":1830,"customerName":"Chandler Underwood","phone":"1-412-911-1417","email":"cursus.et.eros@outlook.com","address":"867-8864 Sollicitudin Street","postalZip":"8764","country":"Singapore"},{"customerId":1831,"customerName":"Gavin House","phone":"1-545-851-8989","email":"diam.eu@aol.org","address":"Ap #139-5780 Amet Ave","postalZip":"03150","country":"Ukraine"},{"customerId":1832,"customerName":"Alan Shelton","phone":"1-556-476-3653","email":"ante@google.org","address":"105-8354 Proin Street","postalZip":"5148 LO","country":"Germany"},{"customerId":1833,"customerName":"Wylie Trujillo","phone":"(437) 892-2136","email":"ante@hotmail.edu","address":"Ap #350-8470 Posuere, Rd.","postalZip":"622673","country":"Canada"},{"customerId":1834,"customerName":"Oliver Nguyen","phone":"1-929-736-1834","email":"orci.lobortis@google.org","address":"P.O. Box 882, 5936 Vitae Ave","postalZip":"H2L 6E1","country":"New Zealand"},{"customerId":1835,"customerName":"Isabelle Velasquez","phone":"(453) 153-4523","email":"eget@aol.org","address":"Ap #244-7627 Augue Rd.","postalZip":"783117","country":"Ukraine"},{"customerId":1836,"customerName":"Regina Weiss","phone":"1-586-355-1362","email":"a.enim@hotmail.couk","address":"596-7708 Ipsum. St.","postalZip":"89226-240","country":"South Africa"},{"customerId":1837,"customerName":"Rae Shaffer","phone":"1-559-617-2783","email":"sagittis.nullam@icloud.org","address":"564-8586 Lobortis Av.","postalZip":"3484","country":"Philippines"},{"customerId":1838,"customerName":"Cairo Mays","phone":"1-761-394-8886","email":"donec.egestas.aliquam@icloud.ca","address":"824-9965 Pellentesque Av.","postalZip":"38-26","country":"Singapore"},{"customerId":1839,"customerName":"Nigel Rodriguez","phone":"(465) 414-1401","email":"sem.ut@outlook.couk","address":"9904 Lorem, St.","postalZip":"80569","country":"Germany"},{"customerId":1840,"customerName":"Allen Edwards","phone":"(485) 774-2467","email":"pellentesque@protonmail.com","address":"864-7078 Dolor. Rd.","postalZip":"689563","country":"Australia"},{"customerId":1841,"customerName":"Reuben Rios","phone":"1-673-192-7641","email":"ridiculus.mus@yahoo.ca","address":"701-8932 Vulputate Rd.","postalZip":"11405","country":"Chile"},{"customerId":1842,"customerName":"Astra Lawson","phone":"1-688-844-0044","email":"nec@google.org","address":"P.O. Box 790, 9203 Ligula. Street","postalZip":"67381","country":"United Kingdom"},{"customerId":1843,"customerName":"Stewart Doyle","phone":"(685) 545-4664","email":"vel@yahoo.org","address":"316-9869 Lectus, Road","postalZip":"464974","country":"Nigeria"},{"customerId":1844,"customerName":"Jessica King","phone":"1-702-407-6351","email":"in.lobortis.tellus@aol.ca","address":"Ap #641-2258 Quam, Rd.","postalZip":"81366","country":"Ireland"},{"customerId":1845,"customerName":"Jesse Conrad","phone":"1-495-767-7781","email":"augue.ut@google.couk","address":"Ap #240-3069 Mauris Street","postalZip":"2863","country":"Poland"},{"customerId":1846,"customerName":"Tiger Levy","phone":"(393) 157-3425","email":"ultricies@protonmail.org","address":"578-5644 Nec Road","postalZip":"11809","country":"Netherlands"},{"customerId":1847,"customerName":"Clare Davenport","phone":"1-467-256-4453","email":"cum.sociis@outlook.edu","address":"438-6184 Cras Street","postalZip":"77763-03658","country":"Peru"},{"customerId":1848,"customerName":"Austin Cortez","phone":"1-451-457-6747","email":"blandit@hotmail.edu","address":"495-8379 Est, Ave","postalZip":"25769","country":"New Zealand"},{"customerId":1849,"customerName":"Amir Blanchard","phone":"1-524-281-3189","email":"pharetra.sed@protonmail.ca","address":"Ap #257-7017 Lorem Avenue","postalZip":"957693","country":"Ireland"},{"customerId":1850,"customerName":"Peter Mcclure","phone":"(657) 563-2573","email":"erat.volutpat@protonmail.edu","address":"P.O. Box 689, 4758 Phasellus Road","postalZip":"28319","country":"Indonesia"},{"customerId":1851,"customerName":"Marah Mcpherson","phone":"(345) 412-8313","email":"augue.id@yahoo.net","address":"311-597 Enim, Road","postalZip":"44941","country":"South Africa"},{"customerId":1852,"customerName":"Erasmus Kramer","phone":"1-982-775-5286","email":"ultrices@hotmail.net","address":"1645 Nascetur Ave","postalZip":"1135","country":"Philippines"},{"customerId":1853,"customerName":"Omar Joyce","phone":"(322) 926-2331","email":"consectetuer.adipiscing@aol.couk","address":"Ap #177-7427 Pharetra Av.","postalZip":"4282","country":"United Kingdom"},{"customerId":1854,"customerName":"August Cervantes","phone":"(530) 972-2722","email":"dignissim.magna@hotmail.com","address":"Ap #959-9935 Dui. Street","postalZip":"13723","country":"South Korea"},{"customerId":1855,"customerName":"Stella Foster","phone":"1-437-227-4156","email":"vitae@yahoo.edu","address":"4300 Elit. Ave","postalZip":"82-667","country":"Spain"},{"customerId":1856,"customerName":"Gloria Baxter","phone":"(719) 881-1924","email":"velit.eget.laoreet@icloud.edu","address":"Ap #811-2759 Senectus Av.","postalZip":"93364","country":"Philippines"},{"customerId":1857,"customerName":"Kuame Wagner","phone":"(865) 181-7591","email":"egestas@aol.edu","address":"981-652 Vel, Rd.","postalZip":"548823","country":"Brazil"},{"customerId":1858,"customerName":"Hakeem Manning","phone":"1-307-542-8165","email":"amet@outlook.edu","address":"P.O. Box 929, 9971 Odio Rd.","postalZip":"684633","country":"Belgium"},{"customerId":1859,"customerName":"Stella Griffith","phone":"1-751-899-6737","email":"fusce.mollis@aol.ca","address":"Ap #551-438 In, Rd.","postalZip":"8843","country":"Ireland"},{"customerId":1860,"customerName":"Ivory Spence","phone":"(547) 148-2471","email":"enim@protonmail.couk","address":"625-8735 Sapien, St.","postalZip":"51111","country":"Italy"},{"customerId":1861,"customerName":"Francis Myers","phone":"1-772-272-5804","email":"aliquam.enim@protonmail.couk","address":"P.O. Box 939, 6243 Id, Ave","postalZip":"67357-78060","country":"Austria"},{"customerId":1862,"customerName":"Alexander Brady","phone":"1-729-342-0668","email":"sociis.natoque@yahoo.ca","address":"322-4405 Quis, St.","postalZip":"645196","country":"Russian Federation"},{"customerId":1863,"customerName":"Carlos Molina","phone":"1-276-809-9145","email":"diam.luctus@hotmail.ca","address":"787-6465 Dolor Rd.","postalZip":"719618","country":"Peru"},{"customerId":1864,"customerName":"Allen Jones","phone":"1-301-303-1943","email":"elit.elit@protonmail.couk","address":"Ap #603-2462 In St.","postalZip":"34225","country":"Russian Federation"},{"customerId":1865,"customerName":"Adena Rodgers","phone":"(556) 234-5054","email":"aliquet.libero@icloud.ca","address":"581-7426 Erat. Ave","postalZip":"866795","country":"France"},{"customerId":1866,"customerName":"Kieran Fowler","phone":"1-466-346-1457","email":"enim@protonmail.net","address":"956-4438 Id, St.","postalZip":"2770","country":"Germany"},{"customerId":1867,"customerName":"Arthur Sims","phone":"1-526-733-2899","email":"sem.consequat@yahoo.org","address":"P.O. Box 257, 5793 Urna. Street","postalZip":"72860","country":"Germany"},{"customerId":1868,"customerName":"Kenneth Walker","phone":"(414) 375-4371","email":"tincidunt.orci@hotmail.ca","address":"9592 Curabitur Rd.","postalZip":"35787","country":"Sweden"},{"customerId":1869,"customerName":"Ryder Powell","phone":"1-624-490-8582","email":"etiam@outlook.edu","address":"P.O. Box 161, 4903 Condimentum Rd.","postalZip":"8215","country":"Sweden"},{"customerId":1870,"customerName":"Genevieve Haynes","phone":"(965) 865-1548","email":"aliquam.eros.turpis@hotmail.edu","address":"862-5038 Non, St.","postalZip":"40504","country":"South Africa"},{"customerId":1871,"customerName":"Flynn Carver","phone":"(146) 235-7187","email":"eget.magna.suspendisse@icloud.edu","address":"Ap #702-5604 Eros. Road","postalZip":"36742-72244","country":"Singapore"},{"customerId":1872,"customerName":"Nicholas Horn","phone":"(263) 162-8732","email":"in.condimentum.donec@hotmail.ca","address":"739-4887 Diam Avenue","postalZip":"36594","country":"Brazil"},{"customerId":1873,"customerName":"Elton Barrera","phone":"1-297-797-6663","email":"ipsum.cursus.vestibulum@hotmail.edu","address":"109-8487 Ut Street","postalZip":"62554","country":"Ukraine"},{"customerId":1874,"customerName":"Garrett Mitchell","phone":"1-809-782-4524","email":"iaculis.odio.nam@protonmail.net","address":"Ap #154-5465 Facilisis St.","postalZip":"5643","country":"Belgium"},{"customerId":1875,"customerName":"Willa Wooten","phone":"1-734-268-2036","email":"est@yahoo.edu","address":"290-6395 Sed Ave","postalZip":"40707","country":"Pakistan"},{"customerId":1876,"customerName":"Octavius Mclean","phone":"1-465-326-6802","email":"blandit.enim.consequat@icloud.ca","address":"Ap #327-7237 Sed St.","postalZip":"S2Y 4B3","country":"United Kingdom"},{"customerId":1877,"customerName":"Deacon Cole","phone":"1-378-653-0840","email":"aliquam.eros@aol.edu","address":"2005 Ipsum Street","postalZip":"6386-8474","country":"France"},{"customerId":1878,"customerName":"Neville Noel","phone":"(811) 751-2258","email":"pulvinar.arcu.et@google.org","address":"P.O. Box 533, 9794 Donec Avenue","postalZip":"1712","country":"Ireland"},{"customerId":1879,"customerName":"Drake Alford","phone":"(541) 288-4877","email":"vulputate@icloud.com","address":"Ap #325-3628 Posuere St.","postalZip":"13447","country":"Italy"},{"customerId":1880,"customerName":"Melodie Bell","phone":"1-226-713-4345","email":"nisl.arcu@aol.edu","address":"6366 Eget Avenue","postalZip":"56836","country":"Peru"},{"customerId":1881,"customerName":"Brittany Townsend","phone":"(642) 416-3802","email":"scelerisque@google.net","address":"P.O. Box 166, 8614 Tincidunt. Ave","postalZip":"33118","country":"Nigeria"},{"customerId":1882,"customerName":"Brynn Hopkins","phone":"(629) 129-1863","email":"ipsum.nunc.id@protonmail.edu","address":"4848 Porta Avenue","postalZip":"236166","country":"United States"},{"customerId":1883,"customerName":"Justina Sharpe","phone":"(772) 338-7876","email":"duis.cursus.diam@aol.net","address":"Ap #673-6972 Sed Avenue","postalZip":"857193","country":"Italy"},{"customerId":1884,"customerName":"Lani Daniels","phone":"(611) 166-0409","email":"mauris@yahoo.com","address":"Ap #953-7019 Nam Road","postalZip":"2385","country":"Colombia"},{"customerId":1885,"customerName":"Matthew Wynn","phone":"(783) 513-6115","email":"egestas.nunc@aol.couk","address":"602-1593 Etiam Av.","postalZip":"785833","country":"Netherlands"},{"customerId":1886,"customerName":"Abraham Cook","phone":"1-265-617-2884","email":"sit.amet@icloud.com","address":"3257 Cursus St.","postalZip":"3753","country":"Canada"},{"customerId":1887,"customerName":"Iliana Hendrix","phone":"1-284-146-8871","email":"curabitur@icloud.org","address":"P.O. Box 395, 3399 Sociis Rd.","postalZip":"7333","country":"Brazil"},{"customerId":1888,"customerName":"William Odom","phone":"1-690-135-9943","email":"facilisis.magna.tellus@aol.com","address":"Ap #802-3901 Tincidunt St.","postalZip":"3211","country":"Vietnam"},{"customerId":1889,"customerName":"Dominic Dodson","phone":"1-606-466-3392","email":"lobortis.quis.pede@google.net","address":"P.O. Box 458, 5161 Ligula Road","postalZip":"15721","country":"Sweden"},{"customerId":1890,"customerName":"Abbot Mercer","phone":"1-156-112-8805","email":"non.lorem@yahoo.couk","address":"P.O. Box 483, 7081 Parturient Avenue","postalZip":"284439","country":"Canada"},{"customerId":1891,"customerName":"Kylynn Jacobson","phone":"(678) 435-0864","email":"orci.adipiscing@google.com","address":"Ap #165-9838 Donec Street","postalZip":"78448","country":"South Korea"},{"customerId":1892,"customerName":"Emery Fisher","phone":"(123) 890-4325","email":"nisl@outlook.net","address":"327-1458 Pede Av.","postalZip":"724060","country":"Chile"},{"customerId":1893,"customerName":"Aquila Morales","phone":"1-662-209-8121","email":"amet.massa@aol.net","address":"5212 Nam Rd.","postalZip":"34052","country":"France"},{"customerId":1894,"customerName":"Steel Alvarez","phone":"1-772-611-8442","email":"in@outlook.couk","address":"8797 Quisque St.","postalZip":"345474","country":"South Korea"},{"customerId":1895,"customerName":"Ciaran Hickman","phone":"1-636-894-1656","email":"mi.tempor.lorem@google.edu","address":"634 Purus Street","postalZip":"5413","country":"Poland"},{"customerId":1896,"customerName":"Cheyenne Pickett","phone":"1-421-154-6217","email":"faucibus.ut@aol.couk","address":"Ap #750-8413 Sit Avenue","postalZip":"89317","country":"New Zealand"},{"customerId":1897,"customerName":"Stacey Frost","phone":"1-205-688-5415","email":"phasellus.dapibus.quam@icloud.net","address":"2731 Convallis Rd.","postalZip":"54N 8K3","country":"Indonesia"},{"customerId":1898,"customerName":"Chanda Short","phone":"1-246-625-1117","email":"vulputate.mauris.sagittis@protonmail.org","address":"Ap #651-7627 Convallis Ave","postalZip":"600991","country":"Ukraine"},{"customerId":1899,"customerName":"Hayden Nicholson","phone":"(252) 843-7630","email":"nisi.cum@yahoo.org","address":"P.O. Box 538, 654 Quam, Ave","postalZip":"345713","country":"Costa Rica"},{"customerId":1900,"customerName":"Ingrid Lamb","phone":"1-215-787-8326","email":"lorem.ut.aliquam@aol.org","address":"Ap #694-6769 Est, Avenue","postalZip":"249507","country":"United States"},{"customerId":1901,"customerName":"Hillary Rutledge","phone":"(685) 647-1350","email":"sodales.elit@hotmail.couk","address":"Ap #929-8555 In St.","postalZip":"64695","country":"Turkey"},{"customerId":1902,"customerName":"McKenzie Woods","phone":"(481) 275-8422","email":"egestas.hendrerit.neque@google.couk","address":"Ap #744-6078 Integer Rd.","postalZip":"248827","country":"Ireland"},{"customerId":1903,"customerName":"Britanni Hurley","phone":"1-359-677-1812","email":"dictum@protonmail.edu","address":"783-1472 Molestie Rd.","postalZip":"B1C 6S0","country":"South Korea"},{"customerId":1904,"customerName":"Brynne Hendrix","phone":"(425) 432-1859","email":"scelerisque.lorem@hotmail.ca","address":"812-3306 Cursus St.","postalZip":"98852-87194","country":"Philippines"},{"customerId":1905,"customerName":"Alan Wise","phone":"(695) 334-4756","email":"lorem.vitae@hotmail.org","address":"3894 Nunc, Street","postalZip":"15443","country":"Turkey"},{"customerId":1906,"customerName":"Baker Stuart","phone":"1-645-318-1323","email":"lobortis@aol.com","address":"P.O. Box 115, 3968 Auctor. Avenue","postalZip":"683633","country":"Chile"},{"customerId":1907,"customerName":"Jack Knowles","phone":"(865) 646-0104","email":"ligula.nullam.enim@outlook.ca","address":"P.O. Box 503, 1481 Nonummy Avenue","postalZip":"6038 FX","country":"Sweden"},{"customerId":1908,"customerName":"Ferdinand Phelps","phone":"(882) 377-4211","email":"interdum.nunc@outlook.edu","address":"Ap #673-6139 Libero St.","postalZip":"84115","country":"Italy"},{"customerId":1909,"customerName":"September Phillips","phone":"1-820-498-4893","email":"sem@icloud.couk","address":"Ap #580-178 Metus. St.","postalZip":"87564","country":"Austria"},{"customerId":1910,"customerName":"Kimberly Figueroa","phone":"(625) 380-4152","email":"massa.mauris@yahoo.ca","address":"Ap #947-7054 Felis Avenue","postalZip":"333803","country":"Norway"},{"customerId":1911,"customerName":"Adara Eaton","phone":"1-331-418-6738","email":"lectus.ante@aol.com","address":"P.O. Box 323, 621 Mauris Rd.","postalZip":"466335","country":"South Korea"},{"customerId":1912,"customerName":"Ivor Benton","phone":"1-254-872-3154","email":"sem.vitae@aol.net","address":"755-1841 Interdum. Street","postalZip":"35623","country":"Germany"},{"customerId":1913,"customerName":"Priscilla Haley","phone":"(367) 358-2304","email":"in.magna@hotmail.net","address":"Ap #594-2415 Adipiscing Rd.","postalZip":"4447","country":"Nigeria"},{"customerId":1914,"customerName":"Wyoming Talley","phone":"(570) 793-8155","email":"in.faucibus@icloud.net","address":"7385 Cursus. Ave","postalZip":"18723-511","country":"Peru"},{"customerId":1915,"customerName":"Theodore Whitley","phone":"(584) 671-6377","email":"tellus.eu@yahoo.net","address":"Ap #687-2211 Quam Ave","postalZip":"2236","country":"Australia"},{"customerId":1916,"customerName":"Adam Ross","phone":"1-923-536-2401","email":"tempor.diam@aol.ca","address":"Ap #445-6340 Malesuada. Av.","postalZip":"561431","country":"France"},{"customerId":1917,"customerName":"Sophia Pugh","phone":"(834) 291-7660","email":"nunc.interdum@outlook.org","address":"Ap #657-3714 Arcu Street","postalZip":"1352","country":"Mexico"},{"customerId":1918,"customerName":"Desirae Gates","phone":"(437) 628-8912","email":"malesuada.fringilla.est@protonmail.net","address":"Ap #445-8866 Sit St.","postalZip":"192504","country":"Norway"},{"customerId":1919,"customerName":"Tad Fisher","phone":"1-112-372-7529","email":"et.magnis@protonmail.com","address":"3946 Vulputate, St.","postalZip":"57-026","country":"India"},{"customerId":1920,"customerName":"Colette Duke","phone":"1-802-387-2346","email":"eget.nisi@google.couk","address":"P.O. Box 611, 2783 Augue St.","postalZip":"86585","country":"South Korea"},{"customerId":1921,"customerName":"Yolanda Mosley","phone":"(462) 737-9037","email":"urna@protonmail.couk","address":"1350 Non Avenue","postalZip":"07-758","country":"Ukraine"},{"customerId":1922,"customerName":"Cathleen Best","phone":"(863) 686-4677","email":"a.enim@outlook.org","address":"Ap #545-7936 Lectus Rd.","postalZip":"32609","country":"New Zealand"},{"customerId":1923,"customerName":"Galena Mueller","phone":"(257) 331-8978","email":"sit@hotmail.org","address":"8386 Adipiscing St.","postalZip":"7096-3056","country":"Turkey"},{"customerId":1924,"customerName":"Zane Fuentes","phone":"1-191-322-5677","email":"amet@outlook.org","address":"Ap #419-7784 Semper Rd.","postalZip":"67247","country":"United States"},{"customerId":1925,"customerName":"Lee Romero","phone":"(675) 103-3374","email":"dolor.quisque@icloud.com","address":"Ap #613-9414 Nec Av.","postalZip":"375359","country":"Belgium"},{"customerId":1926,"customerName":"Bree Christensen","phone":"1-228-192-4787","email":"sed.sem.egestas@hotmail.org","address":"Ap #455-3187 Nisi Rd.","postalZip":"42817","country":"Canada"},{"customerId":1927,"customerName":"Phelan Hammond","phone":"1-329-234-5222","email":"ut.sagittis@icloud.couk","address":"P.O. Box 814, 581 Mauris St.","postalZip":"28452","country":"Nigeria"},{"customerId":1928,"customerName":"Noel O'Neill","phone":"1-434-358-5842","email":"mauris.sit@outlook.ca","address":"6391 Vitae Road","postalZip":"F2 5NZ","country":"Singapore"},{"customerId":1929,"customerName":"Quinn Ballard","phone":"(351) 846-1611","email":"ut.sem.nulla@outlook.ca","address":"377-3132 Et, Avenue","postalZip":"6516","country":"France"},{"customerId":1930,"customerName":"Jane French","phone":"(588) 297-5859","email":"mauris@outlook.org","address":"9514 Nulla Road","postalZip":"87-17","country":"Belgium"},{"customerId":1931,"customerName":"Samson Pate","phone":"1-256-274-5718","email":"eleifend.egestas@yahoo.com","address":"335-2976 Non, Avenue","postalZip":"302914","country":"China"},{"customerId":1932,"customerName":"Lee Bates","phone":"1-522-851-7746","email":"mi.enim.condimentum@icloud.com","address":"Ap #705-7521 Rutrum Rd.","postalZip":"88-378","country":"Russian Federation"},{"customerId":1933,"customerName":"Galena Burke","phone":"1-660-152-5750","email":"turpis.non.enim@icloud.edu","address":"Ap #514-8587 Mi Street","postalZip":"392162","country":"India"},{"customerId":1934,"customerName":"Zelda Sharpe","phone":"1-944-292-7168","email":"erat.neque@google.couk","address":"P.O. Box 978, 647 Arcu. Rd.","postalZip":"4439","country":"Germany"},{"customerId":1935,"customerName":"Alec Wolfe","phone":"(755) 259-5304","email":"ac.mattis.velit@yahoo.org","address":"318-1151 Fusce Avenue","postalZip":"984295","country":"United States"},{"customerId":1936,"customerName":"Lewis Montoya","phone":"1-425-513-1726","email":"orci@icloud.net","address":"P.O. Box 924, 3652 Nam Av.","postalZip":"98182-41395","country":"New Zealand"},{"customerId":1937,"customerName":"Yael Mercado","phone":"(633) 702-6704","email":"iaculis.lacus.pede@google.edu","address":"Ap #752-3027 In Rd.","postalZip":"131797","country":"Indonesia"},{"customerId":1938,"customerName":"Damian Cummings","phone":"1-535-648-2572","email":"suspendisse.ac.metus@aol.com","address":"759-956 Mollis. Street","postalZip":"0158","country":"Vietnam"},{"customerId":1939,"customerName":"Dustin Chaney","phone":"(503) 886-0665","email":"eget@yahoo.couk","address":"3178 Ligula. Rd.","postalZip":"58118-164","country":"Costa Rica"},{"customerId":1940,"customerName":"Shelly Bryan","phone":"(311) 726-0887","email":"eros.turpis.non@protonmail.net","address":"P.O. Box 604, 6770 Dui, Ave","postalZip":"387948","country":"New Zealand"},{"customerId":1941,"customerName":"Charlotte Meadows","phone":"(639) 893-2124","email":"donec.felis@hotmail.ca","address":"P.O. Box 858, 8575 Ipsum Avenue","postalZip":"13225","country":"Peru"},{"customerId":1942,"customerName":"Kenyon Camacho","phone":"1-861-321-8402","email":"varius.nam@yahoo.ca","address":"122-1077 Turpis Road","postalZip":"342261","country":"Singapore"},{"customerId":1943,"customerName":"Leah Singleton","phone":"(462) 129-3256","email":"auctor.velit.aliquam@protonmail.com","address":"8729 Congue. Avenue","postalZip":"12026","country":"Germany"},{"customerId":1944,"customerName":"Jerry Skinner","phone":"(938) 358-7523","email":"ullamcorper.nisl@outlook.ca","address":"Ap #749-5734 Orci Street","postalZip":"2128","country":"Vietnam"},{"customerId":1945,"customerName":"Thaddeus Rosario","phone":"1-548-788-8153","email":"orci@google.couk","address":"906-1436 Orci Avenue","postalZip":"50517","country":"Netherlands"},{"customerId":1946,"customerName":"Abdul Love","phone":"(445) 835-6892","email":"a.tortor.nunc@outlook.ca","address":"Ap #203-3317 Eu Av.","postalZip":"45-541","country":"Belgium"},{"customerId":1947,"customerName":"Karly Knox","phone":"1-582-259-6876","email":"turpis.non@google.net","address":"488-4553 Odio. Street","postalZip":"121636","country":"Mexico"},{"customerId":1948,"customerName":"Maggie Maldonado","phone":"(750) 440-4269","email":"est.arcu.ac@protonmail.couk","address":"P.O. Box 871, 4738 Amet Rd.","postalZip":"911828","country":"Netherlands"},{"customerId":1949,"customerName":"Andrew Carroll","phone":"1-651-717-7573","email":"sapien.gravida@aol.couk","address":"Ap #313-7897 Non, Street","postalZip":"36-82","country":"Vietnam"},{"customerId":1950,"customerName":"Lana Reese","phone":"1-461-611-6288","email":"mus.proin@aol.net","address":"5898 Et Avenue","postalZip":"21157","country":"France"},{"customerId":1951,"customerName":"Althea Delgado","phone":"1-245-556-7878","email":"interdum.curabitur@google.ca","address":"490-8010 Porttitor Rd.","postalZip":"9839","country":"Australia"},{"customerId":1952,"customerName":"Forrest Dunlap","phone":"(902) 334-7146","email":"praesent.interdum@yahoo.edu","address":"Ap #168-8759 Tristique Rd.","postalZip":"41-162","country":"Norway"},{"customerId":1953,"customerName":"Dora Schneider","phone":"(815) 642-8375","email":"libero@icloud.net","address":"279-7895 Fermentum St.","postalZip":"17558-56886","country":"United Kingdom"},{"customerId":1954,"customerName":"Gary Gaines","phone":"(603) 584-0047","email":"maecenas.mi@hotmail.com","address":"227-5991 Lacus. Rd.","postalZip":"874838","country":"China"},{"customerId":1955,"customerName":"Darryl Brennan","phone":"1-952-835-5827","email":"mi@hotmail.couk","address":"546-9418 Ad Av.","postalZip":"11371-28674","country":"New Zealand"},{"customerId":1956,"customerName":"Autumn Murphy","phone":"(944) 534-8183","email":"fermentum@outlook.edu","address":"P.O. Box 789, 1377 Et, Ave","postalZip":"12420","country":"Norway"},{"customerId":1957,"customerName":"Donna Castaneda","phone":"1-964-677-2689","email":"semper.tellus@icloud.com","address":"4979 Vitae Rd.","postalZip":"D2 6MG","country":"Nigeria"},{"customerId":1958,"customerName":"Kirby Kelley","phone":"(814) 225-8824","email":"mauris.erat@yahoo.edu","address":"568-4879 Quisque Av.","postalZip":"648468","country":"Russian Federation"},{"customerId":1959,"customerName":"Elmo Reilly","phone":"(774) 232-2605","email":"velit.cras@aol.couk","address":"2451 Porttitor St.","postalZip":"00-320","country":"United Kingdom"},{"customerId":1960,"customerName":"Gage Johnston","phone":"1-167-686-3155","email":"enim@google.edu","address":"Ap #467-7607 Mi Av.","postalZip":"32-55","country":"Ireland"},{"customerId":1961,"customerName":"Malik Fischer","phone":"(883) 301-7931","email":"neque.nullam.nisl@aol.com","address":"Ap #327-7425 Netus Road","postalZip":"66-810","country":"Chile"},{"customerId":1962,"customerName":"Shelley Wilson","phone":"(703) 672-0707","email":"turpis@icloud.com","address":"Ap #954-200 Ante Av.","postalZip":"86126","country":"India"},{"customerId":1963,"customerName":"Raymond Price","phone":"1-563-164-6654","email":"ante@outlook.edu","address":"221-9731 In Ave","postalZip":"634553","country":"India"},{"customerId":1964,"customerName":"Alden Fox","phone":"(726) 375-4844","email":"ullamcorper.magna@yahoo.ca","address":"6171 Malesuada Avenue","postalZip":"8184","country":"United States"},{"customerId":1965,"customerName":"Jerry Kelly","phone":"1-583-775-0164","email":"odio.auctor@google.ca","address":"4912 Porttitor Rd.","postalZip":"99317","country":"Ireland"},{"customerId":1966,"customerName":"Maisie Dunn","phone":"(392) 679-8155","email":"phasellus@yahoo.ca","address":"Ap #968-9517 Ante Road","postalZip":"542782","country":"Germany"},{"customerId":1967,"customerName":"Whoopi Terrell","phone":"(761) 112-3129","email":"dignissim.magna@google.couk","address":"Ap #552-4560 Cubilia St.","postalZip":"54695","country":"Vietnam"},{"customerId":1968,"customerName":"Todd Chen","phone":"(323) 673-3823","email":"phasellus.dapibus@protonmail.net","address":"P.O. Box 502, 1048 Elementum St.","postalZip":"GW1M 9IR","country":"Colombia"},{"customerId":1969,"customerName":"Lane Hickman","phone":"(378) 534-1640","email":"enim.commodo.hendrerit@hotmail.net","address":"138-830 Lectus Ave","postalZip":"B6W 4S6","country":"China"},{"customerId":1970,"customerName":"Raphael Hines","phone":"(321) 313-4834","email":"commodo.auctor.velit@hotmail.couk","address":"Ap #846-4814 Adipiscing Avenue","postalZip":"834625","country":"Australia"},{"customerId":1971,"customerName":"Selma Villarreal","phone":"1-422-129-7546","email":"euismod.enim@outlook.org","address":"P.O. Box 150, 6190 Mi Road","postalZip":"58791","country":"Mexico"},{"customerId":1972,"customerName":"Maile Hatfield","phone":"(154) 593-6400","email":"venenatis.lacus@google.net","address":"4394 Pede Ave","postalZip":"77338","country":"South Africa"},{"customerId":1973,"customerName":"Dane Conner","phone":"(338) 310-6671","email":"amet.dapibus.id@icloud.net","address":"983-7551 Sem Rd.","postalZip":"9526-8662","country":"Italy"},{"customerId":1974,"customerName":"Dylan Petty","phone":"1-201-571-4956","email":"ac.risus@google.ca","address":"Ap #310-9255 Ligula. Rd.","postalZip":"81M 1V1","country":"Ukraine"},{"customerId":1975,"customerName":"Fay Howard","phone":"(660) 402-4432","email":"sociis.natoque@outlook.com","address":"573-5343 Tellus Av.","postalZip":"11219","country":"Indonesia"},{"customerId":1976,"customerName":"Hedda Gross","phone":"(265) 412-7640","email":"arcu.aliquam@yahoo.com","address":"Ap #726-2764 Posuere St.","postalZip":"23871","country":"South Africa"},{"customerId":1977,"customerName":"Devin Burton","phone":"1-353-432-8572","email":"adipiscing.fringilla.porttitor@icloud.ca","address":"835-1832 Risus. Av.","postalZip":"47-48","country":"Nigeria"},{"customerId":1978,"customerName":"Amber Hubbard","phone":"(251) 369-7381","email":"vel@protonmail.com","address":"5651 Congue Av.","postalZip":"60761","country":"Russian Federation"},{"customerId":1979,"customerName":"Stella Warren","phone":"(730) 217-0434","email":"ipsum.dolor@yahoo.edu","address":"955-8876 Ultrices Road","postalZip":"40018","country":"South Korea"},{"customerId":1980,"customerName":"Miranda Vaughn","phone":"(286) 745-9212","email":"magna.phasellus@outlook.com","address":"Ap #795-7294 Eu Rd.","postalZip":"7394","country":"Chile"},{"customerId":1981,"customerName":"Ahmed Mckinney","phone":"(721) 976-8173","email":"proin.vel@protonmail.com","address":"6101 Orci Road","postalZip":"8564","country":"France"},{"customerId":1982,"customerName":"Felix Mcbride","phone":"1-593-527-3256","email":"aenean.eget@protonmail.edu","address":"4437 A, St.","postalZip":"78541","country":"Mexico"},{"customerId":1983,"customerName":"Vladimir Velazquez","phone":"(372) 460-7710","email":"parturient@icloud.net","address":"Ap #427-1787 Pede Av.","postalZip":"72584","country":"Ireland"},{"customerId":1984,"customerName":"Oprah England","phone":"(825) 604-3254","email":"velit.eu@hotmail.ca","address":"Ap #467-2113 Dapibus St.","postalZip":"812316","country":"Colombia"},{"customerId":1985,"customerName":"Chelsea Richard","phone":"1-233-830-6941","email":"sagittis.semper.nam@yahoo.edu","address":"Ap #120-9600 Orci. Av.","postalZip":"12226","country":"Chile"},{"customerId":1986,"customerName":"Berk Juarez","phone":"1-555-912-8835","email":"pellentesque.massa.lobortis@google.couk","address":"390-4503 Gravida St.","postalZip":"95-58","country":"Poland"},{"customerId":1987,"customerName":"Channing Mcclure","phone":"1-972-275-5207","email":"aenean@google.ca","address":"Ap #482-622 Bibendum Road","postalZip":"11856","country":"United Kingdom"},{"customerId":1988,"customerName":"Gabriel Riddle","phone":"(446) 623-3822","email":"in.mi@google.ca","address":"P.O. Box 126, 1812 Sit Ave","postalZip":"632277","country":"Austria"},{"customerId":1989,"customerName":"Laurel Montoya","phone":"1-631-215-2305","email":"dictum.eu@google.org","address":"7628 Orci Ave","postalZip":"5987","country":"United Kingdom"},{"customerId":1990,"customerName":"Stewart Vasquez","phone":"(372) 925-1206","email":"hendrerit.a.arcu@protonmail.com","address":"960-4259 Elit Ave","postalZip":"12777-34242","country":"Indonesia"},{"customerId":1991,"customerName":"Brody Bowen","phone":"1-631-977-2126","email":"gravida.sagittis@icloud.ca","address":"478 Ante. St.","postalZip":"37508","country":"China"},{"customerId":1992,"customerName":"Boris Short","phone":"1-644-724-7864","email":"pellentesque.a.facilisis@hotmail.net","address":"992-7563 Sem Street","postalZip":"5303","country":"United States"},{"customerId":1993,"customerName":"Deanna Russo","phone":"(276) 819-4043","email":"adipiscing.elit@yahoo.com","address":"P.O. Box 666, 6846 Nibh. St.","postalZip":"57881","country":"Singapore"},{"customerId":1994,"customerName":"Ahmed Ford","phone":"1-751-871-4244","email":"lobortis.augue.scelerisque@google.ca","address":"Ap #182-7880 Donec Rd.","postalZip":"5778","country":"Costa Rica"},{"customerId":1995,"customerName":"Stella Rowland","phone":"(635) 976-8426","email":"nunc@icloud.org","address":"Ap #791-7934 Semper, Rd.","postalZip":"4730 OG","country":"United States"},{"customerId":1996,"customerName":"Chiquita Weiss","phone":"1-420-691-0429","email":"dolor.fusce@yahoo.org","address":"P.O. Box 603, 623 Semper, Rd.","postalZip":"2987","country":"Norway"},{"customerId":1997,"customerName":"Hop Potter","phone":"1-862-589-7849","email":"neque.nullam@outlook.org","address":"369-8543 Erat Ave","postalZip":"Q5G 8JW","country":"Turkey"},{"customerId":1998,"customerName":"Yvette Fletcher","phone":"1-493-824-6861","email":"nec.quam@aol.org","address":"719-1513 Mus. Ave","postalZip":"188335","country":"Vietnam"},{"customerId":1999,"customerName":"Raya Chaney","phone":"1-343-252-4186","email":"ipsum.nunc.id@aol.org","address":"152-7411 Facilisis Ave","postalZip":"24-030","country":"Turkey"},{"customerId":2000,"customerName":"Oleg Morton","phone":"1-271-724-9512","email":"feugiat.nec@aol.couk","address":"6910 Ut Avenue","postalZip":"04325","country":"Poland"}] \ No newline at end of file diff --git a/BlazorBootstrap.Demo.Hosted/Client/wwwroot/sitemap.xml b/BlazorBootstrap.Demo.Hosted/Client/wwwroot/sitemap.xml new file mode 100644 index 000000000..483f45f4c --- /dev/null +++ b/BlazorBootstrap.Demo.Hosted/Client/wwwroot/sitemap.xml @@ -0,0 +1,118 @@ + + + + https://demos.blazorbootstrap.com + daily + 0.9 + + + https://demos.blazorbootstrap.com/getting-started + weekly + 0.5 + + + https://demos.blazorbootstrap.com/alerts + weekly + 0.5 + + + https://demos.blazorbootstrap.com/autocomplete + weekly + 0.5 + + + https://demos.blazorbootstrap.com/breadcrumb + weekly + 0.5 + + + https://demos.blazorbootstrap.com/buttons + weekly + 0.5 + + + https://demos.blazorbootstrap.com/callout + weekly + 0.5 + + + https://demos.blazorbootstrap.com/charts + weekly + 0.5 + + + https://demos.blazorbootstrap.com/confirm-dialog + weekly + 0.5 + + + https://demos.blazorbootstrap.com/form/currency-input + weekly + 0.5 + + + https://demos.blazorbootstrap.com/grid + weekly + 0.5 + + + https://demos.blazorbootstrap.com/icons + weekly + 0.5 + + + https://demos.blazorbootstrap.com/modals + weekly + 0.5 + + + https://demos.blazorbootstrap.com/form/number-input + weekly + 0.5 + + + https://demos.blazorbootstrap.com/offcanvas + weekly + 0.5 + + + https://demos.blazorbootstrap.com/pagination + weekly + 0.5 + + + https://demos.blazorbootstrap.com/placeholders + weekly + 0.5 + + + https://demos.blazorbootstrap.com/preload + weekly + 0.5 + + + https://demos.blazorbootstrap.com/progress + weekly + 0.5 + + + https://demos.blazorbootstrap.com/form/switch + weekly + 0.5 + + + https://demos.blazorbootstrap.com/tabs + weekly + 0.5 + + + https://demos.blazorbootstrap.com/toasts + weekly + 0.5 + + + https://demos.blazorbootstrap.com/tooltips + weekly + 0.5 + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.Hosted/Server/BlazorBootstrap.Demo.Hosted.Server.csproj b/BlazorBootstrap.Demo.Hosted/Server/BlazorBootstrap.Demo.Hosted.Server.csproj new file mode 100644 index 000000000..712b8f029 --- /dev/null +++ b/BlazorBootstrap.Demo.Hosted/Server/BlazorBootstrap.Demo.Hosted.Server.csproj @@ -0,0 +1,18 @@ + + + + net7.0 + enable + enable + + + + + + + + + + + + diff --git a/BlazorBootstrap.Demo.Hosted/Server/Controllers/WeatherForecastController.cs b/BlazorBootstrap.Demo.Hosted/Server/Controllers/WeatherForecastController.cs new file mode 100644 index 000000000..0a771f214 --- /dev/null +++ b/BlazorBootstrap.Demo.Hosted/Server/Controllers/WeatherForecastController.cs @@ -0,0 +1,11 @@ +using Microsoft.AspNetCore.Mvc; + +namespace BlazorBootstrap.Demo.Hosted.Server.Controllers; + +[ApiController] +[Route("[controller]")] +public class WeatherForecastController : ControllerBase +{ + [HttpGet] + public string Get() => "Hello!"; +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.Hosted/Server/Pages/Error.cshtml b/BlazorBootstrap.Demo.Hosted/Server/Pages/Error.cshtml new file mode 100644 index 000000000..037d19f24 --- /dev/null +++ b/BlazorBootstrap.Demo.Hosted/Server/Pages/Error.cshtml @@ -0,0 +1,42 @@ +@page +@model BlazorBootstrap.Demo.Hosted.Server.Pages.ErrorModel + + + + + + + + Error + + + + + +

+
+

Error.

+

An error occurred while processing your request.

+ + @if (Model.ShowRequestId) + { +

+ Request ID: @Model.RequestId +

+ } + +

Development Mode

+

+ Swapping to the Development environment displays detailed information about the error that occurred. +

+

+ The Development environment shouldn't be enabled for deployed applications. + It can result in displaying sensitive information from exceptions to end users. + For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development + and restarting the app. +

+
+
+ + + diff --git a/BlazorBootstrap.Demo.Hosted/Server/Pages/Error.cshtml.cs b/BlazorBootstrap.Demo.Hosted/Server/Pages/Error.cshtml.cs new file mode 100644 index 000000000..645de155a --- /dev/null +++ b/BlazorBootstrap.Demo.Hosted/Server/Pages/Error.cshtml.cs @@ -0,0 +1,26 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; +using System.Diagnostics; + +namespace BlazorBootstrap.Demo.Hosted.Server.Pages; + +[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] +[IgnoreAntiforgeryToken] +public class ErrorModel : PageModel +{ + public string? RequestId { get; set; } + + public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); + + private readonly ILogger _logger; + + public ErrorModel(ILogger logger) + { + _logger = logger; + } + + public void OnGet() + { + RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.Hosted/Server/Pages/_Host.cshtml b/BlazorBootstrap.Demo.Hosted/Server/Pages/_Host.cshtml new file mode 100644 index 000000000..1b8f4123a --- /dev/null +++ b/BlazorBootstrap.Demo.Hosted/Server/Pages/_Host.cshtml @@ -0,0 +1,66 @@ +@page "/" +@using BlazorBootstrap.Demo.Hosted.Client +@using Microsoft.AspNetCore.Components.Web +@namespace BlazorBootstrap.Demo.Hosted.Server.Pages +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers + + + + + + + Demos & Examples | Enterprise-class Blazor Bootstrap Component library built on the Blazor and Bootstrap CSS framework | Blazor Bootstrap + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/BlazorBootstrap.Demo.Hosted/Server/Program.cs b/BlazorBootstrap.Demo.Hosted/Server/Program.cs new file mode 100644 index 000000000..bbe083394 --- /dev/null +++ b/BlazorBootstrap.Demo.Hosted/Server/Program.cs @@ -0,0 +1,36 @@ +var builder = WebApplication.CreateBuilder(args); +{ + // DI + builder.Services.AddHttpClient(); + builder.Services.AddBlazorBootstrap(); + builder.Services.AddDemoServices(); + + builder.Services.AddControllersWithViews(); + builder.Services.AddRazorPages(); +} + +var app = builder.Build(); +{ + if (app.Environment.IsDevelopment()) + { + app.UseWebAssemblyDebugging(); + } + else + { + app.UseExceptionHandler("/Error"); + app.UseHsts(); + } + + app.UseHttpsRedirection(); + + app.UseBlazorFrameworkFiles(); + app.UseStaticFiles(); + + app.UseRouting(); + + app.MapRazorPages(); + app.MapControllers(); + app.MapFallbackToPage("/_Host"); + + app.Run(); +} diff --git a/BlazorBootstrap.Demo.Hosted/Server/Properties/launchSettings.json b/BlazorBootstrap.Demo.Hosted/Server/Properties/launchSettings.json new file mode 100644 index 000000000..626120395 --- /dev/null +++ b/BlazorBootstrap.Demo.Hosted/Server/Properties/launchSettings.json @@ -0,0 +1,30 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:7232", + "sslPort": 44372 + } + }, + "profiles": { + "BlazorBootstrap.Demo.Server": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "applicationUrl": "https://localhost:5021;http://localhost:5020", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } + } diff --git a/BlazorBootstrap.Demo.Hosted/Server/Using.cs b/BlazorBootstrap.Demo.Hosted/Server/Using.cs new file mode 100644 index 000000000..7c1cdc2e8 --- /dev/null +++ b/BlazorBootstrap.Demo.Hosted/Server/Using.cs @@ -0,0 +1 @@ +global using BlazorBootstrap.Demo.RCL; diff --git a/BlazorBootstrap.Demo.Hosted/Server/appsettings.Development.json b/BlazorBootstrap.Demo.Hosted/Server/appsettings.Development.json new file mode 100644 index 000000000..0c208ae91 --- /dev/null +++ b/BlazorBootstrap.Demo.Hosted/Server/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/BlazorBootstrap.Demo.Hosted/Server/appsettings.json b/BlazorBootstrap.Demo.Hosted/Server/appsettings.json new file mode 100644 index 000000000..10f68b8c8 --- /dev/null +++ b/BlazorBootstrap.Demo.Hosted/Server/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/BlazorBootstrap.Demo.RCL/App.cs b/BlazorBootstrap.Demo.RCL/App.cs new file mode 100644 index 000000000..41db58714 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/App.cs @@ -0,0 +1,5 @@ +namespace BlazorBootstrap.Demo.RCL; + +public class App +{ +} diff --git a/BlazorBootstrap.Demo.RCL/BlazorBootstrap.Demo.RCL.csproj b/BlazorBootstrap.Demo.RCL/BlazorBootstrap.Demo.RCL.csproj new file mode 100644 index 000000000..dd74e9dec --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/BlazorBootstrap.Demo.RCL.csproj @@ -0,0 +1,30 @@ + + + + net7.0 + enable + enable + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Layout/EmptyLayout.razor b/BlazorBootstrap.Demo.RCL/Components/Layout/EmptyLayout.razor new file mode 100644 index 000000000..d956f909f --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Layout/EmptyLayout.razor @@ -0,0 +1,141 @@ +@namespace BlazorBootstrap.Demo.RCL + +@inherits LayoutComponentBase + + + + If you like Blazor Bootstrap, give it a star on GitHub! + + + + +
+ @Body +
+ + +@code { + private string version = default!; + private string docsUrl = default!; + private string blogUrl = default!; + private string githubUrl = default!; + private string twitterUrl = default!; + private string linkedInUrl = default!; + private string githubIssuesUrl = default!; + private string githubDiscussionsUrl = default!; + private string stackoverflowUrl = default!; + + [Inject] public IConfiguration Configuration { get; set; } = default!; + + protected override void OnInitialized() + { + version = $"v{Configuration["version"]}"; // example: v0.6.1 + docsUrl = $"{Configuration["urls:docs"]}"; + blogUrl = $"{Configuration["urls:blog"]}"; + githubUrl = $"{Configuration["urls:github"]}"; + twitterUrl = $"{Configuration["urls:twitter"]}"; + linkedInUrl = $"{Configuration["urls:linkedin"]}"; + githubIssuesUrl = $"{Configuration["urls:github_issues"]}"; + githubDiscussionsUrl = $"{Configuration["urls:github_discussions"]}"; + stackoverflowUrl = $"{Configuration["urls:stackoverflow"]}"; + + base.OnInitialized(); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Layout/EmptyLayout.razor.css b/BlazorBootstrap.Demo.RCL/Components/Layout/EmptyLayout.razor.css new file mode 100644 index 000000000..9b7d3744b --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Layout/EmptyLayout.razor.css @@ -0,0 +1,3 @@ +main, .main { + height: auto !important; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Layout/MainLayout.razor b/BlazorBootstrap.Demo.RCL/Components/Layout/MainLayout.razor new file mode 100644 index 000000000..ab928068b --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Layout/MainLayout.razor @@ -0,0 +1,73 @@ +@namespace BlazorBootstrap.Demo.RCL + +@inherits LayoutComponentBase + +
+ + + +
+ + +
+
+ + + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Layout/MainLayout.razor.cs b/BlazorBootstrap.Demo.RCL/Components/Layout/MainLayout.razor.cs new file mode 100644 index 000000000..abc2268c9 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Layout/MainLayout.razor.cs @@ -0,0 +1,106 @@ +namespace BlazorBootstrap.Demo.RCL; + +public partial class MainLayout : LayoutComponentBase +{ + private string version = default!; + private string docsUrl = default!; + private string blogUrl = default!; + private string githubUrl = default!; + private string twitterUrl = default!; + private string linkedInUrl = default!; + private string githubIssuesUrl = default!; + private string githubDiscussionsUrl = default!; + private string stackoverflowUrl = default!; + + private Sidebar sidebar = default!; + private IEnumerable navItems = default!; + + [Inject] public IConfiguration Configuration { get; set; } = default!; + + protected override void OnInitialized() + { + version = $"v{Configuration["version"]}"; // example: v0.6.1 + docsUrl = $"{Configuration["urls:docs"]}"; + blogUrl = $"{Configuration["urls:blog"]}"; + githubUrl = $"{Configuration["urls:github"]}"; + twitterUrl = $"{Configuration["urls:twitter"]}"; + linkedInUrl = $"{Configuration["urls:linkedin"]}"; + githubIssuesUrl = $"{Configuration["urls:github_issues"]}"; + githubDiscussionsUrl = $"{Configuration["urls:github_discussions"]}"; + stackoverflowUrl = $"{Configuration["urls:stackoverflow"]}"; + base.OnInitialized(); + } + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new (){ Id = "1", Text = "Getting Started", Href = "/getting-started", IconName = IconName.HouseDoorFill }, + + new (){ Id = "2", Text = "Layout", IconName = IconName.LayoutTextWindowReverse, IconColor = IconColor.Success }, + new (){ Id = "200", Text = "Blazor WebAssembly", Href = "/layout-setup/blazor-webassembly", IconName = IconName.BrowserEdge, ParentId = "2" }, + new (){ Id = "201", Text = "Blazor Server", Href = "/layout-setup/blazor-server", IconName = IconName.Server, ParentId = "2" }, + + new (){ Id = "3", Text = "Content", IconName = IconName.BodyText, IconColor = IconColor.Primary }, + new (){ Id = "300", Text = "Icons", Href = "/icons", IconName = IconName.PersonSquare, ParentId = "3" }, + + new (){ Id = "4", Text = "Forms", IconName = IconName.InputCursorText, IconColor = IconColor.Success }, + new (){ Id = "400", Text = "Auto Complete", Href = "/autocomplete", IconName = IconName.InputCursorText, ParentId = "4" }, + new (){ Id = "401", Text = "Currency Input", Href = "/form/currency-input", IconName = IconName.CurrencyDollar, ParentId = "4" }, + new (){ Id = "402", Text = "Date Input", Href = "/form/date-input", IconName = IconName.CalendarDate, ParentId = "4" }, + new (){ Id = "403", Text = "Number Input", Href = "/form/number-input", IconName = IconName.InputCursor, ParentId = "4" }, + new (){ Id = "404", Text = "Range Input", Href = "/form/range-input", IconName = IconName.Sliders, ParentId = "4" }, + new (){ Id = "405", Text = "Switch", Href = "/form/switch", IconName = IconName.ToggleOn, ParentId = "4" }, + new (){ Id = "406", Text = "Time Input", Href = "/form/time-input", IconName = IconName.ClockFill, ParentId = "4" }, + + new (){ Id = "5", Text = "Components", IconName = IconName.GearFill, IconColor = IconColor.Danger }, + new (){ Id = "500", Text = "Accordion", Href = "/accordion", IconName = IconName.ChevronBarExpand, ParentId = "5" }, + new (){ Id = "501", Text = "Alerts", Href = "/alerts", IconName = IconName.CheckCircleFill, ParentId = "5" }, + new (){ Id = "502", Text = "Badge", Href = "/badge", IconName = IconName.AppIndicator, ParentId = "5" }, + new (){ Id = "503", Text = "Breadcrumb", Href = "/breadcrumb", IconName = IconName.SegmentedNav, ParentId = "5" }, + new (){ Id = "504", Text = "Buttons", Href = "/buttons", IconName = IconName.ToggleOn, ParentId = "5" }, + new (){ Id = "505", Text = "Callout", Href = "/callout", IconName = IconName.StickyFill, ParentId = "5" }, + new (){ Id = "506", Text = "Card", Href = "/card", IconName = IconName.CardHeading, ParentId = "5" }, + new (){ Id = "507", Text = "Charts", Href = "/charts", IconName = IconName.BarChartLineFill, ParentId = "5", Match = NavLinkMatch.All }, + new (){ Id = "508", Text = "Collapse", Href = "/collapse", IconName = IconName.ArrowsCollapse, ParentId = "5" }, + new (){ Id = "509", Text = "Confirm Dialog", Href = "/confirm-dialog", IconName = IconName.QuestionDiamondFill, ParentId = "5" }, + new (){ Id = "510", Text = "Dropdown", Href = "/dropdown", IconName = IconName.MenuButtonWideFill, ParentId = "5" }, + new (){ Id = "511", Text = "Grid", Href = "/grid", IconName = IconName.Grid, ParentId = "5" }, + new (){ Id = "512", Text = "Modals", Href = "/modals", IconName = IconName.WindowStack, ParentId = "5" }, + new (){ Id = "513", Text = "Offcanvas", Href = "/offcanvas", IconName = IconName.LayoutSidebarReverse, ParentId = "5" }, + new (){ Id = "514", Text = "Pagination", Href = "/pagination", IconName = IconName.ThreeDots, ParentId = "5" }, + new (){ Id = "515", Text = "PDF Viewer", Href = "/pdf-viewer", IconName = IconName.FilePdfFill, ParentId = "5" }, + new (){ Id = "516", Text = "Placeholders", Href = "/placeholders", IconName = IconName.ColumnsGap, ParentId = "5" }, + new (){ Id = "517", Text = "Preload", Href = "/preload", IconName = IconName.ArrowClockwise, ParentId = "5" }, + new (){ Id = "518", Text = "Progress", Href = "/progress", IconName = IconName.UsbC, ParentId = "5" }, + new (){ Id = "519", Text = "Ribbon", Href = "/ribbon", IconName = IconName.WindowStack, ParentId = "5" }, + new (){ Id = "520", Text = "Script Loader", Href = "/script-loader", IconName = IconName.CodeSlash, ParentId = "5" }, + new (){ Id = "521", Text = "Sidebar", Href = "/sidebar", IconName = IconName.LayoutSidebar, ParentId = "5" }, + new (){ Id = "522", Text = "Sidebar 2", Href = "/sidebar2", IconName = IconName.ListNested, ParentId = "5" }, + new (){ Id = "523", Text = "Sortable List", Href = "/sortable-list", IconName = IconName.ArrowsMove, ParentId = "5" }, + new (){ Id = "524", Text = "Spinner", Href = "/spinners", IconName = IconName.ArrowRepeat, ParentId = "5" }, + new (){ Id = "525", Text = "Tabs", Href = "/tabs", IconName = IconName.WindowPlus, ParentId = "5" }, + new (){ Id = "526", Text = "Toasts", Href = "/toasts", IconName = IconName.ExclamationTriangleFill, ParentId = "5" }, + new (){ Id = "527", Text = "Tooltips", Href = "/tooltips", IconName = IconName.ChatSquareDotsFill, ParentId = "5" }, + + new (){ Id = "6", Text = "Data Visualization", IconName = IconName.BarChartFill, IconColor = IconColor.Warning }, + new (){ Id = "600", Text = "Bar Chart", Href = "/charts/bar-chart", IconName = IconName.BarChartFill, ParentId = "6", Match = NavLinkMatch.All }, + new (){ Id = "601", Text = "Doughnut Chart", Href = "/charts/doughnut-chart", IconName = IconName.CircleFill, ParentId = "6", Match = NavLinkMatch.All }, + new (){ Id = "602", Text = "Line Chart", Href = "/charts/line-chart", IconName = IconName.GraphUp, ParentId = "6", Match = NavLinkMatch.All }, + new (){ Id = "603", Text = "Pie Chart", Href = "/charts/pie-chart", IconName = IconName.PieChartFill, ParentId = "6", Match = NavLinkMatch.All }, + + new(){ Id = "7", Text = "Services", IconName = IconName.WrenchAdjustableCircleFill, IconColor = IconColor.Success }, + new (){ Id = "700", Text = "Modal Service", Href = "/modal-service", IconName = IconName.WindowStack, ParentId = "7" }, + }; + + return navItems; + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Layout/MainLayout.razor.css b/BlazorBootstrap.Demo.RCL/Components/Layout/MainLayout.razor.css new file mode 100644 index 000000000..710ea05e1 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Layout/MainLayout.razor.css @@ -0,0 +1,73 @@ +.page { + position: relative; + display: flex; + flex-direction: column; +} + +.main { + flex: 1; + overflow-x: hidden; + /*width: 100%;*/ +} + +.sidebar { + background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%); +} + +.top-row { + background-color: #f7f7f7; + border-bottom: 1px solid #d6d5d5; + justify-content: flex-end; + height: 3.5rem; + display: flex; + align-items: center; +} + + .top-row ::deep a, .top-row .btn-link { + white-space: nowrap; + margin-left: 1.5rem; + } + + .top-row a:first-child { + overflow: hidden; + text-overflow: ellipsis; + } + +@media (max-width: 640.98px) { + .top-row:not(.auth) { + display: none; + } + + .top-row.auth { + justify-content: space-between; + } + + .top-row a, .top-row .btn-link { + margin-left: 0; + } +} + +@media (min-width: 641px) { + .page { + flex-direction: row; + } + + .sidebar { + width: 260px !important; + height: 100vh !important; + overflow-y: auto !important; + position: sticky !important; + top: 0 !important; + } + + .top-row { + position: sticky; + top: 0; + z-index: 1; + } + + .main > div { + padding-left: 2rem !important; + padding-right: 1.5rem !important; + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/AccordionDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/AccordionDocumentation.razor new file mode 100644 index 000000000..5f76e99fe --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/AccordionDocumentation.razor @@ -0,0 +1,111 @@ +@page "/accordion" + +@title + + + +

Blazor Accordion

+
+ Build vertically collapsing accordions in combination with our Collapse component. +
+ + + + +
+ The Accordion component uses the Collapse component internally to make it collapsible. +
+ + + The animation effect of this component is dependent on the prefers-reduced-motion media query.
+ See the reduced motion section of our accessibility documentation. +
+ + +
+ Click the accordions below to expand/collapse the accordion content. +
+ + + +
+ To customize the accordion title, use TitleTemplate, as shown in the below example. +
+ + + +
+ Set the Flush parameter to true to remove borders and rounded corners to render accordions edge-to-edge with their parent container. +
+ + + +
+ Set the IsActive parameter to true to keep the accordion item open by default. +
+ + + +
+ Set the AlwaysOpen parameter to true to keep accordion items open when another item is opened. +
+ + + +
+ You can show and hide individual accordion items in several ways. +
    +
  • To show an accordion item, use predefined methods ShowFirstAccordionItemAsync, ShowLastAccordionItemAsync, ShowAccordionItemByNameAsync, and ShowAccordionItemByIndexAsync.
  • +
  • To hide an accordion item, use predefined methods HideFirstAccordionItemAsync, HideLastAccordionItemAsync, HideAccordionItemByNameAsync, and HideAccordionItemByIndexAsync.
  • +
+
+ + + +
+ When the AlwaysOpen parameter is set to true, you can show all accordion items simultaneously using the ShowAllAccordionItemsAsync method. + The HideAllAccordionItemsAsync method will hide all accordion items, regardless of the value of AlwaysOpen. +
+ + + +
+ Blazor Bootstrap Accordion component exposes a few events for hooking into accordion functionality. + + + + + + + + + + + + + + + + + + + + + + + + + +
Event NameDescription
OnHidingThis event is fired immediately when the hide method has been called.
OnHiddenThis event is fired when a accordion item has been hidden from the user (will wait for CSS transitions to complete).
OnShowingThis event fires immediately when the show method is called.
OnShownThis event is fired when a accordion item has been made visible to the user (will wait for CSS transitions to complete).
+ + If no accordion item is active, then the OnHiding and OnHidden events will not be fired. + +
+ + +@code { + private string pageUrl = "/accordion"; + private string title = "Blazor Accordion Component"; + private string description = "Build vertically collapsing accordions in combination with our Collapse component."; + private string imageUrl = "https://i.imgur.com/g4zpMXp.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_01_Examples.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_01_Examples.razor new file mode 100644 index 000000000..0303a22e2 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_01_Examples.razor @@ -0,0 +1,17 @@ + + + + This is the first item's accordion body. It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the second item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the third item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_02_Title_with_Icon.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_02_Title_with_Icon.razor new file mode 100644 index 000000000..743460343 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_02_Title_with_Icon.razor @@ -0,0 +1,26 @@ + + + + Accordion Item #1 + + + This is the first item's accordion body. It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + Accordion Item #2 + + + This is the second item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + Accordion Item #3 + + + This is the third item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_03_Flush.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_03_Flush.razor new file mode 100644 index 000000000..b75355408 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_03_Flush.razor @@ -0,0 +1,17 @@ + + + + This is the first item's accordion body. It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the second item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the third item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_04_Set_Default_Active.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_04_Set_Default_Active.razor new file mode 100644 index 000000000..1f0dd3f06 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_04_Set_Default_Active.razor @@ -0,0 +1,17 @@ + + + + This is the first item's accordion body. It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the second item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the third item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_05_Always_Open.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_05_Always_Open.razor new file mode 100644 index 000000000..fdcbf5994 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_05_Always_Open.razor @@ -0,0 +1,17 @@ + + + + This is the first item's accordion body. It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the second item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the third item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_06_Show_Hide_Individual_AccordionItems.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_06_Show_Hide_Individual_AccordionItems.razor new file mode 100644 index 000000000..4af9addc6 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_06_Show_Hide_Individual_AccordionItems.razor @@ -0,0 +1,67 @@ + + + + This is the first item's accordion body. It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the second item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the third item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the fourth item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the fifth item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the sixth item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + +

Show

+ + + + + + + + +

Hide

+ + + + + + + + +@code { + private Accordion accordion1 = default!; + + private async Task ShowFirstAccordionItemAsync() => await accordion1.ShowFirstAccordionItemAsync(); + private async Task ShowSecondAccordionItemAsync() => await accordion1.ShowAccordionItemByIndexAsync(1); + private async Task ShowThirdAccordionItemAsync() => await accordion1.ShowAccordionItemByIndexAsync(2); + private async Task ShowProductsAccordionItemAsync() => await accordion1.ShowAccordionItemByNameAsync("Products"); + private async Task ShowFaqsAccordionItemAsync() => await accordion1.ShowAccordionItemByNameAsync("FAQ"); + private async Task ShowLastAccordionItemAsync() => await accordion1.ShowLastAccordionItemAsync(); + private async Task HideFirstAccordionItemAsync() => await accordion1.HideFirstAccordionItemAsync(); + private async Task HideSecondAccordionItemAsync() => await accordion1.HideAccordionItemByIndexAsync(1); + private async Task HideThirdAccordionItemAsync() => await accordion1.HideAccordionItemByIndexAsync(2); + private async Task HideProductsAccordionItemAsync() => await accordion1.HideAccordionItemByNameAsync("Products"); + private async Task HideFaqsAccordionItemAsync() => await accordion1.HideAccordionItemByNameAsync("FAQ"); + private async Task HideLastAccordionItemAsync() => await accordion1.HideLastAccordionItemAsync(); +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_07_Show_Hide_All_AccordionItems.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_07_Show_Hide_All_AccordionItems.razor new file mode 100644 index 000000000..9a4400721 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_07_Show_Hide_All_AccordionItems.razor @@ -0,0 +1,27 @@ + + + + This is the first item's accordion body. It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the second item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the third item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + + + +@code { + private Accordion accordion1 = default!; + + private Task ShowAllAccordionItemsAsync() => accordion1.ShowAllAccordionItemsAsync(); + private Task HideAllAccordionItemsAsync() => accordion1.HideAllAccordionItemsAsync(); +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_08_Events.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_08_Events.razor new file mode 100644 index 000000000..e6ecffb83 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Accordion/Accordion_Demo_08_Events.razor @@ -0,0 +1,55 @@ + + + + This is the first item's accordion body. It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the second item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the third item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + +@code { + private Accordion accordion1 = default!; + + [Inject] ToastService ToastService { get; set; } = default!; + + private void OnShowingAsync(AccordionEventArgs args) + { + ToastService.Notify(new ToastMessage( + type: ToastType.Primary, + message: $"Event Name: Showing, AccordionItemName: {args.Name}, AccordionItemTitle: {args.Title}")); + } + + private void OnShownAsync(AccordionEventArgs args) + { + ToastService.Notify(new ToastMessage( + type: ToastType.Primary, + message: $"Event Name: OnShown, AccordionItemName: {args.Name}, AccordionItemTitle: {args.Title}")); + } + + private void OnHidingAsync(AccordionEventArgs args) + { + ToastService.Notify(new ToastMessage( + type: ToastType.Primary, + message: $"Event Name: OnHiding, AccordionItemName: {args.Name}, AccordionItemTitle: {args.Title}")); + } + + private void OnHiddenAsync(AccordionEventArgs args) + { + ToastService.Notify(new ToastMessage( + type: ToastType.Primary, + message: $"Event Name: OnHidden, AccordionItemName: {args.Name}, AccordionItemTitle: {args.Title}")); + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/AlertDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/AlertDocumentation.razor new file mode 100644 index 000000000..fc708ffca --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/AlertDocumentation.razor @@ -0,0 +1,44 @@ +@page "/alerts" + +@title + + + +

Blazor Alerts

+
Provide contextual feedback messages for typical user actions with a handful of available and flexible alert messages.
+ + + + +
Alerts are available for any length of text, as well as an optional close button. For proper styling, use one of the eight colors.
+ + + +
Alerts can also contain additional HTML elements like headings, paragraphs and dividers.
+ + + +
Similarly, you can use Bootstrap Icons to create alerts with icons.
+ + + +
1. Using the Dismissable="true", it’s possible to dismiss any alert inline.
+ + +
2. Manually we can close an alert with button click.
+ + + + When an alert is dismissed, the element is completely removed from the page structure. If a keyboard user dismisses the alert using the close button, their focus will suddenly be lost and, depending on the browser, reset to the start of the page/document. + For this reason, we recommend subscribing to the OnClosed callback event and programmatically sets focus to the most appropriate location on the page. + + + + + +@code{ + private string pageUrl = "/alerts"; + private string title = "Blazor Alert Component"; + private string description = "Provide contextual feedback messages for typical user actions with the handful of available and flexible Blazor Bootstrap alert messages."; + private string imageUrl = "https://i.imgur.com/FGgEMp6.jpg"; +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/Alert_Demo_01_Examples.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/Alert_Demo_01_Examples.razor new file mode 100644 index 000000000..1b4e5386a --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/Alert_Demo_01_Examples.razor @@ -0,0 +1,8 @@ + A simple primary alert - check it out! + A simple secondary alert - check it out! + A simple success alert - check it out! + A simple danger alert - check it out! + A simple warning alert - check it out! + A simple info alert - check it out! + A simple light alert - check it out! + A simple dark alert - check it out! \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/Alert_Demo_02_Additional_Content.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/Alert_Demo_02_Additional_Content.razor new file mode 100644 index 000000000..ba5c22c64 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/Alert_Demo_02_Additional_Content.razor @@ -0,0 +1,6 @@ + +

Well done!

+

Aww yeah, you successfully read this important alert message. This example text is going to run a bit longer so that you can see how spacing within an alert works with this kind of content.

+
+

Whenever you need to, be sure to use margin utilities to keep things nice and tidy.

+
\ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/Alert_Demo_03_Icons.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/Alert_Demo_03_Icons.razor new file mode 100644 index 000000000..ac84b153b --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/Alert_Demo_03_Icons.razor @@ -0,0 +1,4 @@ + An example alert with an icon + A simple success alert with an icon + A simple danger alert with an icon + A simple warning alert with an icon \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/Alert_Demo_04_Dismissing_A.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/Alert_Demo_04_Dismissing_A.razor new file mode 100644 index 000000000..4d7678c8d --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/Alert_Demo_04_Dismissing_A.razor @@ -0,0 +1 @@ + Holy guacamole! You should check in on some of those fields below. \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/Alert_Demo_04_Dismissing_B.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/Alert_Demo_04_Dismissing_B.razor new file mode 100644 index 000000000..a3b750be8 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/Alert_Demo_04_Dismissing_B.razor @@ -0,0 +1,8 @@ + + Holy guacamole! You should check in on some of those fields below. + + +@code { + Alert warningAlert = default!; + private async Task CloseAlert() => await warningAlert.CloseAsync(); +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/Alert_Demo_05_Switch_Alert_Type_Dynamically.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/Alert_Demo_05_Switch_Alert_Type_Dynamically.razor new file mode 100644 index 000000000..b354a3680 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Alerts/Alert_Demo_05_Switch_Alert_Type_Dynamically.razor @@ -0,0 +1,33 @@ + @alertMessage + + + + + +@code { + // alert + AlertColor alertColor = AlertColor.Primary; + IconName alertIconName = IconName.CheckCircleFill; + string alertMessage = "A simple alert - check it out!"; + + private void ShowSuccessAlert() + { + alertColor = AlertColor.Success; + alertIconName = IconName.CheckCircleFill; + alertMessage = "A simple success alert - check it out!"; + } + + private void ShowDangerAlert() + { + alertColor = AlertColor.Danger; + alertIconName = IconName.ExclamationTriangleFill; + alertMessage = "A simple danger alert - check it out!"; + } + + private void ShowInfoAlert() + { + alertColor = AlertColor.Info; + alertIconName = IconName.ExclamationCircleFill; + alertMessage = "A simple info alert - check it out!"; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Badge/BadgeDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Badge/BadgeDocumentation.razor new file mode 100644 index 000000000..925c0b505 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Badge/BadgeDocumentation.razor @@ -0,0 +1,61 @@ +@page "/badge" + +@title + + + +

Blazor Badge

+
+ The Blazor Bootstrap Badge component shows the small count and labels. +
+ + + + +
+ Badges scale to match the size of the immediate parent element by using relative font sizing and em units. + As of now, badges no longer have focus or hover styles for links. +
+ + + + + + Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. + Ensure that information denoted by the color is either obvious from the content itself (e.g., the visible text) or is included through alternative means, such as additional text hidden with the VisuallyHiddenText parameter. + + + +
+ Use the IndicatorType parameter to make badges more rounded with a larger border-radius. +
+ + + +
+ Badges can be used as part of links or buttons to provide a counter. +
+ +
+

Note that depending on how they are used, badges may be confusing for users of screen readers and similar assistive technologies. While the styling of badges provides a visual cue as to their purpose, these users will simply be presented with the content of the badge. Depending on the specific situation, these badges may seem like random additional words or numbers at the end of a sentence, link, or button.

+

Unless the context is clear (as with the “Notifications” example, where it is understood that the “4” is the number of notifications), consider including additional context with a visually hidden piece of additional text.

+
+ + +
+ Use Position and Placement parameters to position it in the corner of a link or button. +
+ + + +
+ You can also replace the badge with a generic indicator without the count. +
+ + +@code { + private string pageUrl = "/badge"; + private string title = "Blazor Badge Component"; + private string description = "The Blazor Bootstrap Badge component shows the small count and labels."; + private string imageUrl = "https://i.imgur.com/ux0sTs9.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Badge/Badge_Demo_01_Examples.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Badge/Badge_Demo_01_Examples.razor new file mode 100644 index 000000000..c3c7ed3fb --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Badge/Badge_Demo_01_Examples.razor @@ -0,0 +1,6 @@ +

Example heading New

+

Example heading New

+

Example heading New

+

Example heading New

+
Example heading New
+
Example heading New
\ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Badge/Badge_Demo_02_Background_Colors.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Badge/Badge_Demo_02_Background_Colors.razor new file mode 100644 index 000000000..358829ca3 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Badge/Badge_Demo_02_Background_Colors.razor @@ -0,0 +1,21 @@ +
+ Primary + Secondary + Success + Danger + Warning + Info + Light + Dark +
+ +
+ Primary + Secondary + Success + Danger + Warning + Info + Light + Dark +
diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Badge/Badge_Demo_03_Pill_Badges.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Badge/Badge_Demo_03_Pill_Badges.razor new file mode 100644 index 000000000..6ce332e45 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Badge/Badge_Demo_03_Pill_Badges.razor @@ -0,0 +1,22 @@ +
+ Primary + Secondary + Success + Danger + Warning + Info + Light + Dark +
+ +
+ Primary + Secondary + Success + Danger + Warning + Info + Light + Dark + +
\ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Badge/Badge_Demo_04_Buttons.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Badge/Badge_Demo_04_Buttons.razor new file mode 100644 index 000000000..81087ae8c --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Badge/Badge_Demo_04_Buttons.razor @@ -0,0 +1,16 @@ +
+ + +
+
+ + +
diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Badge/Badge_Demo_05_Positioned.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Badge/Badge_Demo_05_Positioned.razor new file mode 100644 index 000000000..cfcc33338 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Badge/Badge_Demo_05_Positioned.razor @@ -0,0 +1,84 @@ +
+ + + + + +
+
+ + + + + +
+
+ + + + + +
diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Badge/Badge_Demo_06_Generic_Indicator.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Badge/Badge_Demo_06_Generic_Indicator.razor new file mode 100644 index 000000000..8973c8a74 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Badge/Badge_Demo_06_Generic_Indicator.razor @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Breadcrumb/BreadcrumbDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Breadcrumb/BreadcrumbDocumentation.razor new file mode 100644 index 000000000..4c07d3e26 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Breadcrumb/BreadcrumbDocumentation.razor @@ -0,0 +1,28 @@ +@page "/breadcrumb" + +@title + + + +

Blazor Breadcrumb

+
+ Indicate the current page's location within a navigational hierarchy that automatically adds separators. +
+ + + + + + + + + + + + +@code { + private string pageUrl = "/breadcrumb"; + private string title = "Blazor Breadcrumb Component"; + private string description = "Indicate the current page's location within a navigational hierarchy that automatically adds separators."; + private string imageUrl = "https://i.imgur.com/hO90HoC.jpg"; +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Breadcrumb/Breadcrumb_Demo_01_Examples.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Breadcrumb/Breadcrumb_Demo_01_Examples.razor new file mode 100644 index 000000000..4b70fdca7 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Breadcrumb/Breadcrumb_Demo_01_Examples.razor @@ -0,0 +1,23 @@ + + + +@code { + private List? navItems1; + private List? navItems2; + + protected override void OnInitialized() + { + navItems1 = new List + { + new BreadcrumbItem{ Text = "Home", Href ="/" }, + new BreadcrumbItem{ Text = "Breadcrumb", IsCurrentPage = true } + }; + + navItems2 = new List + { + new BreadcrumbItem{ Text = "Home", Href ="/" }, + new BreadcrumbItem{ Text = "Docs", Href ="/docs" }, + new BreadcrumbItem{ Text = "Breadcrumb", IsCurrentPage = true } + }; + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Breadcrumb/Breadcrumb_Demo_02_Dividers.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Breadcrumb/Breadcrumb_Demo_02_Dividers.razor new file mode 100644 index 000000000..1f2891b0c --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Breadcrumb/Breadcrumb_Demo_02_Dividers.razor @@ -0,0 +1,15 @@ + + +@code { + private List? navItems; + + protected override void OnInitialized() + { + navItems = new List + { + new BreadcrumbItem{ Text = "Home", Href ="/" }, + new BreadcrumbItem{ Text = "Docs", Href ="/docs" }, + new BreadcrumbItem{ Text = "Breadcrumb", IsCurrentPage = true } + }; + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Breadcrumb/Breadcrumb_Demo_03_Embedded_SVG.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Breadcrumb/Breadcrumb_Demo_03_Embedded_SVG.razor new file mode 100644 index 000000000..35ded4e88 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Breadcrumb/Breadcrumb_Demo_03_Embedded_SVG.razor @@ -0,0 +1,15 @@ + + +@code { + private List? navItems; + + protected override void OnInitialized() + { + navItems = new List + { + new BreadcrumbItem{ Text = "Home", Href ="/" }, + new BreadcrumbItem{ Text = "Docs", Href ="/docs" }, + new BreadcrumbItem{ Text = "Breadcrumb", IsCurrentPage = true } + }; + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/ButtonDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/ButtonDocumentation.razor new file mode 100644 index 000000000..81ce6c7b5 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/ButtonDocumentation.razor @@ -0,0 +1,94 @@ +@page "/buttons" + +@title + + + +

Blazor Buttons

+
+ Use Blazor Bootstrap button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more. +
+ + + + +
Bootstrap includes several predefined button styles, each serving its own semantic purpose, with a few extras thrown in for more control.
+ + + + + + + + + + Some of the button styles use a relatively light foreground color, and should only be used on a dark background in order to have sufficient contrast. + + + +
Fancy larger or smaller buttons? Add Size="Size.Large" or Size="Size.Small" for additional sizes.
+ + + + + +
Make buttons look inactive by adding the Disabled="true" boolean parameter to any Button component. Disabled buttons have pointer-events: none applied to, preventing hover and active states from triggering.
+ + + Disabled buttons using the Type="ButtonType.Link" parameter behave a bit different. + + + + + + + + + + + + + + + + + + + +
Use spinners within buttons to indicate an action is currently processing or taking place. You may also swap the text out of the spinner element and utilize button text as needed.
+ + + + + + +
+ Hover over the buttons below to see the four tooltips directions: top, right, bottom, and left. +
+ + + + + + +
+ Blazor Bootstrap includes several predefined tooltip styles, each serving its own semantic purpose. + The TooltipColor parameter can be used to customize the color of the tooltip. +
+ + + + Support for HTML tooltips is not available at this moment. + + + + + + + +@code { + private string pageUrl = "/buttons"; + private string title = "Blazor Button Component"; + private string description = "Use Blazor Bootstrap button styles for actions in forms, dialogs, and more with support for multiple sizes, states, etc."; + private string imageUrl = "https://i.imgur.com/Ne7FJ5H.jpg"; +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_01_Examples.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_01_Examples.razor new file mode 100644 index 000000000..a2005c93d --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_01_Examples.razor @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_02_Button_Tags.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_02_Button_Tags.razor new file mode 100644 index 000000000..34625fe8d --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_02_Button_Tags.razor @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_03_Outline_Buttons.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_03_Outline_Buttons.razor new file mode 100644 index 000000000..5c66b6a3a --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_03_Outline_Buttons.razor @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_04_Sizes_A.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_04_Sizes_A.razor new file mode 100644 index 000000000..b2559ce9d --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_04_Sizes_A.razor @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_04_Sizes_B.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_04_Sizes_B.razor new file mode 100644 index 000000000..8a6d60014 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_04_Sizes_B.razor @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_04_Sizes_C.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_04_Sizes_C.razor new file mode 100644 index 000000000..3adf4aa33 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_04_Sizes_C.razor @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_05_Disabled_State_A.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_05_Disabled_State_A.razor new file mode 100644 index 000000000..fab821577 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_05_Disabled_State_A.razor @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_05_Disabled_State_B.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_05_Disabled_State_B.razor new file mode 100644 index 000000000..b874a843d --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_05_Disabled_State_B.razor @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_06_Block_Buttons_A.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_06_Block_Buttons_A.razor new file mode 100644 index 000000000..54e5070c9 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_06_Block_Buttons_A.razor @@ -0,0 +1,4 @@ +
+ + +
\ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_06_Block_Buttons_B.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_06_Block_Buttons_B.razor new file mode 100644 index 000000000..870826e2b --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_06_Block_Buttons_B.razor @@ -0,0 +1,4 @@ +
+ + +
\ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_06_Block_Buttons_C.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_06_Block_Buttons_C.razor new file mode 100644 index 000000000..52ffc1edf --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_06_Block_Buttons_C.razor @@ -0,0 +1,4 @@ +
+ + +
\ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_06_Block_Buttons_D.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_06_Block_Buttons_D.razor new file mode 100644 index 000000000..9e69a359f --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_06_Block_Buttons_D.razor @@ -0,0 +1,4 @@ +
+ + +
\ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_07_Toggle_States_A.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_07_Toggle_States_A.razor new file mode 100644 index 000000000..d40e7889a --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_07_Toggle_States_A.razor @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_07_Toggle_States_B.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_07_Toggle_States_B.razor new file mode 100644 index 000000000..1f03616ec --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_07_Toggle_States_B.razor @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_08_Loading_Spinner.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_08_Loading_Spinner.razor new file mode 100644 index 000000000..333e5a846 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_08_Loading_Spinner.razor @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_08_Show_Hide_Loading_Spinner.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_08_Show_Hide_Loading_Spinner.razor new file mode 100644 index 000000000..4033e5eb5 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_08_Show_Hide_Loading_Spinner.razor @@ -0,0 +1,63 @@ + + + + + +@code { + private Button saveButton1 = default!, saveButton2 = default!, saveButton3 = default!, saveButton4 = default!, saveButton5 = default!; + + private async Task OnSave1Click() + { + saveButton1.ShowLoading("Loading..."); + + await Task.Delay(3000); // API call + + saveButton1.HideLoading(); + } + + private async Task OnSave2Click() + { + saveButton2.ShowLoading("Loading..."); + + await Task.Delay(3000); // API call + + saveButton2.HideLoading(); + } + + private async Task OnSave3Click() + { + saveButton3.ShowLoading("Loading..."); + + await Task.Delay(3000); // API call + + saveButton3.HideLoading(); + } + + private async Task OnSave4Click() + { + saveButton4.ShowLoading("Loading..."); + + await Task.Delay(3000); // API call + + saveButton4.HideLoading(); + } + + private async Task OnSave5Click() + { + saveButton5.ShowLoading("Loading..."); + + await Task.Delay(3000); // API call + + saveButton5.HideLoading(); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_09_A_Show_Tooltip.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_09_A_Show_Tooltip.razor new file mode 100644 index 000000000..3f0b3f667 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_09_A_Show_Tooltip.razor @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_09_B_Dynamically_update_the_tooltip_text.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_09_B_Dynamically_update_the_tooltip_text.razor new file mode 100644 index 000000000..60ad8d261 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_09_B_Dynamically_update_the_tooltip_text.razor @@ -0,0 +1,11 @@ +
+ +
+ + + +@code { + private string text = "Tooltip text"; + + private void ChangeTooltip() => text = $"Updated {DateTime.Now.ToLongTimeString()}"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_09_C_Tooltip_Color.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_09_C_Tooltip_Color.razor new file mode 100644 index 000000000..1a4fc6cc3 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_09_C_Tooltip_Color.razor @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_10_Click_Event.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_10_Click_Event.razor new file mode 100644 index 000000000..bdd786abe --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_10_Click_Event.razor @@ -0,0 +1,8 @@ + + +@code { + protected void OnClick(EventArgs args) + { + Console.WriteLine("click event"); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_11_Double_Click_Event.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_11_Double_Click_Event.razor new file mode 100644 index 000000000..baff73b68 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_11_Double_Click_Event.razor @@ -0,0 +1,8 @@ + + +@code { + protected void OnDoubleClick(EventArgs args) + { + Console.WriteLine("double click event"); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_12_Click_Event_With_Args.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_12_Click_Event_With_Args.razor new file mode 100644 index 000000000..4270c38ef --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_12_Click_Event_With_Args.razor @@ -0,0 +1,10 @@ + + +@code { + public string message = "Test message"; + + protected void OnClickWithArgs(EventArgs args, string message) + { + Console.WriteLine($"message: {message}"); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_13_Disable_Enable_Dynamically.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_13_Disable_Enable_Dynamically.razor new file mode 100644 index 000000000..d3dd74fba --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Buttons/Button_Demo_13_Disable_Enable_Dynamically.razor @@ -0,0 +1,18 @@ + + + + + + + +@code +{ + bool disableButton = true; + string tooltip = ""; + + public void SwapDisable() + { + disableButton = !disableButton; + tooltip = $"Updated at {DateTime.Now}"; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Callout/CalloutDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Callout/CalloutDocumentation.razor new file mode 100644 index 000000000..56694fec9 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Callout/CalloutDocumentation.razor @@ -0,0 +1,31 @@ +@page "/callout" + +@title + + + +

Blazor Callout

+
+ Blazor Bootstrap callout component provides presentation of content in a visually distinct manner. Includes a heading, icon and typically text-based content. +
+ + + + + + + + + + + + + + + +@code { + private string pageUrl = "/callout"; + private string title = "Blazor Callout Component"; + private string description = "Blazor Bootstrap callout component provides content presentation in a visually distinct manner."; + private string imageUrl = "https://i.imgur.com/y2jI9ix.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Callout/Callout_Demo_01_Examples.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Callout/Callout_Demo_01_Examples.razor new file mode 100644 index 000000000..8b3683b58 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Callout/Callout_Demo_01_Examples.razor @@ -0,0 +1,23 @@ + + This is a default callout. Example text to show it in action. See callout documentation. + + + + This is an danger callout. Example text to show it in action. See callout documentation. + + + + This is an warning callout. Example text to show it in action. See callout documentation. + + + + This is an info callout. Example text to show it in action. See callout documentation. + + + + This is an tip callout. Example text to show it in action. See callout documentation. + + + + This is an success callout. Example text to show it in action. See callout documentation. + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Callout/Callout_Demo_02_Change_Heading.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Callout/Callout_Demo_02_Change_Heading.razor new file mode 100644 index 000000000..b70230f44 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Callout/Callout_Demo_02_Change_Heading.razor @@ -0,0 +1,19 @@ + + This is a default callout. Example text to show it in action. See callout documentation. + + + + This is an danger callout. Example text to show it in action. See callout documentation. + + + + This is an warning callout. Example text to show it in action. See callout documentation. + + + + This is an info callout. Example text to show it in action. See callout documentation. + + + + This is an tip callout. Example text to show it in action. See callout documentation. + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Callout/Callout_Demo_03_Large_Text.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Callout/Callout_Demo_03_Large_Text.razor new file mode 100644 index 000000000..27cdf4a03 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Callout/Callout_Demo_03_Large_Text.razor @@ -0,0 +1,24 @@ + +

Conveying meaning to assistive technologies

+

Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .visually-hidden class.

+
+ + +

Conveying meaning to assistive technologies

+

Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .visually-hidden class.

+
+ + +

Conveying meaning to assistive technologies

+

Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .visually-hidden class.

+
+ + +

Conveying meaning to assistive technologies

+

Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .visually-hidden class.

+
+ + +

Conveying meaning to assistive technologies

+

Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .visually-hidden class.

+
\ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Callout/Callout_Demo_04_Hide_Heading.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Callout/Callout_Demo_04_Hide_Heading.razor new file mode 100644 index 000000000..c0f4f95fb --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Callout/Callout_Demo_04_Hide_Heading.razor @@ -0,0 +1,24 @@ + +

Conveying meaning to assistive technologies

+

Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .visually-hidden class.

+
+ + +

Conveying meaning to assistive technologies

+

Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .visually-hidden class.

+
+ + +

Conveying meaning to assistive technologies

+

Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .visually-hidden class.

+
+ + +

Conveying meaning to assistive technologies

+

Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .visually-hidden class.

+
+ + +

Conveying meaning to assistive technologies

+

Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .visually-hidden class.

+
diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Card/CardDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Card/CardDocumentation.razor new file mode 100644 index 000000000..8e219ac78 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Card/CardDocumentation.razor @@ -0,0 +1,97 @@ +@page "/card" + +@title + + + +

Blazor Card

+
+ BootstrapBootstrap's cards provide a flexible and extensible content container with multiple variants and options. +
+ + + + +
+ A card is a flexible and extensible content container. It includes options for headers and footers, a wide variety of content, contextual background colors, and powerful display options. +
+ + +
+ Below is an example of a basic card with mixed content and a fixed width. + Cards have no fixed width to start, so they'll naturally fill the full width of its parent element. +
+ + + +
+ Cards support a wide variety of content, including images, text, list groups, links, and more. + Below are examples of what’s supported. +
+ + +
+ The building block of a card is the CardBody. Use it whenever you need a padded section within a card. +
+ + + + + + + + + +
+ Create lists of content in a card with a flush list group. +
+ + + +
+ Mix and match multiple content types to create the card you need, or throw everything in there. + Shown below are image styles, blocks, text styles, and a list group—all wrapped in a fixed-width card. +
+ + + +
+ Add an optional header and/or footer within a card. +
+ + + +
+ Cards assume no specific width to start, so they’ll be 100% wide unless otherwise stated. + You can change this as needed with custom CSS, grid classes, grid Sass mixins, or utilities. +
+ + + +
+ You can quickly change the text alignment of any card—in its entirety or specific parts—with our TextAlignment parameter. +
+ + + + + + +
+ Use card groups to render cards as a single, attached element with equal width and height columns. + Card groups start off stacked and use display: flex; to become attached with uniform dimensions starting at the sm breakpoint. +
+ + + +
+ When using card groups with footers, their content will automatically line up. +
+ + +@code { + private string pageUrl = "/card"; + private string title = "Blazor Card Component"; + private string description = "BootstrapBootstrap's cards provide a flexible and extensible content container with multiple variants and options."; + private string imageUrl = "https://i.imgur.com/RhytwPa.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_01_Examples.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_01_Examples.razor new file mode 100644 index 000000000..61232cd7a --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_01_Examples.razor @@ -0,0 +1,7 @@ + + + Card title + Some quick example text to build on the card title and make up the bulk of the card's content. + + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_02_Content_Types_Body.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_02_Content_Types_Body.razor new file mode 100644 index 000000000..763af5725 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_02_Content_Types_Body.razor @@ -0,0 +1,5 @@ + + + This is some text within a card body. + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_03_Content_Types_Titles_Text_And_Links.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_03_Content_Types_Titles_Text_And_Links.razor new file mode 100644 index 000000000..966baea01 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_03_Content_Types_Titles_Text_And_Links.razor @@ -0,0 +1,9 @@ + + + Card title + Card subtitle + Some quick example text to build on the card title and make up the bulk of the card's content. + Card link + Another link + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_04_Content_Types_Images.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_04_Content_Types_Images.razor new file mode 100644 index 000000000..39459cf5d --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_04_Content_Types_Images.razor @@ -0,0 +1,19 @@ + + placeholder + + Card title + Card subtitle + Some quick example text to build on the card title and make up the bulk of the card's content. + + + + + + + Card title + Card subtitle + Some quick example text to build on the card title and make up the bulk of the card's content. + + + placeholder + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_05_Content_Types_List_Groups.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_05_Content_Types_List_Groups.razor new file mode 100644 index 000000000..818a28327 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_05_Content_Types_List_Groups.razor @@ -0,0 +1,7 @@ + +
    +
  • An item
  • +
  • A second item
  • +
  • A third item
  • +
+
diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_06_Content_Types_Kitchen_Sink.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_06_Content_Types_Kitchen_Sink.razor new file mode 100644 index 000000000..57f32412a --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_06_Content_Types_Kitchen_Sink.razor @@ -0,0 +1,16 @@ + + placeholder + + Card title + Some quick example text to build on the card title and make up the bulk of the card's content. + +
    +
  • An item
  • +
  • A second item
  • +
  • A third item
  • +
+ + Card link + Another link + +
diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_07_Header_And_Footer.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_07_Header_And_Footer.razor new file mode 100644 index 000000000..a98dae3ae --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_07_Header_And_Footer.razor @@ -0,0 +1,10 @@ + + + Featured + + + Special title treatment + With supporting text below as a natural lead-in to additional content. + + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_08_Sizing.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_08_Sizing.razor new file mode 100644 index 000000000..4c5b4d918 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_08_Sizing.razor @@ -0,0 +1,20 @@ +
+
+ + + Special title treatment + With supporting text below as a natural lead-in to additional content. + + + +
+
+ + + Special title treatment + With supporting text below as a natural lead-in to additional content. + + + +
+
diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_09_Text_Alignment.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_09_Text_Alignment.razor new file mode 100644 index 000000000..cbcefb459 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_09_Text_Alignment.razor @@ -0,0 +1,23 @@ + + + Special title treatment + With supporting text below as a natural lead-in to additional content. + + + + + + + Special title treatment + With supporting text below as a natural lead-in to additional content. + + + + + + + Special title treatment + With supporting text below as a natural lead-in to additional content. + + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_10_Background_And_Color.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_10_Background_And_Color.razor new file mode 100644 index 000000000..1a7d78fc2 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_10_Background_And_Color.razor @@ -0,0 +1,63 @@ + + Header + + Primary card title + Some quick example text to build on the card title and make up the bulk of the card's content. + + + + + Header + + Secondary card title + Some quick example text to build on the card title and make up the bulk of the card's content. + + + + + Header + + Success card title + Some quick example text to build on the card title and make up the bulk of the card's content. + + + + + Header + + Danger card title + Some quick example text to build on the card title and make up the bulk of the card's content. + + + + + Header + + Warning card title + Some quick example text to build on the card title and make up the bulk of the card's content. + + + + + Header + + Info card title + Some quick example text to build on the card title and make up the bulk of the card's content. + + + + + Header + + Light card title + Some quick example text to build on the card title and make up the bulk of the card's content. + + + + + Header + + Dark card title + Some quick example text to build on the card title and make up the bulk of the card's content. + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_11_Card_Groups.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_11_Card_Groups.razor new file mode 100644 index 000000000..e15a1b2cb --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_11_Card_Groups.razor @@ -0,0 +1,26 @@ + + + placeholder + + Card title + This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer. + Last updated 3 mins ago + + + + placeholder + + Card title + This card has supporting text below as a natural lead-in to additional content. + Last updated 3 mins ago + + + + placeholder + + Card title + This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action. + Last updated 3 mins ago + + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_12_Card_Groups_With_Footer.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_12_Card_Groups_With_Footer.razor new file mode 100644 index 000000000..963428b61 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Card/Card_Demo_12_Card_Groups_With_Footer.razor @@ -0,0 +1,32 @@ + + + placeholder + + Card title + This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer. + + + Last updated 3 mins ago + + + + placeholder + + Card title + This card has supporting text below as a natural lead-in to additional content. + + + Last updated 3 mins ago + + + + placeholder + + Card title + This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action. + + + Last updated 3 mins ago + + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/BarCharts/BarChartDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/BarCharts/BarChartDocumentation.razor new file mode 100644 index 000000000..452bc3df5 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/BarCharts/BarChartDocumentation.razor @@ -0,0 +1,50 @@ +@page "/charts/bar-chart" + +@title + + + +

Blazor Bar Chart

+
+ A Blazor Bootstrap bar chart component is used to represent data values as vertical bars. It is sometimes used to show trend data and to compare multiple data sets side by side. +
+ + + + +
+ Refer to the getting started guide for setting up charts. +
+ + +
+ In the following example, a categorical 12-color palette is used. +
+ + For data visualization, you can use the predefined palettes ColorBuilder.CategoricalTwelveColors for a 12-color palette and ColorBuilder.CategoricalSixColors for a 6-color palette. + These palettes offer a range of distinct and visually appealing colors that can be applied to represent different categories or data elements in your visualizations. + + + + + + + + + + +
+ By default, the chart is using the default locale of the platform on which it is running. + In the following example, you will see the chart in the German locale (de_DE). +
+ + + + + +@code { + private string pageUrl = "/charts/bar-chart"; + private string title = "Blazor Bar Chart"; + private string description = "A Blazor Bootstrap bar chart component is used to represent data values as vertical bars. It is sometimes used to show trend data and to compare multiple data sets side by side."; + private string imageUrl = "https://i.imgur.com/IX3bajc.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/BarCharts/BarChart_Demo_01_Examples.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/BarCharts/BarChart_Demo_01_Examples.razor new file mode 100644 index 000000000..1c4eee5a6 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/BarCharts/BarChart_Demo_01_Examples.razor @@ -0,0 +1,164 @@ + + + + + + + + +@code { + private BarChart barChart = default!; + private BarChartOptions barChartOptions = default!; + private ChartData chartData = default!; + + private int datasetsCount = 0; + private int labelsCount = 0; + private string[] months = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; + private Random random = new(); + + protected override void OnInitialized() + { + chartData = new ChartData { Labels = GetDefaultDataLabels(6), Datasets = GetDefaultDataSets(3) }; + barChartOptions = new BarChartOptions { Responsive = true, Interaction = new Interaction { Mode = InteractionMode.Index } }; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await barChart.InitializeAsync(chartData, barChartOptions); + } + await base.OnAfterRenderAsync(firstRender); + } + + private async Task RandomizeAsync() + { + if (chartData is null || chartData.Datasets is null || !chartData.Datasets.Any()) return; + + var newDatasets = new List(); + + foreach (var dataset in chartData.Datasets) + { + if (dataset is BarChartDataset barChartDataset + && barChartDataset is not null + && barChartDataset.Data is not null) + { + var count = barChartDataset.Data.Count; + + var newData = new List(); + for (var i = 0; i < count; i++) + { + newData.Add(random.Next(200)); + } + + barChartDataset.Data = newData; + newDatasets.Add(barChartDataset); + } + } + + chartData.Datasets = newDatasets; + + await barChart.UpdateAsync(chartData, barChartOptions); + } + + private async Task AddDatasetAsync() + { + if (chartData is null || chartData.Datasets is null) return; + + if (datasetsCount >= 12) + return; + + var chartDataset = GetRandomBarChartDataset(); + chartData = await barChart.AddDatasetAsync(chartData, chartDataset, barChartOptions); + } + + private async Task AddDataAsync() + { + if (chartData is null || chartData.Datasets is null) + return; + + if (labelsCount >= 12) + return; + + var data = new List(); + foreach (var dataset in chartData.Datasets) + { + if (dataset is BarChartDataset barChartDataset) + data.Add(new BarChartDatasetData(barChartDataset.Label, random.Next(200))); + } + + chartData = await barChart.AddDataAsync(chartData, GetNextDataLabel(), data); + } + + private async Task ShowHorizontalBarChartAsync() + { + barChartOptions.IndexAxis = "y"; + await barChart.UpdateAsync(chartData, barChartOptions); + } + + private async Task ShowVerticalBarChartAsync() + { + barChartOptions.IndexAxis = "x"; + await barChart.UpdateAsync(chartData, barChartOptions); + } + + #region Data Preparation + + private List GetDefaultDataSets(int numberOfDatasets) + { + var datasets = new List(); + + for (var index = 0; index < numberOfDatasets; index++) + { + datasets.Add(GetRandomBarChartDataset()); + } + + return datasets; + } + + private BarChartDataset GetRandomBarChartDataset() + { + var c = ColorBuilder.CategoricalTwelveColors[datasetsCount].ToColor(); + + datasetsCount += 1; + + return new BarChartDataset() + { + Label = $"Product {datasetsCount}", + Data = GetRandomData(), + BackgroundColor = new List { c.ToRgbString() }, + BorderColor = new List { c.ToRgbString() }, + BorderWidth = new List { 0 }, + }; + } + + private List GetRandomData() + { + var data = new List(); + for (var index = 0; index < labelsCount; index++) + { + data.Add(random.Next(200)); + } + + return data; + } + + private List GetDefaultDataLabels(int numberOfLabels) + { + var labels = new List(); + for (var index = 0; index < numberOfLabels; index++) + { + labels.Add(GetNextDataLabel()); + } + + return labels; + } + + private string GetNextDataLabel() + { + labelsCount += 1; + return months[labelsCount - 1]; + } + + #endregion Data Preparation +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/BarCharts/BarChart_Demo_02_Horizontal_BarChart.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/BarCharts/BarChart_Demo_02_Horizontal_BarChart.razor new file mode 100644 index 000000000..3e8bc3b14 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/BarCharts/BarChart_Demo_02_Horizontal_BarChart.razor @@ -0,0 +1,48 @@ + + +@code { + private BarChart barChart = default!; + private BarChartOptions barChartOptions = default!; + private ChartData chartData = default!; + + protected override void OnInitialized() + { + var labels = new List { "Chrome", "Firefox", "Safari", "Edge" }; + var datasets = new List(); + + var dataset1 = new BarChartDataset() + { + Data = new List { 55000, 15000, 18000, 21000 }, + BackgroundColor = new List { ColorBuilder.CategoricalTwelveColors[0] }, + BorderColor = new List { ColorBuilder.CategoricalTwelveColors[0] }, + BorderWidth = new List { 0 }, + }; + datasets.Add(dataset1); + + chartData = new ChartData { + Labels = labels, + Datasets = datasets }; + + barChartOptions = new BarChartOptions(); + barChartOptions.Responsive = true; + barChartOptions.Interaction = new Interaction { Mode = InteractionMode.Y }; + barChartOptions.IndexAxis = "y"; + + barChartOptions.Scales.X!.Title!.Text = "Visitors"; + barChartOptions.Scales.X.Title.Display = true; + + barChartOptions.Scales.Y!.Title!.Text = "Browser"; + barChartOptions.Scales.Y.Title.Display = true; + + barChartOptions.Plugins.Legend.Display = false; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await barChart.InitializeAsync(chartData, barChartOptions); + } + await base.OnAfterRenderAsync(firstRender); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/BarCharts/BarChart_Demo_03_Stacked_BarChart.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/BarCharts/BarChart_Demo_03_Stacked_BarChart.razor new file mode 100644 index 000000000..8da2657fa --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/BarCharts/BarChart_Demo_03_Stacked_BarChart.razor @@ -0,0 +1,77 @@ + + +@code { + private BarChart barChart = default!; + private BarChartOptions barChartOptions = default!; + private ChartData chartData = default!; + + protected override void OnInitialized() + { + var colors = ColorBuilder.CategoricalTwelveColors; + + var labels = new List { "Chrome", "Firefox", "Safari", "Edge" }; + var datasets = new List(); + + var dataset1 = new BarChartDataset() + { + Label = "Windows", + Data = new List { 28000, 8000, 2000, 17000 }, + BackgroundColor = new List { colors[0] }, + BorderColor = new List { colors[0] }, + BorderWidth = new List { 0 }, + }; + datasets.Add(dataset1); + + var dataset2 = new BarChartDataset() + { + Label = "macOS", + Data = new List { 8000, 10000, 14000, 8000 }, + BackgroundColor = new List { colors[1] }, + BorderColor = new List { colors[1] }, + BorderWidth = new List { 0 }, + }; + datasets.Add(dataset2); + + var dataset3 = new BarChartDataset() + { + Label = "Other", + Data = new List { 28000, 10000, 14000, 8000 }, + BackgroundColor = new List { colors[2] }, + BorderColor = new List { colors[2] }, + BorderWidth = new List { 0 }, + }; + datasets.Add(dataset3); + + chartData = new ChartData + { + Labels = labels, + Datasets = datasets + }; + + barChartOptions = new(); + barChartOptions.Responsive = true; + barChartOptions.Interaction = new Interaction { Mode = InteractionMode.Y }; + barChartOptions.IndexAxis = "y"; + + barChartOptions.Scales.X!.Title!.Text = "Visitors"; + barChartOptions.Scales.X.Title.Display = true; + + barChartOptions.Scales.Y!.Title!.Text = "Browser"; + barChartOptions.Scales.Y.Title.Display = true; + + barChartOptions.Scales.X.Stacked = true; + barChartOptions.Scales.Y.Stacked = true; + + barChartOptions.Plugins.Title!.Text = "Operating system"; + barChartOptions.Plugins.Title.Display = true; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await barChart.InitializeAsync(chartData, barChartOptions); + } + await base.OnAfterRenderAsync(firstRender); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/BarCharts/BarChart_Demo_04_Locale.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/BarCharts/BarChart_Demo_04_Locale.razor new file mode 100644 index 000000000..7fe04798f --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/BarCharts/BarChart_Demo_04_Locale.razor @@ -0,0 +1,78 @@ + + +@code { + private BarChart barChart = default!; + private BarChartOptions barChartOptions = default!; + private ChartData chartData = default!; + + protected override void OnInitialized() + { + var colors = ColorBuilder.CategoricalTwelveColors; + + var labels = new List { "Chrome", "Firefox", "Safari", "Edge" }; + var datasets = new List(); + + var dataset1 = new BarChartDataset() + { + Label = "Windows", + Data = new List { 28000, 8000, 2000, 17000 }, + BackgroundColor = new List { colors[0] }, + BorderColor = new List { colors[0] }, + BorderWidth = new List { 0 }, + }; + datasets.Add(dataset1); + + var dataset2 = new BarChartDataset() + { + Label = "macOS", + Data = new List { 8000, 10000, 14000, 8000 }, + BackgroundColor = new List { colors[1] }, + BorderColor = new List { colors[1] }, + BorderWidth = new List { 0 }, + }; + datasets.Add(dataset2); + + var dataset3 = new BarChartDataset() + { + Label = "Other", + Data = new List { 28000, 10000, 14000, 8000 }, + BackgroundColor = new List { colors[2] }, + BorderColor = new List { colors[2] }, + BorderWidth = new List { 0 }, + }; + datasets.Add(dataset3); + + chartData = new ChartData + { + Labels = labels, + Datasets = datasets + }; + + barChartOptions = new(); + barChartOptions.Locale = "de-DE"; + barChartOptions.Responsive = true; + barChartOptions.Interaction = new Interaction { Mode = InteractionMode.Y }; + barChartOptions.IndexAxis = "y"; + + barChartOptions.Scales.X!.Title!.Text = "Visitors"; + barChartOptions.Scales.X.Title.Display = true; + + barChartOptions.Scales.Y!.Title!.Text = "Browser"; + barChartOptions.Scales.Y.Title.Display = true; + + barChartOptions.Scales.X.Stacked = true; + barChartOptions.Scales.Y.Stacked = true; + + barChartOptions.Plugins.Title!.Text = "Operating system"; + barChartOptions.Plugins.Title.Display = true; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await barChart.InitializeAsync(chartData, barChartOptions); + } + await base.OnAfterRenderAsync(firstRender); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/BarCharts/BarChart_Demo_05_Stacked_BarChart_with_Datalabels.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/BarCharts/BarChart_Demo_05_Stacked_BarChart_with_Datalabels.razor new file mode 100644 index 000000000..20fad0c83 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/BarCharts/BarChart_Demo_05_Stacked_BarChart_with_Datalabels.razor @@ -0,0 +1,78 @@ + + +@code { + private BarChart barChart = default!; + private BarChartOptions barChartOptions = default!; + private ChartData chartData = default!; + + protected override void OnInitialized() + { + var colors = ColorBuilder.CategoricalTwelveColors; + + var labels = new List { "Chrome", "Firefox", "Safari", "Edge" }; + var datasets = new List(); + + var dataset1 = new BarChartDataset() + { + Label = "Windows", + Data = new List { 28000, 8000, 2000, 17000 }, + BackgroundColor = new List { colors[0] }, + BorderColor = new List { colors[0] }, + BorderWidth = new List { 0 }, + }; + datasets.Add(dataset1); + + var dataset2 = new BarChartDataset() + { + Label = "macOS", + Data = new List { 8000, 10000, 14000, 8000 }, + BackgroundColor = new List { colors[1] }, + BorderColor = new List { colors[1] }, + BorderWidth = new List { 0 }, + }; + datasets.Add(dataset2); + + var dataset3 = new BarChartDataset() + { + Label = "Other", + Data = new List { 28000, 10000, 14000, 8000 }, + BackgroundColor = new List { colors[2] }, + BorderColor = new List { colors[2] }, + BorderWidth = new List { 0 }, + }; + datasets.Add(dataset3); + + chartData = new ChartData + { + Labels = labels, + Datasets = datasets + }; + + barChartOptions = new(); + barChartOptions.Responsive = true; + barChartOptions.Interaction = new Interaction { Mode = InteractionMode.Y }; + barChartOptions.IndexAxis = "y"; + + barChartOptions.Scales.X!.Title!.Text = "Visitors"; + barChartOptions.Scales.X.Title.Display = true; + + barChartOptions.Scales.Y!.Title!.Text = "Browser"; + barChartOptions.Scales.Y.Title.Display = true; + + barChartOptions.Scales.X.Stacked = true; + barChartOptions.Scales.Y.Stacked = true; + + barChartOptions.Plugins.Title!.Text = "Operating system"; + barChartOptions.Plugins.Title.Display = true; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + // pass the plugin name to enable the data labels + await barChart.InitializeAsync(chartData: chartData, chartOptions: barChartOptions, plugins: new string[] { "ChartDataLabels" }); + } + await base.OnAfterRenderAsync(firstRender); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/ChartsDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/ChartsDocumentation.razor new file mode 100644 index 000000000..e886222fb --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/ChartsDocumentation.razor @@ -0,0 +1,40 @@ +@page "/charts" + +@title + + + +

Blazor Charts

+
+ Blazor Bootstrap charts are well-designed chart components on top of Chart.js to visualize data. It contains a rich UI gallery of charts that cater to all charting scenarios. Its high performance helps render large amounts of data quickly. +
+ + + + + + + +
At this moment we are supporting four blazor chart types.
+
    +
  1. Bar Chart
  2. +
  3. Doughnut Chart
  4. +
  5. Line Chart
  6. +
  7. Pie Chart
  8. +
+ + + We will add Bubble Chart, Polar Area Chart, Radar Chart, Scatter Chart, and Mixed Chart support in the subsequent versions. + + + +
+ Refer to the getting started guide for setting up charts. +
+ +@code { + private string pageUrl = "/charts"; + private string title = "Blazor Charts"; + private string description = "Blazor Bootstrap charts are well-designed chart components on top of Chart.js to visualize data. It contains a rich UI gallery of charts that cater to all charting scenarios. Its high performance helps render large amounts of data quickly."; + private string imageUrl = "https://i.imgur.com/IX3bajc.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/Charts_Demo_00_Examples.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/Charts_Demo_00_Examples.razor new file mode 100644 index 000000000..74204466c --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/Charts_Demo_00_Examples.razor @@ -0,0 +1,118 @@ + + + +@code { + private BarChart barChart = default!; + private LineChart lineChart = default!; + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await RenderManhattanAsync(); + await RenderWormAsync(); + } + + await base.OnAfterRenderAsync(firstRender); + } + + private async Task RenderManhattanAsync() + { + var data = new ChartData + { + Labels = new List { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20" }, + Datasets = new List() + { + new BarChartDataset() + { + Label = "India", + Data = new List{ 9, 11, 9, 4, 17, 16, 9, 11, 5, 14, 15, 6, 15, 9, 6, 8, 13, 3, 4, 11 }, + BackgroundColor = new List{ "rgb(88, 80, 141)" }, + CategoryPercentage = 0.8, + BarPercentage = 1, + }, + new BarChartDataset() + { + Label = "England", + Data = new List{ 1, 0, 7, 11, 5, 2, 13, 8, 9, 10, 7, 13, 7, 5, 9, 5, 10, 5, 11, 2 }, + BackgroundColor = new List { "rgb(255, 166, 0)" }, + CategoryPercentage = 0.8, + BarPercentage = 1, + } + } + }; + + var options = new BarChartOptions(); + + options.Interaction.Mode = InteractionMode.Index; + + options.Plugins.Title!.Text = "MANHATTAN"; + options.Plugins.Title.Display = true; + options.Plugins.Title.Font!.Size = 20; + + options.Responsive = true; + + options.Scales.X!.Title!.Text = "Overs"; + options.Scales.X.Title.Display = true; + + options.Scales.Y!.Title!.Text = "Runs"; + options.Scales.Y.Title.Display = true; + + await barChart.InitializeAsync(data, options); + } + + private async Task RenderWormAsync() + { + var data = new ChartData + { + Labels = new List { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20" }, + Datasets = new List() + { + new LineChartDataset() + { + Label = "India", + Data = new List{ 9, 20, 29, 33, 50, 66, 75, 86, 91, 105, 120, 126, 141, 150, 156, 164, 177, 180, 184, 195 }, + BackgroundColor = new List{ "rgb(88, 80, 141)" }, + BorderColor = new List{ "rgb(88, 80, 141)" }, + BorderWidth = new List{2}, + HoverBorderWidth = new List{4}, + PointBackgroundColor = new List{ "rgb(88, 80, 141)" }, + PointBorderColor = new List{ "rgb(88, 80, 141)" }, + PointRadius = new List{0}, // hide points + PointHoverRadius = new List{4}, + }, + new LineChartDataset() + { + Label = "England", + Data = new List{ 1, 1, 8, 19, 24, 26, 39, 47, 56, 66, 75, 88, 95, 100, 109, 114, 124, 129, 140, 142 }, + BackgroundColor = new List{ "rgb(255, 166, 0)" }, + BorderColor = new List{ "rgb(255, 166, 0)" }, + BorderWidth = new List{2}, + HoverBorderWidth = new List{4}, + PointBackgroundColor = new List{ "rgb(255, 166, 0)" }, + PointBorderColor = new List{ "rgb(255, 166, 0)" }, + PointRadius = new List{0}, // hide points + PointHoverRadius = new List{4}, + } + } + }; + + var options = new LineChartOptions(); + + options.Interaction.Mode = InteractionMode.Index; + + options.Plugins.Title!.Text = "WORM"; + options.Plugins.Title.Display = true; + options.Plugins.Title.Font!.Size = 20; + + options.Responsive = true; + + options.Scales.X!.Title!.Text = "Overs"; + options.Scales.X.Title.Display = true; + + options.Scales.Y!.Title!.Text = "Runs"; + options.Scales.Y.Title.Display = true; + + await lineChart.InitializeAsync(data, options); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/DoughnutCharts/DoughnutChartDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/DoughnutCharts/DoughnutChartDocumentation.razor new file mode 100644 index 000000000..e0c60e052 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/DoughnutCharts/DoughnutChartDocumentation.razor @@ -0,0 +1,39 @@ +@page "/charts/doughnut-chart" + +@title + + + +

Blazor Doughnut Chart

+
+ A Blazor Bootstrap donut chart component is a circular chart that shows the proportional values of different categories. + It is similar to a pie chart, but the center of the donut chart is hollow. + This makes it easier to see the individual values of each category. +
+ + + + +
+ Refer to the getting started guide for setting up charts. +
+ + +
+ In the following example, a categorical 12-color palette is used. +
+ + For data visualization, you can use the predefined palettes ColorBuilder.CategoricalTwelveColors for a 12-color palette and ColorBuilder.CategoricalSixColors for a 6-color palette. + These palettes offer a range of distinct and visually appealing colors that can be applied to represent different categories or data elements in your visualizations. + + + + + + +@code { + private string pageUrl = "/charts/doughnut-chart"; + private string title = "Blazor Doughnut Charts"; + private string description = "A Blazor donut chart component is a circular chart that shows the proportional values of different categories. It is similar to a pie chart, but the center of the donut chart is hollow. This makes it easier to see the individual values of each category."; + private string imageUrl = "https://i.imgur.com/xEPhAsW.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/DoughnutCharts/DoughnutChart_Demo_01_Examples.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/DoughnutCharts/DoughnutChart_Demo_01_Examples.razor new file mode 100644 index 000000000..364113459 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/DoughnutCharts/DoughnutChart_Demo_01_Examples.razor @@ -0,0 +1,157 @@ + + + + + + +@code { + private DoughnutChart doughnutChart = default!; + private DoughnutChartOptions doughnutChartOptions = default!; + private ChartData chartData = default!; + private string[]? backgroundColors; + + private int datasetsCount = 0; + private int dataLabelsCount = 0; + + private Random random = new(); + + protected override void OnInitialized() + { + backgroundColors = ColorBuilder.CategoricalTwelveColors; + chartData = new ChartData { Labels = GetDefaultDataLabels(4), Datasets = GetDefaultDataSets(1) }; + + doughnutChartOptions = new(); + doughnutChartOptions.Responsive = true; + doughnutChartOptions.Plugins.Title!.Text = "2022 - Sales"; + doughnutChartOptions.Plugins.Title.Display = true; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await doughnutChart.InitializeAsync(chartData, doughnutChartOptions); + } + await base.OnAfterRenderAsync(firstRender); + } + + private async Task RandomizeAsync() + { + if (chartData is null || chartData.Datasets is null || !chartData.Datasets.Any()) return; + + var newDatasets = new List(); + + foreach (var dataset in chartData.Datasets) + { + if (dataset is DoughnutChartDataset doughnutChartDataset + && doughnutChartDataset is not null + && doughnutChartDataset.Data is not null) + { + var count = doughnutChartDataset.Data.Count; + + var newData = new List(); + for (var i = 0; i < count; i++) + { + newData.Add(random.Next(0, 100)); + } + + doughnutChartDataset.Data = newData; + newDatasets.Add(doughnutChartDataset); + } + } + + chartData.Datasets = newDatasets; + + await doughnutChart.UpdateAsync(chartData, doughnutChartOptions); + } + + private async Task AddDatasetAsync() + { + if (chartData is null || chartData.Datasets is null) return; + + var chartDataset = GetRandomDoughnutChartDataset(); + chartData = await doughnutChart.AddDatasetAsync(chartData, chartDataset, doughnutChartOptions); + } + + private async Task AddDataAsync() + { + if (dataLabelsCount >= 12) + return; + + if (chartData is null || chartData.Datasets is null) + return; + + var data = new List(); + foreach (var dataset in chartData.Datasets) + { + if (dataset is DoughnutChartDataset doughnutChartDataset) + { + data.Add(new DoughnutChartDatasetData(doughnutChartDataset.Label, random.Next(0, 100), backgroundColors![dataLabelsCount])); + } + } + + chartData = await doughnutChart.AddDataAsync(chartData, GetNextDataLabel(), data); + + dataLabelsCount += 1; + } + + #region Data Preparation + + private List GetDefaultDataSets(int numberOfDatasets) + { + var datasets = new List(); + + for (var index = 0; index < numberOfDatasets; index++) + { + datasets.Add(GetRandomDoughnutChartDataset()); + } + + return datasets; + } + + private DoughnutChartDataset GetRandomDoughnutChartDataset() + { + datasetsCount += 1; + return new() { Label = $"Team {datasetsCount}", Data = GetRandomData(), BackgroundColor = GetRandomBackgroundColors() }; + } + + private List GetRandomData() + { + var data = new List(); + for (var index = 0; index < dataLabelsCount; index++) + { + data.Add(random.Next(0, 100)); + } + + return data; + } + + private List GetRandomBackgroundColors() + { + var colors = new List(); + for (var index = 0; index < dataLabelsCount; index++) + { + colors.Add(backgroundColors![index]); + } + + return colors; + } + + private List GetDefaultDataLabels(int numberOfLabels) + { + var labels = new List(); + for (var index = 0; index < numberOfLabels; index++) + { + labels.Add(GetNextDataLabel()); + dataLabelsCount += 1; + } + + return labels; + } + + private string GetNextDataLabel() => $"Product {dataLabelsCount + 1}"; + + private string GetNextDataBackgrounfColor() => backgroundColors![dataLabelsCount]; + + #endregion Data Preparation +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/DoughnutCharts/DoughnutChart_Demo_02_Datalabels.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/DoughnutCharts/DoughnutChart_Demo_02_Datalabels.razor new file mode 100644 index 000000000..6af7c863f --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/DoughnutCharts/DoughnutChart_Demo_02_Datalabels.razor @@ -0,0 +1,158 @@ + + + + + +@code { + private DoughnutChart doughnutChart = default!; + private DoughnutChartOptions doughnutChartOptions = default!; + private ChartData chartData = default!; + private string[]? backgroundColors; + + private int datasetsCount = 0; + private int dataLabelsCount = 0; + + private Random random = new(); + + protected override void OnInitialized() + { + backgroundColors = ColorBuilder.CategoricalTwelveColors; + chartData = new ChartData { Labels = GetDefaultDataLabels(4), Datasets = GetDefaultDataSets(3) }; + + doughnutChartOptions = new(); + doughnutChartOptions.Responsive = true; + doughnutChartOptions.Plugins.Title!.Text = "2022 - Sales"; + doughnutChartOptions.Plugins.Title.Display = true; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + // pass the plugin name to enable the data labels + await doughnutChart.InitializeAsync(chartData: chartData, chartOptions: doughnutChartOptions, plugins: new string[] { "ChartDataLabels" }); + } + await base.OnAfterRenderAsync(firstRender); + } + + private async Task RandomizeAsync() + { + if (chartData is null || chartData.Datasets is null || !chartData.Datasets.Any()) return; + + var newDatasets = new List(); + + foreach (var dataset in chartData.Datasets) + { + if (dataset is DoughnutChartDataset doughnutChartDataset + && doughnutChartDataset is not null + && doughnutChartDataset.Data is not null) + { + var count = doughnutChartDataset.Data.Count; + + var newData = new List(); + for (var i = 0; i < count; i++) + { + newData.Add(random.Next(0, 100)); + } + + doughnutChartDataset.Data = newData; + newDatasets.Add(doughnutChartDataset); + } + } + + chartData.Datasets = newDatasets; + + await doughnutChart.UpdateAsync(chartData: chartData, chartOptions: doughnutChartOptions); + } + + private async Task AddDataAsync() + { + if (dataLabelsCount >= 12) + return; + + if (chartData is null || chartData.Datasets is null) + return; + + var data = new List(); + foreach (var dataset in chartData.Datasets) + { + if (dataset is DoughnutChartDataset doughnutChartDataset) + { + data.Add(new DoughnutChartDatasetData(doughnutChartDataset.Label, random.Next(0, 100), backgroundColors![dataLabelsCount])); + } + } + + chartData = await doughnutChart.AddDataAsync(chartData, GetNextDataLabel(), data); + + dataLabelsCount += 1; + } + + #region Data Preparation + + private List GetDefaultDataSets(int numberOfDatasets) + { + var datasets = new List(); + + for (var index = 0; index < numberOfDatasets; index++) + { + var dataset = GetRandomDoughnutChartDataset(); + + if (index == 0) + dataset.Datalabels.Anchor = "end"; + else if (index == numberOfDatasets - 1) + dataset.Datalabels.Anchor = "start"; + else + dataset.Datalabels.Anchor = "center"; + + datasets.Add(dataset); + } + + return datasets; + } + + private DoughnutChartDataset GetRandomDoughnutChartDataset() + { + datasetsCount += 1; + return new() { Label = $"Team {datasetsCount}", Data = GetRandomData(), BackgroundColor = GetRandomBackgroundColors() }; + } + + private List GetRandomData() + { + var data = new List(); + for (var index = 0; index < dataLabelsCount; index++) + { + data.Add(random.Next(0, 100)); + } + + return data; + } + + private List GetRandomBackgroundColors() + { + var colors = new List(); + for (var index = 0; index < dataLabelsCount; index++) + { + colors.Add(backgroundColors![index]); + } + + return colors; + } + + private List GetDefaultDataLabels(int numberOfLabels) + { + var labels = new List(); + for (var index = 0; index < numberOfLabels; index++) + { + labels.Add(GetNextDataLabel()); + dataLabelsCount += 1; + } + + return labels; + } + + private string GetNextDataLabel() => $"Product {dataLabelsCount + 1}"; + + private string GetNextDataBackgrounfColor() => backgroundColors![dataLabelsCount]; + + #endregion Data Preparation +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/LineCharts/LineChartDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/LineCharts/LineChartDocumentation.razor new file mode 100644 index 000000000..041dcc119 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/LineCharts/LineChartDocumentation.razor @@ -0,0 +1,50 @@ +@page "/charts/line-chart" + +@title + + + +

Blazor Line Chart

+
+ A Blazor Bootstrap line chart component is a graphical representation of data that uses a series of connected points to show how the data changes over time. + It is a type of x-y chart, where the x-axis represents the independent variable, such as time, and the y-axis represents the dependent variable, such as the value. +
+ + + + +
+ Refer to the getting started guide for setting up charts. +
+ + +
+ In the following example, a categorical 12-color palette is used. +
+ + For data visualization, you can use the predefined palettes ColorBuilder.CategoricalTwelveColors for a 12-color palette and ColorBuilder.CategoricalSixColors for a 6-color palette. + These palettes offer a range of distinct and visually appealing colors that can be applied to represent different categories or data elements in your visualizations. + + +
+ + + +
+ By default, the chart is using the default locale of the platform on which it is running. + In the following example, you will see the chart in the German locale (de_DE). +
+ + + + + + + + +@code { + private readonly string pageUrl = "/charts/line-chart"; + private readonly string title = "Blazor Line Chart"; + private readonly string description = "A Blazor Bootstrap line chart component is a graphical representation of data that uses a series of connected points to show how the data changes over time. It is a type of x-y chart, where the x-axis represents the independent variable, such as time, and the y-axis represents the dependent variable, such as the value."; + private readonly string imageUrl = "https://i.imgur.com/8b7jH0D.png"; +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/LineCharts/LineChart_Demo_01_A_Examples.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/LineCharts/LineChart_Demo_01_A_Examples.razor new file mode 100644 index 000000000..18bdf6c4b --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/LineCharts/LineChart_Demo_01_A_Examples.razor @@ -0,0 +1,163 @@ + + + + + + + + +@code { + private LineChart lineChart = default!; + private LineChartOptions lineChartOptions = default!; + private ChartData chartData = default!; + + private int datasetsCount; + private int labelsCount; + + private Random random = new(); + + protected override void OnInitialized() + { + chartData = new ChartData { Labels = GetDefaultDataLabels(6), Datasets = GetDefaultDataSets(3) }; + lineChartOptions = new() { Responsive = true, Interaction = new Interaction { Mode = InteractionMode.Index } }; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await lineChart.InitializeAsync(chartData, lineChartOptions); + } + await base.OnAfterRenderAsync(firstRender); + } + + private async Task RandomizeAsync() + { + if (chartData is null || chartData.Datasets is null || !chartData.Datasets.Any()) return; + + var newDatasets = new List(); + + foreach (var dataset in chartData.Datasets) + { + if (dataset is LineChartDataset lineChartDataset + && lineChartDataset is not null + && lineChartDataset.Data is not null) + { + var count = lineChartDataset.Data.Count; + + var newData = new List(); + for (var i = 0; i < count; i++) + { + newData.Add(random.Next(200)); + } + + lineChartDataset.Data = newData; + newDatasets.Add(lineChartDataset); + } + } + + chartData.Datasets = newDatasets; + + await lineChart.UpdateAsync(chartData, lineChartOptions); + } + + private async Task AddDatasetAsync() + { + if (chartData is null || chartData.Datasets is null) return; + + var chartDataset = GetRandomLineChartDataset(); + chartData = await lineChart.AddDatasetAsync(chartData, chartDataset, lineChartOptions); + } + + private async Task AddDataAsync() + { + if (chartData is null || chartData.Datasets is null) + return; + + var data = new List(); + foreach (var dataset in chartData.Datasets) + { + if (dataset is LineChartDataset lineChartDataset) + data.Add(new LineChartDatasetData(lineChartDataset.Label, random.Next(200))); + } + + chartData = await lineChart.AddDataAsync(chartData, GetNextDataLabel(), data); + } + + private async Task ShowHorizontalLineChartAsync() + { + lineChartOptions.IndexAxis = "y"; + await lineChart.UpdateAsync(chartData, lineChartOptions); + } + + private async Task ShowVerticalLineChartAsync() + { + lineChartOptions.IndexAxis = "x"; + await lineChart.UpdateAsync(chartData, lineChartOptions); + } + + #region Data Preparation + + private List GetDefaultDataSets(int numberOfDatasets) + { + var datasets = new List(); + + for (var index = 0; index < numberOfDatasets; index++) + { + datasets.Add(GetRandomLineChartDataset()); + } + + return datasets; + } + + private LineChartDataset GetRandomLineChartDataset() + { + var c = ColorBuilder.CategoricalTwelveColors[datasetsCount].ToColor(); + + datasetsCount += 1; + + return new LineChartDataset + { + Label = $"Team {datasetsCount}", + Data = GetRandomData(), + BackgroundColor = new List { c.ToRgbString() }, + BorderColor = new List { c.ToRgbString() }, + BorderWidth = new List { 2 }, + HoverBorderWidth = new List { 4 }, + PointBackgroundColor = new List { c.ToRgbString() }, + PointRadius = new List { 0 }, // hide points + PointHoverRadius = new List { 4 } + }; + } + + private List GetRandomData() + { + var data = new List(); + for (var index = 0; index < labelsCount; index++) + { + data.Add(random.Next(200)); + } + + return data; + } + + private List GetDefaultDataLabels(int numberOfLabels) + { + var labels = new List(); + for (var index = 0; index < numberOfLabels; index++) + { + labels.Add(GetNextDataLabel()); + } + + return labels; + } + + private string GetNextDataLabel() + { + labelsCount += 1; + return $"Day {labelsCount}"; + } + + #endregion Data Preparation + +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/LineCharts/LineChart_Demo_01_B_Examples.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/LineCharts/LineChart_Demo_01_B_Examples.razor new file mode 100644 index 000000000..c845f7170 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/LineCharts/LineChart_Demo_01_B_Examples.razor @@ -0,0 +1,86 @@ + + +@code { + private LineChart lineChart = default!; + private LineChartOptions lineChartOptions = default!; + private ChartData chartData = default!; + + protected override void OnInitialized() + { + var colors = ColorBuilder.CategoricalTwelveColors; + + var labels = new List { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; + var datasets = new List(); + + var dataset1 = new LineChartDataset + { + Label = "Windows", + Data = new List { 7265791, 5899643, 6317759, 6315641, 5338211, 8496306, 7568556, 8538933, 8274297, 8657298, 7548388, 7764845 }, + BackgroundColor = new List { colors[0] }, + BorderColor = new List { colors[0] }, + BorderWidth = new List { 2 }, + HoverBorderWidth = new List { 4 }, + PointBackgroundColor = new List { colors[0] }, + PointRadius = new List { 0 }, // hide points + PointHoverRadius = new List { 4 } + }; + datasets.Add(dataset1); + + var dataset2 = new LineChartDataset + { + Label = "macOS", + Data = new List { 1809499, 1816642, 2122410, 1809499, 1850793, 1846743, 1954797, 2391313, 1983430, 2469918, 2633303, 2821149 }, + BackgroundColor = new List { colors[1] }, + BorderColor = new List { colors[1] }, + BorderWidth = new List { 2 }, + HoverBorderWidth = new List { 4 }, + PointBackgroundColor = new List { colors[1] }, + PointRadius = new List { 0 }, // hide points + PointHoverRadius = new List { 4 } + }; + datasets.Add(dataset2); + + var dataset3 = new LineChartDataset + { + Label = "Other", + Data = new List { 1081241, 1100363, 1118136, 1073255, 1120315, 1395736, 1488788, 1489466, 1489947, 1414739, 1735811, 1820171 }, + BackgroundColor = new List { colors[2] }, + BorderColor = new List { colors[2] }, + BorderWidth = new List { 2 }, + HoverBorderWidth = new List { 4 }, + PointBackgroundColor = new List { colors[2] }, + PointRadius = new List { 0 }, // hide points + PointHoverRadius = new List { 4 } + }; + datasets.Add(dataset3); + + chartData = new ChartData + { + Labels = labels, + Datasets = datasets + }; + + lineChartOptions = new(); + lineChartOptions.Responsive = true; + lineChartOptions.Interaction = new Interaction { Mode = InteractionMode.Index }; + + lineChartOptions.Scales.X!.Title!.Text = "2019"; + lineChartOptions.Scales.X.Title.Display = true; + + lineChartOptions.Scales.Y!.Title!.Text = "Visitors"; + lineChartOptions.Scales.Y.Title.Display = true; + + lineChartOptions.Plugins.Title!.Text = "Operating system"; + lineChartOptions.Plugins.Title.Display = true; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await lineChart.InitializeAsync(chartData, lineChartOptions); + } + await base.OnAfterRenderAsync(firstRender); + } + +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/LineCharts/LineChart_Demo_02_Locale.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/LineCharts/LineChart_Demo_02_Locale.razor new file mode 100644 index 000000000..fcf8369da --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/LineCharts/LineChart_Demo_02_Locale.razor @@ -0,0 +1,87 @@ + + +@code { + private LineChart lineChart = default!; + private LineChartOptions lineChartOptions = default!; + private ChartData chartData = default!; + + protected override void OnInitialized() + { + var colors = ColorBuilder.CategoricalTwelveColors; + + var labels = new List { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; + var datasets = new List(); + + var dataset1 = new LineChartDataset + { + Label = "Windows", + Data = new List { 7265791, 5899643, 6317759, 6315641, 5338211, 8496306, 7568556, 8538933, 8274297, 8657298, 7548388, 7764845 }, + BackgroundColor = new List { colors[0] }, + BorderColor = new List { colors[0] }, + BorderWidth = new List { 2 }, + HoverBorderWidth = new List { 4 }, + PointBackgroundColor = new List { colors[0] }, + PointRadius = new List { 0 }, // hide points + PointHoverRadius = new List { 4 } + }; + datasets.Add(dataset1); + + var dataset2 = new LineChartDataset + { + Label = "macOS", + Data = new List { 1809499, 1816642, 2122410, 1809499, 1850793, 1846743, 1954797, 2391313, 1983430, 2469918, 2633303, 2821149 }, + BackgroundColor = new List { colors[1] }, + BorderColor = new List { colors[1] }, + BorderWidth = new List { 2 }, + HoverBorderWidth = new List { 4 }, + PointBackgroundColor = new List { colors[1] }, + PointRadius = new List { 0 }, // hide points + PointHoverRadius = new List { 4 } + }; + datasets.Add(dataset2); + + var dataset3 = new LineChartDataset + { + Label = "Other", + Data = new List { 1081241, 1100363, 1118136, 1073255, 1120315, 1395736, 1488788, 1489466, 1489947, 1414739, 1735811, 1820171 }, + BackgroundColor = new List { colors[2] }, + BorderColor = new List { colors[2] }, + BorderWidth = new List { 2 }, + HoverBorderWidth = new List { 4 }, + PointBackgroundColor = new List { colors[2] }, + PointRadius = new List { 0 }, // hide points + PointHoverRadius = new List { 4 } + }; + datasets.Add(dataset3); + + chartData = new ChartData + { + Labels = labels, + Datasets = datasets + }; + + lineChartOptions = new(); + lineChartOptions.Locale = "de-DE"; + lineChartOptions.Responsive = true; + lineChartOptions.Interaction = new Interaction { Mode = InteractionMode.Index }; + + lineChartOptions.Scales.X!.Title!.Text = "2019"; + lineChartOptions.Scales.X.Title.Display = true; + + lineChartOptions.Scales.Y!.Title!.Text = "Visitors"; + lineChartOptions.Scales.Y.Title.Display = true; + + lineChartOptions.Plugins.Title!.Text = "Operating system"; + lineChartOptions.Plugins.Title.Display = true; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await lineChart.InitializeAsync(chartData, lineChartOptions); + } + await base.OnAfterRenderAsync(firstRender); + } + +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/LineCharts/LineChart_Demo_03_Dynamically_add_data.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/LineCharts/LineChart_Demo_03_Dynamically_add_data.razor new file mode 100644 index 000000000..b1b792ab6 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/LineCharts/LineChart_Demo_03_Dynamically_add_data.razor @@ -0,0 +1,106 @@ + + + + + +@code { + private LineChart lineChart = default!; + private LineChartOptions lineChartOptions = default!; + private ChartData chartData = default!; + private List labels = default!; + + private List indiaRunsArray = new() { 9, 20, 29, 33, 50, 66, 75, 86, 91, 105, 120, 126, 141, 150, 156, 164, 177, 180, 184, 195 }; + private List englandRunsArray = new() { 1, 1, 8, 19, 24, 26, 39, 47, 56, 66, 75, 88, 95, 100, 109, 114, 124, 129, 140, 142 }; + + private int indiaCurrentOver; + private int englandCurrentOver; + + protected override void OnInitialized() + { + labels = new List { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20" }; + lineChartOptions = GetLineChartOptions(); + chartData = new ChartData { Labels = labels, Datasets = GetDefaultDatasets() }; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + await lineChart.InitializeAsync(chartData, lineChartOptions); + } + + private async Task UpdateIndiaNextOverRunsAsync() + { + if (indiaCurrentOver > 0 && indiaCurrentOver > indiaRunsArray.Count - 1) + return; + + chartData = await lineChart.AddDataAsync(chartData, $"{indiaCurrentOver + 1}", new LineChartDatasetData("India", indiaRunsArray[indiaCurrentOver])); + indiaCurrentOver++; + } + + private async Task UpdateEnglandNextOverRunsAsync() + { + if (englandCurrentOver > 0 && englandCurrentOver > englandRunsArray.Count - 1) + return; + + chartData = await lineChart.AddDataAsync(chartData, $"{englandCurrentOver + 1}", new LineChartDatasetData("England", englandRunsArray[englandCurrentOver])); + englandCurrentOver++; + } + + private List GetDefaultDatasets() + { + var datasets = new List + { + new LineChartDataset + { + Label = "India", + Data = new List(), + BackgroundColor = new List { "rgb(88, 80, 141)" }, + BorderColor = new List { "rgb(88, 80, 141)" }, + BorderWidth = new List { 2 }, + HoverBorderWidth = new List { 4 }, + PointBackgroundColor = new List { "rgb(88, 80, 141)" }, + PointBorderColor = new List { "rgb(88, 80, 141)" }, + PointRadius = new List { 0 }, // hide points + PointHoverRadius = new List { 4 } + }, + new LineChartDataset + { + Label = "England", + Data = new List(), + BackgroundColor = new List { "rgb(255, 166, 0)" }, + BorderColor = new List { "rgb(255, 166, 0)" }, + BorderWidth = new List { 2 }, + HoverBorderWidth = new List { 4 }, + PointBackgroundColor = new List { "rgb(255, 166, 0)" }, + PointBorderColor = new List { "rgb(255, 166, 0)" }, + PointRadius = new List { 0 }, // hide points + PointHoverRadius = new List { 4 } + } + }; + + return datasets; + } + + private LineChartOptions GetLineChartOptions() + { + var options = new LineChartOptions(); + + options.Interaction.Mode = InteractionMode.Index; + + options.Plugins.Title!.Text = "WORM"; + options.Plugins.Title.Display = true; + options.Plugins.Title!.Font!.Size = 20; + + options.Responsive = true; + + options.Scales.X!.Title!.Text = "Overs"; + options.Scales.X.Title.Display = true; + + options.Scales.Y!.Title!.Text = "Runs"; + options.Scales.Y.Title.Display = true; + options.Scales.Y.SuggestedMax = 150; + + return options; + } + +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/LineCharts/LineChart_Demo_04_Datalabels.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/LineCharts/LineChart_Demo_04_Datalabels.razor new file mode 100644 index 000000000..6d3bcdde4 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/LineCharts/LineChart_Demo_04_Datalabels.razor @@ -0,0 +1,99 @@ + + +@code { + private LineChart lineChart = default!; + private LineChartOptions lineChartOptions = default!; + private ChartData chartData = default!; + + protected override void OnInitialized() + { + var colors = ColorBuilder.CategoricalTwelveColors; + + var labels = new List { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; + var datasets = new List(); + + var dataset1 = new LineChartDataset + { + Label = "Windows", + Data = new List { 7265791, 5899643, 6317759, 6315641, 5338211, 8496306, 7568556, 8538933, 8274297, 8657298, 7548388, 7764845 }, + BackgroundColor = new List { colors[0] }, + BorderColor = new List { colors[0] }, + BorderWidth = new List { 2 }, + HoverBorderWidth = new List { 4 }, + PointBackgroundColor = new List { colors[0] }, + PointRadius = new List { 3 }, // show points + PointHoverRadius = new List { 4 }, + + // datalabels + Datalabels = new() { Align = "end", Anchor = "end" } + }; + datasets.Add(dataset1); + + var dataset2 = new LineChartDataset + { + Label = "macOS", + Data = new List { 1809499, 1816642, 2122410, 1809499, 1850793, 1846743, 1954797, 2391313, 1983430, 2469918, 2633303, 2821149 }, + BackgroundColor = new List { colors[1] }, + BorderColor = new List { colors[1] }, + BorderWidth = new List { 2 }, + HoverBorderWidth = new List { 4 }, + PointBackgroundColor = new List { colors[1] }, + PointRadius = new List { 3 }, // show points + PointHoverRadius = new List { 4 }, + + // datalabels + Datalabels = new() { Align = "end", Anchor = "end" } + }; + datasets.Add(dataset2); + + var dataset3 = new LineChartDataset + { + Label = "Other", + Data = new List { 1081241, 1100363, 1118136, 1073255, 1120315, 1395736, 1488788, 1489466, 1489947, 1414739, 1735811, 1820171 }, + BackgroundColor = new List { colors[2] }, + BorderColor = new List { colors[2] }, + BorderWidth = new List { 2 }, + HoverBorderWidth = new List { 4 }, + PointBackgroundColor = new List { colors[2] }, + PointRadius = new List { 3 }, // show points + PointHoverRadius = new List { 4 }, + + // datalabels + Datalabels = new() { Align = "start", Anchor = "start" } + }; + datasets.Add(dataset3); + + chartData = new ChartData + { + Labels = labels, + Datasets = datasets + }; + + lineChartOptions = new(); + lineChartOptions.Responsive = true; + lineChartOptions.Interaction = new Interaction { Mode = InteractionMode.Index }; + + lineChartOptions.Scales.X!.Title!.Text = "2019"; + lineChartOptions.Scales.X.Title.Display = true; + + lineChartOptions.Scales.Y!.Title!.Text = "Visitors"; + lineChartOptions.Scales.Y.Title.Display = true; + + lineChartOptions.Plugins.Title!.Text = "Operating system"; + lineChartOptions.Plugins.Title.Display = true; + + // datalabels + lineChartOptions.Plugins.Datalabels.Color = "white"; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + // pass the plugin name to enable the data labels + await lineChart.InitializeAsync(chartData: chartData, chartOptions: lineChartOptions, plugins: new string[] { "ChartDataLabels" }); + } + await base.OnAfterRenderAsync(firstRender); + } + +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/PieCharts/PieChartDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/PieCharts/PieChartDocumentation.razor new file mode 100644 index 000000000..b9036aa64 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/PieCharts/PieChartDocumentation.razor @@ -0,0 +1,43 @@ +@page "/charts/pie-chart" + +@title + + + +

Blazor Pie Chart

+
+ A Blazor Bootstrap pie chart component is a circular chart that shows the proportional values of different categories. +
+ + + + +
+ Refer to the getting started guide for setting up charts. +
+ + +
+ In the following example, a categorical 12-color palette is used. +
+ + For data visualization, you can use the predefined palettes ColorBuilder.CategoricalTwelveColors for a 12-color palette and ColorBuilder.CategoricalSixColors for a 6-color palette. + These palettes offer a range of distinct and visually appealing colors that can be applied to represent different categories or data elements in your visualizations. + + + + + + + +
+ This sample demonstrates how to change the position of the chart legend. +
+ + +@code { + private string pageUrl = "/charts/pie-chart"; + private string title = "Blazor Pie Chart"; + private string description = "A Blazor Bootstrap pie chart component is a circular chart that shows the proportional values of different categories."; + private string imageUrl = "https://i.imgur.com/ieBupT2.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/PieCharts/PieChart_Demo_01_Examples.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/PieCharts/PieChart_Demo_01_Examples.razor new file mode 100644 index 000000000..a89328975 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/PieCharts/PieChart_Demo_01_Examples.razor @@ -0,0 +1,155 @@ + + + + + + +@code { + private PieChart pieChart = default!; + private PieChartOptions pieChartOptions = default!; + private ChartData chartData = default!; + private string[]? backgroundColors; + + private int datasetsCount = 0; + private int dataLabelsCount = 0; + + private Random random = new(); + + protected override void OnInitialized() + { + backgroundColors = ColorBuilder.CategoricalTwelveColors; + chartData = new ChartData { Labels = GetDefaultDataLabels(4), Datasets = GetDefaultDataSets(1) }; + + pieChartOptions = new(); + pieChartOptions.Responsive = true; + pieChartOptions.Plugins.Title!.Text = "2022 - Sales"; + pieChartOptions.Plugins.Title.Display = true; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await pieChart.InitializeAsync(chartData, pieChartOptions); + } + await base.OnAfterRenderAsync(firstRender); + } + + private async Task RandomizeAsync() + { + if (chartData is null || chartData.Datasets is null || !chartData.Datasets.Any()) return; + + var newDatasets = new List(); + + foreach (var dataset in chartData.Datasets) + { + if (dataset is PieChartDataset pieChartDataset + && pieChartDataset is not null + && pieChartDataset.Data is not null) + { + var count = pieChartDataset.Data.Count; + + var newData = new List(); + for (var i = 0; i < count; i++) + { + newData.Add(random.Next(0, 100)); + } + + pieChartDataset.Data = newData; + newDatasets.Add(pieChartDataset); + } + } + + chartData.Datasets = newDatasets; + + await pieChart.UpdateAsync(chartData, pieChartOptions); + } + + private async Task AddDatasetAsync() + { + if (chartData is null || chartData.Datasets is null) return; + + var chartDataset = GetRandomPieChartDataset(); + chartData = await pieChart.AddDatasetAsync(chartData, chartDataset, pieChartOptions); + } + + private async Task AddDataAsync() + { + if (dataLabelsCount >= 12) + return; + + if (chartData is null || chartData.Datasets is null) + return; + + var data = new List(); + foreach (var dataset in chartData.Datasets) + { + if (dataset is PieChartDataset pieChartDataset) + data.Add(new PieChartDatasetData(pieChartDataset.Label, random.Next(0, 100), backgroundColors![dataLabelsCount])); + } + + chartData = await pieChart.AddDataAsync(chartData, GetNextDataLabel(), data); + + dataLabelsCount += 1; + } + + #region Data Preparation + + private List GetDefaultDataSets(int numberOfDatasets) + { + var datasets = new List(); + + for (var index = 0; index < numberOfDatasets; index++) + { + datasets.Add(GetRandomPieChartDataset()); + } + + return datasets; + } + + private PieChartDataset GetRandomPieChartDataset() + { + datasetsCount += 1; + return new() { Label = $"Team {datasetsCount}", Data = GetRandomData(), BackgroundColor = GetRandomBackgroundColors() }; + } + + private List GetRandomData() + { + var data = new List(); + for (var index = 0; index < dataLabelsCount; index++) + { + data.Add(random.Next(0, 100)); + } + + return data; + } + + private List GetRandomBackgroundColors() + { + var colors = new List(); + for (var index = 0; index < dataLabelsCount; index++) + { + colors.Add(backgroundColors![index]); + } + + return colors; + } + + private List GetDefaultDataLabels(int numberOfLabels) + { + var labels = new List(); + for (var index = 0; index < numberOfLabels; index++) + { + labels.Add(GetNextDataLabel()); + dataLabelsCount += 1; + } + + return labels; + } + + private string GetNextDataLabel() => $"Product {dataLabelsCount + 1}"; + + private string GetNextDataBackgrounfColor() => backgroundColors![dataLabelsCount]; + + #endregion Data Preparation +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/PieCharts/PieChart_Demo_02_Datalabels.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/PieCharts/PieChart_Demo_02_Datalabels.razor new file mode 100644 index 000000000..d49497d23 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/PieCharts/PieChart_Demo_02_Datalabels.razor @@ -0,0 +1,156 @@ + + + + + +@code { + private PieChart pieChart = default!; + private PieChartOptions pieChartOptions = default!; + private ChartData chartData = default!; + private string[]? backgroundColors; + + private int datasetsCount = 0; + private int dataLabelsCount = 0; + + private Random random = new(); + + protected override void OnInitialized() + { + backgroundColors = ColorBuilder.CategoricalTwelveColors; + chartData = new ChartData { Labels = GetDefaultDataLabels(4), Datasets = GetDefaultDataSets(3) }; + + pieChartOptions = new(); + pieChartOptions.Responsive = true; + pieChartOptions.Plugins.Title!.Text = "2022 - Sales"; + pieChartOptions.Plugins.Title.Display = true; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + // pass the plugin name to enable the data labels + await pieChart.InitializeAsync(chartData: chartData, chartOptions: pieChartOptions, plugins: new string[] { "ChartDataLabels" }); + } + await base.OnAfterRenderAsync(firstRender); + } + + private async Task RandomizeAsync() + { + if (chartData is null || chartData.Datasets is null || !chartData.Datasets.Any()) return; + + var newDatasets = new List(); + + foreach (var dataset in chartData.Datasets) + { + if (dataset is PieChartDataset pieChartDataset + && pieChartDataset is not null + && pieChartDataset.Data is not null) + { + var count = pieChartDataset.Data.Count; + + var newData = new List(); + for (var i = 0; i < count; i++) + { + newData.Add(random.Next(0, 100)); + } + + pieChartDataset.Data = newData; + newDatasets.Add(pieChartDataset); + } + } + + chartData.Datasets = newDatasets; + + await pieChart.UpdateAsync(chartData, pieChartOptions); + } + + private async Task AddDataAsync() + { + if (dataLabelsCount >= 12) + return; + + if (chartData is null || chartData.Datasets is null) + return; + + var data = new List(); + foreach (var dataset in chartData.Datasets) + { + if (dataset is PieChartDataset pieChartDataset) + data.Add(new PieChartDatasetData(pieChartDataset.Label, random.Next(0, 100), backgroundColors![dataLabelsCount])); + } + + chartData = await pieChart.AddDataAsync(chartData, GetNextDataLabel(), data); + + dataLabelsCount += 1; + } + + #region Data Preparation + + private List GetDefaultDataSets(int numberOfDatasets) + { + var datasets = new List(); + + for (var index = 0; index < numberOfDatasets; index++) + { + var dataset = GetRandomPieChartDataset(); + + if (index == 0) + dataset.Datalabels.Anchor = "end"; + else if (index == numberOfDatasets - 1) + dataset.Datalabels.Anchor = "end"; + else + dataset.Datalabels.Anchor = "center"; + + datasets.Add(dataset); + } + + return datasets; + } + + private PieChartDataset GetRandomPieChartDataset() + { + datasetsCount += 1; + return new() { Label = $"Team {datasetsCount}", Data = GetRandomData(), BackgroundColor = GetRandomBackgroundColors() }; + } + + private List GetRandomData() + { + var data = new List(); + for (var index = 0; index < dataLabelsCount; index++) + { + data.Add(random.Next(0, 100)); + } + + return data; + } + + private List GetRandomBackgroundColors() + { + var colors = new List(); + for (var index = 0; index < dataLabelsCount; index++) + { + colors.Add(backgroundColors![index]); + } + + return colors; + } + + private List GetDefaultDataLabels(int numberOfLabels) + { + var labels = new List(); + for (var index = 0; index < numberOfLabels; index++) + { + labels.Add(GetNextDataLabel()); + dataLabelsCount += 1; + } + + return labels; + } + + private string GetNextDataLabel() => $"Product {dataLabelsCount + 1}"; + + private string GetNextDataBackgrounfColor() => backgroundColors![dataLabelsCount]; + + #endregion Data Preparation +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/PieCharts/PieChart_Demo_03_Change_Legend_Position.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/PieCharts/PieChart_Demo_03_Change_Legend_Position.razor new file mode 100644 index 000000000..62657b896 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/PieCharts/PieChart_Demo_03_Change_Legend_Position.razor @@ -0,0 +1,111 @@ + + + + + + + +@code { + private PieChart pieChart = default!; + private PieChartOptions pieChartOptions = default!; + private ChartData chartData = default!; + private string[]? backgroundColors; + + private int datasetsCount = 0; + private int dataLabelsCount = 0; + + private Random random = new(); + + protected override void OnInitialized() + { + backgroundColors = ColorBuilder.CategoricalTwelveColors; + chartData = new ChartData { Labels = GetDefaultDataLabels(4), Datasets = GetDefaultDataSets(1) }; + + pieChartOptions = new(); + pieChartOptions.Responsive = true; + pieChartOptions.Plugins.Title!.Text = "2022 - Sales"; + pieChartOptions.Plugins.Title.Display = true; + + pieChartOptions.Plugins.Legend.Position = "right"; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await pieChart.InitializeAsync(chartData, pieChartOptions); + } + await base.OnAfterRenderAsync(firstRender); + } + + private async Task PositionTopAsync() => await UpdatePositionAsync("top"); + private async Task PositionRightAsync() => await UpdatePositionAsync("right"); + private async Task PositionBottomAsync() => await UpdatePositionAsync("bottom"); + private async Task PositionLeftAsync() => await UpdatePositionAsync("left"); + + private async Task UpdatePositionAsync(string position) + { + pieChartOptions.Plugins.Legend.Position = position; + await pieChart.UpdateAsync(chartData, pieChartOptions); + } + + #region Data Preparation + + private List GetDefaultDataSets(int numberOfDatasets) + { + var datasets = new List(); + + for (var index = 0; index < numberOfDatasets; index++) + { + datasets.Add(GetRandomPieChartDataset()); + } + + return datasets; + } + + private PieChartDataset GetRandomPieChartDataset() + { + datasetsCount += 1; + return new() { Label = $"Team {datasetsCount}", Data = GetRandomData(), BackgroundColor = GetRandomBackgroundColors() }; + } + + private List GetRandomData() + { + var data = new List(); + for (var index = 0; index < dataLabelsCount; index++) + { + data.Add(random.Next(0, 100)); + } + + return data; + } + + private List GetRandomBackgroundColors() + { + var colors = new List(); + for (var index = 0; index < dataLabelsCount; index++) + { + colors.Add(backgroundColors![index]); + } + + return colors; + } + + private List GetDefaultDataLabels(int numberOfLabels) + { + var labels = new List(); + for (var index = 0; index < numberOfLabels; index++) + { + labels.Add(GetNextDataLabel()); + dataLabelsCount += 1; + } + + return labels; + } + + private string GetNextDataLabel() => $"Product {dataLabelsCount + 1}"; + + private string GetNextDataBackgrounfColor() => backgroundColors![dataLabelsCount]; + + #endregion Data Preparation +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/Utils_Colors.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/Utils_Colors.razor new file mode 100644 index 000000000..0d47f71e6 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Charts/Utils_Colors.razor @@ -0,0 +1,199 @@ +@using System.Drawing; + + + + + + + + + + + + + @{ + var i = 1; + foreach (var color in chartColors) + { + + + + + + + + + i++; + } + } + +
#ColorColor NameHexaRgb
@i@color.Name@color.Hex@color.Rgb
+ +@code { + readonly List chartColors = new(); + + protected override void OnInitialized() + { + chartColors.Add(new ChartColor(Color.AliceBlue)); + chartColors.Add(new ChartColor(Color.AntiqueWhite)); + chartColors.Add(new ChartColor(Color.Aqua)); + chartColors.Add(new ChartColor(Color.Aquamarine)); + chartColors.Add(new ChartColor(Color.Azure)); + chartColors.Add(new ChartColor(Color.Beige)); + chartColors.Add(new ChartColor(Color.Bisque)); + chartColors.Add(new ChartColor(Color.Black)); + chartColors.Add(new ChartColor(Color.BlanchedAlmond)); + chartColors.Add(new ChartColor(Color.Blue)); + chartColors.Add(new ChartColor(Color.BlueViolet)); + chartColors.Add(new ChartColor(Color.Brown)); + chartColors.Add(new ChartColor(Color.BurlyWood)); + chartColors.Add(new ChartColor(Color.CadetBlue)); + chartColors.Add(new ChartColor(Color.Chartreuse)); + chartColors.Add(new ChartColor(Color.Chocolate)); + chartColors.Add(new ChartColor(Color.Coral)); + chartColors.Add(new ChartColor(Color.CornflowerBlue)); + chartColors.Add(new ChartColor(Color.Cornsilk)); + chartColors.Add(new ChartColor(Color.Crimson)); + chartColors.Add(new ChartColor(Color.Cyan)); + chartColors.Add(new ChartColor(Color.DarkBlue)); + chartColors.Add(new ChartColor(Color.DarkCyan)); + chartColors.Add(new ChartColor(Color.DarkGoldenrod)); + chartColors.Add(new ChartColor(Color.DarkGray)); + chartColors.Add(new ChartColor(Color.DarkGreen)); + chartColors.Add(new ChartColor(Color.DarkKhaki)); + chartColors.Add(new ChartColor(Color.DarkMagenta)); + chartColors.Add(new ChartColor(Color.DarkOliveGreen)); + chartColors.Add(new ChartColor(Color.DarkOrange)); + chartColors.Add(new ChartColor(Color.DarkOrchid)); + chartColors.Add(new ChartColor(Color.DarkRed)); + chartColors.Add(new ChartColor(Color.DarkSalmon)); + chartColors.Add(new ChartColor(Color.DarkSeaGreen)); + chartColors.Add(new ChartColor(Color.DarkSlateBlue)); + chartColors.Add(new ChartColor(Color.DarkSlateGray)); + chartColors.Add(new ChartColor(Color.DarkTurquoise)); + chartColors.Add(new ChartColor(Color.DarkViolet)); + chartColors.Add(new ChartColor(Color.DeepPink)); + chartColors.Add(new ChartColor(Color.DeepSkyBlue)); + chartColors.Add(new ChartColor(Color.DimGray)); + chartColors.Add(new ChartColor(Color.DodgerBlue)); + chartColors.Add(new ChartColor(Color.Firebrick)); + chartColors.Add(new ChartColor(Color.FloralWhite)); + chartColors.Add(new ChartColor(Color.ForestGreen)); + chartColors.Add(new ChartColor(Color.Fuchsia)); + chartColors.Add(new ChartColor(Color.Gainsboro)); + chartColors.Add(new ChartColor(Color.GhostWhite)); + chartColors.Add(new ChartColor(Color.Gold)); + chartColors.Add(new ChartColor(Color.Goldenrod)); + chartColors.Add(new ChartColor(Color.Gray)); + chartColors.Add(new ChartColor(Color.Green)); + chartColors.Add(new ChartColor(Color.GreenYellow)); + chartColors.Add(new ChartColor(Color.Honeydew)); + chartColors.Add(new ChartColor(Color.HotPink)); + chartColors.Add(new ChartColor(Color.IndianRed)); + chartColors.Add(new ChartColor(Color.Indigo)); + chartColors.Add(new ChartColor(Color.Ivory)); + chartColors.Add(new ChartColor(Color.Khaki)); + chartColors.Add(new ChartColor(Color.Lavender)); + chartColors.Add(new ChartColor(Color.LavenderBlush)); + chartColors.Add(new ChartColor(Color.LawnGreen)); + chartColors.Add(new ChartColor(Color.LemonChiffon)); + chartColors.Add(new ChartColor(Color.LightBlue)); + chartColors.Add(new ChartColor(Color.LightCoral)); + chartColors.Add(new ChartColor(Color.LightCyan)); + chartColors.Add(new ChartColor(Color.LightGoldenrodYellow)); + chartColors.Add(new ChartColor(Color.LightGray)); + chartColors.Add(new ChartColor(Color.LightGreen)); + chartColors.Add(new ChartColor(Color.LightPink)); + chartColors.Add(new ChartColor(Color.LightSalmon)); + chartColors.Add(new ChartColor(Color.LightSeaGreen)); + chartColors.Add(new ChartColor(Color.LightSkyBlue)); + chartColors.Add(new ChartColor(Color.LightSlateGray)); + chartColors.Add(new ChartColor(Color.LightSteelBlue)); + chartColors.Add(new ChartColor(Color.LightYellow)); + chartColors.Add(new ChartColor(Color.Lime)); + chartColors.Add(new ChartColor(Color.LimeGreen)); + chartColors.Add(new ChartColor(Color.Linen)); + chartColors.Add(new ChartColor(Color.Magenta)); + chartColors.Add(new ChartColor(Color.Maroon)); + chartColors.Add(new ChartColor(Color.MediumAquamarine)); + chartColors.Add(new ChartColor(Color.MediumBlue)); + chartColors.Add(new ChartColor(Color.MediumOrchid)); + chartColors.Add(new ChartColor(Color.MediumPurple)); + chartColors.Add(new ChartColor(Color.MediumSeaGreen)); + chartColors.Add(new ChartColor(Color.MediumSlateBlue)); + chartColors.Add(new ChartColor(Color.MediumSpringGreen)); + chartColors.Add(new ChartColor(Color.MediumTurquoise)); + chartColors.Add(new ChartColor(Color.MediumVioletRed)); + chartColors.Add(new ChartColor(Color.MidnightBlue)); + chartColors.Add(new ChartColor(Color.MintCream)); + chartColors.Add(new ChartColor(Color.MistyRose)); + chartColors.Add(new ChartColor(Color.Moccasin)); + chartColors.Add(new ChartColor(Color.NavajoWhite)); + chartColors.Add(new ChartColor(Color.Navy)); + chartColors.Add(new ChartColor(Color.OldLace)); + chartColors.Add(new ChartColor(Color.Olive)); + chartColors.Add(new ChartColor(Color.OliveDrab)); + chartColors.Add(new ChartColor(Color.Orange)); + chartColors.Add(new ChartColor(Color.OrangeRed)); + chartColors.Add(new ChartColor(Color.Orchid)); + chartColors.Add(new ChartColor(Color.PaleGoldenrod)); + chartColors.Add(new ChartColor(Color.PaleGreen)); + chartColors.Add(new ChartColor(Color.PaleTurquoise)); + chartColors.Add(new ChartColor(Color.PaleVioletRed)); + chartColors.Add(new ChartColor(Color.PapayaWhip)); + chartColors.Add(new ChartColor(Color.PeachPuff)); + chartColors.Add(new ChartColor(Color.Peru)); + chartColors.Add(new ChartColor(Color.Pink)); + chartColors.Add(new ChartColor(Color.Plum)); + chartColors.Add(new ChartColor(Color.PowderBlue)); + chartColors.Add(new ChartColor(Color.Purple)); + chartColors.Add(new ChartColor(Color.RebeccaPurple)); + chartColors.Add(new ChartColor(Color.Red)); + chartColors.Add(new ChartColor(Color.RosyBrown)); + chartColors.Add(new ChartColor(Color.RoyalBlue)); + chartColors.Add(new ChartColor(Color.SaddleBrown)); + chartColors.Add(new ChartColor(Color.Salmon)); + chartColors.Add(new ChartColor(Color.SandyBrown)); + chartColors.Add(new ChartColor(Color.SeaGreen)); + chartColors.Add(new ChartColor(Color.SeaShell)); + chartColors.Add(new ChartColor(Color.Sienna)); + chartColors.Add(new ChartColor(Color.Silver)); + chartColors.Add(new ChartColor(Color.SkyBlue)); + chartColors.Add(new ChartColor(Color.SlateBlue)); + chartColors.Add(new ChartColor(Color.SlateGray)); + chartColors.Add(new ChartColor(Color.Snow)); + chartColors.Add(new ChartColor(Color.SpringGreen)); + chartColors.Add(new ChartColor(Color.SteelBlue)); + chartColors.Add(new ChartColor(Color.Tan)); + chartColors.Add(new ChartColor(Color.Teal)); + chartColors.Add(new ChartColor(Color.Thistle)); + chartColors.Add(new ChartColor(Color.Tomato)); + chartColors.Add(new ChartColor(Color.Transparent)); + chartColors.Add(new ChartColor(Color.Turquoise)); + chartColors.Add(new ChartColor(Color.Violet)); + chartColors.Add(new ChartColor(Color.Wheat)); + chartColors.Add(new ChartColor(Color.White)); + chartColors.Add(new ChartColor(Color.WhiteSmoke)); + chartColors.Add(new ChartColor(Color.Yellow)); + chartColors.Add(new ChartColor(Color.YellowGreen)); + } + + public class ChartColor + { + public ChartColor(Color color) + { + Name = color.Name; + Hex = color.ToHexString(); + Hexa = color.ToHexaString(); + Rgb = color.ToRgbString(); + Rgba = color.ToRgbaString(); + } + + public string Name { get; set; } + public string Hex { get; set; } + public string Hexa { get; set; } + public string Rgb { get; set; } + public string Rgba { get; set; } + } + +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Collapse/CollapseDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Collapse/CollapseDocumentation.razor new file mode 100644 index 000000000..13e2ccc98 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Collapse/CollapseDocumentation.razor @@ -0,0 +1,74 @@ +@page "/collapse" + +@title + + + +

Blazor Collapse

+
+ Toggle the visibility of content across your project with the Blazor Bootstrap Collapse component. +
+ + + + +
+ The Collapse component is used to show and hide content. Use ShowAsync, HideAsync, and ToggleAsync methods to toggle the content. + Collapsing an element will animate the height from its current value to 0. +
+ + + The animation effect of this component is dependent on the prefers-reduced-motion media query.
+ See the reduced motion section of our accessibility documentation. +
+ + +
+ Click the buttons below to show and hide the content. +
+ + + +
+ The Collapse component supports horizontal collapsing. Set the Horizontal parameter to true to enable horizontal collapsing. +
+ + + +
+ Blazor Bootstrap Collapse component exposes a few events for hooking into collapse functionality. + + + + + + + + + + + + + + + + + + + + + + + + + +
Event NameDescription
OnHidingThis event is fired immediately when the hide method has been called.
OnHiddenThis event is fired when a collapse component has been hidden from the user (will wait for CSS transitions to complete).
OnShowingThis event fires immediately when the show method is called.
OnShownThis event is fired when a collapse component has been made visible to the user (will wait for CSS transitions to complete).
+
+ + +@code { + private string pageUrl = "/collapse"; + private string title = "Blazor Collapse Component"; + private string description = "Toggle the visibility of content across your project with the Blazor Bootstrap Collapse component."; + private string imageUrl = "https://i.imgur.com/8A0emQe.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Collapse/Collapse_Demo_01_Examples.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Collapse/Collapse_Demo_01_Examples.razor new file mode 100644 index 000000000..9c6fc0184 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Collapse/Collapse_Demo_01_Examples.razor @@ -0,0 +1,19 @@ + + + + + + + + Some placeholder content for the collapse component. This panel is hidden by default but revealed when the user activates the relevant trigger. + + + + +@code { + Collapse collapse1 = default!; + + private async Task ShowContentAsync() => await collapse1.ShowAsync(); + private async Task HideContentAsync() => await collapse1.HideAsync(); + private async Task ToggleContentAsync() => await collapse1.ToggleAsync(); +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Collapse/Collapse_Demo_02_Horizontal.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Collapse/Collapse_Demo_02_Horizontal.razor new file mode 100644 index 000000000..d5d7be886 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Collapse/Collapse_Demo_02_Horizontal.razor @@ -0,0 +1,19 @@ + + + + + + + + This is some placeholder content for a horizontal collapse. It's hidden by default and shown when triggered. + + + + +@code { + Collapse collapse1 = default!; + + private async Task ShowContentAsync() => await collapse1.ShowAsync(); + private async Task HideContentAsync() => await collapse1.HideAsync(); + private async Task ToggleContentAsync() => await collapse1.ToggleAsync(); +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Collapse/Collapse_Demo_03_Events.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Collapse/Collapse_Demo_03_Events.razor new file mode 100644 index 000000000..da71c0c9c --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Collapse/Collapse_Demo_03_Events.razor @@ -0,0 +1,44 @@ + + + + + + + + + Some placeholder content for the collapse component. This panel is hidden by default but revealed when the user activates the relevant trigger. + + + + +
+ @foreach (var item in messages) + { +

@item

+ } +
+ +@code { + Collapse collapse1 = default!; + + List messages = new List(); + + private async Task ShowContentAsync() => await collapse1.ShowAsync(); + private async Task HideContentAsync() => await collapse1.HideAsync(); + private async Task ToggleContentAsync() => await collapse1.ToggleAsync(); + + private void OnCollapseShowingAsync() => messages.Add($"Event: OnShowing called {DateTime.Now.ToLocalTime()}"); + + private void OnCollapseShownAsync() => messages.Add($"Event: OnShown called {DateTime.Now.ToLocalTime()}"); + + private void OnCollapseHidingAsync() => messages.Add($"Event: OnHiding called {DateTime.Now.ToLocalTime()}"); + + private void OnCollapseHiddenAsync() => messages.Add($"Event: OnHidden called {DateTime.Now.ToLocalTime()}"); + + private void ClearMessage() => messages = new List(); +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialogDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialogDocumentation.razor new file mode 100644 index 000000000..f5b6ec523 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialogDocumentation.razor @@ -0,0 +1,74 @@ +@page "/confirm-dialog" + +@title + + + +

Blazor Confirm Dialog

+
+ Use Blazor Bootstrap confirm dialog component if you want the user to verify or accept something. +
+ + + + +
+ + + +
+ Render different components dynamically within the confirm dialog without iterating through possible types or using conditional logic. +
+
+ If dynamically-rendered components have component parameters, pass them as an IDictionary. The string is the parameter's name, and the object is the parameter's value. +
+
+ In the below example, we used Toast Service to show the user confirmation. +
+ +EmployeeDemoComponent.razor + + + +
+ Use ConfirmDialogOptions to change the text and color of the button. +
+ + + +
+ Confirm dialog have three optional sizes. These sizes kick in at certain breakpoints to avoid horizontal scrollbars on narrower viewports. +
+ + + +
+ When dialogs become too long for the user's viewport or device, they scroll independent of the page itself. Try the demo below to see what we mean. +
+ +
You can also create a scrollable dialog that allows scroll the dialog body by updating DialogOptions.IsScrollable="true".
+ + + +
+ Add DialogOptions.IsVerticallyCentered="true" to vertically center the confirm dialog. +
+ +
+ + + + + By default, auto focus on the "Yes" button is enabled. + +
+ To disabe the autofocus, set AutoFocusYesButton = false on the ConfirmDialogOptions. +
+ + +@code { + private string pageUrl = "/confirm-dialog"; + private string title = "Blazor Confirm Dialog Component"; + private string description = "Use Blazor Bootstrap confirm dialog component if you want the user to verify or accept something."; + private string imageUrl = "https://i.imgur.com/chdLk3D.jpg"; +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_01_Examples.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_01_Examples.razor new file mode 100644 index 000000000..1ae92a16b --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_01_Examples.razor @@ -0,0 +1,24 @@ + + + + +@code { + private ConfirmDialog dialog = default!; + + private async Task ShowConfirmationAsync() + { + var confirmation = await dialog.ShowAsync( + title: "Are you sure you want to delete this?", + message1: "This will delete the record. Once deleted can not be rolled back.", + message2: "Do you want to proceed?"); + + if (confirmation) + { + // do something + } + else + { + // do something + } + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_03_Dynamic_Component_As_Confirm_Dialog.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_03_Dynamic_Component_As_Confirm_Dialog.razor new file mode 100644 index 000000000..c52e88bb6 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_03_Dynamic_Component_As_Confirm_Dialog.razor @@ -0,0 +1,26 @@ + + + + +@code { + private ConfirmDialog dialog = default!; + + [Inject] ToastService ToastService { get; set; } = default!; + + private async Task DeleteEmployeeAsync() + { + var parameters = new Dictionary(); + parameters.Add("EmployeeId", 321); + + var confirmation = await dialog.ShowAsync("Are you sure you want to delete this employee?", parameters); + + if (confirmation) + { + // call API to delete the employee + // show acknowledgment to the user + ToastService.Notify(new ToastMessage(ToastType.Success, $"Employee deleted successfully.")); + } + else + ToastService.Notify(new ToastMessage(ToastType.Secondary, $"Delete action canceled.")); + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_04_Change_Buttons_Text_And_Color.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_04_Change_Buttons_Text_And_Color.razor new file mode 100644 index 000000000..a8a9abc72 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_04_Change_Buttons_Text_And_Color.razor @@ -0,0 +1,32 @@ + + + + +@code { + private ConfirmDialog dialog = default!; + + private async Task ShowSaveConfirmationAsync() + { + var options = new ConfirmDialogOptions + { + YesButtonText = "OK", + YesButtonColor = ButtonColor.Success, + NoButtonText = "CANCEL", + NoButtonColor = ButtonColor.Danger + }; + + var confirmation = await dialog.ShowAsync( + title: "Simple Confirm Dialog", + message1: "Do you want to proceed?", + confirmDialogOptions: options); + + if (confirmation) + { + // do something + } + else + { + // do something + } + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_05_Optional_Sizes.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_05_Optional_Sizes.razor new file mode 100644 index 000000000..2377d5a0b --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_05_Optional_Sizes.razor @@ -0,0 +1,28 @@ + + + + + + +@code { + private ConfirmDialog dialog = default!; + + private async Task ShowConfirmationAsync(DialogSize size) + { + var options = new ConfirmDialogOptions { Size = size }; + + var confirmation = await dialog.ShowAsync( + title: "Simple Confirm Dialog", + message1: "Do you want to proceed?", + confirmDialogOptions: options); + + if (confirmation) + { + // do something + } + else + { + // do something + } + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_06_Scrolling_Long_Content_01.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_06_Scrolling_Long_Content_01.razor new file mode 100644 index 000000000..c271236df --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_06_Scrolling_Long_Content_01.razor @@ -0,0 +1,21 @@ + + + + +@code { + private ConfirmDialog dialog = default!; + + private async Task ShowDialogAsync() + { + var confirmation = await dialog.ShowAsync(title: "Confirm dialog title"); + + if (confirmation) + { + // do something + } + else + { + // do something + } + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_06_Scrolling_Long_Content_02.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_06_Scrolling_Long_Content_02.razor new file mode 100644 index 000000000..46000a6ed --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_06_Scrolling_Long_Content_02.razor @@ -0,0 +1,24 @@ + + + + +@code { + private ConfirmDialog dialog = default!; + + private async Task ShowDialogAsync() + { + var options = new ConfirmDialogOptions { IsScrollable = true }; + var confirmation = await dialog.ShowAsync( + title: "Confirm dialog title", + confirmDialogOptions: options); + + if (confirmation) + { + // do something + } + else + { + // do something + } + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_07_Vertically_Centered_01.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_07_Vertically_Centered_01.razor new file mode 100644 index 000000000..2ee591302 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_07_Vertically_Centered_01.razor @@ -0,0 +1,25 @@ + + + + +@code { + private ConfirmDialog dialog = default!; + + private async Task ShowDialogAsync() + { + var options = new ConfirmDialogOptions { IsVerticallyCentered = true }; + var confirmation = await dialog.ShowAsync( + title: "Simple Confirm Dialog", + message1: "Do you want to proceed?", + confirmDialogOptions: options); + + if (confirmation) + { + // do something + } + else + { + // do something + } + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_07_Vertically_Centered_02.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_07_Vertically_Centered_02.razor new file mode 100644 index 000000000..fc2232a33 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_07_Vertically_Centered_02.razor @@ -0,0 +1,23 @@ + + + + +@code { + private ConfirmDialog dialog = default!; + + private async Task ShowDialogAsync() + { + var options = new ConfirmDialogOptions { IsScrollable = true, IsVerticallyCentered = true }; + var confirmation = await dialog.ShowAsync(title: "Confirm dialog title", + confirmDialogOptions: options); + + if (confirmation) + { + // do something + } + else + { + // do something + } + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_08_Disable_AutoFocus_Yes_Button.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_08_Disable_AutoFocus_Yes_Button.razor new file mode 100644 index 000000000..f481f0ba5 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/ConfirmDialog_Demo_08_Disable_AutoFocus_Yes_Button.razor @@ -0,0 +1,24 @@ + + + + +@code { + private ConfirmDialog dialog = default!; + + private async Task ShowDialogAsync() + { + var confirmation = await dialog.ShowAsync( + title: "Confirm dialog title", + confirmDialogOptions: new ConfirmDialogOptions { AutoFocusYesButton = false } + ); + + if (confirmation) + { + // do something + } + else + { + // do something + } + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/EmployeeDemoComponent.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/EmployeeDemoComponent.razor new file mode 100644 index 000000000..30fa7deac --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/EmployeeDemoComponent.razor @@ -0,0 +1,27 @@ +
+
Employee Id :
+
@EmployeeId
+
+
+
First Name :
+
@employee?.FirstName
+
+
+
Last Name :
+
@employee?.LastName
+
+ +@code { + private Employee? employee; + + [Parameter] public int EmployeeId { get; set; } + + protected override void OnInitialized() + { + // get employee with {EmployeeId} from DB + + employee = new Employee { FirstName = "Vikram", LastName = "Reddy" }; + + base.OnInitialized(); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/LongContentDemoComponent.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/LongContentDemoComponent.razor new file mode 100644 index 000000000..c3d78ec98 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/ConfirmDialog/LongContentDemoComponent.razor @@ -0,0 +1,2 @@ +

This is some placeholder content to show the scrolling behavior for modals. Instead of repeating the text the modal, we use an inline style set a minimum height, thereby extending the length of the overall modal and demonstrating the overflow scrolling. When content becomes longer than the height of the viewport, scrolling will move the modal as needed.

+

This content should appear at the bottom after you scroll.

\ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/DropdownDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/DropdownDocumentation.razor new file mode 100644 index 000000000..293fd34dc --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/DropdownDocumentation.razor @@ -0,0 +1,181 @@ +@page "/dropdown" + +@title + + + +

Blazor Dropdown

+
+ Dropdowns are toggleable, contextual overlays for displaying lists of links and more. They are toggled by clicking, not by hovering; this is an intentional design decision'by bootstrap. +
+ + + + + + + + + + + + + + + + + + + +
+ To trigger DropdownMenu above elements, add the Direction="DropdownDirection.Dropup" to the Dropdown component. +
+ + + +
+ To center the DropdownMenu above the toggle, add the Direction="DropdownDirection.DropupCentered" to the Dropdown component. +
+ + + +
+ To trigger DropdownMenu at the right of elements, add the Direction="DropdownDirection.Dropend" to the Dropdown component. +
+ + + +
+ To trigger DropdownMenu at the left of elements, you can add the Direction="DropdownDirection.Dropstart" to the Dropdown component. +
+ + + +
+ To style DropdownItem as active, add the Active="true" parameter to the DropdownItem element in the DropdownMenu. +
+ + + +
+ To disable the dropdown, set the Disabled parameter to true on the Dropdown component. +
+ +
+ To style a dropdown item as disabled, set the Disabled parameter to true on the DropdownItem element in the DropdownMenu component. +
+ + + +
+

+ By default, a DropdownMenu is automatically positioned at 100% from the top and along the left side of its parent. + You can change this with the Position parameter. +

+

+ To right-align a DropdownMenu, add the Position="DropdownMenuPosition.End" parameter to the DropdownMenu component. + Directions are mirrored when using Bootstrap in RTL. +

+
+ + + + + +
Add a header to label sections of actions in any dropdown menu.
+ + + +
Separate groups of related menu items with a divider.
+ + + +
+ Place any freeform text within a dropdown menu with text and use spacing utilities. + Note that youll likely need additional sizing styles to constrain the menu width. +
+ + + +
+ Put a form within a dropdown menu, or make it into a dropdown menu, and use margin or padding utilities to give it the negative space you require. +
+ + + +
+ By default, the DropdownMenu is closed when clicking either inside or outside the DropdownMenu. + You can use the AutoClose and AutoCloseBehavior parameters to change this behavior of the Dropdown. +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
MethodDescription
HideAsync Hides the dropdown menu of a given navbar or tabbed navigation.
ShowAsyncShows the dropdown menu of a given navbar or tabbed navigation.
ToggleAsyncToggles the dropdown menu of a given navbar or tabbed navigation.
UpdateAsyncUpdates the position of an element’s dropdown.
+
+ + + +
+ All dropdown events are fired at the toggling element and then bubbled up. + + + + + + + + + + + + + + + + + + + + + + + + + + +
Event typeDescription
OnHidingThis event is fired immediately when the hide method has been called.
OnHiddenThis event is fired when an dropdown element has been hidden from the user (will wait for CSS transitions to complete).
OnShowingThis event fires immediately when the show instance method is called.
OnShownThis event is fired when an dropdown element has been made visible to the user (will wait for CSS transitions to complete).
+
+ + +@code { + private string pageUrl = "/dropdown"; + private string title = "Blazor Dropdown Component"; + private string description = "Dropdowns are toggleable, contextual overlays for displaying lists of links and more. They are toggled by clicking, not by hovering; this is an intentional design decision'by bootstrap."; + private string imageUrl = "https://i.imgur.com/beAr31J.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_01_Single_Button.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_01_Single_Button.razor new file mode 100644 index 000000000..2f7f66231 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_01_Single_Button.razor @@ -0,0 +1,8 @@ + + Dropdown button + + Action + Another action + Something else here + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_02_Color.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_02_Color.razor new file mode 100644 index 000000000..bf2326227 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_02_Color.razor @@ -0,0 +1,50 @@ +
+ + Primary + + Action + Another action + Something else here + + + + Secondary + + Action + Another action + Something else here + + + + Success + + Action + Another action + Something else here + + + + Info + + Action + Another action + Something else here + + + + Warning + + Action + Another action + Something else here + + + + Danger + + Action + Another action + Something else here + + +
diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_03_Split_Button.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_03_Split_Button.razor new file mode 100644 index 000000000..4d7c16681 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_03_Split_Button.razor @@ -0,0 +1,56 @@ +
+ + Primary + + + Action + Another action + Something else here + + + + Secondary + + + Action + Another action + Something else here + + + + Success + + + Action + Another action + Something else here + + + + Info + + + Action + Another action + Something else here + + + + Warning + + + Action + Another action + Something else here + + + + Danger + + + Action + Another action + Something else here + + +
diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_04_A_Sizing.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_04_A_Sizing.razor new file mode 100644 index 000000000..d4bb5669f --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_04_A_Sizing.razor @@ -0,0 +1,19 @@ +
+ + Large button + + Action + Another action + Something else here + + + + Large split button + + + Action + Another action + Something else here + + +
diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_04_B_Sizing.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_04_B_Sizing.razor new file mode 100644 index 000000000..d06e3bb71 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_04_B_Sizing.razor @@ -0,0 +1,19 @@ +
+ + Small button + + Action + Another action + Something else here + + + + Small split button + + + Action + Another action + Something else here + + +
diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_05_A_Directions_Dropup.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_05_A_Directions_Dropup.razor new file mode 100644 index 000000000..3388cef9b --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_05_A_Directions_Dropup.razor @@ -0,0 +1,19 @@ +
+ + Dropup button with text + + Action + Another action + Something else here + + + + Dropup split button + + + Action + Another action + Something else here + + +
diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_05_B_Directions_DropupCentered.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_05_B_Directions_DropupCentered.razor new file mode 100644 index 000000000..24c70ed3b --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_05_B_Directions_DropupCentered.razor @@ -0,0 +1,10 @@ +
+ + Centered dropup + + Action + Another action + Something else here + + +
diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_05_C_Directions_Dropend.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_05_C_Directions_Dropend.razor new file mode 100644 index 000000000..8c096878b --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_05_C_Directions_Dropend.razor @@ -0,0 +1,19 @@ +
+ + Dropend + + Action + Another action + Something else here + + + + Split dropend + + + Action + Another action + Something else here + + +
diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_05_D_Directions_Dropstart.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_05_D_Directions_Dropstart.razor new file mode 100644 index 000000000..74f41086c --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_05_D_Directions_Dropstart.razor @@ -0,0 +1,19 @@ +
+ + Dropstart + + Action + Another action + Something else here + + + + + + Action + Another action + Something else here + + Split dropstart + +
diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_06_Active.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_06_Active.razor new file mode 100644 index 000000000..15a8a928e --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_06_Active.razor @@ -0,0 +1,8 @@ + + Dropstart + + Action + Another action + Something else here + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_07_A_Disabled.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_07_A_Disabled.razor new file mode 100644 index 000000000..47bc0e1fa --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_07_A_Disabled.razor @@ -0,0 +1,19 @@ + + Dropstart + + Action + Another action + Something else here + + + +
+ + +
+@code +{ + private bool isDropdownDisabled = true; + private void EnableDropdown() => isDropdownDisabled = false; + private void DisableDropdown() => isDropdownDisabled = true; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_07_B_Disabled.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_07_B_Disabled.razor new file mode 100644 index 000000000..dd9b69576 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_07_B_Disabled.razor @@ -0,0 +1,8 @@ + + Dropstart + + Action + Another action + Something else here + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_08_Menu_Position.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_08_Menu_Position.razor new file mode 100644 index 000000000..949c37504 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_08_Menu_Position.razor @@ -0,0 +1,8 @@ + + Right-aligned menu example + + Action + Another action + Something else here + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_09_Header.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_09_Header.razor new file mode 100644 index 000000000..4de7db2cd --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_09_Header.razor @@ -0,0 +1,9 @@ + + Dropdown + + Dropdown header + Action + Another action + Something else here + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_10_Dividers.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_10_Dividers.razor new file mode 100644 index 000000000..2c9ec6319 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_10_Dividers.razor @@ -0,0 +1,10 @@ + + Dropdown + + Action + Another action + Something else here + Dropdown header + Separated link + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_11_Text.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_11_Text.razor new file mode 100644 index 000000000..a4416a8d4 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_11_Text.razor @@ -0,0 +1,7 @@ + + Dropdown + +

Some example text that's free-flowing within the dropdown menu.

+

And this is more example text.

+
+
diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_12_Forms.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_12_Forms.razor new file mode 100644 index 000000000..79b273879 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_12_Forms.razor @@ -0,0 +1,112 @@ +@using System.ComponentModel.DataAnnotations + + + + + Dropdown form + + + + +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+
+ + +
+
+
+
+
+ +@code { + private Invoice invoice = new(); + private EditContext editContext = default!; + + protected override void OnInitialized() + { + editContext = new EditContext(invoice); + base.OnInitialized(); + } + + protected override void OnParametersSet() + { + CalculateToatl(); + base.OnParametersSet(); + } + + private void PriceChanged(decimal? value) + { + invoice.Price = value; + CalculateToatl(); + } + + private void DiscountChanged(decimal? value) + { + invoice.Discount = value; + CalculateToatl(); + } + + private void CalculateToatl() + { + var price = invoice.Price.HasValue ? invoice.Price.Value : 0; + var discount = invoice.Discount.HasValue ? invoice.Discount.Value : 0; + invoice.Total = price - discount; + } + + public void HandleOnValidSubmit() + { + Console.WriteLine($"Price: {invoice.Price}"); + Console.WriteLine($"Discount: {invoice.Discount}"); + Console.WriteLine($"Total: {invoice.Total}"); + } + + private void ResetForm() + { + invoice = new(); + editContext = new EditContext(invoice); + } + + public class Invoice + { + [Required(ErrorMessage = "Price required.")] + [Range(60, 500, ErrorMessage = "Price should be between 60 and 500.")] + public decimal? Price { get; set; } = 232M; + + [Range(0, 50, ErrorMessage = "Discount should be between 0 and 50.")] + public decimal? Discount { get; set; } + + [Required(ErrorMessage = "Amount required.")] + [Range(10, 500, ErrorMessage = "Total should be between 60 and 500.")] + public decimal? Total { get; set; } + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_13_AutoClose.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_13_AutoClose.razor new file mode 100644 index 000000000..4508ab3d8 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_13_AutoClose.razor @@ -0,0 +1,32 @@ + + Default dropdown + + Menu item + Menu item + Menu item + + + + Clickable outside + + Menu item + Menu item + Menu item + + + + Clickable inside + + Menu item + Menu item + Menu item + + + + Manual close + + Menu item + Menu item + Menu item + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_14_Methods.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_14_Methods.razor new file mode 100644 index 000000000..094b399b7 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_14_Methods.razor @@ -0,0 +1,20 @@ + + Dropdown button + + Action + Another action + Something else here + + + + + + + +@code{ + private Dropdown dropdown1 = default!; + + private async Task ShowAsync() => await dropdown1.ShowAsync(); + private async Task HideAsync() => await dropdown1.HideAsync(); + private async Task ToggleAsync() => await dropdown1.ToggleAsync(); +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_15_Events.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_15_Events.razor new file mode 100644 index 000000000..3bfb21220 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Dropdowns/Dropdown_Demo_15_Events.razor @@ -0,0 +1,30 @@ + + Dropdown button + + Action + Another action + Something else here + + + +
+ @foreach (var item in messages) + { +

Event: @item

+ } +
+ +@code { + List messages = new List(); + + private void OnDropdownHidingAsync() => messages.Add(new("OnHiding")); + + private void OnDropdownHiddenAsync() => messages.Add(new("OnHidden")); + + private void OnDropdownShowingAsync() => messages.Add(new("OnShowing")); + + private void OnDropdownShownAsync() => messages.Add(new("OnShown")); +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoCompleteDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoCompleteDocumentation.razor new file mode 100644 index 000000000..fb9415956 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoCompleteDocumentation.razor @@ -0,0 +1,94 @@ +@page "/autocomplete" +@page "/form/autocomplete" + +@title + + + +

Blazor Auto Complete

+
+ Blazor Bootstrap autocomplete component is a textbox that offers the users suggestions as they type from the data source. And it supports client-side and server-side filtering. +
+ + + + + + + +
In the below example, StringComparision.Ordinal is used to make the filter case-sensitive.
+ + +
By default, StringComparison.OrdinalIgnoreCase is used to compare culture-agnostic and case-insensitive string matching.
+
+ + + + + + + + + + + +
+ Blazor Bootstrap autocomplete component supports the following keyboard shortcuts to initiate various actions. +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyDescription
EscCloses the popup list when it is in an open state.
Up arrowFocuses on the previous item in the list.
Down arrowFocuses on the next item in the list.
HomeFocuses on the first item in the list.
EndFocuses on the last item in the list.
EnterSelects the currently focused item.
+
+
+ + +
Use the Disabled parameter to disable the AutoComplete.
+ +
Also, use Enable() and Disable() methods to enable and disable the AutoComplete.
+ + Do not use both the Disabled parameter and Enable() & Disable() methods. + + + + + + +@code { + private string pageUrl = "/autocomplete"; + private string title = "Blazor AutoComplete Component"; + private string description = "Blazor Bootstrap autocomplete component is a textbox that offers the users suggestions as they type from the data source. And it supports client-side and server-side filtering."; + private string imageUrl = "https://i.imgur.com/36RsWZ3.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_01_A_Client_Side_Filtering.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_01_A_Client_Side_Filtering.razor new file mode 100644 index 000000000..3645eb003 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_01_A_Client_Side_Filtering.razor @@ -0,0 +1,59 @@ +
+
+ +
+
+ +@code { + private string? customerName; + public IEnumerable? customers; + + private async Task> CustomersDataProvider(AutoCompleteDataProviderRequest request) + { + if (customers is null) // pull customers only one time for client-side autocomplete + customers = GetCustomers(); // call a service or an API to pull the customers + + return await Task.FromResult(request.ApplyTo(customers.OrderBy(customer => customer.CustomerName))); + } + + private IEnumerable GetCustomers() + { + return new List { + new(1, "Pich S"), + new(2, "sfh Sobi"), + new(3, "Jojo chan"), + new(4, "Jee ja"), + new(5, "Rose Canon"), + new(6, "Manju A"), + new(7, "Bandita PA"), + new(8, "Sagar Adil"), + new(9, "Isha Wang"), + new(10, "Daina JJ"), + new(11, "Komala Mug"), + new(12, "Dikshita BD"), + new(13, "Neha Gosar"), + new(14, "Preeti S"), + new(15, "Sagar Seth"), + new(16, "Vinayak MM"), + new(17, "Vijaya Lakhsmi"), + new(18, "Jahan K"), + new(19, "Joy B"), + new(20, "Zaraiah C"), + new(21, "Laura L"), + new(22, "Punith ES") + }; + } + + private void OnAutoCompleteChanged(Customer customer) + { + // TODO: handle your own logic + + // NOTE: do null check + Console.WriteLine($"'{customer?.CustomerName}' selected."); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_01_B_Client_Side_Filtering_With_StringComparision.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_01_B_Client_Side_Filtering_With_StringComparision.razor new file mode 100644 index 000000000..acf198e4d --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_01_B_Client_Side_Filtering_With_StringComparision.razor @@ -0,0 +1,60 @@ +
+
+ +
+
+ +@code { + private string? customerName; + public IEnumerable? customers; + + private async Task> CustomersDataProvider(AutoCompleteDataProviderRequest request) + { + if (customers is null) // pull customers only one time for client-side autocomplete + customers = GetCustomers(); // call a service or an API to pull the customers + + return await Task.FromResult(request.ApplyTo(customers.OrderBy(customer => customer.CustomerName))); + } + + private IEnumerable GetCustomers() + { + return new List { + new(1, "Pich S"), + new(2, "sfh Sobi"), + new(3, "Jojo chan"), + new(4, "Jee ja"), + new(5, "Rose Canon"), + new(6, "Manju A"), + new(7, "Bandita PA"), + new(8, "Sagar Adil"), + new(9, "Isha Wang"), + new(10, "Daina JJ"), + new(11, "Komala Mug"), + new(12, "Dikshita BD"), + new(13, "Neha Gosar"), + new(14, "Preeti S"), + new(15, "Sagar Seth"), + new(16, "Vinayak MM"), + new(17, "Vijaya Lakhsmi"), + new(18, "Jahan K"), + new(19, "Joy B"), + new(20, "Zaraiah C"), + new(21, "Laura L"), + new(22, "Punith ES") + }; + } + + private void OnAutoCompleteChanged(Customer customer) + { + // TODO: handle your own logic + + // NOTE: do null check + Console.WriteLine($"'{customer?.CustomerName}' selected."); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_02_Server_Side_Filtering.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_02_Server_Side_Filtering.razor new file mode 100644 index 000000000..aef3f0a5f --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_02_Server_Side_Filtering.razor @@ -0,0 +1,29 @@ +
+
+ +
+
+ +@code { + private string? customerName; + [Inject] ICustomerService _customerService { get; set; } = default!; + + private async Task> CustomersDataProvider(AutoCompleteDataProviderRequest request) + { + var customers = await _customerService.GetCustomersAsync(request.Filter, request.CancellationToken); // API call + return await Task.FromResult(new AutoCompleteDataProviderResult { Data = customers, TotalCount = customers.Count() }); + } + + private void OnAutoCompleteChanged(Customer2 customer) + { + // TODO: handle your own logic + + // NOTE: do null check + Console.WriteLine($"'{customer?.CustomerName}' selected."); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_03_Set_Default_Value.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_03_Set_Default_Value.razor new file mode 100644 index 000000000..e7321fdf8 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_03_Set_Default_Value.razor @@ -0,0 +1,64 @@ +
+
+ +
+
+ +@code { + private string? customerName; + public IEnumerable? customers; + + protected override void OnInitialized() + { + customerName = "Pich S"; + } + + private async Task> CustomersDataProvider(AutoCompleteDataProviderRequest request) + { + if (customers is null) // pull customers only one time for client-side autocomplete + customers = GetCustomers(); // call a service or an API to pull the customers + + return await Task.FromResult(request.ApplyTo(customers.OrderBy(customer => customer.CustomerName))); + } + + private IEnumerable GetCustomers() + { + return new List { + new(1, "Pich S"), + new(2, "sfh Sobi"), + new(3, "Jojo chan"), + new(4, "Jee ja"), + new(5, "Rose Canon"), + new(6, "Manju A"), + new(7, "Bandita PA"), + new(8, "Sagar Adil"), + new(9, "Isha Wang"), + new(10, "Daina JJ"), + new(11, "Komala Mug"), + new(12, "Dikshita BD"), + new(13, "Neha Gosar"), + new(14, "Preeti S"), + new(15, "Sagar Seth"), + new(16, "Vinayak MM"), + new(17, "Vijaya Lakhsmi"), + new(18, "Jahan K"), + new(19, "Joy B"), + new(20, "Zaraiah C"), + new(21, "Laura L"), + new(22, "Punith ES") + }; + } + + private void OnAutoCompleteChanged(Customer customer) + { + // TODO: handle your own logic + + // NOTE: do null check + Console.WriteLine($"'{customer?.CustomerName}' selected."); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_04_Validations.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_04_Validations.razor new file mode 100644 index 000000000..376eb2fe7 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_04_Validations.razor @@ -0,0 +1,86 @@ +@using System.ComponentModel.DataAnnotations + + + + + + +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+
+ +
+
+
+ +@code { + private CustomerAddress customerAddress = new(); + private EditContext? _editContext; + [Inject] ICustomerService _customerService { get; set; } = default!; + + protected override void OnInitialized() + { + _editContext = new EditContext(customerAddress); + base.OnInitialized(); + } + + public void HandleOnValidSubmit() + { + Console.WriteLine($"Customer name is {customerAddress.CustomerName} and address is {customerAddress.Address}"); + } + + private async Task> CustomersDataProvider(AutoCompleteDataProviderRequest request) + { + var customers = await _customerService.GetCustomersAsync(request.Filter, request.CancellationToken); // API call + return await Task.FromResult(new AutoCompleteDataProviderResult { Data = customers, TotalCount = customers.Count() }); + } + + private void OnAutoCompleteChanged(Customer2 customer) + { + // TODO: handle your own logic + + // NOTE: do null check + Console.WriteLine($"'{customer?.CustomerName}' selected."); + } + + public class CustomerAddress + { + [Required] + public string CustomerName { get; set; } = default!; + + [Required] + public string Address { get; set; } = default!; + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_05_A_Disable.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_05_A_Disable.razor new file mode 100644 index 000000000..b90b97deb --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_05_A_Disable.razor @@ -0,0 +1,42 @@ +
+
+ +
+
+ + + + + +@code { + private string customerName = default!; + private bool disabled = true; + + [Inject] ICustomerService _customerService { get; set; } = default!; + + private async Task> CustomersDataProvider(AutoCompleteDataProviderRequest request) + { + var customers = await _customerService.GetCustomersAsync(request.Filter, request.CancellationToken); // API call + return await Task.FromResult(new AutoCompleteDataProviderResult { Data = customers, TotalCount = customers.Count() }); + } + + private void OnAutoCompleteChanged(Customer2 customer) + { + // TODO: handle your own logic + + // NOTE: do null check + Console.WriteLine($"'{customer?.CustomerName}' selected."); + } + + private void Enable() => disabled = false; + + private void Disable() => disabled = true; + + private void Toggle() => disabled = !disabled; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_05_B_Disable.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_05_B_Disable.razor new file mode 100644 index 000000000..c0f78b357 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_05_B_Disable.razor @@ -0,0 +1,39 @@ +
+
+ +
+
+ + + + +@code { + private AutoComplete autoComplete1 = default!; + private string customerName = default!; + + [Inject] ICustomerService _customerService { get; set; } = default!; + + private async Task> CustomersDataProvider(AutoCompleteDataProviderRequest request) + { + var customers = await _customerService.GetCustomersAsync(request.Filter, request.CancellationToken); // API call + return await Task.FromResult(new AutoCompleteDataProviderResult { Data = customers, TotalCount = customers.Count() }); + } + + private void OnAutoCompleteChanged(Customer2 customer) + { + // TODO: handle your own logic + + // NOTE: do null check + Console.WriteLine($"'{customer?.CustomerName}' selected."); + } + + private void Disable() => autoComplete1.Disable(); + + private void Enable() => autoComplete1.Enable(); +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_06_Sizing.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_06_Sizing.razor new file mode 100644 index 000000000..f875904d6 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/AutoComplete/AutoComplete_Demo_06_Sizing.razor @@ -0,0 +1,85 @@ +
+
+ + +
+ +
+ + +
+ +
+ + +
+
+ +@code { + private string? customerName1; + private string? customerName2; + private string? customerName3; + public IEnumerable? customers; + + private async Task> CustomersDataProvider(AutoCompleteDataProviderRequest request) + { + if (customers is null) // pull customers only one time for client-side autocomplete + customers = GetCustomers(); // call a service or an API to pull the customers + + return await Task.FromResult(request.ApplyTo(customers.OrderBy(customer => customer.CustomerName))); + } + + private IEnumerable GetCustomers() + { + return new List { + new(1, "Pich S"), + new(2, "sfh Sobi"), + new(3, "Jojo chan"), + new(4, "Jee ja"), + new(5, "Rose Canon"), + new(6, "Manju A"), + new(7, "Bandita PA"), + new(8, "Sagar Adil"), + new(9, "Isha Wang"), + new(10, "Daina JJ"), + new(11, "Komala Mug"), + new(12, "Dikshita BD"), + new(13, "Neha Gosar"), + new(14, "Preeti S"), + new(15, "Sagar Seth"), + new(16, "Vinayak MM"), + new(17, "Vijaya Lakhsmi"), + new(18, "Jahan K"), + new(19, "Joy B"), + new(20, "Zaraiah C"), + new(21, "Laura L"), + new(22, "Punith ES") + }; + } + + private void OnAutoCompleteChanged(Customer customer) + { + // TODO: handle your own logic + + // NOTE: do null check + Console.WriteLine($"'{customer?.CustomerName}' selected."); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInputDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInputDocumentation.razor new file mode 100644 index 000000000..7d7951ed5 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInputDocumentation.razor @@ -0,0 +1,89 @@ +@page "/currency-input" +@page "/form/currency-input" + +@title + + + +

Blazor Currency Input

+
+ Use the Blazor Bootstrap CurrencyInput component to show the numbers in the user's locale format, including the currency symbol. +
+ + + + +
By default, e + - are blocked. For all integral numeric types, dot . is blocked.
+ + The default locale is en-US. + + + + + + + +
Set HideCurrencySymbol parameter value to true to hide the currency symbol.
+ + + +
In the below example, formatting adds zeros to display minimum integers and fractions.
+ + MinimumFractionDigits and MaximumFractionDigits parameters are applicable for floating-point numeric types only. + + + + +
In many locales, accounting format means to wrap the number with parentheses instead of appending a minus sign. You can enable this formatting by setting the CurrencySign option to Accounting. The default value is Standard.
+ + + +
CurrencyInput is a generic component. Always specify the exact type. In the below example TValue is set to int, int?, float, float?, double, double?, decimal, and decimal?.
+ + + +
Set EnableMinMax="true" and set the Min and Max parameters to restrict the user input between the Min and Max range.
+ + If the user tries to enter a number in the CurrencyInput field which is out of range, then it will override with Min or Max value based on the context. If the user input is less than the Min value, then it will override with the Min value. + If the user input exceeds the Max value, it will override with the Max value. + + + + +
You can change the text alignment according to your need. Use the TextAlignment parameter to set the alignment. In the below example, alignment is set to center and end.
+ + + +
By default, negative numbers are not allowed. Set the AllowNegativeNumbers parameter to true to allow the negative numbers.
+ + + +
Use the Disabled parameter to disable the CurrencyInput.
+ +
Also, use Enable() and Disable() methods to enable and disable the CurrencyInput.
+ + Do not use both the Disabled parameter and Enable() & Disable() methods. + + + + +
+ Like any other blazor input components, CurrencyInput supports validations. + Add the DataAnnotations on the CurrencyInput component to validate the user input before submitting the form. + In the below example, we used Required and Range attributes. +
+ + + + + + +
This event fires on every user keystroke that changes the CurrencyInput value.
+ + +@code { + private string pageUrl = "/form/currency-input"; + private string title = "Blazor CurrencyInput Component"; + private string description = "Use the Blazor Bootstrap CurrencyInput component to show the numbers in the user's locale format, including the currency symbol."; + private string imageUrl = "https://i.imgur.com/iUNBkki.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_01_Basic_Usage.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_01_Basic_Usage.razor new file mode 100644 index 000000000..2fe7bceb1 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_01_Basic_Usage.razor @@ -0,0 +1,8 @@ +
+ +
+
Entered Amount: @amount1
+ +@code { + private int amount1 = 12345678; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_02_Show_Currency_Symbols_for_the_Different_Locales.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_02_Show_Currency_Symbols_for_the_Different_Locales.razor new file mode 100644 index 000000000..89bc7c445 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_02_Show_Currency_Symbols_for_the_Different_Locales.razor @@ -0,0 +1,65 @@ +
+ + +
+
Entered Amount: @amount1
+ +
+ + +
+
Entered Amount: @amount2
+ +
+ + +
+
Entered Amount: @amount3
+ +
+ + +
+
Entered Amount: @amount4
+ +
+ + +
+
Entered Amount: @amount5
+ +
+ + +
+
Entered Amount: @amount6
+ +
+ + +
+
Entered Amount: @amount7
+ +
+ + +
+
Entered Amount: @amount8
+ +
+ + +
+
Entered Amount: @amount9
+ +@code { + private int amount1 = 12345678; + private int amount2 = 12345678; + private int amount3 = 12345678; + private int amount4 = 12345678; + private int amount5 = 12345678; + private int amount6 = 12345678; + private int amount7 = 12345678; + private int amount8 = 12345678; + private int amount9 = 12345678; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_03_Hide_Currency_Symbol.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_03_Hide_Currency_Symbol.razor new file mode 100644 index 000000000..62b585a98 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_03_Hide_Currency_Symbol.razor @@ -0,0 +1,12 @@ +
+ +
+
Entered Value: @amount1
+ +@code { + private double amount1 = 4.33; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_04_Using_FractionDigits_and_IntegerDigits.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_04_Using_FractionDigits_and_IntegerDigits.razor new file mode 100644 index 000000000..157cd9cac --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_04_Using_FractionDigits_and_IntegerDigits.razor @@ -0,0 +1,13 @@ +
+ +
+
Entered Value: @amount1
+ +@code { + private double amount1 = 4.33; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_05_Parentheses_Instead_of_Appending_A_Minus_Sign.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_05_Parentheses_Instead_of_Appending_A_Minus_Sign.razor new file mode 100644 index 000000000..031aebbe7 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_05_Parentheses_Instead_of_Appending_A_Minus_Sign.razor @@ -0,0 +1,12 @@ +
+ +
+
Entered Value: @amount1
+ +@code { + private int amount1 = -21231; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_06_Generic_Type.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_06_Generic_Type.razor new file mode 100644 index 000000000..b0d42fe70 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_06_Generic_Type.razor @@ -0,0 +1,50 @@ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +@code { + private int amount; + private int? amount2; + private float amount3; + private float? amount4; + private double amount5; + private double? amount6; + private decimal amount7; + private decimal? amount8; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_07_Enable_Min_Max.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_07_Enable_Min_Max.razor new file mode 100644 index 000000000..324253f48 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_07_Enable_Min_Max.razor @@ -0,0 +1,10 @@ +
+ + + Tip: The amount must be between 10 and 500. +
+
Entered Amount: @amount
+ +@code { + private decimal? amount; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_08_Text_Alignment.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_08_Text_Alignment.razor new file mode 100644 index 000000000..e9d1f0e3d --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_08_Text_Alignment.razor @@ -0,0 +1,16 @@ +
+ + +
+
Entered Amount: @amount
+ +
+ + +
+
Entered Amount: @amount2
+ +@code { + private int amount; + private decimal amount2 = 2.34M; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_09_Allow_Negative_Numbers.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_09_Allow_Negative_Numbers.razor new file mode 100644 index 000000000..e27684b88 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_09_Allow_Negative_Numbers.razor @@ -0,0 +1,10 @@ +
+ + + Tip: Negative numbers are also allowed. +
+
Entered Amount: @amount
+ +@code { + private int amount; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_10_A_Disable_Number_Input.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_10_A_Disable_Number_Input.razor new file mode 100644 index 000000000..2609abc43 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_10_A_Disable_Number_Input.razor @@ -0,0 +1,22 @@ +
+ + +
+ + + + + +@code { + private int? amount; + private bool disabled = true; + + private void Enable() => disabled = false; + + private void Disable() => disabled = true; + + private void Toggle() => disabled = !disabled; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_10_B_Disable_Number_Input.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_10_B_Disable_Number_Input.razor new file mode 100644 index 000000000..76a0b2858 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_10_B_Disable_Number_Input.razor @@ -0,0 +1,19 @@ +
+ + +
+ + + + +@code { + private CurrencyInput currencyInput = default!; + private int? amount; + + private void Disable() => currencyInput.Disable(); + + private void Enable() => currencyInput.Enable(); +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_11_Validations.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_11_Validations.razor new file mode 100644 index 000000000..44912cd46 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_11_Validations.razor @@ -0,0 +1,113 @@ +@using System.ComponentModel.DataAnnotations + + + + + + +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+
+ + +
+
+
+ +@code { + private Invoice invoice = new(); + private EditContext? editContext; + + protected override void OnInitialized() + { + editContext = new EditContext(invoice); + base.OnInitialized(); + } + + protected override void OnParametersSet() + { + CalculateToatl(); + base.OnParametersSet(); + } + + private void PriceChanged(decimal? value) + { + invoice.Price = value; + CalculateToatl(); + } + + private void DiscountChanged(decimal? value) + { + invoice.Discount = value; + CalculateToatl(); + } + + private void CalculateToatl() + { + var price = invoice.Price.HasValue ? invoice.Price.Value : 0; + var discount = invoice.Discount.HasValue ? invoice.Discount.Value : 0; + invoice.Total = price - discount; + } + + public void HandleOnValidSubmit() + { + Console.WriteLine($"Price: {invoice.Price}"); + Console.WriteLine($"Discount: {invoice.Discount}"); + Console.WriteLine($"Total: {invoice.Total}"); + } + + private void ResetForm() + { + invoice = new(); + editContext = new EditContext(invoice); + } + + public class Invoice + { + [Required(ErrorMessage = "Price required.")] + [Range(60, 500, ErrorMessage = "Price should be between 60 and 500.")] + public decimal? Price { get; set; } = 22M; + + [Range(0, 50, ErrorMessage = "Discount should be between 0 and 50.")] + public decimal? Discount { get; set; } + + [Required(ErrorMessage = "Amount required.")] + [Range(10, 500, ErrorMessage = "Total should be between 60 and 500.")] + public decimal? Total { get; set; } + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_12_Decimals.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_12_Decimals.razor new file mode 100644 index 000000000..d44b79e2d --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_12_Decimals.razor @@ -0,0 +1,65 @@ +
+ + +
+
Entered Amount: @amount1
+ +
+ + +
+
Entered Amount: @amount2
+ +
+ + +
+
Entered Amount: @amount3
+ +
+ + +
+
Entered Amount: @amount4
+ +
+ + +
+
Entered Amount: @amount5
+ +
+ + +
+
Entered Amount: @amount6
+ +
+ + +
+
Entered Amount: @amount7
+ +
+ + +
+
Entered Amount: @amount8
+ +
+ + +
+
Entered Amount: @amount9
+ +@code { + private decimal amount1 = 12345678.55m; + private decimal amount2 = 12345678.55m; + private decimal amount3 = 12345678.55m; + private decimal amount4 = 12345678.55m; + private decimal amount5 = 12345678.55m; + private decimal amount6 = 12345678.55m; + private decimal amount7 = 12345678.55m; + private decimal amount8 = 12345678.55m; + private decimal amount9 = 12345678.55m; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_13_Events_Value_Changed.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_13_Events_Value_Changed.razor new file mode 100644 index 000000000..acad152d4 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/CurrencyInput/CurrencyInput_Demo_13_Events_Value_Changed.razor @@ -0,0 +1,20 @@ +
+ +
+ +
+
+
+ @displayPrice +
+ +@code { + private decimal? price = 10M; + private string? displayPrice; + + private void PriceChanged(decimal? value) + { + price = value; // this is mandatory + displayPrice = $"Price: {value}, changed at {DateTime.Now.ToLocalTime()}."; + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInputDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInputDocumentation.razor new file mode 100644 index 000000000..8f08f7668 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInputDocumentation.razor @@ -0,0 +1,79 @@ +@page "/date-input" +@page "/form/date-input" + +@title + + + +

Blazor Date Input

+
+ The Blazor Bootstrap DateInput component is constructed using an HTML input of type="date" which limits user input based on pre-defined parameters. + This component enables users to input a date using a text box with validation or a special date picker interface. +
+ + + + + + The input UI generally varies from browser to browser. + In unsupported browsers, the control degrades gracefully to type="text". + + + + + +
+

+ The Blazor Bootstrap DateInput component supports several data types: DateOnly, DateOnly?, DateTime, and DateTime?. + This allows flexible component usage to accommodate various data types in Blazor applications. +

+

+ In the below example, TValue is set to DateOnly, DateOnly?, DateTime, and DateTime?. +

+
+ + + +
+ Set EnableMinMax="true" and set the Max and Min parameters to restrict the user input between the Min and Max range. +
+ + If the user tries to enter a number in the DateInput field which is out of range, then it will override with Max or Min value based on the context. + If the user input exceeds the Max value, it will override with the Max value. If the user input is less than the Min value, then it will override with the Min value. + + + + +
Use the Disabled parameter to disable the DateInput.
+ +
Also, use Enable() and Disable() methods to enable and disable the DateInput.
+ + Do not use both the Disabled parameter and Enable() & Disable() methods. + + + + +
+ Like any other blazor input component, DateInput component supports validations. Use the DataAnnotations to validate the user input before submitting the form. In the below example, we used the Required attributes. +
+ + + +
+ This event fires on every user keystroke/selection that changes the DateInput value. +
+ + + +
+ One common scenario is that the date fields are restricted based on the entry in another date field. + In the example below, we restrict the course end time based on the selection of course start date. +
+ + +@code { + private string pageUrl = "/form/date-input"; + private string title = "Blazor DateInput Component"; + private string description = "The Blazor Bootstrap DateInput component is constructed using an HTML input of type 'date' which limits user input based on pre-defined parameters. This component enables users to input a date using a text box with validation or a special date picker interface."; + private string imageUrl = "https://i.imgur.com/1mVjqQv.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_01_Basic_Usage.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_01_Basic_Usage.razor new file mode 100644 index 000000000..c4eb21b69 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_01_Basic_Usage.razor @@ -0,0 +1,8 @@ +
+ +
+
Entered date: @date1
+ +@code { + private DateOnly date1 = DateOnly.FromDateTime(DateTime.Now.AddDays(1)); +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_02_Generic_Type.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_02_Generic_Type.razor new file mode 100644 index 000000000..533b459d7 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_02_Generic_Type.razor @@ -0,0 +1,38 @@ +
+ DateOnly: +
+
+ +
+
Entered date: @date1
+ +
+ DateOnly?: +
+
+ +
+
Entered date: @date2
+ +
+ DateTime: +
+
+ +
+
Entered date: @date3
+ +
+ DateTime?: +
+
+ +
+
Entered date: @date4
+ +@code { + private DateOnly date1 = DateOnly.FromDateTime(DateTime.Now.AddMonths(3)); + private DateOnly? date2; + private DateTime date3 = DateTime.Now.AddMonths(3); + private DateTime? date4; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_03_Max_Min.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_03_Max_Min.razor new file mode 100644 index 000000000..ccf8713dd --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_03_Max_Min.razor @@ -0,0 +1,69 @@ +
+ DateOnly: +
+
+ +
+
Min date: @min1
+
Max date: @max1
+
Entered date: @date1
+ +
+ DateOnly?: +
+
+ +
+
Min date: @min2
+
Max date: @max2
+
Entered date: @date2
+ +
+ DateTime: +
+
+ +
+
Min date: @min3
+
Max date: @max3
+
Entered date: @date3
+ +
+ DateTime?: +
+
+ +
+
Min date: @min4
+
Max date: @max4
+
Entered date: @date4
+ +@code { + private DateTime date = DateTime.Now.AddMonths(3); + private DateTime min = DateTime.Now.AddMonths(-1); + private DateTime max = DateTime.Now.AddYears(1); + + private DateOnly date1, min1, max1; + private DateOnly? date2, min2, max2; + private DateTime date3, min3, max3; + private DateTime? date4, min4, max4; + + protected override void OnInitialized() + { + date1 = DateOnly.FromDateTime(date); + min1 = DateOnly.FromDateTime(min); + max1 = DateOnly.FromDateTime(max); + + date2 = null; + min2 = DateOnly.FromDateTime(min); + max2 = DateOnly.FromDateTime(max); + + date3 = DateTime.Now.AddMonths(3); + min3 = min; + max3 = max; + + date4 = null; + min4 = min; + max4 = max; + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_04_A_Disable_Date_Input.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_04_A_Disable_Date_Input.razor new file mode 100644 index 000000000..cc65de8e8 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_04_A_Disable_Date_Input.razor @@ -0,0 +1,22 @@ +
+ +
+
Entered date: @date1
+ + + + + +@code { + private DateOnly date1 = DateOnly.FromDateTime(DateTime.Now); + private bool disabled = true; + + private void Enable() => disabled = false; + + private void Disable() => disabled = true; + + private void Toggle() => disabled = !disabled; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_04_B_Disable_Date_Input.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_04_B_Disable_Date_Input.razor new file mode 100644 index 000000000..ba17973fc --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_04_B_Disable_Date_Input.razor @@ -0,0 +1,20 @@ +
+ +
+
Entered date: @date1
+ + + + +@code { + private DateInput dateInput = default!; + + private DateOnly date1 = DateOnly.FromDateTime(DateTime.Now); + + private void Disable() => dateInput.Disable(); + + private void Enable() => dateInput.Enable(); +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_05_Validations.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_05_Validations.razor new file mode 100644 index 000000000..e94f3616e --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_05_Validations.razor @@ -0,0 +1,74 @@ +@using System.ComponentModel.DataAnnotations + + + + + + +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+
+ + +
+
+
+ +@code { + private Invoice invoice = new(); + private EditContext? editContext; + + protected override void OnInitialized() + { + editContext = new EditContext(invoice); + base.OnInitialized(); + } + + public void HandleOnValidSubmit() + { + Console.WriteLine($"Invoice Date: {invoice.InvoiceDate}"); + Console.WriteLine($"Customer Name: {invoice.CustomerName}"); + } + + private void ResetForm() + { + invoice = new(); + editContext = new EditContext(invoice); + } + + public class Invoice + { + [Required(ErrorMessage = "Invoice Date required.")] + public DateOnly? InvoiceDate { get; set; } + + [Required(ErrorMessage = "Customer Name required.")] + public string? CustomerName { get; set; } + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_06_Events_Value_Changed.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_06_Events_Value_Changed.razor new file mode 100644 index 000000000..c07c9e5ad --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_06_Events_Value_Changed.razor @@ -0,0 +1,17 @@ +
+ +
+
Changed date: @date1
+ + + +@code { + private DateOnly date1 = DateOnly.FromDateTime(DateTime.Now); + + private void DateChanged(DateOnly dateOnly) + { + date1 = dateOnly; + } + + private void ChangeDate() => date1 = DateOnly.FromDateTime(DateTime.Now.AddDays(3)); +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_07_Restrict_The_Date_Field_Based_On_The_Entry_In_Another_Date_Field.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_07_Restrict_The_Date_Field_Based_On_The_Entry_In_Another_Date_Field.razor new file mode 100644 index 000000000..a00d2c9c6 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/DateInput/DateInput_Demo_07_Restrict_The_Date_Field_Based_On_The_Entry_In_Another_Date_Field.razor @@ -0,0 +1,128 @@ +@using System.ComponentModel.DataAnnotations + + + + + + +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+
+ + +
+
+
+ +@code { + DateInput endDateInput = default!; + private bool disableEndDate = true; + + private OnlineCourseForm onlineCourseForm = new(); + private EditContext? editContext; + + private DateTime? courseMinDate; + private DateTime? courseMaxDate; + + [Inject] ToastService ToastService { get; set; } = default!; + + protected override void OnInitialized() + { + editContext = new EditContext(onlineCourseForm); + base.OnInitialized(); + } + + private void StartDateChanged(DateTime? startDate) + { + if (startDate is null || !startDate.HasValue) + { + onlineCourseForm.StartDate = null; + onlineCourseForm.EndDate = null; + courseMinDate = null; + courseMaxDate = null; + disableEndDate = true; + + return; + } + + onlineCourseForm.StartDate = startDate; + onlineCourseForm.EndDate = null; + courseMinDate = startDate.Value; + courseMaxDate = startDate.Value.AddDays(5); + disableEndDate = false; + } + + public void HandleValidSubmit() + { + var toastMessage = new ToastMessage + ( + type: ToastType.Success, + iconName: IconName.Check2All, + title: "Success!", + helpText: $"{DateTime.Now.ToLocalTime()}", + message: "Online course schedule created." + ); + ToastService.Notify(toastMessage); + } + + private void ResetForm() + { + onlineCourseForm = new(); + editContext = new EditContext(onlineCourseForm); + } + + public class OnlineCourseForm + { + [Required(ErrorMessage = "Course Name required.")] + public string? CourseName { get; set; } + + [Required(ErrorMessage = "Start Date required.")] + public DateTime? StartDate { get; set; } + + [Required(ErrorMessage = "End Date required.")] + public DateTime? EndDate { get; set; } + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInputDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInputDocumentation.razor new file mode 100644 index 000000000..9186f5971 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInputDocumentation.razor @@ -0,0 +1,71 @@ +@page "/number-input" +@page "/form/number-input" + +@title + + + +

Blazor Number Input

+
+ Blazor Bootstrap NumberInput component is built around HTML input of type="number" that prevents the user input based on the parameters set. +
+ + + + +
By default, e + - are blocked. For all integral numeric types, dot . is blocked.
+ + + +
NumberInput is a generic component. Always specify the exact type. In the below example TValue is set to int, int?, float, float?, double, double?, decimal, and decimal?.
+ + + +
+ Set EnableMinMax="true" and set the Min and Max parameters to restrict the user input between the Min and Max range. +
+ + If the user tries to enter a number in the NumberInput field which is out of range, then it will override with Min or Max value based on the context. If the user input is less than the Min value, then it will override with the Min value. + If the user input exceeds the Max value, it will override with the Max value. + + + + +
The Step sets the stepping interval when clicking the up and down spinner buttons. If not explicitly included, Step defaults to 1.
+ + + +
You can change the text alignment according to your need. Use the TextAlignment parameter to set the alignment. In the below example, alignment is set to center and end.
+ + + +
By default, negative numbers are not allowed. Set the AllowNegativeNumbers parameter to true to allow the negative numbers.
+ + + +
Use the Disabled parameter to disable the NumberInput.
+ +
Also, use Enable() and Disable() methods to enable and disable the NumberInput.
+ + Do not use both the Disabled parameter and Enable() & Disable() methods. + + + + +
+ Like any other blazor input component, NumberInput supports validations. + Add the DataAnnotations on the NumberInput component to validate the user input before submitting the form. + In the below example, we used Required and Range attributes. +
+ + + +
This event fires on every user keystroke that changes the NumberInput value.
+ + +@code { + private string pageUrl = "/form/number-input"; + private string title = "Blazor NumberInput Component"; + private string description = "Blazor Bootstrap NumberInput component is built around HTML input of type=\"number\" that prevents the user input based on the parameters set."; + private string imageUrl = "https://i.imgur.com/iUNBkki.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_01_Basic_Usage.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_01_Basic_Usage.razor new file mode 100644 index 000000000..8dfde818c --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_01_Basic_Usage.razor @@ -0,0 +1,9 @@ +
+ + +
+
Entered Amount: @amount
+ +@code { + private int amount; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_02_Generic_Type.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_02_Generic_Type.razor new file mode 100644 index 000000000..6f005727e --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_02_Generic_Type.razor @@ -0,0 +1,58 @@ +
+ + +
Entered Number: @amount
+
+ +
+ + +
Entered Number: @amount2
+
+ +
+ + +
Entered Number: @amount3
+
+ +
+ + +
Entered Number: @amount4
+
+ +
+ + +
Entered Number: @amount5
+
+ +
+ + +
Entered Number: @amount6
+
+ +
+ + +
Entered Number: @amount7
+
+ +
+ + +
Entered Number: @amount8
+
+ +@code { + private int amount; + private int? amount2; + private float amount3; + private float? amount4; + private double amount5; + private double? amount6; + private decimal amount7; + private decimal? amount8; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_03_Enable_Min_Max.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_03_Enable_Min_Max.razor new file mode 100644 index 000000000..fbf7094ec --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_03_Enable_Min_Max.razor @@ -0,0 +1,10 @@ +
+ + + Tip: The amount must be between 10 and 500. +
+
Entered Amount: @amount
+ +@code { + private decimal? amount; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_04_Step.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_04_Step.razor new file mode 100644 index 000000000..890cd987c --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_04_Step.razor @@ -0,0 +1,18 @@ +
+ + + Info: Here Step parameter is set to 10. +
+
Entered Amount: @amount
+ +
+ + + Info: Here Step parameter is set to 2.5. +
+
Entered Amount: @amount2
+ +@code { + private int? amount; + private decimal? amount2; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_05_Text_Alignment.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_05_Text_Alignment.razor new file mode 100644 index 000000000..8a378b689 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_05_Text_Alignment.razor @@ -0,0 +1,16 @@ +
+ + +
+
Entered Amount: @amount
+ +
+ + +
+
Entered Amount: @amount2
+ +@code { + private int amount; + private decimal amount2 = 2.34M; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_06_Allow_Negative_Numbers.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_06_Allow_Negative_Numbers.razor new file mode 100644 index 000000000..459ac0a6e --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_06_Allow_Negative_Numbers.razor @@ -0,0 +1,10 @@ +
+ + + Tip: Negative numbers are also allowed. +
+
Entered Amount: @amount
+ +@code { + private int amount; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_07_A_Disable_Number_Input.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_07_A_Disable_Number_Input.razor new file mode 100644 index 000000000..d962420dd --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_07_A_Disable_Number_Input.razor @@ -0,0 +1,22 @@ +
+ + +
+ + + + + +@code { + private int? amount; + private bool disabled = true; + + private void Enable() => disabled = false; + + private void Disable() => disabled = true; + + private void Toggle() => disabled = !disabled; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_07_B_Disable_Number_Input.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_07_B_Disable_Number_Input.razor new file mode 100644 index 000000000..6a584c134 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_07_B_Disable_Number_Input.razor @@ -0,0 +1,19 @@ +
+ + +
+ + + + +@code { + private NumberInput numberInput = default!; + private int? amount; + + private void Disable() => numberInput.Disable(); + + private void Enable() => numberInput.Enable(); +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_08_Validations.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_08_Validations.razor new file mode 100644 index 000000000..c0a09f30d --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_08_Validations.razor @@ -0,0 +1,113 @@ +@using System.ComponentModel.DataAnnotations + + + + + + +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+
+ + +
+
+
+ +@code { + private Invoice invoice = new(); + private EditContext? editContext; + + protected override void OnInitialized() + { + editContext = new EditContext(invoice); + base.OnInitialized(); + } + + protected override void OnParametersSet() + { + CalculateToatl(); + base.OnParametersSet(); + } + + private void PriceChanged(decimal? value) + { + invoice.Price = value; + CalculateToatl(); + } + + private void DiscountChanged(decimal? value) + { + invoice.Discount = value; + CalculateToatl(); + } + + private void CalculateToatl() + { + var price = invoice.Price.HasValue ? invoice.Price.Value : 0; + var discount = invoice.Discount.HasValue ? invoice.Discount.Value : 0; + invoice.Total = price - discount; + } + + public void HandleOnValidSubmit() + { + Console.WriteLine($"Price: {invoice.Price}"); + Console.WriteLine($"Discount: {invoice.Discount}"); + Console.WriteLine($"Total: {invoice.Total}"); + } + + private void ResetForm() + { + invoice = new(); + editContext = new EditContext(invoice); + } + + public class Invoice + { + [Required(ErrorMessage = "Price required.")] + [Range(60, 500, ErrorMessage = "Price should be between 60 and 500.")] + public decimal? Price { get; set; } = 232M; + + [Range(0, 50, ErrorMessage = "Discount should be between 0 and 50.")] + public decimal? Discount { get; set; } + + [Required(ErrorMessage = "Amount required.")] + [Range(10, 500, ErrorMessage = "Total should be between 60 and 500.")] + public decimal? Total { get; set; } + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_09_Events_Value_Changed.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_09_Events_Value_Changed.razor new file mode 100644 index 000000000..85f2fb3bf --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/NumberInput/NumberInput_Demo_09_Events_Value_Changed.razor @@ -0,0 +1,19 @@ +
+ +
+ +
+
+
+ @displayPrice +
+@code { + private decimal? price = 10M; + private string? displayPrice; + + private void PriceChanged(decimal? value) + { + price = value; // this is mandatory + displayPrice = $"Price: {value}, changed at {DateTime.Now.ToLocalTime()}."; + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInputDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInputDocumentation.razor new file mode 100644 index 000000000..e2cce3a34 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInputDocumentation.razor @@ -0,0 +1,63 @@ +@page "/range-input" +@page "/form/range-input" + +@title + + + +

Blazor Range Input

+
+ Blazor Bootstrap RangeInput component is built around HTML input of type="range". +
+ + + + +
+ + + + +
Use the Disabled parameter to disable the RangeInput.
+ +
Also, use Enable() and Disable() methods to enable and disable the RangeInput.
+ + Do not use both the Disabled parameter and Enable() & Disable() methods. + + + + +
+ Set the Min and Max parameters to restrict the user input between the Min and Max range. + By default, the minimum is 0. +
+ +

+ By default the maximum is 100 for sbyte?, short?, int?, long?, float?, double? and decimal? data types. For other data types it is 0. +

+

+ If the user tries to specify a numeric value which is out of range, then it will override with Min or Max value based on the context. If the user input is less than the minimum value, then it will override with the Min value. + If the user input exceeds the maximum value, it will override with the Max value. +

+
+ + + +
The Step parameter is a number that specifies the granularity that the value must adhere to. Only values that match the specified stepping interval are valid.
+ + + +
+ + + +
+ To add tick marks to a RangeInput, set the TickMarks parameter. +
+ +@code { + private string pageUrl = "/form/range-input"; + private string title = "Blazor RangeInput Component"; + private string description = "Blazor Bootstrap RangeInput component is built around HTML input of type=\"range\"."; + private string imageUrl = "https://i.imgur.com/rWDDHaf.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_01_Basic_Usage_A.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_01_Basic_Usage_A.razor new file mode 100644 index 000000000..bd02797e4 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_01_Basic_Usage_A.razor @@ -0,0 +1,5 @@ + + +@code { + int amount1 = 10; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_01_Basic_Usage_B.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_01_Basic_Usage_B.razor new file mode 100644 index 000000000..1a04d5424 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_01_Basic_Usage_B.razor @@ -0,0 +1,23 @@ +
+ + @amount1 +
+
+ + @amount2 +
+
+ + @amount3 +
+
+ + @amount4 +
+ +@code { + int amount1 = 10; + int? amount2 = 20; + float amount3 = 30; + float? amount4 = 40; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_02_Disabled_A.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_02_Disabled_A.razor new file mode 100644 index 000000000..448ce0e76 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_02_Disabled_A.razor @@ -0,0 +1,33 @@ +
+ + +
+ + + + + +@code { + private int? amount = 10; + private bool disabled = true; + + private void Enable() + { + Console.WriteLine($"BEFORE Enable: disabled: {disabled}"); + disabled = false; + Console.WriteLine($"AFTER Enable: disabled: {disabled}"); + } + + private void Disable() + { + Console.WriteLine($"BEFORE Disable: disabled: {disabled}"); + disabled = true; + Console.WriteLine($"AFTER Disable: disabled: {disabled}"); + } + + private void Toggle() => disabled = !disabled; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_02_Disabled_B.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_02_Disabled_B.razor new file mode 100644 index 000000000..7981b7a76 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_02_Disabled_B.razor @@ -0,0 +1,20 @@ +
+ + +
+ + + + +@code { + private RangeInput rangeInput = default!; + private int? amount = 10; + + private void Disable() => rangeInput.Disable(); + + private void Enable() => rangeInput.Enable(); +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_03_Min_Max.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_03_Min_Max.razor new file mode 100644 index 000000000..b7ceef656 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_03_Min_Max.razor @@ -0,0 +1,8 @@ +
+ + @amount1 +
+ +@code { + int amount1 = -3; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_04_Step.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_04_Step.razor new file mode 100644 index 000000000..c0500f0b4 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_04_Step.razor @@ -0,0 +1,23 @@ +
+ + @amount1 +
+
+ + @amount2 +
+
+ + @amount3 +
+
+ + @amount4 +
+ +@code { + int amount1 = 10; + int? amount2 = 20; + float amount3 = 30; + float? amount4 = 40; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_05_Decimals.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_05_Decimals.razor new file mode 100644 index 000000000..da11f1cde --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_05_Decimals.razor @@ -0,0 +1,6 @@ + +
@amount1
+ +@code { + decimal amount1 = 0; +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_06_Tick_Marks.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_06_Tick_Marks.razor new file mode 100644 index 000000000..7ba165ddd --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/RangeInput/RangeInput_Demo_06_Tick_Marks.razor @@ -0,0 +1,20 @@ +
+
+ +
+
+@temperature1 +Fahrenheit + +@code { + float temperature1 = 10; + + IEnumerable list = new List + { + new(){ Label = "very cold!", Value = "0"}, + new(){ Label = "cool", Value = "25"}, + new(){ Label = "medium", Value = "50"}, + new(){ Label = "getting warm!", Value = "75"}, + new(){ Label = "hot!", Value = "100"}, + }; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/SwitchDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/SwitchDocumentation.razor new file mode 100644 index 000000000..e4a2d357d --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/SwitchDocumentation.razor @@ -0,0 +1,47 @@ +@page "/switch" +@page "/form/switch" + +@title + + + +

Blazor Switch

+
+ Use the Blazor Bootstrap Switch component to show the consistent cross-browser and cross-device custom checkboxes. +
+ + + + + + + +
Use the Disabled parameter to disable the Switch.
+ +
Also, use Enable() and Disable() methods to enable and disable the Switch.
+ + Do not use both the Disabled parameter and Enable() & Disable() methods. + + + + +
+ Put your switches on the opposite side by using the Reverse parameter. +
+ + + +
+ This event fired when the Switch selection changed. +
+ + + + + +@code { + private string pageUrl = "/form/switch"; + private string title = "Blazor Switch Component"; + private string description = "Create consistent cross-browser and cross-device checkboxes with our blazor switches. A switch has the markup of a custom checkbox."; + private string imageUrl = "https://i.imgur.com/ALKzreq.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/Switch_Demo_01_Basic_Usage.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/Switch_Demo_01_Basic_Usage.razor new file mode 100644 index 000000000..114200c07 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/Switch_Demo_01_Basic_Usage.razor @@ -0,0 +1,10 @@ + + + +
Switch 1 Status: @agree1
+
Switch 2 Status: @agree2
+ +@code { + bool agree1; + bool agree2 = true; +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/Switch_Demo_02_A_Disable.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/Switch_Demo_02_A_Disable.razor new file mode 100644 index 000000000..140ff74fa --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/Switch_Demo_02_A_Disable.razor @@ -0,0 +1,18 @@ +
+ +
+ + + + + +@code { + private bool agree = true; + private bool disabled = true; + + private void Enable() => disabled = false; + + private void Disable() => disabled = true; + + private void Toggle() => disabled = !disabled; +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/Switch_Demo_02_B_Disable.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/Switch_Demo_02_B_Disable.razor new file mode 100644 index 000000000..9c945db79 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/Switch_Demo_02_B_Disable.razor @@ -0,0 +1,15 @@ +
+ +
+ + + + +@code { + private Switch switch1 = default!; + private bool agree = true; + + private void Disable() => switch1.Disable(); + + private void Enable() => switch1.Enable(); +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/Switch_Demo_03_Reverse.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/Switch_Demo_03_Reverse.razor new file mode 100644 index 000000000..1e2cbb7d7 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/Switch_Demo_03_Reverse.razor @@ -0,0 +1,5 @@ + + +@code { + bool agree; +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/Switch_Demo_04_Events_Value_Changed.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/Switch_Demo_04_Events_Value_Changed.razor new file mode 100644 index 000000000..ff3f786e0 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/Switch_Demo_04_Events_Value_Changed.razor @@ -0,0 +1,18 @@ + + +
@displaySwitchStatus
+ + + +@code { + private bool agree; + private string displaySwitchStatus = default!; + + private void SwitchChanged(bool value) + { + agree = value; // this is mandatory + displaySwitchStatus = $"Switch Status: {value}, changed at {DateTime.Now.ToLocalTime()}."; + } + + private void ToggleSwitch() => agree = !agree; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/Switch_Demo_05_Form.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/Switch_Demo_05_Form.razor new file mode 100644 index 000000000..4c9fec7d7 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/Switch/Switch_Demo_05_Form.razor @@ -0,0 +1,115 @@ +@using System.ComponentModel.DataAnnotations + + + + + + +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ +
+
+ +
+
+ + +
+
+
+ +@code { + private bool disableSave; + private Employee employee = new(); + private EditContext? editContext; + + [Inject] private ToastService ToastService { get; set; } = default!; + + protected override void OnInitialized() + { + employee = new() { FirstName = "Vikram Reddy", LastName = "Gaddam", IsActive = true }; + editContext = new EditContext(employee); + editContext.OnFieldChanged += HandleFieldChanged!; + + base.OnInitialized(); + } + + public void HandleOnValidSubmit() + { + disableSave = !(editContext?.Validate() ?? false); + + var toastMessage = new ToastMessage + { + Title = "Save Employee Details", + Message = $"Employee details saved successfully.", + AutoHide = true, + Type = ToastType.Success, + IconName = IconName.CheckCircleFill, + }; + + ToastService.Notify(toastMessage); + } + + private void HandleFieldChanged(object sender, FieldChangedEventArgs e) + { + disableSave = !(editContext?.Validate() ?? false); + + var toastMessage = new ToastMessage + { + Title = "Field Changed Notification", + Message = $"The field \"{e.FieldIdentifier.FieldName}\" was changed.", + AutoHide = true, + Type = ToastType.Info + }; + + ToastService.Notify(toastMessage); + } + + private void ResetForm() + { + employee = new(); + editContext = new EditContext(employee); + editContext.OnFieldChanged += HandleFieldChanged!; + } + + public class Employee + { + [Required(ErrorMessage = "First name required.")] + public string? FirstName { get; set; } + + [Required(ErrorMessage = "Last name required.")] + public string? LastName { get; set; } + + public bool IsActive { get; set; } + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInputDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInputDocumentation.razor new file mode 100644 index 000000000..da28a0343 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInputDocumentation.razor @@ -0,0 +1,76 @@ +@page "/time-input" +@page "/form/time-input" + +@title + + + +

Blazor Time Input

+
+ The Blazor Bootstrap TimeInput component is constructed using an HTML input of type="time" which limits user input based on pre-defined parameters. + This component enables users to input a time using a text box with validation or a special time picker interface. +
+ + + + + + The input UI generally varies from browser to browser. + In unsupported browsers, the control degrades gracefully to type="text". + + + + + +
+

+ The Blazor Bootstrap TimeInput component supports TimeOnly and TimeOnly?. + In the below example, TValue is set to TimeOnly and TimeOnly?. +

+
+ + + +
+ Set EnableMinMax="true" and set the Max and Min parameters to restrict the user input between the Min and Max range. +
+ + If the user tries to enter a number in the TimeInput field which is out of range, then it will override with Max or Min value based on the context. + If the user input exceeds the Max value, it will override with the Max value. If the user input is less than the Min value, then it will override with the Min value. + + + + +
Use the Disabled parameter to disable the TimeInput.
+ +
Also, use Enable() and Disable() methods to enable and disable the TimeInput.
+ + Do not use both the Disabled parameter and Enable() & Disable() methods. + + + + +
+ Like any other blazor input component, TimeInput component supports validations. Use the DataAnnotations to validate the user input before submitting the form. In the below example, we used the Required attributes. +
+ + + +
+ This event fires on every user keystroke/selection that changes the TimeInput value. +
+ + + +
+ One common scenario is that the time fields are restricted based on the entry in another time field. + In the example below, we restrict the arrival time based on the selection of departure. +
+ + +@code { + private string pageUrl = "/form/time-input"; + private string title = "Blazor TimeInput Component"; + private string description = "The Blazor Bootstrap TimeInput component is constructed using an HTML input of type 'time' which limits user input based on pre-defined parameters. This component enables users to input a time using a text box with validation or a special time picker interface."; + private string imageUrl = "https://i.imgur.com/1mVjqQv.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_01_Basic_Usage.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_01_Basic_Usage.razor new file mode 100644 index 000000000..b565c3ba5 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_01_Basic_Usage.razor @@ -0,0 +1,8 @@ +
+ +
+
Entered date: @date1
+ +@code { + private TimeOnly date1 = new TimeOnly(13, 14); +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_02_Generic_Type.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_02_Generic_Type.razor new file mode 100644 index 000000000..c2162fb5b --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_02_Generic_Type.razor @@ -0,0 +1,20 @@ +
+ TimeOnly: +
+
+ +
+
Entered time: @time1
+ +
+ TimeOnly?: +
+
+ +
+
Entered time: @time2
+ +@code { + private TimeOnly time1 = new TimeOnly(6, 40); + private TimeOnly? time2; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_03_Max_Min.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_03_Max_Min.razor new file mode 100644 index 000000000..b200d27f7 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_03_Max_Min.razor @@ -0,0 +1,35 @@ +
+ TimeOnly: +
+
+ +
+
Min time: @min1
+
Max time: @max1
+
Entered time: @time1
+ +
+ TimeOnly?: +
+
+ +
+
Min time: @min2
+
Max time: @max2
+
Entered time: @time2
+ +@code { + private TimeOnly time1, min1, max1; + private TimeOnly? time2, min2, max2; + + protected override void OnInitialized() + { + time1 = new TimeOnly(10, 0); // 10:00 AM + min1 = new TimeOnly(8, 0); // 08:00 AM + max1 = new TimeOnly(18, 0); // 06:00 PM + + time2 = null; + min2 = new TimeOnly(8, 0); // 08:00 AM + max2 = new TimeOnly(18, 0); // 06:00 PM + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_04_A_Disable.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_04_A_Disable.razor new file mode 100644 index 000000000..0ead67607 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_04_A_Disable.razor @@ -0,0 +1,19 @@ +
+ +
+
Entered time: @time1
+ + + + + +@code { + private TimeOnly time1 = new TimeOnly(10, 50); // 10:50 AM + private bool disabled = true; + + private void Enable() => disabled = false; + + private void Disable() => disabled = true; + + private void Toggle() => disabled = !disabled; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_04_B_Disable.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_04_B_Disable.razor new file mode 100644 index 000000000..7ee6cc608 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_04_B_Disable.razor @@ -0,0 +1,17 @@ +
+ +
+
Entered time: @time1
+ + + + +@code { + private TimeInput timeInput1 = default!; + + private TimeOnly time1 = new TimeOnly(10, 50); // 10:50 AM + + private void Disable() => timeInput1.Disable(); + + private void Enable() => timeInput1.Enable(); +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_05_Validations.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_05_Validations.razor new file mode 100644 index 000000000..d5f0b6901 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_05_Validations.razor @@ -0,0 +1,115 @@ +@using System.ComponentModel.DataAnnotations + + + + + + +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+
+ + +
+
+
+ +@code { + private FlightForm flightForm = new(); + private EditContext? editContext; + [Inject] ToastService ToastService { get; set; } = default!; + + protected override void OnInitialized() + { + editContext = new EditContext(flightForm); + base.OnInitialized(); + } + + public void HandleValidSubmit() + { + var toastMessage = new ToastMessage + ( + type: ToastType.Success, + iconName: IconName.Check2All, + title: "Success!", + helpText: $"{DateTime.Now.ToLocalTime()}", + message: "Flight schedule created." + ); + ToastService.Notify(toastMessage); + } + + private void ResetForm() + { + flightForm = new(); + editContext = new EditContext(flightForm); + } + + public class FlightForm + { + [Required(ErrorMessage = "Flight Number required.")] + public string? FlightNumber { get; set; } + + [Required(ErrorMessage = "Departure Date required.")] + public DateOnly? DepartureDate { get; set; } + + [Required(ErrorMessage = "Departure Time required.")] + public TimeOnly? DepartureTime { get; set; } + + [Required(ErrorMessage = "Arrival Date required.")] + public DateOnly? ArrivalDate { get; set; } + + [Required(ErrorMessage = "Arrival Time required.")] + public TimeOnly? ArrivalTime { get; set; } + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_06_Events_Value_Changed.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_06_Events_Value_Changed.razor new file mode 100644 index 000000000..8e5c694b9 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_06_Events_Value_Changed.razor @@ -0,0 +1,17 @@ +
+ +
+
Changed time: @time1
+ + + +@code { + private TimeOnly time1 = new TimeOnly(10, 0); // 10:00 AM + + private void TimeChanged(TimeOnly timeOnly) + { + time1 = timeOnly; + } + + private void UpdateTime() => time1 = new TimeOnly(11, 0); +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_07_Restrict_The_Time_Field_Based_On_The_Entry_In_Another_Time_Field.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_07_Restrict_The_Time_Field_Based_On_The_Entry_In_Another_Time_Field.razor new file mode 100644 index 000000000..9a97fff3f --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Form/TimeInput/TimeInput_Demo_07_Restrict_The_Time_Field_Based_On_The_Entry_In_Another_Time_Field.razor @@ -0,0 +1,118 @@ +@using System.ComponentModel.DataAnnotations + + + + + + +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+
+ + +
+
+
+ +@code { + private TimeInput arrivalTimeInput = default!; + private bool disableArrivalTimeInput = true; + + private FlightForm flightForm = new(); + private EditContext? editContext; + + private TimeOnly? arrivalMinTime; + private TimeOnly? arrivalMaxTime; + + [Inject] ToastService ToastService { get; set; } = default!; + + protected override void OnInitialized() + { + editContext = new EditContext(flightForm); + base.OnInitialized(); + } + + private void DepartureTimeChanged(TimeOnly? departureTime) + { + if (departureTime is null || !departureTime.HasValue) + { + flightForm.DepartureTime = null; + flightForm.ArrivalTime = null; + arrivalMinTime = null; + arrivalMaxTime = null; + disableArrivalTimeInput = true; + + return; + } + + flightForm.DepartureTime = departureTime; + flightForm.ArrivalTime = null; + arrivalMinTime = departureTime.Value.AddHours(1); + arrivalMaxTime = departureTime.Value.AddHours(12); + disableArrivalTimeInput = false; + } + + public void HandleValidSubmit() + { + var toastMessage = new ToastMessage + ( + type: ToastType.Success, + iconName: IconName.Check2All, + title: "Success!", + helpText: $"{DateTime.Now.ToLocalTime()}", + message: "Flight schedule created." + ); + + ToastService.Notify(toastMessage); + } + + private void ResetForm() + { + flightForm = new(); + editContext = new EditContext(flightForm); + } + + public class FlightForm + { + [Required(ErrorMessage = "Departure Time required.")] + public TimeOnly? DepartureTime { get; set; } + + [Required(ErrorMessage = "Arrival Time required.")] + public TimeOnly? ArrivalTime { get; set; } + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/GettingStarted/GettingStartedDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/GettingStarted/GettingStartedDocumentation.razor new file mode 100644 index 000000000..d83b8b6ea --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/GettingStarted/GettingStartedDocumentation.razor @@ -0,0 +1,119 @@ +@page "/getting-started" +@page "/getting-started/blazor-webassembly" +@page "/getting-started/blazor-server" +@page "/getting-started/maui-blazor" + +@title + + + +

Getting started - Blazor Bootstrap

+
Get started with the Enterprise-class Blazor Bootstrap Component library built on the Blazor and Bootstrap CSS framework.
+ + + + +
+ Please find the getting started documentation links, corresponding to each .NET version and project type, listed below: +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#.NET VersionDocumentation Link
1.NET 8Blazor WebAssembly (.NET 8)
2.NET 8Blazor WebApp (.NET 8) - Interactive render mode Server - Global location
3.NET 8Blazor WebApp (.NET 8) - Interactive render mode Auto - Global location
4.NET 8MAUI Blazor Hybrid App (.NET 8)
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
#.NET VersionDocumentation Link
1.NET 7Blazor WebAssembly (.NET 7)
2.NET 7Blazor Server (.NET 7)
3.NET 7MAUI Blazor Hybrid App (.NET 7)
+ + + + + + + + + + + + + + + + + + + + + + + +
#.NET VersionDocumentation Link
1.NET 6Blazor WebAssembly (.NET 6)
2.NET 6Blazor Server (.NET 6)
+ + +@code { + private string pageUrl = "/getting-started/blazor-webassembly"; + private string title = "Getting started with Blazor Bootstrap - Blazor WebAssembly Project Setup"; + private string description = "High-performance, lightweight, and responsive blazor bootstrap components in a single package from the developers for the developers."; + private string imageUrl = "https://i.imgur.com/SCbZVd4.jpg"; + + private string? version; + [Inject] public IConfiguration Configuration { get; set; } = default!; + + protected override void OnInitialized() + { + version = Configuration["version"]; // example: v0.6.1 + base.OnInitialized(); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/GridDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/GridDocumentation.razor new file mode 100644 index 000000000..14b29f327 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/GridDocumentation.razor @@ -0,0 +1,214 @@ +@page "/grid" + +@title + + + +

Blazor Grid

+
+ Use Blazor Bootstrap grid component to display tabular data from the data source. And it supports client-side and server-side filtering, paging & sorting. +
+ + + + +
For filtering, AllowFiltering and PropertyName parameters are required.
+
Add AllowFiltering="true" parameter to Grid and PropertyName parameter to all the GridColumns.
+ + + +
In the below example, StringComparision.Ordinal is used on the Employee Name column to make the filter case-sensitive.
+ +
By default, StringComparison.OrdinalIgnoreCase is used to compare culture-agnostic and case-insensitive string matching.
+
+ + + +
For paging, AllowPaging and PageSize parameters are required.
+
Add AllowPaging="true" and PageSize="20" parameters to the Grid. PageSize parameter is optional.
+The default page size is 10. + + + +
For sorting, AllowSorting and SortKeySelector parameters are required.
+
Add AllowSorting="true" parameter to Grid and SortKeySelector to all the GridColumns.
+ + + + + + +
+ FilterOperator and FilterValue parameters are required to set the default filter. +
+You can set the default filter on more than one GridColumn. +
The default sorting is enabled on the Id column in the below example.
+ + + +
+ Filterable parameter is required to disable the filter on a specific column. Add Filterable="false" parameter to GridColumn. The column filter is disabled on the Id column in the below example. +
+ + + +
Add FilterTextboxWidth parameter to the GridColumn to increase or decrease the filter textbox width, FilterTextboxWidth parameter is optional.
+Filter textbox width measured in pixels. + + + + + + +
IsDefaultSortColumn parameter is required to set the default sorting. Add IsDefaultSortColumn="true" parameter to the GridColumn.
+
The default sort direction will be ascending. To change the default sorting of a column, add SortDirection="SortDirection.Descending" to the GridColumn.
+If more than one GridColumn has the IsDefaultSortColumn paramter, it will pick the first column as the default sorting column. +
The default sorting is enabled on the Employee Name column in the below example, and the sort direction is descending.
+ + + +
Add Sortable="false"parameter the GridColumn to disable the sorting. If sorting is disabled, then the SortKeySelector parameter is not required. The sorting is disabled on the Designation column in the below example.
+ + + +
Use the HeaderTextAlignment parameter to change the header column alignment. By default, HeaderTextAlignment is set to Alignment.Start. Other options you can use are Alignment.Center and Alignment.End.
+ + + +
Use the TextAlignment parameter to change the cell data alignment. By default, TextAlignment is set to Alignment.Start. Other options you can use are Alignment.Center and Alignment.End.
+ + + +
To format the cell data, use ToString method and format strings. Refer: How to format numbers, dates, enums, and other types in .NET
+Example: @@context.Salary.ToString("N2"). + + + +
To prevent text from wrapping, add TextNoWrap="true" to the GridColumn.
+ + + +
If there are no records to display in the Grid, by default, it will display the No records to display message. You can change this message by adding the EmptyText parameter to the Grid.
+ + + +
This example shows how to save/load the Grid state. The state includes the page number, page size, and filters.
+In version 0.5.1 and above, the Grid sorting state is not included as part of GridSettings. We will add it in the subsequent releases. +Browser local storage is used to persist the Grid state. Common locations exist for persisting state are Server-side storage, URL, Browser storage, and In-memory state container service. + + + +
Assign a collection to the Data parameter to render the grid dynamically. The example below will render different department employees in the individual grid.
+ + + +
You can update the collection assigned to the Data parameter. In the below example, the grid will render the updated collection.
+ + + +

+ The Add Employee button click adds a new employee to the existing employees collection—so explicit grid refresh is required. +

+

+ The Add Employee 2 button click creates a shallow copy of the employees collection and adds a new employee. + This new collection is assigned to the employees variable. Now, the employees variable has a new reference. So the grid will refresh automatically. An explicit grid refresh call is not required. +

+
+ + +
In the below example, we applied table-danger CSS class to the row where the employee is inactive and the table-success CSS class to the row where the employee designation is Architect.
+ + + +
In the below example, we applied table-danger CSS class to the Active column where the employee is inactive and the table-success CSS class to the Active column where the employee is active.
+ + + +
In the following example, the Class parameter is used to apply the CSS class to an entire grid column, including the header.
+ + + +
In the below example, we use <HeaderContent> and <ChildContent> tags to define custom column header and cell content. When defining header content, filters and sorting are removed from column.
+ + + +
+ Set AllowSelection="true" to enable the selection on the Grid. + By default, SelectionMode is Single. +
+ + + +
+ To select multiple rows, set SelectionMode="GridSelectionMode.Multiple". +
+ + +

Selected items are removed from the selection if they are not rendered after paging, sorting, filtering, etc.

+
+ + +
+ We can disable the header checkbox or row level checkbox based on a condition. + For this, we have DisableAllRowsSelection and DisableRowSelection delegate parameters. In the below example, we disabled the header checkbox if any of the employee Id is less than 105. + Also, disable check the row level checkbox if the employee Id is less than 105. +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
In the example below, you will see translations related to pagination and filters in Dutch.
+ + + +
+ To set the fixed header, set the FixedHeader parameter to true. The minimum height of the grid is 320 pixels. + You can change the units to em, pt, px, or etc. by setting the Unit parameter. +
+ + + + + + +
+ + + + + + + + + + + +@code { + private string pageUrl = "/grid"; + private string title = "Blazor Grid Component"; + private string description = "Use Blazor Bootstrap grid component to display tabular data from the data source. And it supports client-side and server-side filtering, paging, and sorting."; + private string imageUrl = "https://i.imgur.com/kKNgo2I.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_01_A_Client_Side_Filtering.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_01_A_Client_Side_Filtering.razor new file mode 100644 index 000000000..b503b28fc --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_01_A_Client_Side_Filtering.razor @@ -0,0 +1,59 @@ + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + + +@code { + BlazorBootstrap.Grid grid = default!; + private IEnumerable employees = default!; + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + await base.OnAfterRenderAsync(firstRender); + } + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee4 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee4 { Id = null, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee4 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee4 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee4 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee4 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee4 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee4 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee4 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = null, IsActive = true }, + new Employee4 { Id = 110, Name = "Vijay", Designation = null, DOJ = new DateOnly(1990, 7, 1), IsActive = true }, + }; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_01_B_Client_Side_Filtering_With_StringComparision.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_01_B_Client_Side_Filtering_With_StringComparision.razor new file mode 100644 index 000000000..9c52df07c --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_01_B_Client_Side_Filtering_With_StringComparision.razor @@ -0,0 +1,45 @@ + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + +@code { + private IEnumerable? employees; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + }; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_02_Client_Side_Paging.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_02_Client_Side_Paging.razor new file mode 100644 index 000000000..a34fdaf62 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_02_Client_Side_Paging.razor @@ -0,0 +1,55 @@ + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + + +@code { + private IEnumerable employees = default!; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 113, Name = "Merlin", Designation = "Senior Consultant", DOJ = new DateOnly(1989, 10, 2), IsActive = true }, + new Employee1 { Id = 117, Name = "Sharna", Designation = "Data Analyst", DOJ = new DateOnly(1994, 5, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + new Employee1 { Id = 111, Name = "Glenda", Designation = "Data Engineer", DOJ = new DateOnly(1994, 1, 12), IsActive = true }, + }; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_03_Client_Side_Sorting.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_03_Client_Side_Sorting.razor new file mode 100644 index 000000000..e6ee6c7f8 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_03_Client_Side_Sorting.razor @@ -0,0 +1,56 @@ + + + + @context.Id + + + + @context.Name + + + + @context.Designation + + + + @context.DOJ + + + + @context.IsActive + + + + +@code { + private IEnumerable employees = default!; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + }; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_04_Client_Side_Filtering_Paging_And_Sorting.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_04_Client_Side_Filtering_Paging_And_Sorting.razor new file mode 100644 index 000000000..270142cdd --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_04_Client_Side_Filtering_Paging_And_Sorting.razor @@ -0,0 +1,82 @@ + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + + +
+ Selected Items Count: @selectedEmployees.Count +
+ +
+ Selected Employees: +
    + @foreach (var emp in selectedEmployees) + { +
  • @emp.Name
  • + } +
+
+ +@code { + private IEnumerable employees = default!; + + private HashSet selectedEmployees = new(); + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 113, Name = "Merlin", Designation = "Senior Consultant", DOJ = new DateOnly(1989, 10, 2), IsActive = true }, + new Employee1 { Id = 117, Name = "Sharna", Designation = "Data Analyst", DOJ = new DateOnly(1994, 5, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + new Employee1 { Id = 111, Name = "Glenda", Designation = "Data Engineer", DOJ = new DateOnly(1994, 1, 12), IsActive = true }, + }; + } + + private Task OnSelectedItemsChanged(HashSet employees) + { + selectedEmployees = employees is not null && employees.Any() ? employees : new(); + return Task.CompletedTask; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_05_Set_Default_Filter.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_05_Set_Default_Filter.razor new file mode 100644 index 000000000..e9e5f1509 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_05_Set_Default_Filter.razor @@ -0,0 +1,51 @@ + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + + +@code { + private IEnumerable? employees; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + }; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_06_Disable_Specific_Column_Filter.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_06_Disable_Specific_Column_Filter.razor new file mode 100644 index 000000000..3835c706b --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_06_Disable_Specific_Column_Filter.razor @@ -0,0 +1,45 @@ + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + +@code { + private IEnumerable? employees; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + }; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_06_Increase_Filter_Textbox_Width.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_06_Increase_Filter_Textbox_Width.razor new file mode 100644 index 000000000..731c950da --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_06_Increase_Filter_Textbox_Width.razor @@ -0,0 +1,57 @@ + + + @context.Id + + + @context.FirstName + + + @context.LastName + + + @context.Email + + + @context.Company + + + @context.Designation + + + @context.DOJ + + + @context.Salary.ToString("N2") + + + @context.IsActive + + + +@code { + private IEnumerable? employees; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee3 { Id = 107, FirstName = "Alice", LastName = "Reddy", Email = "alice@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), Salary = 7700, IsActive = true }, + new Employee3 { Id = 103, FirstName = "Bob", LastName = "Roy", Email = "bob@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), Salary = 19000, IsActive = true }, + new Employee3 { Id = 106, FirstName = "John", LastName = "Papa", Email = "john@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), Salary = 12000, IsActive = true }, + new Employee3 { Id = 104, FirstName = "Pop", LastName = "Two", Email = "pop@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), Salary = 19000, IsActive = false }, + new Employee3 { Id = 105, FirstName = "Ronald", LastName = "Dire", Email = "ronald@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), Salary = 16500.50M, IsActive = true }, + new Employee3 { Id = 102, FirstName = "Line", LastName = "K", Email = "line@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), Salary = 24000, IsActive = true }, + new Employee3 { Id = 101, FirstName = "Daniel", LastName = "Potter", Email = "daniel@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), Salary = 21000, IsActive = true }, + new Employee3 { Id = 108, FirstName = "Zayne", LastName = "Simmons", Email = "zayne@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), Salary = 17850, IsActive = true }, + new Employee3 { Id = 109, FirstName = "Isha", LastName = "Davison", Email = "isha@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), Salary = 8000, IsActive = true }, + }; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_07_Server_Side_Filtering_Paging_And_Sorting.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_07_Server_Side_Filtering_Paging_And_Sorting.razor new file mode 100644 index 000000000..c7e34163a --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_07_Server_Side_Filtering_Paging_And_Sorting.razor @@ -0,0 +1,50 @@ + + + + @context.CustomerId + + + @context.CustomerName + + + @context.Phone + + + @context.Email + + + @context.Address + + + @context.PostalZip + + + @context.Country + + + + +@code { + [Inject] public ICustomerService _customerService { get; set; } = default!; + + private async Task> CustomersDataProvider(GridDataProviderRequest request) + { + string sortString = ""; + SortDirection sortDirection = SortDirection.None; + + if (request.Sorting is not null && request.Sorting.Any()) + { + // Note: Multi column sorting is not supported at this moment + sortString = request.Sorting.FirstOrDefault()!.SortString; + sortDirection = request.Sorting.FirstOrDefault()!.SortDirection; + } + var result = await _customerService.GetCustomersAsync(request.Filters, request.PageNumber, request.PageSize, sortString, sortDirection, request.CancellationToken); + return await Task.FromResult(new GridDataProviderResult { Data = result.Item1, TotalCount = result.Item2 }); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_08_Default_Sorting.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_08_Default_Sorting.razor new file mode 100644 index 000000000..e842cb6e5 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_08_Default_Sorting.razor @@ -0,0 +1,45 @@ + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + +@code { + private IEnumerable? employees; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + }; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_09_Disable_Specific_Column_Sorting.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_09_Disable_Specific_Column_Sorting.razor new file mode 100644 index 000000000..9363a3ae1 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_09_Disable_Specific_Column_Sorting.razor @@ -0,0 +1,45 @@ + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + +@code { + private IEnumerable? employees; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + }; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_10_Header_Text_Alignment.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_10_Header_Text_Alignment.razor new file mode 100644 index 000000000..2f3627c9a --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_10_Header_Text_Alignment.razor @@ -0,0 +1,45 @@ + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + +@code { + private IEnumerable? employees; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + }; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_11_Grid_Cell_Alignment.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_11_Grid_Cell_Alignment.razor new file mode 100644 index 000000000..f03c99094 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_11_Grid_Cell_Alignment.razor @@ -0,0 +1,45 @@ + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.Salary + + + @context.IsActive + + + +@code { + private IEnumerable? employees; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee2 { Id = 107, Name = "Alice", Designation = "AI Engineer", Salary = 7700, IsActive = true }, + new Employee2 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", Salary = 19000, IsActive = true }, + new Employee2 { Id = 106, Name = "John", Designation = "Data Engineer", Salary = 12000, IsActive = true }, + new Employee2 { Id = 104, Name = "Pop", Designation = "Associate Architect", Salary = 19000, IsActive = false }, + new Employee2 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", Salary = 16500.50M, IsActive = true }, + new Employee2 { Id = 102, Name = "Line", Designation = "Architect", Salary = 24000, IsActive = true }, + new Employee2 { Id = 101, Name = "Daniel", Designation = "Architect", Salary = 21000, IsActive = true }, + new Employee2 { Id = 108, Name = "Zayne", Designation = "Data Analyst", Salary = 17850, IsActive = true }, + new Employee2 { Id = 109, Name = "Isha", Designation = "App Maker", Salary = 8000, IsActive = true }, + }; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_12_Grid_Cell_Formating.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_12_Grid_Cell_Formating.razor new file mode 100644 index 000000000..f7c6dc719 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_12_Grid_Cell_Formating.razor @@ -0,0 +1,45 @@ + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.Salary.ToString("N2") + + + @context.IsActive + + + +@code { + private IEnumerable? employees; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee2 { Id = 107, Name = "Alice", Designation = "AI Engineer", Salary = 7700, IsActive = true }, + new Employee2 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", Salary = 19000, IsActive = true }, + new Employee2 { Id = 106, Name = "John", Designation = "Data Engineer", Salary = 12000, IsActive = true }, + new Employee2 { Id = 104, Name = "Pop", Designation = "Associate Architect", Salary = 19000, IsActive = false }, + new Employee2 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", Salary = 16500.50M, IsActive = true }, + new Employee2 { Id = 102, Name = "Line", Designation = "Architect", Salary = 24000, IsActive = true }, + new Employee2 { Id = 101, Name = "Daniel", Designation = "Architect", Salary = 21000, IsActive = true }, + new Employee2 { Id = 108, Name = "Zayne", Designation = "Data Analyst", Salary = 17850, IsActive = true }, + new Employee2 { Id = 109, Name = "Isha", Designation = "App Maker", Salary = 8000, IsActive = true }, + }; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_13_Grid_Cell_Nowrap.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_13_Grid_Cell_Nowrap.razor new file mode 100644 index 000000000..d589f3c51 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_13_Grid_Cell_Nowrap.razor @@ -0,0 +1,57 @@ + + + @context.Id + + + @context.FirstName + + + @context.LastName + + + @context.Email + + + @context.Company + + + @context.Designation + + + @context.DOJ + + + @context.Salary.ToString("N2") + + + @context.IsActive + + + +@code { + private IEnumerable? employees; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee3 { Id = 107, FirstName = "Alice", LastName = "Reddy", Email = "alice@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), Salary = 7700, IsActive = true }, + new Employee3 { Id = 103, FirstName = "Bob", LastName = "Roy", Email = "bob@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), Salary = 19000, IsActive = true }, + new Employee3 { Id = 106, FirstName = "John", LastName = "Papa", Email = "john@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), Salary = 12000, IsActive = true }, + new Employee3 { Id = 104, FirstName = "Pop", LastName = "Two", Email = "pop@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), Salary = 19000, IsActive = false }, + new Employee3 { Id = 105, FirstName = "Ronald", LastName = "Dire", Email = "ronald@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), Salary = 16500.50M, IsActive = true }, + new Employee3 { Id = 102, FirstName = "Line", LastName = "K", Email = "line@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), Salary = 24000, IsActive = true }, + new Employee3 { Id = 101, FirstName = "Daniel", LastName = "Potter", Email = "daniel@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), Salary = 21000, IsActive = true }, + new Employee3 { Id = 108, FirstName = "Zayne", LastName = "Simmons", Email = "zayne@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), Salary = 17850, IsActive = true }, + new Employee3 { Id = 109, FirstName = "Isha", LastName = "Davison", Email = "isha@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), Salary = 8000, IsActive = true }, + }; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_15_Empty_Data.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_15_Empty_Data.razor new file mode 100644 index 000000000..854dfb401 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_15_Empty_Data.razor @@ -0,0 +1,23 @@ + + + @context.Id + + + @context.FirstName + + + @context.LastName + + + @context.Designation + + + +@code { + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + await Task.Delay(3000); + + return (new GridDataProviderResult { Data = new List(), TotalCount = 0 }); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_16_Save_And_Load_Grid_Settings.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_16_Save_And_Load_Grid_Settings.razor new file mode 100644 index 000000000..485ba28ca --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_16_Save_And_Load_Grid_Settings.razor @@ -0,0 +1,84 @@ +@using System.Text.Json + + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + + +@code { + BlazorBootstrap.Grid grid = default!; + private IEnumerable? employees; + + [Inject] public IJSRuntime JS { get; set; } = default!; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private async Task OnGridSettingsChanged(GridSettings settings) + { + if (settings is null) + return; + + // NOTE: enable below two lines, if you want to set default values for PageNumber and PageSize all the time. + //settings.PageNumber = 1; + //settings.PageSize = 10; + + await JS.InvokeVoidAsync("window.localStorage.setItem", "grid-settings", JsonSerializer.Serialize(settings)); + } + + private async Task GridSettingsProvider() + { + var settingsJson = await JS.InvokeAsync("window.localStorage.getItem", "grid-settings"); + if (string.IsNullOrWhiteSpace(settingsJson)) + return null!; + + var settings = JsonSerializer.Deserialize(settingsJson); + if (settings is null) + return null!; + + return settings; + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 113, Name = "Merlin", Designation = "Senior Consultant", DOJ = new DateOnly(1989, 10, 2), IsActive = true }, + new Employee1 { Id = 117, Name = "Sharna", Designation = "Data Analyst", DOJ = new DateOnly(1994, 5, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + new Employee1 { Id = 111, Name = "Glenda", Designation = "Data Engineer", DOJ = new DateOnly(1994, 1, 12), IsActive = true }, + }; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_17_A_Data_Parameter_Assign_Collection.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_17_A_Data_Parameter_Assign_Collection.razor new file mode 100644 index 000000000..8aef7787a --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_17_A_Data_Parameter_Assign_Collection.razor @@ -0,0 +1,40 @@ +@foreach (var department in departments) +{ +

@department.Name Employees:

+ + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + +} + +@code { + private List departments = new List() + { + new Department("Product 1 - Research & Development", new List { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true } + }), + new Department("Product 2 - Research & Development", new List { + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true } + }) + }; +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_17_B_Data_Parameter_Update_Collection.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_17_B_Data_Parameter_Update_Collection.razor new file mode 100644 index 000000000..b4d5c0de5 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_17_B_Data_Parameter_Update_Collection.razor @@ -0,0 +1,65 @@ + + + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + +@code { + Grid grid = default!; + private List? employees; + + protected override void OnInitialized() + { + employees = new List { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true } + }; + } + + private async Task AddEmployee() + { + // for the same employees collection, we are adding an object + // explicit grid refresh required + employees!.Add(CreateEmployee()); + await grid.RefreshDataAsync(); + } + + private void AddEmployee2() + { + // creates a shallow copy + var emps = employees!.GetRange(0, employees.Count); + emps.Add(CreateEmployee()); + // now employees variable has a new reference. So no need to refresh the grid explicitly + // explicit grid refresh is not required + employees = emps; + } + + private Employee1 CreateEmployee() + { + var emp = new Employee1(); + emp.Id = employees!.Max(x => x.Id) + 1; + emp.Name = $"Employee {emp.Id}"; + emp.Designation = $"QA Engineer {emp.Id}"; + emp.DOJ = new DateOnly(new Random().Next(1970, 2000), new Random().Next(1, 12), new Random().Next(1, 25)); + emp.IsActive = true; + return emp; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_18_Specify_Custom_Row_Class.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_18_Specify_Custom_Row_Class.razor new file mode 100644 index 000000000..059e0f3c8 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_18_Specify_Custom_Row_Class.razor @@ -0,0 +1,68 @@ + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + + +@code { + private IEnumerable? employees; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private string GetRowClass(Employee1 emp) + { + if (!emp.IsActive) + return "table-danger"; + else if (emp.Designation == "Architect") + return "table-success"; + + return string.Empty; + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 113, Name = "Merlin", Designation = "Senior Consultant", DOJ = new DateOnly(1989, 10, 2), IsActive = true }, + new Employee1 { Id = 117, Name = "Sharna", Designation = "Data Analyst", DOJ = new DateOnly(1994, 5, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + new Employee1 { Id = 111, Name = "Glenda", Designation = "Data Engineer", DOJ = new DateOnly(1994, 1, 12), IsActive = true }, + }; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_19_Specify_Custom_Column_Class.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_19_Specify_Custom_Column_Class.razor new file mode 100644 index 000000000..2afe8c090 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_19_Specify_Custom_Column_Class.razor @@ -0,0 +1,61 @@ + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + + +@code { + private IEnumerable? employees; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 113, Name = "Merlin", Designation = "Senior Consultant", DOJ = new DateOnly(1989, 10, 2), IsActive = true }, + new Employee1 { Id = 117, Name = "Sharna", Designation = "Data Analyst", DOJ = new DateOnly(1994, 5, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + new Employee1 { Id = 111, Name = "Glenda", Designation = "Data Engineer", DOJ = new DateOnly(1994, 1, 12), IsActive = true }, + }; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_20_Column_Css_Class.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_20_Column_Css_Class.razor new file mode 100644 index 000000000..4e66f13b0 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_20_Column_Css_Class.razor @@ -0,0 +1,57 @@ + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + + +@code { + private IEnumerable? employees; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 113, Name = "Merlin", Designation = "Senior Consultant", DOJ = new DateOnly(1989, 10, 2), IsActive = true }, + new Employee1 { Id = 117, Name = "Sharna", Designation = "Data Analyst", DOJ = new DateOnly(1994, 5, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + new Employee1 { Id = 111, Name = "Glenda", Designation = "Data Engineer", DOJ = new DateOnly(1994, 1, 12), IsActive = true }, + }; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_21_Specify_Custom_Column_Header.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_21_Specify_Custom_Column_Header.razor new file mode 100644 index 000000000..10b4e4761 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_21_Specify_Custom_Column_Header.razor @@ -0,0 +1,70 @@ + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + + + + + + + + + + +@code { + private IEnumerable employees = default!; + + private bool IsAllChecked + { + get => employees.All(e => e.IsActive); + set => Array.ForEach(employees.ToArray(), e => e.IsActive = value); + } + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + Console.WriteLine("EmployeesDataProvider called..."); + + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 113, Name = "Merlin", Designation = "Senior Consultant", DOJ = new DateOnly(1989, 10, 2), IsActive = true }, + new Employee1 { Id = 117, Name = "Sharna", Designation = "Data Analyst", DOJ = new DateOnly(1994, 5, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + new Employee1 { Id = 111, Name = "Glenda", Designation = "Data Engineer", DOJ = new DateOnly(1994, 1, 12), IsActive = true }, + }; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_22_Selection.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_22_Selection.razor new file mode 100644 index 000000000..18e3193b1 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_22_Selection.razor @@ -0,0 +1,76 @@ + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + + +
+ Selected Items Count: @selectedEmployees.Count +
+ +
+ Selected Employees: +
    + @foreach (var emp in selectedEmployees) + { +
  • @emp.Name
  • + } +
+
+ +@code { + private IEnumerable employees = default!; + + private HashSet selectedEmployees = new(); + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + Console.WriteLine("EmployeesDataProvider called..."); + + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + }; + } + + private Task OnSelectedItemsChanged(HashSet employees) + { + selectedEmployees = employees is not null && employees.Any() ? employees : new(); + return Task.CompletedTask; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_23_Multiple_Selection.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_23_Multiple_Selection.razor new file mode 100644 index 000000000..35534401f --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_23_Multiple_Selection.razor @@ -0,0 +1,78 @@ + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + + +
+ Selected Items Count: @selectedEmployees.Count +
+ +
+ Selected Employees: +
    + @foreach (var emp in selectedEmployees) + { +
  • @emp.Name
  • + } +
+
+ +@code { + private IEnumerable employees = default!; + + private HashSet selectedEmployees = new(); + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + Console.WriteLine("EmployeesDataProvider called..."); + + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + }; + } + + private Task OnSelectedItemsChanged(HashSet employees) + { + selectedEmployees = employees is not null && employees.Any() ? employees : new(); + return Task.CompletedTask; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_24_Disable_Selection.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_24_Disable_Selection.razor new file mode 100644 index 000000000..3dca7f74d --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_24_Disable_Selection.razor @@ -0,0 +1,87 @@ + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + + +
+ Selected Items Count: @selectedEmployees.Count +
+ +
+ Selected Employees: +
    + @foreach (var emp in selectedEmployees) + { +
  • @emp.Name
  • + } +
+
+ +@code { + private IEnumerable employees = default!; + + private HashSet selectedEmployees = new(); + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + }; + } + + private bool DisableAllRowsSelectionHandler(IEnumerable employees) + { + return employees.Any(x => x.Id < 105); // disable selection if EmployeeId < 105 + } + + private bool DisableRowSelectionHandler(Employee1 emp) + { + return emp.Id < 105; // disable selection if EmployeeId < 105 + } + + private Task OnSelectedItemsChanged(HashSet employees) + { + selectedEmployees = employees is not null && employees.Any() ? employees : new(); + return Task.CompletedTask; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_25_Dynamic_Page_Size.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_25_Dynamic_Page_Size.razor new file mode 100644 index 000000000..82bf6e755 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_25_Dynamic_Page_Size.razor @@ -0,0 +1,62 @@ + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + + + + + + +@code { + private int pageSize = 5; + private IEnumerable employees = default!; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 113, Name = "Merlin", Designation = "Senior Consultant", DOJ = new DateOnly(1989, 10, 2), IsActive = true }, + new Employee1 { Id = 117, Name = "Sharna", Designation = "Data Analyst", DOJ = new DateOnly(1994, 5, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + new Employee1 { Id = 111, Name = "Glenda", Designation = "Data Engineer", DOJ = new DateOnly(1994, 1, 12), IsActive = true }, + }; + } + + private void ChangeSize(int size) => pageSize = size; +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_26_Page_Size_Selection.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_26_Page_Size_Selection.razor new file mode 100644 index 000000000..d0404960b --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_26_Page_Size_Selection.razor @@ -0,0 +1,57 @@ + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + + +@code { + private IEnumerable employees = default!; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 113, Name = "Merlin", Designation = "Senior Consultant", DOJ = new DateOnly(1989, 10, 2), IsActive = true }, + new Employee1 { Id = 117, Name = "Sharna", Designation = "Data Analyst", DOJ = new DateOnly(1994, 5, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + new Employee1 { Id = 111, Name = "Glenda", Designation = "Data Engineer", DOJ = new DateOnly(1994, 1, 12), IsActive = true }, + }; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_27_Header_Row_CSS_Class.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_27_Header_Row_CSS_Class.razor new file mode 100644 index 000000000..c5d74a52b --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_27_Header_Row_CSS_Class.razor @@ -0,0 +1,140 @@ + + + + @context.Id + + + + @context.Name + + + + @context.Designation + + + + @context.DOJ + + + + @context.IsActive + + + + + + + + @context.Id + + + + @context.Name + + + + @context.Designation + + + + @context.DOJ + + + + @context.IsActive + + + + + + + + @context.Id + + + + @context.Name + + + + @context.Designation + + + + @context.DOJ + + + + @context.IsActive + + + + + + + + @context.Id + + + + @context.Name + + + + @context.Designation + + + + @context.DOJ + + + + @context.IsActive + + + + +@code { + private IEnumerable employees = default!; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + }; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_28_Filters_Row_CSS_Class.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_28_Filters_Row_CSS_Class.razor new file mode 100644 index 000000000..fa9934914 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_28_Filters_Row_CSS_Class.razor @@ -0,0 +1,241 @@ + + + + @context.Id + + + + @context.Name + + + + @context.Designation + + + + @context.DOJ + + + + @context.IsActive + + + + + + + + @context.Id + + + + @context.Name + + + + @context.Designation + + + + @context.DOJ + + + + @context.IsActive + + + + + + + + @context.Id + + + + @context.Name + + + + @context.Designation + + + + @context.DOJ + + + + @context.IsActive + + + + + + + + @context.Id + + + + @context.Name + + + + @context.Designation + + + + @context.DOJ + + + + @context.IsActive + + + + + + + + @context.Id + + + + @context.Name + + + + @context.Designation + + + + @context.DOJ + + + + @context.IsActive + + + + + + + + @context.Id + + + + @context.Name + + + + @context.Designation + + + + @context.DOJ + + + + @context.IsActive + + + + + + + + @context.Id + + + + @context.Name + + + + @context.Designation + + + + @context.DOJ + + + + @context.IsActive + + + + +@code { + private IEnumerable employees = default!; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + }; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_29_Row_Click.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_29_Row_Click.razor new file mode 100644 index 000000000..d19691dee --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_29_Row_Click.razor @@ -0,0 +1,62 @@ + + + + @context.Id + + + + @context.Name + + + + @context.Designation + + + + @context.DOJ + + + + @context.IsActive + + + + +@code { + [Inject] ModalService ModalService { get; set; } = default!; + + private IEnumerable employees = default!; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + }; + } + + private async Task OnRowClick(GridRowEventArgs args) + { + await ModalService.ShowAsync(new ModalOption { Type = ModalType.Primary, Title = "Event: Row Click", Message = $"Id: {args.Item.Id}, Name: {args.Item.Name}" }); + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_30_Row_Double_Click.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_30_Row_Double_Click.razor new file mode 100644 index 000000000..75e2780aa --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_30_Row_Double_Click.razor @@ -0,0 +1,62 @@ + + + + @context.Id + + + + @context.Name + + + + @context.Designation + + + + @context.DOJ + + + + @context.IsActive + + + + +@code { + [Inject] ModalService ModalService { get; set; } = default!; + + private IEnumerable employees = default!; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + }; + } + + private async Task OnRowDoubleClick(GridRowEventArgs args) + { + await ModalService.ShowAsync(new ModalOption { Type = ModalType.Primary, Title = "Event: Row Double Click", Message = $"Id: {args.Item.Id}, Name: {args.Item.Name}" }); + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_31_Translations.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_31_Translations.razor new file mode 100644 index 000000000..7329ae0a7 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_31_Translations.razor @@ -0,0 +1,87 @@ + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + + +@code { + private IEnumerable employees = default!; + + private async Task> GridFiltersTranslationProvider() + { + var filtersTranslation = new List(); + + // number/date/boolean + filtersTranslation.Add(new("=", "gelijk aan", FilterOperator.Equals)); + filtersTranslation.Add(new("!=", "Niet gelijk", FilterOperator.NotEquals)); + // number/date + filtersTranslation.Add(new("<", "Minder dan", FilterOperator.LessThan)); + filtersTranslation.Add(new("<=", "Kleiner dan of gelijk aan", FilterOperator.LessThanOrEquals)); + filtersTranslation.Add(new(">", "Groter dan", FilterOperator.GreaterThan)); + filtersTranslation.Add(new(">=", "Groter dan of gelijk aan", FilterOperator.GreaterThanOrEquals)); + // string + filtersTranslation.Add(new("*a*", "Bevat", FilterOperator.Contains)); + filtersTranslation.Add(new("a**", "Begint met", FilterOperator.StartsWith)); + filtersTranslation.Add(new("**a", "Eindigt met", FilterOperator.EndsWith)); + filtersTranslation.Add(new("=", "gelijk aan", FilterOperator.Equals)); + // common + filtersTranslation.Add(new("x", "Duidelijk", FilterOperator.Clear)); + + return await Task.FromResult(filtersTranslation); + } + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 113, Name = "Merlin", Designation = "Senior Consultant", DOJ = new DateOnly(1989, 10, 2), IsActive = true }, + new Employee1 { Id = 117, Name = "Sharna", Designation = "Data Analyst", DOJ = new DateOnly(1994, 5, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + new Employee1 { Id = 111, Name = "Glenda", Designation = "Data Engineer", DOJ = new DateOnly(1994, 1, 12), IsActive = true }, + }; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_32_Fixed_Header_A.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_32_Fixed_Header_A.razor new file mode 100644 index 000000000..be584c5a0 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_32_Fixed_Header_A.razor @@ -0,0 +1,82 @@ + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.Designation + + + @context.Designation + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + @context.IsActive + + + @context.IsActive + + + @context.IsActive + + + @context.IsActive + + + + +@code { + BlazorBootstrap.Grid grid = default!; + private IEnumerable employees = default!; + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + await base.OnAfterRenderAsync(firstRender); + } + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee4 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee4 { Id = null, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee4 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee4 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee4 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee4 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee4 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee4 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee4 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = null, IsActive = true }, + new Employee4 { Id = 110, Name = "Vijay", Designation = null, DOJ = new DateOnly(1990, 7, 1), IsActive = true }, + }; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_32_Fixed_Header_B_With_Filters.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_32_Fixed_Header_B_With_Filters.razor new file mode 100644 index 000000000..6ce7d1abf --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_32_Fixed_Header_B_With_Filters.razor @@ -0,0 +1,52 @@ + + + + @context.CustomerId + + + @context.CustomerName + + + @context.Phone + + + @context.Email + + + @context.Address + + + @context.PostalZip + + + @context.Country + + + + +@code { + [Inject] public ICustomerService _customerService { get; set; } = default!; + + private async Task> CustomersDataProvider(GridDataProviderRequest request) + { + string sortString = ""; + SortDirection sortDirection = SortDirection.None; + + if (request.Sorting is not null && request.Sorting.Any()) + { + // Note: Multi column sorting is not supported at this moment + sortString = request.Sorting.FirstOrDefault()!.SortString; + sortDirection = request.Sorting.FirstOrDefault()!.SortDirection; + } + var result = await _customerService.GetCustomersAsync(request.Filters, request.PageNumber, request.PageSize, sortString, sortDirection, request.CancellationToken); + return await Task.FromResult(new GridDataProviderResult { Data = result.Item1, TotalCount = result.Item2 }); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_33_Freeze_Column_A_Text_Nowrap.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_33_Freeze_Column_A_Text_Nowrap.razor new file mode 100644 index 000000000..c28c56974 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_33_Freeze_Column_A_Text_Nowrap.razor @@ -0,0 +1,50 @@ + + + + @context.CustomerId + + + @context.CustomerName + + + @context.Phone + + + @context.Email + + + @context.Address + + + @context.PostalZip + + + @context.Country + + + + +@code { + [Inject] public ICustomerService _customerService { get; set; } = default!; + + private async Task> CustomersDataProvider(GridDataProviderRequest request) + { + string sortString = ""; + SortDirection sortDirection = SortDirection.None; + + if (request.Sorting is not null && request.Sorting.Any()) + { + // Note: Multi column sorting is not supported at this moment + sortString = request.Sorting.FirstOrDefault()!.SortString; + sortDirection = request.Sorting.FirstOrDefault()!.SortDirection; + } + var result = await _customerService.GetCustomersAsync(request.Filters, request.PageNumber, request.PageSize, sortString, sortDirection, request.CancellationToken); + return await Task.FromResult(new GridDataProviderResult { Data = result.Item1, TotalCount = result.Item2 }); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_33_Freeze_Column_B_Fixed_Header.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_33_Freeze_Column_B_Fixed_Header.razor new file mode 100644 index 000000000..f884601ea --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_33_Freeze_Column_B_Fixed_Header.razor @@ -0,0 +1,51 @@ + + + + @context.CustomerId + + + @context.CustomerName + + + @context.Phone + + + @context.Email + + + @context.Address + + + @context.PostalZip + + + @context.Country + + + + +@code { + [Inject] public ICustomerService _customerService { get; set; } = default!; + + private async Task> CustomersDataProvider(GridDataProviderRequest request) + { + string sortString = ""; + SortDirection sortDirection = SortDirection.None; + + if (request.Sorting is not null && request.Sorting.Any()) + { + // Note: Multi column sorting is not supported at this moment + sortString = request.Sorting.FirstOrDefault()!.SortString; + sortDirection = request.Sorting.FirstOrDefault()!.SortDirection; + } + var result = await _customerService.GetCustomersAsync(request.Filters, request.PageNumber, request.PageSize, sortString, sortDirection, request.CancellationToken); + return await Task.FromResult(new GridDataProviderResult { Data = result.Item1, TotalCount = result.Item2 }); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_33_Freeze_Column_C_Fixed_Header_With_Filters.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_33_Freeze_Column_C_Fixed_Header_With_Filters.razor new file mode 100644 index 000000000..ce7113b28 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_33_Freeze_Column_C_Fixed_Header_With_Filters.razor @@ -0,0 +1,52 @@ + + + + @context.CustomerId + + + @context.CustomerName + + + @context.Phone + + + @context.Email + + + @context.Address + + + @context.PostalZip + + + @context.Country + + + + +@code { + [Inject] public ICustomerService _customerService { get; set; } = default!; + + private async Task> CustomersDataProvider(GridDataProviderRequest request) + { + string sortString = ""; + SortDirection sortDirection = SortDirection.None; + + if (request.Sorting is not null && request.Sorting.Any()) + { + // Note: Multi column sorting is not supported at this moment + sortString = request.Sorting.FirstOrDefault()!.SortString; + sortDirection = request.Sorting.FirstOrDefault()!.SortDirection; + } + var result = await _customerService.GetCustomersAsync(request.Filters, request.PageNumber, request.PageSize, sortString, sortDirection, request.CancellationToken); + return await Task.FromResult(new GridDataProviderResult { Data = result.Item1, TotalCount = result.Item2 }); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_34_AutoHide_Paging.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_34_AutoHide_Paging.razor new file mode 100644 index 000000000..69b8d79a9 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Grid/Grid_Demo_34_AutoHide_Paging.razor @@ -0,0 +1,60 @@ + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + + +@code { + private IEnumerable employees = default!; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 113, Name = "Merlin", Designation = "Senior Consultant", DOJ = new DateOnly(1989, 10, 2), IsActive = true }, + new Employee1 { Id = 117, Name = "Sharna", Designation = "Data Analyst", DOJ = new DateOnly(1994, 5, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + new Employee1 { Id = 111, Name = "Glenda", Designation = "Data Engineer", DOJ = new DateOnly(1994, 1, 12), IsActive = true }, + }; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/IconDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/IconDocumentation.razor new file mode 100644 index 000000000..16fe2dd63 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/IconDocumentation.razor @@ -0,0 +1,61 @@ +@page "/icons" + +@title + + + +

Blazor Icons

+
+ The Icon component will display an icon from any icon font. +
+ + + + + + + + + + +
+ In the following example, we used Font Awesome 6.4.2 free version icons. For Font Awesome setup, please follow the Font Awesome website. +
+ + + + + + + + + + + + + + + + + + + + + +
+ In the following example, we used Font Awesome 6.4.2 free version icons. For Font Awesome setup, please follow the Font Awesome website. +
+ + + + + + + + +@code{ + private string pageUrl = "/icons"; + private string title = "Blazor Icon Component"; + private string description = "Blazor Bootstrap icon component will display an icon from any icon font."; + private string imageUrl = "https://i.imgur.com/273TamX.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_01_Examples.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_01_Examples.razor new file mode 100644 index 000000000..e313ec1fd --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_01_Examples.razor @@ -0,0 +1,4 @@ + + + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_02_Sizes.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_02_Sizes.razor new file mode 100644 index 000000000..73b661b3d --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_02_Sizes.razor @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_03_Font_Awesome_Icons.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_03_Font_Awesome_Icons.razor new file mode 100644 index 000000000..e29b6309d --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_03_Font_Awesome_Icons.razor @@ -0,0 +1,6 @@ + + + + + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_04_Colors.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_04_Colors.razor new file mode 100644 index 000000000..19bb4e340 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_04_Colors.razor @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_05_Inline_Text_With_Icon.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_05_Inline_Text_With_Icon.razor new file mode 100644 index 000000000..22259f6c1 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_05_Inline_Text_With_Icon.razor @@ -0,0 +1 @@ +Inline text \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_06_A_Link_With_Icon.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_06_A_Link_With_Icon.razor new file mode 100644 index 000000000..289ce5c70 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_06_A_Link_With_Icon.razor @@ -0,0 +1,3 @@ + + Example link text + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_06_B_Link_With_Custom_Icon.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_06_B_Link_With_Custom_Icon.razor new file mode 100644 index 000000000..0c8fed32f --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_06_B_Link_With_Custom_Icon.razor @@ -0,0 +1,3 @@ + + Example link text + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_07_A_Button_With_Icon_And_Text.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_07_A_Button_With_Icon_And_Text.razor new file mode 100644 index 000000000..c146cec90 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_07_A_Button_With_Icon_And_Text.razor @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_07_B_Button_With_Icon_Only.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_07_B_Button_With_Icon_Only.razor new file mode 100644 index 000000000..b51f43404 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_07_B_Button_With_Icon_Only.razor @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_07_C_Button_With_Font_Awesome_Icon.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_07_C_Button_With_Font_Awesome_Icon.razor new file mode 100644 index 000000000..f01a4c39e --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_07_C_Button_With_Font_Awesome_Icon.razor @@ -0,0 +1,6 @@ + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_09_Tooltip.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_09_Tooltip.razor new file mode 100644 index 000000000..ca7c42492 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_09_Tooltip.razor @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_10_Bootstrap_Icons.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_10_Bootstrap_Icons.razor new file mode 100644 index 000000000..5a6aec3de --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Icons/Icon_Demo_10_Bootstrap_Icons.razor @@ -0,0 +1,13 @@ +
    + @foreach (var item in Enum.GetValues().Where(x => x != IconName.None)) + { +
  • +
    +
    + +
    +
    @item.ToString()
    +
    +
  • + } +
\ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Index.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Index.razor new file mode 100644 index 000000000..0fb946a31 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Index.razor @@ -0,0 +1,319 @@ +@page "/" +@layout EmptyLayout + +Blazor Bootstrap Components Examples & Demos | Blazor Bootstrap + + + +
+
+
+ + New in @version + @releaseShortDescription + + Blazor Bootstrap +

Build fast, responsive sites with BlazorBootstrap

+

+ High-performance, lightweight, and responsive blazor bootstrap components in a single package from the developers for the developers. +

+

+ Currently @version + + Nuget + + Nuget +

+ +
+
+
+ + + + + +
+
+

Data Visualization Components

+
+ + +
+ +
+ + This demo website is built using the Blazor Bootstrap library and published on the Azure Static Web App. + See our source code on GitHub. + +
+ +@code { + private string pageUrl = "/"; + private string title = "Blazor Bootstrap Component Library"; + private string description = "An Enterprise-class Blazor Bootstrap Component library built on the Blazor and Bootstrap CSS frameworks."; + private string imageUrl = "https://i.imgur.com/HEJciCp.png"; + + private string version = default!; + private string releaseShortDescription = default!; + + [Inject] public IConfiguration Configuration { get; set; } = default!; + + protected override void OnInitialized() + { + version = $"v{Configuration["version"]}"; // example: v0.6.1 + releaseShortDescription = Configuration["release:short_description"]!; + + base.OnInitialized(); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Layout/server/LayoutServerDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Layout/server/LayoutServerDocumentation.razor new file mode 100644 index 000000000..90bdf89bb --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Layout/server/LayoutServerDocumentation.razor @@ -0,0 +1,46 @@ +@page "/layout-setup/blazor-server" + +@title + + + +

Layout Setup - Blazor Server

+
Get started with the Enterprise-class Blazor Bootstrap Component library built on the Blazor and Bootstrap CSS framework.
+ + + + +
+ Assuming you followed the getting started docs for the initial setup. +
    +
  1. Blazor WebAssembly Project: Follow the getting started steps for the initial setup.
  2. +
  3. Blazor Server Project: Follow the getting started steps for the initial setup.
  4. +
+
+ + +
+ 1. Replace MainLayout.razor page code with the below code. +
+ + Remove all the CSS content from the Shared/MainLayout.razor.css file. + + + + +@code { + private string pageUrl = "/layout-setup/blazor-server"; + private string title = "Blazor Bootstrap Layout Setup - Blazor Server"; + private string description = "High-performance, lightweight, and responsive blazor bootstrap components in a single package from the developers for the developers."; + private string imageUrl = "https://i.imgur.com/SCbZVd4.jpg"; + + private string version = default!; + + [Inject] public IConfiguration Configuration { get; set; } = default!; + + protected override void OnInitialized() + { + version = $"{Configuration["version"]}"; // example: v0.6.1 + base.OnInitialized(); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Layout/server/Layout_Server_Demo_01.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Layout/server/Layout_Server_Demo_01.razor new file mode 100644 index 000000000..9ea046b01 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Layout/server/Layout_Server_Demo_01.razor @@ -0,0 +1,47 @@ +@inherits LayoutComponentBase + +
+ + + +
+
+ About +
+ +
+
+ @Body +
+
+
+ +
+ +@code { + private Sidebar sidebar = default!; + private IEnumerable navItems = default!; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/", IconName = IconName.HouseDoorFill, Text = "Home", Match=NavLinkMatch.All}, + new NavItem { Id = "2", Href = "/counter", IconName = IconName.PlusSquareFill, Text = "Counter"}, + new NavItem { Id = "3", Href = "/fetchdata", IconName = IconName.Table, Text = "Fetch Data"}, + }; + + return navItems; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Layout/webassembly/LayoutWebAssemblyDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Layout/webassembly/LayoutWebAssemblyDocumentation.razor new file mode 100644 index 000000000..0858909f2 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Layout/webassembly/LayoutWebAssemblyDocumentation.razor @@ -0,0 +1,47 @@ +@page "/layout" +@page "/layout-setup/blazor-webassembly" + +@title + + + +

Layout Setup - Blazor WebAssembly

+
Get started with the Enterprise-class Blazor Bootstrap Component library built on the Blazor and Bootstrap CSS framework.
+ + + + +
+ Assuming you followed the getting started docs for the initial setup. +
    +
  1. Blazor WebAssembly Project: Follow the getting started steps for the initial setup.
  2. +
  3. Blazor Server Project: Follow the getting started steps for the initial setup.
  4. +
+
+ + +
+ 1. Replace MainLayout.razor page code with the below code. +
+ + Remove all the CSS content from the Shared/MainLayout.razor.css file. + + + + +@code { + private string pageUrl = "/layout-setup/blazor-webassembly"; + private string title = "Blazor Bootstrap Layout Setup - Blazor WebAssembly"; + private string description = "High-performance, lightweight, and responsive blazor bootstrap components in a single package from the developers for the developers."; + private string imageUrl = "https://i.imgur.com/SCbZVd4.jpg"; + + private string version = default!; + + [Inject] public IConfiguration Configuration { get; set; } = default!; + + protected override void OnInitialized() + { + version = Configuration["version"]!; // example: v0.6.1 + base.OnInitialized(); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Layout/webassembly/Layout_WebAssembly_Demo_01.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Layout/webassembly/Layout_WebAssembly_Demo_01.razor new file mode 100644 index 000000000..9ea046b01 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Layout/webassembly/Layout_WebAssembly_Demo_01.razor @@ -0,0 +1,47 @@ +@inherits LayoutComponentBase + +
+ + + +
+
+ About +
+ +
+
+ @Body +
+
+
+ +
+ +@code { + private Sidebar sidebar = default!; + private IEnumerable navItems = default!; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/", IconName = IconName.HouseDoorFill, Text = "Home", Match=NavLinkMatch.All}, + new NavItem { Id = "2", Href = "/counter", IconName = IconName.PlusSquareFill, Text = "Counter"}, + new NavItem { Id = "3", Href = "/fetchdata", IconName = IconName.Table, Text = "Fetch Data"}, + }; + + return navItems; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/EmployeeDemoComponent1.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/EmployeeDemoComponent1.razor new file mode 100644 index 000000000..30fa7deac --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/EmployeeDemoComponent1.razor @@ -0,0 +1,27 @@ +
+
Employee Id :
+
@EmployeeId
+
+
+
First Name :
+
@employee?.FirstName
+
+
+
Last Name :
+
@employee?.LastName
+
+ +@code { + private Employee? employee; + + [Parameter] public int EmployeeId { get; set; } + + protected override void OnInitialized() + { + // get employee with {EmployeeId} from DB + + employee = new Employee { FirstName = "Vikram", LastName = "Reddy" }; + + base.OnInitialized(); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/EmployeeDemoComponent2.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/EmployeeDemoComponent2.razor new file mode 100644 index 000000000..cf610b638 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/EmployeeDemoComponent2.razor @@ -0,0 +1,33 @@ +
+
Employee Id :
+
@EmployeeId
+
+
+
First Name :
+
@employee?.FirstName
+
+
+
Last Name :
+
@employee?.LastName
+
+ + + +@code { + private Employee? employee; + + [Parameter] public int EmployeeId { get; set; } + + [Parameter] public EventCallback OnClickCallback { get; set; } + + protected override void OnInitialized() + { + // get employee with {EmployeeId} from DB + + employee = new Employee { FirstName = "Sagar", LastName = "Reddy" }; + + base.OnInitialized(); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/ModalDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/ModalDocumentation.razor new file mode 100644 index 000000000..ee779d579 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/ModalDocumentation.razor @@ -0,0 +1,72 @@ +@page "/modals" + +@title + + + +

Blazor Modal

+
+ Use Blazor Bootstrap modal component to add dialogs to your site for lightboxes, user notifications, or completely custom content. +
+ + + + + + + +
Render different components dynamically within the modal without iterating through possible types or using conditional logic.
+
+ If dynamically-rendered components have component parameters, pass them as an IDictionary. The string is the parameter's name, and the object is the parameter's value. +
+ +EmployeeDemoComponent1.razor + + + +
Event callbacks (EventCallback) can be passed in its parameter dictionary.
+
+ In the following parent component example, the ShowDTMessage method assigns a string with the current time to message, and the value of message is rendered. + The parent component passes the callback method, ShowDTMessage in the parameter dictionary: +
    +
  • The string key is the callback method's name, OnClickCallback.
  • +
  • The object value is created by EventCallbackFactory.Create for the parent callback method, ShowDTMessage.
  • +
+
+ +EmployeeDemoComponent2.razor + + + +
When UseStaticBackdrop is set to true, the modal will not close when clicking outside it. Click the button below to try it.
+ + + +
When modals become too long for the user’s viewport or device, they scroll independent of the page itself. Try the demo below to see what we mean.
+ + +
You can also create a scrollable modal that allows scroll the modal body by adding IsScrollable="true".
+ + + +
Add IsVerticallyCentered="true" to vertically center the modal.
+ + + + +
Modals have three optional sizes. These sizes kick in at certain breakpoints to avoid horizontal scrollbars on narrower viewports.
+ + + + + + +
Blazor Bootstrap modal class exposes a few events for hooking into modal functionality.
+ + +@code { + private string pageUrl = "/modals"; + private string title = "Blazor Modal Component"; + private string description = "Use Blazor Bootstrap modal component to add dialogs to your site for lightboxes, user notifications, or completely custom content."; + private string imageUrl = "https://i.imgur.com/aWbURjD.jpg"; +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_01_Examples.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_01_Examples.razor new file mode 100644 index 000000000..b2272a5a2 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_01_Examples.razor @@ -0,0 +1,25 @@ + + + Modal body text goes here. + + + + + + + + + +@code { + private Modal modal = default!; + + private async Task OnShowModalClick() + { + await modal.ShowAsync(); + } + + private async Task OnHideModalClick() + { + await modal.HideAsync(); + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_02_A_Show_Dynamic_Component.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_02_A_Show_Dynamic_Component.razor new file mode 100644 index 000000000..60c66205b --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_02_A_Show_Dynamic_Component.razor @@ -0,0 +1,14 @@ + + + + +@code { + private Modal modal = default!; + + private async Task ShowEmployeeComponent() + { + var parameters = new Dictionary(); + parameters.Add("EmployeeId", 321); + await modal.ShowAsync(title: "Employee Details", parameters: parameters); + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_02_B_Pass_Event_Callback_to_a_Dynamic_Component.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_02_B_Pass_Event_Callback_to_a_Dynamic_Component.razor new file mode 100644 index 000000000..d7d453ebb --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_02_B_Pass_Event_Callback_to_a_Dynamic_Component.razor @@ -0,0 +1,22 @@ + + + + +
+ @message +
+ +@code { + private Modal modal = default!; + private string? message; + + private async Task ShowEmployeeComponent() + { + var parameters = new Dictionary(); + parameters.Add("EmployeeId", 322); + parameters.Add("OnclickCallback", EventCallback.Factory.Create(this, ShowDTMessage)); + await modal.ShowAsync(title: "Employee Details", parameters: parameters); + } + + private void ShowDTMessage(MouseEventArgs e) => message = $"The current DT is: {DateTime.Now}."; +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_02_Static_Backdrop.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_02_Static_Backdrop.razor new file mode 100644 index 000000000..f86045acd --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_02_Static_Backdrop.razor @@ -0,0 +1,25 @@ + + + I will not close if you click outside me. Don't even try to press escape key. + + + + + + + + + +@code { + private Modal modal = default!; + + private async Task OnShowModalClick() + { + await modal.ShowAsync(); + } + + private async Task OnHideModalClick() + { + await modal.HideAsync(); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_03_Scrolling_Long_Content_A.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_03_Scrolling_Long_Content_A.razor new file mode 100644 index 000000000..81dc0f36e --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_03_Scrolling_Long_Content_A.razor @@ -0,0 +1,26 @@ + + +

This is some placeholder content to show the scrolling behavior for modals. Instead of repeating the text the modal, we use an inline style set a minimum height, thereby extending the length of the overall modal and demonstrating the overflow scrolling. When content becomes longer than the height of the viewport, scrolling will move the modal as needed.

+

This content should appear at the bottom after you scroll.

+
+ + + + +
+ + + +@code { + private Modal modal = default!; + + private async Task OnShowModalClick() + { + await modal.ShowAsync(); + } + + private async Task OnHideModalClick() + { + await modal.HideAsync(); + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_03_Scrolling_Long_Content_B.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_03_Scrolling_Long_Content_B.razor new file mode 100644 index 000000000..ea1caf435 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_03_Scrolling_Long_Content_B.razor @@ -0,0 +1,26 @@ + + +

This is some placeholder content to show the scrolling behavior for modals. Instead of repeating the text the modal, we use an inline style set a minimum height, thereby extending the length of the overall modal and demonstrating the overflow scrolling. When content becomes longer than the height of the viewport, scrolling will move the modal as needed.

+

This content should appear at the bottom after you scroll.

+
+ + + + +
+ + + +@code { + private Modal modal = default!; + + private async Task OnShowModalClick() + { + await modal.ShowAsync(); + } + + private async Task OnHideModalClick() + { + await modal.HideAsync(); + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_04_Vertically_Centered.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_04_Vertically_Centered.razor new file mode 100644 index 000000000..07f8fe744 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_04_Vertically_Centered.razor @@ -0,0 +1,25 @@ + + + This is a vertically centered modal. + + + + + + + + + +@code { + private Modal modal = default!; + + private async Task OnShowModalClick() + { + await modal.ShowAsync(); + } + + private async Task OnHideModalClick() + { + await modal.HideAsync(); + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_04_Vertically_Centered_And_Scrollable.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_04_Vertically_Centered_And_Scrollable.razor new file mode 100644 index 000000000..1c537bec3 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_04_Vertically_Centered_And_Scrollable.razor @@ -0,0 +1,26 @@ + + +

This is some placeholder content to show the scrolling behavior for modals. Instead of repeating the text the modal, we use an inline style set a minimum height, thereby extending the length of the overall modal and demonstrating the overflow scrolling. When content becomes longer than the height of the viewport, scrolling will move the modal as needed.

+

This content should appear at the bottom after you scroll.

+
+ + + + +
+ + + +@code { + private Modal modal = default!; + + private async Task OnShowModalClick() + { + await modal.ShowAsync(); + } + + private async Task OnHideModalClick() + { + await modal.HideAsync(); + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_05_Optional_Sizes.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_05_Optional_Sizes.razor new file mode 100644 index 000000000..fb8b5e092 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_05_Optional_Sizes.razor @@ -0,0 +1,19 @@ + + ... + + + ... + + + ... + + + + + + +@code { + private Modal xlModal = default!; + private Modal lgModal = default!; + private Modal smModal = default!; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_06_Fullscreen_Modal.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_06_Fullscreen_Modal.razor new file mode 100644 index 000000000..5f964393d --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_06_Fullscreen_Modal.razor @@ -0,0 +1,34 @@ + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + + + + + + + + +@code { + private Modal modal = default!; + private Modal smModal = default!; + private Modal mdModal = default!; + private Modal lgModal = default!; + private Modal xlModal = default!; + private Modal xxlModal = default!; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_07_Events.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_07_Events.razor new file mode 100644 index 000000000..650d42f1d --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Modal/Modal_Demo_07_Events.razor @@ -0,0 +1,61 @@ + + + + Modal body text goes here. + + + + + + + + + + + +@code { + private Modal modal = default!; + + [Inject] ToastService ToastService { get; set; } = default!; + + private async Task OnShowModalClick() + { + await modal.ShowAsync(); + } + + private async Task OnHideModalClick() + { + await modal.HideAsync(); + } + + private void OnModalShowing() + { + ToastService.Notify(new (ToastType.Primary, $"Event: Showing called. DateTime: {DateTime.Now}")); + } + + private void OnModalShown() + { + ToastService.Notify(new (ToastType.Success, $"Event: Show called. DateTime: {DateTime.Now}")); + } + + private void OnModalHiding() + { + ToastService.Notify(new(ToastType.Danger, $"Event: Hiding called. DateTime: {DateTime.Now}")); + } + + private void OnModalHidden() + { + ToastService.Notify(new(ToastType.Warning, $"Event: Hide called. DateTime: {DateTime.Now}")); + } + + private void OnModalHidePrevented() + { + ToastService.Notify(new(ToastType.Info, $"Event: Hide Prevented called. DateTime: {DateTime.Now}")); + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/EmployeeDemoComponent1.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/EmployeeDemoComponent1.razor new file mode 100644 index 000000000..5f6840fcd --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/EmployeeDemoComponent1.razor @@ -0,0 +1,27 @@ +
+
Employee Id :
+
@EmployeeId
+
+
+
First Name :
+
@employee.FirstName
+
+
+
Last Name :
+
@employee.LastName
+
+ +@code { + private Employee employee = default!; + + [Parameter] public int EmployeeId { get; set; } + + protected override void OnInitialized() + { + // get employee with {EmployeeId} from DB + + employee = new Employee { FirstName = "Vikram", LastName = "Reddy" }; + + base.OnInitialized(); + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/EmployeeDemoComponent2.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/EmployeeDemoComponent2.razor new file mode 100644 index 000000000..ad5135c19 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/EmployeeDemoComponent2.razor @@ -0,0 +1,33 @@ +
+
Employee Id :
+
@EmployeeId
+
+
+
First Name :
+
@employee.FirstName
+
+
+
Last Name :
+
@employee.LastName
+
+ + + +@code { + private Employee employee = default!; + + [Parameter] public int EmployeeId { get; set; } + + [Parameter] public EventCallback OnClickCallback { get; set; } + + protected override void OnInitialized() + { + // get employee with {EmployeeId} from DB + + employee = new Employee { FirstName = "Sagar", LastName = "Reddy" }; + + base.OnInitialized(); + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/OffcanvasDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/OffcanvasDocumentation.razor new file mode 100644 index 000000000..b59abd65e --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/OffcanvasDocumentation.razor @@ -0,0 +1,66 @@ +@page "/offcanvas" + +@title + + + +

Blazor Offcanvas

+
+ Build hidden sidebars into your project for navigation, shopping carts, and more with a offcanvas component. +
+ + + +Similar to modals, only one offcanvas can be shown at a time. + + + + + +
Render different components dynamically within the offcanvas without iterating through possible types or using conditional logic.
+
+ If dynamically-rendered components have component parameters, pass them as an IDictionary. The string is the parameter's name, and the object is the parameter's value. +
+ +EmployeeDemoComponent1.razor + + + +
Event callbacks (EventCallback) can be passed in its parameter dictionary.
+
+ In the following parent component example, the ShowDTMessage method assigns a string with the current time to message, and the value of message is rendered. + The parent component passes the callback method, ShowDTMessage in the parameter dictionary: +
    +
  • The string key is the callback method's name, OnClickCallback.
  • +
  • The object value is created by EventCallbackFactory.Create for the parent callback method, ShowDTMessage.
  • +
+
+ +EmployeeDemoComponent2.razor + + + +
Try the top, bottom, and left examples out below.
+ + +Default placement for the offcanvas component is right. + + +
When UseStaticBackdrop is set to true, the offcanvas will not close when clicking outside of it.
+ + + +
Set the size of the Offcanvas with the Size parameter. The default value is OffcanvasSize.Regular.
+ + + + +
Blazor Bootstrap offcanvas component exposes a few events for hooking into offcanvas functionality.
+ + +@code { + private string pageUrl = "/offcanvas"; + private string title = "Blazor Offcanvas Component"; + private string description = "Build hidden sidebars into your project for navigation, shopping carts, and more with Blazor Bootstrap offcanvas component."; + private string imageUrl = "https://i.imgur.com/1vNz5Ci.jpg"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_01_Examples.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_01_Examples.razor new file mode 100644 index 000000000..49946f0a7 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_01_Examples.razor @@ -0,0 +1,27 @@ + + +
Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc.
+ +
+ +
+
+
+ + + +@code { + private Offcanvas offcanvas = default!; + + private async Task OnShowOffcanvasClick() => await offcanvas.ShowAsync(); + + private async Task OnHideOffcanvasClick() => await offcanvas.HideAsync(); +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_02_A_Show_Dynamic_Component.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_02_A_Show_Dynamic_Component.razor new file mode 100644 index 000000000..d8488c923 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_02_A_Show_Dynamic_Component.razor @@ -0,0 +1,14 @@ + + + + +@code { + private Offcanvas offcanvas = default!; + + private async Task ShowEmployeeComponent() + { + var parameters = new Dictionary(); + parameters.Add("EmployeeId", 321); + await offcanvas.ShowAsync(title: "Employee Details", parameters: parameters); + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_02_B_Pass_Event_Callback_to_a_Dynamic_Component.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_02_B_Pass_Event_Callback_to_a_Dynamic_Component.razor new file mode 100644 index 000000000..179ff23ac --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_02_B_Pass_Event_Callback_to_a_Dynamic_Component.razor @@ -0,0 +1,22 @@ + + + + +
+ @message +
+ +@code { + private Offcanvas offcanvas = default!; + private string? message; + + private async Task ShowEmployeeComponent() + { + var parameters = new Dictionary(); + parameters.Add("EmployeeId", 322); + parameters.Add("OnclickCallback", EventCallback.Factory.Create(this, ShowDTMessage)); + await offcanvas.ShowAsync(title: "Employee Details", parameters: parameters); + } + + private void ShowDTMessage(MouseEventArgs e) => message = $"The current date time is: {DateTime.Now}."; +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_03_Placement.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_03_Placement.razor new file mode 100644 index 000000000..1b40f25c7 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_03_Placement.razor @@ -0,0 +1,18 @@ + + ... + + + + + + +@code { + private Offcanvas offcanvas = default!; + private Placement placement; + + private async Task OnShowOffcanvasClick(Placement placement) + { + this.placement = placement; + await offcanvas.ShowAsync(); + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_04_Static_Backdrop.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_04_Static_Backdrop.razor new file mode 100644 index 000000000..f3479871c --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_04_Static_Backdrop.razor @@ -0,0 +1,19 @@ + + +

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec tincidunt blandit mauris. Aliquam sit amet lorem laoreet, laoreet elit ut, placerat tellus. In mollis ultricies elit, volutpat maximus ipsum sodales interdum. Suspendisse eget tellus mollis, rutrum mauris ac, vulputate enim. Cras porta neque vitae lacinia elementum. Nunc sit amet pulvinar nibh. Curabitur interdum eget odio in tempor. Nulla dictum orci quis ligula auctor fermentum. Pellentesque finibus tellus ac massa convallis malesuada. Nam id pharetra velit, sed eleifend mi. Sed sed justo lorem. Quisque et nulla ut dolor feugiat vestibulum. Nunc at porttitor orci, at dignissim metus. Donec vitae metus vitae felis semper placerat.

+

Proin quis congue enim, ut ultricies erat. Nulla facilisi. Fusce pretium, metus eget tempor vehicula, nisl lorem tincidunt metus, consectetur molestie lorem leo vel lectus. Vivamus pellentesque pharetra mattis. Aenean dignissim quam non velit ultrices rutrum. Aliquam lacinia faucibus sapien vel pretium. Nullam libero massa, ultricies id lacinia nec, scelerisque ut felis. Vivamus ac egestas urna, sit amet condimentum odio. Suspendisse ultrices, libero sed interdum pulvinar, lectus felis pellentesque enim, eu finibus magna massa id augue. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis eget tempor libero. Cras ut interdum purus. Donec eu pulvinar urna, ut porttitor purus. Suspendisse sed sodales nunc. Quisque posuere augue sed luctus placerat.

+

Morbi ullamcorper risus turpis, et ullamcorper nulla semper vitae. Proin pharetra dolor dui, non condimentum ex fermentum in. Vestibulum pharetra, risus et pulvinar eleifend, nulla tortor blandit risus, ac imperdiet elit massa quis leo. Vivamus urna lacus, luctus eget felis id, eleifend tristique nisl. Sed dignissim mollis ligula vitae laoreet. Vestibulum eget magna nisi. Aenean auctor elit et turpis blandit, eget porttitor felis suscipit. Duis placerat, sapien a sodales tempus, odio orci malesuada neque, ac molestie ipsum nisi vel eros. Integer sem lectus, luctus vitae sapien ut, efficitur aliquam sem. Praesent placerat est eros, vulputate rutrum nunc imperdiet vitae. Fusce sed felis eget purus aliquet convallis eu eget lacus. Sed finibus nec magna et accumsan. Donec vitae tellus eros. Nullam et ex vitae est sagittis malesuada. Vivamus molestie malesuada libero, a consequat magna dapibus pellentesque. Cras molestie tortor vitae congue pretium.

+

Pellentesque nec iaculis justo, sed pretium sem. Mauris finibus lacus at mollis fringilla. Etiam auctor in justo ac bibendum. Vestibulum at lorem accumsan, maximus erat suscipit, suscipit ex. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris dignissim id quam sit amet varius. Etiam pretium ultrices dignissim. Cras at tortor hendrerit metus ultrices lobortis at ac est. Suspendisse consectetur pellentesque nunc sit amet scelerisque. Maecenas feugiat nunc laoreet, auctor erat eget, ultricies ex. Aliquam nisi nulla, cursus et ante ut, interdum volutpat leo. Phasellus laoreet aliquam maximus. Vestibulum eu neque porta, consectetur ipsum non, euismod enim. Vestibulum euismod purus elit, ultrices imperdiet nisl porttitor eget. Vivamus eros turpis, tincidunt a vulputate vel, malesuada tristique nulla.

+

Vestibulum sed aliquam urna. Ut ullamcorper erat vitae velit mattis commodo. Phasellus dignissim rhoncus dapibus. Quisque congue egestas tellus id finibus. Suspendisse nibh felis, mattis et finibus vel, tempor in lectus. Nullam eget eros dui. Mauris eget vestibulum nibh. Nullam mattis malesuada lorem vel condimentum. Mauris id odio ac est feugiat condimentum.

+
+ + + +
+ + + +@code { + private Offcanvas offcanvas = default!; + private async Task OnShowOffcanvasClick() => await offcanvas.ShowAsync(); +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_05_Sizes_A_Small.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_05_Sizes_A_Small.razor new file mode 100644 index 000000000..e0152fa6f --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_05_Sizes_A_Small.razor @@ -0,0 +1,19 @@ + + +

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec tincidunt blandit mauris. Aliquam sit amet lorem laoreet, laoreet elit ut, placerat tellus. In mollis ultricies elit, volutpat maximus ipsum sodales interdum. Suspendisse eget tellus mollis, rutrum mauris ac, vulputate enim. Cras porta neque vitae lacinia elementum. Nunc sit amet pulvinar nibh. Curabitur interdum eget odio in tempor. Nulla dictum orci quis ligula auctor fermentum. Pellentesque finibus tellus ac massa convallis malesuada. Nam id pharetra velit, sed eleifend mi. Sed sed justo lorem. Quisque et nulla ut dolor feugiat vestibulum. Nunc at porttitor orci, at dignissim metus. Donec vitae metus vitae felis semper placerat.

+

Proin quis congue enim, ut ultricies erat. Nulla facilisi. Fusce pretium, metus eget tempor vehicula, nisl lorem tincidunt metus, consectetur molestie lorem leo vel lectus. Vivamus pellentesque pharetra mattis. Aenean dignissim quam non velit ultrices rutrum. Aliquam lacinia faucibus sapien vel pretium. Nullam libero massa, ultricies id lacinia nec, scelerisque ut felis. Vivamus ac egestas urna, sit amet condimentum odio. Suspendisse ultrices, libero sed interdum pulvinar, lectus felis pellentesque enim, eu finibus magna massa id augue. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis eget tempor libero. Cras ut interdum purus. Donec eu pulvinar urna, ut porttitor purus. Suspendisse sed sodales nunc. Quisque posuere augue sed luctus placerat.

+

Morbi ullamcorper risus turpis, et ullamcorper nulla semper vitae. Proin pharetra dolor dui, non condimentum ex fermentum in. Vestibulum pharetra, risus et pulvinar eleifend, nulla tortor blandit risus, ac imperdiet elit massa quis leo. Vivamus urna lacus, luctus eget felis id, eleifend tristique nisl. Sed dignissim mollis ligula vitae laoreet. Vestibulum eget magna nisi. Aenean auctor elit et turpis blandit, eget porttitor felis suscipit. Duis placerat, sapien a sodales tempus, odio orci malesuada neque, ac molestie ipsum nisi vel eros. Integer sem lectus, luctus vitae sapien ut, efficitur aliquam sem. Praesent placerat est eros, vulputate rutrum nunc imperdiet vitae. Fusce sed felis eget purus aliquet convallis eu eget lacus. Sed finibus nec magna et accumsan. Donec vitae tellus eros. Nullam et ex vitae est sagittis malesuada. Vivamus molestie malesuada libero, a consequat magna dapibus pellentesque. Cras molestie tortor vitae congue pretium.

+

Pellentesque nec iaculis justo, sed pretium sem. Mauris finibus lacus at mollis fringilla. Etiam auctor in justo ac bibendum. Vestibulum at lorem accumsan, maximus erat suscipit, suscipit ex. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris dignissim id quam sit amet varius. Etiam pretium ultrices dignissim. Cras at tortor hendrerit metus ultrices lobortis at ac est. Suspendisse consectetur pellentesque nunc sit amet scelerisque. Maecenas feugiat nunc laoreet, auctor erat eget, ultricies ex. Aliquam nisi nulla, cursus et ante ut, interdum volutpat leo. Phasellus laoreet aliquam maximus. Vestibulum eu neque porta, consectetur ipsum non, euismod enim. Vestibulum euismod purus elit, ultrices imperdiet nisl porttitor eget. Vivamus eros turpis, tincidunt a vulputate vel, malesuada tristique nulla.

+

Vestibulum sed aliquam urna. Ut ullamcorper erat vitae velit mattis commodo. Phasellus dignissim rhoncus dapibus. Quisque congue egestas tellus id finibus. Suspendisse nibh felis, mattis et finibus vel, tempor in lectus. Nullam eget eros dui. Mauris eget vestibulum nibh. Nullam mattis malesuada lorem vel condimentum. Mauris id odio ac est feugiat condimentum.

+
+ + + +
+ + + +@code { + private Offcanvas offcanvas = default!; + private async Task OnShowOffcanvasClick() => await offcanvas.ShowAsync(); +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_05_Sizes_B_Large.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_05_Sizes_B_Large.razor new file mode 100644 index 000000000..b369e5cc2 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_05_Sizes_B_Large.razor @@ -0,0 +1,19 @@ + + +

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec tincidunt blandit mauris. Aliquam sit amet lorem laoreet, laoreet elit ut, placerat tellus. In mollis ultricies elit, volutpat maximus ipsum sodales interdum. Suspendisse eget tellus mollis, rutrum mauris ac, vulputate enim. Cras porta neque vitae lacinia elementum. Nunc sit amet pulvinar nibh. Curabitur interdum eget odio in tempor. Nulla dictum orci quis ligula auctor fermentum. Pellentesque finibus tellus ac massa convallis malesuada. Nam id pharetra velit, sed eleifend mi. Sed sed justo lorem. Quisque et nulla ut dolor feugiat vestibulum. Nunc at porttitor orci, at dignissim metus. Donec vitae metus vitae felis semper placerat.

+

Proin quis congue enim, ut ultricies erat. Nulla facilisi. Fusce pretium, metus eget tempor vehicula, nisl lorem tincidunt metus, consectetur molestie lorem leo vel lectus. Vivamus pellentesque pharetra mattis. Aenean dignissim quam non velit ultrices rutrum. Aliquam lacinia faucibus sapien vel pretium. Nullam libero massa, ultricies id lacinia nec, scelerisque ut felis. Vivamus ac egestas urna, sit amet condimentum odio. Suspendisse ultrices, libero sed interdum pulvinar, lectus felis pellentesque enim, eu finibus magna massa id augue. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis eget tempor libero. Cras ut interdum purus. Donec eu pulvinar urna, ut porttitor purus. Suspendisse sed sodales nunc. Quisque posuere augue sed luctus placerat.

+

Morbi ullamcorper risus turpis, et ullamcorper nulla semper vitae. Proin pharetra dolor dui, non condimentum ex fermentum in. Vestibulum pharetra, risus et pulvinar eleifend, nulla tortor blandit risus, ac imperdiet elit massa quis leo. Vivamus urna lacus, luctus eget felis id, eleifend tristique nisl. Sed dignissim mollis ligula vitae laoreet. Vestibulum eget magna nisi. Aenean auctor elit et turpis blandit, eget porttitor felis suscipit. Duis placerat, sapien a sodales tempus, odio orci malesuada neque, ac molestie ipsum nisi vel eros. Integer sem lectus, luctus vitae sapien ut, efficitur aliquam sem. Praesent placerat est eros, vulputate rutrum nunc imperdiet vitae. Fusce sed felis eget purus aliquet convallis eu eget lacus. Sed finibus nec magna et accumsan. Donec vitae tellus eros. Nullam et ex vitae est sagittis malesuada. Vivamus molestie malesuada libero, a consequat magna dapibus pellentesque. Cras molestie tortor vitae congue pretium.

+

Pellentesque nec iaculis justo, sed pretium sem. Mauris finibus lacus at mollis fringilla. Etiam auctor in justo ac bibendum. Vestibulum at lorem accumsan, maximus erat suscipit, suscipit ex. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris dignissim id quam sit amet varius. Etiam pretium ultrices dignissim. Cras at tortor hendrerit metus ultrices lobortis at ac est. Suspendisse consectetur pellentesque nunc sit amet scelerisque. Maecenas feugiat nunc laoreet, auctor erat eget, ultricies ex. Aliquam nisi nulla, cursus et ante ut, interdum volutpat leo. Phasellus laoreet aliquam maximus. Vestibulum eu neque porta, consectetur ipsum non, euismod enim. Vestibulum euismod purus elit, ultrices imperdiet nisl porttitor eget. Vivamus eros turpis, tincidunt a vulputate vel, malesuada tristique nulla.

+

Vestibulum sed aliquam urna. Ut ullamcorper erat vitae velit mattis commodo. Phasellus dignissim rhoncus dapibus. Quisque congue egestas tellus id finibus. Suspendisse nibh felis, mattis et finibus vel, tempor in lectus. Nullam eget eros dui. Mauris eget vestibulum nibh. Nullam mattis malesuada lorem vel condimentum. Mauris id odio ac est feugiat condimentum.

+
+ + + +
+ + + +@code { + private Offcanvas offcanvas = default!; + private async Task OnShowOffcanvasClick() => await offcanvas.ShowAsync(); +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_06_Events.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_06_Events.razor new file mode 100644 index 000000000..fb50735e8 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Offcanvas/Offcanvas_Demo_06_Events.razor @@ -0,0 +1,28 @@ + + + +
Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc.
+
+ + + + + +
+ + + +@code { + private Offcanvas offcanvas = default!; + private async Task OnShowOffcanvasClick() => await offcanvas.ShowAsync(); + private async Task OnHideOffcanvasClick() => await offcanvas.HideAsync(); + private async Task OnOffcanvasShowingAsync() => await Task.Run(() => { Console.WriteLine("Event: Showing"); }); + private async Task OnOffcanvasShownAsync() => await Task.Run(() => { Console.WriteLine("Event: Shown"); }); + private async Task OnOffcanvasHidingAsync() => await Task.Run(() => { Console.WriteLine("Event: Hiding"); }); + private async Task OnOffcanvasHiddenAsync() => await Task.Run(() => { Console.WriteLine("Event: Hidden"); }); +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/PaginationDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/PaginationDocumentation.razor new file mode 100644 index 000000000..867508b90 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/PaginationDocumentation.razor @@ -0,0 +1,39 @@ +@page "/pagination" + +@title + + + +

Blazor Pagination

+
+ Documentation and examples for showing pagination to indicate a series of related content exists across multiple pages. +
+ + + + +
We use a large block of connected links for our pagination, making links hard to miss and easily scalable—all while providing large hit areas. Pagination is built with list HTML elements so screen readers can announce the number of available links.
+ + + + + + + + + +
Fancy larger or smaller pagination? Add Size="PaginationSize.Small" or Size="PaginationSize.Large" for additional sizes.
+ + + + + + + + +@code { + private string pageUrl = "/pagination"; + private string title = "Blazor Pagination Component"; + private string description = "Use Blazor Bootstrap pagination component to indicate a series of related content exists across multiple pages."; + private string imageUrl = "https://i.imgur.com/SCbZVd4.jpg"; +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/Pagination_Demo_01_Examples.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/Pagination_Demo_01_Examples.razor new file mode 100644 index 000000000..b4cc81c32 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/Pagination_Demo_01_Examples.razor @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/Pagination_Demo_02_Working_With_Icons.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/Pagination_Demo_02_Working_With_Icons.razor new file mode 100644 index 000000000..9905c5ecb --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/Pagination_Demo_02_Working_With_Icons.razor @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/Pagination_Demo_03_Disabled_And_Active_States.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/Pagination_Demo_03_Disabled_And_Active_States.razor new file mode 100644 index 000000000..69eee1ef7 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/Pagination_Demo_03_Disabled_And_Active_States.razor @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/Pagination_Demo_04_Sizing.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/Pagination_Demo_04_Sizing.razor new file mode 100644 index 000000000..1db78c068 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/Pagination_Demo_04_Sizing.razor @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/Pagination_Demo_05_Alignment.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/Pagination_Demo_05_Alignment.razor new file mode 100644 index 000000000..fa64cb44d --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/Pagination_Demo_05_Alignment.razor @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/Pagination_Demo_06_Events.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/Pagination_Demo_06_Events.razor new file mode 100644 index 000000000..87342ea6e --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Pagination/Pagination_Demo_06_Events.razor @@ -0,0 +1,15 @@ + + +Current Page Number: @currentPageNumber + + +@code { + int currentPageNumber = 2; + + private async Task OnPageChangedAsync(int newPageNumber) + { + await Task.Run(() => { currentPageNumber = newPageNumber; }); + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/PdfViewer/PdfViewerDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/PdfViewer/PdfViewerDocumentation.razor new file mode 100644 index 000000000..1fc391789 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/PdfViewer/PdfViewerDocumentation.razor @@ -0,0 +1,35 @@ +@page "/pdf-viewer" + +@title + + + +

Blazor PDF Viewer

+
+ The Blazor PDF Viewer component allows users to view PDF files directly in the browser, without relying on third-party browser tools or extensions. +
+ + + + + + + +
+ Set the Orientation parameter to Orientation.Landscape to change the default orientation from Portrait to Landscape. +
+ + + +
PDF Viewer component supports base64 string as a URL.
+ + Url="@@string.Format("data:application/pdf;base64,{0}", pdfBase64String)" + + + +@code { + private string pageUrl = "/pdf-viewer"; + private string title = "Blazor PDF Viewer Component"; + private string description = "The Blazor PDF Viewer component allows users to view PDF files directly in the browser, without relying on third-party browser tools or extensions."; + private string imageUrl = "https://i.imgur.com/7Vz9Efi.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/PdfViewer/PdfViewer_Demo_01_Examples.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/PdfViewer/PdfViewer_Demo_01_Examples.razor new file mode 100644 index 000000000..3a72042ff --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/PdfViewer/PdfViewer_Demo_01_Examples.razor @@ -0,0 +1,16 @@ +

@eventLog

+ + + +@code { + private string eventLog { get; set; } = $"Last event: ..., CurrentPage: 0, TotalPages: 0"; + + private void OnDocumentLoaded(PdfViewerEventArgs args) + => eventLog = $"Last event: OnDocumentLoaded, CurrentPage: {args.CurrentPage}, TotalPages: {args.TotalPages}"; + + private void OnPageChanged(PdfViewerEventArgs args) + => eventLog = $"Last event: OnPageChanged, CurrentPage: {args.CurrentPage}, TotalPages: {args.TotalPages}"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/PdfViewer/PdfViewer_Demo_02_Orientation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/PdfViewer/PdfViewer_Demo_02_Orientation.razor new file mode 100644 index 000000000..226fdaf0f --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/PdfViewer/PdfViewer_Demo_02_Orientation.razor @@ -0,0 +1,17 @@ +

@eventLog

+ + + +@code { + private string eventLog { get; set; } = $"Last event: ..., CurrentPage: 0, TotalPages: 0"; + + private void OnDocumentLoaded(PdfViewerEventArgs args) + => eventLog = $"Last event: OnDocumentLoaded, CurrentPage: {args.CurrentPage}, TotalPages: {args.TotalPages}"; + + private void OnPageChanged(PdfViewerEventArgs args) + => eventLog = $"Last event: OnPageChanged, CurrentPage: {args.CurrentPage}, TotalPages: {args.TotalPages}"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/PdfViewer/PdfViewer_Demo_03_Base64String.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/PdfViewer/PdfViewer_Demo_03_Base64String.razor new file mode 100644 index 000000000..4092d0106 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/PdfViewer/PdfViewer_Demo_03_Base64String.razor @@ -0,0 +1,23 @@ +

@eventLog

+ + + +@code { + private string eventLog { get; set; } = $"Last event: ..., CurrentPage: 0, TotalPages: 0"; + private string pdfBase64String; + + protected override void OnInitialized() + { + // get pdf as base64 string + pdfBase64String = @"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yc3wEAIvPjTX1ZuoA/EJb4b150BykvrznGgWgz9mYZ9WP/+j+niSJ5Bf1n8nSLfX8RimDQuML+cJl0JJUvLljxnwTvpjhm9/ufv+/lD/ab+KJr7+PyUG1RtlbmRzdHJlYW0KZW5kb2JqCjQ1IDAgb2JqCjw8Ci9BdXRob3IgKERhdmlkIE1hbmRlbGluKQovQ3JlYXRpb25EYXRlIChEOjIwMDkwMzE3MjIxMTAwWikKL0NyZWF0b3IgKE9tbmlHcmFmZmxlIDQuMi4zKQovTW9kRGF0ZSAoRDoyMDA5MDMxODAwMjMwMFopCi9Qcm9kdWNlciAoTWFjIE9TIFggMTAuNS42IFF1YXJ0eiBQREZDb250ZXh0KQovVGl0bGUgKHN0YXRlcykKPj4KZW5kb2JqCjQ2IDAgb2JqClsvSUNDQmFzZWQgNjEgMCBSXQplbmRvYmoKNDcgMCBvYmoKWy9JQ0NCYXNlZCA2MiAwIFJdCmVuZG9iago0OCAwIG9iago8PAovVHlwZSAvRm9udAovU3VidHlwZSAvVHJ1ZVR5cGUKL0Jhc2VGb250IC9SQkZZR0MjMkJIZWx2ZXRpY2EKL0ZvbnREZXNjcmlwdG9yIDYzIDAgUgovV2lkdGhzIDY0IDAgUgovRmlyc3RDaGFyIDMyCi9MYXN0Q2hhciAyMjIKL0VuY29kaW5nIC9NYWNSb21hbkVuY29kaW5nCj4+CmVuZG9iago0OSAwIG9iago8PAovVHlwZSAvRm9udAovU3VidHlwZSAvVHJ1ZVR5cGUKL0Jhc2VGb250IC9USVZSVUsjMkJIZWx2ZXRpY2EtQm9sZAovRm9udERlc2NyaXB0b3IgNjUgMCBSCi9XaWR0aHMgNjYgMCBSCi9GaXJzdENoYXIgMzIKL0xhc3RDaGFyIDEyMQovRW5jb2RpbmcgL01hY1JvbWFuRW5jb2RpbmcKPj4KZW5kb2JqCjUwIDAgb2JqCjw8Ci9MZW5ndGggNjcgMCBSCi9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQovV2lkdGggMTM5Ci9IZWlnaHQgNTcKL0NvbG9yU3BhY2UgNDYgMCBSCi9TTWFzayA2OCAwIFIKL0JpdHNQZXJDb21wb25lbnQgOAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeAHt0IEAAAAAw6D5Ux/hAoVQYcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAgTMwXNkAAWVuZHN0cmVhbQplbmRvYmoKNTEgMCBvYmoKPDwKL0xlbmd0aCA2OSAwIFIKL1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9XaWR0aCAxMTgKL0hlaWdodCA1NwovQ29sb3JTcGFjZSA0NiAwIFIKL1NNYXNrIDcwIDAgUgovQml0c1BlckNvbXBvbmVudCA4Ci9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4Ae3QMQEAAADCoPVPbQdviEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwaegQFO0gABZW5kc3RyZWFtCmVuZG9iago1MiAwIG9iago8PAovTGVuZ3RoIDcxIDAgUgovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL1dpZHRoIDExOAovSGVpZ2h0IDU3Ci9Db2xvclNwYWNlIDQ2IDAgUgovU01hc2sgNzIgMCBSCi9CaXRzUGVyQ29tcG9uZW50IDgKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCngB7dAxAQAAAMKg9U9tB2+IQGHAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBp6BAU7SAAFlbmRzdHJlYW0KZW5kb2JqCjUzIDAgb2JqCjw8Ci9MZW5ndGggNzMgMCBSCi9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQovV2lkdGggMTAyCi9IZWlnaHQgNDMKL0NvbG9yU3BhY2UgNDYgMCBSCi9TTWFzayA3NCAwIFIKL0JpdHNQZXJDb21wb25lbnQgOAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeAHt0IEAAAAAw6D5Ux/khVBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg4H1gM2YAAWVuZHN0cmVhbQplbmRvYmoKNTQgMCBvYmoKPDwKL0xlbmd0aCA3NSAwIFIKL1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9XaWR0aCAxMTQKL0hlaWdodCA0MwovQ29sb3JTcGFjZSA0NiAwIFIKL1NNYXNrIDc2IDAgUgovQml0c1BlckNvbXBvbmVudCA4Ci9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4Ae3QgQAAAADDoPlTH+SFUGHAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYeB8YOXIAAWVuZHN0cmVhbQplbmRvYmoKNTUgMCBvYmoKPDwKL0xlbmd0aCA3NyAwIFIKL1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9XaWR0aCAxMzkKL0hlaWdodCA1NwovQ29sb3JTcGFjZSA0NiAwIFIKL1NNYXNrIDc4IDAgUgovQml0c1BlckNvbXBvbmVudCA4Ci9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4Ae3QgQAAAADDoPlTH+EChVBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwICBMzBc2QABZW5kc3RyZWFtCmVuZG9iago1NiAwIG9iago8PAovTGVuZ3RoIDc5IDAgUgovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL1dpZHRoIDEzNAovSGVpZ2h0IDU3Ci9Db2xvclNwYWNlIDQ2IDAgUgovU01hc2sgODAgMCBSCi9CaXRzUGVyQ29tcG9uZW50IDgKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCngB7dABDQAAAMKg909tDwcRKAwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDbwMDWYIAAWVuZHN0cmVhbQplbmRvYmoKNTcgMCBvYmoKPDwKL0xlbmd0aCA4MSAwIFIKL1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9XaWR0aCAxMTQKL0hlaWdodCA0MQovQ29sb3JTcGFjZSA0NiAwIFIKL1NNYXNrIDgyIDAgUgovQml0c1BlckNvbXBvbmVudCA4Ci9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4Ae3QMQEAAADCoPVPbQo/iEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwZeAwM2xgABZW5kc3RyZWFtCmVuZG9iago1OCAwIG9iago8PAovTGVuZ3RoIDgzIDAgUgovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL1dpZHRoIDE1MQovSGVpZ2h0IDU3Ci9Db2xvclNwYWNlIDQ2IDAgUgovU01hc2sgODQgMCBSCi9CaXRzUGVyQ29tcG9uZW50IDgKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCngB7dCBAAAAAMOg+VNf4AiFUGHAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgIEzMGTdAAFlbmRzdHJlYW0KZW5kb2JqCjU5IDAgb2JqCjw8Ci9MZW5ndGggODUgMCBSCi9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQovV2lkdGggMTE4Ci9IZWlnaHQgNTcKL0NvbG9yU3BhY2UgNDYgMCBSCi9TTWFzayA4NiAwIFIKL0JpdHNQZXJDb21wb25lbnQgOAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeAHt0DEBAAAAwqD1T20Hb4hAYcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGnoEBTtIAAWVuZHN0cmVhbQplbmRvYmoKNjAgMCBvYmoKNDU0MgplbmRvYmoKNjEgMCBvYmoKPDwKL0xlbmd0aCA4NyAwIFIKL04gMwovQWx0ZXJuYXRlIC9EZXZpY2VSR0IKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCngBhZRNSBRhGMf/s40EsQbRlwjF0MEkVCYLUgLT9StTtmXVTAlinX13nRxnp5ndLUUihOiYdYwuVkSHiE7hoUOnOkQEmXWJoKNFEAVeIrb/O5O7Y1S+MDO/eZ7/+3y9wwBVj1KOY0U0YMrOu8nemHZ6dEzb/BpVqEYUXCnDczoSiQGfqZXP9Wv1LRRpWWqUsdb7NnyrdpkQUDQqd2QDPix5PODjki/knTw1ZyQbE6k02SE3uEPJTvIt8tZsiMdDnBaeAVS1U5MzHJdxIjvILUUjK2M+IOt22rTJ76U97RlT1LDfyDc5C9q48v1A2x5g04uKbcwDHtwDdtdVbPU1wM4RYPFQxfY96c9H2fXKyxxq9sMp0Rhr+lAqfa8DNt8Afl4vlX7cLpV+3mEO1vHUMgpu0deyMOUlENQb7Gb85Br9i4OefFULsMA5jmwB+q8ANz8C+x8C2x8DiWpgqBWRy2w3uPLiIucCdOacadfMTuS1Zl0/onXwaIXWZxtNDVrKsjTf5Wmu8IRbFOkmTFkFztlf23iPCnt4kE/2F7kkvO7frMylU12cJZrY1qe06OomN5DvZ8yePnI9r/cZt2c4YOWAme8bCjhyyrbiPBepidTY4/GTZMZXVCcfk/OQPOcVB2VM334udSJBrqU9OZnrl5pd3Ns+MzHEM5KsWDMTnfHf/MYtJGXefdTcdSz/m2dtkWcYhQUBEzbvNjQk0YsYGuHARQ4ZekwqTFqlX9BqwsPkX5UWEuVdFhW9WOGeFX/PeRS4W8Y/hVgccw3lCJr+Tv+iL+sL+l3983xtob7imXPPmsara18ZV2aW1ci4QY0yvqwpiG+w2g56LWRpneIV9OSV9Y3h6jL2fG3Zo8kc4mp8NdSlCGVqxDjjya5l90WyxTfh51vL9q/pUft89klNJdeyunhmKfp8NlwNa/+zq2DSsqvw5I2QLjxroe5VD6p9aovaCk09prarbWoX346qA+Udw5yViQus22X1KfZgY5reyklXZovg38Ivhv+lXmEL1zQ0+Q9NuLmMaQnfEdw2cIeU/8NfswMN3mVuZHN0cmVhbQplbmRvYmoKNjIgMCBvYmoKPDwKL0xlbmd0aCA4OCAwIFIKL04gMQovQWx0ZXJuYXRlIC9EZXZpY2VHcmF5Ci9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4AYVST0gUURz+zTYShIhBhXiIdwoJlSmsrKDadnVZlW1bldKiGGffuqOzM9Ob2TXFkwRdojx1D6JjdOzQoZuXosCsS9cgqSAIPHXo+83s6iiEb3k73/v9/X7fe0RtnabvOylBVHNDlSulp25OTYuDHylFHdROWKYV+OlicYyx67mSv7vX1mfS2LLex7V2+/Y9tZVlYCHqLba3EPohkWYAH5mfKGWAs8Adlq/YPgE8WA6sGvAjogMPmrkw09GcdKWyLZFT5qIoKq9iO0mu+/m5xr6LtYmD/lyPZtaOvbPqqtFM1LT3RKG8D65EGc9fVPZsNRSnDeOcSEMaKfKu1d8rTMcRkSsQSgZSNWS5n2pOnXXgdRi7XbqT4/j2EKU+yWCoibXpspkdhX0AdirL7BDwBejxsmIP54F7Yf9bUcOTwCdhP2SHedatH/YXrlPge4Q9NeDOFK7F8dqKH14tAUP3VCNojHNNxNPXOXOkiO8x1BmY90Y5pgsxd5aqEzeAO2EfWapmCrFd+67qJe57AnfT4zvRmzkLXKAcSXKxFdkU0DwJWBR9i7BJDjw+zh5V4HeomMAcuYnczSj3HtURG2ejUoFWeo1Xxk/jufHF+GVsGM+Afqx213t8/+njFXXXtj48+Y163DmuvZ0bVWFWcWUL3f/HMoSP2Sc5psHToVlYa9h25A+azEywDCjEfwU+l/qSE1Xc1e7tuEUSzFA+LGwluktUbinU6j2DSqwcK9gAdnCSxCxaHLhTa7o5eHfYInpt+U1XsuuG/vr2evva8h5tyqgpKBPNs0RmlLFbo+TdeNv9ZpERnzg6vue9ilrJ/klFED+FOVoq8hRV9FZQ1sRvZw5+G7Z+XD+l5/VB/TwJPa2f0a/ooxG+DHRJz8JzUR+jSfCwaSHiEqCKgzPUTlRjjQPiKfHytFtkkf0PQBn9ZmVuZHN0cmVhbQplbmRvYmoKNjMgMCBvYmoKPDwKL1R5cGUgL0ZvbnREZXNjcmlwdG9yCi9Bc2NlbnQgNzcwCi9DYXBIZWlnaHQgNzI3Ci9EZXNjZW50IC0yMzAKL0ZsYWdzIDMyCi9Gb250QkJveCBbIC05NTEgLTQ4MSAxNDQ1IDExMjJdCi9Gb250TmFtZSAvUkJGWUdDIzJCSGVsdmV0aWNhCi9JdGFsaWNBbmdsZSAwCi9TdGVtViA5OAovTWF4V2lkdGggMTUwMAovU3RlbUggODUKL1hIZWlnaHQgNTMxCi9Gb250RmlsZTIgODkgMCBSCj4+CmVuZG9iago2NCAwIG9iagpbIDI3OCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMjc4IDAgMCAyNzggMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNjY3IDcyMiAwIDAgMCAwIDAgMjc4IDAgMCA1NTYgMCA3MjIgNzc4IDAgMCA3MjIgMCA2MTEgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNTU2IDU1NiA1MDAgNTU2IDU1NiAwIDU1NiA1NTYgMjIyIDAgNTAwIDIyMiA4MzMgNTU2IDU1NiA1NTYgMCAzMzMgNTAwIDI3OCAwIDUwMCA3MjIgNTAwIDUwMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDUwMF0KZW5kb2JqCjY1IDAgb2JqCjw8Ci9UeXBlIC9Gb250RGVzY3JpcHRvcgovQXNjZW50IDc3MAovQ2FwSGVpZ2h0IDczMQovRGVzY2VudCAtMjMwCi9GbGFncyAzMgovRm9udEJCb3ggWyAtMTAxOCAtNDgxIDE0MzYgMTE1OV0KL0ZvbnROYW1lIC9USVZSVUsjMkJIZWx2ZXRpY2EtQm9sZAovSXRhbGljQW5nbGUgMAovU3RlbVYgMTQ5Ci9NYXhXaWR0aCAxNTAwCi9TdGVtSCAxMjQKL1hIZWlnaHQgNTQwCi9Gb250Rmls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UFRFWC5JbmZvRGljdCAyMTkgMCBSIAovTWF0cml4IFsxLjAwMDAwMDAwIDAuMDAwMDAwMDAgMC4wMDAwMDAwMCAxLjAwMDAwMDAwIDAuMDAwMDAwMDAgMC4wMDAwMDAwMF0KL0JCb3ggWzQuNzQzMTY5MDAgNDk4LjAxMDkwMDAwIDU0OS4wMDU0MDAwMCA3ODEuMDcxMDAwMDBdCi9SZXNvdXJjZXMgPDwKL1Byb2NTZXQgWyAvUERGIC9UZXh0IC9JbWFnZUIgL0ltYWdlQyAvSW1hZ2VJIF0KL0NvbG9yU3BhY2UgPDwKL0NzMSAyMjAgMCBSCj4+L0ZvbnQgPDwgL0YxLjEgMjIxIDAgUj4+Ci9YT2JqZWN0IDw8Ci9JbTQ4IDIyMiAwIFIKL0ltMTcgMjIzIDAgUgovSW0zMyAyMjQgMCBSCi9JbTUyIDIyNSAwIFIKL0ltMjEgMjI2IDAgUgovSW0xMyAyMjcgMCBSCi9JbTIzIDIyOCAwIFIKL0ltOSAyMjkgMCBSCi9JbTE2IDIzMCAwIFIKL0ltNDMgMjMxIDAgUgovSW00NCAyMzIgMCBSCi9JbTY1IDIzMyAwIFIKL0ltNiAyMzQgMCBSCi9JbTI3IDIzNSAwIFIKL0ltMTIgMjM2IDAgUgovSW0zNSAyMzcgMCBSCi9JbTUwIDIzOCAwIFIKL0ltNjggMjM5IDAgUgovSW00MSAyNDAgMCBSCi9JbTc1IDI0MSAwIFIKL0ltNzcgMjQyIDAgUgovSW02NCAyNDMgMCBSCi9JbTUgMjQ0IDAgUgovSW00NSAyNDUgMCBSCi9JbTIwIDI0NiAwIFIKL0ltNjkgMjQ3IDAgUgovSW0zOCAyNDggMCBSCi9JbTEgMjQ5IDAgUgovSW00MiAyNTAgMCBSCi9JbTcyIDI1MSAwIFIKL0ltMTQgMjUyIDAgUgovSW01NSAyNTMgMCBSCi9JbTI0IDI1NCAwIFIKL0ltMzcgMjU1IDAgUgovSW00NiAyNTYgMCBSCi9JbTggMjU3IDAgUgovSW0zNiAyNTggMCBSCi9JbTYxIDI1OSAwIFIKL0ltNTQgMjYwIDAgUgovSW0yMiAyNjEgMCBSCi9JbTQwIDI2MiAwIFIKL0ltNjcgMjYzIDAgUgovSW03MSAyNjQgMCBSCi9JbTc4IDI2NSAwIFIKL0ltMzkgMjY2IDAgUgovSW0yOSAyNjcgMCBSCi9JbTI2IDI2OCAwIFIKL0ltNjYgMjY5IDAgUgovSW03MCAyNzAgMCBSCi9JbTc0IDI3MSAwIFIKL0ltNjMgMjcyIDAgUgovSW01MSAyNzMgMCBSCi9JbTMgMjc0IDAgUgovSW03IDI3NSAwIFIKL0ltNTcgMjc2IDAgUgovSW0yIDI3NyAwIFIKL0ltMzEgMjc4IDAgUgovSW03MyAyNzkgMCBSCi9JbTEwIDI4MCAwIFIKL0ltMjUgMjgxIDAgUgovSW0yOCAyODIgMCBSCi9JbTUzIDI4MyAwIFIKL0ltNTkgMjg0IDAgUgovSW0xMSAyODUgMCBSCi9JbTQgMjg2IDAgUgovSW0xOCAyODcgMCBSCi9JbTU2IDI4OCAwIFIKL0ltMTUgMjg5IDAgUgovSW0xOSAyOTAgMCBSCi9JbTMyIDI5MSAwIFIKL0ltNDkgMjkyIDAgUgovSW0zMCAyOTMgMCBSCi9JbTc2IDI5NCAwIFIKL0ltNTggMjk1IDAgUgovSW00NyAyOTYgMCBSCi9JbTYyIDI5NyAwIFIKL0ltMzQgMjk4IDAgUgovSW02MCAyOTkgMCBSCj4+L1NoYWRpbmcgPDwKL1NoMjMgMzAwIDAgUgovU2gxOCAzMDEgMCBSCi9TaDMyIDMwMiAwIFIKL1NoNzkgMzAzIDAgUgovU2g1NiAzMDQgMCBSCi9TaDUxIDMwNSAwIFIKL1NoNjkgMzA2IDAgUgovU2gxNCAzMDcgMCBSCi9TaDQxIDMwOCAwIFIKL1NoNzcgMzA5IDAgUgovU2g3OCAzMTAgMCBSCi9TaDM4IDMxMSAwIFIKL1NoNjEgMzEyIDAgUgovU2gyOCAzMTMgMCBSCi9TaDYwIDMxNCAwIFIKL1NoNTUgMzE1IDAgUgovU2g5IDMxNiAwIFIKL1NoOCAzMTcgMCBSCi9TaDgwIDMxOCAwIFIKL1NoMjcgMzE5IDAgUgovU2g0NSAzMjAgMCBSCi9TaDM3IDMyMSAwIFIKL1NoNDggMzIyIDAgUgovU2gxMiAzMjMgMCBSCi9TaDI2IDMyNCAwIFIKL1NoMjIgMzI1IDAgUgovU2g3MCAzMjYgMCBSCi9TaDI0IDMyNyAwIFIKL1NoMjUgMzI4IDAgUgovU2gyOSAzMjkgMCBSCi9TaDU4IDMzMCAwIFIKL1NoMzEgMzMxIDAgUgovU2gzIDMzMiAwIFIKL1NoNDQgMzMzIDAgUgovU2g3NCAzMzQgMCBSCi9TaDY2IDMzNSAwIFIKL1NoNDAgMzM2IDAgUgovU2gxIDMzNyAwIFIKL1NoMTEgMzM4IDAgUgovU2g1MiAzMzkgMCBSCi9TaDcyIDM0MCAwIFIKL1NoNTcgMzQxIDAgUgovU2gyIDM0MiAwIFIKL1NoMzQgMzQzIDAgUgovU2g0MyAzNDQgMCBSCi9TaDQ5IDM0NSAwIFIKL1NoNjcgMzQ2IDAgUgovU2g0IDM0NyAwIFIKL1NoMTkgMzQ4IDAgUgovU2g2NSAzNDkgMCBSCi9TaDY4IDM1MCAwIFIKL1NoNzUgMzUxIDAgUgovU2gyMCAzNTIgMCBSCi9TaDcxIDM1MyAwIFIKL1NoMzkgMzU0IDAgUgovU2g3NiAzNTUgMCBSCi9TaDQ3IDM1NiAwIFIKL1NoMTUgMzU3IDAgUgovU2g1NCAzNTggMCBSCi9TaDMwIDM1OSAwIFIKL1NoNjMgMzYwIDAgUgovU2g2IDM2MSAwIFIKL1NoNyAzNjIgMCBSCi9TaDE2IDM2MyAwIFIKL1NoMzYgMzY0IDAgUgovU2g2NCAzNjUgMCBSCi9TaDEwIDM2NiAwIFIKL1NoODEgMzY3IDAgUgovU2g1OSAzNjggMCBSCi9TaDMzIDM2OSAwIFIKL1NoMjEgMzcwIDAgUgovU2gxMyAzNzEgMCBSCi9TaDUzIDM3MiAwIFIKL1NoNTAgMzczIDAgUgovU2gzNSAzNzQgMCBSCi9TaDQyIDM3NSAwIFIKL1NoNDYgMzc2IDAgUgovU2g2MiAzNzcgMCBSCi9TaDczIDM3OCAwIFIKL1NoMTcgMzc5IDAgUgovU2g1IDM4MCAwIFIKPj4+PgovTGVuZ3RoIDM4MSAwIFIKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCngB3P1Jr67LlqZp9devWBQpQUrsmHXRJQCJHshDijY6ipCTck+IcBB/n+t+7J3FKk7GPjunhIR746z5bCuHDRu1vd9/+f5//f5fvt++/vF69/3x5uaPl5eb2++Pd3d/PLx8v3u+++P26ft//U/f/+P3//H7v/v3/3b7/W//9v12//9vf3vv9PLHy0Od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MTYwNTQ2NCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTQ0IDAgUgo+PgplbmRvYmoKMzAzIDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDU1OTQ5NjAgMjc0Mjg0IDU1OTQ5NjAgMzQ0MDM2XQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTQ1IDAgUgo+PgplbmRvYmoKMzA0IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDExOTA4NDYgMTQ1MTc0MyAxMTkwODQ2IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1NDYgMCBSCj4+CmVuZG9iagozMDUgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgNjAzNjY5NCAxOTkyMjcxIDYwMzY2OTQgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU0NyAwIFIKPj4KZW5kb2JqCjMwNiAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA0MjIyNzQwIDE5ODU2NzMgNDIyMjc0MCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTQ4IDAgUgo+PgplbmRvYmoKMzA3IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDM0MTk0MTggMjAxNzU5NiAzNDE5NDE4IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1NDkgMCBSCj4+CmVuZG9iagozMDggMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgMzcwNDQ2OCAxOTgwNjQ1IDM3MDQ0NjggMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU1MCAwIFIKPj4KZW5kb2JqCjMwOSAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA2MDg4NTIyIDIwNzE4MzUgNjA4ODUyMiAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTUxIDAgUgo+PgplbmRvYmoKMzEwIDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDYzMjE3NDQgMjA2NTk5OCA2MzIxNzQ0IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1NTIgMCBSCj4+CmVuZG9iagozMTEgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgMzAwNDgwMCAxNTc1NTIzIDMwMDQ4MDAgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU1MyAwIFIKPj4KZW5kb2JqCjMxMiAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAyMzU2OTU4IDE0ODkyMzggMjM1Njk1OCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTU0IDAgUgo+PgplbmRvYmoKMzEzIDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDY3MjU3MyAyMDYwMTg0IDY3MjU3MyAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTU1IDAgUgo+PgplbmRvYmoKMzE0IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDIxMjM3MzYgMTMxNDQ2OCAyMTIzNzM2IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1NTYgMCBSCj4+CmVuZG9iagozMTUgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgOTU3NjIzIDE5ODgwMzkgOTU3NjIzIDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1NTcgMCBSCj4+CmVuZG9iagozMTYgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgMjI1MzMwNCAxNDczMTI1IDIyNTMzMDQgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU1OCAwIFIKPj4KZW5kb2JqCjMxNyAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAyMDIwMDgyIDM1Njg4IDIwMjAwODIgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU1OSAwIFIKPj4KZW5kb2JqCjMxOCAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA1NTk0OTYwIDUwMzI0MyA1NTk0OTYwIDU3Mjk5NV0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU2MCAwIFIKPj4KZW5kb2JqCjMxOSAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA0MzkzNTAuNSAyMDU0NDEyIDQzOTM1MC41IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1NjEgMCBSCj4+CmVuZG9iagozMjAgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgNDYzNzM1OCAyMDQwMDE1IDQ2MzczNTggMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU2MiAwIFIKPj4KZW5kb2JqCjMyMSAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAyNzcxNTc2IDE4Mzk0NjEgMjc3MTU3NiAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTYzIDAgUgo+PgplbmRvYmoKMzIyIDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDUzMzcwMjYgMjA0MDQyMyA1MzM3MDI2IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1NjQgMCBSCj4+CmVuZG9iagozMjMgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgMjk1Mjk3MiAyMTMwODc3IDI5NTI5NzIgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU2NSAwIFIKPj4KZW5kb2JqCjMyNCAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA2MjE4MDkwIDIwNTUzNDAgNjIxODA5MCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTY2IDAgUgo+PgplbmRvYmoKMzI1IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDUyODUxOTggMTk5NzYyNCA1Mjg1MTk4IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1NjcgMCBSCj4+CmVuZG9iagozMjYgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgNDQ1NTk2MiAxNzkxNDUwIDQ0NTU5NjIgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU2OCAwIFIKPj4KZW5kb2JqCjMyNyAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA1NzUxNjQ0IDIxMjA4NDUgNTc1MTY0NCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTY5IDAgUgo+PgplbmRvYmoKMzI4IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDU5ODQ4NjYgMjExMjAyMSA1OTg0ODY2IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1NzAgMCBSCj4+CmVuZG9iagozMjkgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgOTA1Nzk1LjUgMTk3OTIxMyA5MDU3OTUuNSAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTcxIDAgUgo+PgplbmRvYmoKMzMwIDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDE2NTcyOTAgMTc3ODk0NSAxNjU3MjkwIDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1NzIgMCBSCj4+CmVuZG9iagozMzEgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgMTM3MjI0MSAxNDY3OTkwIDEzNzIyNDEgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU3MyAwIFIKPj4KZW5kb2JqCjMzMiAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA4NTM5NjguNSAyMTEzNDk3IDg1Mzk2OC41IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1NzQgMCBSCj4+CmVuZG9iagozMzMgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgNDQwNDEzNiAxOTYwMTQxIDQ0MDQxMzYgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU3NSAwIFIKPj4KZW5kb2JqCjMzNCAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA1Mzg4ODU0IDIwNjA0NjcgNTM4ODg1NCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTc2IDAgUgo+PgplbmRvYmoKMzM1IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDM1MjMwNzIgMjAyNDQ4MiAzNTIzMDcyIDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1NzcgMCBSCj4+CmVuZG9iagozMzYgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgMzQ3MTI0NCAyMDExMjgzIDM0NzEyNDQgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU3OCAwIFIKPj4KZW5kb2JqCjMzNyAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAzODc1MjMgMjAyNjQ1OCAzODc1MjMgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU3OSAwIFIKPj4KZW5kb2JqCjMzOCAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAyNzE5NzUwIDE5NzkyMjggMjcxOTc1MCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTgwIDAgUgo+PgplbmRvYmoKMzM5IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDYyNjk5MTYgMjA5ODM0MyA2MjY5OTE2IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1ODEgMCBSCj4+CmVuZG9iagozNDAgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgNDkyMjQwOCAxNzkwNzkzIDQ5MjI0MDggMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU4MiAwIFIKPj4KZW5kb2JqCjM0MSAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAxNDI0MDY4IDE2OTQxNTkgMTQyNDA2OCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTgzIDAgUgo+PgplbmRvYmoKMzQyIDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDYyMDc0NS41IDE5Njk5MTkgNjIwNzQ1LjUgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU4NCAwIFIKPj4KZW5kb2JqCjM0MyAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAyMDcxOTA5IDEwOTU1NzcgMjA3MTkwOSAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTg1IDAgUgo+PgplbmRvYmoKMzQ0IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDQxNzA5MTIgMTk5NzY4NCA0MTcwOTEyIDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1ODYgMCBSCj4+CmVuZG9iagozNDUgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgNTU3MDI0OCAxOTI5MDMzIDU1NzAyNDggMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU4NyAwIFIKPj4KZW5kb2JqCjM0NiAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAzNzU2Mjk0IDE5NjYyMTkgMzc1NjI5NCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTg4IDAgUgo+PgplbmRvYmoKMzQ3IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDEwODcxOTEgMjEzNDYwMCAxMDg3MTkxIDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1ODkgMCBSCj4+CmVuZG9iagozNDggMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgNDU4NTUzMCAxNzA5Njk3IDQ1ODU1MzAgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU5MCAwIFIKPj4KZW5kb2JqCjM0OSAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAzMjg5ODUwIDIwMjQ4ODYgMzI4OTg1MCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTkxIDAgUgo+PgplbmRvYmoKMzUwIDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDM5ODk1MTggMjA5OTE1OCAzOTg5NTE4IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1OTIgMCBSCj4+CmVuZG9iagozNTEgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgNTYyMjA3NiAxOTI5MDMzIDU2MjIwNzYgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU5MyAwIFIKPj4KZW5kb2JqCjM1MiAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA0ODE4NzU0IDE2MDUxMjQgNDgxODc1NCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTk0IDAgUgo+PgplbmRvYmoKMzUzIDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDQ2ODkxODYgMTk0MzgzMCA0Njg5MTg2IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1OTUgMCBSCj4+CmVuZG9iagozNTQgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgMzIzODAyMiAxOTA0MzE4IDMyMzgwMjIgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU5NiAwIFIKPj4KZW5kb2JqCjM1NSAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA1ODU1Mjk4IDIxMDQxNzkgNTg1NTI5OCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTk3IDAgUgo+PgplbmRvYmoKMzU2IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDUxMDM4MDQgMTczMzk3MiA1MTAzODA0IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1OTggMCBSCj4+CmVuZG9iagozNTcgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgMzY1MjY0MCAxNzA1NTI0IDM2NTI2NDAgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU5OSAwIFIKPj4KZW5kb2JqCjM1OCAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA3MjQ0MDAuNSAyMDI1MjcyIDcyNDQwMC41IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA2MDAgMCBSCj4+CmVuZG9iagozNTkgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgMTEzOTAxOCAxODQwODI4IDExMzkwMTggMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDYwMSAwIFIKPj4KZW5kb2JqCjM2MCAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAyODIzNDA0IDE4NTkxOTIgMjgyMzQwNCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNjAyIDAgUgo+PgplbmRvYmoKMzYxIDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDE1NTM2MzYgMTg1NTk1NSAxNTUzNjM2IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA2MDMgMCBSCj4+CmVuZG9iagozNjIgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgMTc4Njg1OSAxOTUzODg0IDE3ODY4NTkgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDYwNCAwIFIKPj4KZW5kb2JqCjM2MyAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAzODg1ODYzIDIxMjI0NzYgMzg4NTg2MyAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNjA1IDAgUgo+PgplbmRvYmoKMzY0IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDI1MzgzNTQgMTYzNDk4MCAyNTM4MzU0IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA2MDYgMCBSCj4+CmVuZG9iagozNjUgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgMzA1NjYyNiAxMzY4MzM2IDMwNTY2MjYgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDYwNyAwIFIKPj4KZW5kb2JqCjM2NiAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAyNDg2NTI3IDU5MDk1IDI0ODY1MjcgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDYwOCAwIFIKPj4KZW5kb2JqCjM2NyAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA1NTk0OTYwIDczMjIwMiA1NTk0OTYwIDgwMTk1NF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDYwOSAwIFIKPj4KZW5kb2JqCjM2OCAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAxODkwNTE0IDE4MDUwNDcgMTg5MDUxNCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNjEwIDAgUgo+PgplbmRvYmoKMzY5IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDE4Mzg2ODYgMTc1ODUzNSAxODM4Njg2IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA2MTEgMCBSCj4+CmVuZG9iagozNzAgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgNTA1MTk3NiAxODU0NTIzIDUwNTE5NzYgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDYxMiAwIFIKPj4KZW5kb2JqCjM3MSAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAzMTg2MTk1IDIwNzM3MTcgMzE4NjE5NSAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNjEzIDAgUgo+PgplbmRvYmoKMzcyIDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDQ5MTE3Ny41IDE5NjMwODYgNDkxMTc3LjUgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDYxNCAwIFIKPj4KZW5kb2JqCjM3MyAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA1ODAzNDcyIDIxMTQ4MDMgNTgwMzQ3MiAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNjE1IDAgUgo+PgplbmRvYmoKMzc0IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDIzMDUxMzIgMTQwMDgxMCAyMzA1MTMyIDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA2MTYgMCBSCj4+CmVuZG9iagozNzUgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgMzkzNzY5MCAyMDEzNTI4IDM5Mzc2OTAgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDYxNyAwIFIKPj4KZW5kb2JqCjM3NiAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA0ODcwNTgwIDE5MjkyNjMgNDg3MDU4MCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNjE4IDAgUgo+PgplbmRvYmoKMzc3IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDI1OTAxODIgMTc5MDA4NyAyNTkwMTgyIDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA2MTkgMCBSCj4+CmVuZG9i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CjYzMSAwIG9iago4MTEKZW5kb2JqCjYzMiAwIG9iago5MzMKZW5kb2JqCjYzMyAwIG9iagoxMDAzCmVuZG9iago2MzQgMCBvYmoKODU1CmVuZG9iago2MzUgMCBvYmoKNjY5CmVuZG9iago2MzYgMCBvYmoKOTczCmVuZG9iago2MzcgMCBvYmoKODQyCmVuZG9iago2MzggMCBvYmoKMTAyNgplbmRvYmoKNjM5IDAgb2JqCjk1MQplbmRvYmoKNjQwIDAgb2JqCjkzOQplbmRvYmoKNjQxIDAgb2JqCjEwNTQKZW5kb2JqCjY0MiAwIG9iago5NDYKZW5kb2JqCjY0MyAwIG9iago5MzYKZW5kb2JqCjY0NCAwIG9iago5ODMKZW5kb2JqCjY0NSAwIG9iagoxMDI2CmVuZG9iago2NDYgMCBvYmoKOTY5CmVuZG9iago2NDcgMCBvYmoKMTEwNQplbmRvYmoKNjQ4IDAgb2JqCjk2MAplbmRvYmoKNjQ5IDAgb2JqCjkyMAplbmRvYmoKNjUwIDAgb2JqCjEwNDQKZW5kb2JqCjY1MSAwIG9iago4NDIKZW5kb2JqCjY1MiAwIG9iagoxMDc2CmVuZG9iago2NTMgMCBvYmoKOTcwCmVuZG9iago2NTQgMCBvYmoKOTQ5CmVuZG9iago2NTUgMCBvYmoKOTYzCmVuZG9iago2NTYgMCBvYmoKOTU3CmVuZG9iago2NTcgMCBvYmoKOTU0CmVuZG9iago2NTggMCBvYmoKOTUxCmVuZG9iago2NTkgMCBvYmoKOTI2CmVuZG9iago2NjAgMCBvYmoKOTg1CmVuZG9iago2NjEgMCBvYmoKMTMwMAplbmRvYmoKNjYyIDAgb2JqCjc0MwplbmRvYmoKNjYzIDAgb2JqCjEwMzMKZW5kb2JqCjY2NCAwIG9iago4NDIKZW5kb2JqCjY2NSAwIG9iago3ODQKZW5kb2JqCjY2NiAwIG9iago5ODcKZW5kb2JqCjY2NyAwIG9iago5ODAKZW5kb2JqCjY2OCAwIG9iagoxMDE4CmVuZG9iago2NjkgMCBvYmoKOTUxCmVuZG9iago2NzAgMCBvYmoKOTgyCmVuZG9iago2NzEgMCBvYmoKODkwCmVuZG9iago2NzIgMCBvYmoKODgxCmVuZG9iago2NzMgMCBvYmoKOTQ1CmVuZG9iago2NzQgMCBvYmoKMTAxMwplbmRvYmoKNjc1IDAgb2JqCjk2MQplbmRvYmoKNjc2IDAgb2JqCjEwMDQKZW5kb2JqCjY3NyAwIG9iago5NzgKZW5kb2JqCjY3OCAwIG9iago3MjkKZW5kb2JqCjY3OSAwIG9iago5ODEKZW5kb2JqCjY4MCAwIG9iagoxMDM5CmVuZG9iago2ODEgMCBvYmoKOTE0CmVuZG9iago2ODIgMCBvYmoKMTA0MwplbmRvYmoKNjgzIDAgb2JqCjEwMjgKZW5kb2JqCjY4NCAwIG9iagoxMjYzCmVuZG9iago2ODUgMCBvYmoKOTc5CmVuZG9iago2ODYgMCBvYmoKOTYwCmVuZG9iago2ODcgMCBvYmoKOTc5CmVuZG9iago2ODggMCBvYmoKMTAwMwplbmRvYmoKNjg5IDAgb2JqCjgzOQplbmRvYmoKNjkwIDAgb2JqCjgzMgplbmRvYmoKNjkxIDAgb2JqCjgyNAplbmRvYmoKNjkyIDAgb2JqCjEwMjMKZW5kb2JqCjY5MyAwIG9iago5ODMKZW5kb2JqCjY5NCAwIG9iagoxMDYyCmVuZG9iago2OTUgMCBvYmoKOTk5CmVuZG9iago2OTYgMCBvYmoKMTAyNwplbmRvYmoKNjk3IDAgb2JqCjEwMTMKZW5kb2JqCjY5OCAwIG9iago4MzIKZW5kb2JqCjY5OSAwIG9iago5OTcKZW5kb2JqCjcwMCAwIG9iagoxMDY3CmVuZG9iago3MDEgMCBvYmoKOTg0CmVuZG9iago3MDIgMCBvYmoKOTc3CmVuZG9iago3MDMgMCBvYmoKMTA2MQplbmRvYmoKNzA0IDAgb2JqCjc4MAplbmRvYmoKNzA1IDAgb2JqCjc4MAplbmRvYmoKNzA2IDAgb2JqCjgwNQplbmRvYmoKNzA3IDAgb2JqCjc4MAplbmRvYmoKNzA4IDAgb2JqCjczMAplbmRvYmoKNzA5IDAgb2JqCjgwNQplbmRvYmoKNzEwIDAgb2JqCjczMAplbmRvYmoKNzExIDAgb2JqCjc4MAplbmRvYmoKNzEyIDAgb2JqCjgwNQplbmRvYmoKNzEzIDAgb2JqCjczMAplbmRvYmoKNzE0IDAgb2JqCjczMAplbmRvYmoKNzE1IDAgb2JqCjgwNQplbmRvYmoKNzE2IDAgb2JqCjczMAplbmRvYmoKNzE3IDAgb2JqCjgwNQplbmRvYmoKNzE4IDAgb2JqCjczMAplbmRvYmoKNzE5IDAgb2JqCjczMAplbmRvYmoKNzIwIDAgb2JqCjc4MAplbmRvYmoKNzIxIDAgb2JqCjc4MAplbmRvYmoKNzIyIDAgb2JqCjgwNQplbmRvYmoKNzIzIDAgb2JqCjgwNQplbmRvYmoKNzI0IDAgb2JqCjgwNQplbmRvYmoKNzI1IDAgb2JqCjgwNQplbmRvYmoKNzI2IDAgb2JqCjgwNQplbmRvYmoKNzI3IDAgb2JqCjc4MAplbmRvYmoKNzI4IDAgb2JqCjc4MAplbmRvYmoKNzI5IDAgb2JqCjc4MAplbmRvYmoKNzMwIDAgb2JqCjczMAplbmRvYmoKNzMxIDAgb2JqCjc4MAplbmRvYmoKNzMyIDAgb2JqCjc4MAplbmRvYmoKNzMzIDAgb2JqCjgwNQplbmRvYmoKNzM0IDAgb2JqCjczMAplbmRvYmoKNzM1IDAgb2JqCjgwNQplbmRvYmoKNzM2IDAgb2JqCjc4MAplbmRvYmoKNzM3IDAgb2JqCjgwNQplbmRvYmoKNzM4IDAgb2JqCjczMAplbmRvYmoKNzM5IDAgb2JqCjczMAplbmRvYmoKNzQwIDAgb2JqCjgwNQplbmRvYmoKNzQxIDAgb2JqCjc4MAplbmRvYmoKNzQyIDAgb2JqCjc4MAplbmRvYmoKNzQzIDAgb2JqCjgwNQplbmRvYmoKNzQ0IDAgb2JqCjczMAplbmRvYmoKNzQ1IDAgb2JqCjczMAplbmRvYmoKNzQ2IDAgb2JqCjc4MAplbmRvYmoKNzQ3IDAgb2JqCjgwNQplbmRvYmoKNzQ4IDAgb2JqCjgwNQplbmRvYmoKNzQ5IDAgb2JqCjgwNQplbmRvYmoKNzUwIDAgb2JqCjczMAplbmRvYmoKNzUxIDAgb2JqCjc4MAplbmRvYmoKNzUyIDAgb2JqCjc4MAplbmRvYmoKNzUzIDAgb2JqCjczMAplbmRvYmoKNzU0IDAgb2JqCjczMAplbmRvYmoKNzU1IDAgb2JqCjczMAplbmRvYmoKNzU2IDAgb2JqCjc4MAplbmRvYmoKNzU3IDAgb2JqCjczMAplbmRvYmoKNzU4IDAgb2JqCjgwNQplbmRvYmoKNzU5IDAgb2JqCjczMAplbmRvYmoKNzYwIDAgb2JqCjgwNQplbmRvYmoKNzYxIDAgb2JqCjc4MAplbmRvYmoKNzYyIDAgb2JqCjczMAplbmRvYmoKNzYzIDAgb2JqCjgwNQplbmRvYmoKNzY0IDAgb2JqCjczMAplbmRvYmoKNzY1IDAgb2JqCjc4MAplbmRvYmoKNzY2IDAgb2JqCjc4MAplbmRvYmoKNzY3IDAgb2JqCjc4MAplbmRvYmoKNzY4IDAgb2JqCjgwNQplbmRvYmoKNzY5IDAgb2JqCjczMAplbmRvYmoKNzcwIDAgb2JqCjc4MAplbmRvYmoKNzcxIDAgb2JqCjczMAplbmRvYmoKNzcyIDAgb2JqCjczMAplbmRvYmoKNzczIDAgb2JqCjgwNQplbmRvYmoKNzc0IDAgb2JqCjc4MAplbmRvYmoKNzc1IDAgb2JqCjc4MAplbmRvYmoKNzc2IDAgb2JqCjczMAplbmRvYmoKNzc3IDAgb2JqCjgwNQplbmRvYmoKNzc4IDAgb2JqCjgwNQplbmRvYmoKNzc5IDAgb2JqCjgwNQplbmRvYmoKNzgwIDAgb2JqCjgwNQplbmRvYmoKNzgxIDAgb2JqCjczMAplbmRvYmoKNzgyIDAgb2JqCjczMAplbmRvYmoKNzgzIDAgb2JqCjc4MAplbmRvYmoKNzg0IDAgb2JqCjc4MAplbmRvYmoKNzg1IDAgb2JqCjk4MzMKZW5kb2JqCjIxNiAwIG9iaiA8PAovRm9udCA8PCAvRjQxIDYgMCBSIC9GNDIgOSAwIFIgL0YzMyAyNCAwIFIgL0YyNiAxMiAwIFIgPj4KL1hPYmplY3QgPDwgL0ltNiAxOTggMCBSID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9iago3ODggMCBvYmogPDwKL0xlbmd0aCA0MjY1ICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42q062ZLjxpHv/RV82TA6ogmhqlA4HqWQpZVCsrSatuwI2Q8gAJLwgACNwz3cr3deBQIk2BpvbEz0oCrryMqsvItfvT598U2oN4mfRlG4ed1vVBT5NjJmEyvjBzrSm9fiN++Htj33z1tljPFen431urLkfij9LC/dhC93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lJsc+8uveoQKGf/mucKHkR2+5IKWitLNiXZYTolUEs1NLeow4Qr/BUAqMh5QkyB1myf0mko6OLCruhBlG/wCmFZw8/3jzX8AKyTyhmVuZHN0cmVhbQplbmRvYmoKNzkwIDAgb2JqIDw8Ci9UeXBlIC9QYWdlCi9Db250ZW50cyA3OTEgMCBSCi9SZXNvdXJjZXMgNzg5IDAgUgovTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQovUGFyZW50IDc5MiAwIFIKPj4gZW5kb2JqCjIwMCAwIG9iaiA8PAovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvRm9ybQovRm9ybVR5cGUgMQovUFRFWC5GaWxlTmFtZSAoLi9JbnRlcm5hbFRpbWVDb3N0cy5wZGYpCi9QVEVYLlBhZ2VOdW1iZXIgMQovUFRFWC5JbmZvRGljdCA3OTMgMCBSIAovTWF0cml4IFsxLjAwMDAwMDAwIDAuMDAwMDAwMDAgMC4wMDAwMDAwMCAxLjAwMDAwMDAwIDAuMDAwMDAwMDAgMC4wMDAwMDAwMF0KL0JCb3ggWzU1LjExNzA4MDAwIDMzMS4zNDc0MDAwMCA1MDAuNDE0NjAwMDAgNzE5LjA2MzQwMDAwXQovUmVzb3VyY2VzIDw8Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSSBdCi9Db2xvclNwYWNlIDw8Ci9DczEgNzk0IDAgUgo+Pi9FeHRHU3RhdGUgPDwKL0dzMSA3OTUgMCBSCi9HczIgNzk2IDAgUgo+Pi9Gb250IDw8IC9GMS4xIDc5NyAwIFI+PgovWE9iamVjdCA8PAovSW0yIDc5OCAwIFIKL0ltMSA3OTkgMCBSCj4+L1BhdHRlcm4gPDwKL1AxMyA4MDAgMCBSCi9QMjggODAxIDAgUgovUDE0IDgwMiAwIFIKL1AzMSA4MDMgMCBSCi9QMSA4MDQgMCBSCi9QMjQgODA1IDAgUgovUDQyIDgwNiAwIFIKL1AyMyA4MDcgMCBSCi9QNDYgODA4IDAgUgovUDI3IDgwOSAwIFIKL1AyMCA4MTAgMCBSCi9QNyA4MTEgMCBSCi9QMzkgODEyIDAgUgovUDI2IDgxMyAwIFIKL1AyNSA4MTQgMCBSCi9QMzQgODE1IDAgUgovUDgg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CmVuZG9iago4NzAgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKODcxIDAgb2JqCjU0CmVuZG9iago4NzIgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKODczIDAgb2JqCjU0CmVuZG9iago4NzQgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKODc1IDAgb2JqCjU0CmVuZG9iago4NzYgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKODc3IDAgb2JqCjU0CmVuZG9iago4NzggMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKODc5IDAgb2JqCjU0CmVuZG9iago4ODAgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKODgxIDAgb2JqCjU0CmVuZG9iago4ODIgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKODgzIDAgb2JqCjU0CmVuZG9iago4ODQgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKODg1IDAgb2JqCjU0CmVuZG9iago4ODYgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKODg3IDAgb2JqCjU0CmVuZG9iago4ODggMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKODg5IDAgb2JqCjU0CmVuZG9iago4OTAgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKODkxIDAgb2JqCjU0CmVuZG9iago4OTIgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKODkzIDAgb2JqCjU0CmVuZG9iago4OTQgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKODk1IDAgb2JqCjU0CmVuZG9iago4OTYgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKODk3IDAgb2JqCjU0CmVuZG9iago4OTggMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKODk5IDAgb2JqCjU0CmVuZG9iago5MDAgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTAxIDAgb2JqCjU0CmVuZG9iago5MDIgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKOTAzIDAgb2JqCjU0CmVuZG9iago5MDQgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTA1IDAgb2JqCjU0CmVuZG9iago5MDYgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKOTA3IDAgb2JqCjU0CmVuZG9iago5MDggMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTA5IDAgb2JqCjU0CmVuZG9iago5MTAgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKOTExIDAgb2JqCjU0CmVuZG9iago5MTIgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKOTEzIDAgb2JqCjU0CmVuZG9iago5MTQgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKOTE1IDAgb2JqCjU0CmVuZG9iago5MTYgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTE3IDAgb2JqCjU0CmVuZG9iago5MTggMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTE5IDAgb2JqCjU0CmVuZG9iago5MjAgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTIxIDAgb2JqCjU0CmVuZG9iago5MjIgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKOTIzIDAgb2JqCjU0CmVuZG9iago5MjQgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTI1IDAgb2JqCjU0CmVuZG9iago5MjYgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTI3IDAgb2JqCjU0CmVuZG9iago5MjggMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTI5IDAgb2JqCjU0CmVuZG9iago5MzAgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKOTMxIDAgb2JqCjU0CmVuZG9iago5MzIgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTMzIDAgb2JqCjU0CmVuZG9iago5MzQgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKOTM1IDAgb2JqCjU0CmVuZG9iago5MzYgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTM3IDAgb2JqCjU0CmVuZG9iago5MzggMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKOTM5IDAgb2JqCjU0CmVuZG9iago5NDAgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTQxIDAgb2JqCjU0CmVuZG9iago5NDIgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKOTQzIDAgb2JqCjU0CmVuZG9iago5NDQgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKOTQ1IDAgb2JqCjU0CmVuZG9iago5NDYgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTQ3IDAgb2JqCjU0CmVuZG9iago5NDggMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTQ5IDAgb2JqCjU0CmVuZG9iago5NTAgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKOTUxIDAgb2JqCjU0CmVuZG9iago5NTIgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9J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QmFzZUZvbnQgL1pSVVNSTytDTVNZNwovRm9udERlc2NyaXB0b3IgMzcgMCBSCj4+IGVuZG9iagozNyAwIG9iaiA8PAovQXNjZW50IDc1MAovQ2FwSGVpZ2h0IDY4MwovRGVzY2VudCAtMTk0Ci9Gb250TmFtZSAvWlJVU1JPK0NNU1k3Ci9JdGFsaWNBbmdsZSAtMTQuMDM1Ci9TdGVtViA5MwovWEhlaWdodCA0MzEKL0ZvbnRCQm94IFstMTUgLTk1MSAxMjUyIDc4Ml0KL0ZsYWdzIDQKL0NoYXJTZXQgKC9jaXJjbGVjb3B5cnQpCi9Gb250RmlsZSAzOCAwIFIKPj4gZW5kb2JqCjk3NSAwIG9iagpbMTEzOSBdCmVuZG9iago5NzQgMCBvYmogPDwKL1R5cGUgL0VuY29kaW5nCi9EaWZmZXJlbmNlcyBbIDAgLy5ub3RkZWYgMTMvY2lyY2xlY29weXJ0IDE0Ly5ub3RkZWZdCj4+IGVuZG9iago5NzYgMCBvYmogPDwKL1R5cGUgL0VuY29kaW5nCi9EaWZmZXJlbmNlcyBbIDAgLy5ub3RkZWYgMS9kb3RhY2NlbnQvZmkvZmwvZnJhY3Rpb24vaHVuZ2FydW1sYXV0L0xzbGFzaC9sc2xhc2gvb2dvbmVrL3JpbmcgMTAvLm5vdGRlZiAxMS9icmV2ZS9taW51cyAxMy8ubm90ZGVmIDE0L1pjYXJvbi96Y2Fyb24vY2Fyb24vZG90bGVzc2kvZG90bGVzc2ovZmYvZmZpL2ZmbC9ub3RlcXVhbC9pbmZpbml0eS9sZXNzZXF1YWwvZ3JlYXRlcmVxdWFsL3BhcnRpYWxkaWZmL3N1bW1hdGlvbi9wcm9kdWN0L3BpL2dyYXZlL3F1b3Rlc2luZ2xlL3NwYWNlL2V4Y2xhbS9xdW90ZWRibC9udW1iZXJzaWduL2RvbGxhci9wZXJjZW50L2FtcGVyc2FuZC9xdW90ZXJpZ2h0L3BhcmVubGVmdC9wYXJlbnJpZ2h0L2FzdGVyaXNrL3BsdXMvY29tbWEvaHlwaGVuL3BlcmlvZC9zbGFzaC96ZXJvL29uZS90d28vdGhyZWUvZm91ci9maXZlL3NpeC9zZXZlbi9laWdodC9uaW5lL2NvbG9uL3NlbWljb2xvbi9sZXNzL2VxdWFsL2dyZWF0ZXIvcXVlc3Rpb24vYXQvQS9CL0MvRC9FL0YvRy9IL0kvSi9LL0wvTS9OL08vUC9RL1IvUy9UL1UvVi9XL1gvWS9aL2JyYWNrZXRsZWZ0L2JhY2tzbGFzaC9icmFja2V0cmlnaHQvYXNjaWljaXJjdW0vdW5kZXJzY29yZS9xdW90ZWxlZnQvYS9iL2MvZC9lL2YvZy9oL2kvai9rL2wvbS9uL28vcC9xL3Ivcy90L3Uvdi93L3gveS96L2JyYWNlbGVmdC9iYXIvYnJhY2VyaWdodC9hc2NpaXRpbGRlIDEyNy8ubm90ZGVmIDEyOC9FdXJvL2ludGVncmFsL3F1b3Rlc2luZ2xiYXNlL2Zsb3Jpbi9xdW90ZWRibGJhc2UvZWxsaXBzaXMvZGFnZ2VyL2RhZ2dlcmRibC9jaXJjdW1mbGV4L3BlcnRob3VzYW5kL1NjYXJvbi9ndWlsc2luZ2xsZWZ0L09FL09tZWdhL3JhZGljYWwvYXBwcm94ZXF1YWwgMTQ0Ly5ub3RkZWYgMTQ3L3F1b3RlZGJsbGVmdC9xdW90ZWRibHJpZ2h0L2J1bGxldC9lbmRhc2gvZW1kYXNoL3RpbGRlL3RyYWRlbWFyay9zY2Fyb24vZ3VpbHNpbmdscmlnaHQvb2UvRGVsdGEvbG96ZW5nZS9ZZGllcmVzaXMgMTYwLy5ub3RkZWYgMTYxL2V4Y2xhbWRvd24vY2VudC9zdGVybGluZy9jdXJyZW5jeS95ZW4vYnJva2VuYmFyL3NlY3Rpb24vZGllcmVzaXMvY29weXJpZ2h0L29yZGZlbWluaW5lL2d1aWxsZW1vdGxlZnQvbG9naWNhbG5vdC9oeXBoZW4vcmVnaXN0ZXJlZC9tYWNyb24vZGVncmVlL3BsdXNtaW51cy90d29zdXBlcmlvci90aHJlZXN1cGVyaW9yL2FjdXRlL211L3BhcmFncmFwaC9wZXJpb2RjZW50ZXJlZC9jZWRpbGxhL29uZXN1cGVyaW9yL29yZG1hc2N1bGluZS9ndWlsbGVtb3RyaWdodC9vbmVxdWFydGVyL29uZWhhbGYvdGhyZWVxdWFydGVycy9xdWVzdGlvbmRvd24vQWdyYXZlL0FhY3V0ZS9BY2lyY3VtZmxleC9BdGlsZGUvQWRpZXJlc2lzL0FyaW5nL0FFL0NjZWRpbGxhL0VncmF2ZS9FYWN1dGUvRWNpcmN1bWZsZXgvRWRpZXJlc2lzL0lncmF2ZS9JYWN1dGUvSWNpcmN1bWZsZXgvSWRpZXJlc2lzL0V0aC9OdGlsZGUvT2dyYXZlL09hY3V0ZS9PY2lyY3VtZmxleC9PdGlsZGUvT2RpZXJlc2lzL211bHRpcGx5L09zbGFzaC9VZ3JhdmUvVWFjdXRlL1VjaXJjdW1mbGV4L1VkaWVyZXNpcy9ZYWN1dGUvVGhvcm4vZ2VybWFuZGJscy9hZ3JhdmUvYWFjdXRlL2FjaXJjdW1mbGV4L2F0aWxkZS9hZGllcmVzaXMvYXJpbmcvYWUvY2NlZGlsbGEvZWdyYXZlL2VhY3V0ZS9lY2lyY3VtZmxleC9lZGllcmVzaXMvaWdyYXZlL2lhY3V0ZS9pY2lyY3VtZmxleC9pZGllcmVzaXMvZXRoL250aWxkZS9vZ3JhdmUvb2FjdXRlL29jaXJjdW1mbGV4L290aWxkZS9vZGllcmVzaXMvZGl2aWRlL29zbGFzaC91Z3JhdmUvdWFjdXRlL3VjaXJjdW1mbGV4L3VkaWVyZXNpcy95YWN1dGUvdGhvcm4veWRpZXJlc2lzXQo+PiBlbmRvYmoKMzUgMCBvYmogPDwKL0xlbmd0aDEgMTY0NAovTGVuZ3RoMiA3MTY5Ci9MZW5ndGgzIDUzMgovTGVuZ3RoIDgwMDEgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnja7XdnPJzf1na0EL2XRGT0Fozeu+i9d8YYDGNGxhCi995rEFEToovookUXhBAtMXonOkG8kv97znl+5znPl+ecT+/vnS9z77X2ula51l77vlkZdQ145O0RdhBlBBzFw88LlABoQ13tPNz1Ea7aCHFNHn2IowfgVi6Mz8qqiISAUFAEXAmEgkgATCD2ACUIGCAgAOAXFxfHZwUoIty8kVBHJxSAw0jfhJOb+/E/JL+3AOy8/6a5tXSHOsIBbLcPnhAYws0VAkfdQvyvDQ0gEADKCQJwgMIgAEUdXTM1bRUAh4q2EUAFAocgQTCArocdDAoGaELBELg7hBPggEACYH8tAGAE3B76OzV33lsseXcACODuBgFDb80gXmCI22/VY4AbBOkKdXe/fQZA3QGOSBAcdVsDFAIAhYNhHva/A7iVOyD+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IC9UeXBlMQovRW5jb2RpbmcgOTgyIDAgUgovRmlyc3RDaGFyIDMzCi9MYXN0Q2hhciAxMjUKL1dpZHRocyA5ODMgMCBSCi9CYXNlRm9udCAvUlJMRExCK0NNVFQ5Ci9Gb250RGVzY3JpcHRvciAyMiAwIFIKPj4gZW5kb2JqCjIyIDAgb2JqIDw8Ci9Bc2NlbnQgNjExCi9DYXBIZWlnaHQgNjExCi9EZXNjZW50IC0yMjIKL0ZvbnROYW1lIC9SUkxETEIrQ01UVDkKL0l0YWxpY0FuZ2xlIDAKL1N0ZW1WIDc0Ci9YSGVpZ2h0IDQzMQovRm9udEJCb3ggWy02IC0yMzMgNTQyIDY5OF0KL0ZsYWdzIDQKL0NoYXJTZXQgKC9leGNsYW0vcGFyZW5sZWZ0L3BhcmVucmlnaHQvYXN0ZXJpc2svcGx1cy9jb21tYS9oeXBoZW4vcGVyaW9kL3NsYXNoL3plcm8vb25lL3R3by90aHJlZS9mb3VyL2ZpdmUvc2l4L3NldmVuL2VpZ2h0L2NvbG9uL3NlbWljb2xvbi9sZXNzL2VxdWFsL2F0L0EvQy9GL0kvTC9OL1MvVC9icmFja2V0bGVmdC9icmFja2V0cmlnaHQvdW5kZXJzY29yZS9hL2IvYy9kL2UvZi9nL2gvaS9qL2svbC9tL24vby9wL3Evci9zL3QvdS92L3cveC95L3ovYnJhY2VsZWZ0L2JyYWNlcmlnaHQpCi9Gb250RmlsZSAyMyAwIFIKPj4gZW5kb2JqCjk4MyAwIG9iagpbNTI1IDAgMCAwIDAgMCAwIDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgMCA1MjUgNTI1IDUyNSA1MjUgMCAwIDUyNSA1MjUgMCA1MjUgMCAwIDUyNSAwIDAgNTI1IDAgMCA1MjUgMCA1MjUgMCAwIDAgMCA1MjUgNTI1IDAgMCAwIDAgMCAwIDUyNSAwIDUyNSAwIDUyNSAwIDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1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02sZzRHPleaHaJ9UZzUqzHkLCSmTHu2nuLNXF9XkH9xUvTNnNldaB1T51ycmxkD/2eYJ9WVYiucVHi2BF/agUkE1KuzJSQ44hosNByr8P2P8H/BfAbg/9XANCvb3dQ3yYfwPJOzaYmVuZHN0cmVhbQplbmRvYmoKOSAwIG9iaiA8PAovVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTEKL0VuY29kaW5nIDk3NiAwIFIKL0ZpcnN0Q2hhciAyCi9MYXN0Q2hhciAxNjgKL1dpZHRocyA5OTIgMCBSCi9CYXNlRm9udCAvS1VZR1VQK05pbWJ1c1JvbU5vOUwtUmVndQovRm9udERlc2NyaXB0b3IgNyAwIFIKPj4gZW5kb2JqCjcgMCBvYmogPDwKL0FzY2VudCA2NzgKL0NhcEhlaWdodCA2NTEKL0Rlc2NlbnQgLTIxNgovRm9udE5hbWUgL0tVWUdVUCtOaW1idXNSb21ObzlMLVJlZ3UKL0l0YWxpY0FuZ2xlIDAKL1N0ZW1WIDg1Ci9YSGVpZ2h0IDQ1MAovRm9udEJCb3ggWy0xNjggLTI4MSAxMDAwIDkyNF0KL0ZsYWdzIDQKL0NoYXJTZXQgKC9maS9mbC9kb3RsZXNzaS9kb2xsYXIvcGVyY2VudC9xdW90ZXJpZ2h0L3BhcmVubGVmdC9wYXJlbnJpZ2h0L3BsdXMvY29tbWEvaHlwaGVuL3BlcmlvZC9zbGFzaC96ZXJvL29uZS90d28vdGhyZWUvZm91ci9maXZlL3NpeC9zZXZlbi9laWdodC9uaW5lL2NvbG9uL3NlbWljb2xvbi9BL0IvQy9EL0UvRi9HL0gvSS9KL0svTC9NL04vTy9QL1EvUi9TL1QvVS9WL1cvWC9ZL1ovYnJhY2tldGxlZnQvYnJhY2tldHJpZ2h0L2EvYi9jL2QvZS9mL2cvaC9pL2ovay9sL20vbi9vL3AvcS9yL3MvdC91L3Yvdy94L3kvei9xdW90ZWRibGxlZnQvcXVvdGVkYmxyaWdodC9lbmRhc2gvZW1kYXNoL2RpZXJlc2lzKQovRm9udEZpbGUgOCAwIFIKPj4gZW5kb2JqCjk5MiAwIG9iagpbNTU2IDU1NiAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDI3OCAwIDAgMCAwIDAgMCAwIDAgMCAw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MiA3NzggNjExIDAgNzIyIDU1NiA2NjcgMCA3MjIgMTAwMCAwIDAgMCAwIDAgMCAwIDAgMCA1MDAgNTU2IDQ0NCA1NTYgNDQ0IDMzMyA1MDAgNTU2IDI3OCAzMzMgNTU2IDI3OCA4MzMgNTU2IDUwMCA1NTYgMCA0NDQgMzg5IDMzMyA1NTYgNTAwIDcyMiA1MDAgNTAwIDQ0NCBdCmVuZG9iago0MCAwIG9iaiA8PAovVHlwZSAvUGFnZXMKL0NvdW50IDYKL1BhcmVudCA5OTQgMCBSCi9LaWRzIFsyIDAgUiA0MyAwIFIgMTA0IDAgUiAxMTAgMCBSIDExNiAwIFIgMTIyIDAgUl0KPj4gZW5kb2JqCjE2MSAwIG9iaiA8PAovVHlwZSAvUGFnZXMKL0NvdW50IDYKL1BhcmVudCA5OTQgMCBSCi9LaWRzIFsxNTYgMCBSIDE5MyAwIFIgMTk2IDAgUiAyMDIgMCBSIDIxNyAwIFIgNzg3IDAgUl0KPj4gZW5kb2JqCjc5MiAwIG9iaiA8PAovVHlwZSAvUGFnZXMKL0NvdW50IDIKL1BhcmVudCA5OTQgMCBSCi9LaWRzIFs3OTAgMCBSIDk2NiAwIFJdCj4+IGVuZG9iago5OTQgMCBvYmogPDwKL1R5cGUgL1BhZ2VzCi9Db3VudCAxNAovS2lkcyBbNDAgMCBSIDE2MSAwIFIgNzkyIDAgUl0KPj4gZW5kb2JqCjk5NSAwIG9iaiA8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgOTk0IDAgUgo+PiBlbmRvYmoKOTk2IDAgb2JqIDw8Ci9Qcm9kdWNlciAocGRmZVRlWC0xLjIxYSkKL0NyZWF0b3IgKFRlWCkKL0NyZWF0aW9uRGF0ZSAoRDoyMDA5MDQwMTE2MzkyNS0wNycwMCcpCi9QVEVYLkZ1bGxiYW5uZXIgKFRoaXMgaXMgcGRmZVRlWCwgVmVyc2lvbiAzLjE0MTU5Mi0xLjIxYS0yLjIgKFdlYjJDIDcuNS40KSBrcGF0aHNlYSB2ZXJzaW9uIDMuNS42KQo+PiBlbmRvYmoKeHJlZgowIDk5NwowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDQ4MTQgMDAwMDAgbiAKMDAwMDAwNDcwOSAwMDAwMCBuIAowMDAwMDAwMDA5IDAwMDAwIG4gCjAwMDA5OTQ5MDEgMDAwMDAgbiAKMDAwMDk3OTY1NSAwMDAwMCBuIAowMDAwOTk0NzMxIDAwMDAwIG4gCjAwMDA5Nzg1ODkgMDAwMDAgbiAKMDAwMDk1ODIyNCAwMDAwMCBuIAowMDAwOTc4NDIwIDAwMDAwIG4gCjAwMDA5NTc4NDMgMDAwMDAgbiAKMDAwMDk1NjIyNCAwMDAwMCBuIAowMDAwOTU3Njg2IDAwMDAwIG4gCjAwMDA5NTU4NDggMDAwMDAgbiAKMDAwMDk1MzQzNiAwMDAwMCBuIAowMDAwOTU1NjkxIDAwMDAwIG4gCjAwMDA5NTMxMTAgMDAwMDAgbiAKMDAwMDk1MTU1OCAwMDAwMCBuIAowMDAwOTUyOTU0IDAwMDAwIG4gCjAwMDA5NTA5ODcgMDAwMDAgbiAKMDAwMDk0OTE2MyAwMDAwMCBuIAowMDAwOTUwODI5IDAwMDAwIG4gCjAwMDA5NDc4MjcgMDAwMDAgbiAKMDAwMDkzNzIwOCAwMDAwMCBuIAowMDAwOTQ3NjY4IDAwMDAwIG4gCjAwMDA5MzY3MTEgMDAwMDAgbiAKMDAwMDkzMzA4NiAwMDAwMCBuIAowMDAwOTM2NTU0IDAwMDAwIG4gCjAwMDA5MzI2NDEgMDAwMDAgbiAKMDAwMDkyMjczMCAwMDAwMCBuIAowMDAwOTMyNDY1IDAwMDAwIG4gCjAwMDA5MjE5ODMgMDAwMDAgbiAKMDAwMDkwNzM0OSAwMDAwMCBuIAowMDAwOTIxODA4IDAwMDAwIG4gCjAwMDA5MDY5NzYgMDAwMDAgbiAKMDAwMDg5ODY3NCAwMDAwMCBuIAowMDAwOTA2Nzk1IDAwMDAwIG4gCjAwMDA4OTY0NTYgMDAwMDAgbiAKMDAwMDg5NDk4NyAwMDAwMCBuIAowMDAwODk2Mjk4IDAwMDAwIG4gCjAwMDA5OTU1NjQgMDAwMDAgbiAKMDAwMDAxMDI2NiAwMDAwMCBuIAowMDAwMDU0MjAwIDAwMDAwIG4gCjAwMDAwMTAxNTggMDAwMDAgbiAKMDAwMDAwNTAxMyAwMDAwMCBuIAowMDAwMDE1NDA2IDAwMDAwIG4gCjAwMDAwMTU2MDcgMDAwMDAgbiAKMDAwMDAxNTY0MiAwMDAwMCBuIAowMDAwMDE1Njc3IDAwMDAwIG4gCjAwMDAwMTU4NTQgMDAwMDAgbiAKMDAwMDAxNjAzNiAwMDAwMCBuIAowMDAwMDE2MzQ0IDAwMDAwIG4gCjAwMDAwMTY2MzcgMDAwMDAgbiAKMDAwMDAxNjkzMCAwMDAwMCBuIAowMDAwMDE3MTkwIDAwMDAwIG4gCjAwMDAwMTc0NTcgMDAwMDAgbiAKMDAwMDAxNzc2NSAwMDAwMCBuIAowMDAwMDE4MDY5IDAwMDAwIG4gCjAwMDAwMTgzMzUgMDAwMDAgbiAKMDAwMDAxODY1MiAwMDAwMCBuIAowMDAwMDE4OTQ1IDAwMDAwIG4gCjAwMDAwMTg5NjYgMDAwMDAgbiAKMDAwMDAxOTg2MCAwMDAwMCBuIAowMDAwMDIwNjY3IDAwMDAwIG4gCjAwMDAwMjA5MDYgMDAwMDAgbiAKMDAwMDAyMTM3MyAwMDAwMCBuIAowMDAwMDIxNjIwIDAwMDAwIG4gCjAwMDAwMjE4NzEgMDAwMDAgbiAKMDAwMDAyMTg5MSAwMDAwMCBuIAowMDAwMDIzODMwIDAwMDAwIG4gCjAwMDAwMjM4NTAgMDAwMDAgbiAKMDAwMDAyNTcyMCAwMDAwMCBuIAowMDAwMDI1NzQwIDAwMDAwIG4gCjAwMDAwMjcyNzAgMDAwMDAgbiAKMDAwMDAyNzI4OSAwMDAwMCBuIAowMDAwMDI4Nzc3IDAwMDAwIG4gCjAwMDAwMjg3OTYgMDAwMDAgbiAKMDAwMDAzMDAyMiAwMDAwMCBuIAowMDAwMDMwMDQyIDAwMDAwIG4gCjAwMDAwMzE5ODEgMDAwMDAgbiAKMDAwMDAzMjAwMSAwMDAwMCBuIAowMDAwMDMzOTc2IDAwMDAwIG4gCjAwMDAwMzM5OTUgMDAwMDAgbiAKMDAwMDAzNTExNyAwMDAwMCBuIAowMDAwMDM1MTM3IDAwMDAwIG4gCjAwMDAwMzY3MTAgMDAwMDAgbiAKMDAwMDAzNjczMCAwMDAwMCBuIAowMDAwMDM4MjYxIDAwMDAwIG4gCjAwMDAwMzgyODEgMDAwMDAgbiAKMDAwMDAzODMwMSAwMDAwMCBuIAowMDAwMDQ2ODQyIDAwMDAwIG4gCjAwMDAwNTM5NDYgMDAwMDAgbiAKMDAwMDA1Mzk2NyAwMDAwMCBuIAowMDAwMDUzOTg4IDAwMDAwIG4gCjAwMDAwNTQwMDkgMDAwMDAgbiAKMDAwMDA1NDAzMCAwMDAwMCBuIAowMDAwMDU0MDUxIDAwMDAwIG4gCjAwMDAwNTQwNzIgMDAwMDAgbiAKMDAwMDA1NDA5MyAwMDAwMCBuIAowMDAwMDU0MTEzIDAwMDAwIG4gCjAwMDAwNTQxMzQgMDAwMDAgbiAKMDAwMDA1NDE1NiAwMDAwMCBuIAowMDAwMDU0MTc4IDAwMDAwIG4gCjAwMDAwNTgwMzcgMDAwMDAgbiAKMDAwMDA1NzkyNiAwMDAwMCBuIAowMDAwMDU0MzQzIDAwMDAwIG4gCjAwMDA4OTQxOTMgMDAwMDAgbiAKMDAwMDg4ODg2NCAwMDAwMCBuIAowMDAwODk0MDMyIDAwMDAwIG4gCjAwMDAwNjQ2NDkgMDAwMDAgbiAKMDAwMDA2NDUzOCAwMDAwMCBuIAowMDAwMDU4MTY3IDAwMDAwIG4gCjAwMDA4ODgzMzAgMDAwMDAgbiAKMDAwMDg4NTE1MSAwMDAwMCBuIAowMDAwODg4MTY5IDAwMDAwIG4gCjAwMDAwNzE0MTIgMDAwMDAgbiAKMDAwMDA3MTMwMSAwMDAwMCBuIAowMDAwMDY0NzkyIDAwMDAwIG4gCjAwMDAwNzY1NzAgMDAwMDAgbiAKMDAwMDA5MjQzNyAwMDAwMCBuIAowMDAwMTE3NjY2IDAwMDAwIG4gCjAwMDAxMTIyMjkgMDAwMDAgbiAKMDAwMDA3NjQ1OSAwMDAwMCBuIAowMDAwMDcxNTE3IDAwMDAwIG4gCjAwMDAwODA3ODcgMDAwMDAgbiAKMDAwMDA4MDk5OCAwMDAwMCBuIAowMDAwMDgxMDM1IDAwMDAwIG4gCjAwMDAwODEwNzIgMDAwMDAgbiAKMDAwMDA4MTI0NSAwMDAwMCBuIAowMDAwMDgxMjY3IDAwMDAwIG4gCjAwMDAwODIxNjMgMDAwMDAgbiAKMDAwMDA4Mjk3MiAwMDAwMCBuIAowMDAwMDgzMjAzIDAwMDAwIG4gCjAwMDAwODMzMDMgMDAwMDAgbiAKMDAwMDA4MzcyOSAwMDAwMCBuIAowMDAwMDgzNzUwIDAwMDAwIG4gCjAwMDAwODM3NzEgMDAwMDAgbiAKMDAwMDA5MjM5NCAwMDAwMCBuIAowMDAwMDkyNDE1IDAwMDAwIG4gCjAwMDAwOTg4MTAgMDAwMDAgbiAKMDAwMDA5OTAyMSAwMDAwMCBuIAowMDAwMDk5MDU4IDAwMDAwIG4gCjAwMDAwOTkwOTUgMDAwMDAgbiAKMDAwMDA5OTI2OCAwMDAwMCBuIAowMDAwMDk5MjkwIDAwMDAwIG4gCjAwMDAxMDAwOTkgMDAwMDAgbiAKMDAwMDEwMDk5NSAwMDAwMCBuIAowMDAwMTAxMjI2IDAwMDAwIG4gCjAwMDAxMDEzNTggMDAwMDAgbiAKMDAwMDEwMTgyNyAwMDAwMCBuIAowMDAwMTAxODQ4IDAwMDAwIG4gCjAwMDAxMDE4NjkgMDAwMDAgbiAKMDAwMDExMjE4NSAwMDAwMCBuIAowMDAwMTEyMjA2IDAwMDAwIG4gCjAwMDAxMzk0MzQgMDAwMDAgbiAKMDAwMDE1ODY2OSAwMDAwMCBuIAowMDAwMTE3NTU0IDAwMDAwIG4gCjAwMDAxMTI0MTIgMDAwMDAgbiAKMDAwMDg4NDY0NyAwMDAwMCBuIAowMDAwODgxODc5IDAwMDAwIG4gCjAwMDA4ODQ0ODggMDAwMDAgbiAKMDAwMDk5NTY3NyAwMDAwMCBuIAowMDAwMTI2MDYwIDAwMDAwIG4gCjAwMDAxMjYyNzEgMDAwMDAgbiAKMDAwMDEyNjMwOCAwMDAwMCBuIAowMDAwMTI2MzQ1IDAwMDAwIG4gCjAwMDAxMjY1MTggMDAwMDAgbiAKMDAwMDEyNjU0MCAwMDAwMCBuIAowMDAwMTI3NDM2IDAwMDAwIG4gCjAwMDAxMjgyNDUgMDAwMDAgbiAKMDAwMDEyODQ3NiAwMDAwMCBuIAowMDAwMTI4NjA0IDAwMDAwIG4gCjAwMDAxMjkwNDQgMDAwMDAgbiAKMDAwMDEyOTA2NSAwMDAwMCBuIAowMDAwMTI5MDg2IDAwMDAwIG4gCjAwMDAxMzkzOTAgMDAwMDAgbiAKMDAwMDEzOTQxMSAwMDAwMCBuIAowMDAwMTQ2MzQ3IDAwMDAwIG4gCjAwMDAxNDY1NTggMDAwMDAgbiAKMDAwMDE0NjU5NSAwMDAwMCBuIAowMDAwMTQ2NjMyIDAwMDAwIG4gCjAwMDAxNDY4MDUgMDAwMDAgbiAKMDAwMDE0NjgyNyAwMDAwMCBuIAowMDAwMTQ3NzIzIDAwMDAwIG4gCjAwMDAxNDg1MzIgMDAwMDAgbiAKMDAwMDE0ODc2MyAwMDAwMCBuIAowMDAwMTQ4ODYzIDAwMDAwIG4gCjAwMDAxNDkyNzcgMDAwMDAgbiAKMDAwMDE0OTI5OCAwMDAwMCBuIAowMDAwMTQ5MzE5IDAwMDAwIG4gCjAwMDAxNTg2MjYgMDAwMDAgbiAKMDAwMDE1ODY0NyAwMDAwMCBuIAowMDAwMTY1MzQ1IDAwMDAwIG4gCjAwMDAxNjUyMzMgMDAwMDAgbiAKMDAwMDE1ODg1NCAwMDAwMCBuIAowMDAwMTcxNTg4IDAwMDAwIG4gCjAwMDAxNzE0NzYgMDAwMDAgbiAKMDAwMDE2NTUyNSAwMDAwMCBuIAowMDAwMjA0MTkyIDAwMDAwIG4gCjAwMDAxNzcyODMgMDAwMDAgbiAKMDAwMDgyNjQwNSAwMDAwMCBuIAowMDAwMjAwMzE2IDAwMDAwIG4gCjAwMDAxNzcxNzEgMDAwMDAgbiAKMDAwMDE3MTY5MyAwMDAwMCBuIAowMDAwMTgyOTE2IDAwMDAwIG4gCjAwMDAxODMxNDAgMDAwMDAgbiAKMDAwMDE4MzE3NyAwMDAwMCBuIAowMDAwMTgzMzQ1IDAwMDAwIG4gCjAwMDAxODMzNjcgMDAwMDAgbiAKMDAwMDE4NDI2MyAwMDAwMCBuIAowMDAwMTg0NDg3IDAwMDAwIG4gCjAwMDAxODQ2ODMgMDAwMDAgbiAKMDAwMDE4NDk2NyAwMDAwMCBuIAowMDAwMTg0OTg4IDAwMDAwIG4gCjAwMDAyMDAyNzIgMDAwMDAgbiAKMDAwMDIwMDI5MyAwMDAwMCBuIAowMDAwODE2ODgwIDAwMDAwIG4gCjAwMDAyMDQwODAgMDAwMDAgbiAKMDAwMDIwMDQzNyAwMDAwMCBuIAowMDAwNTkzNDYwIDAwMDAwIG4gCjAwMDA1OTM2NTYgMDAwMDAgbiAKMDAwMDU5MzY5MyAwMDAwMCBuIAowMDAwNTkzODYxIDAwMDAwIG4gCjAwMDA1OTQxNDAgMDAwMDAgbiAKMDAwMDU5NDQwMSAwMDAwMCBuIAowMDAwNTk0NzM4IDAwMDAwIG4gCjAwMDA1OTUwMDYgMDAwMDAgbiAKMDAwMDU5NTMyMyAwMDAwMCBuIAowMDAwNTk1NTk1IDAwMDAwIG4gCjAwMDA1OTU4NjUgMDAwMDAgbiAKMDAwMDU5NjI2MCAwMDAwMCBuIAowMDAwNTk2NTIyIDAwMDAwIG4gCjAwMDA1OTY4MTEgMDAwMDAgbiAKMDAwMDU5NzEwNyAwMDAwMCBuIAowMDAwNTk3Mzg5IDAwMDAwIG4gCjAwMDA1OTc3MDYgMDAwMDAgbiAKMDAwMDU5Nzk4MSAwMDAwMCBuIAowMDAwNTk4MjQyIDAwMDAwIG4gCjAwMDA1OTg2NTEgMDAwMDAgbiAKMDAwMDU5ODkxNSAwMDAwMCBuIAowMDAwNTk5MTgzIDAwMDAwIG4gCjAwMDA1OTk0NzUgMDAwMDAgbiAKMDAwMDU5OTc3NyAwMDAwMCBuIAowMDAwNjAwMDUwIDAwMDAwIG4gCjAwMDA2MDA0NjYgMDAwMDAgbiAKMDAwMDYwMDc0OCAwMDAwMCBuIAowMDAwNjAxMDI3IDAwMDAwIG4gCjAwMDA2MDEzOTUgMDAwMDAgbiAKMDAwMDYwMTY4NiAwMDAwMCBuIAowMDAwNjAyMDYwIDAwMDAwIG4gCjAwMDA2MDIzNDIgMDAwMDAgbiAKMDAwMDYwMjYyNyAwMDAwMCBuIAowMDAwNjAyOTU4IDAwMDAwIG4gCjAwMDA2MDMyNDEgMDAwMDAgbiAKMDAwMDYwMzUzMSAwMDAwMCBuIAowMDAwNjAzNzk0IDAwMDAwIG4gCjAwMDA2MDQxMTUgMDAwMDAgbiAKMDAwMDYwNDQxNyAwMDAwMCBuIAowMDAwNjA1MTAyIDAwMDAwIG4gCjAwMDA2MDU0NjQgMDAwMDAgbiAKMDAwMDYwNTg1NSAwMDAwMCBuIAowMDAwNjA2MTM3IDAwMDAwIG4gCjAwMDA2MDY0MjYgMDAwMDAgbiAKMDAwMDYwNjcwOCAwMDAwMCBuIAowMDAwNjA3MDAzIDAwMDAwIG4gCjAwMDA2MDczMDMgMDAwMDAgbiAKMDAwMDYwNzU3NyAwMDAwMCBuIAowMDAwNjA3ODg1IDAwMDAwIG4gCjAwMDA2MDgxNzcgMDAwMDAgbiAKMDAwMDYwODQ1MiAwMDAwMCBuIAowMDAwNjA4NzM0IDAwMDAwIG4gCjAwMDA2MDkwNjUgMDAwMDAgbiAKMDAwMDYwOTM0MCAwMDAwMCBuIAowMDAwNjA5NjU2IDAwMDAwIG4gCjAwMDA2MDk5NDYgMDAwMDAgbiAKMDAwMDYxMDIxMCAwMDAwMCBuIAowMDAwNjEwNTA3IDAwMDAwIG4gCjAwMDA2MTA4NTYgMDAwMDAgbiAKMDAwMDYxMTE1MCAwMDAwMCBuIAowMDAwNjExNTQ2IDAwMDAwIG4gCjAwMDA2MTE5MDkgMDAwMDAgbiAKMDAwMDYxMjU4OCAwMDAwMCBuIAowMDAwNjEyODUxIDAwMDAwIG4gCjAwMDA2MTMxMjcgMDAwMDAgbiAKMDAwMDYxMzQyMyAwMDAwMCBuIAowMDAwNjEzNzUwIDAwMDAwIG4gCjAwMDA2MTQwNDIgMDAwMDAgbiAKMDAwMDYxNDMwMiAwMDAwMCBuIAowMDAwNjE0NjMxIDAwMDAwIG4gCjAwMDA2MTUwMjkgMDAwMDAgbiAKMDAwMDYxNTM3NyAwMDAwMCBuIAowMDAwNjE1NzI0IDAwMDAwIG4gCjAwMDA2MTYwMjYgMDAwMDAgbiAKMDAwMDYxNjMyOCAwMDAwMCBuIAowMDAwNjE2NjQ5IDAwMDAwIG4gCjAwMDA2MTY5MTUgMDAwMDAgbiAKMDAwMDYxNzI0OCAwMDAwMCBuIAowMDAwNjE3NTkwIDAwMDAwIG4gCjAwMDA2MTc5MjEgMDAwMDAgbiAKMDAwMDYxODM5MCAwMDAwMCBuIAowMDAwNjE4ODE2IDAwMDAwIG4gCjAwMDA2MTg5NzEgMDAwMDAgbiAKMDAwMDYxOTEyNiAwMDAwMCBuIAowMDAwNjE5MjgxIDAwMDAwIG4gCjAwMDA2MTk0MzQgMDAwMDAgbiAKMDAwMDYxOTU4OSAwMDAwMCBuIAowMDAwNjE5NzQ0IDAwMDAwIG4gCjAwMDA2MTk4OTkgMDAwMDAgbiAKMDAwMDYyMDA1NCAwMDAwMCBuIAowMDAwNjIwMjA5IDAwMDAwIG4gCjAwMDA2MjAzNjQgMDAwMDAgbiAKMDAwMDYyMDUxOSAwMDAwMCBuIAowMDAwNjIwNjc0IDAwMDAwIG4gCjAwMDA2MjA4MjkgMDAwMDAgbiAKMDAwMDYyMDk4MiAwMDAwMCBuIAowMDAwNjIxMTM3IDAwMDAwIG4gCjAwMDA2MjEyOTAgMDAwMDAgbiAKMDAwMDYyMTQ0NSAwMDAwMCBuIAowMDAwNjIxNTk4IDAwMDAwIG4gCjAwMDA2MjE3NTEgMDAwMDAgbiAKMDAwMDYyMTkwOCAwMDAwMCBuIAowMDAwNjIyMDYzIDAwMDAwIG4gCjAwMDA2MjIyMTggMDAwMDAgbiAKMDAwMDYyMjM3MyAwMDAwMCBuIAowMDAwNjIyNTI4IDAwMDAwIG4gCjAwMDA2MjI2ODMgMDAwMDAgbiAKMDAwMDYyMjgzOCAwMDAwMCBuIAowMDAwNjIyOTkzIDAwMDAwIG4gCjAwMDA2MjMxNDggMDAwMDAgbiAKMDAwMDYyMzMwMyAwMDAwMCBuIAowMDAwNjIzNDYwIDAwMDAwIG4gCjAwMDA2MjM2MTUgMDAwMDAgbiAKMDAwMDYyMzc3MCAwMDAwMCBuIAowMDAwNjIzOTI3IDAwMDAwIG4gCjAwMDA2MjQwODIgMDAwMDAgbiAKMDAwMDYyNDIzNyAwMDAwMCBuIAowMDAwNjI0MzkyIDAwMDAwIG4gCjAwMDA2MjQ1NDcgMDAwMDAgbiAKMDAwMDYyNDcwMCAwMDAwMCBuIAowMDAwNjI0ODU1IDAwMDAwIG4gCjAwMDA2MjUwMTAgMDAwMDAgbiAKMDAwMDYyNTE2NSAwMDAwMCBuIAowMDAwNjI1MzIwIDAwMDAwIG4gCjAwMDA2MjU0NzcgMDAwMDAgbiAKMDAwMDYyNTYzMiAwMDAwMCBuIAowMDAwNjI1Nzg3IDAwMDAwIG4gCjAwMDA2MjU5NDIgMDAwMDAgbiAKMDAwMDYyNjA5NyAwMDAwMCBuIAowMDAwNjI2MjUyIDAwMDAwIG4gCjAwMDA2MjY0MDcgMDAwMDAgbiAKMDAwMDYyNjU2MiAwMDAwMCBuIAowMDAwNjI2NzE3IDAwMDAwIG4gCjAwMDA2MjY4NzIgMDAwMDAgbiAKMDAwMDYyNzAyNyAwMDAwMCBuIAowMDAwNjI3MTgyIDAwMDAwIG4gCjAwMDA2MjczMzcgMDAwMDAgbiAKMDAwMDYyNzQ5MiAwMDAwMCBuIAowMDAwNjI3NjQ3IDAwMDAwIG4gCjAwMDA2Mjc4MDIgMDAwMDAgbiAKMDAwMDYyNzk1OSAwMDAwMCBuIAowMDAwNjI4MTE0IDAwMDAwIG4gCjAwMDA2MjgyNjkgMDAwMDAgbiAKMDAwMDYyODQyNCAwMDAwMCBuIAowMDAwNjI4NTc5IDAwMDAwIG4gCjAwMDA2Mjg3MzQgMDAwMDAgbiAKMDAwMDYyODg4OSAwMDAwMCBuIAowMDAwNjI5MDQ0IDAwMDAwIG4gCjAwMDA2MjkxOTcgMDAwMDAgbiAKMDAwMDYyOTM1MCAwMDAwMCBuIAowMDAwNjI5NTA1IDAwMDAwIG4gCjAwMDA2Mjk2NjAgMDAwMDAgbiAKMDAwMDYyOTgxNSAwMDAwMCBuIAowMDAwNjI5OTcwIDAwMDAwIG4gCjAwMDA2MzAxMjcgMDAwMDAgbiAKMDAwMDYzMDI4MiAwMDAwMCBuIAowMDAwNjMwNDM3IDAwMDAwIG4gCjAwMDA2MzA1OTIgMDAwMDAgbiAKMDAwMDYzMDc0NyAwMDAwMCBuIAowMDAwNjMwOTAyIDAwMDAwIG4gCjAwMDA2MzEwNTcgMDAwMDAgbiAKMDAwMDYzMTIxMiAwMDAwMCBuIAowMDAwNjMxMzY3IDAwMDAwIG4gCjAwMDA2MzEzOTEgMDAwMDAgbiAKMDAwMDYzMjI4NyAwMDAwMCBuIAowMDAwNjMyNTA5IDAwMDAwIG4gCjAwMDA2MzI1OTcgMDAwMDAgbiAKMDAwMDYzMjg4MSAwMDAwMCBuIAowMDAwNjMyOTAxIDAwMDAwIG4gCjAwMDA2MzM4MzYgMDAwMDAgbiAKMDAwMDYzMzg1NiAwMDAwMCBuIAowMDAwNjM1MDA4IDAwMDAwIG4gCjAwMDA2MzUwMjkgMDAwMDAgbiAKMDAwMDYzNjI0OCAwMDAwMCBuIAowMDAwNjM2MjY4IDAwMDAwIG4gCjAwMDA2MzcyMDAgMDAwMDAgbiAKMDAwMDYzNzIyMSAwMDAwMCBuIAowMDAwNjM4MjA1IDAwMDAwIG4gCjAwMDA2MzgyMjUgMDAwMDAgbiAKMDAwMDYzOTIyNyAwMDAwMCBuIAowMDAwNjM5MjQ3IDAwMDAwIG4gCjAwMDA2NDAzNzEgMDAwMDAgbiAKMDAwMDY0MDM5MiAwMDAwMCBuIAowMDAwNjQxNTg3IDAwMDAwIG4gCjAwMDA2NDE2MDcgMDAwMDAgbiAKMDAwMDY0MjY1MyAwMDAwMCBuIAowMDAwNjQyNjczIDAwMDAwIG4gCjAwMDA2NDM1MzQgMDAwMDAgbiAKMDAwMDY0MzU1NCAwMDAwMCBuIAowMDAwNjQ0NzE5IDAwMDAwIG4gCjAwMDA2NDQ3MzkgMDAwMDAgbiAKMDAwMDY0NTc3MiAwMDAwMCBuIAowMDAwNjQ1NzkzIDAwMDAwIG4gCjAwMDA2NDcwMTEgMDAwMDAgbiAKMDAwMDY0NzAzMSAwMDAwMCBuIAowMDAwNjQ4MTczIDAwMDAwIG4gCjAwMDA2NDgxOTMgMDAwMDAgbiAKMDAwMDY0OTMyMyAwMDAwMCBuIAowMDAwNjQ5MzQ0IDAwMDAwIG4gCjAwMDA2NTA1OTAgMDAwMDAgbiAKMDAwMDY1MDYxMCAwMDAwMCBuIAowMDAwNjUxNzQ3IDAwMDAwIG4gCjAwMDA2NTE3NjcgMDAwMDAgbiAKMDAwMDY1Mjg5NCAwMDAwMCBuIAowMDAwNjUyOTE0IDAwMDAwIG4gCjAwMDA2NTQwODkgMDAwMDAgbiAKMDAwMDY1NDEwOSAwMDAwMCBuIAowMDAwNjU1MzI3IDAwMDAwIG4gCjAwMDA2NTUzNDcgMDAwMDAgbiAKMDAwMDY1NjUwNyAwMDAwMCBuIAowMDAwNjU2NTI4IDAwMDAwIG4gCjAwMDA2NTc4MjUgMDAwMDAgbiAKMDAwMDY1Nzg0NSAwMDAwMCBuIAowMDAwNjU4OTk2IDAwMDAwIG4gCjAwMDA2NTkwMTYgMDAwMDAgbiAKMDAwMDY2MDEyNyAwMDAwMCBuIAowMDAwNjYwMTQ4IDAwMDAwIG4gCjAwMDA2NjEzODQgMDAwMDAgbiAKMDAwMDY2MTQwNCAwMDAwMCBuIAowMDAwNjYyNDM4IDAwMDAwIG4gCjAwMDA2NjI0NTkgMDAwMDAgbiAKMDAwMDY2MzcyNyAwMDAwMCBuIAowMDAwNjYzNzQ3IDAwMDAwIG4gCjAwMDA2NjQ5MDggMDAwMDAgbiAKMDAwMDY2NDkyOCAwMDAwMCBuIAowMDAwNjY2MDY4IDAwMDAwIG4gCjAwMDA2NjYwODkgMDAwMDAgbiAKMDAwMDY2NzI0NCAwMDAwMCBuIAowMDAwNjY3MjY0IDAwMDAwIG4gCjAwMDA2Njg0MTIgMDAwMDAgbiAKMDAwMDY2ODQzMiAwMDAwMCBuIAowMDAwNjY5NTc4IDAwMDAwIG4gCjAwMDA2Njk1OTggMDAwMDAgbiAKMDAwMDY3MDc0MCAwMDAwMCBuIAowMDAwNjcwNzYxIDAwMDAwIG4gCjAwMDA2NzE4NzkgMDAwMDAgbiAKMDAwMDY3MTg5OSAwMDAwMCBuIAowMDAwNjczMDc2IDAwMDAwIG4gCjAwMDA2NzMwOTcgMDAwMDAgbiAKMDAwMDY3NDU4OSAwMDAwMCBuIAowMDAwNjc0NjEwIDAwMDAwIG4gCjAwMDA2NzU1NDUgMDAwMDAgbiAKMDAwMDY3NTU2NiAwMDAwMCBuIAowMDAwNjc2NzkxIDAwMDAwIG4gCjAwMDA2NzY4MTEgMDAwMDAgbiAKMDAwMDY3Nzg0NCAwMDAwMCBuIAowMDAwNjc3ODY0IDAwMDAwIG4gCjAwMDA2Nzg4NDAgMDAwMDAgbiAKMDAwMDY3ODg2MCAwMDAwMCBuIAowMDAwNjgwMDM4IDAwMDAwIG4gCjAwMDA2ODAwNTggMDAwMDAgbiAKMDAwMDY4MTIzMCAwMDAwMCBuIAowMDAwNjgxMjUwIDAwMDAwIG4gCjAwMDA2ODI0NjAgMDAwMDAgbiAKMDAwMDY4MjQ4MCAwMDAwMCBuIAowMDAwNjgzNjIyIDAwMDAwIG4gCjAwMDA2ODM2NDMgMDAwMDAgbiAKMDAwMDY4NDgxNyAwMDAwMCBuIAowMDAwNjg0ODM3IDAwMDAwIG4gCjAwMDA2ODU5MTkgMDAwMDAgbiAKMDAwMDY4NTkzOSAwMDAwMCBuIAowMDAwNjg3MDExIDAwMDAwIG4gCjAwMDA2ODcwMzEgMDAwMDAgbiAKMDAwMDY4ODE2NyAwMDAwMCBuIAowMDAwNjg4MTg4IDAwMDAwIG4gCjAwMDA2ODkzOTMgMDAwMDAgbiAKMDAwMDY4OTQxMyAwMDAwMCBuIAowMDAwNjkwNTY1IDAwMDAwIG4gCjAwMDA2OTA1ODYgMDAwMDAgbiAKMDAwMDY5MTc4MiAwMDAwMCBuIAowMDAwNjkxODAyIDAwMDAwIG4gCjAwMDA2OTI5NzIgMDAwMDAgbiAKMDAwMDY5Mjk5MiAwMDAwMCBuIAowMDAwNjkzOTEyIDAwMDAwIG4gCjAwMDA2OTM5MzIgMDAwMDAgbiAKMDAwMDY5NTEwNSAwMDAwMCBuIAowMDAwNjk1MTI2IDAwMDAwIG4gCjAwMDA2OTYzNTcgMDAwMDAgbiAKMDAwMDY5NjM3NyAwMDAwMCBuIAowMDAwNjk3NDgzIDAwMDAwIG4gCjAwMDA2OTc1MDQgMDAwMDAgbiAKMDAwMDY5ODczOSAwMDAwMCBuIAowMDAwNjk4NzYwIDAwMDAwIG4gCjAwMDA2OTk5ODAgMDAwMDAgbiAKMDAwMDcwMDAwMSAwMDAwMCBuIAowMDAwNzAxNDU2IDAwMDAwIG4gCjAwMDA3MDE0NzYgMDAwMDAgbiAKMDAwMDcwMjY0NiAwMDAwMCBuIAowMDAwNzAyNjY2IDAwMDAwIG4gCjAwMDA3MDM4MTcgMDAwMDAgbiAKMDAwMDcwMzgzNyAwMDAwMCBuIAowMDAwNzA1MDA4IDAwMDAwIG4gCjAwMDA3MDUwMjkgMDAwMDAgbiAKMDAwMDcwNjIyNCAwMDAwMCBuIAowMDAwNzA2MjQ0IDAwMDAwIG4gCjAwMDA3MDcyNzUgMDAwMDAgbiAKMDAwMDcwNzI5NSAwMDAwMCBuIAowMDAwNzA4MzE4IDAwMDAwIG4gCjAwMDA3MDgzMzkgMDAwMDAgbiAKMDAwMDcwOTM1NSAwMDAwMCBuIAowMDAwNzA5Mzc2IDAwMDAwIG4gCjAwMDA3MTA1OTEgMDAwMDAgbiAKMDAwMDcxMDYxMiAwMDAwMCBuIAowMDAwNzExNzg3IDAwMDAwIG4gCjAwMDA3MTE4MDggMDAwMDAgbiAKMDAwMDcxMzA2MiAwMDAwMCBuIAowMDAwNzEzMDgyIDAwMDAwIG4gCjAwMDA3MTQyNzMgMDAwMDAgbiAKMDAwMDcxNDI5MyAwMDAwMCBuIAowMDAwNzE1NTEyIDAwMDAwIG4gCjAwMDA3MTU1MzMgMDAwMDAgbiAKMDAwMDcxNjczOCAwMDAwMCBuIAowMDAwNzE2NzU4IDAwMDAwIG4gCjAwMDA3MTc3ODEgMDAwMDAgbiAKMDAwMDcxNzgwMiAwMDAwMCBuIAowMDAwNzE4OTkxIDAwMDAwIG4gCjAwMDA3MTkwMTIgMDAwMDAgbiAKMDAwMDcyMDI3MSAwMDAwMCBuIAowMDAwNzIwMjkyIDAwMDAwIG4gCjAwMDA3MjE0NjggMDAwMDAgbiAKMDAwMDcyMTQ4OSAwMDAwMCBuIAowMDAwNzIyNjU4IDAwMDAwIG4gCjAwMDA3MjI2NzkgMDAwMDAgbiAKMDAwMDcyMzkzMiAwMDAwMCBuIAowMDAwNzI0OTIzIDAwMDAwIG4gCjAwMDA3MjU5MTQgMDAwMDAgbiAKMDAwMDcyNjkzMCAwMDAwMCBuIAowMDAwNzI3OTIxIDAwMDAwIG4gCjAwMDA3Mjg4NjIgMDAwMDAgbiAKMDAwMDcyOTg3OCAwMDAwMCBuIAowMDAwNzMwODE5IDAwMDAwIG4gCjAwMDA3MzE4MTAgMDAwMDAgbiAKMDAwMDczMjgyNiAwMDAwMCBuIAowMDAwNzMzNzY3IDAwMDAwIG4gCjAwMDA3MzQ3MDggMDAwMDAgbiAKMDAwMDczNTcyNCAwMDAwMCBuIAowMDAwNzM2NjY1IDAwMDAwIG4gCjAwMDA3Mzc2ODEgMDAwMDAgbiAKMDAwMDczODYyMiAwMDAwMCBuIAowMDAwNzM5NTYzIDAwMDAwIG4gCjAwMDA3NDA1NTQgMDAwMDAgbiAKMDAwMDc0MTU0NSAwMDAwMCBuIAowMDAwNzQyNTYxIDAwMDAwIG4gCjAwMDA3NDM1NzcgMDAwMDAgbiAKMDAwMDc0NDU5MyAwMDAwMCBuIAowMDAwNzQ1NjA5IDAwMDAwIG4gCjAwMDA3NDY2MjUgMDAwMDAgbiAKMDAwMDc0NzYxNiAwMDAwMCBuIAowMDAwNzQ4NjA3IDAwMDAwIG4gCjAwMDA3NDk1OTggMDAwMDAgbiAKMDAwMDc1MDUzOSAwMDAwMCBuIAowMDAwNzUxNTMwIDAwMDAwIG4gCjAwMDA3NTI1MjEgMDAwMDAgbiAKMDAwMDc1MzUzNyAwMDAwMCBuIAowMDAwNzU0NDc4IDAwMDAwIG4gCjAwMDA3NTU0OTQgMDAwMDAgbiAKMDAwMDc1NjQ4NSAwMDAwMCBuIAowMDAwNzU3NTAxIDAwMDAwIG4gCjAwMDA3NTg0NDIgMDAwMDAgbiAKMDAwMDc1OTM4MyAwMDAwMCBuIAowMDAwNzYwMzk5IDAwMDAwIG4gCjAwMDA3NjEzOTAgMDAwMDAgbiAKMDAwMDc2MjM4MSAwMDAwMCBuIAowMDAwNzYzMzk3IDAwMDAwIG4gCjAwMDA3NjQzMzggMDAwMDAgbiAKMDAwMDc2NTI3OSAwMDAwMCBuIAowMDAwNzY2MjcwIDAwMDAwIG4gCjAwMDA3NjcyODYgMDAwMDAgbiAKMDAwMDc2ODMwMiAwMDAwMCBuIAowMDAwNzY5MzE4IDAwMDAwIG4gCjAwMDA3NzAyNTkgMDAwMDAgbiAKMDAwMDc3MTI1MCAwMDAwMCBuIAowMDAwNzcyMjQxIDAwMDAwIG4gCjAwMDA3NzMxODIgMDAwMDAgbiAKMDAwMDc3NDEyMyAwMDAwMCBuIAowMDAwNzc1MDY0IDAwMDAwIG4gCjAwMDA3NzYwNTUgMDAwMDAgbiAKMDAwMDc3Njk5NiAwMDAwMCBuIAowMDAwNzc4MDEyIDAwMDAwIG4gCjAwMDA3Nzg5NTMgMDAwMDAgbiAKMDAwMDc3OTk2OSAwMDAwMCBuIAowMDAwNzgwOTYwIDAwMDAwIG4gCjAwMDA3ODE5MDEgMDAwMDAgbiAKMDAwMDc4MjkxNyAwMDAwMCBuIAowMDAwNzgzODU4IDAwMDAwIG4gCjAwMDA3ODQ4NDkgMDAwMDAgbiAKMDAwMDc4NTg0MCAwMDAwMCBuIAowMDAwNzg2ODMxIDAwMDAwIG4gCjAwMDA3ODc4NDcgMDAwMDAgbiAKMDAwMDc4ODc4OCAwMDAwMCBuIAowMDAwNzg5Nzc5IDAwMDAwIG4gCjAwMDA3OTA3MjAgMDAwMDAgbiAKMDAwMDc5MTY2MSAwMDAwMCBuIAowMDAwNzkyNjc3IDAwMDAwIG4gCjAwMDA3OTM2NjggMDAwMDAgbiAKMDAwMDc5NDY1OSAwMDAwMCBuIAowMDAwNzk1NjAwIDAwMDAwIG4gCjAwMDA3OTY2MTYgMDAwMDAgbiAKMDAwMDc5NzYzMiAwMDAwMCBuIAowMDAwNzk4NjQ4IDAwMDAwIG4gCjAwMDA3OTk2NjQgMDAwMDAgbiAKMDAwMDgwMDYwNSAwMDAwMCBuIAowMDAwODAxNTQ2IDAwMDAwIG4gCjAwMDA4MDI1MzcgMDAwMDAgbiAKMDAwMDgwMzUyOCAwMDAwMCBuIAowMDAwODAzNTQ5IDAwMDAwIG4gCjAwMDA4MTM0NzQgMDAwMDAgbiAKMDAwMDgxMzQ5NSAwMDAwMCBuIAowMDAwODEzNTE2IDAwMDAwIG4gCjAwMDA4MTM1MzcgMDAwMDAgbiAKMDAwMDgxMzU1OSAwMDAwMCBuIAowMDAwODEzNTgwIDAwMDAwIG4gCjAwMDA4MTM2MDEgMDAwMDAgbiAKMDAwMDgxMzYyMiAwMDAwMCBuIAowMDAwODEzNjQzIDAwMDAwIG4gCjAwMDA4MTM2NjUgMDAwMDAgbiAKMDAwMDgxMzY4NiAwMDAwMCBuIAowMDAwODEzNzA3IDAwMDAwIG4gCjAwMDA4MTM3MjggMDAwMDAgbiAKMDAwMDgxMzc0OSAwMDAwMCBuIAowMDAwODEzNzcxIDAwMDAwIG4gCjAwMDA4MTM3OTIgMDAwMDAgbiAKMDAwMDgxMzgxMyAwMDAwMCBuIAowMDAwODEzODM1IDAwMDAwIG4gCjAwMDA4MTM4NTYgMDAwMDAgbiAKMDAwMDgxMzg3NyAwMDAwMCBuIAowMDAwODEzODk4IDAwMDAwIG4gCjAwMDA4MTM5MjAgMDAwMDAgbiAKMDAwMDgxMzk0MSAwMDAwMCBuIAowMDAwODEzOTYzIDAwMDAwIG4gCjAwMDA4MTM5ODQgMDAwMDAgbiAKMDAwMDgxNDAwNSAwMDAwMCBuIAowMDAwODE0MDI3IDAwMDAwIG4gCjAwMDA4MTQwNDggMDAwMDAgbiAKMDAwMDgxNDA3MCAwMDAwMCBuIAowMDAwODE0MDkxIDAwMDAwIG4gCjAwMDA4MTQxMTIgMDAwMDAgbiAKMDAwMDgxNDEzMyAwMDAwMCBuIAowMDAwODE0MTU0IDAwMDAwIG4gCjAwMDA4MTQxNzUgMDAwMDAgbiAKMDAwMDgxNDE5NiAwMDAwMCBuIAowMDAwODE0MjE3IDAwMDAwIG4gCjAwMDA4MTQyMzggMDAwMDAgbiAKMDAwMDgxNDI2MCAwMDAwMCBuIAowMDAwODE0MjgxIDAwMDAwIG4gCjAwMDA4MTQzMDMgMDAwMDAgbiAKMDAwMDgxNDMyNCAwMDAwMCBuIAowMDAwODE0MzQ1IDAwMDAwIG4gCjAwMDA4MTQzNjYgMDAwMDAgbiAKMDAwMDgxNDM4NyAwMDAwMCBuIAowMDAwODE0NDA5IDAwMDAwIG4gCjAwMDA4MTQ0MzAgMDAwMDAgbiAKMDAwMDgxNDQ1MSAwMDAwMCBuIAowMDAwODE0NDcyIDAwMDAwIG4gCjAwMDA4MTQ0OTMgMDAwMDAgbiAKMDAwMDgxNDUxNCAwMDAwMCBuIAowMDAwODE0NTM2IDAwMDAwIG4gCjAwMDA4MTQ1NTcgMDAwMDAgbiAKMDAwMDgxNDU3OSAwMDAwMCBuIAowMDAwODE0NjAwIDAwMDAwIG4gCjAwMDA4MTQ2MjEgMDAwMDAgbiAKMDAwMDgxNDY0MiAwMDAwMCBuIAowMDAwODE0NjY0IDAwMDAwIG4gCjAwMDA4MTQ2ODUgMDAwMDAgbiAKMDAwMDgxNDcwNyAwMDAwMCBuIAowMDAwODE0NzI5IDAwMDAwIG4gCjAwMDA4MTQ3NTEgMDAwMDAgbiAKMDAwMDgxNDc3MiAwMDAwMCBuIAowMDAwODE0NzkzIDAwMDAwIG4gCjAwMDA4MTQ4MTQgMDAwMDAgbiAKMDAwMDgxNDgzNiAwMDAwMCBuIAowMDAwODE0ODU3IDAwMDAwIG4gCjAwMDA4MTQ4NzggMDAwMDAgbiAKMDAwMDgxNDg5OSAwMDAwMCBuIAowMDAwODE0OTIxIDAwMDAwIG4gCjAwMDA4MTQ5NDIgMDAwMDAgbiAKMDAwMDgxNDk2NCAwMDAwMCBuIAowMDAwODE0OTg1IDAwMDAwIG4gCjAwMDA4MTUwMDcgMDAwMDAgbiAKMDAwMDgxNTAyOSAwMDAwMCBuIAowMDAwODE1MDUwIDAwMDAwIG4gCjAwMDA4MTUwNzEgMDAwMDAgbiAKMDAwMDgxNTA5MyAwMDAwMCBuIAowMDAwODE1MTE0IDAwMDAwIG4gCjAwMDA4MTUxMzUgMDAwMDAgbiAKMDAwMDgxNTE1NyAwMDAwMCBuIAowMDAwODE1MTc4IDAwMDAwIG4gCjAwMDA4MTUxOTkgMDAwMDAgbiAKMDAwMDgxNTIyMCAwMDAwMCBuIAowMDAwODE1MjQxIDAwMDAwIG4gCjAwMDA4MTUyNjIgMDAwMDAgbiAKMDAwMDgxNTI4MyAwMDAwMCBuIAowMDAwODE1MzA0IDAwMDAwIG4gCjAwMDA4MTUzMjUgMDAwMDAgbiAKMDAwMDgxNTM0NiAwMDAwMCBuIAowMDAwODE1MzY3IDAwMDAwIG4gCjAwMDA4MTUzODggMDAwMDAgbiAKMDAwMDgxNTQwOSAwMDAwMCBuIAowMDAwODE1NDMwIDAwMDAwIG4gCjAwMDA4MTU0NTEgMDAwMDAgbiAKMDAwMDgxNTQ3MiAwMDAwMCBuIAowMDAwODE1NDkzIDAwMDAwIG4gCjAwMDA4MTU1MTQgMDAwMDAgbiAKMDAwMDgxNTUzNSAwMDAwMCBuIAowMDAwODE1NTU2IDAwMDAwIG4gCjAwMDA4MTU1NzcgMDAwMDAgbiAKMDAwMDgxNTU5OCAwMDAwMCBuIAowMDAwODE1NjE5IDAwMDAwIG4gCjAwMDA4MTU2NDAgMDAwMDAgbiAKMDAwMDgxNTY2MSAwMDAwMCBuIAowMDAwODE1NjgyIDAwMDAwIG4gCjAwMDA4MTU3MDMgMDAwMDAgbiAKMDAwMDgxNTcyNCAwMDAwMCBuIAowMDAwODE1NzQ1IDAwMDAwIG4gCjAwMDA4MTU3NjYgMDAwMDAgbiAKMDAwMDgxNTc4NyAwMDAwMCBuIAowMDAwODE1ODA4IDAwMDAwIG4gCjAwMDA4MTU4MjkgMDAwMDAgbiAKMDAwMDgxNTg1MCAwMDAwMCBuIAowMDAwODE1ODcxIDAwMDAwIG4gCjAwMDA4MTU4OTIgMDAwMDAgbiAKMDAwMDgxNTkxMyAwMDAwMCBuIAowMDAwODE1OTM0IDAwMDAwIG4gCjAwMDA4MTU5NTUgMDAwMDAgbiAKMDAwMDgxNTk3NiAwMDAwMCBuIAowMDAwODE1OTk3IDAwMDAwIG4gCjAwMDA4MTYwMTggMDAwMDAgbiAKMDAwMDgxNjAzOSAwMDAwMCBuIAowMDAwODE2MDYwIDAwMDAwIG4gCjAwMDA4MTYwODEgMDAwMDAgbiAKMDAwMDgxNjEwMiAwMDAwMCBuIAowMDAwODE2MTIzIDAwMDAwIG4gCjAwMDA4MTYxNDQgMDAwMDAgbiAKMDAwMDgxNjE2NSAwMDAwMCBuIAowMDAwODE2MTg2IDAwMDAwIG4gCjAwMDA4MTYyMDcgMDAwMDAgbiAKMDAwMDgxNjIyOCAwMDAwMCBuIAowMDAwODE2MjQ5IDAwMDAwIG4gCjAwMDA4MTYyNzAgMDAwMDAgbiAKMDAwMDgxNjI5MSAwMDAwMCBuIAowMDAwODE2MzEyIDAwMDAwIG4gCjAwMDA4MTYzMzMgMDAwMDAgbiAKMDAwMDgxNjM1NCAwMDAwMCBuIAowMDAwODE2Mzc1IDAwMDAwIG4gCjAwMDA4MTYzOTYgMDAwMDAgbiAKMDAwMDgxNjQxNyAwMDAwMCBuIAowMDAwODE2NDM4IDAwMDAwIG4gCjAwMDA4MTY0NTkgMDAwMDAgbiAKMDAwMDgxNjQ4MCAwMDAwMCBuIAowMDAwODE2NTAxIDAwMDAwIG4gCjAwMDA4MTY1MjIgMDAwMDAgbiAKMDAwMDgxNjU0MyAwMDAwMCBuIAowMDAwODE2NTY0IDAwMDAwIG4gCjAwMDA4MTY1ODUgMDAwMDAgbiAKMDAwMDgxNjYwNiAwMDAwMCBuIAowMDAwODE2NjI3IDAwMDAwIG4gCjAwMDA4MTY2NDggMDAwMDAgbiAKMDAwMDgxNjY2OSAwMDAwMCBuIAowMDAwODE2NjkwIDAwMDAwIG4gCjAwMDA4MTY3MTEgMDAwMDAgbiAKMDAwMDgxNjczMiAwMDAwMCBuIAowMDAwODE2NzUzIDAwMDAwIG4gCjAwMDA4MTY3NzQgMDAwMDAgbiAKMDAwMDgxNjc5NSAwMDAwMCBuIAowMDAwODE2ODE2IDAwMDAwIG4gCjAwMDA4MTY4MzcgMDAwMDAgbiAKMDAwMDgxNjg1OCAwMDAwMCBuIAowMDAwODIxNDcwIDAwMDAwIG4gCjAwMDA4MjEzNTggMDAwMDAgbiAKMDAwMDgxNzAxMyAwMDAwMCBuIAowMDAwODc4NTQ2IDAwMDAwIG4gCjAwMDA4MjYyOTMgMDAwMDAgbiAKMDAwMDgyMTU2MyAwMDAwMCBuIAowMDAwOTk1Nzk0IDAwMDAwIG4gCjAwMDA4Mzc1NTQgMDAwMDAgbiAKMDAwMDgzNzc3OCAwMDAwMCBuIAowMDAwODM3ODE1IDAwMDAwIG4gCjAwMDA4Mzc4NzIgMDAwMDAgbiAKMDAwMDgzNzkyOCAwMDAwMCBuIAowMDAwODM4MDk2IDAwMDAwIG4gCjAwMDA4Mzg3MjIgMDAwMDAgbiAKMDAwMDgzOTE0OCAwMDAwMCBuIAowMDAwODM5NDY1IDAwMDAwIG4gCjAwMDA4Mzk3ODIgMDAwMDAgbiAKMDAwMDg0MDA5OSAwMDAwMCBuIAowMDAwODQwNDE1IDAwMDAwIG4gCjAwMDA4NDA3MzIgMDAwMDAgbiAKMDAwMDg0MTA0OSAwMDAwMCBuIAowMDAwODQxMzY2IDAwMDAwIG4gCjAwMDA4NDE2ODIgMDAwMDAgbiAKMDAwMDg0MTk5OSAwMDAwMCBuIAowMDAwODQyMzE2IDAwMDAwIG4gCjAwMDA4NDI2MzMgMDAwMDAgbiAKMDAwMDg0Mjk1MCAwMDAwMCBuIAowMDAwODQzMjY3IDAwMDAwIG4gCjAwMDA4NDM1ODQgMDAwMDAgbiAKMDAwMDg0MzkwMSAwMDAwMCBuIAowMDAwODQ0MjE4IDAwMDAwIG4gCjAwMDA4NDQ1MzMgMDAwMDAgbiAKMDAwMDg0NDg0OSAwMDAwMCBuIAowMDAwODQ1MTY2IDAwMDAwIG4gCjAwMDA4NDU0ODMgMDAwMDAgbiAKMDAwMDg0NTgwMCAwMDAwMCBuIAowMDAwODQ2MTE3IDAwMDAwIG4gCjAwMDA4NDY0MzQgMDAwMDAgbiAKMDAwMDg0Njc1MSAwMDAwMCBuIAowMDAwODQ3MDY4IDAwMDAwIG4gCjAwMDA4NDczODUgMDAwMDAgbiAKMDAwMDg0NzcwMiAwMDAwMCBuIAowMDAwODQ4MDE5IDAwMDAwIG4gCjAwMDA4NDgzMzYgMDAwMDAgbiAKMDAwMDg0ODY1MyAwMDAwMCBuIAowMDAwODQ4OTcwIDAwMDAwIG4gCjAwMDA4NDkyODcgMDAwMDAgbiAKMDAwMDg0OTYwNCAwMDAwMCBuIAowMDAwODQ5OTE5IDAwMDAwIG4gCjAwMDA4NTAyMzYgMDAwMDAgbiAKMDAwMDg1MDU1MyAwMDAwMCBuIAowMDAwODUwODcwIDAwMDAwIG4gCjAwMDA4NTExODcgMDAwMDAgbiAKMDAwMDg1MTUwMyAwMDAwMCBuIAowMDAwODUxODIwIDAwMDAwIG4gCjAwMDA4NTIxMzcgMDAwMDAgbiAKMDAwMDg1MjQ1NCAwMDAwMCBuIAowMDAwODUyNzY5IDAwMDAwIG4gCjAwMDA4NTMwODYgMDAwMDAgbiAKMDAwMDg1MzQwMyAwMDAwMCBuIAowMDAwODUzNzIwIDAwMDAwIG4gCjAwMDA4NTQwMzcgMDAwMDAgbiAKMDAwMDg1NDM1NCAwMDAwMCBuIAowMDAwODU0NjcxIDAwMDAwIG4gCjAwMDA4NTQ5ODggMDAwMDAgbiAKMDAwMDg1NTAxMCAwMDAwMCBuIAowMDAwODU1OTA2IDAwMDAwIG4gCjAwMDA4NTYxMzAgMDAwMDAgbiAKMDAwMDg1NjMzOCAwMDAwMCBuIAowMDAwODU2NjIyIDAwMDAwIG4gCjAwMDA4NTY2NDMgMDAwMDAgbiAKMDAwMDg1Njg4NSAwMDAwMCBuIAowMDAwODU2OTA2IDAwMDAwIG4gCjAwMDA4NTcxNDggMDAwMDAgbiAKMDAwMDg1NzE2OCAwMDAwMCBuIAowMDAwODU3MjU2IDAwMDAwIG4gCjAwMDA4NTcyNzYgMDAwMDAgbiAKMDAwMDg1NzM2NCAwMDAwMCBuIAowMDAwODU3Mzg0IDAwMDAwIG4gCjAwMDA4NTc0NzIgMDAwMDAgbiAKMDAwMDg1NzQ5MiAwMDAwMCBuIAowMDAwODU3NTgwIDAwMDAwIG4gCjAwMDA4NTc2MDAgMDAwMDAgbiAKMDAwMDg1NzY4OCAwMDAwMCBuIAowMDAwODU3NzA4IDAwMDAwIG4gCjAwMDA4NTc3OTYgMDAwMDAgbiAKMDAwMDg1NzgxNiAwMDAwMCBuIAowMDAwODU3OTA0IDAwMDAwIG4gCjAwMDA4NTc5MjQgMDAwMDAgbiAKMDAwMDg1ODAxMiAwMDAwMCBuIAowMDAwODU4MDMyIDAwMDAwIG4gCjAwMDA4NTgxMjAgMDAwMDAgbiAKMDAwMDg1ODE0MCAwMDAwMCBuIAowMDAwODU4MjI4IDAwMDAwIG4gCjAwMDA4NTgyNDggMDAwMDAgbiAKMDAwMDg1ODMzNiAwMDAwMCBuIAowMDAwODU4MzU2IDAwMDAwIG4gCjAwMDA4NTg0NDQgMDAwMDAgbiAKMDAwMDg1ODQ2NCAwMDAwMCBuIAowMDAwODU4NTUyIDAwMDAwIG4gCjAwMDA4NTg1NzIgMDAwMDAgbiAKMDAwMDg1ODY2MCAwMDAwMCBuIAowMDAwODU4NjgwIDAwMDAwIG4gCjAwMDA4NTg3NjggMDAwMDAgbiAKMDAwMDg1ODc4OCAwMDAwMCBuIAowMDAwODU4ODc2IDAwMDAwIG4gCjAwMDA4NTg4OTYgMDAwMDAgbiAKMDAwMDg1ODk4NCAwMDAwMCBuIAowMDAwODU5MDA0IDAwMDAwIG4gCjAwMDA4NTkwOTIgMDAwMDAgbiAKMDAwMDg1OTExMiAwMDAwMCBuIAowMDAwODU5MjAwIDAwMDAwIG4gCjAwMDA4NTkyMjAgMDAwMDAgbiAKMDAwMDg1OTMwOCAwMDAwMCBuIAowMDAwODU5MzI4IDAwMDAwIG4gCjAwMDA4NTk0MTYgMDAwMDAgbiAKMDAwMDg1OTQzNiAwMDAwMCBuIAowMDAwODU5NTI0IDAwMDAwIG4gCjAwMDA4NTk1NDQgMDAwMDAgbiAKMDAwMDg1OTYzMiAwMDAwMCBuIAowMDAwODU5NjUyIDAwMDAwIG4gCjAwMDA4NTk3NDAgMDAwMDAgbiAKMDAwMDg1OTc2MCAwMDAwMCBuIAowMDAwODU5ODQ4IDAwMDAwIG4gCjAwMDA4NTk4NjggMDAwMDAgbiAKMDAwMDg1OTk1NiAwMDAwMCBuIAowMDAwODU5OTc2IDAwMDAwIG4gCjAwMDA4NjAwNjQgMDAwMDAgbiAKMDAwMDg2MDA4NCAwMDAwMCBuIAowMDAwODYwMTcyIDAwMDAwIG4gCjAwMDA4NjAxOTIgMDAwMDAgbiAKMDAwMDg2MDI4MCAwMDAwMCBuIAowMDAwODYwMzAwIDAwMDAwIG4gCjAwMDA4NjAzODggMDAwMDAgbiAKMDAwMDg2MDQwOCAwMDAwMCBuIAowMDAwODYwNDk2IDAwMDAwIG4gCjAwMDA4NjA1MTYgMDAwMDAgbiAKMDAwMDg2MDYwNCAwMDAwMCBuIAowMDAwODYwNjI0IDAwMDAwIG4gCjAwMDA4NjA3MTIgMDAwMDAgbiAKMDAwMDg2MDczMiAwMDAwMCBuIAowMDAwODYwODIwIDAwMDAwIG4gCjAwMDA4NjA4NDAgMDAwMDAgbiAKMDAwMDg2MDkyOCAwMDAwMCBuIAowMDAwODYwOTQ4IDAwMDAwIG4gCjAwMDA4NjEwMzYgMDAwMDAgbiAKMDAwMDg2MTA1NiAwMDAwMCBuIAowMDAwODYxMTQ0IDAwMDAwIG4gCjAwMDA4NjExNjQgMDAwMDAgbiAKMDAwMDg2MTI1MiAwMDAwMCBuIAowMDAwODYxMjcyIDAwMDAwIG4gCjAwMDA4NjEzNjAgMDAwMDAgbiAKMDAwMDg2MTM4MCAwMDAwMCBuIAowMDAwODYxNDY4IDAwMDAwIG4gCjAwMDA4NjE0ODggMDAwMDAgbiAKMDAwMDg2MTU3NiAwMDAwMCBuIAowMDAwODYxNTk2IDAwMDAwIG4gCjAwMDA4NjE2ODQgMDAwMDAgbiAKMDAwMDg2MTcwNCAwMDAwMCBuIAowMDAwODYxNzkyIDAwMDAwIG4gCjAwMDA4NjE4MTIgMDAwMDAgbiAKMDAwMDg2MTkwMCAwMDAwMCBuIAowMDAwODYxOTIwIDAwMDAwIG4gCjAwMDA4NjIwMDggMDAwMDAgbiAKMDAwMDg2MjAyOCAwMDAwMCBuIAowMDAwODYyMTE2IDAwMDAwIG4gCjAwMDA4NjIxMzYgMDAwMDAgbiAKMDAwMDg2MjIyNCAwMDAwMCBuIAowMDAwODYyMjQ0IDAwMDAwIG4gCjAwMDA4NjIzMzIgMDAwMDAgbiAKMDAwMDg2MjM1MiAwMDAwMCBuIAowMDAwODYyNDQwIDAwMDAwIG4gCjAwMDA4NjI0NjAgMDAwMDAgbiAKMDAwMDg2MjU0OCAwMDAwMCBuIAowMDAwODYyNTY5IDAwMDAwIG4gCjAwMDA4Nzg0NjIgMDAwMDAgbiAKMDAwMDg3ODQ4MyAwMDAwMCBuIAowMDAwODc4NTAzIDAwMDAwIG4gCjAwMDA4Nzg1MjMgMDAwMDAgbiAKMDAwMDg4MTc4NiAwMDAwMCBuIAowMDAwODgxNjc0IDAwMDAwIG4gCjAwMDA4Nzg2NjcgMDAwMDAgbiAKMDAwMDg4NDk2NyAwMDAwMCBuIAowMDAwODg0ODg5IDAwMDAwIG4gCjAwMDA4ODg2OTIgMDAwMDAgbiAKMDAwMDg4ODU0NSAwMDAwMCBuIAowMDAwODk0NzAzIDAwMDAwIG4gCjAwMDA4OTQ0MzUgMDAwMDAgbiAKMDAwMDg5NjY5MyAwMDAwMCBuIAowMDAwODk2NjY4IDAwMDAwIG4gCjAwMDA4OTY3ODYgMDAwMDAgbiAKMDAwMDkwNzIyOSAwMDAwMCBuIAowMDAwOTIyMzYyIDAwMDAwIG4gCjAwMDA5MzI5MDYgMDAwMDAgbiAKMDAwMDkzNzA0MyAwMDAwMCBuIAowMDAwOTM2OTYwIDAwMDAwIG4gCjAwMDA5NDg2MTYgMDAwMDAgbiAKMDAwMDk0ODI4NiAwMDAwMCBuIAowMDAwOTUxNDQ3IDAwMDAwIG4gCjAwMDA5NTEyMTMgMDAwMDAgbiAKMDAwMDk1MzM0NSAwMDAwMCBuIAowMDAwOTUzMzIxIDAwMDAwIG4gCjAwMDA5NTYxMDcgMDAwMDAgbiAKMDAwMDk1NjA2MyAwMDAwMCBuIAowMDAwOTU4MTEyIDAwMDAwIG4gCjAwMDA5NTgwNjIgMDAwMDAgbiAKMDAwMDk3OTEzMiAwMDAwMCBuIAowMDAwOTk1MjcxIDAwMDAwIG4gCjAwMDA5OTU4NzkgMDAwMDAgbiAKMDAwMDk5NTk1NiAwMDAwMCBuIAowMDAwOTk2MDA5IDAwMDAwIG4gCnRyYWlsZXIKPDwKL1NpemUgOTk3Ci9Sb290IDk5NSAwIFIKL0luZm8gOTk2IDAgUgovSUQgWzwxMTBERDYxRkQ1NzQ0NDAxMEIxQUI1RkYzODc4MkYwRj4gPDExMERENjFGRDU3NDQ0MDEwQjFBQjVGRjM4NzgyRjBGPl0KPj4Kc3RhcnR4cmVmCjk5NjIxMwolJUVPRgo="; + } + + private void OnDocumentLoaded(PdfViewerEventArgs args) + => eventLog = $"Last event: OnDocumentLoaded, CurrentPage: {args.CurrentPage}, TotalPages: {args.TotalPages}"; + + private void OnPageChanged(PdfViewerEventArgs args) + => eventLog = $"Last event: OnPageChanged, CurrentPage: {args.CurrentPage}, TotalPages: {args.TotalPages}"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Placeholders/PlaceholderDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Placeholders/PlaceholderDocumentation.razor new file mode 100644 index 000000000..895f57f62 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Placeholders/PlaceholderDocumentation.razor @@ -0,0 +1,43 @@ +@page "/placeholders" + +@title + + + +

Blazor Placeholders

+
+ Use Blazor Bootstrap loading placeholders for your components or pages to indicate something may still be loading. +
+ + + + +
+ Placeholders can be used to enhance the experience of your application. +
+ + + + + +
You can change the width through PlaceholderWidth, width utilities, or inline styles.
+ + + +
By default, the placeholder uses currentColor. This can be overridden with the Color property of type enum.
+ + + +
The size of placeholders are based on the typographic style of the parent element. Customize them with Size property of type enum.
+ + + +
Animate placeholders with PlaceholderAnimation.Glow or PlaceholderAnimation.Wave to better convey the perception of something being actively loaded.
+ + +@code { + private string pageUrl = "/placeholders"; + private string title = "Blazor Placeholder Component"; + private string description = "Use Blazor Bootstrap loading placeholders for your components or pages to indicate something may still be loading."; + private string imageUrl = "https://i.imgur.com/JcLisSd.png"; +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Placeholders/Placeholder_Demo_01_Examples.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Placeholders/Placeholder_Demo_01_Examples.razor new file mode 100644 index 000000000..544945772 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Placeholders/Placeholder_Demo_01_Examples.razor @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Placeholders/Placeholder_Demo_02_Width.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Placeholders/Placeholder_Demo_02_Width.razor new file mode 100644 index 000000000..d908ac3e2 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Placeholders/Placeholder_Demo_02_Width.razor @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Placeholders/Placeholder_Demo_03_Color.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Placeholders/Placeholder_Demo_03_Color.razor new file mode 100644 index 000000000..6e4fe54b4 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Placeholders/Placeholder_Demo_03_Color.razor @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Placeholders/Placeholder_Demo_04_Sizing.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Placeholders/Placeholder_Demo_04_Sizing.razor new file mode 100644 index 000000000..96f526a01 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Placeholders/Placeholder_Demo_04_Sizing.razor @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Placeholders/Placeholder_Demo_05_Animation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Placeholders/Placeholder_Demo_05_Animation.razor new file mode 100644 index 000000000..bb5c8c6c4 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Placeholders/Placeholder_Demo_05_Animation.razor @@ -0,0 +1,16 @@ + + + + + + + +
+
+ + + + + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Preload/PreloadDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Preload/PreloadDocumentation.razor new file mode 100644 index 000000000..e5c70fded --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Preload/PreloadDocumentation.razor @@ -0,0 +1,58 @@ +@page "/preload" + +@title + + + +

Blazor Preload

+
Indicate the loading state of a page with Blazor Bootstrap preload component.
+ + + + +
+
    +
  • Add the Preload component to your current page or your layout page.
  • +
  • Inject PreloadService.
  • +
  • Call preloadService.Show() before you make any call to the API.
  • +
  • Call preloadService.Hide() after you get the response from the API.
  • +
+
+ + +
1. Add the Preload component in MainLayout.razor page as shown below.
+ +
2. Inject PreloadService, then call the Show() and Hide() methods before and after the Service/API, respectively, as shown below.
+ + + +
+ + + +
+ Change the default spinner color by passing the SpinnerColor enum to the Show(...) method. + In the below example, we are using a global preload service, as shown in the above section. +
+ + +@code { + private string pageUrl = "/preload"; + private string title = "Blazor Preload Component"; + private string description = "Indicate the loading state of a page with Blazor Bootstrap preload component."; + private string imageUrl = "https://i.imgur.com/2cPuqFa.png"; + + [Inject] PreloadService PreloadService { get; set; } = default!; + + protected override void OnInitialized() + { + base.OnInitialized(); + + Task.Run(async () => + { + PreloadService.Show(); + await Task.Delay(3000); + PreloadService.Hide(); + }); + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Preload/Preload_Demo_01_Global_Preload_For_Application_A.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Preload/Preload_Demo_01_Global_Preload_For_Application_A.razor new file mode 100644 index 000000000..e7d3aee6e --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Preload/Preload_Demo_01_Global_Preload_For_Application_A.razor @@ -0,0 +1,9 @@ +@using BlazorBootstrap +. +. + +... MainLayout.razor code goes here ... + +. +. + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Preload/Preload_Demo_01_Global_Preload_For_Application_B.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Preload/Preload_Demo_01_Global_Preload_For_Application_B.razor new file mode 100644 index 000000000..918e12236 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Preload/Preload_Demo_01_Global_Preload_For_Application_B.razor @@ -0,0 +1,22 @@ +@code { + + [Inject] protected PreloadService PreloadService { get; set; } = default!; + + private void GetEmployees() + { + try + { + PreloadService.Show(); + + // call the service/api to get the employees + } + catch + { + // handle exception + } + finally + { + PreloadService.Hide(); + } + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Preload/Preload_Demo_02_Loading_Text.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Preload/Preload_Demo_02_Loading_Text.razor new file mode 100644 index 000000000..2306f5fdb --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Preload/Preload_Demo_02_Loading_Text.razor @@ -0,0 +1,20 @@ + + + +@code { + [Inject] protected PreloadService PreloadService { get; set; } = default!; + + private async Task ShowLoadingDataAsync() + { + PreloadService.Show(SpinnerColor.Light, "Loading data..."); + await Task.Delay(3000); // call the service/api + PreloadService.Hide(); + } + + private async Task ShowSavingDataAsync() + { + PreloadService.Show(SpinnerColor.Light, "Saving data..."); + await Task.Delay(3000); // call the service/api + PreloadService.Hide(); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Preload/Preload_Demo_03_Change_Spinner_Color.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Preload/Preload_Demo_03_Change_Spinner_Color.razor new file mode 100644 index 000000000..00847a130 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Preload/Preload_Demo_03_Change_Spinner_Color.razor @@ -0,0 +1,21 @@ + + + + + + + + + +@code { + [Inject] protected PreloadService PreloadService { get; set; } = default!; + + private async Task ShowSpinnerAsync(SpinnerColor spinnerColor) + { + PreloadService.Show(spinnerColor); + + await Task.Delay(3000); // call the service/api + + PreloadService.Hide(); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/ProgressDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/ProgressDocumentation.razor new file mode 100644 index 000000000..be31a0133 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/ProgressDocumentation.razor @@ -0,0 +1,55 @@ +@page "/progress" + +@title + + + +

Blazor Progress

+
Documentation and examples for using the Blazor Progress component featuring support for stacked bars, animated backgrounds, and text labels.
+ + + + + + + +
Add labels to your Blazor ProgressBar component using the Label parameter or by calling the SetLabel(...) method.
+ + + +
Use IncreaseWidth() or DecreaseWidth() methods to increase or decrease the Blazor ProgressBar width.
+ + + +
Set the height of the Blazor Progress by using the Height parameter. Height is measured in pixels.
+ + + +
Use the Color parameter or the SetColor(ProgressColor color) method to change the appearance of individual Blazor ProgressBar components.
+ + + +
You can dynamically set the Blazor ProgressBar color by calling the SetColor() method.
+ + + +
Include multiple Blazor ProgressBar components in a Blazor Progress component if needed.
+ + + +
Add Type="ProgressType.Striped" to any Blazor ProgressBar component to apply a stripe.
+ + + +
The stripes can also be animated. Add Type="ProgressType.StripedAndAnimated" to the Blazor ProgressBar component to animate the stripes right to the left.
+ + + + + +@code { + private string pageUrl = "/progress"; + private string title = "Blazor Progress Component"; + private string description = "Documentation and examples for using Blazor Bootstrap custom progress bars featuring support for stacked bars, animated backgrounds, and text labels."; + private string imageUrl = "https://i.imgur.com/MK142lQ.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_01_How_It_Works.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_01_How_It_Works.razor new file mode 100644 index 000000000..7753c6d96 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_01_How_It_Works.razor @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_02_Labels.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_02_Labels.razor new file mode 100644 index 000000000..f0bcbea50 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_02_Labels.razor @@ -0,0 +1,3 @@ + + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_03_Set_Width_Programmatically.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_03_Set_Width_Programmatically.razor new file mode 100644 index 000000000..e52dcc477 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_03_Set_Width_Programmatically.razor @@ -0,0 +1,29 @@ + + + + + + + + +@code { + ProgressBar progressBar = default!; + + private void IncreaseProgressBar() + { + progressBar.IncreaseWidth(10); + progressBar.SetLabel($"{progressBar.GetWidth()}%"); + } + + private void DecreaseProgressBar() + { + progressBar.DecreaseWidth(10); + progressBar.SetLabel($"{progressBar.GetWidth()}%"); + } + + private void ResetProgressBar() + { + progressBar.SetWidth(0); + progressBar.SetLabel($"{progressBar.GetWidth()}%"); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_04_Height.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_04_Height.razor new file mode 100644 index 000000000..e7d46505a --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_04_Height.razor @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_05_Backgrounds.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_05_Backgrounds.razor new file mode 100644 index 000000000..83bca8bf2 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_05_Backgrounds.razor @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_06_Set_Background_Programmatically.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_06_Set_Background_Programmatically.razor new file mode 100644 index 000000000..2e6be1194 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_06_Set_Background_Programmatically.razor @@ -0,0 +1,17 @@ + + + + + + + + + + + + + +@code { + ProgressBar progressBar = default!; + private void SetColor(ProgressColor color) => progressBar.SetColor(color); +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_07_MultipleBars.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_07_MultipleBars.razor new file mode 100644 index 000000000..6f183ad71 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_07_MultipleBars.razor @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_08_Striped.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_08_Striped.razor new file mode 100644 index 000000000..a25d9fd6e --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_08_Striped.razor @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_09_Animated_Stripes.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_09_Animated_Stripes.razor new file mode 100644 index 000000000..ec6c5bbd3 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_09_Animated_Stripes.razor @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_10_Dynamic_Progress.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_10_Dynamic_Progress.razor new file mode 100644 index 000000000..c2823319f --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Progress/Progress_Demo_10_Dynamic_Progress.razor @@ -0,0 +1,78 @@ +@using System.Globalization; + + + + + + + + +@code { + private double width = 10; + private string label = "10%"; + private ProgressType progressType = ProgressType.StripedAndAnimated; + private ProgressColor progressColor = ProgressColor.Secondary; + + private void IncreaseProgressBar() + { + if ((width + 10) > 100) + return; + + width += 10; + UpdateProgress(width); + } + + private void DecreaseProgressBar() + { + if ((width - 10) < 0) + return; + + width -= 10; + UpdateProgress(width); + } + + private void ResetProgressBar() + { + width = 0; + UpdateProgress(width); + } + + private void UpdateProgress(double w) + { + if(w == 100) + { + width = w; + label = $"{width.ToString(CultureInfo.InvariantCulture)}%"; + progressType = ProgressType.Striped; + progressColor = ProgressColor.Success; + } + else if (w > 66 && w < 100) + { + width = w; + label = $"{width.ToString(CultureInfo.InvariantCulture)}%"; + progressType = ProgressType.StripedAndAnimated; + progressColor = ProgressColor.Success; + } + else if (w <= 66 && w > 33) + { + width = w; + label = $"{width.ToString(CultureInfo.InvariantCulture)}%"; + progressType = ProgressType.StripedAndAnimated; + progressColor = ProgressColor.Warning; + } + else if (w <= 33 && w > 0) + { + width = w; + label = $"{width.ToString(CultureInfo.InvariantCulture)}%"; + progressType = ProgressType.StripedAndAnimated; + progressColor = ProgressColor.Secondary; + } + else if(w == 0) + { + width = w; + label = $"{width.ToString(CultureInfo.InvariantCulture)}%"; + progressType = ProgressType.Striped; + progressColor = ProgressColor.Danger; + } + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Ribbon/RibbonDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Ribbon/RibbonDocumentation.razor new file mode 100644 index 000000000..84ef80b8b --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Ribbon/RibbonDocumentation.razor @@ -0,0 +1,29 @@ +@page "/ribbon" + +@title + + + +

Blazor Ribbon

+
Documentation and examples for using the Blazor Bootstrap Ribbon component.
+ + + + +
In the following example, you will see a ribbon similar to the one found in Outlook.
+ + + +
In the following example, instead of icons like Bootstrap, Font Awesome, etc., we used PNG icons.
+ + + + NOTE: All the PNG icons used on this page are from Flaticon with a premium license only. + + +@code { + private string pageUrl = "/ribbon"; + private string title = "Blazor Ribbon Component"; + private string description = "Documentation and examples for using the Blazor Bootstrap Ribbon component."; + private string imageUrl = "https://i.imgur.com/LpZVLbF.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Ribbon/Ribbon_Demo_01_How_It_Works.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Ribbon/Ribbon_Demo_01_How_It_Works.razor new file mode 100644 index 000000000..9f1e82eb2 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Ribbon/Ribbon_Demo_01_How_It_Works.razor @@ -0,0 +1,59 @@ + + + + + + New
Email
+ +
+ + + + + +
+
+ + + + + Send/Receive
All Folders
+ Update
Folder
+
+ + + Show
Progress
+ Cancel
All
+
+
+
+ + + + + New
Folder
+ New
Search Folder
+
+ + + Rename
Folder
+ Copy
Folder
+ Move
Folder
+ Delete
Folder
+
+
+
+
+ +
+ Selected ribbon item: @selectedRibbonItem +
+ +@code { + string? selectedRibbonItem; + + private void OnRibbonItemClick(RibbonItemEventArgs args) + { + selectedRibbonItem = args.Name; + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Ribbon/Ribbon_Demo_02_Images.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Ribbon/Ribbon_Demo_02_Images.razor new file mode 100644 index 000000000..721305fe1 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Ribbon/Ribbon_Demo_02_Images.razor @@ -0,0 +1,59 @@ + + + + + + New
Email
+ +
+ + + + + +
+
+ + + + + Send/Receive
All Folders
+ Update
Folder
+
+ + + Show
Progress
+ Cancel
All
+
+
+
+ + + + + New
Folder
+ New
Search Folder
+
+ + + Rename
Folder
+ Copy
Folder
+ Move
Folder
+ Delete
Folder
+
+
+
+
+ +
+ Selected ribbon item: @selectedRibbonItem +
+ +@code { + string? selectedRibbonItem; + + private void OnRibbonItemClick(RibbonItemEventArgs args) + { + selectedRibbonItem = args.Name; + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/ScriptLoader/ScriptLoaderDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/ScriptLoader/ScriptLoaderDocumentation.razor new file mode 100644 index 000000000..46c1a3ff6 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/ScriptLoader/ScriptLoaderDocumentation.razor @@ -0,0 +1,59 @@ +@page "/script-loader" + +@title + + + +

Blazor Script Loader

+
+ Documentation and examples for using the Blazor Bootstrap Script Loader component. +
+ + + + +
+ In the following example, the jQuery script is loaded using the Script Loader component. +
+ + + + To test whether the jQuery script has been loaded successfully, run $('#script1')[0] in the browser console. + + +Blazor Script Loader - Test whether the jQuery script has been loaded successfully + + +
+ Blazor Bootstrap Script Loader component exposes two events. + + + + + + + + + + + + + + + + + +
Event NameDescription
OnErrorAn event that is fired when a script loading error occurs.
OnLoadAn event that is fired when a script has been successfully loaded.
+
+
+ In the following example, an incorrect script source is specified. + This is why the OnError callback event is called, and the message is updated with the error message. +
+ + +@code { + private string pageUrl = "/script-loader"; + private string title = "Blazor ScriptLoader Component"; + private string description = "Documentation and examples for using the Blazor Bootstrap ScriptLoader component."; + private string imageUrl = "https://i.imgur.com/sBiYPeQ.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/ScriptLoader/ScriptLoader_Demo_01_Examples.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/ScriptLoader/ScriptLoader_Demo_01_Examples.razor new file mode 100644 index 000000000..c3a3a83ba --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/ScriptLoader/ScriptLoader_Demo_01_Examples.razor @@ -0,0 +1,4 @@ + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/ScriptLoader/ScriptLoader_Demo_02_Events.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/ScriptLoader/ScriptLoader_Demo_02_Events.razor new file mode 100644 index 000000000..aa4bcec01 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/ScriptLoader/ScriptLoader_Demo_02_Events.razor @@ -0,0 +1,14 @@ + + +
@message
+ +@code { + string? message; + private void OnScriptLoad() => message = "Script loaded successfully."; + private void OnScriptError(string errorMessage) => message = errorMessage; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalServiceDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalServiceDocumentation.razor new file mode 100644 index 000000000..29c7ddd05 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalServiceDocumentation.razor @@ -0,0 +1,42 @@ +@page "/modal-service" + +@title + + + +

Blazor Modal Service

+
Use Blazor Bootstrap modal service to show quick dialogs to your site for lightboxes, user notifications, or completely custom content.
+ + + + + + + + + + + + + + + + + + + + + + +
1. Add the Modal component in MainLayout.razor page as shown below.
+ + +
2. Inject ModalService, then call the ShowAsync(...) method as shown below. ShowAsync method accepts ModalOption object as a parameter.
+ + +@code { + private string pageUrl = "/modal-service"; + private string title = "Blazor Modal Service"; + private string description = "Use Blazor Bootstrap modal service to show quick dialogs to your site for lightboxes, user notifications, or completely custom content."; + private string imageUrl = "https://i.imgur.com/Tze7msN.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_01_How_It_Works.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_01_How_It_Works.razor new file mode 100644 index 000000000..15a83e582 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_01_How_It_Works.razor @@ -0,0 +1,24 @@ + + + + + + + + + +@code { + [Inject] ModalService ModalService { get; set; } = default!; + + private async Task ShowModal(ModalType modalType) + { + var modalOption = new ModalOption + { + Title = "Modal title", + Message = "Modal body text goes here.", + Type = modalType, + }; + + await ModalService.ShowAsync(modalOption); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_02_Vertically_Centered_Modal.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_02_Vertically_Centered_Modal.razor new file mode 100644 index 000000000..2fe27f5e5 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_02_Vertically_Centered_Modal.razor @@ -0,0 +1,25 @@ + + + + + + + + + +@code { + [Inject] ModalService ModalService { get; set; } = default!; + + private async Task ShowModal(ModalType modalType) + { + var modalOption = new ModalOption + { + Title = "Modal title", + Message = "Modal body text goes here.", + Type = modalType, + IsVerticallyCentered = true + }; + + await ModalService.ShowAsync(modalOption); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_03_Size.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_03_Size.razor new file mode 100644 index 000000000..e7c993207 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_03_Size.razor @@ -0,0 +1,20 @@ + + + + + +@code { + [Inject] ModalService ModalService { get; set; } = default!; + + private async Task ShowModal(ModalSize modalSize) + { + var modalOption = new ModalOption + { + Title = "Modal title", + Message = "Modal body text goes here.", + Size = modalSize + }; + + await ModalService.ShowAsync(modalOption); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_04_Change_Footer_Button_Color_and_Text.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_04_Change_Footer_Button_Color_and_Text.razor new file mode 100644 index 000000000..bacccf693 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_04_Change_Footer_Button_Color_and_Text.razor @@ -0,0 +1,18 @@ + + +@code { + [Inject] ModalService ModalService { get; set; } = default!; + + private async Task ShowModal() + { + var modalOption = new ModalOption + { + Title = "Modal title", + Message = "Modal body text goes here.", + FooterButtonColor = ButtonColor.Primary, + FooterButtonText = "Got it!" + }; + + await ModalService.ShowAsync(modalOption); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_05_Hide_Footer_Button.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_05_Hide_Footer_Button.razor new file mode 100644 index 000000000..473f76fed --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_05_Hide_Footer_Button.razor @@ -0,0 +1,17 @@ + + +@code { + [Inject] ModalService ModalService { get; set; } = default!; + + private async Task ShowModal() + { + var modalOption = new ModalOption + { + Title = "Modal title", + Message = "Modal body text goes here.", + ShowFooterButton = false + }; + + await ModalService.ShowAsync(modalOption); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_06_Callback.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_06_Callback.razor new file mode 100644 index 000000000..b5ad78456 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_06_Callback.razor @@ -0,0 +1,32 @@ + + +
+ @callbackActionMessage +
+ +@code { + + [Inject] ModalService ModalService { get; set; } = default!; + + private string callbackActionMessage = ""; + + private async Task ShowModal(ModalSize modalSize) + { + var modalOption = new ModalOption + { + Title = "Modal title", + Message = "Modal body text goes here.", + Size = modalSize + }; + + await ModalService.ShowAsync(modalOption, OnModalClose); + } + + private void OnModalClose() + { + // TODO: Do operations required after modal close. + callbackActionMessage = $"Modal closed at {DateTime.Now}"; + + StateHasChanged(); + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_100_Global_Modal_Service_For_Application_01.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_100_Global_Modal_Service_For_Application_01.razor new file mode 100644 index 000000000..489845f57 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_100_Global_Modal_Service_For_Application_01.razor @@ -0,0 +1,9 @@ +@inherits LayoutComponentBase + +... + +... MainLayour.razor code goes here ... + +... + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_100_Global_Modal_Service_For_Application_02.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_100_Global_Modal_Service_For_Application_02.razor new file mode 100644 index 000000000..7c5224345 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Services/ModalService/ModalService_Demo_100_Global_Modal_Service_For_Application_02.razor @@ -0,0 +1,33 @@ +@code { + [Inject] ModalService ModalService { get; set; } = default!; + + private async Task SaveEmployeeAsync() + { + try + { + // call the service/api to save the employee details + + var modalOption = new ModalOption + { + Title = "Save Employee", + Message = "Employee details saved.", + Type = ModalType.Success + }; + + await ModalService.ShowAsync(modalOption); + } + catch(Exception ex) + { + // handle exception + + var modalOption = new ModalOption + { + Title = "Save Employee", + Message = $"Error: {ex.Message}.", + Type = ModalType.Danger + }; + + await ModalService.ShowAsync(modalOption); + } + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/SidebarDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/SidebarDocumentation.razor new file mode 100644 index 000000000..542a98c95 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/SidebarDocumentation.razor @@ -0,0 +1,59 @@ +@page "/sidebar" + +@title + + + +

Blazor Sidebar

+
+ Use the Blazor Bootstrap Sidebar component to show consistent cross-browser, responsive and cross-device navigation links, additional information, or other content. +
+ + + + + + + +
Use NavItem's Id and ParentId to set the parent-child relation.
+ +Currently, two levels of navigation are supported. For more than two levels, use the Sidebar2 component. + + +
Set IconColor property to change the color.
+ + + +
Replace your MainLayout.razor page code with the below example to have a complete layout with a sidebar.
+ + + +
Call ToggleSidebar() method to toggle the Sidebar to show the icons only.
+ + + +
A badge is useful when displaying the application version, environment, or other information. Use the BadgeText parameter to show the badge.
+ + + +
Use the CustomIconName parameter to set the custom logo icon using font awesome or other icons.
+ + + +
Use the ImageSrc parameter to set the brand logo.
+ + + +
Developers can customize the sidebar color by changing the CSS variables, as mentioned in the below example.
+ + + +
Set the Class property of a NavItem to apply a custom CSS class.
+ + +@code { + private string pageUrl = "/sidebar"; + private string title = "Blazor Sidebar Component"; + private string description = "Use the Blazor Bootstrap Sidebar component to show consistent cross-browser, responsive and cross-device navigation links, additional information, or other content."; + private string imageUrl = "https://i.imgur.com/d91Q9Zt.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_01_Basic_Usage.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_01_Basic_Usage.razor new file mode 100644 index 000000000..8551d955c --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_01_Basic_Usage.razor @@ -0,0 +1,30 @@ + + +@code { + Sidebar sidebar = default!; + IEnumerable? navItems; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + new NavItem { Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts"}, + new NavItem { Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete"}, + new NavItem { Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb"}, + new NavItem { Href = "/sidebar", IconName = IconName.LayoutSidebarInset, Text = "Sidebar"}, + }; + return navItems; + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_02_Two_level_navigation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_02_Two_level_navigation.razor new file mode 100644 index 000000000..81d8bf4fc --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_02_Two_level_navigation.razor @@ -0,0 +1,41 @@ + + +@code { + Sidebar sidebar = default!; + IEnumerable? navItems; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content" }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components" }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + new NavItem { Id = "7", Href = "/sidebar", IconName = IconName.LayoutSidebarInset, Text = "Sidebar", ParentId="4"}, + + new NavItem { Id = "8", IconName = IconName.WindowPlus, Text = "Forms" }, + new NavItem { Id = "9", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="8"}, + new NavItem { Id = "10", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="8"}, + new NavItem { Id = "11", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="8"}, + new NavItem { Id = "12", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="8"}, + }; + + return navItems; + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_03_Change_Icons_Color.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_03_Change_Icons_Color.razor new file mode 100644 index 000000000..1a65ae96e --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_03_Change_Icons_Color.razor @@ -0,0 +1,41 @@ + + +@code { + Sidebar sidebar = default!; + IEnumerable? navItems; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content", IconColor = IconColor.Primary }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components", IconColor = IconColor.Success }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + new NavItem { Id = "7", Href = "/sidebar", IconName = IconName.LayoutSidebarInset, Text = "Sidebar", ParentId="4"}, + + new NavItem { Id = "8", IconName = IconName.WindowPlus, Text = "Forms", IconColor = IconColor.Danger }, + new NavItem { Id = "9", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="8"}, + new NavItem { Id = "10", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="8"}, + new NavItem { Id = "11", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="8"}, + new NavItem { Id = "12", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="8"}, + }; + + return navItems; + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_04_Full_layout_with_sidebar.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_04_Full_layout_with_sidebar.razor new file mode 100644 index 000000000..0984bb88d --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_04_Full_layout_with_sidebar.razor @@ -0,0 +1,55 @@ +
+ + + +
+
+ About +
+ +
+
Page content goes here
+
+
+ +
+ +@code { + Sidebar sidebar = default!; + IEnumerable? navItems; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content", IconColor = IconColor.Primary }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components", IconColor = IconColor.Success }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + new NavItem { Id = "7", Href = "/sidebar", IconName = IconName.LayoutSidebarInset, Text = "Sidebar", ParentId="4"}, + + new NavItem { Id = "8", IconName = IconName.WindowPlus, Text = "Forms", IconColor = IconColor.Danger }, + new NavItem { Id = "9", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="8"}, + new NavItem { Id = "10", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="8"}, + new NavItem { Id = "11", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="8"}, + new NavItem { Id = "12", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="8"}, + }; + + return navItems; + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_05_Toggle_Sidebar_to_Show_Icons_Only.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_05_Toggle_Sidebar_to_Show_Icons_Only.razor new file mode 100644 index 000000000..62b9fcead --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_05_Toggle_Sidebar_to_Show_Icons_Only.razor @@ -0,0 +1,58 @@ +
+ + + +
+
+ + About +
+ +
+
Page content goes here
+
+
+ +
+ +@code { + Sidebar sidebar = default!; + IEnumerable? navItems; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content", IconColor = IconColor.Primary }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components", IconColor = IconColor.Success }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + new NavItem { Id = "7", Href = "/sidebar", IconName = IconName.LayoutSidebarInset, Text = "Sidebar", ParentId="4"}, + + new NavItem { Id = "8", IconName = IconName.WindowPlus, Text = "Forms", IconColor = IconColor.Danger }, + new NavItem { Id = "9", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="8"}, + new NavItem { Id = "10", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="8"}, + new NavItem { Id = "11", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="8"}, + new NavItem { Id = "12", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="8"}, + }; + + return navItems; + } + + private void ToggleSidebar() => sidebar.ToggleSidebar(); +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_06_Show_Badge.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_06_Show_Badge.razor new file mode 100644 index 000000000..82e1018c4 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_06_Show_Badge.razor @@ -0,0 +1,59 @@ +
+ + + +
+
+ + About +
+ +
+
Page content goes here
+
+
+ +
+ +@code { + Sidebar sidebar = default!; + IEnumerable? navItems; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content", IconColor = IconColor.Primary }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components", IconColor = IconColor.Success }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + new NavItem { Id = "7", Href = "/sidebar", IconName = IconName.LayoutSidebarInset, Text = "Sidebar", ParentId="4"}, + + new NavItem { Id = "8", IconName = IconName.WindowPlus, Text = "Forms", IconColor = IconColor.Danger }, + new NavItem { Id = "9", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="8"}, + new NavItem { Id = "10", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="8"}, + new NavItem { Id = "11", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="8"}, + new NavItem { Id = "12", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="8"}, + }; + + return navItems; + } + + private void ToggleSidebar() => sidebar.ToggleSidebar(); +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_07_Custom_Brand_Icon.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_07_Custom_Brand_Icon.razor new file mode 100644 index 000000000..27734b894 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_07_Custom_Brand_Icon.razor @@ -0,0 +1,59 @@ +
+ + + +
+
+ + About +
+ +
+
Page content goes here
+
+
+ +
+ +@code { + Sidebar sidebar = default!; + IEnumerable? navItems; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content", IconColor = IconColor.Primary }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components", IconColor = IconColor.Success }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + new NavItem { Id = "7", Href = "/sidebar", IconName = IconName.LayoutSidebarInset, Text = "Sidebar", ParentId="4"}, + + new NavItem { Id = "8", IconName = IconName.WindowPlus, Text = "Forms", IconColor = IconColor.Danger }, + new NavItem { Id = "9", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="8"}, + new NavItem { Id = "10", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="8"}, + new NavItem { Id = "11", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="8"}, + new NavItem { Id = "12", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="8"}, + }; + + return navItems; + } + + private void ToggleSidebar() => sidebar.ToggleSidebar(); +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_08_Show_Image_as_Brand_Logo.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_08_Show_Image_as_Brand_Logo.razor new file mode 100644 index 000000000..c5c68107e --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_08_Show_Image_as_Brand_Logo.razor @@ -0,0 +1,59 @@ +
+ + + +
+
+ + About +
+ +
+
Page content goes here
+
+
+ +
+ +@code { + Sidebar sidebar = default!; + IEnumerable? navItems; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content", IconColor = IconColor.Primary }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components", IconColor = IconColor.Success }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + new NavItem { Id = "7", Href = "/sidebar", IconName = IconName.LayoutSidebarInset, Text = "Sidebar", ParentId="4"}, + + new NavItem { Id = "8", IconName = IconName.WindowPlus, Text = "Forms", IconColor = IconColor.Danger }, + new NavItem { Id = "9", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="8"}, + new NavItem { Id = "10", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="8"}, + new NavItem { Id = "11", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="8"}, + new NavItem { Id = "12", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="8"}, + }; + + return navItems; + } + + private void ToggleSidebar() => sidebar.ToggleSidebar(); +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_09_Customize_Sidebar.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_09_Customize_Sidebar.razor new file mode 100644 index 000000000..af358d8b5 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_09_Customize_Sidebar.razor @@ -0,0 +1,89 @@ +
+ + + +
+
+ About +
+ +
+
+ +
+
+
+ +
+ +@code { + Sidebar sidebar = default!; + bool applyPurpleStyle = false; + IEnumerable? navItems; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content", IconColor = IconColor.Primary }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components", IconColor = IconColor.Success }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + new NavItem { Id = "7", Href = "/sidebar", IconName = IconName.LayoutSidebarInset, Text = "Sidebar", ParentId="4"}, + + new NavItem { Id = "8", IconName = IconName.WindowPlus, Text = "Forms", IconColor = IconColor.Danger }, + new NavItem { Id = "9", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="8"}, + new NavItem { Id = "10", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="8"}, + new NavItem { Id = "11", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="8"}, + new NavItem { Id = "12", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="8"}, + }; + + return navItems; + } + + private void ToggleSidebarStyles() => applyPurpleStyle = !applyPurpleStyle; +} + +@if (applyPurpleStyle) +{ + +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_10_Apply_Custom_CSS_Class_to_NavItem.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_10_Apply_Custom_CSS_Class_to_NavItem.razor new file mode 100644 index 000000000..2a9ece7fa --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar/Sidebar_Demo_10_Apply_Custom_CSS_Class_to_NavItem.razor @@ -0,0 +1,41 @@ + + +@code { + Sidebar sidebar = default!; + IEnumerable? navItems; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content" }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components" }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4", Class="px-3"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4", Class="px-3"}, + new NavItem { Id = "7", Href = "/sidebar", IconName = IconName.LayoutSidebarInset, Text = "Sidebar", ParentId="4", Class="px-3"}, + + new NavItem { Id = "8", IconName = IconName.WindowPlus, Text = "Forms" }, + new NavItem { Id = "9", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="8"}, + new NavItem { Id = "10", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="8"}, + new NavItem { Id = "11", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="8"}, + new NavItem { Id = "12", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="8"}, + }; + + return navItems; + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2Documentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2Documentation.razor new file mode 100644 index 000000000..4f52ae164 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2Documentation.razor @@ -0,0 +1,43 @@ +@page "/sidebar2" + +@title + + + +

Blazor Sidebar2

+
+ Use the Blazor Bootstrap Sidebar2 component to display consistent, cross-browser, and responsive navigation links that support more than two nested levels. +
+ + + + +
+ + + +
+ + +@* +
Set IconColor property to change the color.
+ *@ + + +
Replace your MainLayout.razor page code with the below example to have a complete layout with a sidebar.
+ + + +
Use the CustomIconName parameter to set the custom logo icon using font awesome or other icons.
+ + + +
Use the ImageSrc parameter to set the brand logo.
+ + +@code { + private string pageUrl = "sidebar2"; + private string title = "Blazor Sidebar2 Component"; + private string description = "Use the Blazor Bootstrap Sidebar2 component to display consistent, cross-browser, and responsive navigation links that support more than two nested levels."; + private string imageUrl = "https://i.imgur.com/U0l6wXo.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2_Demo_01_Basic_Usage.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2_Demo_01_Basic_Usage.razor new file mode 100644 index 000000000..a8672111d --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2_Demo_01_Basic_Usage.razor @@ -0,0 +1,45 @@ + + +@code { + IEnumerable? navItems; + + private async Task Sidebar2DataProvider(Sidebar2DataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + await Task.Delay(2000); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content" }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components" }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + + new NavItem { Id = "7", IconName = IconName.ListNested, Text = "Sidebar 2", ParentId="4"}, + new NavItem { Id = "701", Href = "/sidebar2", IconName = IconName.Dash, Text = "How to use", ParentId="7"}, + new NavItem { Id = "702", Href = "/sidebar2-examples", IconName = IconName.Dash, Text = "Examples", ParentId="7"}, + + new NavItem { Id = "8", IconName = IconName.WindowPlus, Text = "Forms" }, + new NavItem { Id = "9", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="8"}, + new NavItem { Id = "10", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="8"}, + new NavItem { Id = "11", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="8"}, + new NavItem { Id = "12", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="8"}, + }; + + return navItems; + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2_Demo_02_More_Nested_Levels.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2_Demo_02_More_Nested_Levels.razor new file mode 100644 index 000000000..a2ccee7c2 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2_Demo_02_More_Nested_Levels.razor @@ -0,0 +1,52 @@ + + +@code { + IEnumerable? navItems; + + private async Task Sidebar2DataProvider(Sidebar2DataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + await Task.Delay(2000); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content" }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components" }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + + new NavItem { Id = "7", IconName = IconName.ListNested, Text = "Sidebar 2", ParentId="4"}, + new NavItem { Id = "701", Href = "/sidebar2/how-to-use", IconName = IconName.Dash, Text = "How to use", ParentId="7"}, + + new NavItem { Id = "702", IconName = IconName.Dash, Text = "Examples", ParentId="7"}, + new NavItem { Id = "70201", Href = "/sidebar2", IconName = IconName.Dash, Text = "Nested levels", ParentId="702"}, + + new NavItem { Id = "8", IconName = IconName.Grid, Text = "Grid", ParentId="4"}, + new NavItem { Id = "801", Href = "/grid/#", IconName = IconName.Dash, Text = "How to use", ParentId="8"}, + new NavItem { Id = "802", IconName = IconName.Dash, Text = "Examples", ParentId="8"}, + new NavItem { Id = "80201", Href = "/grid/#", IconName = IconName.Dash, Text = "Filters", ParentId="802"}, + + new NavItem { Id = "9", IconName = IconName.WindowPlus, Text = "Forms" }, + new NavItem { Id = "10", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="9"}, + new NavItem { Id = "11", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="9"}, + new NavItem { Id = "12", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="9"}, + new NavItem { Id = "13", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="9"}, + }; + + return navItems; + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2_Demo_03_Change_Icons_Color.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2_Demo_03_Change_Icons_Color.razor new file mode 100644 index 000000000..2d65942b6 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2_Demo_03_Change_Icons_Color.razor @@ -0,0 +1,52 @@ + + +@code { + IEnumerable? navItems; + + private async Task Sidebar2DataProvider(Sidebar2DataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + await Task.Delay(2000); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content", IconColor = IconColor.Primary }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components", IconColor = IconColor.Success }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + + new NavItem { Id = "7", IconName = IconName.ListNested, Text = "Sidebar 2", ParentId="4"}, + new NavItem { Id = "701", Href = "/sidebar2/how-to-use", IconName = IconName.Dash, Text = "How to use", ParentId="7"}, + + new NavItem { Id = "702", IconName = IconName.Dash, Text = "Examples", ParentId="7"}, + new NavItem { Id = "70201", Href = "/sidebar2", IconName = IconName.Dash, Text = "Nested levels", ParentId="702"}, + + new NavItem { Id = "8", IconName = IconName.Grid, Text = "Grid", ParentId="4", IconColor = IconColor.Danger }, + new NavItem { Id = "801", Href = "/grid/#", IconName = IconName.Dash, Text = "How to use", ParentId="8"}, + new NavItem { Id = "802", IconName = IconName.Dash, Text = "Examples", ParentId="8"}, + new NavItem { Id = "80201", Href = "/grid/#", IconName = IconName.Dash, Text = "Filters", ParentId="802"}, + + new NavItem { Id = "9", IconName = IconName.WindowPlus, Text = "Forms", IconColor = IconColor.Warning }, + new NavItem { Id = "10", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="9"}, + new NavItem { Id = "11", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="9"}, + new NavItem { Id = "12", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="9"}, + new NavItem { Id = "13", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="9"}, + }; + + return navItems; + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2_Demo_04_Full_layout_with_sidebar.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2_Demo_04_Full_layout_with_sidebar.razor new file mode 100644 index 000000000..bdd816e72 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2_Demo_04_Full_layout_with_sidebar.razor @@ -0,0 +1,66 @@ +
+ + + +
+
+ About +
+ +
+
Page content goes here
+
+
+ +
+ +@code { + IEnumerable? navItems; + + private async Task Sidebar2DataProvider(Sidebar2DataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + await Task.Delay(2000); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content", IconColor = IconColor.Primary }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components", IconColor = IconColor.Success }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + + new NavItem { Id = "7", IconName = IconName.ListNested, Text = "Sidebar 2", ParentId="4"}, + new NavItem { Id = "701", Href = "/sidebar2/how-to-use", IconName = IconName.Dash, Text = "How to use", ParentId="7"}, + + new NavItem { Id = "702", IconName = IconName.Dash, Text = "Examples", ParentId="7"}, + new NavItem { Id = "70201", Href = "/sidebar2", IconName = IconName.Dash, Text = "Nested levels", ParentId="702"}, + + new NavItem { Id = "8", IconName = IconName.Grid, Text = "Grid", ParentId="4", IconColor = IconColor.Danger }, + new NavItem { Id = "801", Href = "/grid/#", IconName = IconName.Dash, Text = "How to use", ParentId="8"}, + new NavItem { Id = "802", IconName = IconName.Dash, Text = "Examples", ParentId="8"}, + new NavItem { Id = "80201", Href = "/grid/#", IconName = IconName.Dash, Text = "Filters", ParentId="802"}, + + new NavItem { Id = "9", IconName = IconName.WindowPlus, Text = "Forms", IconColor = IconColor.Warning }, + new NavItem { Id = "10", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="9"}, + new NavItem { Id = "11", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="9"}, + new NavItem { Id = "12", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="9"}, + new NavItem { Id = "13", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="9"}, + }; + + return navItems; + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2_Demo_07_Custom_Brand_Icon.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2_Demo_07_Custom_Brand_Icon.razor new file mode 100644 index 000000000..758a76596 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2_Demo_07_Custom_Brand_Icon.razor @@ -0,0 +1,66 @@ +
+ + + +
+
+ About +
+ +
+
Page content goes here
+
+
+ +
+ +@code { + IEnumerable? navItems; + + private async Task Sidebar2DataProvider(Sidebar2DataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + await Task.Delay(2000); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content", IconColor = IconColor.Primary }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components", IconColor = IconColor.Success }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + + new NavItem { Id = "7", IconName = IconName.ListNested, Text = "Sidebar 2", ParentId="4"}, + new NavItem { Id = "701", Href = "/sidebar2/how-to-use", IconName = IconName.Dash, Text = "How to use", ParentId="7"}, + + new NavItem { Id = "702", IconName = IconName.Dash, Text = "Examples", ParentId="7"}, + new NavItem { Id = "70201", Href = "/sidebar2", IconName = IconName.Dash, Text = "Nested levels", ParentId="702"}, + + new NavItem { Id = "8", IconName = IconName.Grid, Text = "Grid", ParentId="4", IconColor = IconColor.Danger }, + new NavItem { Id = "801", Href = "/grid/#", IconName = IconName.Dash, Text = "How to use", ParentId="8"}, + new NavItem { Id = "802", IconName = IconName.Dash, Text = "Examples", ParentId="8"}, + new NavItem { Id = "80201", Href = "/grid/#", IconName = IconName.Dash, Text = "Filters", ParentId="802"}, + + new NavItem { Id = "9", IconName = IconName.WindowPlus, Text = "Forms", IconColor = IconColor.Warning }, + new NavItem { Id = "10", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="9"}, + new NavItem { Id = "11", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="9"}, + new NavItem { Id = "12", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="9"}, + new NavItem { Id = "13", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="9"}, + }; + + return navItems; + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2_Demo_08_Show_Image_as_Brand_Logo.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2_Demo_08_Show_Image_as_Brand_Logo.razor new file mode 100644 index 000000000..e9ec65894 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Sidebar2/Sidebar2_Demo_08_Show_Image_as_Brand_Logo.razor @@ -0,0 +1,66 @@ +
+ + + +
+
+ About +
+ +
+
Page content goes here
+
+
+ +
+ +@code { + IEnumerable? navItems; + + private async Task Sidebar2DataProvider(Sidebar2DataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + await Task.Delay(2000); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content", IconColor = IconColor.Primary }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components", IconColor = IconColor.Success }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + + new NavItem { Id = "7", IconName = IconName.ListNested, Text = "Sidebar 2", ParentId="4"}, + new NavItem { Id = "701", Href = "/sidebar2/how-to-use", IconName = IconName.Dash, Text = "How to use", ParentId="7"}, + + new NavItem { Id = "702", IconName = IconName.Dash, Text = "Examples", ParentId="7"}, + new NavItem { Id = "70201", Href = "/sidebar2", IconName = IconName.Dash, Text = "Nested levels", ParentId="702"}, + + new NavItem { Id = "8", IconName = IconName.Grid, Text = "Grid", ParentId="4", IconColor = IconColor.Danger }, + new NavItem { Id = "801", Href = "/grid/#", IconName = IconName.Dash, Text = "How to use", ParentId="8"}, + new NavItem { Id = "802", IconName = IconName.Dash, Text = "Examples", ParentId="8"}, + new NavItem { Id = "80201", Href = "/grid/#", IconName = IconName.Dash, Text = "Filters", ParentId="802"}, + + new NavItem { Id = "9", IconName = IconName.WindowPlus, Text = "Forms", IconColor = IconColor.Warning }, + new NavItem { Id = "10", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="9"}, + new NavItem { Id = "11", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="9"}, + new NavItem { Id = "12", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="9"}, + new NavItem { Id = "13", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="9"}, + }; + + return navItems; + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableListDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableListDocumentation.razor new file mode 100644 index 000000000..a8bb91c76 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableListDocumentation.razor @@ -0,0 +1,79 @@ +@page "/sortable-list" + +@title + + + +

Blazor Sortable List Preview

+
+ The Blazor Bootstrap Sortable List component, built on top of SortableJS, enables drag-and-drop reordering of lists. +
+ + + + +
Before using the SortableList component, include the SortableJS script reference in your index.html/_Host.cshtml file.
+ + + +
+ + + +
+

To drag-and-drop an item from one list to the other and vice versa, set the Group parameter for all the lists. Providing the same Group name for the lists is what links them together.

+

In the below example, both lists use the same Group.

+
+ + +
+ In the following example, all three lists use the same group. +
+ + + +
+ By setting Pull="SortableListPullMode.Clone", you can enable item cloning. Drag an item from one list to another to create a copy that stays in the original list. +
+ + + +
+ You can disable list sorting by setting AllowSorting="false". In the example below, the list cannot be sorted. +
+ + + +
+ The Handle parameter specifies the CSS class that denotes the drag handle. In the example below, items can only be sorted by dragging the handle itself. +
+ + + +
+ Try dragging the red-backgrounded item. You won't be able to, as it's disabled using the DisableItem parameter. +
+ + + + +@*
+ *@ + +
Nested list sorting is not currently supported. We will add this feature in upcoming releases.
+
+ + +
+ + + +
+ + +@code { + private string pageUrl = "/sortable-list"; + private string title = "Blazor Sortable List Component"; + private string description = "The Blazor Bootstrap Sortable List component, built on top of SortableJS, enables drag-and-drop reordering of lists."; + private string imageUrl = "https://i.imgur.com/bfzP8Yi.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_00_Setup.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_00_Setup.razor new file mode 100644 index 000000000..938080038 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_00_Setup.razor @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_01_Examples.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_01_Examples.razor new file mode 100644 index 000000000..c39ae034e --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_01_Examples.razor @@ -0,0 +1,26 @@ + + + @item.Name + + + +@code { + public List employees = Enumerable.Range(1, 5).Select(i => new Employee(i, $"Employee {i}")).ToList(); + + private void OnEmployeeListUpdate(SortableListEventArgs args) + { + var itemToMove = employees[args.OldIndex]; + + employees.RemoveAt(args.OldIndex); + + if (args.NewIndex < employees.Count) + employees.Insert(args.NewIndex, itemToMove); + else + employees.Add(itemToMove); + } + + public record Employee(int Id, string? Name); +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_02_Shared_Lists_A.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_02_Shared_Lists_A.razor new file mode 100644 index 000000000..1fd3be545 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_02_Shared_Lists_A.razor @@ -0,0 +1,84 @@ +
+
+ + + @item.Name + + +
+
+ + + @item.Name + + +
+
+ +@code { + public List employeeList1 = Enumerable.Range(1, 5).Select(i => new Employee(i, $"Employee {i}")).ToList(); + + public List employeeList2 = Enumerable.Range(6, 5).Select(i => new Employee(i, $"Employee {i}")).ToList(); + + private void OnEmployeeList1Update(SortableListEventArgs args) + { + var itemToMove = employeeList1[args.OldIndex]; + + employeeList1.RemoveAt(args.OldIndex); + + if (args.NewIndex < employeeList1.Count) + employeeList1.Insert(args.NewIndex, itemToMove); + else + employeeList1.Add(itemToMove); + } + + private void OnEmployeeList2Update(SortableListEventArgs args) + { + var itemToMove = employeeList2[args.OldIndex]; + + employeeList2.RemoveAt(args.OldIndex); + + if (args.NewIndex < employeeList2.Count) + employeeList2.Insert(args.NewIndex, itemToMove); + else + employeeList2.Add(itemToMove); + } + + private void OnEmployeeList1Remove(SortableListEventArgs args) + { + // get the item at the old index in list 1 + var item = employeeList1[args.OldIndex]; + + // add it to the new index in list 2 + employeeList2.Insert(args.NewIndex, item); + + // remove the item from the old index in list 1 + employeeList1.Remove(employeeList1[args.OldIndex]); + } + + private void OnEmployeeList2Remove(SortableListEventArgs args) + { + // get the item at the old index in list 2 + var item = employeeList2[args.OldIndex]; + + // add it to the new index in list 1 + employeeList1.Insert(args.NewIndex, item); + + // remove the item from the old index in list 2 + employeeList2.Remove(employeeList2[args.OldIndex]); + } + + public record Employee(int Id, string? Name); +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_02_Shared_Lists_B_Three_Lists.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_02_Shared_Lists_B_Three_Lists.razor new file mode 100644 index 000000000..65771013e --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_02_Shared_Lists_B_Three_Lists.razor @@ -0,0 +1,116 @@ +
+
+ + + @item.Name + + +
+
+ + + @item.Name + + +
+
+ + + @item.Name + + +
+
+ +@code { + public List employeeList1 = Enumerable.Range(10, 5).Select(i => new Employee(i, $"Employee {i}")).ToList(); + + public List employeeList2 = Enumerable.Range(20, 5).Select(i => new Employee(i, $"Employee {i}")).ToList(); + + public List employeeList3 = Enumerable.Range(30, 5).Select(i => new Employee(i, $"Employee {i}")).ToList(); + + private void OnEmployeeList1Update(SortableListEventArgs args) + { + var itemToMove = employeeList1[args.OldIndex]; + + employeeList1.RemoveAt(args.OldIndex); + + if (args.NewIndex < employeeList1.Count) + employeeList1.Insert(args.NewIndex, itemToMove); + else + employeeList1.Add(itemToMove); + } + + private void OnEmployeeList2Update(SortableListEventArgs args) + { + var itemToMove = employeeList2[args.OldIndex]; + + employeeList2.RemoveAt(args.OldIndex); + + if (args.NewIndex < employeeList2.Count) + employeeList2.Insert(args.NewIndex, itemToMove); + else + employeeList2.Add(itemToMove); + } + + private void OnEmployeeList3Update(SortableListEventArgs args) + { + var itemToMove = employeeList3[args.OldIndex]; + + employeeList3.RemoveAt(args.OldIndex); + + if (args.NewIndex < employeeList3.Count) + employeeList3.Insert(args.NewIndex, itemToMove); + else + employeeList3.Add(itemToMove); + } + + private void OnEmployeeListRemove(SortableListEventArgs args) + { + Employee? item = default!; + + // get the item at the old index + if (args.FromListName == "empList1") + item = employeeList1[args.OldIndex]; + else if (args.FromListName == "empList2") + item = employeeList2[args.OldIndex]; + else + item = employeeList3[args.OldIndex]; + + // add it to the new index + if (args.ToListName == "empList1") + employeeList1.Insert(args.NewIndex, item); + else if (args.ToListName == "empList2") + employeeList2.Insert(args.NewIndex, item); + else + employeeList3.Insert(args.NewIndex, item); + + // remove the item from the old index + if (args.FromListName == "empList1") + employeeList1.Remove(employeeList1[args.OldIndex]); + else if (args.FromListName == "empList2") + employeeList2.Remove(employeeList2[args.OldIndex]); + else + employeeList3.Remove(employeeList3[args.OldIndex]); + } + + public record Employee(int Id, string? Name); +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_03_Cloning.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_03_Cloning.razor new file mode 100644 index 000000000..5f424d1e3 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_03_Cloning.razor @@ -0,0 +1,82 @@ +
+
+ + + @item.Name + + +
+
+ + + @item.Name + + +
+
+ +@code { + public List employeeList1 = Enumerable.Range(10, 5).Select(i => new Employee(i, $"Employee {i}")).ToList(); + + public List employeeList2 = Enumerable.Range(20, 5).Select(i => new Employee(i, $"Employee {i}")).ToList(); + + private void OnEmployeeList1Update(SortableListEventArgs args) + { + var itemToMove = employeeList1[args.OldIndex]; + + employeeList1.RemoveAt(args.OldIndex); + + if (args.NewIndex < employeeList1.Count) + employeeList1.Insert(args.NewIndex, itemToMove); + else + employeeList1.Add(itemToMove); + } + + private void OnEmployeeList2Update(SortableListEventArgs args) + { + var itemToMove = employeeList2[args.OldIndex]; + + employeeList2.RemoveAt(args.OldIndex); + + if (args.NewIndex < employeeList2.Count) + employeeList2.Insert(args.NewIndex, itemToMove); + else + employeeList2.Add(itemToMove); + } + + private void OnEmployeeList1Remove(SortableListEventArgs args) + { + // get the item at the old index in list 1 + var item = employeeList1[args.OldIndex]; + + var clone = item with {}; + + // add it to the new index in list 2 + employeeList2.Insert(args.NewIndex, clone); + } + + private void OnEmployeeList2Remove(SortableListEventArgs args) + { + // get the item at the old index in list 2 + var item = employeeList2[args.OldIndex]; + + var clone = item with { }; + + // add it to the new index in list 1 + employeeList1.Insert(args.NewIndex, clone); + } + + public record Employee(int Id, string? Name); +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_04_Disable_Sorting.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_04_Disable_Sorting.razor new file mode 100644 index 000000000..d54eb114d --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_04_Disable_Sorting.razor @@ -0,0 +1,18 @@ + + + @item.Name + + + +@code { + public List items = Enumerable.Range(1, 5).Select(i => new Employee { Id = i, Name = $"Item {i}" }).ToList(); + + public class Employee + { + public int Id { get; set; } + public string? Name { get; set; } + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_05_Handle.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_05_Handle.razor new file mode 100644 index 000000000..2246db783 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_05_Handle.razor @@ -0,0 +1,33 @@ + + + +
+
+
@item.Name
+
+
+ +
+ +@code { + public List employees = Enumerable.Range(1, 5).Select(i => new Employee(i, $"Employee {i}")).ToList(); + + private void OnEmployeeListUpdate(SortableListEventArgs args) + { + var itemToMove = employees[args.OldIndex]; + + employees.RemoveAt(args.OldIndex); + + if (args.NewIndex < employees.Count) + employees.Insert(args.NewIndex, itemToMove); + else + employees.Add(itemToMove); + } + + public record Employee(int Id, string? Name); +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_06_Disable_Item.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_06_Disable_Item.razor new file mode 100644 index 000000000..df50c737d --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_06_Disable_Item.razor @@ -0,0 +1,28 @@ + + + @item.Name + + + +@code { + public List employees = Enumerable.Range(1, 5).Select(i => new Employee(i, $"Employee {i}")).ToList(); + + private void OnEmployeeListUpdate(SortableListEventArgs args) + { + var itemToMove = employees[args.OldIndex]; + + employees.RemoveAt(args.OldIndex); + + if (args.NewIndex < employees.Count) + employees.Insert(args.NewIndex, itemToMove); + else + employees.Add(itemToMove); + } + + public record Employee(int Id, string? Name); +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_07_Nested_Sortables.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_07_Nested_Sortables.razor new file mode 100644 index 000000000..0664795bd --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_07_Nested_Sortables.razor @@ -0,0 +1,101 @@ + + + @item.Name + + @if (item?.Children?.Any() ?? false) + { + + + @childItem.Name + + + } + + + +@code { + public List employees = new List + { + new(){ Id = 1, Name = "Employee 1"}, + new(){ Id = 2, Name = "Employee 2", Children = new List + { + new(){ Id = 21, Name = "Employee 21"}, + new(){ Id = 22, Name = "Employee 22", Children= new List + { + new(){ Id = 221, Name = "Employee 221"}, + new(){ Id = 222, Name = "Employee 222"}, + new(){ Id = 223, Name = "Employee 223"}, + } + }, + new(){ Id = 23, Name = "Employee 23"}, + } + }, + new(){ Id = 3, Name = "Employee 3"}, + new(){ Id = 4, Name = "Employee 4", Children = new List + { + new(){ Id = 41, Name = "Employee 41"}, + new(){ Id = 42, Name = "Employee 42"}, + new(){ Id = 43, Name = "Employee 43"}, + } + }, + new(){ Id = 5, Name = "Employee 5"}, + }; + + private void OnEmployeeListAdd(SortableListEventArgs args, List fromList) + { + Console.WriteLine($"OnEmployeeListAdd >> OldIndex: {args.OldIndex}, NewIndex: {args.NewIndex}, Count: {fromList.Count}"); + + //var itemToMove = employees[args.OldIndex]; + + // employees.RemoveAt(args.OldIndex); + + // if (args.NewIndex < employees.Count) + // employees.Insert(args.NewIndex, itemToMove); + // else + // employees.Add(itemToMove); + } + + private void OnEmployeeListRemove(SortableListEventArgs args, List fromList) + { + Console.WriteLine($"OnEmployeeListRemove >> OldIndex: {args.OldIndex}, NewIndex: {args.NewIndex}, Count: {fromList.Count}"); + + //var itemToMove = employees[args.OldIndex]; + + // employees.RemoveAt(args.OldIndex); + + // if (args.NewIndex < employees.Count) + // employees.Insert(args.NewIndex, itemToMove); + // else + // employees.Add(itemToMove); + } + + private void OnEmployeeListUpdate(SortableListEventArgs args, List fromList) + { + Console.WriteLine($"OnEmployeeListUpdate >> OldIndex: {args.OldIndex}, NewIndex: {args.NewIndex}, Count: {fromList.Count}"); + + var itemToMove = fromList[args.OldIndex]; + + fromList.RemoveAt(args.OldIndex); + + if (args.NewIndex < fromList.Count) + fromList.Insert(args.NewIndex, itemToMove); + else + fromList.Add(itemToMove); + } + + public class Employee + { + public int Id { get; set; } + public string? Name { get; set; } + public List? Children { get; set; } + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_08_Dynamic_Data.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_08_Dynamic_Data.razor new file mode 100644 index 000000000..a319674e1 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_08_Dynamic_Data.razor @@ -0,0 +1,40 @@ + + + @item.Name + + + + + +@code { + public bool isLoading = false; + public List employees = null!; + + private async Task LoadDataAsync() + { + isLoading = true; + await Task.Delay(3000); + employees = Enumerable.Range(1, 5).Select(i => new Employee(i, $"Employee {i}")).ToList(); + isLoading = false; + await base.OnInitializedAsync(); + } + + private void OnEmployeeListUpdate(SortableListEventArgs args) + { + var itemToMove = employees[args.OldIndex]; + + employees.RemoveAt(args.OldIndex); + + if (args.NewIndex < employees.Count) + employees.Insert(args.NewIndex, itemToMove); + else + employees.Add(itemToMove); + } + + public record Employee(int Id, string? Name); +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_09_Empty_Data.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_09_Empty_Data.razor new file mode 100644 index 000000000..19335244f --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/SortableList/SortableList_Demo_09_Empty_Data.razor @@ -0,0 +1,13 @@ + + + @item.Name + + + +@code { + public List items = null!; + + public record Employee(int Id, string? Name); +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/SpinnersDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/SpinnersDocumentation.razor new file mode 100644 index 000000000..8a6d1c216 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/SpinnersDocumentation.razor @@ -0,0 +1,65 @@ +@page "/spinner" +@page "/spinners" + +@title + + + +

Blazor Spinners

+
+ Visualize the loading state of a component or page using the Blazor Bootstrap Spinner component. +
+ + + + +
Use the border spinners for a lightweight loading indicator.
+ + + +
+ The border spinner's border color inherits the element's color (currentColor). This means you can easily customize the spinner's color by changing the Color parameter on the standard spinner. +
+ + + +
+ If you don't fancy a border spinner, switch to the grow spinner, while it doesn't technically spin, it does repeatedly grow! +
+ + + + +
The loading dots are a special indicator for a lightweight loading indicator.
+ + + + + + + + + + + + + + + + + + + + + + + + + + +@code{ + private string pageUrl = "/spinner"; + private string title = "Blazor Spinner Component"; + private string description = "Visualize the loading state of a component or page using the Blazor Bootstrap Spinner component."; + private string imageUrl = "https://i.imgur.com/G4wyEd6.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_01_Border_Spinner.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_01_Border_Spinner.razor new file mode 100644 index 000000000..19883cb3f --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_01_Border_Spinner.razor @@ -0,0 +1 @@ + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_02_Colors.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_02_Colors.razor new file mode 100644 index 000000000..d8269f61a --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_02_Colors.razor @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_03_Grow_spinner_A.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_03_Grow_spinner_A.razor new file mode 100644 index 000000000..b937167d8 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_03_Grow_spinner_A.razor @@ -0,0 +1 @@ + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_03_Grow_spinner_B.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_03_Grow_spinner_B.razor new file mode 100644 index 000000000..c11ad48de --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_03_Grow_spinner_B.razor @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_04_Loading_dots_spinner_A.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_04_Loading_dots_spinner_A.razor new file mode 100644 index 000000000..13eb71bbf --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_04_Loading_dots_spinner_A.razor @@ -0,0 +1 @@ + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_04_Loading_dots_spinner_B.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_04_Loading_dots_spinner_B.razor new file mode 100644 index 000000000..38bed6132 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_04_Loading_dots_spinner_B.razor @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_05_Alignment_A_Margin.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_05_Alignment_A_Margin.razor new file mode 100644 index 000000000..610f53f16 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_05_Alignment_A_Margin.razor @@ -0,0 +1 @@ + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_05_Alignment_B_Palcement_Flex_01.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_05_Alignment_B_Palcement_Flex_01.razor new file mode 100644 index 000000000..a1bc75cfe --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_05_Alignment_B_Palcement_Flex_01.razor @@ -0,0 +1,3 @@ +
+ +
diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_05_Alignment_B_Palcement_Flex_02.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_05_Alignment_B_Palcement_Flex_02.razor new file mode 100644 index 000000000..dabeecfb8 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_05_Alignment_B_Palcement_Flex_02.razor @@ -0,0 +1,4 @@ +
+ Loading... + +
diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_05_Alignment_C_Palcement_Floats.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_05_Alignment_C_Palcement_Floats.razor new file mode 100644 index 000000000..cfac61c99 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_05_Alignment_C_Palcement_Floats.razor @@ -0,0 +1,3 @@ +
+ +
diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_05_Alignment_D_Palcement_Text_align.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_05_Alignment_D_Palcement_Text_align.razor new file mode 100644 index 000000000..a26a69e1b --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_05_Alignment_D_Palcement_Text_align.razor @@ -0,0 +1,3 @@ +
+ +
diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_06_Size_A_Border.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_06_Size_A_Border.razor new file mode 100644 index 000000000..6f43beb0f --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_06_Size_A_Border.razor @@ -0,0 +1,4 @@ + + + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_06_Size_B_Grow.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_06_Size_B_Grow.razor new file mode 100644 index 000000000..86b6883e9 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_06_Size_B_Grow.razor @@ -0,0 +1,4 @@ + + + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_06_Size_C_Dots.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_06_Size_C_Dots.razor new file mode 100644 index 000000000..0d13af404 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_06_Size_C_Dots.razor @@ -0,0 +1,4 @@ + + + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_07_Visible.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_07_Visible.razor new file mode 100644 index 000000000..f15cc5ae0 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Spinners/Spinners_Demo_07_Visible.razor @@ -0,0 +1,14 @@ + + +
+ + +
+ +@code { + private bool visible = true; + + private void Hide() => visible = false; + + private void Show() => visible = true; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/TabsDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/TabsDocumentation.razor new file mode 100644 index 000000000..2c11e967b --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/TabsDocumentation.razor @@ -0,0 +1,115 @@ +@page "/tabs" + +@title + + + +

Blazor Tabs

+
+ Documentation and examples for using Blazor Bootstrap Tabs components. +
+ + + + + + + +
To create a fade-in effect for tabs, add the EnableFadeEffect="true" parameter. Additionally, set the IsActive="true" parameter on the first tab pane to display its content initially.
+ + + +
To customize the tab title, use the TitleTemplate parameter, as demonstrated in the following example.
+ + + +
Disable specific tabs by adding Disabled="true" parameter.
+ + + +
To transform the tabs into pills, use the parameter NavStyle="NavStyle.Pills".
+ + + +
Use the NavStyle="NavStyle.Underline" parameter to change the tabs to an underlined style.
+ + + +
Display your tabs vertically by setting the NavStyle parameter to NavStyle.Vertical.
+ + + + + + + + + +
You can activate individual tabs in several ways. Use predefined methods such as ShowFirstTabAsync, ShowLastTabAsync, ShowTabByIndexAsync, and ShowTabByNameAsync, as shown below.
+ + + +
+ When displaying a new tab, the events fire in the following sequence: +

+ 1. OnHiding (on the currently active tab)
+ 2. OnShowing (on the tab that is about to be displayed)
+ 3. OnHidden (on the previously active tab, which is the same one that triggered the OnHiding event)
+ 4. OnShown (on the newly activated tab that has just been displayed, which is the same one that triggered the OnShowing event)
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Event NameDescription
OnHidingThis event fires when a new tab is to be shown (and thus the previous active tab is to be hidden).
OnHiddenThis event fires after a new tab is shown (and thus the previous active tab is hidden).
OnShowingThis event fires on tab show, but before the new tab has been shown.
OnShownThis event fires on tab show after a tab has been shown.
+ + If no tab was already active, then the OnHiding and OnHidden events will not be fired. + +
+ + + + + + + + + + + + + + + + + In the following example, we are deleting tabs dynamically. Ensure that the @@key parameter is added with unique value. + + + +@code { + private string pageUrl = "/tabs"; + private string title = "Blazor Tabs Component"; + private string description = "Documentation and examples for using Blazor Bootstrap Tabs components."; + private string imageUrl = "https://i.imgur.com/ranwriJ.png"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_01_Examples.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_01_Examples.razor new file mode 100644 index 000000000..263a1dd07 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_01_Examples.razor @@ -0,0 +1,22 @@ + + + +

This is the placeholder content for the Home tab.

+
+
+ + +

This is the placeholder content for the Profile tab.

+
+
+ + +

This is the placeholder content for the Contact tab.

+
+
+ + +

This is the placeholder content for the About tab.

+
+
+
\ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_02_Enable_FadeEffect.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_02_Enable_FadeEffect.razor new file mode 100644 index 000000000..e5863270f --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_02_Enable_FadeEffect.razor @@ -0,0 +1,17 @@ + + + +

This is the placeholder content for the Home tab.

+
+
+ + +

This is the placeholder content for the Profile tab.

+
+
+ + +

This is the placeholder content for the Contact tab.

+
+
+
\ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_03_Title_with_Icon.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_03_Title_with_Icon.razor new file mode 100644 index 000000000..2a1d75043 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_03_Title_with_Icon.razor @@ -0,0 +1,26 @@ + + + + Home + + +

This is the placeholder content for the Home tab.

+
+
+ + + Profile + + +

This is the placeholder content for the Profile tab.

+
+
+ + + Contact + + +

This is the placeholder content for the Contact tab.

+
+
+
\ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_04_Disable_Tab.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_04_Disable_Tab.razor new file mode 100644 index 000000000..ada7f04d4 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_04_Disable_Tab.razor @@ -0,0 +1,22 @@ + + + +

This is the placeholder content for the Home tab.

+
+
+ + +

This is the placeholder content for the Profile tab.

+
+
+ + +

This is the placeholder content for the Projects tab.

+
+
+ + +

This is the placeholder content for the Contact tab.

+
+
+
\ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_05_Nav_Style_Pills.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_05_Nav_Style_Pills.razor new file mode 100644 index 000000000..bfe04755b --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_05_Nav_Style_Pills.razor @@ -0,0 +1,17 @@ + + + +

This is the placeholder content for the Home tab.

+
+
+ + +

This is the placeholder content for the Profile tab.

+
+
+ + +

This is the placeholder content for the Contact tab.

+
+
+
\ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_06_Nav_Style_Underline.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_06_Nav_Style_Underline.razor new file mode 100644 index 000000000..77d52dcb3 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_06_Nav_Style_Underline.razor @@ -0,0 +1,17 @@ + + + +

This is the placeholder content for the Home tab.

+
+
+ + +

This is the placeholder content for the Profile tab.

+
+
+ + +

This is the placeholder content for the Contact tab.

+
+
+
\ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_07_Vertical_A.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_07_Vertical_A.razor new file mode 100644 index 000000000..65b4d6dfd --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_07_Vertical_A.razor @@ -0,0 +1,22 @@ + + + +

This is the placeholder content for the Home tab.

+
+
+ + +

This is the placeholder content for the Profile tab.

+
+
+ + +

This is the placeholder content for the Contact tab.

+
+
+ + +

This is the placeholder content for the About tab.

+
+
+
\ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_07_Vertical_B_Pills.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_07_Vertical_B_Pills.razor new file mode 100644 index 000000000..75498ae6e --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_07_Vertical_B_Pills.razor @@ -0,0 +1,22 @@ + + + +

This is the placeholder content for the Home tab.

+
+
+ + +

This is the placeholder content for the Profile tab.

+
+
+ + +

This is the placeholder content for the Contact tab.

+
+
+ + +

This is the placeholder content for the About tab.

+
+
+
\ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_07_Vertical_C_Underline.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_07_Vertical_C_Underline.razor new file mode 100644 index 000000000..a150f6ade --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_07_Vertical_C_Underline.razor @@ -0,0 +1,22 @@ + + + +

This is the placeholder content for the Home tab.

+
+
+ + +

This is the placeholder content for the Profile tab.

+
+
+ + +

This is the placeholder content for the Contact tab.

+
+
+ + +

This is the placeholder content for the About tab.

+
+
+
\ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_08_Activate_Individual_Tabs.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_08_Activate_Individual_Tabs.razor new file mode 100644 index 000000000..5076f82af --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_08_Activate_Individual_Tabs.razor @@ -0,0 +1,50 @@ + + + +

This is the placeholder content for the Home tab.

+
+
+ + +

This is the placeholder content for the Profile tab.

+
+
+ + +

This is the placeholder content for the Contact tab.

+
+
+ + +

This is the placeholder content for the Products tab.

+
+
+ + +

This is the placeholder content for the FAQs tab.

+
+
+ + +

This is the placeholder content for the About tab.

+
+
+
+ + + + + + + + +@code{ + Tabs tabs = default!; + + private async Task ShowFirstTabAsync() => await tabs.ShowFirstTabAsync(); + private async Task ShowSecondTabAsync() => await tabs.ShowTabByIndexAsync(1); + private async Task ShowThirdTabAsync() => await tabs.ShowTabByIndexAsync(2); + private async Task ShowProductsTabAsync() => await tabs.ShowTabByNameAsync("Products"); + private async Task ShowFaqsAsync() => await tabs.ShowTabByNameAsync("FAQ"); + private async Task ShowLastTabAsync() => await tabs.ShowLastTabAsync(); +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_09_Events_Order.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_09_Events_Order.razor new file mode 100644 index 000000000..9913fe9de --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_09_Events_Order.razor @@ -0,0 +1,46 @@ + + + +

This is the placeholder content for the Home tab.

+
+
+ + +

This is the placeholder content for the Profile tab.

+
+
+ + +

This is the placeholder content for the Contact tab.

+
+
+
+ +
+ @foreach (var item in messages) + { +

Event: @item.Event, Active Tab: @item.ActiveTabTitle, Previous Tab: @item.PreviousActiveTabTitle

+ } +
+ +@code { + record TabMessage(string Event, string ActiveTabTitle, string PreviousActiveTabTitle); + + List messages = new List(); + + private void OnTabShowingAsync(TabsEventArgs args) + => messages.Add(new("OnShowing", args.ActiveTabTitle, args.PreviousActiveTabTitle)); + + private void OnTabShownAsync(TabsEventArgs args) + => messages.Add(new("OnShown", args.ActiveTabTitle, args.PreviousActiveTabTitle)); + + private void OnTabHidingAsync(TabsEventArgs args) + => messages.Add(new("OnHiding", args.ActiveTabTitle, args.PreviousActiveTabTitle)); + + private void OnTabHiddenAsync(TabsEventArgs args) + => messages.Add(new("OnHidden", args.ActiveTabTitle, args.PreviousActiveTabTitle)); +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_10_Events_Example.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_10_Events_Example.razor new file mode 100644 index 000000000..5c7ddce63 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_10_Events_Example.razor @@ -0,0 +1,53 @@ + + + +

This is the placeholder content for the Home tab.

+
+
+ + +

This is the placeholder content for the Profile tab.

+
+
+ + +

This is the placeholder content for the Contact tab.

+
+
+
+ +

Current Active Tab: @activeTabTitle

+

Previous Active Tab: @previousActiveTabTitle

+ +@code { + private string? activeTabTitle; + private string? previousActiveTabTitle; + + private void OnTabShowingAsync(TabsEventArgs args) + { + //activeTabTitle = args.ActiveTabTitle; + //previousActiveTabTitle = args.PreviousActiveTabTitle; + } + + private void OnTabShownAsync(TabsEventArgs args) + { + activeTabTitle = args.ActiveTabTitle; + previousActiveTabTitle = args.PreviousActiveTabTitle; + } + + private void OnTabHidingAsync(TabsEventArgs args) + { + //activeTabTitle = args.ActiveTabTitle; + //previousActiveTabTitle = args.PreviousActiveTabTitle; + } + + private void OnTabHiddenAsync(TabsEventArgs args) + { + //activeTabTitle = args.ActiveTabTitle; + //previousActiveTabTitle = args.PreviousActiveTabTitle; + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_11_Methods_Set_Active_Tab_OnAfterRender.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_11_Methods_Set_Active_Tab_OnAfterRender.razor new file mode 100644 index 000000000..a8611773b --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_11_Methods_Set_Active_Tab_OnAfterRender.razor @@ -0,0 +1,53 @@ + + + +

This is the placeholder content for the Home tab.

+
+
+ + +

This is the placeholder content for the Profile tab.

+
+
+ + +

This is the placeholder content for the Contact tab.

+
+
+ + +

This is the placeholder content for the About tab.

+
+
+
+ +@code { + Tabs tabs = default!; + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + string userDefaultPreferredTab = "Profile"; // Get the value from Service / API + + switch (userDefaultPreferredTab) + { + case "Home": + await tabs.ShowTabByIndexAsync(0); + break; + case "Profile": + await tabs.ShowTabByIndexAsync(1); + break; + case "Contact": + await tabs.ShowTabByIndexAsync(2); + break; + case "About": + await tabs.ShowTabByIndexAsync(3); + break; + default: + await tabs.ShowTabByIndexAsync(0); + break; + } + } + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_12_Tab_Callback_Event_OnClick.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_12_Tab_Callback_Event_OnClick.razor new file mode 100644 index 000000000..189577d50 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_12_Tab_Callback_Event_OnClick.razor @@ -0,0 +1,29 @@ + + @foreach (var customer in customers) + { + + +
+ This is the placeholder content for the @customer.CustomerName tab. +
+
+
+ } +
+ +@if (selectedCustomer is not null) +{ +
Selected customer: @selectedCustomer.CustomerName
+} + +@code { + private List customers = new() { new(1, "Marvin Klein"), new(2, "Vikram Reddy"), new(3, "Bandita PA"), new(4, "Daina JJ") }; + + private Customer selectedCustomer = default!; + + protected override void OnInitialized() => selectedCustomer = customers.First(); + + private void OnTabClick(TabEventArgs args, Customer customer) => selectedCustomer = customer; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_13_Dynamic_Tabs.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_13_Dynamic_Tabs.razor new file mode 100644 index 000000000..33e5533e1 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_13_Dynamic_Tabs.razor @@ -0,0 +1,41 @@ +
+
+ +
+ + + + @foreach (var customer in customers) + { + + +
+ This is the placeholder content for the @customer.CustomerName tab. +
+
+
+ } +
+
+
+
+ +@code { + Tabs tabsRef = default!; + + private List customers = default!; + + protected override void OnInitialized() + { + customers = new() { new(1, "Marvin Klein"), new(2, "Vikram Reddy"), new(3, "Bandita PA"), new(4, "Daina JJ") }; + } + + private void AddCustomer() + { + var count = customers.Count; + var customer = new Customer(count + 1, $"Customer {count + 1}"); + customers.Add(customer); + + tabsRef.ShowRecentTab(); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_14_Remove_Dynamic_Tabs.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_14_Remove_Dynamic_Tabs.razor new file mode 100644 index 000000000..9eb9d144f --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_14_Remove_Dynamic_Tabs.razor @@ -0,0 +1,57 @@ +
+
+ +
+ + + + @foreach (var customer in customers) + { + + +
+
+ This is the placeholder content for the @customer.CustomerName tab. +
+
+ +
+
+
+
+ } +
+
+
+
+ +@code { + Tabs tabsRef = default!; + + int count = 1; + private List customers = default!; + + protected override void OnInitialized() + { + customers = new() { new(1, "Marvin Klein"), new(2, "Vikram Reddy"), new(3, "Bandita PA"), new(4, "Daina JJ") }; + count = customers.Count; + } + + private void AddCustomer() + { + count++; + var customer = new Customer(count, $"Customer {count}"); + customers.Add(customer); + + tabsRef.ShowRecentTab(); + } + + private void RemoveCustomer(Customer customer) + { + customers.Remove(customer); + + tabsRef.RemoveTabByName(customer.CustomerId.ToString()); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/ToastsDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/ToastsDocumentation.razor new file mode 100644 index 000000000..dddcf69c5 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/ToastsDocumentation.razor @@ -0,0 +1,58 @@ +@page "/toasts" + +@title + + + +

Blazor Toasts

+
Push notifications to your visitors with a toast, a lightweight and easily customizable alert message.
+ + + +
Blazor Toasts are lightweight notifications designed to mimic the push notifications that mobile and desktop operating systems have popularized. They're built with a flexbox, making it easy to align and position.
+ + +
    +
  • Blazor Toasts will not hide automatically if you do not specify AutoHide="true".
  • +
  • Use global toasts service for the application instead of page level toasts.
  • +
+ + + + + + + + +
Add AutoHide="true" parameter to hide the Blazor Toasts after the delay. The default delay is 5000 milliseconds, be sure to update the delay timeout so that users have enough time to read the toast.
+ + + +
Set AutoHide="true" property on ToastMessage to hide individual Blazor Toast message after the delay. The default delay is 5000 milliseconds, be sure to update the delay timeout so that users have enough time to read the toast.
+
In the below example, AutoHide="false" for Danger and Warning messages.
+ + + +
Change the Blazor Toasts placement according to your need. The default placement will be top right corner. Use the ToastsPlacement parameter to update the Blazor Toasts placement.
+ + + +
Blazor Toasts component shows a maximum of 5 toasts by default. If you add a new toast to the existing list, the first toast gets deleted like FIFO (First In First Out). Change the maximum capacity according to your need by using the StackLength parameter.
+
In the below example, StackLength is set to 3. It shows a maximum of 3 toast messages at any time.
+ + + +
1. Add the Toasts component in MainLayout.razor page as shown below.
+ + + Set the Toasts component parameters as per your requirement. + +
2. Inject ToastService, then call the Notify(...) method as shown below.
+ + +@code { + private string pageUrl = "/toasts"; + private string title = "Blazor Toasts Component"; + private string description = "Push notifications to your visitors with a toast, a lightweight and easily customizable Blazor Bootstrap alert message."; + private string imageUrl = "https://i.imgur.com/VRglJqU.jpg"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_01_Toast_With_Title.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_01_Toast_With_Title.razor new file mode 100644 index 000000000..f2fdfdf8a --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_01_Toast_With_Title.razor @@ -0,0 +1,24 @@ + + + + + + + + + + +@code { + List messages = new List(); + + private void ShowMessage(ToastType toastType) => messages.Add(CreateToastMessage(toastType)); + + private ToastMessage CreateToastMessage(ToastType toastType) + => new ToastMessage + { + Type = toastType, + Title = "Blazor Bootstrap", + HelpText = $"{DateTime.Now}", + Message = $"Hello, world! This is a toast message. DateTime: {DateTime.Now}", + }; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_02_Toast_Without_Title.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_02_Toast_Without_Title.razor new file mode 100644 index 000000000..306635fa6 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_02_Toast_Without_Title.razor @@ -0,0 +1,23 @@ + + + + + + + + + + + +@code { + List messages = new List(); + + private void ShowMessage(ToastType toastType) => messages.Add(CreateToastMessage(toastType)); + + private ToastMessage CreateToastMessage(ToastType toastType) + => new ToastMessage + { + Type = toastType, + Message = $"Hello, world! This is a simple toast message. DateTime: {DateTime.Now}", + }; +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_03_A_Auto_Hide.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_03_A_Auto_Hide.razor new file mode 100644 index 000000000..bad9ce3d3 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_03_A_Auto_Hide.razor @@ -0,0 +1,24 @@ + + + + + + + + + + +@code { + List messages = new List(); + + private void ShowMessage(ToastType toastType) => messages.Add(CreateToastMessage(toastType)); + + private ToastMessage CreateToastMessage(ToastType toastType) + => new ToastMessage + { + Type = toastType, + Title = "Blazor Bootstrap", + HelpText = $"{DateTime.Now}", + Message = $"Hello, world! This is a toast message. DateTime: {DateTime.Now}", + }; +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_03_B_Auto_Hide_Individual_Messages.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_03_B_Auto_Hide_Individual_Messages.razor new file mode 100644 index 000000000..714d0aeca --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_03_B_Auto_Hide_Individual_Messages.razor @@ -0,0 +1,29 @@ + + + + + + + + + + +@code { + List messages = new List(); + + private void ShowMessage(ToastType toastType) => messages.Add(CreateToastMessage(toastType)); + + private ToastMessage CreateToastMessage(ToastType toastType) + { + var toastMessage = new ToastMessage(); + + toastMessage.Type = toastType; + toastMessage.Title = "Blazor Bootstrap"; + toastMessage.HelpText = $"{DateTime.Now}"; + toastMessage.Message = $"Hello, world! This is a toast message. DateTime: {DateTime.Now}"; + // disable auto hide for `danger` and `warning` messages. + toastMessage.AutoHide = !(toastType == ToastType.Danger || toastType == ToastType.Warning); + + return toastMessage; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_04_Placement.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_04_Placement.razor new file mode 100644 index 000000000..aef0475f3 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_04_Placement.razor @@ -0,0 +1,32 @@ + + + + + + + + + + + + +@code { + ToastsPlacement toastsPlacement = ToastsPlacement.TopRight; + List messages = new(); + + private void ChangePlacement(ToastsPlacement placement) + { + if (!messages.Any()) + { + messages.Add( + new ToastMessage() + { + Type = ToastType.Success, + Title = "Blazor Bootstrap", + HelpText = $"{DateTime.Now}", + Message = $"Hello, world! This is a toast message. DateTime: {DateTime.Now}", + }); + } + toastsPlacement = placement; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_05_StackLength.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_05_StackLength.razor new file mode 100644 index 000000000..bdcb45b42 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_05_StackLength.razor @@ -0,0 +1,24 @@ + + + + + + + + + + +@code { + List messages = new List(); + + private void ShowMessage(ToastType toastType) => messages.Add(CreateToastMessage(toastType)); + + private ToastMessage CreateToastMessage(ToastType toastType) + => new ToastMessage + { + Type = toastType, + Title = "Blazor Bootstrap", + HelpText = $"{DateTime.Now}", + Message = $"Hello, world! This is a toast message. DateTime: {DateTime.Now}", + }; +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_06_Global_Toasts_Service_For_Application_01.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_06_Global_Toasts_Service_For_Application_01.razor new file mode 100644 index 000000000..b1ef6764c --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_06_Global_Toasts_Service_For_Application_01.razor @@ -0,0 +1,9 @@ +@inherits LayoutComponentBase + +... + +... MainLayour.razor code goes here ... + +... + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_06_Global_Toasts_Service_For_Application_02.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_06_Global_Toasts_Service_For_Application_02.razor new file mode 100644 index 000000000..ff1e17730 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Toasts/Toasts_Demo_06_Global_Toasts_Service_For_Application_02.razor @@ -0,0 +1,20 @@ +@code { + + [Inject] protected ToastService ToastService { get; set; } = default!; + + private void SaveEmployee() + { + try + { + // TODO: call the service/api to save the employee details + + ToastService.Notify(new(ToastType.Success, $"Employee details saved successfully.")); + } + catch(Exception ex) + { + // handle exception + + ToastService.Notify(new(ToastType.Danger, $"Error: {ex.Message}.")); + } + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/TooltipsDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/TooltipsDocumentation.razor new file mode 100644 index 000000000..e936a98c4 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/TooltipsDocumentation.razor @@ -0,0 +1,51 @@ +@page "/tooltips" + +@title + + + +

Blazor Tooltips

+ + + + + + + + + + + By default, Button supports tooltips via TooltipTitle and TooltipPlacement parameters. + See Buttons - Tooltip. + + + + + +@* START: Commented Examples *@ +@* + + + +*@ +@* END: Commented Examples *@ + + +
+ Blazor Bootstrap includes several predefined tooltip styles, each serving its own semantic purpose. + The Color parameter can be used to customize the color of the tooltip. +
+ + + + + + + + +@code { + private string pageUrl = "/tooltips"; + private string title = "Blazor Tooltip Component"; + private string description = "Use Blazor Bootstrap tooltip component to add custom tooltips to your web pages."; + private string imageUrl = "https://i.imgur.com/PGlmZS3.jpg"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_01_Examples.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_01_Examples.razor new file mode 100644 index 000000000..1c81f1f9c --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_01_Examples.razor @@ -0,0 +1,4 @@ +Tooltip Left +Tooltip Top +Tooltip Right +Tooltip Bottom diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_02_Disabled_Button_With_Tooltip.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_02_Disabled_Button_With_Tooltip.razor new file mode 100644 index 000000000..49193bd43 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_02_Disabled_Button_With_Tooltip.razor @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_03_Icon_With_Click_Event.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_03_Icon_With_Click_Event.razor new file mode 100644 index 000000000..1116a9ac5 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_03_Icon_With_Click_Event.razor @@ -0,0 +1,10 @@ + + + + +@code{ + private void OnClick() + { + Console.WriteLine($"clicked"); + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_04_Dynamically_Update_Tooltip_Text.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_04_Dynamically_Update_Tooltip_Text.razor new file mode 100644 index 000000000..e6a8e7d4a --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_04_Dynamically_Update_Tooltip_Text.razor @@ -0,0 +1,10 @@ +
+ Tooltip Bottom +
+ + +@code { + private string text = "Tooltip text"; + + private void ChangeTooltip() => text = $"Updated {DateTime.Now.ToLongTimeString()}"; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_05_Tooltip_With_Navigation_Link.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_05_Tooltip_With_Navigation_Link.razor new file mode 100644 index 000000000..dad7fdf34 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_05_Tooltip_With_Navigation_Link.razor @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_06_Colors.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_06_Colors.razor new file mode 100644 index 000000000..75e99978a --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_06_Colors.razor @@ -0,0 +1,29 @@ +
+
+ Default Tooltip +
+
+ Primary Tooltip +
+
+ Secondary Tooltip +
+
+ Success Tooltip +
+
+ Danger Tooltip +
+
+ Warning Tooltip +
+
+ Info Tooltip +
+
+ Light Tooltip +
+
+ Dark Tooltip +
+
diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_07_Dynamically_Change_Color.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_07_Dynamically_Change_Color.razor new file mode 100644 index 000000000..5108208c2 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_07_Dynamically_Change_Color.razor @@ -0,0 +1,31 @@ +Tooltip Top + +
+
+ + + + + +@code { + private string? title = "Tooltip Top"; + private TooltipColor tooltipColor; + + private void UpdateTooltipToPrimary() + { + tooltipColor = TooltipColor.Primary; + title = "Tooltip Top Primary"; + } + + private void UpdateTooltipToSuccess() + { + tooltipColor = TooltipColor.Success; + title = "Tooltip Top Success"; + } + + private void UpdateTooltipToDanger() + { + tooltipColor = TooltipColor.Danger; + title = "Tooltip Top Danger"; + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_08_HTML.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_08_HTML.razor new file mode 100644 index 000000000..2d205b744 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Tooltips/Tooltips_Demo_08_HTML.razor @@ -0,0 +1 @@ +Tooltip with HTML diff --git a/BlazorBootstrap.Demo.RCL/Components/Shared/CarbonAds.razor b/BlazorBootstrap.Demo.RCL/Components/Shared/CarbonAds.razor new file mode 100644 index 000000000..4529e33bb --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Shared/CarbonAds.razor @@ -0,0 +1,6 @@ +@namespace BlazorBootstrap.Demo.RCL + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Shared/CarbonAds.razor.cs b/BlazorBootstrap.Demo.RCL/Components/Shared/CarbonAds.razor.cs new file mode 100644 index 000000000..349665ed6 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Shared/CarbonAds.razor.cs @@ -0,0 +1,11 @@ +namespace BlazorBootstrap.Demo.RCL; + +public partial class CarbonAds : ComponentBase +{ + #region Properties, Indexers + + [Parameter] + public string? Class { get; set; } + + #endregion +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Shared/CodeSnippet.cs b/BlazorBootstrap.Demo.RCL/Components/Shared/CodeSnippet.cs new file mode 100644 index 000000000..1ee0bf913 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Shared/CodeSnippet.cs @@ -0,0 +1,90 @@ +namespace BlazorBootstrap.Demo.RCL; + +public class CodeSnippet : ComponentBase +{ + #region Members + + private string? code; + + #endregion + + #region Methods + + protected override async Task OnParametersSetAsync() + { + if (code is null) + { + if (!string.IsNullOrWhiteSpace(File)) + { + var resourceName = File.Replace("~", typeof(CodeSnippet).Assembly.GetName().Name).Replace("/", ".").Replace("\\", "."); + + using (Stream stream = typeof(CodeSnippet).Assembly.GetManifestResourceStream(resourceName)!) + { + using (StreamReader reader = new StreamReader(stream)) + { + code = await reader.ReadToEndAsync(); + } + } + } + } + } + + private string? GetLanguageFromFileExtension() + { + if (string.IsNullOrWhiteSpace(File)) + return null; + + return Path.GetExtension(File).ToLower() switch + { + ".razor" => "cshtml", + ".cshtml" => "cshtml", + ".html" => "html", + ".css" => "css", + ".cs" => "csharp", + ".txt" => "none", + ".js" => "js", + _ => null + }; + } + + protected override void BuildRenderTree(RenderTreeBuilder builder) + { + // no base call + builder.AddMarkupContent(0, ""); + + builder.OpenElement(300, "div"); + builder.AddAttribute(301, "class", "highlight show-code-only"); + builder.OpenElement(400, "pre"); + builder.OpenElement(401, "code"); + builder.AddAttribute(402, "class", $"language-{Language ?? GetLanguageFromFileExtension() ?? "cshtml"}"); + if (code != null) + { + builder.AddContent(403, code.Trim()); + } + builder.CloseElement(); // end: code + builder.CloseElement(); // end: pre + builder.CloseElement(); + + builder.AddMarkupContent(700, ""); + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if(firstRender) + await JS.InvokeVoidAsync("highlightCode"); + + await base.OnAfterRenderAsync(firstRender); + } + + #endregion + + #region Properties + + [Inject] protected IJSRuntime JS { get; set; } = null!; + + [Parameter] public string? Language { get; set; } + + [Parameter] public string? File { get; set; } + + #endregion +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Shared/Demo.razor b/BlazorBootstrap.Demo.RCL/Components/Shared/Demo.razor new file mode 100644 index 000000000..cb6b737f4 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Shared/Demo.razor @@ -0,0 +1,91 @@ +@namespace BlazorBootstrap.Demo.RCL +@inherits ComponentBase + + +@if (ShowCodeOnly) +{ +
+
+ razor +
+ + + +
+
+
+
+                    
+                        @if (codeSnippet is not null)
+                        {
+                            @codeSnippet.Trim()
+                        }
+                    
+                
+
+
+} +else if (!Tabs) +{ +
+
+ +
+
+ razor +
+ + + +
+
+
+
+                
+                    @if (codeSnippet is not null)
+                    {
+                        @codeSnippet.Trim()
+                    }
+                
+            
+
+
+} +else // Tabs = true +{ + + + + Example + + +
+ +
+
+
+ + + View Source + + +
+ + + +
+
+
+                        
+                            @if (codeSnippet is not null)
+                            {
+                                @codeSnippet.Trim()
+                            }
+                        
+                    
+
+
+
+
+} + diff --git a/BlazorBootstrap.Demo.RCL/Components/Shared/Demo.razor.cs b/BlazorBootstrap.Demo.RCL/Components/Shared/Demo.razor.cs new file mode 100644 index 000000000..3eb6f756b --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Shared/Demo.razor.cs @@ -0,0 +1,117 @@ +namespace BlazorBootstrap.Demo.RCL; + +public partial class Demo : ComponentBase +{ + #region Fields and Constants + + private IconColor clipboardTooltipIconColor = IconColor.Dark; + + private IconName clipboardTooltipIconName = IconName.Clipboard; + + private string? clipboardTooltipTitle = "Copy to clipboard"; + + private string? codeSnippet; + + /// + /// A reference to this component instance for use in JavaScript calls. + /// + private DotNetObjectReference objRef = default!; + + #endregion + + #region Methods + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + await JS.InvokeVoidAsync("highlightCode"); + + await base.OnAfterRenderAsync(firstRender); + } + + protected override async Task OnInitializedAsync() + { + objRef ??= DotNetObjectReference.Create(this); + await base.OnInitializedAsync(); + } + + protected override async Task OnParametersSetAsync() + { + if (codeSnippet is null) + { + var resourceName = Type.FullName + ".razor"; + + using (var stream = Type.Assembly.GetManifestResourceStream(resourceName)!) + { + try + { + if (stream is null) + return; + + using (var reader = new StreamReader(stream)) + { + codeSnippet = await reader.ReadToEndAsync(); + } + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + } + } + } + } + + /// + /// Handles a copy error event from JavaScript. + /// + /// The error message. + [JSInvokable] + public void OnCopyFailJS(string errorMessage) + { + // TODO: show message + } + + /// + /// Handles a copy success event from JavaScript. + /// + [JSInvokable] + public void OnCopySuccessJS() + { + clipboardTooltipTitle = "Copied!"; + clipboardTooltipIconName = IconName.Check2; + clipboardTooltipIconColor = IconColor.Success; + + StateHasChanged(); + } + + /// + /// Handles a copy status reset event from JavaScript. + /// + [JSInvokable] + public void ResetCopyStatusJS() + { + clipboardTooltipTitle = "Copy to clipboard"; + clipboardTooltipIconName = IconName.Clipboard; + clipboardTooltipIconColor = IconColor.Dark; + + StateHasChanged(); + } + + private async Task CopyToClipboardAsync() => await JS.InvokeVoidAsync("copyToClipboard", codeSnippet, objRef); + + #endregion + + #region Properties, Indexers + + [Inject] protected IJSRuntime JS { get; set; } = default!; + + [Parameter] public string LanguageCssClass { get; set; } = "language-cshtml"; + + [Parameter] public bool ShowCodeOnly { get; set; } + + [Parameter] public bool Tabs { get; set; } = false; + + [Parameter] public Type Type { get; set; } = default!; + + #endregion +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Shared/Demo.razor.css b/BlazorBootstrap.Demo.RCL/Components/Shared/Demo.razor.css new file mode 100644 index 000000000..6d21ea991 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Shared/Demo.razor.css @@ -0,0 +1,4 @@ +.highlight-toolbar { + color: #212529; + background-color: #f8f9fa; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Shared/MetaTags.razor b/BlazorBootstrap.Demo.RCL/Components/Shared/MetaTags.razor new file mode 100644 index 000000000..d848b80f4 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Shared/MetaTags.razor @@ -0,0 +1,25 @@ +@namespace BlazorBootstrap.Demo.RCL + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.RCL/Components/Shared/MetaTags.razor.cs b/BlazorBootstrap.Demo.RCL/Components/Shared/MetaTags.razor.cs new file mode 100644 index 000000000..330ecbad4 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Shared/MetaTags.razor.cs @@ -0,0 +1,43 @@ +namespace BlazorBootstrap.Demo.RCL; + +public partial class MetaTags : ComponentBase +{ + #region Members + + private string siteName => "Blazor Bootstrap"; + + private string title => $"{Title} | {siteName}"; + + private string url => $"https://demos.blazorbootstrap.com{PageUrl}"; + + #endregion + + #region Methods + + #endregion + + #region Properties + + /// + /// Meta Url. + /// Example: /alerts, /modal + /// + [Parameter] public string PageUrl { get; set; } = null!; + + /// + /// Page Title / Meta Title. + /// + [Parameter] public string Title { get; set; } = null!; + + /// + /// Meta Description. + /// + [Parameter] public string Description { get; set; } = null!; + + /// + /// Meta Image Url. + /// + [Parameter] public string ImageUrl { get; set; } = null!; + + #endregion +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Shared/SectionHeading.razor b/BlazorBootstrap.Demo.RCL/Components/Shared/SectionHeading.razor new file mode 100644 index 000000000..92f3d714c --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Shared/SectionHeading.razor @@ -0,0 +1,32 @@ +@namespace BlazorBootstrap.Demo.RCL + +@if (Size == HeadingSize.H2) +{ +

+ @Text# +

+} +else if (Size == HeadingSize.H3) +{ +

+ @Text# +

+} +else if (Size == HeadingSize.H4) +{ +

+ @Text# +

+} +else if (Size == HeadingSize.H5) +{ +
+ @Text# +
+} +else if (Size == HeadingSize.H6) +{ +
+ @Text# +
+} diff --git a/BlazorBootstrap.Demo.RCL/Components/Shared/SectionHeading.razor.cs b/BlazorBootstrap.Demo.RCL/Components/Shared/SectionHeading.razor.cs new file mode 100644 index 000000000..56a57ff6b --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Shared/SectionHeading.razor.cs @@ -0,0 +1,39 @@ +namespace BlazorBootstrap.Demo.RCL; +public partial class SectionHeading : ComponentBase +{ + #region Members + + private string link => $"{PageUrl}#{HashTagName}".Trim().ToLower(); + + #endregion + + #region Methods + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + await Task.Delay(200); + await JS.InvokeVoidAsync("navigateToHeading"); + await base.OnAfterRenderAsync(firstRender); + } + + private async Task OnClick() + { + await JS.InvokeVoidAsync("navigateToHeading"); + } + + #endregion + + #region Properties + + [Parameter] public HeadingSize Size { get; set; } + + [Parameter] public string Text { get; set; } = null!; + + [Parameter] public string PageUrl { get; set; } = null!; + + [Parameter] public string HashTagName { get; set; } = null!; + + [Inject] protected IJSRuntime JS { get; set; } = null!; + + #endregion +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Shared/Skippy.razor b/BlazorBootstrap.Demo.RCL/Components/Shared/Skippy.razor new file mode 100644 index 000000000..b3f43514b --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Shared/Skippy.razor @@ -0,0 +1,10 @@ +@namespace BlazorBootstrap.Demo.RCL +@inherits ComponentBase + + diff --git a/BlazorBootstrap.Demo.RCL/Components/Shared/Skippy.razor.cs b/BlazorBootstrap.Demo.RCL/Components/Shared/Skippy.razor.cs new file mode 100644 index 000000000..2e7a27c05 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Shared/Skippy.razor.cs @@ -0,0 +1,10 @@ +namespace BlazorBootstrap.Demo.RCL; + +public partial class Skippy : ComponentBase +{ + [Parameter] + public string Url { get; set; } = default!; + + [Parameter] + public RenderFragment ChildContent { get; set; } = default!; +} diff --git a/BlazorBootstrap.Demo.RCL/Components/Shared/Skippy.razor.css b/BlazorBootstrap.Demo.RCL/Components/Shared/Skippy.razor.css new file mode 100644 index 000000000..e69de29bb diff --git a/BlazorBootstrap.Demo.RCL/Models/Customer.cs b/BlazorBootstrap.Demo.RCL/Models/Customer.cs new file mode 100644 index 000000000..5b0926885 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Models/Customer.cs @@ -0,0 +1,3 @@ +namespace BlazorBootstrap.Demo.RCL.Models; + +public record Customer(int CustomerId, string? CustomerName); diff --git a/BlazorBootstrap.Demo.RCL/Models/Customer2.cs b/BlazorBootstrap.Demo.RCL/Models/Customer2.cs new file mode 100644 index 000000000..c579be1c3 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Models/Customer2.cs @@ -0,0 +1,12 @@ +namespace BlazorBootstrap.Demo.RCL.Models; + +public record Customer2 +( + int CustomerId, + string? CustomerName, + string? Phone, + string? Email, + string? Address, + string? PostalZip, + string? Country +); diff --git a/BlazorBootstrap.Demo.RCL/Models/Department.cs b/BlazorBootstrap.Demo.RCL/Models/Department.cs new file mode 100644 index 000000000..6079a6415 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Models/Department.cs @@ -0,0 +1,13 @@ +namespace BlazorBootstrap.Demo.RCL.Models; + +public class Department +{ + public string? Name { get; set; } + public List Employees { get; set; } + + public Department(string name, List employees) + { + Name = name; + Employees = employees; + } +} diff --git a/BlazorBootstrap.Demo.RCL/Models/Employee.cs b/BlazorBootstrap.Demo.RCL/Models/Employee.cs new file mode 100644 index 000000000..23d1474cb --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Models/Employee.cs @@ -0,0 +1,12 @@ +namespace BlazorBootstrap.Demo.RCL.Models; + +public class Employee +{ + public int Id { get; set; } + public string? FirstName { get; set; } + public string? LastName { get; set; } + public string? Designation { get; set; } + public decimal Salary { get; set; } + public DateTime DOJ { get; set; } + public bool IsActive { get; set; } +} diff --git a/BlazorBootstrap.Demo.RCL/Models/Employee1.cs b/BlazorBootstrap.Demo.RCL/Models/Employee1.cs new file mode 100644 index 000000000..b23f506a5 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Models/Employee1.cs @@ -0,0 +1,10 @@ +namespace BlazorBootstrap.Demo.RCL.Models; + +public record class Employee1 +{ + public int Id { get; set; } + public string? Name { get; set; } + public string? Designation { get; set; } + public DateOnly DOJ { get; set; } + public bool IsActive { get; set; } +} diff --git a/BlazorBootstrap.Demo.RCL/Models/Employee2.cs b/BlazorBootstrap.Demo.RCL/Models/Employee2.cs new file mode 100644 index 000000000..9c13d72d4 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Models/Employee2.cs @@ -0,0 +1,10 @@ +namespace BlazorBootstrap.Demo.RCL.Models; + +public record class Employee2 +{ + public int Id { get; init; } + public string? Name { get; init; } + public string? Designation { get; init; } + public decimal Salary { get; init; } + public bool IsActive { get; init; } +} diff --git a/BlazorBootstrap.Demo.RCL/Models/Employee3.cs b/BlazorBootstrap.Demo.RCL/Models/Employee3.cs new file mode 100644 index 000000000..2e64d131d --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Models/Employee3.cs @@ -0,0 +1,14 @@ +namespace BlazorBootstrap.Demo.RCL.Models; + +public record class Employee3 +{ + public int Id { get; init; } + public string? FirstName { get; init; } + public string? LastName { get; init; } + public string? Email { get; set; } + public string? Company { get; set; } + public string? Designation { get; init; } + public DateOnly DOJ { get; init; } + public decimal Salary { get; init; } + public bool IsActive { get; init; } +} diff --git a/BlazorBootstrap.Demo.RCL/Models/Employee4.cs b/BlazorBootstrap.Demo.RCL/Models/Employee4.cs new file mode 100644 index 000000000..0e7432ba3 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Models/Employee4.cs @@ -0,0 +1,10 @@ +namespace BlazorBootstrap.Demo.RCL.Models; + +public record class Employee4 +{ + public int? Id { get; set; } + public string? Name { get; set; } + public string? Designation { get; set; } + public DateOnly? DOJ { get; set; } + public bool IsActive { get; set; } +} diff --git a/BlazorBootstrap.Demo.RCL/RegisterServices.cs b/BlazorBootstrap.Demo.RCL/RegisterServices.cs new file mode 100644 index 000000000..16a220542 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/RegisterServices.cs @@ -0,0 +1,12 @@ +namespace BlazorBootstrap.Demo.RCL; + +public static class RegisterServices +{ + public static IServiceCollection AddDemoServices(this IServiceCollection services) + { + services.AddScoped(); + services.AddScoped(); + + return services; + } +} diff --git a/BlazorBootstrap.Demo.RCL/Services/CustomerService.cs b/BlazorBootstrap.Demo.RCL/Services/CustomerService.cs new file mode 100644 index 000000000..aa0a07757 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Services/CustomerService.cs @@ -0,0 +1,102 @@ +namespace BlazorBootstrap.Demo.RCL.Services; + +public class CustomerService : ICustomerService +{ + private readonly HttpClient _httpClient; + + public CustomerService(HttpClient httpClient) + { + _httpClient = httpClient; + } + + public async Task> GetCustomersAsync(FilterItem filter, CancellationToken cancellationToken = default) + { + var customers = await _httpClient.GetFromJsonAsync("sample-data/customer/customer.json", cancellationToken); + if (customers is null) + return Enumerable.Empty(); + + var parameterExpression = Expression.Parameter(typeof(Customer2)); // second param optional + var lambda = ExpressionExtensions.GetExpressionDelegate(parameterExpression, filter); + return customers.Where(lambda!.Compile()).OrderBy(customer => customer.CustomerName); + } + + public async Task, int>> GetCustomersAsync(IEnumerable filters, int pageNumber, int pageSize, string sortKey, SortDirection sortDirection, CancellationToken cancellationToken = default) + { + var customers = await _httpClient.GetFromJsonAsync>("sample-data/customer/customer.json", cancellationToken); + if (customers is null) + return new(Enumerable.Empty(), 0); + + // apply filters + if (filters is not null && filters.Any()) + { + var parameterExpression = Expression.Parameter(typeof(Customer2)); // second param optional + Expression>? lambda = null; + + foreach (var filter in filters) + { + if (lambda is null) + lambda = ExpressionExtensions.GetExpressionDelegate(parameterExpression, filter)!; + else + lambda = lambda.And(ExpressionExtensions.GetExpressionDelegate(parameterExpression, filter)!); + } + customers = customers.Where(lambda!.Compile()); + } + + // apply sorting then paging + if (sortKey == "CustomerId") + { + if (sortDirection == SortDirection.Ascending) + return new(customers.OrderBy(e => e.CustomerId).Skip((pageNumber - 1) * pageSize).Take(pageSize), customers.Count()); + else if (sortDirection == SortDirection.Descending) + return new(customers.OrderByDescending(e => e.CustomerId).Skip((pageNumber - 1) * pageSize).Take(pageSize), customers.Count()); + } + else if (sortKey == "CustomerName") + { + if (sortDirection == SortDirection.Ascending) + return new(customers.OrderBy(e => e.CustomerName).Skip((pageNumber - 1) * pageSize).Take(pageSize), customers.Count()); + else if (sortDirection == SortDirection.Descending) + return new(customers.OrderByDescending(e => e.CustomerName).Skip((pageNumber - 1) * pageSize).Take(pageSize), customers.Count()); + } + else if (sortKey == "Phone") + { + if (sortDirection == SortDirection.Ascending) + return new(customers.OrderBy(e => e.Phone).Skip((pageNumber - 1) * pageSize).Take(pageSize), customers.Count()); + else if (sortDirection == SortDirection.Descending) + return new(customers.OrderByDescending(e => e.Phone).Skip((pageNumber - 1) * pageSize).Take(pageSize), customers.Count()); + } + else if (sortKey == "Email") + { + if (sortDirection == SortDirection.Ascending) + return new(customers.OrderBy(e => e.Email).Skip((pageNumber - 1) * pageSize).Take(pageSize), customers.Count()); + else if (sortDirection == SortDirection.Descending) + return new(customers.OrderByDescending(e => e.Email).Skip((pageNumber - 1) * pageSize).Take(pageSize), customers.Count()); + } + else if (sortKey == "Address") + { + if (sortDirection == SortDirection.Ascending) + return new(customers.OrderBy(e => e.Address).Skip((pageNumber - 1) * pageSize).Take(pageSize), customers.Count()); + else if (sortDirection == SortDirection.Descending) + return new(customers.OrderByDescending(e => e.Address).Skip((pageNumber - 1) * pageSize).Take(pageSize), customers.Count()); + } + else if (sortKey == "PostalZip") + { + if (sortDirection == SortDirection.Ascending) + return new(customers.OrderBy(e => e.PostalZip).Skip((pageNumber - 1) * pageSize).Take(pageSize), customers.Count()); + else if (sortDirection == SortDirection.Descending) + return new(customers.OrderByDescending(e => e.PostalZip).Skip((pageNumber - 1) * pageSize).Take(pageSize), customers.Count()); + } + else if (sortKey == "Country") + { + if (sortDirection == SortDirection.Ascending) + return new(customers.OrderBy(e => e.Country).Skip((pageNumber - 1) * pageSize).Take(pageSize), customers.Count()); + else if (sortDirection == SortDirection.Descending) + return new(customers.OrderByDescending(e => e.Country).Skip((pageNumber - 1) * pageSize).Take(pageSize), customers.Count()); + } + else if (string.IsNullOrEmpty(sortKey)) + { + return new(customers.Skip((pageNumber - 1) * pageSize).Take(pageSize), customers.Count()); + } + + return new(customers, customers.Count()); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Services/EmployeeService.cs b/BlazorBootstrap.Demo.RCL/Services/EmployeeService.cs new file mode 100644 index 000000000..66f171899 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Services/EmployeeService.cs @@ -0,0 +1,106 @@ +namespace BlazorBootstrap.Demo.RCL.Services; + +public class EmployeeService : IEmployeeService +{ + public Tuple, int> GetEmployees( + IEnumerable filters, + int pageNumber, + int pageSize, + string sortKey, + SortDirection sortDirection) + { + IEnumerable employees = new List + { + new Employee { Id = 101, FirstName = "Eathan", LastName = "Ellis", Designation = "Associate Architect", Salary = 19000, DOJ = new DateTime(1998, 11, 17), IsActive = true }, + new Employee { Id = 103, FirstName = "Cohan", LastName = "Wheatley", Designation = "Senior DevOps Engineer", Salary = 19000, DOJ = new DateTime(1985, 1, 5), IsActive = true }, + new Employee { Id = 116, FirstName = "Charis", LastName = "Guerra", Designation = "Data Scientist", Salary = 12000, DOJ = new DateTime(1995, 4, 17), IsActive = true }, + new Employee { Id = 110, FirstName = "Julian", LastName = "Walmsley", Designation = "Senior AI Engineer", Salary = 16500.50M, DOJ = new DateTime(1985, 6, 8), IsActive = false }, + new Employee { Id = 115, FirstName = "Emer", LastName = "Strickland", Designation = "AI Engineer", Salary = 7700, DOJ = new DateTime(1991, 8, 23), IsActive = true }, + new Employee { Id = 102, FirstName = "Kornelia", LastName = "Lord", Designation = "Developer", Salary = 8000, DOJ = new DateTime(1977, 1, 12), IsActive = true }, + new Employee { Id = 112, FirstName = "Loretta", LastName = "Koch", Designation = "Administrator", Salary = 8000, DOJ = new DateTime(1977, 1, 12), IsActive = true }, + new Employee { Id = 105, FirstName = "Ivy", LastName = "Lloyd", Designation = "Solution Architect", Salary = 24000, DOJ = new DateTime(1989, 10, 2), IsActive = true }, + new Employee { Id = 109, FirstName = "Isha", LastName = "Davison", Designation = "App Maker", Salary = 8000, DOJ = new DateTime(1994, 5, 12), IsActive = true }, + new Employee { Id = 111, FirstName = "Glenda", LastName = "Potter", Designation = "Data Engineer", Salary = 12000, DOJ = new DateTime(1991, 1, 1), IsActive = true }, + new Employee { Id = 106, FirstName = "Chance", LastName = "Bowler", Designation = "Auditor", Salary = 8000, DOJ = new DateTime(1996, 7, 1), IsActive = true }, + new Employee { Id = 114, FirstName = "Ralphy", LastName = "Estrada", Designation = "QA", Salary = 8000, DOJ = new DateTime(1994, 1, 12), IsActive = true }, + new Employee { Id = 108, FirstName = "Zayne", LastName = "Simmons", Designation = "Data Analyst", Salary = 12000, DOJ = new DateTime(1994, 5, 12), IsActive = true }, + new Employee { Id = 118, FirstName = "Kristopher", LastName = "Lawrence", Designation = "QA", Salary = 8000, DOJ = new DateTime(1995, 4, 17), IsActive = true }, + new Employee { Id = 107, FirstName = "Roisin", LastName = "Farmer", Designation = "Solutions Architect", Salary = 24000, DOJ = new DateTime(1989, 10, 2), IsActive = true }, + new Employee { Id = 113, FirstName = "Merlin", LastName = "Correa", Designation = "Content Developer", Salary = 8000, DOJ = new DateTime(1994, 5, 12), IsActive = true }, + new Employee { Id = 117, FirstName = "Sharna", LastName = "Macleod", Designation = "Data Analyst", Salary = 12000, DOJ = new DateTime(1995, 4, 17), IsActive = true }, + }; + + // apply filters + if (filters is not null && filters.Any()) + { + var parameterExpression = Expression.Parameter(typeof(Employee)); // second param optional + Expression>? lambda = null; + + foreach (var filter in filters) + { + if (lambda is null) + lambda = ExpressionExtensions.GetExpressionDelegate(parameterExpression, filter)!; + else + lambda = lambda.And(ExpressionExtensions.GetExpressionDelegate(parameterExpression, filter)!); + } + employees = employees.Where(lambda!.Compile()); + } + + // apply sorting then paging + if (sortKey == "Id") + { + if (sortDirection == SortDirection.Ascending) + return new(employees.OrderBy(e => e.Id).Skip((pageNumber - 1) * pageSize).Take(pageSize), employees.Count()); + else if (sortDirection == SortDirection.Descending) + return new(employees.OrderByDescending(e => e.Id).Skip((pageNumber - 1) * pageSize).Take(pageSize), employees.Count()); + } + else if (sortKey == "FirstName") + { + if (sortDirection == SortDirection.Ascending) + return new(employees.OrderBy(e => e.FirstName).Skip((pageNumber - 1) * pageSize).Take(pageSize), employees.Count()); + else if (sortDirection == SortDirection.Descending) + return new(employees.OrderByDescending(e => e.FirstName).Skip((pageNumber - 1) * pageSize).Take(pageSize), employees.Count()); + } + else if (sortKey == "LastName") + { + if (sortDirection == SortDirection.Ascending) + return new(employees.OrderBy(e => e.LastName).Skip((pageNumber - 1) * pageSize).Take(pageSize), employees.Count()); + else if (sortDirection == SortDirection.Descending) + return new(employees.OrderByDescending(e => e.LastName).Skip((pageNumber - 1) * pageSize).Take(pageSize), employees.Count()); + } + else if (sortKey == "Designation") + { + if (sortDirection == SortDirection.Ascending) + return new(employees.OrderBy(e => e.Designation).Skip((pageNumber - 1) * pageSize).Take(pageSize), employees.Count()); + else if (sortDirection == SortDirection.Descending) + return new(employees.OrderByDescending(e => e.Designation).Skip((pageNumber - 1) * pageSize).Take(pageSize), employees.Count()); + } + else if (sortKey == "Salary") + { + if (sortDirection == SortDirection.Ascending) + return new(employees.OrderBy(e => e.Salary).Skip((pageNumber - 1) * pageSize).Take(pageSize), employees.Count()); + else if (sortDirection == SortDirection.Descending) + return new(employees.OrderByDescending(e => e.Salary).Skip((pageNumber - 1) * pageSize).Take(pageSize), employees.Count()); + } + else if (sortKey == "DOJ") + { + if (sortDirection == SortDirection.Ascending) + return new(employees.OrderBy(e => e.DOJ).Skip((pageNumber - 1) * pageSize).Take(pageSize), employees.Count()); + else if (sortDirection == SortDirection.Descending) + return new(employees.OrderByDescending(e => e.DOJ).Skip((pageNumber - 1) * pageSize).Take(pageSize), employees.Count()); + } + else if (sortKey == "IsActive") + { + if (sortDirection == SortDirection.Ascending) + return new(employees.OrderBy(e => e.IsActive).Skip((pageNumber - 1) * pageSize).Take(pageSize), employees.Count()); + else if (sortDirection == SortDirection.Descending) + return new(employees.OrderByDescending(e => e.IsActive).Skip((pageNumber - 1) * pageSize).Take(pageSize), employees.Count()); + } + else if (string.IsNullOrEmpty(sortKey)) + { + return new(employees.Skip((pageNumber - 1) * pageSize).Take(pageSize), employees.Count()); + } + + return new(employees, employees.Count()); + } +} diff --git a/BlazorBootstrap.Demo.RCL/Services/ICustomerService.cs b/BlazorBootstrap.Demo.RCL/Services/ICustomerService.cs new file mode 100644 index 000000000..27b29ab52 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Services/ICustomerService.cs @@ -0,0 +1,7 @@ +namespace BlazorBootstrap.Demo.RCL.Services; + +public interface ICustomerService +{ + public Task> GetCustomersAsync(FilterItem filter, CancellationToken cancellationToken = default); + public Task, int>> GetCustomersAsync(IEnumerable filters, int pageNumber, int pageSize, string sortKey, SortDirection sortDirection, CancellationToken cancellationToken = default); +} diff --git a/BlazorBootstrap.Demo.RCL/Services/IEmployeeService.cs b/BlazorBootstrap.Demo.RCL/Services/IEmployeeService.cs new file mode 100644 index 000000000..4b814ddb1 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Services/IEmployeeService.cs @@ -0,0 +1,6 @@ +namespace BlazorBootstrap.Demo.RCL.Services; + +public interface IEmployeeService +{ + public Tuple, int> GetEmployees(IEnumerable filters, int pageNumber, int pageSize, string sortKey, SortDirection sortDirection); +} diff --git a/BlazorBootstrap.Demo.RCL/Usings.cs b/BlazorBootstrap.Demo.RCL/Usings.cs new file mode 100644 index 000000000..dcf504199 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Usings.cs @@ -0,0 +1,10 @@ +global using BlazorBootstrap.Demo.RCL.Models; +global using BlazorBootstrap.Demo.RCL.Services; +global using Microsoft.AspNetCore.Components; +global using Microsoft.AspNetCore.Components.Rendering; +global using Microsoft.AspNetCore.Components.Routing; +global using Microsoft.Extensions.Configuration; +global using Microsoft.Extensions.DependencyInjection; +global using Microsoft.JSInterop; +global using System.Linq.Expressions; +global using System.Net.Http.Json; diff --git a/BlazorBootstrap.Demo.RCL/_Imports.razor b/BlazorBootstrap.Demo.RCL/_Imports.razor new file mode 100644 index 000000000..3bf195e4f --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/_Imports.razor @@ -0,0 +1,12 @@ +@using System.Net.Http +@using System.Net.Http.Json +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.JSInterop +@using BlazorBootstrap +@using System.Threading.Tasks +@using Microsoft.Extensions.Configuration; +@using BlazorBootstrap.Demo.RCL.Models; +@using BlazorBootstrap.Demo.RCL.Services; diff --git a/BlazorBootstrap.Demo.RCL/wwwroot/css/blazorbootstrap.demo.rcl.css b/BlazorBootstrap.Demo.RCL/wwwroot/css/blazorbootstrap.demo.rcl.css new file mode 100644 index 000000000..32d30b5de --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/wwwroot/css/blazorbootstrap.demo.rcl.css @@ -0,0 +1,417 @@ +/*** START: home ***/ +:root { + --bd-purple: #4c0bce; + --bd-violet: #712cf9; + --bd-accent: #ffe484; + --bd-violet-rgb: 112.520718,44.062154,249.437846; + --bd-accent-rgb: 255,228,132; + --bd-pink-rgb: 214,51,132; + --bd-teal-rgb: 32,201,151; + --docsearch-primary-color: var(--bd-violet); + --docsearch-logo-color: var(--bd-violet); + --bs-body-color: #212529; + --bs-tertiary-bg: #f8f9fa; +} + +h1:focus-visible { + outline: inherit !important; +} + +.skippy { + color: #fff !important; + background-color: #4c0bce !important; +} + + .skippy a { + color: #fff !important; + } + +.bd-navbar { + padding: .75rem 0; + background-color: transparent; + background-image: linear-gradient(to bottom, rgba(var(--bd-violet-rgb), 1), rgba(var(--bd-violet-rgb), 0.95)); + box-shadow: 0 0.5rem 1rem rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15) +} + +@media (max-width: 991.98px) { + .bd-navbar .bd-navbar-toggle { + width: 4.25rem + } +} + +.bd-navbar .navbar-toggler { + padding: 0; + margin-right: -.5rem; + border: 0 +} + + .bd-navbar .navbar-toggler:first-child { + margin-left: -.5rem + } + + .bd-navbar .navbar-toggler .bi { + width: 1.5rem; + height: 1.5rem + } + + .bd-navbar .navbar-toggler:focus { + box-shadow: none + } + +.bd-navbar .navbar-brand { + transition: .2s ease-in-out transform +} + + .bd-navbar .navbar-brand:hover { + transform: rotate(-5deg) scale(1.1) + } + +.bd-navbar .navbar-toggler, .bd-navbar .nav-link { + padding-right: .25rem; + padding-left: .25rem; + color: rgba(255,255,255,0.85) +} + + .bd-navbar .navbar-toggler:hover, .bd-navbar .navbar-toggler:focus, .bd-navbar .nav-link:hover, .bd-navbar .nav-link:focus { + color: #fff + } + + .bd-navbar .navbar-toggler.active, .bd-navbar .nav-link.active { + font-weight: 600; + color: #fff + } + +.bd-navbar .navbar-nav-svg { + display: inline-block; + vertical-align: -.125rem +} + +.bd-navbar .offcanvas-lg { + background-color: var(--bd-violet); + border-left: 0 +} + +@media (max-width: 991.98px) { + .bd-navbar .offcanvas-lg { + box-shadow: 0 1rem 3rem rgba(0,0,0,0.175) + } +} + +.bd-navbar .dropdown-toggle:focus:not(:focus-visible) { + outline: 0 +} + +.bd-navbar .dropdown-menu { + --bs-dropdown-min-width: 12rem; + --bs-dropdown-link-hover-bg: rgba(var(--bd-violet-rgb), .1); + --bs-dropdown-font-size: .875rem; + box-shadow: 0 0.5rem 1rem rgba(0,0,0,0.15) +} + +.bd-navbar .dropdown-item.current { + font-weight: 600; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23292b2c' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right 1rem top 0.6rem; + background-size: .75rem .75rem +} + +.bd-masthead { + --bd-pink-rgb: 214,51,132; + padding: 3rem 0; + background-image: linear-gradient(180deg, rgba(var(--bs-body-bg-rgb), 0.01), rgba(var(--bs-body-bg-rgb), 1) 85%),radial-gradient(ellipse at top left, rgba(var(--bs-primary-rgb), 0.5), transparent 50%),radial-gradient(ellipse at top right, rgba(var(--bd-accent-rgb), 0.5), transparent 50%),radial-gradient(ellipse at center right, rgba(var(--bd-violet-rgb), 0.5), transparent 50%),radial-gradient(ellipse at center left, rgba(var(--bd-pink-rgb), 0.5), transparent 50%) +} + + .bd-masthead h1 { + font-size: calc(1.525rem + 3.3vw); + line-height: 1 + } + +@media (min-width: 1200px) { + .bd-masthead h1 { + font-size: 4rem + } +} + +.bd-masthead .lead { + font-size: 1rem; + font-weight: 400; + color: #495057 +} + +.bd-masthead .bd-code-snippet { + margin: 0; + border-radius: .5rem +} + +.bd-masthead .highlight { + width: 100%; + padding: .5rem 1rem; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + background-color: rgba(var(--bs-body-color-rgb), 0.075); + border-radius: .5rem +} + +@media (min-width: 992px) { + .bd-masthead .highlight { + padding-right: 4rem + } +} + +.bd-masthead .btn-clipboard { + position: absolute; + top: -.125rem; + right: 0; + background-color: transparent +} + +.bd-masthead #carbonads { + margin-right: auto; + margin-left: auto +} + +@media (min-width: 768px) { + .bd-masthead .lead { + font-size: calc(1.275rem + .3vw) + } +} + +@media (min-width: 768px) and (min-width: 1200px) { + .bd-masthead .lead { + font-size: 1.5rem + } +} + +.masthead-followup .lead { + font-size: 1rem +} + +.masthead-followup .highlight { + border-radius: .5rem +} + +@media (min-width: 768px) { + .masthead-followup .lead { + font-size: 1.25rem + } +} + +.bd-btn-lg { + padding: .8rem 2rem +} + +.masthead-followup-icon { + padding: 1rem; + color: rgba(var(--bg-rgb), 1); + background-color: rgba(var(--bg-rgb), 0.1); + background-blend-mode: multiple; + border-radius: 1rem; + mix-blend-mode: darken +} + + .masthead-followup-icon svg { + filter: drop-shadow(0 1px 1px #fff) + } + +.masthead-notice { + background-color: var(--bd-accent); + box-shadow: inset 0 -1px 1px rgba(var(--bs-body-color-rgb), 0.15),0 0.25rem 1.5rem rgba(var(--bs-body-bg-rgb), 0.75) +} + +.bd-gutter { + --bs-gutter-x: 3rem; +} + +.bd-footer a { + color: #495057; + text-decoration: none +} + + .bd-footer a:hover, .bd-footer a:focus { + color: #0d6efd; + text-decoration: underline + } + +/*** END: home ***/ + +.anchor-link { + font-weight: 400; + color: rgba(13,110,253,0.5); + transition: color 0.15s ease-in-out; + opacity: 0; + padding-left: 0.375em; + text-decoration: none; + -webkit-font-smoothing: antialiased; +} + +@media (prefers-reduced-motion: reduce) { + .anchor-link { + transition: none + } +} + +.anchor-link:focus, .anchor-link:hover { + color: #0d6efd; + text-decoration: none +} + +:hover > .anchor-link, .anchor-link:focus { + opacity: 1; +} + +.bb-example { + position: relative; + padding: 1rem; + margin-top: 1rem; + border: solid #dee2e6; + border-width: 1px; + border-top-left-radius: .25rem; + border-top-right-radius: .25rem; +} + + .bb-example::after { + display: block; + clear: both; + content: "" + } + +@media (min-width: 576px) { + .bb-example { + padding: 1.5rem; + } +} + +.bb-example + p { + margin-top: 2rem; +} + +.bb-example > .btn, .bb-example > .btn-group { + margin: .25rem .125rem; +} + +.tab-pane.fade.active.show .bb-example { + border-top-left-radius: 0 !important; + border-top-right-radius: 0 !important; +} + +.highlight { + padding: 1rem; + margin-bottom: 1rem; + background-color: #f8f9fa; + border: solid #dee2e6; + border-width: 0 1px 1px 1px; + border-bottom-left-radius: .25rem; + border-bottom-right-radius: .25rem; +} + +@media (min-width: 576px) { + .highlight { + padding: 1rem 1.5rem + } +} + +.highlight pre { + padding: 0; + padding-bottom: 1rem !important; + margin-top: .65rem; + margin-bottom: .65rem; + white-space: pre; + background-color: transparent; + border: 0 +} + + .highlight pre code { + font-size: inherit; + color: #212529; + word-wrap: normal + } + +.tab-pane.fade.active.show .highlight { + border: 1px solid #dee2e6; + border-top-width: 0; +} + +.show-code-only { + border-width: 1px; + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; + margin-top: 1rem; +} + +/* display */ +.display-7 { + font-size: 2rem +} + +.display-8 { + font-size: 1.5rem +} + +.display-9 { + font-size: 1.25rem +} + +.display-10 { + font-size: 1rem +} + +/* position */ +.top-30 { + top: 30% !important; +} + +.top-40 { + top: 40% !important; +} + +/* icons */ +.list div:hover, .list div:hover .name, .list div:focus, .list div:focus .name { + color: #0d6efd !important; + cursor: pointer; +} + +/* HACK: sidebar */ +@media (min-width: 641px) { + .bb-example .nav-scrollable { + height: auto !important; + overflow-y: auto !important; + } +} + +/* carbon ads */ +#carbonads { + position: static; + display: block; + max-width: 400px; + padding: 15px 15px 15px 160px; + margin: 2rem 0; + overflow: hidden; + font-size: .8125rem; + line-height: 1.4; + text-align: left; + background-color: var(--bs-tertiary-bg); +} + + #carbonads a { + color: var(--bs-body-color); + text-decoration: none + } + +@media (min-width: 576px) { + #carbonads { + border-radius: .5rem; + } +} + +.carbon-img { + float: left; + margin-left: -145px +} + +.carbon-poweredby { + display: block; + margin-top: .75rem; + color: var(--bs-body-color) !important +} diff --git a/BlazorBootstrap.Demo.RCL/wwwroot/icons/archive.png b/BlazorBootstrap.Demo.RCL/wwwroot/icons/archive.png new file mode 100644 index 0000000000000000000000000000000000000000..ca7b9930614dbf05aaffaf414fad9559fa65d0a4 GIT binary patch literal 398 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dy%*9TgAsieWw;%dH0CG7CJR*x3 z7#Jf!nDKtT)oc5!lIL8@MUQTpt6Hc~)EApt%i zuK)l42QsM(HuNnN2AU{c666=mz$u`hrekjHkY7+-->_)Kje9TNefskK*Pp-tRz2kV z3slzX>Eak-(fjtYCttIHfXl@szGlfY8L$3*=P^vWp4;hhvTOfa_1)rTuVywrlREfQ z(ZOo6K3p5o2G}qIVrK-AuMd4(PYO*>(0g~ zHI?i?Fz-~jNbg6}quagh9(+%jY=5t;DdXz=H&V5JM%`xdJRjJ)JGI;$HXH5+g@mW8 KpUXO@geCxjj(l|h literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.RCL/wwwroot/icons/bin.png b/BlazorBootstrap.Demo.RCL/wwwroot/icons/bin.png new file mode 100644 index 0000000000000000000000000000000000000000..e38668567e7cf1751505e12f151f1f0a34cddb3a GIT binary patch literal 465 zcmV;?0WSWDP)Q8p^*Q%9&{k!(6R4s~O4QF`5%ZK%Ze^@Q38I9eHqRrM$tY}AM-Y_mO zfOGtn>^MXh)-j1YOyGa4k*_eXvAaJxc}qdw?-=3ENCUkAzs||K3V2_n_B(2*i$CX9 zS6$E};S*RyPf^z`pa%U8V`HTl_%>7qDg%{)%0Ok{ z#~66d;IXk>bVnLEmVD=5QeGrhih&!3}p))CYLK2}7m3C08d@bPBWXf}jPjWO&9 zw=EVQ#D?TA`&KfpMQPQPKagw}b-yBMsK+*nKBgMW&5FDN%F>d?rl-)`00000NkvXX Hu0mjf=BB?k literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.RCL/wwwroot/icons/calendar.png b/BlazorBootstrap.Demo.RCL/wwwroot/icons/calendar.png new file mode 100644 index 0000000000000000000000000000000000000000..5f5a5819b20cf6aa07ab3855f83396efbc595d09 GIT binary patch literal 913 zcmV;C18)3@P)zjM#;f8PG*ky27uF^Z#jt3h9muki_@q0L@=kClx+Edgvt%JsS$eN&;| zSECOX`qn0&0Y!<32k;1P$GSp#F(S^ow5%?kw@1V;J^BsB^X7=S3sX3pQu^kiQbfDI zh`RqKB;B1YyN0B*zexH}@scK6^~l%3vz!K`&l2Y2Eo z47K=NObR<|j?1ICwTG?5L=Ov0Vnq)h!NWEE?(F(ravA+AvXl!+KLw355E0klWgJNVKwrU6 zWWKFnEAUs*S6P2t=pOhCd+=3CX|~|6;0b(Ku&t`Abr#=d)=`~`)e$j~QaUiN8JJJS z>$#89ZP#(3y_ETdE42yV$4_{p^%zFPFn&!boh?{Ll^c!~O)uo%fryyQ&$ra*Af@z! zDoIuE>Nnv!%-}o4-)?-VTI-DkdrbWX?EYaHYFfU_wFIBzUHsj{|HNx4rBiJmx257? z4EC@NMjJNckSZllVm+3(Y}`?F=1RpUYS?)kt7$Hev~{!)5gYL_4))<>=3{excp1y{ zstart>{Bhl4Av|(7tAAPtjS&p`vT)Qpt_i5@ez(J(#Xf~WZ^Z@jcP{`)l$?M>_{mo nr)FHW98-&EJe57hyT1Pbj<}bgM~?jZ00000NkvXXu0mjf?@Ozp literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.RCL/wwwroot/icons/cancel-button.png b/BlazorBootstrap.Demo.RCL/wwwroot/icons/cancel-button.png new file mode 100644 index 0000000000000000000000000000000000000000..a3a741c8ca44cb7f159c435960f0ab35e95d4b49 GIT binary patch literal 713 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dy%*9TgAsieWw;%dH0CG7CJR*x3 z7#I~nn2~q?mT;h;WQl7;NpOBzNqJ&XDnogBxn5>oc5!lIL8@MUQTpt6Hc~)E_X2!E zT>t<74`dEkklUI93Np`HLdk04+XBSs@|A3(2 zkjRXJ>YCcR){e>3W^LTG@8F43r_Y={cjel>$FJUg`1twD*Kgl{{QCVzzf!^!7}y-1 zE{-7#JsV6!}VZ7zxPAFpDG8Q73+k^$8a>foo+Aqt^5UhC!T84Q=^zv2zw%hH~lwSDS?6VK02*ZbF)d^JAR&SWE> zUr0UYizMDTb;Uw|?R{S;ye=-33E1>jWhtPgg&ebxsLQ0DT6~^8f$< literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.RCL/wwwroot/icons/cancelled.png b/BlazorBootstrap.Demo.RCL/wwwroot/icons/cancelled.png new file mode 100644 index 0000000000000000000000000000000000000000..b81dd8a0eb4c7f7b0b4a7d786c80944eb3332210 GIT binary patch literal 1050 zcmV+#1m*jQP)@X_p#65f7e?N~p%ULtkzRK_m@Rj3UTd&DDS){o zu(m?Q8BMhiekF}GFpH1zW{%T2*T4b}w9s=r`93Tr2JoNA-QgC-mvIk=Ri9xWjwH{r z`qUjsTk|5y_N7N>Y6NzQoiB-VZ$}g9#Dd7GD*8Na?jsQ2z{@qv7jpe@X>L$+w1zc< za4Kca)##ke^;7VDer&5?91?(=wHo$*apBCQ;Q@Su%gHZ!XGP?yvST!DULgw4-5O8# zB;)DQ+^|U1B4x|(<*1y^`P~(Idj(Ezc4IUCsc~RyK7T6B&85L6l*Hhy_BcJUmVbyvuS9g`)$MOc@_2wEUZshZ+(%dk<6uY0v@hra3d<2Ee z4b?P)e^~|LXa&=t08%>;eytgV{kSDkaiBu)_O$sOyq_PFHJ+Z&^&@K>Yn6saQ|4@q z&b_(*E>YzgqLZnjvE0c$QDoZDOUXMgc3MT}(&pa6`vrl8ks5&mR!i}e>QdYx9Nc<5)Bd?IO{Nwxph`qIqfH5A~U`LQj{RxGdVJhoN1X zTl?QcZ_yEriJyrA)yLJRXdUg>4AM`;PtSyEygWdC0+>swU`}*0lLF1XZR8IMv{(J^ ztu&;a^!wv@LsZPQ1!xwJw~*Z+(t1>+UGaQ9om#9#3lWPzq5%s9QwG6G zyMQ402Uyu8kWxr1!8S??tAK?+NSdSxVr7{S6igb?MicP-QOukNABlFe4DuSD<0=|>guON~vlzt(oWp*v z0uC^U2e{Kg%ym48<87?rdjjVdY+(i8I9k%Vgd{Jdmn?6aIGH7oHgO)8;<$l#F=3|| z!U(3Y&?;a=_!oxTB)EqYk^C|?638LLQ%vI;-7n#MB5^C`nt6_Oncy`RdJymnttHsO zZG7q=?k&ESE#NU;mXS0CttDvmn>;U|68slXxqxoA;#Aay!|o98^Ui*(z_M^^E*Clf zi4qjy6_%?KjR=*K>=C-j@`u6)(tCky6p;l`f8=l}o!07*qoM6N<$g4!DHO#lD@ literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.RCL/wwwroot/icons/folder-copy.png b/BlazorBootstrap.Demo.RCL/wwwroot/icons/folder-copy.png new file mode 100644 index 0000000000000000000000000000000000000000..b22f62a209a97f1dae61f864edc0bdc515049475 GIT binary patch literal 604 zcmV-i0;BzjP)YooUQ0~Y=&vkL!zJe|E_aUb|yjgL5}g^M7eiyZzsrhatKiE(Mznw2K-Ev zPeu#(3eJ}C1~>2vSFt`vd0iO6rAR0xU$P@`x#WB^j$>CY>l~zbm9w%VP=(*Ph1Xc> zbKb^D9LO=e5@p^j;aGx>HJCO)1gbjWQyjqru3@x~%v+olqInoU@H~e^Sp@DxnW+l7 z>p2EjqACY^(W&Z~7llW)7rQZ=X#ZJC5~g4Xn^mg1yodqelANM^uf2tz_UxW&n ziu%svDkw{?+ZlRBaI-?+f2)PNI8>nYbKKjCNAW23;XL+d5YECC^|$OUy1gW931xJ! zDG!R!OTsbC;gwL!tA?U79L5Q3T`dBO!ZX*o2;;UR)bwe5$9Cbn zVN;VNdYHsV{j+tp;C^jY0Q1<1qe280;{7?9GrkV&5Wb2YVx0#2K+!CCk8SuGi8O|? qVf3j0)+jEP);p@mv068sj-YAohncf6apcQ$u(Ul?{SJ9FN5 z&Y3fFhMLjHepllR)?>KDyc^h8m54R?hS|inw+iwGZeu&zn83Rpa}Ht^K45K$@jV6n zz*3yWkrH$E;A+-?iF^2+!1*0d(84b|EI zHsNF}Uv z44+CEcrAor!H5N1!rdy2rXUVMd$Gxj0%}2B0odTwWb6~p85In=Ky7$1-K?rDK zXUdpo^QCV=19?e(l8DS zd0ggc7UKnuXNHR_zbqU!d95*u$$}>;MSKwblWGy-6rHGA0Bpg9dB|fCy~ZpK{s39) V!zNzZRUiNW002ovPDHLkV1o8!4YdFO literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.RCL/wwwroot/icons/folder-move.png b/BlazorBootstrap.Demo.RCL/wwwroot/icons/folder-move.png new file mode 100644 index 0000000000000000000000000000000000000000..15ed71f218f86874be8ee0dcbfc63e9e775445b6 GIT binary patch literal 421 zcmV;W0b2fvP)t?PB@9=Z3G?zf)KeSVzteD8Cfa}E{$2)6N>C_9}@{%a&^VWBcn%PL(ZC;xKL}; z3^R#|pTgLSb1dQrec7PA6?pN!pAQKHdN6=3Oyd|!B0Z7k9ykg1l}LOZxyNK!V>9c^ zy9F&Yahf=1ILy1r=pT?$fuCR%yhe6jymAqU<7oI}zbRoYA$ P00000NkvXXu0mjfYjUvK literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.RCL/wwwroot/icons/folder-rename.png b/BlazorBootstrap.Demo.RCL/wwwroot/icons/folder-rename.png new file mode 100644 index 0000000000000000000000000000000000000000..93ed77f65fc5f1aee289b2f4dc3b15d41ed2f65c GIT binary patch literal 602 zcmV-g0;TC}**ACb!<+&Tc07!LWbkee=G3^Y*=6m_s{ae8rT+7zm61 z!uvjUTQP>)xR_c*8_g1%5v*bb!zrB)McRGCL!84UEF|*(hPVj8NpZPSWwbgu@DBS* z1PtH`_Jr#OX7CY@A|4=*v)Dm=1lD5^4+8gk4d;T-b|(i$a5<8=3#VkSa z?%xw@+ffHy5%`R&k;GNJ#^MH?ccD%Wq(D~$Hi}ssU3dLkmK#y^B1Ht2{hK4#N;u76 zmqb7Vr^8w=FfFSar2@Fh35f-`tkM9Sj;_G5bm z0Y%s*EAxkXO%@60;2w5Hj)Q?SpSypfpMxqnFsXM$mhip8I<*9x$K8Ut4;bHU0SmJ3 zH`rtDd0ppK1T4w=cXE^om=@orN5gR<$2nd`>{SU5OaJ*blk?HH628O*)e6z5?8%pL zCpY&AkBf+@+VS47)?B206Ya7>6pLBh3g=U}k7Kdq|JsgIb;BdNzYl*3KOJRA*^XOv oh_OGXn}G=-0Q1tn^ReUUA3=)Fbgub$*#H0l07*qoM6N<$f_0(=$N&HU literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.RCL/wwwroot/icons/folder-search.png b/BlazorBootstrap.Demo.RCL/wwwroot/icons/folder-search.png new file mode 100644 index 0000000000000000000000000000000000000000..185b5d2ac0296327f29273f58ba6c6a2eb749b5d GIT binary patch literal 658 zcmV;D0&V??P)sH@ZXH8&Vop!3kxmX+EGmiVnIS8p&OC-55%S=kyx=25i2_qdx-?G zLA#)~8iGhI5Md)m5EezEwK(VMotk@lsxz%8IeG7ydCqyCIrsfI!+(NJc!2MiZZdx1 z1x}%(9nOCgIBqsZP-~U*itx*KL=ji;t$@25o8$8sZkO!)1=mqe5s@AH#W{F2j7mSL zI`*Up$QGPV;MQ;xQ;8xzpu23tYKp=fCUG#Xs}zhXjzoSp23sj01=F~io3CAL0fbkS zp|TVL2q%%Zi!R`?BgPWw)vB9!=ktj1@I<54s6dcd zg>6`sut6P{a`QXbh@IG?{8bEKdwedtSI!H48q=_+fHyl0i+J-!4No;*NQZ^s>=f$6 zag8xH+)C#o(t{s>Kfgh0+B8EKZkf6JkK%yvZYx5h_X|P&Nyz=j s3-I?Bj%m~1wNwlUUGK(HIByw#15|&>Y#tb;1poj507*qoM6N<$f;%K0`v3p{ literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.RCL/wwwroot/icons/folder-sync.png b/BlazorBootstrap.Demo.RCL/wwwroot/icons/folder-sync.png new file mode 100644 index 0000000000000000000000000000000000000000..a32efd6eea9736660038d9df45f80176ed273fe8 GIT binary patch literal 729 zcmV;~0w(>5P)xK~z|U#n)eGPhl7b@Q{kdgnI12S@K1o zC{zjC&{rOT5)K(VAt!^cxQu>$PyD1KuvKw;Jlfb6eRX26JOZ`x`WUSRd~q5F(TM8w ziA}d4!R`1K=YHcrM!&gq;F$154cLxb=rcSYt_wXsD{>Ji35SU^YOqd_=;{$~ z?E+rOHE<-4d1)7o=w-m`j*s`!{C_r_aRA?BtPP?D;fwd8r(K$G+i64ojs=XLabUdM~3MJd zQG&qZBIoI_?+v|1+FY;oz9SDt%(2kxL%&o;a*?xVpv$N!I=d438fo+`(mBt^z~wR% zmP9E6^Q6kxffq%|nnO;IDqXi!_cJB1A!Ommnxrb%8v0sk{hGs`DS_hA)=TgIn|L)q z%pW6P32SjG+N-4X--fNyZY8~Z@-bUNHeyM%^Y6v^1#!PZEvXQ7EB(y=8|cnSXLsQU g5x6}IuvrE7=;M@soZUb*6ZPc}a$3PWOhgQ`!4Pd&1!s#__zz5)J zctuZvId|F4C;>CTgOK|OaFF3_8R(TnI~LIEJ<~b|gu^pnEu6ms!)*{B_FhTfHP=ec z_024B7FZ0qL*OCMRY17Qxrd?OqHD}%8VKY`U^iedfxaB#ea=bvyTD|?8yoPVAz(G& zKY-B|#7Dh0;jIEgshZ{nys!sY2sKsU5m3&kEjt$H$pX-mQQMkfCcW|-aAG$wA2{hX4|KQCr*5D`j*zr3X$lwv zwgR*Tj7gf3w4bMExp_&Zk>_Ui4p{QkxTN(Wy$Ts{6YFMn)AzrM_9<+jRbexm0j>a_ zCC#PrTz8;gi~#ri`A2lZK*KmK15bbfV4w{A1kL~#I;AdY6WD~>C43Lu0PdREcVMFd zH!I#q`UGHR_cQQ|$@4Ebw>akix-j8#^GlMJfjdB7h1g+kJobk5B7e7l#0|F?7C-!X9H5}t^F*$A~+@J-T-jvHte ZzX2MX%G0vXE~Wqg002ovPDHLkV1hftD$oD` literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.RCL/wwwroot/icons/refresh.png b/BlazorBootstrap.Demo.RCL/wwwroot/icons/refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..75444d8f781907f414af0cf05f0b4cb0da673a36 GIT binary patch literal 753 zcmVteC@d#5%b_VD9~+HQA|jHFFd|`f{Z4=!%`&vAK%mDe8rO`cb5Sj$z>YBUa;Ou7EuwSpYPlJ1Sr}cDyWX z!4A}oRssL<@1PcAg@$OxgV88ri(ijLxA3TpDE7%74zCn>PY)+L{C-6K5RT7M>Zej{ z#m3msRiuD)^a=8;T4;}QFHVhDbEMydS7&;?vr6QX1nFMDYfMfj9?FV@0?y-rpk5YM zfxHG6qx{?A$^OLHiA#~w(JBz9bijIm{lyGl=7_;Zp;20 z>1W&%R`fQ>(In`~7Gc|C-@|@MvWn1*llZ9okJEQJA&AnF7>f39z*?-qGT{?$S~B-e j(0g}qL+JE@a+3Z81=`(GvXM<300000NkvXXu0mjfd&_DU literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.RCL/wwwroot/js/blazorbootstrap.demo.rcl.js b/BlazorBootstrap.Demo.RCL/wwwroot/js/blazorbootstrap.demo.rcl.js new file mode 100644 index 000000000..d7b5c529f --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/wwwroot/js/blazorbootstrap.demo.rcl.js @@ -0,0 +1,35 @@ +async function copyToClipboard(text, dotNetHelper) { + let isCopied = true; + + try { + await navigator.clipboard.writeText(text); + dotNetHelper.invokeMethodAsync('OnCopySuccessJS'); + } catch (err) { + isCopied = false; + dotNetHelper.invokeMethodAsync('OnCopyFailJS', err); + } + + setTimeout( + () => { dotNetHelper.invokeMethodAsync('ResetCopyStatusJS'); }, + isCopied ? 2000 : 3000 + ); +} + +function highlightCode() { + if (Prism) { + Prism.highlightAll(); + } +}; + +function navigateToHeading() { + if (window.location.hash) { + // get hash tag in URL + let hashTagName = window.location.hash.substring(1); + let el = document.getElementById(hashTagName); + if (el) { + // do the scroll + el.scrollIntoView(); + } + } +} + diff --git a/BlazorBootstrap.Demo.Server/BlazorBootstrap.Demo.Server.csproj b/BlazorBootstrap.Demo.Server/BlazorBootstrap.Demo.Server.csproj new file mode 100644 index 000000000..e8e922a1b --- /dev/null +++ b/BlazorBootstrap.Demo.Server/BlazorBootstrap.Demo.Server.csproj @@ -0,0 +1,13 @@ + + + + net8.0 + enable + enable + + + + + + + diff --git a/BlazorBootstrap.Demo.Server/Components/App.razor b/BlazorBootstrap.Demo.Server/Components/App.razor new file mode 100644 index 000000000..467bac08e --- /dev/null +++ b/BlazorBootstrap.Demo.Server/Components/App.razor @@ -0,0 +1,60 @@ + + + + + + + Blazor Bootstrap Demos & Examples | Enterprise-class Blazor Bootstrap Component library built on the Blazor and Bootstrap CSS framework | Blazor Bootstrap + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/BlazorBootstrap.Demo.Server/Components/Routes.razor b/BlazorBootstrap.Demo.Server/Components/Routes.razor new file mode 100644 index 000000000..7792d4ae0 --- /dev/null +++ b/BlazorBootstrap.Demo.Server/Components/Routes.razor @@ -0,0 +1,12 @@ + + + + + + + Not found + +

Sorry, there's nothing at this address.

+
+
+
diff --git a/BlazorBootstrap.Demo.Server/Components/_Imports.razor b/BlazorBootstrap.Demo.Server/Components/_Imports.razor new file mode 100644 index 000000000..74b407f2d --- /dev/null +++ b/BlazorBootstrap.Demo.Server/Components/_Imports.razor @@ -0,0 +1,10 @@ +@using System.Net.Http +@using System.Net.Http.Json +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using static Microsoft.AspNetCore.Components.Web.RenderMode +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.JSInterop +@using BlazorBootstrap.Demo.Server +@using BlazorBootstrap.Demo.Server.Components diff --git a/BlazorBootstrap.Demo.Server/Program.cs b/BlazorBootstrap.Demo.Server/Program.cs new file mode 100644 index 000000000..30dc3cfa3 --- /dev/null +++ b/BlazorBootstrap.Demo.Server/Program.cs @@ -0,0 +1,34 @@ +var builder = WebApplication.CreateBuilder(args); + +// Add services to the container. +if (builder.Environment.IsDevelopment()) + builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("https://localhost:5031/") }); +else + builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("https://demos.blazorbootstrap.com/") }); + +builder.Services.AddBlazorBootstrap(); +builder.Services.AddDemoServices(); + +builder.Services.AddRazorComponents() + .AddInteractiveServerComponents(); + +var app = builder.Build(); + +// Configure the HTTP request pipeline. +if (!app.Environment.IsDevelopment()) +{ + app.UseExceptionHandler("/Error", createScopeForErrors: true); + // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. + app.UseHsts(); +} + +app.UseHttpsRedirection(); + +app.UseStaticFiles(); +app.UseAntiforgery(); + +app.MapRazorComponents() + .AddInteractiveServerRenderMode() + .AddAdditionalAssemblies(typeof(BlazorBootstrap.Demo.RCL.App).Assembly); ; + +app.Run(); diff --git a/BlazorBootstrap.Demo.Server/Properties/launchSettings.json b/BlazorBootstrap.Demo.Server/Properties/launchSettings.json new file mode 100644 index 000000000..81912e14f --- /dev/null +++ b/BlazorBootstrap.Demo.Server/Properties/launchSettings.json @@ -0,0 +1,38 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:32797", + "sslPort": 44390 + } + }, + "profiles": { + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "https://localhost:5031;http://localhost:5030", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:5030", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } + } diff --git a/BlazorBootstrap.Demo.Server/Usings.cs b/BlazorBootstrap.Demo.Server/Usings.cs new file mode 100644 index 000000000..b09149a0b --- /dev/null +++ b/BlazorBootstrap.Demo.Server/Usings.cs @@ -0,0 +1,2 @@ +global using BlazorBootstrap.Demo.RCL; +global using BlazorBootstrap.Demo.Server.Components; diff --git a/BlazorBootstrap.Demo.Server/appsettings.Development.json b/BlazorBootstrap.Demo.Server/appsettings.Development.json new file mode 100644 index 000000000..48b263888 --- /dev/null +++ b/BlazorBootstrap.Demo.Server/appsettings.Development.json @@ -0,0 +1,11 @@ +{ + "DetailedErrors": true, + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information", + "Microsoft.AspNetCore.SignalR": "Debug" + } + } +} diff --git a/BlazorBootstrap.Demo.Server/appsettings.json b/BlazorBootstrap.Demo.Server/appsettings.json new file mode 100644 index 000000000..541907a6b --- /dev/null +++ b/BlazorBootstrap.Demo.Server/appsettings.json @@ -0,0 +1,23 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + "version": "2.2.1", + "release": { + "short_description": "Confirm Dialog, Grid Updates, and Demo Projects Upgraded to .NET 8!!!" + }, + "urls": { + "docs": "//docs.blazorbootstrap.com/getting-started/blazor-webassembly-net-8", + "blog": "//docs.blazorbootstrap.com/blog", + "github": "//github.com/vikramlearning/blazorbootstrap", + "twitter": "//twitter.com/blazorbootstrap", + "linkedin": "//www.linkedin.com/groups/14161025", + "github_issues": "//github.com/vikramlearning/blazorbootstrap/issues", + "github_discussions": "//github.com/vikramlearning/blazorbootstrap/discussions", + "stackoverflow": "//stackoverflow.com/questions/tagged/blazor-bootstrap" + } +} diff --git a/BlazorBootstrap.Demo.Server/wwwroot/images/logo/128X128.png b/BlazorBootstrap.Demo.Server/wwwroot/images/logo/128X128.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc404fcb6a25dcb4468c6ff787089f846b3e862 GIT binary patch literal 7074 zcmV;T8(rjyP)7%-*ey?7=diClRV-bo_gd!B72t_DD5sFZRE-sQH zRq*?zaRcT`KzKb4znnC^??}CSq9WDwyQW)_Vv$CS8#wp+2m@SHt$!Y*yY!R~&f_8s zaPhVNIG_KAjvF}Vst5yI9IZbZS+?eMRisBF3~+G}0j=rtW%_eJq(F7wv(b^d3N2;z zS{Vh+{B;2GbxuL&XWei81x--)GX|F%A`L+LBq9MS1^iVF)XE=@RKxA^pBzv?WqyEE z&t#DQXrv3M9Ps~uYzfls>Zt=kcn$UYT{!n7jT+ioH9ogLuib#k^05^c|zVSMMn}@?RU9CHiHsll}eQzIlFYl0qdD`Kp$3+;x zF6iAhL)(@~^gfP!fI&ZRM4vhUpX~XsAdPV0XS9VLP&L8;7APZSOEY9c0Qx^#!Pw!pu25t(s6!Mjs9Lp;$UX-=R;gaOO|Pu^AsL%Dbyc0aLrIB?F9VRYKK$t+&NVtR?bh0Ocy=jU-9F40&DrUjwO%x8+GP!+Ax) zrd%q^>AXj2ol?a$Ny+gJPn5shmaToLWJwzAMw%}U{t_}9PeWPll^4musOqNCVFY?p zWU1=-l!jCdtaYz;fC^g0>d~Z}`H9?@J=u5ZW%#TK_^yX7DVO#tr%7}r0!{!AMk2d3 zf#1qmiLw)gD2U|!2AT!@$n37HzRPYwHWv4HXToM(*(ndyjjjaXY5e&Z(jCn0IdRD@ z=(5dwg`OkLe+*jxd0pW96w+{Vyt#HS2aTblLj*cg#X1xkmK4;NNg@>}TLjZl#s52J zLBe)F(0i|-7JfT)lKW70d~g}o=YFXY7y#fC;5kU~_DYZiK$dMXhD-cqT=t1F*X*ob zt4N9Mg?rKE$vxC@I7bf&eitSM5qKK2PG&yN2e!bM%D5LAecAusbG~_*X0K}dOx9}r z>b;(dk%6Qc8F-&z{^hFgWj@ye?_>J+E5|bKpNach)`h{L9z9U+@32`q8#_ zSw{l+F;!u7kiaKx{yn5WR2~bL6X}9Z`4^Ov{TU7*l+79h7^{lYS{@Yvjo4Ar3+)_t>hB;G?ss# z#+430Coh=~k!DQYU9&hCKXz>V!AsCr_C-HC6#YIFGP!EGo}kyK>-5EvZ$BKM1NiF) z<$bbgpYDH7^3@B>bO3E1U(Rqk`hkfKAh`hkXr?$p*l{i)zqmJPs07gWg_85r6ZbVj zWsCp=Jd8?j9C`-uy|?0=B&76(0RyP^`dq3@8;>7DdJgF&0DrtPMPPc;?&<*b�Kc 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 M07*qoM6N<$f<@(i8UO$Q literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.Server/wwwroot/images/logo/150X150.png b/BlazorBootstrap.Demo.Server/wwwroot/images/logo/150X150.png new file mode 100644 index 0000000000000000000000000000000000000000..007f6e095892e6090c7f3aa8312dca1bc5f4c84e GIT binary patch literal 7926 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 literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.Server/wwwroot/images/logo/16X16.png b/BlazorBootstrap.Demo.Server/wwwroot/images/logo/16X16.png new file mode 100644 index 0000000000000000000000000000000000000000..975865786b1cbe5e30dcbfd87e5588b2a3f2f8eb GIT binary patch literal 673 zcmV;S0$%-zP){ilWvQR47z1eqgnF(38}I6sbJ~0@WU*p%-fe^&)~Gir^PktWc~~p;WZA8tAPa zT0zi*hk^k&iP`RE{J&(?SQHflzr5MqnRzq+H;?E)fBY}bCwD)Oo*iz^7`vzK(JEqX zm%k0}j!iU>O3K)$_Kif9_&$*y`Kf|^r`5G1vwnrv`1i`IXZi579 zW+|qXG(*b0B*i+sn<{UkHM~GM8^KYmH^5=A0?fc;DH|s)5*6hc3mru8Fy5>Q5|vS! zG8MFgN$?I_H>he0zP3QLIw)NY!Mae%>GIB6Dcc>Bz?44#j)IqP_|$bRGP*ypXcWOo zFo81SsgbP%3l7E{=M|H{0<&Nv7)RZvXNoMwCx+6bKH9OmcT6sa{r+43sN?vV2YWL% z>>Pk2y#U9sWAE&1e`QH!m754itI|gi&&T)LVE0S?gM03l^n{3=SUbQj@CLkP%k9Gq zu!Nl?+h4}mcBjd5Pax@Pkmw)Ue);<;fLkCLoPrVW9;$d)G3*=gKL=w7$J&N!<|>7d zi_;M!Ml48j2#$?N(pXLgls02vYLWCQh?NHISC@xIRFQFXnf`gHD)91$4IlsGPUj-Nd8dJqkXi!FT00000NkvXX Hu0mjfsn0M; literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.Server/wwwroot/images/logo/180X180.png b/BlazorBootstrap.Demo.Server/wwwroot/images/logo/180X180.png new file mode 100644 index 0000000000000000000000000000000000000000..7a54949c732e318672eb41905a0a5299165a4476 GIT binary patch literal 9809 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

pBJvlzs#?2NcFc#r+} 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 Fe*j6Hy8QqE literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.Server/wwwroot/images/logo/310X310.png b/BlazorBootstrap.Demo.Server/wwwroot/images/logo/310X310.png new file mode 100644 index 0000000000000000000000000000000000000000..af0f803c13ee2c2e3d8102f52d0dc52741c9c86d GIT binary patch literal 17267 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 literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.Server/wwwroot/images/logo/32X32.png b/BlazorBootstrap.Demo.Server/wwwroot/images/logo/32X32.png new file mode 100644 index 0000000000000000000000000000000000000000..86ecffdc832d0c831669d2e95ce73cd7de9e9038 GIT binary patch literal 1513 zcmVJPpX*HRF-VxYG5p=cn;plJftBB1za zw!Ul)49ZAI2Hf|ae&@XBz4ztb%ST(Te|)!x=Q+=L@B93okMo=dLT*3*!;|x5?Qzgb zE-Sanh%Nr|9NXicKI~z9`}q}Msf4hMTLxf%Tx&QX^b^oxqdt3E{TxQq?9FqL&IR5g_>vk@r>oelu}0kG1>2= zrg1{eAk#PnUqlo&5R^!m`V?FWls{>38sFNukPycOSd0{gU9N{u8-Wb#=w`58phTed zrHY*p(*z7p=l}$VaY2--E}5{kc()&3W&-$2L~;0V&nfp_5C_5znx`=QAXpjbA-Am& z&=`KaQ1gO$N6yFqQCJ>ch{i(Em0li2@nSp)tXUc#233d%FzQ>gjN3>CnUOl$kLFJE&XOzmdx_7*3P=`@#0|B0~)<<@rZ$ZzBH&*41+Vi!nhjQe&T*#FC z0z$4?^ShN?qIXe_+R}L?2-I67$1T01fFuK<7wG_xclzU-9M4FvG*Q) zs2Ab`@TeI4dGI3WQnYiMg!({S*5i$fok#{@Aw2!iEi9klPI>!rOytChzEX!Fs9eg!d`{g+N{>b+3za zPsoDpHXrgso1NU{r;y}>^LY-#yia7o@I!hWM8t|D!s9V5$63@+iZLAIbU< z&yv+*4+4>sufL5uVSk3ioQI|&N$ z(eoQPInOLe3O79S?_6i+ok{%L8-V*H|IVOW1v=`=BO}-QRbug@`tk_&1`UPPEd|pQ z`F}I7I-zD#FP4QSZYIeu8TMZW^?^n&l#YuO1cjN&(KKOmu(&0RyT$MK_W`DfdnbRl zb+YHe`{Vg%-jkN7Z|O3ut%2`A2)EJCAx19+Pbt2b{bI;|f5Oi_WIa0B*2l zUa8kA{|dCNpze_bEepy%OCL#UGx0jtL}MAfVCyc1s6 z;=OZ)jcdgiW=psffORr%zsmfYn4uW~ND%2@N92;s|8c<*?7{)CyK7^vY zh9aDF;B9fOxECB*AS);dQ5c+61Pmaak>l8WsXB!ZT|@+$F%f-hd>6xr8G8{ZzA#k# zGJuOiM3$f)a-lzjG^jJ(iFAsYFcj=9P@J;}d9f+Z0#rdJF&pqfRXc8f0l>R>w*VK? zwb@SFGfl;ON=nCvHz5MyavCxYBR>N`D~vY4>(hlzk;AwD@%*>XKLQK@{7FKZq<*~@ P00000NkvXXu0mjfeXZ0W literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.Server/wwwroot/images/logo/48X48.png b/BlazorBootstrap.Demo.Server/wwwroot/images/logo/48X48.png new file mode 100644 index 0000000000000000000000000000000000000000..6b72cc6a62ee7a3ca5a3e710ec35abd98888c157 GIT binary patch literal 2493 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 literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.Server/wwwroot/images/logo/96X96.png b/BlazorBootstrap.Demo.Server/wwwroot/images/logo/96X96.png new file mode 100644 index 0000000000000000000000000000000000000000..d78b76e8e7d69bf52a5e59ad4dfa4ffcee1abfda GIT binary patch literal 5130 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 sDE1 \ No newline at end of file diff --git a/BlazorBootstrap.Demo.Server/wwwroot/images/logo/logo-white.svg b/BlazorBootstrap.Demo.Server/wwwroot/images/logo/logo-white.svg new file mode 100644 index 000000000..629cd3367 --- /dev/null +++ b/BlazorBootstrap.Demo.Server/wwwroot/images/logo/logo-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.Server/wwwroot/images/logo/logo.svg b/BlazorBootstrap.Demo.Server/wwwroot/images/logo/logo.svg new file mode 100644 index 000000000..86d94bf13 --- /dev/null +++ b/BlazorBootstrap.Demo.Server/wwwroot/images/logo/logo.svg @@ -0,0 +1,17632 @@ + + + + + + + + + + + + + + + + + + B + + diff --git a/BlazorBootstrap.Demo.Server/wwwroot/images/placeholder.png b/BlazorBootstrap.Demo.Server/wwwroot/images/placeholder.png new file mode 100644 index 0000000000000000000000000000000000000000..6928765e15125d25db4c4dc0faa36a8514200456 GIT binary patch literal 2680 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 literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.Server/wwwroot/sample-data/customer/customer.json b/BlazorBootstrap.Demo.Server/wwwroot/sample-data/customer/customer.json new file mode 100644 index 000000000..c7b07bbf2 --- /dev/null +++ b/BlazorBootstrap.Demo.Server/wwwroot/sample-data/customer/customer.json @@ -0,0 +1 @@ +[{"customerId":1,"customerName":"Laith Berger","phone":"(379) 882-1444","email":"auctor.velit@protonmail.com","address":"278-7577 Inceptos Ave","postalZip":"5481","country":"Norway"},{"customerId":2,"customerName":"Ivor Burnett","phone":"(551) 710-5413","email":"donec.non@outlook.com","address":"Ap #206-2313 A, Ave","postalZip":"KF91 6RO","country":"Australia"},{"customerId":3,"customerName":"Yasir Hobbs","phone":"(538) 773-6771","email":"et@outlook.com","address":"P.O. Box 209, 6872 Mollis. Av.","postalZip":"56137","country":"Singapore"},{"customerId":4,"customerName":"Rinah Bowman","phone":"(834) 224-3856","email":"elit@protonmail.ca","address":"Ap #657-4008 Nulla Rd.","postalZip":"99566","country":"Philippines"},{"customerId":5,"customerName":"Montana Avery","phone":"(514) 546-4034","email":"tristique.senectus@hotmail.couk","address":"Ap #915-2989 Venenatis Ave","postalZip":"25425-84215","country":"South Africa"},{"customerId":6,"customerName":"Kevyn Smith","phone":"1-152-749-6373","email":"neque@protonmail.ca","address":"431-4752 Neque St.","postalZip":"3697","country":"India"},{"customerId":7,"customerName":"Maite Faulkner","phone":"(466) 210-3875","email":"malesuada@outlook.couk","address":"P.O. Box 254, 3766 Quisque Street","postalZip":"55263","country":"New Zealand"},{"customerId":8,"customerName":"Anne Meadows","phone":"(527) 848-2270","email":"donec.tempus@icloud.ca","address":"Ap #378-2309 Ornare. Av.","postalZip":"19845","country":"Germany"},{"customerId":9,"customerName":"Kamal Bush","phone":"(937) 745-2871","email":"nec.luctus@protonmail.org","address":"7491 Egestas. Rd.","postalZip":"13-185","country":"Chile"},{"customerId":10,"customerName":"Tasha Gill","phone":"(755) 756-9385","email":"justo.faucibus@hotmail.couk","address":"487-2374 Sed Street","postalZip":"800173","country":"Mexico"},{"customerId":11,"customerName":"Vernon Clark","phone":"(630) 344-8774","email":"velit.cras@protonmail.net","address":"1885 Proin Road","postalZip":"414742","country":"Colombia"},{"customerId":12,"customerName":"Kibo Shelton","phone":"(278) 258-8502","email":"ante.maecenas@yahoo.com","address":"P.O. Box 336, 5076 Fringilla St.","postalZip":"87-381","country":"Turkey"},{"customerId":13,"customerName":"Shelly Vazquez","phone":"(643) 452-4588","email":"lacus.nulla@outlook.ca","address":"602-8739 Mauris St.","postalZip":"56-22","country":"France"},{"customerId":14,"customerName":"Hilary Poole","phone":"(937) 972-7551","email":"suspendisse.sagittis@hotmail.ca","address":"875-9021 Sed Av.","postalZip":"66320","country":"United States"},{"customerId":15,"customerName":"Tarik England","phone":"(554) 498-3672","email":"nec.metus.facilisis@hotmail.com","address":"P.O. Box 316, 3800 Pellentesque Rd.","postalZip":"75-22","country":"Italy"},{"customerId":16,"customerName":"Hamilton Hayden","phone":"1-882-568-0494","email":"class.aptent.taciti@protonmail.couk","address":"567-8292 Sed Road","postalZip":"52861","country":"Poland"},{"customerId":17,"customerName":"Uriel Barton","phone":"(176) 435-5738","email":"dolor.sit.amet@protonmail.net","address":"882-7144 Arcu. Street","postalZip":"5663-2444","country":"Germany"},{"customerId":18,"customerName":"Craig Richmond","phone":"(927) 236-8054","email":"ut.odio@outlook.com","address":"Ap #571-6322 Tortor Ave","postalZip":"39143","country":"Philippines"},{"customerId":19,"customerName":"Brent Robbins","phone":"(492) 936-5527","email":"interdum@aol.ca","address":"Ap #494-482 Egestas St.","postalZip":"36751","country":"Costa Rica"},{"customerId":20,"customerName":"Chaney Short","phone":"1-733-537-5892","email":"sed@outlook.edu","address":"P.O. Box 567, 8641 Fermentum Avenue","postalZip":"243631","country":"Pakistan"},{"customerId":21,"customerName":"Orlando Chapman","phone":"1-798-564-3871","email":"mauris@hotmail.edu","address":"9021 Sem Av.","postalZip":"8706","country":"Vietnam"},{"customerId":22,"customerName":"Holly Long","phone":"(613) 844-0530","email":"non.nisi@icloud.org","address":"411-5020 At St.","postalZip":"3183-2246","country":"Netherlands"},{"customerId":23,"customerName":"Jane Salas","phone":"1-746-223-2024","email":"odio@google.ca","address":"Ap #842-2591 Consectetuer Avenue","postalZip":"73-48","country":"China"},{"customerId":24,"customerName":"Deirdre Simmons","phone":"1-925-245-4398","email":"sed.turpis.nec@protonmail.ca","address":"Ap #214-2638 Mauris, Avenue","postalZip":"377358","country":"Peru"},{"customerId":25,"customerName":"Sigourney Melendez","phone":"1-147-785-7367","email":"odio.nam@icloud.ca","address":"876-3056 Non, St.","postalZip":"9543-3653","country":"Chile"},{"customerId":26,"customerName":"Zachary Merritt","phone":"1-636-602-5539","email":"semper.et@aol.edu","address":"806 Posuere Street","postalZip":"12467","country":"Norway"},{"customerId":27,"customerName":"Derek Glover","phone":"(150) 931-4838","email":"donec.fringilla@google.couk","address":"Ap #365-6386 Neque Avenue","postalZip":"454395","country":"Canada"},{"customerId":28,"customerName":"Alfonso Rasmussen","phone":"(927) 264-8247","email":"lorem.fringilla@aol.net","address":"Ap #229-4362 Eros St.","postalZip":"3171","country":"Netherlands"},{"customerId":29,"customerName":"Nadine Oneal","phone":"(188) 746-1660","email":"a.odio@google.edu","address":"746-5975 Eu, Avenue","postalZip":"1865","country":"Belgium"},{"customerId":30,"customerName":"Naomi Dejesus","phone":"1-265-639-0296","email":"fames@aol.couk","address":"P.O. Box 290, 9020 Pellentesque St.","postalZip":"897421","country":"Canada"},{"customerId":31,"customerName":"Winter Weber","phone":"(538) 648-2568","email":"faucibus.leo.in@protonmail.org","address":"Ap #725-3539 Dolor Street","postalZip":"40507","country":"Ireland"},{"customerId":32,"customerName":"Jennifer Hurst","phone":"(531) 733-3049","email":"urna.nunc@outlook.couk","address":"P.O. Box 174, 9406 Ante St.","postalZip":"14153","country":"Nigeria"},{"customerId":33,"customerName":"Kevin Guy","phone":"(283) 229-1753","email":"mauris@yahoo.ca","address":"P.O. Box 436, 3613 Ligula. Rd.","postalZip":"523981","country":"Norway"},{"customerId":34,"customerName":"Hakeem Henson","phone":"1-264-857-8861","email":"mus@outlook.com","address":"907-8892 Montes, Rd.","postalZip":"46-846","country":"United Kingdom"},{"customerId":35,"customerName":"Avram Hardin","phone":"1-764-303-7127","email":"vel.pede.blandit@protonmail.org","address":"Ap #328-2448 Velit. Rd.","postalZip":"728900","country":"Germany"},{"customerId":36,"customerName":"Kiayada Bray","phone":"(935) 824-3485","email":"lectus.rutrum@hotmail.edu","address":"580-9599 Mattis St.","postalZip":"4055","country":"Philippines"},{"customerId":37,"customerName":"Elizabeth Cardenas","phone":"1-633-852-7760","email":"hendrerit.id.ante@hotmail.org","address":"Ap #628-1875 Egestas. Rd.","postalZip":"18990","country":"Pakistan"},{"customerId":38,"customerName":"Kimberley Durham","phone":"(746) 731-5318","email":"et@hotmail.org","address":"P.O. Box 469, 7337 Neque Street","postalZip":"4187","country":"Brazil"},{"customerId":39,"customerName":"Arthur Clarke","phone":"(287) 129-2460","email":"egestas@google.org","address":"8458 Vivamus Rd.","postalZip":"1827 JX","country":"Russian Federation"},{"customerId":40,"customerName":"Giacomo Newton","phone":"1-182-675-4805","email":"non.enim.commodo@google.com","address":"Ap #341-8380 Ut Rd.","postalZip":"41715","country":"Vietnam"},{"customerId":41,"customerName":"Amelia Alexander","phone":"1-718-582-4253","email":"non.vestibulum.nec@outlook.ca","address":"413-9679 Cum Avenue","postalZip":"26744","country":"Spain"},{"customerId":42,"customerName":"Stacy Davenport","phone":"1-819-211-8276","email":"risus.donec.egestas@yahoo.org","address":"P.O. Box 415, 2772 Vitae, St.","postalZip":"597735","country":"Germany"},{"customerId":43,"customerName":"Rosalyn Patrick","phone":"1-995-906-7898","email":"vitae@google.com","address":"P.O. Box 693, 5762 Porttitor Rd.","postalZip":"9759 WE","country":"Ukraine"},{"customerId":44,"customerName":"Logan Buckner","phone":"(516) 386-2835","email":"donec.nibh@google.com","address":"Ap #275-1807 Dictum Ave","postalZip":"40233","country":"Canada"},{"customerId":45,"customerName":"Stewart Johnston","phone":"1-967-407-4365","email":"pharetra.felis.eget@hotmail.org","address":"Ap #710-3875 Lectus, St.","postalZip":"55065","country":"Nigeria"},{"customerId":46,"customerName":"Colton Myers","phone":"1-100-736-7463","email":"nam.ligula@aol.com","address":"443-1273 Natoque Rd.","postalZip":"14672","country":"Peru"},{"customerId":47,"customerName":"Sylvester Phillips","phone":"(297) 713-3040","email":"lorem.vehicula@hotmail.org","address":"P.O. Box 642, 9852 Nulla. St.","postalZip":"7660","country":"Nigeria"},{"customerId":48,"customerName":"Deacon Barnes","phone":"(571) 242-4528","email":"gravida.mauris@yahoo.org","address":"334-9465 Amet, Av.","postalZip":"382115","country":"Pakistan"},{"customerId":49,"customerName":"Drew Terrell","phone":"1-715-909-4824","email":"et@icloud.com","address":"Ap #616-7205 Turpis St.","postalZip":"10087","country":"Norway"},{"customerId":50,"customerName":"Britanni Bennett","phone":"1-220-669-3332","email":"turpis@icloud.org","address":"4222 Lobortis Street","postalZip":"6523","country":"Singapore"},{"customerId":51,"customerName":"Desirae Houston","phone":"(726) 847-0251","email":"iaculis@outlook.couk","address":"P.O. Box 950, 421 Ipsum Road","postalZip":"654802","country":"Canada"},{"customerId":52,"customerName":"Jordan Knight","phone":"1-674-723-2927","email":"dolor.elit@protonmail.edu","address":"P.O. Box 604, 3917 Commodo Rd.","postalZip":"33-746","country":"Sweden"},{"customerId":53,"customerName":"Lucy Newman","phone":"1-795-382-9988","email":"mollis.lectus.pede@protonmail.edu","address":"Ap #457-3018 Non Road","postalZip":"151381","country":"China"},{"customerId":54,"customerName":"Kylan Church","phone":"1-593-716-9158","email":"dictum.eu@protonmail.net","address":"Ap #519-178 Ut Street","postalZip":"83-26","country":"Nigeria"},{"customerId":55,"customerName":"Nevada Howard","phone":"(324) 886-7525","email":"litora@icloud.ca","address":"P.O. Box 215, 2750 Pellentesque St.","postalZip":"12444","country":"Colombia"},{"customerId":56,"customerName":"Kirby Wilder","phone":"1-552-868-5375","email":"ullamcorper.nisl@icloud.org","address":"3404 Iaculis Road","postalZip":"695822","country":"Brazil"},{"customerId":57,"customerName":"Risa Hendrix","phone":"(877) 579-6357","email":"faucibus.lectus@hotmail.org","address":"330-3283 Magnis Rd.","postalZip":"7527 JE","country":"Vietnam"},{"customerId":58,"customerName":"Hu Wong","phone":"1-461-816-4756","email":"per@icloud.org","address":"681-2058 Feugiat. Rd.","postalZip":"51362","country":"Netherlands"},{"customerId":59,"customerName":"Sonya Hughes","phone":"(858) 658-3635","email":"faucibus.lectus.a@hotmail.net","address":"P.O. Box 553, 3124 Aliquam St.","postalZip":"27829","country":"Vietnam"},{"customerId":60,"customerName":"Craig Logan","phone":"(906) 473-4868","email":"tristique@google.ca","address":"P.O. Box 942, 610 Est, Av.","postalZip":"3547","country":"Netherlands"},{"customerId":61,"customerName":"Raja Dorsey","phone":"1-829-181-5111","email":"varius.orci.in@google.org","address":"P.O. Box 566, 8429 Enim. Rd.","postalZip":"4450 HZ","country":"Ireland"},{"customerId":62,"customerName":"Asher Morin","phone":"(221) 262-6862","email":"mauris@google.org","address":"P.O. Box 671, 2035 Vulputate, Rd.","postalZip":"8552","country":"Mexico"},{"customerId":63,"customerName":"Bruce Ferrell","phone":"(820) 342-4472","email":"eu.euismod.ac@protonmail.edu","address":"Ap #767-7889 Sed Av.","postalZip":"11532","country":"Chile"},{"customerId":64,"customerName":"Erasmus Adkins","phone":"(928) 341-5433","email":"enim.nisl@outlook.edu","address":"P.O. Box 951, 5448 Pharetra Avenue","postalZip":"173364","country":"South Africa"},{"customerId":65,"customerName":"TaShya Huber","phone":"(997) 425-5262","email":"erat.vitae@icloud.com","address":"517 Non St.","postalZip":"38416-44863","country":"Indonesia"},{"customerId":66,"customerName":"Tate Blackburn","phone":"1-524-604-6431","email":"dui.suspendisse.ac@protonmail.edu","address":"Ap #570-9373 Sed Street","postalZip":"3377","country":"China"},{"customerId":67,"customerName":"Neve Stewart","phone":"(886) 554-7149","email":"non@yahoo.couk","address":"887 Nullam Road","postalZip":"16823","country":"Sweden"},{"customerId":68,"customerName":"Emerald Workman","phone":"1-358-673-5524","email":"mauris.erat.eget@protonmail.ca","address":"691-5554 Odio Road","postalZip":"47582","country":"Nigeria"},{"customerId":69,"customerName":"Lisandra Roman","phone":"(726) 475-0331","email":"proin@aol.edu","address":"Ap #505-3613 Mauris Rd.","postalZip":"35506","country":"Australia"},{"customerId":70,"customerName":"Dalton Duran","phone":"(478) 837-6585","email":"aenean.euismod@yahoo.edu","address":"4588 Molestie Ave","postalZip":"1653","country":"Vietnam"},{"customerId":71,"customerName":"Victor Mckee","phone":"1-660-287-2856","email":"nam.ligula.elit@protonmail.edu","address":"Ap #536-3369 Non Rd.","postalZip":"62360","country":"Canada"},{"customerId":72,"customerName":"Salvador Robles","phone":"1-935-528-6827","email":"nulla.interdum.curabitur@aol.com","address":"672-4225 Malesuada St.","postalZip":"21618","country":"France"},{"customerId":73,"customerName":"Jerry Gallegos","phone":"(418) 584-9666","email":"et@protonmail.edu","address":"583-642 Lobortis Av.","postalZip":"261152","country":"Brazil"},{"customerId":74,"customerName":"Holmes Elliott","phone":"(829) 533-8718","email":"tellus.suspendisse@outlook.com","address":"P.O. Box 625, 133 Sed Ave","postalZip":"56286","country":"Singapore"},{"customerId":75,"customerName":"Summer O'donnell","phone":"1-775-462-1128","email":"orci@yahoo.ca","address":"P.O. Box 292, 723 Fringilla Avenue","postalZip":"383881","country":"Brazil"},{"customerId":76,"customerName":"Whoopi Ashley","phone":"(444) 234-8486","email":"placerat@yahoo.com","address":"370-7703 Nullam Rd.","postalZip":"7255","country":"South Korea"},{"customerId":77,"customerName":"Brenden Rojas","phone":"(551) 747-6714","email":"euismod.urna@outlook.couk","address":"725-3109 Vel, Av.","postalZip":"33768","country":"Sweden"},{"customerId":78,"customerName":"Cody Valencia","phone":"1-765-411-6783","email":"donec.est@yahoo.net","address":"482-2216 Nunc Rd.","postalZip":"5767","country":"Brazil"},{"customerId":79,"customerName":"Evelyn Young","phone":"(261) 753-5708","email":"non@protonmail.org","address":"108-7247 Non, Av.","postalZip":"2241","country":"Peru"},{"customerId":80,"customerName":"Madeline Gay","phone":"1-777-735-1512","email":"sit.amet@google.com","address":"250-9455 Et Av.","postalZip":"26-969","country":"Sweden"},{"customerId":81,"customerName":"Chloe Buchanan","phone":"1-741-492-5197","email":"lorem@icloud.com","address":"560-7818 Phasellus Street","postalZip":"348619","country":"Brazil"},{"customerId":82,"customerName":"Deirdre Sanchez","phone":"(255) 431-3593","email":"lectus@outlook.ca","address":"167-7082 Pharetra Rd.","postalZip":"84825","country":"France"},{"customerId":83,"customerName":"Patience Ayala","phone":"1-175-835-6043","email":"eu@hotmail.edu","address":"Ap #939-8609 Ullamcorper, Avenue","postalZip":"424592","country":"Netherlands"},{"customerId":84,"customerName":"Raphael Meyers","phone":"1-618-652-5132","email":"diam.luctus@hotmail.edu","address":"897-234 Integer Road","postalZip":"323418","country":"Philippines"},{"customerId":85,"customerName":"Grady Mcconnell","phone":"(415) 838-4695","email":"elementum.at@hotmail.ca","address":"Ap #573-1091 Lobortis Road","postalZip":"9136-2302","country":"India"},{"customerId":86,"customerName":"Forrest Gallagher","phone":"(889) 734-2185","email":"aliquam.adipiscing@hotmail.ca","address":"699-4186 Sed Avenue","postalZip":"2529","country":"Turkey"},{"customerId":87,"customerName":"Vincent Christensen","phone":"(657) 527-7613","email":"sed@protonmail.net","address":"6745 Cursus Avenue","postalZip":"28371","country":"New Zealand"},{"customerId":88,"customerName":"Knox Christensen","phone":"1-644-505-3615","email":"parturient.montes@google.edu","address":"Ap #137-6596 Magna Avenue","postalZip":"30746","country":"Philippines"},{"customerId":89,"customerName":"Bruno Rose","phone":"1-386-544-9221","email":"diam.luctus.lobortis@icloud.ca","address":"Ap #834-6610 Nullam St.","postalZip":"88306-862","country":"Mexico"},{"customerId":90,"customerName":"Ainsley Cardenas","phone":"1-403-423-2787","email":"fringilla.est@outlook.com","address":"Ap #881-2935 Ac Street","postalZip":"66813","country":"Austria"},{"customerId":91,"customerName":"Eve Haley","phone":"(598) 779-1786","email":"etiam.bibendum@google.ca","address":"272-4961 Accumsan Rd.","postalZip":"26918","country":"Norway"},{"customerId":92,"customerName":"Holly Suarez","phone":"1-134-603-2874","email":"curabitur.sed@protonmail.ca","address":"4423 Magnis Street","postalZip":"977634","country":"United States"},{"customerId":93,"customerName":"Kylynn Sanchez","phone":"1-408-582-5546","email":"tincidunt@yahoo.ca","address":"6963 Vel Ave","postalZip":"3581","country":"Netherlands"},{"customerId":94,"customerName":"Unity Joyner","phone":"1-272-884-1422","email":"rhoncus.proin@protonmail.edu","address":"Ap #124-5421 Rhoncus Rd.","postalZip":"23-55","country":"South Africa"},{"customerId":95,"customerName":"Uma Bates","phone":"1-483-533-3821","email":"lorem.ipsum@outlook.ca","address":"Ap #442-8734 Nam St.","postalZip":"1175","country":"Austria"},{"customerId":96,"customerName":"Laura Barrera","phone":"(471) 953-1134","email":"vehicula.aliquet@protonmail.edu","address":"103-2810 Quis, Rd.","postalZip":"611481","country":"Colombia"},{"customerId":97,"customerName":"Maya Floyd","phone":"1-225-552-3173","email":"enim.commodo@outlook.com","address":"P.O. Box 323, 419 Sodales Avenue","postalZip":"78575","country":"Mexico"},{"customerId":98,"customerName":"Keane Bates","phone":"1-763-432-1755","email":"dolor@icloud.org","address":"7976 Lobortis St.","postalZip":"415765","country":"Pakistan"},{"customerId":99,"customerName":"Daniel Oneil","phone":"1-898-887-1438","email":"rutrum@google.org","address":"4147 Blandit. St.","postalZip":"862013","country":"Ireland"},{"customerId":100,"customerName":"Whoopi Kirby","phone":"1-227-963-8934","email":"non.sapien@protonmail.couk","address":"Ap #616-9146 Vitae Street","postalZip":"S2N 3G4","country":"Philippines"},{"customerId":101,"customerName":"Chancellor Schmidt","phone":"1-257-278-1512","email":"elementum.dui@google.ca","address":"709-4368 Eget Avenue","postalZip":"84192","country":"Singapore"},{"customerId":102,"customerName":"Jeanette Mcclain","phone":"(594) 232-4539","email":"interdum.curabitur.dictum@protonmail.couk","address":"1491 Suscipit Rd.","postalZip":"98169","country":"China"},{"customerId":103,"customerName":"Cassady House","phone":"(587) 515-2289","email":"mauris.molestie@protonmail.org","address":"379-2361 Orci. Rd.","postalZip":"58451-626","country":"Germany"},{"customerId":104,"customerName":"Paloma Marks","phone":"1-845-404-6778","email":"donec.non@google.com","address":"3701 Tincidunt, Av.","postalZip":"27812-705","country":"Austria"},{"customerId":105,"customerName":"Mona Ramos","phone":"(626) 558-5848","email":"facilisis.non@hotmail.edu","address":"4240 Et, Avenue","postalZip":"4208","country":"Italy"},{"customerId":106,"customerName":"Charissa Mccray","phone":"(304) 568-2336","email":"in.lobortis.tellus@icloud.couk","address":"Ap #857-2334 Consequat Ave","postalZip":"6545","country":"Colombia"},{"customerId":107,"customerName":"Xander Manning","phone":"1-366-929-4289","email":"libero.mauris@yahoo.net","address":"Ap #856-8433 Sed St.","postalZip":"0843","country":"Vietnam"},{"customerId":108,"customerName":"Alisa Hensley","phone":"(887) 788-9532","email":"cum.sociis@google.net","address":"Ap #214-2529 Tellus Street","postalZip":"71577","country":"United Kingdom"},{"customerId":109,"customerName":"Sean Cantu","phone":"1-341-487-4494","email":"pellentesque@aol.couk","address":"4230 Ipsum Av.","postalZip":"243618","country":"Ireland"},{"customerId":110,"customerName":"Anastasia Park","phone":"1-330-813-7504","email":"hendrerit.consectetuer@outlook.couk","address":"966-6254 At Rd.","postalZip":"31141","country":"Brazil"},{"customerId":111,"customerName":"Penelope Chan","phone":"(298) 403-8351","email":"mauris@hotmail.couk","address":"644-6055 Cubilia Ave","postalZip":"36-698","country":"Sweden"},{"customerId":112,"customerName":"Dane Gould","phone":"(763) 516-0833","email":"a@aol.net","address":"9900 Vitae St.","postalZip":"5074","country":"Chile"},{"customerId":113,"customerName":"Rigel Morrow","phone":"1-486-135-8227","email":"phasellus.elit@outlook.couk","address":"Ap #513-1698 Nam Road","postalZip":"9888 CG","country":"Germany"},{"customerId":114,"customerName":"Rachel Walter","phone":"(168) 802-6672","email":"eleifend.vitae@protonmail.couk","address":"P.O. Box 252, 5440 Dictum Av.","postalZip":"475378","country":"Vietnam"},{"customerId":115,"customerName":"Dieter Bryant","phone":"1-600-315-4688","email":"donec.at@hotmail.edu","address":"P.O. Box 235, 6138 Augue Avenue","postalZip":"10799","country":"Ukraine"},{"customerId":116,"customerName":"Trevor Cook","phone":"(934) 210-2974","email":"nullam.feugiat.placerat@yahoo.net","address":"346-1650 Est Ave","postalZip":"8721 FE","country":"Italy"},{"customerId":117,"customerName":"Amanda Richards","phone":"(649) 729-2153","email":"nec.tellus.nunc@google.com","address":"493 Elit Rd.","postalZip":"14169","country":"China"},{"customerId":118,"customerName":"Francis Hunt","phone":"(828) 818-6888","email":"non.sollicitudin.a@aol.org","address":"7808 Ut St.","postalZip":"38-27","country":"New Zealand"},{"customerId":119,"customerName":"Catherine Hahn","phone":"(295) 899-8645","email":"hendrerit.consectetuer@hotmail.edu","address":"601-7752 Maecenas Street","postalZip":"23649","country":"Canada"},{"customerId":120,"customerName":"Victoria O'brien","phone":"1-137-599-3115","email":"enim.mi@google.couk","address":"P.O. Box 853, 3183 Nulla. Av.","postalZip":"20262","country":"Germany"},{"customerId":121,"customerName":"Dale Mcgowan","phone":"(725) 237-5823","email":"interdum.curabitur.dictum@google.com","address":"547-7664 Orci. Rd.","postalZip":"8109","country":"Costa Rica"},{"customerId":122,"customerName":"Quail Bolton","phone":"(832) 674-8829","email":"tristique@outlook.net","address":"Ap #924-9195 Scelerisque Rd.","postalZip":"161618","country":"South Korea"},{"customerId":123,"customerName":"Colleen Buchanan","phone":"(489) 652-9221","email":"gravida.non.sollicitudin@outlook.com","address":"Ap #585-4765 Curabitur Rd.","postalZip":"9155","country":"New Zealand"},{"customerId":124,"customerName":"Jordan Hull","phone":"1-486-233-4722","email":"velit@yahoo.org","address":"3842 Ut St.","postalZip":"17373","country":"India"},{"customerId":125,"customerName":"Quintessa Sampson","phone":"(847) 389-1866","email":"risus.duis.a@google.com","address":"334-4544 Et Rd.","postalZip":"33-62","country":"Norway"},{"customerId":126,"customerName":"Karly Craft","phone":"1-524-364-4215","email":"tellus.justo@hotmail.org","address":"354-9670 Urna Street","postalZip":"787883","country":"New Zealand"},{"customerId":127,"customerName":"Barrett Dean","phone":"1-380-362-3015","email":"semper.rutrum@google.com","address":"842-4346 Quis Avenue","postalZip":"2289","country":"South Korea"},{"customerId":128,"customerName":"India Whitaker","phone":"(522) 788-6541","email":"sed@yahoo.com","address":"P.O. Box 108, 3306 Non Rd.","postalZip":"02488","country":"Netherlands"},{"customerId":129,"customerName":"Thomas Richard","phone":"1-824-641-6273","email":"neque@outlook.ca","address":"316-1643 Nulla Avenue","postalZip":"61874-416","country":"Indonesia"},{"customerId":130,"customerName":"Jasmine Crane","phone":"1-891-646-0226","email":"diam.proin@protonmail.net","address":"Ap #377-2730 Arcu. St.","postalZip":"39781-73286","country":"Norway"},{"customerId":131,"customerName":"Wallace Doyle","phone":"(254) 654-2761","email":"ultrices@aol.edu","address":"Ap #457-8572 Integer Road","postalZip":"7765-3087","country":"Ireland"},{"customerId":132,"customerName":"Alec Pierce","phone":"(197) 667-1536","email":"pede.praesent@protonmail.com","address":"Ap #727-3783 Donec St.","postalZip":"16697","country":"Norway"},{"customerId":133,"customerName":"Colleen Mercado","phone":"1-794-170-8235","email":"sed.orci@google.ca","address":"Ap #551-4511 Ut, St.","postalZip":"5506","country":"India"},{"customerId":134,"customerName":"Idola Dotson","phone":"(312) 785-6651","email":"arcu@aol.couk","address":"Ap #228-5653 Purus. Avenue","postalZip":"8901 HD","country":"South Africa"},{"customerId":135,"customerName":"Leah Wilkinson","phone":"1-339-577-0861","email":"diam.dictum@yahoo.com","address":"5480 Risus. Street","postalZip":"14901","country":"Norway"},{"customerId":136,"customerName":"Amal Evans","phone":"1-167-757-4737","email":"amet.orci@google.edu","address":"Ap #544-6344 Metus. Road","postalZip":"9286","country":"Poland"},{"customerId":137,"customerName":"Hollee Strickland","phone":"(279) 204-7726","email":"odio@aol.ca","address":"3157 Varius Street","postalZip":"85572-75813","country":"Australia"},{"customerId":138,"customerName":"Adrian Walter","phone":"1-663-544-8567","email":"nec.mollis@outlook.couk","address":"7658 Est Rd.","postalZip":"489734","country":"Belgium"},{"customerId":139,"customerName":"Alisa Ayala","phone":"(370) 634-7253","email":"semper.tellus@yahoo.ca","address":"6653 Dictum Ave","postalZip":"6156","country":"Nigeria"},{"customerId":140,"customerName":"Petra Orr","phone":"1-118-977-8874","email":"et.rutrum@google.com","address":"198-117 Interdum. Av.","postalZip":"75848","country":"Singapore"},{"customerId":141,"customerName":"Remedios Wade","phone":"1-453-153-7725","email":"velit.eget.laoreet@hotmail.edu","address":"398-2243 Risus. Street","postalZip":"3145","country":"Philippines"},{"customerId":142,"customerName":"Daria Fisher","phone":"1-922-693-0450","email":"mauris.ipsum.porta@outlook.net","address":"P.O. Box 517, 9472 Id Street","postalZip":"5760-3343","country":"Poland"},{"customerId":143,"customerName":"Wang Shaffer","phone":"(488) 297-7564","email":"nibh.sit@icloud.edu","address":"248-3849 Nulla Rd.","postalZip":"45566","country":"India"},{"customerId":144,"customerName":"Nichole William","phone":"(341) 312-6916","email":"erat.sed@protonmail.com","address":"1929 Est Avenue","postalZip":"63715","country":"France"},{"customerId":145,"customerName":"Lee Patterson","phone":"1-874-858-8879","email":"nulla.integer@icloud.com","address":"Ap #890-550 Ad St.","postalZip":"4895","country":"China"},{"customerId":146,"customerName":"Phelan Peterson","phone":"(670) 464-0740","email":"vivamus.euismod@icloud.edu","address":"8281 Ac Ave","postalZip":"166723","country":"Indonesia"},{"customerId":147,"customerName":"Willa Bradshaw","phone":"(867) 712-4721","email":"cursus@yahoo.com","address":"Ap #582-6883 Mauris Street","postalZip":"671047","country":"South Korea"},{"customerId":148,"customerName":"Mohammad Spencer","phone":"(288) 753-0218","email":"amet.consectetuer.adipiscing@google.edu","address":"Ap #677-7632 Ac Av.","postalZip":"94-68","country":"South Africa"},{"customerId":149,"customerName":"Jemima Ramsey","phone":"(661) 120-0528","email":"mi.tempor@outlook.com","address":"7627 Risus. Rd.","postalZip":"573033","country":"Peru"},{"customerId":150,"customerName":"Branden Flynn","phone":"1-280-949-5552","email":"ornare.lectus.ante@icloud.net","address":"P.O. Box 546, 6023 Hendrerit Avenue","postalZip":"461852","country":"Netherlands"},{"customerId":151,"customerName":"Hamish Horton","phone":"1-120-249-8810","email":"nullam@protonmail.com","address":"Ap #703-3807 Cras Rd.","postalZip":"3109 QK","country":"Vietnam"},{"customerId":152,"customerName":"Nissim Bolton","phone":"(317) 269-3680","email":"iaculis.enim.sit@icloud.net","address":"677-2899 Semper Rd.","postalZip":"968232","country":"Turkey"},{"customerId":153,"customerName":"Graiden Moon","phone":"(709) 852-2733","email":"erat.vitae@outlook.com","address":"890-441 Ultrices. Street","postalZip":"51808","country":"Poland"},{"customerId":154,"customerName":"Ferris Lancaster","phone":"(996) 822-7520","email":"lacinia.sed.congue@protonmail.edu","address":"Ap #688-7311 Sem Av.","postalZip":"0238","country":"Ireland"},{"customerId":155,"customerName":"Clio Mccarthy","phone":"(164) 332-8316","email":"dictum@google.net","address":"948-6813 Arcu. St.","postalZip":"6864","country":"United States"},{"customerId":156,"customerName":"Kaseem Greene","phone":"(935) 829-2472","email":"magna.a@google.edu","address":"Ap #799-4143 Id Rd.","postalZip":"5655","country":"Costa Rica"},{"customerId":157,"customerName":"Sybill Pitts","phone":"1-947-253-5977","email":"molestie.dapibus@protonmail.ca","address":"568-480 Nibh St.","postalZip":"31145","country":"Sweden"},{"customerId":158,"customerName":"Conan Meyer","phone":"1-493-424-1552","email":"arcu.vestibulum@outlook.edu","address":"Ap #442-2569 Tincidunt Rd.","postalZip":"A9S 7B4","country":"Costa Rica"},{"customerId":159,"customerName":"Lev Small","phone":"(450) 596-7551","email":"sem.magna@yahoo.org","address":"P.O. Box 388, 2942 Elit, Rd.","postalZip":"214938","country":"Poland"},{"customerId":160,"customerName":"Nayda Rowe","phone":"(656) 765-3487","email":"vulputate.posuere@protonmail.org","address":"Ap #299-7971 Maecenas Street","postalZip":"433098","country":"Vietnam"},{"customerId":161,"customerName":"Brenden Taylor","phone":"1-681-577-3266","email":"phasellus.dolor.elit@protonmail.net","address":"P.O. Box 370, 9840 Ante. Ave","postalZip":"64289-11548","country":"Austria"},{"customerId":162,"customerName":"Timothy Sutton","phone":"(444) 218-4545","email":"nulla.at@aol.net","address":"485-1176 Eget Avenue","postalZip":"10709","country":"Germany"},{"customerId":163,"customerName":"Zephania Banks","phone":"1-544-569-2574","email":"magnis@outlook.org","address":"7028 Risus. Avenue","postalZip":"21-851","country":"Nigeria"},{"customerId":164,"customerName":"Reagan O'brien","phone":"(231) 373-3319","email":"phasellus.dapibus@hotmail.net","address":"Ap #169-271 Facilisis St.","postalZip":"8753-2182","country":"Belgium"},{"customerId":165,"customerName":"Bradley Bartlett","phone":"1-388-513-4174","email":"erat.semper@yahoo.edu","address":"Ap #918-9331 Ultrices. Av.","postalZip":"85220","country":"Norway"},{"customerId":166,"customerName":"Lani Jackson","phone":"(877) 547-9285","email":"malesuada.fringilla@yahoo.org","address":"6411 Mus. Av.","postalZip":"3467-3394","country":"Turkey"},{"customerId":167,"customerName":"Igor Gay","phone":"1-314-412-6528","email":"enim.commodo.hendrerit@protonmail.com","address":"Ap #708-7859 Donec Road","postalZip":"65384","country":"Norway"},{"customerId":168,"customerName":"Gay Howell","phone":"(545) 978-4368","email":"et.magnis@yahoo.net","address":"Ap #120-418 Nunc, St.","postalZip":"3234","country":"Indonesia"},{"customerId":169,"customerName":"Maisie Mcclain","phone":"(457) 122-1351","email":"libero.mauris@protonmail.net","address":"Ap #415-705 Non, Rd.","postalZip":"11303","country":"Russian Federation"},{"customerId":170,"customerName":"Sylvia Hayes","phone":"1-200-348-8041","email":"pellentesque.habitant@icloud.edu","address":"Ap #553-9909 Aptent Road","postalZip":"813866","country":"Colombia"},{"customerId":171,"customerName":"Constance Hernandez","phone":"1-214-776-7702","email":"pede.ac@icloud.org","address":"Ap #847-9411 Eget Street","postalZip":"81376-48226","country":"Brazil"},{"customerId":172,"customerName":"Xenos Acosta","phone":"(245) 831-2348","email":"nec.euismod.in@yahoo.net","address":"637-7178 Vitae Ave","postalZip":"170998","country":"Netherlands"},{"customerId":173,"customerName":"Leandra Navarro","phone":"1-417-731-8039","email":"praesent@protonmail.couk","address":"7250 Dictum St.","postalZip":"14152","country":"United States"},{"customerId":174,"customerName":"Yolanda Frye","phone":"1-747-856-8765","email":"aenean@icloud.net","address":"773-9543 Ac St.","postalZip":"3762","country":"Netherlands"},{"customerId":175,"customerName":"Melyssa Moran","phone":"(851) 742-5120","email":"eget.ipsum@aol.org","address":"P.O. Box 141, 8487 Iaculis Street","postalZip":"21135-58571","country":"Vietnam"},{"customerId":176,"customerName":"Jermaine Whitley","phone":"1-713-959-8547","email":"eleifend.vitae@outlook.com","address":"204-8232 Nec, Rd.","postalZip":"411316","country":"Norway"},{"customerId":177,"customerName":"Ramona Cunningham","phone":"1-739-817-2821","email":"eu.enim.etiam@aol.couk","address":"4073 Gravida. Rd.","postalZip":"41213","country":"Austria"},{"customerId":178,"customerName":"Kirk Holcomb","phone":"1-238-478-4240","email":"integer.mollis.integer@icloud.com","address":"P.O. Box 570, 7087 Euismod Av.","postalZip":"484232","country":"Indonesia"},{"customerId":179,"customerName":"Erin Moses","phone":"1-737-387-2710","email":"nec.luctus.felis@aol.ca","address":"Ap #582-3463 A Rd.","postalZip":"1638","country":"Germany"},{"customerId":180,"customerName":"Joelle Casey","phone":"1-235-245-1813","email":"et.risus@icloud.couk","address":"P.O. Box 757, 7096 Tellus Av.","postalZip":"51106","country":"Belgium"},{"customerId":181,"customerName":"Hamilton Serrano","phone":"1-237-330-2730","email":"suspendisse.sed@outlook.org","address":"223 Justo Av.","postalZip":"484955","country":"India"},{"customerId":182,"customerName":"Sierra Bridges","phone":"1-214-790-6763","email":"vitae.nibh.donec@aol.couk","address":"1165 Elit Street","postalZip":"4136","country":"Chile"},{"customerId":183,"customerName":"Jamalia Slater","phone":"1-967-277-3814","email":"nam.ac@hotmail.couk","address":"685-1393 Vulputate, Street","postalZip":"3664","country":"Singapore"},{"customerId":184,"customerName":"Cleo O'brien","phone":"1-336-515-1247","email":"ipsum.phasellus.vitae@yahoo.net","address":"9200 Nam Road","postalZip":"9183-7785","country":"China"},{"customerId":185,"customerName":"Yardley Weeks","phone":"(771) 775-6528","email":"donec.felis@google.com","address":"Ap #821-6615 Porttitor St.","postalZip":"9522","country":"Chile"},{"customerId":186,"customerName":"Gabriel Mullins","phone":"1-653-117-9264","email":"eros.turpis@outlook.net","address":"Ap #974-645 Vel Rd.","postalZip":"32943","country":"Italy"},{"customerId":187,"customerName":"Kirestin Kent","phone":"1-555-824-7829","email":"dignissim.lacus@hotmail.net","address":"560-439 Morbi Ave","postalZip":"71913","country":"Italy"},{"customerId":188,"customerName":"Guinevere Foreman","phone":"(763) 953-1852","email":"ultrices.sit@google.edu","address":"Ap #625-949 Ut, St.","postalZip":"1616","country":"Netherlands"},{"customerId":189,"customerName":"Dean Gordon","phone":"1-191-202-1640","email":"bibendum.fermentum.metus@hotmail.com","address":"303-7358 At, Road","postalZip":"49913","country":"Turkey"},{"customerId":190,"customerName":"Quemby Ayala","phone":"1-211-475-1683","email":"aliquam.ornare.libero@icloud.org","address":"Ap #491-2446 Sed Ave","postalZip":"1682","country":"Spain"},{"customerId":191,"customerName":"Lynn Crosby","phone":"(913) 614-2347","email":"suspendisse.eleifend@outlook.edu","address":"810-1069 A, Avenue","postalZip":"16-36","country":"Ireland"},{"customerId":192,"customerName":"Shelly Raymond","phone":"1-361-965-5339","email":"duis@icloud.net","address":"Ap #819-9220 Laoreet Rd.","postalZip":"Y7L 6W3","country":"Austria"},{"customerId":193,"customerName":"Baxter Valenzuela","phone":"(193) 276-6247","email":"mi.lacinia@yahoo.ca","address":"192-1805 Ac Street","postalZip":"415859","country":"Germany"},{"customerId":194,"customerName":"Caleb Montgomery","phone":"(817) 602-7763","email":"fusce.aliquet@aol.com","address":"6251 Dui. St.","postalZip":"65473","country":"Canada"},{"customerId":195,"customerName":"Isabella Trujillo","phone":"(788) 924-6787","email":"neque.non@hotmail.edu","address":"4601 Donec Ave","postalZip":"123342","country":"Chile"},{"customerId":196,"customerName":"Fitzgerald Buckley","phone":"(151) 130-3142","email":"non.dapibus.rutrum@outlook.ca","address":"680-2290 Dis St.","postalZip":"896833","country":"Austria"},{"customerId":197,"customerName":"Paul Frank","phone":"1-954-730-1417","email":"sed@hotmail.net","address":"3205 Varius Avenue","postalZip":"6311","country":"Austria"},{"customerId":198,"customerName":"Alexa Holland","phone":"(451) 214-3886","email":"augue.sed@icloud.com","address":"Ap #634-8004 Odio. Rd.","postalZip":"66-138","country":"Austria"},{"customerId":199,"customerName":"Holly Hutchinson","phone":"(759) 626-2541","email":"est.mollis@hotmail.com","address":"441-2070 Tristique Avenue","postalZip":"8852 CD","country":"France"},{"customerId":200,"customerName":"Colette Vega","phone":"1-809-541-0225","email":"nam.ac@google.edu","address":"949-8812 Quam Avenue","postalZip":"95240","country":"France"},{"customerId":201,"customerName":"Aurelia Mccullough","phone":"(529) 578-8112","email":"amet.diam@protonmail.net","address":"812-920 Ligula Rd.","postalZip":"51017","country":"Brazil"},{"customerId":202,"customerName":"Nicholas King","phone":"1-335-959-0268","email":"eget.ipsum@icloud.com","address":"P.O. Box 770, 237 Volutpat Av.","postalZip":"3715","country":"Nigeria"},{"customerId":203,"customerName":"Palmer Wheeler","phone":"(277) 292-2618","email":"non.dapibus@google.net","address":"372-8673 Odio. Street","postalZip":"385823","country":"Canada"},{"customerId":204,"customerName":"Samuel Berry","phone":"(475) 337-4578","email":"id.libero.donec@hotmail.net","address":"894-3616 Nonummy Road","postalZip":"66977","country":"Ukraine"},{"customerId":205,"customerName":"Yasir Montoya","phone":"(137) 236-3582","email":"a.felis@yahoo.couk","address":"P.O. Box 930, 4496 Integer Rd.","postalZip":"6634-7162","country":"Ireland"},{"customerId":206,"customerName":"Evan Harper","phone":"1-887-985-5954","email":"ut@aol.couk","address":"Ap #839-4041 Metus Av.","postalZip":"74-66","country":"Australia"},{"customerId":207,"customerName":"Gregory Leach","phone":"(817) 526-9671","email":"fusce.fermentum@outlook.net","address":"9527 Ultrices. Ave","postalZip":"6625","country":"Pakistan"},{"customerId":208,"customerName":"Josephine Burris","phone":"1-280-667-8722","email":"mus.proin@hotmail.ca","address":"911-6465 Condimentum Rd.","postalZip":"52514","country":"Nigeria"},{"customerId":209,"customerName":"Otto Mercer","phone":"1-437-258-2150","email":"inceptos.hymenaeos.mauris@icloud.net","address":"8671 Scelerisque Rd.","postalZip":"32147","country":"Belgium"},{"customerId":210,"customerName":"Illana Kennedy","phone":"(921) 287-4668","email":"tristique@protonmail.ca","address":"P.O. Box 427, 7016 Nibh St.","postalZip":"6991","country":"Nigeria"},{"customerId":211,"customerName":"Cally Kaufman","phone":"1-721-125-2623","email":"ut.mi.duis@outlook.com","address":"Ap #829-867 Eget Ave","postalZip":"70-258","country":"Norway"},{"customerId":212,"customerName":"Jameson Mosley","phone":"1-727-864-9532","email":"aliquam.nec@icloud.edu","address":"Ap #315-119 Phasellus St.","postalZip":"635531","country":"New Zealand"},{"customerId":213,"customerName":"Henry Humphrey","phone":"(166) 817-2735","email":"turpis.aliquam@aol.edu","address":"713-1242 Id, Ave","postalZip":"27672","country":"Poland"},{"customerId":214,"customerName":"Gloria England","phone":"1-386-252-4973","email":"eu.enim@hotmail.org","address":"Ap #736-8873 Dui Avenue","postalZip":"414340","country":"Australia"},{"customerId":215,"customerName":"Helen Wilkinson","phone":"1-677-472-2742","email":"non@yahoo.edu","address":"741-6586 Molestie St.","postalZip":"5051","country":"United Kingdom"},{"customerId":216,"customerName":"Talon Pitts","phone":"(666) 839-7372","email":"sem.consequat@protonmail.edu","address":"5571 Mi. St.","postalZip":"66-68","country":"Russian Federation"},{"customerId":217,"customerName":"Ursula Newman","phone":"1-657-729-5559","email":"arcu.nunc.mauris@icloud.couk","address":"Ap #631-751 Fames Road","postalZip":"889247","country":"Belgium"},{"customerId":218,"customerName":"Fatima Boyd","phone":"1-663-334-7121","email":"lorem.luctus@yahoo.ca","address":"701-8986 A Av.","postalZip":"8463-2931","country":"Netherlands"},{"customerId":219,"customerName":"Aline Battle","phone":"(251) 310-2663","email":"vivamus.nisi@yahoo.ca","address":"P.O. Box 581, 6213 Duis Av.","postalZip":"22332","country":"Mexico"},{"customerId":220,"customerName":"Brent Allen","phone":"(875) 515-3322","email":"non.feugiat@protonmail.com","address":"724-9470 Elementum Ave","postalZip":"757793","country":"New Zealand"},{"customerId":221,"customerName":"Yetta Powell","phone":"(329) 142-3882","email":"justo.faucibus@icloud.org","address":"Ap #901-6412 Nam Rd.","postalZip":"48676","country":"Russian Federation"},{"customerId":222,"customerName":"Zeus Lynch","phone":"1-515-704-3286","email":"ut.cursus.luctus@yahoo.com","address":"P.O. Box 391, 9445 Rutrum St.","postalZip":"37598-75017","country":"South Korea"},{"customerId":223,"customerName":"Matthew Bryan","phone":"(927) 453-7193","email":"porttitor.scelerisque@outlook.net","address":"Ap #709-3616 Praesent Ave","postalZip":"58027","country":"Austria"},{"customerId":224,"customerName":"Aidan Emerson","phone":"(672) 720-9542","email":"nulla@hotmail.org","address":"2395 Purus St.","postalZip":"72813","country":"New Zealand"},{"customerId":225,"customerName":"Whilemina Fitzgerald","phone":"(267) 247-9036","email":"eu.neque.pellentesque@google.edu","address":"P.O. Box 265, 1761 Nisi Rd.","postalZip":"35530","country":"China"},{"customerId":226,"customerName":"Talon Little","phone":"1-896-644-3685","email":"mauris.sapien@hotmail.couk","address":"Ap #600-3214 Natoque St.","postalZip":"009406","country":"Netherlands"},{"customerId":227,"customerName":"Deborah Davenport","phone":"1-488-593-0067","email":"adipiscing.non.luctus@hotmail.net","address":"500-8011 Eget, Av.","postalZip":"287534","country":"United States"},{"customerId":228,"customerName":"MacKensie Fernandez","phone":"1-316-265-6465","email":"urna@yahoo.couk","address":"746-7829 In St.","postalZip":"38827","country":"Mexico"},{"customerId":229,"customerName":"Marcia Snider","phone":"(259) 882-5376","email":"integer@hotmail.net","address":"P.O. Box 651, 9732 Porttitor St.","postalZip":"01674","country":"Italy"},{"customerId":230,"customerName":"Selma Gray","phone":"(825) 777-6846","email":"commodo.ipsum@yahoo.ca","address":"9975 Quam Rd.","postalZip":"303114","country":"United States"},{"customerId":231,"customerName":"Igor Brady","phone":"1-224-170-7577","email":"quis.urna.nunc@google.edu","address":"P.O. Box 843, 3207 Eros Avenue","postalZip":"120342","country":"South Korea"},{"customerId":232,"customerName":"Marsden Scott","phone":"(312) 469-4156","email":"semper@yahoo.edu","address":"9821 Magna. St.","postalZip":"5755 IZ","country":"Sweden"},{"customerId":233,"customerName":"Caleb Beasley","phone":"1-761-565-3058","email":"gravida.nunc.sed@yahoo.edu","address":"Ap #678-9550 Quisque Avenue","postalZip":"3878","country":"Russian Federation"},{"customerId":234,"customerName":"Allen Soto","phone":"(486) 921-8537","email":"non@icloud.net","address":"Ap #552-1964 Semper Street","postalZip":"735428","country":"Norway"},{"customerId":235,"customerName":"Belle Kramer","phone":"1-963-314-4195","email":"nec.diam.duis@protonmail.ca","address":"Ap #533-5143 Odio, Ave","postalZip":"621357","country":"France"},{"customerId":236,"customerName":"Savannah Martin","phone":"1-604-634-2426","email":"suspendisse@protonmail.couk","address":"950-171 Ultricies Avenue","postalZip":"22253","country":"Ukraine"},{"customerId":237,"customerName":"Jasmine Stokes","phone":"(826) 644-4729","email":"aliquam@protonmail.org","address":"6372 Nunc St.","postalZip":"513382","country":"Netherlands"},{"customerId":238,"customerName":"Alexander Doyle","phone":"1-488-354-9546","email":"ipsum@yahoo.edu","address":"6847 Ipsum Av.","postalZip":"7886","country":"South Africa"},{"customerId":239,"customerName":"Lamar Bush","phone":"1-756-173-6359","email":"ipsum@hotmail.ca","address":"985 Donec Rd.","postalZip":"45-86","country":"India"},{"customerId":240,"customerName":"Isadora Fuller","phone":"1-484-722-9103","email":"sed.dictum.proin@yahoo.net","address":"838-5569 Nunc St.","postalZip":"73-13","country":"Philippines"},{"customerId":241,"customerName":"Mallory Goodwin","phone":"(831) 123-7927","email":"dapibus@outlook.com","address":"5849 Lacus. Road","postalZip":"3756","country":"Netherlands"},{"customerId":242,"customerName":"Carol Clay","phone":"1-513-371-2533","email":"ornare.placerat@protonmail.couk","address":"Ap #629-2448 Tortor Avenue","postalZip":"3567 TX","country":"France"},{"customerId":243,"customerName":"Emerald Valenzuela","phone":"1-311-823-3821","email":"id.ante@yahoo.net","address":"1237 Aliquam Av.","postalZip":"43732","country":"Costa Rica"},{"customerId":244,"customerName":"Lynn Dean","phone":"(853) 220-5171","email":"nulla@outlook.ca","address":"592-4473 Cras Street","postalZip":"136265","country":"Colombia"},{"customerId":245,"customerName":"Deanna Drake","phone":"(907) 704-8403","email":"viverra.maecenas@hotmail.com","address":"Ap #245-5061 Ultricies Av.","postalZip":"53261-077","country":"China"},{"customerId":246,"customerName":"Risa Barnett","phone":"1-484-724-7792","email":"nam.tempor@google.ca","address":"387-3289 Id, Ave","postalZip":"42324","country":"Belgium"},{"customerId":247,"customerName":"Chanda Goff","phone":"1-363-136-6294","email":"auctor.ullamcorper@google.com","address":"P.O. Box 445, 2913 Amet, Road","postalZip":"1586","country":"Colombia"},{"customerId":248,"customerName":"Cecilia Elliott","phone":"(323) 556-6283","email":"consectetuer.adipiscing@protonmail.ca","address":"2794 Mauris Street","postalZip":"854730","country":"Ireland"},{"customerId":249,"customerName":"Deacon Monroe","phone":"(712) 334-2351","email":"risus.donec@hotmail.net","address":"9360 Odio Rd.","postalZip":"14707-637","country":"Spain"},{"customerId":250,"customerName":"Edan Nguyen","phone":"1-433-816-3453","email":"ad.litora@google.ca","address":"566-2831 Nam St.","postalZip":"68-356","country":"Brazil"},{"customerId":251,"customerName":"Wesley Hughes","phone":"(216) 437-1077","email":"tristique.senectus@icloud.couk","address":"359-7242 Mi Rd.","postalZip":"577763","country":"Nigeria"},{"customerId":252,"customerName":"Henry Coffey","phone":"1-604-438-7321","email":"risus.nulla@outlook.couk","address":"9846 Natoque Rd.","postalZip":"6432-1728","country":"Brazil"},{"customerId":253,"customerName":"Nolan Lara","phone":"1-865-914-8666","email":"justo.faucibus@hotmail.couk","address":"Ap #712-8382 Urna, St.","postalZip":"5615","country":"Canada"},{"customerId":254,"customerName":"Justin Willis","phone":"1-412-547-4767","email":"et.magna@icloud.com","address":"498-9593 Nisl St.","postalZip":"665044","country":"United Kingdom"},{"customerId":255,"customerName":"Selma English","phone":"(696) 953-3985","email":"nec.mauris@aol.org","address":"Ap #349-4635 Sapien. St.","postalZip":"18597","country":"Brazil"},{"customerId":256,"customerName":"Donna Todd","phone":"(778) 814-1364","email":"nibh.dolor.nonummy@protonmail.ca","address":"Ap #106-3050 Aliquam Rd.","postalZip":"34752-75482","country":"South Africa"},{"customerId":257,"customerName":"Noah Francis","phone":"1-488-212-7714","email":"molestie@icloud.org","address":"429 Et, Road","postalZip":"3336","country":"Mexico"},{"customerId":258,"customerName":"Dora Head","phone":"(395) 855-5634","email":"donec.tempor@google.couk","address":"Ap #309-2891 Vitae, Rd.","postalZip":"35713","country":"South Korea"},{"customerId":259,"customerName":"Louis Gallegos","phone":"1-530-425-6764","email":"nec.cursus.a@outlook.edu","address":"624-7788 Lacinia. St.","postalZip":"694428","country":"Nigeria"},{"customerId":260,"customerName":"Penelope Hogan","phone":"(255) 416-4132","email":"ornare.libero@icloud.com","address":"P.O. Box 728, 7345 Cras Avenue","postalZip":"8522","country":"South Africa"},{"customerId":261,"customerName":"Cedric Hopkins","phone":"1-582-252-8036","email":"a.aliquet.vel@google.net","address":"341-9236 Porta Street","postalZip":"7332","country":"Australia"},{"customerId":262,"customerName":"Craig Alvarado","phone":"(644) 405-5215","email":"morbi@google.couk","address":"Ap #204-2795 A, Avenue","postalZip":"ET1 7NM","country":"Chile"},{"customerId":263,"customerName":"Callie Conner","phone":"(541) 433-7779","email":"amet.dapibus.id@google.net","address":"Ap #773-8201 A Rd.","postalZip":"10301","country":"Peru"},{"customerId":264,"customerName":"Brenden Bell","phone":"1-816-372-4255","email":"pellentesque.ultricies.dignissim@protonmail.ca","address":"Ap #723-1428 Nec Street","postalZip":"41001","country":"United Kingdom"},{"customerId":265,"customerName":"Adria Booth","phone":"1-818-603-5565","email":"lobortis.mauris@protonmail.edu","address":"273-9905 Sit Rd.","postalZip":"88761","country":"United Kingdom"},{"customerId":266,"customerName":"Chava Fischer","phone":"1-313-245-0765","email":"id.erat@yahoo.ca","address":"Ap #919-1096 Venenatis Rd.","postalZip":"31811","country":"United States"},{"customerId":267,"customerName":"Clayton Hoffman","phone":"(895) 786-3262","email":"adipiscing@google.org","address":"Ap #179-174 Cras Street","postalZip":"7268","country":"Poland"},{"customerId":268,"customerName":"Hayes Ferrell","phone":"1-443-337-3613","email":"vel.sapien.imperdiet@yahoo.org","address":"8251 Eu St.","postalZip":"5178","country":"United States"},{"customerId":269,"customerName":"Emma Newton","phone":"(228) 715-2705","email":"eu@yahoo.com","address":"Ap #581-3655 Ac Av.","postalZip":"1231-1389","country":"Canada"},{"customerId":270,"customerName":"Giacomo Fitzpatrick","phone":"1-627-382-2524","email":"nec.ante@google.ca","address":"9491 Velit Road","postalZip":"380298","country":"Indonesia"},{"customerId":271,"customerName":"Christine Steele","phone":"1-325-646-8233","email":"dignissim@google.couk","address":"780-3131 Augue. Rd.","postalZip":"616127","country":"China"},{"customerId":272,"customerName":"Ray Bush","phone":"(872) 462-4427","email":"sed.id.risus@yahoo.com","address":"362-359 Nullam Rd.","postalZip":"755108","country":"South Africa"},{"customerId":273,"customerName":"Price Cote","phone":"1-388-854-2213","email":"ipsum@protonmail.edu","address":"Ap #927-651 Mauris Rd.","postalZip":"22353","country":"Peru"},{"customerId":274,"customerName":"Silas Maynard","phone":"1-765-832-6975","email":"velit@google.org","address":"6731 Fusce Avenue","postalZip":"22773","country":"Ireland"},{"customerId":275,"customerName":"Zena Brooks","phone":"(288) 273-1375","email":"donec.nibh@aol.org","address":"Ap #156-9306 Lectus Rd.","postalZip":"8268","country":"Singapore"},{"customerId":276,"customerName":"Ferdinand Hampton","phone":"(915) 920-8532","email":"erat.semper.rutrum@yahoo.com","address":"Ap #561-5241 Aliquet Street","postalZip":"14556","country":"Singapore"},{"customerId":277,"customerName":"Keefe Gilliam","phone":"(845) 657-5376","email":"augue@aol.edu","address":"Ap #662-5036 Mauris Rd.","postalZip":"39-666","country":"India"},{"customerId":278,"customerName":"Timon Barr","phone":"1-488-359-0136","email":"accumsan.laoreet.ipsum@icloud.org","address":"626-8640 Nec, St.","postalZip":"07460","country":"South Korea"},{"customerId":279,"customerName":"Harlan Beard","phone":"1-994-671-3557","email":"nam@yahoo.net","address":"Ap #332-1742 Vitae, St.","postalZip":"652675","country":"Colombia"},{"customerId":280,"customerName":"Fletcher Mclean","phone":"(255) 876-5491","email":"in@outlook.com","address":"P.O. Box 898, 9802 Sollicitudin Rd.","postalZip":"46626","country":"United States"},{"customerId":281,"customerName":"Griffin Woods","phone":"(541) 325-1702","email":"nulla.eu@icloud.edu","address":"Ap #404-6111 Per Rd.","postalZip":"772818","country":"New Zealand"},{"customerId":282,"customerName":"Angela Ferguson","phone":"1-430-334-0671","email":"luctus.vulputate@protonmail.org","address":"Ap #541-9833 Aliquet. Ave","postalZip":"46575","country":"Chile"},{"customerId":283,"customerName":"Hashim Lowe","phone":"1-377-593-3919","email":"proin@google.couk","address":"668-8867 Lorem, Rd.","postalZip":"467422","country":"Russian Federation"},{"customerId":284,"customerName":"Wyatt Joyce","phone":"(530) 212-6652","email":"tellus.imperdiet@icloud.org","address":"646-7638 Ut Road","postalZip":"5978-5762","country":"New Zealand"},{"customerId":285,"customerName":"Gregory Bradshaw","phone":"(545) 483-8816","email":"aliquet.sem@outlook.com","address":"P.O. Box 275, 9869 Rhoncus. Road","postalZip":"64-53","country":"Mexico"},{"customerId":286,"customerName":"Pearl Wood","phone":"1-618-481-2183","email":"feugiat@google.couk","address":"Ap #620-3056 Lobortis Avenue","postalZip":"866376","country":"Nigeria"},{"customerId":287,"customerName":"Richard Ortiz","phone":"(469) 876-8463","email":"consequat@protonmail.couk","address":"Ap #637-5686 Elementum, Rd.","postalZip":"85742","country":"Peru"},{"customerId":288,"customerName":"Hakeem Hayden","phone":"(313) 793-7137","email":"quisque.ornare@yahoo.com","address":"428-4459 Turpis Av.","postalZip":"01238","country":"France"},{"customerId":289,"customerName":"Byron Cooper","phone":"(665) 687-0031","email":"amet.ante.vivamus@protonmail.ca","address":"6402 Amet, St.","postalZip":"7349 HW","country":"United States"},{"customerId":290,"customerName":"Ruby Wolfe","phone":"1-547-568-7216","email":"morbi.sit@yahoo.org","address":"7422 Eu Rd.","postalZip":"21129-965","country":"Ukraine"},{"customerId":291,"customerName":"Odysseus Howard","phone":"1-689-722-4560","email":"eros.non@yahoo.couk","address":"Ap #665-4091 Magna Road","postalZip":"584207","country":"Netherlands"},{"customerId":292,"customerName":"Magee Mann","phone":"1-864-488-5741","email":"donec.nibh@hotmail.com","address":"531-6849 Est, Ave","postalZip":"5480","country":"Costa Rica"},{"customerId":293,"customerName":"Inez Sexton","phone":"1-323-835-7826","email":"penatibus.et@protonmail.couk","address":"Ap #518-9623 Posuere Ave","postalZip":"43554","country":"Italy"},{"customerId":294,"customerName":"Charde Rose","phone":"1-994-423-0323","email":"mauris@icloud.ca","address":"819-7349 In St.","postalZip":"77224","country":"Canada"},{"customerId":295,"customerName":"Quinn Burnett","phone":"(327) 234-6675","email":"sit.amet@hotmail.edu","address":"Ap #978-3339 Curabitur Rd.","postalZip":"66725","country":"Pakistan"},{"customerId":296,"customerName":"Hollee Fletcher","phone":"(401) 671-5652","email":"vehicula.aliquet.libero@yahoo.ca","address":"2459 Elit, Avenue","postalZip":"6784-1011","country":"Costa Rica"},{"customerId":297,"customerName":"Sybill Hoover","phone":"1-749-153-7298","email":"nec@hotmail.com","address":"183-1871 Ante. Street","postalZip":"389383","country":"Austria"},{"customerId":298,"customerName":"Keefe Blackburn","phone":"1-835-251-3502","email":"tempus@yahoo.net","address":"Ap #110-5064 Duis Street","postalZip":"39211-11883","country":"Singapore"},{"customerId":299,"customerName":"Coby Evans","phone":"(528) 295-9329","email":"metus.sit.amet@outlook.ca","address":"Ap #540-8073 Sem. St.","postalZip":"5351","country":"Ireland"},{"customerId":300,"customerName":"Reese Mccarthy","phone":"(525) 665-1876","email":"vitae.dolor.donec@outlook.edu","address":"P.O. Box 537, 6955 Libero. St.","postalZip":"5857","country":"Spain"},{"customerId":301,"customerName":"Gisela Collins","phone":"1-983-834-2244","email":"donec@aol.org","address":"492-7356 Risus Rd.","postalZip":"Y1G 8N4","country":"Nigeria"},{"customerId":302,"customerName":"Rylee Sears","phone":"(281) 220-3044","email":"semper.erat.in@hotmail.ca","address":"Ap #396-3079 Pellentesque, Ave","postalZip":"I5 8YA","country":"Poland"},{"customerId":303,"customerName":"Jana Parsons","phone":"(469) 784-9162","email":"elementum@protonmail.couk","address":"356-7478 Id St.","postalZip":"30765","country":"Poland"},{"customerId":304,"customerName":"Chiquita Giles","phone":"(690) 282-1110","email":"nec.mauris@icloud.edu","address":"P.O. Box 623, 2780 Massa St.","postalZip":"325151","country":"South Korea"},{"customerId":305,"customerName":"Leah Jefferson","phone":"(534) 837-4432","email":"pede.cum@protonmail.couk","address":"3960 Consectetuer, Ave","postalZip":"803683","country":"Pakistan"},{"customerId":306,"customerName":"Amy Middleton","phone":"1-425-639-1978","email":"quisque@icloud.ca","address":"P.O. Box 271, 3429 Tortor St.","postalZip":"2367","country":"South Africa"},{"customerId":307,"customerName":"Maris Underwood","phone":"(635) 838-8174","email":"elit.curabitur@protonmail.net","address":"972-8674 Non Street","postalZip":"188425","country":"Australia"},{"customerId":308,"customerName":"Hall Mendoza","phone":"1-581-423-4214","email":"sed@aol.couk","address":"594-1417 Libero St.","postalZip":"50109","country":"Ireland"},{"customerId":309,"customerName":"Kibo Curtis","phone":"1-318-489-5448","email":"integer.sem@hotmail.com","address":"P.O. Box 491, 6073 Semper Rd.","postalZip":"79457","country":"Belgium"},{"customerId":310,"customerName":"Ian Hyde","phone":"(503) 424-7209","email":"eget@google.com","address":"Ap #443-3234 Arcu Rd.","postalZip":"81322-448","country":"Chile"},{"customerId":311,"customerName":"Vincent Rivers","phone":"1-415-129-2713","email":"id@yahoo.com","address":"Ap #185-3842 Integer Rd.","postalZip":"571644","country":"Nigeria"},{"customerId":312,"customerName":"Elton Duran","phone":"(824) 759-8438","email":"aenean.eget.magna@yahoo.com","address":"790-3169 Nullam St.","postalZip":"517453","country":"Sweden"},{"customerId":313,"customerName":"Anne Barnes","phone":"1-250-658-2841","email":"ipsum.non@outlook.ca","address":"Ap #137-9867 Sapien Av.","postalZip":"40300","country":"Ukraine"},{"customerId":314,"customerName":"Althea Holland","phone":"(938) 787-6943","email":"a@yahoo.org","address":"783-1382 Cursus Rd.","postalZip":"4773","country":"India"},{"customerId":315,"customerName":"Sade Brooks","phone":"1-641-623-2307","email":"cras.dictum@icloud.edu","address":"9034 Sit Rd.","postalZip":"3443","country":"Philippines"},{"customerId":316,"customerName":"Elvis Mann","phone":"1-384-864-5311","email":"facilisis.lorem@icloud.edu","address":"Ap #500-9323 Vehicula. St.","postalZip":"23541","country":"New Zealand"},{"customerId":317,"customerName":"Jason Ewing","phone":"(764) 231-5857","email":"magna.a@protonmail.edu","address":"441-5511 Gravida Road","postalZip":"637943","country":"South Africa"},{"customerId":318,"customerName":"Brennan Dunn","phone":"(285) 940-6155","email":"ultricies@outlook.org","address":"5191 Quam Street","postalZip":"952885","country":"Canada"},{"customerId":319,"customerName":"Griffith Gonzales","phone":"1-146-961-5197","email":"egestas.aliquam@icloud.net","address":"518-4398 In, Rd.","postalZip":"862432","country":"Nigeria"},{"customerId":320,"customerName":"Demetrius Spencer","phone":"(620) 245-2604","email":"amet.ultricies@yahoo.ca","address":"Ap #563-4210 Lorem St.","postalZip":"35144","country":"Mexico"},{"customerId":321,"customerName":"Jerry Houston","phone":"1-100-235-6447","email":"ornare@protonmail.com","address":"238-4106 Odio St.","postalZip":"21156","country":"Germany"},{"customerId":322,"customerName":"Madonna May","phone":"1-541-883-2666","email":"nullam.scelerisque@outlook.com","address":"860-2657 Ultrices Avenue","postalZip":"7827 SF","country":"India"},{"customerId":323,"customerName":"Vance Cunningham","phone":"(477) 661-9718","email":"nunc.quisque@icloud.edu","address":"559-7825 Sapien. St.","postalZip":"S4 7MU","country":"Colombia"},{"customerId":324,"customerName":"Timothy Garrison","phone":"1-398-261-7157","email":"imperdiet@aol.net","address":"Ap #928-9398 Vivamus Road","postalZip":"33252","country":"Italy"},{"customerId":325,"customerName":"Berk Carver","phone":"1-128-645-8082","email":"in.scelerisque@google.com","address":"182-8065 Adipiscing Rd.","postalZip":"768627","country":"Norway"},{"customerId":326,"customerName":"Jason Torres","phone":"1-153-624-7418","email":"velit.in@outlook.com","address":"3286 Morbi Ave","postalZip":"67-245","country":"Germany"},{"customerId":327,"customerName":"Lane Mitchell","phone":"(347) 133-6044","email":"ridiculus.mus@yahoo.net","address":"862-8773 Dictum Rd.","postalZip":"08-554","country":"Germany"},{"customerId":328,"customerName":"Amir Albert","phone":"(957) 879-0145","email":"congue.in@aol.org","address":"229-7578 Euismod St.","postalZip":"6584","country":"New Zealand"},{"customerId":329,"customerName":"Magee Guthrie","phone":"(526) 884-0836","email":"dictum.eu@icloud.com","address":"P.O. Box 724, 9254 Neque. St.","postalZip":"4435","country":"Austria"},{"customerId":330,"customerName":"Jerry Rasmussen","phone":"1-458-356-2655","email":"elementum.sem@hotmail.edu","address":"P.O. Box 914, 3761 Risus. Ave","postalZip":"MK4 7RL","country":"Chile"},{"customerId":331,"customerName":"Kaseem Leon","phone":"1-243-864-6476","email":"proin.sed@hotmail.edu","address":"696 Sed Rd.","postalZip":"9125","country":"Mexico"},{"customerId":332,"customerName":"Olympia Noble","phone":"(537) 635-6386","email":"justo.nec@hotmail.com","address":"466-2060 Vitae Road","postalZip":"83128","country":"Brazil"},{"customerId":333,"customerName":"Phillip Cabrera","phone":"1-556-315-7456","email":"ligula.consectetuer.rhoncus@icloud.org","address":"P.O. Box 639, 8994 Egestas. Rd.","postalZip":"703516","country":"France"},{"customerId":334,"customerName":"Diana Chavez","phone":"1-729-354-1853","email":"ullamcorper.duis@google.couk","address":"309-9819 Cras Street","postalZip":"B2N 9J5","country":"Peru"},{"customerId":335,"customerName":"Shay Kline","phone":"(332) 131-7766","email":"porttitor.interdum@outlook.edu","address":"5658 Lacinia Street","postalZip":"5055 HD","country":"Nigeria"},{"customerId":336,"customerName":"Lana Santana","phone":"1-945-466-5287","email":"pretium.et@hotmail.ca","address":"5118 Bibendum Road","postalZip":"318788","country":"United Kingdom"},{"customerId":337,"customerName":"Hammett Raymond","phone":"1-229-452-6520","email":"dictum@hotmail.edu","address":"3144 Egestas. Road","postalZip":"6324","country":"Philippines"},{"customerId":338,"customerName":"Francis Harper","phone":"1-357-421-4528","email":"ultrices.duis.volutpat@aol.ca","address":"P.O. Box 832, 2212 Tellus St.","postalZip":"87-69","country":"Norway"},{"customerId":339,"customerName":"Rylee Hooper","phone":"1-214-823-1015","email":"sodales.mauris.blandit@yahoo.net","address":"7186 Ornare, Street","postalZip":"502473","country":"Australia"},{"customerId":340,"customerName":"Kaye Alvarez","phone":"(855) 158-7702","email":"parturient.montes.nascetur@aol.edu","address":"862-5219 Placerat Rd.","postalZip":"382323","country":"Brazil"},{"customerId":341,"customerName":"Quail Kennedy","phone":"(867) 221-6583","email":"nunc.quis.arcu@aol.org","address":"196-1452 Magna Ave","postalZip":"05255","country":"Costa Rica"},{"customerId":342,"customerName":"Violet Massey","phone":"1-277-634-2381","email":"ante@hotmail.ca","address":"Ap #378-4290 Suspendisse Avenue","postalZip":"43560","country":"Philippines"},{"customerId":343,"customerName":"Thomas Whitaker","phone":"1-767-722-9632","email":"orci.donec@aol.ca","address":"647-1109 Mi Rd.","postalZip":"16775","country":"Pakistan"},{"customerId":344,"customerName":"Orson Kidd","phone":"(671) 558-1733","email":"montes.nascetur@yahoo.couk","address":"Ap #139-5917 Rutrum Avenue","postalZip":"T5X 1EN","country":"Indonesia"},{"customerId":345,"customerName":"Sharon Sanders","phone":"1-709-128-4651","email":"orci.lobortis@icloud.ca","address":"182-6607 Accumsan Av.","postalZip":"54164","country":"Indonesia"},{"customerId":346,"customerName":"Kuame Gilmore","phone":"1-164-623-2250","email":"montes.nascetur@icloud.couk","address":"P.O. Box 611, 8816 Dapibus Ave","postalZip":"5476-8827","country":"South Korea"},{"customerId":347,"customerName":"Yetta Gamble","phone":"(113) 772-2838","email":"nisi.nibh@aol.com","address":"P.O. Box 136, 8433 Mauris, St.","postalZip":"23471","country":"China"},{"customerId":348,"customerName":"Cleo Bruce","phone":"(494) 454-5412","email":"euismod.urna@protonmail.edu","address":"P.O. Box 415, 9066 Neque. St.","postalZip":"49257","country":"Peru"},{"customerId":349,"customerName":"Rigel Miller","phone":"(557) 666-8730","email":"ultrices.duis@google.com","address":"770-4112 Fermentum Av.","postalZip":"2382-7561","country":"Germany"},{"customerId":350,"customerName":"Erica Ratliff","phone":"1-633-695-3559","email":"gravida@aol.ca","address":"Ap #114-9821 Nullam Avenue","postalZip":"47-128","country":"Turkey"},{"customerId":351,"customerName":"Asher Barnes","phone":"1-731-790-1527","email":"volutpat.nulla@hotmail.edu","address":"686-9182 Mattis. Rd.","postalZip":"5607","country":"South Africa"},{"customerId":352,"customerName":"Jane Bond","phone":"1-773-962-6237","email":"sit@hotmail.com","address":"9982 Arcu. Street","postalZip":"241644","country":"Singapore"},{"customerId":353,"customerName":"Veda Gates","phone":"1-525-719-1234","email":"ut.semper.pretium@hotmail.ca","address":"536-950 Mattis. Rd.","postalZip":"18354","country":"Spain"},{"customerId":354,"customerName":"Lisandra Hull","phone":"1-913-744-5839","email":"non.bibendum@outlook.edu","address":"P.O. Box 482, 5103 In Ave","postalZip":"69565","country":"Costa Rica"},{"customerId":355,"customerName":"Echo Diaz","phone":"(445) 405-4587","email":"non.cursus.non@google.edu","address":"Ap #855-3934 Proin Ave","postalZip":"3205","country":"Colombia"},{"customerId":356,"customerName":"Celeste Preston","phone":"1-261-688-8369","email":"ultrices.a.auctor@hotmail.com","address":"Ap #189-425 Metus Ave","postalZip":"413248","country":"China"},{"customerId":357,"customerName":"Keane Cervantes","phone":"1-582-238-7332","email":"urna.nunc@aol.edu","address":"Ap #870-6101 Dignissim Ave","postalZip":"54385","country":"New Zealand"},{"customerId":358,"customerName":"Kieran Lowe","phone":"1-524-443-9131","email":"duis.dignissim@protonmail.ca","address":"882 Etiam St.","postalZip":"J5X 7C4","country":"Singapore"},{"customerId":359,"customerName":"Isaiah Duran","phone":"1-511-634-8106","email":"tincidunt.neque@google.com","address":"P.O. Box 370, 4907 Risus Rd.","postalZip":"4572","country":"Nigeria"},{"customerId":360,"customerName":"Armando Yang","phone":"(718) 531-1069","email":"imperdiet@google.org","address":"571-4395 Montes, Street","postalZip":"774564","country":"Sweden"},{"customerId":361,"customerName":"Aretha Sawyer","phone":"(794) 398-6437","email":"urna@icloud.net","address":"995-4838 Euismod Street","postalZip":"1512","country":"Costa Rica"},{"customerId":362,"customerName":"Rogan Sloan","phone":"(889) 457-2267","email":"risus.a@protonmail.couk","address":"169-3718 Neque Rd.","postalZip":"625058","country":"Poland"},{"customerId":363,"customerName":"Julian Branch","phone":"1-128-430-2363","email":"libero@hotmail.ca","address":"P.O. Box 383, 1112 Neque Rd.","postalZip":"3657","country":"Poland"},{"customerId":364,"customerName":"Aidan Ayers","phone":"1-594-977-5864","email":"ac.risus@icloud.org","address":"P.O. Box 369, 4964 Tellus, Street","postalZip":"621482","country":"South Korea"},{"customerId":365,"customerName":"Kaitlin Peterson","phone":"(483) 656-1820","email":"sit@google.ca","address":"Ap #908-5222 Consectetuer Road","postalZip":"80440-32248","country":"South Korea"},{"customerId":366,"customerName":"Mark Jimenez","phone":"1-834-270-4558","email":"cras.vehicula@yahoo.couk","address":"P.O. Box 323, 4116 Neque Rd.","postalZip":"2825","country":"Germany"},{"customerId":367,"customerName":"Jin Lane","phone":"(284) 561-6240","email":"sem.mollis@outlook.com","address":"P.O. Box 443, 7371 Vitae Rd.","postalZip":"5311","country":"China"},{"customerId":368,"customerName":"Malachi Bender","phone":"(212) 377-1120","email":"at.arcu@yahoo.couk","address":"696-467 Nunc Rd.","postalZip":"21167","country":"Sweden"},{"customerId":369,"customerName":"Kasimir Strickland","phone":"(365) 534-5724","email":"arcu@yahoo.org","address":"Ap #778-5996 Tristique Ave","postalZip":"408322","country":"Austria"},{"customerId":370,"customerName":"Avram Landry","phone":"(725) 567-1191","email":"ante@outlook.edu","address":"Ap #595-7217 Fermentum Av.","postalZip":"95251","country":"Ukraine"},{"customerId":371,"customerName":"Charissa Soto","phone":"1-862-478-0734","email":"scelerisque.scelerisque.dui@icloud.com","address":"Ap #109-9179 Elit. Av.","postalZip":"872388","country":"New Zealand"},{"customerId":372,"customerName":"Josiah Rocha","phone":"(788) 631-9275","email":"eleifend.nec@hotmail.couk","address":"510-3381 Nunc St.","postalZip":"853868","country":"Indonesia"},{"customerId":373,"customerName":"Adara Tillman","phone":"1-878-908-6832","email":"commodo.hendrerit.donec@icloud.org","address":"Ap #639-5997 Nec Rd.","postalZip":"50212","country":"Norway"},{"customerId":374,"customerName":"Louis Skinner","phone":"(367) 631-2734","email":"at@hotmail.edu","address":"Ap #976-3050 Orci Street","postalZip":"PD6R 3PI","country":"United Kingdom"},{"customerId":375,"customerName":"Lacey Weeks","phone":"1-722-936-2754","email":"integer.mollis.integer@icloud.couk","address":"9313 Sem. Avenue","postalZip":"42176","country":"Poland"},{"customerId":376,"customerName":"Yvonne Kim","phone":"1-279-868-1631","email":"semper.pretium.neque@google.net","address":"Ap #656-7665 Est Avenue","postalZip":"13693","country":"South Africa"},{"customerId":377,"customerName":"Damian Jefferson","phone":"(741) 385-7251","email":"massa@yahoo.ca","address":"P.O. Box 511, 5696 Nam Av.","postalZip":"F8H 9Z4","country":"Ireland"},{"customerId":378,"customerName":"Craig Short","phone":"(763) 637-2831","email":"quisque@protonmail.edu","address":"Ap #282-3271 Est Street","postalZip":"4539","country":"South Korea"},{"customerId":379,"customerName":"Rhoda Mcknight","phone":"(741) 458-7914","email":"penatibus.et@icloud.ca","address":"Ap #565-6944 Cras Rd.","postalZip":"31824","country":"New Zealand"},{"customerId":380,"customerName":"Maile Mercer","phone":"1-566-245-7657","email":"luctus.lobortis.class@yahoo.edu","address":"Ap #439-3970 Fringilla Ave","postalZip":"28693","country":"Philippines"},{"customerId":381,"customerName":"Cullen Sellers","phone":"(398) 340-9244","email":"ac.orci@protonmail.net","address":"P.O. Box 460, 3283 Elit, Rd.","postalZip":"570427","country":"Philippines"},{"customerId":382,"customerName":"Kato Olson","phone":"(735) 555-2525","email":"at@google.couk","address":"Ap #391-8711 Ante Street","postalZip":"976564","country":"Italy"},{"customerId":383,"customerName":"Lionel Good","phone":"(474) 544-6638","email":"fermentum@hotmail.org","address":"Ap #863-5541 Vulputate St.","postalZip":"7317","country":"Norway"},{"customerId":384,"customerName":"Owen Mueller","phone":"(486) 407-7500","email":"leo.vivamus@google.net","address":"Ap #119-5560 Enim St.","postalZip":"C7Z 3Y5","country":"South Africa"},{"customerId":385,"customerName":"Kennan Acosta","phone":"1-394-556-5185","email":"magna@google.org","address":"Ap #306-7782 Sollicitudin St.","postalZip":"4693-7121","country":"Brazil"},{"customerId":386,"customerName":"Bruce Buckley","phone":"1-374-282-4315","email":"ac.eleifend@aol.edu","address":"Ap #695-1546 Eget Avenue","postalZip":"8714","country":"Pakistan"},{"customerId":387,"customerName":"Caldwell England","phone":"1-833-581-4760","email":"pharetra.nam.ac@google.couk","address":"Ap #614-3781 Suspendisse Street","postalZip":"439634","country":"Colombia"},{"customerId":388,"customerName":"Moses Gordon","phone":"(566) 867-2182","email":"elit.etiam@google.edu","address":"869-5000 Ac Ave","postalZip":"78-55","country":"Netherlands"},{"customerId":389,"customerName":"Abigail Mcintyre","phone":"1-799-679-0214","email":"ac.arcu@outlook.ca","address":"180-5468 Nec Rd.","postalZip":"308060","country":"Singapore"},{"customerId":390,"customerName":"Virginia Travis","phone":"(456) 164-4253","email":"neque.et@hotmail.org","address":"6945 Tincidunt, Av.","postalZip":"J6P 2G5","country":"Germany"},{"customerId":391,"customerName":"Iris Morse","phone":"1-766-815-6360","email":"dis.parturient.montes@icloud.ca","address":"P.O. Box 663, 9844 Sit Avenue","postalZip":"423762","country":"Canada"},{"customerId":392,"customerName":"Samson Douglas","phone":"(728) 447-8454","email":"aliquam.adipiscing@aol.ca","address":"Ap #573-5089 Orci, Av.","postalZip":"287604","country":"Sweden"},{"customerId":393,"customerName":"Stone Daniel","phone":"1-770-405-4824","email":"tempus@icloud.couk","address":"Ap #954-1907 Et Rd.","postalZip":"72021","country":"China"},{"customerId":394,"customerName":"Jade Vasquez","phone":"1-452-435-1738","email":"nec.quam@google.net","address":"7410 Imperdiet Rd.","postalZip":"82725","country":"Germany"},{"customerId":395,"customerName":"Mia Nguyen","phone":"(925) 746-8536","email":"tempor.est.ac@icloud.edu","address":"Ap #232-4245 At, St.","postalZip":"99515","country":"United Kingdom"},{"customerId":396,"customerName":"Jeremy Holloway","phone":"(379) 222-9206","email":"nec.ligula@icloud.couk","address":"P.O. Box 283, 2641 Consectetuer Rd.","postalZip":"08481","country":"Canada"},{"customerId":397,"customerName":"Dieter Richard","phone":"(338) 298-6841","email":"sit@icloud.net","address":"P.O. Box 852, 629 Laoreet, Rd.","postalZip":"YY6 5JT","country":"Italy"},{"customerId":398,"customerName":"Kylie Ballard","phone":"1-478-336-7431","email":"nec.imperdiet.nec@aol.org","address":"1952 Ipsum Rd.","postalZip":"73168","country":"Australia"},{"customerId":399,"customerName":"Winter Cox","phone":"(516) 421-8332","email":"pede.nonummy@hotmail.couk","address":"620-473 Lectus Rd.","postalZip":"57931","country":"Germany"},{"customerId":400,"customerName":"Maisie Vaughn","phone":"1-825-318-6435","email":"tempor.erat@yahoo.org","address":"453-4253 Tincidunt St.","postalZip":"74-74","country":"Pakistan"},{"customerId":401,"customerName":"Burton Lucas","phone":"(376) 658-4612","email":"libero.integer.in@protonmail.org","address":"Ap #898-8853 Eu Road","postalZip":"386871","country":"Canada"},{"customerId":402,"customerName":"Unity Mullins","phone":"1-837-312-6128","email":"lorem.vehicula@yahoo.ca","address":"386-632 Tellus Road","postalZip":"73338-56432","country":"Nigeria"},{"customerId":403,"customerName":"Basia Parks","phone":"1-440-883-7962","email":"erat.volutpat.nulla@protonmail.com","address":"Ap #599-610 Pharetra Street","postalZip":"68534-211","country":"Russian Federation"},{"customerId":404,"customerName":"Cameran Guy","phone":"1-271-354-1648","email":"bibendum.donec.felis@outlook.edu","address":"933-4282 Amet St.","postalZip":"77771","country":"Indonesia"},{"customerId":405,"customerName":"Wilma Lindsay","phone":"(963) 948-3167","email":"et.netus@aol.org","address":"Ap #935-3952 Mus. Avenue","postalZip":"363977","country":"Germany"},{"customerId":406,"customerName":"Axel Reyes","phone":"1-604-514-3222","email":"vestibulum.ante@icloud.net","address":"897-6751 Vitae Rd.","postalZip":"183503","country":"United States"},{"customerId":407,"customerName":"Sara Tran","phone":"(716) 494-7543","email":"interdum.enim@aol.net","address":"106-4176 Amet Av.","postalZip":"6200","country":"Russian Federation"},{"customerId":408,"customerName":"Zenia Dotson","phone":"1-265-516-3169","email":"pellentesque.ultricies.dignissim@google.ca","address":"Ap #433-2117 Lacus, Avenue","postalZip":"1893 FY","country":"Nigeria"},{"customerId":409,"customerName":"Ignatius Coleman","phone":"1-576-225-2466","email":"diam@yahoo.org","address":"757-8359 Sed Ave","postalZip":"33452","country":"United Kingdom"},{"customerId":410,"customerName":"Xavier Hughes","phone":"(204) 656-2774","email":"enim.nec@google.edu","address":"660-2867 Suspendisse Av.","postalZip":"62S 9R8","country":"Canada"},{"customerId":411,"customerName":"Kirestin Mcmillan","phone":"1-885-268-9515","email":"id.enim@aol.edu","address":"P.O. Box 517, 8457 Pede. Ave","postalZip":"11268","country":"Peru"},{"customerId":412,"customerName":"Herman Whitfield","phone":"(230) 690-5961","email":"gravida.aliquam@aol.edu","address":"344-3824 Morbi Street","postalZip":"9454","country":"New Zealand"},{"customerId":413,"customerName":"Dylan Pickett","phone":"(339) 874-7973","email":"posuere.at.velit@yahoo.net","address":"P.O. Box 362, 1266 Commodo Rd.","postalZip":"87661","country":"Philippines"},{"customerId":414,"customerName":"Gary Espinoza","phone":"(904) 288-9363","email":"vitae.velit.egestas@google.couk","address":"342-9066 Auctor Rd.","postalZip":"ZG2G 3JX","country":"Belgium"},{"customerId":415,"customerName":"Nehru Byrd","phone":"1-891-575-8280","email":"nonummy.fusce@icloud.com","address":"Ap #843-8303 Quis, St.","postalZip":"875063","country":"Ireland"},{"customerId":416,"customerName":"Tyler Riley","phone":"1-181-559-5170","email":"ornare@yahoo.net","address":"4328 Dui. Av.","postalZip":"6472","country":"Russian Federation"},{"customerId":417,"customerName":"Kelsey Faulkner","phone":"(522) 458-3587","email":"faucibus.orci.luctus@outlook.ca","address":"9385 Nibh Road","postalZip":"74703-435","country":"China"},{"customerId":418,"customerName":"Bruno Clark","phone":"(636) 893-0237","email":"phasellus@google.couk","address":"Ap #938-7753 At St.","postalZip":"GT7 9OV","country":"Germany"},{"customerId":419,"customerName":"Damian Burch","phone":"1-576-884-6072","email":"odio.sagittis@aol.com","address":"P.O. Box 391, 5587 Donec Av.","postalZip":"X82 4UF","country":"New Zealand"},{"customerId":420,"customerName":"Carol Ramsey","phone":"1-887-238-9733","email":"augue.ut.lacus@aol.ca","address":"Ap #799-2575 Ante Av.","postalZip":"189592","country":"Philippines"},{"customerId":421,"customerName":"Jena Barr","phone":"1-275-516-7237","email":"in.tempus.eu@protonmail.org","address":"Ap #359-2483 Nec Road","postalZip":"18381","country":"Singapore"},{"customerId":422,"customerName":"Kimberly Mays","phone":"1-251-208-1467","email":"sed.et.libero@outlook.edu","address":"198-9512 Aliquam St.","postalZip":"157671","country":"Poland"},{"customerId":423,"customerName":"Laith Kim","phone":"(478) 948-4743","email":"duis.a.mi@hotmail.net","address":"342-6341 Feugiat. Ave","postalZip":"3637","country":"Pakistan"},{"customerId":424,"customerName":"Orla Oneil","phone":"(388) 849-8159","email":"egestas.urna@aol.org","address":"6735 Nunc. Av.","postalZip":"29696","country":"Germany"},{"customerId":425,"customerName":"Charles Morton","phone":"(767) 519-3695","email":"aliquet.molestie.tellus@google.couk","address":"202-5602 Mi. Ave","postalZip":"12241","country":"Costa Rica"},{"customerId":426,"customerName":"Debra Sosa","phone":"1-201-400-2217","email":"justo.sit@icloud.org","address":"Ap #540-2810 Tincidunt, Av.","postalZip":"65718","country":"Colombia"},{"customerId":427,"customerName":"Hedwig Rosario","phone":"1-256-395-7566","email":"porttitor.scelerisque@protonmail.couk","address":"598-3605 Mi Ave","postalZip":"73746-699","country":"Vietnam"},{"customerId":428,"customerName":"Maxwell Shaffer","phone":"(305) 288-9774","email":"nam.tempor.diam@google.edu","address":"Ap #440-7692 Dictum. Road","postalZip":"27-74","country":"Vietnam"},{"customerId":429,"customerName":"Hamish Foreman","phone":"1-683-565-4311","email":"ac@google.com","address":"2305 Mauris Ave","postalZip":"S5K 6H8","country":"Russian Federation"},{"customerId":430,"customerName":"MacKenzie Cortez","phone":"1-418-976-4523","email":"at.nisi@google.net","address":"387-287 Nam Ave","postalZip":"77969","country":"Spain"},{"customerId":431,"customerName":"Oleg Stephens","phone":"1-436-287-3161","email":"elementum.lorem@icloud.ca","address":"9093 Sed Avenue","postalZip":"26532","country":"South Korea"},{"customerId":432,"customerName":"Joseph Fry","phone":"1-279-190-2967","email":"porttitor.vulputate@google.ca","address":"P.O. Box 593, 4292 Sagittis St.","postalZip":"85-24","country":"Australia"},{"customerId":433,"customerName":"Sybil Bullock","phone":"(878) 282-8810","email":"mi@aol.net","address":"Ap #821-9673 Eget Road","postalZip":"42-72","country":"China"},{"customerId":434,"customerName":"Tucker Stephens","phone":"1-485-422-1135","email":"nulla@icloud.ca","address":"P.O. Box 992, 1019 Amet Av.","postalZip":"2897","country":"Belgium"},{"customerId":435,"customerName":"Barrett Harmon","phone":"1-647-944-8773","email":"at@hotmail.edu","address":"462-1221 Aenean St.","postalZip":"442288","country":"Italy"},{"customerId":436,"customerName":"Kirk Sweeney","phone":"(452) 412-2973","email":"sodales@aol.net","address":"457-5872 Id, Av.","postalZip":"O56 7YS","country":"Chile"},{"customerId":437,"customerName":"Orson Bowers","phone":"1-948-408-6471","email":"facilisis.suspendisse@google.org","address":"995-7530 Nullam Avenue","postalZip":"1117","country":"Ireland"},{"customerId":438,"customerName":"Lila Gomez","phone":"(777) 644-5534","email":"ipsum.cursus.vestibulum@yahoo.edu","address":"734-9379 Suspendisse Rd.","postalZip":"4722","country":"Poland"},{"customerId":439,"customerName":"Jerry Hensley","phone":"1-522-705-8983","email":"orci.in@yahoo.couk","address":"Ap #664-8633 Orci St.","postalZip":"1215-1724","country":"South Africa"},{"customerId":440,"customerName":"Jackson Rodriquez","phone":"(405) 608-1438","email":"nullam.feugiat@hotmail.org","address":"P.O. Box 472, 8587 Ante Rd.","postalZip":"6883","country":"Austria"},{"customerId":441,"customerName":"Emi Tyler","phone":"1-206-862-4695","email":"neque.morbi@outlook.net","address":"407-4268 Penatibus Street","postalZip":"52323","country":"Chile"},{"customerId":442,"customerName":"Brynne Todd","phone":"(893) 834-3819","email":"vulputate.lacus@protonmail.net","address":"Ap #462-5927 Faucibus Av.","postalZip":"5748","country":"Nigeria"},{"customerId":443,"customerName":"Fitzgerald Valencia","phone":"1-447-557-3238","email":"lorem.ipsum@outlook.edu","address":"4238 Aliquam Road","postalZip":"85473","country":"Italy"},{"customerId":444,"customerName":"Martina Henson","phone":"(269) 158-1591","email":"ut@icloud.ca","address":"Ap #724-2429 Vel Street","postalZip":"12353","country":"United States"},{"customerId":445,"customerName":"Hasad Beach","phone":"1-810-426-2541","email":"faucibus@hotmail.com","address":"202-2982 Nec Rd.","postalZip":"9114 ZY","country":"United Kingdom"},{"customerId":446,"customerName":"Aphrodite Schneider","phone":"1-734-453-1155","email":"vitae.sodales.at@icloud.net","address":"3628 Aliquam Rd.","postalZip":"874155","country":"Norway"},{"customerId":447,"customerName":"Farrah Everett","phone":"1-467-236-7028","email":"ligula@hotmail.com","address":"949-7839 Sagittis. Av.","postalZip":"5495","country":"Singapore"},{"customerId":448,"customerName":"Silas Parks","phone":"1-212-565-6775","email":"suspendisse@outlook.net","address":"356-7448 Eu Rd.","postalZip":"54427","country":"Indonesia"},{"customerId":449,"customerName":"Aretha Whitney","phone":"1-133-722-0766","email":"facilisis@protonmail.edu","address":"187-5686 Urna Ave","postalZip":"664376","country":"Canada"},{"customerId":450,"customerName":"Chanda Kidd","phone":"(235) 285-8558","email":"euismod@outlook.edu","address":"P.O. Box 438, 6067 Cras Rd.","postalZip":"54444","country":"Germany"},{"customerId":451,"customerName":"Devin Nicholson","phone":"(537) 841-2636","email":"nunc@google.org","address":"Ap #727-5591 Vitae Avenue","postalZip":"9813","country":"Norway"},{"customerId":452,"customerName":"Mira Conner","phone":"1-731-932-6305","email":"sapien.gravida@outlook.net","address":"712-540 Congue Avenue","postalZip":"215067","country":"Italy"},{"customerId":453,"customerName":"Cameron Avery","phone":"1-711-110-5289","email":"mattis@google.edu","address":"962-2700 Duis Road","postalZip":"3807","country":"China"},{"customerId":454,"customerName":"Tara Mercado","phone":"(476) 424-5325","email":"vivamus@aol.edu","address":"327-4369 Feugiat. Rd.","postalZip":"68-88","country":"France"},{"customerId":455,"customerName":"Abdul Lyons","phone":"(393) 179-5521","email":"nunc.sed@yahoo.edu","address":"P.O. Box 252, 9089 Cursus St.","postalZip":"40616","country":"United Kingdom"},{"customerId":456,"customerName":"Kelsey Woods","phone":"1-598-278-2470","email":"scelerisque.neque.sed@hotmail.couk","address":"2006 Vivamus Avenue","postalZip":"177122","country":"China"},{"customerId":457,"customerName":"Ciara Russell","phone":"1-601-466-4670","email":"magna@icloud.edu","address":"P.O. Box 673, 3257 Sed, Av.","postalZip":"5876","country":"Sweden"},{"customerId":458,"customerName":"Doris Head","phone":"(458) 563-1867","email":"imperdiet.ullamcorper@yahoo.com","address":"Ap #821-2942 Lectus St.","postalZip":"67834-782","country":"Peru"},{"customerId":459,"customerName":"Simone Blackwell","phone":"(812) 501-7644","email":"ac.ipsum@protonmail.edu","address":"Ap #735-3018 Egestas Rd.","postalZip":"05571","country":"Turkey"},{"customerId":460,"customerName":"Laith Carlson","phone":"(825) 855-8848","email":"adipiscing.enim.mi@google.net","address":"8988 Amet, Street","postalZip":"8997 WU","country":"Germany"},{"customerId":461,"customerName":"Lavinia Mccall","phone":"(229) 384-0166","email":"dictum.augue@protonmail.couk","address":"687-598 Nisi. Ave","postalZip":"2805","country":"Pakistan"},{"customerId":462,"customerName":"Cynthia Lindsey","phone":"1-616-547-4933","email":"duis@yahoo.org","address":"Ap #542-1629 Dictum Rd.","postalZip":"681507","country":"Austria"},{"customerId":463,"customerName":"Mason Dennis","phone":"(630) 332-8318","email":"natoque.penatibus@yahoo.ca","address":"Ap #323-3212 Sociis Ave","postalZip":"87-746","country":"United Kingdom"},{"customerId":464,"customerName":"Rajah Osborn","phone":"1-542-883-3541","email":"ac.sem.ut@icloud.ca","address":"Ap #938-3674 Accumsan Av.","postalZip":"35041-33265","country":"Sweden"},{"customerId":465,"customerName":"Sopoline Watts","phone":"(676) 369-1232","email":"sodales@google.couk","address":"9673 Tincidunt, Rd.","postalZip":"316104","country":"Mexico"},{"customerId":466,"customerName":"Ifeoma Anthony","phone":"(616) 102-5432","email":"sapien.molestie@protonmail.ca","address":"586-5080 Eleifend Av.","postalZip":"8606","country":"Mexico"},{"customerId":467,"customerName":"Chandler Hunter","phone":"1-260-566-7096","email":"lorem@yahoo.com","address":"7734 Sed Rd.","postalZip":"3558","country":"Mexico"},{"customerId":468,"customerName":"Jackson Hernandez","phone":"1-467-786-5912","email":"orci.lobortis@outlook.couk","address":"P.O. Box 175, 4872 Eu, Av.","postalZip":"80108","country":"Canada"},{"customerId":469,"customerName":"Mark Roy","phone":"1-682-266-1885","email":"lorem@outlook.org","address":"Ap #636-8909 Velit St.","postalZip":"9763-1377","country":"New Zealand"},{"customerId":470,"customerName":"Amos Burke","phone":"(421) 955-9430","email":"ipsum.ac.mi@hotmail.edu","address":"Ap #183-2811 Nulla Rd.","postalZip":"12779","country":"United States"},{"customerId":471,"customerName":"Amethyst Reed","phone":"(551) 727-1287","email":"mi.duis@google.couk","address":"Ap #146-7303 Eu Avenue","postalZip":"635241","country":"New Zealand"},{"customerId":472,"customerName":"Josephine Skinner","phone":"(975) 427-6472","email":"egestas.hendrerit@outlook.net","address":"Ap #170-7914 Aliquam Avenue","postalZip":"6166 JN","country":"Chile"},{"customerId":473,"customerName":"Alan Sampson","phone":"1-132-527-6711","email":"eleifend.nec.malesuada@hotmail.org","address":"5271 Aptent Av.","postalZip":"4458-0172","country":"Russian Federation"},{"customerId":474,"customerName":"Samantha Rich","phone":"1-273-959-9671","email":"sed.molestie@protonmail.couk","address":"Ap #394-3258 Nascetur St.","postalZip":"5819-6511","country":"Germany"},{"customerId":475,"customerName":"Nicholas Robinson","phone":"1-462-463-0236","email":"pede@icloud.org","address":"Ap #875-8527 Cras Rd.","postalZip":"67-71","country":"Turkey"},{"customerId":476,"customerName":"Kareem Marquez","phone":"(766) 672-5176","email":"nulla.semper.tellus@hotmail.com","address":"Ap #940-2093 Commodo Ave","postalZip":"5680","country":"Costa Rica"},{"customerId":477,"customerName":"Griffin Clark","phone":"1-512-157-9846","email":"erat@protonmail.com","address":"6407 Tristique St.","postalZip":"31564","country":"France"},{"customerId":478,"customerName":"Keaton Hardin","phone":"(875) 498-4537","email":"placerat.velit@yahoo.edu","address":"347-3408 Et, Ave","postalZip":"34790","country":"United States"},{"customerId":479,"customerName":"Kyra Hawkins","phone":"(324) 476-1898","email":"mauris.eu@protonmail.net","address":"618-4767 Dolor Ave","postalZip":"6385-2734","country":"New Zealand"},{"customerId":480,"customerName":"Ivy Pugh","phone":"(174) 460-2389","email":"tempus@google.net","address":"246-3973 Aenean Avenue","postalZip":"53579-717","country":"Indonesia"},{"customerId":481,"customerName":"Henry Kirk","phone":"(343) 498-2121","email":"pellentesque.tincidunt@protonmail.com","address":"657-4860 Integer Avenue","postalZip":"143526","country":"China"},{"customerId":482,"customerName":"Harrison Kinney","phone":"(431) 984-6387","email":"nunc.sed@icloud.couk","address":"P.O. Box 722, 4947 Dignissim Avenue","postalZip":"41706","country":"Singapore"},{"customerId":483,"customerName":"Anthony Nicholson","phone":"(582) 854-4315","email":"feugiat.placerat@yahoo.edu","address":"665-1352 Ipsum Ave","postalZip":"21512","country":"Ireland"},{"customerId":484,"customerName":"Lionel Hurley","phone":"(448) 310-1278","email":"a.mi.fringilla@icloud.edu","address":"P.O. Box 945, 7019 Luctus. St.","postalZip":"74344","country":"Canada"},{"customerId":485,"customerName":"Lunea Mcleod","phone":"(482) 278-4754","email":"et.nunc.quisque@yahoo.ca","address":"Ap #198-3491 Arcu. Av.","postalZip":"418946","country":"Canada"},{"customerId":486,"customerName":"Mannix Pate","phone":"1-758-697-1711","email":"curabitur@icloud.com","address":"P.O. Box 480, 1716 Sed, St.","postalZip":"56-212","country":"Mexico"},{"customerId":487,"customerName":"Audrey Rosario","phone":"(756) 546-7628","email":"ultricies.dignissim@google.ca","address":"Ap #969-5674 Sed, St.","postalZip":"464523","country":"Turkey"},{"customerId":488,"customerName":"Regina Mcgowan","phone":"(795) 882-8157","email":"id@yahoo.com","address":"965 Magna. Avenue","postalZip":"97171","country":"Austria"},{"customerId":489,"customerName":"Fuller Huffman","phone":"1-665-460-8027","email":"suspendisse.non@outlook.couk","address":"Ap #412-6907 Mauris Avenue","postalZip":"23357","country":"Austria"},{"customerId":490,"customerName":"Knox Mclean","phone":"(652) 257-4851","email":"duis.sit.amet@yahoo.net","address":"Ap #613-8130 Scelerisque, Road","postalZip":"36640","country":"Australia"},{"customerId":491,"customerName":"Bethany Strickland","phone":"(745) 788-0145","email":"lacinia@icloud.org","address":"1365 Diam. Road","postalZip":"3548","country":"Colombia"},{"customerId":492,"customerName":"Minerva Garrett","phone":"1-327-405-1467","email":"cursus.et@hotmail.couk","address":"Ap #541-3798 A, Street","postalZip":"74183","country":"Costa Rica"},{"customerId":493,"customerName":"Callie Case","phone":"(453) 680-7347","email":"eu.nibh.vulputate@yahoo.edu","address":"543 Neque. St.","postalZip":"530125","country":"Netherlands"},{"customerId":494,"customerName":"Noelle Ellis","phone":"(558) 382-1374","email":"velit@google.edu","address":"P.O. Box 862, 280 Libero Ave","postalZip":"701885","country":"Russian Federation"},{"customerId":495,"customerName":"Paul Roth","phone":"1-754-620-5397","email":"commodo.tincidunt@google.couk","address":"P.O. Box 762, 5952 Cras Avenue","postalZip":"62712","country":"Poland"},{"customerId":496,"customerName":"Teagan Bailey","phone":"1-836-387-6271","email":"sed@yahoo.net","address":"P.O. Box 598, 4857 Pede St.","postalZip":"8046","country":"Costa Rica"},{"customerId":497,"customerName":"Lila Goff","phone":"(887) 136-9291","email":"nec@aol.couk","address":"Ap #569-661 Elit, Road","postalZip":"37427","country":"Mexico"},{"customerId":498,"customerName":"Chancellor Richards","phone":"1-828-651-5128","email":"dui@aol.edu","address":"P.O. Box 765, 9239 Integer Road","postalZip":"k2K 7C5","country":"Austria"},{"customerId":499,"customerName":"Inga Harvey","phone":"(240) 782-4863","email":"est.tempor@outlook.ca","address":"396-3585 Pellentesque, Road","postalZip":"55929-261","country":"Poland"},{"customerId":500,"customerName":"Glenna Norris","phone":"1-927-316-4142","email":"nunc@google.net","address":"P.O. Box 929, 9946 Dis Rd.","postalZip":"8563","country":"Brazil"},{"customerId":501,"customerName":"Nyssa Stephenson","phone":"(488) 446-9193","email":"nisi.sem@aol.net","address":"651-4051 Nunc Rd.","postalZip":"143764","country":"Canada"},{"customerId":502,"customerName":"Harrison Kirk","phone":"(673) 560-0943","email":"sociis@icloud.couk","address":"788-5989 Dolor. Rd.","postalZip":"59P 2S4","country":"United States"},{"customerId":503,"customerName":"Adara Beach","phone":"1-246-878-6774","email":"lectus@protonmail.net","address":"135-3892 Turpis Rd.","postalZip":"435146","country":"China"},{"customerId":504,"customerName":"Connor Collier","phone":"1-880-821-9747","email":"cras.pellentesque.sed@outlook.net","address":"426-8911 Enim Rd.","postalZip":"57684","country":"Canada"},{"customerId":505,"customerName":"Hadassah Marshall","phone":"(301) 783-2235","email":"fermentum.vel@icloud.ca","address":"519-7138 Mauris, Rd.","postalZip":"3874 XP","country":"Russian Federation"},{"customerId":506,"customerName":"Veronica O'brien","phone":"1-375-561-3633","email":"tincidunt.orci@protonmail.ca","address":"P.O. Box 191, 9421 Convallis Avenue","postalZip":"27283","country":"Brazil"},{"customerId":507,"customerName":"Raven Valentine","phone":"(223) 657-8582","email":"vehicula.et@hotmail.ca","address":"125-8482 Sapien. Avenue","postalZip":"37883","country":"Netherlands"},{"customerId":508,"customerName":"Britanney Rollins","phone":"(168) 257-6713","email":"ante.nunc.mauris@aol.org","address":"286-6279 Donec Rd.","postalZip":"51218","country":"Nigeria"},{"customerId":509,"customerName":"Valentine Koch","phone":"(321) 147-3456","email":"risus@icloud.net","address":"Ap #456-4172 Neque Rd.","postalZip":"21961","country":"Italy"},{"customerId":510,"customerName":"Anika Best","phone":"(977) 515-1763","email":"ligula.aenean@icloud.edu","address":"Ap #251-8905 Aliquet Street","postalZip":"82869-325","country":"France"},{"customerId":511,"customerName":"MacKensie Mendoza","phone":"1-179-987-4866","email":"at@protonmail.couk","address":"393 Etiam Street","postalZip":"353482","country":"Poland"},{"customerId":512,"customerName":"Kelly Marshall","phone":"1-577-874-3916","email":"augue.id@icloud.org","address":"623-343 Facilisis Rd.","postalZip":"6315","country":"Russian Federation"},{"customerId":513,"customerName":"Hedda Mcknight","phone":"1-417-992-7045","email":"tincidunt.nunc.ac@hotmail.com","address":"Ap #317-6393 Malesuada Road","postalZip":"46362","country":"Singapore"},{"customerId":514,"customerName":"Joseph Fields","phone":"1-213-582-5211","email":"libero.est.congue@yahoo.org","address":"296-8925 Tellus Road","postalZip":"87823","country":"Peru"},{"customerId":515,"customerName":"Madeline Mcdonald","phone":"1-658-662-6768","email":"nec@aol.org","address":"Ap #781-9617 Et Av.","postalZip":"72278","country":"Spain"},{"customerId":516,"customerName":"Uriah Mathews","phone":"(605) 535-2516","email":"pede.cum@yahoo.ca","address":"769-6678 Praesent St.","postalZip":"05172","country":"Mexico"},{"customerId":517,"customerName":"Mannix Watson","phone":"1-212-818-9062","email":"est@outlook.org","address":"Ap #380-1306 Magna Rd.","postalZip":"23-450","country":"Colombia"},{"customerId":518,"customerName":"Shafira Lawson","phone":"1-862-248-6621","email":"lectus.sit@outlook.com","address":"280-5710 Vestibulum Rd.","postalZip":"917435","country":"Ukraine"},{"customerId":519,"customerName":"Hyatt Roberts","phone":"1-475-223-8566","email":"nec@google.couk","address":"686-8777 Sit Ave","postalZip":"28241","country":"United Kingdom"},{"customerId":520,"customerName":"Nathan Ferguson","phone":"1-593-743-5347","email":"dictum.augue@outlook.net","address":"Ap #403-6631 Tortor. Rd.","postalZip":"7747","country":"Sweden"},{"customerId":521,"customerName":"Ciara Estes","phone":"(373) 665-9438","email":"sed.sem@protonmail.org","address":"Ap #608-2106 Molestie Rd.","postalZip":"365735","country":"Netherlands"},{"customerId":522,"customerName":"Irma Joseph","phone":"1-250-492-4536","email":"sed@yahoo.org","address":"778-7888 Id, Av.","postalZip":"7528","country":"Turkey"},{"customerId":523,"customerName":"Felix Melendez","phone":"(250) 270-7740","email":"mi.ac.mattis@yahoo.com","address":"P.O. Box 965, 2381 Eget St.","postalZip":"36470","country":"Philippines"},{"customerId":524,"customerName":"Blaze Wright","phone":"(315) 172-3485","email":"gravida@google.org","address":"8120 Nisl Ave","postalZip":"776259","country":"Poland"},{"customerId":525,"customerName":"Teegan Hanson","phone":"(547) 593-2365","email":"vulputate.nisi@hotmail.couk","address":"997-5345 Donec Avenue","postalZip":"54164","country":"Russian Federation"},{"customerId":526,"customerName":"Kalia Benjamin","phone":"1-827-847-1767","email":"nulla@yahoo.couk","address":"P.O. Box 874, 5418 Cursus Avenue","postalZip":"27558-72291","country":"Poland"},{"customerId":527,"customerName":"Hakeem Hunter","phone":"1-798-638-1667","email":"facilisis.suspendisse@google.net","address":"Ap #263-6555 Nascetur Ave","postalZip":"UY17 6RB","country":"United Kingdom"},{"customerId":528,"customerName":"Ginger Brooks","phone":"1-792-783-8388","email":"phasellus.fermentum.convallis@google.ca","address":"Ap #499-2572 Sit Street","postalZip":"12457","country":"China"},{"customerId":529,"customerName":"Lucius Pena","phone":"1-192-813-4825","email":"phasellus@icloud.couk","address":"830-4696 Eleifend Avenue","postalZip":"4126","country":"Germany"},{"customerId":530,"customerName":"Jayme Melendez","phone":"1-712-732-1982","email":"eu.turpis@google.net","address":"2860 Et, St.","postalZip":"648327","country":"Austria"},{"customerId":531,"customerName":"Jeanette Fisher","phone":"(280) 695-8221","email":"eu.tellus.eu@icloud.com","address":"Ap #171-4982 Dolor. Rd.","postalZip":"85445","country":"South Africa"},{"customerId":532,"customerName":"Cedric Gates","phone":"(393) 170-5143","email":"sit.amet@outlook.com","address":"6696 Amet, Rd.","postalZip":"8982","country":"Russian Federation"},{"customerId":533,"customerName":"Baxter Jacobs","phone":"(853) 758-7675","email":"neque.sed@outlook.ca","address":"P.O. Box 835, 4149 Et St.","postalZip":"J72 5EB","country":"Ireland"},{"customerId":534,"customerName":"Davis Conner","phone":"(416) 253-4837","email":"in.ornare.sagittis@icloud.couk","address":"643-4536 Ut Road","postalZip":"8920","country":"China"},{"customerId":535,"customerName":"Leilani Newman","phone":"1-787-122-5970","email":"tincidunt@aol.org","address":"Ap #662-9508 Nunc Avenue","postalZip":"729769","country":"Pakistan"},{"customerId":536,"customerName":"Driscoll Ochoa","phone":"1-242-343-0177","email":"fusce.diam.nunc@hotmail.net","address":"P.O. Box 812, 2146 Eget, Rd.","postalZip":"63523","country":"Ukraine"},{"customerId":537,"customerName":"Victoria Mcdonald","phone":"(570) 557-7966","email":"est@yahoo.edu","address":"913-7220 Placerat Avenue","postalZip":"14343","country":"Peru"},{"customerId":538,"customerName":"Wallace Rollins","phone":"(381) 193-2399","email":"felis@hotmail.net","address":"649-3006 Feugiat. Ave","postalZip":"31625","country":"Indonesia"},{"customerId":539,"customerName":"Yasir Fitzgerald","phone":"1-195-178-4435","email":"dignissim.pharetra@icloud.org","address":"Ap #190-296 Curae Avenue","postalZip":"67-37","country":"Mexico"},{"customerId":540,"customerName":"Jacqueline Olsen","phone":"1-562-756-8492","email":"metus@outlook.ca","address":"109-8931 Interdum Ave","postalZip":"731498","country":"Austria"},{"customerId":541,"customerName":"Ciaran Mcguire","phone":"(946) 115-4129","email":"erat@protonmail.org","address":"917-832 A, Av.","postalZip":"279857","country":"South Korea"},{"customerId":542,"customerName":"Dale Sargent","phone":"1-916-558-6909","email":"posuere.cubilia.curae@hotmail.couk","address":"896-6396 Cursus Rd.","postalZip":"17231","country":"Canada"},{"customerId":543,"customerName":"Maite Byers","phone":"1-626-684-6956","email":"odio.phasellus.at@hotmail.com","address":"198-5028 Donec Avenue","postalZip":"A4N 9K2","country":"Nigeria"},{"customerId":544,"customerName":"Evelyn Kidd","phone":"1-611-680-5685","email":"morbi.neque@icloud.org","address":"4637 Dolor Street","postalZip":"61660","country":"Canada"},{"customerId":545,"customerName":"Beverly Kennedy","phone":"(763) 572-2412","email":"arcu.vestibulum@google.couk","address":"9133 Pharetra Rd.","postalZip":"7452","country":"China"},{"customerId":546,"customerName":"Desiree Munoz","phone":"1-836-604-3260","email":"euismod.mauris@hotmail.com","address":"635-5531 Rutrum. St.","postalZip":"112837","country":"Australia"},{"customerId":547,"customerName":"Scott Young","phone":"1-415-751-2421","email":"nisi.sem@google.org","address":"Ap #768-7965 Id Road","postalZip":"DS8 2WM","country":"Chile"},{"customerId":548,"customerName":"Fritz Guthrie","phone":"(902) 730-6354","email":"quis.accumsan@outlook.ca","address":"Ap #810-7058 Tortor. Rd.","postalZip":"3463","country":"Indonesia"},{"customerId":549,"customerName":"Delilah Olson","phone":"1-935-206-6679","email":"molestie.sed@outlook.couk","address":"749-4811 Elit, Avenue","postalZip":"989687","country":"Italy"},{"customerId":550,"customerName":"Ocean Hammond","phone":"(625) 612-8475","email":"mauris.eu@google.net","address":"P.O. Box 627, 8827 Dignissim Av.","postalZip":"43-273","country":"Vietnam"},{"customerId":551,"customerName":"Yetta Estrada","phone":"(479) 924-2674","email":"pretium.neque@outlook.ca","address":"Ap #159-4500 Sed St.","postalZip":"754962","country":"Italy"},{"customerId":552,"customerName":"Ora Farley","phone":"1-677-747-5388","email":"nullam.scelerisque.neque@aol.net","address":"371-7270 Quis St.","postalZip":"505824","country":"South Korea"},{"customerId":553,"customerName":"Garrett Smith","phone":"(618) 432-5482","email":"tellus.non@hotmail.net","address":"427-2190 Bibendum Street","postalZip":"214110","country":"Chile"},{"customerId":554,"customerName":"Wyoming Vinson","phone":"1-887-555-4779","email":"rhoncus.proin.nisl@icloud.ca","address":"P.O. Box 562, 5139 Tincidunt Street","postalZip":"455286","country":"Canada"},{"customerId":555,"customerName":"Bert Poole","phone":"(662) 763-9768","email":"feugiat.lorem.ipsum@aol.couk","address":"625-9145 Eget, Av.","postalZip":"7734","country":"Ireland"},{"customerId":556,"customerName":"Octavius Leach","phone":"1-325-773-2762","email":"sodales.elit@google.ca","address":"3879 Pellentesque St.","postalZip":"546511","country":"United States"},{"customerId":557,"customerName":"Tana Kidd","phone":"1-825-533-5192","email":"nullam.vitae.diam@aol.org","address":"Ap #313-1958 Ullamcorper St.","postalZip":"5298","country":"Pakistan"},{"customerId":558,"customerName":"Jacqueline Olsen","phone":"(433) 134-1288","email":"suspendisse.non@icloud.couk","address":"Ap #413-9184 Rhoncus. Street","postalZip":"6812","country":"Austria"},{"customerId":559,"customerName":"Marvin Gutierrez","phone":"1-617-681-2368","email":"placerat.cras@protonmail.edu","address":"879-1720 Risus. Avenue","postalZip":"88-455","country":"South Korea"},{"customerId":560,"customerName":"Noelani Cooke","phone":"1-539-824-3543","email":"tortor.integer@yahoo.net","address":"P.O. Box 336, 5241 Euismod Rd.","postalZip":"5518","country":"Indonesia"},{"customerId":561,"customerName":"Dorian Gallegos","phone":"(920) 221-2964","email":"est.arcu.ac@google.org","address":"Ap #640-2766 Dapibus Street","postalZip":"4182","country":"Vietnam"},{"customerId":562,"customerName":"Dalton Deleon","phone":"1-147-904-5687","email":"at.velit.cras@yahoo.couk","address":"Ap #520-8053 Etiam Street","postalZip":"13815","country":"India"},{"customerId":563,"customerName":"Aquila Hardy","phone":"1-892-471-1741","email":"sociosqu.ad.litora@protonmail.net","address":"163-4575 Mi, St.","postalZip":"358622","country":"Costa Rica"},{"customerId":564,"customerName":"Hilel Velasquez","phone":"(360) 462-0252","email":"ac.orci@aol.couk","address":"Ap #101-5936 Nonummy. Street","postalZip":"1330 HL","country":"Turkey"},{"customerId":565,"customerName":"Gray Adkins","phone":"(623) 381-8277","email":"ac.mattis@hotmail.couk","address":"Ap #502-8134 Ultrices. St.","postalZip":"85-604","country":"Belgium"},{"customerId":566,"customerName":"Maisie Figueroa","phone":"(362) 422-5624","email":"aenean.eget.magna@aol.com","address":"949 Dapibus St.","postalZip":"JD21 7CN","country":"China"},{"customerId":567,"customerName":"Wilma Waller","phone":"(628) 453-8081","email":"fringilla.donec@outlook.com","address":"999-1556 Consequat St.","postalZip":"2450","country":"United States"},{"customerId":568,"customerName":"Azalia Jefferson","phone":"1-388-342-7824","email":"at@outlook.edu","address":"Ap #997-4777 Auctor Rd.","postalZip":"631737","country":"New Zealand"},{"customerId":569,"customerName":"Jasmine Paul","phone":"1-263-736-6933","email":"natoque@protonmail.couk","address":"Ap #555-9404 Massa. Street","postalZip":"874231","country":"South Korea"},{"customerId":570,"customerName":"Dominic Reyes","phone":"1-256-778-6437","email":"curabitur@icloud.net","address":"Ap #760-9437 Pharetra. St.","postalZip":"20519","country":"Italy"},{"customerId":571,"customerName":"Samantha Cooke","phone":"1-434-524-2483","email":"egestas@outlook.net","address":"Ap #368-4676 Mauris. Rd.","postalZip":"17494","country":"Germany"},{"customerId":572,"customerName":"Shaine Gutierrez","phone":"1-434-746-3559","email":"cras@hotmail.couk","address":"521-7500 Vel, Ave","postalZip":"40094-65025","country":"Canada"},{"customerId":573,"customerName":"Gareth Merritt","phone":"(232) 648-2262","email":"eu.odio.phasellus@google.ca","address":"179-8793 Aliquet. Ave","postalZip":"80722-03176","country":"Vietnam"},{"customerId":574,"customerName":"Grant Spears","phone":"(446) 575-1687","email":"natoque.penatibus@icloud.net","address":"P.O. Box 882, 5281 Sed Av.","postalZip":"Y1X 6C2","country":"Indonesia"},{"customerId":575,"customerName":"Fatima Briggs","phone":"(817) 466-2347","email":"mauris@google.com","address":"Ap #499-6101 Nisl Rd.","postalZip":"685408","country":"Austria"},{"customerId":576,"customerName":"Adena Jenkins","phone":"1-827-384-4189","email":"phasellus@icloud.net","address":"639-4162 Fermentum Ave","postalZip":"S0T 7M7","country":"Indonesia"},{"customerId":577,"customerName":"Daniel Gould","phone":"1-642-838-4917","email":"elementum.sem@hotmail.com","address":"Ap #259-3320 Ornare, Road","postalZip":"3254","country":"Nigeria"},{"customerId":578,"customerName":"Teegan Ballard","phone":"(775) 167-9434","email":"eget.metus@yahoo.org","address":"7074 Ultrices Street","postalZip":"492735","country":"United States"},{"customerId":579,"customerName":"Mira Simpson","phone":"1-784-686-7061","email":"luctus@icloud.com","address":"393-8282 Arcu Av.","postalZip":"75566","country":"Colombia"},{"customerId":580,"customerName":"Orla Blackburn","phone":"(760) 519-1668","email":"lobortis@outlook.org","address":"Ap #225-2349 Lorem Rd.","postalZip":"31-275","country":"Indonesia"},{"customerId":581,"customerName":"Libby Ayala","phone":"1-881-348-0370","email":"litora@outlook.net","address":"944-9556 Mauris Street","postalZip":"64394","country":"France"},{"customerId":582,"customerName":"Fleur Bryant","phone":"1-570-373-5022","email":"quis.lectus@google.edu","address":"Ap #587-2992 Fusce St.","postalZip":"88-673","country":"South Africa"},{"customerId":583,"customerName":"Silas Solomon","phone":"1-687-266-0815","email":"ipsum.phasellus.vitae@protonmail.edu","address":"Ap #301-1947 Tincidunt Av.","postalZip":"5684","country":"France"},{"customerId":584,"customerName":"Ferdinand Huff","phone":"1-664-644-8882","email":"pellentesque.habitant.morbi@outlook.net","address":"Ap #561-9750 Lacinia Road","postalZip":"0825","country":"Chile"},{"customerId":585,"customerName":"Leandra Diaz","phone":"(240) 640-0661","email":"et.arcu@yahoo.org","address":"P.O. Box 267, 7684 Dui. Avenue","postalZip":"365186","country":"Australia"},{"customerId":586,"customerName":"Minerva Harrington","phone":"(754) 263-5758","email":"lorem.eu@outlook.net","address":"P.O. Box 451, 1025 Proin Road","postalZip":"764417","country":"Colombia"},{"customerId":587,"customerName":"Thomas Simpson","phone":"1-208-772-3126","email":"luctus.aliquet.odio@hotmail.couk","address":"P.O. Box 703, 5490 Adipiscing Rd.","postalZip":"A2X 5G8","country":"Russian Federation"},{"customerId":588,"customerName":"Erin Henson","phone":"1-350-661-7063","email":"pellentesque.ultricies@outlook.ca","address":"2751 Cum Avenue","postalZip":"4198","country":"Sweden"},{"customerId":589,"customerName":"Calista Scott","phone":"1-620-596-3205","email":"diam.eu@protonmail.edu","address":"Ap #129-5858 Ligula. Rd.","postalZip":"3724-8534","country":"Australia"},{"customerId":590,"customerName":"Bruno Stewart","phone":"1-553-168-7857","email":"gravida.sagittis@protonmail.couk","address":"702-8683 Vulputate St.","postalZip":"144072","country":"Italy"},{"customerId":591,"customerName":"Bianca Aguirre","phone":"(331) 966-6162","email":"aliquam.adipiscing@icloud.net","address":"458-2329 Luctus, Road","postalZip":"85566-704","country":"South Korea"},{"customerId":592,"customerName":"Beverly Rios","phone":"(601) 583-8069","email":"lacus@protonmail.couk","address":"Ap #636-9265 Duis Road","postalZip":"2672-8608","country":"United States"},{"customerId":593,"customerName":"Roth Phillips","phone":"1-734-760-8340","email":"nec@google.org","address":"1107 Ac Avenue","postalZip":"752238","country":"Philippines"},{"customerId":594,"customerName":"Kasimir Gibson","phone":"(776) 752-1682","email":"quis.arcu@icloud.org","address":"P.O. Box 109, 5024 Aliquet. Avenue","postalZip":"34655","country":"United Kingdom"},{"customerId":595,"customerName":"Tasha Franco","phone":"1-621-287-0694","email":"sodales@aol.org","address":"207-3833 Felis. St.","postalZip":"20171","country":"Belgium"},{"customerId":596,"customerName":"Keith Price","phone":"(493) 756-7826","email":"donec.elementum@yahoo.net","address":"736-8931 Tempus, Rd.","postalZip":"24195","country":"United States"},{"customerId":597,"customerName":"Lara Goodman","phone":"(494) 243-3514","email":"nascetur.ridiculus.mus@google.couk","address":"573-4759 Morbi Rd.","postalZip":"06169","country":"Ireland"},{"customerId":598,"customerName":"Latifah Carney","phone":"(821) 755-4774","email":"lectus.sit.amet@icloud.couk","address":"587 Bibendum Ave","postalZip":"394378","country":"Chile"},{"customerId":599,"customerName":"Marshall O'donnell","phone":"(757) 348-3863","email":"posuere.enim.nisl@yahoo.couk","address":"319-3666 Nisi St.","postalZip":"30151","country":"Peru"},{"customerId":600,"customerName":"Holmes Fry","phone":"(912) 516-3702","email":"mauris.blandit.mattis@google.edu","address":"952-4860 Nec Avenue","postalZip":"44746","country":"Singapore"},{"customerId":601,"customerName":"Addison Deleon","phone":"(212) 482-6884","email":"suscipit@google.net","address":"Ap #371-3261 Netus St.","postalZip":"215748","country":"Chile"},{"customerId":602,"customerName":"Emmanuel Padilla","phone":"1-798-831-9342","email":"velit.quisque@protonmail.org","address":"Ap #102-5764 Enim Street","postalZip":"0368","country":"Spain"},{"customerId":603,"customerName":"Reese Bowman","phone":"1-148-532-8595","email":"ornare.sagittis@icloud.ca","address":"Ap #279-411 Pede Av.","postalZip":"R1H 5M3","country":"Sweden"},{"customerId":604,"customerName":"Veronica Patel","phone":"1-877-740-5385","email":"nibh.phasellus@google.com","address":"P.O. Box 673, 4242 Praesent St.","postalZip":"606153","country":"Australia"},{"customerId":605,"customerName":"Scarlet Reilly","phone":"1-182-353-3428","email":"commodo.hendrerit@protonmail.edu","address":"Ap #827-4924 Neque St.","postalZip":"738494","country":"Norway"},{"customerId":606,"customerName":"Gwendolyn Mathews","phone":"1-508-473-4884","email":"accumsan@outlook.edu","address":"645-2639 Arcu. St.","postalZip":"15178","country":"Austria"},{"customerId":607,"customerName":"Isabella Rios","phone":"(246) 593-1542","email":"arcu.et@yahoo.edu","address":"P.O. Box 370, 2215 Erat Ave","postalZip":"T0C 8Z7","country":"Canada"},{"customerId":608,"customerName":"Lucas Mendez","phone":"1-425-765-6172","email":"vehicula@aol.ca","address":"P.O. Box 897, 1093 Natoque Av.","postalZip":"1224","country":"Singapore"},{"customerId":609,"customerName":"Roth Navarro","phone":"1-547-632-4738","email":"condimentum.donec@protonmail.net","address":"Ap #585-2964 Nunc St.","postalZip":"29266","country":"Costa Rica"},{"customerId":610,"customerName":"Zahir Hart","phone":"(297) 368-8321","email":"faucibus.leo@hotmail.edu","address":"5085 A Rd.","postalZip":"164438","country":"Spain"},{"customerId":611,"customerName":"Stuart Patton","phone":"(251) 356-9123","email":"in.cursus.et@protonmail.ca","address":"2626 Posuere St.","postalZip":"5630","country":"South Africa"},{"customerId":612,"customerName":"Acton Mcclure","phone":"1-547-240-2255","email":"eget.varius@aol.edu","address":"483-2879 Morbi St.","postalZip":"WW8 8AE","country":"United Kingdom"},{"customerId":613,"customerName":"Kirk Glass","phone":"(427) 981-2115","email":"aenean.egestas@hotmail.com","address":"136-6488 Vel Ave","postalZip":"156088","country":"Philippines"},{"customerId":614,"customerName":"Shaine Doyle","phone":"(323) 236-1058","email":"odio.auctor@google.ca","address":"821-8566 Vivamus Rd.","postalZip":"68-46","country":"Netherlands"},{"customerId":615,"customerName":"Charissa Nelson","phone":"(101) 779-7370","email":"est.congue@protonmail.org","address":"P.O. Box 750, 4014 Sit Av.","postalZip":"91652","country":"Poland"},{"customerId":616,"customerName":"Kylan Hess","phone":"1-636-781-3576","email":"erat.vel@icloud.com","address":"5559 Est. St.","postalZip":"43166","country":"Belgium"},{"customerId":617,"customerName":"Oliver Kidd","phone":"(774) 826-1866","email":"magna.malesuada@protonmail.couk","address":"5401 Felis Ave","postalZip":"1612","country":"Turkey"},{"customerId":618,"customerName":"Reuben Weiss","phone":"(446) 844-1200","email":"donec@outlook.net","address":"P.O. Box 963, 2495 Cum Ave","postalZip":"7660","country":"New Zealand"},{"customerId":619,"customerName":"Urielle Hoover","phone":"(434) 254-0953","email":"enim.nec.tempus@yahoo.couk","address":"110-3560 Vel St.","postalZip":"3673","country":"Pakistan"},{"customerId":620,"customerName":"Herrod Salinas","phone":"(669) 771-1778","email":"iaculis.lacus.pede@protonmail.org","address":"225 Vestibulum St.","postalZip":"1120","country":"Chile"},{"customerId":621,"customerName":"Hilel Dawson","phone":"1-123-123-2258","email":"aliquam.eros@google.edu","address":"4536 Euismod Av.","postalZip":"1625 LF","country":"Germany"},{"customerId":622,"customerName":"MacKenzie Goodwin","phone":"(564) 222-3923","email":"luctus@aol.org","address":"Ap #703-4059 Sed St.","postalZip":"12821","country":"Nigeria"},{"customerId":623,"customerName":"Charles Alvarado","phone":"1-427-285-1374","email":"imperdiet.nec.leo@google.edu","address":"Ap #705-1155 Lobortis St.","postalZip":"AW89 4SR","country":"Canada"},{"customerId":624,"customerName":"Wallace Pacheco","phone":"(772) 608-4537","email":"eu.euismod.ac@protonmail.net","address":"989-328 Dictum Ave","postalZip":"SG6M 6PC","country":"India"},{"customerId":625,"customerName":"Alika Hopkins","phone":"(430) 434-4238","email":"lobortis.quis.pede@outlook.com","address":"369-2013 Vestibulum Av.","postalZip":"43017","country":"China"},{"customerId":626,"customerName":"Nigel Sanchez","phone":"(348) 575-6596","email":"aliquet.diam@yahoo.couk","address":"Ap #770-6731 Viverra. Av.","postalZip":"45454","country":"Sweden"},{"customerId":627,"customerName":"Serina Mcdaniel","phone":"(211) 826-1378","email":"non.feugiat.nec@google.ca","address":"380-2587 Tincidunt Av.","postalZip":"834268","country":"Singapore"},{"customerId":628,"customerName":"Mary Chandler","phone":"1-596-179-8727","email":"egestas.a@yahoo.net","address":"Ap #644-2525 Nunc. St.","postalZip":"57885","country":"Nigeria"},{"customerId":629,"customerName":"Brennan Orr","phone":"(897) 271-4681","email":"nam@yahoo.net","address":"4038 Ac, Ave","postalZip":"0458-4457","country":"Turkey"},{"customerId":630,"customerName":"Kaseem Bray","phone":"1-232-894-6176","email":"aenean@aol.com","address":"177-2498 Libero. Av.","postalZip":"26777-65688","country":"Chile"},{"customerId":631,"customerName":"Perry Graham","phone":"(879) 766-4653","email":"feugiat.placerat@icloud.com","address":"P.O. Box 246, 2060 Enim Road","postalZip":"744244","country":"United States"},{"customerId":632,"customerName":"Alea Valdez","phone":"1-461-710-7814","email":"diam.vel@protonmail.com","address":"110-6708 Auctor Avenue","postalZip":"183890","country":"Vietnam"},{"customerId":633,"customerName":"Regan Chan","phone":"(363) 671-1723","email":"orci@yahoo.edu","address":"P.O. Box 264, 9041 Phasellus St.","postalZip":"81183","country":"Ukraine"},{"customerId":634,"customerName":"Joseph Vaughan","phone":"1-366-717-1684","email":"tempor.arcu.vestibulum@aol.com","address":"P.O. Box 798, 7326 Nunc Street","postalZip":"20167","country":"Ukraine"},{"customerId":635,"customerName":"Amela Waller","phone":"1-840-538-2183","email":"ornare.facilisis@protonmail.net","address":"864-3029 Luctus Ave","postalZip":"31322","country":"Netherlands"},{"customerId":636,"customerName":"Quamar Frederick","phone":"(179) 524-8652","email":"cras@yahoo.ca","address":"Ap #931-4100 Nunc Ave","postalZip":"47297","country":"Belgium"},{"customerId":637,"customerName":"Burton Nixon","phone":"1-737-195-4332","email":"dui.suspendisse.ac@google.net","address":"P.O. Box 106, 3415 Nunc Street","postalZip":"18416","country":"Canada"},{"customerId":638,"customerName":"John Mcknight","phone":"1-545-501-7021","email":"aliquam.ultrices@hotmail.edu","address":"Ap #217-8190 Malesuada Road","postalZip":"744443","country":"Turkey"},{"customerId":639,"customerName":"Abigail Melton","phone":"(147) 938-2385","email":"rutrum@hotmail.ca","address":"282-5786 Senectus Rd.","postalZip":"57910","country":"Pakistan"},{"customerId":640,"customerName":"Tanner Wilcox","phone":"(798) 267-7743","email":"accumsan@outlook.net","address":"690-1638 A, Avenue","postalZip":"2488","country":"Netherlands"},{"customerId":641,"customerName":"Callum Reid","phone":"(156) 229-7883","email":"mattis.velit.justo@google.com","address":"3702 Sit Av.","postalZip":"54-28","country":"Austria"},{"customerId":642,"customerName":"Cain Galloway","phone":"(363) 249-6466","email":"id@aol.com","address":"Ap #842-8547 Aenean Street","postalZip":"58954-577","country":"United Kingdom"},{"customerId":643,"customerName":"Remedios Mason","phone":"1-774-284-8441","email":"posuere.vulputate@aol.edu","address":"458-2050 Posuere Road","postalZip":"701631","country":"New Zealand"},{"customerId":644,"customerName":"Deanna Cooper","phone":"1-782-834-4857","email":"tempor@icloud.ca","address":"464-4869 Adipiscing, Rd.","postalZip":"8445","country":"Germany"},{"customerId":645,"customerName":"Steven Woodward","phone":"1-523-213-6682","email":"eu.tellus.eu@aol.couk","address":"P.O. Box 369, 838 Eget, Ave","postalZip":"412482","country":"Norway"},{"customerId":646,"customerName":"Irma West","phone":"1-651-575-1113","email":"orci@hotmail.ca","address":"337-6977 Vivamus Rd.","postalZip":"7325","country":"South Africa"},{"customerId":647,"customerName":"Hall Jordan","phone":"1-987-762-8380","email":"praesent.interdum.ligula@yahoo.net","address":"8740 Tortor, Rd.","postalZip":"972310","country":"Chile"},{"customerId":648,"customerName":"Hammett Hoover","phone":"(543) 389-3255","email":"eros@outlook.org","address":"873-6316 Aptent St.","postalZip":"34254","country":"Russian Federation"},{"customerId":649,"customerName":"Jared Vazquez","phone":"(124) 883-2424","email":"sit@icloud.com","address":"145-4203 Ac St.","postalZip":"08126","country":"Costa Rica"},{"customerId":650,"customerName":"Stuart Solis","phone":"1-785-565-7532","email":"elit@protonmail.net","address":"Ap #773-7339 Ut Avenue","postalZip":"459651","country":"Pakistan"},{"customerId":651,"customerName":"Ezra Randall","phone":"1-286-196-2577","email":"nulla.aliquet.proin@aol.ca","address":"361-3578 Non, St.","postalZip":"3974152","country":"Indonesia"},{"customerId":652,"customerName":"Rosalyn Cline","phone":"(445) 586-6211","email":"lacus.quisque.imperdiet@protonmail.edu","address":"Ap #521-8621 Nullam St.","postalZip":"88690-78194","country":"South Africa"},{"customerId":653,"customerName":"Levi Montoya","phone":"1-388-255-0464","email":"erat.etiam@google.net","address":"416 Gravida Rd.","postalZip":"18-34","country":"Italy"},{"customerId":654,"customerName":"Carissa Simpson","phone":"1-753-856-2484","email":"consequat@outlook.com","address":"548-646 Molestie Rd.","postalZip":"3661","country":"United Kingdom"},{"customerId":655,"customerName":"Justina Spencer","phone":"1-511-332-1866","email":"hendrerit.neque.in@yahoo.com","address":"5947 Ullamcorper Ave","postalZip":"603471","country":"France"},{"customerId":656,"customerName":"Brandon Shaw","phone":"1-730-528-0576","email":"mauris@yahoo.net","address":"4160 Mattis. St.","postalZip":"47742","country":"Costa Rica"},{"customerId":657,"customerName":"Edward Vang","phone":"1-715-387-4508","email":"nonummy@protonmail.couk","address":"Ap #440-5219 Phasellus Rd.","postalZip":"A23 2QR","country":"Nigeria"},{"customerId":658,"customerName":"Aurora Grimes","phone":"(515) 242-7709","email":"proin.velit@protonmail.org","address":"Ap #597-539 Consectetuer Av.","postalZip":"22090","country":"Brazil"},{"customerId":659,"customerName":"Benedict Stewart","phone":"1-541-537-9186","email":"cubilia.curae.donec@outlook.couk","address":"371-3926 Tincidunt Rd.","postalZip":"58487","country":"Nigeria"},{"customerId":660,"customerName":"Ali Greer","phone":"1-752-415-4598","email":"cras@google.org","address":"Ap #476-6926 Sem. Rd.","postalZip":"23072","country":"Vietnam"},{"customerId":661,"customerName":"Amanda Stout","phone":"1-714-859-7121","email":"in.lorem@outlook.net","address":"158-4725 Metus Road","postalZip":"60379-412","country":"Singapore"},{"customerId":662,"customerName":"Zephania Melton","phone":"1-162-285-7203","email":"vitae@icloud.com","address":"Ap #508-2203 Dolor Av.","postalZip":"752838","country":"United States"},{"customerId":663,"customerName":"Ila Wells","phone":"(408) 892-5835","email":"augue.scelerisque.mollis@outlook.couk","address":"169-2929 Dictum Street","postalZip":"6523","country":"Ireland"},{"customerId":664,"customerName":"Zelda Osborne","phone":"1-694-428-8215","email":"pellentesque.massa@protonmail.ca","address":"957-3193 Vitae Ave","postalZip":"63838","country":"Turkey"},{"customerId":665,"customerName":"Hayfa Morse","phone":"(504) 553-1070","email":"sit@google.ca","address":"101-6493 Nisl. Rd.","postalZip":"42781","country":"South Korea"},{"customerId":666,"customerName":"Laura Pearson","phone":"1-516-646-4418","email":"leo@yahoo.org","address":"Ap #279-8832 Fusce Rd.","postalZip":"184383","country":"Russian Federation"},{"customerId":667,"customerName":"Germaine Browning","phone":"(467) 471-6433","email":"donec@aol.org","address":"9800 Dolor St.","postalZip":"345658","country":"Brazil"},{"customerId":668,"customerName":"Colleen Gay","phone":"(173) 837-5983","email":"aliquam.adipiscing.lobortis@aol.org","address":"854-9919 Diam Rd.","postalZip":"439477","country":"Singapore"},{"customerId":669,"customerName":"Jin Gomez","phone":"1-508-953-4683","email":"scelerisque.scelerisque@outlook.com","address":"Ap #492-9808 Lorem Street","postalZip":"50513","country":"Austria"},{"customerId":670,"customerName":"Beverly O'Neill","phone":"(424) 629-8591","email":"sodales.elit@icloud.edu","address":"3160 Nulla Av.","postalZip":"M08 5IQ","country":"Canada"},{"customerId":671,"customerName":"Abel Wilkerson","phone":"1-828-866-8232","email":"rhoncus.nullam@protonmail.edu","address":"918-1271 Enim, Street","postalZip":"726762","country":"Italy"},{"customerId":672,"customerName":"Serena Olson","phone":"(497) 648-1175","email":"neque.sed.sem@aol.couk","address":"Ap #599-5709 Lorem Ave","postalZip":"7852","country":"Belgium"},{"customerId":673,"customerName":"Melodie Banks","phone":"(981) 482-2153","email":"ipsum.donec@yahoo.org","address":"304-4015 Nulla Street","postalZip":"66745-17125","country":"Belgium"},{"customerId":674,"customerName":"Samuel Padilla","phone":"(631) 341-4296","email":"non.sollicitudin@aol.couk","address":"Ap #354-4137 A, Rd.","postalZip":"08422","country":"Pakistan"},{"customerId":675,"customerName":"Kiara Wilkins","phone":"(769) 278-5299","email":"mauris@icloud.couk","address":"1414 Ullamcorper Rd.","postalZip":"46725","country":"Brazil"},{"customerId":676,"customerName":"Brenna Noble","phone":"(772) 413-0763","email":"arcu.ac@protonmail.net","address":"Ap #704-1686 Eu Rd.","postalZip":"645582","country":"Costa Rica"},{"customerId":677,"customerName":"Ferris Cochran","phone":"1-252-258-7184","email":"feugiat.metus.sit@yahoo.couk","address":"Ap #608-624 Varius Ave","postalZip":"444011","country":"Netherlands"},{"customerId":678,"customerName":"Alfreda Dunlap","phone":"(872) 136-2334","email":"at.pretium@hotmail.couk","address":"Ap #172-6043 Nunc Avenue","postalZip":"697784","country":"Singapore"},{"customerId":679,"customerName":"Ishmael Huffman","phone":"1-826-514-6037","email":"ornare.in@google.ca","address":"Ap #708-1539 Mi St.","postalZip":"2417-5672","country":"Philippines"},{"customerId":680,"customerName":"Fredericka Rojas","phone":"1-922-673-8608","email":"et@icloud.edu","address":"Ap #991-728 Primis Rd.","postalZip":"16231","country":"Russian Federation"},{"customerId":681,"customerName":"Emmanuel Bray","phone":"(429) 581-3113","email":"aliquam.gravida@outlook.net","address":"P.O. Box 617, 9505 Pellentesque Rd.","postalZip":"6622","country":"Italy"},{"customerId":682,"customerName":"Gage Holland","phone":"(275) 344-5235","email":"ac.ipsum@google.net","address":"3807 Porttitor St.","postalZip":"645584","country":"France"},{"customerId":683,"customerName":"Kellie Fleming","phone":"(543) 716-3161","email":"eu.erat@icloud.ca","address":"250-9433 Conubia Street","postalZip":"53L 5N9","country":"Belgium"},{"customerId":684,"customerName":"Dennis Stephens","phone":"1-665-763-3476","email":"pede.cras@yahoo.ca","address":"P.O. Box 797, 5672 Dolor. Rd.","postalZip":"65441","country":"Sweden"},{"customerId":685,"customerName":"Graiden Kerr","phone":"(806) 625-2677","email":"sed@aol.couk","address":"993-1068 Vulputate Rd.","postalZip":"46138","country":"Chile"},{"customerId":686,"customerName":"Chancellor Cooper","phone":"(673) 268-1631","email":"gravida.molestie.arcu@protonmail.edu","address":"Ap #284-6591 Eu, Street","postalZip":"386178","country":"Australia"},{"customerId":687,"customerName":"Kaitlin Hogan","phone":"(316) 511-2546","email":"turpis.egestas@yahoo.couk","address":"P.O. Box 720, 7028 Fermentum Av.","postalZip":"41673","country":"Australia"},{"customerId":688,"customerName":"Bianca Andrews","phone":"(359) 741-5673","email":"non.ante@protonmail.com","address":"4456 Odio. Rd.","postalZip":"M3T 0P7","country":"Nigeria"},{"customerId":689,"customerName":"Daria Lewis","phone":"(575) 419-6548","email":"urna.vivamus.molestie@yahoo.org","address":"105-7264 Erat Street","postalZip":"2825 XE","country":"New Zealand"},{"customerId":690,"customerName":"Ivan Long","phone":"(164) 596-2633","email":"ac@icloud.net","address":"484 Facilisis, Road","postalZip":"3575","country":"Peru"},{"customerId":691,"customerName":"Chiquita Bird","phone":"1-324-512-8855","email":"fusce.dolor@hotmail.ca","address":"P.O. Box 348, 4763 Velit Rd.","postalZip":"27917","country":"Chile"},{"customerId":692,"customerName":"Illiana Schultz","phone":"(440) 283-9144","email":"libero@yahoo.edu","address":"Ap #975-2907 Eu Street","postalZip":"43936","country":"Pakistan"},{"customerId":693,"customerName":"Halee Vazquez","phone":"1-882-448-9353","email":"nulla.facilisi@hotmail.couk","address":"Ap #164-3419 Risus. Rd.","postalZip":"4594","country":"Spain"},{"customerId":694,"customerName":"Jamalia Salas","phone":"1-146-328-6621","email":"ultricies.ligula.nullam@protonmail.edu","address":"6789 Lacus Av.","postalZip":"21204","country":"Colombia"},{"customerId":695,"customerName":"Gavin Russell","phone":"1-323-845-2223","email":"elementum.at.egestas@outlook.ca","address":"Ap #416-4357 Odio. Ave","postalZip":"34376","country":"Sweden"},{"customerId":696,"customerName":"Yvette Nieves","phone":"(336) 891-7526","email":"varius.ultrices@icloud.couk","address":"3116 Iaculis Rd.","postalZip":"11213","country":"Austria"},{"customerId":697,"customerName":"Fatima Tillman","phone":"(357) 418-1563","email":"donec@yahoo.org","address":"P.O. Box 975, 5025 Ligula St.","postalZip":"7337 BA","country":"Chile"},{"customerId":698,"customerName":"Zorita Robbins","phone":"1-976-388-2265","email":"et.rutrum@protonmail.ca","address":"Ap #509-2128 Urna. St.","postalZip":"7164","country":"Singapore"},{"customerId":699,"customerName":"Maile Holman","phone":"1-254-562-4216","email":"semper.dui.lectus@aol.couk","address":"2754 Ac, St.","postalZip":"15478","country":"Colombia"},{"customerId":700,"customerName":"Henry Cotton","phone":"1-734-963-6549","email":"sit.amet@outlook.net","address":"Ap #741-4742 Etiam Street","postalZip":"CT9 9FZ","country":"Ukraine"},{"customerId":701,"customerName":"Bryar Leon","phone":"1-729-516-3877","email":"commodo.tincidunt.nibh@google.ca","address":"Ap #519-5538 Aliquam Avenue","postalZip":"T3X 8B3","country":"Russian Federation"},{"customerId":702,"customerName":"Chelsea Holmes","phone":"(202) 348-1646","email":"ultrices@hotmail.edu","address":"P.O. Box 651, 8269 Mauris Av.","postalZip":"52452","country":"South Korea"},{"customerId":703,"customerName":"Basil Haney","phone":"(591) 637-0485","email":"sodales@outlook.org","address":"646-6912 Semper, Ave","postalZip":"4352","country":"Peru"},{"customerId":704,"customerName":"Cassidy Farley","phone":"1-814-856-3941","email":"sed.facilisis@icloud.edu","address":"1655 Pellentesque Rd.","postalZip":"6372","country":"United Kingdom"},{"customerId":705,"customerName":"Emery Good","phone":"(434) 474-4664","email":"auctor@hotmail.org","address":"Ap #777-8861 Rhoncus. Avenue","postalZip":"202163","country":"Chile"},{"customerId":706,"customerName":"Shelly Bruce","phone":"1-628-875-1071","email":"magna.et.ipsum@protonmail.couk","address":"Ap #111-4955 Mauris Rd.","postalZip":"80444","country":"Peru"},{"customerId":707,"customerName":"Colby Kelley","phone":"(680) 511-1099","email":"urna.ut@google.ca","address":"P.O. Box 717, 1718 Sed Rd.","postalZip":"570435","country":"Mexico"},{"customerId":708,"customerName":"Brendan Cobb","phone":"(870) 875-3861","email":"felis.donec@aol.ca","address":"Ap #885-3934 Inceptos St.","postalZip":"7686","country":"Ireland"},{"customerId":709,"customerName":"Forrest Espinoza","phone":"1-504-595-2337","email":"augue.ut.lacus@protonmail.couk","address":"3498 Ullamcorper St.","postalZip":"703717","country":"United Kingdom"},{"customerId":710,"customerName":"Tad Malone","phone":"(361) 344-7431","email":"adipiscing@icloud.org","address":"895-742 At Street","postalZip":"438731","country":"Peru"},{"customerId":711,"customerName":"Astra Newman","phone":"(572) 140-0633","email":"imperdiet@aol.com","address":"903-9715 Lacus St.","postalZip":"69074","country":"Indonesia"},{"customerId":712,"customerName":"Patrick Watkins","phone":"1-458-248-9709","email":"eget.laoreet.posuere@protonmail.edu","address":"Ap #896-231 Etiam Rd.","postalZip":"25365","country":"South Africa"},{"customerId":713,"customerName":"Isabelle Hutchinson","phone":"1-561-668-9303","email":"elit.etiam@yahoo.net","address":"P.O. Box 487, 8571 Amet St.","postalZip":"747278","country":"Philippines"},{"customerId":714,"customerName":"Jordan Wilder","phone":"(851) 986-1221","email":"donec.vitae@icloud.edu","address":"7147 Sollicitudin Rd.","postalZip":"16816","country":"Germany"},{"customerId":715,"customerName":"Fay Phelps","phone":"(544) 381-8265","email":"interdum.ligula.eu@icloud.org","address":"224-5460 Ante Rd.","postalZip":"766345","country":"Ukraine"},{"customerId":716,"customerName":"Jenna Roy","phone":"(815) 281-8427","email":"elementum.at.egestas@google.edu","address":"Ap #386-4543 Sollicitudin Street","postalZip":"56322","country":"Philippines"},{"customerId":717,"customerName":"Felicia Waller","phone":"1-358-255-0045","email":"non.lobortis.quis@outlook.couk","address":"9807 Velit Av.","postalZip":"168116","country":"United Kingdom"},{"customerId":718,"customerName":"Alan Keith","phone":"(193) 661-4113","email":"et@protonmail.couk","address":"Ap #894-6893 Velit Ave","postalZip":"7515","country":"Italy"},{"customerId":719,"customerName":"Kenneth Mcpherson","phone":"1-742-284-2165","email":"leo@google.net","address":"Ap #416-2641 Sed Rd.","postalZip":"8513","country":"South Africa"},{"customerId":720,"customerName":"Anthony Le","phone":"(251) 880-6573","email":"aliquam@aol.net","address":"728-9448 Ornare Avenue","postalZip":"8771","country":"Poland"},{"customerId":721,"customerName":"Ginger Lawson","phone":"(323) 888-3662","email":"interdum@yahoo.couk","address":"639-3476 Faucibus. Ave","postalZip":"9727","country":"Costa Rica"},{"customerId":722,"customerName":"Jamal Suarez","phone":"1-548-947-7622","email":"fames@icloud.edu","address":"P.O. Box 583, 2803 Posuere Street","postalZip":"23725","country":"India"},{"customerId":723,"customerName":"Wylie Stokes","phone":"(351) 661-8245","email":"et.libero.proin@aol.edu","address":"154-4462 Egestas Ave","postalZip":"36-24","country":"India"},{"customerId":724,"customerName":"Bernard Harris","phone":"1-843-327-6984","email":"molestie.orci@icloud.com","address":"P.O. Box 336, 2665 At Rd.","postalZip":"16885-551","country":"United Kingdom"},{"customerId":725,"customerName":"Ronan Arnold","phone":"1-537-142-6668","email":"vestibulum.nec@protonmail.ca","address":"149-5046 Sed Ave","postalZip":"582183","country":"Pakistan"},{"customerId":726,"customerName":"Jeanette Stanley","phone":"1-812-894-5900","email":"facilisis.lorem.tristique@outlook.org","address":"683-4049 Phasellus Rd.","postalZip":"07715","country":"Netherlands"},{"customerId":727,"customerName":"Shana Merritt","phone":"1-543-784-1204","email":"ullamcorper.nisl@aol.com","address":"539-6837 Non, Rd.","postalZip":"362432","country":"Turkey"},{"customerId":728,"customerName":"Xavier Fuentes","phone":"(313) 657-6636","email":"eros@protonmail.ca","address":"211-6474 At Road","postalZip":"4521","country":"Ukraine"},{"customerId":729,"customerName":"Eleanor Hayden","phone":"1-983-243-3953","email":"nec@yahoo.org","address":"P.O. Box 382, 8343 Ac Avenue","postalZip":"7403","country":"Singapore"},{"customerId":730,"customerName":"Rafael Roach","phone":"1-101-312-1215","email":"ut.semper.pretium@outlook.org","address":"9218 Tellus Road","postalZip":"386632","country":"Singapore"},{"customerId":731,"customerName":"Cecilia Hester","phone":"(813) 702-3565","email":"lorem.eget@google.org","address":"Ap #655-5528 Imperdiet Ave","postalZip":"84851","country":"Netherlands"},{"customerId":732,"customerName":"Uriah Mcpherson","phone":"1-656-842-2712","email":"tincidunt.nibh.phasellus@hotmail.com","address":"804-2950 Tellus. Road","postalZip":"28588","country":"Ukraine"},{"customerId":733,"customerName":"Beck Walton","phone":"1-457-558-9798","email":"fermentum@google.com","address":"Ap #193-3401 Bibendum Street","postalZip":"51J 8H8","country":"Pakistan"},{"customerId":734,"customerName":"Yetta Lowery","phone":"(117) 748-0961","email":"erat.sed.nunc@outlook.couk","address":"7459 Vivamus Rd.","postalZip":"1703-2538","country":"Belgium"},{"customerId":735,"customerName":"Cleo Guerrero","phone":"(253) 193-4524","email":"pede.praesent.eu@icloud.couk","address":"266-8321 Mauris Road","postalZip":"85055","country":"Costa Rica"},{"customerId":736,"customerName":"Cruz Aguilar","phone":"1-516-686-9331","email":"in.lobortis@aol.couk","address":"282-3045 Tristique St.","postalZip":"446632","country":"Netherlands"},{"customerId":737,"customerName":"Perry Morales","phone":"1-814-853-8324","email":"molestie.sodales.mauris@yahoo.edu","address":"Ap #865-6691 Sollicitudin Rd.","postalZip":"8718","country":"United States"},{"customerId":738,"customerName":"Velma Weeks","phone":"(511) 467-9457","email":"purus.accumsan@google.org","address":"Ap #794-128 Ullamcorper Road","postalZip":"622268","country":"Ukraine"},{"customerId":739,"customerName":"Emily Byers","phone":"(243) 570-2798","email":"scelerisque.neque@protonmail.org","address":"9669 Cursus St.","postalZip":"3655 XW","country":"Philippines"},{"customerId":740,"customerName":"Jasmine Moss","phone":"(481) 349-4651","email":"nibh.aliquam@protonmail.org","address":"684-8132 Fringilla Rd.","postalZip":"25798","country":"Costa Rica"},{"customerId":741,"customerName":"Galvin Maynard","phone":"(845) 816-4842","email":"vitae.risus@outlook.com","address":"8005 Bibendum Street","postalZip":"16562","country":"Turkey"},{"customerId":742,"customerName":"Lareina Ross","phone":"(460) 444-2286","email":"velit.quisque@aol.ca","address":"790-7763 Vulputate Rd.","postalZip":"26927","country":"Nigeria"},{"customerId":743,"customerName":"Yen Hayes","phone":"(807) 198-9279","email":"in.lobortis.tellus@aol.couk","address":"Ap #355-191 Velit. St.","postalZip":"802563","country":"South Korea"},{"customerId":744,"customerName":"Basil Green","phone":"1-223-457-6313","email":"ac.mattis@yahoo.edu","address":"Ap #754-3145 Tristique Av.","postalZip":"5171","country":"Netherlands"},{"customerId":745,"customerName":"Madaline Boyle","phone":"1-154-476-4752","email":"nunc.id.enim@hotmail.net","address":"698-9976 Pharetra Rd.","postalZip":"841437","country":"Spain"},{"customerId":746,"customerName":"Melanie Good","phone":"1-778-867-2546","email":"mauris@outlook.net","address":"P.O. Box 401, 3994 Vivamus Av.","postalZip":"37996","country":"Netherlands"},{"customerId":747,"customerName":"Xena Mills","phone":"1-853-852-6659","email":"phasellus.dolor@yahoo.net","address":"981-5350 Justo Street","postalZip":"46145","country":"Netherlands"},{"customerId":748,"customerName":"Victor Campos","phone":"1-246-872-7204","email":"dolor@yahoo.edu","address":"P.O. Box 945, 8808 Nibh Road","postalZip":"8661","country":"New Zealand"},{"customerId":749,"customerName":"Jelani Kaufman","phone":"(773) 553-6441","email":"justo.nec@yahoo.ca","address":"168-3069 Gravida Avenue","postalZip":"43864-439","country":"Ukraine"},{"customerId":750,"customerName":"Whoopi Ratliff","phone":"(556) 928-7102","email":"adipiscing.fringilla.porttitor@hotmail.couk","address":"Ap #828-8835 At Av.","postalZip":"83531","country":"Vietnam"},{"customerId":751,"customerName":"Basia Finch","phone":"1-123-511-6769","email":"tortor@outlook.couk","address":"1308 Tincidunt Rd.","postalZip":"54632","country":"Norway"},{"customerId":752,"customerName":"Gavin Elliott","phone":"1-631-521-2887","email":"sapien.molestie@outlook.org","address":"Ap #102-9337 Massa. Ave","postalZip":"3315","country":"Norway"},{"customerId":753,"customerName":"Jayme William","phone":"1-532-882-9532","email":"vitae@yahoo.com","address":"Ap #185-1545 Orci Rd.","postalZip":"671325","country":"Germany"},{"customerId":754,"customerName":"Patrick Abbott","phone":"(415) 867-6685","email":"massa.rutrum@icloud.edu","address":"736-9586 Lacinia Rd.","postalZip":"T5M 5Z4","country":"Canada"},{"customerId":755,"customerName":"Marvin Shields","phone":"1-826-727-7976","email":"libero.mauris@aol.ca","address":"6858 Curabitur St.","postalZip":"945894","country":"Ukraine"},{"customerId":756,"customerName":"Yael Bauer","phone":"(558) 586-8252","email":"nec.ante@yahoo.edu","address":"6253 Blandit Ave","postalZip":"60787","country":"South Korea"},{"customerId":757,"customerName":"Price Hansen","phone":"(591) 797-0973","email":"porttitor@icloud.ca","address":"Ap #519-1535 Sapien, St.","postalZip":"37692","country":"United Kingdom"},{"customerId":758,"customerName":"Jameson Harris","phone":"1-956-770-7240","email":"consectetuer.cursus.et@hotmail.edu","address":"Ap #610-3611 Ornare, St.","postalZip":"668360","country":"Australia"},{"customerId":759,"customerName":"Isaac Beach","phone":"(403) 241-7154","email":"lectus.pede@icloud.ca","address":"254-1041 Ligula Road","postalZip":"678392","country":"Pakistan"},{"customerId":760,"customerName":"Jada Larsen","phone":"(448) 672-7335","email":"a@aol.couk","address":"8908 Tellus St.","postalZip":"75833","country":"Mexico"},{"customerId":761,"customerName":"Kenneth Rowe","phone":"1-842-206-3504","email":"auctor.odio@google.ca","address":"774-7848 Dolor Street","postalZip":"41589","country":"Singapore"},{"customerId":762,"customerName":"Inez Wagner","phone":"(158) 587-2881","email":"augue@icloud.net","address":"6221 Per St.","postalZip":"732338","country":"China"},{"customerId":763,"customerName":"Ann Townsend","phone":"1-617-277-5296","email":"justo.eu@aol.net","address":"764-8751 Suspendisse Av.","postalZip":"27-17","country":"Italy"},{"customerId":764,"customerName":"Warren Mccall","phone":"1-558-855-1859","email":"nec.ante@outlook.com","address":"4006 Amet, Rd.","postalZip":"7661","country":"Indonesia"},{"customerId":765,"customerName":"Gillian Caldwell","phone":"(343) 379-1567","email":"aliquam.nisl@outlook.edu","address":"439-5857 Velit. Rd.","postalZip":"65120-808","country":"Philippines"},{"customerId":766,"customerName":"Philip Mcneil","phone":"(118) 138-6654","email":"pharetra.quisque.ac@icloud.ca","address":"126-9845 Dolor. Street","postalZip":"5922","country":"Sweden"},{"customerId":767,"customerName":"Carla Griffith","phone":"(935) 961-6277","email":"aliquam.iaculis.lacus@protonmail.edu","address":"3978 Velit St.","postalZip":"1869-7334","country":"United States"},{"customerId":768,"customerName":"Althea Turner","phone":"(433) 381-4446","email":"per.conubia.nostra@google.couk","address":"330-4113 Et Ave","postalZip":"638243","country":"Poland"},{"customerId":769,"customerName":"Quinn Sandoval","phone":"(721) 758-4826","email":"enim.commodo.hendrerit@yahoo.org","address":"Ap #363-3098 Ornare Road","postalZip":"y3S 6L5","country":"Costa Rica"},{"customerId":770,"customerName":"Zeph Gay","phone":"1-999-235-9676","email":"nulla.eu@aol.ca","address":"483-1542 Mauris Street","postalZip":"VG14 3WR","country":"Nigeria"},{"customerId":771,"customerName":"Lester Herring","phone":"1-735-246-5755","email":"erat.in@google.org","address":"Ap #939-6519 Lorem. Road","postalZip":"366614","country":"Spain"},{"customerId":772,"customerName":"Gareth Huff","phone":"1-356-343-4077","email":"eleifend.vitae@aol.net","address":"324-8669 Cras Rd.","postalZip":"346843","country":"India"},{"customerId":773,"customerName":"Sigourney Pruitt","phone":"1-676-416-8753","email":"ullamcorper.viverra.maecenas@icloud.org","address":"Ap #480-7841 Ullamcorper Av.","postalZip":"573673","country":"China"},{"customerId":774,"customerName":"Joan Medina","phone":"1-427-641-3357","email":"nec.imperdiet@yahoo.edu","address":"Ap #312-9806 Fringilla St.","postalZip":"4473 BC","country":"Norway"},{"customerId":775,"customerName":"Quinlan Espinoza","phone":"1-497-643-1247","email":"ultricies.sem@protonmail.org","address":"Ap #716-8093 Mus. Avenue","postalZip":"02-223","country":"Vietnam"},{"customerId":776,"customerName":"Cooper Bernard","phone":"1-742-847-2173","email":"tristique.pharetra@protonmail.com","address":"Ap #612-624 Arcu Road","postalZip":"B3J 1M4","country":"Ukraine"},{"customerId":777,"customerName":"Zephr Frost","phone":"(598) 227-1472","email":"porttitor.interdum@yahoo.edu","address":"974-1307 Vitae Ave","postalZip":"528762","country":"Singapore"},{"customerId":778,"customerName":"Reese Battle","phone":"1-732-761-0485","email":"tristique@yahoo.edu","address":"Ap #569-9593 Sodales St.","postalZip":"77-53","country":"Canada"},{"customerId":779,"customerName":"Sydney Harmon","phone":"1-471-558-5615","email":"duis.ac@icloud.ca","address":"Ap #585-7272 Rutrum Av.","postalZip":"400134","country":"Italy"},{"customerId":780,"customerName":"Meghan Farrell","phone":"1-267-536-8443","email":"dictum@protonmail.couk","address":"267-778 Neque. Avenue","postalZip":"70162","country":"Indonesia"},{"customerId":781,"customerName":"Plato Guthrie","phone":"1-228-530-2717","email":"diam@icloud.edu","address":"237-8041 Lacus. Avenue","postalZip":"416567","country":"Germany"},{"customerId":782,"customerName":"Philip Slater","phone":"1-657-181-5496","email":"auctor.non@aol.com","address":"865-9756 Ut St.","postalZip":"487316","country":"Spain"},{"customerId":783,"customerName":"Lillian Wells","phone":"1-583-520-3487","email":"risus.donec@outlook.com","address":"589-2712 Odio. Rd.","postalZip":"4335 UU","country":"South Africa"},{"customerId":784,"customerName":"Kalia Terry","phone":"(663) 776-7659","email":"etiam@google.net","address":"P.O. Box 859, 7194 Duis Ave","postalZip":"345505","country":"Poland"},{"customerId":785,"customerName":"Darius Bridges","phone":"1-493-751-5738","email":"cursus@protonmail.com","address":"800-8647 Sit Street","postalZip":"18323","country":"Brazil"},{"customerId":786,"customerName":"Piper Dunlap","phone":"1-222-965-7102","email":"consectetuer.cursus@protonmail.com","address":"380-3734 Mollis. Av.","postalZip":"12882","country":"Norway"},{"customerId":787,"customerName":"Slade Rocha","phone":"1-268-556-1838","email":"pharetra.quisque@hotmail.couk","address":"4235 Dis Ave","postalZip":"1159","country":"Singapore"},{"customerId":788,"customerName":"Priscilla Mcguire","phone":"1-542-281-8822","email":"arcu.sed@outlook.org","address":"431-2224 Ac Avenue","postalZip":"07202","country":"France"},{"customerId":789,"customerName":"Flavia Gamble","phone":"(626) 374-7779","email":"a.malesuada.id@yahoo.com","address":"267-3312 Id, Street","postalZip":"R5T 7H3","country":"Peru"},{"customerId":790,"customerName":"Scarlett Baird","phone":"(447) 503-0226","email":"iaculis.lacus@google.net","address":"911-7429 At, Ave","postalZip":"51E 1T3","country":"China"},{"customerId":791,"customerName":"Keegan Daugherty","phone":"1-116-624-7627","email":"et.libero@outlook.com","address":"P.O. Box 404, 5035 Lacus, Rd.","postalZip":"843551","country":"Norway"},{"customerId":792,"customerName":"Hiram Chen","phone":"(871) 345-8822","email":"consequat@protonmail.net","address":"625-6632 Vel Avenue","postalZip":"32159","country":"Turkey"},{"customerId":793,"customerName":"Branden Rodriquez","phone":"(664) 889-1642","email":"aliquam.arcu@outlook.ca","address":"320-2559 Nibh Rd.","postalZip":"8232","country":"United Kingdom"},{"customerId":794,"customerName":"Cassidy Peters","phone":"1-767-872-5576","email":"sem.nulla@outlook.couk","address":"Ap #116-8989 Lectus St.","postalZip":"924516","country":"China"},{"customerId":795,"customerName":"Ila Wall","phone":"1-601-548-5284","email":"consequat.lectus@protonmail.com","address":"Ap #976-3079 Lorem Rd.","postalZip":"339167","country":"Turkey"},{"customerId":796,"customerName":"Kenneth Newman","phone":"1-177-673-9169","email":"eleifend@icloud.couk","address":"P.O. Box 466, 8754 Ullamcorper, Street","postalZip":"665660","country":"Nigeria"},{"customerId":797,"customerName":"Vivian Barrett","phone":"(480) 851-0581","email":"massa.integer@yahoo.net","address":"300-8590 Mollis. Rd.","postalZip":"26586","country":"Ireland"},{"customerId":798,"customerName":"Henry Barlow","phone":"1-245-974-2855","email":"vulputate@icloud.com","address":"7076 Egestas St.","postalZip":"6561-2875","country":"Netherlands"},{"customerId":799,"customerName":"Vivien House","phone":"1-852-433-5728","email":"nunc.lectus.pede@aol.couk","address":"Ap #468-6391 Parturient Road","postalZip":"254680","country":"Ireland"},{"customerId":800,"customerName":"Roth Burt","phone":"1-771-306-5541","email":"lacus.etiam.bibendum@outlook.com","address":"P.O. Box 817, 1806 Eros St.","postalZip":"88247","country":"Russian Federation"},{"customerId":801,"customerName":"Dylan Long","phone":"(443) 982-3151","email":"ut.nulla@aol.com","address":"7136 Non, Avenue","postalZip":"12618","country":"South Africa"},{"customerId":802,"customerName":"Basil Owen","phone":"(153) 354-8786","email":"elementum.dui@outlook.couk","address":"Ap #394-7158 Libero Avenue","postalZip":"184276","country":"United Kingdom"},{"customerId":803,"customerName":"Nerea Sparks","phone":"1-166-874-2120","email":"mauris@protonmail.com","address":"Ap #316-199 Risus St.","postalZip":"678162","country":"Norway"},{"customerId":804,"customerName":"Jack Powers","phone":"1-829-458-5289","email":"accumsan.interdum@icloud.couk","address":"4061 Amet Av.","postalZip":"85876","country":"Mexico"},{"customerId":805,"customerName":"Haley Garcia","phone":"1-967-828-8134","email":"cras.vulputate.velit@icloud.com","address":"Ap #795-2694 Blandit. Street","postalZip":"70786","country":"Brazil"},{"customerId":806,"customerName":"Knox Madden","phone":"(451) 576-9610","email":"varius@protonmail.org","address":"P.O. Box 852, 9518 Maecenas Rd.","postalZip":"6897","country":"Chile"},{"customerId":807,"customerName":"Sacha Morin","phone":"1-462-304-0622","email":"vehicula.pellentesque.tincidunt@aol.edu","address":"9224 Non, Ave","postalZip":"54356","country":"Brazil"},{"customerId":808,"customerName":"Quon Short","phone":"1-777-131-3837","email":"parturient.montes@protonmail.edu","address":"Ap #175-5392 Et, Avenue","postalZip":"311598","country":"Turkey"},{"customerId":809,"customerName":"Imani Giles","phone":"1-544-870-1471","email":"viverra.donec@protonmail.edu","address":"241-4421 Mauris St.","postalZip":"626817","country":"Pakistan"},{"customerId":810,"customerName":"Aurelia Foreman","phone":"1-315-273-2481","email":"elit.sed.consequat@hotmail.ca","address":"848-6809 Primis Rd.","postalZip":"897573","country":"Nigeria"},{"customerId":811,"customerName":"Axel Brooks","phone":"(256) 312-8477","email":"fringilla.mi.lacinia@outlook.org","address":"611-1564 Aliquam Rd.","postalZip":"15461","country":"Pakistan"},{"customerId":812,"customerName":"Alexander Snyder","phone":"(131) 112-1368","email":"aliquet.lobortis.nisi@yahoo.edu","address":"P.O. Box 903, 4493 Auctor Rd.","postalZip":"381361","country":"Netherlands"},{"customerId":813,"customerName":"Priscilla Meadows","phone":"(627) 987-1735","email":"in.cursus@yahoo.org","address":"Ap #698-7856 Ligula Road","postalZip":"661825","country":"Indonesia"},{"customerId":814,"customerName":"Mohammad Anthony","phone":"(167) 228-0486","email":"nec.ante.blandit@icloud.couk","address":"Ap #822-8154 Suspendisse Av.","postalZip":"43572-322","country":"Pakistan"},{"customerId":815,"customerName":"Illana Craig","phone":"(798) 435-2076","email":"posuere.vulputate@hotmail.ca","address":"1300 Eleifend, Street","postalZip":"5122-1837","country":"Brazil"},{"customerId":816,"customerName":"Pamela Haney","phone":"1-247-228-3672","email":"montes@outlook.org","address":"260-6269 Sagittis Rd.","postalZip":"952330","country":"Ireland"},{"customerId":817,"customerName":"Lucas Sargent","phone":"(810) 477-6551","email":"tincidunt.nunc@outlook.com","address":"4814 Amet Av.","postalZip":"31234","country":"Peru"},{"customerId":818,"customerName":"Benedict Carver","phone":"(724) 912-8252","email":"ut.semper.pretium@aol.edu","address":"763-1191 Lectus Road","postalZip":"7822","country":"Nigeria"},{"customerId":819,"customerName":"Giacomo Stark","phone":"(312) 765-7184","email":"lorem.semper@protonmail.edu","address":"Ap #453-9694 Placerat, Road","postalZip":"55-36","country":"New Zealand"},{"customerId":820,"customerName":"Emerson Herring","phone":"(778) 540-8339","email":"ultrices.a@hotmail.couk","address":"9245 Massa. St.","postalZip":"84780","country":"Canada"},{"customerId":821,"customerName":"Claudia Hinton","phone":"(549) 452-8272","email":"eget.nisi@hotmail.couk","address":"395-4879 Posuere Av.","postalZip":"74738-315","country":"Netherlands"},{"customerId":822,"customerName":"Desirae Vasquez","phone":"(208) 953-6477","email":"nec.tellus@yahoo.couk","address":"Ap #708-215 Pede. Road","postalZip":"3331","country":"Ireland"},{"customerId":823,"customerName":"Stuart Lewis","phone":"1-919-738-2208","email":"elementum@protonmail.net","address":"P.O. Box 486, 2329 Dictum St.","postalZip":"461808","country":"Mexico"},{"customerId":824,"customerName":"Katell Velasquez","phone":"1-942-515-6421","email":"cum.sociis@yahoo.org","address":"809-6388 Dolor. Ave","postalZip":"3525 QV","country":"Costa Rica"},{"customerId":825,"customerName":"Bianca Riley","phone":"1-961-928-5087","email":"facilisis.suspendisse@aol.couk","address":"2351 Nullam St.","postalZip":"266575","country":"Canada"},{"customerId":826,"customerName":"Sage Knight","phone":"1-458-540-4775","email":"porttitor@icloud.edu","address":"Ap #680-5468 Consequat St.","postalZip":"8227","country":"Netherlands"},{"customerId":827,"customerName":"Ocean Long","phone":"(424) 378-6757","email":"sem.molestie@hotmail.org","address":"P.O. Box 161, 1610 Donec Av.","postalZip":"542154","country":"China"},{"customerId":828,"customerName":"Cassidy Baird","phone":"(185) 545-0611","email":"nibh.sit.amet@outlook.net","address":"Ap #531-3794 Vivamus Ave","postalZip":"14518","country":"Ireland"},{"customerId":829,"customerName":"Sheila Clark","phone":"1-315-340-3827","email":"quisque.nonummy@protonmail.edu","address":"891-7010 Fermentum St.","postalZip":"5458","country":"South Korea"},{"customerId":830,"customerName":"Merrill Mendoza","phone":"1-796-387-2608","email":"non.sapien.molestie@google.org","address":"905-4272 Odio Avenue","postalZip":"281587","country":"New Zealand"},{"customerId":831,"customerName":"Alexis Rogers","phone":"(614) 746-0825","email":"sagittis.semper@google.edu","address":"9027 Nunc Avenue","postalZip":"53731","country":"India"},{"customerId":832,"customerName":"Jerome Dudley","phone":"1-822-174-5274","email":"quis@aol.org","address":"Ap #370-3923 Arcu. Av.","postalZip":"6170","country":"South Korea"},{"customerId":833,"customerName":"Felix Ayers","phone":"1-760-107-8310","email":"lorem.ipsum@outlook.ca","address":"719-7108 Nunc Ave","postalZip":"5464","country":"Canada"},{"customerId":834,"customerName":"Emerson Hartman","phone":"(856) 922-7278","email":"tincidunt.dui@hotmail.edu","address":"3703 Nec, Rd.","postalZip":"625522","country":"United States"},{"customerId":835,"customerName":"Evan Decker","phone":"1-593-244-9271","email":"adipiscing.fringilla@protonmail.net","address":"889-4084 Donec St.","postalZip":"39112","country":"Pakistan"},{"customerId":836,"customerName":"Cecilia Hickman","phone":"1-974-482-7515","email":"arcu.ac@protonmail.couk","address":"Ap #130-7762 Orci Rd.","postalZip":"36396","country":"South Africa"},{"customerId":837,"customerName":"Brynn Lawson","phone":"1-247-415-5994","email":"ornare.egestas@google.ca","address":"375-6552 Lorem Rd.","postalZip":"52726-88363","country":"Sweden"},{"customerId":838,"customerName":"Debra Lewis","phone":"1-641-381-8565","email":"libero.et.tristique@yahoo.net","address":"628-1249 Dolor Avenue","postalZip":"115819","country":"Norway"},{"customerId":839,"customerName":"Samuel Holt","phone":"(512) 274-3759","email":"vel@protonmail.com","address":"3363 Amet Rd.","postalZip":"5440","country":"Philippines"},{"customerId":840,"customerName":"Moana Mcintosh","phone":"(314) 630-6702","email":"duis.gravida.praesent@yahoo.net","address":"8414 Convallis St.","postalZip":"50119","country":"Vietnam"},{"customerId":841,"customerName":"Kerry Walls","phone":"(555) 885-6918","email":"magna.ut@hotmail.net","address":"703-5970 Tristique Avenue","postalZip":"JS8 8ZE","country":"Philippines"},{"customerId":842,"customerName":"McKenzie Castillo","phone":"(262) 547-3385","email":"ac.arcu.nunc@hotmail.couk","address":"Ap #616-9585 Varius. Road","postalZip":"47163","country":"Chile"},{"customerId":843,"customerName":"Zia Marshall","phone":"(830) 836-2689","email":"enim@aol.ca","address":"Ap #524-9069 Nulla Rd.","postalZip":"327185","country":"New Zealand"},{"customerId":844,"customerName":"Daquan Conrad","phone":"1-838-536-5118","email":"urna@google.org","address":"4082 Metus Ave","postalZip":"46445-67493","country":"Peru"},{"customerId":845,"customerName":"Warren Tyler","phone":"1-453-673-7100","email":"elit.curabitur@icloud.com","address":"652-3013 At, Rd.","postalZip":"34141","country":"India"},{"customerId":846,"customerName":"Nero Allen","phone":"(670) 446-3652","email":"id@yahoo.ca","address":"101-7152 Eu, Av.","postalZip":"3302","country":"France"},{"customerId":847,"customerName":"Renee Avila","phone":"1-806-978-6067","email":"sapien.molestie@icloud.ca","address":"834-9784 Dis Rd.","postalZip":"89711-812","country":"Costa Rica"},{"customerId":848,"customerName":"Kylan Warren","phone":"1-231-558-4253","email":"fusce@protonmail.couk","address":"1007 Velit. Av.","postalZip":"51206","country":"Norway"},{"customerId":849,"customerName":"Chelsea Best","phone":"(665) 586-1871","email":"neque@google.couk","address":"674-5498 At St.","postalZip":"2559-3940","country":"Singapore"},{"customerId":850,"customerName":"Juliet Hansen","phone":"1-751-353-7508","email":"egestas.a@aol.net","address":"908-9856 Laoreet Ave","postalZip":"437630","country":"India"},{"customerId":851,"customerName":"Emerson Flores","phone":"(842) 341-9728","email":"bibendum.sed@icloud.net","address":"409-6884 Ipsum Road","postalZip":"6975-8454","country":"Pakistan"},{"customerId":852,"customerName":"Jasmine Conway","phone":"(830) 723-0622","email":"pellentesque@google.edu","address":"P.O. Box 238, 1636 Ridiculus Rd.","postalZip":"06889","country":"South Korea"},{"customerId":853,"customerName":"Kim Strong","phone":"(255) 458-6411","email":"vitae.sodales@yahoo.com","address":"6054 Integer Rd.","postalZip":"8456-0817","country":"India"},{"customerId":854,"customerName":"Josiah Sanders","phone":"(234) 920-3784","email":"non@aol.couk","address":"Ap #370-7210 Magna. Ave","postalZip":"8360","country":"Poland"},{"customerId":855,"customerName":"Eugenia Harrison","phone":"1-535-715-1251","email":"interdum.feugiat@yahoo.com","address":"1740 Neque. St.","postalZip":"94176","country":"Brazil"},{"customerId":856,"customerName":"Baker Herring","phone":"(497) 584-8574","email":"a.auctor.non@yahoo.ca","address":"Ap #128-1480 Sit Road","postalZip":"30207","country":"Brazil"},{"customerId":857,"customerName":"Wynne Rodriquez","phone":"1-623-964-7218","email":"non@protonmail.org","address":"889-8829 Cras Road","postalZip":"17387","country":"Pakistan"},{"customerId":858,"customerName":"Mollie Harrell","phone":"1-482-630-3926","email":"felis.eget.varius@icloud.ca","address":"Ap #366-9332 Et, Ave","postalZip":"641087","country":"Brazil"},{"customerId":859,"customerName":"Colby Miranda","phone":"1-775-556-5921","email":"erat.etiam.vestibulum@yahoo.net","address":"5333 Egestas St.","postalZip":"568221","country":"Belgium"},{"customerId":860,"customerName":"Olympia Bowen","phone":"1-601-957-5517","email":"arcu.vel.quam@aol.org","address":"P.O. Box 289, 1594 Et, Av.","postalZip":"1577","country":"Brazil"},{"customerId":861,"customerName":"Prescott French","phone":"1-257-342-1139","email":"malesuada@hotmail.ca","address":"P.O. Box 595, 3504 Posuere Road","postalZip":"4364","country":"Mexico"},{"customerId":862,"customerName":"Simone Compton","phone":"(893) 915-7716","email":"suspendisse@outlook.net","address":"135-3881 Elit. Road","postalZip":"593220","country":"Australia"},{"customerId":863,"customerName":"Jared Duffy","phone":"1-857-779-6827","email":"convallis.ante@yahoo.org","address":"Ap #225-6226 Phasellus Av.","postalZip":"5248","country":"Australia"},{"customerId":864,"customerName":"Armand Baird","phone":"1-868-386-7557","email":"placerat.augue@hotmail.org","address":"P.O. Box 795, 5865 Quis Ave","postalZip":"27354","country":"Mexico"},{"customerId":865,"customerName":"Isaiah Woodard","phone":"(972) 736-5497","email":"quis.diam@outlook.couk","address":"785-3996 Mi. Street","postalZip":"11041","country":"Singapore"},{"customerId":866,"customerName":"Lars Hart","phone":"1-320-941-1073","email":"sapien@google.couk","address":"Ap #191-3940 Nec Rd.","postalZip":"72957","country":"China"},{"customerId":867,"customerName":"Zenia Joyner","phone":"(358) 582-3514","email":"magna.ut@icloud.couk","address":"1620 Nonummy. St.","postalZip":"7672","country":"Vietnam"},{"customerId":868,"customerName":"Kylan Stevens","phone":"1-625-591-6631","email":"pellentesque@aol.net","address":"8512 Diam Street","postalZip":"4327","country":"Pakistan"},{"customerId":869,"customerName":"Eric Moss","phone":"1-552-565-1277","email":"varius.ultrices.mauris@aol.ca","address":"Ap #632-7134 A St.","postalZip":"9771","country":"Turkey"},{"customerId":870,"customerName":"Jacob Banks","phone":"(727) 919-4579","email":"molestie@icloud.net","address":"Ap #827-3069 Diam St.","postalZip":"9648 TQ","country":"France"},{"customerId":871,"customerName":"Moana Stark","phone":"1-813-722-1263","email":"molestie.pharetra.nibh@protonmail.edu","address":"Ap #791-2094 A Av.","postalZip":"27580","country":"Colombia"},{"customerId":872,"customerName":"Amaya Palmer","phone":"1-873-252-3643","email":"sapien@icloud.edu","address":"527-2942 Consequat Av.","postalZip":"580131","country":"Mexico"},{"customerId":873,"customerName":"Hollee Duncan","phone":"(625) 822-8336","email":"nunc.sed@aol.net","address":"P.O. Box 610, 8482 Auctor. Avenue","postalZip":"68798","country":"Ukraine"},{"customerId":874,"customerName":"Isabella Schmidt","phone":"1-777-838-7484","email":"donec.egestas@google.couk","address":"8838 Ipsum. Av.","postalZip":"AI67 1UV","country":"Sweden"},{"customerId":875,"customerName":"Mason Pruitt","phone":"(645) 751-8778","email":"blandit.nam@hotmail.ca","address":"9611 Euismod St.","postalZip":"49-617","country":"Netherlands"},{"customerId":876,"customerName":"Candice Glover","phone":"(356) 348-3131","email":"curabitur.ut@hotmail.ca","address":"405-9717 Integer Av.","postalZip":"9657","country":"Sweden"},{"customerId":877,"customerName":"Hamilton Park","phone":"(142) 125-5266","email":"sit.amet@outlook.couk","address":"Ap #148-8251 Donec Road","postalZip":"8559","country":"Spain"},{"customerId":878,"customerName":"Finn Hardy","phone":"(925) 523-6709","email":"phasellus.in@hotmail.com","address":"P.O. Box 802, 3447 Vel Av.","postalZip":"1619","country":"United Kingdom"},{"customerId":879,"customerName":"Garrison Best","phone":"(340) 332-7016","email":"phasellus.vitae@aol.edu","address":"6526 Vestibulum Road","postalZip":"632215","country":"Australia"},{"customerId":880,"customerName":"Shelly Landry","phone":"1-397-259-9786","email":"non@protonmail.couk","address":"Ap #345-1957 Fringilla Av.","postalZip":"6285 JI","country":"Pakistan"},{"customerId":881,"customerName":"Stacey Walter","phone":"1-685-786-8947","email":"in.scelerisque@aol.net","address":"337-5711 Convallis Avenue","postalZip":"748917","country":"Canada"},{"customerId":882,"customerName":"Rhonda Chambers","phone":"(781) 268-1152","email":"a@aol.ca","address":"936-5244 Placerat Road","postalZip":"56371-69464","country":"United Kingdom"},{"customerId":883,"customerName":"Virginia Norman","phone":"1-907-553-9287","email":"lectus@yahoo.net","address":"Ap #944-7355 Sit Avenue","postalZip":"4328","country":"Philippines"},{"customerId":884,"customerName":"Roary Reese","phone":"(228) 767-1658","email":"justo.praesent@outlook.edu","address":"252-3778 Duis Av.","postalZip":"3885","country":"China"},{"customerId":885,"customerName":"Macey Young","phone":"(332) 788-9582","email":"sed.molestie@yahoo.couk","address":"547-9496 Quis St.","postalZip":"362467","country":"Turkey"},{"customerId":886,"customerName":"Xander Andrews","phone":"1-412-136-2272","email":"neque@outlook.net","address":"Ap #469-2682 Enim St.","postalZip":"694036","country":"United States"},{"customerId":887,"customerName":"Giacomo Santana","phone":"1-243-994-3413","email":"sociis.natoque.penatibus@outlook.org","address":"Ap #520-804 Non Rd.","postalZip":"1922 QJ","country":"Netherlands"},{"customerId":888,"customerName":"Austin Ashley","phone":"(413) 713-1285","email":"eu.enim@aol.ca","address":"864-7367 Tristique Av.","postalZip":"07942-73448","country":"Poland"},{"customerId":889,"customerName":"Kennan Cochran","phone":"1-388-351-9077","email":"penatibus@hotmail.net","address":"259-7129 Dictum Rd.","postalZip":"906305","country":"Poland"},{"customerId":890,"customerName":"Emi Clay","phone":"(254) 847-2864","email":"enim.suspendisse@yahoo.net","address":"6605 In Rd.","postalZip":"07608","country":"China"},{"customerId":891,"customerName":"Hilel Parrish","phone":"1-123-656-0967","email":"tortor.integer.aliquam@google.net","address":"920-9375 Turpis Avenue","postalZip":"3174","country":"United Kingdom"},{"customerId":892,"customerName":"Vera Garrison","phone":"(215) 206-2836","email":"felis.eget@outlook.com","address":"P.O. Box 285, 4574 Libero. Rd.","postalZip":"51208","country":"Australia"},{"customerId":893,"customerName":"Nasim Salas","phone":"1-703-889-1643","email":"eu@outlook.net","address":"Ap #374-9346 Non Rd.","postalZip":"6368","country":"Peru"},{"customerId":894,"customerName":"McKenzie Lloyd","phone":"1-432-573-2779","email":"egestas.a@icloud.edu","address":"127-6709 Nulla Ave","postalZip":"22446","country":"Italy"},{"customerId":895,"customerName":"Isadora Meyer","phone":"1-526-824-5811","email":"ante@hotmail.net","address":"Ap #121-5287 Et Street","postalZip":"977540","country":"Colombia"},{"customerId":896,"customerName":"Thomas Sullivan","phone":"1-747-833-2156","email":"eget.volutpat.ornare@aol.couk","address":"875-6723 Eget, St.","postalZip":"798142","country":"Singapore"},{"customerId":897,"customerName":"Nolan Robles","phone":"1-665-326-8766","email":"metus.vivamus@yahoo.net","address":"Ap #958-8902 Consectetuer Av.","postalZip":"667486","country":"Costa Rica"},{"customerId":898,"customerName":"Armando Bird","phone":"1-270-981-5850","email":"vitae@outlook.com","address":"Ap #174-3966 Posuere Av.","postalZip":"3453","country":"Brazil"},{"customerId":899,"customerName":"Tallulah Kirkland","phone":"(710) 371-8747","email":"turpis.vitae@protonmail.net","address":"Ap #778-7766 Est St.","postalZip":"57311","country":"Indonesia"},{"customerId":900,"customerName":"Laith Bell","phone":"(893) 690-8661","email":"sed.eu.eros@hotmail.com","address":"Ap #325-1564 Ut St.","postalZip":"497439","country":"South Africa"},{"customerId":901,"customerName":"Quon Stephens","phone":"(818) 985-7538","email":"sit.amet@outlook.net","address":"901-7663 Dictum Avenue","postalZip":"38284","country":"Belgium"},{"customerId":902,"customerName":"Shad Chang","phone":"1-527-865-4263","email":"risus.morbi@google.com","address":"623-5201 Aliquet. Av.","postalZip":"48228","country":"Norway"},{"customerId":903,"customerName":"Aurelia Silva","phone":"(839) 527-4353","email":"non.dapibus@google.org","address":"Ap #222-9662 Varius St.","postalZip":"16773","country":"Australia"},{"customerId":904,"customerName":"Forrest Kelley","phone":"1-621-820-6822","email":"et.magnis@outlook.net","address":"7082 Sagittis St.","postalZip":"546966","country":"Ireland"},{"customerId":905,"customerName":"Upton Miles","phone":"1-743-519-6755","email":"elit.erat.vitae@yahoo.edu","address":"P.O. Box 317, 6564 Interdum St.","postalZip":"7957","country":"Austria"},{"customerId":906,"customerName":"Zia Randall","phone":"(288) 382-5107","email":"primis.in@protonmail.net","address":"952-8194 Arcu. Rd.","postalZip":"43263","country":"Singapore"},{"customerId":907,"customerName":"Lacey Maddox","phone":"1-303-603-3635","email":"dolor.tempus@protonmail.org","address":"Ap #608-7831 Facilisis St.","postalZip":"64856","country":"Ireland"},{"customerId":908,"customerName":"Scott Haley","phone":"1-745-309-7551","email":"eu@google.couk","address":"1856 Ac Street","postalZip":"935096","country":"Russian Federation"},{"customerId":909,"customerName":"Maite Dyer","phone":"(254) 654-5465","email":"in.scelerisque@yahoo.ca","address":"Ap #293-7870 Tincidunt St.","postalZip":"76173-41626","country":"Chile"},{"customerId":910,"customerName":"Timon Tanner","phone":"1-533-624-6173","email":"eget.massa@hotmail.org","address":"481-6415 Nascetur St.","postalZip":"85563","country":"France"},{"customerId":911,"customerName":"Caldwell Mcpherson","phone":"1-241-617-6537","email":"elit.sed.consequat@outlook.org","address":"P.O. Box 857, 9466 Ipsum Avenue","postalZip":"3375","country":"Mexico"},{"customerId":912,"customerName":"Clinton Sloan","phone":"1-272-313-5420","email":"turpis.non@icloud.ca","address":"657-8967 Risus. St.","postalZip":"27833","country":"Mexico"},{"customerId":913,"customerName":"Jocelyn Moore","phone":"1-895-833-3862","email":"erat.volutpat@hotmail.com","address":"P.O. Box 469, 1402 At Rd.","postalZip":"69151-88340","country":"China"},{"customerId":914,"customerName":"Lamar Frost","phone":"(781) 854-8743","email":"eu.nibh@outlook.com","address":"6341 At St.","postalZip":"06496","country":"South Africa"},{"customerId":915,"customerName":"Axel Roth","phone":"1-845-403-2013","email":"non.cursus@aol.couk","address":"P.O. Box 162, 6074 Vulputate St.","postalZip":"8434","country":"France"},{"customerId":916,"customerName":"Wade Sloan","phone":"(726) 945-5788","email":"in.magna@google.net","address":"234-4912 Nunc. Road","postalZip":"429441","country":"Austria"},{"customerId":917,"customerName":"Elizabeth Rich","phone":"1-721-199-1325","email":"integer.id.magna@google.org","address":"Ap #205-4303 Natoque Av.","postalZip":"32356","country":"United Kingdom"},{"customerId":918,"customerName":"Buffy Gutierrez","phone":"1-877-762-8235","email":"ac.fermentum.vel@aol.com","address":"700-1480 Est, Rd.","postalZip":"10151","country":"Nigeria"},{"customerId":919,"customerName":"Sara Schneider","phone":"(987) 216-9299","email":"aenean.gravida@hotmail.org","address":"708-7047 Ac Road","postalZip":"7942","country":"Indonesia"},{"customerId":920,"customerName":"Colton Jefferson","phone":"(580) 735-6818","email":"nisl.nulla@hotmail.net","address":"1117 Parturient Ave","postalZip":"73725","country":"Russian Federation"},{"customerId":921,"customerName":"Dexter Ochoa","phone":"1-725-148-6256","email":"lacinia.at@yahoo.org","address":"P.O. Box 456, 3422 Sit Ave","postalZip":"1254","country":"France"},{"customerId":922,"customerName":"Adele English","phone":"1-503-633-2654","email":"gravida.molestie@icloud.net","address":"2238 Amet Road","postalZip":"30697","country":"Canada"},{"customerId":923,"customerName":"Omar Mcleod","phone":"1-134-392-7889","email":"laoreet.posuere@google.org","address":"5954 Pede, St.","postalZip":"872786","country":"Vietnam"},{"customerId":924,"customerName":"Ciara Holcomb","phone":"1-583-372-7555","email":"luctus.ut.pellentesque@protonmail.ca","address":"4796 Metus St.","postalZip":"62874","country":"Philippines"},{"customerId":925,"customerName":"Regina Atkinson","phone":"(534) 258-5425","email":"lorem@google.edu","address":"Ap #402-8294 Mauris Ave","postalZip":"15267","country":"Pakistan"},{"customerId":926,"customerName":"Damian Hampton","phone":"(462) 903-4041","email":"tempus.non@icloud.org","address":"Ap #438-7817 Pede Street","postalZip":"6321","country":"Norway"},{"customerId":927,"customerName":"Lavinia Barton","phone":"1-531-751-3961","email":"augue@hotmail.net","address":"Ap #426-4097 Aliquet Rd.","postalZip":"3872","country":"Canada"},{"customerId":928,"customerName":"Orli Lewis","phone":"(473) 492-3227","email":"auctor@aol.org","address":"8765 Egestas St.","postalZip":"42374","country":"Ukraine"},{"customerId":929,"customerName":"Patience Maxwell","phone":"1-443-417-6659","email":"tempus.risus@outlook.ca","address":"615-716 A, St.","postalZip":"747669","country":"Spain"},{"customerId":930,"customerName":"Urielle Mckinney","phone":"1-587-151-6352","email":"dui.cum@outlook.ca","address":"Ap #876-9997 Ac Avenue","postalZip":"5325","country":"Peru"},{"customerId":931,"customerName":"Sade Tran","phone":"1-508-329-7233","email":"ipsum.cursus@aol.edu","address":"P.O. Box 807, 5999 Vitae, Road","postalZip":"53736-56842","country":"Ireland"},{"customerId":932,"customerName":"Graham Morales","phone":"(993) 262-1871","email":"arcu.eu.odio@yahoo.edu","address":"Ap #711-5399 Arcu. St.","postalZip":"54-235","country":"Poland"},{"customerId":933,"customerName":"Merrill Booth","phone":"(969) 655-6452","email":"massa@yahoo.edu","address":"3631 Libero St.","postalZip":"485279","country":"United Kingdom"},{"customerId":934,"customerName":"Quin Farley","phone":"1-427-843-1463","email":"malesuada@yahoo.edu","address":"933-1916 Donec St.","postalZip":"34864","country":"China"},{"customerId":935,"customerName":"Chase Jordan","phone":"1-366-526-4663","email":"dolor.elit.pellentesque@yahoo.ca","address":"P.O. Box 163, 9960 Pellentesque Road","postalZip":"04599-64083","country":"United States"},{"customerId":936,"customerName":"Travis Walters","phone":"1-831-614-0583","email":"erat.vel@protonmail.org","address":"P.O. Box 848, 5042 In Av.","postalZip":"728258","country":"China"},{"customerId":937,"customerName":"Aspen Campbell","phone":"1-985-344-7859","email":"mus.aenean@yahoo.couk","address":"533 Ipsum Avenue","postalZip":"927535","country":"Peru"},{"customerId":938,"customerName":"Graham Mcmahon","phone":"(124) 415-1304","email":"maecenas@protonmail.edu","address":"Ap #582-5744 Nec Rd.","postalZip":"882466","country":"Colombia"},{"customerId":939,"customerName":"Francis Evans","phone":"(521) 395-7885","email":"sem.nulla.interdum@protonmail.com","address":"811-190 Non Rd.","postalZip":"47576","country":"Netherlands"},{"customerId":940,"customerName":"Martha Lee","phone":"(300) 237-1457","email":"fringilla.ornare@google.net","address":"Ap #926-7942 Est. Ave","postalZip":"851530","country":"South Africa"},{"customerId":941,"customerName":"Helen Foley","phone":"1-609-820-7112","email":"id.ante@outlook.net","address":"9531 Non Ave","postalZip":"46431-684","country":"Indonesia"},{"customerId":942,"customerName":"Zeus Byers","phone":"1-613-708-2182","email":"id.sapien@hotmail.edu","address":"9951 Consequat St.","postalZip":"62922","country":"South Korea"},{"customerId":943,"customerName":"Marsden Norman","phone":"1-341-273-4286","email":"ipsum.nunc@google.couk","address":"Ap #795-1007 Facilisis Avenue","postalZip":"44277","country":"China"},{"customerId":944,"customerName":"Gabriel Melendez","phone":"(770) 224-3114","email":"arcu.ac@outlook.couk","address":"Ap #155-1057 Vel Road","postalZip":"519282","country":"Sweden"},{"customerId":945,"customerName":"Macaulay Dalton","phone":"(551) 710-9454","email":"ornare.elit@aol.net","address":"330-4789 Scelerisque Street","postalZip":"344643","country":"Mexico"},{"customerId":946,"customerName":"Indira Larson","phone":"(612) 289-2228","email":"egestas.sed@outlook.couk","address":"Ap #694-987 Lorem Avenue","postalZip":"J1M 6S6","country":"Mexico"},{"customerId":947,"customerName":"Lisandra Jones","phone":"1-245-157-4874","email":"tempus.eu@aol.com","address":"9993 Faucibus Ave","postalZip":"30387","country":"France"},{"customerId":948,"customerName":"Bruce Abbott","phone":"(200) 764-1300","email":"lorem.fringilla@hotmail.com","address":"P.O. Box 307, 208 Enim. Rd.","postalZip":"34587","country":"Norway"},{"customerId":949,"customerName":"Amos Gibbs","phone":"1-836-859-9683","email":"nec.urna@google.ca","address":"954-2928 Eu, Street","postalZip":"89445-593","country":"France"},{"customerId":950,"customerName":"Brenda Dejesus","phone":"(768) 867-6715","email":"at.sem@icloud.com","address":"P.O. Box 525, 3212 Aliquet Avenue","postalZip":"11951","country":"Russian Federation"},{"customerId":951,"customerName":"Madonna Aguirre","phone":"1-958-725-7792","email":"aliquam.nec.enim@hotmail.ca","address":"8532 Inceptos St.","postalZip":"162175","country":"South Africa"},{"customerId":952,"customerName":"Adria Wells","phone":"1-274-813-1556","email":"faucibus@icloud.edu","address":"849-4155 Mollis. Avenue","postalZip":"41918","country":"Poland"},{"customerId":953,"customerName":"Ayanna Case","phone":"1-230-785-5557","email":"arcu.iaculis.enim@outlook.edu","address":"373-2601 Consectetuer Rd.","postalZip":"612727","country":"Mexico"},{"customerId":954,"customerName":"Dawn Rhodes","phone":"1-602-268-1478","email":"massa.rutrum@icloud.ca","address":"P.O. Box 708, 6403 Conubia Road","postalZip":"65888","country":"Brazil"},{"customerId":955,"customerName":"Kelly Delacruz","phone":"1-413-974-6640","email":"elit.elit@yahoo.net","address":"6302 Scelerisque Ave","postalZip":"4437","country":"Ukraine"},{"customerId":956,"customerName":"Fatima Parsons","phone":"1-453-618-5576","email":"lobortis@hotmail.com","address":"P.O. Box 126, 3973 Ante St.","postalZip":"65221-108","country":"Australia"},{"customerId":957,"customerName":"Stone Christian","phone":"1-853-758-5363","email":"consectetuer.ipsum@protonmail.ca","address":"Ap #604-6420 Nunc St.","postalZip":"97748","country":"Norway"},{"customerId":958,"customerName":"Philip Mejia","phone":"1-836-348-1421","email":"est.mollis.non@outlook.org","address":"P.O. Box 875, 7017 Vel St.","postalZip":"2518","country":"South Korea"},{"customerId":959,"customerName":"Xantha Burnett","phone":"(950) 347-1125","email":"nibh@google.edu","address":"144-6941 Sapien, Rd.","postalZip":"1112","country":"Peru"},{"customerId":960,"customerName":"Kameko Collier","phone":"1-920-939-8935","email":"luctus.felis.purus@aol.ca","address":"P.O. Box 984, 1468 Parturient Rd.","postalZip":"5676","country":"Mexico"},{"customerId":961,"customerName":"Holmes Butler","phone":"1-161-335-8829","email":"sem.magna@google.net","address":"943 Ut, St.","postalZip":"64877","country":"Spain"},{"customerId":962,"customerName":"Olivia Gallagher","phone":"1-868-686-0406","email":"ac.mi@icloud.net","address":"P.O. Box 740, 6114 Adipiscing St.","postalZip":"7271","country":"Netherlands"},{"customerId":963,"customerName":"Kelsey Moran","phone":"(453) 764-1048","email":"est@aol.net","address":"605-1372 Sodales Avenue","postalZip":"48430","country":"India"},{"customerId":964,"customerName":"Gray Rollins","phone":"1-918-258-3389","email":"eget.lacus@aol.ca","address":"Ap #903-7570 Lectus Av.","postalZip":"V7 7SH","country":"Pakistan"},{"customerId":965,"customerName":"Martena Ochoa","phone":"(561) 338-6364","email":"arcu@protonmail.org","address":"157-5745 Ipsum Rd.","postalZip":"460925","country":"Pakistan"},{"customerId":966,"customerName":"Hamilton Morin","phone":"(503) 821-2144","email":"integer.urna@aol.net","address":"242-6500 Cras Avenue","postalZip":"15523","country":"China"},{"customerId":967,"customerName":"Cecilia Marks","phone":"(835) 984-3049","email":"nec@yahoo.net","address":"P.O. Box 917, 3781 Phasellus Street","postalZip":"94686","country":"Pakistan"},{"customerId":968,"customerName":"Jessamine Saunders","phone":"(585) 363-1684","email":"in.lobortis.tellus@yahoo.couk","address":"Ap #947-7107 Molestie Rd.","postalZip":"353800","country":"Spain"},{"customerId":969,"customerName":"Kennan Alston","phone":"1-439-615-5885","email":"lobortis.quis.pede@hotmail.org","address":"Ap #585-6008 Natoque Av.","postalZip":"42433","country":"Netherlands"},{"customerId":970,"customerName":"Frances Mcmillan","phone":"(484) 538-7663","email":"erat.volutpat.nulla@aol.com","address":"1911 Phasellus Road","postalZip":"76L 8W8","country":"India"},{"customerId":971,"customerName":"Inga Bauer","phone":"(302) 374-9235","email":"ipsum.primis@aol.net","address":"Ap #774-3768 Ridiculus Avenue","postalZip":"15052","country":"Spain"},{"customerId":972,"customerName":"Anthony Blevins","phone":"1-556-833-4262","email":"vitae.odio@outlook.com","address":"6624 Vivamus Street","postalZip":"191871","country":"Costa Rica"},{"customerId":973,"customerName":"Ann Mason","phone":"(231) 641-4517","email":"sed.molestie.sed@yahoo.ca","address":"705-8650 Cursus St.","postalZip":"426539","country":"Belgium"},{"customerId":974,"customerName":"Ursa Stafford","phone":"(488) 575-8823","email":"libero@icloud.ca","address":"3815 Dignissim. St.","postalZip":"77-498","country":"Australia"},{"customerId":975,"customerName":"Jonah Duncan","phone":"(462) 764-2513","email":"condimentum.eget@protonmail.net","address":"789-7025 Dolor Av.","postalZip":"44100-948","country":"Australia"},{"customerId":976,"customerName":"Rogan Calhoun","phone":"1-473-293-9553","email":"vel.turpis@google.net","address":"Ap #212-936 Nunc. Road","postalZip":"85607","country":"Brazil"},{"customerId":977,"customerName":"Thane Rivera","phone":"1-718-239-6854","email":"ultrices@google.org","address":"4381 Pede Street","postalZip":"749581","country":"Belgium"},{"customerId":978,"customerName":"Justina Gay","phone":"(937) 387-5284","email":"cursus.et@hotmail.org","address":"3656 Mus. Rd.","postalZip":"14487","country":"Chile"},{"customerId":979,"customerName":"Adria Banks","phone":"1-859-887-5987","email":"dolor.sit@outlook.edu","address":"216-4692 Duis St.","postalZip":"86436","country":"South Korea"},{"customerId":980,"customerName":"Kelsey Moran","phone":"(478) 819-4431","email":"metus.sit@protonmail.com","address":"Ap #541-5522 Lacus. Street","postalZip":"82117","country":"Peru"},{"customerId":981,"customerName":"Cynthia Meyers","phone":"1-292-171-4752","email":"risus.at@aol.couk","address":"257-7916 Nullam Street","postalZip":"3456","country":"Poland"},{"customerId":982,"customerName":"Arthur Robbins","phone":"(223) 239-3905","email":"euismod.enim@yahoo.edu","address":"Ap #687-7105 At Ave","postalZip":"12866","country":"Indonesia"},{"customerId":983,"customerName":"Quemby Macdonald","phone":"(547) 527-5482","email":"et@google.ca","address":"8385 Leo Av.","postalZip":"6980","country":"Italy"},{"customerId":984,"customerName":"Gage Nicholson","phone":"(524) 160-7989","email":"pellentesque.tellus@outlook.org","address":"P.O. Box 395, 230 Nunc St.","postalZip":"710437","country":"Colombia"},{"customerId":985,"customerName":"Charles Mccullough","phone":"1-427-715-4713","email":"tempor.diam@icloud.ca","address":"526-8007 Ut Rd.","postalZip":"535843","country":"Ireland"},{"customerId":986,"customerName":"Holly Bolton","phone":"(374) 520-7920","email":"in.faucibus.orci@aol.ca","address":"Ap #713-4176 Eleifend. St.","postalZip":"87493","country":"Belgium"},{"customerId":987,"customerName":"Lysandra Mcpherson","phone":"1-403-226-4192","email":"vulputate@google.couk","address":"4290 Ligula Street","postalZip":"42-13","country":"Australia"},{"customerId":988,"customerName":"Dora Rollins","phone":"(744) 645-0189","email":"metus@google.net","address":"144-3498 Sem, St.","postalZip":"8725 WM","country":"Norway"},{"customerId":989,"customerName":"Germane Clay","phone":"1-401-848-6048","email":"orci.luctus@icloud.com","address":"4451 Pharetra Road","postalZip":"73-094","country":"Singapore"},{"customerId":990,"customerName":"Hu Carrillo","phone":"(803) 178-4184","email":"ultrices.mauris@google.com","address":"Ap #570-6629 Non, Avenue","postalZip":"399243","country":"Brazil"},{"customerId":991,"customerName":"Ezekiel Webster","phone":"1-572-614-4388","email":"commodo.auctor.velit@hotmail.org","address":"Ap #935-3203 Vivamus Rd.","postalZip":"3527","country":"Ukraine"},{"customerId":992,"customerName":"Lacy Snow","phone":"(743) 434-6333","email":"augue.porttitor@hotmail.ca","address":"522-4690 Purus. Street","postalZip":"493283","country":"Vietnam"},{"customerId":993,"customerName":"Quin Joyner","phone":"1-185-311-5577","email":"non.enim@yahoo.couk","address":"705-2787 Nulla. Rd.","postalZip":"11647-35869","country":"Italy"},{"customerId":994,"customerName":"Fiona Mathis","phone":"1-824-222-5041","email":"libero.proin@google.edu","address":"P.O. Box 647, 4198 Sed Rd.","postalZip":"597431","country":"France"},{"customerId":995,"customerName":"Basia Skinner","phone":"(555) 185-9729","email":"nunc.nulla@outlook.ca","address":"9754 Proin Street","postalZip":"225528","country":"France"},{"customerId":996,"customerName":"Hashim Mcbride","phone":"(346) 751-6442","email":"metus@outlook.couk","address":"Ap #838-4039 Lobortis, St.","postalZip":"53-024","country":"Norway"},{"customerId":997,"customerName":"Rooney Lynch","phone":"1-487-422-2875","email":"aliquam.arcu@aol.ca","address":"648-2993 Sed, Road","postalZip":"6513","country":"Ireland"},{"customerId":998,"customerName":"Leila Fox","phone":"1-341-444-3115","email":"sem@outlook.edu","address":"Ap #459-9582 Non Rd.","postalZip":"81222","country":"Pakistan"},{"customerId":999,"customerName":"Brynne Branch","phone":"(288) 310-8139","email":"non.luctus@yahoo.org","address":"Ap #177-7697 Scelerisque Road","postalZip":"52949","country":"Italy"},{"customerId":1000,"customerName":"Keane Shelton","phone":"1-346-394-1095","email":"duis.cursus@aol.ca","address":"P.O. Box 746, 9534 Id, Rd.","postalZip":"72-99","country":"Sweden"},{"customerId":1001,"customerName":"Ariana Gallagher","phone":"(641) 245-7160","email":"nunc.est.mollis@hotmail.ca","address":"957-8413 Tincidunt, Ave","postalZip":"13388-198","country":"Turkey"},{"customerId":1002,"customerName":"Dieter Cleveland","phone":"1-241-428-6807","email":"tortor.integer@yahoo.ca","address":"Ap #877-9843 Ligula Road","postalZip":"1582-2940","country":"Netherlands"},{"customerId":1003,"customerName":"Rahim Tanner","phone":"1-570-418-6621","email":"donec.fringilla@icloud.org","address":"6638 Orci Avenue","postalZip":"258854","country":"China"},{"customerId":1004,"customerName":"Brady Ruiz","phone":"1-354-841-1142","email":"iaculis.enim@yahoo.couk","address":"4636 Donec Road","postalZip":"87618","country":"Costa Rica"},{"customerId":1005,"customerName":"Dora Walsh","phone":"1-256-412-0822","email":"nunc.risus.varius@icloud.org","address":"576-5293 Velit St.","postalZip":"68582","country":"Ireland"},{"customerId":1006,"customerName":"Ora Ochoa","phone":"(364) 571-9386","email":"nibh.aliquam@protonmail.com","address":"7788 Sed Avenue","postalZip":"67334","country":"South Korea"},{"customerId":1007,"customerName":"Moses Blair","phone":"1-220-451-1713","email":"commodo.at.libero@aol.ca","address":"928-296 Sit St.","postalZip":"174531","country":"Turkey"},{"customerId":1008,"customerName":"Jenna Clay","phone":"1-844-514-1457","email":"at@aol.net","address":"712-4619 Mauris, Rd.","postalZip":"912471","country":"Poland"},{"customerId":1009,"customerName":"Quynn Contreras","phone":"1-177-616-7856","email":"donec.nibh@yahoo.ca","address":"4981 Commodo Avenue","postalZip":"023512","country":"Colombia"},{"customerId":1010,"customerName":"Jeanette Gray","phone":"(762) 811-9255","email":"nullam@aol.org","address":"522-5179 Neque St.","postalZip":"R1Y 2KI","country":"Pakistan"},{"customerId":1011,"customerName":"Minerva Shaw","phone":"1-531-439-8381","email":"et.netus@outlook.ca","address":"885-6589 Suspendisse Rd.","postalZip":"1873","country":"Ukraine"},{"customerId":1012,"customerName":"Lamar Maddox","phone":"(530) 332-4351","email":"sed.sem@aol.edu","address":"840-1307 Mauris Street","postalZip":"91128-55184","country":"New Zealand"},{"customerId":1013,"customerName":"Gregory Gomez","phone":"(891) 431-4536","email":"fermentum.fermentum@protonmail.ca","address":"P.O. Box 969, 845 Pharetra Rd.","postalZip":"03115","country":"Singapore"},{"customerId":1014,"customerName":"Cody Holden","phone":"(550) 427-4608","email":"gravida.nunc.sed@icloud.net","address":"742-9148 Aenean St.","postalZip":"25260","country":"Colombia"},{"customerId":1015,"customerName":"Emmanuel Riggs","phone":"1-912-331-6058","email":"taciti.sociosqu@yahoo.edu","address":"Ap #971-8106 Nec Av.","postalZip":"622627","country":"Ireland"},{"customerId":1016,"customerName":"Caldwell Duran","phone":"1-468-665-2707","email":"egestas.hendrerit@protonmail.net","address":"1006 Proin Avenue","postalZip":"50207","country":"Peru"},{"customerId":1017,"customerName":"Daniel Mcdonald","phone":"(543) 736-7397","email":"accumsan.sed@google.org","address":"8050 Vivamus Av.","postalZip":"C3T 9V1","country":"South Korea"},{"customerId":1018,"customerName":"Oprah Hebert","phone":"(325) 345-6944","email":"vehicula.aliquet@hotmail.ca","address":"P.O. Box 516, 8769 Fames Av.","postalZip":"2423","country":"Ukraine"},{"customerId":1019,"customerName":"Cadman Conrad","phone":"(728) 281-1819","email":"volutpat.nunc.sit@hotmail.net","address":"Ap #590-914 Velit. Street","postalZip":"9805 RI","country":"Singapore"},{"customerId":1020,"customerName":"Kasimir Cortez","phone":"1-206-137-2017","email":"ante.lectus@google.com","address":"351-6955 Posuere, Av.","postalZip":"826698","country":"Colombia"},{"customerId":1021,"customerName":"Cynthia Boone","phone":"(508) 698-5167","email":"sed.orci@aol.net","address":"1708 Tincidunt Ave","postalZip":"44341-764","country":"Mexico"},{"customerId":1022,"customerName":"Herman Glass","phone":"1-168-238-3032","email":"mauris@google.com","address":"P.O. Box 206, 2392 Felis Street","postalZip":"56547","country":"Ireland"},{"customerId":1023,"customerName":"Nash English","phone":"(553) 788-2625","email":"et.magnis@yahoo.edu","address":"Ap #508-8133 Ac, Rd.","postalZip":"42-211","country":"Brazil"},{"customerId":1024,"customerName":"Gavin Mcgee","phone":"1-147-539-3812","email":"tempus.scelerisque@protonmail.org","address":"850-422 Feugiat Street","postalZip":"10347-23032","country":"Colombia"},{"customerId":1025,"customerName":"Paul Moss","phone":"(473) 820-2758","email":"eu.odio@google.edu","address":"832-8547 Non Rd.","postalZip":"82761","country":"Sweden"},{"customerId":1026,"customerName":"Marah Summers","phone":"1-445-248-4535","email":"iaculis.aliquet@hotmail.com","address":"P.O. Box 537, 8161 Risus Avenue","postalZip":"72571","country":"Peru"},{"customerId":1027,"customerName":"Hannah Hobbs","phone":"(636) 221-8122","email":"velit@aol.couk","address":"8199 Mattis Avenue","postalZip":"52254","country":"Vietnam"},{"customerId":1028,"customerName":"Ishmael David","phone":"1-634-546-7937","email":"sollicitudin.a@icloud.couk","address":"Ap #630-2933 Amet Av.","postalZip":"9962","country":"New Zealand"},{"customerId":1029,"customerName":"Cassidy Sparks","phone":"1-711-258-2412","email":"eleifend.egestas.sed@hotmail.org","address":"489-3034 Elit, Rd.","postalZip":"4729","country":"Peru"},{"customerId":1030,"customerName":"Mira Holland","phone":"(364) 476-7833","email":"dignissim.maecenas@outlook.edu","address":"164-643 Sed, St.","postalZip":"48024","country":"Peru"},{"customerId":1031,"customerName":"Robert Marquez","phone":"(921) 589-2158","email":"at.sem.molestie@outlook.com","address":"Ap #439-2737 Blandit St.","postalZip":"75-687","country":"France"},{"customerId":1032,"customerName":"Yoko Ashley","phone":"(730) 635-2298","email":"velit.justo.nec@hotmail.com","address":"Ap #373-2310 Sapien, Rd.","postalZip":"1448","country":"Germany"},{"customerId":1033,"customerName":"Joel Jenkins","phone":"(707) 809-3532","email":"maecenas.malesuada@icloud.couk","address":"P.O. Box 129, 7723 Ac Rd.","postalZip":"9486","country":"United Kingdom"},{"customerId":1034,"customerName":"Odette Gallegos","phone":"(851) 787-2816","email":"tincidunt.vehicula.risus@icloud.net","address":"591-844 Fringilla. Road","postalZip":"3047","country":"Pakistan"},{"customerId":1035,"customerName":"Mariko Velazquez","phone":"1-165-379-5034","email":"donec.tempus.lorem@aol.ca","address":"9630 Gravida Road","postalZip":"87735","country":"Singapore"},{"customerId":1036,"customerName":"Cain Beach","phone":"1-588-385-1677","email":"bibendum@aol.edu","address":"P.O. Box 817, 5584 Ipsum Road","postalZip":"68480","country":"Spain"},{"customerId":1037,"customerName":"Sierra Mills","phone":"(726) 555-1837","email":"mauris@google.org","address":"240-2253 Fermentum Rd.","postalZip":"25246-087","country":"Ireland"},{"customerId":1038,"customerName":"Kadeem Richards","phone":"(684) 147-4282","email":"morbi@aol.org","address":"315-1103 Suspendisse Rd.","postalZip":"DM1V 9BE","country":"Spain"},{"customerId":1039,"customerName":"Allistair Rutledge","phone":"(514) 528-5537","email":"mollis.integer@protonmail.net","address":"199-4270 Lobortis Road","postalZip":"88827","country":"Singapore"},{"customerId":1040,"customerName":"Chastity Whitley","phone":"(490) 767-2223","email":"quam.quis@aol.org","address":"Ap #910-8270 Pede Street","postalZip":"29536","country":"Italy"},{"customerId":1041,"customerName":"Beatrice Powers","phone":"1-587-326-9593","email":"velit.eu.sem@protonmail.com","address":"260-8757 Conubia Av.","postalZip":"46-44","country":"Netherlands"},{"customerId":1042,"customerName":"Reese Cohen","phone":"1-363-964-4177","email":"bibendum.fermentum@icloud.ca","address":"P.O. Box 594, 900 Et Ave","postalZip":"831474","country":"Nigeria"},{"customerId":1043,"customerName":"Yael Casey","phone":"(322) 547-1593","email":"consequat.lectus.sit@outlook.org","address":"P.O. Box 811, 9733 Tincidunt Avenue","postalZip":"548718","country":"Nigeria"},{"customerId":1044,"customerName":"Eagan Watts","phone":"(145) 750-8246","email":"egestas.fusce.aliquet@hotmail.edu","address":"P.O. Box 213, 5059 Eu Street","postalZip":"25246-41217","country":"Brazil"},{"customerId":1045,"customerName":"Amber Walters","phone":"1-148-169-2585","email":"massa@hotmail.edu","address":"Ap #420-7879 Vulputate, St.","postalZip":"04734","country":"Norway"},{"customerId":1046,"customerName":"Todd Bradford","phone":"(788) 884-3024","email":"ut.erat@outlook.com","address":"7278 Posuere Ave","postalZip":"781684","country":"China"},{"customerId":1047,"customerName":"Brendan Diaz","phone":"1-826-216-4856","email":"tempus@aol.org","address":"923-6416 Diam Street","postalZip":"03262-31584","country":"Sweden"},{"customerId":1048,"customerName":"Keaton Greer","phone":"(117) 892-7302","email":"nec.urna@outlook.com","address":"Ap #828-6847 Mauris Road","postalZip":"875327","country":"United Kingdom"},{"customerId":1049,"customerName":"Danielle Higgins","phone":"1-575-353-5252","email":"sed.dictum.proin@outlook.org","address":"P.O. Box 609, 8360 Libero Rd.","postalZip":"73660-08243","country":"Indonesia"},{"customerId":1050,"customerName":"Lucius Keith","phone":"(203) 293-5528","email":"nulla.eget.metus@google.couk","address":"616-8765 Turpis. Ave","postalZip":"45511","country":"Peru"},{"customerId":1051,"customerName":"Aspen James","phone":"1-517-328-5524","email":"lorem.fringilla.ornare@google.ca","address":"591-522 Primis Avenue","postalZip":"16341","country":"Netherlands"},{"customerId":1052,"customerName":"Kitra Marshall","phone":"(783) 862-4799","email":"nulla.donec@yahoo.couk","address":"P.O. Box 473, 5243 Aliquam Road","postalZip":"73-56","country":"Indonesia"},{"customerId":1053,"customerName":"Ivana Gibson","phone":"(267) 430-1406","email":"diam@protonmail.edu","address":"Ap #169-612 Accumsan St.","postalZip":"768017","country":"Singapore"},{"customerId":1054,"customerName":"Stacey Pennington","phone":"1-266-858-4381","email":"est.congue@outlook.com","address":"528-9940 Vivamus Rd.","postalZip":"25744","country":"Colombia"},{"customerId":1055,"customerName":"Jin Witt","phone":"(248) 264-8545","email":"vel.est@protonmail.org","address":"Ap #376-7684 Nunc St.","postalZip":"7689","country":"South Africa"},{"customerId":1056,"customerName":"Cody Adams","phone":"1-447-838-3049","email":"elit.fermentum@icloud.net","address":"Ap #690-8326 Velit St.","postalZip":"SP28 9UU","country":"India"},{"customerId":1057,"customerName":"Dora Winters","phone":"(426) 866-7651","email":"risus.quis@outlook.com","address":"7692 Vivamus St.","postalZip":"2742 GW","country":"India"},{"customerId":1058,"customerName":"Alika Noble","phone":"1-763-392-2802","email":"urna.justo@google.com","address":"6135 Velit. St.","postalZip":"905227","country":"China"},{"customerId":1059,"customerName":"Kibo Johnson","phone":"1-864-565-1385","email":"quisque.libero@outlook.net","address":"Ap #702-7679 Ultrices Street","postalZip":"07050","country":"Netherlands"},{"customerId":1060,"customerName":"Rylee Anderson","phone":"1-611-755-1689","email":"libero.et@hotmail.org","address":"P.O. Box 975, 3746 In Street","postalZip":"477914","country":"United States"},{"customerId":1061,"customerName":"Marshall Koch","phone":"(411) 523-4501","email":"nam.consequat.dolor@protonmail.net","address":"Ap #247-5935 Nec Street","postalZip":"446337","country":"United Kingdom"},{"customerId":1062,"customerName":"Alexander Nicholson","phone":"1-569-580-2732","email":"dignissim.maecenas.ornare@icloud.org","address":"986-9730 Molestie. Avenue","postalZip":"33859","country":"Ireland"},{"customerId":1063,"customerName":"Owen Bridges","phone":"1-576-206-1581","email":"lorem.auctor@icloud.edu","address":"Ap #535-4368 Ac Rd.","postalZip":"723362","country":"Ireland"},{"customerId":1064,"customerName":"Jennifer Mosley","phone":"(585) 231-8686","email":"lobortis.quam.a@outlook.ca","address":"P.O. Box 115, 6594 Quis Road","postalZip":"354543","country":"France"},{"customerId":1065,"customerName":"Elijah Randolph","phone":"(202) 442-4167","email":"vulputate.posuere@icloud.org","address":"P.O. Box 164, 5081 Amet Street","postalZip":"49914","country":"France"},{"customerId":1066,"customerName":"Hadley Knox","phone":"(191) 667-1973","email":"consectetuer.adipiscing@protonmail.edu","address":"495-4729 A, Av.","postalZip":"0110","country":"Turkey"},{"customerId":1067,"customerName":"Zelda Stone","phone":"1-558-567-7988","email":"nunc@google.edu","address":"Ap #482-9942 Dui Ave","postalZip":"3613 DE","country":"Mexico"},{"customerId":1068,"customerName":"Tate Mann","phone":"(117) 635-3662","email":"vitae.nibh.donec@protonmail.edu","address":"Ap #590-307 Semper Ave","postalZip":"KP76 6WI","country":"Vietnam"},{"customerId":1069,"customerName":"Elton Gould","phone":"(477) 266-7917","email":"erat.vel.pede@icloud.net","address":"P.O. Box 850, 4739 Consectetuer Road","postalZip":"3493","country":"Vietnam"},{"customerId":1070,"customerName":"Allistair Cohen","phone":"(863) 878-8640","email":"magna.praesent.interdum@protonmail.ca","address":"6475 Laoreet Av.","postalZip":"85794","country":"Philippines"},{"customerId":1071,"customerName":"Kalia Benjamin","phone":"1-853-794-3044","email":"ut.quam.vel@aol.net","address":"348-7185 Parturient St.","postalZip":"646015","country":"Turkey"},{"customerId":1072,"customerName":"Raven Henderson","phone":"(588) 366-6885","email":"integer.aliquam.adipiscing@icloud.edu","address":"Ap #913-7124 Nam Street","postalZip":"61843","country":"Belgium"},{"customerId":1073,"customerName":"Unity Pennington","phone":"(725) 834-8565","email":"nisi.magna@icloud.com","address":"617-6753 Etiam Rd.","postalZip":"S5C 4G0","country":"United Kingdom"},{"customerId":1074,"customerName":"Selma David","phone":"(521) 757-6781","email":"nunc@hotmail.com","address":"5999 Nulla Av.","postalZip":"633676","country":"Sweden"},{"customerId":1075,"customerName":"Mollie Moran","phone":"(543) 252-3367","email":"donec.egestas@icloud.edu","address":"9056 Duis Av.","postalZip":"301876","country":"Australia"},{"customerId":1076,"customerName":"Glenna Sosa","phone":"1-732-431-1548","email":"adipiscing.elit@yahoo.org","address":"507-9280 Auctor Street","postalZip":"36412","country":"Costa Rica"},{"customerId":1077,"customerName":"Daniel Tanner","phone":"1-234-351-8186","email":"suspendisse.commodo.tincidunt@icloud.couk","address":"752 Quis Rd.","postalZip":"23081","country":"Canada"},{"customerId":1078,"customerName":"Alana Herman","phone":"1-856-728-5444","email":"ultrices.posuere@outlook.org","address":"Ap #412-3114 Egestas. Street","postalZip":"181699","country":"Norway"},{"customerId":1079,"customerName":"Chester Bullock","phone":"1-656-895-8798","email":"vel.arcu@icloud.couk","address":"8472 Dolor. Avenue","postalZip":"42826","country":"Netherlands"},{"customerId":1080,"customerName":"Kamal Joyner","phone":"(845) 232-1459","email":"auctor@yahoo.ca","address":"Ap #334-6950 Amet, Rd.","postalZip":"8305","country":"Ukraine"},{"customerId":1081,"customerName":"Hedley Burks","phone":"(335) 570-2917","email":"imperdiet.dictum.magna@google.net","address":"6202 Est, Rd.","postalZip":"53446-285","country":"Australia"},{"customerId":1082,"customerName":"Igor Crosby","phone":"1-777-810-0582","email":"vivamus.rhoncus@icloud.org","address":"Ap #343-5545 Lobortis Avenue","postalZip":"1681-3208","country":"Sweden"},{"customerId":1083,"customerName":"Julian Dodson","phone":"1-906-263-3321","email":"ut@icloud.net","address":"604-4393 Natoque Av.","postalZip":"9431","country":"Peru"},{"customerId":1084,"customerName":"Steven Callahan","phone":"1-868-626-8530","email":"leo@yahoo.ca","address":"P.O. Box 688, 317 Metus Rd.","postalZip":"41466","country":"Russian Federation"},{"customerId":1085,"customerName":"Rosalyn Douglas","phone":"1-848-817-4238","email":"ante.lectus@outlook.edu","address":"368-3802 Aliquam Street","postalZip":"66617-480","country":"Austria"},{"customerId":1086,"customerName":"Raya Gillespie","phone":"(266) 563-1628","email":"vitae.risus@outlook.net","address":"Ap #522-9239 Fusce Road","postalZip":"116166","country":"Netherlands"},{"customerId":1087,"customerName":"Rhea Munoz","phone":"1-614-533-2099","email":"eu@yahoo.couk","address":"Ap #876-5161 Proin Street","postalZip":"4188","country":"United States"},{"customerId":1088,"customerName":"Kylan Brock","phone":"(662) 681-0156","email":"vulputate.risus@google.couk","address":"Ap #468-6891 Cubilia Rd.","postalZip":"30-286","country":"South Africa"},{"customerId":1089,"customerName":"Cairo Roth","phone":"1-617-885-9422","email":"inceptos.hymenaeos.mauris@protonmail.couk","address":"154-7919 Cursus. Street","postalZip":"1926-4231","country":"China"},{"customerId":1090,"customerName":"Amos Barrera","phone":"(629) 636-2417","email":"donec.nibh@protonmail.couk","address":"628-1708 Eget Street","postalZip":"43122","country":"United Kingdom"},{"customerId":1091,"customerName":"Adara Schultz","phone":"(315) 848-4318","email":"sem.molestie.sodales@aol.ca","address":"Ap #658-5506 Vestibulum Rd.","postalZip":"24540","country":"Netherlands"},{"customerId":1092,"customerName":"MacKensie Jacobs","phone":"(757) 258-9474","email":"consequat@hotmail.ca","address":"192-6726 Ipsum. Street","postalZip":"66-736","country":"Brazil"},{"customerId":1093,"customerName":"Lamar Knapp","phone":"1-671-486-7612","email":"nunc.pulvinar@hotmail.ca","address":"Ap #511-9259 Ultricies St.","postalZip":"1128","country":"Vietnam"},{"customerId":1094,"customerName":"Yoshio Noble","phone":"1-128-337-5122","email":"cursus.nunc.mauris@icloud.com","address":"Ap #878-2882 Aliquam Rd.","postalZip":"8266 ZQ","country":"Ireland"},{"customerId":1095,"customerName":"Eve Jarvis","phone":"(515) 785-2254","email":"vel.faucibus.id@hotmail.couk","address":"Ap #630-5639 Mollis Road","postalZip":"724885","country":"Sweden"},{"customerId":1096,"customerName":"Yvette Duke","phone":"1-355-784-3674","email":"pede.praesent@yahoo.net","address":"743-377 Iaculis, Rd.","postalZip":"4258 BV","country":"United States"},{"customerId":1097,"customerName":"Alyssa Hinton","phone":"(872) 832-0260","email":"faucibus.id.libero@yahoo.edu","address":"P.O. Box 589, 8074 Consectetuer Avenue","postalZip":"4233","country":"Mexico"},{"customerId":1098,"customerName":"Hyacinth Stafford","phone":"(634) 554-7716","email":"aenean.euismod@outlook.couk","address":"Ap #223-9590 Id, St.","postalZip":"278437","country":"Sweden"},{"customerId":1099,"customerName":"Cora Madden","phone":"1-877-714-2826","email":"lacus.quisque@yahoo.org","address":"P.O. Box 831, 9368 Est Ave","postalZip":"86745-14284","country":"United States"},{"customerId":1100,"customerName":"Dane Blackburn","phone":"(152) 405-2513","email":"pellentesque.ut@icloud.com","address":"Ap #901-9101 Eget, St.","postalZip":"5567","country":"Colombia"},{"customerId":1101,"customerName":"Melvin Weaver","phone":"(722) 372-6198","email":"ac.arcu@yahoo.edu","address":"Ap #933-3117 Ultricies Avenue","postalZip":"5411","country":"Austria"},{"customerId":1102,"customerName":"Castor Stevenson","phone":"1-956-610-1734","email":"nulla.aliquet@outlook.couk","address":"Ap #210-4589 Non Street","postalZip":"Y7C 6L1","country":"South Africa"},{"customerId":1103,"customerName":"Latifah Boyle","phone":"(268) 358-3508","email":"enim.commodo.hendrerit@yahoo.couk","address":"P.O. Box 675, 5130 Lorem Avenue","postalZip":"2264","country":"Nigeria"},{"customerId":1104,"customerName":"Juliet Roberson","phone":"1-546-184-6608","email":"mauris.ut@icloud.edu","address":"902-8841 Etiam Road","postalZip":"74147","country":"Philippines"},{"customerId":1105,"customerName":"Beatrice Bush","phone":"1-443-678-3571","email":"dapibus.rutrum@yahoo.ca","address":"Ap #104-522 Risus St.","postalZip":"518181","country":"Poland"},{"customerId":1106,"customerName":"Alice Ayala","phone":"1-568-422-7254","email":"dictum.sapien@google.edu","address":"Ap #488-8241 Natoque St.","postalZip":"510030","country":"Chile"},{"customerId":1107,"customerName":"Quentin Santana","phone":"1-662-407-7562","email":"amet.metus@aol.edu","address":"Ap #961-9610 Nullam St.","postalZip":"44814","country":"Pakistan"},{"customerId":1108,"customerName":"Darius Underwood","phone":"1-271-437-4785","email":"aliquam.fringilla@google.com","address":"P.O. Box 578, 4380 Sapien, Street","postalZip":"2894","country":"Poland"},{"customerId":1109,"customerName":"Adrienne Mccullough","phone":"1-445-842-8402","email":"lectus.rutrum.urna@aol.ca","address":"9973 Dui St.","postalZip":"0077-0443","country":"China"},{"customerId":1110,"customerName":"Logan Mcdaniel","phone":"(214) 932-2487","email":"faucibus@yahoo.org","address":"Ap #915-4053 Tellus Rd.","postalZip":"48153","country":"United Kingdom"},{"customerId":1111,"customerName":"Xavier William","phone":"(271) 624-0074","email":"id.magna.et@aol.ca","address":"387-7976 Scelerisque Av.","postalZip":"4688","country":"Brazil"},{"customerId":1112,"customerName":"Wyoming Solomon","phone":"1-724-835-9394","email":"consequat.purus.maecenas@outlook.net","address":"6859 Tempor Avenue","postalZip":"0667","country":"Nigeria"},{"customerId":1113,"customerName":"Lucy Mercado","phone":"1-718-647-2771","email":"ornare.lectus@google.net","address":"388-281 Ut Ave","postalZip":"76182","country":"Italy"},{"customerId":1114,"customerName":"Lee Barry","phone":"(482) 632-4144","email":"arcu.vivamus.sit@icloud.org","address":"Ap #733-294 Donec Ave","postalZip":"5267","country":"Ukraine"},{"customerId":1115,"customerName":"Mallory Meyers","phone":"(845) 369-9308","email":"aliquam.tincidunt@icloud.ca","address":"273-9646 Parturient Ave","postalZip":"68223-16370","country":"Turkey"},{"customerId":1116,"customerName":"Tanek Russo","phone":"1-161-720-6327","email":"orci.tincidunt@aol.net","address":"Ap #621-444 Aliquam Avenue","postalZip":"15882","country":"Belgium"},{"customerId":1117,"customerName":"Fleur Cash","phone":"1-172-397-9439","email":"magna.suspendisse.tristique@protonmail.edu","address":"4428 Pellentesque. Rd.","postalZip":"QG77 5VG","country":"Mexico"},{"customerId":1118,"customerName":"Robert Bray","phone":"(903) 618-3631","email":"non.bibendum@outlook.edu","address":"Ap #208-4373 Nulla Av.","postalZip":"399453","country":"Mexico"},{"customerId":1119,"customerName":"Portia Young","phone":"1-274-193-1726","email":"massa.non.ante@hotmail.org","address":"948-8716 Suspendisse Av.","postalZip":"72-41","country":"Chile"},{"customerId":1120,"customerName":"Dane Harris","phone":"1-805-371-3427","email":"est.tempor@icloud.org","address":"Ap #237-4085 Elit. St.","postalZip":"34624","country":"Philippines"},{"customerId":1121,"customerName":"Kelly Lloyd","phone":"1-480-842-3168","email":"ac.turpis@icloud.ca","address":"186-8823 Erat. St.","postalZip":"6342","country":"Colombia"},{"customerId":1122,"customerName":"Edward Walters","phone":"1-772-171-9420","email":"porttitor.tellus.non@outlook.couk","address":"Ap #513-3763 Risus, Av.","postalZip":"13236-44113","country":"New Zealand"},{"customerId":1123,"customerName":"Tatum Mcguire","phone":"(458) 318-8761","email":"at.velit@outlook.com","address":"310-6225 Quam Ave","postalZip":"7351","country":"New Zealand"},{"customerId":1124,"customerName":"Hayden Howell","phone":"(645) 782-7079","email":"nisi.sem@yahoo.net","address":"Ap #151-929 Ipsum Avenue","postalZip":"8813","country":"Spain"},{"customerId":1125,"customerName":"Lawrence Stein","phone":"1-823-902-6126","email":"turpis.egestas@yahoo.org","address":"Ap #543-1025 Mauris St.","postalZip":"483528","country":"Ukraine"},{"customerId":1126,"customerName":"Fulton Navarro","phone":"(289) 500-0651","email":"cras@outlook.couk","address":"385-7251 Vel Avenue","postalZip":"5140","country":"Chile"},{"customerId":1127,"customerName":"Aileen Walton","phone":"(572) 957-0289","email":"tellus@protonmail.com","address":"Ap #796-1199 Nisi Road","postalZip":"9637 RJ","country":"Turkey"},{"customerId":1128,"customerName":"Otto Guerrero","phone":"(828) 670-3167","email":"in.ornare@icloud.com","address":"Ap #983-2171 Non, Rd.","postalZip":"14756-28750","country":"Colombia"},{"customerId":1129,"customerName":"Hamish Higgins","phone":"1-680-308-1103","email":"posuere.cubilia.curae@aol.edu","address":"Ap #886-9957 Libero. Rd.","postalZip":"73731-574","country":"South Korea"},{"customerId":1130,"customerName":"Melodie Sears","phone":"(337) 229-1564","email":"lacinia.orci@protonmail.net","address":"134 Eu Street","postalZip":"8507","country":"Spain"},{"customerId":1131,"customerName":"Juliet Pierce","phone":"(375) 234-0415","email":"ac.mi@protonmail.org","address":"P.O. Box 825, 4047 Et, Rd.","postalZip":"174333","country":"Norway"},{"customerId":1132,"customerName":"Paki Branch","phone":"(884) 433-8414","email":"lacus.quisque@outlook.edu","address":"P.O. Box 682, 7617 Sed St.","postalZip":"12145","country":"Russian Federation"},{"customerId":1133,"customerName":"Tamara Baldwin","phone":"1-218-677-1038","email":"dui@outlook.ca","address":"377 Aliquam Rd.","postalZip":"84276","country":"Italy"},{"customerId":1134,"customerName":"Daquan Beard","phone":"(443) 748-1456","email":"at.velit@aol.com","address":"673-8314 Integer Avenue","postalZip":"31222","country":"Norway"},{"customerId":1135,"customerName":"Alexandra Mcfadden","phone":"1-226-470-0333","email":"tellus.justo.sit@outlook.couk","address":"3365 Phasellus Road","postalZip":"877389","country":"Germany"},{"customerId":1136,"customerName":"Isaac Brennan","phone":"1-923-403-2154","email":"habitant.morbi@aol.org","address":"6954 Urna. St.","postalZip":"218717","country":"Belgium"},{"customerId":1137,"customerName":"Eagan Hess","phone":"1-588-671-5306","email":"ut@aol.couk","address":"Ap #725-1376 Vivamus Rd.","postalZip":"2588","country":"Singapore"},{"customerId":1138,"customerName":"Hamilton Davis","phone":"(832) 289-5235","email":"magna.cras@google.ca","address":"P.O. Box 702, 5818 Erat St.","postalZip":"547183","country":"India"},{"customerId":1139,"customerName":"Maya Mcintyre","phone":"1-339-163-7246","email":"nunc@yahoo.ca","address":"P.O. Box 175, 5889 Et Avenue","postalZip":"30206","country":"Austria"},{"customerId":1140,"customerName":"Benedict Conrad","phone":"(361) 760-9402","email":"libero@aol.ca","address":"930-9828 Enim. Rd.","postalZip":"316434","country":"Peru"},{"customerId":1141,"customerName":"Cally Nichols","phone":"(188) 296-3978","email":"pede@icloud.ca","address":"147-3879 Tortor. St.","postalZip":"0466 DY","country":"United Kingdom"},{"customerId":1142,"customerName":"Lev Huff","phone":"1-644-984-3841","email":"tincidunt.nunc@hotmail.ca","address":"Ap #451-588 Aenean Rd.","postalZip":"510223","country":"Austria"},{"customerId":1143,"customerName":"Burton Kerr","phone":"1-308-551-1118","email":"consectetuer.adipiscing@protonmail.org","address":"Ap #130-3436 Curae Road","postalZip":"8132","country":"Austria"},{"customerId":1144,"customerName":"Dara Horn","phone":"1-437-393-2415","email":"scelerisque@protonmail.edu","address":"P.O. Box 856, 8744 Nulla. Rd.","postalZip":"706580","country":"Norway"},{"customerId":1145,"customerName":"Marshall Barrett","phone":"1-674-153-7213","email":"ipsum.primis@icloud.ca","address":"801-8227 Nullam Av.","postalZip":"76-64","country":"Nigeria"},{"customerId":1146,"customerName":"Ivy Olsen","phone":"(779) 236-5665","email":"non.quam@icloud.com","address":"Ap #399-2054 Sit Avenue","postalZip":"9517","country":"Pakistan"},{"customerId":1147,"customerName":"Callum Hurley","phone":"(228) 268-0845","email":"nam.ac.nulla@outlook.ca","address":"221-4220 Gravida Rd.","postalZip":"692817","country":"Nigeria"},{"customerId":1148,"customerName":"Hilary Barry","phone":"1-921-538-7222","email":"non.vestibulum@google.edu","address":"Ap #731-2219 At Road","postalZip":"39-652","country":"Ukraine"},{"customerId":1149,"customerName":"Yetta Wilson","phone":"1-381-155-2506","email":"odio.vel@hotmail.edu","address":"258-3369 Dis Road","postalZip":"723487","country":"Nigeria"},{"customerId":1150,"customerName":"Armando Chavez","phone":"(612) 867-3153","email":"donec.luctus@protonmail.org","address":"410-1737 Ante Avenue","postalZip":"81327","country":"Philippines"},{"customerId":1151,"customerName":"Chelsea Good","phone":"(428) 567-4223","email":"tempor.bibendum@yahoo.ca","address":"Ap #893-6132 Ligula. Road","postalZip":"43101-22691","country":"New Zealand"},{"customerId":1152,"customerName":"Craig Schmidt","phone":"1-378-734-1470","email":"turpis.vitae.purus@hotmail.couk","address":"Ap #438-8189 Est. Rd.","postalZip":"916126","country":"Ukraine"},{"customerId":1153,"customerName":"Brenda Wells","phone":"(567) 863-1757","email":"non.hendrerit@aol.com","address":"Ap #492-5578 Quis, Rd.","postalZip":"9964","country":"United States"},{"customerId":1154,"customerName":"Jackson Sullivan","phone":"1-187-130-3494","email":"mus.proin.vel@outlook.ca","address":"P.O. Box 760, 5924 Non Ave","postalZip":"17977","country":"United States"},{"customerId":1155,"customerName":"Marvin Mcknight","phone":"1-848-886-2358","email":"orci@protonmail.com","address":"1595 Quisque Street","postalZip":"4396","country":"Australia"},{"customerId":1156,"customerName":"Summer Christian","phone":"(416) 828-7112","email":"eu.enim@outlook.edu","address":"567-5210 At Av.","postalZip":"03325-08467","country":"United Kingdom"},{"customerId":1157,"customerName":"Finn Marks","phone":"1-841-738-7143","email":"scelerisque.sed@outlook.ca","address":"Ap #954-8922 Id, Av.","postalZip":"22322","country":"United Kingdom"},{"customerId":1158,"customerName":"Nita Bates","phone":"(654) 725-8233","email":"magna.a.tortor@aol.com","address":"Ap #309-3421 Commodo Road","postalZip":"975193","country":"South Korea"},{"customerId":1159,"customerName":"Briar Langley","phone":"(608) 472-7010","email":"vivamus@yahoo.ca","address":"2879 Lectus St.","postalZip":"H6C 4M4","country":"New Zealand"},{"customerId":1160,"customerName":"Laurel Cummings","phone":"1-988-134-4690","email":"velit.eget@icloud.couk","address":"Ap #788-9364 Donec Road","postalZip":"531859","country":"Indonesia"},{"customerId":1161,"customerName":"Ulric Kim","phone":"(346) 441-9341","email":"sagittis@aol.couk","address":"100-1804 Neque Street","postalZip":"1122","country":"France"},{"customerId":1162,"customerName":"Sybil Sykes","phone":"1-875-204-7862","email":"laoreet.ipsum.curabitur@outlook.ca","address":"Ap #126-5269 Fusce Rd.","postalZip":"117416","country":"Russian Federation"},{"customerId":1163,"customerName":"Leonard Hoffman","phone":"1-341-772-3286","email":"a@aol.ca","address":"444-2072 Justo St.","postalZip":"11668","country":"Russian Federation"},{"customerId":1164,"customerName":"Quon Blackwell","phone":"(831) 635-3562","email":"neque.sed@protonmail.edu","address":"204-5991 Aliquam Rd.","postalZip":"3155","country":"Philippines"},{"customerId":1165,"customerName":"Miriam Bryan","phone":"1-527-513-2857","email":"vitae.dolor@icloud.couk","address":"461-5695 Cras Avenue","postalZip":"75-27","country":"Belgium"},{"customerId":1166,"customerName":"Armand Pugh","phone":"(482) 501-1233","email":"ridiculus.mus@outlook.edu","address":"P.O. Box 947, 9910 Amet Ave","postalZip":"3411","country":"Germany"},{"customerId":1167,"customerName":"Blaze Battle","phone":"(428) 853-6886","email":"adipiscing.lacus.ut@yahoo.org","address":"P.O. Box 602, 8847 Arcu St.","postalZip":"37286","country":"Costa Rica"},{"customerId":1168,"customerName":"Calista Hensley","phone":"1-327-399-7565","email":"vulputate.ullamcorper.magna@icloud.com","address":"847-2586 Suspendisse Av.","postalZip":"776816","country":"United Kingdom"},{"customerId":1169,"customerName":"Bo Rios","phone":"1-170-647-6987","email":"in.condimentum.donec@aol.edu","address":"Ap #945-706 Ut, Rd.","postalZip":"8076","country":"Germany"},{"customerId":1170,"customerName":"Larissa Rodgers","phone":"(126) 443-8736","email":"tellus.id@protonmail.couk","address":"721-8783 Rutrum Av.","postalZip":"6659","country":"China"},{"customerId":1171,"customerName":"Shelby Cummings","phone":"(734) 275-3839","email":"a.felis@google.com","address":"Ap #533-2648 Semper St.","postalZip":"4102","country":"Chile"},{"customerId":1172,"customerName":"Rajah Haynes","phone":"(912) 376-0821","email":"erat.vel@aol.edu","address":"798-6238 Lobortis Avenue","postalZip":"879367","country":"South Africa"},{"customerId":1173,"customerName":"Eric Porter","phone":"(438) 829-8875","email":"est.congue@icloud.couk","address":"152-3129 Eget Road","postalZip":"51575","country":"Belgium"},{"customerId":1174,"customerName":"Sade Tanner","phone":"(176) 628-4565","email":"nulla.at.sem@aol.edu","address":"Ap #897-5047 Pede. St.","postalZip":"14691","country":"Russian Federation"},{"customerId":1175,"customerName":"Rooney Whitley","phone":"1-603-488-8598","email":"inceptos@icloud.net","address":"Ap #305-7788 Metus. Rd.","postalZip":"495747","country":"Netherlands"},{"customerId":1176,"customerName":"Lareina Roth","phone":"1-683-817-8779","email":"mus.aenean@hotmail.com","address":"Ap #500-9224 Nam Rd.","postalZip":"622405","country":"India"},{"customerId":1177,"customerName":"Yuli Ashley","phone":"1-527-243-1156","email":"laoreet@hotmail.net","address":"Ap #462-2830 Lorem Rd.","postalZip":"8659","country":"South Korea"},{"customerId":1178,"customerName":"Hanae Reed","phone":"1-274-288-6220","email":"cubilia.curae@outlook.edu","address":"562-9851 Vestibulum St.","postalZip":"2730","country":"Sweden"},{"customerId":1179,"customerName":"Marsden Kelley","phone":"(802) 265-9337","email":"lectus.a.sollicitudin@icloud.ca","address":"921-3613 Dis Rd.","postalZip":"36516","country":"Austria"},{"customerId":1180,"customerName":"Chandler Cooke","phone":"1-886-874-8176","email":"ultrices.vivamus@hotmail.couk","address":"Ap #440-2350 Aliquet Ave","postalZip":"75956","country":"Russian Federation"},{"customerId":1181,"customerName":"Oren Craig","phone":"(355) 808-0474","email":"sed.libero@outlook.com","address":"Ap #284-5512 Etiam Ave","postalZip":"72646","country":"United Kingdom"},{"customerId":1182,"customerName":"Cecilia Drake","phone":"(846) 325-0244","email":"magnis.dis@aol.couk","address":"P.O. Box 664, 1872 Dictum Avenue","postalZip":"865143","country":"Costa Rica"},{"customerId":1183,"customerName":"Myles Huber","phone":"(558) 433-4791","email":"non.luctus.sit@protonmail.org","address":"Ap #721-322 Arcu. Road","postalZip":"8272","country":"Russian Federation"},{"customerId":1184,"customerName":"Garrett Horton","phone":"1-303-643-5354","email":"quisque@google.com","address":"579-5270 In Road","postalZip":"5426","country":"Brazil"},{"customerId":1185,"customerName":"Summer Downs","phone":"(799) 252-8435","email":"sociis.natoque@icloud.edu","address":"1530 Mauris Rd.","postalZip":"4644","country":"Belgium"},{"customerId":1186,"customerName":"Stephen Ramirez","phone":"1-958-659-2032","email":"blandit.enim@aol.ca","address":"P.O. Box 617, 7127 Lobortis Avenue","postalZip":"142618","country":"Sweden"},{"customerId":1187,"customerName":"Alden Ochoa","phone":"(751) 226-3554","email":"phasellus.elit.pede@google.edu","address":"P.O. Box 838, 1887 Tellus. Rd.","postalZip":"83996","country":"China"},{"customerId":1188,"customerName":"Doris Moreno","phone":"(471) 824-1287","email":"nullam.feugiat.placerat@outlook.edu","address":"Ap #260-386 Orci Av.","postalZip":"210139","country":"Norway"},{"customerId":1189,"customerName":"Indigo Carey","phone":"(662) 936-5124","email":"mi.pede@yahoo.org","address":"Ap #322-3050 Magna. Road","postalZip":"45-25","country":"Turkey"},{"customerId":1190,"customerName":"Dolan Jordan","phone":"(478) 872-8613","email":"nec.malesuada@yahoo.net","address":"898-938 Nulla Ave","postalZip":"7887","country":"South Korea"},{"customerId":1191,"customerName":"Bo Dudley","phone":"(610) 335-7788","email":"euismod.et@aol.net","address":"3468 Nulla Street","postalZip":"141974","country":"China"},{"customerId":1192,"customerName":"Gillian Clemons","phone":"1-919-152-8757","email":"placerat.velit.quisque@yahoo.ca","address":"710-190 Massa. Road","postalZip":"2353","country":"Chile"},{"customerId":1193,"customerName":"Caldwell Hansen","phone":"1-661-497-3770","email":"volutpat.nulla@outlook.org","address":"919-6956 Sit Ave","postalZip":"30035","country":"Costa Rica"},{"customerId":1194,"customerName":"Chadwick Langley","phone":"1-740-424-6843","email":"pede@aol.edu","address":"Ap #557-4847 Arcu Rd.","postalZip":"75647","country":"South Africa"},{"customerId":1195,"customerName":"Robert Glass","phone":"(322) 300-6525","email":"blandit@icloud.org","address":"746-2653 Eu Av.","postalZip":"432218","country":"Norway"},{"customerId":1196,"customerName":"Rogan Gibson","phone":"(173) 446-7654","email":"ipsum.suspendisse.non@google.edu","address":"P.O. Box 548, 8634 Fringilla Rd.","postalZip":"1554-0130","country":"France"},{"customerId":1197,"customerName":"Shay Chase","phone":"1-817-937-9663","email":"eu@outlook.couk","address":"Ap #130-5565 Faucibus Rd.","postalZip":"3221","country":"Italy"},{"customerId":1198,"customerName":"Hayes Griffin","phone":"(219) 652-0611","email":"ultrices.duis@hotmail.ca","address":"Ap #405-6309 Est. Rd.","postalZip":"19755","country":"Netherlands"},{"customerId":1199,"customerName":"Emerson Trujillo","phone":"(142) 333-1545","email":"suspendisse.aliquet.molestie@google.couk","address":"536-2607 Ligula. Av.","postalZip":"17575","country":"Indonesia"},{"customerId":1200,"customerName":"Charde Sellers","phone":"(765) 208-5630","email":"leo.in@outlook.couk","address":"782-8699 Consequat, Rd.","postalZip":"63413-332","country":"Norway"},{"customerId":1201,"customerName":"Kimberly Bruce","phone":"1-463-679-5074","email":"vivamus.sit.amet@aol.net","address":"923-5701 Aliquam St.","postalZip":"70587","country":"Indonesia"},{"customerId":1202,"customerName":"Cynthia Guzman","phone":"1-331-975-8907","email":"suspendisse@google.com","address":"8055 Dapibus Av.","postalZip":"06404","country":"Norway"},{"customerId":1203,"customerName":"Quyn Cotton","phone":"(914) 432-9528","email":"convallis.ligula@google.ca","address":"7102 Et, Av.","postalZip":"03544","country":"United Kingdom"},{"customerId":1204,"customerName":"Harding Hunter","phone":"1-777-787-2274","email":"egestas.aliquam@protonmail.org","address":"956-2959 Aliquam Avenue","postalZip":"8823","country":"Norway"},{"customerId":1205,"customerName":"Sara Blankenship","phone":"1-766-993-7718","email":"ante.blandit.viverra@icloud.edu","address":"Ap #765-4621 Nulla St.","postalZip":"WA7U 5DD","country":"Turkey"},{"customerId":1206,"customerName":"Karen Mcfarland","phone":"1-101-451-0174","email":"sed.dui@aol.edu","address":"379-132 Vulputate Avenue","postalZip":"30200","country":"Poland"},{"customerId":1207,"customerName":"Freya Skinner","phone":"1-859-639-2765","email":"quis.arcu@outlook.ca","address":"733-152 In Rd.","postalZip":"66842","country":"France"},{"customerId":1208,"customerName":"Minerva Blankenship","phone":"(547) 979-5625","email":"luctus.ipsum@yahoo.com","address":"311-4470 Arcu Avenue","postalZip":"12886","country":"Netherlands"},{"customerId":1209,"customerName":"Cody Figueroa","phone":"(312) 873-1696","email":"ipsum.dolor@hotmail.net","address":"5812 Est, St.","postalZip":"444566","country":"Italy"},{"customerId":1210,"customerName":"Christian Berger","phone":"(827) 212-4278","email":"bibendum.ullamcorper@outlook.org","address":"Ap #976-925 Eu Ave","postalZip":"73246","country":"Costa Rica"},{"customerId":1211,"customerName":"Geraldine Benson","phone":"(686) 771-0523","email":"rutrum.justo@google.com","address":"468-9285 Sit Av.","postalZip":"4178 LZ","country":"China"},{"customerId":1212,"customerName":"Rhona Mckay","phone":"1-249-718-6439","email":"eu.arcu@protonmail.net","address":"783-2662 Malesuada St.","postalZip":"4734","country":"France"},{"customerId":1213,"customerName":"Mohammad Holland","phone":"1-616-294-7414","email":"elit.a@google.net","address":"456-4028 Cursus St.","postalZip":"37507","country":"Germany"},{"customerId":1214,"customerName":"Fulton Lowery","phone":"(971) 538-3365","email":"placerat.velit@yahoo.net","address":"435-6035 Blandit Rd.","postalZip":"481178","country":"Canada"},{"customerId":1215,"customerName":"Shaine Stevenson","phone":"1-224-316-1576","email":"eleifend.cras.sed@google.org","address":"Ap #800-1048 Accumsan St.","postalZip":"5507","country":"Poland"},{"customerId":1216,"customerName":"Shad Moses","phone":"1-663-446-6058","email":"dui.in@google.com","address":"P.O. Box 202, 4862 Vitae Rd.","postalZip":"42806","country":"United States"},{"customerId":1217,"customerName":"Colt Stewart","phone":"1-531-643-7652","email":"est.arcu@outlook.org","address":"166-7253 Senectus St.","postalZip":"71-760","country":"Ukraine"},{"customerId":1218,"customerName":"Prescott Newton","phone":"(673) 986-0514","email":"felis.purus@hotmail.org","address":"P.O. Box 359, 7008 Etiam St.","postalZip":"69759","country":"New Zealand"},{"customerId":1219,"customerName":"Hashim Myers","phone":"1-299-612-8826","email":"aliquet.magna@google.couk","address":"Ap #799-8129 Mi. St.","postalZip":"76081","country":"Pakistan"},{"customerId":1220,"customerName":"Gisela Simpson","phone":"(781) 688-2283","email":"lorem@protonmail.org","address":"994-7036 Laoreet, Road","postalZip":"0628","country":"France"},{"customerId":1221,"customerName":"Alice Beasley","phone":"(861) 125-1151","email":"lectus@aol.net","address":"191-8262 Quam. Av.","postalZip":"61784","country":"Russian Federation"},{"customerId":1222,"customerName":"Baxter Alvarez","phone":"1-597-217-4715","email":"aliquam.adipiscing@aol.org","address":"497-5274 Et, Street","postalZip":"50606","country":"United Kingdom"},{"customerId":1223,"customerName":"Eric Wallace","phone":"(828) 814-2311","email":"sociosqu.ad@google.edu","address":"Ap #851-8445 Fusce Avenue","postalZip":"371855","country":"Russian Federation"},{"customerId":1224,"customerName":"Virginia Nichols","phone":"(158) 415-6514","email":"mattis.ornare@hotmail.com","address":"2551 Orci Rd.","postalZip":"93284","country":"China"},{"customerId":1225,"customerName":"Joelle Aguirre","phone":"(854) 516-7135","email":"velit@aol.ca","address":"989-339 Non Ave","postalZip":"31922","country":"Philippines"},{"customerId":1226,"customerName":"Amanda Hebert","phone":"1-232-775-8274","email":"ut.erat.sed@hotmail.org","address":"586-9506 Ridiculus Ave","postalZip":"9885","country":"Peru"},{"customerId":1227,"customerName":"Ryder Vang","phone":"1-575-823-1726","email":"libero@google.net","address":"P.O. Box 223, 8835 Vestibulum Road","postalZip":"7134","country":"Turkey"},{"customerId":1228,"customerName":"Cole Hebert","phone":"1-795-415-3404","email":"aliquet.sem.ut@google.net","address":"759-1631 Eget Rd.","postalZip":"26-729","country":"India"},{"customerId":1229,"customerName":"Zelenia Goff","phone":"(970) 563-5745","email":"nisi.aenean.eget@google.org","address":"453-9241 Non, Road","postalZip":"95-537","country":"Philippines"},{"customerId":1230,"customerName":"Duncan Little","phone":"1-282-913-6876","email":"gravida.nunc.sed@outlook.org","address":"P.O. Box 551, 1705 Morbi St.","postalZip":"36-75","country":"Indonesia"},{"customerId":1231,"customerName":"Zephania Burch","phone":"(348) 442-1242","email":"pede.cras.vulputate@yahoo.ca","address":"5084 Vitae Rd.","postalZip":"21965","country":"Peru"},{"customerId":1232,"customerName":"Basil Lloyd","phone":"1-341-344-7427","email":"nulla.tempor@icloud.ca","address":"Ap #843-7443 Integer Rd.","postalZip":"345108","country":"Netherlands"},{"customerId":1233,"customerName":"Melyssa Brooks","phone":"(508) 884-1383","email":"montes.nascetur.ridiculus@hotmail.edu","address":"Ap #456-6388 Rutrum St.","postalZip":"16-211","country":"New Zealand"},{"customerId":1234,"customerName":"Aurora Leonard","phone":"(316) 665-6644","email":"ipsum.primis@icloud.org","address":"428-6242 Sit Street","postalZip":"973687","country":"Sweden"},{"customerId":1235,"customerName":"Anika Le","phone":"(685) 626-7388","email":"primis.in@yahoo.couk","address":"Ap #640-168 Phasellus Street","postalZip":"8873","country":"Sweden"},{"customerId":1236,"customerName":"Quintessa Shepard","phone":"1-226-348-8571","email":"consectetuer.mauris@outlook.couk","address":"Ap #794-1498 Turpis. St.","postalZip":"35015","country":"Ukraine"},{"customerId":1237,"customerName":"Quintessa Walter","phone":"1-757-517-3627","email":"accumsan.convallis@protonmail.edu","address":"788 Ornare. Av.","postalZip":"340373","country":"Spain"},{"customerId":1238,"customerName":"Jeanette Ingram","phone":"1-408-761-8781","email":"lacinia.orci@icloud.org","address":"751-744 Molestie. Rd.","postalZip":"7822","country":"Ukraine"},{"customerId":1239,"customerName":"Magee Logan","phone":"1-762-419-3843","email":"tincidunt.vehicula@google.org","address":"369-2642 Proin Ave","postalZip":"BW82 2KE","country":"Mexico"},{"customerId":1240,"customerName":"Reagan Clements","phone":"1-412-723-3895","email":"pharetra.quisque@google.org","address":"Ap #110-6548 Tempus, Av.","postalZip":"E3W 5E7","country":"Austria"},{"customerId":1241,"customerName":"Dennis Taylor","phone":"(739) 486-3238","email":"eleifend.non@google.net","address":"Ap #933-6271 Consequat Rd.","postalZip":"265283","country":"France"},{"customerId":1242,"customerName":"Alvin Ray","phone":"1-475-608-8144","email":"ligula.aenean@icloud.net","address":"389-1590 Rutrum Street","postalZip":"24343-512","country":"Chile"},{"customerId":1243,"customerName":"Devin Sweeney","phone":"1-836-658-2998","email":"dolor@outlook.com","address":"3386 Fermentum Road","postalZip":"Y64 1TQ","country":"Norway"},{"customerId":1244,"customerName":"Rajah Duke","phone":"(828) 875-5614","email":"nec@google.net","address":"Ap #103-6999 Tempus Road","postalZip":"403585","country":"Ukraine"},{"customerId":1245,"customerName":"Yoshio Olson","phone":"1-641-435-1196","email":"cubilia.curae@google.edu","address":"176-3215 Sed Road","postalZip":"15288-379","country":"United Kingdom"},{"customerId":1246,"customerName":"Reuben Hodge","phone":"1-239-725-4351","email":"sit.amet@outlook.org","address":"P.O. Box 809, 4971 Maecenas Rd.","postalZip":"15787-48453","country":"Sweden"},{"customerId":1247,"customerName":"Aline Mccarty","phone":"1-710-583-3497","email":"odio.semper.cursus@aol.couk","address":"7836 Faucibus Rd.","postalZip":"7178","country":"Ukraine"},{"customerId":1248,"customerName":"Kylie Kim","phone":"1-539-363-6835","email":"mi.enim.condimentum@icloud.couk","address":"P.O. Box 463, 3487 Dictum Road","postalZip":"18877","country":"Nigeria"},{"customerId":1249,"customerName":"Sage Bowers","phone":"1-224-410-8556","email":"eget.laoreet@outlook.net","address":"Ap #539-2641 A, Avenue","postalZip":"18446","country":"South Korea"},{"customerId":1250,"customerName":"Brynn Miller","phone":"(386) 396-7094","email":"lectus@hotmail.couk","address":"168-7085 Egestas. Rd.","postalZip":"14794","country":"Colombia"},{"customerId":1251,"customerName":"Cruz Durham","phone":"(678) 223-1384","email":"in.cursus@icloud.ca","address":"Ap #116-2724 Aliquam St.","postalZip":"726827","country":"India"},{"customerId":1252,"customerName":"Raphael Lambert","phone":"(647) 930-4484","email":"eleifend.nec.malesuada@yahoo.couk","address":"Ap #342-2310 Integer Av.","postalZip":"829183","country":"Netherlands"},{"customerId":1253,"customerName":"Barrett Barber","phone":"(257) 348-8468","email":"massa.mauris@yahoo.ca","address":"822-9335 Nunc Rd.","postalZip":"455544","country":"Chile"},{"customerId":1254,"customerName":"Alfonso Tran","phone":"(375) 735-1642","email":"a@aol.couk","address":"723-2618 In Rd.","postalZip":"07310","country":"France"},{"customerId":1255,"customerName":"Quamar Duran","phone":"(575) 354-6717","email":"sapien@protonmail.net","address":"Ap #889-6343 Sociosqu Avenue","postalZip":"88438-60533","country":"China"},{"customerId":1256,"customerName":"Doris Huff","phone":"1-734-846-7929","email":"lorem.donec@outlook.ca","address":"P.O. Box 557, 9450 Dictum Road","postalZip":"460487","country":"Spain"},{"customerId":1257,"customerName":"Anastasia Morrow","phone":"(930) 605-1289","email":"lectus.nullam.suscipit@yahoo.org","address":"482-1037 Blandit Ave","postalZip":"7115","country":"Philippines"},{"customerId":1258,"customerName":"Ashely Trujillo","phone":"1-516-852-1250","email":"vitae.sodales.at@yahoo.couk","address":"Ap #859-4386 Rutrum Street","postalZip":"03111","country":"South Africa"},{"customerId":1259,"customerName":"Adrienne Mcconnell","phone":"1-286-881-6866","email":"at.fringilla@icloud.ca","address":"464-6392 Convallis Road","postalZip":"8538-8927","country":"Spain"},{"customerId":1260,"customerName":"Cassandra Sanders","phone":"1-635-255-4629","email":"consectetuer@icloud.edu","address":"303-3212 Sollicitudin St.","postalZip":"14457","country":"United States"},{"customerId":1261,"customerName":"Cameron Valentine","phone":"1-600-664-6489","email":"sollicitudin.orci@aol.edu","address":"P.O. Box 834, 1814 Et Rd.","postalZip":"37162","country":"New Zealand"},{"customerId":1262,"customerName":"Norman Griffin","phone":"(419) 768-0314","email":"neque.vitae@aol.net","address":"P.O. Box 556, 1579 Scelerisque Ave","postalZip":"881244","country":"India"},{"customerId":1263,"customerName":"Carlos Ramsey","phone":"1-435-347-3869","email":"vestibulum@yahoo.couk","address":"3943 Et St.","postalZip":"33416","country":"Germany"},{"customerId":1264,"customerName":"Mariam Howe","phone":"(639) 461-4086","email":"velit.dui.semper@protonmail.couk","address":"Ap #931-7415 Faucibus Rd.","postalZip":"427079","country":"India"},{"customerId":1265,"customerName":"MacKenzie Alford","phone":"1-894-538-1015","email":"tincidunt.neque.vitae@aol.ca","address":"Ap #937-6343 Dictum. St.","postalZip":"95268","country":"Philippines"},{"customerId":1266,"customerName":"Graham Holloway","phone":"1-914-671-1572","email":"facilisis.eget@google.ca","address":"Ap #741-5080 Facilisi. Street","postalZip":"51478","country":"Philippines"},{"customerId":1267,"customerName":"Heidi Mays","phone":"1-734-713-2514","email":"sem@hotmail.net","address":"396-4900 Sem Rd.","postalZip":"1446-8660","country":"New Zealand"},{"customerId":1268,"customerName":"Amelia Farmer","phone":"1-317-724-8376","email":"libero.donec@yahoo.edu","address":"Ap #662-8397 Lorem Street","postalZip":"Y6P 7N7","country":"Russian Federation"},{"customerId":1269,"customerName":"Holly Hernandez","phone":"1-565-529-5693","email":"placerat.orci.lacus@aol.org","address":"7601 Vel Ave","postalZip":"4786","country":"Turkey"},{"customerId":1270,"customerName":"Philip Hurley","phone":"1-605-754-4983","email":"nibh.sit@google.org","address":"Ap #757-1677 Vivamus Ave","postalZip":"40188","country":"Russian Federation"},{"customerId":1271,"customerName":"Veronica Maddox","phone":"1-342-207-4242","email":"ac.metus.vitae@icloud.ca","address":"Ap #301-4476 Orci, Street","postalZip":"236475","country":"Indonesia"},{"customerId":1272,"customerName":"Nolan Wallace","phone":"1-625-178-4338","email":"donec@hotmail.ca","address":"838-1885 Non, Av.","postalZip":"11705","country":"Austria"},{"customerId":1273,"customerName":"Grace Ford","phone":"(771) 717-4359","email":"ornare@aol.couk","address":"1650 Sed Ave","postalZip":"853817","country":"Philippines"},{"customerId":1274,"customerName":"Imelda Bird","phone":"1-256-394-3476","email":"in.hendrerit.consectetuer@hotmail.com","address":"Ap #207-873 Faucibus Ave","postalZip":"58544","country":"Costa Rica"},{"customerId":1275,"customerName":"Amos Barnett","phone":"(217) 753-0167","email":"vestibulum.massa.rutrum@outlook.org","address":"Ap #504-7391 Id Road","postalZip":"428658","country":"Brazil"},{"customerId":1276,"customerName":"Vance Davidson","phone":"(632) 848-0851","email":"tortor@google.com","address":"8164 Libero. Av.","postalZip":"59-452","country":"China"},{"customerId":1277,"customerName":"George Valdez","phone":"1-267-365-8404","email":"quisque@icloud.couk","address":"580 Sed Avenue","postalZip":"9231","country":"Colombia"},{"customerId":1278,"customerName":"Rama Dejesus","phone":"(994) 521-1473","email":"duis.cursus@yahoo.couk","address":"395-357 Tellus Av.","postalZip":"3577","country":"United Kingdom"},{"customerId":1279,"customerName":"Tyler Ferguson","phone":"1-737-618-0663","email":"arcu@hotmail.edu","address":"P.O. Box 486, 7908 Tempor Av.","postalZip":"1354","country":"Pakistan"},{"customerId":1280,"customerName":"Fallon Ryan","phone":"(673) 362-7218","email":"quis.arcu@hotmail.edu","address":"916-7982 Egestas, Rd.","postalZip":"73151","country":"Poland"},{"customerId":1281,"customerName":"Rhiannon Riddle","phone":"(379) 427-8051","email":"mi.lacinia@icloud.org","address":"1538 Ut Avenue","postalZip":"96418","country":"Chile"},{"customerId":1282,"customerName":"Mannix Stokes","phone":"1-952-667-7440","email":"tempus@icloud.couk","address":"Ap #465-924 Placerat Rd.","postalZip":"8941","country":"Netherlands"},{"customerId":1283,"customerName":"Kirsten Beard","phone":"(386) 552-8516","email":"ipsum@hotmail.com","address":"Ap #314-2610 Donec Rd.","postalZip":"865232","country":"Netherlands"},{"customerId":1284,"customerName":"Colton Greer","phone":"(544) 639-1708","email":"eros.proin@icloud.net","address":"Ap #905-1422 Non Road","postalZip":"528183","country":"Costa Rica"},{"customerId":1285,"customerName":"Beck Rasmussen","phone":"(701) 185-3456","email":"sagittis@protonmail.edu","address":"6434 Amet Road","postalZip":"27272","country":"Brazil"},{"customerId":1286,"customerName":"Driscoll Walter","phone":"(315) 868-2551","email":"natoque.penatibus@yahoo.net","address":"6840 Ac Avenue","postalZip":"39757","country":"Colombia"},{"customerId":1287,"customerName":"Guinevere Bolton","phone":"1-560-309-8068","email":"mauris.vel.turpis@aol.org","address":"9282 Fringilla Street","postalZip":"635531","country":"Sweden"},{"customerId":1288,"customerName":"Talon Barr","phone":"(281) 571-6497","email":"tellus.phasellus@protonmail.edu","address":"8955 Tincidunt Rd.","postalZip":"A8M 4Z5","country":"Pakistan"},{"customerId":1289,"customerName":"Fatima Mccoy","phone":"(685) 483-3596","email":"mus.proin@yahoo.org","address":"Ap #684-6010 Etiam Ave","postalZip":"25617","country":"Netherlands"},{"customerId":1290,"customerName":"Ivana Mays","phone":"1-858-558-1483","email":"ultricies.adipiscing.enim@protonmail.ca","address":"5110 Ut Street","postalZip":"B2W 3L8","country":"Belgium"},{"customerId":1291,"customerName":"Kenneth Burnett","phone":"1-873-670-1824","email":"lectus.pede.et@icloud.edu","address":"Ap #350-2238 Orci. Road","postalZip":"289227","country":"Netherlands"},{"customerId":1292,"customerName":"Raymond Daniel","phone":"1-543-681-3471","email":"odio.a@yahoo.com","address":"266-9313 Urna St.","postalZip":"49309","country":"Italy"},{"customerId":1293,"customerName":"Lael Delacruz","phone":"(542) 282-5126","email":"adipiscing@outlook.net","address":"742-7498 Dis Avenue","postalZip":"68087","country":"Costa Rica"},{"customerId":1294,"customerName":"Stephen Navarro","phone":"(964) 652-1134","email":"quis.arcu@yahoo.edu","address":"P.O. Box 777, 6051 Ipsum Ave","postalZip":"3769","country":"Poland"},{"customerId":1295,"customerName":"Keith Sykes","phone":"(240) 371-6114","email":"sodales.nisi@google.couk","address":"P.O. Box 712, 4196 Sed Road","postalZip":"3124","country":"Italy"},{"customerId":1296,"customerName":"Hop Wheeler","phone":"(882) 852-2134","email":"tellus.id@aol.couk","address":"1148 Quisque St.","postalZip":"07388","country":"Vietnam"},{"customerId":1297,"customerName":"Austin Browning","phone":"1-564-808-1387","email":"velit.sed@protonmail.org","address":"Ap #508-3125 Sollicitudin Rd.","postalZip":"153452","country":"Russian Federation"},{"customerId":1298,"customerName":"Ulric Harrington","phone":"(404) 767-7164","email":"lectus@yahoo.edu","address":"727-6859 Metus. Road","postalZip":"10-672","country":"Norway"},{"customerId":1299,"customerName":"Hanae Hyde","phone":"1-578-859-4133","email":"non.justo.proin@protonmail.net","address":"P.O. Box 780, 4090 Dapibus Av.","postalZip":"61255","country":"Ireland"},{"customerId":1300,"customerName":"Baker Morse","phone":"(826) 500-9636","email":"amet.dapibus@yahoo.couk","address":"570-7315 Bibendum Rd.","postalZip":"36605","country":"India"},{"customerId":1301,"customerName":"Evangeline Leon","phone":"1-658-285-7538","email":"ac.turpis@yahoo.com","address":"Ap #632-3608 Ac St.","postalZip":"25893-07660","country":"Norway"},{"customerId":1302,"customerName":"Noble Donaldson","phone":"(672) 816-8714","email":"quis@icloud.net","address":"4300 Iaculis, Ave","postalZip":"02707","country":"Colombia"},{"customerId":1303,"customerName":"Kalia Colon","phone":"(427) 123-2426","email":"vel.pede.blandit@hotmail.couk","address":"P.O. Box 870, 3590 Eleifend. St.","postalZip":"206846","country":"Indonesia"},{"customerId":1304,"customerName":"Linus Hess","phone":"1-619-136-5385","email":"nunc.sed@outlook.ca","address":"Ap #880-3705 Eu, Street","postalZip":"L3X 5S1","country":"Spain"},{"customerId":1305,"customerName":"Colt Stout","phone":"1-543-909-7130","email":"suspendisse.sed.dolor@yahoo.ca","address":"P.O. Box 653, 6054 Massa Rd.","postalZip":"T2T 3W6","country":"Netherlands"},{"customerId":1306,"customerName":"Ronan Taylor","phone":"1-753-561-8886","email":"dolor@protonmail.edu","address":"Ap #207-9022 Ac St.","postalZip":"268624","country":"Philippines"},{"customerId":1307,"customerName":"Rahim Roberson","phone":"1-278-767-3521","email":"nunc.quisque@google.net","address":"720-6909 Non, Rd.","postalZip":"5815","country":"South Korea"},{"customerId":1308,"customerName":"Hayden Crane","phone":"(335) 968-3323","email":"porta.elit.a@aol.com","address":"Ap #920-4101 Quis St.","postalZip":"425565","country":"Spain"},{"customerId":1309,"customerName":"Halla Hooper","phone":"(259) 162-0866","email":"ac.mattis@aol.com","address":"P.O. Box 253, 4701 Fusce Rd.","postalZip":"58871-613","country":"Ukraine"},{"customerId":1310,"customerName":"Mohammad Morse","phone":"(516) 866-3151","email":"semper.et@outlook.org","address":"Ap #774-5318 Mauris Ave","postalZip":"63371","country":"Indonesia"},{"customerId":1311,"customerName":"Yeo Summers","phone":"(677) 386-8129","email":"sed.tortor@outlook.com","address":"P.O. Box 172, 7153 Mauris. Ave","postalZip":"10808","country":"United Kingdom"},{"customerId":1312,"customerName":"Abdul Bartlett","phone":"(368) 654-6656","email":"malesuada@outlook.com","address":"P.O. Box 353, 3630 Orci, Street","postalZip":"4786","country":"Chile"},{"customerId":1313,"customerName":"Alvin Kirk","phone":"1-561-308-0898","email":"mauris@protonmail.ca","address":"253-692 Ipsum Street","postalZip":"I6B 7XE","country":"Vietnam"},{"customerId":1314,"customerName":"Cora Jimenez","phone":"1-748-974-5722","email":"aliquet.diam.sed@yahoo.com","address":"670-5496 Sed Street","postalZip":"43176","country":"Mexico"},{"customerId":1315,"customerName":"Sybill Osborn","phone":"1-447-771-6596","email":"ultricies@google.ca","address":"659-6176 Mauris Road","postalZip":"589008","country":"United States"},{"customerId":1316,"customerName":"Dominique Sandoval","phone":"1-787-906-6357","email":"tellus.imperdiet@outlook.ca","address":"440-5486 Eu Road","postalZip":"9191","country":"Brazil"},{"customerId":1317,"customerName":"Kyra Gross","phone":"1-380-721-5074","email":"quis.accumsan.convallis@google.net","address":"762-318 Vestibulum St.","postalZip":"88-859","country":"Sweden"},{"customerId":1318,"customerName":"Joelle Buckner","phone":"(881) 445-5503","email":"malesuada.vel.venenatis@yahoo.com","address":"P.O. Box 523, 2613 Dui, Road","postalZip":"909421","country":"Australia"},{"customerId":1319,"customerName":"Kyle Santiago","phone":"(829) 759-2866","email":"at.velit@yahoo.couk","address":"902-9693 Elit, St.","postalZip":"96721-726","country":"China"},{"customerId":1320,"customerName":"Colorado Cook","phone":"1-413-651-3683","email":"at.fringilla.purus@yahoo.ca","address":"Ap #819-1809 In Street","postalZip":"1808","country":"Italy"},{"customerId":1321,"customerName":"Lev Robinson","phone":"1-196-234-2414","email":"sed.congue.elit@icloud.net","address":"Ap #223-9304 At Avenue","postalZip":"V0Z 7E1","country":"Sweden"},{"customerId":1322,"customerName":"Linus Lloyd","phone":"1-944-270-7136","email":"diam@outlook.edu","address":"Ap #767-5684 Lobortis. Avenue","postalZip":"S5G 2L0","country":"Indonesia"},{"customerId":1323,"customerName":"Chaim Kinney","phone":"1-555-209-8729","email":"ac@google.org","address":"Ap #299-238 Lobortis Rd.","postalZip":"18474","country":"Poland"},{"customerId":1324,"customerName":"Keane Meadows","phone":"(356) 754-9635","email":"vitae.sodales@hotmail.ca","address":"Ap #698-3225 Donec Ave","postalZip":"28357-282","country":"Australia"},{"customerId":1325,"customerName":"Amaya Carroll","phone":"1-285-137-8225","email":"ac.metus@protonmail.edu","address":"204-6242 Nunc St.","postalZip":"66321-333","country":"Belgium"},{"customerId":1326,"customerName":"Hayfa Yang","phone":"1-518-607-9630","email":"augue@aol.ca","address":"P.O. Box 777, 611 Dui, St.","postalZip":"88577","country":"Australia"},{"customerId":1327,"customerName":"Jenette Rivera","phone":"1-117-899-8340","email":"porta@hotmail.couk","address":"6330 Erat Road","postalZip":"1156","country":"Spain"},{"customerId":1328,"customerName":"Oren Faulkner","phone":"(626) 935-7176","email":"pretium.et@google.edu","address":"976-459 Orci, Road","postalZip":"2248","country":"Turkey"},{"customerId":1329,"customerName":"Jakeem Hopkins","phone":"1-821-356-4816","email":"quisque.fringilla.euismod@yahoo.com","address":"Ap #163-6401 Orci. Street","postalZip":"17747","country":"Canada"},{"customerId":1330,"customerName":"Dana Walker","phone":"(613) 682-2416","email":"mauris@google.couk","address":"231-3124 Ultrices Avenue","postalZip":"584075","country":"South Korea"},{"customerId":1331,"customerName":"Griffith Hardin","phone":"(601) 585-9447","email":"varius.et@google.net","address":"Ap #363-9006 Aliquam Ave","postalZip":"8465-8387","country":"Pakistan"},{"customerId":1332,"customerName":"Axel Horn","phone":"(354) 604-8388","email":"libero.dui@hotmail.net","address":"Ap #684-3222 Purus Street","postalZip":"50615","country":"Canada"},{"customerId":1333,"customerName":"Raya Ochoa","phone":"(547) 494-1328","email":"donec.fringilla@yahoo.org","address":"Ap #383-3711 Aliquam Rd.","postalZip":"566332","country":"United States"},{"customerId":1334,"customerName":"Berk Best","phone":"1-783-723-4745","email":"suspendisse.aliquet@google.net","address":"218-782 Proin Av.","postalZip":"30214","country":"Pakistan"},{"customerId":1335,"customerName":"Roanna Rodriquez","phone":"1-351-606-1374","email":"maecenas.iaculis.aliquet@yahoo.couk","address":"Ap #435-2602 Nunc Street","postalZip":"56724","country":"Netherlands"},{"customerId":1336,"customerName":"Simon Navarro","phone":"(776) 407-3328","email":"condimentum.donec@hotmail.edu","address":"500-2422 Lacinia Road","postalZip":"65-796","country":"Australia"},{"customerId":1337,"customerName":"Jaime Sullivan","phone":"(444) 875-8366","email":"odio@yahoo.couk","address":"P.O. Box 248, 6669 Sem Ave","postalZip":"253020","country":"Australia"},{"customerId":1338,"customerName":"Boris Fowler","phone":"(276) 788-0236","email":"duis.gravida@outlook.org","address":"738-2917 Nibh Avenue","postalZip":"11808","country":"New Zealand"},{"customerId":1339,"customerName":"Xenos Newman","phone":"(866) 561-7975","email":"feugiat.metus@hotmail.couk","address":"7339 Morbi Ave","postalZip":"64462","country":"Austria"},{"customerId":1340,"customerName":"Hayley Russell","phone":"(150) 601-3338","email":"vel.pede@yahoo.com","address":"6306 Placerat, Street","postalZip":"3627","country":"Russian Federation"},{"customerId":1341,"customerName":"Bernard Frederick","phone":"(670) 424-2679","email":"at.velit.cras@aol.ca","address":"P.O. Box 388, 8445 Condimentum. Ave","postalZip":"487516","country":"Italy"},{"customerId":1342,"customerName":"Desiree Williams","phone":"(250) 588-7416","email":"sollicitudin.a@icloud.org","address":"796-3664 Lobortis Avenue","postalZip":"87204","country":"South Korea"},{"customerId":1343,"customerName":"Clare Bowen","phone":"1-346-496-3723","email":"nullam.vitae.diam@outlook.couk","address":"479-6977 Gravida Av.","postalZip":"9716 QG","country":"Turkey"},{"customerId":1344,"customerName":"Colorado Ochoa","phone":"(231) 914-2689","email":"in.magna@hotmail.net","address":"881-2543 Morbi St.","postalZip":"647653","country":"Mexico"},{"customerId":1345,"customerName":"Idona Gates","phone":"(264) 925-3735","email":"inceptos.hymenaeos@google.ca","address":"929-2560 Accumsan Street","postalZip":"249589","country":"Vietnam"},{"customerId":1346,"customerName":"Dalton Simpson","phone":"1-568-501-2571","email":"pharetra@aol.edu","address":"631-5847 Aliquet Ave","postalZip":"44554","country":"United States"},{"customerId":1347,"customerName":"Tate Santiago","phone":"(978) 525-5134","email":"nunc.in.at@icloud.org","address":"P.O. Box 355, 283 Ridiculus Ave","postalZip":"8719","country":"Mexico"},{"customerId":1348,"customerName":"Demetrius Boyle","phone":"1-863-361-1919","email":"per.conubia@aol.couk","address":"Ap #455-1160 Nam St.","postalZip":"46594","country":"Belgium"},{"customerId":1349,"customerName":"Walter Dudley","phone":"1-662-882-1484","email":"vitae.aliquet@aol.net","address":"396-1095 Augue Street","postalZip":"86113","country":"South Africa"},{"customerId":1350,"customerName":"Buckminster Knapp","phone":"1-721-445-1634","email":"fringilla.donec@aol.com","address":"463-3365 Tellus. Street","postalZip":"3845","country":"Mexico"},{"customerId":1351,"customerName":"Claudia Monroe","phone":"(377) 474-8872","email":"libero.mauris.aliquam@protonmail.ca","address":"Ap #631-2128 Orci Avenue","postalZip":"45-114","country":"Australia"},{"customerId":1352,"customerName":"Perry Barnes","phone":"(376) 706-8457","email":"amet@google.net","address":"768-739 Integer Ave","postalZip":"543444","country":"Italy"},{"customerId":1353,"customerName":"Rylee Manning","phone":"1-145-872-5110","email":"lorem.fringilla.ornare@hotmail.org","address":"P.O. Box 743, 9906 Elit, St.","postalZip":"94671","country":"Ireland"},{"customerId":1354,"customerName":"Thane Velez","phone":"(477) 965-7329","email":"risus@yahoo.net","address":"4619 Nisl Road","postalZip":"5831","country":"Poland"},{"customerId":1355,"customerName":"Karen Padilla","phone":"(555) 480-6185","email":"fringilla.est@yahoo.edu","address":"Ap #291-7380 Non St.","postalZip":"41791","country":"China"},{"customerId":1356,"customerName":"Jeremy Haney","phone":"1-503-552-3914","email":"varius.orci@hotmail.couk","address":"Ap #982-1886 Justo St.","postalZip":"416248","country":"Germany"},{"customerId":1357,"customerName":"Illiana Henderson","phone":"(848) 154-5971","email":"ac.urna@aol.net","address":"462-1517 Convallis Street","postalZip":"19712","country":"Chile"},{"customerId":1358,"customerName":"Quon Snyder","phone":"(258) 274-6291","email":"dictum.placerat@icloud.com","address":"202-3794 Odio. Av.","postalZip":"675528","country":"China"},{"customerId":1359,"customerName":"Rogan Adkins","phone":"(834) 232-7960","email":"senectus@icloud.edu","address":"P.O. Box 446, 7362 Proin St.","postalZip":"07481","country":"Norway"},{"customerId":1360,"customerName":"Delilah Greene","phone":"1-641-330-0447","email":"sagittis.augue@google.com","address":"7027 Pellentesque. St.","postalZip":"8727-8221","country":"India"},{"customerId":1361,"customerName":"Quynn Sandoval","phone":"(955) 103-3732","email":"nec.ante.maecenas@aol.com","address":"P.O. Box 247, 5287 Pellentesque Av.","postalZip":"84-68","country":"Nigeria"},{"customerId":1362,"customerName":"Lydia Sargent","phone":"1-856-740-7823","email":"a.arcu@icloud.couk","address":"785-6677 Arcu. Rd.","postalZip":"86286","country":"India"},{"customerId":1363,"customerName":"Marshall Dawson","phone":"1-416-827-7501","email":"a.sollicitudin.orci@icloud.couk","address":"698-4234 Consectetuer Ave","postalZip":"16607","country":"Colombia"},{"customerId":1364,"customerName":"Ivan O'Neill","phone":"(455) 224-7425","email":"natoque@google.net","address":"P.O. Box 148, 1124 Ultrices Rd.","postalZip":"61073","country":"Singapore"},{"customerId":1365,"customerName":"Nash Camacho","phone":"1-997-274-3587","email":"donec@protonmail.org","address":"Ap #357-6667 Mi Ave","postalZip":"34782","country":"Russian Federation"},{"customerId":1366,"customerName":"Brynn Forbes","phone":"(975) 296-1204","email":"vitae.sodales.at@outlook.net","address":"P.O. Box 993, 945 Faucibus. Ave","postalZip":"226329","country":"Netherlands"},{"customerId":1367,"customerName":"Guinevere Cote","phone":"1-389-545-7549","email":"posuere.vulputate@icloud.net","address":"341-5041 Nunc Rd.","postalZip":"4043","country":"China"},{"customerId":1368,"customerName":"Fritz Mcdowell","phone":"(624) 556-6133","email":"nulla.at@protonmail.couk","address":"P.O. Box 267, 5900 Arcu Rd.","postalZip":"9117 YN","country":"Vietnam"},{"customerId":1369,"customerName":"Abel Rollins","phone":"1-935-533-1320","email":"integer.tincidunt.aliquam@aol.edu","address":"4591 Quis, Street","postalZip":"410943","country":"China"},{"customerId":1370,"customerName":"Shay Sexton","phone":"1-672-295-8772","email":"nulla@protonmail.ca","address":"8330 Id, Rd.","postalZip":"25994","country":"Peru"},{"customerId":1371,"customerName":"Rebekah Potts","phone":"1-753-351-3583","email":"aenean.sed@protonmail.couk","address":"743-2372 Senectus Rd.","postalZip":"26632","country":"China"},{"customerId":1372,"customerName":"Abel Callahan","phone":"1-238-897-4737","email":"ipsum.ac@protonmail.ca","address":"602-9571 Et Rd.","postalZip":"676111","country":"Ukraine"},{"customerId":1373,"customerName":"Mary Giles","phone":"(735) 725-4428","email":"libero.dui@outlook.ca","address":"Ap #165-736 Nulla Ave","postalZip":"6821","country":"Australia"},{"customerId":1374,"customerName":"Philip Oneil","phone":"(257) 629-2555","email":"aptent.taciti@google.edu","address":"157-3521 Proin Ave","postalZip":"Y0P 8C1","country":"Poland"},{"customerId":1375,"customerName":"Patrick Castro","phone":"1-640-726-6319","email":"elementum.sem@aol.edu","address":"717-1600 Mi St.","postalZip":"598875","country":"New Zealand"},{"customerId":1376,"customerName":"Hilary Whitney","phone":"1-435-463-7643","email":"semper.cursus@icloud.org","address":"967-2948 Cursus Av.","postalZip":"2152","country":"Pakistan"},{"customerId":1377,"customerName":"Remedios Chen","phone":"1-353-715-3714","email":"ac.sem@outlook.net","address":"1176 Massa. Av.","postalZip":"8947","country":"Austria"},{"customerId":1378,"customerName":"Oliver Garrison","phone":"1-888-763-3744","email":"proin@hotmail.net","address":"384-7892 Cras Av.","postalZip":"12817","country":"United States"},{"customerId":1379,"customerName":"Deborah Banks","phone":"1-689-256-5736","email":"facilisis.vitae@yahoo.ca","address":"693-2272 Nec, Road","postalZip":"436775","country":"South Africa"},{"customerId":1380,"customerName":"Gray Dickson","phone":"1-342-858-0605","email":"duis.ac@aol.edu","address":"213-1391 Eu Road","postalZip":"391188","country":"Singapore"},{"customerId":1381,"customerName":"Idola Emerson","phone":"(337) 452-8241","email":"duis.a@protonmail.org","address":"8660 Pharetra Avenue","postalZip":"8263-8908","country":"Mexico"},{"customerId":1382,"customerName":"Elijah Mcfarland","phone":"(736) 200-7353","email":"nec@google.edu","address":"4989 In Road","postalZip":"287217","country":"United States"},{"customerId":1383,"customerName":"Fuller Briggs","phone":"1-761-488-5674","email":"pellentesque.massa@aol.org","address":"Ap #414-1834 Phasellus Ave","postalZip":"68-67","country":"Nigeria"},{"customerId":1384,"customerName":"Cassandra Kline","phone":"(375) 844-8213","email":"augue.ut@aol.ca","address":"2860 Enim. Avenue","postalZip":"T7R 5HK","country":"South Africa"},{"customerId":1385,"customerName":"Dante Schwartz","phone":"1-671-992-7859","email":"mi@aol.org","address":"4007 Sed Road","postalZip":"58671-152","country":"Spain"},{"customerId":1386,"customerName":"Troy Herrera","phone":"1-848-134-1888","email":"integer.urna@google.ca","address":"Ap #894-2060 Ante, Rd.","postalZip":"71831","country":"Nigeria"},{"customerId":1387,"customerName":"Brandon Carter","phone":"(375) 550-5413","email":"blandit.nam.nulla@yahoo.org","address":"Ap #505-8566 Curabitur Street","postalZip":"2163-7106","country":"Chile"},{"customerId":1388,"customerName":"Jane Richardson","phone":"1-687-726-2155","email":"eu.tempor.erat@hotmail.couk","address":"Ap #495-9237 Convallis, St.","postalZip":"5621","country":"Turkey"},{"customerId":1389,"customerName":"Georgia Barber","phone":"(732) 462-7264","email":"cras.vehicula@protonmail.net","address":"P.O. Box 389, 622 Diam Street","postalZip":"67-457","country":"Chile"},{"customerId":1390,"customerName":"Blake Morse","phone":"(368) 540-3115","email":"proin.sed@yahoo.edu","address":"9857 Blandit St.","postalZip":"2634","country":"Netherlands"},{"customerId":1391,"customerName":"Graham King","phone":"1-231-496-2332","email":"metus.vitae.velit@yahoo.ca","address":"Ap #696-8137 In, Rd.","postalZip":"61623","country":"Spain"},{"customerId":1392,"customerName":"Kevyn Cotton","phone":"(724) 617-2252","email":"enim.sit@icloud.ca","address":"Ap #274-4472 Pellentesque Rd.","postalZip":"B1C 9Y0","country":"Norway"},{"customerId":1393,"customerName":"Matthew Powell","phone":"1-330-146-8282","email":"nonummy.ac.feugiat@outlook.ca","address":"P.O. Box 319, 810 Aliquam Av.","postalZip":"28842","country":"Italy"},{"customerId":1394,"customerName":"Hyatt Jacobs","phone":"1-764-370-3841","email":"nunc.id@icloud.com","address":"P.O. Box 130, 8495 Convallis Road","postalZip":"37288","country":"Chile"},{"customerId":1395,"customerName":"Xaviera Porter","phone":"(603) 632-9282","email":"tincidunt@google.ca","address":"P.O. Box 973, 1320 Etiam Av.","postalZip":"776726","country":"Indonesia"},{"customerId":1396,"customerName":"Byron Bender","phone":"1-800-455-2084","email":"enim@google.net","address":"3781 Dolor Avenue","postalZip":"3283","country":"Italy"},{"customerId":1397,"customerName":"Indira Harrell","phone":"(654) 738-6165","email":"convallis.est@hotmail.ca","address":"365-2891 Scelerisque Rd.","postalZip":"73422","country":"China"},{"customerId":1398,"customerName":"Brady Mcdonald","phone":"1-715-461-5072","email":"nulla@yahoo.com","address":"937-4396 Vitae, Street","postalZip":"2628","country":"Chile"},{"customerId":1399,"customerName":"Hadley Sharp","phone":"1-433-710-7754","email":"a@protonmail.edu","address":"420-4962 Mi St.","postalZip":"622548","country":"Peru"},{"customerId":1400,"customerName":"Jared Mercado","phone":"(248) 846-3824","email":"bibendum.fermentum.metus@aol.ca","address":"4990 Blandit St.","postalZip":"3463","country":"Chile"},{"customerId":1401,"customerName":"Robert Guy","phone":"1-357-829-2343","email":"ut.eros.non@protonmail.ca","address":"1961 Quam St.","postalZip":"9271","country":"Russian Federation"},{"customerId":1402,"customerName":"Breanna Mosley","phone":"1-771-929-4147","email":"donec.sollicitudin@google.net","address":"232-6807 Sit Rd.","postalZip":"82425","country":"Costa Rica"},{"customerId":1403,"customerName":"Paula Atkins","phone":"(344) 599-3220","email":"integer.vulputate@google.com","address":"752-1940 Nibh Avenue","postalZip":"5238","country":"Sweden"},{"customerId":1404,"customerName":"Brenda Salinas","phone":"(550) 302-6150","email":"tortor@outlook.com","address":"Ap #558-2552 Dapibus Rd.","postalZip":"4156","country":"South Korea"},{"customerId":1405,"customerName":"Macaulay Trujillo","phone":"1-877-845-3785","email":"est@yahoo.org","address":"337-6767 A, Street","postalZip":"6412","country":"Netherlands"},{"customerId":1406,"customerName":"Mason Cooke","phone":"(351) 681-6735","email":"leo.in@protonmail.edu","address":"Ap #918-8413 Turpis Rd.","postalZip":"Y2M 4T1","country":"United Kingdom"},{"customerId":1407,"customerName":"Karly White","phone":"1-228-311-8259","email":"ac.sem@google.net","address":"Ap #399-1965 Id, St.","postalZip":"2288","country":"Sweden"},{"customerId":1408,"customerName":"Shelly Velasquez","phone":"(177) 208-7167","email":"nunc@google.edu","address":"5845 Eu, Road","postalZip":"534955","country":"Belgium"},{"customerId":1409,"customerName":"Hayes Garrison","phone":"(249) 725-6442","email":"magnis@aol.ca","address":"Ap #454-8593 Eu Ave","postalZip":"577247","country":"Germany"},{"customerId":1410,"customerName":"Cally Graham","phone":"1-236-136-0781","email":"sed.turpis.nec@google.edu","address":"855-351 Auctor St.","postalZip":"0306 CF","country":"Belgium"},{"customerId":1411,"customerName":"Shellie Chen","phone":"1-566-412-5218","email":"tristique@icloud.net","address":"P.O. Box 973, 883 Id St.","postalZip":"62546-868","country":"Ireland"},{"customerId":1412,"customerName":"Kaitlin Newman","phone":"(146) 425-3974","email":"ultrices.posuere@icloud.edu","address":"3837 Eget Rd.","postalZip":"482654","country":"China"},{"customerId":1413,"customerName":"Karyn Webb","phone":"1-472-581-4721","email":"amet.nulla@outlook.ca","address":"P.O. Box 676, 5623 Tristique Av.","postalZip":"30612","country":"Austria"},{"customerId":1414,"customerName":"Sebastian Hendrix","phone":"1-712-549-3131","email":"dolor.sit.amet@yahoo.edu","address":"P.O. Box 294, 6115 Ut Rd.","postalZip":"8706","country":"New Zealand"},{"customerId":1415,"customerName":"Sarah Schroeder","phone":"(274) 632-7831","email":"sit.amet@outlook.ca","address":"704-2747 Adipiscing St.","postalZip":"13-63","country":"Russian Federation"},{"customerId":1416,"customerName":"Malik Head","phone":"(879) 526-5425","email":"ultricies.sem@aol.ca","address":"294-6499 Eu Street","postalZip":"5826","country":"United States"},{"customerId":1417,"customerName":"Mark Downs","phone":"1-398-312-6149","email":"auctor.velit.eget@hotmail.edu","address":"1587 Convallis Road","postalZip":"613182","country":"Netherlands"},{"customerId":1418,"customerName":"Hedley Warner","phone":"(732) 564-7748","email":"proin.sed.turpis@icloud.edu","address":"902-201 In Avenue","postalZip":"8855 WH","country":"Brazil"},{"customerId":1419,"customerName":"Lee Hendrix","phone":"(844) 751-1313","email":"odio.semper@protonmail.com","address":"Ap #441-4472 Fusce Ave","postalZip":"93282","country":"South Africa"},{"customerId":1420,"customerName":"Hadley Carney","phone":"1-743-635-8227","email":"etiam@aol.couk","address":"7589 Augue, Av.","postalZip":"51621","country":"Chile"},{"customerId":1421,"customerName":"Amanda Armstrong","phone":"(921) 533-8075","email":"senectus.et@protonmail.edu","address":"Ap #394-8637 Sit St.","postalZip":"473854","country":"Italy"},{"customerId":1422,"customerName":"Simon Boyd","phone":"1-687-372-4535","email":"aenean@yahoo.com","address":"P.O. Box 374, 2081 Hendrerit Road","postalZip":"8208","country":"Poland"},{"customerId":1423,"customerName":"Regina Guerrero","phone":"(160) 753-3871","email":"nullam.feugiat@aol.com","address":"590-4169 Tellus. Av.","postalZip":"63H 2C8","country":"Norway"},{"customerId":1424,"customerName":"Teagan Maddox","phone":"(347) 225-1895","email":"elementum.at@google.com","address":"Ap #616-2976 Elit Road","postalZip":"16051","country":"Ukraine"},{"customerId":1425,"customerName":"Clementine Meadows","phone":"(815) 346-8474","email":"proin.nisl.sem@google.couk","address":"7562 Fringilla, Ave","postalZip":"5218","country":"Pakistan"},{"customerId":1426,"customerName":"Carter Mcgee","phone":"(485) 816-9556","email":"purus.sapien@google.com","address":"Ap #604-2617 Proin Rd.","postalZip":"72-38","country":"Colombia"},{"customerId":1427,"customerName":"Ray Diaz","phone":"(570) 856-5463","email":"nonummy@yahoo.com","address":"P.O. Box 410, 9374 Dolor. Road","postalZip":"347542","country":"Turkey"},{"customerId":1428,"customerName":"Medge Smith","phone":"1-172-522-0656","email":"enim.non.nisi@google.net","address":"982-3692 Id Rd.","postalZip":"2127","country":"Sweden"},{"customerId":1429,"customerName":"Venus Durham","phone":"1-877-220-6950","email":"lorem.ipsum@aol.net","address":"524-3668 Morbi Rd.","postalZip":"81159-587","country":"Chile"},{"customerId":1430,"customerName":"Jordan Barry","phone":"(319) 823-4618","email":"purus.maecenas@hotmail.couk","address":"Ap #170-4836 Gravida. St.","postalZip":"M01 4FO","country":"Colombia"},{"customerId":1431,"customerName":"Darryl Kidd","phone":"(374) 815-7524","email":"ultricies.ornare.elit@outlook.com","address":"5756 Facilisis Av.","postalZip":"8668","country":"Vietnam"},{"customerId":1432,"customerName":"Rudyard Richmond","phone":"1-686-596-4093","email":"semper@yahoo.ca","address":"403-3191 Nunc Street","postalZip":"472111","country":"Ireland"},{"customerId":1433,"customerName":"Burton Murphy","phone":"(332) 388-1202","email":"felis.donec@google.com","address":"7095 Porttitor Street","postalZip":"85-28","country":"Nigeria"},{"customerId":1434,"customerName":"Shellie Silva","phone":"1-544-711-5586","email":"feugiat.nec@protonmail.edu","address":"495-6059 Felis Avenue","postalZip":"695718","country":"China"},{"customerId":1435,"customerName":"Boris Cummings","phone":"1-448-430-4422","email":"diam.at.pretium@yahoo.org","address":"842-1880 Euismod St.","postalZip":"354827","country":"Poland"},{"customerId":1436,"customerName":"Melyssa Sweeney","phone":"1-773-385-2255","email":"fermentum.arcu@outlook.org","address":"6543 Suspendisse Rd.","postalZip":"1143 WM","country":"Colombia"},{"customerId":1437,"customerName":"Elizabeth Adkins","phone":"1-492-238-3683","email":"luctus.curabitur.egestas@outlook.edu","address":"Ap #186-4670 Ullamcorper, Street","postalZip":"34733","country":"Austria"},{"customerId":1438,"customerName":"Regan Chase","phone":"(427) 874-0222","email":"nulla.tincidunt@google.couk","address":"P.O. Box 729, 9658 Ante. Av.","postalZip":"421677","country":"Canada"},{"customerId":1439,"customerName":"Marcia Hayden","phone":"1-517-454-6216","email":"luctus.ipsum@outlook.couk","address":"4343 Posuere St.","postalZip":"65571","country":"Italy"},{"customerId":1440,"customerName":"Nathan Woodard","phone":"(864) 221-8233","email":"sed.pede@outlook.edu","address":"Ap #721-6523 Nisl St.","postalZip":"958646","country":"Peru"},{"customerId":1441,"customerName":"Patrick Joseph","phone":"(397) 337-8161","email":"enim.etiam@protonmail.org","address":"646 Nibh. Rd.","postalZip":"541326","country":"Indonesia"},{"customerId":1442,"customerName":"Nell Terry","phone":"(319) 269-2944","email":"cursus@google.com","address":"5599 Sapien. Street","postalZip":"14758","country":"Costa Rica"},{"customerId":1443,"customerName":"Jackson Hood","phone":"1-333-858-3511","email":"vel.venenatis@google.com","address":"5730 Integer Rd.","postalZip":"R1M 5M4","country":"Italy"},{"customerId":1444,"customerName":"Bo Townsend","phone":"(982) 834-0159","email":"odio.nam@google.couk","address":"Ap #409-5038 Hendrerit. St.","postalZip":"7330","country":"Canada"},{"customerId":1445,"customerName":"Kasimir Cobb","phone":"1-226-827-6362","email":"libero.morbi@outlook.net","address":"718-687 Laoreet Rd.","postalZip":"73577","country":"Peru"},{"customerId":1446,"customerName":"Seth Clay","phone":"(373) 374-3584","email":"vulputate.posuere@yahoo.com","address":"Ap #282-5429 Odio, Street","postalZip":"543124","country":"Ireland"},{"customerId":1447,"customerName":"May Morse","phone":"(650) 978-2239","email":"enim@outlook.net","address":"216-3840 Sed Rd.","postalZip":"62784","country":"Germany"},{"customerId":1448,"customerName":"Regan Hunt","phone":"1-230-987-0487","email":"faucibus.orci@yahoo.net","address":"404-6518 Lectus Road","postalZip":"27725","country":"Mexico"},{"customerId":1449,"customerName":"Oren Weiss","phone":"1-657-169-2093","email":"interdum.enim@yahoo.com","address":"Ap #520-7390 Orci Av.","postalZip":"83828","country":"China"},{"customerId":1450,"customerName":"Xander Lyons","phone":"(251) 743-6084","email":"sed@icloud.edu","address":"298 Adipiscing. Rd.","postalZip":"557583","country":"Poland"},{"customerId":1451,"customerName":"Jerome Lawson","phone":"1-346-144-0305","email":"dolor@outlook.net","address":"Ap #494-5240 Metus Road","postalZip":"25141","country":"New Zealand"},{"customerId":1452,"customerName":"Lester Morton","phone":"(261) 480-6322","email":"nullam.nisl@google.com","address":"619-705 Posuere, Ave","postalZip":"876325","country":"China"},{"customerId":1453,"customerName":"Daphne Hutchinson","phone":"1-588-521-0089","email":"cras.eget@protonmail.edu","address":"132-2342 Imperdiet St.","postalZip":"53-281","country":"South Korea"},{"customerId":1454,"customerName":"Noel Bell","phone":"1-522-123-1613","email":"mauris.erat@aol.ca","address":"271-8137 Eget Av.","postalZip":"5577","country":"Singapore"},{"customerId":1455,"customerName":"Neil Mcgee","phone":"1-393-523-7116","email":"pretium.et.rutrum@protonmail.couk","address":"4057 Duis Avenue","postalZip":"0245","country":"Sweden"},{"customerId":1456,"customerName":"Rajah Kaufman","phone":"(623) 206-3689","email":"vel@google.edu","address":"P.O. Box 263, 2713 Vivamus Av.","postalZip":"78846","country":"New Zealand"},{"customerId":1457,"customerName":"Pamela Barron","phone":"1-282-880-3258","email":"non.lacinia@yahoo.edu","address":"Ap #339-8091 Egestas Rd.","postalZip":"268541","country":"Germany"},{"customerId":1458,"customerName":"Judith Ortega","phone":"1-430-910-7469","email":"nec.luctus@hotmail.ca","address":"P.O. Box 285, 6251 Etiam Avenue","postalZip":"8597","country":"Turkey"},{"customerId":1459,"customerName":"Quyn Cervantes","phone":"1-661-857-5314","email":"phasellus.nulla@protonmail.org","address":"4746 Lacus. Avenue","postalZip":"76388","country":"Netherlands"},{"customerId":1460,"customerName":"Rebekah Solis","phone":"(621) 685-7840","email":"neque.sed@google.com","address":"743-7503 Sed Street","postalZip":"92472","country":"Ireland"},{"customerId":1461,"customerName":"Rajah Ferguson","phone":"(519) 271-1344","email":"in.dolor.fusce@yahoo.com","address":"678-2766 Tortor. Rd.","postalZip":"25485","country":"United States"},{"customerId":1462,"customerName":"Beau Moran","phone":"(257) 616-6112","email":"ut@hotmail.org","address":"810-5322 Nam Av.","postalZip":"7042","country":"Australia"},{"customerId":1463,"customerName":"Sebastian Gutierrez","phone":"(125) 232-2042","email":"elit.pretium.et@outlook.com","address":"1581 Est. St.","postalZip":"628394","country":"Singapore"},{"customerId":1464,"customerName":"Pearl Brooks","phone":"1-962-618-4885","email":"dui@protonmail.net","address":"P.O. Box 537, 4680 Euismod Ave","postalZip":"12307","country":"Philippines"},{"customerId":1465,"customerName":"Zachery Rowe","phone":"(704) 388-7845","email":"natoque.penatibus.et@aol.ca","address":"Ap #730-411 Id, Street","postalZip":"243539","country":"Russian Federation"},{"customerId":1466,"customerName":"Constance Kirkland","phone":"1-952-518-1532","email":"dolor.sit@aol.org","address":"P.O. Box 137, 950 Eu Rd.","postalZip":"259766","country":"New Zealand"},{"customerId":1467,"customerName":"Callum Melton","phone":"1-740-226-4104","email":"quam.vel.sapien@google.com","address":"248-862 Auctor Street","postalZip":"8573","country":"Mexico"},{"customerId":1468,"customerName":"Byron Pratt","phone":"(188) 775-5788","email":"risus.duis@protonmail.edu","address":"P.O. Box 469, 8493 Neque. St.","postalZip":"83348","country":"Nigeria"},{"customerId":1469,"customerName":"Raymond Mendez","phone":"1-386-551-1685","email":"phasellus@google.net","address":"Ap #810-8261 Quisque St.","postalZip":"283756","country":"Spain"},{"customerId":1470,"customerName":"Dorothy Molina","phone":"1-924-226-0519","email":"dictum.augue@yahoo.com","address":"738-1375 Quam St.","postalZip":"04276","country":"Ireland"},{"customerId":1471,"customerName":"Judith Bryan","phone":"(232) 371-0652","email":"amet.orci.ut@yahoo.edu","address":"665-3294 Erat St.","postalZip":"317846","country":"United Kingdom"},{"customerId":1472,"customerName":"Fletcher Hayes","phone":"1-764-338-1455","email":"orci.quis.lectus@icloud.org","address":"1076 Ornare Road","postalZip":"55514","country":"France"},{"customerId":1473,"customerName":"Brittany Chandler","phone":"(744) 892-8876","email":"duis.mi@protonmail.couk","address":"Ap #561-2067 Sagittis Avenue","postalZip":"871363","country":"Turkey"},{"customerId":1474,"customerName":"Mikayla Jensen","phone":"(485) 285-1430","email":"morbi.tristique.senectus@aol.org","address":"851-6767 Volutpat Road","postalZip":"4292","country":"Nigeria"},{"customerId":1475,"customerName":"Briar King","phone":"(356) 212-7474","email":"non.arcu@google.net","address":"359-6927 Turpis. Street","postalZip":"21-874","country":"Colombia"},{"customerId":1476,"customerName":"Lacey Mercer","phone":"(885) 333-9474","email":"venenatis.a@outlook.org","address":"Ap #419-3943 Duis St.","postalZip":"539142","country":"France"},{"customerId":1477,"customerName":"Eleanor Floyd","phone":"1-177-533-7375","email":"volutpat.ornare@yahoo.com","address":"Ap #960-4112 Elementum, Rd.","postalZip":"718548","country":"Germany"},{"customerId":1478,"customerName":"Maile Mayer","phone":"1-322-315-8111","email":"tincidunt.aliquam@yahoo.com","address":"Ap #486-649 Fusce Rd.","postalZip":"56241","country":"Netherlands"},{"customerId":1479,"customerName":"Hillary Wade","phone":"1-443-311-0868","email":"arcu@google.com","address":"197-6962 Enim. Avenue","postalZip":"5513-2453","country":"Philippines"},{"customerId":1480,"customerName":"Melodie Nieves","phone":"1-988-553-3198","email":"rutrum.urna@google.couk","address":"825 Imperdiet, Rd.","postalZip":"35-49","country":"Australia"},{"customerId":1481,"customerName":"Rudyard Sherman","phone":"(888) 322-1271","email":"amet.lorem@icloud.com","address":"4138 Pede Street","postalZip":"939718","country":"United Kingdom"},{"customerId":1482,"customerName":"Demetria England","phone":"1-501-219-5570","email":"arcu.vestibulum@google.ca","address":"282-7794 Velit. Av.","postalZip":"134573","country":"Ireland"},{"customerId":1483,"customerName":"Travis Barron","phone":"(831) 197-9763","email":"sem.pellentesque.ut@google.net","address":"Ap #987-3412 Tincidunt, St.","postalZip":"40337","country":"Australia"},{"customerId":1484,"customerName":"Fuller Barnes","phone":"(854) 764-4813","email":"purus@hotmail.net","address":"9191 Congue Rd.","postalZip":"S6V 6C2","country":"Brazil"},{"customerId":1485,"customerName":"Jacqueline Riggs","phone":"(210) 411-0395","email":"sed.auctor.odio@icloud.com","address":"Ap #758-4793 Pharetra, Rd.","postalZip":"631719","country":"Australia"},{"customerId":1486,"customerName":"Cherokee Cherry","phone":"1-759-146-3635","email":"condimentum.eget@icloud.com","address":"1779 Semper St.","postalZip":"2555","country":"Colombia"},{"customerId":1487,"customerName":"Eliana Wiggins","phone":"1-340-861-3284","email":"nulla.facilisis@google.com","address":"874-4413 Nulla St.","postalZip":"18721","country":"India"},{"customerId":1488,"customerName":"Ocean Nolan","phone":"(440) 888-6142","email":"urna@google.ca","address":"7353 Magna St.","postalZip":"P6N 8IW","country":"Pakistan"},{"customerId":1489,"customerName":"Phillip Malone","phone":"1-298-214-1548","email":"donec.tempus.lorem@protonmail.net","address":"816-1177 Ac Av.","postalZip":"874549","country":"Italy"},{"customerId":1490,"customerName":"Bertha Browning","phone":"1-976-795-7866","email":"scelerisque.scelerisque.dui@icloud.org","address":"Ap #584-7985 Ultrices. St.","postalZip":"75771-071","country":"Netherlands"},{"customerId":1491,"customerName":"Kiara Keller","phone":"(532) 654-4924","email":"duis.a@aol.org","address":"P.O. Box 462, 6705 Mauris Avenue","postalZip":"16101","country":"Philippines"},{"customerId":1492,"customerName":"Roary Mcguire","phone":"1-584-974-2759","email":"tincidunt.tempus@hotmail.com","address":"351-5478 Lorem Av.","postalZip":"29739","country":"Netherlands"},{"customerId":1493,"customerName":"Gretchen Terrell","phone":"1-753-115-8564","email":"magna@protonmail.ca","address":"P.O. Box 450, 4866 Aptent St.","postalZip":"6975-9289","country":"Singapore"},{"customerId":1494,"customerName":"Wilma Lewis","phone":"1-242-889-5854","email":"adipiscing.elit@google.couk","address":"Ap #107-998 Fermentum Av.","postalZip":"78445","country":"Philippines"},{"customerId":1495,"customerName":"Malcolm Flynn","phone":"(362) 465-8764","email":"integer@yahoo.edu","address":"596-7143 Et, St.","postalZip":"79-629","country":"United Kingdom"},{"customerId":1496,"customerName":"Noah Summers","phone":"1-127-528-8858","email":"convallis@google.net","address":"Ap #573-9650 Et Street","postalZip":"763186","country":"Mexico"},{"customerId":1497,"customerName":"Athena Noel","phone":"(185) 760-5457","email":"molestie.arcu@google.couk","address":"938-1487 Nunc, Av.","postalZip":"58593","country":"Philippines"},{"customerId":1498,"customerName":"William Tyler","phone":"1-705-351-4918","email":"faucibus.lectus@aol.net","address":"559-438 Risus. Road","postalZip":"7065","country":"Vietnam"},{"customerId":1499,"customerName":"Dylan Hutchinson","phone":"(652) 906-4717","email":"sed.diam@yahoo.edu","address":"356-3693 Blandit Road","postalZip":"77279","country":"United States"},{"customerId":1500,"customerName":"Flynn Hartman","phone":"1-468-568-4494","email":"turpis.vitae.purus@google.net","address":"675-5870 Sapien. St.","postalZip":"791118","country":"Austria"},{"customerId":1501,"customerName":"McKenzie Mcneil","phone":"(166) 390-7282","email":"praesent.luctus.curabitur@outlook.com","address":"Ap #116-7259 Interdum. Avenue","postalZip":"2110","country":"Ireland"},{"customerId":1502,"customerName":"Tarik Fields","phone":"1-866-750-2706","email":"libero.proin@outlook.org","address":"7574 Donec Rd.","postalZip":"80177","country":"Nigeria"},{"customerId":1503,"customerName":"Whilemina Reilly","phone":"1-501-858-3298","email":"dictum.phasellus@yahoo.net","address":"Ap #120-762 Rhoncus. Rd.","postalZip":"B7S 5A2","country":"China"},{"customerId":1504,"customerName":"Aaron Lewis","phone":"1-526-722-6692","email":"nunc@icloud.edu","address":"419-2134 Vitae St.","postalZip":"37464","country":"Ukraine"},{"customerId":1505,"customerName":"Basil Sloan","phone":"(328) 668-5437","email":"nec@protonmail.edu","address":"Ap #565-1866 Mi Rd.","postalZip":"21507","country":"United States"},{"customerId":1506,"customerName":"Ezra Banks","phone":"1-233-743-6012","email":"vulputate.posuere.vulputate@google.edu","address":"840-4158 Nibh. Road","postalZip":"63478","country":"Mexico"},{"customerId":1507,"customerName":"Ian Wyatt","phone":"(467) 713-5531","email":"orci@outlook.ca","address":"Ap #686-9816 Vitae Av.","postalZip":"93364","country":"Austria"},{"customerId":1508,"customerName":"Ahmed James","phone":"1-707-235-8866","email":"egestas@hotmail.org","address":"Ap #960-1187 Massa. Ave","postalZip":"UB4 7RK","country":"Mexico"},{"customerId":1509,"customerName":"Cailin Smith","phone":"1-885-601-4724","email":"purus.in.molestie@google.com","address":"928-392 Ligula. Ave","postalZip":"24831","country":"New Zealand"},{"customerId":1510,"customerName":"Kylee Gallegos","phone":"1-701-158-4685","email":"porta.elit.a@outlook.edu","address":"571-6772 Erat Road","postalZip":"50447-730","country":"Germany"},{"customerId":1511,"customerName":"Aimee Myers","phone":"(868) 615-7841","email":"aliquet.nec@protonmail.net","address":"P.O. Box 543, 5797 Eu Avenue","postalZip":"37494","country":"Canada"},{"customerId":1512,"customerName":"Abbot Spencer","phone":"(771) 675-6803","email":"blandit.enim@protonmail.edu","address":"Ap #645-8349 Ad Ave","postalZip":"12153","country":"Germany"},{"customerId":1513,"customerName":"Nell Wilcox","phone":"(466) 387-5621","email":"eu.arcu.morbi@protonmail.couk","address":"P.O. Box 295, 2886 Ante. St.","postalZip":"8567-6327","country":"Colombia"},{"customerId":1514,"customerName":"Maggy Hood","phone":"1-856-525-6187","email":"sed.eget@icloud.com","address":"P.O. Box 732, 6922 Odio. St.","postalZip":"515861","country":"Singapore"},{"customerId":1515,"customerName":"Macon Mccall","phone":"1-884-618-4634","email":"cubilia.curae@protonmail.ca","address":"8746 Vel Street","postalZip":"8911","country":"United States"},{"customerId":1516,"customerName":"Ezekiel Cooley","phone":"1-302-114-6634","email":"amet.metus@google.com","address":"880-2620 Egestas. Street","postalZip":"9912 DN","country":"New Zealand"},{"customerId":1517,"customerName":"Russell Hendrix","phone":"(328) 841-5878","email":"condimentum.eget.volutpat@outlook.ca","address":"Ap #520-4463 Metus Avenue","postalZip":"24768","country":"Austria"},{"customerId":1518,"customerName":"Tad Norman","phone":"(539) 650-8887","email":"eu.augue@yahoo.net","address":"Ap #655-4472 Vitae Rd.","postalZip":"74831","country":"Mexico"},{"customerId":1519,"customerName":"Adena Baxter","phone":"1-412-781-7545","email":"ultrices.duis@icloud.org","address":"245 Cras Road","postalZip":"5765","country":"South Africa"},{"customerId":1520,"customerName":"Tate Dawson","phone":"(841) 344-1704","email":"vestibulum.neque@outlook.net","address":"6714 Hendrerit Rd.","postalZip":"72656","country":"Mexico"},{"customerId":1521,"customerName":"Dara George","phone":"1-346-386-2181","email":"sed.et@hotmail.couk","address":"586-3321 Elit St.","postalZip":"14847","country":"Sweden"},{"customerId":1522,"customerName":"Jessica Bell","phone":"(740) 633-3725","email":"vestibulum@outlook.net","address":"8717 Proin Street","postalZip":"14761","country":"Nigeria"},{"customerId":1523,"customerName":"Steel Dale","phone":"1-586-946-4061","email":"imperdiet.dictum@protonmail.net","address":"3549 Vestibulum Ave","postalZip":"306701","country":"Singapore"},{"customerId":1524,"customerName":"Grace Thornton","phone":"1-404-815-9933","email":"semper.rutrum@google.org","address":"562-2784 Molestie Street","postalZip":"432990","country":"Russian Federation"},{"customerId":1525,"customerName":"Christian Copeland","phone":"1-569-813-8954","email":"risus.quisque@icloud.couk","address":"7909 Dictum Road","postalZip":"78383-26021","country":"Pakistan"},{"customerId":1526,"customerName":"Nissim Jackson","phone":"(646) 231-6467","email":"in.molestie@hotmail.ca","address":"990-3298 Orci Av.","postalZip":"15158","country":"Nigeria"},{"customerId":1527,"customerName":"Anthony Spencer","phone":"1-207-684-3725","email":"a.tortor@google.edu","address":"P.O. Box 692, 9331 Tincidunt Road","postalZip":"426698","country":"Turkey"},{"customerId":1528,"customerName":"Yoshio Herman","phone":"(557) 625-9833","email":"sapien.imperdiet.ornare@outlook.ca","address":"256-8143 Aliquam, St.","postalZip":"51045","country":"United States"},{"customerId":1529,"customerName":"Karleigh William","phone":"1-876-823-6379","email":"a.facilisis.non@google.couk","address":"9877 Mattis. Av.","postalZip":"86464","country":"Sweden"},{"customerId":1530,"customerName":"Jeremy Lloyd","phone":"(460) 415-3476","email":"scelerisque.neque.nullam@google.ca","address":"P.O. Box 338, 8128 Donec Avenue","postalZip":"61407-521","country":"Germany"},{"customerId":1531,"customerName":"Ivy English","phone":"1-179-798-6357","email":"dictum@aol.ca","address":"583 Dui, Rd.","postalZip":"213345","country":"Turkey"},{"customerId":1532,"customerName":"Jenette Bentley","phone":"1-782-772-5541","email":"convallis@outlook.edu","address":"P.O. Box 123, 4816 Tristique St.","postalZip":"8861","country":"Singapore"},{"customerId":1533,"customerName":"Mary Miranda","phone":"1-759-387-2924","email":"lacus.aliquam@icloud.ca","address":"1032 Massa. Road","postalZip":"338261","country":"Ireland"},{"customerId":1534,"customerName":"Neil Meyers","phone":"(784) 575-4741","email":"quis@yahoo.com","address":"299-1192 At, St.","postalZip":"564168","country":"Pakistan"},{"customerId":1535,"customerName":"Burke Guthrie","phone":"1-737-670-8343","email":"massa.mauris.vestibulum@icloud.org","address":"3879 Justo Road","postalZip":"61176","country":"Peru"},{"customerId":1536,"customerName":"Uriel Cervantes","phone":"1-648-388-3587","email":"at.velit.cras@yahoo.net","address":"7752 Et, Road","postalZip":"PG5A 1OK","country":"Canada"},{"customerId":1537,"customerName":"Alexander Ryan","phone":"1-807-745-3807","email":"dictum.ultricies@google.edu","address":"125-2358 Consectetuer Avenue","postalZip":"56-15","country":"South Korea"},{"customerId":1538,"customerName":"Mechelle Gilbert","phone":"1-362-242-5351","email":"vestibulum.lorem@outlook.com","address":"835-6325 Sapien. Road","postalZip":"785957","country":"Sweden"},{"customerId":1539,"customerName":"Serina Ratliff","phone":"1-733-412-4228","email":"libero.dui@yahoo.couk","address":"Ap #179-2329 Duis Avenue","postalZip":"795272","country":"Russian Federation"},{"customerId":1540,"customerName":"Baker Sloan","phone":"(753) 257-3255","email":"tortor.dictum.eu@protonmail.ca","address":"486-2340 Fringilla Av.","postalZip":"2801","country":"India"},{"customerId":1541,"customerName":"Zena Rowe","phone":"(575) 288-5544","email":"quam.a@outlook.couk","address":"161-2481 Nec Rd.","postalZip":"02070","country":"Ireland"},{"customerId":1542,"customerName":"Nadine Duke","phone":"(835) 884-7769","email":"maecenas.malesuada@protonmail.net","address":"5794 Vel St.","postalZip":"50105","country":"France"},{"customerId":1543,"customerName":"Sara Mcdonald","phone":"(581) 214-4133","email":"nullam@outlook.edu","address":"170-1390 Viverra. Rd.","postalZip":"248080","country":"Ireland"},{"customerId":1544,"customerName":"Quinlan Garner","phone":"(238) 571-0284","email":"lectus.ante@yahoo.com","address":"Ap #292-3354 Eu St.","postalZip":"7152","country":"Singapore"},{"customerId":1545,"customerName":"Cade Garza","phone":"1-724-688-3790","email":"congue.in@outlook.org","address":"Ap #112-7956 Donec Road","postalZip":"53-59","country":"Mexico"},{"customerId":1546,"customerName":"Leonard Nicholson","phone":"1-970-237-7180","email":"vitae.posuere@outlook.org","address":"Ap #744-3445 Tempor Rd.","postalZip":"2672","country":"Sweden"},{"customerId":1547,"customerName":"Julian Rodriguez","phone":"(974) 443-3175","email":"quisque.ac.libero@outlook.net","address":"3467 Hymenaeos. Av.","postalZip":"8453","country":"Costa Rica"},{"customerId":1548,"customerName":"Carolyn Mcfadden","phone":"1-825-506-0384","email":"orci.luctus@icloud.net","address":"323-6285 Risus. Road","postalZip":"7046","country":"Brazil"},{"customerId":1549,"customerName":"Tate Morin","phone":"1-635-725-4085","email":"montes.nascetur.ridiculus@protonmail.org","address":"Ap #688-4955 Arcu. St.","postalZip":"30881","country":"New Zealand"},{"customerId":1550,"customerName":"Xander Bullock","phone":"1-974-842-8466","email":"metus.in@outlook.net","address":"509-6735 Non St.","postalZip":"393524","country":"South Africa"},{"customerId":1551,"customerName":"Chester Lyons","phone":"1-438-891-7757","email":"consectetuer.adipiscing@protonmail.org","address":"Ap #513-1993 Quisque Street","postalZip":"45140-18471","country":"Sweden"},{"customerId":1552,"customerName":"Odessa Becker","phone":"(456) 252-3811","email":"sodales@hotmail.ca","address":"Ap #674-147 Augue Ave","postalZip":"21528-58414","country":"New Zealand"},{"customerId":1553,"customerName":"Tara Best","phone":"1-838-562-6847","email":"cum.sociis@outlook.com","address":"Ap #319-8597 Velit. Ave","postalZip":"12603","country":"Belgium"},{"customerId":1554,"customerName":"Lael Gross","phone":"1-461-738-3675","email":"varius.nam@yahoo.net","address":"515-995 Rhoncus. Avenue","postalZip":"21237","country":"Russian Federation"},{"customerId":1555,"customerName":"Kelly Savage","phone":"1-665-770-0615","email":"erat@google.net","address":"Ap #775-3829 Et, Avenue","postalZip":"671683","country":"Pakistan"},{"customerId":1556,"customerName":"Theodore Mcneil","phone":"1-817-208-4768","email":"consequat.enim@aol.ca","address":"649-3431 Nunc St.","postalZip":"33426","country":"Costa Rica"},{"customerId":1557,"customerName":"Hilary Guthrie","phone":"(441) 586-5208","email":"in.consequat@icloud.ca","address":"662-355 Viverra. Avenue","postalZip":"202273","country":"France"},{"customerId":1558,"customerName":"Carissa Perkins","phone":"1-227-673-1245","email":"habitant@aol.edu","address":"947-3502 Auctor Rd.","postalZip":"157261","country":"Italy"},{"customerId":1559,"customerName":"Claudia Foreman","phone":"(618) 390-6326","email":"nascetur@aol.org","address":"Ap #474-9359 Tellus. Av.","postalZip":"33525452","country":"Philippines"},{"customerId":1560,"customerName":"Shana Valdez","phone":"(204) 242-7458","email":"diam.proin@google.edu","address":"959-8629 Mus. Ave","postalZip":"245686","country":"France"},{"customerId":1561,"customerName":"Nadine Kim","phone":"(566) 178-6838","email":"phasellus.in@outlook.com","address":"Ap #880-6632 At, Road","postalZip":"604233","country":"South Korea"},{"customerId":1562,"customerName":"Tamekah Calderon","phone":"(589) 642-1591","email":"lectus.convallis@hotmail.edu","address":"3995 Sit Ave","postalZip":"8486","country":"India"},{"customerId":1563,"customerName":"Leah Battle","phone":"1-265-436-2635","email":"odio.phasellus@hotmail.couk","address":"Ap #694-436 Cras Rd.","postalZip":"311774","country":"Philippines"},{"customerId":1564,"customerName":"Vance Battle","phone":"1-815-769-4626","email":"condimentum.donec@icloud.com","address":"386-9686 Quisque Rd.","postalZip":"3812","country":"Norway"},{"customerId":1565,"customerName":"Fallon Mcdowell","phone":"(244) 856-6414","email":"arcu.iaculis.enim@hotmail.couk","address":"P.O. Box 120, 2304 Id, Road","postalZip":"48533","country":"Australia"},{"customerId":1566,"customerName":"Guinevere James","phone":"1-859-864-6361","email":"nonummy.ut@hotmail.com","address":"Ap #216-8629 Neque Rd.","postalZip":"34658","country":"Nigeria"},{"customerId":1567,"customerName":"Kylynn Villarreal","phone":"1-748-281-4551","email":"conubia.nostra.per@outlook.org","address":"500-8908 In Street","postalZip":"903978","country":"Russian Federation"},{"customerId":1568,"customerName":"James Baxter","phone":"1-861-691-8354","email":"vel.sapien.imperdiet@outlook.net","address":"Ap #188-5927 Sodales Road","postalZip":"666693","country":"Nigeria"},{"customerId":1569,"customerName":"Dominic Randolph","phone":"1-846-244-6548","email":"libero.donec@hotmail.org","address":"Ap #962-5268 Neque. Rd.","postalZip":"48-25","country":"Colombia"},{"customerId":1570,"customerName":"Jael Boone","phone":"(675) 840-5703","email":"cursus.diam@google.edu","address":"5719 Et, Street","postalZip":"S2N 5B5","country":"Sweden"},{"customerId":1571,"customerName":"Axel Moses","phone":"1-572-176-6541","email":"lobortis.augue.scelerisque@aol.net","address":"Ap #866-9703 Aliquet St.","postalZip":"892948","country":"Colombia"},{"customerId":1572,"customerName":"Kirby Olson","phone":"1-318-371-3883","email":"in.magna@yahoo.com","address":"Ap #297-7935 Ipsum Avenue","postalZip":"F8B 6AE","country":"France"},{"customerId":1573,"customerName":"Griffith Wright","phone":"1-775-697-9174","email":"molestie@protonmail.couk","address":"Ap #882-9342 Amet Rd.","postalZip":"2158","country":"Australia"},{"customerId":1574,"customerName":"Jemima Beck","phone":"(467) 488-2618","email":"montes.nascetur@aol.couk","address":"P.O. Box 664, 7037 Amet St.","postalZip":"UV75 0QY","country":"India"},{"customerId":1575,"customerName":"Tallulah Branch","phone":"(880) 338-1627","email":"tristique.senectus@icloud.net","address":"2481 Urna Av.","postalZip":"30515","country":"Australia"},{"customerId":1576,"customerName":"Dara Herman","phone":"(760) 541-2943","email":"lectus.justo.eu@google.ca","address":"3211 Luctus Rd.","postalZip":"10-363","country":"Australia"},{"customerId":1577,"customerName":"Reece Carter","phone":"(265) 319-3355","email":"quam@hotmail.couk","address":"P.O. Box 767, 682 Sem, Road","postalZip":"54867","country":"Mexico"},{"customerId":1578,"customerName":"Xyla Butler","phone":"1-384-877-3155","email":"cum.sociis.natoque@aol.net","address":"Ap #186-6630 Tempus St.","postalZip":"3698","country":"Vietnam"},{"customerId":1579,"customerName":"Libby Madden","phone":"(479) 936-4346","email":"enim@hotmail.ca","address":"Ap #383-3743 Accumsan Avenue","postalZip":"4784","country":"Chile"},{"customerId":1580,"customerName":"Keaton Gonzales","phone":"1-630-158-6984","email":"odio.auctor@aol.edu","address":"7406 Arcu. Street","postalZip":"338469","country":"China"},{"customerId":1581,"customerName":"Guinevere Dixon","phone":"(763) 788-7542","email":"nunc.lectus.pede@aol.edu","address":"643-1844 Lorem. Ave","postalZip":"40213","country":"Colombia"},{"customerId":1582,"customerName":"Priscilla Pena","phone":"1-607-730-5138","email":"consequat.purus@protonmail.edu","address":"P.O. Box 563, 824 Aliquet Street","postalZip":"9853","country":"Australia"},{"customerId":1583,"customerName":"Timon Hopper","phone":"1-790-808-7406","email":"dictum.mi.ac@outlook.net","address":"Ap #341-8394 Luctus Street","postalZip":"11563","country":"Sweden"},{"customerId":1584,"customerName":"Carl Castaneda","phone":"1-926-562-5316","email":"elit.a@outlook.couk","address":"832-5155 Nascetur Ave","postalZip":"56205","country":"Peru"},{"customerId":1585,"customerName":"Xaviera Kelley","phone":"(723) 911-7523","email":"cum.sociis@icloud.org","address":"Ap #427-903 Euismod Av.","postalZip":"820757","country":"Netherlands"},{"customerId":1586,"customerName":"Unity Henson","phone":"1-953-684-5154","email":"a.purus@protonmail.org","address":"Ap #695-2807 Senectus Rd.","postalZip":"9382","country":"Italy"},{"customerId":1587,"customerName":"Gage Holden","phone":"1-355-247-5242","email":"odio.sagittis@google.couk","address":"457-1090 Enim Rd.","postalZip":"475296","country":"Brazil"},{"customerId":1588,"customerName":"Nita Adkins","phone":"1-584-691-5154","email":"amet@google.com","address":"5126 Nunc. Av.","postalZip":"WU31 2QK","country":"Australia"},{"customerId":1589,"customerName":"Keegan Lamb","phone":"1-716-343-3456","email":"pulvinar@yahoo.net","address":"Ap #372-4204 At Road","postalZip":"87-67","country":"Philippines"},{"customerId":1590,"customerName":"Quinn Sweet","phone":"1-239-328-7187","email":"adipiscing.elit@yahoo.net","address":"476-7064 Libero. Ave","postalZip":"7228","country":"Philippines"},{"customerId":1591,"customerName":"Ezra Greene","phone":"1-841-595-9177","email":"feugiat.non@aol.net","address":"Ap #718-444 Eros St.","postalZip":"43955","country":"Russian Federation"},{"customerId":1592,"customerName":"Frances Flowers","phone":"1-146-387-1926","email":"accumsan@hotmail.ca","address":"645-5000 Aliquam Street","postalZip":"852576","country":"Poland"},{"customerId":1593,"customerName":"Trevor Dejesus","phone":"(884) 636-8153","email":"ultrices.posuere.cubilia@icloud.edu","address":"Ap #276-122 Donec Street","postalZip":"541234","country":"Vietnam"},{"customerId":1594,"customerName":"Neil Cummings","phone":"1-612-507-2021","email":"ligula.tortor.dictum@google.ca","address":"Ap #612-9353 Sagittis. Street","postalZip":"337068","country":"Singapore"},{"customerId":1595,"customerName":"Lillith Gay","phone":"(274) 572-2548","email":"imperdiet@yahoo.edu","address":"Ap #622-2006 Cursus Ave","postalZip":"30811","country":"Ukraine"},{"customerId":1596,"customerName":"Illiana Vincent","phone":"(826) 460-8876","email":"maecenas.libero@aol.org","address":"P.O. Box 217, 4003 Ut, Rd.","postalZip":"T2M 4S4","country":"New Zealand"},{"customerId":1597,"customerName":"Ezra Finch","phone":"1-454-647-1191","email":"iaculis.odio@google.org","address":"288-2063 Auctor, Ave","postalZip":"5297","country":"Sweden"},{"customerId":1598,"customerName":"Chadwick Carney","phone":"(850) 217-8180","email":"nascetur.ridiculus.mus@icloud.couk","address":"Ap #246-2593 Eu Ave","postalZip":"4458","country":"United Kingdom"},{"customerId":1599,"customerName":"Ira Molina","phone":"(431) 332-4783","email":"feugiat@yahoo.ca","address":"Ap #310-1089 Semper Avenue","postalZip":"30765","country":"Sweden"},{"customerId":1600,"customerName":"Maya Chang","phone":"1-792-445-6513","email":"velit.aliquam@yahoo.net","address":"Ap #376-990 Risus. Street","postalZip":"36147","country":"Philippines"},{"customerId":1601,"customerName":"Ferris Mcpherson","phone":"(281) 367-9438","email":"elit.elit@protonmail.edu","address":"P.O. Box 186, 4085 Senectus Rd.","postalZip":"57188","country":"Italy"},{"customerId":1602,"customerName":"Rebekah Mason","phone":"1-563-616-6157","email":"sagittis@hotmail.org","address":"P.O. Box 662, 8738 Nullam St.","postalZip":"3617 FY","country":"Sweden"},{"customerId":1603,"customerName":"Ahmed Booker","phone":"1-825-659-3780","email":"dui.nec@hotmail.ca","address":"4536 Adipiscing Avenue","postalZip":"17455","country":"Pakistan"},{"customerId":1604,"customerName":"Azalia Huber","phone":"(825) 379-6869","email":"sed.libero.proin@icloud.net","address":"558-7276 Eleifend, St.","postalZip":"965025","country":"Brazil"},{"customerId":1605,"customerName":"Ella Preston","phone":"(831) 264-7575","email":"nibh.quisque.nonummy@yahoo.couk","address":"566-8199 Mus. Rd.","postalZip":"3439","country":"Ukraine"},{"customerId":1606,"customerName":"Blythe Pittman","phone":"(834) 671-7126","email":"mauris.blandit@aol.org","address":"125-4326 Purus St.","postalZip":"4317","country":"Ukraine"},{"customerId":1607,"customerName":"Yoshio Chapman","phone":"(898) 986-1273","email":"sit.amet@protonmail.edu","address":"Ap #155-2288 Libero Av.","postalZip":"44743","country":"Philippines"},{"customerId":1608,"customerName":"Anika Little","phone":"1-594-637-8201","email":"donec@outlook.couk","address":"Ap #294-872 Mauris Ave","postalZip":"06379","country":"Poland"},{"customerId":1609,"customerName":"Macon Workman","phone":"(289) 594-1157","email":"dis.parturient.montes@google.edu","address":"936-3514 Vitae, Ave","postalZip":"0252","country":"Canada"},{"customerId":1610,"customerName":"Garrison Durham","phone":"(258) 870-0620","email":"libero.integer@icloud.net","address":"P.O. Box 876, 1097 Magnis St.","postalZip":"30815","country":"Colombia"},{"customerId":1611,"customerName":"Veda Rios","phone":"(466) 365-7576","email":"mollis.integer@hotmail.org","address":"Ap #592-8065 Lacus. Street","postalZip":"835424","country":"Brazil"},{"customerId":1612,"customerName":"Whilemina Dominguez","phone":"(284) 662-2143","email":"sit.amet@icloud.couk","address":"938-7019 Sociis St.","postalZip":"485445","country":"China"},{"customerId":1613,"customerName":"Brett Morris","phone":"1-196-128-3152","email":"mi.ac@protonmail.edu","address":"545-3988 Mattis. Avenue","postalZip":"36438","country":"Spain"},{"customerId":1614,"customerName":"Elliott Gray","phone":"1-552-222-8342","email":"fermentum.metus@google.org","address":"284-9443 Justo Road","postalZip":"77-479","country":"Australia"},{"customerId":1615,"customerName":"Graham Norton","phone":"(867) 546-3531","email":"cursus.et@icloud.edu","address":"1955 Lorem, Av.","postalZip":"74772-058","country":"China"},{"customerId":1616,"customerName":"Palmer White","phone":"(855) 828-3747","email":"in.scelerisque@yahoo.edu","address":"Ap #694-6826 Tincidunt. Ave","postalZip":"16885","country":"China"},{"customerId":1617,"customerName":"Erasmus Camacho","phone":"1-948-196-9143","email":"vitae.nibh@aol.ca","address":"Ap #363-1053 Class Avenue","postalZip":"38169","country":"Mexico"},{"customerId":1618,"customerName":"Imogene Guy","phone":"1-276-653-6350","email":"metus.vitae.velit@outlook.ca","address":"5267 Dictum St.","postalZip":"041885","country":"Philippines"},{"customerId":1619,"customerName":"Aaron Bennett","phone":"(833) 375-4642","email":"et.lacinia@google.couk","address":"9677 Eleifend St.","postalZip":"831378","country":"Netherlands"},{"customerId":1620,"customerName":"Arden Patel","phone":"(622) 136-5410","email":"duis.a@hotmail.org","address":"202-1668 Gravida. Avenue","postalZip":"19038","country":"Colombia"},{"customerId":1621,"customerName":"Nissim Gray","phone":"1-405-952-2632","email":"aliquam@google.org","address":"Ap #919-8162 Ipsum Rd.","postalZip":"8488-8333","country":"Netherlands"},{"customerId":1622,"customerName":"Joshua Travis","phone":"(737) 261-3075","email":"mauris@google.org","address":"P.O. Box 475, 3136 Vitae Av.","postalZip":"818843","country":"Brazil"},{"customerId":1623,"customerName":"Benedict Sullivan","phone":"(458) 408-9656","email":"velit.justo@icloud.couk","address":"P.O. Box 632, 5450 Dui Road","postalZip":"6156 QH","country":"Costa Rica"},{"customerId":1624,"customerName":"Rudyard Battle","phone":"(665) 849-7813","email":"nullam.feugiat@icloud.net","address":"317-6615 Turpis Av.","postalZip":"7505","country":"Colombia"},{"customerId":1625,"customerName":"Clio Maddox","phone":"1-428-714-9741","email":"cras.vehicula.aliquet@outlook.com","address":"Ap #335-8353 Ultricies St.","postalZip":"1185 JV","country":"Russian Federation"},{"customerId":1626,"customerName":"Peter Gallagher","phone":"1-614-870-0551","email":"nunc.mauris@outlook.ca","address":"459-6842 Aenean St.","postalZip":"74645-22584","country":"New Zealand"},{"customerId":1627,"customerName":"Chester Reed","phone":"(840) 373-0625","email":"at@yahoo.com","address":"521-9750 Luctus Ave","postalZip":"53878","country":"France"},{"customerId":1628,"customerName":"Basia O'Neill","phone":"(782) 198-3175","email":"odio.phasellus@google.couk","address":"773-7288 Phasellus Rd.","postalZip":"490253","country":"Chile"},{"customerId":1629,"customerName":"Jack Benson","phone":"(281) 256-6334","email":"vulputate.lacus@yahoo.com","address":"194 Sed Road","postalZip":"8222","country":"Turkey"},{"customerId":1630,"customerName":"Shoshana Maddox","phone":"(568) 652-9811","email":"massa.non.ante@icloud.ca","address":"Ap #342-1108 Vel, St.","postalZip":"28638","country":"Sweden"},{"customerId":1631,"customerName":"Wing Atkinson","phone":"(467) 822-4681","email":"cras.convallis@hotmail.org","address":"Ap #120-3919 Hymenaeos. Road","postalZip":"7757","country":"South Korea"},{"customerId":1632,"customerName":"Callum Hobbs","phone":"(372) 578-6405","email":"nisi.cum.sociis@yahoo.couk","address":"9163 Lectus Avenue","postalZip":"445227","country":"Singapore"},{"customerId":1633,"customerName":"Lucian Tate","phone":"(862) 273-4625","email":"rutrum.magna@yahoo.edu","address":"Ap #525-9688 Suspendisse Ave","postalZip":"50111","country":"United Kingdom"},{"customerId":1634,"customerName":"Upton Holloway","phone":"(946) 658-1201","email":"in.aliquet@outlook.org","address":"759-5589 Dictum Road","postalZip":"3983","country":"United States"},{"customerId":1635,"customerName":"Dylan Wong","phone":"1-727-363-2861","email":"eros@icloud.ca","address":"7860 Ac Road","postalZip":"M3N 5W3","country":"China"},{"customerId":1636,"customerName":"Tara Aguilar","phone":"(765) 709-4857","email":"in.consectetuer@icloud.ca","address":"139-9509 Dolor Av.","postalZip":"64-615","country":"South Africa"},{"customerId":1637,"customerName":"Rafael Olson","phone":"(226) 352-1331","email":"et@protonmail.ca","address":"8503 Varius Road","postalZip":"66052","country":"Norway"},{"customerId":1638,"customerName":"Bernard Walton","phone":"(281) 540-7265","email":"rutrum.lorem.ac@aol.couk","address":"Ap #567-7048 Sem St.","postalZip":"645666","country":"Norway"},{"customerId":1639,"customerName":"Katelyn Pena","phone":"1-548-345-8795","email":"ligula.nullam.enim@yahoo.ca","address":"P.O. Box 887, 2166 Mus. Ave","postalZip":"128582","country":"France"},{"customerId":1640,"customerName":"Elmo Hewitt","phone":"(298) 925-8748","email":"a.auctor@icloud.com","address":"P.O. Box 251, 5241 Eget Street","postalZip":"471522","country":"Ukraine"},{"customerId":1641,"customerName":"Natalie Robertson","phone":"(678) 825-2562","email":"vitae@outlook.edu","address":"Ap #879-4782 Vehicula Street","postalZip":"38740","country":"France"},{"customerId":1642,"customerName":"Dawn Merritt","phone":"1-265-210-8913","email":"magnis.dis.parturient@hotmail.ca","address":"445-8990 Non, Rd.","postalZip":"18-48","country":"Philippines"},{"customerId":1643,"customerName":"Brenda Levy","phone":"(701) 974-6316","email":"et.ultrices@outlook.com","address":"3530 Scelerisque Ave","postalZip":"9006-6437","country":"Sweden"},{"customerId":1644,"customerName":"Nasim Moran","phone":"(567) 458-4753","email":"non.hendrerit@hotmail.edu","address":"Ap #581-143 Quisque Road","postalZip":"6935","country":"Brazil"},{"customerId":1645,"customerName":"Jessamine Castro","phone":"1-396-829-8782","email":"felis.ullamcorper@aol.edu","address":"P.O. Box 313, 3068 Morbi Road","postalZip":"7386","country":"Vietnam"},{"customerId":1646,"customerName":"Melvin Schwartz","phone":"(513) 964-3682","email":"hendrerit@protonmail.ca","address":"Ap #357-5828 Fermentum Ave","postalZip":"79164","country":"Spain"},{"customerId":1647,"customerName":"Emerald Edwards","phone":"1-376-557-4732","email":"purus@icloud.couk","address":"Ap #895-3768 Facilisis, St.","postalZip":"23882","country":"Colombia"},{"customerId":1648,"customerName":"Octavia Singleton","phone":"(579) 846-1365","email":"a.facilisis@icloud.edu","address":"Ap #706-6281 Sed Av.","postalZip":"8703","country":"China"},{"customerId":1649,"customerName":"Gretchen Scott","phone":"(241) 921-9732","email":"vivamus.non.lorem@aol.ca","address":"P.O. Box 729, 7299 Nulla. St.","postalZip":"6466","country":"United States"},{"customerId":1650,"customerName":"Dylan Jacobs","phone":"(642) 372-6730","email":"aliquam.erat@icloud.net","address":"337-7653 Sem. Street","postalZip":"398270","country":"Vietnam"},{"customerId":1651,"customerName":"Zorita Kirk","phone":"1-503-741-2357","email":"hendrerit.donec.porttitor@aol.couk","address":"641-7996 Gravida Road","postalZip":"62368","country":"Belgium"},{"customerId":1652,"customerName":"Marshall Lancaster","phone":"1-283-486-3777","email":"at@hotmail.org","address":"5317 Euismod Ave","postalZip":"19042","country":"Australia"},{"customerId":1653,"customerName":"Mohammad Ford","phone":"(959) 306-2558","email":"augue.malesuada@icloud.org","address":"Ap #911-585 Per Ave","postalZip":"231830","country":"Sweden"},{"customerId":1654,"customerName":"Ebony Kidd","phone":"1-893-313-7544","email":"orci@yahoo.org","address":"Ap #751-6262 Mollis Av.","postalZip":"559633","country":"Ireland"},{"customerId":1655,"customerName":"Dylan Garrett","phone":"1-684-466-1701","email":"at.arcu.vestibulum@yahoo.couk","address":"Ap #664-9498 Praesent Av.","postalZip":"7930","country":"Norway"},{"customerId":1656,"customerName":"Prescott Robinson","phone":"(887) 633-3623","email":"laoreet.posuere@protonmail.net","address":"190-4174 Ut, St.","postalZip":"6234","country":"Belgium"},{"customerId":1657,"customerName":"Seth Sharpe","phone":"1-853-372-5157","email":"erat.neque@icloud.com","address":"Ap #819-8855 Sem Av.","postalZip":"981156","country":"Belgium"},{"customerId":1658,"customerName":"Amena Sloan","phone":"(648) 164-6150","email":"quisque.fringilla@google.couk","address":"P.O. Box 599, 3942 Eget St.","postalZip":"33906","country":"New Zealand"},{"customerId":1659,"customerName":"Magee Wagner","phone":"(852) 438-3264","email":"curabitur.egestas.nunc@google.couk","address":"766-9757 Fusce Rd.","postalZip":"142020","country":"Costa Rica"},{"customerId":1660,"customerName":"Nash Goodman","phone":"1-406-853-4116","email":"et.euismod@aol.edu","address":"P.O. Box 408, 6575 Eros. Rd.","postalZip":"4756-7136","country":"Pakistan"},{"customerId":1661,"customerName":"September Ferrell","phone":"1-211-240-2216","email":"cubilia.curae@google.net","address":"732-8003 Mi. Ave","postalZip":"51124","country":"Sweden"},{"customerId":1662,"customerName":"Brett Blackwell","phone":"(803) 682-4371","email":"nonummy.ultricies@outlook.edu","address":"980-5214 Nulla. St.","postalZip":"443986","country":"Russian Federation"},{"customerId":1663,"customerName":"Lilah Cash","phone":"1-732-344-5483","email":"aenean.euismod.mauris@yahoo.net","address":"356-252 Tincidunt Ave","postalZip":"731535","country":"Pakistan"},{"customerId":1664,"customerName":"Brett Paul","phone":"1-650-481-3482","email":"aliquam.enim@yahoo.ca","address":"Ap #286-4140 Vivamus St.","postalZip":"636562","country":"Peru"},{"customerId":1665,"customerName":"Shelby Sanchez","phone":"1-516-412-2638","email":"ligula.nullam@outlook.com","address":"P.O. Box 348, 4141 Magna. Street","postalZip":"605328","country":"Sweden"},{"customerId":1666,"customerName":"Castor Bishop","phone":"(944) 121-4301","email":"ultricies@aol.ca","address":"Ap #743-6671 Phasellus St.","postalZip":"621783","country":"Mexico"},{"customerId":1667,"customerName":"Chase Wyatt","phone":"1-613-173-6522","email":"sed.orci.lobortis@outlook.org","address":"Ap #881-5816 Dolor Road","postalZip":"52594","country":"Netherlands"},{"customerId":1668,"customerName":"Tucker Alford","phone":"(423) 531-4822","email":"senectus.et.netus@hotmail.net","address":"481-2575 Primis Ave","postalZip":"888295","country":"Spain"},{"customerId":1669,"customerName":"Cruz Wells","phone":"1-507-806-1934","email":"quis.pede.praesent@icloud.com","address":"930-4088 Aliquet Av.","postalZip":"44255","country":"Turkey"},{"customerId":1670,"customerName":"Yardley Buchanan","phone":"1-783-863-9251","email":"sit@yahoo.edu","address":"Ap #978-8991 Nunc St.","postalZip":"8132 QE","country":"United Kingdom"},{"customerId":1671,"customerName":"Mariam Buckley","phone":"1-198-385-7483","email":"nibh@protonmail.ca","address":"575 Vestibulum Ave","postalZip":"4775","country":"Ukraine"},{"customerId":1672,"customerName":"Bevis Hewitt","phone":"(770) 456-1452","email":"curabitur@hotmail.com","address":"Ap #556-7092 A, St.","postalZip":"28766","country":"Philippines"},{"customerId":1673,"customerName":"Tanya Richardson","phone":"(847) 763-3342","email":"convallis@protonmail.couk","address":"2511 Orci, Av.","postalZip":"NL3H 5DU","country":"Mexico"},{"customerId":1674,"customerName":"Barry Woodward","phone":"(637) 296-0268","email":"a@yahoo.net","address":"Ap #290-5074 Pellentesque St.","postalZip":"526268","country":"United Kingdom"},{"customerId":1675,"customerName":"Daniel Velasquez","phone":"1-333-781-2793","email":"et.magnis@outlook.edu","address":"Ap #732-5193 Risus. Rd.","postalZip":"154364","country":"Mexico"},{"customerId":1676,"customerName":"Darius Foley","phone":"(887) 758-2389","email":"ornare.placerat.orci@aol.org","address":"Ap #690-1754 Netus St.","postalZip":"5988-9356","country":"Ireland"},{"customerId":1677,"customerName":"Xenos Nielsen","phone":"1-365-875-5822","email":"libero.integer@aol.couk","address":"Ap #339-784 Fusce Rd.","postalZip":"7483","country":"Spain"},{"customerId":1678,"customerName":"Idona Zamora","phone":"(635) 323-6142","email":"nec.tellus@google.ca","address":"Ap #140-642 Lectus Street","postalZip":"2197","country":"Mexico"},{"customerId":1679,"customerName":"Ciara O'brien","phone":"1-168-874-5243","email":"dolor.sit.amet@google.couk","address":"843-2358 Parturient Street","postalZip":"80009","country":"Colombia"},{"customerId":1680,"customerName":"Shelley Wall","phone":"(225) 633-7548","email":"libero.morbi.accumsan@protonmail.edu","address":"Ap #381-488 Quis Rd.","postalZip":"4026","country":"Peru"},{"customerId":1681,"customerName":"Stacey Perry","phone":"1-535-321-4212","email":"sed.pede@icloud.edu","address":"Ap #564-794 Vitae, Av.","postalZip":"7876 UD","country":"Mexico"},{"customerId":1682,"customerName":"Colleen Pickett","phone":"(742) 741-5565","email":"in.sodales.elit@hotmail.ca","address":"Ap #637-1333 Mauris Av.","postalZip":"645842","country":"Colombia"},{"customerId":1683,"customerName":"Sydnee Lowe","phone":"(320) 244-4030","email":"etiam.laoreet.libero@yahoo.com","address":"4435 Senectus Ave","postalZip":"30902","country":"Vietnam"},{"customerId":1684,"customerName":"Aiko Patton","phone":"(215) 551-6732","email":"molestie.sodales.mauris@protonmail.org","address":"920-4686 Tellus Avenue","postalZip":"67-27","country":"Poland"},{"customerId":1685,"customerName":"Thane Martinez","phone":"(514) 378-4784","email":"libero.proin@google.org","address":"813-1161 Curae Road","postalZip":"21113","country":"Italy"},{"customerId":1686,"customerName":"Kimberly Dillon","phone":"1-878-431-4544","email":"pellentesque.sed@hotmail.com","address":"Ap #118-4240 Montes, Road","postalZip":"37717","country":"Poland"},{"customerId":1687,"customerName":"Belle Newman","phone":"(855) 547-4333","email":"mauris@outlook.ca","address":"189-3660 Nam Street","postalZip":"4386","country":"Sweden"},{"customerId":1688,"customerName":"Lareina Gilmore","phone":"1-278-922-8676","email":"vitae.orci@icloud.com","address":"625-2261 Convallis St.","postalZip":"3214-4318","country":"Russian Federation"},{"customerId":1689,"customerName":"Rahim Dejesus","phone":"(672) 377-3160","email":"pede.cum@icloud.com","address":"326-3392 Dolor Rd.","postalZip":"501067","country":"Colombia"},{"customerId":1690,"customerName":"Dale Houston","phone":"(658) 121-5125","email":"ipsum@outlook.edu","address":"Ap #162-1267 Erat Av.","postalZip":"27711","country":"United Kingdom"},{"customerId":1691,"customerName":"Kaseem Delaney","phone":"(643) 691-8186","email":"fermentum.fermentum@google.com","address":"Ap #418-6382 Vitae Rd.","postalZip":"44766","country":"Norway"},{"customerId":1692,"customerName":"Avye Hardin","phone":"1-273-860-5670","email":"eget.ipsum@hotmail.org","address":"477-4210 Mi Street","postalZip":"8862","country":"Norway"},{"customerId":1693,"customerName":"Susan Baldwin","phone":"(964) 364-8434","email":"dignissim@aol.couk","address":"202-7842 In Road","postalZip":"218375","country":"Australia"},{"customerId":1694,"customerName":"Lilah West","phone":"1-796-169-5322","email":"fringilla.cursus@icloud.net","address":"Ap #310-580 Enim, Road","postalZip":"245344","country":"Spain"},{"customerId":1695,"customerName":"Coby Mckenzie","phone":"(213) 845-8650","email":"orci.tincidunt@protonmail.com","address":"806-7767 Quis Road","postalZip":"4177","country":"Norway"},{"customerId":1696,"customerName":"Christine Jennings","phone":"(715) 537-2464","email":"in.scelerisque@google.ca","address":"124-5918 Cubilia Rd.","postalZip":"1361","country":"Vietnam"},{"customerId":1697,"customerName":"Lewis Grimes","phone":"(572) 464-6213","email":"ullamcorper.velit.in@icloud.net","address":"229-7576 Ligula Rd.","postalZip":"613522","country":"Germany"},{"customerId":1698,"customerName":"Emily Collier","phone":"(278) 870-4749","email":"suspendisse.commodo@icloud.com","address":"4977 Eu Ave","postalZip":"1385 OM","country":"Belgium"},{"customerId":1699,"customerName":"Nevada Hebert","phone":"(843) 650-1745","email":"pellentesque.ut@outlook.couk","address":"P.O. Box 531, 4654 Non, St.","postalZip":"82187","country":"Norway"},{"customerId":1700,"customerName":"Lamar Hunter","phone":"(737) 457-2372","email":"morbi@outlook.couk","address":"P.O. Box 210, 9393 Porttitor Rd.","postalZip":"34348-85852","country":"Canada"},{"customerId":1701,"customerName":"Clio Sutton","phone":"(522) 825-4448","email":"fringilla.euismod@google.ca","address":"777-1845 Sollicitudin St.","postalZip":"163246","country":"Pakistan"},{"customerId":1702,"customerName":"MacKensie Bennett","phone":"1-739-635-7427","email":"id@icloud.org","address":"Ap #584-7811 Amet St.","postalZip":"574645","country":"Canada"},{"customerId":1703,"customerName":"Harding Mosley","phone":"(873) 224-4335","email":"pretium.neque.morbi@yahoo.com","address":"3540 Est, Ave","postalZip":"8237","country":"Ukraine"},{"customerId":1704,"customerName":"Sylvester Suarez","phone":"(325) 788-6486","email":"sed.orci.lobortis@outlook.com","address":"234-9600 Hendrerit. Road","postalZip":"15426","country":"Australia"},{"customerId":1705,"customerName":"Amy Gillespie","phone":"(152) 523-4975","email":"egestas@outlook.com","address":"Ap #158-2997 Dignissim St.","postalZip":"97-167","country":"Germany"},{"customerId":1706,"customerName":"Hayden Moon","phone":"(935) 260-7756","email":"nisi.mauris.nulla@hotmail.net","address":"427-1201 Auctor St.","postalZip":"66Z 2W8","country":"Colombia"},{"customerId":1707,"customerName":"Sara Anderson","phone":"(718) 748-8122","email":"iaculis@google.com","address":"Ap #677-4355 Vulputate St.","postalZip":"8283","country":"Peru"},{"customerId":1708,"customerName":"Stacy Meyers","phone":"(328) 335-6716","email":"elementum@protonmail.org","address":"Ap #449-8065 Amet St.","postalZip":"20T 5A4","country":"Philippines"},{"customerId":1709,"customerName":"Cedric Roberts","phone":"1-341-646-8248","email":"morbi@yahoo.edu","address":"P.O. Box 415, 8188 Dignissim Road","postalZip":"84-65","country":"Australia"},{"customerId":1710,"customerName":"Amity Roberson","phone":"(628) 627-8750","email":"arcu.sed@aol.com","address":"Ap #338-3979 Commodo Av.","postalZip":"228578","country":"Australia"},{"customerId":1711,"customerName":"Adele Newman","phone":"(203) 571-8100","email":"sagittis.felis.donec@protonmail.org","address":"P.O. Box 671, 5754 Sed Rd.","postalZip":"341169","country":"Indonesia"},{"customerId":1712,"customerName":"Caleb Osborn","phone":"(935) 615-2648","email":"placerat@google.edu","address":"P.O. Box 492, 5843 Ipsum. Av.","postalZip":"56826","country":"Peru"},{"customerId":1713,"customerName":"Xyla Waters","phone":"(818) 779-4231","email":"aenean.eget@aol.net","address":"6226 Leo Av.","postalZip":"41327","country":"Sweden"},{"customerId":1714,"customerName":"Samson Chan","phone":"(439) 813-0536","email":"posuere.at@icloud.com","address":"Ap #287-2311 Erat, Ave","postalZip":"9992","country":"Chile"},{"customerId":1715,"customerName":"Kevyn Horn","phone":"1-874-485-4475","email":"velit@yahoo.couk","address":"197-545 Eu Avenue","postalZip":"ST5 3VT","country":"United States"},{"customerId":1716,"customerName":"Evangeline Finch","phone":"(582) 173-5533","email":"integer.urna@icloud.com","address":"Ap #804-798 Mi. Avenue","postalZip":"48308","country":"China"},{"customerId":1717,"customerName":"Damian Pace","phone":"1-773-447-4366","email":"lorem@aol.couk","address":"223-4156 Id Ave","postalZip":"5612","country":"Pakistan"},{"customerId":1718,"customerName":"Jenna Mcneil","phone":"1-844-688-2542","email":"quis.diam@icloud.edu","address":"Ap #681-370 Malesuada Rd.","postalZip":"362646","country":"Indonesia"},{"customerId":1719,"customerName":"Raya Hickman","phone":"(586) 301-1642","email":"a.enim@google.edu","address":"847-8413 Donec Av.","postalZip":"7422","country":"Brazil"},{"customerId":1720,"customerName":"Rana Willis","phone":"1-861-551-8589","email":"aliquam.arcu@protonmail.org","address":"P.O. Box 762, 7096 Dolor. Rd.","postalZip":"74285","country":"Austria"},{"customerId":1721,"customerName":"Lani Britt","phone":"(367) 875-1722","email":"facilisis.non@hotmail.com","address":"P.O. Box 981, 4572 Dolor St.","postalZip":"418266","country":"Costa Rica"},{"customerId":1722,"customerName":"Duncan Fowler","phone":"(412) 556-7453","email":"egestas.a@outlook.ca","address":"Ap #767-3723 Nec Av.","postalZip":"7357","country":"Colombia"},{"customerId":1723,"customerName":"Linus Carey","phone":"1-391-844-2845","email":"vitae@hotmail.edu","address":"7570 Nulla St.","postalZip":"2973","country":"South Africa"},{"customerId":1724,"customerName":"Brianna Brooks","phone":"(405) 452-2352","email":"varius.ultrices@icloud.couk","address":"385 Eget, Avenue","postalZip":"56726-876","country":"Australia"},{"customerId":1725,"customerName":"Tanya Riggs","phone":"(138) 673-5782","email":"sociis.natoque@icloud.ca","address":"Ap #344-675 Lacus, Rd.","postalZip":"XV3 1SI","country":"South Africa"},{"customerId":1726,"customerName":"Sopoline Macdonald","phone":"1-271-591-6086","email":"penatibus.et@aol.com","address":"4243 Dui, St.","postalZip":"2866","country":"Turkey"},{"customerId":1727,"customerName":"Sybil Dillard","phone":"1-911-143-8841","email":"accumsan.neque@yahoo.net","address":"Ap #160-4400 Sed St.","postalZip":"306819","country":"Spain"},{"customerId":1728,"customerName":"Raphael Dean","phone":"(385) 414-3368","email":"tellus.aenean@aol.ca","address":"737-4581 Ligula Ave","postalZip":"R84 5VW","country":"Chile"},{"customerId":1729,"customerName":"Aline Blanchard","phone":"1-266-647-2786","email":"vel.arcu@aol.net","address":"Ap #975-5147 Odio. Street","postalZip":"43122","country":"Austria"},{"customerId":1730,"customerName":"Calvin Watkins","phone":"(533) 578-8483","email":"donec@hotmail.edu","address":"2175 Tempus St.","postalZip":"264537","country":"Costa Rica"},{"customerId":1731,"customerName":"Mallory Foley","phone":"1-560-215-0146","email":"nisi.nibh.lacinia@outlook.com","address":"8619 Libero. St.","postalZip":"547483","country":"Mexico"},{"customerId":1732,"customerName":"Lillith Hubbard","phone":"(806) 617-7872","email":"luctus.vulputate@yahoo.com","address":"Ap #794-6524 Enim, Av.","postalZip":"23-739","country":"United States"},{"customerId":1733,"customerName":"Kellie Ramirez","phone":"(323) 866-9423","email":"parturient.montes.nascetur@hotmail.org","address":"P.O. Box 800, 9339 A, Street","postalZip":"9730","country":"Norway"},{"customerId":1734,"customerName":"Alfonso Hampton","phone":"1-751-293-7671","email":"cras.interdum.nunc@aol.couk","address":"839-1907 Inceptos Av.","postalZip":"533273","country":"Russian Federation"},{"customerId":1735,"customerName":"Shad Vance","phone":"1-877-577-7578","email":"dictum.augue@icloud.org","address":"Ap #934-5519 Diam Avenue","postalZip":"37265","country":"Sweden"},{"customerId":1736,"customerName":"Davis Gill","phone":"(372) 548-8655","email":"commodo.hendrerit.donec@icloud.ca","address":"334-998 Ac Ave","postalZip":"85486-525","country":"Peru"},{"customerId":1737,"customerName":"Honorato Hester","phone":"(277) 235-2260","email":"cras@outlook.net","address":"Ap #315-322 At Av.","postalZip":"75-45","country":"Australia"},{"customerId":1738,"customerName":"Melodie Watkins","phone":"(695) 611-5373","email":"donec.elementum.lorem@hotmail.edu","address":"5158 Eu St.","postalZip":"43978","country":"India"},{"customerId":1739,"customerName":"Noel Carlson","phone":"1-717-155-2656","email":"blandit@google.edu","address":"190-3256 Risus. Street","postalZip":"24649","country":"New Zealand"},{"customerId":1740,"customerName":"Chester Ballard","phone":"(235) 746-0634","email":"lorem.ac@google.com","address":"4124 Laoreet Avenue","postalZip":"97-134","country":"Indonesia"},{"customerId":1741,"customerName":"Daniel Knapp","phone":"1-323-285-1218","email":"a.dui.cras@hotmail.org","address":"P.O. Box 641, 1963 Tristique Road","postalZip":"7125","country":"Germany"},{"customerId":1742,"customerName":"Dara Battle","phone":"1-558-514-2465","email":"commodo.at.libero@yahoo.org","address":"P.O. Box 497, 386 Morbi Street","postalZip":"277351","country":"Indonesia"},{"customerId":1743,"customerName":"Henry Sharpe","phone":"(521) 283-1806","email":"nunc.nulla@aol.couk","address":"8274 Etiam St.","postalZip":"86510","country":"Pakistan"},{"customerId":1744,"customerName":"Ethan Chandler","phone":"(557) 838-2445","email":"purus.sapien@icloud.ca","address":"P.O. Box 511, 4478 Quis Avenue","postalZip":"336594","country":"Italy"},{"customerId":1745,"customerName":"Ezekiel Collier","phone":"1-622-387-0656","email":"phasellus.dapibus.quam@google.net","address":"734-2366 Eget Street","postalZip":"74715-329","country":"Canada"},{"customerId":1746,"customerName":"Nigel Rowland","phone":"(163) 488-1288","email":"eleifend@protonmail.ca","address":"5461 Malesuada Street","postalZip":"719436","country":"China"},{"customerId":1747,"customerName":"Roary Byers","phone":"1-419-463-5765","email":"dolor@hotmail.org","address":"1244 Sit Street","postalZip":"57778","country":"Chile"},{"customerId":1748,"customerName":"Nasim Hickman","phone":"(347) 956-8632","email":"nam.interdum@icloud.edu","address":"181-9755 Cum Ave","postalZip":"122776","country":"Russian Federation"},{"customerId":1749,"customerName":"Maya Shelton","phone":"1-912-563-1276","email":"vulputate.risus@protonmail.edu","address":"Ap #169-6106 Lorem Street","postalZip":"338952","country":"Indonesia"},{"customerId":1750,"customerName":"Ahmed May","phone":"1-484-672-8434","email":"vel.venenatis@google.couk","address":"847-6348 Dui Av.","postalZip":"67857","country":"Belgium"},{"customerId":1751,"customerName":"Jena Watts","phone":"1-628-737-1989","email":"cursus.diam@protonmail.net","address":"120-2380 Ut, Rd.","postalZip":"36031223","country":"Costa Rica"},{"customerId":1752,"customerName":"Sylvester Sherman","phone":"(413) 839-4337","email":"laoreet@outlook.edu","address":"Ap #514-6542 Mattis. Road","postalZip":"7771","country":"Indonesia"},{"customerId":1753,"customerName":"Ruth Booker","phone":"1-468-486-1678","email":"quisque.libero@yahoo.ca","address":"P.O. Box 665, 1469 Turpis. Rd.","postalZip":"37595","country":"United Kingdom"},{"customerId":1754,"customerName":"Raja Mayer","phone":"(304) 302-3799","email":"risus.donec.egestas@outlook.net","address":"P.O. Box 878, 5902 Metus. Av.","postalZip":"13003","country":"Brazil"},{"customerId":1755,"customerName":"Theodore Bryan","phone":"(115) 851-7252","email":"dignissim.maecenas@protonmail.edu","address":"P.O. Box 270, 7392 Eu, St.","postalZip":"83-848","country":"Netherlands"},{"customerId":1756,"customerName":"Jayme Becker","phone":"(918) 537-1685","email":"rhoncus.id.mollis@hotmail.com","address":"342-4576 Nulla St.","postalZip":"6380","country":"Philippines"},{"customerId":1757,"customerName":"Denton Day","phone":"1-624-955-6135","email":"amet.consectetuer.adipiscing@hotmail.com","address":"Ap #766-904 Nunc St.","postalZip":"806901","country":"Austria"},{"customerId":1758,"customerName":"Clinton Lewis","phone":"(297) 239-0718","email":"orci.lacus@icloud.edu","address":"Ap #432-1003 Ac Rd.","postalZip":"267623","country":"Indonesia"},{"customerId":1759,"customerName":"Brody Saunders","phone":"1-433-337-4683","email":"ut.sagittis@aol.couk","address":"P.O. Box 739, 6128 Dignissim Rd.","postalZip":"23673","country":"Chile"},{"customerId":1760,"customerName":"Harriet Howell","phone":"1-540-430-7152","email":"aliquet@google.com","address":"5252 Maecenas Avenue","postalZip":"528483","country":"Philippines"},{"customerId":1761,"customerName":"Todd Fisher","phone":"(667) 877-9308","email":"dictum.phasellus@icloud.com","address":"Ap #301-3983 Montes, St.","postalZip":"651870","country":"New Zealand"},{"customerId":1762,"customerName":"Giselle Moon","phone":"(424) 655-1381","email":"et.magnis.dis@hotmail.edu","address":"638-7918 Luctus Rd.","postalZip":"613656","country":"Mexico"},{"customerId":1763,"customerName":"Caryn Adkins","phone":"(733) 891-3838","email":"accumsan.laoreet@protonmail.com","address":"162-7076 Morbi Street","postalZip":"34282","country":"Austria"},{"customerId":1764,"customerName":"Sydney Haynes","phone":"1-355-161-5018","email":"penatibus@google.ca","address":"485-7517 Fusce St.","postalZip":"605943","country":"Ireland"},{"customerId":1765,"customerName":"Tatyana Dalton","phone":"(814) 373-1703","email":"libero@yahoo.com","address":"685-2282 Dolor. St.","postalZip":"47046","country":"Poland"},{"customerId":1766,"customerName":"Elvis Jacobs","phone":"1-264-716-1507","email":"nisi@icloud.com","address":"P.O. Box 161, 6636 Vestibulum Avenue","postalZip":"94547","country":"France"},{"customerId":1767,"customerName":"Cally Barber","phone":"1-632-478-8265","email":"class.aptent@outlook.edu","address":"427-4554 Suspendisse Rd.","postalZip":"81183","country":"Indonesia"},{"customerId":1768,"customerName":"Harrison David","phone":"1-773-694-6658","email":"tellus.id.nunc@icloud.couk","address":"Ap #270-9912 Nibh. Road","postalZip":"7588","country":"Peru"},{"customerId":1769,"customerName":"Georgia Shepherd","phone":"(847) 315-8517","email":"ullamcorper.viverra.maecenas@hotmail.com","address":"368-2564 Ac Road","postalZip":"BG4 7PS","country":"Austria"},{"customerId":1770,"customerName":"Buffy Sanders","phone":"(712) 741-6568","email":"nam.ac.nulla@aol.net","address":"P.O. Box 415, 6925 Vitae, Avenue","postalZip":"04251","country":"Belgium"},{"customerId":1771,"customerName":"Brenda Payne","phone":"1-816-969-4577","email":"penatibus@aol.edu","address":"Ap #922-1366 Et, Avenue","postalZip":"58281-68196","country":"South Korea"},{"customerId":1772,"customerName":"Wylie Morton","phone":"(245) 427-8237","email":"aliquam.vulputate@outlook.couk","address":"861-9336 Magna. St.","postalZip":"45948","country":"Austria"},{"customerId":1773,"customerName":"Noah Powers","phone":"(173) 562-2488","email":"vitae@protonmail.net","address":"465-8904 Vivamus Av.","postalZip":"5824","country":"Ukraine"},{"customerId":1774,"customerName":"Ava Harmon","phone":"(221) 295-1966","email":"cum@aol.net","address":"505-5922 Curae St.","postalZip":"R3M 3R3","country":"Colombia"},{"customerId":1775,"customerName":"Jesse Brock","phone":"1-596-872-5628","email":"integer.sem.elit@yahoo.net","address":"1958 Amet, St.","postalZip":"04649","country":"Norway"},{"customerId":1776,"customerName":"Melinda O'brien","phone":"(468) 555-8182","email":"suscipit.nonummy@aol.edu","address":"509-5138 Ante Ave","postalZip":"5557","country":"Austria"},{"customerId":1777,"customerName":"Charles Skinner","phone":"1-156-831-7663","email":"et.magnis@outlook.org","address":"744-9893 Vel St.","postalZip":"6230","country":"South Africa"},{"customerId":1778,"customerName":"Jeremy Bailey","phone":"(414) 432-2193","email":"lectus.pede@protonmail.ca","address":"258-1229 Nec St.","postalZip":"5549","country":"Canada"},{"customerId":1779,"customerName":"Hannah Richard","phone":"1-551-851-4881","email":"enim.nisl@hotmail.com","address":"Ap #951-9530 Magna, Avenue","postalZip":"53-475","country":"Australia"},{"customerId":1780,"customerName":"Michael Long","phone":"(133) 817-2544","email":"vitae.orci@aol.couk","address":"241-1013 At, Rd.","postalZip":"427153","country":"Austria"},{"customerId":1781,"customerName":"Ulysses Gutierrez","phone":"(411) 761-4166","email":"faucibus.morbi.vehicula@hotmail.ca","address":"Ap #943-3504 Enim, St.","postalZip":"263511","country":"South Korea"},{"customerId":1782,"customerName":"Harrison Francis","phone":"1-643-914-3553","email":"metus@hotmail.org","address":"Ap #201-3925 Libero Road","postalZip":"454198","country":"Vietnam"},{"customerId":1783,"customerName":"Neil Williamson","phone":"(748) 412-4278","email":"quam.vel@google.ca","address":"575 Sed Rd.","postalZip":"98-14","country":"South Korea"},{"customerId":1784,"customerName":"Price Fernandez","phone":"(549) 322-5658","email":"tincidunt.nibh@google.edu","address":"522-1392 Non Road","postalZip":"5371","country":"Pakistan"},{"customerId":1785,"customerName":"Clark Conner","phone":"1-869-767-9227","email":"ante.blandit.viverra@protonmail.edu","address":"3083 Ullamcorper, Street","postalZip":"955573","country":"Singapore"},{"customerId":1786,"customerName":"Jason Callahan","phone":"(116) 867-7430","email":"quis.lectus.nullam@icloud.net","address":"864-1456 Quisque Ave","postalZip":"4963","country":"Vietnam"},{"customerId":1787,"customerName":"Alyssa Mathis","phone":"1-802-719-9555","email":"neque@icloud.ca","address":"177-5985 Malesuada Av.","postalZip":"39-58","country":"United States"},{"customerId":1788,"customerName":"Elijah Jones","phone":"(524) 683-1743","email":"ut.sagittis.lobortis@hotmail.com","address":"207-9847 Pede, Avenue","postalZip":"53213","country":"Poland"},{"customerId":1789,"customerName":"Georgia Nash","phone":"(969) 557-6952","email":"turpis.nec@outlook.com","address":"P.O. Box 944, 6476 Interdum. St.","postalZip":"8925","country":"Ukraine"},{"customerId":1790,"customerName":"Dara Riley","phone":"(526) 520-1646","email":"phasellus.in@icloud.org","address":"P.O. Box 441, 426 Eu Rd.","postalZip":"B7A 8T3","country":"Philippines"},{"customerId":1791,"customerName":"Belle Warner","phone":"1-415-566-7517","email":"blandit.at.nisi@outlook.net","address":"549-8717 Dui Rd.","postalZip":"758163","country":"Austria"},{"customerId":1792,"customerName":"Coby Merritt","phone":"1-618-671-8465","email":"ipsum@yahoo.couk","address":"Ap #785-8280 Mauris Rd.","postalZip":"644746","country":"Ukraine"},{"customerId":1793,"customerName":"Mannix Haynes","phone":"1-554-897-5620","email":"et@protonmail.edu","address":"P.O. Box 131, 6568 A St.","postalZip":"165169","country":"France"},{"customerId":1794,"customerName":"Blossom Kemp","phone":"1-854-674-8451","email":"adipiscing.mauris@icloud.net","address":"P.O. Box 128, 9829 Nulla. Avenue","postalZip":"216419","country":"Costa Rica"},{"customerId":1795,"customerName":"Ferris Greene","phone":"(532) 724-8962","email":"convallis.ligula@icloud.edu","address":"814-9823 Est. Street","postalZip":"445322","country":"Indonesia"},{"customerId":1796,"customerName":"Anika Petersen","phone":"1-263-356-6285","email":"adipiscing.enim@protonmail.net","address":"Ap #757-2085 In Road","postalZip":"58602-945","country":"Pakistan"},{"customerId":1797,"customerName":"Thane Lewis","phone":"(621) 351-7054","email":"porttitor.vulputate@google.ca","address":"P.O. Box 128, 7773 Eu, St.","postalZip":"43346-654","country":"Pakistan"},{"customerId":1798,"customerName":"Harriet Buckner","phone":"(341) 946-9522","email":"facilisis@hotmail.edu","address":"Ap #811-1435 Cursus Rd.","postalZip":"33541","country":"Philippines"},{"customerId":1799,"customerName":"Ishmael Haley","phone":"(172) 970-7286","email":"nec.quam.curabitur@protonmail.ca","address":"606-6505 Nulla Ave","postalZip":"27874","country":"Turkey"},{"customerId":1800,"customerName":"Hayes Heath","phone":"(294) 863-1797","email":"dapibus.ligula.aliquam@google.org","address":"802-7664 Sit Street","postalZip":"5841","country":"Ireland"},{"customerId":1801,"customerName":"Ivor Yang","phone":"1-489-721-6641","email":"sed@icloud.com","address":"Ap #511-8042 Turpis. Av.","postalZip":"30414","country":"Belgium"},{"customerId":1802,"customerName":"Zachary Fuller","phone":"(569) 501-6280","email":"curabitur.vel@outlook.edu","address":"Ap #479-149 Mi Road","postalZip":"45138-56581","country":"China"},{"customerId":1803,"customerName":"Boris Carr","phone":"(246) 426-8635","email":"nunc.mauris@hotmail.edu","address":"5988 Augue Rd.","postalZip":"71483","country":"Norway"},{"customerId":1804,"customerName":"Jillian Hester","phone":"1-842-170-8880","email":"libero.donec.consectetuer@yahoo.ca","address":"Ap #473-5694 Donec Street","postalZip":"13735","country":"Indonesia"},{"customerId":1805,"customerName":"Molly Curtis","phone":"1-463-287-9365","email":"donec.non.justo@protonmail.net","address":"Ap #100-5411 Integer Street","postalZip":"62107","country":"Brazil"},{"customerId":1806,"customerName":"August Glenn","phone":"(786) 700-3867","email":"auctor.non.feugiat@hotmail.org","address":"Ap #102-6496 Tincidunt Rd.","postalZip":"71173","country":"Turkey"},{"customerId":1807,"customerName":"Guinevere Watkins","phone":"1-744-686-4053","email":"suspendisse.aliquet@outlook.com","address":"346-3526 Aliquam Road","postalZip":"78-885","country":"Austria"},{"customerId":1808,"customerName":"Fletcher Snyder","phone":"(782) 222-2403","email":"aliquam.rutrum@yahoo.couk","address":"299-6142 Mauris, St.","postalZip":"15543","country":"Colombia"},{"customerId":1809,"customerName":"Emi Hendricks","phone":"1-365-569-6802","email":"maecenas.iaculis.aliquet@google.org","address":"Ap #468-2981 Molestie Rd.","postalZip":"139735","country":"Netherlands"},{"customerId":1810,"customerName":"Griffith Koch","phone":"1-677-712-7032","email":"diam@icloud.edu","address":"848-5850 Ante Street","postalZip":"273287","country":"Indonesia"},{"customerId":1811,"customerName":"Oleg Benson","phone":"1-438-842-5605","email":"enim.sit@outlook.edu","address":"966-7757 Cras Av.","postalZip":"932172","country":"Mexico"},{"customerId":1812,"customerName":"Brian Tanner","phone":"1-522-315-2414","email":"nec@icloud.ca","address":"Ap #784-640 Nunc, Rd.","postalZip":"9305","country":"Spain"},{"customerId":1813,"customerName":"Macaulay Emerson","phone":"1-256-558-1718","email":"dolor.sit.amet@protonmail.net","address":"602-1910 Egestas St.","postalZip":"5143","country":"Sweden"},{"customerId":1814,"customerName":"Donovan Farrell","phone":"1-262-998-8322","email":"a@outlook.com","address":"3197 Auctor Ave","postalZip":"660874","country":"Germany"},{"customerId":1815,"customerName":"Jack Mcgowan","phone":"1-844-617-1574","email":"ipsum.cursus@icloud.couk","address":"7325 Sagittis Rd.","postalZip":"844446","country":"Italy"},{"customerId":1816,"customerName":"Carly Sweet","phone":"(809) 648-3876","email":"amet.diam.eu@outlook.org","address":"Ap #622-1658 Mauris Rd.","postalZip":"80270-737","country":"Netherlands"},{"customerId":1817,"customerName":"Jemima Foley","phone":"1-852-247-2287","email":"semper.nam@yahoo.com","address":"Ap #770-6836 Vitae, Rd.","postalZip":"S71 2ME","country":"Italy"},{"customerId":1818,"customerName":"Cameron Norton","phone":"(239) 640-5270","email":"libero.lacus.varius@google.net","address":"970 Cursus. Rd.","postalZip":"3864","country":"Singapore"},{"customerId":1819,"customerName":"Cameron Moran","phone":"1-335-431-4146","email":"adipiscing@protonmail.org","address":"Ap #699-2557 Non Av.","postalZip":"82601","country":"Philippines"},{"customerId":1820,"customerName":"Harper Chang","phone":"(657) 168-5387","email":"phasellus@aol.ca","address":"P.O. Box 583, 4501 Netus Avenue","postalZip":"52-85","country":"South Korea"},{"customerId":1821,"customerName":"Wayne Ward","phone":"(103) 545-3443","email":"accumsan.neque@icloud.ca","address":"472-2686 Morbi Rd.","postalZip":"67283-89433","country":"Indonesia"},{"customerId":1822,"customerName":"Melanie Lopez","phone":"(400) 623-2558","email":"nibh.quisque.nonummy@yahoo.net","address":"Ap #911-261 Bibendum St.","postalZip":"49474","country":"Austria"},{"customerId":1823,"customerName":"Emi Maddox","phone":"1-416-492-6492","email":"enim.mi.tempor@google.ca","address":"692-6228 Vitae, Rd.","postalZip":"842514","country":"Brazil"},{"customerId":1824,"customerName":"Anjolie Lara","phone":"(864) 413-3315","email":"praesent.interdum.ligula@google.org","address":"595-325 Suspendisse Road","postalZip":"4426 UI","country":"Ukraine"},{"customerId":1825,"customerName":"Quail Norris","phone":"1-257-603-7737","email":"dolor.tempus@protonmail.couk","address":"213-8882 Lorem Street","postalZip":"22038","country":"Russian Federation"},{"customerId":1826,"customerName":"Marah Fletcher","phone":"(326) 705-0128","email":"faucibus.lectus@hotmail.org","address":"764-8019 Pede Road","postalZip":"58238","country":"Norway"},{"customerId":1827,"customerName":"Melinda Grant","phone":"(370) 534-5882","email":"est@yahoo.com","address":"184-2603 Tellus, Avenue","postalZip":"5477","country":"Chile"},{"customerId":1828,"customerName":"Cleo Tate","phone":"1-618-442-5272","email":"lectus.a@aol.couk","address":"2491 Et, Rd.","postalZip":"50106","country":"Indonesia"},{"customerId":1829,"customerName":"Keefe Carlson","phone":"(912) 721-8764","email":"dolor.nonummy@aol.edu","address":"298-2756 Ornare Av.","postalZip":"13995","country":"Pakistan"},{"customerId":1830,"customerName":"Chandler Underwood","phone":"1-412-911-1417","email":"cursus.et.eros@outlook.com","address":"867-8864 Sollicitudin Street","postalZip":"8764","country":"Singapore"},{"customerId":1831,"customerName":"Gavin House","phone":"1-545-851-8989","email":"diam.eu@aol.org","address":"Ap #139-5780 Amet Ave","postalZip":"03150","country":"Ukraine"},{"customerId":1832,"customerName":"Alan Shelton","phone":"1-556-476-3653","email":"ante@google.org","address":"105-8354 Proin Street","postalZip":"5148 LO","country":"Germany"},{"customerId":1833,"customerName":"Wylie Trujillo","phone":"(437) 892-2136","email":"ante@hotmail.edu","address":"Ap #350-8470 Posuere, Rd.","postalZip":"622673","country":"Canada"},{"customerId":1834,"customerName":"Oliver Nguyen","phone":"1-929-736-1834","email":"orci.lobortis@google.org","address":"P.O. Box 882, 5936 Vitae Ave","postalZip":"H2L 6E1","country":"New Zealand"},{"customerId":1835,"customerName":"Isabelle Velasquez","phone":"(453) 153-4523","email":"eget@aol.org","address":"Ap #244-7627 Augue Rd.","postalZip":"783117","country":"Ukraine"},{"customerId":1836,"customerName":"Regina Weiss","phone":"1-586-355-1362","email":"a.enim@hotmail.couk","address":"596-7708 Ipsum. St.","postalZip":"89226-240","country":"South Africa"},{"customerId":1837,"customerName":"Rae Shaffer","phone":"1-559-617-2783","email":"sagittis.nullam@icloud.org","address":"564-8586 Lobortis Av.","postalZip":"3484","country":"Philippines"},{"customerId":1838,"customerName":"Cairo Mays","phone":"1-761-394-8886","email":"donec.egestas.aliquam@icloud.ca","address":"824-9965 Pellentesque Av.","postalZip":"38-26","country":"Singapore"},{"customerId":1839,"customerName":"Nigel Rodriguez","phone":"(465) 414-1401","email":"sem.ut@outlook.couk","address":"9904 Lorem, St.","postalZip":"80569","country":"Germany"},{"customerId":1840,"customerName":"Allen Edwards","phone":"(485) 774-2467","email":"pellentesque@protonmail.com","address":"864-7078 Dolor. Rd.","postalZip":"689563","country":"Australia"},{"customerId":1841,"customerName":"Reuben Rios","phone":"1-673-192-7641","email":"ridiculus.mus@yahoo.ca","address":"701-8932 Vulputate Rd.","postalZip":"11405","country":"Chile"},{"customerId":1842,"customerName":"Astra Lawson","phone":"1-688-844-0044","email":"nec@google.org","address":"P.O. Box 790, 9203 Ligula. Street","postalZip":"67381","country":"United Kingdom"},{"customerId":1843,"customerName":"Stewart Doyle","phone":"(685) 545-4664","email":"vel@yahoo.org","address":"316-9869 Lectus, Road","postalZip":"464974","country":"Nigeria"},{"customerId":1844,"customerName":"Jessica King","phone":"1-702-407-6351","email":"in.lobortis.tellus@aol.ca","address":"Ap #641-2258 Quam, Rd.","postalZip":"81366","country":"Ireland"},{"customerId":1845,"customerName":"Jesse Conrad","phone":"1-495-767-7781","email":"augue.ut@google.couk","address":"Ap #240-3069 Mauris Street","postalZip":"2863","country":"Poland"},{"customerId":1846,"customerName":"Tiger Levy","phone":"(393) 157-3425","email":"ultricies@protonmail.org","address":"578-5644 Nec Road","postalZip":"11809","country":"Netherlands"},{"customerId":1847,"customerName":"Clare Davenport","phone":"1-467-256-4453","email":"cum.sociis@outlook.edu","address":"438-6184 Cras Street","postalZip":"77763-03658","country":"Peru"},{"customerId":1848,"customerName":"Austin Cortez","phone":"1-451-457-6747","email":"blandit@hotmail.edu","address":"495-8379 Est, Ave","postalZip":"25769","country":"New Zealand"},{"customerId":1849,"customerName":"Amir Blanchard","phone":"1-524-281-3189","email":"pharetra.sed@protonmail.ca","address":"Ap #257-7017 Lorem Avenue","postalZip":"957693","country":"Ireland"},{"customerId":1850,"customerName":"Peter Mcclure","phone":"(657) 563-2573","email":"erat.volutpat@protonmail.edu","address":"P.O. Box 689, 4758 Phasellus Road","postalZip":"28319","country":"Indonesia"},{"customerId":1851,"customerName":"Marah Mcpherson","phone":"(345) 412-8313","email":"augue.id@yahoo.net","address":"311-597 Enim, Road","postalZip":"44941","country":"South Africa"},{"customerId":1852,"customerName":"Erasmus Kramer","phone":"1-982-775-5286","email":"ultrices@hotmail.net","address":"1645 Nascetur Ave","postalZip":"1135","country":"Philippines"},{"customerId":1853,"customerName":"Omar Joyce","phone":"(322) 926-2331","email":"consectetuer.adipiscing@aol.couk","address":"Ap #177-7427 Pharetra Av.","postalZip":"4282","country":"United Kingdom"},{"customerId":1854,"customerName":"August Cervantes","phone":"(530) 972-2722","email":"dignissim.magna@hotmail.com","address":"Ap #959-9935 Dui. Street","postalZip":"13723","country":"South Korea"},{"customerId":1855,"customerName":"Stella Foster","phone":"1-437-227-4156","email":"vitae@yahoo.edu","address":"4300 Elit. Ave","postalZip":"82-667","country":"Spain"},{"customerId":1856,"customerName":"Gloria Baxter","phone":"(719) 881-1924","email":"velit.eget.laoreet@icloud.edu","address":"Ap #811-2759 Senectus Av.","postalZip":"93364","country":"Philippines"},{"customerId":1857,"customerName":"Kuame Wagner","phone":"(865) 181-7591","email":"egestas@aol.edu","address":"981-652 Vel, Rd.","postalZip":"548823","country":"Brazil"},{"customerId":1858,"customerName":"Hakeem Manning","phone":"1-307-542-8165","email":"amet@outlook.edu","address":"P.O. Box 929, 9971 Odio Rd.","postalZip":"684633","country":"Belgium"},{"customerId":1859,"customerName":"Stella Griffith","phone":"1-751-899-6737","email":"fusce.mollis@aol.ca","address":"Ap #551-438 In, Rd.","postalZip":"8843","country":"Ireland"},{"customerId":1860,"customerName":"Ivory Spence","phone":"(547) 148-2471","email":"enim@protonmail.couk","address":"625-8735 Sapien, St.","postalZip":"51111","country":"Italy"},{"customerId":1861,"customerName":"Francis Myers","phone":"1-772-272-5804","email":"aliquam.enim@protonmail.couk","address":"P.O. Box 939, 6243 Id, Ave","postalZip":"67357-78060","country":"Austria"},{"customerId":1862,"customerName":"Alexander Brady","phone":"1-729-342-0668","email":"sociis.natoque@yahoo.ca","address":"322-4405 Quis, St.","postalZip":"645196","country":"Russian Federation"},{"customerId":1863,"customerName":"Carlos Molina","phone":"1-276-809-9145","email":"diam.luctus@hotmail.ca","address":"787-6465 Dolor Rd.","postalZip":"719618","country":"Peru"},{"customerId":1864,"customerName":"Allen Jones","phone":"1-301-303-1943","email":"elit.elit@protonmail.couk","address":"Ap #603-2462 In St.","postalZip":"34225","country":"Russian Federation"},{"customerId":1865,"customerName":"Adena Rodgers","phone":"(556) 234-5054","email":"aliquet.libero@icloud.ca","address":"581-7426 Erat. Ave","postalZip":"866795","country":"France"},{"customerId":1866,"customerName":"Kieran Fowler","phone":"1-466-346-1457","email":"enim@protonmail.net","address":"956-4438 Id, St.","postalZip":"2770","country":"Germany"},{"customerId":1867,"customerName":"Arthur Sims","phone":"1-526-733-2899","email":"sem.consequat@yahoo.org","address":"P.O. Box 257, 5793 Urna. Street","postalZip":"72860","country":"Germany"},{"customerId":1868,"customerName":"Kenneth Walker","phone":"(414) 375-4371","email":"tincidunt.orci@hotmail.ca","address":"9592 Curabitur Rd.","postalZip":"35787","country":"Sweden"},{"customerId":1869,"customerName":"Ryder Powell","phone":"1-624-490-8582","email":"etiam@outlook.edu","address":"P.O. Box 161, 4903 Condimentum Rd.","postalZip":"8215","country":"Sweden"},{"customerId":1870,"customerName":"Genevieve Haynes","phone":"(965) 865-1548","email":"aliquam.eros.turpis@hotmail.edu","address":"862-5038 Non, St.","postalZip":"40504","country":"South Africa"},{"customerId":1871,"customerName":"Flynn Carver","phone":"(146) 235-7187","email":"eget.magna.suspendisse@icloud.edu","address":"Ap #702-5604 Eros. Road","postalZip":"36742-72244","country":"Singapore"},{"customerId":1872,"customerName":"Nicholas Horn","phone":"(263) 162-8732","email":"in.condimentum.donec@hotmail.ca","address":"739-4887 Diam Avenue","postalZip":"36594","country":"Brazil"},{"customerId":1873,"customerName":"Elton Barrera","phone":"1-297-797-6663","email":"ipsum.cursus.vestibulum@hotmail.edu","address":"109-8487 Ut Street","postalZip":"62554","country":"Ukraine"},{"customerId":1874,"customerName":"Garrett Mitchell","phone":"1-809-782-4524","email":"iaculis.odio.nam@protonmail.net","address":"Ap #154-5465 Facilisis St.","postalZip":"5643","country":"Belgium"},{"customerId":1875,"customerName":"Willa Wooten","phone":"1-734-268-2036","email":"est@yahoo.edu","address":"290-6395 Sed Ave","postalZip":"40707","country":"Pakistan"},{"customerId":1876,"customerName":"Octavius Mclean","phone":"1-465-326-6802","email":"blandit.enim.consequat@icloud.ca","address":"Ap #327-7237 Sed St.","postalZip":"S2Y 4B3","country":"United Kingdom"},{"customerId":1877,"customerName":"Deacon Cole","phone":"1-378-653-0840","email":"aliquam.eros@aol.edu","address":"2005 Ipsum Street","postalZip":"6386-8474","country":"France"},{"customerId":1878,"customerName":"Neville Noel","phone":"(811) 751-2258","email":"pulvinar.arcu.et@google.org","address":"P.O. Box 533, 9794 Donec Avenue","postalZip":"1712","country":"Ireland"},{"customerId":1879,"customerName":"Drake Alford","phone":"(541) 288-4877","email":"vulputate@icloud.com","address":"Ap #325-3628 Posuere St.","postalZip":"13447","country":"Italy"},{"customerId":1880,"customerName":"Melodie Bell","phone":"1-226-713-4345","email":"nisl.arcu@aol.edu","address":"6366 Eget Avenue","postalZip":"56836","country":"Peru"},{"customerId":1881,"customerName":"Brittany Townsend","phone":"(642) 416-3802","email":"scelerisque@google.net","address":"P.O. Box 166, 8614 Tincidunt. Ave","postalZip":"33118","country":"Nigeria"},{"customerId":1882,"customerName":"Brynn Hopkins","phone":"(629) 129-1863","email":"ipsum.nunc.id@protonmail.edu","address":"4848 Porta Avenue","postalZip":"236166","country":"United States"},{"customerId":1883,"customerName":"Justina Sharpe","phone":"(772) 338-7876","email":"duis.cursus.diam@aol.net","address":"Ap #673-6972 Sed Avenue","postalZip":"857193","country":"Italy"},{"customerId":1884,"customerName":"Lani Daniels","phone":"(611) 166-0409","email":"mauris@yahoo.com","address":"Ap #953-7019 Nam Road","postalZip":"2385","country":"Colombia"},{"customerId":1885,"customerName":"Matthew Wynn","phone":"(783) 513-6115","email":"egestas.nunc@aol.couk","address":"602-1593 Etiam Av.","postalZip":"785833","country":"Netherlands"},{"customerId":1886,"customerName":"Abraham Cook","phone":"1-265-617-2884","email":"sit.amet@icloud.com","address":"3257 Cursus St.","postalZip":"3753","country":"Canada"},{"customerId":1887,"customerName":"Iliana Hendrix","phone":"1-284-146-8871","email":"curabitur@icloud.org","address":"P.O. Box 395, 3399 Sociis Rd.","postalZip":"7333","country":"Brazil"},{"customerId":1888,"customerName":"William Odom","phone":"1-690-135-9943","email":"facilisis.magna.tellus@aol.com","address":"Ap #802-3901 Tincidunt St.","postalZip":"3211","country":"Vietnam"},{"customerId":1889,"customerName":"Dominic Dodson","phone":"1-606-466-3392","email":"lobortis.quis.pede@google.net","address":"P.O. Box 458, 5161 Ligula Road","postalZip":"15721","country":"Sweden"},{"customerId":1890,"customerName":"Abbot Mercer","phone":"1-156-112-8805","email":"non.lorem@yahoo.couk","address":"P.O. Box 483, 7081 Parturient Avenue","postalZip":"284439","country":"Canada"},{"customerId":1891,"customerName":"Kylynn Jacobson","phone":"(678) 435-0864","email":"orci.adipiscing@google.com","address":"Ap #165-9838 Donec Street","postalZip":"78448","country":"South Korea"},{"customerId":1892,"customerName":"Emery Fisher","phone":"(123) 890-4325","email":"nisl@outlook.net","address":"327-1458 Pede Av.","postalZip":"724060","country":"Chile"},{"customerId":1893,"customerName":"Aquila Morales","phone":"1-662-209-8121","email":"amet.massa@aol.net","address":"5212 Nam Rd.","postalZip":"34052","country":"France"},{"customerId":1894,"customerName":"Steel Alvarez","phone":"1-772-611-8442","email":"in@outlook.couk","address":"8797 Quisque St.","postalZip":"345474","country":"South Korea"},{"customerId":1895,"customerName":"Ciaran Hickman","phone":"1-636-894-1656","email":"mi.tempor.lorem@google.edu","address":"634 Purus Street","postalZip":"5413","country":"Poland"},{"customerId":1896,"customerName":"Cheyenne Pickett","phone":"1-421-154-6217","email":"faucibus.ut@aol.couk","address":"Ap #750-8413 Sit Avenue","postalZip":"89317","country":"New Zealand"},{"customerId":1897,"customerName":"Stacey Frost","phone":"1-205-688-5415","email":"phasellus.dapibus.quam@icloud.net","address":"2731 Convallis Rd.","postalZip":"54N 8K3","country":"Indonesia"},{"customerId":1898,"customerName":"Chanda Short","phone":"1-246-625-1117","email":"vulputate.mauris.sagittis@protonmail.org","address":"Ap #651-7627 Convallis Ave","postalZip":"600991","country":"Ukraine"},{"customerId":1899,"customerName":"Hayden Nicholson","phone":"(252) 843-7630","email":"nisi.cum@yahoo.org","address":"P.O. Box 538, 654 Quam, Ave","postalZip":"345713","country":"Costa Rica"},{"customerId":1900,"customerName":"Ingrid Lamb","phone":"1-215-787-8326","email":"lorem.ut.aliquam@aol.org","address":"Ap #694-6769 Est, Avenue","postalZip":"249507","country":"United States"},{"customerId":1901,"customerName":"Hillary Rutledge","phone":"(685) 647-1350","email":"sodales.elit@hotmail.couk","address":"Ap #929-8555 In St.","postalZip":"64695","country":"Turkey"},{"customerId":1902,"customerName":"McKenzie Woods","phone":"(481) 275-8422","email":"egestas.hendrerit.neque@google.couk","address":"Ap #744-6078 Integer Rd.","postalZip":"248827","country":"Ireland"},{"customerId":1903,"customerName":"Britanni Hurley","phone":"1-359-677-1812","email":"dictum@protonmail.edu","address":"783-1472 Molestie Rd.","postalZip":"B1C 6S0","country":"South Korea"},{"customerId":1904,"customerName":"Brynne Hendrix","phone":"(425) 432-1859","email":"scelerisque.lorem@hotmail.ca","address":"812-3306 Cursus St.","postalZip":"98852-87194","country":"Philippines"},{"customerId":1905,"customerName":"Alan Wise","phone":"(695) 334-4756","email":"lorem.vitae@hotmail.org","address":"3894 Nunc, Street","postalZip":"15443","country":"Turkey"},{"customerId":1906,"customerName":"Baker Stuart","phone":"1-645-318-1323","email":"lobortis@aol.com","address":"P.O. Box 115, 3968 Auctor. Avenue","postalZip":"683633","country":"Chile"},{"customerId":1907,"customerName":"Jack Knowles","phone":"(865) 646-0104","email":"ligula.nullam.enim@outlook.ca","address":"P.O. Box 503, 1481 Nonummy Avenue","postalZip":"6038 FX","country":"Sweden"},{"customerId":1908,"customerName":"Ferdinand Phelps","phone":"(882) 377-4211","email":"interdum.nunc@outlook.edu","address":"Ap #673-6139 Libero St.","postalZip":"84115","country":"Italy"},{"customerId":1909,"customerName":"September Phillips","phone":"1-820-498-4893","email":"sem@icloud.couk","address":"Ap #580-178 Metus. St.","postalZip":"87564","country":"Austria"},{"customerId":1910,"customerName":"Kimberly Figueroa","phone":"(625) 380-4152","email":"massa.mauris@yahoo.ca","address":"Ap #947-7054 Felis Avenue","postalZip":"333803","country":"Norway"},{"customerId":1911,"customerName":"Adara Eaton","phone":"1-331-418-6738","email":"lectus.ante@aol.com","address":"P.O. Box 323, 621 Mauris Rd.","postalZip":"466335","country":"South Korea"},{"customerId":1912,"customerName":"Ivor Benton","phone":"1-254-872-3154","email":"sem.vitae@aol.net","address":"755-1841 Interdum. Street","postalZip":"35623","country":"Germany"},{"customerId":1913,"customerName":"Priscilla Haley","phone":"(367) 358-2304","email":"in.magna@hotmail.net","address":"Ap #594-2415 Adipiscing Rd.","postalZip":"4447","country":"Nigeria"},{"customerId":1914,"customerName":"Wyoming Talley","phone":"(570) 793-8155","email":"in.faucibus@icloud.net","address":"7385 Cursus. Ave","postalZip":"18723-511","country":"Peru"},{"customerId":1915,"customerName":"Theodore Whitley","phone":"(584) 671-6377","email":"tellus.eu@yahoo.net","address":"Ap #687-2211 Quam Ave","postalZip":"2236","country":"Australia"},{"customerId":1916,"customerName":"Adam Ross","phone":"1-923-536-2401","email":"tempor.diam@aol.ca","address":"Ap #445-6340 Malesuada. Av.","postalZip":"561431","country":"France"},{"customerId":1917,"customerName":"Sophia Pugh","phone":"(834) 291-7660","email":"nunc.interdum@outlook.org","address":"Ap #657-3714 Arcu Street","postalZip":"1352","country":"Mexico"},{"customerId":1918,"customerName":"Desirae Gates","phone":"(437) 628-8912","email":"malesuada.fringilla.est@protonmail.net","address":"Ap #445-8866 Sit St.","postalZip":"192504","country":"Norway"},{"customerId":1919,"customerName":"Tad Fisher","phone":"1-112-372-7529","email":"et.magnis@protonmail.com","address":"3946 Vulputate, St.","postalZip":"57-026","country":"India"},{"customerId":1920,"customerName":"Colette Duke","phone":"1-802-387-2346","email":"eget.nisi@google.couk","address":"P.O. Box 611, 2783 Augue St.","postalZip":"86585","country":"South Korea"},{"customerId":1921,"customerName":"Yolanda Mosley","phone":"(462) 737-9037","email":"urna@protonmail.couk","address":"1350 Non Avenue","postalZip":"07-758","country":"Ukraine"},{"customerId":1922,"customerName":"Cathleen Best","phone":"(863) 686-4677","email":"a.enim@outlook.org","address":"Ap #545-7936 Lectus Rd.","postalZip":"32609","country":"New Zealand"},{"customerId":1923,"customerName":"Galena Mueller","phone":"(257) 331-8978","email":"sit@hotmail.org","address":"8386 Adipiscing St.","postalZip":"7096-3056","country":"Turkey"},{"customerId":1924,"customerName":"Zane Fuentes","phone":"1-191-322-5677","email":"amet@outlook.org","address":"Ap #419-7784 Semper Rd.","postalZip":"67247","country":"United States"},{"customerId":1925,"customerName":"Lee Romero","phone":"(675) 103-3374","email":"dolor.quisque@icloud.com","address":"Ap #613-9414 Nec Av.","postalZip":"375359","country":"Belgium"},{"customerId":1926,"customerName":"Bree Christensen","phone":"1-228-192-4787","email":"sed.sem.egestas@hotmail.org","address":"Ap #455-3187 Nisi Rd.","postalZip":"42817","country":"Canada"},{"customerId":1927,"customerName":"Phelan Hammond","phone":"1-329-234-5222","email":"ut.sagittis@icloud.couk","address":"P.O. Box 814, 581 Mauris St.","postalZip":"28452","country":"Nigeria"},{"customerId":1928,"customerName":"Noel O'Neill","phone":"1-434-358-5842","email":"mauris.sit@outlook.ca","address":"6391 Vitae Road","postalZip":"F2 5NZ","country":"Singapore"},{"customerId":1929,"customerName":"Quinn Ballard","phone":"(351) 846-1611","email":"ut.sem.nulla@outlook.ca","address":"377-3132 Et, Avenue","postalZip":"6516","country":"France"},{"customerId":1930,"customerName":"Jane French","phone":"(588) 297-5859","email":"mauris@outlook.org","address":"9514 Nulla Road","postalZip":"87-17","country":"Belgium"},{"customerId":1931,"customerName":"Samson Pate","phone":"1-256-274-5718","email":"eleifend.egestas@yahoo.com","address":"335-2976 Non, Avenue","postalZip":"302914","country":"China"},{"customerId":1932,"customerName":"Lee Bates","phone":"1-522-851-7746","email":"mi.enim.condimentum@icloud.com","address":"Ap #705-7521 Rutrum Rd.","postalZip":"88-378","country":"Russian Federation"},{"customerId":1933,"customerName":"Galena Burke","phone":"1-660-152-5750","email":"turpis.non.enim@icloud.edu","address":"Ap #514-8587 Mi Street","postalZip":"392162","country":"India"},{"customerId":1934,"customerName":"Zelda Sharpe","phone":"1-944-292-7168","email":"erat.neque@google.couk","address":"P.O. Box 978, 647 Arcu. Rd.","postalZip":"4439","country":"Germany"},{"customerId":1935,"customerName":"Alec Wolfe","phone":"(755) 259-5304","email":"ac.mattis.velit@yahoo.org","address":"318-1151 Fusce Avenue","postalZip":"984295","country":"United States"},{"customerId":1936,"customerName":"Lewis Montoya","phone":"1-425-513-1726","email":"orci@icloud.net","address":"P.O. Box 924, 3652 Nam Av.","postalZip":"98182-41395","country":"New Zealand"},{"customerId":1937,"customerName":"Yael Mercado","phone":"(633) 702-6704","email":"iaculis.lacus.pede@google.edu","address":"Ap #752-3027 In Rd.","postalZip":"131797","country":"Indonesia"},{"customerId":1938,"customerName":"Damian Cummings","phone":"1-535-648-2572","email":"suspendisse.ac.metus@aol.com","address":"759-956 Mollis. Street","postalZip":"0158","country":"Vietnam"},{"customerId":1939,"customerName":"Dustin Chaney","phone":"(503) 886-0665","email":"eget@yahoo.couk","address":"3178 Ligula. Rd.","postalZip":"58118-164","country":"Costa Rica"},{"customerId":1940,"customerName":"Shelly Bryan","phone":"(311) 726-0887","email":"eros.turpis.non@protonmail.net","address":"P.O. Box 604, 6770 Dui, Ave","postalZip":"387948","country":"New Zealand"},{"customerId":1941,"customerName":"Charlotte Meadows","phone":"(639) 893-2124","email":"donec.felis@hotmail.ca","address":"P.O. Box 858, 8575 Ipsum Avenue","postalZip":"13225","country":"Peru"},{"customerId":1942,"customerName":"Kenyon Camacho","phone":"1-861-321-8402","email":"varius.nam@yahoo.ca","address":"122-1077 Turpis Road","postalZip":"342261","country":"Singapore"},{"customerId":1943,"customerName":"Leah Singleton","phone":"(462) 129-3256","email":"auctor.velit.aliquam@protonmail.com","address":"8729 Congue. Avenue","postalZip":"12026","country":"Germany"},{"customerId":1944,"customerName":"Jerry Skinner","phone":"(938) 358-7523","email":"ullamcorper.nisl@outlook.ca","address":"Ap #749-5734 Orci Street","postalZip":"2128","country":"Vietnam"},{"customerId":1945,"customerName":"Thaddeus Rosario","phone":"1-548-788-8153","email":"orci@google.couk","address":"906-1436 Orci Avenue","postalZip":"50517","country":"Netherlands"},{"customerId":1946,"customerName":"Abdul Love","phone":"(445) 835-6892","email":"a.tortor.nunc@outlook.ca","address":"Ap #203-3317 Eu Av.","postalZip":"45-541","country":"Belgium"},{"customerId":1947,"customerName":"Karly Knox","phone":"1-582-259-6876","email":"turpis.non@google.net","address":"488-4553 Odio. Street","postalZip":"121636","country":"Mexico"},{"customerId":1948,"customerName":"Maggie Maldonado","phone":"(750) 440-4269","email":"est.arcu.ac@protonmail.couk","address":"P.O. Box 871, 4738 Amet Rd.","postalZip":"911828","country":"Netherlands"},{"customerId":1949,"customerName":"Andrew Carroll","phone":"1-651-717-7573","email":"sapien.gravida@aol.couk","address":"Ap #313-7897 Non, Street","postalZip":"36-82","country":"Vietnam"},{"customerId":1950,"customerName":"Lana Reese","phone":"1-461-611-6288","email":"mus.proin@aol.net","address":"5898 Et Avenue","postalZip":"21157","country":"France"},{"customerId":1951,"customerName":"Althea Delgado","phone":"1-245-556-7878","email":"interdum.curabitur@google.ca","address":"490-8010 Porttitor Rd.","postalZip":"9839","country":"Australia"},{"customerId":1952,"customerName":"Forrest Dunlap","phone":"(902) 334-7146","email":"praesent.interdum@yahoo.edu","address":"Ap #168-8759 Tristique Rd.","postalZip":"41-162","country":"Norway"},{"customerId":1953,"customerName":"Dora Schneider","phone":"(815) 642-8375","email":"libero@icloud.net","address":"279-7895 Fermentum St.","postalZip":"17558-56886","country":"United Kingdom"},{"customerId":1954,"customerName":"Gary Gaines","phone":"(603) 584-0047","email":"maecenas.mi@hotmail.com","address":"227-5991 Lacus. Rd.","postalZip":"874838","country":"China"},{"customerId":1955,"customerName":"Darryl Brennan","phone":"1-952-835-5827","email":"mi@hotmail.couk","address":"546-9418 Ad Av.","postalZip":"11371-28674","country":"New Zealand"},{"customerId":1956,"customerName":"Autumn Murphy","phone":"(944) 534-8183","email":"fermentum@outlook.edu","address":"P.O. Box 789, 1377 Et, Ave","postalZip":"12420","country":"Norway"},{"customerId":1957,"customerName":"Donna Castaneda","phone":"1-964-677-2689","email":"semper.tellus@icloud.com","address":"4979 Vitae Rd.","postalZip":"D2 6MG","country":"Nigeria"},{"customerId":1958,"customerName":"Kirby Kelley","phone":"(814) 225-8824","email":"mauris.erat@yahoo.edu","address":"568-4879 Quisque Av.","postalZip":"648468","country":"Russian Federation"},{"customerId":1959,"customerName":"Elmo Reilly","phone":"(774) 232-2605","email":"velit.cras@aol.couk","address":"2451 Porttitor St.","postalZip":"00-320","country":"United Kingdom"},{"customerId":1960,"customerName":"Gage Johnston","phone":"1-167-686-3155","email":"enim@google.edu","address":"Ap #467-7607 Mi Av.","postalZip":"32-55","country":"Ireland"},{"customerId":1961,"customerName":"Malik Fischer","phone":"(883) 301-7931","email":"neque.nullam.nisl@aol.com","address":"Ap #327-7425 Netus Road","postalZip":"66-810","country":"Chile"},{"customerId":1962,"customerName":"Shelley Wilson","phone":"(703) 672-0707","email":"turpis@icloud.com","address":"Ap #954-200 Ante Av.","postalZip":"86126","country":"India"},{"customerId":1963,"customerName":"Raymond Price","phone":"1-563-164-6654","email":"ante@outlook.edu","address":"221-9731 In Ave","postalZip":"634553","country":"India"},{"customerId":1964,"customerName":"Alden Fox","phone":"(726) 375-4844","email":"ullamcorper.magna@yahoo.ca","address":"6171 Malesuada Avenue","postalZip":"8184","country":"United States"},{"customerId":1965,"customerName":"Jerry Kelly","phone":"1-583-775-0164","email":"odio.auctor@google.ca","address":"4912 Porttitor Rd.","postalZip":"99317","country":"Ireland"},{"customerId":1966,"customerName":"Maisie Dunn","phone":"(392) 679-8155","email":"phasellus@yahoo.ca","address":"Ap #968-9517 Ante Road","postalZip":"542782","country":"Germany"},{"customerId":1967,"customerName":"Whoopi Terrell","phone":"(761) 112-3129","email":"dignissim.magna@google.couk","address":"Ap #552-4560 Cubilia St.","postalZip":"54695","country":"Vietnam"},{"customerId":1968,"customerName":"Todd Chen","phone":"(323) 673-3823","email":"phasellus.dapibus@protonmail.net","address":"P.O. Box 502, 1048 Elementum St.","postalZip":"GW1M 9IR","country":"Colombia"},{"customerId":1969,"customerName":"Lane Hickman","phone":"(378) 534-1640","email":"enim.commodo.hendrerit@hotmail.net","address":"138-830 Lectus Ave","postalZip":"B6W 4S6","country":"China"},{"customerId":1970,"customerName":"Raphael Hines","phone":"(321) 313-4834","email":"commodo.auctor.velit@hotmail.couk","address":"Ap #846-4814 Adipiscing Avenue","postalZip":"834625","country":"Australia"},{"customerId":1971,"customerName":"Selma Villarreal","phone":"1-422-129-7546","email":"euismod.enim@outlook.org","address":"P.O. Box 150, 6190 Mi Road","postalZip":"58791","country":"Mexico"},{"customerId":1972,"customerName":"Maile Hatfield","phone":"(154) 593-6400","email":"venenatis.lacus@google.net","address":"4394 Pede Ave","postalZip":"77338","country":"South Africa"},{"customerId":1973,"customerName":"Dane Conner","phone":"(338) 310-6671","email":"amet.dapibus.id@icloud.net","address":"983-7551 Sem Rd.","postalZip":"9526-8662","country":"Italy"},{"customerId":1974,"customerName":"Dylan Petty","phone":"1-201-571-4956","email":"ac.risus@google.ca","address":"Ap #310-9255 Ligula. Rd.","postalZip":"81M 1V1","country":"Ukraine"},{"customerId":1975,"customerName":"Fay Howard","phone":"(660) 402-4432","email":"sociis.natoque@outlook.com","address":"573-5343 Tellus Av.","postalZip":"11219","country":"Indonesia"},{"customerId":1976,"customerName":"Hedda Gross","phone":"(265) 412-7640","email":"arcu.aliquam@yahoo.com","address":"Ap #726-2764 Posuere St.","postalZip":"23871","country":"South Africa"},{"customerId":1977,"customerName":"Devin Burton","phone":"1-353-432-8572","email":"adipiscing.fringilla.porttitor@icloud.ca","address":"835-1832 Risus. Av.","postalZip":"47-48","country":"Nigeria"},{"customerId":1978,"customerName":"Amber Hubbard","phone":"(251) 369-7381","email":"vel@protonmail.com","address":"5651 Congue Av.","postalZip":"60761","country":"Russian Federation"},{"customerId":1979,"customerName":"Stella Warren","phone":"(730) 217-0434","email":"ipsum.dolor@yahoo.edu","address":"955-8876 Ultrices Road","postalZip":"40018","country":"South Korea"},{"customerId":1980,"customerName":"Miranda Vaughn","phone":"(286) 745-9212","email":"magna.phasellus@outlook.com","address":"Ap #795-7294 Eu Rd.","postalZip":"7394","country":"Chile"},{"customerId":1981,"customerName":"Ahmed Mckinney","phone":"(721) 976-8173","email":"proin.vel@protonmail.com","address":"6101 Orci Road","postalZip":"8564","country":"France"},{"customerId":1982,"customerName":"Felix Mcbride","phone":"1-593-527-3256","email":"aenean.eget@protonmail.edu","address":"4437 A, St.","postalZip":"78541","country":"Mexico"},{"customerId":1983,"customerName":"Vladimir Velazquez","phone":"(372) 460-7710","email":"parturient@icloud.net","address":"Ap #427-1787 Pede Av.","postalZip":"72584","country":"Ireland"},{"customerId":1984,"customerName":"Oprah England","phone":"(825) 604-3254","email":"velit.eu@hotmail.ca","address":"Ap #467-2113 Dapibus St.","postalZip":"812316","country":"Colombia"},{"customerId":1985,"customerName":"Chelsea Richard","phone":"1-233-830-6941","email":"sagittis.semper.nam@yahoo.edu","address":"Ap #120-9600 Orci. Av.","postalZip":"12226","country":"Chile"},{"customerId":1986,"customerName":"Berk Juarez","phone":"1-555-912-8835","email":"pellentesque.massa.lobortis@google.couk","address":"390-4503 Gravida St.","postalZip":"95-58","country":"Poland"},{"customerId":1987,"customerName":"Channing Mcclure","phone":"1-972-275-5207","email":"aenean@google.ca","address":"Ap #482-622 Bibendum Road","postalZip":"11856","country":"United Kingdom"},{"customerId":1988,"customerName":"Gabriel Riddle","phone":"(446) 623-3822","email":"in.mi@google.ca","address":"P.O. Box 126, 1812 Sit Ave","postalZip":"632277","country":"Austria"},{"customerId":1989,"customerName":"Laurel Montoya","phone":"1-631-215-2305","email":"dictum.eu@google.org","address":"7628 Orci Ave","postalZip":"5987","country":"United Kingdom"},{"customerId":1990,"customerName":"Stewart Vasquez","phone":"(372) 925-1206","email":"hendrerit.a.arcu@protonmail.com","address":"960-4259 Elit Ave","postalZip":"12777-34242","country":"Indonesia"},{"customerId":1991,"customerName":"Brody Bowen","phone":"1-631-977-2126","email":"gravida.sagittis@icloud.ca","address":"478 Ante. St.","postalZip":"37508","country":"China"},{"customerId":1992,"customerName":"Boris Short","phone":"1-644-724-7864","email":"pellentesque.a.facilisis@hotmail.net","address":"992-7563 Sem Street","postalZip":"5303","country":"United States"},{"customerId":1993,"customerName":"Deanna Russo","phone":"(276) 819-4043","email":"adipiscing.elit@yahoo.com","address":"P.O. Box 666, 6846 Nibh. St.","postalZip":"57881","country":"Singapore"},{"customerId":1994,"customerName":"Ahmed Ford","phone":"1-751-871-4244","email":"lobortis.augue.scelerisque@google.ca","address":"Ap #182-7880 Donec Rd.","postalZip":"5778","country":"Costa Rica"},{"customerId":1995,"customerName":"Stella Rowland","phone":"(635) 976-8426","email":"nunc@icloud.org","address":"Ap #791-7934 Semper, Rd.","postalZip":"4730 OG","country":"United States"},{"customerId":1996,"customerName":"Chiquita Weiss","phone":"1-420-691-0429","email":"dolor.fusce@yahoo.org","address":"P.O. Box 603, 623 Semper, Rd.","postalZip":"2987","country":"Norway"},{"customerId":1997,"customerName":"Hop Potter","phone":"1-862-589-7849","email":"neque.nullam@outlook.org","address":"369-8543 Erat Ave","postalZip":"Q5G 8JW","country":"Turkey"},{"customerId":1998,"customerName":"Yvette Fletcher","phone":"1-493-824-6861","email":"nec.quam@aol.org","address":"719-1513 Mus. Ave","postalZip":"188335","country":"Vietnam"},{"customerId":1999,"customerName":"Raya Chaney","phone":"1-343-252-4186","email":"ipsum.nunc.id@aol.org","address":"152-7411 Facilisis Ave","postalZip":"24-030","country":"Turkey"},{"customerId":2000,"customerName":"Oleg Morton","phone":"1-271-724-9512","email":"feugiat.nec@aol.couk","address":"6910 Ut Avenue","postalZip":"04325","country":"Poland"}] \ No newline at end of file diff --git a/BlazorBootstrap.Demo.Server/wwwroot/sitemap.xml b/BlazorBootstrap.Demo.Server/wwwroot/sitemap.xml new file mode 100644 index 000000000..483f45f4c --- /dev/null +++ b/BlazorBootstrap.Demo.Server/wwwroot/sitemap.xml @@ -0,0 +1,118 @@ + + + + https://demos.blazorbootstrap.com + daily + 0.9 + + + https://demos.blazorbootstrap.com/getting-started + weekly + 0.5 + + + https://demos.blazorbootstrap.com/alerts + weekly + 0.5 + + + https://demos.blazorbootstrap.com/autocomplete + weekly + 0.5 + + + https://demos.blazorbootstrap.com/breadcrumb + weekly + 0.5 + + + https://demos.blazorbootstrap.com/buttons + weekly + 0.5 + + + https://demos.blazorbootstrap.com/callout + weekly + 0.5 + + + https://demos.blazorbootstrap.com/charts + weekly + 0.5 + + + https://demos.blazorbootstrap.com/confirm-dialog + weekly + 0.5 + + + https://demos.blazorbootstrap.com/form/currency-input + weekly + 0.5 + + + https://demos.blazorbootstrap.com/grid + weekly + 0.5 + + + https://demos.blazorbootstrap.com/icons + weekly + 0.5 + + + https://demos.blazorbootstrap.com/modals + weekly + 0.5 + + + https://demos.blazorbootstrap.com/form/number-input + weekly + 0.5 + + + https://demos.blazorbootstrap.com/offcanvas + weekly + 0.5 + + + https://demos.blazorbootstrap.com/pagination + weekly + 0.5 + + + https://demos.blazorbootstrap.com/placeholders + weekly + 0.5 + + + https://demos.blazorbootstrap.com/preload + weekly + 0.5 + + + https://demos.blazorbootstrap.com/progress + weekly + 0.5 + + + https://demos.blazorbootstrap.com/form/switch + weekly + 0.5 + + + https://demos.blazorbootstrap.com/tabs + weekly + 0.5 + + + https://demos.blazorbootstrap.com/toasts + weekly + 0.5 + + + https://demos.blazorbootstrap.com/tooltips + weekly + 0.5 + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.WebAssembly/App.razor b/BlazorBootstrap.Demo.WebAssembly/App.razor new file mode 100644 index 000000000..f0f0afe72 --- /dev/null +++ b/BlazorBootstrap.Demo.WebAssembly/App.razor @@ -0,0 +1,12 @@ + + + + + + + Not found + +

Sorry, there's nothing at this address.

+ + + diff --git a/BlazorBootstrap.Demo.WebAssembly/BlazorBootstrap.Demo.WebAssembly.csproj b/BlazorBootstrap.Demo.WebAssembly/BlazorBootstrap.Demo.WebAssembly.csproj new file mode 100644 index 000000000..324566609 --- /dev/null +++ b/BlazorBootstrap.Demo.WebAssembly/BlazorBootstrap.Demo.WebAssembly.csproj @@ -0,0 +1,19 @@ + + + + net8.0 + enable + enable + + + + + + + + + + + + + diff --git a/BlazorBootstrap.Demo.WebAssembly/Program.cs b/BlazorBootstrap.Demo.WebAssembly/Program.cs new file mode 100644 index 000000000..2b80cb76f --- /dev/null +++ b/BlazorBootstrap.Demo.WebAssembly/Program.cs @@ -0,0 +1,12 @@ +var builder = WebAssemblyHostBuilder.CreateDefault(args); + +builder.RootComponents.Add("#app"); +builder.RootComponents.Add("head::after"); + +builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); + +// Register services +builder.Services.AddBlazorBootstrap(); +builder.Services.AddDemoServices(); + +await builder.Build().RunAsync(); diff --git a/BlazorBootstrap.Demo.WebAssembly/Properties/launchSettings.json b/BlazorBootstrap.Demo.WebAssembly/Properties/launchSettings.json new file mode 100644 index 000000000..9f68692b3 --- /dev/null +++ b/BlazorBootstrap.Demo.WebAssembly/Properties/launchSettings.json @@ -0,0 +1,41 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:26463", + "sslPort": 44339 + } + }, + "profiles": { + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "applicationUrl": "https://localhost:5011;http://localhost:5010", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "applicationUrl": "http://localhost:5010", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/BlazorBootstrap.Demo.WebAssembly/Usings.cs b/BlazorBootstrap.Demo.WebAssembly/Usings.cs new file mode 100644 index 000000000..64f3951e7 --- /dev/null +++ b/BlazorBootstrap.Demo.WebAssembly/Usings.cs @@ -0,0 +1,3 @@ +global using BlazorBootstrap.Demo.RCL; +global using Microsoft.AspNetCore.Components.Web; +global using Microsoft.AspNetCore.Components.WebAssembly.Hosting; diff --git a/BlazorBootstrap.Demo.WebAssembly/_Imports.razor b/BlazorBootstrap.Demo.WebAssembly/_Imports.razor new file mode 100644 index 000000000..bd4de64b2 --- /dev/null +++ b/BlazorBootstrap.Demo.WebAssembly/_Imports.razor @@ -0,0 +1,11 @@ +@using System.Net.Http +@using System.Net.Http.Json +@using System.Threading.Tasks +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.AspNetCore.Components.WebAssembly.Http +@using Microsoft.JSInterop +@using BlazorBootstrap +@using BlazorBootstrap.Demo.WebAssembly diff --git a/BlazorBootstrap.Demo.WebAssembly/wwwroot/appsettings.json b/BlazorBootstrap.Demo.WebAssembly/wwwroot/appsettings.json new file mode 100644 index 000000000..726e47c2e --- /dev/null +++ b/BlazorBootstrap.Demo.WebAssembly/wwwroot/appsettings.json @@ -0,0 +1,16 @@ +{ + "version": "2.2.1", + "release": { + "short_description": "Confirm Dialog, Grid Updates, and Demo Projects Upgraded to .NET 8!!!" + }, + "urls": { + "docs": "//docs.blazorbootstrap.com/getting-started/blazor-webassembly-net-8", + "blog": "//docs.blazorbootstrap.com/blog", + "github": "//github.com/vikramlearning/blazorbootstrap", + "twitter": "//twitter.com/blazorbootstrap", + "linkedin": "//www.linkedin.com/groups/14161025", + "github_issues": "//github.com/vikramlearning/blazorbootstrap/issues", + "github_discussions": "//github.com/vikramlearning/blazorbootstrap/discussions", + "stackoverflow": "//stackoverflow.com/questions/tagged/blazor-bootstrap" + } +} \ No newline at end of file diff --git a/BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/128X128.png b/BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/128X128.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc404fcb6a25dcb4468c6ff787089f846b3e862 GIT binary patch literal 7074 zcmV;T8(rjyP)7%-*ey?7=diClRV-bo_gd!B72t_DD5sFZRE-sQH zRq*?zaRcT`KzKb4znnC^??}CSq9WDwyQW)_Vv$CS8#wp+2m@SHt$!Y*yY!R~&f_8s zaPhVNIG_KAjvF}Vst5yI9IZbZS+?eMRisBF3~+G}0j=rtW%_eJq(F7wv(b^d3N2;z zS{Vh+{B;2GbxuL&XWei81x--)GX|F%A`L+LBq9MS1^iVF)XE=@RKxA^pBzv?WqyEE z&t#DQXrv3M9Ps~uYzfls>Zt=kcn$UYT{!n7jT+ioH9ogLuib#k^05^c|zVSMMn}@?RU9CHiHsll}eQzIlFYl0qdD`Kp$3+;x zF6iAhL)(@~^gfP!fI&ZRM4vhUpX~XsAdPV0XS9VLP&L8;7APZSOEY9c0Qx^#!Pw!pu25t(s6!Mjs9Lp;$UX-=R;gaOO|Pu^AsL%Dbyc0aLrIB?F9VRYKK$t+&NVtR?bh0Ocy=jU-9F40&DrUjwO%x8+GP!+Ax) zrd%q^>AXj2ol?a$Ny+gJPn5shmaToLWJwzAMw%}U{t_}9PeWPll^4musOqNCVFY?p zWU1=-l!jCdtaYz;fC^g0>d~Z}`H9?@J=u5ZW%#TK_^yX7DVO#tr%7}r0!{!AMk2d3 zf#1qmiLw)gD2U|!2AT!@$n37HzRPYwHWv4HXToM(*(ndyjjjaXY5e&Z(jCn0IdRD@ z=(5dwg`OkLe+*jxd0pW96w+{Vyt#HS2aTblLj*cg#X1xkmK4;NNg@>}TLjZl#s52J zLBe)F(0i|-7JfT)lKW70d~g}o=YFXY7y#fC;5kU~_DYZiK$dMXhD-cqT=t1F*X*ob zt4N9Mg?rKE$vxC@I7bf&eitSM5qKK2PG&yN2e!bM%D5LAecAusbG~_*X0K}dOx9}r z>b;(dk%6Qc8F-&z{^hFgWj@ye?_>J+E5|bKpNach)`h{L9z9U+@32`q8#_ zSw{l+F;!u7kiaKx{yn5WR2~bL6X}9Z`4^Ov{TU7*l+79h7^{lYS{@Yvjo4Ar3+)_t>hB;G?ss# z#+430Coh=~k!DQYU9&hCKXz>V!AsCr_C-HC6#YIFGP!EGo}kyK>-5EvZ$BKM1NiF) z<$bbgpYDH7^3@B>bO3E1U(Rqk`hkfKAh`hkXr?$p*l{i)zqmJPs07gWg_85r6ZbVj zWsCp=Jd8?j9C`-uy|?0=B&76(0RyP^`dq3@8;>7DdJgF&0DrtPMPPc;?&<*b�Kc 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 M07*qoM6N<$f<@(i8UO$Q literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/150X150.png b/BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/150X150.png new file mode 100644 index 0000000000000000000000000000000000000000..007f6e095892e6090c7f3aa8312dca1bc5f4c84e GIT binary patch literal 7926 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 literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/16X16.png b/BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/16X16.png new file mode 100644 index 0000000000000000000000000000000000000000..975865786b1cbe5e30dcbfd87e5588b2a3f2f8eb GIT binary patch literal 673 zcmV;S0$%-zP){ilWvQR47z1eqgnF(38}I6sbJ~0@WU*p%-fe^&)~Gir^PktWc~~p;WZA8tAPa zT0zi*hk^k&iP`RE{J&(?SQHflzr5MqnRzq+H;?E)fBY}bCwD)Oo*iz^7`vzK(JEqX zm%k0}j!iU>O3K)$_Kif9_&$*y`Kf|^r`5G1vwnrv`1i`IXZi579 zW+|qXG(*b0B*i+sn<{UkHM~GM8^KYmH^5=A0?fc;DH|s)5*6hc3mru8Fy5>Q5|vS! zG8MFgN$?I_H>he0zP3QLIw)NY!Mae%>GIB6Dcc>Bz?44#j)IqP_|$bRGP*ypXcWOo zFo81SsgbP%3l7E{=M|H{0<&Nv7)RZvXNoMwCx+6bKH9OmcT6sa{r+43sN?vV2YWL% z>>Pk2y#U9sWAE&1e`QH!m754itI|gi&&T)LVE0S?gM03l^n{3=SUbQj@CLkP%k9Gq zu!Nl?+h4}mcBjd5Pax@Pkmw)Ue);<;fLkCLoPrVW9;$d)G3*=gKL=w7$J&N!<|>7d zi_;M!Ml48j2#$?N(pXLgls02vYLWCQh?NHISC@xIRFQFXnf`gHD)91$4IlsGPUj-Nd8dJqkXi!FT00000NkvXX Hu0mjfsn0M; literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/180X180.png b/BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/180X180.png new file mode 100644 index 0000000000000000000000000000000000000000..7a54949c732e318672eb41905a0a5299165a4476 GIT binary patch literal 9809 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

pBJvlzs#?2NcFc#r+} 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 Fe*j6Hy8QqE literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/310X310.png b/BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/310X310.png new file mode 100644 index 0000000000000000000000000000000000000000..af0f803c13ee2c2e3d8102f52d0dc52741c9c86d GIT binary patch literal 17267 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 literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/32X32.png b/BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/32X32.png new file mode 100644 index 0000000000000000000000000000000000000000..86ecffdc832d0c831669d2e95ce73cd7de9e9038 GIT binary patch literal 1513 zcmVJPpX*HRF-VxYG5p=cn;plJftBB1za zw!Ul)49ZAI2Hf|ae&@XBz4ztb%ST(Te|)!x=Q+=L@B93okMo=dLT*3*!;|x5?Qzgb zE-Sanh%Nr|9NXicKI~z9`}q}Msf4hMTLxf%Tx&QX^b^oxqdt3E{TxQq?9FqL&IR5g_>vk@r>oelu}0kG1>2= zrg1{eAk#PnUqlo&5R^!m`V?FWls{>38sFNukPycOSd0{gU9N{u8-Wb#=w`58phTed zrHY*p(*z7p=l}$VaY2--E}5{kc()&3W&-$2L~;0V&nfp_5C_5znx`=QAXpjbA-Am& z&=`KaQ1gO$N6yFqQCJ>ch{i(Em0li2@nSp)tXUc#233d%FzQ>gjN3>CnUOl$kLFJE&XOzmdx_7*3P=`@#0|B0~)<<@rZ$ZzBH&*41+Vi!nhjQe&T*#FC z0z$4?^ShN?qIXe_+R}L?2-I67$1T01fFuK<7wG_xclzU-9M4FvG*Q) zs2Ab`@TeI4dGI3WQnYiMg!({S*5i$fok#{@Aw2!iEi9klPI>!rOytChzEX!Fs9eg!d`{g+N{>b+3za zPsoDpHXrgso1NU{r;y}>^LY-#yia7o@I!hWM8t|D!s9V5$63@+iZLAIbU< z&yv+*4+4>sufL5uVSk3ioQI|&N$ z(eoQPInOLe3O79S?_6i+ok{%L8-V*H|IVOW1v=`=BO}-QRbug@`tk_&1`UPPEd|pQ z`F}I7I-zD#FP4QSZYIeu8TMZW^?^n&l#YuO1cjN&(KKOmu(&0RyT$MK_W`DfdnbRl zb+YHe`{Vg%-jkN7Z|O3ut%2`A2)EJCAx19+Pbt2b{bI;|f5Oi_WIa0B*2l zUa8kA{|dCNpze_bEepy%OCL#UGx0jtL}MAfVCyc1s6 z;=OZ)jcdgiW=psffORr%zsmfYn4uW~ND%2@N92;s|8c<*?7{)CyK7^vY zh9aDF;B9fOxECB*AS);dQ5c+61Pmaak>l8WsXB!ZT|@+$F%f-hd>6xr8G8{ZzA#k# zGJuOiM3$f)a-lzjG^jJ(iFAsYFcj=9P@J;}d9f+Z0#rdJF&pqfRXc8f0l>R>w*VK? zwb@SFGfl;ON=nCvHz5MyavCxYBR>N`D~vY4>(hlzk;AwD@%*>XKLQK@{7FKZq<*~@ P00000NkvXXu0mjfeXZ0W literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/48X48.png b/BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/48X48.png new file mode 100644 index 0000000000000000000000000000000000000000..6b72cc6a62ee7a3ca5a3e710ec35abd98888c157 GIT binary patch literal 2493 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 literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/96X96.png b/BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/96X96.png new file mode 100644 index 0000000000000000000000000000000000000000..d78b76e8e7d69bf52a5e59ad4dfa4ffcee1abfda GIT binary patch literal 5130 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 sDE1 \ No newline at end of file diff --git a/BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/logo-white.svg b/BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/logo-white.svg new file mode 100644 index 000000000..629cd3367 --- /dev/null +++ b/BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/logo-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/logo.svg b/BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/logo.svg new file mode 100644 index 000000000..86d94bf13 --- /dev/null +++ b/BlazorBootstrap.Demo.WebAssembly/wwwroot/images/logo/logo.svg @@ -0,0 +1,17632 @@ + + + + + + + + + + + + + + + + + + B + + diff --git a/BlazorBootstrap.Demo.WebAssembly/wwwroot/images/placeholder.png b/BlazorBootstrap.Demo.WebAssembly/wwwroot/images/placeholder.png new file mode 100644 index 0000000000000000000000000000000000000000..6928765e15125d25db4c4dc0faa36a8514200456 GIT binary patch literal 2680 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 literal 0 HcmV?d00001 diff --git a/BlazorBootstrap.Demo.WebAssembly/wwwroot/index.html b/BlazorBootstrap.Demo.WebAssembly/wwwroot/index.html new file mode 100644 index 000000000..f3efef6d0 --- /dev/null +++ b/BlazorBootstrap.Demo.WebAssembly/wwwroot/index.html @@ -0,0 +1,67 @@ + + + + + + + Demos & Examples | Enterprise-class Blazor Bootstrap Component library built on the Blazor and Bootstrap CSS framework | Blazor Bootstrap + + + + + + + + + + + + + + + + + + + + + + +

+
+
+ Blazor Bootstrap - Enterprise-class Blazor Bootstrap Component library built on the Blazor and Bootstrap CSS framework +
Loading...
+
+
+
+ + + + + + + + + + + + + + + + diff --git a/BlazorBootstrap.Demo.WebAssembly/wwwroot/sample-data/customer/customer.json b/BlazorBootstrap.Demo.WebAssembly/wwwroot/sample-data/customer/customer.json new file mode 100644 index 000000000..c7b07bbf2 --- /dev/null +++ b/BlazorBootstrap.Demo.WebAssembly/wwwroot/sample-data/customer/customer.json @@ -0,0 +1 @@ +[{"customerId":1,"customerName":"Laith Berger","phone":"(379) 882-1444","email":"auctor.velit@protonmail.com","address":"278-7577 Inceptos Ave","postalZip":"5481","country":"Norway"},{"customerId":2,"customerName":"Ivor Burnett","phone":"(551) 710-5413","email":"donec.non@outlook.com","address":"Ap #206-2313 A, Ave","postalZip":"KF91 6RO","country":"Australia"},{"customerId":3,"customerName":"Yasir Hobbs","phone":"(538) 773-6771","email":"et@outlook.com","address":"P.O. Box 209, 6872 Mollis. Av.","postalZip":"56137","country":"Singapore"},{"customerId":4,"customerName":"Rinah Bowman","phone":"(834) 224-3856","email":"elit@protonmail.ca","address":"Ap #657-4008 Nulla Rd.","postalZip":"99566","country":"Philippines"},{"customerId":5,"customerName":"Montana Avery","phone":"(514) 546-4034","email":"tristique.senectus@hotmail.couk","address":"Ap #915-2989 Venenatis Ave","postalZip":"25425-84215","country":"South Africa"},{"customerId":6,"customerName":"Kevyn Smith","phone":"1-152-749-6373","email":"neque@protonmail.ca","address":"431-4752 Neque St.","postalZip":"3697","country":"India"},{"customerId":7,"customerName":"Maite Faulkner","phone":"(466) 210-3875","email":"malesuada@outlook.couk","address":"P.O. Box 254, 3766 Quisque Street","postalZip":"55263","country":"New Zealand"},{"customerId":8,"customerName":"Anne Meadows","phone":"(527) 848-2270","email":"donec.tempus@icloud.ca","address":"Ap #378-2309 Ornare. Av.","postalZip":"19845","country":"Germany"},{"customerId":9,"customerName":"Kamal Bush","phone":"(937) 745-2871","email":"nec.luctus@protonmail.org","address":"7491 Egestas. Rd.","postalZip":"13-185","country":"Chile"},{"customerId":10,"customerName":"Tasha Gill","phone":"(755) 756-9385","email":"justo.faucibus@hotmail.couk","address":"487-2374 Sed Street","postalZip":"800173","country":"Mexico"},{"customerId":11,"customerName":"Vernon Clark","phone":"(630) 344-8774","email":"velit.cras@protonmail.net","address":"1885 Proin Road","postalZip":"414742","country":"Colombia"},{"customerId":12,"customerName":"Kibo Shelton","phone":"(278) 258-8502","email":"ante.maecenas@yahoo.com","address":"P.O. Box 336, 5076 Fringilla St.","postalZip":"87-381","country":"Turkey"},{"customerId":13,"customerName":"Shelly Vazquez","phone":"(643) 452-4588","email":"lacus.nulla@outlook.ca","address":"602-8739 Mauris St.","postalZip":"56-22","country":"France"},{"customerId":14,"customerName":"Hilary Poole","phone":"(937) 972-7551","email":"suspendisse.sagittis@hotmail.ca","address":"875-9021 Sed Av.","postalZip":"66320","country":"United States"},{"customerId":15,"customerName":"Tarik England","phone":"(554) 498-3672","email":"nec.metus.facilisis@hotmail.com","address":"P.O. Box 316, 3800 Pellentesque Rd.","postalZip":"75-22","country":"Italy"},{"customerId":16,"customerName":"Hamilton Hayden","phone":"1-882-568-0494","email":"class.aptent.taciti@protonmail.couk","address":"567-8292 Sed Road","postalZip":"52861","country":"Poland"},{"customerId":17,"customerName":"Uriel Barton","phone":"(176) 435-5738","email":"dolor.sit.amet@protonmail.net","address":"882-7144 Arcu. Street","postalZip":"5663-2444","country":"Germany"},{"customerId":18,"customerName":"Craig Richmond","phone":"(927) 236-8054","email":"ut.odio@outlook.com","address":"Ap #571-6322 Tortor Ave","postalZip":"39143","country":"Philippines"},{"customerId":19,"customerName":"Brent Robbins","phone":"(492) 936-5527","email":"interdum@aol.ca","address":"Ap #494-482 Egestas St.","postalZip":"36751","country":"Costa Rica"},{"customerId":20,"customerName":"Chaney Short","phone":"1-733-537-5892","email":"sed@outlook.edu","address":"P.O. Box 567, 8641 Fermentum Avenue","postalZip":"243631","country":"Pakistan"},{"customerId":21,"customerName":"Orlando Chapman","phone":"1-798-564-3871","email":"mauris@hotmail.edu","address":"9021 Sem Av.","postalZip":"8706","country":"Vietnam"},{"customerId":22,"customerName":"Holly Long","phone":"(613) 844-0530","email":"non.nisi@icloud.org","address":"411-5020 At St.","postalZip":"3183-2246","country":"Netherlands"},{"customerId":23,"customerName":"Jane Salas","phone":"1-746-223-2024","email":"odio@google.ca","address":"Ap #842-2591 Consectetuer Avenue","postalZip":"73-48","country":"China"},{"customerId":24,"customerName":"Deirdre Simmons","phone":"1-925-245-4398","email":"sed.turpis.nec@protonmail.ca","address":"Ap #214-2638 Mauris, Avenue","postalZip":"377358","country":"Peru"},{"customerId":25,"customerName":"Sigourney Melendez","phone":"1-147-785-7367","email":"odio.nam@icloud.ca","address":"876-3056 Non, St.","postalZip":"9543-3653","country":"Chile"},{"customerId":26,"customerName":"Zachary Merritt","phone":"1-636-602-5539","email":"semper.et@aol.edu","address":"806 Posuere Street","postalZip":"12467","country":"Norway"},{"customerId":27,"customerName":"Derek Glover","phone":"(150) 931-4838","email":"donec.fringilla@google.couk","address":"Ap #365-6386 Neque Avenue","postalZip":"454395","country":"Canada"},{"customerId":28,"customerName":"Alfonso Rasmussen","phone":"(927) 264-8247","email":"lorem.fringilla@aol.net","address":"Ap #229-4362 Eros St.","postalZip":"3171","country":"Netherlands"},{"customerId":29,"customerName":"Nadine Oneal","phone":"(188) 746-1660","email":"a.odio@google.edu","address":"746-5975 Eu, Avenue","postalZip":"1865","country":"Belgium"},{"customerId":30,"customerName":"Naomi Dejesus","phone":"1-265-639-0296","email":"fames@aol.couk","address":"P.O. Box 290, 9020 Pellentesque St.","postalZip":"897421","country":"Canada"},{"customerId":31,"customerName":"Winter Weber","phone":"(538) 648-2568","email":"faucibus.leo.in@protonmail.org","address":"Ap #725-3539 Dolor Street","postalZip":"40507","country":"Ireland"},{"customerId":32,"customerName":"Jennifer Hurst","phone":"(531) 733-3049","email":"urna.nunc@outlook.couk","address":"P.O. Box 174, 9406 Ante St.","postalZip":"14153","country":"Nigeria"},{"customerId":33,"customerName":"Kevin Guy","phone":"(283) 229-1753","email":"mauris@yahoo.ca","address":"P.O. Box 436, 3613 Ligula. Rd.","postalZip":"523981","country":"Norway"},{"customerId":34,"customerName":"Hakeem Henson","phone":"1-264-857-8861","email":"mus@outlook.com","address":"907-8892 Montes, Rd.","postalZip":"46-846","country":"United Kingdom"},{"customerId":35,"customerName":"Avram Hardin","phone":"1-764-303-7127","email":"vel.pede.blandit@protonmail.org","address":"Ap #328-2448 Velit. Rd.","postalZip":"728900","country":"Germany"},{"customerId":36,"customerName":"Kiayada Bray","phone":"(935) 824-3485","email":"lectus.rutrum@hotmail.edu","address":"580-9599 Mattis St.","postalZip":"4055","country":"Philippines"},{"customerId":37,"customerName":"Elizabeth Cardenas","phone":"1-633-852-7760","email":"hendrerit.id.ante@hotmail.org","address":"Ap #628-1875 Egestas. Rd.","postalZip":"18990","country":"Pakistan"},{"customerId":38,"customerName":"Kimberley Durham","phone":"(746) 731-5318","email":"et@hotmail.org","address":"P.O. Box 469, 7337 Neque Street","postalZip":"4187","country":"Brazil"},{"customerId":39,"customerName":"Arthur Clarke","phone":"(287) 129-2460","email":"egestas@google.org","address":"8458 Vivamus Rd.","postalZip":"1827 JX","country":"Russian Federation"},{"customerId":40,"customerName":"Giacomo Newton","phone":"1-182-675-4805","email":"non.enim.commodo@google.com","address":"Ap #341-8380 Ut Rd.","postalZip":"41715","country":"Vietnam"},{"customerId":41,"customerName":"Amelia Alexander","phone":"1-718-582-4253","email":"non.vestibulum.nec@outlook.ca","address":"413-9679 Cum Avenue","postalZip":"26744","country":"Spain"},{"customerId":42,"customerName":"Stacy Davenport","phone":"1-819-211-8276","email":"risus.donec.egestas@yahoo.org","address":"P.O. Box 415, 2772 Vitae, St.","postalZip":"597735","country":"Germany"},{"customerId":43,"customerName":"Rosalyn Patrick","phone":"1-995-906-7898","email":"vitae@google.com","address":"P.O. Box 693, 5762 Porttitor Rd.","postalZip":"9759 WE","country":"Ukraine"},{"customerId":44,"customerName":"Logan Buckner","phone":"(516) 386-2835","email":"donec.nibh@google.com","address":"Ap #275-1807 Dictum Ave","postalZip":"40233","country":"Canada"},{"customerId":45,"customerName":"Stewart Johnston","phone":"1-967-407-4365","email":"pharetra.felis.eget@hotmail.org","address":"Ap #710-3875 Lectus, St.","postalZip":"55065","country":"Nigeria"},{"customerId":46,"customerName":"Colton Myers","phone":"1-100-736-7463","email":"nam.ligula@aol.com","address":"443-1273 Natoque Rd.","postalZip":"14672","country":"Peru"},{"customerId":47,"customerName":"Sylvester Phillips","phone":"(297) 713-3040","email":"lorem.vehicula@hotmail.org","address":"P.O. Box 642, 9852 Nulla. St.","postalZip":"7660","country":"Nigeria"},{"customerId":48,"customerName":"Deacon Barnes","phone":"(571) 242-4528","email":"gravida.mauris@yahoo.org","address":"334-9465 Amet, Av.","postalZip":"382115","country":"Pakistan"},{"customerId":49,"customerName":"Drew Terrell","phone":"1-715-909-4824","email":"et@icloud.com","address":"Ap #616-7205 Turpis St.","postalZip":"10087","country":"Norway"},{"customerId":50,"customerName":"Britanni Bennett","phone":"1-220-669-3332","email":"turpis@icloud.org","address":"4222 Lobortis Street","postalZip":"6523","country":"Singapore"},{"customerId":51,"customerName":"Desirae Houston","phone":"(726) 847-0251","email":"iaculis@outlook.couk","address":"P.O. Box 950, 421 Ipsum Road","postalZip":"654802","country":"Canada"},{"customerId":52,"customerName":"Jordan Knight","phone":"1-674-723-2927","email":"dolor.elit@protonmail.edu","address":"P.O. Box 604, 3917 Commodo Rd.","postalZip":"33-746","country":"Sweden"},{"customerId":53,"customerName":"Lucy Newman","phone":"1-795-382-9988","email":"mollis.lectus.pede@protonmail.edu","address":"Ap #457-3018 Non Road","postalZip":"151381","country":"China"},{"customerId":54,"customerName":"Kylan Church","phone":"1-593-716-9158","email":"dictum.eu@protonmail.net","address":"Ap #519-178 Ut Street","postalZip":"83-26","country":"Nigeria"},{"customerId":55,"customerName":"Nevada Howard","phone":"(324) 886-7525","email":"litora@icloud.ca","address":"P.O. Box 215, 2750 Pellentesque St.","postalZip":"12444","country":"Colombia"},{"customerId":56,"customerName":"Kirby Wilder","phone":"1-552-868-5375","email":"ullamcorper.nisl@icloud.org","address":"3404 Iaculis Road","postalZip":"695822","country":"Brazil"},{"customerId":57,"customerName":"Risa Hendrix","phone":"(877) 579-6357","email":"faucibus.lectus@hotmail.org","address":"330-3283 Magnis Rd.","postalZip":"7527 JE","country":"Vietnam"},{"customerId":58,"customerName":"Hu Wong","phone":"1-461-816-4756","email":"per@icloud.org","address":"681-2058 Feugiat. Rd.","postalZip":"51362","country":"Netherlands"},{"customerId":59,"customerName":"Sonya Hughes","phone":"(858) 658-3635","email":"faucibus.lectus.a@hotmail.net","address":"P.O. Box 553, 3124 Aliquam St.","postalZip":"27829","country":"Vietnam"},{"customerId":60,"customerName":"Craig Logan","phone":"(906) 473-4868","email":"tristique@google.ca","address":"P.O. Box 942, 610 Est, Av.","postalZip":"3547","country":"Netherlands"},{"customerId":61,"customerName":"Raja Dorsey","phone":"1-829-181-5111","email":"varius.orci.in@google.org","address":"P.O. Box 566, 8429 Enim. Rd.","postalZip":"4450 HZ","country":"Ireland"},{"customerId":62,"customerName":"Asher Morin","phone":"(221) 262-6862","email":"mauris@google.org","address":"P.O. Box 671, 2035 Vulputate, Rd.","postalZip":"8552","country":"Mexico"},{"customerId":63,"customerName":"Bruce Ferrell","phone":"(820) 342-4472","email":"eu.euismod.ac@protonmail.edu","address":"Ap #767-7889 Sed Av.","postalZip":"11532","country":"Chile"},{"customerId":64,"customerName":"Erasmus Adkins","phone":"(928) 341-5433","email":"enim.nisl@outlook.edu","address":"P.O. Box 951, 5448 Pharetra Avenue","postalZip":"173364","country":"South Africa"},{"customerId":65,"customerName":"TaShya Huber","phone":"(997) 425-5262","email":"erat.vitae@icloud.com","address":"517 Non St.","postalZip":"38416-44863","country":"Indonesia"},{"customerId":66,"customerName":"Tate Blackburn","phone":"1-524-604-6431","email":"dui.suspendisse.ac@protonmail.edu","address":"Ap #570-9373 Sed Street","postalZip":"3377","country":"China"},{"customerId":67,"customerName":"Neve Stewart","phone":"(886) 554-7149","email":"non@yahoo.couk","address":"887 Nullam Road","postalZip":"16823","country":"Sweden"},{"customerId":68,"customerName":"Emerald Workman","phone":"1-358-673-5524","email":"mauris.erat.eget@protonmail.ca","address":"691-5554 Odio Road","postalZip":"47582","country":"Nigeria"},{"customerId":69,"customerName":"Lisandra Roman","phone":"(726) 475-0331","email":"proin@aol.edu","address":"Ap #505-3613 Mauris Rd.","postalZip":"35506","country":"Australia"},{"customerId":70,"customerName":"Dalton Duran","phone":"(478) 837-6585","email":"aenean.euismod@yahoo.edu","address":"4588 Molestie Ave","postalZip":"1653","country":"Vietnam"},{"customerId":71,"customerName":"Victor Mckee","phone":"1-660-287-2856","email":"nam.ligula.elit@protonmail.edu","address":"Ap #536-3369 Non Rd.","postalZip":"62360","country":"Canada"},{"customerId":72,"customerName":"Salvador Robles","phone":"1-935-528-6827","email":"nulla.interdum.curabitur@aol.com","address":"672-4225 Malesuada St.","postalZip":"21618","country":"France"},{"customerId":73,"customerName":"Jerry Gallegos","phone":"(418) 584-9666","email":"et@protonmail.edu","address":"583-642 Lobortis Av.","postalZip":"261152","country":"Brazil"},{"customerId":74,"customerName":"Holmes Elliott","phone":"(829) 533-8718","email":"tellus.suspendisse@outlook.com","address":"P.O. Box 625, 133 Sed Ave","postalZip":"56286","country":"Singapore"},{"customerId":75,"customerName":"Summer O'donnell","phone":"1-775-462-1128","email":"orci@yahoo.ca","address":"P.O. Box 292, 723 Fringilla Avenue","postalZip":"383881","country":"Brazil"},{"customerId":76,"customerName":"Whoopi Ashley","phone":"(444) 234-8486","email":"placerat@yahoo.com","address":"370-7703 Nullam Rd.","postalZip":"7255","country":"South Korea"},{"customerId":77,"customerName":"Brenden Rojas","phone":"(551) 747-6714","email":"euismod.urna@outlook.couk","address":"725-3109 Vel, Av.","postalZip":"33768","country":"Sweden"},{"customerId":78,"customerName":"Cody Valencia","phone":"1-765-411-6783","email":"donec.est@yahoo.net","address":"482-2216 Nunc Rd.","postalZip":"5767","country":"Brazil"},{"customerId":79,"customerName":"Evelyn Young","phone":"(261) 753-5708","email":"non@protonmail.org","address":"108-7247 Non, Av.","postalZip":"2241","country":"Peru"},{"customerId":80,"customerName":"Madeline Gay","phone":"1-777-735-1512","email":"sit.amet@google.com","address":"250-9455 Et Av.","postalZip":"26-969","country":"Sweden"},{"customerId":81,"customerName":"Chloe Buchanan","phone":"1-741-492-5197","email":"lorem@icloud.com","address":"560-7818 Phasellus Street","postalZip":"348619","country":"Brazil"},{"customerId":82,"customerName":"Deirdre Sanchez","phone":"(255) 431-3593","email":"lectus@outlook.ca","address":"167-7082 Pharetra Rd.","postalZip":"84825","country":"France"},{"customerId":83,"customerName":"Patience Ayala","phone":"1-175-835-6043","email":"eu@hotmail.edu","address":"Ap #939-8609 Ullamcorper, Avenue","postalZip":"424592","country":"Netherlands"},{"customerId":84,"customerName":"Raphael Meyers","phone":"1-618-652-5132","email":"diam.luctus@hotmail.edu","address":"897-234 Integer Road","postalZip":"323418","country":"Philippines"},{"customerId":85,"customerName":"Grady Mcconnell","phone":"(415) 838-4695","email":"elementum.at@hotmail.ca","address":"Ap #573-1091 Lobortis Road","postalZip":"9136-2302","country":"India"},{"customerId":86,"customerName":"Forrest Gallagher","phone":"(889) 734-2185","email":"aliquam.adipiscing@hotmail.ca","address":"699-4186 Sed Avenue","postalZip":"2529","country":"Turkey"},{"customerId":87,"customerName":"Vincent Christensen","phone":"(657) 527-7613","email":"sed@protonmail.net","address":"6745 Cursus Avenue","postalZip":"28371","country":"New Zealand"},{"customerId":88,"customerName":"Knox Christensen","phone":"1-644-505-3615","email":"parturient.montes@google.edu","address":"Ap #137-6596 Magna Avenue","postalZip":"30746","country":"Philippines"},{"customerId":89,"customerName":"Bruno Rose","phone":"1-386-544-9221","email":"diam.luctus.lobortis@icloud.ca","address":"Ap #834-6610 Nullam St.","postalZip":"88306-862","country":"Mexico"},{"customerId":90,"customerName":"Ainsley Cardenas","phone":"1-403-423-2787","email":"fringilla.est@outlook.com","address":"Ap #881-2935 Ac Street","postalZip":"66813","country":"Austria"},{"customerId":91,"customerName":"Eve Haley","phone":"(598) 779-1786","email":"etiam.bibendum@google.ca","address":"272-4961 Accumsan Rd.","postalZip":"26918","country":"Norway"},{"customerId":92,"customerName":"Holly Suarez","phone":"1-134-603-2874","email":"curabitur.sed@protonmail.ca","address":"4423 Magnis Street","postalZip":"977634","country":"United States"},{"customerId":93,"customerName":"Kylynn Sanchez","phone":"1-408-582-5546","email":"tincidunt@yahoo.ca","address":"6963 Vel Ave","postalZip":"3581","country":"Netherlands"},{"customerId":94,"customerName":"Unity Joyner","phone":"1-272-884-1422","email":"rhoncus.proin@protonmail.edu","address":"Ap #124-5421 Rhoncus Rd.","postalZip":"23-55","country":"South Africa"},{"customerId":95,"customerName":"Uma Bates","phone":"1-483-533-3821","email":"lorem.ipsum@outlook.ca","address":"Ap #442-8734 Nam St.","postalZip":"1175","country":"Austria"},{"customerId":96,"customerName":"Laura Barrera","phone":"(471) 953-1134","email":"vehicula.aliquet@protonmail.edu","address":"103-2810 Quis, Rd.","postalZip":"611481","country":"Colombia"},{"customerId":97,"customerName":"Maya Floyd","phone":"1-225-552-3173","email":"enim.commodo@outlook.com","address":"P.O. Box 323, 419 Sodales Avenue","postalZip":"78575","country":"Mexico"},{"customerId":98,"customerName":"Keane Bates","phone":"1-763-432-1755","email":"dolor@icloud.org","address":"7976 Lobortis St.","postalZip":"415765","country":"Pakistan"},{"customerId":99,"customerName":"Daniel Oneil","phone":"1-898-887-1438","email":"rutrum@google.org","address":"4147 Blandit. St.","postalZip":"862013","country":"Ireland"},{"customerId":100,"customerName":"Whoopi Kirby","phone":"1-227-963-8934","email":"non.sapien@protonmail.couk","address":"Ap #616-9146 Vitae Street","postalZip":"S2N 3G4","country":"Philippines"},{"customerId":101,"customerName":"Chancellor Schmidt","phone":"1-257-278-1512","email":"elementum.dui@google.ca","address":"709-4368 Eget Avenue","postalZip":"84192","country":"Singapore"},{"customerId":102,"customerName":"Jeanette Mcclain","phone":"(594) 232-4539","email":"interdum.curabitur.dictum@protonmail.couk","address":"1491 Suscipit Rd.","postalZip":"98169","country":"China"},{"customerId":103,"customerName":"Cassady House","phone":"(587) 515-2289","email":"mauris.molestie@protonmail.org","address":"379-2361 Orci. Rd.","postalZip":"58451-626","country":"Germany"},{"customerId":104,"customerName":"Paloma Marks","phone":"1-845-404-6778","email":"donec.non@google.com","address":"3701 Tincidunt, Av.","postalZip":"27812-705","country":"Austria"},{"customerId":105,"customerName":"Mona Ramos","phone":"(626) 558-5848","email":"facilisis.non@hotmail.edu","address":"4240 Et, Avenue","postalZip":"4208","country":"Italy"},{"customerId":106,"customerName":"Charissa Mccray","phone":"(304) 568-2336","email":"in.lobortis.tellus@icloud.couk","address":"Ap #857-2334 Consequat Ave","postalZip":"6545","country":"Colombia"},{"customerId":107,"customerName":"Xander Manning","phone":"1-366-929-4289","email":"libero.mauris@yahoo.net","address":"Ap #856-8433 Sed St.","postalZip":"0843","country":"Vietnam"},{"customerId":108,"customerName":"Alisa Hensley","phone":"(887) 788-9532","email":"cum.sociis@google.net","address":"Ap #214-2529 Tellus Street","postalZip":"71577","country":"United Kingdom"},{"customerId":109,"customerName":"Sean Cantu","phone":"1-341-487-4494","email":"pellentesque@aol.couk","address":"4230 Ipsum Av.","postalZip":"243618","country":"Ireland"},{"customerId":110,"customerName":"Anastasia Park","phone":"1-330-813-7504","email":"hendrerit.consectetuer@outlook.couk","address":"966-6254 At Rd.","postalZip":"31141","country":"Brazil"},{"customerId":111,"customerName":"Penelope Chan","phone":"(298) 403-8351","email":"mauris@hotmail.couk","address":"644-6055 Cubilia Ave","postalZip":"36-698","country":"Sweden"},{"customerId":112,"customerName":"Dane Gould","phone":"(763) 516-0833","email":"a@aol.net","address":"9900 Vitae St.","postalZip":"5074","country":"Chile"},{"customerId":113,"customerName":"Rigel Morrow","phone":"1-486-135-8227","email":"phasellus.elit@outlook.couk","address":"Ap #513-1698 Nam Road","postalZip":"9888 CG","country":"Germany"},{"customerId":114,"customerName":"Rachel Walter","phone":"(168) 802-6672","email":"eleifend.vitae@protonmail.couk","address":"P.O. Box 252, 5440 Dictum Av.","postalZip":"475378","country":"Vietnam"},{"customerId":115,"customerName":"Dieter Bryant","phone":"1-600-315-4688","email":"donec.at@hotmail.edu","address":"P.O. Box 235, 6138 Augue Avenue","postalZip":"10799","country":"Ukraine"},{"customerId":116,"customerName":"Trevor Cook","phone":"(934) 210-2974","email":"nullam.feugiat.placerat@yahoo.net","address":"346-1650 Est Ave","postalZip":"8721 FE","country":"Italy"},{"customerId":117,"customerName":"Amanda Richards","phone":"(649) 729-2153","email":"nec.tellus.nunc@google.com","address":"493 Elit Rd.","postalZip":"14169","country":"China"},{"customerId":118,"customerName":"Francis Hunt","phone":"(828) 818-6888","email":"non.sollicitudin.a@aol.org","address":"7808 Ut St.","postalZip":"38-27","country":"New Zealand"},{"customerId":119,"customerName":"Catherine Hahn","phone":"(295) 899-8645","email":"hendrerit.consectetuer@hotmail.edu","address":"601-7752 Maecenas Street","postalZip":"23649","country":"Canada"},{"customerId":120,"customerName":"Victoria O'brien","phone":"1-137-599-3115","email":"enim.mi@google.couk","address":"P.O. Box 853, 3183 Nulla. Av.","postalZip":"20262","country":"Germany"},{"customerId":121,"customerName":"Dale Mcgowan","phone":"(725) 237-5823","email":"interdum.curabitur.dictum@google.com","address":"547-7664 Orci. Rd.","postalZip":"8109","country":"Costa Rica"},{"customerId":122,"customerName":"Quail Bolton","phone":"(832) 674-8829","email":"tristique@outlook.net","address":"Ap #924-9195 Scelerisque Rd.","postalZip":"161618","country":"South Korea"},{"customerId":123,"customerName":"Colleen Buchanan","phone":"(489) 652-9221","email":"gravida.non.sollicitudin@outlook.com","address":"Ap #585-4765 Curabitur Rd.","postalZip":"9155","country":"New Zealand"},{"customerId":124,"customerName":"Jordan Hull","phone":"1-486-233-4722","email":"velit@yahoo.org","address":"3842 Ut St.","postalZip":"17373","country":"India"},{"customerId":125,"customerName":"Quintessa Sampson","phone":"(847) 389-1866","email":"risus.duis.a@google.com","address":"334-4544 Et Rd.","postalZip":"33-62","country":"Norway"},{"customerId":126,"customerName":"Karly Craft","phone":"1-524-364-4215","email":"tellus.justo@hotmail.org","address":"354-9670 Urna Street","postalZip":"787883","country":"New Zealand"},{"customerId":127,"customerName":"Barrett Dean","phone":"1-380-362-3015","email":"semper.rutrum@google.com","address":"842-4346 Quis Avenue","postalZip":"2289","country":"South Korea"},{"customerId":128,"customerName":"India Whitaker","phone":"(522) 788-6541","email":"sed@yahoo.com","address":"P.O. Box 108, 3306 Non Rd.","postalZip":"02488","country":"Netherlands"},{"customerId":129,"customerName":"Thomas Richard","phone":"1-824-641-6273","email":"neque@outlook.ca","address":"316-1643 Nulla Avenue","postalZip":"61874-416","country":"Indonesia"},{"customerId":130,"customerName":"Jasmine Crane","phone":"1-891-646-0226","email":"diam.proin@protonmail.net","address":"Ap #377-2730 Arcu. St.","postalZip":"39781-73286","country":"Norway"},{"customerId":131,"customerName":"Wallace Doyle","phone":"(254) 654-2761","email":"ultrices@aol.edu","address":"Ap #457-8572 Integer Road","postalZip":"7765-3087","country":"Ireland"},{"customerId":132,"customerName":"Alec Pierce","phone":"(197) 667-1536","email":"pede.praesent@protonmail.com","address":"Ap #727-3783 Donec St.","postalZip":"16697","country":"Norway"},{"customerId":133,"customerName":"Colleen Mercado","phone":"1-794-170-8235","email":"sed.orci@google.ca","address":"Ap #551-4511 Ut, St.","postalZip":"5506","country":"India"},{"customerId":134,"customerName":"Idola Dotson","phone":"(312) 785-6651","email":"arcu@aol.couk","address":"Ap #228-5653 Purus. Avenue","postalZip":"8901 HD","country":"South Africa"},{"customerId":135,"customerName":"Leah Wilkinson","phone":"1-339-577-0861","email":"diam.dictum@yahoo.com","address":"5480 Risus. Street","postalZip":"14901","country":"Norway"},{"customerId":136,"customerName":"Amal Evans","phone":"1-167-757-4737","email":"amet.orci@google.edu","address":"Ap #544-6344 Metus. Road","postalZip":"9286","country":"Poland"},{"customerId":137,"customerName":"Hollee Strickland","phone":"(279) 204-7726","email":"odio@aol.ca","address":"3157 Varius Street","postalZip":"85572-75813","country":"Australia"},{"customerId":138,"customerName":"Adrian Walter","phone":"1-663-544-8567","email":"nec.mollis@outlook.couk","address":"7658 Est Rd.","postalZip":"489734","country":"Belgium"},{"customerId":139,"customerName":"Alisa Ayala","phone":"(370) 634-7253","email":"semper.tellus@yahoo.ca","address":"6653 Dictum Ave","postalZip":"6156","country":"Nigeria"},{"customerId":140,"customerName":"Petra Orr","phone":"1-118-977-8874","email":"et.rutrum@google.com","address":"198-117 Interdum. Av.","postalZip":"75848","country":"Singapore"},{"customerId":141,"customerName":"Remedios Wade","phone":"1-453-153-7725","email":"velit.eget.laoreet@hotmail.edu","address":"398-2243 Risus. Street","postalZip":"3145","country":"Philippines"},{"customerId":142,"customerName":"Daria Fisher","phone":"1-922-693-0450","email":"mauris.ipsum.porta@outlook.net","address":"P.O. Box 517, 9472 Id Street","postalZip":"5760-3343","country":"Poland"},{"customerId":143,"customerName":"Wang Shaffer","phone":"(488) 297-7564","email":"nibh.sit@icloud.edu","address":"248-3849 Nulla Rd.","postalZip":"45566","country":"India"},{"customerId":144,"customerName":"Nichole William","phone":"(341) 312-6916","email":"erat.sed@protonmail.com","address":"1929 Est Avenue","postalZip":"63715","country":"France"},{"customerId":145,"customerName":"Lee Patterson","phone":"1-874-858-8879","email":"nulla.integer@icloud.com","address":"Ap #890-550 Ad St.","postalZip":"4895","country":"China"},{"customerId":146,"customerName":"Phelan Peterson","phone":"(670) 464-0740","email":"vivamus.euismod@icloud.edu","address":"8281 Ac Ave","postalZip":"166723","country":"Indonesia"},{"customerId":147,"customerName":"Willa Bradshaw","phone":"(867) 712-4721","email":"cursus@yahoo.com","address":"Ap #582-6883 Mauris Street","postalZip":"671047","country":"South Korea"},{"customerId":148,"customerName":"Mohammad Spencer","phone":"(288) 753-0218","email":"amet.consectetuer.adipiscing@google.edu","address":"Ap #677-7632 Ac Av.","postalZip":"94-68","country":"South Africa"},{"customerId":149,"customerName":"Jemima Ramsey","phone":"(661) 120-0528","email":"mi.tempor@outlook.com","address":"7627 Risus. Rd.","postalZip":"573033","country":"Peru"},{"customerId":150,"customerName":"Branden Flynn","phone":"1-280-949-5552","email":"ornare.lectus.ante@icloud.net","address":"P.O. Box 546, 6023 Hendrerit Avenue","postalZip":"461852","country":"Netherlands"},{"customerId":151,"customerName":"Hamish Horton","phone":"1-120-249-8810","email":"nullam@protonmail.com","address":"Ap #703-3807 Cras Rd.","postalZip":"3109 QK","country":"Vietnam"},{"customerId":152,"customerName":"Nissim Bolton","phone":"(317) 269-3680","email":"iaculis.enim.sit@icloud.net","address":"677-2899 Semper Rd.","postalZip":"968232","country":"Turkey"},{"customerId":153,"customerName":"Graiden Moon","phone":"(709) 852-2733","email":"erat.vitae@outlook.com","address":"890-441 Ultrices. Street","postalZip":"51808","country":"Poland"},{"customerId":154,"customerName":"Ferris Lancaster","phone":"(996) 822-7520","email":"lacinia.sed.congue@protonmail.edu","address":"Ap #688-7311 Sem Av.","postalZip":"0238","country":"Ireland"},{"customerId":155,"customerName":"Clio Mccarthy","phone":"(164) 332-8316","email":"dictum@google.net","address":"948-6813 Arcu. St.","postalZip":"6864","country":"United States"},{"customerId":156,"customerName":"Kaseem Greene","phone":"(935) 829-2472","email":"magna.a@google.edu","address":"Ap #799-4143 Id Rd.","postalZip":"5655","country":"Costa Rica"},{"customerId":157,"customerName":"Sybill Pitts","phone":"1-947-253-5977","email":"molestie.dapibus@protonmail.ca","address":"568-480 Nibh St.","postalZip":"31145","country":"Sweden"},{"customerId":158,"customerName":"Conan Meyer","phone":"1-493-424-1552","email":"arcu.vestibulum@outlook.edu","address":"Ap #442-2569 Tincidunt Rd.","postalZip":"A9S 7B4","country":"Costa Rica"},{"customerId":159,"customerName":"Lev Small","phone":"(450) 596-7551","email":"sem.magna@yahoo.org","address":"P.O. Box 388, 2942 Elit, Rd.","postalZip":"214938","country":"Poland"},{"customerId":160,"customerName":"Nayda Rowe","phone":"(656) 765-3487","email":"vulputate.posuere@protonmail.org","address":"Ap #299-7971 Maecenas Street","postalZip":"433098","country":"Vietnam"},{"customerId":161,"customerName":"Brenden Taylor","phone":"1-681-577-3266","email":"phasellus.dolor.elit@protonmail.net","address":"P.O. Box 370, 9840 Ante. Ave","postalZip":"64289-11548","country":"Austria"},{"customerId":162,"customerName":"Timothy Sutton","phone":"(444) 218-4545","email":"nulla.at@aol.net","address":"485-1176 Eget Avenue","postalZip":"10709","country":"Germany"},{"customerId":163,"customerName":"Zephania Banks","phone":"1-544-569-2574","email":"magnis@outlook.org","address":"7028 Risus. Avenue","postalZip":"21-851","country":"Nigeria"},{"customerId":164,"customerName":"Reagan O'brien","phone":"(231) 373-3319","email":"phasellus.dapibus@hotmail.net","address":"Ap #169-271 Facilisis St.","postalZip":"8753-2182","country":"Belgium"},{"customerId":165,"customerName":"Bradley Bartlett","phone":"1-388-513-4174","email":"erat.semper@yahoo.edu","address":"Ap #918-9331 Ultrices. Av.","postalZip":"85220","country":"Norway"},{"customerId":166,"customerName":"Lani Jackson","phone":"(877) 547-9285","email":"malesuada.fringilla@yahoo.org","address":"6411 Mus. Av.","postalZip":"3467-3394","country":"Turkey"},{"customerId":167,"customerName":"Igor Gay","phone":"1-314-412-6528","email":"enim.commodo.hendrerit@protonmail.com","address":"Ap #708-7859 Donec Road","postalZip":"65384","country":"Norway"},{"customerId":168,"customerName":"Gay Howell","phone":"(545) 978-4368","email":"et.magnis@yahoo.net","address":"Ap #120-418 Nunc, St.","postalZip":"3234","country":"Indonesia"},{"customerId":169,"customerName":"Maisie Mcclain","phone":"(457) 122-1351","email":"libero.mauris@protonmail.net","address":"Ap #415-705 Non, Rd.","postalZip":"11303","country":"Russian Federation"},{"customerId":170,"customerName":"Sylvia Hayes","phone":"1-200-348-8041","email":"pellentesque.habitant@icloud.edu","address":"Ap #553-9909 Aptent Road","postalZip":"813866","country":"Colombia"},{"customerId":171,"customerName":"Constance Hernandez","phone":"1-214-776-7702","email":"pede.ac@icloud.org","address":"Ap #847-9411 Eget Street","postalZip":"81376-48226","country":"Brazil"},{"customerId":172,"customerName":"Xenos Acosta","phone":"(245) 831-2348","email":"nec.euismod.in@yahoo.net","address":"637-7178 Vitae Ave","postalZip":"170998","country":"Netherlands"},{"customerId":173,"customerName":"Leandra Navarro","phone":"1-417-731-8039","email":"praesent@protonmail.couk","address":"7250 Dictum St.","postalZip":"14152","country":"United States"},{"customerId":174,"customerName":"Yolanda Frye","phone":"1-747-856-8765","email":"aenean@icloud.net","address":"773-9543 Ac St.","postalZip":"3762","country":"Netherlands"},{"customerId":175,"customerName":"Melyssa Moran","phone":"(851) 742-5120","email":"eget.ipsum@aol.org","address":"P.O. Box 141, 8487 Iaculis Street","postalZip":"21135-58571","country":"Vietnam"},{"customerId":176,"customerName":"Jermaine Whitley","phone":"1-713-959-8547","email":"eleifend.vitae@outlook.com","address":"204-8232 Nec, Rd.","postalZip":"411316","country":"Norway"},{"customerId":177,"customerName":"Ramona Cunningham","phone":"1-739-817-2821","email":"eu.enim.etiam@aol.couk","address":"4073 Gravida. Rd.","postalZip":"41213","country":"Austria"},{"customerId":178,"customerName":"Kirk Holcomb","phone":"1-238-478-4240","email":"integer.mollis.integer@icloud.com","address":"P.O. Box 570, 7087 Euismod Av.","postalZip":"484232","country":"Indonesia"},{"customerId":179,"customerName":"Erin Moses","phone":"1-737-387-2710","email":"nec.luctus.felis@aol.ca","address":"Ap #582-3463 A Rd.","postalZip":"1638","country":"Germany"},{"customerId":180,"customerName":"Joelle Casey","phone":"1-235-245-1813","email":"et.risus@icloud.couk","address":"P.O. Box 757, 7096 Tellus Av.","postalZip":"51106","country":"Belgium"},{"customerId":181,"customerName":"Hamilton Serrano","phone":"1-237-330-2730","email":"suspendisse.sed@outlook.org","address":"223 Justo Av.","postalZip":"484955","country":"India"},{"customerId":182,"customerName":"Sierra Bridges","phone":"1-214-790-6763","email":"vitae.nibh.donec@aol.couk","address":"1165 Elit Street","postalZip":"4136","country":"Chile"},{"customerId":183,"customerName":"Jamalia Slater","phone":"1-967-277-3814","email":"nam.ac@hotmail.couk","address":"685-1393 Vulputate, Street","postalZip":"3664","country":"Singapore"},{"customerId":184,"customerName":"Cleo O'brien","phone":"1-336-515-1247","email":"ipsum.phasellus.vitae@yahoo.net","address":"9200 Nam Road","postalZip":"9183-7785","country":"China"},{"customerId":185,"customerName":"Yardley Weeks","phone":"(771) 775-6528","email":"donec.felis@google.com","address":"Ap #821-6615 Porttitor St.","postalZip":"9522","country":"Chile"},{"customerId":186,"customerName":"Gabriel Mullins","phone":"1-653-117-9264","email":"eros.turpis@outlook.net","address":"Ap #974-645 Vel Rd.","postalZip":"32943","country":"Italy"},{"customerId":187,"customerName":"Kirestin Kent","phone":"1-555-824-7829","email":"dignissim.lacus@hotmail.net","address":"560-439 Morbi Ave","postalZip":"71913","country":"Italy"},{"customerId":188,"customerName":"Guinevere Foreman","phone":"(763) 953-1852","email":"ultrices.sit@google.edu","address":"Ap #625-949 Ut, St.","postalZip":"1616","country":"Netherlands"},{"customerId":189,"customerName":"Dean Gordon","phone":"1-191-202-1640","email":"bibendum.fermentum.metus@hotmail.com","address":"303-7358 At, Road","postalZip":"49913","country":"Turkey"},{"customerId":190,"customerName":"Quemby Ayala","phone":"1-211-475-1683","email":"aliquam.ornare.libero@icloud.org","address":"Ap #491-2446 Sed Ave","postalZip":"1682","country":"Spain"},{"customerId":191,"customerName":"Lynn Crosby","phone":"(913) 614-2347","email":"suspendisse.eleifend@outlook.edu","address":"810-1069 A, Avenue","postalZip":"16-36","country":"Ireland"},{"customerId":192,"customerName":"Shelly Raymond","phone":"1-361-965-5339","email":"duis@icloud.net","address":"Ap #819-9220 Laoreet Rd.","postalZip":"Y7L 6W3","country":"Austria"},{"customerId":193,"customerName":"Baxter Valenzuela","phone":"(193) 276-6247","email":"mi.lacinia@yahoo.ca","address":"192-1805 Ac Street","postalZip":"415859","country":"Germany"},{"customerId":194,"customerName":"Caleb Montgomery","phone":"(817) 602-7763","email":"fusce.aliquet@aol.com","address":"6251 Dui. St.","postalZip":"65473","country":"Canada"},{"customerId":195,"customerName":"Isabella Trujillo","phone":"(788) 924-6787","email":"neque.non@hotmail.edu","address":"4601 Donec Ave","postalZip":"123342","country":"Chile"},{"customerId":196,"customerName":"Fitzgerald Buckley","phone":"(151) 130-3142","email":"non.dapibus.rutrum@outlook.ca","address":"680-2290 Dis St.","postalZip":"896833","country":"Austria"},{"customerId":197,"customerName":"Paul Frank","phone":"1-954-730-1417","email":"sed@hotmail.net","address":"3205 Varius Avenue","postalZip":"6311","country":"Austria"},{"customerId":198,"customerName":"Alexa Holland","phone":"(451) 214-3886","email":"augue.sed@icloud.com","address":"Ap #634-8004 Odio. Rd.","postalZip":"66-138","country":"Austria"},{"customerId":199,"customerName":"Holly Hutchinson","phone":"(759) 626-2541","email":"est.mollis@hotmail.com","address":"441-2070 Tristique Avenue","postalZip":"8852 CD","country":"France"},{"customerId":200,"customerName":"Colette Vega","phone":"1-809-541-0225","email":"nam.ac@google.edu","address":"949-8812 Quam Avenue","postalZip":"95240","country":"France"},{"customerId":201,"customerName":"Aurelia Mccullough","phone":"(529) 578-8112","email":"amet.diam@protonmail.net","address":"812-920 Ligula Rd.","postalZip":"51017","country":"Brazil"},{"customerId":202,"customerName":"Nicholas King","phone":"1-335-959-0268","email":"eget.ipsum@icloud.com","address":"P.O. Box 770, 237 Volutpat Av.","postalZip":"3715","country":"Nigeria"},{"customerId":203,"customerName":"Palmer Wheeler","phone":"(277) 292-2618","email":"non.dapibus@google.net","address":"372-8673 Odio. Street","postalZip":"385823","country":"Canada"},{"customerId":204,"customerName":"Samuel Berry","phone":"(475) 337-4578","email":"id.libero.donec@hotmail.net","address":"894-3616 Nonummy Road","postalZip":"66977","country":"Ukraine"},{"customerId":205,"customerName":"Yasir Montoya","phone":"(137) 236-3582","email":"a.felis@yahoo.couk","address":"P.O. Box 930, 4496 Integer Rd.","postalZip":"6634-7162","country":"Ireland"},{"customerId":206,"customerName":"Evan Harper","phone":"1-887-985-5954","email":"ut@aol.couk","address":"Ap #839-4041 Metus Av.","postalZip":"74-66","country":"Australia"},{"customerId":207,"customerName":"Gregory Leach","phone":"(817) 526-9671","email":"fusce.fermentum@outlook.net","address":"9527 Ultrices. Ave","postalZip":"6625","country":"Pakistan"},{"customerId":208,"customerName":"Josephine Burris","phone":"1-280-667-8722","email":"mus.proin@hotmail.ca","address":"911-6465 Condimentum Rd.","postalZip":"52514","country":"Nigeria"},{"customerId":209,"customerName":"Otto Mercer","phone":"1-437-258-2150","email":"inceptos.hymenaeos.mauris@icloud.net","address":"8671 Scelerisque Rd.","postalZip":"32147","country":"Belgium"},{"customerId":210,"customerName":"Illana Kennedy","phone":"(921) 287-4668","email":"tristique@protonmail.ca","address":"P.O. Box 427, 7016 Nibh St.","postalZip":"6991","country":"Nigeria"},{"customerId":211,"customerName":"Cally Kaufman","phone":"1-721-125-2623","email":"ut.mi.duis@outlook.com","address":"Ap #829-867 Eget Ave","postalZip":"70-258","country":"Norway"},{"customerId":212,"customerName":"Jameson Mosley","phone":"1-727-864-9532","email":"aliquam.nec@icloud.edu","address":"Ap #315-119 Phasellus St.","postalZip":"635531","country":"New Zealand"},{"customerId":213,"customerName":"Henry Humphrey","phone":"(166) 817-2735","email":"turpis.aliquam@aol.edu","address":"713-1242 Id, Ave","postalZip":"27672","country":"Poland"},{"customerId":214,"customerName":"Gloria England","phone":"1-386-252-4973","email":"eu.enim@hotmail.org","address":"Ap #736-8873 Dui Avenue","postalZip":"414340","country":"Australia"},{"customerId":215,"customerName":"Helen Wilkinson","phone":"1-677-472-2742","email":"non@yahoo.edu","address":"741-6586 Molestie St.","postalZip":"5051","country":"United Kingdom"},{"customerId":216,"customerName":"Talon Pitts","phone":"(666) 839-7372","email":"sem.consequat@protonmail.edu","address":"5571 Mi. St.","postalZip":"66-68","country":"Russian Federation"},{"customerId":217,"customerName":"Ursula Newman","phone":"1-657-729-5559","email":"arcu.nunc.mauris@icloud.couk","address":"Ap #631-751 Fames Road","postalZip":"889247","country":"Belgium"},{"customerId":218,"customerName":"Fatima Boyd","phone":"1-663-334-7121","email":"lorem.luctus@yahoo.ca","address":"701-8986 A Av.","postalZip":"8463-2931","country":"Netherlands"},{"customerId":219,"customerName":"Aline Battle","phone":"(251) 310-2663","email":"vivamus.nisi@yahoo.ca","address":"P.O. Box 581, 6213 Duis Av.","postalZip":"22332","country":"Mexico"},{"customerId":220,"customerName":"Brent Allen","phone":"(875) 515-3322","email":"non.feugiat@protonmail.com","address":"724-9470 Elementum Ave","postalZip":"757793","country":"New Zealand"},{"customerId":221,"customerName":"Yetta Powell","phone":"(329) 142-3882","email":"justo.faucibus@icloud.org","address":"Ap #901-6412 Nam Rd.","postalZip":"48676","country":"Russian Federation"},{"customerId":222,"customerName":"Zeus Lynch","phone":"1-515-704-3286","email":"ut.cursus.luctus@yahoo.com","address":"P.O. Box 391, 9445 Rutrum St.","postalZip":"37598-75017","country":"South Korea"},{"customerId":223,"customerName":"Matthew Bryan","phone":"(927) 453-7193","email":"porttitor.scelerisque@outlook.net","address":"Ap #709-3616 Praesent Ave","postalZip":"58027","country":"Austria"},{"customerId":224,"customerName":"Aidan Emerson","phone":"(672) 720-9542","email":"nulla@hotmail.org","address":"2395 Purus St.","postalZip":"72813","country":"New Zealand"},{"customerId":225,"customerName":"Whilemina Fitzgerald","phone":"(267) 247-9036","email":"eu.neque.pellentesque@google.edu","address":"P.O. Box 265, 1761 Nisi Rd.","postalZip":"35530","country":"China"},{"customerId":226,"customerName":"Talon Little","phone":"1-896-644-3685","email":"mauris.sapien@hotmail.couk","address":"Ap #600-3214 Natoque St.","postalZip":"009406","country":"Netherlands"},{"customerId":227,"customerName":"Deborah Davenport","phone":"1-488-593-0067","email":"adipiscing.non.luctus@hotmail.net","address":"500-8011 Eget, Av.","postalZip":"287534","country":"United States"},{"customerId":228,"customerName":"MacKensie Fernandez","phone":"1-316-265-6465","email":"urna@yahoo.couk","address":"746-7829 In St.","postalZip":"38827","country":"Mexico"},{"customerId":229,"customerName":"Marcia Snider","phone":"(259) 882-5376","email":"integer@hotmail.net","address":"P.O. Box 651, 9732 Porttitor St.","postalZip":"01674","country":"Italy"},{"customerId":230,"customerName":"Selma Gray","phone":"(825) 777-6846","email":"commodo.ipsum@yahoo.ca","address":"9975 Quam Rd.","postalZip":"303114","country":"United States"},{"customerId":231,"customerName":"Igor Brady","phone":"1-224-170-7577","email":"quis.urna.nunc@google.edu","address":"P.O. Box 843, 3207 Eros Avenue","postalZip":"120342","country":"South Korea"},{"customerId":232,"customerName":"Marsden Scott","phone":"(312) 469-4156","email":"semper@yahoo.edu","address":"9821 Magna. St.","postalZip":"5755 IZ","country":"Sweden"},{"customerId":233,"customerName":"Caleb Beasley","phone":"1-761-565-3058","email":"gravida.nunc.sed@yahoo.edu","address":"Ap #678-9550 Quisque Avenue","postalZip":"3878","country":"Russian Federation"},{"customerId":234,"customerName":"Allen Soto","phone":"(486) 921-8537","email":"non@icloud.net","address":"Ap #552-1964 Semper Street","postalZip":"735428","country":"Norway"},{"customerId":235,"customerName":"Belle Kramer","phone":"1-963-314-4195","email":"nec.diam.duis@protonmail.ca","address":"Ap #533-5143 Odio, Ave","postalZip":"621357","country":"France"},{"customerId":236,"customerName":"Savannah Martin","phone":"1-604-634-2426","email":"suspendisse@protonmail.couk","address":"950-171 Ultricies Avenue","postalZip":"22253","country":"Ukraine"},{"customerId":237,"customerName":"Jasmine Stokes","phone":"(826) 644-4729","email":"aliquam@protonmail.org","address":"6372 Nunc St.","postalZip":"513382","country":"Netherlands"},{"customerId":238,"customerName":"Alexander Doyle","phone":"1-488-354-9546","email":"ipsum@yahoo.edu","address":"6847 Ipsum Av.","postalZip":"7886","country":"South Africa"},{"customerId":239,"customerName":"Lamar Bush","phone":"1-756-173-6359","email":"ipsum@hotmail.ca","address":"985 Donec Rd.","postalZip":"45-86","country":"India"},{"customerId":240,"customerName":"Isadora Fuller","phone":"1-484-722-9103","email":"sed.dictum.proin@yahoo.net","address":"838-5569 Nunc St.","postalZip":"73-13","country":"Philippines"},{"customerId":241,"customerName":"Mallory Goodwin","phone":"(831) 123-7927","email":"dapibus@outlook.com","address":"5849 Lacus. Road","postalZip":"3756","country":"Netherlands"},{"customerId":242,"customerName":"Carol Clay","phone":"1-513-371-2533","email":"ornare.placerat@protonmail.couk","address":"Ap #629-2448 Tortor Avenue","postalZip":"3567 TX","country":"France"},{"customerId":243,"customerName":"Emerald Valenzuela","phone":"1-311-823-3821","email":"id.ante@yahoo.net","address":"1237 Aliquam Av.","postalZip":"43732","country":"Costa Rica"},{"customerId":244,"customerName":"Lynn Dean","phone":"(853) 220-5171","email":"nulla@outlook.ca","address":"592-4473 Cras Street","postalZip":"136265","country":"Colombia"},{"customerId":245,"customerName":"Deanna Drake","phone":"(907) 704-8403","email":"viverra.maecenas@hotmail.com","address":"Ap #245-5061 Ultricies Av.","postalZip":"53261-077","country":"China"},{"customerId":246,"customerName":"Risa Barnett","phone":"1-484-724-7792","email":"nam.tempor@google.ca","address":"387-3289 Id, Ave","postalZip":"42324","country":"Belgium"},{"customerId":247,"customerName":"Chanda Goff","phone":"1-363-136-6294","email":"auctor.ullamcorper@google.com","address":"P.O. Box 445, 2913 Amet, Road","postalZip":"1586","country":"Colombia"},{"customerId":248,"customerName":"Cecilia Elliott","phone":"(323) 556-6283","email":"consectetuer.adipiscing@protonmail.ca","address":"2794 Mauris Street","postalZip":"854730","country":"Ireland"},{"customerId":249,"customerName":"Deacon Monroe","phone":"(712) 334-2351","email":"risus.donec@hotmail.net","address":"9360 Odio Rd.","postalZip":"14707-637","country":"Spain"},{"customerId":250,"customerName":"Edan Nguyen","phone":"1-433-816-3453","email":"ad.litora@google.ca","address":"566-2831 Nam St.","postalZip":"68-356","country":"Brazil"},{"customerId":251,"customerName":"Wesley Hughes","phone":"(216) 437-1077","email":"tristique.senectus@icloud.couk","address":"359-7242 Mi Rd.","postalZip":"577763","country":"Nigeria"},{"customerId":252,"customerName":"Henry Coffey","phone":"1-604-438-7321","email":"risus.nulla@outlook.couk","address":"9846 Natoque Rd.","postalZip":"6432-1728","country":"Brazil"},{"customerId":253,"customerName":"Nolan Lara","phone":"1-865-914-8666","email":"justo.faucibus@hotmail.couk","address":"Ap #712-8382 Urna, St.","postalZip":"5615","country":"Canada"},{"customerId":254,"customerName":"Justin Willis","phone":"1-412-547-4767","email":"et.magna@icloud.com","address":"498-9593 Nisl St.","postalZip":"665044","country":"United Kingdom"},{"customerId":255,"customerName":"Selma English","phone":"(696) 953-3985","email":"nec.mauris@aol.org","address":"Ap #349-4635 Sapien. St.","postalZip":"18597","country":"Brazil"},{"customerId":256,"customerName":"Donna Todd","phone":"(778) 814-1364","email":"nibh.dolor.nonummy@protonmail.ca","address":"Ap #106-3050 Aliquam Rd.","postalZip":"34752-75482","country":"South Africa"},{"customerId":257,"customerName":"Noah Francis","phone":"1-488-212-7714","email":"molestie@icloud.org","address":"429 Et, Road","postalZip":"3336","country":"Mexico"},{"customerId":258,"customerName":"Dora Head","phone":"(395) 855-5634","email":"donec.tempor@google.couk","address":"Ap #309-2891 Vitae, Rd.","postalZip":"35713","country":"South Korea"},{"customerId":259,"customerName":"Louis Gallegos","phone":"1-530-425-6764","email":"nec.cursus.a@outlook.edu","address":"624-7788 Lacinia. St.","postalZip":"694428","country":"Nigeria"},{"customerId":260,"customerName":"Penelope Hogan","phone":"(255) 416-4132","email":"ornare.libero@icloud.com","address":"P.O. Box 728, 7345 Cras Avenue","postalZip":"8522","country":"South Africa"},{"customerId":261,"customerName":"Cedric Hopkins","phone":"1-582-252-8036","email":"a.aliquet.vel@google.net","address":"341-9236 Porta Street","postalZip":"7332","country":"Australia"},{"customerId":262,"customerName":"Craig Alvarado","phone":"(644) 405-5215","email":"morbi@google.couk","address":"Ap #204-2795 A, Avenue","postalZip":"ET1 7NM","country":"Chile"},{"customerId":263,"customerName":"Callie Conner","phone":"(541) 433-7779","email":"amet.dapibus.id@google.net","address":"Ap #773-8201 A Rd.","postalZip":"10301","country":"Peru"},{"customerId":264,"customerName":"Brenden Bell","phone":"1-816-372-4255","email":"pellentesque.ultricies.dignissim@protonmail.ca","address":"Ap #723-1428 Nec Street","postalZip":"41001","country":"United Kingdom"},{"customerId":265,"customerName":"Adria Booth","phone":"1-818-603-5565","email":"lobortis.mauris@protonmail.edu","address":"273-9905 Sit Rd.","postalZip":"88761","country":"United Kingdom"},{"customerId":266,"customerName":"Chava Fischer","phone":"1-313-245-0765","email":"id.erat@yahoo.ca","address":"Ap #919-1096 Venenatis Rd.","postalZip":"31811","country":"United States"},{"customerId":267,"customerName":"Clayton Hoffman","phone":"(895) 786-3262","email":"adipiscing@google.org","address":"Ap #179-174 Cras Street","postalZip":"7268","country":"Poland"},{"customerId":268,"customerName":"Hayes Ferrell","phone":"1-443-337-3613","email":"vel.sapien.imperdiet@yahoo.org","address":"8251 Eu St.","postalZip":"5178","country":"United States"},{"customerId":269,"customerName":"Emma Newton","phone":"(228) 715-2705","email":"eu@yahoo.com","address":"Ap #581-3655 Ac Av.","postalZip":"1231-1389","country":"Canada"},{"customerId":270,"customerName":"Giacomo Fitzpatrick","phone":"1-627-382-2524","email":"nec.ante@google.ca","address":"9491 Velit Road","postalZip":"380298","country":"Indonesia"},{"customerId":271,"customerName":"Christine Steele","phone":"1-325-646-8233","email":"dignissim@google.couk","address":"780-3131 Augue. Rd.","postalZip":"616127","country":"China"},{"customerId":272,"customerName":"Ray Bush","phone":"(872) 462-4427","email":"sed.id.risus@yahoo.com","address":"362-359 Nullam Rd.","postalZip":"755108","country":"South Africa"},{"customerId":273,"customerName":"Price Cote","phone":"1-388-854-2213","email":"ipsum@protonmail.edu","address":"Ap #927-651 Mauris Rd.","postalZip":"22353","country":"Peru"},{"customerId":274,"customerName":"Silas Maynard","phone":"1-765-832-6975","email":"velit@google.org","address":"6731 Fusce Avenue","postalZip":"22773","country":"Ireland"},{"customerId":275,"customerName":"Zena Brooks","phone":"(288) 273-1375","email":"donec.nibh@aol.org","address":"Ap #156-9306 Lectus Rd.","postalZip":"8268","country":"Singapore"},{"customerId":276,"customerName":"Ferdinand Hampton","phone":"(915) 920-8532","email":"erat.semper.rutrum@yahoo.com","address":"Ap #561-5241 Aliquet Street","postalZip":"14556","country":"Singapore"},{"customerId":277,"customerName":"Keefe Gilliam","phone":"(845) 657-5376","email":"augue@aol.edu","address":"Ap #662-5036 Mauris Rd.","postalZip":"39-666","country":"India"},{"customerId":278,"customerName":"Timon Barr","phone":"1-488-359-0136","email":"accumsan.laoreet.ipsum@icloud.org","address":"626-8640 Nec, St.","postalZip":"07460","country":"South Korea"},{"customerId":279,"customerName":"Harlan Beard","phone":"1-994-671-3557","email":"nam@yahoo.net","address":"Ap #332-1742 Vitae, St.","postalZip":"652675","country":"Colombia"},{"customerId":280,"customerName":"Fletcher Mclean","phone":"(255) 876-5491","email":"in@outlook.com","address":"P.O. Box 898, 9802 Sollicitudin Rd.","postalZip":"46626","country":"United States"},{"customerId":281,"customerName":"Griffin Woods","phone":"(541) 325-1702","email":"nulla.eu@icloud.edu","address":"Ap #404-6111 Per Rd.","postalZip":"772818","country":"New Zealand"},{"customerId":282,"customerName":"Angela Ferguson","phone":"1-430-334-0671","email":"luctus.vulputate@protonmail.org","address":"Ap #541-9833 Aliquet. Ave","postalZip":"46575","country":"Chile"},{"customerId":283,"customerName":"Hashim Lowe","phone":"1-377-593-3919","email":"proin@google.couk","address":"668-8867 Lorem, Rd.","postalZip":"467422","country":"Russian Federation"},{"customerId":284,"customerName":"Wyatt Joyce","phone":"(530) 212-6652","email":"tellus.imperdiet@icloud.org","address":"646-7638 Ut Road","postalZip":"5978-5762","country":"New Zealand"},{"customerId":285,"customerName":"Gregory Bradshaw","phone":"(545) 483-8816","email":"aliquet.sem@outlook.com","address":"P.O. Box 275, 9869 Rhoncus. Road","postalZip":"64-53","country":"Mexico"},{"customerId":286,"customerName":"Pearl Wood","phone":"1-618-481-2183","email":"feugiat@google.couk","address":"Ap #620-3056 Lobortis Avenue","postalZip":"866376","country":"Nigeria"},{"customerId":287,"customerName":"Richard Ortiz","phone":"(469) 876-8463","email":"consequat@protonmail.couk","address":"Ap #637-5686 Elementum, Rd.","postalZip":"85742","country":"Peru"},{"customerId":288,"customerName":"Hakeem Hayden","phone":"(313) 793-7137","email":"quisque.ornare@yahoo.com","address":"428-4459 Turpis Av.","postalZip":"01238","country":"France"},{"customerId":289,"customerName":"Byron Cooper","phone":"(665) 687-0031","email":"amet.ante.vivamus@protonmail.ca","address":"6402 Amet, St.","postalZip":"7349 HW","country":"United States"},{"customerId":290,"customerName":"Ruby Wolfe","phone":"1-547-568-7216","email":"morbi.sit@yahoo.org","address":"7422 Eu Rd.","postalZip":"21129-965","country":"Ukraine"},{"customerId":291,"customerName":"Odysseus Howard","phone":"1-689-722-4560","email":"eros.non@yahoo.couk","address":"Ap #665-4091 Magna Road","postalZip":"584207","country":"Netherlands"},{"customerId":292,"customerName":"Magee Mann","phone":"1-864-488-5741","email":"donec.nibh@hotmail.com","address":"531-6849 Est, Ave","postalZip":"5480","country":"Costa Rica"},{"customerId":293,"customerName":"Inez Sexton","phone":"1-323-835-7826","email":"penatibus.et@protonmail.couk","address":"Ap #518-9623 Posuere Ave","postalZip":"43554","country":"Italy"},{"customerId":294,"customerName":"Charde Rose","phone":"1-994-423-0323","email":"mauris@icloud.ca","address":"819-7349 In St.","postalZip":"77224","country":"Canada"},{"customerId":295,"customerName":"Quinn Burnett","phone":"(327) 234-6675","email":"sit.amet@hotmail.edu","address":"Ap #978-3339 Curabitur Rd.","postalZip":"66725","country":"Pakistan"},{"customerId":296,"customerName":"Hollee Fletcher","phone":"(401) 671-5652","email":"vehicula.aliquet.libero@yahoo.ca","address":"2459 Elit, Avenue","postalZip":"6784-1011","country":"Costa Rica"},{"customerId":297,"customerName":"Sybill Hoover","phone":"1-749-153-7298","email":"nec@hotmail.com","address":"183-1871 Ante. Street","postalZip":"389383","country":"Austria"},{"customerId":298,"customerName":"Keefe Blackburn","phone":"1-835-251-3502","email":"tempus@yahoo.net","address":"Ap #110-5064 Duis Street","postalZip":"39211-11883","country":"Singapore"},{"customerId":299,"customerName":"Coby Evans","phone":"(528) 295-9329","email":"metus.sit.amet@outlook.ca","address":"Ap #540-8073 Sem. St.","postalZip":"5351","country":"Ireland"},{"customerId":300,"customerName":"Reese Mccarthy","phone":"(525) 665-1876","email":"vitae.dolor.donec@outlook.edu","address":"P.O. Box 537, 6955 Libero. St.","postalZip":"5857","country":"Spain"},{"customerId":301,"customerName":"Gisela Collins","phone":"1-983-834-2244","email":"donec@aol.org","address":"492-7356 Risus Rd.","postalZip":"Y1G 8N4","country":"Nigeria"},{"customerId":302,"customerName":"Rylee Sears","phone":"(281) 220-3044","email":"semper.erat.in@hotmail.ca","address":"Ap #396-3079 Pellentesque, Ave","postalZip":"I5 8YA","country":"Poland"},{"customerId":303,"customerName":"Jana Parsons","phone":"(469) 784-9162","email":"elementum@protonmail.couk","address":"356-7478 Id St.","postalZip":"30765","country":"Poland"},{"customerId":304,"customerName":"Chiquita Giles","phone":"(690) 282-1110","email":"nec.mauris@icloud.edu","address":"P.O. Box 623, 2780 Massa St.","postalZip":"325151","country":"South Korea"},{"customerId":305,"customerName":"Leah Jefferson","phone":"(534) 837-4432","email":"pede.cum@protonmail.couk","address":"3960 Consectetuer, Ave","postalZip":"803683","country":"Pakistan"},{"customerId":306,"customerName":"Amy Middleton","phone":"1-425-639-1978","email":"quisque@icloud.ca","address":"P.O. Box 271, 3429 Tortor St.","postalZip":"2367","country":"South Africa"},{"customerId":307,"customerName":"Maris Underwood","phone":"(635) 838-8174","email":"elit.curabitur@protonmail.net","address":"972-8674 Non Street","postalZip":"188425","country":"Australia"},{"customerId":308,"customerName":"Hall Mendoza","phone":"1-581-423-4214","email":"sed@aol.couk","address":"594-1417 Libero St.","postalZip":"50109","country":"Ireland"},{"customerId":309,"customerName":"Kibo Curtis","phone":"1-318-489-5448","email":"integer.sem@hotmail.com","address":"P.O. Box 491, 6073 Semper Rd.","postalZip":"79457","country":"Belgium"},{"customerId":310,"customerName":"Ian Hyde","phone":"(503) 424-7209","email":"eget@google.com","address":"Ap #443-3234 Arcu Rd.","postalZip":"81322-448","country":"Chile"},{"customerId":311,"customerName":"Vincent Rivers","phone":"1-415-129-2713","email":"id@yahoo.com","address":"Ap #185-3842 Integer Rd.","postalZip":"571644","country":"Nigeria"},{"customerId":312,"customerName":"Elton Duran","phone":"(824) 759-8438","email":"aenean.eget.magna@yahoo.com","address":"790-3169 Nullam St.","postalZip":"517453","country":"Sweden"},{"customerId":313,"customerName":"Anne Barnes","phone":"1-250-658-2841","email":"ipsum.non@outlook.ca","address":"Ap #137-9867 Sapien Av.","postalZip":"40300","country":"Ukraine"},{"customerId":314,"customerName":"Althea Holland","phone":"(938) 787-6943","email":"a@yahoo.org","address":"783-1382 Cursus Rd.","postalZip":"4773","country":"India"},{"customerId":315,"customerName":"Sade Brooks","phone":"1-641-623-2307","email":"cras.dictum@icloud.edu","address":"9034 Sit Rd.","postalZip":"3443","country":"Philippines"},{"customerId":316,"customerName":"Elvis Mann","phone":"1-384-864-5311","email":"facilisis.lorem@icloud.edu","address":"Ap #500-9323 Vehicula. St.","postalZip":"23541","country":"New Zealand"},{"customerId":317,"customerName":"Jason Ewing","phone":"(764) 231-5857","email":"magna.a@protonmail.edu","address":"441-5511 Gravida Road","postalZip":"637943","country":"South Africa"},{"customerId":318,"customerName":"Brennan Dunn","phone":"(285) 940-6155","email":"ultricies@outlook.org","address":"5191 Quam Street","postalZip":"952885","country":"Canada"},{"customerId":319,"customerName":"Griffith Gonzales","phone":"1-146-961-5197","email":"egestas.aliquam@icloud.net","address":"518-4398 In, Rd.","postalZip":"862432","country":"Nigeria"},{"customerId":320,"customerName":"Demetrius Spencer","phone":"(620) 245-2604","email":"amet.ultricies@yahoo.ca","address":"Ap #563-4210 Lorem St.","postalZip":"35144","country":"Mexico"},{"customerId":321,"customerName":"Jerry Houston","phone":"1-100-235-6447","email":"ornare@protonmail.com","address":"238-4106 Odio St.","postalZip":"21156","country":"Germany"},{"customerId":322,"customerName":"Madonna May","phone":"1-541-883-2666","email":"nullam.scelerisque@outlook.com","address":"860-2657 Ultrices Avenue","postalZip":"7827 SF","country":"India"},{"customerId":323,"customerName":"Vance Cunningham","phone":"(477) 661-9718","email":"nunc.quisque@icloud.edu","address":"559-7825 Sapien. St.","postalZip":"S4 7MU","country":"Colombia"},{"customerId":324,"customerName":"Timothy Garrison","phone":"1-398-261-7157","email":"imperdiet@aol.net","address":"Ap #928-9398 Vivamus Road","postalZip":"33252","country":"Italy"},{"customerId":325,"customerName":"Berk Carver","phone":"1-128-645-8082","email":"in.scelerisque@google.com","address":"182-8065 Adipiscing Rd.","postalZip":"768627","country":"Norway"},{"customerId":326,"customerName":"Jason Torres","phone":"1-153-624-7418","email":"velit.in@outlook.com","address":"3286 Morbi Ave","postalZip":"67-245","country":"Germany"},{"customerId":327,"customerName":"Lane Mitchell","phone":"(347) 133-6044","email":"ridiculus.mus@yahoo.net","address":"862-8773 Dictum Rd.","postalZip":"08-554","country":"Germany"},{"customerId":328,"customerName":"Amir Albert","phone":"(957) 879-0145","email":"congue.in@aol.org","address":"229-7578 Euismod St.","postalZip":"6584","country":"New Zealand"},{"customerId":329,"customerName":"Magee Guthrie","phone":"(526) 884-0836","email":"dictum.eu@icloud.com","address":"P.O. Box 724, 9254 Neque. St.","postalZip":"4435","country":"Austria"},{"customerId":330,"customerName":"Jerry Rasmussen","phone":"1-458-356-2655","email":"elementum.sem@hotmail.edu","address":"P.O. Box 914, 3761 Risus. Ave","postalZip":"MK4 7RL","country":"Chile"},{"customerId":331,"customerName":"Kaseem Leon","phone":"1-243-864-6476","email":"proin.sed@hotmail.edu","address":"696 Sed Rd.","postalZip":"9125","country":"Mexico"},{"customerId":332,"customerName":"Olympia Noble","phone":"(537) 635-6386","email":"justo.nec@hotmail.com","address":"466-2060 Vitae Road","postalZip":"83128","country":"Brazil"},{"customerId":333,"customerName":"Phillip Cabrera","phone":"1-556-315-7456","email":"ligula.consectetuer.rhoncus@icloud.org","address":"P.O. Box 639, 8994 Egestas. Rd.","postalZip":"703516","country":"France"},{"customerId":334,"customerName":"Diana Chavez","phone":"1-729-354-1853","email":"ullamcorper.duis@google.couk","address":"309-9819 Cras Street","postalZip":"B2N 9J5","country":"Peru"},{"customerId":335,"customerName":"Shay Kline","phone":"(332) 131-7766","email":"porttitor.interdum@outlook.edu","address":"5658 Lacinia Street","postalZip":"5055 HD","country":"Nigeria"},{"customerId":336,"customerName":"Lana Santana","phone":"1-945-466-5287","email":"pretium.et@hotmail.ca","address":"5118 Bibendum Road","postalZip":"318788","country":"United Kingdom"},{"customerId":337,"customerName":"Hammett Raymond","phone":"1-229-452-6520","email":"dictum@hotmail.edu","address":"3144 Egestas. Road","postalZip":"6324","country":"Philippines"},{"customerId":338,"customerName":"Francis Harper","phone":"1-357-421-4528","email":"ultrices.duis.volutpat@aol.ca","address":"P.O. Box 832, 2212 Tellus St.","postalZip":"87-69","country":"Norway"},{"customerId":339,"customerName":"Rylee Hooper","phone":"1-214-823-1015","email":"sodales.mauris.blandit@yahoo.net","address":"7186 Ornare, Street","postalZip":"502473","country":"Australia"},{"customerId":340,"customerName":"Kaye Alvarez","phone":"(855) 158-7702","email":"parturient.montes.nascetur@aol.edu","address":"862-5219 Placerat Rd.","postalZip":"382323","country":"Brazil"},{"customerId":341,"customerName":"Quail Kennedy","phone":"(867) 221-6583","email":"nunc.quis.arcu@aol.org","address":"196-1452 Magna Ave","postalZip":"05255","country":"Costa Rica"},{"customerId":342,"customerName":"Violet Massey","phone":"1-277-634-2381","email":"ante@hotmail.ca","address":"Ap #378-4290 Suspendisse Avenue","postalZip":"43560","country":"Philippines"},{"customerId":343,"customerName":"Thomas Whitaker","phone":"1-767-722-9632","email":"orci.donec@aol.ca","address":"647-1109 Mi Rd.","postalZip":"16775","country":"Pakistan"},{"customerId":344,"customerName":"Orson Kidd","phone":"(671) 558-1733","email":"montes.nascetur@yahoo.couk","address":"Ap #139-5917 Rutrum Avenue","postalZip":"T5X 1EN","country":"Indonesia"},{"customerId":345,"customerName":"Sharon Sanders","phone":"1-709-128-4651","email":"orci.lobortis@icloud.ca","address":"182-6607 Accumsan Av.","postalZip":"54164","country":"Indonesia"},{"customerId":346,"customerName":"Kuame Gilmore","phone":"1-164-623-2250","email":"montes.nascetur@icloud.couk","address":"P.O. Box 611, 8816 Dapibus Ave","postalZip":"5476-8827","country":"South Korea"},{"customerId":347,"customerName":"Yetta Gamble","phone":"(113) 772-2838","email":"nisi.nibh@aol.com","address":"P.O. Box 136, 8433 Mauris, St.","postalZip":"23471","country":"China"},{"customerId":348,"customerName":"Cleo Bruce","phone":"(494) 454-5412","email":"euismod.urna@protonmail.edu","address":"P.O. Box 415, 9066 Neque. St.","postalZip":"49257","country":"Peru"},{"customerId":349,"customerName":"Rigel Miller","phone":"(557) 666-8730","email":"ultrices.duis@google.com","address":"770-4112 Fermentum Av.","postalZip":"2382-7561","country":"Germany"},{"customerId":350,"customerName":"Erica Ratliff","phone":"1-633-695-3559","email":"gravida@aol.ca","address":"Ap #114-9821 Nullam Avenue","postalZip":"47-128","country":"Turkey"},{"customerId":351,"customerName":"Asher Barnes","phone":"1-731-790-1527","email":"volutpat.nulla@hotmail.edu","address":"686-9182 Mattis. Rd.","postalZip":"5607","country":"South Africa"},{"customerId":352,"customerName":"Jane Bond","phone":"1-773-962-6237","email":"sit@hotmail.com","address":"9982 Arcu. Street","postalZip":"241644","country":"Singapore"},{"customerId":353,"customerName":"Veda Gates","phone":"1-525-719-1234","email":"ut.semper.pretium@hotmail.ca","address":"536-950 Mattis. Rd.","postalZip":"18354","country":"Spain"},{"customerId":354,"customerName":"Lisandra Hull","phone":"1-913-744-5839","email":"non.bibendum@outlook.edu","address":"P.O. Box 482, 5103 In Ave","postalZip":"69565","country":"Costa Rica"},{"customerId":355,"customerName":"Echo Diaz","phone":"(445) 405-4587","email":"non.cursus.non@google.edu","address":"Ap #855-3934 Proin Ave","postalZip":"3205","country":"Colombia"},{"customerId":356,"customerName":"Celeste Preston","phone":"1-261-688-8369","email":"ultrices.a.auctor@hotmail.com","address":"Ap #189-425 Metus Ave","postalZip":"413248","country":"China"},{"customerId":357,"customerName":"Keane Cervantes","phone":"1-582-238-7332","email":"urna.nunc@aol.edu","address":"Ap #870-6101 Dignissim Ave","postalZip":"54385","country":"New Zealand"},{"customerId":358,"customerName":"Kieran Lowe","phone":"1-524-443-9131","email":"duis.dignissim@protonmail.ca","address":"882 Etiam St.","postalZip":"J5X 7C4","country":"Singapore"},{"customerId":359,"customerName":"Isaiah Duran","phone":"1-511-634-8106","email":"tincidunt.neque@google.com","address":"P.O. Box 370, 4907 Risus Rd.","postalZip":"4572","country":"Nigeria"},{"customerId":360,"customerName":"Armando Yang","phone":"(718) 531-1069","email":"imperdiet@google.org","address":"571-4395 Montes, Street","postalZip":"774564","country":"Sweden"},{"customerId":361,"customerName":"Aretha Sawyer","phone":"(794) 398-6437","email":"urna@icloud.net","address":"995-4838 Euismod Street","postalZip":"1512","country":"Costa Rica"},{"customerId":362,"customerName":"Rogan Sloan","phone":"(889) 457-2267","email":"risus.a@protonmail.couk","address":"169-3718 Neque Rd.","postalZip":"625058","country":"Poland"},{"customerId":363,"customerName":"Julian Branch","phone":"1-128-430-2363","email":"libero@hotmail.ca","address":"P.O. Box 383, 1112 Neque Rd.","postalZip":"3657","country":"Poland"},{"customerId":364,"customerName":"Aidan Ayers","phone":"1-594-977-5864","email":"ac.risus@icloud.org","address":"P.O. Box 369, 4964 Tellus, Street","postalZip":"621482","country":"South Korea"},{"customerId":365,"customerName":"Kaitlin Peterson","phone":"(483) 656-1820","email":"sit@google.ca","address":"Ap #908-5222 Consectetuer Road","postalZip":"80440-32248","country":"South Korea"},{"customerId":366,"customerName":"Mark Jimenez","phone":"1-834-270-4558","email":"cras.vehicula@yahoo.couk","address":"P.O. Box 323, 4116 Neque Rd.","postalZip":"2825","country":"Germany"},{"customerId":367,"customerName":"Jin Lane","phone":"(284) 561-6240","email":"sem.mollis@outlook.com","address":"P.O. Box 443, 7371 Vitae Rd.","postalZip":"5311","country":"China"},{"customerId":368,"customerName":"Malachi Bender","phone":"(212) 377-1120","email":"at.arcu@yahoo.couk","address":"696-467 Nunc Rd.","postalZip":"21167","country":"Sweden"},{"customerId":369,"customerName":"Kasimir Strickland","phone":"(365) 534-5724","email":"arcu@yahoo.org","address":"Ap #778-5996 Tristique Ave","postalZip":"408322","country":"Austria"},{"customerId":370,"customerName":"Avram Landry","phone":"(725) 567-1191","email":"ante@outlook.edu","address":"Ap #595-7217 Fermentum Av.","postalZip":"95251","country":"Ukraine"},{"customerId":371,"customerName":"Charissa Soto","phone":"1-862-478-0734","email":"scelerisque.scelerisque.dui@icloud.com","address":"Ap #109-9179 Elit. Av.","postalZip":"872388","country":"New Zealand"},{"customerId":372,"customerName":"Josiah Rocha","phone":"(788) 631-9275","email":"eleifend.nec@hotmail.couk","address":"510-3381 Nunc St.","postalZip":"853868","country":"Indonesia"},{"customerId":373,"customerName":"Adara Tillman","phone":"1-878-908-6832","email":"commodo.hendrerit.donec@icloud.org","address":"Ap #639-5997 Nec Rd.","postalZip":"50212","country":"Norway"},{"customerId":374,"customerName":"Louis Skinner","phone":"(367) 631-2734","email":"at@hotmail.edu","address":"Ap #976-3050 Orci Street","postalZip":"PD6R 3PI","country":"United Kingdom"},{"customerId":375,"customerName":"Lacey Weeks","phone":"1-722-936-2754","email":"integer.mollis.integer@icloud.couk","address":"9313 Sem. Avenue","postalZip":"42176","country":"Poland"},{"customerId":376,"customerName":"Yvonne Kim","phone":"1-279-868-1631","email":"semper.pretium.neque@google.net","address":"Ap #656-7665 Est Avenue","postalZip":"13693","country":"South Africa"},{"customerId":377,"customerName":"Damian Jefferson","phone":"(741) 385-7251","email":"massa@yahoo.ca","address":"P.O. Box 511, 5696 Nam Av.","postalZip":"F8H 9Z4","country":"Ireland"},{"customerId":378,"customerName":"Craig Short","phone":"(763) 637-2831","email":"quisque@protonmail.edu","address":"Ap #282-3271 Est Street","postalZip":"4539","country":"South Korea"},{"customerId":379,"customerName":"Rhoda Mcknight","phone":"(741) 458-7914","email":"penatibus.et@icloud.ca","address":"Ap #565-6944 Cras Rd.","postalZip":"31824","country":"New Zealand"},{"customerId":380,"customerName":"Maile Mercer","phone":"1-566-245-7657","email":"luctus.lobortis.class@yahoo.edu","address":"Ap #439-3970 Fringilla Ave","postalZip":"28693","country":"Philippines"},{"customerId":381,"customerName":"Cullen Sellers","phone":"(398) 340-9244","email":"ac.orci@protonmail.net","address":"P.O. Box 460, 3283 Elit, Rd.","postalZip":"570427","country":"Philippines"},{"customerId":382,"customerName":"Kato Olson","phone":"(735) 555-2525","email":"at@google.couk","address":"Ap #391-8711 Ante Street","postalZip":"976564","country":"Italy"},{"customerId":383,"customerName":"Lionel Good","phone":"(474) 544-6638","email":"fermentum@hotmail.org","address":"Ap #863-5541 Vulputate St.","postalZip":"7317","country":"Norway"},{"customerId":384,"customerName":"Owen Mueller","phone":"(486) 407-7500","email":"leo.vivamus@google.net","address":"Ap #119-5560 Enim St.","postalZip":"C7Z 3Y5","country":"South Africa"},{"customerId":385,"customerName":"Kennan Acosta","phone":"1-394-556-5185","email":"magna@google.org","address":"Ap #306-7782 Sollicitudin St.","postalZip":"4693-7121","country":"Brazil"},{"customerId":386,"customerName":"Bruce Buckley","phone":"1-374-282-4315","email":"ac.eleifend@aol.edu","address":"Ap #695-1546 Eget Avenue","postalZip":"8714","country":"Pakistan"},{"customerId":387,"customerName":"Caldwell England","phone":"1-833-581-4760","email":"pharetra.nam.ac@google.couk","address":"Ap #614-3781 Suspendisse Street","postalZip":"439634","country":"Colombia"},{"customerId":388,"customerName":"Moses Gordon","phone":"(566) 867-2182","email":"elit.etiam@google.edu","address":"869-5000 Ac Ave","postalZip":"78-55","country":"Netherlands"},{"customerId":389,"customerName":"Abigail Mcintyre","phone":"1-799-679-0214","email":"ac.arcu@outlook.ca","address":"180-5468 Nec Rd.","postalZip":"308060","country":"Singapore"},{"customerId":390,"customerName":"Virginia Travis","phone":"(456) 164-4253","email":"neque.et@hotmail.org","address":"6945 Tincidunt, Av.","postalZip":"J6P 2G5","country":"Germany"},{"customerId":391,"customerName":"Iris Morse","phone":"1-766-815-6360","email":"dis.parturient.montes@icloud.ca","address":"P.O. Box 663, 9844 Sit Avenue","postalZip":"423762","country":"Canada"},{"customerId":392,"customerName":"Samson Douglas","phone":"(728) 447-8454","email":"aliquam.adipiscing@aol.ca","address":"Ap #573-5089 Orci, Av.","postalZip":"287604","country":"Sweden"},{"customerId":393,"customerName":"Stone Daniel","phone":"1-770-405-4824","email":"tempus@icloud.couk","address":"Ap #954-1907 Et Rd.","postalZip":"72021","country":"China"},{"customerId":394,"customerName":"Jade Vasquez","phone":"1-452-435-1738","email":"nec.quam@google.net","address":"7410 Imperdiet Rd.","postalZip":"82725","country":"Germany"},{"customerId":395,"customerName":"Mia Nguyen","phone":"(925) 746-8536","email":"tempor.est.ac@icloud.edu","address":"Ap #232-4245 At, St.","postalZip":"99515","country":"United Kingdom"},{"customerId":396,"customerName":"Jeremy Holloway","phone":"(379) 222-9206","email":"nec.ligula@icloud.couk","address":"P.O. Box 283, 2641 Consectetuer Rd.","postalZip":"08481","country":"Canada"},{"customerId":397,"customerName":"Dieter Richard","phone":"(338) 298-6841","email":"sit@icloud.net","address":"P.O. Box 852, 629 Laoreet, Rd.","postalZip":"YY6 5JT","country":"Italy"},{"customerId":398,"customerName":"Kylie Ballard","phone":"1-478-336-7431","email":"nec.imperdiet.nec@aol.org","address":"1952 Ipsum Rd.","postalZip":"73168","country":"Australia"},{"customerId":399,"customerName":"Winter Cox","phone":"(516) 421-8332","email":"pede.nonummy@hotmail.couk","address":"620-473 Lectus Rd.","postalZip":"57931","country":"Germany"},{"customerId":400,"customerName":"Maisie Vaughn","phone":"1-825-318-6435","email":"tempor.erat@yahoo.org","address":"453-4253 Tincidunt St.","postalZip":"74-74","country":"Pakistan"},{"customerId":401,"customerName":"Burton Lucas","phone":"(376) 658-4612","email":"libero.integer.in@protonmail.org","address":"Ap #898-8853 Eu Road","postalZip":"386871","country":"Canada"},{"customerId":402,"customerName":"Unity Mullins","phone":"1-837-312-6128","email":"lorem.vehicula@yahoo.ca","address":"386-632 Tellus Road","postalZip":"73338-56432","country":"Nigeria"},{"customerId":403,"customerName":"Basia Parks","phone":"1-440-883-7962","email":"erat.volutpat.nulla@protonmail.com","address":"Ap #599-610 Pharetra Street","postalZip":"68534-211","country":"Russian Federation"},{"customerId":404,"customerName":"Cameran Guy","phone":"1-271-354-1648","email":"bibendum.donec.felis@outlook.edu","address":"933-4282 Amet St.","postalZip":"77771","country":"Indonesia"},{"customerId":405,"customerName":"Wilma Lindsay","phone":"(963) 948-3167","email":"et.netus@aol.org","address":"Ap #935-3952 Mus. Avenue","postalZip":"363977","country":"Germany"},{"customerId":406,"customerName":"Axel Reyes","phone":"1-604-514-3222","email":"vestibulum.ante@icloud.net","address":"897-6751 Vitae Rd.","postalZip":"183503","country":"United States"},{"customerId":407,"customerName":"Sara Tran","phone":"(716) 494-7543","email":"interdum.enim@aol.net","address":"106-4176 Amet Av.","postalZip":"6200","country":"Russian Federation"},{"customerId":408,"customerName":"Zenia Dotson","phone":"1-265-516-3169","email":"pellentesque.ultricies.dignissim@google.ca","address":"Ap #433-2117 Lacus, Avenue","postalZip":"1893 FY","country":"Nigeria"},{"customerId":409,"customerName":"Ignatius Coleman","phone":"1-576-225-2466","email":"diam@yahoo.org","address":"757-8359 Sed Ave","postalZip":"33452","country":"United Kingdom"},{"customerId":410,"customerName":"Xavier Hughes","phone":"(204) 656-2774","email":"enim.nec@google.edu","address":"660-2867 Suspendisse Av.","postalZip":"62S 9R8","country":"Canada"},{"customerId":411,"customerName":"Kirestin Mcmillan","phone":"1-885-268-9515","email":"id.enim@aol.edu","address":"P.O. Box 517, 8457 Pede. Ave","postalZip":"11268","country":"Peru"},{"customerId":412,"customerName":"Herman Whitfield","phone":"(230) 690-5961","email":"gravida.aliquam@aol.edu","address":"344-3824 Morbi Street","postalZip":"9454","country":"New Zealand"},{"customerId":413,"customerName":"Dylan Pickett","phone":"(339) 874-7973","email":"posuere.at.velit@yahoo.net","address":"P.O. Box 362, 1266 Commodo Rd.","postalZip":"87661","country":"Philippines"},{"customerId":414,"customerName":"Gary Espinoza","phone":"(904) 288-9363","email":"vitae.velit.egestas@google.couk","address":"342-9066 Auctor Rd.","postalZip":"ZG2G 3JX","country":"Belgium"},{"customerId":415,"customerName":"Nehru Byrd","phone":"1-891-575-8280","email":"nonummy.fusce@icloud.com","address":"Ap #843-8303 Quis, St.","postalZip":"875063","country":"Ireland"},{"customerId":416,"customerName":"Tyler Riley","phone":"1-181-559-5170","email":"ornare@yahoo.net","address":"4328 Dui. Av.","postalZip":"6472","country":"Russian Federation"},{"customerId":417,"customerName":"Kelsey Faulkner","phone":"(522) 458-3587","email":"faucibus.orci.luctus@outlook.ca","address":"9385 Nibh Road","postalZip":"74703-435","country":"China"},{"customerId":418,"customerName":"Bruno Clark","phone":"(636) 893-0237","email":"phasellus@google.couk","address":"Ap #938-7753 At St.","postalZip":"GT7 9OV","country":"Germany"},{"customerId":419,"customerName":"Damian Burch","phone":"1-576-884-6072","email":"odio.sagittis@aol.com","address":"P.O. Box 391, 5587 Donec Av.","postalZip":"X82 4UF","country":"New Zealand"},{"customerId":420,"customerName":"Carol Ramsey","phone":"1-887-238-9733","email":"augue.ut.lacus@aol.ca","address":"Ap #799-2575 Ante Av.","postalZip":"189592","country":"Philippines"},{"customerId":421,"customerName":"Jena Barr","phone":"1-275-516-7237","email":"in.tempus.eu@protonmail.org","address":"Ap #359-2483 Nec Road","postalZip":"18381","country":"Singapore"},{"customerId":422,"customerName":"Kimberly Mays","phone":"1-251-208-1467","email":"sed.et.libero@outlook.edu","address":"198-9512 Aliquam St.","postalZip":"157671","country":"Poland"},{"customerId":423,"customerName":"Laith Kim","phone":"(478) 948-4743","email":"duis.a.mi@hotmail.net","address":"342-6341 Feugiat. Ave","postalZip":"3637","country":"Pakistan"},{"customerId":424,"customerName":"Orla Oneil","phone":"(388) 849-8159","email":"egestas.urna@aol.org","address":"6735 Nunc. Av.","postalZip":"29696","country":"Germany"},{"customerId":425,"customerName":"Charles Morton","phone":"(767) 519-3695","email":"aliquet.molestie.tellus@google.couk","address":"202-5602 Mi. Ave","postalZip":"12241","country":"Costa Rica"},{"customerId":426,"customerName":"Debra Sosa","phone":"1-201-400-2217","email":"justo.sit@icloud.org","address":"Ap #540-2810 Tincidunt, Av.","postalZip":"65718","country":"Colombia"},{"customerId":427,"customerName":"Hedwig Rosario","phone":"1-256-395-7566","email":"porttitor.scelerisque@protonmail.couk","address":"598-3605 Mi Ave","postalZip":"73746-699","country":"Vietnam"},{"customerId":428,"customerName":"Maxwell Shaffer","phone":"(305) 288-9774","email":"nam.tempor.diam@google.edu","address":"Ap #440-7692 Dictum. Road","postalZip":"27-74","country":"Vietnam"},{"customerId":429,"customerName":"Hamish Foreman","phone":"1-683-565-4311","email":"ac@google.com","address":"2305 Mauris Ave","postalZip":"S5K 6H8","country":"Russian Federation"},{"customerId":430,"customerName":"MacKenzie Cortez","phone":"1-418-976-4523","email":"at.nisi@google.net","address":"387-287 Nam Ave","postalZip":"77969","country":"Spain"},{"customerId":431,"customerName":"Oleg Stephens","phone":"1-436-287-3161","email":"elementum.lorem@icloud.ca","address":"9093 Sed Avenue","postalZip":"26532","country":"South Korea"},{"customerId":432,"customerName":"Joseph Fry","phone":"1-279-190-2967","email":"porttitor.vulputate@google.ca","address":"P.O. Box 593, 4292 Sagittis St.","postalZip":"85-24","country":"Australia"},{"customerId":433,"customerName":"Sybil Bullock","phone":"(878) 282-8810","email":"mi@aol.net","address":"Ap #821-9673 Eget Road","postalZip":"42-72","country":"China"},{"customerId":434,"customerName":"Tucker Stephens","phone":"1-485-422-1135","email":"nulla@icloud.ca","address":"P.O. Box 992, 1019 Amet Av.","postalZip":"2897","country":"Belgium"},{"customerId":435,"customerName":"Barrett Harmon","phone":"1-647-944-8773","email":"at@hotmail.edu","address":"462-1221 Aenean St.","postalZip":"442288","country":"Italy"},{"customerId":436,"customerName":"Kirk Sweeney","phone":"(452) 412-2973","email":"sodales@aol.net","address":"457-5872 Id, Av.","postalZip":"O56 7YS","country":"Chile"},{"customerId":437,"customerName":"Orson Bowers","phone":"1-948-408-6471","email":"facilisis.suspendisse@google.org","address":"995-7530 Nullam Avenue","postalZip":"1117","country":"Ireland"},{"customerId":438,"customerName":"Lila Gomez","phone":"(777) 644-5534","email":"ipsum.cursus.vestibulum@yahoo.edu","address":"734-9379 Suspendisse Rd.","postalZip":"4722","country":"Poland"},{"customerId":439,"customerName":"Jerry Hensley","phone":"1-522-705-8983","email":"orci.in@yahoo.couk","address":"Ap #664-8633 Orci St.","postalZip":"1215-1724","country":"South Africa"},{"customerId":440,"customerName":"Jackson Rodriquez","phone":"(405) 608-1438","email":"nullam.feugiat@hotmail.org","address":"P.O. Box 472, 8587 Ante Rd.","postalZip":"6883","country":"Austria"},{"customerId":441,"customerName":"Emi Tyler","phone":"1-206-862-4695","email":"neque.morbi@outlook.net","address":"407-4268 Penatibus Street","postalZip":"52323","country":"Chile"},{"customerId":442,"customerName":"Brynne Todd","phone":"(893) 834-3819","email":"vulputate.lacus@protonmail.net","address":"Ap #462-5927 Faucibus Av.","postalZip":"5748","country":"Nigeria"},{"customerId":443,"customerName":"Fitzgerald Valencia","phone":"1-447-557-3238","email":"lorem.ipsum@outlook.edu","address":"4238 Aliquam Road","postalZip":"85473","country":"Italy"},{"customerId":444,"customerName":"Martina Henson","phone":"(269) 158-1591","email":"ut@icloud.ca","address":"Ap #724-2429 Vel Street","postalZip":"12353","country":"United States"},{"customerId":445,"customerName":"Hasad Beach","phone":"1-810-426-2541","email":"faucibus@hotmail.com","address":"202-2982 Nec Rd.","postalZip":"9114 ZY","country":"United Kingdom"},{"customerId":446,"customerName":"Aphrodite Schneider","phone":"1-734-453-1155","email":"vitae.sodales.at@icloud.net","address":"3628 Aliquam Rd.","postalZip":"874155","country":"Norway"},{"customerId":447,"customerName":"Farrah Everett","phone":"1-467-236-7028","email":"ligula@hotmail.com","address":"949-7839 Sagittis. Av.","postalZip":"5495","country":"Singapore"},{"customerId":448,"customerName":"Silas Parks","phone":"1-212-565-6775","email":"suspendisse@outlook.net","address":"356-7448 Eu Rd.","postalZip":"54427","country":"Indonesia"},{"customerId":449,"customerName":"Aretha Whitney","phone":"1-133-722-0766","email":"facilisis@protonmail.edu","address":"187-5686 Urna Ave","postalZip":"664376","country":"Canada"},{"customerId":450,"customerName":"Chanda Kidd","phone":"(235) 285-8558","email":"euismod@outlook.edu","address":"P.O. Box 438, 6067 Cras Rd.","postalZip":"54444","country":"Germany"},{"customerId":451,"customerName":"Devin Nicholson","phone":"(537) 841-2636","email":"nunc@google.org","address":"Ap #727-5591 Vitae Avenue","postalZip":"9813","country":"Norway"},{"customerId":452,"customerName":"Mira Conner","phone":"1-731-932-6305","email":"sapien.gravida@outlook.net","address":"712-540 Congue Avenue","postalZip":"215067","country":"Italy"},{"customerId":453,"customerName":"Cameron Avery","phone":"1-711-110-5289","email":"mattis@google.edu","address":"962-2700 Duis Road","postalZip":"3807","country":"China"},{"customerId":454,"customerName":"Tara Mercado","phone":"(476) 424-5325","email":"vivamus@aol.edu","address":"327-4369 Feugiat. Rd.","postalZip":"68-88","country":"France"},{"customerId":455,"customerName":"Abdul Lyons","phone":"(393) 179-5521","email":"nunc.sed@yahoo.edu","address":"P.O. Box 252, 9089 Cursus St.","postalZip":"40616","country":"United Kingdom"},{"customerId":456,"customerName":"Kelsey Woods","phone":"1-598-278-2470","email":"scelerisque.neque.sed@hotmail.couk","address":"2006 Vivamus Avenue","postalZip":"177122","country":"China"},{"customerId":457,"customerName":"Ciara Russell","phone":"1-601-466-4670","email":"magna@icloud.edu","address":"P.O. Box 673, 3257 Sed, Av.","postalZip":"5876","country":"Sweden"},{"customerId":458,"customerName":"Doris Head","phone":"(458) 563-1867","email":"imperdiet.ullamcorper@yahoo.com","address":"Ap #821-2942 Lectus St.","postalZip":"67834-782","country":"Peru"},{"customerId":459,"customerName":"Simone Blackwell","phone":"(812) 501-7644","email":"ac.ipsum@protonmail.edu","address":"Ap #735-3018 Egestas Rd.","postalZip":"05571","country":"Turkey"},{"customerId":460,"customerName":"Laith Carlson","phone":"(825) 855-8848","email":"adipiscing.enim.mi@google.net","address":"8988 Amet, Street","postalZip":"8997 WU","country":"Germany"},{"customerId":461,"customerName":"Lavinia Mccall","phone":"(229) 384-0166","email":"dictum.augue@protonmail.couk","address":"687-598 Nisi. Ave","postalZip":"2805","country":"Pakistan"},{"customerId":462,"customerName":"Cynthia Lindsey","phone":"1-616-547-4933","email":"duis@yahoo.org","address":"Ap #542-1629 Dictum Rd.","postalZip":"681507","country":"Austria"},{"customerId":463,"customerName":"Mason Dennis","phone":"(630) 332-8318","email":"natoque.penatibus@yahoo.ca","address":"Ap #323-3212 Sociis Ave","postalZip":"87-746","country":"United Kingdom"},{"customerId":464,"customerName":"Rajah Osborn","phone":"1-542-883-3541","email":"ac.sem.ut@icloud.ca","address":"Ap #938-3674 Accumsan Av.","postalZip":"35041-33265","country":"Sweden"},{"customerId":465,"customerName":"Sopoline Watts","phone":"(676) 369-1232","email":"sodales@google.couk","address":"9673 Tincidunt, Rd.","postalZip":"316104","country":"Mexico"},{"customerId":466,"customerName":"Ifeoma Anthony","phone":"(616) 102-5432","email":"sapien.molestie@protonmail.ca","address":"586-5080 Eleifend Av.","postalZip":"8606","country":"Mexico"},{"customerId":467,"customerName":"Chandler Hunter","phone":"1-260-566-7096","email":"lorem@yahoo.com","address":"7734 Sed Rd.","postalZip":"3558","country":"Mexico"},{"customerId":468,"customerName":"Jackson Hernandez","phone":"1-467-786-5912","email":"orci.lobortis@outlook.couk","address":"P.O. Box 175, 4872 Eu, Av.","postalZip":"80108","country":"Canada"},{"customerId":469,"customerName":"Mark Roy","phone":"1-682-266-1885","email":"lorem@outlook.org","address":"Ap #636-8909 Velit St.","postalZip":"9763-1377","country":"New Zealand"},{"customerId":470,"customerName":"Amos Burke","phone":"(421) 955-9430","email":"ipsum.ac.mi@hotmail.edu","address":"Ap #183-2811 Nulla Rd.","postalZip":"12779","country":"United States"},{"customerId":471,"customerName":"Amethyst Reed","phone":"(551) 727-1287","email":"mi.duis@google.couk","address":"Ap #146-7303 Eu Avenue","postalZip":"635241","country":"New Zealand"},{"customerId":472,"customerName":"Josephine Skinner","phone":"(975) 427-6472","email":"egestas.hendrerit@outlook.net","address":"Ap #170-7914 Aliquam Avenue","postalZip":"6166 JN","country":"Chile"},{"customerId":473,"customerName":"Alan Sampson","phone":"1-132-527-6711","email":"eleifend.nec.malesuada@hotmail.org","address":"5271 Aptent Av.","postalZip":"4458-0172","country":"Russian Federation"},{"customerId":474,"customerName":"Samantha Rich","phone":"1-273-959-9671","email":"sed.molestie@protonmail.couk","address":"Ap #394-3258 Nascetur St.","postalZip":"5819-6511","country":"Germany"},{"customerId":475,"customerName":"Nicholas Robinson","phone":"1-462-463-0236","email":"pede@icloud.org","address":"Ap #875-8527 Cras Rd.","postalZip":"67-71","country":"Turkey"},{"customerId":476,"customerName":"Kareem Marquez","phone":"(766) 672-5176","email":"nulla.semper.tellus@hotmail.com","address":"Ap #940-2093 Commodo Ave","postalZip":"5680","country":"Costa Rica"},{"customerId":477,"customerName":"Griffin Clark","phone":"1-512-157-9846","email":"erat@protonmail.com","address":"6407 Tristique St.","postalZip":"31564","country":"France"},{"customerId":478,"customerName":"Keaton Hardin","phone":"(875) 498-4537","email":"placerat.velit@yahoo.edu","address":"347-3408 Et, Ave","postalZip":"34790","country":"United States"},{"customerId":479,"customerName":"Kyra Hawkins","phone":"(324) 476-1898","email":"mauris.eu@protonmail.net","address":"618-4767 Dolor Ave","postalZip":"6385-2734","country":"New Zealand"},{"customerId":480,"customerName":"Ivy Pugh","phone":"(174) 460-2389","email":"tempus@google.net","address":"246-3973 Aenean Avenue","postalZip":"53579-717","country":"Indonesia"},{"customerId":481,"customerName":"Henry Kirk","phone":"(343) 498-2121","email":"pellentesque.tincidunt@protonmail.com","address":"657-4860 Integer Avenue","postalZip":"143526","country":"China"},{"customerId":482,"customerName":"Harrison Kinney","phone":"(431) 984-6387","email":"nunc.sed@icloud.couk","address":"P.O. Box 722, 4947 Dignissim Avenue","postalZip":"41706","country":"Singapore"},{"customerId":483,"customerName":"Anthony Nicholson","phone":"(582) 854-4315","email":"feugiat.placerat@yahoo.edu","address":"665-1352 Ipsum Ave","postalZip":"21512","country":"Ireland"},{"customerId":484,"customerName":"Lionel Hurley","phone":"(448) 310-1278","email":"a.mi.fringilla@icloud.edu","address":"P.O. Box 945, 7019 Luctus. St.","postalZip":"74344","country":"Canada"},{"customerId":485,"customerName":"Lunea Mcleod","phone":"(482) 278-4754","email":"et.nunc.quisque@yahoo.ca","address":"Ap #198-3491 Arcu. Av.","postalZip":"418946","country":"Canada"},{"customerId":486,"customerName":"Mannix Pate","phone":"1-758-697-1711","email":"curabitur@icloud.com","address":"P.O. Box 480, 1716 Sed, St.","postalZip":"56-212","country":"Mexico"},{"customerId":487,"customerName":"Audrey Rosario","phone":"(756) 546-7628","email":"ultricies.dignissim@google.ca","address":"Ap #969-5674 Sed, St.","postalZip":"464523","country":"Turkey"},{"customerId":488,"customerName":"Regina Mcgowan","phone":"(795) 882-8157","email":"id@yahoo.com","address":"965 Magna. Avenue","postalZip":"97171","country":"Austria"},{"customerId":489,"customerName":"Fuller Huffman","phone":"1-665-460-8027","email":"suspendisse.non@outlook.couk","address":"Ap #412-6907 Mauris Avenue","postalZip":"23357","country":"Austria"},{"customerId":490,"customerName":"Knox Mclean","phone":"(652) 257-4851","email":"duis.sit.amet@yahoo.net","address":"Ap #613-8130 Scelerisque, Road","postalZip":"36640","country":"Australia"},{"customerId":491,"customerName":"Bethany Strickland","phone":"(745) 788-0145","email":"lacinia@icloud.org","address":"1365 Diam. Road","postalZip":"3548","country":"Colombia"},{"customerId":492,"customerName":"Minerva Garrett","phone":"1-327-405-1467","email":"cursus.et@hotmail.couk","address":"Ap #541-3798 A, Street","postalZip":"74183","country":"Costa Rica"},{"customerId":493,"customerName":"Callie Case","phone":"(453) 680-7347","email":"eu.nibh.vulputate@yahoo.edu","address":"543 Neque. St.","postalZip":"530125","country":"Netherlands"},{"customerId":494,"customerName":"Noelle Ellis","phone":"(558) 382-1374","email":"velit@google.edu","address":"P.O. Box 862, 280 Libero Ave","postalZip":"701885","country":"Russian Federation"},{"customerId":495,"customerName":"Paul Roth","phone":"1-754-620-5397","email":"commodo.tincidunt@google.couk","address":"P.O. Box 762, 5952 Cras Avenue","postalZip":"62712","country":"Poland"},{"customerId":496,"customerName":"Teagan Bailey","phone":"1-836-387-6271","email":"sed@yahoo.net","address":"P.O. Box 598, 4857 Pede St.","postalZip":"8046","country":"Costa Rica"},{"customerId":497,"customerName":"Lila Goff","phone":"(887) 136-9291","email":"nec@aol.couk","address":"Ap #569-661 Elit, Road","postalZip":"37427","country":"Mexico"},{"customerId":498,"customerName":"Chancellor Richards","phone":"1-828-651-5128","email":"dui@aol.edu","address":"P.O. Box 765, 9239 Integer Road","postalZip":"k2K 7C5","country":"Austria"},{"customerId":499,"customerName":"Inga Harvey","phone":"(240) 782-4863","email":"est.tempor@outlook.ca","address":"396-3585 Pellentesque, Road","postalZip":"55929-261","country":"Poland"},{"customerId":500,"customerName":"Glenna Norris","phone":"1-927-316-4142","email":"nunc@google.net","address":"P.O. Box 929, 9946 Dis Rd.","postalZip":"8563","country":"Brazil"},{"customerId":501,"customerName":"Nyssa Stephenson","phone":"(488) 446-9193","email":"nisi.sem@aol.net","address":"651-4051 Nunc Rd.","postalZip":"143764","country":"Canada"},{"customerId":502,"customerName":"Harrison Kirk","phone":"(673) 560-0943","email":"sociis@icloud.couk","address":"788-5989 Dolor. Rd.","postalZip":"59P 2S4","country":"United States"},{"customerId":503,"customerName":"Adara Beach","phone":"1-246-878-6774","email":"lectus@protonmail.net","address":"135-3892 Turpis Rd.","postalZip":"435146","country":"China"},{"customerId":504,"customerName":"Connor Collier","phone":"1-880-821-9747","email":"cras.pellentesque.sed@outlook.net","address":"426-8911 Enim Rd.","postalZip":"57684","country":"Canada"},{"customerId":505,"customerName":"Hadassah Marshall","phone":"(301) 783-2235","email":"fermentum.vel@icloud.ca","address":"519-7138 Mauris, Rd.","postalZip":"3874 XP","country":"Russian Federation"},{"customerId":506,"customerName":"Veronica O'brien","phone":"1-375-561-3633","email":"tincidunt.orci@protonmail.ca","address":"P.O. Box 191, 9421 Convallis Avenue","postalZip":"27283","country":"Brazil"},{"customerId":507,"customerName":"Raven Valentine","phone":"(223) 657-8582","email":"vehicula.et@hotmail.ca","address":"125-8482 Sapien. Avenue","postalZip":"37883","country":"Netherlands"},{"customerId":508,"customerName":"Britanney Rollins","phone":"(168) 257-6713","email":"ante.nunc.mauris@aol.org","address":"286-6279 Donec Rd.","postalZip":"51218","country":"Nigeria"},{"customerId":509,"customerName":"Valentine Koch","phone":"(321) 147-3456","email":"risus@icloud.net","address":"Ap #456-4172 Neque Rd.","postalZip":"21961","country":"Italy"},{"customerId":510,"customerName":"Anika Best","phone":"(977) 515-1763","email":"ligula.aenean@icloud.edu","address":"Ap #251-8905 Aliquet Street","postalZip":"82869-325","country":"France"},{"customerId":511,"customerName":"MacKensie Mendoza","phone":"1-179-987-4866","email":"at@protonmail.couk","address":"393 Etiam Street","postalZip":"353482","country":"Poland"},{"customerId":512,"customerName":"Kelly Marshall","phone":"1-577-874-3916","email":"augue.id@icloud.org","address":"623-343 Facilisis Rd.","postalZip":"6315","country":"Russian Federation"},{"customerId":513,"customerName":"Hedda Mcknight","phone":"1-417-992-7045","email":"tincidunt.nunc.ac@hotmail.com","address":"Ap #317-6393 Malesuada Road","postalZip":"46362","country":"Singapore"},{"customerId":514,"customerName":"Joseph Fields","phone":"1-213-582-5211","email":"libero.est.congue@yahoo.org","address":"296-8925 Tellus Road","postalZip":"87823","country":"Peru"},{"customerId":515,"customerName":"Madeline Mcdonald","phone":"1-658-662-6768","email":"nec@aol.org","address":"Ap #781-9617 Et Av.","postalZip":"72278","country":"Spain"},{"customerId":516,"customerName":"Uriah Mathews","phone":"(605) 535-2516","email":"pede.cum@yahoo.ca","address":"769-6678 Praesent St.","postalZip":"05172","country":"Mexico"},{"customerId":517,"customerName":"Mannix Watson","phone":"1-212-818-9062","email":"est@outlook.org","address":"Ap #380-1306 Magna Rd.","postalZip":"23-450","country":"Colombia"},{"customerId":518,"customerName":"Shafira Lawson","phone":"1-862-248-6621","email":"lectus.sit@outlook.com","address":"280-5710 Vestibulum Rd.","postalZip":"917435","country":"Ukraine"},{"customerId":519,"customerName":"Hyatt Roberts","phone":"1-475-223-8566","email":"nec@google.couk","address":"686-8777 Sit Ave","postalZip":"28241","country":"United Kingdom"},{"customerId":520,"customerName":"Nathan Ferguson","phone":"1-593-743-5347","email":"dictum.augue@outlook.net","address":"Ap #403-6631 Tortor. Rd.","postalZip":"7747","country":"Sweden"},{"customerId":521,"customerName":"Ciara Estes","phone":"(373) 665-9438","email":"sed.sem@protonmail.org","address":"Ap #608-2106 Molestie Rd.","postalZip":"365735","country":"Netherlands"},{"customerId":522,"customerName":"Irma Joseph","phone":"1-250-492-4536","email":"sed@yahoo.org","address":"778-7888 Id, Av.","postalZip":"7528","country":"Turkey"},{"customerId":523,"customerName":"Felix Melendez","phone":"(250) 270-7740","email":"mi.ac.mattis@yahoo.com","address":"P.O. Box 965, 2381 Eget St.","postalZip":"36470","country":"Philippines"},{"customerId":524,"customerName":"Blaze Wright","phone":"(315) 172-3485","email":"gravida@google.org","address":"8120 Nisl Ave","postalZip":"776259","country":"Poland"},{"customerId":525,"customerName":"Teegan Hanson","phone":"(547) 593-2365","email":"vulputate.nisi@hotmail.couk","address":"997-5345 Donec Avenue","postalZip":"54164","country":"Russian Federation"},{"customerId":526,"customerName":"Kalia Benjamin","phone":"1-827-847-1767","email":"nulla@yahoo.couk","address":"P.O. Box 874, 5418 Cursus Avenue","postalZip":"27558-72291","country":"Poland"},{"customerId":527,"customerName":"Hakeem Hunter","phone":"1-798-638-1667","email":"facilisis.suspendisse@google.net","address":"Ap #263-6555 Nascetur Ave","postalZip":"UY17 6RB","country":"United Kingdom"},{"customerId":528,"customerName":"Ginger Brooks","phone":"1-792-783-8388","email":"phasellus.fermentum.convallis@google.ca","address":"Ap #499-2572 Sit Street","postalZip":"12457","country":"China"},{"customerId":529,"customerName":"Lucius Pena","phone":"1-192-813-4825","email":"phasellus@icloud.couk","address":"830-4696 Eleifend Avenue","postalZip":"4126","country":"Germany"},{"customerId":530,"customerName":"Jayme Melendez","phone":"1-712-732-1982","email":"eu.turpis@google.net","address":"2860 Et, St.","postalZip":"648327","country":"Austria"},{"customerId":531,"customerName":"Jeanette Fisher","phone":"(280) 695-8221","email":"eu.tellus.eu@icloud.com","address":"Ap #171-4982 Dolor. Rd.","postalZip":"85445","country":"South Africa"},{"customerId":532,"customerName":"Cedric Gates","phone":"(393) 170-5143","email":"sit.amet@outlook.com","address":"6696 Amet, Rd.","postalZip":"8982","country":"Russian Federation"},{"customerId":533,"customerName":"Baxter Jacobs","phone":"(853) 758-7675","email":"neque.sed@outlook.ca","address":"P.O. Box 835, 4149 Et St.","postalZip":"J72 5EB","country":"Ireland"},{"customerId":534,"customerName":"Davis Conner","phone":"(416) 253-4837","email":"in.ornare.sagittis@icloud.couk","address":"643-4536 Ut Road","postalZip":"8920","country":"China"},{"customerId":535,"customerName":"Leilani Newman","phone":"1-787-122-5970","email":"tincidunt@aol.org","address":"Ap #662-9508 Nunc Avenue","postalZip":"729769","country":"Pakistan"},{"customerId":536,"customerName":"Driscoll Ochoa","phone":"1-242-343-0177","email":"fusce.diam.nunc@hotmail.net","address":"P.O. Box 812, 2146 Eget, Rd.","postalZip":"63523","country":"Ukraine"},{"customerId":537,"customerName":"Victoria Mcdonald","phone":"(570) 557-7966","email":"est@yahoo.edu","address":"913-7220 Placerat Avenue","postalZip":"14343","country":"Peru"},{"customerId":538,"customerName":"Wallace Rollins","phone":"(381) 193-2399","email":"felis@hotmail.net","address":"649-3006 Feugiat. Ave","postalZip":"31625","country":"Indonesia"},{"customerId":539,"customerName":"Yasir Fitzgerald","phone":"1-195-178-4435","email":"dignissim.pharetra@icloud.org","address":"Ap #190-296 Curae Avenue","postalZip":"67-37","country":"Mexico"},{"customerId":540,"customerName":"Jacqueline Olsen","phone":"1-562-756-8492","email":"metus@outlook.ca","address":"109-8931 Interdum Ave","postalZip":"731498","country":"Austria"},{"customerId":541,"customerName":"Ciaran Mcguire","phone":"(946) 115-4129","email":"erat@protonmail.org","address":"917-832 A, Av.","postalZip":"279857","country":"South Korea"},{"customerId":542,"customerName":"Dale Sargent","phone":"1-916-558-6909","email":"posuere.cubilia.curae@hotmail.couk","address":"896-6396 Cursus Rd.","postalZip":"17231","country":"Canada"},{"customerId":543,"customerName":"Maite Byers","phone":"1-626-684-6956","email":"odio.phasellus.at@hotmail.com","address":"198-5028 Donec Avenue","postalZip":"A4N 9K2","country":"Nigeria"},{"customerId":544,"customerName":"Evelyn Kidd","phone":"1-611-680-5685","email":"morbi.neque@icloud.org","address":"4637 Dolor Street","postalZip":"61660","country":"Canada"},{"customerId":545,"customerName":"Beverly Kennedy","phone":"(763) 572-2412","email":"arcu.vestibulum@google.couk","address":"9133 Pharetra Rd.","postalZip":"7452","country":"China"},{"customerId":546,"customerName":"Desiree Munoz","phone":"1-836-604-3260","email":"euismod.mauris@hotmail.com","address":"635-5531 Rutrum. St.","postalZip":"112837","country":"Australia"},{"customerId":547,"customerName":"Scott Young","phone":"1-415-751-2421","email":"nisi.sem@google.org","address":"Ap #768-7965 Id Road","postalZip":"DS8 2WM","country":"Chile"},{"customerId":548,"customerName":"Fritz Guthrie","phone":"(902) 730-6354","email":"quis.accumsan@outlook.ca","address":"Ap #810-7058 Tortor. Rd.","postalZip":"3463","country":"Indonesia"},{"customerId":549,"customerName":"Delilah Olson","phone":"1-935-206-6679","email":"molestie.sed@outlook.couk","address":"749-4811 Elit, Avenue","postalZip":"989687","country":"Italy"},{"customerId":550,"customerName":"Ocean Hammond","phone":"(625) 612-8475","email":"mauris.eu@google.net","address":"P.O. Box 627, 8827 Dignissim Av.","postalZip":"43-273","country":"Vietnam"},{"customerId":551,"customerName":"Yetta Estrada","phone":"(479) 924-2674","email":"pretium.neque@outlook.ca","address":"Ap #159-4500 Sed St.","postalZip":"754962","country":"Italy"},{"customerId":552,"customerName":"Ora Farley","phone":"1-677-747-5388","email":"nullam.scelerisque.neque@aol.net","address":"371-7270 Quis St.","postalZip":"505824","country":"South Korea"},{"customerId":553,"customerName":"Garrett Smith","phone":"(618) 432-5482","email":"tellus.non@hotmail.net","address":"427-2190 Bibendum Street","postalZip":"214110","country":"Chile"},{"customerId":554,"customerName":"Wyoming Vinson","phone":"1-887-555-4779","email":"rhoncus.proin.nisl@icloud.ca","address":"P.O. Box 562, 5139 Tincidunt Street","postalZip":"455286","country":"Canada"},{"customerId":555,"customerName":"Bert Poole","phone":"(662) 763-9768","email":"feugiat.lorem.ipsum@aol.couk","address":"625-9145 Eget, Av.","postalZip":"7734","country":"Ireland"},{"customerId":556,"customerName":"Octavius Leach","phone":"1-325-773-2762","email":"sodales.elit@google.ca","address":"3879 Pellentesque St.","postalZip":"546511","country":"United States"},{"customerId":557,"customerName":"Tana Kidd","phone":"1-825-533-5192","email":"nullam.vitae.diam@aol.org","address":"Ap #313-1958 Ullamcorper St.","postalZip":"5298","country":"Pakistan"},{"customerId":558,"customerName":"Jacqueline Olsen","phone":"(433) 134-1288","email":"suspendisse.non@icloud.couk","address":"Ap #413-9184 Rhoncus. Street","postalZip":"6812","country":"Austria"},{"customerId":559,"customerName":"Marvin Gutierrez","phone":"1-617-681-2368","email":"placerat.cras@protonmail.edu","address":"879-1720 Risus. Avenue","postalZip":"88-455","country":"South Korea"},{"customerId":560,"customerName":"Noelani Cooke","phone":"1-539-824-3543","email":"tortor.integer@yahoo.net","address":"P.O. Box 336, 5241 Euismod Rd.","postalZip":"5518","country":"Indonesia"},{"customerId":561,"customerName":"Dorian Gallegos","phone":"(920) 221-2964","email":"est.arcu.ac@google.org","address":"Ap #640-2766 Dapibus Street","postalZip":"4182","country":"Vietnam"},{"customerId":562,"customerName":"Dalton Deleon","phone":"1-147-904-5687","email":"at.velit.cras@yahoo.couk","address":"Ap #520-8053 Etiam Street","postalZip":"13815","country":"India"},{"customerId":563,"customerName":"Aquila Hardy","phone":"1-892-471-1741","email":"sociosqu.ad.litora@protonmail.net","address":"163-4575 Mi, St.","postalZip":"358622","country":"Costa Rica"},{"customerId":564,"customerName":"Hilel Velasquez","phone":"(360) 462-0252","email":"ac.orci@aol.couk","address":"Ap #101-5936 Nonummy. Street","postalZip":"1330 HL","country":"Turkey"},{"customerId":565,"customerName":"Gray Adkins","phone":"(623) 381-8277","email":"ac.mattis@hotmail.couk","address":"Ap #502-8134 Ultrices. St.","postalZip":"85-604","country":"Belgium"},{"customerId":566,"customerName":"Maisie Figueroa","phone":"(362) 422-5624","email":"aenean.eget.magna@aol.com","address":"949 Dapibus St.","postalZip":"JD21 7CN","country":"China"},{"customerId":567,"customerName":"Wilma Waller","phone":"(628) 453-8081","email":"fringilla.donec@outlook.com","address":"999-1556 Consequat St.","postalZip":"2450","country":"United States"},{"customerId":568,"customerName":"Azalia Jefferson","phone":"1-388-342-7824","email":"at@outlook.edu","address":"Ap #997-4777 Auctor Rd.","postalZip":"631737","country":"New Zealand"},{"customerId":569,"customerName":"Jasmine Paul","phone":"1-263-736-6933","email":"natoque@protonmail.couk","address":"Ap #555-9404 Massa. Street","postalZip":"874231","country":"South Korea"},{"customerId":570,"customerName":"Dominic Reyes","phone":"1-256-778-6437","email":"curabitur@icloud.net","address":"Ap #760-9437 Pharetra. St.","postalZip":"20519","country":"Italy"},{"customerId":571,"customerName":"Samantha Cooke","phone":"1-434-524-2483","email":"egestas@outlook.net","address":"Ap #368-4676 Mauris. Rd.","postalZip":"17494","country":"Germany"},{"customerId":572,"customerName":"Shaine Gutierrez","phone":"1-434-746-3559","email":"cras@hotmail.couk","address":"521-7500 Vel, Ave","postalZip":"40094-65025","country":"Canada"},{"customerId":573,"customerName":"Gareth Merritt","phone":"(232) 648-2262","email":"eu.odio.phasellus@google.ca","address":"179-8793 Aliquet. Ave","postalZip":"80722-03176","country":"Vietnam"},{"customerId":574,"customerName":"Grant Spears","phone":"(446) 575-1687","email":"natoque.penatibus@icloud.net","address":"P.O. Box 882, 5281 Sed Av.","postalZip":"Y1X 6C2","country":"Indonesia"},{"customerId":575,"customerName":"Fatima Briggs","phone":"(817) 466-2347","email":"mauris@google.com","address":"Ap #499-6101 Nisl Rd.","postalZip":"685408","country":"Austria"},{"customerId":576,"customerName":"Adena Jenkins","phone":"1-827-384-4189","email":"phasellus@icloud.net","address":"639-4162 Fermentum Ave","postalZip":"S0T 7M7","country":"Indonesia"},{"customerId":577,"customerName":"Daniel Gould","phone":"1-642-838-4917","email":"elementum.sem@hotmail.com","address":"Ap #259-3320 Ornare, Road","postalZip":"3254","country":"Nigeria"},{"customerId":578,"customerName":"Teegan Ballard","phone":"(775) 167-9434","email":"eget.metus@yahoo.org","address":"7074 Ultrices Street","postalZip":"492735","country":"United States"},{"customerId":579,"customerName":"Mira Simpson","phone":"1-784-686-7061","email":"luctus@icloud.com","address":"393-8282 Arcu Av.","postalZip":"75566","country":"Colombia"},{"customerId":580,"customerName":"Orla Blackburn","phone":"(760) 519-1668","email":"lobortis@outlook.org","address":"Ap #225-2349 Lorem Rd.","postalZip":"31-275","country":"Indonesia"},{"customerId":581,"customerName":"Libby Ayala","phone":"1-881-348-0370","email":"litora@outlook.net","address":"944-9556 Mauris Street","postalZip":"64394","country":"France"},{"customerId":582,"customerName":"Fleur Bryant","phone":"1-570-373-5022","email":"quis.lectus@google.edu","address":"Ap #587-2992 Fusce St.","postalZip":"88-673","country":"South Africa"},{"customerId":583,"customerName":"Silas Solomon","phone":"1-687-266-0815","email":"ipsum.phasellus.vitae@protonmail.edu","address":"Ap #301-1947 Tincidunt Av.","postalZip":"5684","country":"France"},{"customerId":584,"customerName":"Ferdinand Huff","phone":"1-664-644-8882","email":"pellentesque.habitant.morbi@outlook.net","address":"Ap #561-9750 Lacinia Road","postalZip":"0825","country":"Chile"},{"customerId":585,"customerName":"Leandra Diaz","phone":"(240) 640-0661","email":"et.arcu@yahoo.org","address":"P.O. Box 267, 7684 Dui. Avenue","postalZip":"365186","country":"Australia"},{"customerId":586,"customerName":"Minerva Harrington","phone":"(754) 263-5758","email":"lorem.eu@outlook.net","address":"P.O. Box 451, 1025 Proin Road","postalZip":"764417","country":"Colombia"},{"customerId":587,"customerName":"Thomas Simpson","phone":"1-208-772-3126","email":"luctus.aliquet.odio@hotmail.couk","address":"P.O. Box 703, 5490 Adipiscing Rd.","postalZip":"A2X 5G8","country":"Russian Federation"},{"customerId":588,"customerName":"Erin Henson","phone":"1-350-661-7063","email":"pellentesque.ultricies@outlook.ca","address":"2751 Cum Avenue","postalZip":"4198","country":"Sweden"},{"customerId":589,"customerName":"Calista Scott","phone":"1-620-596-3205","email":"diam.eu@protonmail.edu","address":"Ap #129-5858 Ligula. Rd.","postalZip":"3724-8534","country":"Australia"},{"customerId":590,"customerName":"Bruno Stewart","phone":"1-553-168-7857","email":"gravida.sagittis@protonmail.couk","address":"702-8683 Vulputate St.","postalZip":"144072","country":"Italy"},{"customerId":591,"customerName":"Bianca Aguirre","phone":"(331) 966-6162","email":"aliquam.adipiscing@icloud.net","address":"458-2329 Luctus, Road","postalZip":"85566-704","country":"South Korea"},{"customerId":592,"customerName":"Beverly Rios","phone":"(601) 583-8069","email":"lacus@protonmail.couk","address":"Ap #636-9265 Duis Road","postalZip":"2672-8608","country":"United States"},{"customerId":593,"customerName":"Roth Phillips","phone":"1-734-760-8340","email":"nec@google.org","address":"1107 Ac Avenue","postalZip":"752238","country":"Philippines"},{"customerId":594,"customerName":"Kasimir Gibson","phone":"(776) 752-1682","email":"quis.arcu@icloud.org","address":"P.O. Box 109, 5024 Aliquet. Avenue","postalZip":"34655","country":"United Kingdom"},{"customerId":595,"customerName":"Tasha Franco","phone":"1-621-287-0694","email":"sodales@aol.org","address":"207-3833 Felis. St.","postalZip":"20171","country":"Belgium"},{"customerId":596,"customerName":"Keith Price","phone":"(493) 756-7826","email":"donec.elementum@yahoo.net","address":"736-8931 Tempus, Rd.","postalZip":"24195","country":"United States"},{"customerId":597,"customerName":"Lara Goodman","phone":"(494) 243-3514","email":"nascetur.ridiculus.mus@google.couk","address":"573-4759 Morbi Rd.","postalZip":"06169","country":"Ireland"},{"customerId":598,"customerName":"Latifah Carney","phone":"(821) 755-4774","email":"lectus.sit.amet@icloud.couk","address":"587 Bibendum Ave","postalZip":"394378","country":"Chile"},{"customerId":599,"customerName":"Marshall O'donnell","phone":"(757) 348-3863","email":"posuere.enim.nisl@yahoo.couk","address":"319-3666 Nisi St.","postalZip":"30151","country":"Peru"},{"customerId":600,"customerName":"Holmes Fry","phone":"(912) 516-3702","email":"mauris.blandit.mattis@google.edu","address":"952-4860 Nec Avenue","postalZip":"44746","country":"Singapore"},{"customerId":601,"customerName":"Addison Deleon","phone":"(212) 482-6884","email":"suscipit@google.net","address":"Ap #371-3261 Netus St.","postalZip":"215748","country":"Chile"},{"customerId":602,"customerName":"Emmanuel Padilla","phone":"1-798-831-9342","email":"velit.quisque@protonmail.org","address":"Ap #102-5764 Enim Street","postalZip":"0368","country":"Spain"},{"customerId":603,"customerName":"Reese Bowman","phone":"1-148-532-8595","email":"ornare.sagittis@icloud.ca","address":"Ap #279-411 Pede Av.","postalZip":"R1H 5M3","country":"Sweden"},{"customerId":604,"customerName":"Veronica Patel","phone":"1-877-740-5385","email":"nibh.phasellus@google.com","address":"P.O. Box 673, 4242 Praesent St.","postalZip":"606153","country":"Australia"},{"customerId":605,"customerName":"Scarlet Reilly","phone":"1-182-353-3428","email":"commodo.hendrerit@protonmail.edu","address":"Ap #827-4924 Neque St.","postalZip":"738494","country":"Norway"},{"customerId":606,"customerName":"Gwendolyn Mathews","phone":"1-508-473-4884","email":"accumsan@outlook.edu","address":"645-2639 Arcu. St.","postalZip":"15178","country":"Austria"},{"customerId":607,"customerName":"Isabella Rios","phone":"(246) 593-1542","email":"arcu.et@yahoo.edu","address":"P.O. Box 370, 2215 Erat Ave","postalZip":"T0C 8Z7","country":"Canada"},{"customerId":608,"customerName":"Lucas Mendez","phone":"1-425-765-6172","email":"vehicula@aol.ca","address":"P.O. Box 897, 1093 Natoque Av.","postalZip":"1224","country":"Singapore"},{"customerId":609,"customerName":"Roth Navarro","phone":"1-547-632-4738","email":"condimentum.donec@protonmail.net","address":"Ap #585-2964 Nunc St.","postalZip":"29266","country":"Costa Rica"},{"customerId":610,"customerName":"Zahir Hart","phone":"(297) 368-8321","email":"faucibus.leo@hotmail.edu","address":"5085 A Rd.","postalZip":"164438","country":"Spain"},{"customerId":611,"customerName":"Stuart Patton","phone":"(251) 356-9123","email":"in.cursus.et@protonmail.ca","address":"2626 Posuere St.","postalZip":"5630","country":"South Africa"},{"customerId":612,"customerName":"Acton Mcclure","phone":"1-547-240-2255","email":"eget.varius@aol.edu","address":"483-2879 Morbi St.","postalZip":"WW8 8AE","country":"United Kingdom"},{"customerId":613,"customerName":"Kirk Glass","phone":"(427) 981-2115","email":"aenean.egestas@hotmail.com","address":"136-6488 Vel Ave","postalZip":"156088","country":"Philippines"},{"customerId":614,"customerName":"Shaine Doyle","phone":"(323) 236-1058","email":"odio.auctor@google.ca","address":"821-8566 Vivamus Rd.","postalZip":"68-46","country":"Netherlands"},{"customerId":615,"customerName":"Charissa Nelson","phone":"(101) 779-7370","email":"est.congue@protonmail.org","address":"P.O. Box 750, 4014 Sit Av.","postalZip":"91652","country":"Poland"},{"customerId":616,"customerName":"Kylan Hess","phone":"1-636-781-3576","email":"erat.vel@icloud.com","address":"5559 Est. St.","postalZip":"43166","country":"Belgium"},{"customerId":617,"customerName":"Oliver Kidd","phone":"(774) 826-1866","email":"magna.malesuada@protonmail.couk","address":"5401 Felis Ave","postalZip":"1612","country":"Turkey"},{"customerId":618,"customerName":"Reuben Weiss","phone":"(446) 844-1200","email":"donec@outlook.net","address":"P.O. Box 963, 2495 Cum Ave","postalZip":"7660","country":"New Zealand"},{"customerId":619,"customerName":"Urielle Hoover","phone":"(434) 254-0953","email":"enim.nec.tempus@yahoo.couk","address":"110-3560 Vel St.","postalZip":"3673","country":"Pakistan"},{"customerId":620,"customerName":"Herrod Salinas","phone":"(669) 771-1778","email":"iaculis.lacus.pede@protonmail.org","address":"225 Vestibulum St.","postalZip":"1120","country":"Chile"},{"customerId":621,"customerName":"Hilel Dawson","phone":"1-123-123-2258","email":"aliquam.eros@google.edu","address":"4536 Euismod Av.","postalZip":"1625 LF","country":"Germany"},{"customerId":622,"customerName":"MacKenzie Goodwin","phone":"(564) 222-3923","email":"luctus@aol.org","address":"Ap #703-4059 Sed St.","postalZip":"12821","country":"Nigeria"},{"customerId":623,"customerName":"Charles Alvarado","phone":"1-427-285-1374","email":"imperdiet.nec.leo@google.edu","address":"Ap #705-1155 Lobortis St.","postalZip":"AW89 4SR","country":"Canada"},{"customerId":624,"customerName":"Wallace Pacheco","phone":"(772) 608-4537","email":"eu.euismod.ac@protonmail.net","address":"989-328 Dictum Ave","postalZip":"SG6M 6PC","country":"India"},{"customerId":625,"customerName":"Alika Hopkins","phone":"(430) 434-4238","email":"lobortis.quis.pede@outlook.com","address":"369-2013 Vestibulum Av.","postalZip":"43017","country":"China"},{"customerId":626,"customerName":"Nigel Sanchez","phone":"(348) 575-6596","email":"aliquet.diam@yahoo.couk","address":"Ap #770-6731 Viverra. Av.","postalZip":"45454","country":"Sweden"},{"customerId":627,"customerName":"Serina Mcdaniel","phone":"(211) 826-1378","email":"non.feugiat.nec@google.ca","address":"380-2587 Tincidunt Av.","postalZip":"834268","country":"Singapore"},{"customerId":628,"customerName":"Mary Chandler","phone":"1-596-179-8727","email":"egestas.a@yahoo.net","address":"Ap #644-2525 Nunc. St.","postalZip":"57885","country":"Nigeria"},{"customerId":629,"customerName":"Brennan Orr","phone":"(897) 271-4681","email":"nam@yahoo.net","address":"4038 Ac, Ave","postalZip":"0458-4457","country":"Turkey"},{"customerId":630,"customerName":"Kaseem Bray","phone":"1-232-894-6176","email":"aenean@aol.com","address":"177-2498 Libero. Av.","postalZip":"26777-65688","country":"Chile"},{"customerId":631,"customerName":"Perry Graham","phone":"(879) 766-4653","email":"feugiat.placerat@icloud.com","address":"P.O. Box 246, 2060 Enim Road","postalZip":"744244","country":"United States"},{"customerId":632,"customerName":"Alea Valdez","phone":"1-461-710-7814","email":"diam.vel@protonmail.com","address":"110-6708 Auctor Avenue","postalZip":"183890","country":"Vietnam"},{"customerId":633,"customerName":"Regan Chan","phone":"(363) 671-1723","email":"orci@yahoo.edu","address":"P.O. Box 264, 9041 Phasellus St.","postalZip":"81183","country":"Ukraine"},{"customerId":634,"customerName":"Joseph Vaughan","phone":"1-366-717-1684","email":"tempor.arcu.vestibulum@aol.com","address":"P.O. Box 798, 7326 Nunc Street","postalZip":"20167","country":"Ukraine"},{"customerId":635,"customerName":"Amela Waller","phone":"1-840-538-2183","email":"ornare.facilisis@protonmail.net","address":"864-3029 Luctus Ave","postalZip":"31322","country":"Netherlands"},{"customerId":636,"customerName":"Quamar Frederick","phone":"(179) 524-8652","email":"cras@yahoo.ca","address":"Ap #931-4100 Nunc Ave","postalZip":"47297","country":"Belgium"},{"customerId":637,"customerName":"Burton Nixon","phone":"1-737-195-4332","email":"dui.suspendisse.ac@google.net","address":"P.O. Box 106, 3415 Nunc Street","postalZip":"18416","country":"Canada"},{"customerId":638,"customerName":"John Mcknight","phone":"1-545-501-7021","email":"aliquam.ultrices@hotmail.edu","address":"Ap #217-8190 Malesuada Road","postalZip":"744443","country":"Turkey"},{"customerId":639,"customerName":"Abigail Melton","phone":"(147) 938-2385","email":"rutrum@hotmail.ca","address":"282-5786 Senectus Rd.","postalZip":"57910","country":"Pakistan"},{"customerId":640,"customerName":"Tanner Wilcox","phone":"(798) 267-7743","email":"accumsan@outlook.net","address":"690-1638 A, Avenue","postalZip":"2488","country":"Netherlands"},{"customerId":641,"customerName":"Callum Reid","phone":"(156) 229-7883","email":"mattis.velit.justo@google.com","address":"3702 Sit Av.","postalZip":"54-28","country":"Austria"},{"customerId":642,"customerName":"Cain Galloway","phone":"(363) 249-6466","email":"id@aol.com","address":"Ap #842-8547 Aenean Street","postalZip":"58954-577","country":"United Kingdom"},{"customerId":643,"customerName":"Remedios Mason","phone":"1-774-284-8441","email":"posuere.vulputate@aol.edu","address":"458-2050 Posuere Road","postalZip":"701631","country":"New Zealand"},{"customerId":644,"customerName":"Deanna Cooper","phone":"1-782-834-4857","email":"tempor@icloud.ca","address":"464-4869 Adipiscing, Rd.","postalZip":"8445","country":"Germany"},{"customerId":645,"customerName":"Steven Woodward","phone":"1-523-213-6682","email":"eu.tellus.eu@aol.couk","address":"P.O. Box 369, 838 Eget, Ave","postalZip":"412482","country":"Norway"},{"customerId":646,"customerName":"Irma West","phone":"1-651-575-1113","email":"orci@hotmail.ca","address":"337-6977 Vivamus Rd.","postalZip":"7325","country":"South Africa"},{"customerId":647,"customerName":"Hall Jordan","phone":"1-987-762-8380","email":"praesent.interdum.ligula@yahoo.net","address":"8740 Tortor, Rd.","postalZip":"972310","country":"Chile"},{"customerId":648,"customerName":"Hammett Hoover","phone":"(543) 389-3255","email":"eros@outlook.org","address":"873-6316 Aptent St.","postalZip":"34254","country":"Russian Federation"},{"customerId":649,"customerName":"Jared Vazquez","phone":"(124) 883-2424","email":"sit@icloud.com","address":"145-4203 Ac St.","postalZip":"08126","country":"Costa Rica"},{"customerId":650,"customerName":"Stuart Solis","phone":"1-785-565-7532","email":"elit@protonmail.net","address":"Ap #773-7339 Ut Avenue","postalZip":"459651","country":"Pakistan"},{"customerId":651,"customerName":"Ezra Randall","phone":"1-286-196-2577","email":"nulla.aliquet.proin@aol.ca","address":"361-3578 Non, St.","postalZip":"3974152","country":"Indonesia"},{"customerId":652,"customerName":"Rosalyn Cline","phone":"(445) 586-6211","email":"lacus.quisque.imperdiet@protonmail.edu","address":"Ap #521-8621 Nullam St.","postalZip":"88690-78194","country":"South Africa"},{"customerId":653,"customerName":"Levi Montoya","phone":"1-388-255-0464","email":"erat.etiam@google.net","address":"416 Gravida Rd.","postalZip":"18-34","country":"Italy"},{"customerId":654,"customerName":"Carissa Simpson","phone":"1-753-856-2484","email":"consequat@outlook.com","address":"548-646 Molestie Rd.","postalZip":"3661","country":"United Kingdom"},{"customerId":655,"customerName":"Justina Spencer","phone":"1-511-332-1866","email":"hendrerit.neque.in@yahoo.com","address":"5947 Ullamcorper Ave","postalZip":"603471","country":"France"},{"customerId":656,"customerName":"Brandon Shaw","phone":"1-730-528-0576","email":"mauris@yahoo.net","address":"4160 Mattis. St.","postalZip":"47742","country":"Costa Rica"},{"customerId":657,"customerName":"Edward Vang","phone":"1-715-387-4508","email":"nonummy@protonmail.couk","address":"Ap #440-5219 Phasellus Rd.","postalZip":"A23 2QR","country":"Nigeria"},{"customerId":658,"customerName":"Aurora Grimes","phone":"(515) 242-7709","email":"proin.velit@protonmail.org","address":"Ap #597-539 Consectetuer Av.","postalZip":"22090","country":"Brazil"},{"customerId":659,"customerName":"Benedict Stewart","phone":"1-541-537-9186","email":"cubilia.curae.donec@outlook.couk","address":"371-3926 Tincidunt Rd.","postalZip":"58487","country":"Nigeria"},{"customerId":660,"customerName":"Ali Greer","phone":"1-752-415-4598","email":"cras@google.org","address":"Ap #476-6926 Sem. Rd.","postalZip":"23072","country":"Vietnam"},{"customerId":661,"customerName":"Amanda Stout","phone":"1-714-859-7121","email":"in.lorem@outlook.net","address":"158-4725 Metus Road","postalZip":"60379-412","country":"Singapore"},{"customerId":662,"customerName":"Zephania Melton","phone":"1-162-285-7203","email":"vitae@icloud.com","address":"Ap #508-2203 Dolor Av.","postalZip":"752838","country":"United States"},{"customerId":663,"customerName":"Ila Wells","phone":"(408) 892-5835","email":"augue.scelerisque.mollis@outlook.couk","address":"169-2929 Dictum Street","postalZip":"6523","country":"Ireland"},{"customerId":664,"customerName":"Zelda Osborne","phone":"1-694-428-8215","email":"pellentesque.massa@protonmail.ca","address":"957-3193 Vitae Ave","postalZip":"63838","country":"Turkey"},{"customerId":665,"customerName":"Hayfa Morse","phone":"(504) 553-1070","email":"sit@google.ca","address":"101-6493 Nisl. Rd.","postalZip":"42781","country":"South Korea"},{"customerId":666,"customerName":"Laura Pearson","phone":"1-516-646-4418","email":"leo@yahoo.org","address":"Ap #279-8832 Fusce Rd.","postalZip":"184383","country":"Russian Federation"},{"customerId":667,"customerName":"Germaine Browning","phone":"(467) 471-6433","email":"donec@aol.org","address":"9800 Dolor St.","postalZip":"345658","country":"Brazil"},{"customerId":668,"customerName":"Colleen Gay","phone":"(173) 837-5983","email":"aliquam.adipiscing.lobortis@aol.org","address":"854-9919 Diam Rd.","postalZip":"439477","country":"Singapore"},{"customerId":669,"customerName":"Jin Gomez","phone":"1-508-953-4683","email":"scelerisque.scelerisque@outlook.com","address":"Ap #492-9808 Lorem Street","postalZip":"50513","country":"Austria"},{"customerId":670,"customerName":"Beverly O'Neill","phone":"(424) 629-8591","email":"sodales.elit@icloud.edu","address":"3160 Nulla Av.","postalZip":"M08 5IQ","country":"Canada"},{"customerId":671,"customerName":"Abel Wilkerson","phone":"1-828-866-8232","email":"rhoncus.nullam@protonmail.edu","address":"918-1271 Enim, Street","postalZip":"726762","country":"Italy"},{"customerId":672,"customerName":"Serena Olson","phone":"(497) 648-1175","email":"neque.sed.sem@aol.couk","address":"Ap #599-5709 Lorem Ave","postalZip":"7852","country":"Belgium"},{"customerId":673,"customerName":"Melodie Banks","phone":"(981) 482-2153","email":"ipsum.donec@yahoo.org","address":"304-4015 Nulla Street","postalZip":"66745-17125","country":"Belgium"},{"customerId":674,"customerName":"Samuel Padilla","phone":"(631) 341-4296","email":"non.sollicitudin@aol.couk","address":"Ap #354-4137 A, Rd.","postalZip":"08422","country":"Pakistan"},{"customerId":675,"customerName":"Kiara Wilkins","phone":"(769) 278-5299","email":"mauris@icloud.couk","address":"1414 Ullamcorper Rd.","postalZip":"46725","country":"Brazil"},{"customerId":676,"customerName":"Brenna Noble","phone":"(772) 413-0763","email":"arcu.ac@protonmail.net","address":"Ap #704-1686 Eu Rd.","postalZip":"645582","country":"Costa Rica"},{"customerId":677,"customerName":"Ferris Cochran","phone":"1-252-258-7184","email":"feugiat.metus.sit@yahoo.couk","address":"Ap #608-624 Varius Ave","postalZip":"444011","country":"Netherlands"},{"customerId":678,"customerName":"Alfreda Dunlap","phone":"(872) 136-2334","email":"at.pretium@hotmail.couk","address":"Ap #172-6043 Nunc Avenue","postalZip":"697784","country":"Singapore"},{"customerId":679,"customerName":"Ishmael Huffman","phone":"1-826-514-6037","email":"ornare.in@google.ca","address":"Ap #708-1539 Mi St.","postalZip":"2417-5672","country":"Philippines"},{"customerId":680,"customerName":"Fredericka Rojas","phone":"1-922-673-8608","email":"et@icloud.edu","address":"Ap #991-728 Primis Rd.","postalZip":"16231","country":"Russian Federation"},{"customerId":681,"customerName":"Emmanuel Bray","phone":"(429) 581-3113","email":"aliquam.gravida@outlook.net","address":"P.O. Box 617, 9505 Pellentesque Rd.","postalZip":"6622","country":"Italy"},{"customerId":682,"customerName":"Gage Holland","phone":"(275) 344-5235","email":"ac.ipsum@google.net","address":"3807 Porttitor St.","postalZip":"645584","country":"France"},{"customerId":683,"customerName":"Kellie Fleming","phone":"(543) 716-3161","email":"eu.erat@icloud.ca","address":"250-9433 Conubia Street","postalZip":"53L 5N9","country":"Belgium"},{"customerId":684,"customerName":"Dennis Stephens","phone":"1-665-763-3476","email":"pede.cras@yahoo.ca","address":"P.O. Box 797, 5672 Dolor. Rd.","postalZip":"65441","country":"Sweden"},{"customerId":685,"customerName":"Graiden Kerr","phone":"(806) 625-2677","email":"sed@aol.couk","address":"993-1068 Vulputate Rd.","postalZip":"46138","country":"Chile"},{"customerId":686,"customerName":"Chancellor Cooper","phone":"(673) 268-1631","email":"gravida.molestie.arcu@protonmail.edu","address":"Ap #284-6591 Eu, Street","postalZip":"386178","country":"Australia"},{"customerId":687,"customerName":"Kaitlin Hogan","phone":"(316) 511-2546","email":"turpis.egestas@yahoo.couk","address":"P.O. Box 720, 7028 Fermentum Av.","postalZip":"41673","country":"Australia"},{"customerId":688,"customerName":"Bianca Andrews","phone":"(359) 741-5673","email":"non.ante@protonmail.com","address":"4456 Odio. Rd.","postalZip":"M3T 0P7","country":"Nigeria"},{"customerId":689,"customerName":"Daria Lewis","phone":"(575) 419-6548","email":"urna.vivamus.molestie@yahoo.org","address":"105-7264 Erat Street","postalZip":"2825 XE","country":"New Zealand"},{"customerId":690,"customerName":"Ivan Long","phone":"(164) 596-2633","email":"ac@icloud.net","address":"484 Facilisis, Road","postalZip":"3575","country":"Peru"},{"customerId":691,"customerName":"Chiquita Bird","phone":"1-324-512-8855","email":"fusce.dolor@hotmail.ca","address":"P.O. Box 348, 4763 Velit Rd.","postalZip":"27917","country":"Chile"},{"customerId":692,"customerName":"Illiana Schultz","phone":"(440) 283-9144","email":"libero@yahoo.edu","address":"Ap #975-2907 Eu Street","postalZip":"43936","country":"Pakistan"},{"customerId":693,"customerName":"Halee Vazquez","phone":"1-882-448-9353","email":"nulla.facilisi@hotmail.couk","address":"Ap #164-3419 Risus. Rd.","postalZip":"4594","country":"Spain"},{"customerId":694,"customerName":"Jamalia Salas","phone":"1-146-328-6621","email":"ultricies.ligula.nullam@protonmail.edu","address":"6789 Lacus Av.","postalZip":"21204","country":"Colombia"},{"customerId":695,"customerName":"Gavin Russell","phone":"1-323-845-2223","email":"elementum.at.egestas@outlook.ca","address":"Ap #416-4357 Odio. Ave","postalZip":"34376","country":"Sweden"},{"customerId":696,"customerName":"Yvette Nieves","phone":"(336) 891-7526","email":"varius.ultrices@icloud.couk","address":"3116 Iaculis Rd.","postalZip":"11213","country":"Austria"},{"customerId":697,"customerName":"Fatima Tillman","phone":"(357) 418-1563","email":"donec@yahoo.org","address":"P.O. Box 975, 5025 Ligula St.","postalZip":"7337 BA","country":"Chile"},{"customerId":698,"customerName":"Zorita Robbins","phone":"1-976-388-2265","email":"et.rutrum@protonmail.ca","address":"Ap #509-2128 Urna. St.","postalZip":"7164","country":"Singapore"},{"customerId":699,"customerName":"Maile Holman","phone":"1-254-562-4216","email":"semper.dui.lectus@aol.couk","address":"2754 Ac, St.","postalZip":"15478","country":"Colombia"},{"customerId":700,"customerName":"Henry Cotton","phone":"1-734-963-6549","email":"sit.amet@outlook.net","address":"Ap #741-4742 Etiam Street","postalZip":"CT9 9FZ","country":"Ukraine"},{"customerId":701,"customerName":"Bryar Leon","phone":"1-729-516-3877","email":"commodo.tincidunt.nibh@google.ca","address":"Ap #519-5538 Aliquam Avenue","postalZip":"T3X 8B3","country":"Russian Federation"},{"customerId":702,"customerName":"Chelsea Holmes","phone":"(202) 348-1646","email":"ultrices@hotmail.edu","address":"P.O. Box 651, 8269 Mauris Av.","postalZip":"52452","country":"South Korea"},{"customerId":703,"customerName":"Basil Haney","phone":"(591) 637-0485","email":"sodales@outlook.org","address":"646-6912 Semper, Ave","postalZip":"4352","country":"Peru"},{"customerId":704,"customerName":"Cassidy Farley","phone":"1-814-856-3941","email":"sed.facilisis@icloud.edu","address":"1655 Pellentesque Rd.","postalZip":"6372","country":"United Kingdom"},{"customerId":705,"customerName":"Emery Good","phone":"(434) 474-4664","email":"auctor@hotmail.org","address":"Ap #777-8861 Rhoncus. Avenue","postalZip":"202163","country":"Chile"},{"customerId":706,"customerName":"Shelly Bruce","phone":"1-628-875-1071","email":"magna.et.ipsum@protonmail.couk","address":"Ap #111-4955 Mauris Rd.","postalZip":"80444","country":"Peru"},{"customerId":707,"customerName":"Colby Kelley","phone":"(680) 511-1099","email":"urna.ut@google.ca","address":"P.O. Box 717, 1718 Sed Rd.","postalZip":"570435","country":"Mexico"},{"customerId":708,"customerName":"Brendan Cobb","phone":"(870) 875-3861","email":"felis.donec@aol.ca","address":"Ap #885-3934 Inceptos St.","postalZip":"7686","country":"Ireland"},{"customerId":709,"customerName":"Forrest Espinoza","phone":"1-504-595-2337","email":"augue.ut.lacus@protonmail.couk","address":"3498 Ullamcorper St.","postalZip":"703717","country":"United Kingdom"},{"customerId":710,"customerName":"Tad Malone","phone":"(361) 344-7431","email":"adipiscing@icloud.org","address":"895-742 At Street","postalZip":"438731","country":"Peru"},{"customerId":711,"customerName":"Astra Newman","phone":"(572) 140-0633","email":"imperdiet@aol.com","address":"903-9715 Lacus St.","postalZip":"69074","country":"Indonesia"},{"customerId":712,"customerName":"Patrick Watkins","phone":"1-458-248-9709","email":"eget.laoreet.posuere@protonmail.edu","address":"Ap #896-231 Etiam Rd.","postalZip":"25365","country":"South Africa"},{"customerId":713,"customerName":"Isabelle Hutchinson","phone":"1-561-668-9303","email":"elit.etiam@yahoo.net","address":"P.O. Box 487, 8571 Amet St.","postalZip":"747278","country":"Philippines"},{"customerId":714,"customerName":"Jordan Wilder","phone":"(851) 986-1221","email":"donec.vitae@icloud.edu","address":"7147 Sollicitudin Rd.","postalZip":"16816","country":"Germany"},{"customerId":715,"customerName":"Fay Phelps","phone":"(544) 381-8265","email":"interdum.ligula.eu@icloud.org","address":"224-5460 Ante Rd.","postalZip":"766345","country":"Ukraine"},{"customerId":716,"customerName":"Jenna Roy","phone":"(815) 281-8427","email":"elementum.at.egestas@google.edu","address":"Ap #386-4543 Sollicitudin Street","postalZip":"56322","country":"Philippines"},{"customerId":717,"customerName":"Felicia Waller","phone":"1-358-255-0045","email":"non.lobortis.quis@outlook.couk","address":"9807 Velit Av.","postalZip":"168116","country":"United Kingdom"},{"customerId":718,"customerName":"Alan Keith","phone":"(193) 661-4113","email":"et@protonmail.couk","address":"Ap #894-6893 Velit Ave","postalZip":"7515","country":"Italy"},{"customerId":719,"customerName":"Kenneth Mcpherson","phone":"1-742-284-2165","email":"leo@google.net","address":"Ap #416-2641 Sed Rd.","postalZip":"8513","country":"South Africa"},{"customerId":720,"customerName":"Anthony Le","phone":"(251) 880-6573","email":"aliquam@aol.net","address":"728-9448 Ornare Avenue","postalZip":"8771","country":"Poland"},{"customerId":721,"customerName":"Ginger Lawson","phone":"(323) 888-3662","email":"interdum@yahoo.couk","address":"639-3476 Faucibus. Ave","postalZip":"9727","country":"Costa Rica"},{"customerId":722,"customerName":"Jamal Suarez","phone":"1-548-947-7622","email":"fames@icloud.edu","address":"P.O. Box 583, 2803 Posuere Street","postalZip":"23725","country":"India"},{"customerId":723,"customerName":"Wylie Stokes","phone":"(351) 661-8245","email":"et.libero.proin@aol.edu","address":"154-4462 Egestas Ave","postalZip":"36-24","country":"India"},{"customerId":724,"customerName":"Bernard Harris","phone":"1-843-327-6984","email":"molestie.orci@icloud.com","address":"P.O. Box 336, 2665 At Rd.","postalZip":"16885-551","country":"United Kingdom"},{"customerId":725,"customerName":"Ronan Arnold","phone":"1-537-142-6668","email":"vestibulum.nec@protonmail.ca","address":"149-5046 Sed Ave","postalZip":"582183","country":"Pakistan"},{"customerId":726,"customerName":"Jeanette Stanley","phone":"1-812-894-5900","email":"facilisis.lorem.tristique@outlook.org","address":"683-4049 Phasellus Rd.","postalZip":"07715","country":"Netherlands"},{"customerId":727,"customerName":"Shana Merritt","phone":"1-543-784-1204","email":"ullamcorper.nisl@aol.com","address":"539-6837 Non, Rd.","postalZip":"362432","country":"Turkey"},{"customerId":728,"customerName":"Xavier Fuentes","phone":"(313) 657-6636","email":"eros@protonmail.ca","address":"211-6474 At Road","postalZip":"4521","country":"Ukraine"},{"customerId":729,"customerName":"Eleanor Hayden","phone":"1-983-243-3953","email":"nec@yahoo.org","address":"P.O. Box 382, 8343 Ac Avenue","postalZip":"7403","country":"Singapore"},{"customerId":730,"customerName":"Rafael Roach","phone":"1-101-312-1215","email":"ut.semper.pretium@outlook.org","address":"9218 Tellus Road","postalZip":"386632","country":"Singapore"},{"customerId":731,"customerName":"Cecilia Hester","phone":"(813) 702-3565","email":"lorem.eget@google.org","address":"Ap #655-5528 Imperdiet Ave","postalZip":"84851","country":"Netherlands"},{"customerId":732,"customerName":"Uriah Mcpherson","phone":"1-656-842-2712","email":"tincidunt.nibh.phasellus@hotmail.com","address":"804-2950 Tellus. Road","postalZip":"28588","country":"Ukraine"},{"customerId":733,"customerName":"Beck Walton","phone":"1-457-558-9798","email":"fermentum@google.com","address":"Ap #193-3401 Bibendum Street","postalZip":"51J 8H8","country":"Pakistan"},{"customerId":734,"customerName":"Yetta Lowery","phone":"(117) 748-0961","email":"erat.sed.nunc@outlook.couk","address":"7459 Vivamus Rd.","postalZip":"1703-2538","country":"Belgium"},{"customerId":735,"customerName":"Cleo Guerrero","phone":"(253) 193-4524","email":"pede.praesent.eu@icloud.couk","address":"266-8321 Mauris Road","postalZip":"85055","country":"Costa Rica"},{"customerId":736,"customerName":"Cruz Aguilar","phone":"1-516-686-9331","email":"in.lobortis@aol.couk","address":"282-3045 Tristique St.","postalZip":"446632","country":"Netherlands"},{"customerId":737,"customerName":"Perry Morales","phone":"1-814-853-8324","email":"molestie.sodales.mauris@yahoo.edu","address":"Ap #865-6691 Sollicitudin Rd.","postalZip":"8718","country":"United States"},{"customerId":738,"customerName":"Velma Weeks","phone":"(511) 467-9457","email":"purus.accumsan@google.org","address":"Ap #794-128 Ullamcorper Road","postalZip":"622268","country":"Ukraine"},{"customerId":739,"customerName":"Emily Byers","phone":"(243) 570-2798","email":"scelerisque.neque@protonmail.org","address":"9669 Cursus St.","postalZip":"3655 XW","country":"Philippines"},{"customerId":740,"customerName":"Jasmine Moss","phone":"(481) 349-4651","email":"nibh.aliquam@protonmail.org","address":"684-8132 Fringilla Rd.","postalZip":"25798","country":"Costa Rica"},{"customerId":741,"customerName":"Galvin Maynard","phone":"(845) 816-4842","email":"vitae.risus@outlook.com","address":"8005 Bibendum Street","postalZip":"16562","country":"Turkey"},{"customerId":742,"customerName":"Lareina Ross","phone":"(460) 444-2286","email":"velit.quisque@aol.ca","address":"790-7763 Vulputate Rd.","postalZip":"26927","country":"Nigeria"},{"customerId":743,"customerName":"Yen Hayes","phone":"(807) 198-9279","email":"in.lobortis.tellus@aol.couk","address":"Ap #355-191 Velit. St.","postalZip":"802563","country":"South Korea"},{"customerId":744,"customerName":"Basil Green","phone":"1-223-457-6313","email":"ac.mattis@yahoo.edu","address":"Ap #754-3145 Tristique Av.","postalZip":"5171","country":"Netherlands"},{"customerId":745,"customerName":"Madaline Boyle","phone":"1-154-476-4752","email":"nunc.id.enim@hotmail.net","address":"698-9976 Pharetra Rd.","postalZip":"841437","country":"Spain"},{"customerId":746,"customerName":"Melanie Good","phone":"1-778-867-2546","email":"mauris@outlook.net","address":"P.O. Box 401, 3994 Vivamus Av.","postalZip":"37996","country":"Netherlands"},{"customerId":747,"customerName":"Xena Mills","phone":"1-853-852-6659","email":"phasellus.dolor@yahoo.net","address":"981-5350 Justo Street","postalZip":"46145","country":"Netherlands"},{"customerId":748,"customerName":"Victor Campos","phone":"1-246-872-7204","email":"dolor@yahoo.edu","address":"P.O. Box 945, 8808 Nibh Road","postalZip":"8661","country":"New Zealand"},{"customerId":749,"customerName":"Jelani Kaufman","phone":"(773) 553-6441","email":"justo.nec@yahoo.ca","address":"168-3069 Gravida Avenue","postalZip":"43864-439","country":"Ukraine"},{"customerId":750,"customerName":"Whoopi Ratliff","phone":"(556) 928-7102","email":"adipiscing.fringilla.porttitor@hotmail.couk","address":"Ap #828-8835 At Av.","postalZip":"83531","country":"Vietnam"},{"customerId":751,"customerName":"Basia Finch","phone":"1-123-511-6769","email":"tortor@outlook.couk","address":"1308 Tincidunt Rd.","postalZip":"54632","country":"Norway"},{"customerId":752,"customerName":"Gavin Elliott","phone":"1-631-521-2887","email":"sapien.molestie@outlook.org","address":"Ap #102-9337 Massa. Ave","postalZip":"3315","country":"Norway"},{"customerId":753,"customerName":"Jayme William","phone":"1-532-882-9532","email":"vitae@yahoo.com","address":"Ap #185-1545 Orci Rd.","postalZip":"671325","country":"Germany"},{"customerId":754,"customerName":"Patrick Abbott","phone":"(415) 867-6685","email":"massa.rutrum@icloud.edu","address":"736-9586 Lacinia Rd.","postalZip":"T5M 5Z4","country":"Canada"},{"customerId":755,"customerName":"Marvin Shields","phone":"1-826-727-7976","email":"libero.mauris@aol.ca","address":"6858 Curabitur St.","postalZip":"945894","country":"Ukraine"},{"customerId":756,"customerName":"Yael Bauer","phone":"(558) 586-8252","email":"nec.ante@yahoo.edu","address":"6253 Blandit Ave","postalZip":"60787","country":"South Korea"},{"customerId":757,"customerName":"Price Hansen","phone":"(591) 797-0973","email":"porttitor@icloud.ca","address":"Ap #519-1535 Sapien, St.","postalZip":"37692","country":"United Kingdom"},{"customerId":758,"customerName":"Jameson Harris","phone":"1-956-770-7240","email":"consectetuer.cursus.et@hotmail.edu","address":"Ap #610-3611 Ornare, St.","postalZip":"668360","country":"Australia"},{"customerId":759,"customerName":"Isaac Beach","phone":"(403) 241-7154","email":"lectus.pede@icloud.ca","address":"254-1041 Ligula Road","postalZip":"678392","country":"Pakistan"},{"customerId":760,"customerName":"Jada Larsen","phone":"(448) 672-7335","email":"a@aol.couk","address":"8908 Tellus St.","postalZip":"75833","country":"Mexico"},{"customerId":761,"customerName":"Kenneth Rowe","phone":"1-842-206-3504","email":"auctor.odio@google.ca","address":"774-7848 Dolor Street","postalZip":"41589","country":"Singapore"},{"customerId":762,"customerName":"Inez Wagner","phone":"(158) 587-2881","email":"augue@icloud.net","address":"6221 Per St.","postalZip":"732338","country":"China"},{"customerId":763,"customerName":"Ann Townsend","phone":"1-617-277-5296","email":"justo.eu@aol.net","address":"764-8751 Suspendisse Av.","postalZip":"27-17","country":"Italy"},{"customerId":764,"customerName":"Warren Mccall","phone":"1-558-855-1859","email":"nec.ante@outlook.com","address":"4006 Amet, Rd.","postalZip":"7661","country":"Indonesia"},{"customerId":765,"customerName":"Gillian Caldwell","phone":"(343) 379-1567","email":"aliquam.nisl@outlook.edu","address":"439-5857 Velit. Rd.","postalZip":"65120-808","country":"Philippines"},{"customerId":766,"customerName":"Philip Mcneil","phone":"(118) 138-6654","email":"pharetra.quisque.ac@icloud.ca","address":"126-9845 Dolor. Street","postalZip":"5922","country":"Sweden"},{"customerId":767,"customerName":"Carla Griffith","phone":"(935) 961-6277","email":"aliquam.iaculis.lacus@protonmail.edu","address":"3978 Velit St.","postalZip":"1869-7334","country":"United States"},{"customerId":768,"customerName":"Althea Turner","phone":"(433) 381-4446","email":"per.conubia.nostra@google.couk","address":"330-4113 Et Ave","postalZip":"638243","country":"Poland"},{"customerId":769,"customerName":"Quinn Sandoval","phone":"(721) 758-4826","email":"enim.commodo.hendrerit@yahoo.org","address":"Ap #363-3098 Ornare Road","postalZip":"y3S 6L5","country":"Costa Rica"},{"customerId":770,"customerName":"Zeph Gay","phone":"1-999-235-9676","email":"nulla.eu@aol.ca","address":"483-1542 Mauris Street","postalZip":"VG14 3WR","country":"Nigeria"},{"customerId":771,"customerName":"Lester Herring","phone":"1-735-246-5755","email":"erat.in@google.org","address":"Ap #939-6519 Lorem. Road","postalZip":"366614","country":"Spain"},{"customerId":772,"customerName":"Gareth Huff","phone":"1-356-343-4077","email":"eleifend.vitae@aol.net","address":"324-8669 Cras Rd.","postalZip":"346843","country":"India"},{"customerId":773,"customerName":"Sigourney Pruitt","phone":"1-676-416-8753","email":"ullamcorper.viverra.maecenas@icloud.org","address":"Ap #480-7841 Ullamcorper Av.","postalZip":"573673","country":"China"},{"customerId":774,"customerName":"Joan Medina","phone":"1-427-641-3357","email":"nec.imperdiet@yahoo.edu","address":"Ap #312-9806 Fringilla St.","postalZip":"4473 BC","country":"Norway"},{"customerId":775,"customerName":"Quinlan Espinoza","phone":"1-497-643-1247","email":"ultricies.sem@protonmail.org","address":"Ap #716-8093 Mus. Avenue","postalZip":"02-223","country":"Vietnam"},{"customerId":776,"customerName":"Cooper Bernard","phone":"1-742-847-2173","email":"tristique.pharetra@protonmail.com","address":"Ap #612-624 Arcu Road","postalZip":"B3J 1M4","country":"Ukraine"},{"customerId":777,"customerName":"Zephr Frost","phone":"(598) 227-1472","email":"porttitor.interdum@yahoo.edu","address":"974-1307 Vitae Ave","postalZip":"528762","country":"Singapore"},{"customerId":778,"customerName":"Reese Battle","phone":"1-732-761-0485","email":"tristique@yahoo.edu","address":"Ap #569-9593 Sodales St.","postalZip":"77-53","country":"Canada"},{"customerId":779,"customerName":"Sydney Harmon","phone":"1-471-558-5615","email":"duis.ac@icloud.ca","address":"Ap #585-7272 Rutrum Av.","postalZip":"400134","country":"Italy"},{"customerId":780,"customerName":"Meghan Farrell","phone":"1-267-536-8443","email":"dictum@protonmail.couk","address":"267-778 Neque. Avenue","postalZip":"70162","country":"Indonesia"},{"customerId":781,"customerName":"Plato Guthrie","phone":"1-228-530-2717","email":"diam@icloud.edu","address":"237-8041 Lacus. Avenue","postalZip":"416567","country":"Germany"},{"customerId":782,"customerName":"Philip Slater","phone":"1-657-181-5496","email":"auctor.non@aol.com","address":"865-9756 Ut St.","postalZip":"487316","country":"Spain"},{"customerId":783,"customerName":"Lillian Wells","phone":"1-583-520-3487","email":"risus.donec@outlook.com","address":"589-2712 Odio. Rd.","postalZip":"4335 UU","country":"South Africa"},{"customerId":784,"customerName":"Kalia Terry","phone":"(663) 776-7659","email":"etiam@google.net","address":"P.O. Box 859, 7194 Duis Ave","postalZip":"345505","country":"Poland"},{"customerId":785,"customerName":"Darius Bridges","phone":"1-493-751-5738","email":"cursus@protonmail.com","address":"800-8647 Sit Street","postalZip":"18323","country":"Brazil"},{"customerId":786,"customerName":"Piper Dunlap","phone":"1-222-965-7102","email":"consectetuer.cursus@protonmail.com","address":"380-3734 Mollis. Av.","postalZip":"12882","country":"Norway"},{"customerId":787,"customerName":"Slade Rocha","phone":"1-268-556-1838","email":"pharetra.quisque@hotmail.couk","address":"4235 Dis Ave","postalZip":"1159","country":"Singapore"},{"customerId":788,"customerName":"Priscilla Mcguire","phone":"1-542-281-8822","email":"arcu.sed@outlook.org","address":"431-2224 Ac Avenue","postalZip":"07202","country":"France"},{"customerId":789,"customerName":"Flavia Gamble","phone":"(626) 374-7779","email":"a.malesuada.id@yahoo.com","address":"267-3312 Id, Street","postalZip":"R5T 7H3","country":"Peru"},{"customerId":790,"customerName":"Scarlett Baird","phone":"(447) 503-0226","email":"iaculis.lacus@google.net","address":"911-7429 At, Ave","postalZip":"51E 1T3","country":"China"},{"customerId":791,"customerName":"Keegan Daugherty","phone":"1-116-624-7627","email":"et.libero@outlook.com","address":"P.O. Box 404, 5035 Lacus, Rd.","postalZip":"843551","country":"Norway"},{"customerId":792,"customerName":"Hiram Chen","phone":"(871) 345-8822","email":"consequat@protonmail.net","address":"625-6632 Vel Avenue","postalZip":"32159","country":"Turkey"},{"customerId":793,"customerName":"Branden Rodriquez","phone":"(664) 889-1642","email":"aliquam.arcu@outlook.ca","address":"320-2559 Nibh Rd.","postalZip":"8232","country":"United Kingdom"},{"customerId":794,"customerName":"Cassidy Peters","phone":"1-767-872-5576","email":"sem.nulla@outlook.couk","address":"Ap #116-8989 Lectus St.","postalZip":"924516","country":"China"},{"customerId":795,"customerName":"Ila Wall","phone":"1-601-548-5284","email":"consequat.lectus@protonmail.com","address":"Ap #976-3079 Lorem Rd.","postalZip":"339167","country":"Turkey"},{"customerId":796,"customerName":"Kenneth Newman","phone":"1-177-673-9169","email":"eleifend@icloud.couk","address":"P.O. Box 466, 8754 Ullamcorper, Street","postalZip":"665660","country":"Nigeria"},{"customerId":797,"customerName":"Vivian Barrett","phone":"(480) 851-0581","email":"massa.integer@yahoo.net","address":"300-8590 Mollis. Rd.","postalZip":"26586","country":"Ireland"},{"customerId":798,"customerName":"Henry Barlow","phone":"1-245-974-2855","email":"vulputate@icloud.com","address":"7076 Egestas St.","postalZip":"6561-2875","country":"Netherlands"},{"customerId":799,"customerName":"Vivien House","phone":"1-852-433-5728","email":"nunc.lectus.pede@aol.couk","address":"Ap #468-6391 Parturient Road","postalZip":"254680","country":"Ireland"},{"customerId":800,"customerName":"Roth Burt","phone":"1-771-306-5541","email":"lacus.etiam.bibendum@outlook.com","address":"P.O. Box 817, 1806 Eros St.","postalZip":"88247","country":"Russian Federation"},{"customerId":801,"customerName":"Dylan Long","phone":"(443) 982-3151","email":"ut.nulla@aol.com","address":"7136 Non, Avenue","postalZip":"12618","country":"South Africa"},{"customerId":802,"customerName":"Basil Owen","phone":"(153) 354-8786","email":"elementum.dui@outlook.couk","address":"Ap #394-7158 Libero Avenue","postalZip":"184276","country":"United Kingdom"},{"customerId":803,"customerName":"Nerea Sparks","phone":"1-166-874-2120","email":"mauris@protonmail.com","address":"Ap #316-199 Risus St.","postalZip":"678162","country":"Norway"},{"customerId":804,"customerName":"Jack Powers","phone":"1-829-458-5289","email":"accumsan.interdum@icloud.couk","address":"4061 Amet Av.","postalZip":"85876","country":"Mexico"},{"customerId":805,"customerName":"Haley Garcia","phone":"1-967-828-8134","email":"cras.vulputate.velit@icloud.com","address":"Ap #795-2694 Blandit. Street","postalZip":"70786","country":"Brazil"},{"customerId":806,"customerName":"Knox Madden","phone":"(451) 576-9610","email":"varius@protonmail.org","address":"P.O. Box 852, 9518 Maecenas Rd.","postalZip":"6897","country":"Chile"},{"customerId":807,"customerName":"Sacha Morin","phone":"1-462-304-0622","email":"vehicula.pellentesque.tincidunt@aol.edu","address":"9224 Non, Ave","postalZip":"54356","country":"Brazil"},{"customerId":808,"customerName":"Quon Short","phone":"1-777-131-3837","email":"parturient.montes@protonmail.edu","address":"Ap #175-5392 Et, Avenue","postalZip":"311598","country":"Turkey"},{"customerId":809,"customerName":"Imani Giles","phone":"1-544-870-1471","email":"viverra.donec@protonmail.edu","address":"241-4421 Mauris St.","postalZip":"626817","country":"Pakistan"},{"customerId":810,"customerName":"Aurelia Foreman","phone":"1-315-273-2481","email":"elit.sed.consequat@hotmail.ca","address":"848-6809 Primis Rd.","postalZip":"897573","country":"Nigeria"},{"customerId":811,"customerName":"Axel Brooks","phone":"(256) 312-8477","email":"fringilla.mi.lacinia@outlook.org","address":"611-1564 Aliquam Rd.","postalZip":"15461","country":"Pakistan"},{"customerId":812,"customerName":"Alexander Snyder","phone":"(131) 112-1368","email":"aliquet.lobortis.nisi@yahoo.edu","address":"P.O. Box 903, 4493 Auctor Rd.","postalZip":"381361","country":"Netherlands"},{"customerId":813,"customerName":"Priscilla Meadows","phone":"(627) 987-1735","email":"in.cursus@yahoo.org","address":"Ap #698-7856 Ligula Road","postalZip":"661825","country":"Indonesia"},{"customerId":814,"customerName":"Mohammad Anthony","phone":"(167) 228-0486","email":"nec.ante.blandit@icloud.couk","address":"Ap #822-8154 Suspendisse Av.","postalZip":"43572-322","country":"Pakistan"},{"customerId":815,"customerName":"Illana Craig","phone":"(798) 435-2076","email":"posuere.vulputate@hotmail.ca","address":"1300 Eleifend, Street","postalZip":"5122-1837","country":"Brazil"},{"customerId":816,"customerName":"Pamela Haney","phone":"1-247-228-3672","email":"montes@outlook.org","address":"260-6269 Sagittis Rd.","postalZip":"952330","country":"Ireland"},{"customerId":817,"customerName":"Lucas Sargent","phone":"(810) 477-6551","email":"tincidunt.nunc@outlook.com","address":"4814 Amet Av.","postalZip":"31234","country":"Peru"},{"customerId":818,"customerName":"Benedict Carver","phone":"(724) 912-8252","email":"ut.semper.pretium@aol.edu","address":"763-1191 Lectus Road","postalZip":"7822","country":"Nigeria"},{"customerId":819,"customerName":"Giacomo Stark","phone":"(312) 765-7184","email":"lorem.semper@protonmail.edu","address":"Ap #453-9694 Placerat, Road","postalZip":"55-36","country":"New Zealand"},{"customerId":820,"customerName":"Emerson Herring","phone":"(778) 540-8339","email":"ultrices.a@hotmail.couk","address":"9245 Massa. St.","postalZip":"84780","country":"Canada"},{"customerId":821,"customerName":"Claudia Hinton","phone":"(549) 452-8272","email":"eget.nisi@hotmail.couk","address":"395-4879 Posuere Av.","postalZip":"74738-315","country":"Netherlands"},{"customerId":822,"customerName":"Desirae Vasquez","phone":"(208) 953-6477","email":"nec.tellus@yahoo.couk","address":"Ap #708-215 Pede. Road","postalZip":"3331","country":"Ireland"},{"customerId":823,"customerName":"Stuart Lewis","phone":"1-919-738-2208","email":"elementum@protonmail.net","address":"P.O. Box 486, 2329 Dictum St.","postalZip":"461808","country":"Mexico"},{"customerId":824,"customerName":"Katell Velasquez","phone":"1-942-515-6421","email":"cum.sociis@yahoo.org","address":"809-6388 Dolor. Ave","postalZip":"3525 QV","country":"Costa Rica"},{"customerId":825,"customerName":"Bianca Riley","phone":"1-961-928-5087","email":"facilisis.suspendisse@aol.couk","address":"2351 Nullam St.","postalZip":"266575","country":"Canada"},{"customerId":826,"customerName":"Sage Knight","phone":"1-458-540-4775","email":"porttitor@icloud.edu","address":"Ap #680-5468 Consequat St.","postalZip":"8227","country":"Netherlands"},{"customerId":827,"customerName":"Ocean Long","phone":"(424) 378-6757","email":"sem.molestie@hotmail.org","address":"P.O. Box 161, 1610 Donec Av.","postalZip":"542154","country":"China"},{"customerId":828,"customerName":"Cassidy Baird","phone":"(185) 545-0611","email":"nibh.sit.amet@outlook.net","address":"Ap #531-3794 Vivamus Ave","postalZip":"14518","country":"Ireland"},{"customerId":829,"customerName":"Sheila Clark","phone":"1-315-340-3827","email":"quisque.nonummy@protonmail.edu","address":"891-7010 Fermentum St.","postalZip":"5458","country":"South Korea"},{"customerId":830,"customerName":"Merrill Mendoza","phone":"1-796-387-2608","email":"non.sapien.molestie@google.org","address":"905-4272 Odio Avenue","postalZip":"281587","country":"New Zealand"},{"customerId":831,"customerName":"Alexis Rogers","phone":"(614) 746-0825","email":"sagittis.semper@google.edu","address":"9027 Nunc Avenue","postalZip":"53731","country":"India"},{"customerId":832,"customerName":"Jerome Dudley","phone":"1-822-174-5274","email":"quis@aol.org","address":"Ap #370-3923 Arcu. Av.","postalZip":"6170","country":"South Korea"},{"customerId":833,"customerName":"Felix Ayers","phone":"1-760-107-8310","email":"lorem.ipsum@outlook.ca","address":"719-7108 Nunc Ave","postalZip":"5464","country":"Canada"},{"customerId":834,"customerName":"Emerson Hartman","phone":"(856) 922-7278","email":"tincidunt.dui@hotmail.edu","address":"3703 Nec, Rd.","postalZip":"625522","country":"United States"},{"customerId":835,"customerName":"Evan Decker","phone":"1-593-244-9271","email":"adipiscing.fringilla@protonmail.net","address":"889-4084 Donec St.","postalZip":"39112","country":"Pakistan"},{"customerId":836,"customerName":"Cecilia Hickman","phone":"1-974-482-7515","email":"arcu.ac@protonmail.couk","address":"Ap #130-7762 Orci Rd.","postalZip":"36396","country":"South Africa"},{"customerId":837,"customerName":"Brynn Lawson","phone":"1-247-415-5994","email":"ornare.egestas@google.ca","address":"375-6552 Lorem Rd.","postalZip":"52726-88363","country":"Sweden"},{"customerId":838,"customerName":"Debra Lewis","phone":"1-641-381-8565","email":"libero.et.tristique@yahoo.net","address":"628-1249 Dolor Avenue","postalZip":"115819","country":"Norway"},{"customerId":839,"customerName":"Samuel Holt","phone":"(512) 274-3759","email":"vel@protonmail.com","address":"3363 Amet Rd.","postalZip":"5440","country":"Philippines"},{"customerId":840,"customerName":"Moana Mcintosh","phone":"(314) 630-6702","email":"duis.gravida.praesent@yahoo.net","address":"8414 Convallis St.","postalZip":"50119","country":"Vietnam"},{"customerId":841,"customerName":"Kerry Walls","phone":"(555) 885-6918","email":"magna.ut@hotmail.net","address":"703-5970 Tristique Avenue","postalZip":"JS8 8ZE","country":"Philippines"},{"customerId":842,"customerName":"McKenzie Castillo","phone":"(262) 547-3385","email":"ac.arcu.nunc@hotmail.couk","address":"Ap #616-9585 Varius. Road","postalZip":"47163","country":"Chile"},{"customerId":843,"customerName":"Zia Marshall","phone":"(830) 836-2689","email":"enim@aol.ca","address":"Ap #524-9069 Nulla Rd.","postalZip":"327185","country":"New Zealand"},{"customerId":844,"customerName":"Daquan Conrad","phone":"1-838-536-5118","email":"urna@google.org","address":"4082 Metus Ave","postalZip":"46445-67493","country":"Peru"},{"customerId":845,"customerName":"Warren Tyler","phone":"1-453-673-7100","email":"elit.curabitur@icloud.com","address":"652-3013 At, Rd.","postalZip":"34141","country":"India"},{"customerId":846,"customerName":"Nero Allen","phone":"(670) 446-3652","email":"id@yahoo.ca","address":"101-7152 Eu, Av.","postalZip":"3302","country":"France"},{"customerId":847,"customerName":"Renee Avila","phone":"1-806-978-6067","email":"sapien.molestie@icloud.ca","address":"834-9784 Dis Rd.","postalZip":"89711-812","country":"Costa Rica"},{"customerId":848,"customerName":"Kylan Warren","phone":"1-231-558-4253","email":"fusce@protonmail.couk","address":"1007 Velit. Av.","postalZip":"51206","country":"Norway"},{"customerId":849,"customerName":"Chelsea Best","phone":"(665) 586-1871","email":"neque@google.couk","address":"674-5498 At St.","postalZip":"2559-3940","country":"Singapore"},{"customerId":850,"customerName":"Juliet Hansen","phone":"1-751-353-7508","email":"egestas.a@aol.net","address":"908-9856 Laoreet Ave","postalZip":"437630","country":"India"},{"customerId":851,"customerName":"Emerson Flores","phone":"(842) 341-9728","email":"bibendum.sed@icloud.net","address":"409-6884 Ipsum Road","postalZip":"6975-8454","country":"Pakistan"},{"customerId":852,"customerName":"Jasmine Conway","phone":"(830) 723-0622","email":"pellentesque@google.edu","address":"P.O. Box 238, 1636 Ridiculus Rd.","postalZip":"06889","country":"South Korea"},{"customerId":853,"customerName":"Kim Strong","phone":"(255) 458-6411","email":"vitae.sodales@yahoo.com","address":"6054 Integer Rd.","postalZip":"8456-0817","country":"India"},{"customerId":854,"customerName":"Josiah Sanders","phone":"(234) 920-3784","email":"non@aol.couk","address":"Ap #370-7210 Magna. Ave","postalZip":"8360","country":"Poland"},{"customerId":855,"customerName":"Eugenia Harrison","phone":"1-535-715-1251","email":"interdum.feugiat@yahoo.com","address":"1740 Neque. St.","postalZip":"94176","country":"Brazil"},{"customerId":856,"customerName":"Baker Herring","phone":"(497) 584-8574","email":"a.auctor.non@yahoo.ca","address":"Ap #128-1480 Sit Road","postalZip":"30207","country":"Brazil"},{"customerId":857,"customerName":"Wynne Rodriquez","phone":"1-623-964-7218","email":"non@protonmail.org","address":"889-8829 Cras Road","postalZip":"17387","country":"Pakistan"},{"customerId":858,"customerName":"Mollie Harrell","phone":"1-482-630-3926","email":"felis.eget.varius@icloud.ca","address":"Ap #366-9332 Et, Ave","postalZip":"641087","country":"Brazil"},{"customerId":859,"customerName":"Colby Miranda","phone":"1-775-556-5921","email":"erat.etiam.vestibulum@yahoo.net","address":"5333 Egestas St.","postalZip":"568221","country":"Belgium"},{"customerId":860,"customerName":"Olympia Bowen","phone":"1-601-957-5517","email":"arcu.vel.quam@aol.org","address":"P.O. Box 289, 1594 Et, Av.","postalZip":"1577","country":"Brazil"},{"customerId":861,"customerName":"Prescott French","phone":"1-257-342-1139","email":"malesuada@hotmail.ca","address":"P.O. Box 595, 3504 Posuere Road","postalZip":"4364","country":"Mexico"},{"customerId":862,"customerName":"Simone Compton","phone":"(893) 915-7716","email":"suspendisse@outlook.net","address":"135-3881 Elit. Road","postalZip":"593220","country":"Australia"},{"customerId":863,"customerName":"Jared Duffy","phone":"1-857-779-6827","email":"convallis.ante@yahoo.org","address":"Ap #225-6226 Phasellus Av.","postalZip":"5248","country":"Australia"},{"customerId":864,"customerName":"Armand Baird","phone":"1-868-386-7557","email":"placerat.augue@hotmail.org","address":"P.O. Box 795, 5865 Quis Ave","postalZip":"27354","country":"Mexico"},{"customerId":865,"customerName":"Isaiah Woodard","phone":"(972) 736-5497","email":"quis.diam@outlook.couk","address":"785-3996 Mi. Street","postalZip":"11041","country":"Singapore"},{"customerId":866,"customerName":"Lars Hart","phone":"1-320-941-1073","email":"sapien@google.couk","address":"Ap #191-3940 Nec Rd.","postalZip":"72957","country":"China"},{"customerId":867,"customerName":"Zenia Joyner","phone":"(358) 582-3514","email":"magna.ut@icloud.couk","address":"1620 Nonummy. St.","postalZip":"7672","country":"Vietnam"},{"customerId":868,"customerName":"Kylan Stevens","phone":"1-625-591-6631","email":"pellentesque@aol.net","address":"8512 Diam Street","postalZip":"4327","country":"Pakistan"},{"customerId":869,"customerName":"Eric Moss","phone":"1-552-565-1277","email":"varius.ultrices.mauris@aol.ca","address":"Ap #632-7134 A St.","postalZip":"9771","country":"Turkey"},{"customerId":870,"customerName":"Jacob Banks","phone":"(727) 919-4579","email":"molestie@icloud.net","address":"Ap #827-3069 Diam St.","postalZip":"9648 TQ","country":"France"},{"customerId":871,"customerName":"Moana Stark","phone":"1-813-722-1263","email":"molestie.pharetra.nibh@protonmail.edu","address":"Ap #791-2094 A Av.","postalZip":"27580","country":"Colombia"},{"customerId":872,"customerName":"Amaya Palmer","phone":"1-873-252-3643","email":"sapien@icloud.edu","address":"527-2942 Consequat Av.","postalZip":"580131","country":"Mexico"},{"customerId":873,"customerName":"Hollee Duncan","phone":"(625) 822-8336","email":"nunc.sed@aol.net","address":"P.O. Box 610, 8482 Auctor. Avenue","postalZip":"68798","country":"Ukraine"},{"customerId":874,"customerName":"Isabella Schmidt","phone":"1-777-838-7484","email":"donec.egestas@google.couk","address":"8838 Ipsum. Av.","postalZip":"AI67 1UV","country":"Sweden"},{"customerId":875,"customerName":"Mason Pruitt","phone":"(645) 751-8778","email":"blandit.nam@hotmail.ca","address":"9611 Euismod St.","postalZip":"49-617","country":"Netherlands"},{"customerId":876,"customerName":"Candice Glover","phone":"(356) 348-3131","email":"curabitur.ut@hotmail.ca","address":"405-9717 Integer Av.","postalZip":"9657","country":"Sweden"},{"customerId":877,"customerName":"Hamilton Park","phone":"(142) 125-5266","email":"sit.amet@outlook.couk","address":"Ap #148-8251 Donec Road","postalZip":"8559","country":"Spain"},{"customerId":878,"customerName":"Finn Hardy","phone":"(925) 523-6709","email":"phasellus.in@hotmail.com","address":"P.O. Box 802, 3447 Vel Av.","postalZip":"1619","country":"United Kingdom"},{"customerId":879,"customerName":"Garrison Best","phone":"(340) 332-7016","email":"phasellus.vitae@aol.edu","address":"6526 Vestibulum Road","postalZip":"632215","country":"Australia"},{"customerId":880,"customerName":"Shelly Landry","phone":"1-397-259-9786","email":"non@protonmail.couk","address":"Ap #345-1957 Fringilla Av.","postalZip":"6285 JI","country":"Pakistan"},{"customerId":881,"customerName":"Stacey Walter","phone":"1-685-786-8947","email":"in.scelerisque@aol.net","address":"337-5711 Convallis Avenue","postalZip":"748917","country":"Canada"},{"customerId":882,"customerName":"Rhonda Chambers","phone":"(781) 268-1152","email":"a@aol.ca","address":"936-5244 Placerat Road","postalZip":"56371-69464","country":"United Kingdom"},{"customerId":883,"customerName":"Virginia Norman","phone":"1-907-553-9287","email":"lectus@yahoo.net","address":"Ap #944-7355 Sit Avenue","postalZip":"4328","country":"Philippines"},{"customerId":884,"customerName":"Roary Reese","phone":"(228) 767-1658","email":"justo.praesent@outlook.edu","address":"252-3778 Duis Av.","postalZip":"3885","country":"China"},{"customerId":885,"customerName":"Macey Young","phone":"(332) 788-9582","email":"sed.molestie@yahoo.couk","address":"547-9496 Quis St.","postalZip":"362467","country":"Turkey"},{"customerId":886,"customerName":"Xander Andrews","phone":"1-412-136-2272","email":"neque@outlook.net","address":"Ap #469-2682 Enim St.","postalZip":"694036","country":"United States"},{"customerId":887,"customerName":"Giacomo Santana","phone":"1-243-994-3413","email":"sociis.natoque.penatibus@outlook.org","address":"Ap #520-804 Non Rd.","postalZip":"1922 QJ","country":"Netherlands"},{"customerId":888,"customerName":"Austin Ashley","phone":"(413) 713-1285","email":"eu.enim@aol.ca","address":"864-7367 Tristique Av.","postalZip":"07942-73448","country":"Poland"},{"customerId":889,"customerName":"Kennan Cochran","phone":"1-388-351-9077","email":"penatibus@hotmail.net","address":"259-7129 Dictum Rd.","postalZip":"906305","country":"Poland"},{"customerId":890,"customerName":"Emi Clay","phone":"(254) 847-2864","email":"enim.suspendisse@yahoo.net","address":"6605 In Rd.","postalZip":"07608","country":"China"},{"customerId":891,"customerName":"Hilel Parrish","phone":"1-123-656-0967","email":"tortor.integer.aliquam@google.net","address":"920-9375 Turpis Avenue","postalZip":"3174","country":"United Kingdom"},{"customerId":892,"customerName":"Vera Garrison","phone":"(215) 206-2836","email":"felis.eget@outlook.com","address":"P.O. Box 285, 4574 Libero. Rd.","postalZip":"51208","country":"Australia"},{"customerId":893,"customerName":"Nasim Salas","phone":"1-703-889-1643","email":"eu@outlook.net","address":"Ap #374-9346 Non Rd.","postalZip":"6368","country":"Peru"},{"customerId":894,"customerName":"McKenzie Lloyd","phone":"1-432-573-2779","email":"egestas.a@icloud.edu","address":"127-6709 Nulla Ave","postalZip":"22446","country":"Italy"},{"customerId":895,"customerName":"Isadora Meyer","phone":"1-526-824-5811","email":"ante@hotmail.net","address":"Ap #121-5287 Et Street","postalZip":"977540","country":"Colombia"},{"customerId":896,"customerName":"Thomas Sullivan","phone":"1-747-833-2156","email":"eget.volutpat.ornare@aol.couk","address":"875-6723 Eget, St.","postalZip":"798142","country":"Singapore"},{"customerId":897,"customerName":"Nolan Robles","phone":"1-665-326-8766","email":"metus.vivamus@yahoo.net","address":"Ap #958-8902 Consectetuer Av.","postalZip":"667486","country":"Costa Rica"},{"customerId":898,"customerName":"Armando Bird","phone":"1-270-981-5850","email":"vitae@outlook.com","address":"Ap #174-3966 Posuere Av.","postalZip":"3453","country":"Brazil"},{"customerId":899,"customerName":"Tallulah Kirkland","phone":"(710) 371-8747","email":"turpis.vitae@protonmail.net","address":"Ap #778-7766 Est St.","postalZip":"57311","country":"Indonesia"},{"customerId":900,"customerName":"Laith Bell","phone":"(893) 690-8661","email":"sed.eu.eros@hotmail.com","address":"Ap #325-1564 Ut St.","postalZip":"497439","country":"South Africa"},{"customerId":901,"customerName":"Quon Stephens","phone":"(818) 985-7538","email":"sit.amet@outlook.net","address":"901-7663 Dictum Avenue","postalZip":"38284","country":"Belgium"},{"customerId":902,"customerName":"Shad Chang","phone":"1-527-865-4263","email":"risus.morbi@google.com","address":"623-5201 Aliquet. Av.","postalZip":"48228","country":"Norway"},{"customerId":903,"customerName":"Aurelia Silva","phone":"(839) 527-4353","email":"non.dapibus@google.org","address":"Ap #222-9662 Varius St.","postalZip":"16773","country":"Australia"},{"customerId":904,"customerName":"Forrest Kelley","phone":"1-621-820-6822","email":"et.magnis@outlook.net","address":"7082 Sagittis St.","postalZip":"546966","country":"Ireland"},{"customerId":905,"customerName":"Upton Miles","phone":"1-743-519-6755","email":"elit.erat.vitae@yahoo.edu","address":"P.O. Box 317, 6564 Interdum St.","postalZip":"7957","country":"Austria"},{"customerId":906,"customerName":"Zia Randall","phone":"(288) 382-5107","email":"primis.in@protonmail.net","address":"952-8194 Arcu. Rd.","postalZip":"43263","country":"Singapore"},{"customerId":907,"customerName":"Lacey Maddox","phone":"1-303-603-3635","email":"dolor.tempus@protonmail.org","address":"Ap #608-7831 Facilisis St.","postalZip":"64856","country":"Ireland"},{"customerId":908,"customerName":"Scott Haley","phone":"1-745-309-7551","email":"eu@google.couk","address":"1856 Ac Street","postalZip":"935096","country":"Russian Federation"},{"customerId":909,"customerName":"Maite Dyer","phone":"(254) 654-5465","email":"in.scelerisque@yahoo.ca","address":"Ap #293-7870 Tincidunt St.","postalZip":"76173-41626","country":"Chile"},{"customerId":910,"customerName":"Timon Tanner","phone":"1-533-624-6173","email":"eget.massa@hotmail.org","address":"481-6415 Nascetur St.","postalZip":"85563","country":"France"},{"customerId":911,"customerName":"Caldwell Mcpherson","phone":"1-241-617-6537","email":"elit.sed.consequat@outlook.org","address":"P.O. Box 857, 9466 Ipsum Avenue","postalZip":"3375","country":"Mexico"},{"customerId":912,"customerName":"Clinton Sloan","phone":"1-272-313-5420","email":"turpis.non@icloud.ca","address":"657-8967 Risus. St.","postalZip":"27833","country":"Mexico"},{"customerId":913,"customerName":"Jocelyn Moore","phone":"1-895-833-3862","email":"erat.volutpat@hotmail.com","address":"P.O. Box 469, 1402 At Rd.","postalZip":"69151-88340","country":"China"},{"customerId":914,"customerName":"Lamar Frost","phone":"(781) 854-8743","email":"eu.nibh@outlook.com","address":"6341 At St.","postalZip":"06496","country":"South Africa"},{"customerId":915,"customerName":"Axel Roth","phone":"1-845-403-2013","email":"non.cursus@aol.couk","address":"P.O. Box 162, 6074 Vulputate St.","postalZip":"8434","country":"France"},{"customerId":916,"customerName":"Wade Sloan","phone":"(726) 945-5788","email":"in.magna@google.net","address":"234-4912 Nunc. Road","postalZip":"429441","country":"Austria"},{"customerId":917,"customerName":"Elizabeth Rich","phone":"1-721-199-1325","email":"integer.id.magna@google.org","address":"Ap #205-4303 Natoque Av.","postalZip":"32356","country":"United Kingdom"},{"customerId":918,"customerName":"Buffy Gutierrez","phone":"1-877-762-8235","email":"ac.fermentum.vel@aol.com","address":"700-1480 Est, Rd.","postalZip":"10151","country":"Nigeria"},{"customerId":919,"customerName":"Sara Schneider","phone":"(987) 216-9299","email":"aenean.gravida@hotmail.org","address":"708-7047 Ac Road","postalZip":"7942","country":"Indonesia"},{"customerId":920,"customerName":"Colton Jefferson","phone":"(580) 735-6818","email":"nisl.nulla@hotmail.net","address":"1117 Parturient Ave","postalZip":"73725","country":"Russian Federation"},{"customerId":921,"customerName":"Dexter Ochoa","phone":"1-725-148-6256","email":"lacinia.at@yahoo.org","address":"P.O. Box 456, 3422 Sit Ave","postalZip":"1254","country":"France"},{"customerId":922,"customerName":"Adele English","phone":"1-503-633-2654","email":"gravida.molestie@icloud.net","address":"2238 Amet Road","postalZip":"30697","country":"Canada"},{"customerId":923,"customerName":"Omar Mcleod","phone":"1-134-392-7889","email":"laoreet.posuere@google.org","address":"5954 Pede, St.","postalZip":"872786","country":"Vietnam"},{"customerId":924,"customerName":"Ciara Holcomb","phone":"1-583-372-7555","email":"luctus.ut.pellentesque@protonmail.ca","address":"4796 Metus St.","postalZip":"62874","country":"Philippines"},{"customerId":925,"customerName":"Regina Atkinson","phone":"(534) 258-5425","email":"lorem@google.edu","address":"Ap #402-8294 Mauris Ave","postalZip":"15267","country":"Pakistan"},{"customerId":926,"customerName":"Damian Hampton","phone":"(462) 903-4041","email":"tempus.non@icloud.org","address":"Ap #438-7817 Pede Street","postalZip":"6321","country":"Norway"},{"customerId":927,"customerName":"Lavinia Barton","phone":"1-531-751-3961","email":"augue@hotmail.net","address":"Ap #426-4097 Aliquet Rd.","postalZip":"3872","country":"Canada"},{"customerId":928,"customerName":"Orli Lewis","phone":"(473) 492-3227","email":"auctor@aol.org","address":"8765 Egestas St.","postalZip":"42374","country":"Ukraine"},{"customerId":929,"customerName":"Patience Maxwell","phone":"1-443-417-6659","email":"tempus.risus@outlook.ca","address":"615-716 A, St.","postalZip":"747669","country":"Spain"},{"customerId":930,"customerName":"Urielle Mckinney","phone":"1-587-151-6352","email":"dui.cum@outlook.ca","address":"Ap #876-9997 Ac Avenue","postalZip":"5325","country":"Peru"},{"customerId":931,"customerName":"Sade Tran","phone":"1-508-329-7233","email":"ipsum.cursus@aol.edu","address":"P.O. Box 807, 5999 Vitae, Road","postalZip":"53736-56842","country":"Ireland"},{"customerId":932,"customerName":"Graham Morales","phone":"(993) 262-1871","email":"arcu.eu.odio@yahoo.edu","address":"Ap #711-5399 Arcu. St.","postalZip":"54-235","country":"Poland"},{"customerId":933,"customerName":"Merrill Booth","phone":"(969) 655-6452","email":"massa@yahoo.edu","address":"3631 Libero St.","postalZip":"485279","country":"United Kingdom"},{"customerId":934,"customerName":"Quin Farley","phone":"1-427-843-1463","email":"malesuada@yahoo.edu","address":"933-1916 Donec St.","postalZip":"34864","country":"China"},{"customerId":935,"customerName":"Chase Jordan","phone":"1-366-526-4663","email":"dolor.elit.pellentesque@yahoo.ca","address":"P.O. Box 163, 9960 Pellentesque Road","postalZip":"04599-64083","country":"United States"},{"customerId":936,"customerName":"Travis Walters","phone":"1-831-614-0583","email":"erat.vel@protonmail.org","address":"P.O. Box 848, 5042 In Av.","postalZip":"728258","country":"China"},{"customerId":937,"customerName":"Aspen Campbell","phone":"1-985-344-7859","email":"mus.aenean@yahoo.couk","address":"533 Ipsum Avenue","postalZip":"927535","country":"Peru"},{"customerId":938,"customerName":"Graham Mcmahon","phone":"(124) 415-1304","email":"maecenas@protonmail.edu","address":"Ap #582-5744 Nec Rd.","postalZip":"882466","country":"Colombia"},{"customerId":939,"customerName":"Francis Evans","phone":"(521) 395-7885","email":"sem.nulla.interdum@protonmail.com","address":"811-190 Non Rd.","postalZip":"47576","country":"Netherlands"},{"customerId":940,"customerName":"Martha Lee","phone":"(300) 237-1457","email":"fringilla.ornare@google.net","address":"Ap #926-7942 Est. Ave","postalZip":"851530","country":"South Africa"},{"customerId":941,"customerName":"Helen Foley","phone":"1-609-820-7112","email":"id.ante@outlook.net","address":"9531 Non Ave","postalZip":"46431-684","country":"Indonesia"},{"customerId":942,"customerName":"Zeus Byers","phone":"1-613-708-2182","email":"id.sapien@hotmail.edu","address":"9951 Consequat St.","postalZip":"62922","country":"South Korea"},{"customerId":943,"customerName":"Marsden Norman","phone":"1-341-273-4286","email":"ipsum.nunc@google.couk","address":"Ap #795-1007 Facilisis Avenue","postalZip":"44277","country":"China"},{"customerId":944,"customerName":"Gabriel Melendez","phone":"(770) 224-3114","email":"arcu.ac@outlook.couk","address":"Ap #155-1057 Vel Road","postalZip":"519282","country":"Sweden"},{"customerId":945,"customerName":"Macaulay Dalton","phone":"(551) 710-9454","email":"ornare.elit@aol.net","address":"330-4789 Scelerisque Street","postalZip":"344643","country":"Mexico"},{"customerId":946,"customerName":"Indira Larson","phone":"(612) 289-2228","email":"egestas.sed@outlook.couk","address":"Ap #694-987 Lorem Avenue","postalZip":"J1M 6S6","country":"Mexico"},{"customerId":947,"customerName":"Lisandra Jones","phone":"1-245-157-4874","email":"tempus.eu@aol.com","address":"9993 Faucibus Ave","postalZip":"30387","country":"France"},{"customerId":948,"customerName":"Bruce Abbott","phone":"(200) 764-1300","email":"lorem.fringilla@hotmail.com","address":"P.O. Box 307, 208 Enim. Rd.","postalZip":"34587","country":"Norway"},{"customerId":949,"customerName":"Amos Gibbs","phone":"1-836-859-9683","email":"nec.urna@google.ca","address":"954-2928 Eu, Street","postalZip":"89445-593","country":"France"},{"customerId":950,"customerName":"Brenda Dejesus","phone":"(768) 867-6715","email":"at.sem@icloud.com","address":"P.O. Box 525, 3212 Aliquet Avenue","postalZip":"11951","country":"Russian Federation"},{"customerId":951,"customerName":"Madonna Aguirre","phone":"1-958-725-7792","email":"aliquam.nec.enim@hotmail.ca","address":"8532 Inceptos St.","postalZip":"162175","country":"South Africa"},{"customerId":952,"customerName":"Adria Wells","phone":"1-274-813-1556","email":"faucibus@icloud.edu","address":"849-4155 Mollis. Avenue","postalZip":"41918","country":"Poland"},{"customerId":953,"customerName":"Ayanna Case","phone":"1-230-785-5557","email":"arcu.iaculis.enim@outlook.edu","address":"373-2601 Consectetuer Rd.","postalZip":"612727","country":"Mexico"},{"customerId":954,"customerName":"Dawn Rhodes","phone":"1-602-268-1478","email":"massa.rutrum@icloud.ca","address":"P.O. Box 708, 6403 Conubia Road","postalZip":"65888","country":"Brazil"},{"customerId":955,"customerName":"Kelly Delacruz","phone":"1-413-974-6640","email":"elit.elit@yahoo.net","address":"6302 Scelerisque Ave","postalZip":"4437","country":"Ukraine"},{"customerId":956,"customerName":"Fatima Parsons","phone":"1-453-618-5576","email":"lobortis@hotmail.com","address":"P.O. Box 126, 3973 Ante St.","postalZip":"65221-108","country":"Australia"},{"customerId":957,"customerName":"Stone Christian","phone":"1-853-758-5363","email":"consectetuer.ipsum@protonmail.ca","address":"Ap #604-6420 Nunc St.","postalZip":"97748","country":"Norway"},{"customerId":958,"customerName":"Philip Mejia","phone":"1-836-348-1421","email":"est.mollis.non@outlook.org","address":"P.O. Box 875, 7017 Vel St.","postalZip":"2518","country":"South Korea"},{"customerId":959,"customerName":"Xantha Burnett","phone":"(950) 347-1125","email":"nibh@google.edu","address":"144-6941 Sapien, Rd.","postalZip":"1112","country":"Peru"},{"customerId":960,"customerName":"Kameko Collier","phone":"1-920-939-8935","email":"luctus.felis.purus@aol.ca","address":"P.O. Box 984, 1468 Parturient Rd.","postalZip":"5676","country":"Mexico"},{"customerId":961,"customerName":"Holmes Butler","phone":"1-161-335-8829","email":"sem.magna@google.net","address":"943 Ut, St.","postalZip":"64877","country":"Spain"},{"customerId":962,"customerName":"Olivia Gallagher","phone":"1-868-686-0406","email":"ac.mi@icloud.net","address":"P.O. Box 740, 6114 Adipiscing St.","postalZip":"7271","country":"Netherlands"},{"customerId":963,"customerName":"Kelsey Moran","phone":"(453) 764-1048","email":"est@aol.net","address":"605-1372 Sodales Avenue","postalZip":"48430","country":"India"},{"customerId":964,"customerName":"Gray Rollins","phone":"1-918-258-3389","email":"eget.lacus@aol.ca","address":"Ap #903-7570 Lectus Av.","postalZip":"V7 7SH","country":"Pakistan"},{"customerId":965,"customerName":"Martena Ochoa","phone":"(561) 338-6364","email":"arcu@protonmail.org","address":"157-5745 Ipsum Rd.","postalZip":"460925","country":"Pakistan"},{"customerId":966,"customerName":"Hamilton Morin","phone":"(503) 821-2144","email":"integer.urna@aol.net","address":"242-6500 Cras Avenue","postalZip":"15523","country":"China"},{"customerId":967,"customerName":"Cecilia Marks","phone":"(835) 984-3049","email":"nec@yahoo.net","address":"P.O. Box 917, 3781 Phasellus Street","postalZip":"94686","country":"Pakistan"},{"customerId":968,"customerName":"Jessamine Saunders","phone":"(585) 363-1684","email":"in.lobortis.tellus@yahoo.couk","address":"Ap #947-7107 Molestie Rd.","postalZip":"353800","country":"Spain"},{"customerId":969,"customerName":"Kennan Alston","phone":"1-439-615-5885","email":"lobortis.quis.pede@hotmail.org","address":"Ap #585-6008 Natoque Av.","postalZip":"42433","country":"Netherlands"},{"customerId":970,"customerName":"Frances Mcmillan","phone":"(484) 538-7663","email":"erat.volutpat.nulla@aol.com","address":"1911 Phasellus Road","postalZip":"76L 8W8","country":"India"},{"customerId":971,"customerName":"Inga Bauer","phone":"(302) 374-9235","email":"ipsum.primis@aol.net","address":"Ap #774-3768 Ridiculus Avenue","postalZip":"15052","country":"Spain"},{"customerId":972,"customerName":"Anthony Blevins","phone":"1-556-833-4262","email":"vitae.odio@outlook.com","address":"6624 Vivamus Street","postalZip":"191871","country":"Costa Rica"},{"customerId":973,"customerName":"Ann Mason","phone":"(231) 641-4517","email":"sed.molestie.sed@yahoo.ca","address":"705-8650 Cursus St.","postalZip":"426539","country":"Belgium"},{"customerId":974,"customerName":"Ursa Stafford","phone":"(488) 575-8823","email":"libero@icloud.ca","address":"3815 Dignissim. St.","postalZip":"77-498","country":"Australia"},{"customerId":975,"customerName":"Jonah Duncan","phone":"(462) 764-2513","email":"condimentum.eget@protonmail.net","address":"789-7025 Dolor Av.","postalZip":"44100-948","country":"Australia"},{"customerId":976,"customerName":"Rogan Calhoun","phone":"1-473-293-9553","email":"vel.turpis@google.net","address":"Ap #212-936 Nunc. Road","postalZip":"85607","country":"Brazil"},{"customerId":977,"customerName":"Thane Rivera","phone":"1-718-239-6854","email":"ultrices@google.org","address":"4381 Pede Street","postalZip":"749581","country":"Belgium"},{"customerId":978,"customerName":"Justina Gay","phone":"(937) 387-5284","email":"cursus.et@hotmail.org","address":"3656 Mus. Rd.","postalZip":"14487","country":"Chile"},{"customerId":979,"customerName":"Adria Banks","phone":"1-859-887-5987","email":"dolor.sit@outlook.edu","address":"216-4692 Duis St.","postalZip":"86436","country":"South Korea"},{"customerId":980,"customerName":"Kelsey Moran","phone":"(478) 819-4431","email":"metus.sit@protonmail.com","address":"Ap #541-5522 Lacus. Street","postalZip":"82117","country":"Peru"},{"customerId":981,"customerName":"Cynthia Meyers","phone":"1-292-171-4752","email":"risus.at@aol.couk","address":"257-7916 Nullam Street","postalZip":"3456","country":"Poland"},{"customerId":982,"customerName":"Arthur Robbins","phone":"(223) 239-3905","email":"euismod.enim@yahoo.edu","address":"Ap #687-7105 At Ave","postalZip":"12866","country":"Indonesia"},{"customerId":983,"customerName":"Quemby Macdonald","phone":"(547) 527-5482","email":"et@google.ca","address":"8385 Leo Av.","postalZip":"6980","country":"Italy"},{"customerId":984,"customerName":"Gage Nicholson","phone":"(524) 160-7989","email":"pellentesque.tellus@outlook.org","address":"P.O. Box 395, 230 Nunc St.","postalZip":"710437","country":"Colombia"},{"customerId":985,"customerName":"Charles Mccullough","phone":"1-427-715-4713","email":"tempor.diam@icloud.ca","address":"526-8007 Ut Rd.","postalZip":"535843","country":"Ireland"},{"customerId":986,"customerName":"Holly Bolton","phone":"(374) 520-7920","email":"in.faucibus.orci@aol.ca","address":"Ap #713-4176 Eleifend. St.","postalZip":"87493","country":"Belgium"},{"customerId":987,"customerName":"Lysandra Mcpherson","phone":"1-403-226-4192","email":"vulputate@google.couk","address":"4290 Ligula Street","postalZip":"42-13","country":"Australia"},{"customerId":988,"customerName":"Dora Rollins","phone":"(744) 645-0189","email":"metus@google.net","address":"144-3498 Sem, St.","postalZip":"8725 WM","country":"Norway"},{"customerId":989,"customerName":"Germane Clay","phone":"1-401-848-6048","email":"orci.luctus@icloud.com","address":"4451 Pharetra Road","postalZip":"73-094","country":"Singapore"},{"customerId":990,"customerName":"Hu Carrillo","phone":"(803) 178-4184","email":"ultrices.mauris@google.com","address":"Ap #570-6629 Non, Avenue","postalZip":"399243","country":"Brazil"},{"customerId":991,"customerName":"Ezekiel Webster","phone":"1-572-614-4388","email":"commodo.auctor.velit@hotmail.org","address":"Ap #935-3203 Vivamus Rd.","postalZip":"3527","country":"Ukraine"},{"customerId":992,"customerName":"Lacy Snow","phone":"(743) 434-6333","email":"augue.porttitor@hotmail.ca","address":"522-4690 Purus. Street","postalZip":"493283","country":"Vietnam"},{"customerId":993,"customerName":"Quin Joyner","phone":"1-185-311-5577","email":"non.enim@yahoo.couk","address":"705-2787 Nulla. Rd.","postalZip":"11647-35869","country":"Italy"},{"customerId":994,"customerName":"Fiona Mathis","phone":"1-824-222-5041","email":"libero.proin@google.edu","address":"P.O. Box 647, 4198 Sed Rd.","postalZip":"597431","country":"France"},{"customerId":995,"customerName":"Basia Skinner","phone":"(555) 185-9729","email":"nunc.nulla@outlook.ca","address":"9754 Proin Street","postalZip":"225528","country":"France"},{"customerId":996,"customerName":"Hashim Mcbride","phone":"(346) 751-6442","email":"metus@outlook.couk","address":"Ap #838-4039 Lobortis, St.","postalZip":"53-024","country":"Norway"},{"customerId":997,"customerName":"Rooney Lynch","phone":"1-487-422-2875","email":"aliquam.arcu@aol.ca","address":"648-2993 Sed, Road","postalZip":"6513","country":"Ireland"},{"customerId":998,"customerName":"Leila Fox","phone":"1-341-444-3115","email":"sem@outlook.edu","address":"Ap #459-9582 Non Rd.","postalZip":"81222","country":"Pakistan"},{"customerId":999,"customerName":"Brynne Branch","phone":"(288) 310-8139","email":"non.luctus@yahoo.org","address":"Ap #177-7697 Scelerisque Road","postalZip":"52949","country":"Italy"},{"customerId":1000,"customerName":"Keane Shelton","phone":"1-346-394-1095","email":"duis.cursus@aol.ca","address":"P.O. Box 746, 9534 Id, Rd.","postalZip":"72-99","country":"Sweden"},{"customerId":1001,"customerName":"Ariana Gallagher","phone":"(641) 245-7160","email":"nunc.est.mollis@hotmail.ca","address":"957-8413 Tincidunt, Ave","postalZip":"13388-198","country":"Turkey"},{"customerId":1002,"customerName":"Dieter Cleveland","phone":"1-241-428-6807","email":"tortor.integer@yahoo.ca","address":"Ap #877-9843 Ligula Road","postalZip":"1582-2940","country":"Netherlands"},{"customerId":1003,"customerName":"Rahim Tanner","phone":"1-570-418-6621","email":"donec.fringilla@icloud.org","address":"6638 Orci Avenue","postalZip":"258854","country":"China"},{"customerId":1004,"customerName":"Brady Ruiz","phone":"1-354-841-1142","email":"iaculis.enim@yahoo.couk","address":"4636 Donec Road","postalZip":"87618","country":"Costa Rica"},{"customerId":1005,"customerName":"Dora Walsh","phone":"1-256-412-0822","email":"nunc.risus.varius@icloud.org","address":"576-5293 Velit St.","postalZip":"68582","country":"Ireland"},{"customerId":1006,"customerName":"Ora Ochoa","phone":"(364) 571-9386","email":"nibh.aliquam@protonmail.com","address":"7788 Sed Avenue","postalZip":"67334","country":"South Korea"},{"customerId":1007,"customerName":"Moses Blair","phone":"1-220-451-1713","email":"commodo.at.libero@aol.ca","address":"928-296 Sit St.","postalZip":"174531","country":"Turkey"},{"customerId":1008,"customerName":"Jenna Clay","phone":"1-844-514-1457","email":"at@aol.net","address":"712-4619 Mauris, Rd.","postalZip":"912471","country":"Poland"},{"customerId":1009,"customerName":"Quynn Contreras","phone":"1-177-616-7856","email":"donec.nibh@yahoo.ca","address":"4981 Commodo Avenue","postalZip":"023512","country":"Colombia"},{"customerId":1010,"customerName":"Jeanette Gray","phone":"(762) 811-9255","email":"nullam@aol.org","address":"522-5179 Neque St.","postalZip":"R1Y 2KI","country":"Pakistan"},{"customerId":1011,"customerName":"Minerva Shaw","phone":"1-531-439-8381","email":"et.netus@outlook.ca","address":"885-6589 Suspendisse Rd.","postalZip":"1873","country":"Ukraine"},{"customerId":1012,"customerName":"Lamar Maddox","phone":"(530) 332-4351","email":"sed.sem@aol.edu","address":"840-1307 Mauris Street","postalZip":"91128-55184","country":"New Zealand"},{"customerId":1013,"customerName":"Gregory Gomez","phone":"(891) 431-4536","email":"fermentum.fermentum@protonmail.ca","address":"P.O. Box 969, 845 Pharetra Rd.","postalZip":"03115","country":"Singapore"},{"customerId":1014,"customerName":"Cody Holden","phone":"(550) 427-4608","email":"gravida.nunc.sed@icloud.net","address":"742-9148 Aenean St.","postalZip":"25260","country":"Colombia"},{"customerId":1015,"customerName":"Emmanuel Riggs","phone":"1-912-331-6058","email":"taciti.sociosqu@yahoo.edu","address":"Ap #971-8106 Nec Av.","postalZip":"622627","country":"Ireland"},{"customerId":1016,"customerName":"Caldwell Duran","phone":"1-468-665-2707","email":"egestas.hendrerit@protonmail.net","address":"1006 Proin Avenue","postalZip":"50207","country":"Peru"},{"customerId":1017,"customerName":"Daniel Mcdonald","phone":"(543) 736-7397","email":"accumsan.sed@google.org","address":"8050 Vivamus Av.","postalZip":"C3T 9V1","country":"South Korea"},{"customerId":1018,"customerName":"Oprah Hebert","phone":"(325) 345-6944","email":"vehicula.aliquet@hotmail.ca","address":"P.O. Box 516, 8769 Fames Av.","postalZip":"2423","country":"Ukraine"},{"customerId":1019,"customerName":"Cadman Conrad","phone":"(728) 281-1819","email":"volutpat.nunc.sit@hotmail.net","address":"Ap #590-914 Velit. Street","postalZip":"9805 RI","country":"Singapore"},{"customerId":1020,"customerName":"Kasimir Cortez","phone":"1-206-137-2017","email":"ante.lectus@google.com","address":"351-6955 Posuere, Av.","postalZip":"826698","country":"Colombia"},{"customerId":1021,"customerName":"Cynthia Boone","phone":"(508) 698-5167","email":"sed.orci@aol.net","address":"1708 Tincidunt Ave","postalZip":"44341-764","country":"Mexico"},{"customerId":1022,"customerName":"Herman Glass","phone":"1-168-238-3032","email":"mauris@google.com","address":"P.O. Box 206, 2392 Felis Street","postalZip":"56547","country":"Ireland"},{"customerId":1023,"customerName":"Nash English","phone":"(553) 788-2625","email":"et.magnis@yahoo.edu","address":"Ap #508-8133 Ac, Rd.","postalZip":"42-211","country":"Brazil"},{"customerId":1024,"customerName":"Gavin Mcgee","phone":"1-147-539-3812","email":"tempus.scelerisque@protonmail.org","address":"850-422 Feugiat Street","postalZip":"10347-23032","country":"Colombia"},{"customerId":1025,"customerName":"Paul Moss","phone":"(473) 820-2758","email":"eu.odio@google.edu","address":"832-8547 Non Rd.","postalZip":"82761","country":"Sweden"},{"customerId":1026,"customerName":"Marah Summers","phone":"1-445-248-4535","email":"iaculis.aliquet@hotmail.com","address":"P.O. Box 537, 8161 Risus Avenue","postalZip":"72571","country":"Peru"},{"customerId":1027,"customerName":"Hannah Hobbs","phone":"(636) 221-8122","email":"velit@aol.couk","address":"8199 Mattis Avenue","postalZip":"52254","country":"Vietnam"},{"customerId":1028,"customerName":"Ishmael David","phone":"1-634-546-7937","email":"sollicitudin.a@icloud.couk","address":"Ap #630-2933 Amet Av.","postalZip":"9962","country":"New Zealand"},{"customerId":1029,"customerName":"Cassidy Sparks","phone":"1-711-258-2412","email":"eleifend.egestas.sed@hotmail.org","address":"489-3034 Elit, Rd.","postalZip":"4729","country":"Peru"},{"customerId":1030,"customerName":"Mira Holland","phone":"(364) 476-7833","email":"dignissim.maecenas@outlook.edu","address":"164-643 Sed, St.","postalZip":"48024","country":"Peru"},{"customerId":1031,"customerName":"Robert Marquez","phone":"(921) 589-2158","email":"at.sem.molestie@outlook.com","address":"Ap #439-2737 Blandit St.","postalZip":"75-687","country":"France"},{"customerId":1032,"customerName":"Yoko Ashley","phone":"(730) 635-2298","email":"velit.justo.nec@hotmail.com","address":"Ap #373-2310 Sapien, Rd.","postalZip":"1448","country":"Germany"},{"customerId":1033,"customerName":"Joel Jenkins","phone":"(707) 809-3532","email":"maecenas.malesuada@icloud.couk","address":"P.O. Box 129, 7723 Ac Rd.","postalZip":"9486","country":"United Kingdom"},{"customerId":1034,"customerName":"Odette Gallegos","phone":"(851) 787-2816","email":"tincidunt.vehicula.risus@icloud.net","address":"591-844 Fringilla. Road","postalZip":"3047","country":"Pakistan"},{"customerId":1035,"customerName":"Mariko Velazquez","phone":"1-165-379-5034","email":"donec.tempus.lorem@aol.ca","address":"9630 Gravida Road","postalZip":"87735","country":"Singapore"},{"customerId":1036,"customerName":"Cain Beach","phone":"1-588-385-1677","email":"bibendum@aol.edu","address":"P.O. Box 817, 5584 Ipsum Road","postalZip":"68480","country":"Spain"},{"customerId":1037,"customerName":"Sierra Mills","phone":"(726) 555-1837","email":"mauris@google.org","address":"240-2253 Fermentum Rd.","postalZip":"25246-087","country":"Ireland"},{"customerId":1038,"customerName":"Kadeem Richards","phone":"(684) 147-4282","email":"morbi@aol.org","address":"315-1103 Suspendisse Rd.","postalZip":"DM1V 9BE","country":"Spain"},{"customerId":1039,"customerName":"Allistair Rutledge","phone":"(514) 528-5537","email":"mollis.integer@protonmail.net","address":"199-4270 Lobortis Road","postalZip":"88827","country":"Singapore"},{"customerId":1040,"customerName":"Chastity Whitley","phone":"(490) 767-2223","email":"quam.quis@aol.org","address":"Ap #910-8270 Pede Street","postalZip":"29536","country":"Italy"},{"customerId":1041,"customerName":"Beatrice Powers","phone":"1-587-326-9593","email":"velit.eu.sem@protonmail.com","address":"260-8757 Conubia Av.","postalZip":"46-44","country":"Netherlands"},{"customerId":1042,"customerName":"Reese Cohen","phone":"1-363-964-4177","email":"bibendum.fermentum@icloud.ca","address":"P.O. Box 594, 900 Et Ave","postalZip":"831474","country":"Nigeria"},{"customerId":1043,"customerName":"Yael Casey","phone":"(322) 547-1593","email":"consequat.lectus.sit@outlook.org","address":"P.O. Box 811, 9733 Tincidunt Avenue","postalZip":"548718","country":"Nigeria"},{"customerId":1044,"customerName":"Eagan Watts","phone":"(145) 750-8246","email":"egestas.fusce.aliquet@hotmail.edu","address":"P.O. Box 213, 5059 Eu Street","postalZip":"25246-41217","country":"Brazil"},{"customerId":1045,"customerName":"Amber Walters","phone":"1-148-169-2585","email":"massa@hotmail.edu","address":"Ap #420-7879 Vulputate, St.","postalZip":"04734","country":"Norway"},{"customerId":1046,"customerName":"Todd Bradford","phone":"(788) 884-3024","email":"ut.erat@outlook.com","address":"7278 Posuere Ave","postalZip":"781684","country":"China"},{"customerId":1047,"customerName":"Brendan Diaz","phone":"1-826-216-4856","email":"tempus@aol.org","address":"923-6416 Diam Street","postalZip":"03262-31584","country":"Sweden"},{"customerId":1048,"customerName":"Keaton Greer","phone":"(117) 892-7302","email":"nec.urna@outlook.com","address":"Ap #828-6847 Mauris Road","postalZip":"875327","country":"United Kingdom"},{"customerId":1049,"customerName":"Danielle Higgins","phone":"1-575-353-5252","email":"sed.dictum.proin@outlook.org","address":"P.O. Box 609, 8360 Libero Rd.","postalZip":"73660-08243","country":"Indonesia"},{"customerId":1050,"customerName":"Lucius Keith","phone":"(203) 293-5528","email":"nulla.eget.metus@google.couk","address":"616-8765 Turpis. Ave","postalZip":"45511","country":"Peru"},{"customerId":1051,"customerName":"Aspen James","phone":"1-517-328-5524","email":"lorem.fringilla.ornare@google.ca","address":"591-522 Primis Avenue","postalZip":"16341","country":"Netherlands"},{"customerId":1052,"customerName":"Kitra Marshall","phone":"(783) 862-4799","email":"nulla.donec@yahoo.couk","address":"P.O. Box 473, 5243 Aliquam Road","postalZip":"73-56","country":"Indonesia"},{"customerId":1053,"customerName":"Ivana Gibson","phone":"(267) 430-1406","email":"diam@protonmail.edu","address":"Ap #169-612 Accumsan St.","postalZip":"768017","country":"Singapore"},{"customerId":1054,"customerName":"Stacey Pennington","phone":"1-266-858-4381","email":"est.congue@outlook.com","address":"528-9940 Vivamus Rd.","postalZip":"25744","country":"Colombia"},{"customerId":1055,"customerName":"Jin Witt","phone":"(248) 264-8545","email":"vel.est@protonmail.org","address":"Ap #376-7684 Nunc St.","postalZip":"7689","country":"South Africa"},{"customerId":1056,"customerName":"Cody Adams","phone":"1-447-838-3049","email":"elit.fermentum@icloud.net","address":"Ap #690-8326 Velit St.","postalZip":"SP28 9UU","country":"India"},{"customerId":1057,"customerName":"Dora Winters","phone":"(426) 866-7651","email":"risus.quis@outlook.com","address":"7692 Vivamus St.","postalZip":"2742 GW","country":"India"},{"customerId":1058,"customerName":"Alika Noble","phone":"1-763-392-2802","email":"urna.justo@google.com","address":"6135 Velit. St.","postalZip":"905227","country":"China"},{"customerId":1059,"customerName":"Kibo Johnson","phone":"1-864-565-1385","email":"quisque.libero@outlook.net","address":"Ap #702-7679 Ultrices Street","postalZip":"07050","country":"Netherlands"},{"customerId":1060,"customerName":"Rylee Anderson","phone":"1-611-755-1689","email":"libero.et@hotmail.org","address":"P.O. Box 975, 3746 In Street","postalZip":"477914","country":"United States"},{"customerId":1061,"customerName":"Marshall Koch","phone":"(411) 523-4501","email":"nam.consequat.dolor@protonmail.net","address":"Ap #247-5935 Nec Street","postalZip":"446337","country":"United Kingdom"},{"customerId":1062,"customerName":"Alexander Nicholson","phone":"1-569-580-2732","email":"dignissim.maecenas.ornare@icloud.org","address":"986-9730 Molestie. Avenue","postalZip":"33859","country":"Ireland"},{"customerId":1063,"customerName":"Owen Bridges","phone":"1-576-206-1581","email":"lorem.auctor@icloud.edu","address":"Ap #535-4368 Ac Rd.","postalZip":"723362","country":"Ireland"},{"customerId":1064,"customerName":"Jennifer Mosley","phone":"(585) 231-8686","email":"lobortis.quam.a@outlook.ca","address":"P.O. Box 115, 6594 Quis Road","postalZip":"354543","country":"France"},{"customerId":1065,"customerName":"Elijah Randolph","phone":"(202) 442-4167","email":"vulputate.posuere@icloud.org","address":"P.O. Box 164, 5081 Amet Street","postalZip":"49914","country":"France"},{"customerId":1066,"customerName":"Hadley Knox","phone":"(191) 667-1973","email":"consectetuer.adipiscing@protonmail.edu","address":"495-4729 A, Av.","postalZip":"0110","country":"Turkey"},{"customerId":1067,"customerName":"Zelda Stone","phone":"1-558-567-7988","email":"nunc@google.edu","address":"Ap #482-9942 Dui Ave","postalZip":"3613 DE","country":"Mexico"},{"customerId":1068,"customerName":"Tate Mann","phone":"(117) 635-3662","email":"vitae.nibh.donec@protonmail.edu","address":"Ap #590-307 Semper Ave","postalZip":"KP76 6WI","country":"Vietnam"},{"customerId":1069,"customerName":"Elton Gould","phone":"(477) 266-7917","email":"erat.vel.pede@icloud.net","address":"P.O. Box 850, 4739 Consectetuer Road","postalZip":"3493","country":"Vietnam"},{"customerId":1070,"customerName":"Allistair Cohen","phone":"(863) 878-8640","email":"magna.praesent.interdum@protonmail.ca","address":"6475 Laoreet Av.","postalZip":"85794","country":"Philippines"},{"customerId":1071,"customerName":"Kalia Benjamin","phone":"1-853-794-3044","email":"ut.quam.vel@aol.net","address":"348-7185 Parturient St.","postalZip":"646015","country":"Turkey"},{"customerId":1072,"customerName":"Raven Henderson","phone":"(588) 366-6885","email":"integer.aliquam.adipiscing@icloud.edu","address":"Ap #913-7124 Nam Street","postalZip":"61843","country":"Belgium"},{"customerId":1073,"customerName":"Unity Pennington","phone":"(725) 834-8565","email":"nisi.magna@icloud.com","address":"617-6753 Etiam Rd.","postalZip":"S5C 4G0","country":"United Kingdom"},{"customerId":1074,"customerName":"Selma David","phone":"(521) 757-6781","email":"nunc@hotmail.com","address":"5999 Nulla Av.","postalZip":"633676","country":"Sweden"},{"customerId":1075,"customerName":"Mollie Moran","phone":"(543) 252-3367","email":"donec.egestas@icloud.edu","address":"9056 Duis Av.","postalZip":"301876","country":"Australia"},{"customerId":1076,"customerName":"Glenna Sosa","phone":"1-732-431-1548","email":"adipiscing.elit@yahoo.org","address":"507-9280 Auctor Street","postalZip":"36412","country":"Costa Rica"},{"customerId":1077,"customerName":"Daniel Tanner","phone":"1-234-351-8186","email":"suspendisse.commodo.tincidunt@icloud.couk","address":"752 Quis Rd.","postalZip":"23081","country":"Canada"},{"customerId":1078,"customerName":"Alana Herman","phone":"1-856-728-5444","email":"ultrices.posuere@outlook.org","address":"Ap #412-3114 Egestas. Street","postalZip":"181699","country":"Norway"},{"customerId":1079,"customerName":"Chester Bullock","phone":"1-656-895-8798","email":"vel.arcu@icloud.couk","address":"8472 Dolor. Avenue","postalZip":"42826","country":"Netherlands"},{"customerId":1080,"customerName":"Kamal Joyner","phone":"(845) 232-1459","email":"auctor@yahoo.ca","address":"Ap #334-6950 Amet, Rd.","postalZip":"8305","country":"Ukraine"},{"customerId":1081,"customerName":"Hedley Burks","phone":"(335) 570-2917","email":"imperdiet.dictum.magna@google.net","address":"6202 Est, Rd.","postalZip":"53446-285","country":"Australia"},{"customerId":1082,"customerName":"Igor Crosby","phone":"1-777-810-0582","email":"vivamus.rhoncus@icloud.org","address":"Ap #343-5545 Lobortis Avenue","postalZip":"1681-3208","country":"Sweden"},{"customerId":1083,"customerName":"Julian Dodson","phone":"1-906-263-3321","email":"ut@icloud.net","address":"604-4393 Natoque Av.","postalZip":"9431","country":"Peru"},{"customerId":1084,"customerName":"Steven Callahan","phone":"1-868-626-8530","email":"leo@yahoo.ca","address":"P.O. Box 688, 317 Metus Rd.","postalZip":"41466","country":"Russian Federation"},{"customerId":1085,"customerName":"Rosalyn Douglas","phone":"1-848-817-4238","email":"ante.lectus@outlook.edu","address":"368-3802 Aliquam Street","postalZip":"66617-480","country":"Austria"},{"customerId":1086,"customerName":"Raya Gillespie","phone":"(266) 563-1628","email":"vitae.risus@outlook.net","address":"Ap #522-9239 Fusce Road","postalZip":"116166","country":"Netherlands"},{"customerId":1087,"customerName":"Rhea Munoz","phone":"1-614-533-2099","email":"eu@yahoo.couk","address":"Ap #876-5161 Proin Street","postalZip":"4188","country":"United States"},{"customerId":1088,"customerName":"Kylan Brock","phone":"(662) 681-0156","email":"vulputate.risus@google.couk","address":"Ap #468-6891 Cubilia Rd.","postalZip":"30-286","country":"South Africa"},{"customerId":1089,"customerName":"Cairo Roth","phone":"1-617-885-9422","email":"inceptos.hymenaeos.mauris@protonmail.couk","address":"154-7919 Cursus. Street","postalZip":"1926-4231","country":"China"},{"customerId":1090,"customerName":"Amos Barrera","phone":"(629) 636-2417","email":"donec.nibh@protonmail.couk","address":"628-1708 Eget Street","postalZip":"43122","country":"United Kingdom"},{"customerId":1091,"customerName":"Adara Schultz","phone":"(315) 848-4318","email":"sem.molestie.sodales@aol.ca","address":"Ap #658-5506 Vestibulum Rd.","postalZip":"24540","country":"Netherlands"},{"customerId":1092,"customerName":"MacKensie Jacobs","phone":"(757) 258-9474","email":"consequat@hotmail.ca","address":"192-6726 Ipsum. Street","postalZip":"66-736","country":"Brazil"},{"customerId":1093,"customerName":"Lamar Knapp","phone":"1-671-486-7612","email":"nunc.pulvinar@hotmail.ca","address":"Ap #511-9259 Ultricies St.","postalZip":"1128","country":"Vietnam"},{"customerId":1094,"customerName":"Yoshio Noble","phone":"1-128-337-5122","email":"cursus.nunc.mauris@icloud.com","address":"Ap #878-2882 Aliquam Rd.","postalZip":"8266 ZQ","country":"Ireland"},{"customerId":1095,"customerName":"Eve Jarvis","phone":"(515) 785-2254","email":"vel.faucibus.id@hotmail.couk","address":"Ap #630-5639 Mollis Road","postalZip":"724885","country":"Sweden"},{"customerId":1096,"customerName":"Yvette Duke","phone":"1-355-784-3674","email":"pede.praesent@yahoo.net","address":"743-377 Iaculis, Rd.","postalZip":"4258 BV","country":"United States"},{"customerId":1097,"customerName":"Alyssa Hinton","phone":"(872) 832-0260","email":"faucibus.id.libero@yahoo.edu","address":"P.O. Box 589, 8074 Consectetuer Avenue","postalZip":"4233","country":"Mexico"},{"customerId":1098,"customerName":"Hyacinth Stafford","phone":"(634) 554-7716","email":"aenean.euismod@outlook.couk","address":"Ap #223-9590 Id, St.","postalZip":"278437","country":"Sweden"},{"customerId":1099,"customerName":"Cora Madden","phone":"1-877-714-2826","email":"lacus.quisque@yahoo.org","address":"P.O. Box 831, 9368 Est Ave","postalZip":"86745-14284","country":"United States"},{"customerId":1100,"customerName":"Dane Blackburn","phone":"(152) 405-2513","email":"pellentesque.ut@icloud.com","address":"Ap #901-9101 Eget, St.","postalZip":"5567","country":"Colombia"},{"customerId":1101,"customerName":"Melvin Weaver","phone":"(722) 372-6198","email":"ac.arcu@yahoo.edu","address":"Ap #933-3117 Ultricies Avenue","postalZip":"5411","country":"Austria"},{"customerId":1102,"customerName":"Castor Stevenson","phone":"1-956-610-1734","email":"nulla.aliquet@outlook.couk","address":"Ap #210-4589 Non Street","postalZip":"Y7C 6L1","country":"South Africa"},{"customerId":1103,"customerName":"Latifah Boyle","phone":"(268) 358-3508","email":"enim.commodo.hendrerit@yahoo.couk","address":"P.O. Box 675, 5130 Lorem Avenue","postalZip":"2264","country":"Nigeria"},{"customerId":1104,"customerName":"Juliet Roberson","phone":"1-546-184-6608","email":"mauris.ut@icloud.edu","address":"902-8841 Etiam Road","postalZip":"74147","country":"Philippines"},{"customerId":1105,"customerName":"Beatrice Bush","phone":"1-443-678-3571","email":"dapibus.rutrum@yahoo.ca","address":"Ap #104-522 Risus St.","postalZip":"518181","country":"Poland"},{"customerId":1106,"customerName":"Alice Ayala","phone":"1-568-422-7254","email":"dictum.sapien@google.edu","address":"Ap #488-8241 Natoque St.","postalZip":"510030","country":"Chile"},{"customerId":1107,"customerName":"Quentin Santana","phone":"1-662-407-7562","email":"amet.metus@aol.edu","address":"Ap #961-9610 Nullam St.","postalZip":"44814","country":"Pakistan"},{"customerId":1108,"customerName":"Darius Underwood","phone":"1-271-437-4785","email":"aliquam.fringilla@google.com","address":"P.O. Box 578, 4380 Sapien, Street","postalZip":"2894","country":"Poland"},{"customerId":1109,"customerName":"Adrienne Mccullough","phone":"1-445-842-8402","email":"lectus.rutrum.urna@aol.ca","address":"9973 Dui St.","postalZip":"0077-0443","country":"China"},{"customerId":1110,"customerName":"Logan Mcdaniel","phone":"(214) 932-2487","email":"faucibus@yahoo.org","address":"Ap #915-4053 Tellus Rd.","postalZip":"48153","country":"United Kingdom"},{"customerId":1111,"customerName":"Xavier William","phone":"(271) 624-0074","email":"id.magna.et@aol.ca","address":"387-7976 Scelerisque Av.","postalZip":"4688","country":"Brazil"},{"customerId":1112,"customerName":"Wyoming Solomon","phone":"1-724-835-9394","email":"consequat.purus.maecenas@outlook.net","address":"6859 Tempor Avenue","postalZip":"0667","country":"Nigeria"},{"customerId":1113,"customerName":"Lucy Mercado","phone":"1-718-647-2771","email":"ornare.lectus@google.net","address":"388-281 Ut Ave","postalZip":"76182","country":"Italy"},{"customerId":1114,"customerName":"Lee Barry","phone":"(482) 632-4144","email":"arcu.vivamus.sit@icloud.org","address":"Ap #733-294 Donec Ave","postalZip":"5267","country":"Ukraine"},{"customerId":1115,"customerName":"Mallory Meyers","phone":"(845) 369-9308","email":"aliquam.tincidunt@icloud.ca","address":"273-9646 Parturient Ave","postalZip":"68223-16370","country":"Turkey"},{"customerId":1116,"customerName":"Tanek Russo","phone":"1-161-720-6327","email":"orci.tincidunt@aol.net","address":"Ap #621-444 Aliquam Avenue","postalZip":"15882","country":"Belgium"},{"customerId":1117,"customerName":"Fleur Cash","phone":"1-172-397-9439","email":"magna.suspendisse.tristique@protonmail.edu","address":"4428 Pellentesque. Rd.","postalZip":"QG77 5VG","country":"Mexico"},{"customerId":1118,"customerName":"Robert Bray","phone":"(903) 618-3631","email":"non.bibendum@outlook.edu","address":"Ap #208-4373 Nulla Av.","postalZip":"399453","country":"Mexico"},{"customerId":1119,"customerName":"Portia Young","phone":"1-274-193-1726","email":"massa.non.ante@hotmail.org","address":"948-8716 Suspendisse Av.","postalZip":"72-41","country":"Chile"},{"customerId":1120,"customerName":"Dane Harris","phone":"1-805-371-3427","email":"est.tempor@icloud.org","address":"Ap #237-4085 Elit. St.","postalZip":"34624","country":"Philippines"},{"customerId":1121,"customerName":"Kelly Lloyd","phone":"1-480-842-3168","email":"ac.turpis@icloud.ca","address":"186-8823 Erat. St.","postalZip":"6342","country":"Colombia"},{"customerId":1122,"customerName":"Edward Walters","phone":"1-772-171-9420","email":"porttitor.tellus.non@outlook.couk","address":"Ap #513-3763 Risus, Av.","postalZip":"13236-44113","country":"New Zealand"},{"customerId":1123,"customerName":"Tatum Mcguire","phone":"(458) 318-8761","email":"at.velit@outlook.com","address":"310-6225 Quam Ave","postalZip":"7351","country":"New Zealand"},{"customerId":1124,"customerName":"Hayden Howell","phone":"(645) 782-7079","email":"nisi.sem@yahoo.net","address":"Ap #151-929 Ipsum Avenue","postalZip":"8813","country":"Spain"},{"customerId":1125,"customerName":"Lawrence Stein","phone":"1-823-902-6126","email":"turpis.egestas@yahoo.org","address":"Ap #543-1025 Mauris St.","postalZip":"483528","country":"Ukraine"},{"customerId":1126,"customerName":"Fulton Navarro","phone":"(289) 500-0651","email":"cras@outlook.couk","address":"385-7251 Vel Avenue","postalZip":"5140","country":"Chile"},{"customerId":1127,"customerName":"Aileen Walton","phone":"(572) 957-0289","email":"tellus@protonmail.com","address":"Ap #796-1199 Nisi Road","postalZip":"9637 RJ","country":"Turkey"},{"customerId":1128,"customerName":"Otto Guerrero","phone":"(828) 670-3167","email":"in.ornare@icloud.com","address":"Ap #983-2171 Non, Rd.","postalZip":"14756-28750","country":"Colombia"},{"customerId":1129,"customerName":"Hamish Higgins","phone":"1-680-308-1103","email":"posuere.cubilia.curae@aol.edu","address":"Ap #886-9957 Libero. Rd.","postalZip":"73731-574","country":"South Korea"},{"customerId":1130,"customerName":"Melodie Sears","phone":"(337) 229-1564","email":"lacinia.orci@protonmail.net","address":"134 Eu Street","postalZip":"8507","country":"Spain"},{"customerId":1131,"customerName":"Juliet Pierce","phone":"(375) 234-0415","email":"ac.mi@protonmail.org","address":"P.O. Box 825, 4047 Et, Rd.","postalZip":"174333","country":"Norway"},{"customerId":1132,"customerName":"Paki Branch","phone":"(884) 433-8414","email":"lacus.quisque@outlook.edu","address":"P.O. Box 682, 7617 Sed St.","postalZip":"12145","country":"Russian Federation"},{"customerId":1133,"customerName":"Tamara Baldwin","phone":"1-218-677-1038","email":"dui@outlook.ca","address":"377 Aliquam Rd.","postalZip":"84276","country":"Italy"},{"customerId":1134,"customerName":"Daquan Beard","phone":"(443) 748-1456","email":"at.velit@aol.com","address":"673-8314 Integer Avenue","postalZip":"31222","country":"Norway"},{"customerId":1135,"customerName":"Alexandra Mcfadden","phone":"1-226-470-0333","email":"tellus.justo.sit@outlook.couk","address":"3365 Phasellus Road","postalZip":"877389","country":"Germany"},{"customerId":1136,"customerName":"Isaac Brennan","phone":"1-923-403-2154","email":"habitant.morbi@aol.org","address":"6954 Urna. St.","postalZip":"218717","country":"Belgium"},{"customerId":1137,"customerName":"Eagan Hess","phone":"1-588-671-5306","email":"ut@aol.couk","address":"Ap #725-1376 Vivamus Rd.","postalZip":"2588","country":"Singapore"},{"customerId":1138,"customerName":"Hamilton Davis","phone":"(832) 289-5235","email":"magna.cras@google.ca","address":"P.O. Box 702, 5818 Erat St.","postalZip":"547183","country":"India"},{"customerId":1139,"customerName":"Maya Mcintyre","phone":"1-339-163-7246","email":"nunc@yahoo.ca","address":"P.O. Box 175, 5889 Et Avenue","postalZip":"30206","country":"Austria"},{"customerId":1140,"customerName":"Benedict Conrad","phone":"(361) 760-9402","email":"libero@aol.ca","address":"930-9828 Enim. Rd.","postalZip":"316434","country":"Peru"},{"customerId":1141,"customerName":"Cally Nichols","phone":"(188) 296-3978","email":"pede@icloud.ca","address":"147-3879 Tortor. St.","postalZip":"0466 DY","country":"United Kingdom"},{"customerId":1142,"customerName":"Lev Huff","phone":"1-644-984-3841","email":"tincidunt.nunc@hotmail.ca","address":"Ap #451-588 Aenean Rd.","postalZip":"510223","country":"Austria"},{"customerId":1143,"customerName":"Burton Kerr","phone":"1-308-551-1118","email":"consectetuer.adipiscing@protonmail.org","address":"Ap #130-3436 Curae Road","postalZip":"8132","country":"Austria"},{"customerId":1144,"customerName":"Dara Horn","phone":"1-437-393-2415","email":"scelerisque@protonmail.edu","address":"P.O. Box 856, 8744 Nulla. Rd.","postalZip":"706580","country":"Norway"},{"customerId":1145,"customerName":"Marshall Barrett","phone":"1-674-153-7213","email":"ipsum.primis@icloud.ca","address":"801-8227 Nullam Av.","postalZip":"76-64","country":"Nigeria"},{"customerId":1146,"customerName":"Ivy Olsen","phone":"(779) 236-5665","email":"non.quam@icloud.com","address":"Ap #399-2054 Sit Avenue","postalZip":"9517","country":"Pakistan"},{"customerId":1147,"customerName":"Callum Hurley","phone":"(228) 268-0845","email":"nam.ac.nulla@outlook.ca","address":"221-4220 Gravida Rd.","postalZip":"692817","country":"Nigeria"},{"customerId":1148,"customerName":"Hilary Barry","phone":"1-921-538-7222","email":"non.vestibulum@google.edu","address":"Ap #731-2219 At Road","postalZip":"39-652","country":"Ukraine"},{"customerId":1149,"customerName":"Yetta Wilson","phone":"1-381-155-2506","email":"odio.vel@hotmail.edu","address":"258-3369 Dis Road","postalZip":"723487","country":"Nigeria"},{"customerId":1150,"customerName":"Armando Chavez","phone":"(612) 867-3153","email":"donec.luctus@protonmail.org","address":"410-1737 Ante Avenue","postalZip":"81327","country":"Philippines"},{"customerId":1151,"customerName":"Chelsea Good","phone":"(428) 567-4223","email":"tempor.bibendum@yahoo.ca","address":"Ap #893-6132 Ligula. Road","postalZip":"43101-22691","country":"New Zealand"},{"customerId":1152,"customerName":"Craig Schmidt","phone":"1-378-734-1470","email":"turpis.vitae.purus@hotmail.couk","address":"Ap #438-8189 Est. Rd.","postalZip":"916126","country":"Ukraine"},{"customerId":1153,"customerName":"Brenda Wells","phone":"(567) 863-1757","email":"non.hendrerit@aol.com","address":"Ap #492-5578 Quis, Rd.","postalZip":"9964","country":"United States"},{"customerId":1154,"customerName":"Jackson Sullivan","phone":"1-187-130-3494","email":"mus.proin.vel@outlook.ca","address":"P.O. Box 760, 5924 Non Ave","postalZip":"17977","country":"United States"},{"customerId":1155,"customerName":"Marvin Mcknight","phone":"1-848-886-2358","email":"orci@protonmail.com","address":"1595 Quisque Street","postalZip":"4396","country":"Australia"},{"customerId":1156,"customerName":"Summer Christian","phone":"(416) 828-7112","email":"eu.enim@outlook.edu","address":"567-5210 At Av.","postalZip":"03325-08467","country":"United Kingdom"},{"customerId":1157,"customerName":"Finn Marks","phone":"1-841-738-7143","email":"scelerisque.sed@outlook.ca","address":"Ap #954-8922 Id, Av.","postalZip":"22322","country":"United Kingdom"},{"customerId":1158,"customerName":"Nita Bates","phone":"(654) 725-8233","email":"magna.a.tortor@aol.com","address":"Ap #309-3421 Commodo Road","postalZip":"975193","country":"South Korea"},{"customerId":1159,"customerName":"Briar Langley","phone":"(608) 472-7010","email":"vivamus@yahoo.ca","address":"2879 Lectus St.","postalZip":"H6C 4M4","country":"New Zealand"},{"customerId":1160,"customerName":"Laurel Cummings","phone":"1-988-134-4690","email":"velit.eget@icloud.couk","address":"Ap #788-9364 Donec Road","postalZip":"531859","country":"Indonesia"},{"customerId":1161,"customerName":"Ulric Kim","phone":"(346) 441-9341","email":"sagittis@aol.couk","address":"100-1804 Neque Street","postalZip":"1122","country":"France"},{"customerId":1162,"customerName":"Sybil Sykes","phone":"1-875-204-7862","email":"laoreet.ipsum.curabitur@outlook.ca","address":"Ap #126-5269 Fusce Rd.","postalZip":"117416","country":"Russian Federation"},{"customerId":1163,"customerName":"Leonard Hoffman","phone":"1-341-772-3286","email":"a@aol.ca","address":"444-2072 Justo St.","postalZip":"11668","country":"Russian Federation"},{"customerId":1164,"customerName":"Quon Blackwell","phone":"(831) 635-3562","email":"neque.sed@protonmail.edu","address":"204-5991 Aliquam Rd.","postalZip":"3155","country":"Philippines"},{"customerId":1165,"customerName":"Miriam Bryan","phone":"1-527-513-2857","email":"vitae.dolor@icloud.couk","address":"461-5695 Cras Avenue","postalZip":"75-27","country":"Belgium"},{"customerId":1166,"customerName":"Armand Pugh","phone":"(482) 501-1233","email":"ridiculus.mus@outlook.edu","address":"P.O. Box 947, 9910 Amet Ave","postalZip":"3411","country":"Germany"},{"customerId":1167,"customerName":"Blaze Battle","phone":"(428) 853-6886","email":"adipiscing.lacus.ut@yahoo.org","address":"P.O. Box 602, 8847 Arcu St.","postalZip":"37286","country":"Costa Rica"},{"customerId":1168,"customerName":"Calista Hensley","phone":"1-327-399-7565","email":"vulputate.ullamcorper.magna@icloud.com","address":"847-2586 Suspendisse Av.","postalZip":"776816","country":"United Kingdom"},{"customerId":1169,"customerName":"Bo Rios","phone":"1-170-647-6987","email":"in.condimentum.donec@aol.edu","address":"Ap #945-706 Ut, Rd.","postalZip":"8076","country":"Germany"},{"customerId":1170,"customerName":"Larissa Rodgers","phone":"(126) 443-8736","email":"tellus.id@protonmail.couk","address":"721-8783 Rutrum Av.","postalZip":"6659","country":"China"},{"customerId":1171,"customerName":"Shelby Cummings","phone":"(734) 275-3839","email":"a.felis@google.com","address":"Ap #533-2648 Semper St.","postalZip":"4102","country":"Chile"},{"customerId":1172,"customerName":"Rajah Haynes","phone":"(912) 376-0821","email":"erat.vel@aol.edu","address":"798-6238 Lobortis Avenue","postalZip":"879367","country":"South Africa"},{"customerId":1173,"customerName":"Eric Porter","phone":"(438) 829-8875","email":"est.congue@icloud.couk","address":"152-3129 Eget Road","postalZip":"51575","country":"Belgium"},{"customerId":1174,"customerName":"Sade Tanner","phone":"(176) 628-4565","email":"nulla.at.sem@aol.edu","address":"Ap #897-5047 Pede. St.","postalZip":"14691","country":"Russian Federation"},{"customerId":1175,"customerName":"Rooney Whitley","phone":"1-603-488-8598","email":"inceptos@icloud.net","address":"Ap #305-7788 Metus. Rd.","postalZip":"495747","country":"Netherlands"},{"customerId":1176,"customerName":"Lareina Roth","phone":"1-683-817-8779","email":"mus.aenean@hotmail.com","address":"Ap #500-9224 Nam Rd.","postalZip":"622405","country":"India"},{"customerId":1177,"customerName":"Yuli Ashley","phone":"1-527-243-1156","email":"laoreet@hotmail.net","address":"Ap #462-2830 Lorem Rd.","postalZip":"8659","country":"South Korea"},{"customerId":1178,"customerName":"Hanae Reed","phone":"1-274-288-6220","email":"cubilia.curae@outlook.edu","address":"562-9851 Vestibulum St.","postalZip":"2730","country":"Sweden"},{"customerId":1179,"customerName":"Marsden Kelley","phone":"(802) 265-9337","email":"lectus.a.sollicitudin@icloud.ca","address":"921-3613 Dis Rd.","postalZip":"36516","country":"Austria"},{"customerId":1180,"customerName":"Chandler Cooke","phone":"1-886-874-8176","email":"ultrices.vivamus@hotmail.couk","address":"Ap #440-2350 Aliquet Ave","postalZip":"75956","country":"Russian Federation"},{"customerId":1181,"customerName":"Oren Craig","phone":"(355) 808-0474","email":"sed.libero@outlook.com","address":"Ap #284-5512 Etiam Ave","postalZip":"72646","country":"United Kingdom"},{"customerId":1182,"customerName":"Cecilia Drake","phone":"(846) 325-0244","email":"magnis.dis@aol.couk","address":"P.O. Box 664, 1872 Dictum Avenue","postalZip":"865143","country":"Costa Rica"},{"customerId":1183,"customerName":"Myles Huber","phone":"(558) 433-4791","email":"non.luctus.sit@protonmail.org","address":"Ap #721-322 Arcu. Road","postalZip":"8272","country":"Russian Federation"},{"customerId":1184,"customerName":"Garrett Horton","phone":"1-303-643-5354","email":"quisque@google.com","address":"579-5270 In Road","postalZip":"5426","country":"Brazil"},{"customerId":1185,"customerName":"Summer Downs","phone":"(799) 252-8435","email":"sociis.natoque@icloud.edu","address":"1530 Mauris Rd.","postalZip":"4644","country":"Belgium"},{"customerId":1186,"customerName":"Stephen Ramirez","phone":"1-958-659-2032","email":"blandit.enim@aol.ca","address":"P.O. Box 617, 7127 Lobortis Avenue","postalZip":"142618","country":"Sweden"},{"customerId":1187,"customerName":"Alden Ochoa","phone":"(751) 226-3554","email":"phasellus.elit.pede@google.edu","address":"P.O. Box 838, 1887 Tellus. Rd.","postalZip":"83996","country":"China"},{"customerId":1188,"customerName":"Doris Moreno","phone":"(471) 824-1287","email":"nullam.feugiat.placerat@outlook.edu","address":"Ap #260-386 Orci Av.","postalZip":"210139","country":"Norway"},{"customerId":1189,"customerName":"Indigo Carey","phone":"(662) 936-5124","email":"mi.pede@yahoo.org","address":"Ap #322-3050 Magna. Road","postalZip":"45-25","country":"Turkey"},{"customerId":1190,"customerName":"Dolan Jordan","phone":"(478) 872-8613","email":"nec.malesuada@yahoo.net","address":"898-938 Nulla Ave","postalZip":"7887","country":"South Korea"},{"customerId":1191,"customerName":"Bo Dudley","phone":"(610) 335-7788","email":"euismod.et@aol.net","address":"3468 Nulla Street","postalZip":"141974","country":"China"},{"customerId":1192,"customerName":"Gillian Clemons","phone":"1-919-152-8757","email":"placerat.velit.quisque@yahoo.ca","address":"710-190 Massa. Road","postalZip":"2353","country":"Chile"},{"customerId":1193,"customerName":"Caldwell Hansen","phone":"1-661-497-3770","email":"volutpat.nulla@outlook.org","address":"919-6956 Sit Ave","postalZip":"30035","country":"Costa Rica"},{"customerId":1194,"customerName":"Chadwick Langley","phone":"1-740-424-6843","email":"pede@aol.edu","address":"Ap #557-4847 Arcu Rd.","postalZip":"75647","country":"South Africa"},{"customerId":1195,"customerName":"Robert Glass","phone":"(322) 300-6525","email":"blandit@icloud.org","address":"746-2653 Eu Av.","postalZip":"432218","country":"Norway"},{"customerId":1196,"customerName":"Rogan Gibson","phone":"(173) 446-7654","email":"ipsum.suspendisse.non@google.edu","address":"P.O. Box 548, 8634 Fringilla Rd.","postalZip":"1554-0130","country":"France"},{"customerId":1197,"customerName":"Shay Chase","phone":"1-817-937-9663","email":"eu@outlook.couk","address":"Ap #130-5565 Faucibus Rd.","postalZip":"3221","country":"Italy"},{"customerId":1198,"customerName":"Hayes Griffin","phone":"(219) 652-0611","email":"ultrices.duis@hotmail.ca","address":"Ap #405-6309 Est. Rd.","postalZip":"19755","country":"Netherlands"},{"customerId":1199,"customerName":"Emerson Trujillo","phone":"(142) 333-1545","email":"suspendisse.aliquet.molestie@google.couk","address":"536-2607 Ligula. Av.","postalZip":"17575","country":"Indonesia"},{"customerId":1200,"customerName":"Charde Sellers","phone":"(765) 208-5630","email":"leo.in@outlook.couk","address":"782-8699 Consequat, Rd.","postalZip":"63413-332","country":"Norway"},{"customerId":1201,"customerName":"Kimberly Bruce","phone":"1-463-679-5074","email":"vivamus.sit.amet@aol.net","address":"923-5701 Aliquam St.","postalZip":"70587","country":"Indonesia"},{"customerId":1202,"customerName":"Cynthia Guzman","phone":"1-331-975-8907","email":"suspendisse@google.com","address":"8055 Dapibus Av.","postalZip":"06404","country":"Norway"},{"customerId":1203,"customerName":"Quyn Cotton","phone":"(914) 432-9528","email":"convallis.ligula@google.ca","address":"7102 Et, Av.","postalZip":"03544","country":"United Kingdom"},{"customerId":1204,"customerName":"Harding Hunter","phone":"1-777-787-2274","email":"egestas.aliquam@protonmail.org","address":"956-2959 Aliquam Avenue","postalZip":"8823","country":"Norway"},{"customerId":1205,"customerName":"Sara Blankenship","phone":"1-766-993-7718","email":"ante.blandit.viverra@icloud.edu","address":"Ap #765-4621 Nulla St.","postalZip":"WA7U 5DD","country":"Turkey"},{"customerId":1206,"customerName":"Karen Mcfarland","phone":"1-101-451-0174","email":"sed.dui@aol.edu","address":"379-132 Vulputate Avenue","postalZip":"30200","country":"Poland"},{"customerId":1207,"customerName":"Freya Skinner","phone":"1-859-639-2765","email":"quis.arcu@outlook.ca","address":"733-152 In Rd.","postalZip":"66842","country":"France"},{"customerId":1208,"customerName":"Minerva Blankenship","phone":"(547) 979-5625","email":"luctus.ipsum@yahoo.com","address":"311-4470 Arcu Avenue","postalZip":"12886","country":"Netherlands"},{"customerId":1209,"customerName":"Cody Figueroa","phone":"(312) 873-1696","email":"ipsum.dolor@hotmail.net","address":"5812 Est, St.","postalZip":"444566","country":"Italy"},{"customerId":1210,"customerName":"Christian Berger","phone":"(827) 212-4278","email":"bibendum.ullamcorper@outlook.org","address":"Ap #976-925 Eu Ave","postalZip":"73246","country":"Costa Rica"},{"customerId":1211,"customerName":"Geraldine Benson","phone":"(686) 771-0523","email":"rutrum.justo@google.com","address":"468-9285 Sit Av.","postalZip":"4178 LZ","country":"China"},{"customerId":1212,"customerName":"Rhona Mckay","phone":"1-249-718-6439","email":"eu.arcu@protonmail.net","address":"783-2662 Malesuada St.","postalZip":"4734","country":"France"},{"customerId":1213,"customerName":"Mohammad Holland","phone":"1-616-294-7414","email":"elit.a@google.net","address":"456-4028 Cursus St.","postalZip":"37507","country":"Germany"},{"customerId":1214,"customerName":"Fulton Lowery","phone":"(971) 538-3365","email":"placerat.velit@yahoo.net","address":"435-6035 Blandit Rd.","postalZip":"481178","country":"Canada"},{"customerId":1215,"customerName":"Shaine Stevenson","phone":"1-224-316-1576","email":"eleifend.cras.sed@google.org","address":"Ap #800-1048 Accumsan St.","postalZip":"5507","country":"Poland"},{"customerId":1216,"customerName":"Shad Moses","phone":"1-663-446-6058","email":"dui.in@google.com","address":"P.O. Box 202, 4862 Vitae Rd.","postalZip":"42806","country":"United States"},{"customerId":1217,"customerName":"Colt Stewart","phone":"1-531-643-7652","email":"est.arcu@outlook.org","address":"166-7253 Senectus St.","postalZip":"71-760","country":"Ukraine"},{"customerId":1218,"customerName":"Prescott Newton","phone":"(673) 986-0514","email":"felis.purus@hotmail.org","address":"P.O. Box 359, 7008 Etiam St.","postalZip":"69759","country":"New Zealand"},{"customerId":1219,"customerName":"Hashim Myers","phone":"1-299-612-8826","email":"aliquet.magna@google.couk","address":"Ap #799-8129 Mi. St.","postalZip":"76081","country":"Pakistan"},{"customerId":1220,"customerName":"Gisela Simpson","phone":"(781) 688-2283","email":"lorem@protonmail.org","address":"994-7036 Laoreet, Road","postalZip":"0628","country":"France"},{"customerId":1221,"customerName":"Alice Beasley","phone":"(861) 125-1151","email":"lectus@aol.net","address":"191-8262 Quam. Av.","postalZip":"61784","country":"Russian Federation"},{"customerId":1222,"customerName":"Baxter Alvarez","phone":"1-597-217-4715","email":"aliquam.adipiscing@aol.org","address":"497-5274 Et, Street","postalZip":"50606","country":"United Kingdom"},{"customerId":1223,"customerName":"Eric Wallace","phone":"(828) 814-2311","email":"sociosqu.ad@google.edu","address":"Ap #851-8445 Fusce Avenue","postalZip":"371855","country":"Russian Federation"},{"customerId":1224,"customerName":"Virginia Nichols","phone":"(158) 415-6514","email":"mattis.ornare@hotmail.com","address":"2551 Orci Rd.","postalZip":"93284","country":"China"},{"customerId":1225,"customerName":"Joelle Aguirre","phone":"(854) 516-7135","email":"velit@aol.ca","address":"989-339 Non Ave","postalZip":"31922","country":"Philippines"},{"customerId":1226,"customerName":"Amanda Hebert","phone":"1-232-775-8274","email":"ut.erat.sed@hotmail.org","address":"586-9506 Ridiculus Ave","postalZip":"9885","country":"Peru"},{"customerId":1227,"customerName":"Ryder Vang","phone":"1-575-823-1726","email":"libero@google.net","address":"P.O. Box 223, 8835 Vestibulum Road","postalZip":"7134","country":"Turkey"},{"customerId":1228,"customerName":"Cole Hebert","phone":"1-795-415-3404","email":"aliquet.sem.ut@google.net","address":"759-1631 Eget Rd.","postalZip":"26-729","country":"India"},{"customerId":1229,"customerName":"Zelenia Goff","phone":"(970) 563-5745","email":"nisi.aenean.eget@google.org","address":"453-9241 Non, Road","postalZip":"95-537","country":"Philippines"},{"customerId":1230,"customerName":"Duncan Little","phone":"1-282-913-6876","email":"gravida.nunc.sed@outlook.org","address":"P.O. Box 551, 1705 Morbi St.","postalZip":"36-75","country":"Indonesia"},{"customerId":1231,"customerName":"Zephania Burch","phone":"(348) 442-1242","email":"pede.cras.vulputate@yahoo.ca","address":"5084 Vitae Rd.","postalZip":"21965","country":"Peru"},{"customerId":1232,"customerName":"Basil Lloyd","phone":"1-341-344-7427","email":"nulla.tempor@icloud.ca","address":"Ap #843-7443 Integer Rd.","postalZip":"345108","country":"Netherlands"},{"customerId":1233,"customerName":"Melyssa Brooks","phone":"(508) 884-1383","email":"montes.nascetur.ridiculus@hotmail.edu","address":"Ap #456-6388 Rutrum St.","postalZip":"16-211","country":"New Zealand"},{"customerId":1234,"customerName":"Aurora Leonard","phone":"(316) 665-6644","email":"ipsum.primis@icloud.org","address":"428-6242 Sit Street","postalZip":"973687","country":"Sweden"},{"customerId":1235,"customerName":"Anika Le","phone":"(685) 626-7388","email":"primis.in@yahoo.couk","address":"Ap #640-168 Phasellus Street","postalZip":"8873","country":"Sweden"},{"customerId":1236,"customerName":"Quintessa Shepard","phone":"1-226-348-8571","email":"consectetuer.mauris@outlook.couk","address":"Ap #794-1498 Turpis. St.","postalZip":"35015","country":"Ukraine"},{"customerId":1237,"customerName":"Quintessa Walter","phone":"1-757-517-3627","email":"accumsan.convallis@protonmail.edu","address":"788 Ornare. Av.","postalZip":"340373","country":"Spain"},{"customerId":1238,"customerName":"Jeanette Ingram","phone":"1-408-761-8781","email":"lacinia.orci@icloud.org","address":"751-744 Molestie. Rd.","postalZip":"7822","country":"Ukraine"},{"customerId":1239,"customerName":"Magee Logan","phone":"1-762-419-3843","email":"tincidunt.vehicula@google.org","address":"369-2642 Proin Ave","postalZip":"BW82 2KE","country":"Mexico"},{"customerId":1240,"customerName":"Reagan Clements","phone":"1-412-723-3895","email":"pharetra.quisque@google.org","address":"Ap #110-6548 Tempus, Av.","postalZip":"E3W 5E7","country":"Austria"},{"customerId":1241,"customerName":"Dennis Taylor","phone":"(739) 486-3238","email":"eleifend.non@google.net","address":"Ap #933-6271 Consequat Rd.","postalZip":"265283","country":"France"},{"customerId":1242,"customerName":"Alvin Ray","phone":"1-475-608-8144","email":"ligula.aenean@icloud.net","address":"389-1590 Rutrum Street","postalZip":"24343-512","country":"Chile"},{"customerId":1243,"customerName":"Devin Sweeney","phone":"1-836-658-2998","email":"dolor@outlook.com","address":"3386 Fermentum Road","postalZip":"Y64 1TQ","country":"Norway"},{"customerId":1244,"customerName":"Rajah Duke","phone":"(828) 875-5614","email":"nec@google.net","address":"Ap #103-6999 Tempus Road","postalZip":"403585","country":"Ukraine"},{"customerId":1245,"customerName":"Yoshio Olson","phone":"1-641-435-1196","email":"cubilia.curae@google.edu","address":"176-3215 Sed Road","postalZip":"15288-379","country":"United Kingdom"},{"customerId":1246,"customerName":"Reuben Hodge","phone":"1-239-725-4351","email":"sit.amet@outlook.org","address":"P.O. Box 809, 4971 Maecenas Rd.","postalZip":"15787-48453","country":"Sweden"},{"customerId":1247,"customerName":"Aline Mccarty","phone":"1-710-583-3497","email":"odio.semper.cursus@aol.couk","address":"7836 Faucibus Rd.","postalZip":"7178","country":"Ukraine"},{"customerId":1248,"customerName":"Kylie Kim","phone":"1-539-363-6835","email":"mi.enim.condimentum@icloud.couk","address":"P.O. Box 463, 3487 Dictum Road","postalZip":"18877","country":"Nigeria"},{"customerId":1249,"customerName":"Sage Bowers","phone":"1-224-410-8556","email":"eget.laoreet@outlook.net","address":"Ap #539-2641 A, Avenue","postalZip":"18446","country":"South Korea"},{"customerId":1250,"customerName":"Brynn Miller","phone":"(386) 396-7094","email":"lectus@hotmail.couk","address":"168-7085 Egestas. Rd.","postalZip":"14794","country":"Colombia"},{"customerId":1251,"customerName":"Cruz Durham","phone":"(678) 223-1384","email":"in.cursus@icloud.ca","address":"Ap #116-2724 Aliquam St.","postalZip":"726827","country":"India"},{"customerId":1252,"customerName":"Raphael Lambert","phone":"(647) 930-4484","email":"eleifend.nec.malesuada@yahoo.couk","address":"Ap #342-2310 Integer Av.","postalZip":"829183","country":"Netherlands"},{"customerId":1253,"customerName":"Barrett Barber","phone":"(257) 348-8468","email":"massa.mauris@yahoo.ca","address":"822-9335 Nunc Rd.","postalZip":"455544","country":"Chile"},{"customerId":1254,"customerName":"Alfonso Tran","phone":"(375) 735-1642","email":"a@aol.couk","address":"723-2618 In Rd.","postalZip":"07310","country":"France"},{"customerId":1255,"customerName":"Quamar Duran","phone":"(575) 354-6717","email":"sapien@protonmail.net","address":"Ap #889-6343 Sociosqu Avenue","postalZip":"88438-60533","country":"China"},{"customerId":1256,"customerName":"Doris Huff","phone":"1-734-846-7929","email":"lorem.donec@outlook.ca","address":"P.O. Box 557, 9450 Dictum Road","postalZip":"460487","country":"Spain"},{"customerId":1257,"customerName":"Anastasia Morrow","phone":"(930) 605-1289","email":"lectus.nullam.suscipit@yahoo.org","address":"482-1037 Blandit Ave","postalZip":"7115","country":"Philippines"},{"customerId":1258,"customerName":"Ashely Trujillo","phone":"1-516-852-1250","email":"vitae.sodales.at@yahoo.couk","address":"Ap #859-4386 Rutrum Street","postalZip":"03111","country":"South Africa"},{"customerId":1259,"customerName":"Adrienne Mcconnell","phone":"1-286-881-6866","email":"at.fringilla@icloud.ca","address":"464-6392 Convallis Road","postalZip":"8538-8927","country":"Spain"},{"customerId":1260,"customerName":"Cassandra Sanders","phone":"1-635-255-4629","email":"consectetuer@icloud.edu","address":"303-3212 Sollicitudin St.","postalZip":"14457","country":"United States"},{"customerId":1261,"customerName":"Cameron Valentine","phone":"1-600-664-6489","email":"sollicitudin.orci@aol.edu","address":"P.O. Box 834, 1814 Et Rd.","postalZip":"37162","country":"New Zealand"},{"customerId":1262,"customerName":"Norman Griffin","phone":"(419) 768-0314","email":"neque.vitae@aol.net","address":"P.O. Box 556, 1579 Scelerisque Ave","postalZip":"881244","country":"India"},{"customerId":1263,"customerName":"Carlos Ramsey","phone":"1-435-347-3869","email":"vestibulum@yahoo.couk","address":"3943 Et St.","postalZip":"33416","country":"Germany"},{"customerId":1264,"customerName":"Mariam Howe","phone":"(639) 461-4086","email":"velit.dui.semper@protonmail.couk","address":"Ap #931-7415 Faucibus Rd.","postalZip":"427079","country":"India"},{"customerId":1265,"customerName":"MacKenzie Alford","phone":"1-894-538-1015","email":"tincidunt.neque.vitae@aol.ca","address":"Ap #937-6343 Dictum. St.","postalZip":"95268","country":"Philippines"},{"customerId":1266,"customerName":"Graham Holloway","phone":"1-914-671-1572","email":"facilisis.eget@google.ca","address":"Ap #741-5080 Facilisi. Street","postalZip":"51478","country":"Philippines"},{"customerId":1267,"customerName":"Heidi Mays","phone":"1-734-713-2514","email":"sem@hotmail.net","address":"396-4900 Sem Rd.","postalZip":"1446-8660","country":"New Zealand"},{"customerId":1268,"customerName":"Amelia Farmer","phone":"1-317-724-8376","email":"libero.donec@yahoo.edu","address":"Ap #662-8397 Lorem Street","postalZip":"Y6P 7N7","country":"Russian Federation"},{"customerId":1269,"customerName":"Holly Hernandez","phone":"1-565-529-5693","email":"placerat.orci.lacus@aol.org","address":"7601 Vel Ave","postalZip":"4786","country":"Turkey"},{"customerId":1270,"customerName":"Philip Hurley","phone":"1-605-754-4983","email":"nibh.sit@google.org","address":"Ap #757-1677 Vivamus Ave","postalZip":"40188","country":"Russian Federation"},{"customerId":1271,"customerName":"Veronica Maddox","phone":"1-342-207-4242","email":"ac.metus.vitae@icloud.ca","address":"Ap #301-4476 Orci, Street","postalZip":"236475","country":"Indonesia"},{"customerId":1272,"customerName":"Nolan Wallace","phone":"1-625-178-4338","email":"donec@hotmail.ca","address":"838-1885 Non, Av.","postalZip":"11705","country":"Austria"},{"customerId":1273,"customerName":"Grace Ford","phone":"(771) 717-4359","email":"ornare@aol.couk","address":"1650 Sed Ave","postalZip":"853817","country":"Philippines"},{"customerId":1274,"customerName":"Imelda Bird","phone":"1-256-394-3476","email":"in.hendrerit.consectetuer@hotmail.com","address":"Ap #207-873 Faucibus Ave","postalZip":"58544","country":"Costa Rica"},{"customerId":1275,"customerName":"Amos Barnett","phone":"(217) 753-0167","email":"vestibulum.massa.rutrum@outlook.org","address":"Ap #504-7391 Id Road","postalZip":"428658","country":"Brazil"},{"customerId":1276,"customerName":"Vance Davidson","phone":"(632) 848-0851","email":"tortor@google.com","address":"8164 Libero. Av.","postalZip":"59-452","country":"China"},{"customerId":1277,"customerName":"George Valdez","phone":"1-267-365-8404","email":"quisque@icloud.couk","address":"580 Sed Avenue","postalZip":"9231","country":"Colombia"},{"customerId":1278,"customerName":"Rama Dejesus","phone":"(994) 521-1473","email":"duis.cursus@yahoo.couk","address":"395-357 Tellus Av.","postalZip":"3577","country":"United Kingdom"},{"customerId":1279,"customerName":"Tyler Ferguson","phone":"1-737-618-0663","email":"arcu@hotmail.edu","address":"P.O. Box 486, 7908 Tempor Av.","postalZip":"1354","country":"Pakistan"},{"customerId":1280,"customerName":"Fallon Ryan","phone":"(673) 362-7218","email":"quis.arcu@hotmail.edu","address":"916-7982 Egestas, Rd.","postalZip":"73151","country":"Poland"},{"customerId":1281,"customerName":"Rhiannon Riddle","phone":"(379) 427-8051","email":"mi.lacinia@icloud.org","address":"1538 Ut Avenue","postalZip":"96418","country":"Chile"},{"customerId":1282,"customerName":"Mannix Stokes","phone":"1-952-667-7440","email":"tempus@icloud.couk","address":"Ap #465-924 Placerat Rd.","postalZip":"8941","country":"Netherlands"},{"customerId":1283,"customerName":"Kirsten Beard","phone":"(386) 552-8516","email":"ipsum@hotmail.com","address":"Ap #314-2610 Donec Rd.","postalZip":"865232","country":"Netherlands"},{"customerId":1284,"customerName":"Colton Greer","phone":"(544) 639-1708","email":"eros.proin@icloud.net","address":"Ap #905-1422 Non Road","postalZip":"528183","country":"Costa Rica"},{"customerId":1285,"customerName":"Beck Rasmussen","phone":"(701) 185-3456","email":"sagittis@protonmail.edu","address":"6434 Amet Road","postalZip":"27272","country":"Brazil"},{"customerId":1286,"customerName":"Driscoll Walter","phone":"(315) 868-2551","email":"natoque.penatibus@yahoo.net","address":"6840 Ac Avenue","postalZip":"39757","country":"Colombia"},{"customerId":1287,"customerName":"Guinevere Bolton","phone":"1-560-309-8068","email":"mauris.vel.turpis@aol.org","address":"9282 Fringilla Street","postalZip":"635531","country":"Sweden"},{"customerId":1288,"customerName":"Talon Barr","phone":"(281) 571-6497","email":"tellus.phasellus@protonmail.edu","address":"8955 Tincidunt Rd.","postalZip":"A8M 4Z5","country":"Pakistan"},{"customerId":1289,"customerName":"Fatima Mccoy","phone":"(685) 483-3596","email":"mus.proin@yahoo.org","address":"Ap #684-6010 Etiam Ave","postalZip":"25617","country":"Netherlands"},{"customerId":1290,"customerName":"Ivana Mays","phone":"1-858-558-1483","email":"ultricies.adipiscing.enim@protonmail.ca","address":"5110 Ut Street","postalZip":"B2W 3L8","country":"Belgium"},{"customerId":1291,"customerName":"Kenneth Burnett","phone":"1-873-670-1824","email":"lectus.pede.et@icloud.edu","address":"Ap #350-2238 Orci. Road","postalZip":"289227","country":"Netherlands"},{"customerId":1292,"customerName":"Raymond Daniel","phone":"1-543-681-3471","email":"odio.a@yahoo.com","address":"266-9313 Urna St.","postalZip":"49309","country":"Italy"},{"customerId":1293,"customerName":"Lael Delacruz","phone":"(542) 282-5126","email":"adipiscing@outlook.net","address":"742-7498 Dis Avenue","postalZip":"68087","country":"Costa Rica"},{"customerId":1294,"customerName":"Stephen Navarro","phone":"(964) 652-1134","email":"quis.arcu@yahoo.edu","address":"P.O. Box 777, 6051 Ipsum Ave","postalZip":"3769","country":"Poland"},{"customerId":1295,"customerName":"Keith Sykes","phone":"(240) 371-6114","email":"sodales.nisi@google.couk","address":"P.O. Box 712, 4196 Sed Road","postalZip":"3124","country":"Italy"},{"customerId":1296,"customerName":"Hop Wheeler","phone":"(882) 852-2134","email":"tellus.id@aol.couk","address":"1148 Quisque St.","postalZip":"07388","country":"Vietnam"},{"customerId":1297,"customerName":"Austin Browning","phone":"1-564-808-1387","email":"velit.sed@protonmail.org","address":"Ap #508-3125 Sollicitudin Rd.","postalZip":"153452","country":"Russian Federation"},{"customerId":1298,"customerName":"Ulric Harrington","phone":"(404) 767-7164","email":"lectus@yahoo.edu","address":"727-6859 Metus. Road","postalZip":"10-672","country":"Norway"},{"customerId":1299,"customerName":"Hanae Hyde","phone":"1-578-859-4133","email":"non.justo.proin@protonmail.net","address":"P.O. Box 780, 4090 Dapibus Av.","postalZip":"61255","country":"Ireland"},{"customerId":1300,"customerName":"Baker Morse","phone":"(826) 500-9636","email":"amet.dapibus@yahoo.couk","address":"570-7315 Bibendum Rd.","postalZip":"36605","country":"India"},{"customerId":1301,"customerName":"Evangeline Leon","phone":"1-658-285-7538","email":"ac.turpis@yahoo.com","address":"Ap #632-3608 Ac St.","postalZip":"25893-07660","country":"Norway"},{"customerId":1302,"customerName":"Noble Donaldson","phone":"(672) 816-8714","email":"quis@icloud.net","address":"4300 Iaculis, Ave","postalZip":"02707","country":"Colombia"},{"customerId":1303,"customerName":"Kalia Colon","phone":"(427) 123-2426","email":"vel.pede.blandit@hotmail.couk","address":"P.O. Box 870, 3590 Eleifend. St.","postalZip":"206846","country":"Indonesia"},{"customerId":1304,"customerName":"Linus Hess","phone":"1-619-136-5385","email":"nunc.sed@outlook.ca","address":"Ap #880-3705 Eu, Street","postalZip":"L3X 5S1","country":"Spain"},{"customerId":1305,"customerName":"Colt Stout","phone":"1-543-909-7130","email":"suspendisse.sed.dolor@yahoo.ca","address":"P.O. Box 653, 6054 Massa Rd.","postalZip":"T2T 3W6","country":"Netherlands"},{"customerId":1306,"customerName":"Ronan Taylor","phone":"1-753-561-8886","email":"dolor@protonmail.edu","address":"Ap #207-9022 Ac St.","postalZip":"268624","country":"Philippines"},{"customerId":1307,"customerName":"Rahim Roberson","phone":"1-278-767-3521","email":"nunc.quisque@google.net","address":"720-6909 Non, Rd.","postalZip":"5815","country":"South Korea"},{"customerId":1308,"customerName":"Hayden Crane","phone":"(335) 968-3323","email":"porta.elit.a@aol.com","address":"Ap #920-4101 Quis St.","postalZip":"425565","country":"Spain"},{"customerId":1309,"customerName":"Halla Hooper","phone":"(259) 162-0866","email":"ac.mattis@aol.com","address":"P.O. Box 253, 4701 Fusce Rd.","postalZip":"58871-613","country":"Ukraine"},{"customerId":1310,"customerName":"Mohammad Morse","phone":"(516) 866-3151","email":"semper.et@outlook.org","address":"Ap #774-5318 Mauris Ave","postalZip":"63371","country":"Indonesia"},{"customerId":1311,"customerName":"Yeo Summers","phone":"(677) 386-8129","email":"sed.tortor@outlook.com","address":"P.O. Box 172, 7153 Mauris. Ave","postalZip":"10808","country":"United Kingdom"},{"customerId":1312,"customerName":"Abdul Bartlett","phone":"(368) 654-6656","email":"malesuada@outlook.com","address":"P.O. Box 353, 3630 Orci, Street","postalZip":"4786","country":"Chile"},{"customerId":1313,"customerName":"Alvin Kirk","phone":"1-561-308-0898","email":"mauris@protonmail.ca","address":"253-692 Ipsum Street","postalZip":"I6B 7XE","country":"Vietnam"},{"customerId":1314,"customerName":"Cora Jimenez","phone":"1-748-974-5722","email":"aliquet.diam.sed@yahoo.com","address":"670-5496 Sed Street","postalZip":"43176","country":"Mexico"},{"customerId":1315,"customerName":"Sybill Osborn","phone":"1-447-771-6596","email":"ultricies@google.ca","address":"659-6176 Mauris Road","postalZip":"589008","country":"United States"},{"customerId":1316,"customerName":"Dominique Sandoval","phone":"1-787-906-6357","email":"tellus.imperdiet@outlook.ca","address":"440-5486 Eu Road","postalZip":"9191","country":"Brazil"},{"customerId":1317,"customerName":"Kyra Gross","phone":"1-380-721-5074","email":"quis.accumsan.convallis@google.net","address":"762-318 Vestibulum St.","postalZip":"88-859","country":"Sweden"},{"customerId":1318,"customerName":"Joelle Buckner","phone":"(881) 445-5503","email":"malesuada.vel.venenatis@yahoo.com","address":"P.O. Box 523, 2613 Dui, Road","postalZip":"909421","country":"Australia"},{"customerId":1319,"customerName":"Kyle Santiago","phone":"(829) 759-2866","email":"at.velit@yahoo.couk","address":"902-9693 Elit, St.","postalZip":"96721-726","country":"China"},{"customerId":1320,"customerName":"Colorado Cook","phone":"1-413-651-3683","email":"at.fringilla.purus@yahoo.ca","address":"Ap #819-1809 In Street","postalZip":"1808","country":"Italy"},{"customerId":1321,"customerName":"Lev Robinson","phone":"1-196-234-2414","email":"sed.congue.elit@icloud.net","address":"Ap #223-9304 At Avenue","postalZip":"V0Z 7E1","country":"Sweden"},{"customerId":1322,"customerName":"Linus Lloyd","phone":"1-944-270-7136","email":"diam@outlook.edu","address":"Ap #767-5684 Lobortis. Avenue","postalZip":"S5G 2L0","country":"Indonesia"},{"customerId":1323,"customerName":"Chaim Kinney","phone":"1-555-209-8729","email":"ac@google.org","address":"Ap #299-238 Lobortis Rd.","postalZip":"18474","country":"Poland"},{"customerId":1324,"customerName":"Keane Meadows","phone":"(356) 754-9635","email":"vitae.sodales@hotmail.ca","address":"Ap #698-3225 Donec Ave","postalZip":"28357-282","country":"Australia"},{"customerId":1325,"customerName":"Amaya Carroll","phone":"1-285-137-8225","email":"ac.metus@protonmail.edu","address":"204-6242 Nunc St.","postalZip":"66321-333","country":"Belgium"},{"customerId":1326,"customerName":"Hayfa Yang","phone":"1-518-607-9630","email":"augue@aol.ca","address":"P.O. Box 777, 611 Dui, St.","postalZip":"88577","country":"Australia"},{"customerId":1327,"customerName":"Jenette Rivera","phone":"1-117-899-8340","email":"porta@hotmail.couk","address":"6330 Erat Road","postalZip":"1156","country":"Spain"},{"customerId":1328,"customerName":"Oren Faulkner","phone":"(626) 935-7176","email":"pretium.et@google.edu","address":"976-459 Orci, Road","postalZip":"2248","country":"Turkey"},{"customerId":1329,"customerName":"Jakeem Hopkins","phone":"1-821-356-4816","email":"quisque.fringilla.euismod@yahoo.com","address":"Ap #163-6401 Orci. Street","postalZip":"17747","country":"Canada"},{"customerId":1330,"customerName":"Dana Walker","phone":"(613) 682-2416","email":"mauris@google.couk","address":"231-3124 Ultrices Avenue","postalZip":"584075","country":"South Korea"},{"customerId":1331,"customerName":"Griffith Hardin","phone":"(601) 585-9447","email":"varius.et@google.net","address":"Ap #363-9006 Aliquam Ave","postalZip":"8465-8387","country":"Pakistan"},{"customerId":1332,"customerName":"Axel Horn","phone":"(354) 604-8388","email":"libero.dui@hotmail.net","address":"Ap #684-3222 Purus Street","postalZip":"50615","country":"Canada"},{"customerId":1333,"customerName":"Raya Ochoa","phone":"(547) 494-1328","email":"donec.fringilla@yahoo.org","address":"Ap #383-3711 Aliquam Rd.","postalZip":"566332","country":"United States"},{"customerId":1334,"customerName":"Berk Best","phone":"1-783-723-4745","email":"suspendisse.aliquet@google.net","address":"218-782 Proin Av.","postalZip":"30214","country":"Pakistan"},{"customerId":1335,"customerName":"Roanna Rodriquez","phone":"1-351-606-1374","email":"maecenas.iaculis.aliquet@yahoo.couk","address":"Ap #435-2602 Nunc Street","postalZip":"56724","country":"Netherlands"},{"customerId":1336,"customerName":"Simon Navarro","phone":"(776) 407-3328","email":"condimentum.donec@hotmail.edu","address":"500-2422 Lacinia Road","postalZip":"65-796","country":"Australia"},{"customerId":1337,"customerName":"Jaime Sullivan","phone":"(444) 875-8366","email":"odio@yahoo.couk","address":"P.O. Box 248, 6669 Sem Ave","postalZip":"253020","country":"Australia"},{"customerId":1338,"customerName":"Boris Fowler","phone":"(276) 788-0236","email":"duis.gravida@outlook.org","address":"738-2917 Nibh Avenue","postalZip":"11808","country":"New Zealand"},{"customerId":1339,"customerName":"Xenos Newman","phone":"(866) 561-7975","email":"feugiat.metus@hotmail.couk","address":"7339 Morbi Ave","postalZip":"64462","country":"Austria"},{"customerId":1340,"customerName":"Hayley Russell","phone":"(150) 601-3338","email":"vel.pede@yahoo.com","address":"6306 Placerat, Street","postalZip":"3627","country":"Russian Federation"},{"customerId":1341,"customerName":"Bernard Frederick","phone":"(670) 424-2679","email":"at.velit.cras@aol.ca","address":"P.O. Box 388, 8445 Condimentum. Ave","postalZip":"487516","country":"Italy"},{"customerId":1342,"customerName":"Desiree Williams","phone":"(250) 588-7416","email":"sollicitudin.a@icloud.org","address":"796-3664 Lobortis Avenue","postalZip":"87204","country":"South Korea"},{"customerId":1343,"customerName":"Clare Bowen","phone":"1-346-496-3723","email":"nullam.vitae.diam@outlook.couk","address":"479-6977 Gravida Av.","postalZip":"9716 QG","country":"Turkey"},{"customerId":1344,"customerName":"Colorado Ochoa","phone":"(231) 914-2689","email":"in.magna@hotmail.net","address":"881-2543 Morbi St.","postalZip":"647653","country":"Mexico"},{"customerId":1345,"customerName":"Idona Gates","phone":"(264) 925-3735","email":"inceptos.hymenaeos@google.ca","address":"929-2560 Accumsan Street","postalZip":"249589","country":"Vietnam"},{"customerId":1346,"customerName":"Dalton Simpson","phone":"1-568-501-2571","email":"pharetra@aol.edu","address":"631-5847 Aliquet Ave","postalZip":"44554","country":"United States"},{"customerId":1347,"customerName":"Tate Santiago","phone":"(978) 525-5134","email":"nunc.in.at@icloud.org","address":"P.O. Box 355, 283 Ridiculus Ave","postalZip":"8719","country":"Mexico"},{"customerId":1348,"customerName":"Demetrius Boyle","phone":"1-863-361-1919","email":"per.conubia@aol.couk","address":"Ap #455-1160 Nam St.","postalZip":"46594","country":"Belgium"},{"customerId":1349,"customerName":"Walter Dudley","phone":"1-662-882-1484","email":"vitae.aliquet@aol.net","address":"396-1095 Augue Street","postalZip":"86113","country":"South Africa"},{"customerId":1350,"customerName":"Buckminster Knapp","phone":"1-721-445-1634","email":"fringilla.donec@aol.com","address":"463-3365 Tellus. Street","postalZip":"3845","country":"Mexico"},{"customerId":1351,"customerName":"Claudia Monroe","phone":"(377) 474-8872","email":"libero.mauris.aliquam@protonmail.ca","address":"Ap #631-2128 Orci Avenue","postalZip":"45-114","country":"Australia"},{"customerId":1352,"customerName":"Perry Barnes","phone":"(376) 706-8457","email":"amet@google.net","address":"768-739 Integer Ave","postalZip":"543444","country":"Italy"},{"customerId":1353,"customerName":"Rylee Manning","phone":"1-145-872-5110","email":"lorem.fringilla.ornare@hotmail.org","address":"P.O. Box 743, 9906 Elit, St.","postalZip":"94671","country":"Ireland"},{"customerId":1354,"customerName":"Thane Velez","phone":"(477) 965-7329","email":"risus@yahoo.net","address":"4619 Nisl Road","postalZip":"5831","country":"Poland"},{"customerId":1355,"customerName":"Karen Padilla","phone":"(555) 480-6185","email":"fringilla.est@yahoo.edu","address":"Ap #291-7380 Non St.","postalZip":"41791","country":"China"},{"customerId":1356,"customerName":"Jeremy Haney","phone":"1-503-552-3914","email":"varius.orci@hotmail.couk","address":"Ap #982-1886 Justo St.","postalZip":"416248","country":"Germany"},{"customerId":1357,"customerName":"Illiana Henderson","phone":"(848) 154-5971","email":"ac.urna@aol.net","address":"462-1517 Convallis Street","postalZip":"19712","country":"Chile"},{"customerId":1358,"customerName":"Quon Snyder","phone":"(258) 274-6291","email":"dictum.placerat@icloud.com","address":"202-3794 Odio. Av.","postalZip":"675528","country":"China"},{"customerId":1359,"customerName":"Rogan Adkins","phone":"(834) 232-7960","email":"senectus@icloud.edu","address":"P.O. Box 446, 7362 Proin St.","postalZip":"07481","country":"Norway"},{"customerId":1360,"customerName":"Delilah Greene","phone":"1-641-330-0447","email":"sagittis.augue@google.com","address":"7027 Pellentesque. St.","postalZip":"8727-8221","country":"India"},{"customerId":1361,"customerName":"Quynn Sandoval","phone":"(955) 103-3732","email":"nec.ante.maecenas@aol.com","address":"P.O. Box 247, 5287 Pellentesque Av.","postalZip":"84-68","country":"Nigeria"},{"customerId":1362,"customerName":"Lydia Sargent","phone":"1-856-740-7823","email":"a.arcu@icloud.couk","address":"785-6677 Arcu. Rd.","postalZip":"86286","country":"India"},{"customerId":1363,"customerName":"Marshall Dawson","phone":"1-416-827-7501","email":"a.sollicitudin.orci@icloud.couk","address":"698-4234 Consectetuer Ave","postalZip":"16607","country":"Colombia"},{"customerId":1364,"customerName":"Ivan O'Neill","phone":"(455) 224-7425","email":"natoque@google.net","address":"P.O. Box 148, 1124 Ultrices Rd.","postalZip":"61073","country":"Singapore"},{"customerId":1365,"customerName":"Nash Camacho","phone":"1-997-274-3587","email":"donec@protonmail.org","address":"Ap #357-6667 Mi Ave","postalZip":"34782","country":"Russian Federation"},{"customerId":1366,"customerName":"Brynn Forbes","phone":"(975) 296-1204","email":"vitae.sodales.at@outlook.net","address":"P.O. Box 993, 945 Faucibus. Ave","postalZip":"226329","country":"Netherlands"},{"customerId":1367,"customerName":"Guinevere Cote","phone":"1-389-545-7549","email":"posuere.vulputate@icloud.net","address":"341-5041 Nunc Rd.","postalZip":"4043","country":"China"},{"customerId":1368,"customerName":"Fritz Mcdowell","phone":"(624) 556-6133","email":"nulla.at@protonmail.couk","address":"P.O. Box 267, 5900 Arcu Rd.","postalZip":"9117 YN","country":"Vietnam"},{"customerId":1369,"customerName":"Abel Rollins","phone":"1-935-533-1320","email":"integer.tincidunt.aliquam@aol.edu","address":"4591 Quis, Street","postalZip":"410943","country":"China"},{"customerId":1370,"customerName":"Shay Sexton","phone":"1-672-295-8772","email":"nulla@protonmail.ca","address":"8330 Id, Rd.","postalZip":"25994","country":"Peru"},{"customerId":1371,"customerName":"Rebekah Potts","phone":"1-753-351-3583","email":"aenean.sed@protonmail.couk","address":"743-2372 Senectus Rd.","postalZip":"26632","country":"China"},{"customerId":1372,"customerName":"Abel Callahan","phone":"1-238-897-4737","email":"ipsum.ac@protonmail.ca","address":"602-9571 Et Rd.","postalZip":"676111","country":"Ukraine"},{"customerId":1373,"customerName":"Mary Giles","phone":"(735) 725-4428","email":"libero.dui@outlook.ca","address":"Ap #165-736 Nulla Ave","postalZip":"6821","country":"Australia"},{"customerId":1374,"customerName":"Philip Oneil","phone":"(257) 629-2555","email":"aptent.taciti@google.edu","address":"157-3521 Proin Ave","postalZip":"Y0P 8C1","country":"Poland"},{"customerId":1375,"customerName":"Patrick Castro","phone":"1-640-726-6319","email":"elementum.sem@aol.edu","address":"717-1600 Mi St.","postalZip":"598875","country":"New Zealand"},{"customerId":1376,"customerName":"Hilary Whitney","phone":"1-435-463-7643","email":"semper.cursus@icloud.org","address":"967-2948 Cursus Av.","postalZip":"2152","country":"Pakistan"},{"customerId":1377,"customerName":"Remedios Chen","phone":"1-353-715-3714","email":"ac.sem@outlook.net","address":"1176 Massa. Av.","postalZip":"8947","country":"Austria"},{"customerId":1378,"customerName":"Oliver Garrison","phone":"1-888-763-3744","email":"proin@hotmail.net","address":"384-7892 Cras Av.","postalZip":"12817","country":"United States"},{"customerId":1379,"customerName":"Deborah Banks","phone":"1-689-256-5736","email":"facilisis.vitae@yahoo.ca","address":"693-2272 Nec, Road","postalZip":"436775","country":"South Africa"},{"customerId":1380,"customerName":"Gray Dickson","phone":"1-342-858-0605","email":"duis.ac@aol.edu","address":"213-1391 Eu Road","postalZip":"391188","country":"Singapore"},{"customerId":1381,"customerName":"Idola Emerson","phone":"(337) 452-8241","email":"duis.a@protonmail.org","address":"8660 Pharetra Avenue","postalZip":"8263-8908","country":"Mexico"},{"customerId":1382,"customerName":"Elijah Mcfarland","phone":"(736) 200-7353","email":"nec@google.edu","address":"4989 In Road","postalZip":"287217","country":"United States"},{"customerId":1383,"customerName":"Fuller Briggs","phone":"1-761-488-5674","email":"pellentesque.massa@aol.org","address":"Ap #414-1834 Phasellus Ave","postalZip":"68-67","country":"Nigeria"},{"customerId":1384,"customerName":"Cassandra Kline","phone":"(375) 844-8213","email":"augue.ut@aol.ca","address":"2860 Enim. Avenue","postalZip":"T7R 5HK","country":"South Africa"},{"customerId":1385,"customerName":"Dante Schwartz","phone":"1-671-992-7859","email":"mi@aol.org","address":"4007 Sed Road","postalZip":"58671-152","country":"Spain"},{"customerId":1386,"customerName":"Troy Herrera","phone":"1-848-134-1888","email":"integer.urna@google.ca","address":"Ap #894-2060 Ante, Rd.","postalZip":"71831","country":"Nigeria"},{"customerId":1387,"customerName":"Brandon Carter","phone":"(375) 550-5413","email":"blandit.nam.nulla@yahoo.org","address":"Ap #505-8566 Curabitur Street","postalZip":"2163-7106","country":"Chile"},{"customerId":1388,"customerName":"Jane Richardson","phone":"1-687-726-2155","email":"eu.tempor.erat@hotmail.couk","address":"Ap #495-9237 Convallis, St.","postalZip":"5621","country":"Turkey"},{"customerId":1389,"customerName":"Georgia Barber","phone":"(732) 462-7264","email":"cras.vehicula@protonmail.net","address":"P.O. Box 389, 622 Diam Street","postalZip":"67-457","country":"Chile"},{"customerId":1390,"customerName":"Blake Morse","phone":"(368) 540-3115","email":"proin.sed@yahoo.edu","address":"9857 Blandit St.","postalZip":"2634","country":"Netherlands"},{"customerId":1391,"customerName":"Graham King","phone":"1-231-496-2332","email":"metus.vitae.velit@yahoo.ca","address":"Ap #696-8137 In, Rd.","postalZip":"61623","country":"Spain"},{"customerId":1392,"customerName":"Kevyn Cotton","phone":"(724) 617-2252","email":"enim.sit@icloud.ca","address":"Ap #274-4472 Pellentesque Rd.","postalZip":"B1C 9Y0","country":"Norway"},{"customerId":1393,"customerName":"Matthew Powell","phone":"1-330-146-8282","email":"nonummy.ac.feugiat@outlook.ca","address":"P.O. Box 319, 810 Aliquam Av.","postalZip":"28842","country":"Italy"},{"customerId":1394,"customerName":"Hyatt Jacobs","phone":"1-764-370-3841","email":"nunc.id@icloud.com","address":"P.O. Box 130, 8495 Convallis Road","postalZip":"37288","country":"Chile"},{"customerId":1395,"customerName":"Xaviera Porter","phone":"(603) 632-9282","email":"tincidunt@google.ca","address":"P.O. Box 973, 1320 Etiam Av.","postalZip":"776726","country":"Indonesia"},{"customerId":1396,"customerName":"Byron Bender","phone":"1-800-455-2084","email":"enim@google.net","address":"3781 Dolor Avenue","postalZip":"3283","country":"Italy"},{"customerId":1397,"customerName":"Indira Harrell","phone":"(654) 738-6165","email":"convallis.est@hotmail.ca","address":"365-2891 Scelerisque Rd.","postalZip":"73422","country":"China"},{"customerId":1398,"customerName":"Brady Mcdonald","phone":"1-715-461-5072","email":"nulla@yahoo.com","address":"937-4396 Vitae, Street","postalZip":"2628","country":"Chile"},{"customerId":1399,"customerName":"Hadley Sharp","phone":"1-433-710-7754","email":"a@protonmail.edu","address":"420-4962 Mi St.","postalZip":"622548","country":"Peru"},{"customerId":1400,"customerName":"Jared Mercado","phone":"(248) 846-3824","email":"bibendum.fermentum.metus@aol.ca","address":"4990 Blandit St.","postalZip":"3463","country":"Chile"},{"customerId":1401,"customerName":"Robert Guy","phone":"1-357-829-2343","email":"ut.eros.non@protonmail.ca","address":"1961 Quam St.","postalZip":"9271","country":"Russian Federation"},{"customerId":1402,"customerName":"Breanna Mosley","phone":"1-771-929-4147","email":"donec.sollicitudin@google.net","address":"232-6807 Sit Rd.","postalZip":"82425","country":"Costa Rica"},{"customerId":1403,"customerName":"Paula Atkins","phone":"(344) 599-3220","email":"integer.vulputate@google.com","address":"752-1940 Nibh Avenue","postalZip":"5238","country":"Sweden"},{"customerId":1404,"customerName":"Brenda Salinas","phone":"(550) 302-6150","email":"tortor@outlook.com","address":"Ap #558-2552 Dapibus Rd.","postalZip":"4156","country":"South Korea"},{"customerId":1405,"customerName":"Macaulay Trujillo","phone":"1-877-845-3785","email":"est@yahoo.org","address":"337-6767 A, Street","postalZip":"6412","country":"Netherlands"},{"customerId":1406,"customerName":"Mason Cooke","phone":"(351) 681-6735","email":"leo.in@protonmail.edu","address":"Ap #918-8413 Turpis Rd.","postalZip":"Y2M 4T1","country":"United Kingdom"},{"customerId":1407,"customerName":"Karly White","phone":"1-228-311-8259","email":"ac.sem@google.net","address":"Ap #399-1965 Id, St.","postalZip":"2288","country":"Sweden"},{"customerId":1408,"customerName":"Shelly Velasquez","phone":"(177) 208-7167","email":"nunc@google.edu","address":"5845 Eu, Road","postalZip":"534955","country":"Belgium"},{"customerId":1409,"customerName":"Hayes Garrison","phone":"(249) 725-6442","email":"magnis@aol.ca","address":"Ap #454-8593 Eu Ave","postalZip":"577247","country":"Germany"},{"customerId":1410,"customerName":"Cally Graham","phone":"1-236-136-0781","email":"sed.turpis.nec@google.edu","address":"855-351 Auctor St.","postalZip":"0306 CF","country":"Belgium"},{"customerId":1411,"customerName":"Shellie Chen","phone":"1-566-412-5218","email":"tristique@icloud.net","address":"P.O. Box 973, 883 Id St.","postalZip":"62546-868","country":"Ireland"},{"customerId":1412,"customerName":"Kaitlin Newman","phone":"(146) 425-3974","email":"ultrices.posuere@icloud.edu","address":"3837 Eget Rd.","postalZip":"482654","country":"China"},{"customerId":1413,"customerName":"Karyn Webb","phone":"1-472-581-4721","email":"amet.nulla@outlook.ca","address":"P.O. Box 676, 5623 Tristique Av.","postalZip":"30612","country":"Austria"},{"customerId":1414,"customerName":"Sebastian Hendrix","phone":"1-712-549-3131","email":"dolor.sit.amet@yahoo.edu","address":"P.O. Box 294, 6115 Ut Rd.","postalZip":"8706","country":"New Zealand"},{"customerId":1415,"customerName":"Sarah Schroeder","phone":"(274) 632-7831","email":"sit.amet@outlook.ca","address":"704-2747 Adipiscing St.","postalZip":"13-63","country":"Russian Federation"},{"customerId":1416,"customerName":"Malik Head","phone":"(879) 526-5425","email":"ultricies.sem@aol.ca","address":"294-6499 Eu Street","postalZip":"5826","country":"United States"},{"customerId":1417,"customerName":"Mark Downs","phone":"1-398-312-6149","email":"auctor.velit.eget@hotmail.edu","address":"1587 Convallis Road","postalZip":"613182","country":"Netherlands"},{"customerId":1418,"customerName":"Hedley Warner","phone":"(732) 564-7748","email":"proin.sed.turpis@icloud.edu","address":"902-201 In Avenue","postalZip":"8855 WH","country":"Brazil"},{"customerId":1419,"customerName":"Lee Hendrix","phone":"(844) 751-1313","email":"odio.semper@protonmail.com","address":"Ap #441-4472 Fusce Ave","postalZip":"93282","country":"South Africa"},{"customerId":1420,"customerName":"Hadley Carney","phone":"1-743-635-8227","email":"etiam@aol.couk","address":"7589 Augue, Av.","postalZip":"51621","country":"Chile"},{"customerId":1421,"customerName":"Amanda Armstrong","phone":"(921) 533-8075","email":"senectus.et@protonmail.edu","address":"Ap #394-8637 Sit St.","postalZip":"473854","country":"Italy"},{"customerId":1422,"customerName":"Simon Boyd","phone":"1-687-372-4535","email":"aenean@yahoo.com","address":"P.O. Box 374, 2081 Hendrerit Road","postalZip":"8208","country":"Poland"},{"customerId":1423,"customerName":"Regina Guerrero","phone":"(160) 753-3871","email":"nullam.feugiat@aol.com","address":"590-4169 Tellus. Av.","postalZip":"63H 2C8","country":"Norway"},{"customerId":1424,"customerName":"Teagan Maddox","phone":"(347) 225-1895","email":"elementum.at@google.com","address":"Ap #616-2976 Elit Road","postalZip":"16051","country":"Ukraine"},{"customerId":1425,"customerName":"Clementine Meadows","phone":"(815) 346-8474","email":"proin.nisl.sem@google.couk","address":"7562 Fringilla, Ave","postalZip":"5218","country":"Pakistan"},{"customerId":1426,"customerName":"Carter Mcgee","phone":"(485) 816-9556","email":"purus.sapien@google.com","address":"Ap #604-2617 Proin Rd.","postalZip":"72-38","country":"Colombia"},{"customerId":1427,"customerName":"Ray Diaz","phone":"(570) 856-5463","email":"nonummy@yahoo.com","address":"P.O. Box 410, 9374 Dolor. Road","postalZip":"347542","country":"Turkey"},{"customerId":1428,"customerName":"Medge Smith","phone":"1-172-522-0656","email":"enim.non.nisi@google.net","address":"982-3692 Id Rd.","postalZip":"2127","country":"Sweden"},{"customerId":1429,"customerName":"Venus Durham","phone":"1-877-220-6950","email":"lorem.ipsum@aol.net","address":"524-3668 Morbi Rd.","postalZip":"81159-587","country":"Chile"},{"customerId":1430,"customerName":"Jordan Barry","phone":"(319) 823-4618","email":"purus.maecenas@hotmail.couk","address":"Ap #170-4836 Gravida. St.","postalZip":"M01 4FO","country":"Colombia"},{"customerId":1431,"customerName":"Darryl Kidd","phone":"(374) 815-7524","email":"ultricies.ornare.elit@outlook.com","address":"5756 Facilisis Av.","postalZip":"8668","country":"Vietnam"},{"customerId":1432,"customerName":"Rudyard Richmond","phone":"1-686-596-4093","email":"semper@yahoo.ca","address":"403-3191 Nunc Street","postalZip":"472111","country":"Ireland"},{"customerId":1433,"customerName":"Burton Murphy","phone":"(332) 388-1202","email":"felis.donec@google.com","address":"7095 Porttitor Street","postalZip":"85-28","country":"Nigeria"},{"customerId":1434,"customerName":"Shellie Silva","phone":"1-544-711-5586","email":"feugiat.nec@protonmail.edu","address":"495-6059 Felis Avenue","postalZip":"695718","country":"China"},{"customerId":1435,"customerName":"Boris Cummings","phone":"1-448-430-4422","email":"diam.at.pretium@yahoo.org","address":"842-1880 Euismod St.","postalZip":"354827","country":"Poland"},{"customerId":1436,"customerName":"Melyssa Sweeney","phone":"1-773-385-2255","email":"fermentum.arcu@outlook.org","address":"6543 Suspendisse Rd.","postalZip":"1143 WM","country":"Colombia"},{"customerId":1437,"customerName":"Elizabeth Adkins","phone":"1-492-238-3683","email":"luctus.curabitur.egestas@outlook.edu","address":"Ap #186-4670 Ullamcorper, Street","postalZip":"34733","country":"Austria"},{"customerId":1438,"customerName":"Regan Chase","phone":"(427) 874-0222","email":"nulla.tincidunt@google.couk","address":"P.O. Box 729, 9658 Ante. Av.","postalZip":"421677","country":"Canada"},{"customerId":1439,"customerName":"Marcia Hayden","phone":"1-517-454-6216","email":"luctus.ipsum@outlook.couk","address":"4343 Posuere St.","postalZip":"65571","country":"Italy"},{"customerId":1440,"customerName":"Nathan Woodard","phone":"(864) 221-8233","email":"sed.pede@outlook.edu","address":"Ap #721-6523 Nisl St.","postalZip":"958646","country":"Peru"},{"customerId":1441,"customerName":"Patrick Joseph","phone":"(397) 337-8161","email":"enim.etiam@protonmail.org","address":"646 Nibh. Rd.","postalZip":"541326","country":"Indonesia"},{"customerId":1442,"customerName":"Nell Terry","phone":"(319) 269-2944","email":"cursus@google.com","address":"5599 Sapien. Street","postalZip":"14758","country":"Costa Rica"},{"customerId":1443,"customerName":"Jackson Hood","phone":"1-333-858-3511","email":"vel.venenatis@google.com","address":"5730 Integer Rd.","postalZip":"R1M 5M4","country":"Italy"},{"customerId":1444,"customerName":"Bo Townsend","phone":"(982) 834-0159","email":"odio.nam@google.couk","address":"Ap #409-5038 Hendrerit. St.","postalZip":"7330","country":"Canada"},{"customerId":1445,"customerName":"Kasimir Cobb","phone":"1-226-827-6362","email":"libero.morbi@outlook.net","address":"718-687 Laoreet Rd.","postalZip":"73577","country":"Peru"},{"customerId":1446,"customerName":"Seth Clay","phone":"(373) 374-3584","email":"vulputate.posuere@yahoo.com","address":"Ap #282-5429 Odio, Street","postalZip":"543124","country":"Ireland"},{"customerId":1447,"customerName":"May Morse","phone":"(650) 978-2239","email":"enim@outlook.net","address":"216-3840 Sed Rd.","postalZip":"62784","country":"Germany"},{"customerId":1448,"customerName":"Regan Hunt","phone":"1-230-987-0487","email":"faucibus.orci@yahoo.net","address":"404-6518 Lectus Road","postalZip":"27725","country":"Mexico"},{"customerId":1449,"customerName":"Oren Weiss","phone":"1-657-169-2093","email":"interdum.enim@yahoo.com","address":"Ap #520-7390 Orci Av.","postalZip":"83828","country":"China"},{"customerId":1450,"customerName":"Xander Lyons","phone":"(251) 743-6084","email":"sed@icloud.edu","address":"298 Adipiscing. Rd.","postalZip":"557583","country":"Poland"},{"customerId":1451,"customerName":"Jerome Lawson","phone":"1-346-144-0305","email":"dolor@outlook.net","address":"Ap #494-5240 Metus Road","postalZip":"25141","country":"New Zealand"},{"customerId":1452,"customerName":"Lester Morton","phone":"(261) 480-6322","email":"nullam.nisl@google.com","address":"619-705 Posuere, Ave","postalZip":"876325","country":"China"},{"customerId":1453,"customerName":"Daphne Hutchinson","phone":"1-588-521-0089","email":"cras.eget@protonmail.edu","address":"132-2342 Imperdiet St.","postalZip":"53-281","country":"South Korea"},{"customerId":1454,"customerName":"Noel Bell","phone":"1-522-123-1613","email":"mauris.erat@aol.ca","address":"271-8137 Eget Av.","postalZip":"5577","country":"Singapore"},{"customerId":1455,"customerName":"Neil Mcgee","phone":"1-393-523-7116","email":"pretium.et.rutrum@protonmail.couk","address":"4057 Duis Avenue","postalZip":"0245","country":"Sweden"},{"customerId":1456,"customerName":"Rajah Kaufman","phone":"(623) 206-3689","email":"vel@google.edu","address":"P.O. Box 263, 2713 Vivamus Av.","postalZip":"78846","country":"New Zealand"},{"customerId":1457,"customerName":"Pamela Barron","phone":"1-282-880-3258","email":"non.lacinia@yahoo.edu","address":"Ap #339-8091 Egestas Rd.","postalZip":"268541","country":"Germany"},{"customerId":1458,"customerName":"Judith Ortega","phone":"1-430-910-7469","email":"nec.luctus@hotmail.ca","address":"P.O. Box 285, 6251 Etiam Avenue","postalZip":"8597","country":"Turkey"},{"customerId":1459,"customerName":"Quyn Cervantes","phone":"1-661-857-5314","email":"phasellus.nulla@protonmail.org","address":"4746 Lacus. Avenue","postalZip":"76388","country":"Netherlands"},{"customerId":1460,"customerName":"Rebekah Solis","phone":"(621) 685-7840","email":"neque.sed@google.com","address":"743-7503 Sed Street","postalZip":"92472","country":"Ireland"},{"customerId":1461,"customerName":"Rajah Ferguson","phone":"(519) 271-1344","email":"in.dolor.fusce@yahoo.com","address":"678-2766 Tortor. Rd.","postalZip":"25485","country":"United States"},{"customerId":1462,"customerName":"Beau Moran","phone":"(257) 616-6112","email":"ut@hotmail.org","address":"810-5322 Nam Av.","postalZip":"7042","country":"Australia"},{"customerId":1463,"customerName":"Sebastian Gutierrez","phone":"(125) 232-2042","email":"elit.pretium.et@outlook.com","address":"1581 Est. St.","postalZip":"628394","country":"Singapore"},{"customerId":1464,"customerName":"Pearl Brooks","phone":"1-962-618-4885","email":"dui@protonmail.net","address":"P.O. Box 537, 4680 Euismod Ave","postalZip":"12307","country":"Philippines"},{"customerId":1465,"customerName":"Zachery Rowe","phone":"(704) 388-7845","email":"natoque.penatibus.et@aol.ca","address":"Ap #730-411 Id, Street","postalZip":"243539","country":"Russian Federation"},{"customerId":1466,"customerName":"Constance Kirkland","phone":"1-952-518-1532","email":"dolor.sit@aol.org","address":"P.O. Box 137, 950 Eu Rd.","postalZip":"259766","country":"New Zealand"},{"customerId":1467,"customerName":"Callum Melton","phone":"1-740-226-4104","email":"quam.vel.sapien@google.com","address":"248-862 Auctor Street","postalZip":"8573","country":"Mexico"},{"customerId":1468,"customerName":"Byron Pratt","phone":"(188) 775-5788","email":"risus.duis@protonmail.edu","address":"P.O. Box 469, 8493 Neque. St.","postalZip":"83348","country":"Nigeria"},{"customerId":1469,"customerName":"Raymond Mendez","phone":"1-386-551-1685","email":"phasellus@google.net","address":"Ap #810-8261 Quisque St.","postalZip":"283756","country":"Spain"},{"customerId":1470,"customerName":"Dorothy Molina","phone":"1-924-226-0519","email":"dictum.augue@yahoo.com","address":"738-1375 Quam St.","postalZip":"04276","country":"Ireland"},{"customerId":1471,"customerName":"Judith Bryan","phone":"(232) 371-0652","email":"amet.orci.ut@yahoo.edu","address":"665-3294 Erat St.","postalZip":"317846","country":"United Kingdom"},{"customerId":1472,"customerName":"Fletcher Hayes","phone":"1-764-338-1455","email":"orci.quis.lectus@icloud.org","address":"1076 Ornare Road","postalZip":"55514","country":"France"},{"customerId":1473,"customerName":"Brittany Chandler","phone":"(744) 892-8876","email":"duis.mi@protonmail.couk","address":"Ap #561-2067 Sagittis Avenue","postalZip":"871363","country":"Turkey"},{"customerId":1474,"customerName":"Mikayla Jensen","phone":"(485) 285-1430","email":"morbi.tristique.senectus@aol.org","address":"851-6767 Volutpat Road","postalZip":"4292","country":"Nigeria"},{"customerId":1475,"customerName":"Briar King","phone":"(356) 212-7474","email":"non.arcu@google.net","address":"359-6927 Turpis. Street","postalZip":"21-874","country":"Colombia"},{"customerId":1476,"customerName":"Lacey Mercer","phone":"(885) 333-9474","email":"venenatis.a@outlook.org","address":"Ap #419-3943 Duis St.","postalZip":"539142","country":"France"},{"customerId":1477,"customerName":"Eleanor Floyd","phone":"1-177-533-7375","email":"volutpat.ornare@yahoo.com","address":"Ap #960-4112 Elementum, Rd.","postalZip":"718548","country":"Germany"},{"customerId":1478,"customerName":"Maile Mayer","phone":"1-322-315-8111","email":"tincidunt.aliquam@yahoo.com","address":"Ap #486-649 Fusce Rd.","postalZip":"56241","country":"Netherlands"},{"customerId":1479,"customerName":"Hillary Wade","phone":"1-443-311-0868","email":"arcu@google.com","address":"197-6962 Enim. Avenue","postalZip":"5513-2453","country":"Philippines"},{"customerId":1480,"customerName":"Melodie Nieves","phone":"1-988-553-3198","email":"rutrum.urna@google.couk","address":"825 Imperdiet, Rd.","postalZip":"35-49","country":"Australia"},{"customerId":1481,"customerName":"Rudyard Sherman","phone":"(888) 322-1271","email":"amet.lorem@icloud.com","address":"4138 Pede Street","postalZip":"939718","country":"United Kingdom"},{"customerId":1482,"customerName":"Demetria England","phone":"1-501-219-5570","email":"arcu.vestibulum@google.ca","address":"282-7794 Velit. Av.","postalZip":"134573","country":"Ireland"},{"customerId":1483,"customerName":"Travis Barron","phone":"(831) 197-9763","email":"sem.pellentesque.ut@google.net","address":"Ap #987-3412 Tincidunt, St.","postalZip":"40337","country":"Australia"},{"customerId":1484,"customerName":"Fuller Barnes","phone":"(854) 764-4813","email":"purus@hotmail.net","address":"9191 Congue Rd.","postalZip":"S6V 6C2","country":"Brazil"},{"customerId":1485,"customerName":"Jacqueline Riggs","phone":"(210) 411-0395","email":"sed.auctor.odio@icloud.com","address":"Ap #758-4793 Pharetra, Rd.","postalZip":"631719","country":"Australia"},{"customerId":1486,"customerName":"Cherokee Cherry","phone":"1-759-146-3635","email":"condimentum.eget@icloud.com","address":"1779 Semper St.","postalZip":"2555","country":"Colombia"},{"customerId":1487,"customerName":"Eliana Wiggins","phone":"1-340-861-3284","email":"nulla.facilisis@google.com","address":"874-4413 Nulla St.","postalZip":"18721","country":"India"},{"customerId":1488,"customerName":"Ocean Nolan","phone":"(440) 888-6142","email":"urna@google.ca","address":"7353 Magna St.","postalZip":"P6N 8IW","country":"Pakistan"},{"customerId":1489,"customerName":"Phillip Malone","phone":"1-298-214-1548","email":"donec.tempus.lorem@protonmail.net","address":"816-1177 Ac Av.","postalZip":"874549","country":"Italy"},{"customerId":1490,"customerName":"Bertha Browning","phone":"1-976-795-7866","email":"scelerisque.scelerisque.dui@icloud.org","address":"Ap #584-7985 Ultrices. St.","postalZip":"75771-071","country":"Netherlands"},{"customerId":1491,"customerName":"Kiara Keller","phone":"(532) 654-4924","email":"duis.a@aol.org","address":"P.O. Box 462, 6705 Mauris Avenue","postalZip":"16101","country":"Philippines"},{"customerId":1492,"customerName":"Roary Mcguire","phone":"1-584-974-2759","email":"tincidunt.tempus@hotmail.com","address":"351-5478 Lorem Av.","postalZip":"29739","country":"Netherlands"},{"customerId":1493,"customerName":"Gretchen Terrell","phone":"1-753-115-8564","email":"magna@protonmail.ca","address":"P.O. Box 450, 4866 Aptent St.","postalZip":"6975-9289","country":"Singapore"},{"customerId":1494,"customerName":"Wilma Lewis","phone":"1-242-889-5854","email":"adipiscing.elit@google.couk","address":"Ap #107-998 Fermentum Av.","postalZip":"78445","country":"Philippines"},{"customerId":1495,"customerName":"Malcolm Flynn","phone":"(362) 465-8764","email":"integer@yahoo.edu","address":"596-7143 Et, St.","postalZip":"79-629","country":"United Kingdom"},{"customerId":1496,"customerName":"Noah Summers","phone":"1-127-528-8858","email":"convallis@google.net","address":"Ap #573-9650 Et Street","postalZip":"763186","country":"Mexico"},{"customerId":1497,"customerName":"Athena Noel","phone":"(185) 760-5457","email":"molestie.arcu@google.couk","address":"938-1487 Nunc, Av.","postalZip":"58593","country":"Philippines"},{"customerId":1498,"customerName":"William Tyler","phone":"1-705-351-4918","email":"faucibus.lectus@aol.net","address":"559-438 Risus. Road","postalZip":"7065","country":"Vietnam"},{"customerId":1499,"customerName":"Dylan Hutchinson","phone":"(652) 906-4717","email":"sed.diam@yahoo.edu","address":"356-3693 Blandit Road","postalZip":"77279","country":"United States"},{"customerId":1500,"customerName":"Flynn Hartman","phone":"1-468-568-4494","email":"turpis.vitae.purus@google.net","address":"675-5870 Sapien. St.","postalZip":"791118","country":"Austria"},{"customerId":1501,"customerName":"McKenzie Mcneil","phone":"(166) 390-7282","email":"praesent.luctus.curabitur@outlook.com","address":"Ap #116-7259 Interdum. Avenue","postalZip":"2110","country":"Ireland"},{"customerId":1502,"customerName":"Tarik Fields","phone":"1-866-750-2706","email":"libero.proin@outlook.org","address":"7574 Donec Rd.","postalZip":"80177","country":"Nigeria"},{"customerId":1503,"customerName":"Whilemina Reilly","phone":"1-501-858-3298","email":"dictum.phasellus@yahoo.net","address":"Ap #120-762 Rhoncus. Rd.","postalZip":"B7S 5A2","country":"China"},{"customerId":1504,"customerName":"Aaron Lewis","phone":"1-526-722-6692","email":"nunc@icloud.edu","address":"419-2134 Vitae St.","postalZip":"37464","country":"Ukraine"},{"customerId":1505,"customerName":"Basil Sloan","phone":"(328) 668-5437","email":"nec@protonmail.edu","address":"Ap #565-1866 Mi Rd.","postalZip":"21507","country":"United States"},{"customerId":1506,"customerName":"Ezra Banks","phone":"1-233-743-6012","email":"vulputate.posuere.vulputate@google.edu","address":"840-4158 Nibh. Road","postalZip":"63478","country":"Mexico"},{"customerId":1507,"customerName":"Ian Wyatt","phone":"(467) 713-5531","email":"orci@outlook.ca","address":"Ap #686-9816 Vitae Av.","postalZip":"93364","country":"Austria"},{"customerId":1508,"customerName":"Ahmed James","phone":"1-707-235-8866","email":"egestas@hotmail.org","address":"Ap #960-1187 Massa. Ave","postalZip":"UB4 7RK","country":"Mexico"},{"customerId":1509,"customerName":"Cailin Smith","phone":"1-885-601-4724","email":"purus.in.molestie@google.com","address":"928-392 Ligula. Ave","postalZip":"24831","country":"New Zealand"},{"customerId":1510,"customerName":"Kylee Gallegos","phone":"1-701-158-4685","email":"porta.elit.a@outlook.edu","address":"571-6772 Erat Road","postalZip":"50447-730","country":"Germany"},{"customerId":1511,"customerName":"Aimee Myers","phone":"(868) 615-7841","email":"aliquet.nec@protonmail.net","address":"P.O. Box 543, 5797 Eu Avenue","postalZip":"37494","country":"Canada"},{"customerId":1512,"customerName":"Abbot Spencer","phone":"(771) 675-6803","email":"blandit.enim@protonmail.edu","address":"Ap #645-8349 Ad Ave","postalZip":"12153","country":"Germany"},{"customerId":1513,"customerName":"Nell Wilcox","phone":"(466) 387-5621","email":"eu.arcu.morbi@protonmail.couk","address":"P.O. Box 295, 2886 Ante. St.","postalZip":"8567-6327","country":"Colombia"},{"customerId":1514,"customerName":"Maggy Hood","phone":"1-856-525-6187","email":"sed.eget@icloud.com","address":"P.O. Box 732, 6922 Odio. St.","postalZip":"515861","country":"Singapore"},{"customerId":1515,"customerName":"Macon Mccall","phone":"1-884-618-4634","email":"cubilia.curae@protonmail.ca","address":"8746 Vel Street","postalZip":"8911","country":"United States"},{"customerId":1516,"customerName":"Ezekiel Cooley","phone":"1-302-114-6634","email":"amet.metus@google.com","address":"880-2620 Egestas. Street","postalZip":"9912 DN","country":"New Zealand"},{"customerId":1517,"customerName":"Russell Hendrix","phone":"(328) 841-5878","email":"condimentum.eget.volutpat@outlook.ca","address":"Ap #520-4463 Metus Avenue","postalZip":"24768","country":"Austria"},{"customerId":1518,"customerName":"Tad Norman","phone":"(539) 650-8887","email":"eu.augue@yahoo.net","address":"Ap #655-4472 Vitae Rd.","postalZip":"74831","country":"Mexico"},{"customerId":1519,"customerName":"Adena Baxter","phone":"1-412-781-7545","email":"ultrices.duis@icloud.org","address":"245 Cras Road","postalZip":"5765","country":"South Africa"},{"customerId":1520,"customerName":"Tate Dawson","phone":"(841) 344-1704","email":"vestibulum.neque@outlook.net","address":"6714 Hendrerit Rd.","postalZip":"72656","country":"Mexico"},{"customerId":1521,"customerName":"Dara George","phone":"1-346-386-2181","email":"sed.et@hotmail.couk","address":"586-3321 Elit St.","postalZip":"14847","country":"Sweden"},{"customerId":1522,"customerName":"Jessica Bell","phone":"(740) 633-3725","email":"vestibulum@outlook.net","address":"8717 Proin Street","postalZip":"14761","country":"Nigeria"},{"customerId":1523,"customerName":"Steel Dale","phone":"1-586-946-4061","email":"imperdiet.dictum@protonmail.net","address":"3549 Vestibulum Ave","postalZip":"306701","country":"Singapore"},{"customerId":1524,"customerName":"Grace Thornton","phone":"1-404-815-9933","email":"semper.rutrum@google.org","address":"562-2784 Molestie Street","postalZip":"432990","country":"Russian Federation"},{"customerId":1525,"customerName":"Christian Copeland","phone":"1-569-813-8954","email":"risus.quisque@icloud.couk","address":"7909 Dictum Road","postalZip":"78383-26021","country":"Pakistan"},{"customerId":1526,"customerName":"Nissim Jackson","phone":"(646) 231-6467","email":"in.molestie@hotmail.ca","address":"990-3298 Orci Av.","postalZip":"15158","country":"Nigeria"},{"customerId":1527,"customerName":"Anthony Spencer","phone":"1-207-684-3725","email":"a.tortor@google.edu","address":"P.O. Box 692, 9331 Tincidunt Road","postalZip":"426698","country":"Turkey"},{"customerId":1528,"customerName":"Yoshio Herman","phone":"(557) 625-9833","email":"sapien.imperdiet.ornare@outlook.ca","address":"256-8143 Aliquam, St.","postalZip":"51045","country":"United States"},{"customerId":1529,"customerName":"Karleigh William","phone":"1-876-823-6379","email":"a.facilisis.non@google.couk","address":"9877 Mattis. Av.","postalZip":"86464","country":"Sweden"},{"customerId":1530,"customerName":"Jeremy Lloyd","phone":"(460) 415-3476","email":"scelerisque.neque.nullam@google.ca","address":"P.O. Box 338, 8128 Donec Avenue","postalZip":"61407-521","country":"Germany"},{"customerId":1531,"customerName":"Ivy English","phone":"1-179-798-6357","email":"dictum@aol.ca","address":"583 Dui, Rd.","postalZip":"213345","country":"Turkey"},{"customerId":1532,"customerName":"Jenette Bentley","phone":"1-782-772-5541","email":"convallis@outlook.edu","address":"P.O. Box 123, 4816 Tristique St.","postalZip":"8861","country":"Singapore"},{"customerId":1533,"customerName":"Mary Miranda","phone":"1-759-387-2924","email":"lacus.aliquam@icloud.ca","address":"1032 Massa. Road","postalZip":"338261","country":"Ireland"},{"customerId":1534,"customerName":"Neil Meyers","phone":"(784) 575-4741","email":"quis@yahoo.com","address":"299-1192 At, St.","postalZip":"564168","country":"Pakistan"},{"customerId":1535,"customerName":"Burke Guthrie","phone":"1-737-670-8343","email":"massa.mauris.vestibulum@icloud.org","address":"3879 Justo Road","postalZip":"61176","country":"Peru"},{"customerId":1536,"customerName":"Uriel Cervantes","phone":"1-648-388-3587","email":"at.velit.cras@yahoo.net","address":"7752 Et, Road","postalZip":"PG5A 1OK","country":"Canada"},{"customerId":1537,"customerName":"Alexander Ryan","phone":"1-807-745-3807","email":"dictum.ultricies@google.edu","address":"125-2358 Consectetuer Avenue","postalZip":"56-15","country":"South Korea"},{"customerId":1538,"customerName":"Mechelle Gilbert","phone":"1-362-242-5351","email":"vestibulum.lorem@outlook.com","address":"835-6325 Sapien. Road","postalZip":"785957","country":"Sweden"},{"customerId":1539,"customerName":"Serina Ratliff","phone":"1-733-412-4228","email":"libero.dui@yahoo.couk","address":"Ap #179-2329 Duis Avenue","postalZip":"795272","country":"Russian Federation"},{"customerId":1540,"customerName":"Baker Sloan","phone":"(753) 257-3255","email":"tortor.dictum.eu@protonmail.ca","address":"486-2340 Fringilla Av.","postalZip":"2801","country":"India"},{"customerId":1541,"customerName":"Zena Rowe","phone":"(575) 288-5544","email":"quam.a@outlook.couk","address":"161-2481 Nec Rd.","postalZip":"02070","country":"Ireland"},{"customerId":1542,"customerName":"Nadine Duke","phone":"(835) 884-7769","email":"maecenas.malesuada@protonmail.net","address":"5794 Vel St.","postalZip":"50105","country":"France"},{"customerId":1543,"customerName":"Sara Mcdonald","phone":"(581) 214-4133","email":"nullam@outlook.edu","address":"170-1390 Viverra. Rd.","postalZip":"248080","country":"Ireland"},{"customerId":1544,"customerName":"Quinlan Garner","phone":"(238) 571-0284","email":"lectus.ante@yahoo.com","address":"Ap #292-3354 Eu St.","postalZip":"7152","country":"Singapore"},{"customerId":1545,"customerName":"Cade Garza","phone":"1-724-688-3790","email":"congue.in@outlook.org","address":"Ap #112-7956 Donec Road","postalZip":"53-59","country":"Mexico"},{"customerId":1546,"customerName":"Leonard Nicholson","phone":"1-970-237-7180","email":"vitae.posuere@outlook.org","address":"Ap #744-3445 Tempor Rd.","postalZip":"2672","country":"Sweden"},{"customerId":1547,"customerName":"Julian Rodriguez","phone":"(974) 443-3175","email":"quisque.ac.libero@outlook.net","address":"3467 Hymenaeos. Av.","postalZip":"8453","country":"Costa Rica"},{"customerId":1548,"customerName":"Carolyn Mcfadden","phone":"1-825-506-0384","email":"orci.luctus@icloud.net","address":"323-6285 Risus. Road","postalZip":"7046","country":"Brazil"},{"customerId":1549,"customerName":"Tate Morin","phone":"1-635-725-4085","email":"montes.nascetur.ridiculus@protonmail.org","address":"Ap #688-4955 Arcu. St.","postalZip":"30881","country":"New Zealand"},{"customerId":1550,"customerName":"Xander Bullock","phone":"1-974-842-8466","email":"metus.in@outlook.net","address":"509-6735 Non St.","postalZip":"393524","country":"South Africa"},{"customerId":1551,"customerName":"Chester Lyons","phone":"1-438-891-7757","email":"consectetuer.adipiscing@protonmail.org","address":"Ap #513-1993 Quisque Street","postalZip":"45140-18471","country":"Sweden"},{"customerId":1552,"customerName":"Odessa Becker","phone":"(456) 252-3811","email":"sodales@hotmail.ca","address":"Ap #674-147 Augue Ave","postalZip":"21528-58414","country":"New Zealand"},{"customerId":1553,"customerName":"Tara Best","phone":"1-838-562-6847","email":"cum.sociis@outlook.com","address":"Ap #319-8597 Velit. Ave","postalZip":"12603","country":"Belgium"},{"customerId":1554,"customerName":"Lael Gross","phone":"1-461-738-3675","email":"varius.nam@yahoo.net","address":"515-995 Rhoncus. Avenue","postalZip":"21237","country":"Russian Federation"},{"customerId":1555,"customerName":"Kelly Savage","phone":"1-665-770-0615","email":"erat@google.net","address":"Ap #775-3829 Et, Avenue","postalZip":"671683","country":"Pakistan"},{"customerId":1556,"customerName":"Theodore Mcneil","phone":"1-817-208-4768","email":"consequat.enim@aol.ca","address":"649-3431 Nunc St.","postalZip":"33426","country":"Costa Rica"},{"customerId":1557,"customerName":"Hilary Guthrie","phone":"(441) 586-5208","email":"in.consequat@icloud.ca","address":"662-355 Viverra. Avenue","postalZip":"202273","country":"France"},{"customerId":1558,"customerName":"Carissa Perkins","phone":"1-227-673-1245","email":"habitant@aol.edu","address":"947-3502 Auctor Rd.","postalZip":"157261","country":"Italy"},{"customerId":1559,"customerName":"Claudia Foreman","phone":"(618) 390-6326","email":"nascetur@aol.org","address":"Ap #474-9359 Tellus. Av.","postalZip":"33525452","country":"Philippines"},{"customerId":1560,"customerName":"Shana Valdez","phone":"(204) 242-7458","email":"diam.proin@google.edu","address":"959-8629 Mus. Ave","postalZip":"245686","country":"France"},{"customerId":1561,"customerName":"Nadine Kim","phone":"(566) 178-6838","email":"phasellus.in@outlook.com","address":"Ap #880-6632 At, Road","postalZip":"604233","country":"South Korea"},{"customerId":1562,"customerName":"Tamekah Calderon","phone":"(589) 642-1591","email":"lectus.convallis@hotmail.edu","address":"3995 Sit Ave","postalZip":"8486","country":"India"},{"customerId":1563,"customerName":"Leah Battle","phone":"1-265-436-2635","email":"odio.phasellus@hotmail.couk","address":"Ap #694-436 Cras Rd.","postalZip":"311774","country":"Philippines"},{"customerId":1564,"customerName":"Vance Battle","phone":"1-815-769-4626","email":"condimentum.donec@icloud.com","address":"386-9686 Quisque Rd.","postalZip":"3812","country":"Norway"},{"customerId":1565,"customerName":"Fallon Mcdowell","phone":"(244) 856-6414","email":"arcu.iaculis.enim@hotmail.couk","address":"P.O. Box 120, 2304 Id, Road","postalZip":"48533","country":"Australia"},{"customerId":1566,"customerName":"Guinevere James","phone":"1-859-864-6361","email":"nonummy.ut@hotmail.com","address":"Ap #216-8629 Neque Rd.","postalZip":"34658","country":"Nigeria"},{"customerId":1567,"customerName":"Kylynn Villarreal","phone":"1-748-281-4551","email":"conubia.nostra.per@outlook.org","address":"500-8908 In Street","postalZip":"903978","country":"Russian Federation"},{"customerId":1568,"customerName":"James Baxter","phone":"1-861-691-8354","email":"vel.sapien.imperdiet@outlook.net","address":"Ap #188-5927 Sodales Road","postalZip":"666693","country":"Nigeria"},{"customerId":1569,"customerName":"Dominic Randolph","phone":"1-846-244-6548","email":"libero.donec@hotmail.org","address":"Ap #962-5268 Neque. Rd.","postalZip":"48-25","country":"Colombia"},{"customerId":1570,"customerName":"Jael Boone","phone":"(675) 840-5703","email":"cursus.diam@google.edu","address":"5719 Et, Street","postalZip":"S2N 5B5","country":"Sweden"},{"customerId":1571,"customerName":"Axel Moses","phone":"1-572-176-6541","email":"lobortis.augue.scelerisque@aol.net","address":"Ap #866-9703 Aliquet St.","postalZip":"892948","country":"Colombia"},{"customerId":1572,"customerName":"Kirby Olson","phone":"1-318-371-3883","email":"in.magna@yahoo.com","address":"Ap #297-7935 Ipsum Avenue","postalZip":"F8B 6AE","country":"France"},{"customerId":1573,"customerName":"Griffith Wright","phone":"1-775-697-9174","email":"molestie@protonmail.couk","address":"Ap #882-9342 Amet Rd.","postalZip":"2158","country":"Australia"},{"customerId":1574,"customerName":"Jemima Beck","phone":"(467) 488-2618","email":"montes.nascetur@aol.couk","address":"P.O. Box 664, 7037 Amet St.","postalZip":"UV75 0QY","country":"India"},{"customerId":1575,"customerName":"Tallulah Branch","phone":"(880) 338-1627","email":"tristique.senectus@icloud.net","address":"2481 Urna Av.","postalZip":"30515","country":"Australia"},{"customerId":1576,"customerName":"Dara Herman","phone":"(760) 541-2943","email":"lectus.justo.eu@google.ca","address":"3211 Luctus Rd.","postalZip":"10-363","country":"Australia"},{"customerId":1577,"customerName":"Reece Carter","phone":"(265) 319-3355","email":"quam@hotmail.couk","address":"P.O. Box 767, 682 Sem, Road","postalZip":"54867","country":"Mexico"},{"customerId":1578,"customerName":"Xyla Butler","phone":"1-384-877-3155","email":"cum.sociis.natoque@aol.net","address":"Ap #186-6630 Tempus St.","postalZip":"3698","country":"Vietnam"},{"customerId":1579,"customerName":"Libby Madden","phone":"(479) 936-4346","email":"enim@hotmail.ca","address":"Ap #383-3743 Accumsan Avenue","postalZip":"4784","country":"Chile"},{"customerId":1580,"customerName":"Keaton Gonzales","phone":"1-630-158-6984","email":"odio.auctor@aol.edu","address":"7406 Arcu. Street","postalZip":"338469","country":"China"},{"customerId":1581,"customerName":"Guinevere Dixon","phone":"(763) 788-7542","email":"nunc.lectus.pede@aol.edu","address":"643-1844 Lorem. Ave","postalZip":"40213","country":"Colombia"},{"customerId":1582,"customerName":"Priscilla Pena","phone":"1-607-730-5138","email":"consequat.purus@protonmail.edu","address":"P.O. Box 563, 824 Aliquet Street","postalZip":"9853","country":"Australia"},{"customerId":1583,"customerName":"Timon Hopper","phone":"1-790-808-7406","email":"dictum.mi.ac@outlook.net","address":"Ap #341-8394 Luctus Street","postalZip":"11563","country":"Sweden"},{"customerId":1584,"customerName":"Carl Castaneda","phone":"1-926-562-5316","email":"elit.a@outlook.couk","address":"832-5155 Nascetur Ave","postalZip":"56205","country":"Peru"},{"customerId":1585,"customerName":"Xaviera Kelley","phone":"(723) 911-7523","email":"cum.sociis@icloud.org","address":"Ap #427-903 Euismod Av.","postalZip":"820757","country":"Netherlands"},{"customerId":1586,"customerName":"Unity Henson","phone":"1-953-684-5154","email":"a.purus@protonmail.org","address":"Ap #695-2807 Senectus Rd.","postalZip":"9382","country":"Italy"},{"customerId":1587,"customerName":"Gage Holden","phone":"1-355-247-5242","email":"odio.sagittis@google.couk","address":"457-1090 Enim Rd.","postalZip":"475296","country":"Brazil"},{"customerId":1588,"customerName":"Nita Adkins","phone":"1-584-691-5154","email":"amet@google.com","address":"5126 Nunc. Av.","postalZip":"WU31 2QK","country":"Australia"},{"customerId":1589,"customerName":"Keegan Lamb","phone":"1-716-343-3456","email":"pulvinar@yahoo.net","address":"Ap #372-4204 At Road","postalZip":"87-67","country":"Philippines"},{"customerId":1590,"customerName":"Quinn Sweet","phone":"1-239-328-7187","email":"adipiscing.elit@yahoo.net","address":"476-7064 Libero. Ave","postalZip":"7228","country":"Philippines"},{"customerId":1591,"customerName":"Ezra Greene","phone":"1-841-595-9177","email":"feugiat.non@aol.net","address":"Ap #718-444 Eros St.","postalZip":"43955","country":"Russian Federation"},{"customerId":1592,"customerName":"Frances Flowers","phone":"1-146-387-1926","email":"accumsan@hotmail.ca","address":"645-5000 Aliquam Street","postalZip":"852576","country":"Poland"},{"customerId":1593,"customerName":"Trevor Dejesus","phone":"(884) 636-8153","email":"ultrices.posuere.cubilia@icloud.edu","address":"Ap #276-122 Donec Street","postalZip":"541234","country":"Vietnam"},{"customerId":1594,"customerName":"Neil Cummings","phone":"1-612-507-2021","email":"ligula.tortor.dictum@google.ca","address":"Ap #612-9353 Sagittis. Street","postalZip":"337068","country":"Singapore"},{"customerId":1595,"customerName":"Lillith Gay","phone":"(274) 572-2548","email":"imperdiet@yahoo.edu","address":"Ap #622-2006 Cursus Ave","postalZip":"30811","country":"Ukraine"},{"customerId":1596,"customerName":"Illiana Vincent","phone":"(826) 460-8876","email":"maecenas.libero@aol.org","address":"P.O. Box 217, 4003 Ut, Rd.","postalZip":"T2M 4S4","country":"New Zealand"},{"customerId":1597,"customerName":"Ezra Finch","phone":"1-454-647-1191","email":"iaculis.odio@google.org","address":"288-2063 Auctor, Ave","postalZip":"5297","country":"Sweden"},{"customerId":1598,"customerName":"Chadwick Carney","phone":"(850) 217-8180","email":"nascetur.ridiculus.mus@icloud.couk","address":"Ap #246-2593 Eu Ave","postalZip":"4458","country":"United Kingdom"},{"customerId":1599,"customerName":"Ira Molina","phone":"(431) 332-4783","email":"feugiat@yahoo.ca","address":"Ap #310-1089 Semper Avenue","postalZip":"30765","country":"Sweden"},{"customerId":1600,"customerName":"Maya Chang","phone":"1-792-445-6513","email":"velit.aliquam@yahoo.net","address":"Ap #376-990 Risus. Street","postalZip":"36147","country":"Philippines"},{"customerId":1601,"customerName":"Ferris Mcpherson","phone":"(281) 367-9438","email":"elit.elit@protonmail.edu","address":"P.O. Box 186, 4085 Senectus Rd.","postalZip":"57188","country":"Italy"},{"customerId":1602,"customerName":"Rebekah Mason","phone":"1-563-616-6157","email":"sagittis@hotmail.org","address":"P.O. Box 662, 8738 Nullam St.","postalZip":"3617 FY","country":"Sweden"},{"customerId":1603,"customerName":"Ahmed Booker","phone":"1-825-659-3780","email":"dui.nec@hotmail.ca","address":"4536 Adipiscing Avenue","postalZip":"17455","country":"Pakistan"},{"customerId":1604,"customerName":"Azalia Huber","phone":"(825) 379-6869","email":"sed.libero.proin@icloud.net","address":"558-7276 Eleifend, St.","postalZip":"965025","country":"Brazil"},{"customerId":1605,"customerName":"Ella Preston","phone":"(831) 264-7575","email":"nibh.quisque.nonummy@yahoo.couk","address":"566-8199 Mus. Rd.","postalZip":"3439","country":"Ukraine"},{"customerId":1606,"customerName":"Blythe Pittman","phone":"(834) 671-7126","email":"mauris.blandit@aol.org","address":"125-4326 Purus St.","postalZip":"4317","country":"Ukraine"},{"customerId":1607,"customerName":"Yoshio Chapman","phone":"(898) 986-1273","email":"sit.amet@protonmail.edu","address":"Ap #155-2288 Libero Av.","postalZip":"44743","country":"Philippines"},{"customerId":1608,"customerName":"Anika Little","phone":"1-594-637-8201","email":"donec@outlook.couk","address":"Ap #294-872 Mauris Ave","postalZip":"06379","country":"Poland"},{"customerId":1609,"customerName":"Macon Workman","phone":"(289) 594-1157","email":"dis.parturient.montes@google.edu","address":"936-3514 Vitae, Ave","postalZip":"0252","country":"Canada"},{"customerId":1610,"customerName":"Garrison Durham","phone":"(258) 870-0620","email":"libero.integer@icloud.net","address":"P.O. Box 876, 1097 Magnis St.","postalZip":"30815","country":"Colombia"},{"customerId":1611,"customerName":"Veda Rios","phone":"(466) 365-7576","email":"mollis.integer@hotmail.org","address":"Ap #592-8065 Lacus. Street","postalZip":"835424","country":"Brazil"},{"customerId":1612,"customerName":"Whilemina Dominguez","phone":"(284) 662-2143","email":"sit.amet@icloud.couk","address":"938-7019 Sociis St.","postalZip":"485445","country":"China"},{"customerId":1613,"customerName":"Brett Morris","phone":"1-196-128-3152","email":"mi.ac@protonmail.edu","address":"545-3988 Mattis. Avenue","postalZip":"36438","country":"Spain"},{"customerId":1614,"customerName":"Elliott Gray","phone":"1-552-222-8342","email":"fermentum.metus@google.org","address":"284-9443 Justo Road","postalZip":"77-479","country":"Australia"},{"customerId":1615,"customerName":"Graham Norton","phone":"(867) 546-3531","email":"cursus.et@icloud.edu","address":"1955 Lorem, Av.","postalZip":"74772-058","country":"China"},{"customerId":1616,"customerName":"Palmer White","phone":"(855) 828-3747","email":"in.scelerisque@yahoo.edu","address":"Ap #694-6826 Tincidunt. Ave","postalZip":"16885","country":"China"},{"customerId":1617,"customerName":"Erasmus Camacho","phone":"1-948-196-9143","email":"vitae.nibh@aol.ca","address":"Ap #363-1053 Class Avenue","postalZip":"38169","country":"Mexico"},{"customerId":1618,"customerName":"Imogene Guy","phone":"1-276-653-6350","email":"metus.vitae.velit@outlook.ca","address":"5267 Dictum St.","postalZip":"041885","country":"Philippines"},{"customerId":1619,"customerName":"Aaron Bennett","phone":"(833) 375-4642","email":"et.lacinia@google.couk","address":"9677 Eleifend St.","postalZip":"831378","country":"Netherlands"},{"customerId":1620,"customerName":"Arden Patel","phone":"(622) 136-5410","email":"duis.a@hotmail.org","address":"202-1668 Gravida. Avenue","postalZip":"19038","country":"Colombia"},{"customerId":1621,"customerName":"Nissim Gray","phone":"1-405-952-2632","email":"aliquam@google.org","address":"Ap #919-8162 Ipsum Rd.","postalZip":"8488-8333","country":"Netherlands"},{"customerId":1622,"customerName":"Joshua Travis","phone":"(737) 261-3075","email":"mauris@google.org","address":"P.O. Box 475, 3136 Vitae Av.","postalZip":"818843","country":"Brazil"},{"customerId":1623,"customerName":"Benedict Sullivan","phone":"(458) 408-9656","email":"velit.justo@icloud.couk","address":"P.O. Box 632, 5450 Dui Road","postalZip":"6156 QH","country":"Costa Rica"},{"customerId":1624,"customerName":"Rudyard Battle","phone":"(665) 849-7813","email":"nullam.feugiat@icloud.net","address":"317-6615 Turpis Av.","postalZip":"7505","country":"Colombia"},{"customerId":1625,"customerName":"Clio Maddox","phone":"1-428-714-9741","email":"cras.vehicula.aliquet@outlook.com","address":"Ap #335-8353 Ultricies St.","postalZip":"1185 JV","country":"Russian Federation"},{"customerId":1626,"customerName":"Peter Gallagher","phone":"1-614-870-0551","email":"nunc.mauris@outlook.ca","address":"459-6842 Aenean St.","postalZip":"74645-22584","country":"New Zealand"},{"customerId":1627,"customerName":"Chester Reed","phone":"(840) 373-0625","email":"at@yahoo.com","address":"521-9750 Luctus Ave","postalZip":"53878","country":"France"},{"customerId":1628,"customerName":"Basia O'Neill","phone":"(782) 198-3175","email":"odio.phasellus@google.couk","address":"773-7288 Phasellus Rd.","postalZip":"490253","country":"Chile"},{"customerId":1629,"customerName":"Jack Benson","phone":"(281) 256-6334","email":"vulputate.lacus@yahoo.com","address":"194 Sed Road","postalZip":"8222","country":"Turkey"},{"customerId":1630,"customerName":"Shoshana Maddox","phone":"(568) 652-9811","email":"massa.non.ante@icloud.ca","address":"Ap #342-1108 Vel, St.","postalZip":"28638","country":"Sweden"},{"customerId":1631,"customerName":"Wing Atkinson","phone":"(467) 822-4681","email":"cras.convallis@hotmail.org","address":"Ap #120-3919 Hymenaeos. Road","postalZip":"7757","country":"South Korea"},{"customerId":1632,"customerName":"Callum Hobbs","phone":"(372) 578-6405","email":"nisi.cum.sociis@yahoo.couk","address":"9163 Lectus Avenue","postalZip":"445227","country":"Singapore"},{"customerId":1633,"customerName":"Lucian Tate","phone":"(862) 273-4625","email":"rutrum.magna@yahoo.edu","address":"Ap #525-9688 Suspendisse Ave","postalZip":"50111","country":"United Kingdom"},{"customerId":1634,"customerName":"Upton Holloway","phone":"(946) 658-1201","email":"in.aliquet@outlook.org","address":"759-5589 Dictum Road","postalZip":"3983","country":"United States"},{"customerId":1635,"customerName":"Dylan Wong","phone":"1-727-363-2861","email":"eros@icloud.ca","address":"7860 Ac Road","postalZip":"M3N 5W3","country":"China"},{"customerId":1636,"customerName":"Tara Aguilar","phone":"(765) 709-4857","email":"in.consectetuer@icloud.ca","address":"139-9509 Dolor Av.","postalZip":"64-615","country":"South Africa"},{"customerId":1637,"customerName":"Rafael Olson","phone":"(226) 352-1331","email":"et@protonmail.ca","address":"8503 Varius Road","postalZip":"66052","country":"Norway"},{"customerId":1638,"customerName":"Bernard Walton","phone":"(281) 540-7265","email":"rutrum.lorem.ac@aol.couk","address":"Ap #567-7048 Sem St.","postalZip":"645666","country":"Norway"},{"customerId":1639,"customerName":"Katelyn Pena","phone":"1-548-345-8795","email":"ligula.nullam.enim@yahoo.ca","address":"P.O. Box 887, 2166 Mus. Ave","postalZip":"128582","country":"France"},{"customerId":1640,"customerName":"Elmo Hewitt","phone":"(298) 925-8748","email":"a.auctor@icloud.com","address":"P.O. Box 251, 5241 Eget Street","postalZip":"471522","country":"Ukraine"},{"customerId":1641,"customerName":"Natalie Robertson","phone":"(678) 825-2562","email":"vitae@outlook.edu","address":"Ap #879-4782 Vehicula Street","postalZip":"38740","country":"France"},{"customerId":1642,"customerName":"Dawn Merritt","phone":"1-265-210-8913","email":"magnis.dis.parturient@hotmail.ca","address":"445-8990 Non, Rd.","postalZip":"18-48","country":"Philippines"},{"customerId":1643,"customerName":"Brenda Levy","phone":"(701) 974-6316","email":"et.ultrices@outlook.com","address":"3530 Scelerisque Ave","postalZip":"9006-6437","country":"Sweden"},{"customerId":1644,"customerName":"Nasim Moran","phone":"(567) 458-4753","email":"non.hendrerit@hotmail.edu","address":"Ap #581-143 Quisque Road","postalZip":"6935","country":"Brazil"},{"customerId":1645,"customerName":"Jessamine Castro","phone":"1-396-829-8782","email":"felis.ullamcorper@aol.edu","address":"P.O. Box 313, 3068 Morbi Road","postalZip":"7386","country":"Vietnam"},{"customerId":1646,"customerName":"Melvin Schwartz","phone":"(513) 964-3682","email":"hendrerit@protonmail.ca","address":"Ap #357-5828 Fermentum Ave","postalZip":"79164","country":"Spain"},{"customerId":1647,"customerName":"Emerald Edwards","phone":"1-376-557-4732","email":"purus@icloud.couk","address":"Ap #895-3768 Facilisis, St.","postalZip":"23882","country":"Colombia"},{"customerId":1648,"customerName":"Octavia Singleton","phone":"(579) 846-1365","email":"a.facilisis@icloud.edu","address":"Ap #706-6281 Sed Av.","postalZip":"8703","country":"China"},{"customerId":1649,"customerName":"Gretchen Scott","phone":"(241) 921-9732","email":"vivamus.non.lorem@aol.ca","address":"P.O. Box 729, 7299 Nulla. St.","postalZip":"6466","country":"United States"},{"customerId":1650,"customerName":"Dylan Jacobs","phone":"(642) 372-6730","email":"aliquam.erat@icloud.net","address":"337-7653 Sem. Street","postalZip":"398270","country":"Vietnam"},{"customerId":1651,"customerName":"Zorita Kirk","phone":"1-503-741-2357","email":"hendrerit.donec.porttitor@aol.couk","address":"641-7996 Gravida Road","postalZip":"62368","country":"Belgium"},{"customerId":1652,"customerName":"Marshall Lancaster","phone":"1-283-486-3777","email":"at@hotmail.org","address":"5317 Euismod Ave","postalZip":"19042","country":"Australia"},{"customerId":1653,"customerName":"Mohammad Ford","phone":"(959) 306-2558","email":"augue.malesuada@icloud.org","address":"Ap #911-585 Per Ave","postalZip":"231830","country":"Sweden"},{"customerId":1654,"customerName":"Ebony Kidd","phone":"1-893-313-7544","email":"orci@yahoo.org","address":"Ap #751-6262 Mollis Av.","postalZip":"559633","country":"Ireland"},{"customerId":1655,"customerName":"Dylan Garrett","phone":"1-684-466-1701","email":"at.arcu.vestibulum@yahoo.couk","address":"Ap #664-9498 Praesent Av.","postalZip":"7930","country":"Norway"},{"customerId":1656,"customerName":"Prescott Robinson","phone":"(887) 633-3623","email":"laoreet.posuere@protonmail.net","address":"190-4174 Ut, St.","postalZip":"6234","country":"Belgium"},{"customerId":1657,"customerName":"Seth Sharpe","phone":"1-853-372-5157","email":"erat.neque@icloud.com","address":"Ap #819-8855 Sem Av.","postalZip":"981156","country":"Belgium"},{"customerId":1658,"customerName":"Amena Sloan","phone":"(648) 164-6150","email":"quisque.fringilla@google.couk","address":"P.O. Box 599, 3942 Eget St.","postalZip":"33906","country":"New Zealand"},{"customerId":1659,"customerName":"Magee Wagner","phone":"(852) 438-3264","email":"curabitur.egestas.nunc@google.couk","address":"766-9757 Fusce Rd.","postalZip":"142020","country":"Costa Rica"},{"customerId":1660,"customerName":"Nash Goodman","phone":"1-406-853-4116","email":"et.euismod@aol.edu","address":"P.O. Box 408, 6575 Eros. Rd.","postalZip":"4756-7136","country":"Pakistan"},{"customerId":1661,"customerName":"September Ferrell","phone":"1-211-240-2216","email":"cubilia.curae@google.net","address":"732-8003 Mi. Ave","postalZip":"51124","country":"Sweden"},{"customerId":1662,"customerName":"Brett Blackwell","phone":"(803) 682-4371","email":"nonummy.ultricies@outlook.edu","address":"980-5214 Nulla. St.","postalZip":"443986","country":"Russian Federation"},{"customerId":1663,"customerName":"Lilah Cash","phone":"1-732-344-5483","email":"aenean.euismod.mauris@yahoo.net","address":"356-252 Tincidunt Ave","postalZip":"731535","country":"Pakistan"},{"customerId":1664,"customerName":"Brett Paul","phone":"1-650-481-3482","email":"aliquam.enim@yahoo.ca","address":"Ap #286-4140 Vivamus St.","postalZip":"636562","country":"Peru"},{"customerId":1665,"customerName":"Shelby Sanchez","phone":"1-516-412-2638","email":"ligula.nullam@outlook.com","address":"P.O. Box 348, 4141 Magna. Street","postalZip":"605328","country":"Sweden"},{"customerId":1666,"customerName":"Castor Bishop","phone":"(944) 121-4301","email":"ultricies@aol.ca","address":"Ap #743-6671 Phasellus St.","postalZip":"621783","country":"Mexico"},{"customerId":1667,"customerName":"Chase Wyatt","phone":"1-613-173-6522","email":"sed.orci.lobortis@outlook.org","address":"Ap #881-5816 Dolor Road","postalZip":"52594","country":"Netherlands"},{"customerId":1668,"customerName":"Tucker Alford","phone":"(423) 531-4822","email":"senectus.et.netus@hotmail.net","address":"481-2575 Primis Ave","postalZip":"888295","country":"Spain"},{"customerId":1669,"customerName":"Cruz Wells","phone":"1-507-806-1934","email":"quis.pede.praesent@icloud.com","address":"930-4088 Aliquet Av.","postalZip":"44255","country":"Turkey"},{"customerId":1670,"customerName":"Yardley Buchanan","phone":"1-783-863-9251","email":"sit@yahoo.edu","address":"Ap #978-8991 Nunc St.","postalZip":"8132 QE","country":"United Kingdom"},{"customerId":1671,"customerName":"Mariam Buckley","phone":"1-198-385-7483","email":"nibh@protonmail.ca","address":"575 Vestibulum Ave","postalZip":"4775","country":"Ukraine"},{"customerId":1672,"customerName":"Bevis Hewitt","phone":"(770) 456-1452","email":"curabitur@hotmail.com","address":"Ap #556-7092 A, St.","postalZip":"28766","country":"Philippines"},{"customerId":1673,"customerName":"Tanya Richardson","phone":"(847) 763-3342","email":"convallis@protonmail.couk","address":"2511 Orci, Av.","postalZip":"NL3H 5DU","country":"Mexico"},{"customerId":1674,"customerName":"Barry Woodward","phone":"(637) 296-0268","email":"a@yahoo.net","address":"Ap #290-5074 Pellentesque St.","postalZip":"526268","country":"United Kingdom"},{"customerId":1675,"customerName":"Daniel Velasquez","phone":"1-333-781-2793","email":"et.magnis@outlook.edu","address":"Ap #732-5193 Risus. Rd.","postalZip":"154364","country":"Mexico"},{"customerId":1676,"customerName":"Darius Foley","phone":"(887) 758-2389","email":"ornare.placerat.orci@aol.org","address":"Ap #690-1754 Netus St.","postalZip":"5988-9356","country":"Ireland"},{"customerId":1677,"customerName":"Xenos Nielsen","phone":"1-365-875-5822","email":"libero.integer@aol.couk","address":"Ap #339-784 Fusce Rd.","postalZip":"7483","country":"Spain"},{"customerId":1678,"customerName":"Idona Zamora","phone":"(635) 323-6142","email":"nec.tellus@google.ca","address":"Ap #140-642 Lectus Street","postalZip":"2197","country":"Mexico"},{"customerId":1679,"customerName":"Ciara O'brien","phone":"1-168-874-5243","email":"dolor.sit.amet@google.couk","address":"843-2358 Parturient Street","postalZip":"80009","country":"Colombia"},{"customerId":1680,"customerName":"Shelley Wall","phone":"(225) 633-7548","email":"libero.morbi.accumsan@protonmail.edu","address":"Ap #381-488 Quis Rd.","postalZip":"4026","country":"Peru"},{"customerId":1681,"customerName":"Stacey Perry","phone":"1-535-321-4212","email":"sed.pede@icloud.edu","address":"Ap #564-794 Vitae, Av.","postalZip":"7876 UD","country":"Mexico"},{"customerId":1682,"customerName":"Colleen Pickett","phone":"(742) 741-5565","email":"in.sodales.elit@hotmail.ca","address":"Ap #637-1333 Mauris Av.","postalZip":"645842","country":"Colombia"},{"customerId":1683,"customerName":"Sydnee Lowe","phone":"(320) 244-4030","email":"etiam.laoreet.libero@yahoo.com","address":"4435 Senectus Ave","postalZip":"30902","country":"Vietnam"},{"customerId":1684,"customerName":"Aiko Patton","phone":"(215) 551-6732","email":"molestie.sodales.mauris@protonmail.org","address":"920-4686 Tellus Avenue","postalZip":"67-27","country":"Poland"},{"customerId":1685,"customerName":"Thane Martinez","phone":"(514) 378-4784","email":"libero.proin@google.org","address":"813-1161 Curae Road","postalZip":"21113","country":"Italy"},{"customerId":1686,"customerName":"Kimberly Dillon","phone":"1-878-431-4544","email":"pellentesque.sed@hotmail.com","address":"Ap #118-4240 Montes, Road","postalZip":"37717","country":"Poland"},{"customerId":1687,"customerName":"Belle Newman","phone":"(855) 547-4333","email":"mauris@outlook.ca","address":"189-3660 Nam Street","postalZip":"4386","country":"Sweden"},{"customerId":1688,"customerName":"Lareina Gilmore","phone":"1-278-922-8676","email":"vitae.orci@icloud.com","address":"625-2261 Convallis St.","postalZip":"3214-4318","country":"Russian Federation"},{"customerId":1689,"customerName":"Rahim Dejesus","phone":"(672) 377-3160","email":"pede.cum@icloud.com","address":"326-3392 Dolor Rd.","postalZip":"501067","country":"Colombia"},{"customerId":1690,"customerName":"Dale Houston","phone":"(658) 121-5125","email":"ipsum@outlook.edu","address":"Ap #162-1267 Erat Av.","postalZip":"27711","country":"United Kingdom"},{"customerId":1691,"customerName":"Kaseem Delaney","phone":"(643) 691-8186","email":"fermentum.fermentum@google.com","address":"Ap #418-6382 Vitae Rd.","postalZip":"44766","country":"Norway"},{"customerId":1692,"customerName":"Avye Hardin","phone":"1-273-860-5670","email":"eget.ipsum@hotmail.org","address":"477-4210 Mi Street","postalZip":"8862","country":"Norway"},{"customerId":1693,"customerName":"Susan Baldwin","phone":"(964) 364-8434","email":"dignissim@aol.couk","address":"202-7842 In Road","postalZip":"218375","country":"Australia"},{"customerId":1694,"customerName":"Lilah West","phone":"1-796-169-5322","email":"fringilla.cursus@icloud.net","address":"Ap #310-580 Enim, Road","postalZip":"245344","country":"Spain"},{"customerId":1695,"customerName":"Coby Mckenzie","phone":"(213) 845-8650","email":"orci.tincidunt@protonmail.com","address":"806-7767 Quis Road","postalZip":"4177","country":"Norway"},{"customerId":1696,"customerName":"Christine Jennings","phone":"(715) 537-2464","email":"in.scelerisque@google.ca","address":"124-5918 Cubilia Rd.","postalZip":"1361","country":"Vietnam"},{"customerId":1697,"customerName":"Lewis Grimes","phone":"(572) 464-6213","email":"ullamcorper.velit.in@icloud.net","address":"229-7576 Ligula Rd.","postalZip":"613522","country":"Germany"},{"customerId":1698,"customerName":"Emily Collier","phone":"(278) 870-4749","email":"suspendisse.commodo@icloud.com","address":"4977 Eu Ave","postalZip":"1385 OM","country":"Belgium"},{"customerId":1699,"customerName":"Nevada Hebert","phone":"(843) 650-1745","email":"pellentesque.ut@outlook.couk","address":"P.O. Box 531, 4654 Non, St.","postalZip":"82187","country":"Norway"},{"customerId":1700,"customerName":"Lamar Hunter","phone":"(737) 457-2372","email":"morbi@outlook.couk","address":"P.O. Box 210, 9393 Porttitor Rd.","postalZip":"34348-85852","country":"Canada"},{"customerId":1701,"customerName":"Clio Sutton","phone":"(522) 825-4448","email":"fringilla.euismod@google.ca","address":"777-1845 Sollicitudin St.","postalZip":"163246","country":"Pakistan"},{"customerId":1702,"customerName":"MacKensie Bennett","phone":"1-739-635-7427","email":"id@icloud.org","address":"Ap #584-7811 Amet St.","postalZip":"574645","country":"Canada"},{"customerId":1703,"customerName":"Harding Mosley","phone":"(873) 224-4335","email":"pretium.neque.morbi@yahoo.com","address":"3540 Est, Ave","postalZip":"8237","country":"Ukraine"},{"customerId":1704,"customerName":"Sylvester Suarez","phone":"(325) 788-6486","email":"sed.orci.lobortis@outlook.com","address":"234-9600 Hendrerit. Road","postalZip":"15426","country":"Australia"},{"customerId":1705,"customerName":"Amy Gillespie","phone":"(152) 523-4975","email":"egestas@outlook.com","address":"Ap #158-2997 Dignissim St.","postalZip":"97-167","country":"Germany"},{"customerId":1706,"customerName":"Hayden Moon","phone":"(935) 260-7756","email":"nisi.mauris.nulla@hotmail.net","address":"427-1201 Auctor St.","postalZip":"66Z 2W8","country":"Colombia"},{"customerId":1707,"customerName":"Sara Anderson","phone":"(718) 748-8122","email":"iaculis@google.com","address":"Ap #677-4355 Vulputate St.","postalZip":"8283","country":"Peru"},{"customerId":1708,"customerName":"Stacy Meyers","phone":"(328) 335-6716","email":"elementum@protonmail.org","address":"Ap #449-8065 Amet St.","postalZip":"20T 5A4","country":"Philippines"},{"customerId":1709,"customerName":"Cedric Roberts","phone":"1-341-646-8248","email":"morbi@yahoo.edu","address":"P.O. Box 415, 8188 Dignissim Road","postalZip":"84-65","country":"Australia"},{"customerId":1710,"customerName":"Amity Roberson","phone":"(628) 627-8750","email":"arcu.sed@aol.com","address":"Ap #338-3979 Commodo Av.","postalZip":"228578","country":"Australia"},{"customerId":1711,"customerName":"Adele Newman","phone":"(203) 571-8100","email":"sagittis.felis.donec@protonmail.org","address":"P.O. Box 671, 5754 Sed Rd.","postalZip":"341169","country":"Indonesia"},{"customerId":1712,"customerName":"Caleb Osborn","phone":"(935) 615-2648","email":"placerat@google.edu","address":"P.O. Box 492, 5843 Ipsum. Av.","postalZip":"56826","country":"Peru"},{"customerId":1713,"customerName":"Xyla Waters","phone":"(818) 779-4231","email":"aenean.eget@aol.net","address":"6226 Leo Av.","postalZip":"41327","country":"Sweden"},{"customerId":1714,"customerName":"Samson Chan","phone":"(439) 813-0536","email":"posuere.at@icloud.com","address":"Ap #287-2311 Erat, Ave","postalZip":"9992","country":"Chile"},{"customerId":1715,"customerName":"Kevyn Horn","phone":"1-874-485-4475","email":"velit@yahoo.couk","address":"197-545 Eu Avenue","postalZip":"ST5 3VT","country":"United States"},{"customerId":1716,"customerName":"Evangeline Finch","phone":"(582) 173-5533","email":"integer.urna@icloud.com","address":"Ap #804-798 Mi. Avenue","postalZip":"48308","country":"China"},{"customerId":1717,"customerName":"Damian Pace","phone":"1-773-447-4366","email":"lorem@aol.couk","address":"223-4156 Id Ave","postalZip":"5612","country":"Pakistan"},{"customerId":1718,"customerName":"Jenna Mcneil","phone":"1-844-688-2542","email":"quis.diam@icloud.edu","address":"Ap #681-370 Malesuada Rd.","postalZip":"362646","country":"Indonesia"},{"customerId":1719,"customerName":"Raya Hickman","phone":"(586) 301-1642","email":"a.enim@google.edu","address":"847-8413 Donec Av.","postalZip":"7422","country":"Brazil"},{"customerId":1720,"customerName":"Rana Willis","phone":"1-861-551-8589","email":"aliquam.arcu@protonmail.org","address":"P.O. Box 762, 7096 Dolor. Rd.","postalZip":"74285","country":"Austria"},{"customerId":1721,"customerName":"Lani Britt","phone":"(367) 875-1722","email":"facilisis.non@hotmail.com","address":"P.O. Box 981, 4572 Dolor St.","postalZip":"418266","country":"Costa Rica"},{"customerId":1722,"customerName":"Duncan Fowler","phone":"(412) 556-7453","email":"egestas.a@outlook.ca","address":"Ap #767-3723 Nec Av.","postalZip":"7357","country":"Colombia"},{"customerId":1723,"customerName":"Linus Carey","phone":"1-391-844-2845","email":"vitae@hotmail.edu","address":"7570 Nulla St.","postalZip":"2973","country":"South Africa"},{"customerId":1724,"customerName":"Brianna Brooks","phone":"(405) 452-2352","email":"varius.ultrices@icloud.couk","address":"385 Eget, Avenue","postalZip":"56726-876","country":"Australia"},{"customerId":1725,"customerName":"Tanya Riggs","phone":"(138) 673-5782","email":"sociis.natoque@icloud.ca","address":"Ap #344-675 Lacus, Rd.","postalZip":"XV3 1SI","country":"South Africa"},{"customerId":1726,"customerName":"Sopoline Macdonald","phone":"1-271-591-6086","email":"penatibus.et@aol.com","address":"4243 Dui, St.","postalZip":"2866","country":"Turkey"},{"customerId":1727,"customerName":"Sybil Dillard","phone":"1-911-143-8841","email":"accumsan.neque@yahoo.net","address":"Ap #160-4400 Sed St.","postalZip":"306819","country":"Spain"},{"customerId":1728,"customerName":"Raphael Dean","phone":"(385) 414-3368","email":"tellus.aenean@aol.ca","address":"737-4581 Ligula Ave","postalZip":"R84 5VW","country":"Chile"},{"customerId":1729,"customerName":"Aline Blanchard","phone":"1-266-647-2786","email":"vel.arcu@aol.net","address":"Ap #975-5147 Odio. Street","postalZip":"43122","country":"Austria"},{"customerId":1730,"customerName":"Calvin Watkins","phone":"(533) 578-8483","email":"donec@hotmail.edu","address":"2175 Tempus St.","postalZip":"264537","country":"Costa Rica"},{"customerId":1731,"customerName":"Mallory Foley","phone":"1-560-215-0146","email":"nisi.nibh.lacinia@outlook.com","address":"8619 Libero. St.","postalZip":"547483","country":"Mexico"},{"customerId":1732,"customerName":"Lillith Hubbard","phone":"(806) 617-7872","email":"luctus.vulputate@yahoo.com","address":"Ap #794-6524 Enim, Av.","postalZip":"23-739","country":"United States"},{"customerId":1733,"customerName":"Kellie Ramirez","phone":"(323) 866-9423","email":"parturient.montes.nascetur@hotmail.org","address":"P.O. Box 800, 9339 A, Street","postalZip":"9730","country":"Norway"},{"customerId":1734,"customerName":"Alfonso Hampton","phone":"1-751-293-7671","email":"cras.interdum.nunc@aol.couk","address":"839-1907 Inceptos Av.","postalZip":"533273","country":"Russian Federation"},{"customerId":1735,"customerName":"Shad Vance","phone":"1-877-577-7578","email":"dictum.augue@icloud.org","address":"Ap #934-5519 Diam Avenue","postalZip":"37265","country":"Sweden"},{"customerId":1736,"customerName":"Davis Gill","phone":"(372) 548-8655","email":"commodo.hendrerit.donec@icloud.ca","address":"334-998 Ac Ave","postalZip":"85486-525","country":"Peru"},{"customerId":1737,"customerName":"Honorato Hester","phone":"(277) 235-2260","email":"cras@outlook.net","address":"Ap #315-322 At Av.","postalZip":"75-45","country":"Australia"},{"customerId":1738,"customerName":"Melodie Watkins","phone":"(695) 611-5373","email":"donec.elementum.lorem@hotmail.edu","address":"5158 Eu St.","postalZip":"43978","country":"India"},{"customerId":1739,"customerName":"Noel Carlson","phone":"1-717-155-2656","email":"blandit@google.edu","address":"190-3256 Risus. Street","postalZip":"24649","country":"New Zealand"},{"customerId":1740,"customerName":"Chester Ballard","phone":"(235) 746-0634","email":"lorem.ac@google.com","address":"4124 Laoreet Avenue","postalZip":"97-134","country":"Indonesia"},{"customerId":1741,"customerName":"Daniel Knapp","phone":"1-323-285-1218","email":"a.dui.cras@hotmail.org","address":"P.O. Box 641, 1963 Tristique Road","postalZip":"7125","country":"Germany"},{"customerId":1742,"customerName":"Dara Battle","phone":"1-558-514-2465","email":"commodo.at.libero@yahoo.org","address":"P.O. Box 497, 386 Morbi Street","postalZip":"277351","country":"Indonesia"},{"customerId":1743,"customerName":"Henry Sharpe","phone":"(521) 283-1806","email":"nunc.nulla@aol.couk","address":"8274 Etiam St.","postalZip":"86510","country":"Pakistan"},{"customerId":1744,"customerName":"Ethan Chandler","phone":"(557) 838-2445","email":"purus.sapien@icloud.ca","address":"P.O. Box 511, 4478 Quis Avenue","postalZip":"336594","country":"Italy"},{"customerId":1745,"customerName":"Ezekiel Collier","phone":"1-622-387-0656","email":"phasellus.dapibus.quam@google.net","address":"734-2366 Eget Street","postalZip":"74715-329","country":"Canada"},{"customerId":1746,"customerName":"Nigel Rowland","phone":"(163) 488-1288","email":"eleifend@protonmail.ca","address":"5461 Malesuada Street","postalZip":"719436","country":"China"},{"customerId":1747,"customerName":"Roary Byers","phone":"1-419-463-5765","email":"dolor@hotmail.org","address":"1244 Sit Street","postalZip":"57778","country":"Chile"},{"customerId":1748,"customerName":"Nasim Hickman","phone":"(347) 956-8632","email":"nam.interdum@icloud.edu","address":"181-9755 Cum Ave","postalZip":"122776","country":"Russian Federation"},{"customerId":1749,"customerName":"Maya Shelton","phone":"1-912-563-1276","email":"vulputate.risus@protonmail.edu","address":"Ap #169-6106 Lorem Street","postalZip":"338952","country":"Indonesia"},{"customerId":1750,"customerName":"Ahmed May","phone":"1-484-672-8434","email":"vel.venenatis@google.couk","address":"847-6348 Dui Av.","postalZip":"67857","country":"Belgium"},{"customerId":1751,"customerName":"Jena Watts","phone":"1-628-737-1989","email":"cursus.diam@protonmail.net","address":"120-2380 Ut, Rd.","postalZip":"36031223","country":"Costa Rica"},{"customerId":1752,"customerName":"Sylvester Sherman","phone":"(413) 839-4337","email":"laoreet@outlook.edu","address":"Ap #514-6542 Mattis. Road","postalZip":"7771","country":"Indonesia"},{"customerId":1753,"customerName":"Ruth Booker","phone":"1-468-486-1678","email":"quisque.libero@yahoo.ca","address":"P.O. Box 665, 1469 Turpis. Rd.","postalZip":"37595","country":"United Kingdom"},{"customerId":1754,"customerName":"Raja Mayer","phone":"(304) 302-3799","email":"risus.donec.egestas@outlook.net","address":"P.O. Box 878, 5902 Metus. Av.","postalZip":"13003","country":"Brazil"},{"customerId":1755,"customerName":"Theodore Bryan","phone":"(115) 851-7252","email":"dignissim.maecenas@protonmail.edu","address":"P.O. Box 270, 7392 Eu, St.","postalZip":"83-848","country":"Netherlands"},{"customerId":1756,"customerName":"Jayme Becker","phone":"(918) 537-1685","email":"rhoncus.id.mollis@hotmail.com","address":"342-4576 Nulla St.","postalZip":"6380","country":"Philippines"},{"customerId":1757,"customerName":"Denton Day","phone":"1-624-955-6135","email":"amet.consectetuer.adipiscing@hotmail.com","address":"Ap #766-904 Nunc St.","postalZip":"806901","country":"Austria"},{"customerId":1758,"customerName":"Clinton Lewis","phone":"(297) 239-0718","email":"orci.lacus@icloud.edu","address":"Ap #432-1003 Ac Rd.","postalZip":"267623","country":"Indonesia"},{"customerId":1759,"customerName":"Brody Saunders","phone":"1-433-337-4683","email":"ut.sagittis@aol.couk","address":"P.O. Box 739, 6128 Dignissim Rd.","postalZip":"23673","country":"Chile"},{"customerId":1760,"customerName":"Harriet Howell","phone":"1-540-430-7152","email":"aliquet@google.com","address":"5252 Maecenas Avenue","postalZip":"528483","country":"Philippines"},{"customerId":1761,"customerName":"Todd Fisher","phone":"(667) 877-9308","email":"dictum.phasellus@icloud.com","address":"Ap #301-3983 Montes, St.","postalZip":"651870","country":"New Zealand"},{"customerId":1762,"customerName":"Giselle Moon","phone":"(424) 655-1381","email":"et.magnis.dis@hotmail.edu","address":"638-7918 Luctus Rd.","postalZip":"613656","country":"Mexico"},{"customerId":1763,"customerName":"Caryn Adkins","phone":"(733) 891-3838","email":"accumsan.laoreet@protonmail.com","address":"162-7076 Morbi Street","postalZip":"34282","country":"Austria"},{"customerId":1764,"customerName":"Sydney Haynes","phone":"1-355-161-5018","email":"penatibus@google.ca","address":"485-7517 Fusce St.","postalZip":"605943","country":"Ireland"},{"customerId":1765,"customerName":"Tatyana Dalton","phone":"(814) 373-1703","email":"libero@yahoo.com","address":"685-2282 Dolor. St.","postalZip":"47046","country":"Poland"},{"customerId":1766,"customerName":"Elvis Jacobs","phone":"1-264-716-1507","email":"nisi@icloud.com","address":"P.O. Box 161, 6636 Vestibulum Avenue","postalZip":"94547","country":"France"},{"customerId":1767,"customerName":"Cally Barber","phone":"1-632-478-8265","email":"class.aptent@outlook.edu","address":"427-4554 Suspendisse Rd.","postalZip":"81183","country":"Indonesia"},{"customerId":1768,"customerName":"Harrison David","phone":"1-773-694-6658","email":"tellus.id.nunc@icloud.couk","address":"Ap #270-9912 Nibh. Road","postalZip":"7588","country":"Peru"},{"customerId":1769,"customerName":"Georgia Shepherd","phone":"(847) 315-8517","email":"ullamcorper.viverra.maecenas@hotmail.com","address":"368-2564 Ac Road","postalZip":"BG4 7PS","country":"Austria"},{"customerId":1770,"customerName":"Buffy Sanders","phone":"(712) 741-6568","email":"nam.ac.nulla@aol.net","address":"P.O. Box 415, 6925 Vitae, Avenue","postalZip":"04251","country":"Belgium"},{"customerId":1771,"customerName":"Brenda Payne","phone":"1-816-969-4577","email":"penatibus@aol.edu","address":"Ap #922-1366 Et, Avenue","postalZip":"58281-68196","country":"South Korea"},{"customerId":1772,"customerName":"Wylie Morton","phone":"(245) 427-8237","email":"aliquam.vulputate@outlook.couk","address":"861-9336 Magna. St.","postalZip":"45948","country":"Austria"},{"customerId":1773,"customerName":"Noah Powers","phone":"(173) 562-2488","email":"vitae@protonmail.net","address":"465-8904 Vivamus Av.","postalZip":"5824","country":"Ukraine"},{"customerId":1774,"customerName":"Ava Harmon","phone":"(221) 295-1966","email":"cum@aol.net","address":"505-5922 Curae St.","postalZip":"R3M 3R3","country":"Colombia"},{"customerId":1775,"customerName":"Jesse Brock","phone":"1-596-872-5628","email":"integer.sem.elit@yahoo.net","address":"1958 Amet, St.","postalZip":"04649","country":"Norway"},{"customerId":1776,"customerName":"Melinda O'brien","phone":"(468) 555-8182","email":"suscipit.nonummy@aol.edu","address":"509-5138 Ante Ave","postalZip":"5557","country":"Austria"},{"customerId":1777,"customerName":"Charles Skinner","phone":"1-156-831-7663","email":"et.magnis@outlook.org","address":"744-9893 Vel St.","postalZip":"6230","country":"South Africa"},{"customerId":1778,"customerName":"Jeremy Bailey","phone":"(414) 432-2193","email":"lectus.pede@protonmail.ca","address":"258-1229 Nec St.","postalZip":"5549","country":"Canada"},{"customerId":1779,"customerName":"Hannah Richard","phone":"1-551-851-4881","email":"enim.nisl@hotmail.com","address":"Ap #951-9530 Magna, Avenue","postalZip":"53-475","country":"Australia"},{"customerId":1780,"customerName":"Michael Long","phone":"(133) 817-2544","email":"vitae.orci@aol.couk","address":"241-1013 At, Rd.","postalZip":"427153","country":"Austria"},{"customerId":1781,"customerName":"Ulysses Gutierrez","phone":"(411) 761-4166","email":"faucibus.morbi.vehicula@hotmail.ca","address":"Ap #943-3504 Enim, St.","postalZip":"263511","country":"South Korea"},{"customerId":1782,"customerName":"Harrison Francis","phone":"1-643-914-3553","email":"metus@hotmail.org","address":"Ap #201-3925 Libero Road","postalZip":"454198","country":"Vietnam"},{"customerId":1783,"customerName":"Neil Williamson","phone":"(748) 412-4278","email":"quam.vel@google.ca","address":"575 Sed Rd.","postalZip":"98-14","country":"South Korea"},{"customerId":1784,"customerName":"Price Fernandez","phone":"(549) 322-5658","email":"tincidunt.nibh@google.edu","address":"522-1392 Non Road","postalZip":"5371","country":"Pakistan"},{"customerId":1785,"customerName":"Clark Conner","phone":"1-869-767-9227","email":"ante.blandit.viverra@protonmail.edu","address":"3083 Ullamcorper, Street","postalZip":"955573","country":"Singapore"},{"customerId":1786,"customerName":"Jason Callahan","phone":"(116) 867-7430","email":"quis.lectus.nullam@icloud.net","address":"864-1456 Quisque Ave","postalZip":"4963","country":"Vietnam"},{"customerId":1787,"customerName":"Alyssa Mathis","phone":"1-802-719-9555","email":"neque@icloud.ca","address":"177-5985 Malesuada Av.","postalZip":"39-58","country":"United States"},{"customerId":1788,"customerName":"Elijah Jones","phone":"(524) 683-1743","email":"ut.sagittis.lobortis@hotmail.com","address":"207-9847 Pede, Avenue","postalZip":"53213","country":"Poland"},{"customerId":1789,"customerName":"Georgia Nash","phone":"(969) 557-6952","email":"turpis.nec@outlook.com","address":"P.O. Box 944, 6476 Interdum. St.","postalZip":"8925","country":"Ukraine"},{"customerId":1790,"customerName":"Dara Riley","phone":"(526) 520-1646","email":"phasellus.in@icloud.org","address":"P.O. Box 441, 426 Eu Rd.","postalZip":"B7A 8T3","country":"Philippines"},{"customerId":1791,"customerName":"Belle Warner","phone":"1-415-566-7517","email":"blandit.at.nisi@outlook.net","address":"549-8717 Dui Rd.","postalZip":"758163","country":"Austria"},{"customerId":1792,"customerName":"Coby Merritt","phone":"1-618-671-8465","email":"ipsum@yahoo.couk","address":"Ap #785-8280 Mauris Rd.","postalZip":"644746","country":"Ukraine"},{"customerId":1793,"customerName":"Mannix Haynes","phone":"1-554-897-5620","email":"et@protonmail.edu","address":"P.O. Box 131, 6568 A St.","postalZip":"165169","country":"France"},{"customerId":1794,"customerName":"Blossom Kemp","phone":"1-854-674-8451","email":"adipiscing.mauris@icloud.net","address":"P.O. Box 128, 9829 Nulla. Avenue","postalZip":"216419","country":"Costa Rica"},{"customerId":1795,"customerName":"Ferris Greene","phone":"(532) 724-8962","email":"convallis.ligula@icloud.edu","address":"814-9823 Est. Street","postalZip":"445322","country":"Indonesia"},{"customerId":1796,"customerName":"Anika Petersen","phone":"1-263-356-6285","email":"adipiscing.enim@protonmail.net","address":"Ap #757-2085 In Road","postalZip":"58602-945","country":"Pakistan"},{"customerId":1797,"customerName":"Thane Lewis","phone":"(621) 351-7054","email":"porttitor.vulputate@google.ca","address":"P.O. Box 128, 7773 Eu, St.","postalZip":"43346-654","country":"Pakistan"},{"customerId":1798,"customerName":"Harriet Buckner","phone":"(341) 946-9522","email":"facilisis@hotmail.edu","address":"Ap #811-1435 Cursus Rd.","postalZip":"33541","country":"Philippines"},{"customerId":1799,"customerName":"Ishmael Haley","phone":"(172) 970-7286","email":"nec.quam.curabitur@protonmail.ca","address":"606-6505 Nulla Ave","postalZip":"27874","country":"Turkey"},{"customerId":1800,"customerName":"Hayes Heath","phone":"(294) 863-1797","email":"dapibus.ligula.aliquam@google.org","address":"802-7664 Sit Street","postalZip":"5841","country":"Ireland"},{"customerId":1801,"customerName":"Ivor Yang","phone":"1-489-721-6641","email":"sed@icloud.com","address":"Ap #511-8042 Turpis. Av.","postalZip":"30414","country":"Belgium"},{"customerId":1802,"customerName":"Zachary Fuller","phone":"(569) 501-6280","email":"curabitur.vel@outlook.edu","address":"Ap #479-149 Mi Road","postalZip":"45138-56581","country":"China"},{"customerId":1803,"customerName":"Boris Carr","phone":"(246) 426-8635","email":"nunc.mauris@hotmail.edu","address":"5988 Augue Rd.","postalZip":"71483","country":"Norway"},{"customerId":1804,"customerName":"Jillian Hester","phone":"1-842-170-8880","email":"libero.donec.consectetuer@yahoo.ca","address":"Ap #473-5694 Donec Street","postalZip":"13735","country":"Indonesia"},{"customerId":1805,"customerName":"Molly Curtis","phone":"1-463-287-9365","email":"donec.non.justo@protonmail.net","address":"Ap #100-5411 Integer Street","postalZip":"62107","country":"Brazil"},{"customerId":1806,"customerName":"August Glenn","phone":"(786) 700-3867","email":"auctor.non.feugiat@hotmail.org","address":"Ap #102-6496 Tincidunt Rd.","postalZip":"71173","country":"Turkey"},{"customerId":1807,"customerName":"Guinevere Watkins","phone":"1-744-686-4053","email":"suspendisse.aliquet@outlook.com","address":"346-3526 Aliquam Road","postalZip":"78-885","country":"Austria"},{"customerId":1808,"customerName":"Fletcher Snyder","phone":"(782) 222-2403","email":"aliquam.rutrum@yahoo.couk","address":"299-6142 Mauris, St.","postalZip":"15543","country":"Colombia"},{"customerId":1809,"customerName":"Emi Hendricks","phone":"1-365-569-6802","email":"maecenas.iaculis.aliquet@google.org","address":"Ap #468-2981 Molestie Rd.","postalZip":"139735","country":"Netherlands"},{"customerId":1810,"customerName":"Griffith Koch","phone":"1-677-712-7032","email":"diam@icloud.edu","address":"848-5850 Ante Street","postalZip":"273287","country":"Indonesia"},{"customerId":1811,"customerName":"Oleg Benson","phone":"1-438-842-5605","email":"enim.sit@outlook.edu","address":"966-7757 Cras Av.","postalZip":"932172","country":"Mexico"},{"customerId":1812,"customerName":"Brian Tanner","phone":"1-522-315-2414","email":"nec@icloud.ca","address":"Ap #784-640 Nunc, Rd.","postalZip":"9305","country":"Spain"},{"customerId":1813,"customerName":"Macaulay Emerson","phone":"1-256-558-1718","email":"dolor.sit.amet@protonmail.net","address":"602-1910 Egestas St.","postalZip":"5143","country":"Sweden"},{"customerId":1814,"customerName":"Donovan Farrell","phone":"1-262-998-8322","email":"a@outlook.com","address":"3197 Auctor Ave","postalZip":"660874","country":"Germany"},{"customerId":1815,"customerName":"Jack Mcgowan","phone":"1-844-617-1574","email":"ipsum.cursus@icloud.couk","address":"7325 Sagittis Rd.","postalZip":"844446","country":"Italy"},{"customerId":1816,"customerName":"Carly Sweet","phone":"(809) 648-3876","email":"amet.diam.eu@outlook.org","address":"Ap #622-1658 Mauris Rd.","postalZip":"80270-737","country":"Netherlands"},{"customerId":1817,"customerName":"Jemima Foley","phone":"1-852-247-2287","email":"semper.nam@yahoo.com","address":"Ap #770-6836 Vitae, Rd.","postalZip":"S71 2ME","country":"Italy"},{"customerId":1818,"customerName":"Cameron Norton","phone":"(239) 640-5270","email":"libero.lacus.varius@google.net","address":"970 Cursus. Rd.","postalZip":"3864","country":"Singapore"},{"customerId":1819,"customerName":"Cameron Moran","phone":"1-335-431-4146","email":"adipiscing@protonmail.org","address":"Ap #699-2557 Non Av.","postalZip":"82601","country":"Philippines"},{"customerId":1820,"customerName":"Harper Chang","phone":"(657) 168-5387","email":"phasellus@aol.ca","address":"P.O. Box 583, 4501 Netus Avenue","postalZip":"52-85","country":"South Korea"},{"customerId":1821,"customerName":"Wayne Ward","phone":"(103) 545-3443","email":"accumsan.neque@icloud.ca","address":"472-2686 Morbi Rd.","postalZip":"67283-89433","country":"Indonesia"},{"customerId":1822,"customerName":"Melanie Lopez","phone":"(400) 623-2558","email":"nibh.quisque.nonummy@yahoo.net","address":"Ap #911-261 Bibendum St.","postalZip":"49474","country":"Austria"},{"customerId":1823,"customerName":"Emi Maddox","phone":"1-416-492-6492","email":"enim.mi.tempor@google.ca","address":"692-6228 Vitae, Rd.","postalZip":"842514","country":"Brazil"},{"customerId":1824,"customerName":"Anjolie Lara","phone":"(864) 413-3315","email":"praesent.interdum.ligula@google.org","address":"595-325 Suspendisse Road","postalZip":"4426 UI","country":"Ukraine"},{"customerId":1825,"customerName":"Quail Norris","phone":"1-257-603-7737","email":"dolor.tempus@protonmail.couk","address":"213-8882 Lorem Street","postalZip":"22038","country":"Russian Federation"},{"customerId":1826,"customerName":"Marah Fletcher","phone":"(326) 705-0128","email":"faucibus.lectus@hotmail.org","address":"764-8019 Pede Road","postalZip":"58238","country":"Norway"},{"customerId":1827,"customerName":"Melinda Grant","phone":"(370) 534-5882","email":"est@yahoo.com","address":"184-2603 Tellus, Avenue","postalZip":"5477","country":"Chile"},{"customerId":1828,"customerName":"Cleo Tate","phone":"1-618-442-5272","email":"lectus.a@aol.couk","address":"2491 Et, Rd.","postalZip":"50106","country":"Indonesia"},{"customerId":1829,"customerName":"Keefe Carlson","phone":"(912) 721-8764","email":"dolor.nonummy@aol.edu","address":"298-2756 Ornare Av.","postalZip":"13995","country":"Pakistan"},{"customerId":1830,"customerName":"Chandler Underwood","phone":"1-412-911-1417","email":"cursus.et.eros@outlook.com","address":"867-8864 Sollicitudin Street","postalZip":"8764","country":"Singapore"},{"customerId":1831,"customerName":"Gavin House","phone":"1-545-851-8989","email":"diam.eu@aol.org","address":"Ap #139-5780 Amet Ave","postalZip":"03150","country":"Ukraine"},{"customerId":1832,"customerName":"Alan Shelton","phone":"1-556-476-3653","email":"ante@google.org","address":"105-8354 Proin Street","postalZip":"5148 LO","country":"Germany"},{"customerId":1833,"customerName":"Wylie Trujillo","phone":"(437) 892-2136","email":"ante@hotmail.edu","address":"Ap #350-8470 Posuere, Rd.","postalZip":"622673","country":"Canada"},{"customerId":1834,"customerName":"Oliver Nguyen","phone":"1-929-736-1834","email":"orci.lobortis@google.org","address":"P.O. Box 882, 5936 Vitae Ave","postalZip":"H2L 6E1","country":"New Zealand"},{"customerId":1835,"customerName":"Isabelle Velasquez","phone":"(453) 153-4523","email":"eget@aol.org","address":"Ap #244-7627 Augue Rd.","postalZip":"783117","country":"Ukraine"},{"customerId":1836,"customerName":"Regina Weiss","phone":"1-586-355-1362","email":"a.enim@hotmail.couk","address":"596-7708 Ipsum. St.","postalZip":"89226-240","country":"South Africa"},{"customerId":1837,"customerName":"Rae Shaffer","phone":"1-559-617-2783","email":"sagittis.nullam@icloud.org","address":"564-8586 Lobortis Av.","postalZip":"3484","country":"Philippines"},{"customerId":1838,"customerName":"Cairo Mays","phone":"1-761-394-8886","email":"donec.egestas.aliquam@icloud.ca","address":"824-9965 Pellentesque Av.","postalZip":"38-26","country":"Singapore"},{"customerId":1839,"customerName":"Nigel Rodriguez","phone":"(465) 414-1401","email":"sem.ut@outlook.couk","address":"9904 Lorem, St.","postalZip":"80569","country":"Germany"},{"customerId":1840,"customerName":"Allen Edwards","phone":"(485) 774-2467","email":"pellentesque@protonmail.com","address":"864-7078 Dolor. Rd.","postalZip":"689563","country":"Australia"},{"customerId":1841,"customerName":"Reuben Rios","phone":"1-673-192-7641","email":"ridiculus.mus@yahoo.ca","address":"701-8932 Vulputate Rd.","postalZip":"11405","country":"Chile"},{"customerId":1842,"customerName":"Astra Lawson","phone":"1-688-844-0044","email":"nec@google.org","address":"P.O. Box 790, 9203 Ligula. Street","postalZip":"67381","country":"United Kingdom"},{"customerId":1843,"customerName":"Stewart Doyle","phone":"(685) 545-4664","email":"vel@yahoo.org","address":"316-9869 Lectus, Road","postalZip":"464974","country":"Nigeria"},{"customerId":1844,"customerName":"Jessica King","phone":"1-702-407-6351","email":"in.lobortis.tellus@aol.ca","address":"Ap #641-2258 Quam, Rd.","postalZip":"81366","country":"Ireland"},{"customerId":1845,"customerName":"Jesse Conrad","phone":"1-495-767-7781","email":"augue.ut@google.couk","address":"Ap #240-3069 Mauris Street","postalZip":"2863","country":"Poland"},{"customerId":1846,"customerName":"Tiger Levy","phone":"(393) 157-3425","email":"ultricies@protonmail.org","address":"578-5644 Nec Road","postalZip":"11809","country":"Netherlands"},{"customerId":1847,"customerName":"Clare Davenport","phone":"1-467-256-4453","email":"cum.sociis@outlook.edu","address":"438-6184 Cras Street","postalZip":"77763-03658","country":"Peru"},{"customerId":1848,"customerName":"Austin Cortez","phone":"1-451-457-6747","email":"blandit@hotmail.edu","address":"495-8379 Est, Ave","postalZip":"25769","country":"New Zealand"},{"customerId":1849,"customerName":"Amir Blanchard","phone":"1-524-281-3189","email":"pharetra.sed@protonmail.ca","address":"Ap #257-7017 Lorem Avenue","postalZip":"957693","country":"Ireland"},{"customerId":1850,"customerName":"Peter Mcclure","phone":"(657) 563-2573","email":"erat.volutpat@protonmail.edu","address":"P.O. Box 689, 4758 Phasellus Road","postalZip":"28319","country":"Indonesia"},{"customerId":1851,"customerName":"Marah Mcpherson","phone":"(345) 412-8313","email":"augue.id@yahoo.net","address":"311-597 Enim, Road","postalZip":"44941","country":"South Africa"},{"customerId":1852,"customerName":"Erasmus Kramer","phone":"1-982-775-5286","email":"ultrices@hotmail.net","address":"1645 Nascetur Ave","postalZip":"1135","country":"Philippines"},{"customerId":1853,"customerName":"Omar Joyce","phone":"(322) 926-2331","email":"consectetuer.adipiscing@aol.couk","address":"Ap #177-7427 Pharetra Av.","postalZip":"4282","country":"United Kingdom"},{"customerId":1854,"customerName":"August Cervantes","phone":"(530) 972-2722","email":"dignissim.magna@hotmail.com","address":"Ap #959-9935 Dui. Street","postalZip":"13723","country":"South Korea"},{"customerId":1855,"customerName":"Stella Foster","phone":"1-437-227-4156","email":"vitae@yahoo.edu","address":"4300 Elit. Ave","postalZip":"82-667","country":"Spain"},{"customerId":1856,"customerName":"Gloria Baxter","phone":"(719) 881-1924","email":"velit.eget.laoreet@icloud.edu","address":"Ap #811-2759 Senectus Av.","postalZip":"93364","country":"Philippines"},{"customerId":1857,"customerName":"Kuame Wagner","phone":"(865) 181-7591","email":"egestas@aol.edu","address":"981-652 Vel, Rd.","postalZip":"548823","country":"Brazil"},{"customerId":1858,"customerName":"Hakeem Manning","phone":"1-307-542-8165","email":"amet@outlook.edu","address":"P.O. Box 929, 9971 Odio Rd.","postalZip":"684633","country":"Belgium"},{"customerId":1859,"customerName":"Stella Griffith","phone":"1-751-899-6737","email":"fusce.mollis@aol.ca","address":"Ap #551-438 In, Rd.","postalZip":"8843","country":"Ireland"},{"customerId":1860,"customerName":"Ivory Spence","phone":"(547) 148-2471","email":"enim@protonmail.couk","address":"625-8735 Sapien, St.","postalZip":"51111","country":"Italy"},{"customerId":1861,"customerName":"Francis Myers","phone":"1-772-272-5804","email":"aliquam.enim@protonmail.couk","address":"P.O. Box 939, 6243 Id, Ave","postalZip":"67357-78060","country":"Austria"},{"customerId":1862,"customerName":"Alexander Brady","phone":"1-729-342-0668","email":"sociis.natoque@yahoo.ca","address":"322-4405 Quis, St.","postalZip":"645196","country":"Russian Federation"},{"customerId":1863,"customerName":"Carlos Molina","phone":"1-276-809-9145","email":"diam.luctus@hotmail.ca","address":"787-6465 Dolor Rd.","postalZip":"719618","country":"Peru"},{"customerId":1864,"customerName":"Allen Jones","phone":"1-301-303-1943","email":"elit.elit@protonmail.couk","address":"Ap #603-2462 In St.","postalZip":"34225","country":"Russian Federation"},{"customerId":1865,"customerName":"Adena Rodgers","phone":"(556) 234-5054","email":"aliquet.libero@icloud.ca","address":"581-7426 Erat. Ave","postalZip":"866795","country":"France"},{"customerId":1866,"customerName":"Kieran Fowler","phone":"1-466-346-1457","email":"enim@protonmail.net","address":"956-4438 Id, St.","postalZip":"2770","country":"Germany"},{"customerId":1867,"customerName":"Arthur Sims","phone":"1-526-733-2899","email":"sem.consequat@yahoo.org","address":"P.O. Box 257, 5793 Urna. Street","postalZip":"72860","country":"Germany"},{"customerId":1868,"customerName":"Kenneth Walker","phone":"(414) 375-4371","email":"tincidunt.orci@hotmail.ca","address":"9592 Curabitur Rd.","postalZip":"35787","country":"Sweden"},{"customerId":1869,"customerName":"Ryder Powell","phone":"1-624-490-8582","email":"etiam@outlook.edu","address":"P.O. Box 161, 4903 Condimentum Rd.","postalZip":"8215","country":"Sweden"},{"customerId":1870,"customerName":"Genevieve Haynes","phone":"(965) 865-1548","email":"aliquam.eros.turpis@hotmail.edu","address":"862-5038 Non, St.","postalZip":"40504","country":"South Africa"},{"customerId":1871,"customerName":"Flynn Carver","phone":"(146) 235-7187","email":"eget.magna.suspendisse@icloud.edu","address":"Ap #702-5604 Eros. Road","postalZip":"36742-72244","country":"Singapore"},{"customerId":1872,"customerName":"Nicholas Horn","phone":"(263) 162-8732","email":"in.condimentum.donec@hotmail.ca","address":"739-4887 Diam Avenue","postalZip":"36594","country":"Brazil"},{"customerId":1873,"customerName":"Elton Barrera","phone":"1-297-797-6663","email":"ipsum.cursus.vestibulum@hotmail.edu","address":"109-8487 Ut Street","postalZip":"62554","country":"Ukraine"},{"customerId":1874,"customerName":"Garrett Mitchell","phone":"1-809-782-4524","email":"iaculis.odio.nam@protonmail.net","address":"Ap #154-5465 Facilisis St.","postalZip":"5643","country":"Belgium"},{"customerId":1875,"customerName":"Willa Wooten","phone":"1-734-268-2036","email":"est@yahoo.edu","address":"290-6395 Sed Ave","postalZip":"40707","country":"Pakistan"},{"customerId":1876,"customerName":"Octavius Mclean","phone":"1-465-326-6802","email":"blandit.enim.consequat@icloud.ca","address":"Ap #327-7237 Sed St.","postalZip":"S2Y 4B3","country":"United Kingdom"},{"customerId":1877,"customerName":"Deacon Cole","phone":"1-378-653-0840","email":"aliquam.eros@aol.edu","address":"2005 Ipsum Street","postalZip":"6386-8474","country":"France"},{"customerId":1878,"customerName":"Neville Noel","phone":"(811) 751-2258","email":"pulvinar.arcu.et@google.org","address":"P.O. Box 533, 9794 Donec Avenue","postalZip":"1712","country":"Ireland"},{"customerId":1879,"customerName":"Drake Alford","phone":"(541) 288-4877","email":"vulputate@icloud.com","address":"Ap #325-3628 Posuere St.","postalZip":"13447","country":"Italy"},{"customerId":1880,"customerName":"Melodie Bell","phone":"1-226-713-4345","email":"nisl.arcu@aol.edu","address":"6366 Eget Avenue","postalZip":"56836","country":"Peru"},{"customerId":1881,"customerName":"Brittany Townsend","phone":"(642) 416-3802","email":"scelerisque@google.net","address":"P.O. Box 166, 8614 Tincidunt. Ave","postalZip":"33118","country":"Nigeria"},{"customerId":1882,"customerName":"Brynn Hopkins","phone":"(629) 129-1863","email":"ipsum.nunc.id@protonmail.edu","address":"4848 Porta Avenue","postalZip":"236166","country":"United States"},{"customerId":1883,"customerName":"Justina Sharpe","phone":"(772) 338-7876","email":"duis.cursus.diam@aol.net","address":"Ap #673-6972 Sed Avenue","postalZip":"857193","country":"Italy"},{"customerId":1884,"customerName":"Lani Daniels","phone":"(611) 166-0409","email":"mauris@yahoo.com","address":"Ap #953-7019 Nam Road","postalZip":"2385","country":"Colombia"},{"customerId":1885,"customerName":"Matthew Wynn","phone":"(783) 513-6115","email":"egestas.nunc@aol.couk","address":"602-1593 Etiam Av.","postalZip":"785833","country":"Netherlands"},{"customerId":1886,"customerName":"Abraham Cook","phone":"1-265-617-2884","email":"sit.amet@icloud.com","address":"3257 Cursus St.","postalZip":"3753","country":"Canada"},{"customerId":1887,"customerName":"Iliana Hendrix","phone":"1-284-146-8871","email":"curabitur@icloud.org","address":"P.O. Box 395, 3399 Sociis Rd.","postalZip":"7333","country":"Brazil"},{"customerId":1888,"customerName":"William Odom","phone":"1-690-135-9943","email":"facilisis.magna.tellus@aol.com","address":"Ap #802-3901 Tincidunt St.","postalZip":"3211","country":"Vietnam"},{"customerId":1889,"customerName":"Dominic Dodson","phone":"1-606-466-3392","email":"lobortis.quis.pede@google.net","address":"P.O. Box 458, 5161 Ligula Road","postalZip":"15721","country":"Sweden"},{"customerId":1890,"customerName":"Abbot Mercer","phone":"1-156-112-8805","email":"non.lorem@yahoo.couk","address":"P.O. Box 483, 7081 Parturient Avenue","postalZip":"284439","country":"Canada"},{"customerId":1891,"customerName":"Kylynn Jacobson","phone":"(678) 435-0864","email":"orci.adipiscing@google.com","address":"Ap #165-9838 Donec Street","postalZip":"78448","country":"South Korea"},{"customerId":1892,"customerName":"Emery Fisher","phone":"(123) 890-4325","email":"nisl@outlook.net","address":"327-1458 Pede Av.","postalZip":"724060","country":"Chile"},{"customerId":1893,"customerName":"Aquila Morales","phone":"1-662-209-8121","email":"amet.massa@aol.net","address":"5212 Nam Rd.","postalZip":"34052","country":"France"},{"customerId":1894,"customerName":"Steel Alvarez","phone":"1-772-611-8442","email":"in@outlook.couk","address":"8797 Quisque St.","postalZip":"345474","country":"South Korea"},{"customerId":1895,"customerName":"Ciaran Hickman","phone":"1-636-894-1656","email":"mi.tempor.lorem@google.edu","address":"634 Purus Street","postalZip":"5413","country":"Poland"},{"customerId":1896,"customerName":"Cheyenne Pickett","phone":"1-421-154-6217","email":"faucibus.ut@aol.couk","address":"Ap #750-8413 Sit Avenue","postalZip":"89317","country":"New Zealand"},{"customerId":1897,"customerName":"Stacey Frost","phone":"1-205-688-5415","email":"phasellus.dapibus.quam@icloud.net","address":"2731 Convallis Rd.","postalZip":"54N 8K3","country":"Indonesia"},{"customerId":1898,"customerName":"Chanda Short","phone":"1-246-625-1117","email":"vulputate.mauris.sagittis@protonmail.org","address":"Ap #651-7627 Convallis Ave","postalZip":"600991","country":"Ukraine"},{"customerId":1899,"customerName":"Hayden Nicholson","phone":"(252) 843-7630","email":"nisi.cum@yahoo.org","address":"P.O. Box 538, 654 Quam, Ave","postalZip":"345713","country":"Costa Rica"},{"customerId":1900,"customerName":"Ingrid Lamb","phone":"1-215-787-8326","email":"lorem.ut.aliquam@aol.org","address":"Ap #694-6769 Est, Avenue","postalZip":"249507","country":"United States"},{"customerId":1901,"customerName":"Hillary Rutledge","phone":"(685) 647-1350","email":"sodales.elit@hotmail.couk","address":"Ap #929-8555 In St.","postalZip":"64695","country":"Turkey"},{"customerId":1902,"customerName":"McKenzie Woods","phone":"(481) 275-8422","email":"egestas.hendrerit.neque@google.couk","address":"Ap #744-6078 Integer Rd.","postalZip":"248827","country":"Ireland"},{"customerId":1903,"customerName":"Britanni Hurley","phone":"1-359-677-1812","email":"dictum@protonmail.edu","address":"783-1472 Molestie Rd.","postalZip":"B1C 6S0","country":"South Korea"},{"customerId":1904,"customerName":"Brynne Hendrix","phone":"(425) 432-1859","email":"scelerisque.lorem@hotmail.ca","address":"812-3306 Cursus St.","postalZip":"98852-87194","country":"Philippines"},{"customerId":1905,"customerName":"Alan Wise","phone":"(695) 334-4756","email":"lorem.vitae@hotmail.org","address":"3894 Nunc, Street","postalZip":"15443","country":"Turkey"},{"customerId":1906,"customerName":"Baker Stuart","phone":"1-645-318-1323","email":"lobortis@aol.com","address":"P.O. Box 115, 3968 Auctor. Avenue","postalZip":"683633","country":"Chile"},{"customerId":1907,"customerName":"Jack Knowles","phone":"(865) 646-0104","email":"ligula.nullam.enim@outlook.ca","address":"P.O. Box 503, 1481 Nonummy Avenue","postalZip":"6038 FX","country":"Sweden"},{"customerId":1908,"customerName":"Ferdinand Phelps","phone":"(882) 377-4211","email":"interdum.nunc@outlook.edu","address":"Ap #673-6139 Libero St.","postalZip":"84115","country":"Italy"},{"customerId":1909,"customerName":"September Phillips","phone":"1-820-498-4893","email":"sem@icloud.couk","address":"Ap #580-178 Metus. St.","postalZip":"87564","country":"Austria"},{"customerId":1910,"customerName":"Kimberly Figueroa","phone":"(625) 380-4152","email":"massa.mauris@yahoo.ca","address":"Ap #947-7054 Felis Avenue","postalZip":"333803","country":"Norway"},{"customerId":1911,"customerName":"Adara Eaton","phone":"1-331-418-6738","email":"lectus.ante@aol.com","address":"P.O. Box 323, 621 Mauris Rd.","postalZip":"466335","country":"South Korea"},{"customerId":1912,"customerName":"Ivor Benton","phone":"1-254-872-3154","email":"sem.vitae@aol.net","address":"755-1841 Interdum. Street","postalZip":"35623","country":"Germany"},{"customerId":1913,"customerName":"Priscilla Haley","phone":"(367) 358-2304","email":"in.magna@hotmail.net","address":"Ap #594-2415 Adipiscing Rd.","postalZip":"4447","country":"Nigeria"},{"customerId":1914,"customerName":"Wyoming Talley","phone":"(570) 793-8155","email":"in.faucibus@icloud.net","address":"7385 Cursus. Ave","postalZip":"18723-511","country":"Peru"},{"customerId":1915,"customerName":"Theodore Whitley","phone":"(584) 671-6377","email":"tellus.eu@yahoo.net","address":"Ap #687-2211 Quam Ave","postalZip":"2236","country":"Australia"},{"customerId":1916,"customerName":"Adam Ross","phone":"1-923-536-2401","email":"tempor.diam@aol.ca","address":"Ap #445-6340 Malesuada. Av.","postalZip":"561431","country":"France"},{"customerId":1917,"customerName":"Sophia Pugh","phone":"(834) 291-7660","email":"nunc.interdum@outlook.org","address":"Ap #657-3714 Arcu Street","postalZip":"1352","country":"Mexico"},{"customerId":1918,"customerName":"Desirae Gates","phone":"(437) 628-8912","email":"malesuada.fringilla.est@protonmail.net","address":"Ap #445-8866 Sit St.","postalZip":"192504","country":"Norway"},{"customerId":1919,"customerName":"Tad Fisher","phone":"1-112-372-7529","email":"et.magnis@protonmail.com","address":"3946 Vulputate, St.","postalZip":"57-026","country":"India"},{"customerId":1920,"customerName":"Colette Duke","phone":"1-802-387-2346","email":"eget.nisi@google.couk","address":"P.O. Box 611, 2783 Augue St.","postalZip":"86585","country":"South Korea"},{"customerId":1921,"customerName":"Yolanda Mosley","phone":"(462) 737-9037","email":"urna@protonmail.couk","address":"1350 Non Avenue","postalZip":"07-758","country":"Ukraine"},{"customerId":1922,"customerName":"Cathleen Best","phone":"(863) 686-4677","email":"a.enim@outlook.org","address":"Ap #545-7936 Lectus Rd.","postalZip":"32609","country":"New Zealand"},{"customerId":1923,"customerName":"Galena Mueller","phone":"(257) 331-8978","email":"sit@hotmail.org","address":"8386 Adipiscing St.","postalZip":"7096-3056","country":"Turkey"},{"customerId":1924,"customerName":"Zane Fuentes","phone":"1-191-322-5677","email":"amet@outlook.org","address":"Ap #419-7784 Semper Rd.","postalZip":"67247","country":"United States"},{"customerId":1925,"customerName":"Lee Romero","phone":"(675) 103-3374","email":"dolor.quisque@icloud.com","address":"Ap #613-9414 Nec Av.","postalZip":"375359","country":"Belgium"},{"customerId":1926,"customerName":"Bree Christensen","phone":"1-228-192-4787","email":"sed.sem.egestas@hotmail.org","address":"Ap #455-3187 Nisi Rd.","postalZip":"42817","country":"Canada"},{"customerId":1927,"customerName":"Phelan Hammond","phone":"1-329-234-5222","email":"ut.sagittis@icloud.couk","address":"P.O. Box 814, 581 Mauris St.","postalZip":"28452","country":"Nigeria"},{"customerId":1928,"customerName":"Noel O'Neill","phone":"1-434-358-5842","email":"mauris.sit@outlook.ca","address":"6391 Vitae Road","postalZip":"F2 5NZ","country":"Singapore"},{"customerId":1929,"customerName":"Quinn Ballard","phone":"(351) 846-1611","email":"ut.sem.nulla@outlook.ca","address":"377-3132 Et, Avenue","postalZip":"6516","country":"France"},{"customerId":1930,"customerName":"Jane French","phone":"(588) 297-5859","email":"mauris@outlook.org","address":"9514 Nulla Road","postalZip":"87-17","country":"Belgium"},{"customerId":1931,"customerName":"Samson Pate","phone":"1-256-274-5718","email":"eleifend.egestas@yahoo.com","address":"335-2976 Non, Avenue","postalZip":"302914","country":"China"},{"customerId":1932,"customerName":"Lee Bates","phone":"1-522-851-7746","email":"mi.enim.condimentum@icloud.com","address":"Ap #705-7521 Rutrum Rd.","postalZip":"88-378","country":"Russian Federation"},{"customerId":1933,"customerName":"Galena Burke","phone":"1-660-152-5750","email":"turpis.non.enim@icloud.edu","address":"Ap #514-8587 Mi Street","postalZip":"392162","country":"India"},{"customerId":1934,"customerName":"Zelda Sharpe","phone":"1-944-292-7168","email":"erat.neque@google.couk","address":"P.O. Box 978, 647 Arcu. Rd.","postalZip":"4439","country":"Germany"},{"customerId":1935,"customerName":"Alec Wolfe","phone":"(755) 259-5304","email":"ac.mattis.velit@yahoo.org","address":"318-1151 Fusce Avenue","postalZip":"984295","country":"United States"},{"customerId":1936,"customerName":"Lewis Montoya","phone":"1-425-513-1726","email":"orci@icloud.net","address":"P.O. Box 924, 3652 Nam Av.","postalZip":"98182-41395","country":"New Zealand"},{"customerId":1937,"customerName":"Yael Mercado","phone":"(633) 702-6704","email":"iaculis.lacus.pede@google.edu","address":"Ap #752-3027 In Rd.","postalZip":"131797","country":"Indonesia"},{"customerId":1938,"customerName":"Damian Cummings","phone":"1-535-648-2572","email":"suspendisse.ac.metus@aol.com","address":"759-956 Mollis. Street","postalZip":"0158","country":"Vietnam"},{"customerId":1939,"customerName":"Dustin Chaney","phone":"(503) 886-0665","email":"eget@yahoo.couk","address":"3178 Ligula. Rd.","postalZip":"58118-164","country":"Costa Rica"},{"customerId":1940,"customerName":"Shelly Bryan","phone":"(311) 726-0887","email":"eros.turpis.non@protonmail.net","address":"P.O. Box 604, 6770 Dui, Ave","postalZip":"387948","country":"New Zealand"},{"customerId":1941,"customerName":"Charlotte Meadows","phone":"(639) 893-2124","email":"donec.felis@hotmail.ca","address":"P.O. Box 858, 8575 Ipsum Avenue","postalZip":"13225","country":"Peru"},{"customerId":1942,"customerName":"Kenyon Camacho","phone":"1-861-321-8402","email":"varius.nam@yahoo.ca","address":"122-1077 Turpis Road","postalZip":"342261","country":"Singapore"},{"customerId":1943,"customerName":"Leah Singleton","phone":"(462) 129-3256","email":"auctor.velit.aliquam@protonmail.com","address":"8729 Congue. Avenue","postalZip":"12026","country":"Germany"},{"customerId":1944,"customerName":"Jerry Skinner","phone":"(938) 358-7523","email":"ullamcorper.nisl@outlook.ca","address":"Ap #749-5734 Orci Street","postalZip":"2128","country":"Vietnam"},{"customerId":1945,"customerName":"Thaddeus Rosario","phone":"1-548-788-8153","email":"orci@google.couk","address":"906-1436 Orci Avenue","postalZip":"50517","country":"Netherlands"},{"customerId":1946,"customerName":"Abdul Love","phone":"(445) 835-6892","email":"a.tortor.nunc@outlook.ca","address":"Ap #203-3317 Eu Av.","postalZip":"45-541","country":"Belgium"},{"customerId":1947,"customerName":"Karly Knox","phone":"1-582-259-6876","email":"turpis.non@google.net","address":"488-4553 Odio. Street","postalZip":"121636","country":"Mexico"},{"customerId":1948,"customerName":"Maggie Maldonado","phone":"(750) 440-4269","email":"est.arcu.ac@protonmail.couk","address":"P.O. Box 871, 4738 Amet Rd.","postalZip":"911828","country":"Netherlands"},{"customerId":1949,"customerName":"Andrew Carroll","phone":"1-651-717-7573","email":"sapien.gravida@aol.couk","address":"Ap #313-7897 Non, Street","postalZip":"36-82","country":"Vietnam"},{"customerId":1950,"customerName":"Lana Reese","phone":"1-461-611-6288","email":"mus.proin@aol.net","address":"5898 Et Avenue","postalZip":"21157","country":"France"},{"customerId":1951,"customerName":"Althea Delgado","phone":"1-245-556-7878","email":"interdum.curabitur@google.ca","address":"490-8010 Porttitor Rd.","postalZip":"9839","country":"Australia"},{"customerId":1952,"customerName":"Forrest Dunlap","phone":"(902) 334-7146","email":"praesent.interdum@yahoo.edu","address":"Ap #168-8759 Tristique Rd.","postalZip":"41-162","country":"Norway"},{"customerId":1953,"customerName":"Dora Schneider","phone":"(815) 642-8375","email":"libero@icloud.net","address":"279-7895 Fermentum St.","postalZip":"17558-56886","country":"United Kingdom"},{"customerId":1954,"customerName":"Gary Gaines","phone":"(603) 584-0047","email":"maecenas.mi@hotmail.com","address":"227-5991 Lacus. Rd.","postalZip":"874838","country":"China"},{"customerId":1955,"customerName":"Darryl Brennan","phone":"1-952-835-5827","email":"mi@hotmail.couk","address":"546-9418 Ad Av.","postalZip":"11371-28674","country":"New Zealand"},{"customerId":1956,"customerName":"Autumn Murphy","phone":"(944) 534-8183","email":"fermentum@outlook.edu","address":"P.O. Box 789, 1377 Et, Ave","postalZip":"12420","country":"Norway"},{"customerId":1957,"customerName":"Donna Castaneda","phone":"1-964-677-2689","email":"semper.tellus@icloud.com","address":"4979 Vitae Rd.","postalZip":"D2 6MG","country":"Nigeria"},{"customerId":1958,"customerName":"Kirby Kelley","phone":"(814) 225-8824","email":"mauris.erat@yahoo.edu","address":"568-4879 Quisque Av.","postalZip":"648468","country":"Russian Federation"},{"customerId":1959,"customerName":"Elmo Reilly","phone":"(774) 232-2605","email":"velit.cras@aol.couk","address":"2451 Porttitor St.","postalZip":"00-320","country":"United Kingdom"},{"customerId":1960,"customerName":"Gage Johnston","phone":"1-167-686-3155","email":"enim@google.edu","address":"Ap #467-7607 Mi Av.","postalZip":"32-55","country":"Ireland"},{"customerId":1961,"customerName":"Malik Fischer","phone":"(883) 301-7931","email":"neque.nullam.nisl@aol.com","address":"Ap #327-7425 Netus Road","postalZip":"66-810","country":"Chile"},{"customerId":1962,"customerName":"Shelley Wilson","phone":"(703) 672-0707","email":"turpis@icloud.com","address":"Ap #954-200 Ante Av.","postalZip":"86126","country":"India"},{"customerId":1963,"customerName":"Raymond Price","phone":"1-563-164-6654","email":"ante@outlook.edu","address":"221-9731 In Ave","postalZip":"634553","country":"India"},{"customerId":1964,"customerName":"Alden Fox","phone":"(726) 375-4844","email":"ullamcorper.magna@yahoo.ca","address":"6171 Malesuada Avenue","postalZip":"8184","country":"United States"},{"customerId":1965,"customerName":"Jerry Kelly","phone":"1-583-775-0164","email":"odio.auctor@google.ca","address":"4912 Porttitor Rd.","postalZip":"99317","country":"Ireland"},{"customerId":1966,"customerName":"Maisie Dunn","phone":"(392) 679-8155","email":"phasellus@yahoo.ca","address":"Ap #968-9517 Ante Road","postalZip":"542782","country":"Germany"},{"customerId":1967,"customerName":"Whoopi Terrell","phone":"(761) 112-3129","email":"dignissim.magna@google.couk","address":"Ap #552-4560 Cubilia St.","postalZip":"54695","country":"Vietnam"},{"customerId":1968,"customerName":"Todd Chen","phone":"(323) 673-3823","email":"phasellus.dapibus@protonmail.net","address":"P.O. Box 502, 1048 Elementum St.","postalZip":"GW1M 9IR","country":"Colombia"},{"customerId":1969,"customerName":"Lane Hickman","phone":"(378) 534-1640","email":"enim.commodo.hendrerit@hotmail.net","address":"138-830 Lectus Ave","postalZip":"B6W 4S6","country":"China"},{"customerId":1970,"customerName":"Raphael Hines","phone":"(321) 313-4834","email":"commodo.auctor.velit@hotmail.couk","address":"Ap #846-4814 Adipiscing Avenue","postalZip":"834625","country":"Australia"},{"customerId":1971,"customerName":"Selma Villarreal","phone":"1-422-129-7546","email":"euismod.enim@outlook.org","address":"P.O. Box 150, 6190 Mi Road","postalZip":"58791","country":"Mexico"},{"customerId":1972,"customerName":"Maile Hatfield","phone":"(154) 593-6400","email":"venenatis.lacus@google.net","address":"4394 Pede Ave","postalZip":"77338","country":"South Africa"},{"customerId":1973,"customerName":"Dane Conner","phone":"(338) 310-6671","email":"amet.dapibus.id@icloud.net","address":"983-7551 Sem Rd.","postalZip":"9526-8662","country":"Italy"},{"customerId":1974,"customerName":"Dylan Petty","phone":"1-201-571-4956","email":"ac.risus@google.ca","address":"Ap #310-9255 Ligula. Rd.","postalZip":"81M 1V1","country":"Ukraine"},{"customerId":1975,"customerName":"Fay Howard","phone":"(660) 402-4432","email":"sociis.natoque@outlook.com","address":"573-5343 Tellus Av.","postalZip":"11219","country":"Indonesia"},{"customerId":1976,"customerName":"Hedda Gross","phone":"(265) 412-7640","email":"arcu.aliquam@yahoo.com","address":"Ap #726-2764 Posuere St.","postalZip":"23871","country":"South Africa"},{"customerId":1977,"customerName":"Devin Burton","phone":"1-353-432-8572","email":"adipiscing.fringilla.porttitor@icloud.ca","address":"835-1832 Risus. Av.","postalZip":"47-48","country":"Nigeria"},{"customerId":1978,"customerName":"Amber Hubbard","phone":"(251) 369-7381","email":"vel@protonmail.com","address":"5651 Congue Av.","postalZip":"60761","country":"Russian Federation"},{"customerId":1979,"customerName":"Stella Warren","phone":"(730) 217-0434","email":"ipsum.dolor@yahoo.edu","address":"955-8876 Ultrices Road","postalZip":"40018","country":"South Korea"},{"customerId":1980,"customerName":"Miranda Vaughn","phone":"(286) 745-9212","email":"magna.phasellus@outlook.com","address":"Ap #795-7294 Eu Rd.","postalZip":"7394","country":"Chile"},{"customerId":1981,"customerName":"Ahmed Mckinney","phone":"(721) 976-8173","email":"proin.vel@protonmail.com","address":"6101 Orci Road","postalZip":"8564","country":"France"},{"customerId":1982,"customerName":"Felix Mcbride","phone":"1-593-527-3256","email":"aenean.eget@protonmail.edu","address":"4437 A, St.","postalZip":"78541","country":"Mexico"},{"customerId":1983,"customerName":"Vladimir Velazquez","phone":"(372) 460-7710","email":"parturient@icloud.net","address":"Ap #427-1787 Pede Av.","postalZip":"72584","country":"Ireland"},{"customerId":1984,"customerName":"Oprah England","phone":"(825) 604-3254","email":"velit.eu@hotmail.ca","address":"Ap #467-2113 Dapibus St.","postalZip":"812316","country":"Colombia"},{"customerId":1985,"customerName":"Chelsea Richard","phone":"1-233-830-6941","email":"sagittis.semper.nam@yahoo.edu","address":"Ap #120-9600 Orci. Av.","postalZip":"12226","country":"Chile"},{"customerId":1986,"customerName":"Berk Juarez","phone":"1-555-912-8835","email":"pellentesque.massa.lobortis@google.couk","address":"390-4503 Gravida St.","postalZip":"95-58","country":"Poland"},{"customerId":1987,"customerName":"Channing Mcclure","phone":"1-972-275-5207","email":"aenean@google.ca","address":"Ap #482-622 Bibendum Road","postalZip":"11856","country":"United Kingdom"},{"customerId":1988,"customerName":"Gabriel Riddle","phone":"(446) 623-3822","email":"in.mi@google.ca","address":"P.O. Box 126, 1812 Sit Ave","postalZip":"632277","country":"Austria"},{"customerId":1989,"customerName":"Laurel Montoya","phone":"1-631-215-2305","email":"dictum.eu@google.org","address":"7628 Orci Ave","postalZip":"5987","country":"United Kingdom"},{"customerId":1990,"customerName":"Stewart Vasquez","phone":"(372) 925-1206","email":"hendrerit.a.arcu@protonmail.com","address":"960-4259 Elit Ave","postalZip":"12777-34242","country":"Indonesia"},{"customerId":1991,"customerName":"Brody Bowen","phone":"1-631-977-2126","email":"gravida.sagittis@icloud.ca","address":"478 Ante. St.","postalZip":"37508","country":"China"},{"customerId":1992,"customerName":"Boris Short","phone":"1-644-724-7864","email":"pellentesque.a.facilisis@hotmail.net","address":"992-7563 Sem Street","postalZip":"5303","country":"United States"},{"customerId":1993,"customerName":"Deanna Russo","phone":"(276) 819-4043","email":"adipiscing.elit@yahoo.com","address":"P.O. Box 666, 6846 Nibh. St.","postalZip":"57881","country":"Singapore"},{"customerId":1994,"customerName":"Ahmed Ford","phone":"1-751-871-4244","email":"lobortis.augue.scelerisque@google.ca","address":"Ap #182-7880 Donec Rd.","postalZip":"5778","country":"Costa Rica"},{"customerId":1995,"customerName":"Stella Rowland","phone":"(635) 976-8426","email":"nunc@icloud.org","address":"Ap #791-7934 Semper, Rd.","postalZip":"4730 OG","country":"United States"},{"customerId":1996,"customerName":"Chiquita Weiss","phone":"1-420-691-0429","email":"dolor.fusce@yahoo.org","address":"P.O. Box 603, 623 Semper, Rd.","postalZip":"2987","country":"Norway"},{"customerId":1997,"customerName":"Hop Potter","phone":"1-862-589-7849","email":"neque.nullam@outlook.org","address":"369-8543 Erat Ave","postalZip":"Q5G 8JW","country":"Turkey"},{"customerId":1998,"customerName":"Yvette Fletcher","phone":"1-493-824-6861","email":"nec.quam@aol.org","address":"719-1513 Mus. Ave","postalZip":"188335","country":"Vietnam"},{"customerId":1999,"customerName":"Raya Chaney","phone":"1-343-252-4186","email":"ipsum.nunc.id@aol.org","address":"152-7411 Facilisis Ave","postalZip":"24-030","country":"Turkey"},{"customerId":2000,"customerName":"Oleg Morton","phone":"1-271-724-9512","email":"feugiat.nec@aol.couk","address":"6910 Ut Avenue","postalZip":"04325","country":"Poland"}] \ No newline at end of file diff --git a/BlazorBootstrap.Demo.WebAssembly/wwwroot/sitemap.xml b/BlazorBootstrap.Demo.WebAssembly/wwwroot/sitemap.xml new file mode 100644 index 000000000..5043493fc --- /dev/null +++ b/BlazorBootstrap.Demo.WebAssembly/wwwroot/sitemap.xml @@ -0,0 +1,123 @@ + + + + https://demos.blazorbootstrap.com + daily + 0.9 + + + https://demos.blazorbootstrap.com/getting-started + weekly + 0.5 + + + https://demos.blazorbootstrap.com/alerts + weekly + 0.5 + + + https://demos.blazorbootstrap.com/form/autocomplete + weekly + 0.5 + + + https://demos.blazorbootstrap.com/breadcrumb + weekly + 0.5 + + + https://demos.blazorbootstrap.com/buttons + weekly + 0.5 + + + https://demos.blazorbootstrap.com/callout + weekly + 0.5 + + + https://demos.blazorbootstrap.com/charts + weekly + 0.5 + + + https://demos.blazorbootstrap.com/confirm-dialog + weekly + 0.5 + + + https://demos.blazorbootstrap.com/form/currency-input + weekly + 0.5 + + + https://demos.blazorbootstrap.com/grid + weekly + 0.5 + + + https://demos.blazorbootstrap.com/icons + weekly + 0.5 + + + https://demos.blazorbootstrap.com/modals + weekly + 0.5 + + + https://demos.blazorbootstrap.com/form/number-input + weekly + 0.5 + + + https://demos.blazorbootstrap.com/offcanvas + weekly + 0.5 + + + https://demos.blazorbootstrap.com/pagination + weekly + 0.5 + + + https://demos.blazorbootstrap.com/placeholders + weekly + 0.5 + + + https://demos.blazorbootstrap.com/preload + weekly + 0.5 + + + https://demos.blazorbootstrap.com/progress + weekly + 0.5 + + + https://demos.blazorbootstrap.com/sidebar + weekly + 0.5 + + + https://demos.blazorbootstrap.com/form/switch + weekly + 0.5 + + + https://demos.blazorbootstrap.com/tabs + weekly + 0.5 + + + https://demos.blazorbootstrap.com/toasts + weekly + 0.5 + + + https://demos.blazorbootstrap.com/tooltips + weekly + 0.5 + + \ No newline at end of file diff --git a/BlazorBootstrap.Demo.WebAssembly/wwwroot/staticwebapp.config.json b/BlazorBootstrap.Demo.WebAssembly/wwwroot/staticwebapp.config.json new file mode 100644 index 000000000..90b237656 --- /dev/null +++ b/BlazorBootstrap.Demo.WebAssembly/wwwroot/staticwebapp.config.json @@ -0,0 +1,6 @@ +{ + "navigationFallback": { + "rewrite": "/index.html", + "exclude": [ "/images/*.{png,jpg,gif}", "/css/*" ] + } +} \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..3fd4e4add --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,133 @@ + +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances of + any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, + without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official email address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +support@blazorbootstrap.com +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at +[https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations diff --git a/CREDITS.md b/CREDITS.md new file mode 100644 index 000000000..0829d5e1c --- /dev/null +++ b/CREDITS.md @@ -0,0 +1,37 @@ +# Credits + +This project wouldn't be possible without the incredible contributions of many talented individuals and resources. We extend our deepest gratitude for their support and hard work. + +## Contributors + +### Core Developers + +* Vikram + +## Libraries & Frameworks + +* **[Bootstrap](https://getbootstrap.com/):** :stars: License: [MIT license](https://github.com/twbs/bootstrap#MIT-1-ov-file) +* **[Chatjs](https://www.chartjs.org/):** :heart: License: [MIT license](https://github.com/chartjs/Chart.js#MIT-1-ov-file) +* **[PDF.js](https://mozilla.github.io/pdf.js/):** :book: License: [Apache-2.0 license](https://github.com/mozilla/pdf.js#Apache-2.0-1-ov-file) + +## Design & Assets + +* **[Bootstrap Icons](https://icons.getbootstrap.com/):** :mag: Provided the icons used in the project. [MIT license](https://github.com/twbs/icons#MIT-1-ov-file) + +## Documentation + +* **[Docasaurus](https://docusaurus.io/):** :writing_hand: License:[ MIT, CC-BY-4.0 licenses](https://github.com/facebook/docusaurus/blob/main/LICENSE) For transforming content into stunning and easy-to-navigate documentation. You empower us to educate and guide users effectively. + +## Tools + +* **[JetBrains](https://www.jetbrains.com/):** :brain: [Open Source Support](https://www.jetbrains.com/community/opensource/#support) +* **[BrowserStack](https://www.browserstack.com/):** :globe: [Open Source Support](https://www.browserstack.com/open-source) +* **[SonarQube](https://www.sonarqube.org/):** :shield: [Open Source Support](https://www.sonarsource.com/solutions/commitment-to-open-source/) + +## Inspiration + +* **Blazorise:** Served as a source of inspiration and learning. We acknowledge and appreciate the inspiration we received from Blazorise, specifically their stylebuilder and classbuilder logic. While our project initially included references to these(stylebuilder and classbuilder) under the MIT License, with changes in licensing, we have recently removed these references in our continued commitment to be Open Source. + +## Beyond Recognition + +We encourage you to explore these projects further and contribute your own expertise. Remember, open source thrives on participation and collaboration. Let's keep building the future, together! diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 000000000..30ef8e7e8 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2024 Vikram Gaddam + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 000000000..44334b4ec --- /dev/null +++ b/README.md @@ -0,0 +1,206 @@ +

+ + Blazor Bootstrap logo + +

+ +

Blazor Bootstrap Component Library

+ +

+ An Enterprise-class Blazor Bootstrap Component library built on the Blazor and Bootstrap CSS frameworks. +
+ Getting Started » +
+

+ +
+ +**NOTE:** We strongly recommend all BlazorBootstrap users migrate to version 2.x.x. [Read more...](https://docs.blazorbootstrap.com/blog/2024/02/25/upgrade-to-v2.0.0) + +## Status + +[![NuGet](https://img.shields.io/nuget/vpre/blazor.bootstrap)](https://www.nuget.org/packages/blazor.bootstrap/absoluteLatest) +[![NuGet](https://img.shields.io/nuget/dt/blazor.bootstrap.svg)](https://www.nuget.org/packages/blazor.bootstrap/absoluteLatest) + +## Docs & Demos + +- [Docs Website](https://docs.blazorbootstrap.com/) +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) + +## Table of contents + +- [Install](#install) +- [Install Blazor Bootstrap templates](#install-blazor-bootstrap-templates) +- [Components](#blazor-bootstrap-components) +- [Documentation](#documentation) +- [Creators](#creators) +- [Copyright and license](#copyright-and-license) + +## Install + +Install with [NuGet](https://www.nuget.org/): `Install-Package Blazor.Bootstrap -Version 2.2.1` + +## Install Blazor Bootstrap templates + +Install [Blazor Bootstrap templates](https://github.com/vikramlearning/blazorbootstrap-project-templates) with **.NET CLI**: `dotnet new install Blazor.Bootstrap.Templates::1.10.0` + + ![image](https://user-images.githubusercontent.com/2337067/233800604-43986ae7-27dd-4f17-9af6-c2f1a6f07097.png) + +- Read the [Getting started page](https://docs.blazorbootstrap.com/getting-started/blazor-webassembly-net-8) for information on the framework installation, contents, examples, and more. + +## Blazor Bootstrap Components + +| Component Name | Docs | Demos | +|:--|:--|:--| +| Accordion | [Docs](https://docs.blazorbootstrap.com/components/accordion) | [Demos](https://demos.blazorbootstrap.com/accordion) | +| Alerts | [Docs](https://docs.blazorbootstrap.com/components/alerts) | [Demos](https://demos.blazorbootstrap.com/alerts) | +| AutoComplete | [Docs](https://docs.blazorbootstrap.com/forms/autocomplete) | [Demos](https://demos.blazorbootstrap.com/autocomplete) | +| Badge | [Docs](https://docs.blazorbootstrap.com/components/badge) | [Demos](https://demos.blazorbootstrap.com/badge) | +| Breadcrumb | [Docs](https://docs.blazorbootstrap.com/components/breadcrumb) | [Demos](https://demos.blazorbootstrap.com/breadcrumb) | +| Buttons | [Docs](https://docs.blazorbootstrap.com/components/buttons) | [Demos](https://demos.blazorbootstrap.com/buttons) | +| Callout | [Docs](https://docs.blazorbootstrap.com/components/callout) | [Demos](https://demos.blazorbootstrap.com/callout) | +| Card | [Docs](https://docs.blazorbootstrap.com/components/card) | [Demos](https://demos.blazorbootstrap.com/card) | +| Charts: Bar chart | [Docs](https://docs.blazorbootstrap.com/data-visualization/bar-chart) | [Demos](https://demos.blazorbootstrap.com/charts/bar-chart) | +| Charts: Doughnut chart | [Docs](https://docs.blazorbootstrap.com/data-visualization/doughnut-chart) | [Demos](https://demos.blazorbootstrap.com/charts/doughnut-chart) | +| Charts: Line chart | [Docs](https://docs.blazorbootstrap.com/data-visualization/line-chart) | [Demos](https://demos.blazorbootstrap.com/charts/line-chart) | +| Charts: Pie chart | [Docs](https://docs.blazorbootstrap.com/data-visualization/pie-chart) | [Demos](https://demos.blazorbootstrap.com/charts/pie-chart) | +| Collapse | [Docs](https://docs.blazorbootstrap.com/components/collapse) | [Demos](https://demos.blazorbootstrap.com/collapse) | +| Confirm Dialog | [Docs](https://docs.blazorbootstrap.com/components/confirm-dialog) | [Demos](https://demos.blazorbootstrap.com/confirm-dialog) | +| Currency Input | [Docs](https://docs.blazorbootstrap.com/forms/currency-input) | [Demos](https://demos.blazorbootstrap.com/form/currency-input) | +| Date Input | [Docs](https://docs.blazorbootstrap.com/forms/date-input) | [Demos](https://demos.blazorbootstrap.com/form/date-input) | +| Dropdown | [Docs](https://docs.blazorbootstrap.com/components/dropdown) | [Demos](https://demos.blazorbootstrap.com/dropdown) | +| Grid | [Docs](https://docs.blazorbootstrap.com/components/grid) | [Demos](https://demos.blazorbootstrap.com/grid) | +| Icons | [Docs](https://docs.blazorbootstrap.com/content/icons) | [Demos](https://demos.blazorbootstrap.com/icons) | +| Modals | [Docs](https://docs.blazorbootstrap.com/components/modal) | [Demos](https://demos.blazorbootstrap.com/modals) | +| Number Input | [Docs](https://docs.blazorbootstrap.com/forms/number-input) | [Demos](https://demos.blazorbootstrap.com/form/number-input) | +| Offcanvas | [Docs](https://docs.blazorbootstrap.com/components/offcanvas) | [Demos](https://demos.blazorbootstrap.com/offcanvas) | +| Pagination | [Docs](https://docs.blazorbootstrap.com/components/pagination) | [Demos](https://demos.blazorbootstrap.com/pagination) | +| PDF Viewer | [Docs](https://docs.blazorbootstrap.com/components/pdf-viewer) | [Demos](https://demos.blazorbootstrap.com/pdf-viewer) | +| Placeholders | [Docs](https://docs.blazorbootstrap.com/components/placeholders) | [Demos](https://demos.blazorbootstrap.com/placeholders) | +| Preload | [Docs](https://docs.blazorbootstrap.com/components/preload) | [Demos](https://demos.blazorbootstrap.com/preload) | +| Progress | [Docs](https://docs.blazorbootstrap.com/components/progress) | [Demos](https://demos.blazorbootstrap.com/progress) | +| RangeInput | [Docs](https://docs.blazorbootstrap.com/forms/range-input) | [Demos](https://demos.blazorbootstrap.com/form/range-input) | +| Ribbon | [Docs](https://docs.blazorbootstrap.com/components/ribbon) | [Demos](https://demos.blazorbootstrap.com/ribbon) | +| Script Loader | [Docs](https://docs.blazorbootstrap.com/components/script-loader) | [Demos](https://demos.blazorbootstrap.com/script-loader) | +| Sidebar | [Docs](https://docs.blazorbootstrap.com/components/sidebar) | [Demos](https://demos.blazorbootstrap.com/sidebar) | +| Sidebar2 | [Docs](https://docs.blazorbootstrap.com/components/sidebar2) | [Demos](https://demos.blazorbootstrap.com/sidebar2) | +| Sortable List | [Docs](https://docs.blazorbootstrap.com/components/sortable-list) | [Demos](https://demos.blazorbootstrap.com/sortable-list) | +| Spinners | [Docs](https://docs.blazorbootstrap.com/components/spinners) | [Demos](https://demos.blazorbootstrap.com/spinners) | +| Switch | [Docs](https://docs.blazorbootstrap.com/forms/switch) | [Demos](https://demos.blazorbootstrap.com/form/switch) | +| Tabs | [Docs](https://docs.blazorbootstrap.com/components/tabs) | [Demos](https://demos.blazorbootstrap.com/tabs) | +| Time Input | [Docs](https://docs.blazorbootstrap.com/forms/time-input) | [Demos](https://demos.blazorbootstrap.com/form/time-input) | +| Toasts | [Docs](https://docs.blazorbootstrap.com/components/toasts) | [Demos](https://demos.blazorbootstrap.com/toasts) | +| Tooltips | [Docs](https://docs.blazorbootstrap.com/components/tooltips) | [Demos](https://demos.blazorbootstrap.com/tooltips) | + +More components coming... + +## Documentation + +Blazor Bootstrap's documentation, which is included in this repository's root directory, is built with [Docusaurus](https://docusaurus.io/) and publicly hosted on GitHub Pages at . The docs may also be run locally. + +## Screenshots + +### Blazor Bootstrap - Accordion +![Blazor Bootstrap - Accordion](https://i.imgur.com/g4zpMXp.png "Blazor Bootstrap - Accordion") + +### Blazor Bootstrap - Alerts +![Blazor Bootstrap - Alerts](https://i.imgur.com/D9tJpSl.jpg "Blazor Bootstrap - Alerts") + +### Blazor Bootstrap - Auto Complete +![Blazor Bootstrap - Auto Complete](https://i.imgur.com/gRcdvc0.png "Blazor Bootstrap - Auto Complete") + +### Blazor Bootstrap - Badge +![Blazor Bootstrap - Badge](https://i.imgur.com/ux0sTs9.png "Blazor Bootstrap - Badge") + +### Blazor Bootstrap - Buttons +![Blazor Bootstrap - Buttons](https://i.imgur.com/ENKhcXR.jpg "Blazor Bootstrap - Buttons") + +### Blazor Bootstrap - Callout +![Blazor Bootstrap - Callout](https://i.imgur.com/vmibzEu.png "Blazor Bootstrap - Callout") + +### Blazor Bootstrap - Charts: Bar Chart +![Blazor Bootstrap - Charts: Bar Chart](https://i.imgur.com/JLV7oss.png "Blazor Bootstrap - Charts: Bar Chart") + +### Blazor Bootstrap - Charts: Doughnut Chart +![Blazor Bootstrap - Charts: Doughnut Chart](https://i.imgur.com/e5fnMXQ.png "Blazor Bootstrap - Charts: Doughnut Chart") + +### Blazor Bootstrap - Charts: Line Chart +![Blazor Bootstrap - Charts: Line Chart](https://i.imgur.com/CzdXpqr.png "Blazor Bootstrap - Charts: Line Chart") + +### Blazor Bootstrap - Charts: Pie Chart +![Blazor Bootstrap - Charts: Pie Chart](https://i.imgur.com/jr3w0fM.png "Blazor Bootstrap - Charts: Pie Chart") + +### Blazor Bootstrap - Collapse +![Blazor Bootstrap - Collapse](https://i.imgur.com/8A0emQe.png "Blazor Bootstrap - Collapse") + +### Blazor Bootstrap - Confirm Dialog +![Blazor Bootstrap - Confirm Dialog](https://i.imgur.com/FisZXwK.png "Blazor Bootstrap - Confirm Dialog") + +### Blazor Bootstrap - Currency Input +![Blazor Bootstrap - Currency Input](https://i.imgur.com/mihpoXk.png "Blazor Bootstrap - Currency Input") + +### Blazor Bootstrap - Date Input +![Blazor Bootstrap - Date Input](https://i.imgur.com/1mVjqQv.png "Blazor Bootstrap - Date Input") + +### Blazor Bootstrap - Grid +![Blazor Bootstrap - Grid](https://i.imgur.com/36RsWZ3.png "Blazor Bootstrap - Grid") + +### Blazor Bootstrap - Modal +![Blazor Bootstrap - Modal](https://i.imgur.com/n0m4Fhq.jpg "Blazor Bootstrap - Modal") + +### Blazor Bootstrap - Number Input +![Blazor Bootstrap - Number Input](https://i.imgur.com/iUNBkki.png "Blazor Bootstrap - Number Input") + +### Blazor Bootstrap - Offcanvas +![Blazor Bootstrap - Offcanvas](https://i.imgur.com/1vNz5Ci.jpg "Blazor Bootstrap - Offcanvas") + +### Blazor Bootstrap - Pagination +![Blazor Bootstrap - Pagination](https://i.imgur.com/SCbZVd4.jpg "Blazor Bootstrap - Pagination") + +### Blazor Bootstrap - PDF Viewer +![Blazor Bootstrap - PDF Viewer](https://i.imgur.com/7Vz9Efi.png "Blazor Bootstrap - PDF Viewer") + +### Blazor Bootstrap - Preload +![Blazor Bootstrap - Preload](https://i.imgur.com/3pvzbXY.png "Blazor Bootstrap - Preload") + +### Blazor Bootstrap - Progress +![Blazor Bootstrap - Progress](https://i.imgur.com/MK142lQ.png "Blazor Bootstrap - Progress") + +### Blazor Bootstrap - Range Input +![Blazor Bootstrap - Range Input](https://i.imgur.com/rWDDHaf.png "Blazor Bootstrap - Range Input") + +### Blazor Bootstrap - Ribbon +![Blazor Bootstrap - Ribbon](https://i.imgur.com/LpZVLbF.png "Blazor Bootstrap - Ribbon") + +### Blazor Bootstrap - Script Loader +![Blazor Bootstrap - Script Loader](https://i.imgur.com/sBiYPeQ.png "Blazor Bootstrap - Script Loader") + +### Blazor Bootstrap - Sidebar +![Blazor Bootstrap - Sidebar](https://i.imgur.com/d91Q9Zt.png "Blazor Bootstrap - Sidebar") + +### Blazor Bootstrap - Sidebar2 +![Blazor Bootstrap - Sidebar2](https://i.imgur.com/HUP7ydv.png "Blazor Bootstrap - Sidebar2") + +### Blazor Bootstrap - Sortable List +![Blazor Bootstrap - Sortable List](https://i.imgur.com/bfzP8Yi.png "Blazor Bootstrap - Sortable List") + +### Blazor Bootstrap - Switch +![Blazor Bootstrap - Switch](https://i.imgur.com/ALKzreq.png "Blazor Bootstrap - Switch") + +### Blazor Bootstrap - Tabs +![Blazor Bootstrap - Tabs](https://i.imgur.com/NdE5oqH.png "Blazor Bootstrap - Tabs") + +### Blazor Bootstrap - Time Input +![Blazor Bootstrap - Time Input](https://i.imgur.com/TlvjRlP.png "Blazor Bootstrap - Time Input") + +### Blazor Bootstrap - Toasts +![Blazor Bootstrap - Toasts](https://i.imgur.com/OCQUchu.png "Blazor Bootstrap - Toasts") + +## Creators + +**Vikram Reddy** + +## Copyright and license + +Code and documentation copyright 2024 [Blazor Bootstrap](https://docs.blazorbootstrap.com/) Code released under the [Apache-2.0 License](https://github.com/vikramlearning/blazorbootstrap/blob/master/LICENSE.txt). diff --git a/blazorbootstrap.sln b/blazorbootstrap.sln new file mode 100644 index 000000000..4b155b171 --- /dev/null +++ b/blazorbootstrap.sln @@ -0,0 +1,67 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorBootstrap", "blazorbootstrap\BlazorBootstrap.csproj", "{23D9E8D8-8F90-457A-96B5-4BDA599D37AE}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{74FC2FB9-8E21-439A-8646-DF30A02041A1}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "demos", "demos", "{7DABA756-9F2F-48A6-B8D3-B104262D11B1}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorBootstrap.Demo.Hosted.Server", "BlazorBootstrap.Demo.Hosted\Server\BlazorBootstrap.Demo.Hosted.Server.csproj", "{D8A68986-BC6C-46AD-A089-7F325884E966}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorBootstrap.Demo.Hosted.Client", "BlazorBootstrap.Demo.Hosted\Client\BlazorBootstrap.Demo.Hosted.Client.csproj", "{CA121C94-88EC-4902-9FCD-8394BDEB0355}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorBootstrap.Demo.RCL", "BlazorBootstrap.Demo.RCL\BlazorBootstrap.Demo.RCL.csproj", "{190E07ED-8888-4F3B-8484-46BF6FC4C982}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorBootstrap.Demo.WebAssembly", "BlazorBootstrap.Demo.WebAssembly\BlazorBootstrap.Demo.WebAssembly.csproj", "{710E0A10-0567-495D-AA48-A99293D2EA62}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BlazorBootstrap.Demo.Server", "BlazorBootstrap.Demo.Server\BlazorBootstrap.Demo.Server.csproj", "{B133D9CF-EC94-416B-A4A6-6E2BD8DAF0C1}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {23D9E8D8-8F90-457A-96B5-4BDA599D37AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {23D9E8D8-8F90-457A-96B5-4BDA599D37AE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {23D9E8D8-8F90-457A-96B5-4BDA599D37AE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {23D9E8D8-8F90-457A-96B5-4BDA599D37AE}.Release|Any CPU.Build.0 = Release|Any CPU + {D8A68986-BC6C-46AD-A089-7F325884E966}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D8A68986-BC6C-46AD-A089-7F325884E966}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D8A68986-BC6C-46AD-A089-7F325884E966}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D8A68986-BC6C-46AD-A089-7F325884E966}.Release|Any CPU.Build.0 = Release|Any CPU + {CA121C94-88EC-4902-9FCD-8394BDEB0355}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CA121C94-88EC-4902-9FCD-8394BDEB0355}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CA121C94-88EC-4902-9FCD-8394BDEB0355}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CA121C94-88EC-4902-9FCD-8394BDEB0355}.Release|Any CPU.Build.0 = Release|Any CPU + {190E07ED-8888-4F3B-8484-46BF6FC4C982}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {190E07ED-8888-4F3B-8484-46BF6FC4C982}.Debug|Any CPU.Build.0 = Debug|Any CPU + {190E07ED-8888-4F3B-8484-46BF6FC4C982}.Release|Any CPU.ActiveCfg = Release|Any CPU + {190E07ED-8888-4F3B-8484-46BF6FC4C982}.Release|Any CPU.Build.0 = Release|Any CPU + {710E0A10-0567-495D-AA48-A99293D2EA62}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {710E0A10-0567-495D-AA48-A99293D2EA62}.Debug|Any CPU.Build.0 = Debug|Any CPU + {710E0A10-0567-495D-AA48-A99293D2EA62}.Release|Any CPU.ActiveCfg = Release|Any CPU + {710E0A10-0567-495D-AA48-A99293D2EA62}.Release|Any CPU.Build.0 = Release|Any CPU + {B133D9CF-EC94-416B-A4A6-6E2BD8DAF0C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B133D9CF-EC94-416B-A4A6-6E2BD8DAF0C1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B133D9CF-EC94-416B-A4A6-6E2BD8DAF0C1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B133D9CF-EC94-416B-A4A6-6E2BD8DAF0C1}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {23D9E8D8-8F90-457A-96B5-4BDA599D37AE} = {74FC2FB9-8E21-439A-8646-DF30A02041A1} + {D8A68986-BC6C-46AD-A089-7F325884E966} = {7DABA756-9F2F-48A6-B8D3-B104262D11B1} + {CA121C94-88EC-4902-9FCD-8394BDEB0355} = {7DABA756-9F2F-48A6-B8D3-B104262D11B1} + {190E07ED-8888-4F3B-8484-46BF6FC4C982} = {7DABA756-9F2F-48A6-B8D3-B104262D11B1} + {710E0A10-0567-495D-AA48-A99293D2EA62} = {7DABA756-9F2F-48A6-B8D3-B104262D11B1} + {B133D9CF-EC94-416B-A4A6-6E2BD8DAF0C1} = {7DABA756-9F2F-48A6-B8D3-B104262D11B1} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {810B19D0-6AB6-4959-A8D7-340A2F72DF6F} + EndGlobalSection +EndGlobal diff --git a/blazorbootstrap/BlazorBootstrap.csproj b/blazorbootstrap/BlazorBootstrap.csproj new file mode 100644 index 000000000..101e0ba33 --- /dev/null +++ b/blazorbootstrap/BlazorBootstrap.csproj @@ -0,0 +1,51 @@ + + + + + Blazor.Bootstrap + 2.2.1 + 2.2.1 + + + Apache-2.0 + https://docs.blazorbootstrap.com/ + https://github.com/vikramlearning/blazorbootstrap + Blazor, WebAssembly, BlazorWebAssembly, Bootstrap, Bootstrap5, BlazorBootstrap, BlazorAlert, BlazorAutoComplete, BlazorButtons, BlazorCallout, BlazorCharts, BlazorConfirmDialog, BlazorGrid, BlazorIcon, BlazorModal, BlazorCurrencyInput, BlazorNumberInput, BlazorInput, BlazorNumber, BlazorDate, BlazorDateInput, BlazorDatePicker, BlazorTime, BlazorTimeInput, BlazorTimePicker, BlazorOffcanvas, BlazorPagination, BlazorPdfViewer, BlazorPlaceholders, BlazorPreload, BlazorProgress, BlazorRibbon, BlazorScriptLoader, BlazorSidebar, BlazorSidebar2, BlazorSortableList, BlazorSwitch, BlazorSpinners, BlazorTabs, BlazorToasts, BlazorTooltips, BlazorTooltips, BlazorBarChart, BlazorDoughnutChart, BlazorLineChart, BlazorPieChart + Blazor Bootstrap is a component library built on top of Blazor and Bootstrap5 CSS framework. + Vikram Reddy + + Copyright © 2024 Blazor Bootstrap + + net6.0 + enable + enable + Library + true + 10.0 + 128X128.png + README.md + git + https://github.com/vikramlearning/blazorbootstrap/releases + + + + + + True + \ + + + True + \ + + + + + + + + + + + + diff --git a/blazorbootstrap/Components/Accordion/Accordion.razor b/blazorbootstrap/Components/Accordion/Accordion.razor new file mode 100644 index 000000000..5c8f44be7 --- /dev/null +++ b/blazorbootstrap/Components/Accordion/Accordion.razor @@ -0,0 +1,8 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + + +
+ @ChildContent +
+
diff --git a/blazorbootstrap/Components/Accordion/Accordion.razor.cs b/blazorbootstrap/Components/Accordion/Accordion.razor.cs new file mode 100644 index 000000000..d6c8580f9 --- /dev/null +++ b/blazorbootstrap/Components/Accordion/Accordion.razor.cs @@ -0,0 +1,229 @@ +namespace BlazorBootstrap; + +public partial class Accordion : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private List? items = new(); + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.Accordion) + .AddClass(BootstrapClass.AccordionFlush, Flush) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + /// + protected override async ValueTask DisposeAsyncCore(bool disposing) + { + if (disposing) items = null; + + await base.DisposeAsyncCore(disposing); + } + + /// + /// Hides the by index. + /// + /// The index of the AccordionItem to hide. + public async Task HideAccordionItemByIndexAsync(int index) + { + if (!items?.Any() ?? false) return; + + if (index < 0 || index >= items!.Count) throw new IndexOutOfRangeException(); + + var accordionItem = items[index]; + + if (accordionItem is not null) + await accordionItem.HideAsync(); + } + + /// + /// Hides the by name. + /// + /// The name of the AccordionItem to hide. + public async Task HideAccordionItemByNameAsync(string accordionItemName) + { + if (!items?.Any() ?? false) return; + + var accordionItem = items!.FirstOrDefault(x => x.Name == accordionItemName); + + if (accordionItem is not null) + await accordionItem.HideAsync(); + } + + /// + /// Hides all instances. + /// + public async Task HideAllAccordionItemsAsync() + { + if (!items?.Any() ?? false) return; + + foreach (var accordionItem in items!) + if (accordionItem is not null) + await accordionItem.HideAsync(); + } + + /// + /// Hides the first . + /// + public async Task HideFirstAccordionItemAsync() + { + if (!items?.Any() ?? false) return; + + var accordionItem = items!.FirstOrDefault(); + + if (accordionItem is not null) + await accordionItem.HideAsync(); + } + + /// + /// Hides the last . + /// + public async Task HideLastAccordionItemAsync() + { + if (!items?.Any() ?? false) return; + + var accordionItem = items!.LastOrDefault(); + + if (accordionItem is not null) + await accordionItem.HideAsync(); + } + + /// + /// Shows the by index. + /// + /// The index of the AccordionItem to show. + public async Task ShowAccordionItemByIndexAsync(int index) + { + if (!items?.Any() ?? false) return; + + if (index < 0 || index >= items!.Count) throw new IndexOutOfRangeException(); + + var accordionItem = items[index]; + + if (accordionItem is not null) + await accordionItem.ShowAsync(); + } + + /// + /// Shows the by name. + /// + /// The name of the AccordionItem to show. + public async Task ShowAccordionItemByNameAsync(string accordionItemName) + { + if (!items?.Any() ?? false) return; + + var accordionItem = items!.FirstOrDefault(x => x.Name == accordionItemName); + + if (accordionItem is not null) + await accordionItem.ShowAsync(); + } + + /// + /// Shows all instances if AlwaysOpen is true. + /// + public async Task ShowAllAccordionItemsAsync() + { + if (!items?.Any() ?? false) return; + + if (AlwaysOpen) + foreach (var accordionItem in items!) + if (accordionItem is not null) + await accordionItem.ShowAsync(); + } + + /// + /// Shows the first . + /// + public async Task ShowFirstAccordionItemAsync() + { + if (!items?.Any() ?? false) return; + + var accordionItem = items!.FirstOrDefault(); + + if (accordionItem is not null) + await accordionItem.ShowAsync(); + } + + /// + /// Shows the last . + /// + public async Task ShowLastAccordionItemAsync() + { + if (!items?.Any() ?? false) return; + + var accordionItem = items!.LastOrDefault(); + + if (accordionItem is not null) + await accordionItem.ShowAsync(); + } + + /// + /// Adds an to the collection. + /// + /// The AccordionItem to add. + internal void Add(AccordionItem accordionItem) + { + if (items is null) + items = new List(); + + if (accordionItem is not null) + items.Add(accordionItem); + } + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the AlwaysOpen. + /// It makes accordion items stay open when another item is opened. + /// + [Parameter] + public bool AlwaysOpen { get; set; } + + /// + /// Gets or sets the content to be rendered within the component. + /// + [Parameter] + [EditorRequired] + public RenderFragment ChildContent { get; set; } = default!; + + /// + /// Gets or sets the flush. + /// Removes borders and rounded corners to render accordions edge-to-edge with their parent container. + /// + [Parameter] + public bool Flush { get; set; } + + /// + /// This event is fired when a accordion item has been hidden from the user (will wait for CSS transitions to complete). + /// + [Parameter] + public EventCallback OnHidden { get; set; } + + /// + /// This event is fired immediately when the hide method has been called. + /// + [Parameter] + public EventCallback OnHiding { get; set; } + + /// + /// This event fires immediately when the show method is called. + /// + [Parameter] + public EventCallback OnShowing { get; set; } + + /// + /// This event is fired when a accordion item has been made visible to the user (will wait for CSS transitions to + /// complete). + /// + [Parameter] + public EventCallback OnShown { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Components/Accordion/AccordionItem.razor b/blazorbootstrap/Components/Accordion/AccordionItem.razor new file mode 100644 index 000000000..60b47be48 --- /dev/null +++ b/blazorbootstrap/Components/Accordion/AccordionItem.razor @@ -0,0 +1,30 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
+

+ +

+ + +
+ @Content +
+
+
diff --git a/blazorbootstrap/Components/Accordion/AccordionItem.razor.cs b/blazorbootstrap/Components/Accordion/AccordionItem.razor.cs new file mode 100644 index 000000000..d7f487a39 --- /dev/null +++ b/blazorbootstrap/Components/Accordion/AccordionItem.razor.cs @@ -0,0 +1,110 @@ +namespace BlazorBootstrap; + +public partial class AccordionItem : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private Collapse collapse = default!; + + private bool isCollapsed = true; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.AccordionItem) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + protected override void OnInitialized() + { + Id = IdGenerator.GetNextId(); // This is required + Parent.Add(this); + } + + protected override void OnParametersSet() + { + if (TitleTemplate is not null && !string.IsNullOrWhiteSpace(Title)) throw new InvalidOperationException($"{nameof(AccordionItem)} requires one of {nameof(TitleTemplate)} or {nameof(Title)}, but both were specified."); + } + + internal async Task HideAsync() => await collapse.HideAsync(); + + internal async Task ShowAsync() => await collapse.ShowAsync(); + + private async Task OnCollapseHiddenAsync() + { + if (Parent is not null && Parent.OnHidden.HasDelegate) + await Parent.OnHidden.InvokeAsync(new AccordionEventArgs(Name, Title)); + } + + private async Task OnCollapseHidingAsync() + { + isCollapsed = true; + + if (Parent is not null && Parent.OnHiding.HasDelegate) + await Parent.OnHiding.InvokeAsync(new AccordionEventArgs(Name, Title)); + } + + private async Task OnCollapseShowingAsync() + { + isCollapsed = false; + + if (Parent is not null && Parent.OnShowing.HasDelegate) + await Parent.OnShowing.InvokeAsync(new AccordionEventArgs(Name, Title)); + } + + private async Task OnCollapseShownAsync() + { + if (Parent is not null && Parent.OnShown.HasDelegate) + await Parent.OnShown.InvokeAsync(new AccordionEventArgs(Name, Title)); + } + + private async Task ToggleAsync() => await collapse.ToggleAsync(); + + #endregion + + #region Properties, Indexers + + private string buttonCollapsedStateCSSClass => isCollapsed ? "collapsed" : string.Empty; + + /// + /// Specifies the content to be rendered inside the . + /// + [Parameter] + [EditorRequired] + public RenderFragment Content { get; set; } = default!; + + /// + /// Gets or sets the active . + /// + [Parameter] + public bool IsActive { get; set; } + + /// + /// Gets or sets the name. + /// + [Parameter] + public string Name { get; set; } = default!; + + /// + /// Gets or sets the parent. + /// + [CascadingParameter] + internal Accordion Parent { get; set; } = default!; + + /// + /// Gets or sets the title. + /// + [Parameter] + public string Title { get; set; } = default!; + + /// + /// Gets or sets the title template. + /// + [Parameter] + public RenderFragment TitleTemplate { get; set; } = default!; + + #endregion +} diff --git a/blazorbootstrap/Components/Alert/Alert.razor b/blazorbootstrap/Components/Alert/Alert.razor new file mode 100644 index 000000000..25b565c6d --- /dev/null +++ b/blazorbootstrap/Components/Alert/Alert.razor @@ -0,0 +1,10 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + + diff --git a/blazorbootstrap/Components/Alert/Alert.razor.cs b/blazorbootstrap/Components/Alert/Alert.razor.cs new file mode 100644 index 000000000..a15da6bcb --- /dev/null +++ b/blazorbootstrap/Components/Alert/Alert.razor.cs @@ -0,0 +1,107 @@ +namespace BlazorBootstrap; + +public partial class Alert : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private DotNetObjectReference? objRef; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.Alert) + .AddClass(Color.ToAlertColorClass(), Color != AlertColor.None) + .AddClass(BootstrapClass.AlertDismisable, Dismissable) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + /// + protected override async ValueTask DisposeAsyncCore(bool disposing) + { + if (disposing) + { + try + { + if (IsRenderComplete) + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.alert.dispose", Id); + } + catch (JSDisconnectedException) + { + // do nothing + } + + objRef?.Dispose(); + } + + await base.DisposeAsyncCore(disposing); + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.alert.initialize", Id, objRef); + + await base.OnAfterRenderAsync(firstRender); + } + + protected override async Task OnInitializedAsync() + { + objRef ??= DotNetObjectReference.Create(this); + + await base.OnInitializedAsync(); + } + + [JSInvokable] + public async Task bsCloseAlert() => await OnClose.InvokeAsync(); + + [JSInvokable] + public async Task bsClosedAlert() => await OnClosed.InvokeAsync(); + + /// + /// Closes an alert by removing it from the DOM. + /// + public async Task CloseAsync() => await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.alert.close", Id); + + #endregion + + #region Properties, Indexers + + /// + /// Specifies the content to be rendered inside this . + /// + [Parameter] + public RenderFragment? ChildContent { get; set; } + + /// + /// Gets or sets the alert color. + /// + [Parameter] + public AlertColor Color { get; set; } = AlertColor.None; + + /// + /// Enables the alert to be closed by placing the padding for close button. + /// + [Parameter] + public bool Dismissable { get; set; } + + /// + /// Fires immediately when the close instance method is called. + /// + [Parameter] + public EventCallback OnClose { get; set; } + + /// + /// Fired when the alert has been closed and CSS transitions have completed. + /// + [Parameter] + public EventCallback OnClosed { get; set; } + + #endregion + + // TODO: Review + // https://getbootstrap.com/docs/5.1/components/alerts/#live-example + // https://getbootstrap.com/docs/5.1/components/alerts/#additional-content +} diff --git a/blazorbootstrap/Components/Badge/Badge.razor b/blazorbootstrap/Components/Badge/Badge.razor new file mode 100644 index 000000000..3eff84298 --- /dev/null +++ b/blazorbootstrap/Components/Badge/Badge.razor @@ -0,0 +1,10 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + + + @ChildContent + @if (!string.IsNullOrWhiteSpace(VisuallyHiddenText)) + { + @VisuallyHiddenText + } + diff --git a/blazorbootstrap/Components/Badge/Badge.razor.cs b/blazorbootstrap/Components/Badge/Badge.razor.cs new file mode 100644 index 000000000..54db1f529 --- /dev/null +++ b/blazorbootstrap/Components/Badge/Badge.razor.cs @@ -0,0 +1,60 @@ +namespace BlazorBootstrap; + +public partial class Badge : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.Badge) + .AddClass(Color.ToBadgeColorClass(), Color != BadgeColor.None) + .AddClass(IndicatorType.ToBadgeIndicatorClass(), IndicatorType != BadgeIndicatorType.None) + .AddClass(Position.ToPositionClass(), Position != Position.None) + .AddClass(Placement.ToBadgePlacementClass(), Placement != BadgePlacement.None) + .AddClass("p-2", ChildContent is null) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the content to be rendered within the component. + /// + [Parameter] + public RenderFragment ChildContent { get; set; } = default!; + + /// + /// Gets or sets the badge color. + /// + [Parameter] + //[EditorRequired] + public BadgeColor Color { get; set; } = BadgeColor.Secondary; + + /// + /// Gets or sets the badge indicator. + /// + [Parameter] + public BadgeIndicatorType IndicatorType { get; set; } = BadgeIndicatorType.None; + + /// + /// Gets or sets the badge placement. + /// + [Parameter] + public BadgePlacement Placement { get; set; } = BadgePlacement.None; + + /// + /// Gets or sets the badge position. + /// + [Parameter] + public Position Position { get; set; } + + /// + /// Gets or sets the visually hidden text. + /// + [Parameter] + public string VisuallyHiddenText { get; set; } = default!; + + #endregion +} diff --git a/blazorbootstrap/Components/Breadcrumb/Breadcrumb.razor b/blazorbootstrap/Components/Breadcrumb/Breadcrumb.razor new file mode 100644 index 000000000..500fd4c74 --- /dev/null +++ b/blazorbootstrap/Components/Breadcrumb/Breadcrumb.razor @@ -0,0 +1,23 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +@if (Items != null && Items.Any()) +{ + +} diff --git a/blazorbootstrap/Components/Breadcrumb/Breadcrumb.razor.cs b/blazorbootstrap/Components/Breadcrumb/Breadcrumb.razor.cs new file mode 100644 index 000000000..64e7d476a --- /dev/null +++ b/blazorbootstrap/Components/Breadcrumb/Breadcrumb.razor.cs @@ -0,0 +1,53 @@ +namespace BlazorBootstrap; + +public partial class Breadcrumb : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class).Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + protected override ValueTask DisposeAsyncCore(bool disposing) + { + if (disposing) + if (BreadcrumbService is not null) + BreadcrumbService.OnNotify -= OnNotify; + + return base.DisposeAsyncCore(disposing); + } + + protected override void OnInitialized() + { + if (BreadcrumbService is not null) + BreadcrumbService.OnNotify += OnNotify; + + base.OnInitialized(); + } + + private void OnNotify(List items) + { + if (items is null) + return; + + Items ??= new List(); + + Items = items; + + StateHasChanged(); + } + + #endregion + + #region Properties, Indexers + + [Inject] private BreadcrumbService BreadcrumbService { get; set; } = default!; + + /// + /// List of all the items. + /// + [Parameter] + public List Items { get; set; } = default!; + + #endregion +} diff --git a/blazorbootstrap/Components/Button/Button.razor b/blazorbootstrap/Components/Button/Button.razor new file mode 100644 index 000000000..b05f88bb1 --- /dev/null +++ b/blazorbootstrap/Components/Button/Button.razor @@ -0,0 +1,44 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +@if (Type == ButtonType.Link) +{ + + + @if (Loading && LoadingTemplate is not null) + { + @LoadingTemplate + } + else + { + @ChildContent + } + + +} +else +{ + +} diff --git a/blazorbootstrap/Components/Button/Button.razor.cs b/blazorbootstrap/Components/Button/Button.razor.cs new file mode 100644 index 000000000..86f86c119 --- /dev/null +++ b/blazorbootstrap/Components/Button/Button.razor.cs @@ -0,0 +1,417 @@ +namespace BlazorBootstrap; + +public partial class Button : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private bool isFirstRenderComplete = false; + + private bool previousActive; + + private bool previousDisabled; + + private int? previousTabIndex; + + private Target previousTarget; + + private string? previousTo = default!; + + private string previousTooltipTitle = default!; + + private ButtonType previousType; + + private bool setButtonAttributesAgain = false; + + private TooltipColor previousTooltipColor = default!; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.Button) + .AddClass(Color.ToButtonColorClass(), Color != ButtonColor.None && !Outline) + .AddClass(Color.ToButtonOutlineColorClass(), Color != ButtonColor.None && Outline) + .AddClass(Size.ToButtonSizeClass(), Size != Size.None) + .AddClass(BootstrapClass.ButtonDisabled, Disabled && Type == ButtonType.Link) + .AddClass(BootstrapClass.ButtonActive, Active) + .AddClass(BootstrapClass.ButtonBlock, Block) + .AddClass(BootstrapClass.ButtonLoading!, Loading && LoadingTemplate is not null) + .AddClass(Position.ToPositionClass(), Position != Position.None) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + /// + protected override async ValueTask DisposeAsyncCore(bool disposing) + { + if (disposing && !string.IsNullOrWhiteSpace(TooltipTitle) && IsRenderComplete) + try + { + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.tooltip.dispose", Element); + } + catch (JSDisconnectedException) + { + // do nothing + } + + await base.DisposeAsyncCore(disposing); + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + isFirstRenderComplete = true; + + if (!string.IsNullOrWhiteSpace(TooltipTitle)) + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.tooltip.initialize", Element); + } + + await base.OnAfterRenderAsync(firstRender); + } + + protected override void OnInitialized() + { + previousDisabled = Disabled; + previousActive = Active; + previousType = Type; + previousTarget = Target; + previousTabIndex = TabIndex; + previousTo = To; + previousTooltipTitle = TooltipTitle; + previousTooltipColor = TooltipColor; + + LoadingTemplate ??= ProvideDefaultLoadingTemplate(); + + SetAttributes(); + + base.OnInitialized(); + } + + protected override async Task OnParametersSetAsync() + { + if (isFirstRenderComplete) + { + if (previousDisabled != Disabled) + { + previousDisabled = Disabled; + setButtonAttributesAgain = true; + } + + if (previousActive != Active) + { + previousActive = Active; + setButtonAttributesAgain = true; + } + + if (previousType != Type) + { + previousType = Type; + setButtonAttributesAgain = true; + } + + if (previousTarget != Target) + { + previousTarget = Target; + setButtonAttributesAgain = true; + } + + if (previousTabIndex != TabIndex) + { + previousTabIndex = TabIndex; + setButtonAttributesAgain = true; + } + + if (previousTo != To) + { + previousTo = To; + setButtonAttributesAgain = true; + } + + if (previousTooltipTitle != TooltipTitle || previousTooltipColor != TooltipColor) setButtonAttributesAgain = true; + + if (setButtonAttributesAgain) + { + setButtonAttributesAgain = false; + SetAttributes(); + } + + // additional scenario + // NOTE: do not change the below sequence + if (Disabled) + { + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.tooltip.dispose", Element); + } + else if (previousTooltipTitle != TooltipTitle || previousTooltipColor != TooltipColor) + { + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.tooltip.dispose", Element); + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.tooltip.update", Element); + } + + previousTooltipTitle = TooltipTitle; + previousTooltipColor = TooltipColor; + } + } + + /// + /// Hides the loading state and enables the button. + /// + public void HideLoading() + { + Loading = false; + Disabled = false; + StateHasChanged(); + } + + /// + /// Shows the loading state and disables the button. + /// + /// + public void ShowLoading(string text = "") + { + LoadingText = text; + Loading = true; + Disabled = true; + StateHasChanged(); + } + + protected virtual RenderFragment ProvideDefaultLoadingTemplate() => builder => { builder.AddMarkupContent(0, $" {LoadingText}"); }; + + private void SetAttributes() + { + AdditionalAttributes ??= new Dictionary(); + + if (Active && !AdditionalAttributes.TryGetValue("aria-pressed", out _)) + AdditionalAttributes.Add("aria-pressed", "true"); + else if (!Active && AdditionalAttributes.TryGetValue("aria-pressed", out _)) + AdditionalAttributes.Remove("aria-pressed"); + + // 'a' tag + if (Type == ButtonType.Link) + { + if (!AdditionalAttributes.TryGetValue("role", out _)) + AdditionalAttributes.Add("role", "button"); + + // To can be changed when the Button is used within a Virtualize component + if (!AdditionalAttributes.TryGetValue("href", out _)) + AdditionalAttributes.Add("href", To!); + else + AdditionalAttributes["href"] = To!; + + if (Target != Target.None) + if (!AdditionalAttributes.TryGetValue("target", out _)) + AdditionalAttributes.Add("target", Target.ToTargetString()!); + else + AdditionalAttributes["target"] = Target.ToTargetString()!; + + if (Disabled) + { + if (AdditionalAttributes.TryGetValue("aria-disabled", out _)) + AdditionalAttributes["aria-disabled"] = "true"; + else + AdditionalAttributes.Add("aria-disabled", "true"); + + if (AdditionalAttributes.TryGetValue("tabindex", out _)) + AdditionalAttributes["tabindex"] = -1; + else + AdditionalAttributes.Add("tabindex", -1); + } + else + { + if (AdditionalAttributes.TryGetValue("aria-disabled", out _)) + AdditionalAttributes.Remove("aria-disabled"); + + if (TabIndex is not null && !AdditionalAttributes.TryGetValue("tabindex", out _)) + AdditionalAttributes.Add("tabindex", TabIndex); + else if (TabIndex is null && AdditionalAttributes.TryGetValue("tabindex", out _)) + AdditionalAttributes.Remove("tabindex"); + } + } + else // button, submit + { + if (AdditionalAttributes.TryGetValue("role", out _)) + AdditionalAttributes.Remove("role"); + + if (AdditionalAttributes.TryGetValue("href", out _)) + AdditionalAttributes.Remove("href"); + + if (AdditionalAttributes.TryGetValue("target", out _)) + AdditionalAttributes.Remove("target"); + + if (AdditionalAttributes.TryGetValue("aria-disabled", out _)) + AdditionalAttributes.Remove("aria-disabled"); + + // NOTE: This is handled in .razor page - #182 + //if (this.Disabled && !Attributes.TryGetValue("disabled", out _)) + // Attributes.Add("disabled", "disabled"); + //else if (!this.Disabled && Attributes.TryGetValue("disabled", out _)) + // Attributes.Remove("disabled"); + + if (TabIndex is not null && !AdditionalAttributes.TryGetValue("tabindex", out _)) + AdditionalAttributes.Add("tabindex", TabIndex); + else if (TabIndex is null && AdditionalAttributes.TryGetValue("tabindex", out _)) + AdditionalAttributes.Remove("tabindex"); + } + + // button enabled (and) tooltip text not empty + if (!Disabled && !string.IsNullOrWhiteSpace(TooltipTitle)) + { + // Ref: https://getbootstrap.com/docs/5.2/components/buttons/#toggle-states + // The below code creates an issue when the `button` or `a` element has a tooltip. + //if (!Attributes.TryGetValue("data-bs-toggle", out _)) + // Attributes.Add("data-bs-toggle", "button"); + + if (!AdditionalAttributes.TryGetValue("data-bs-placement", out _)) + AdditionalAttributes.Add("data-bs-placement", TooltipPlacement.ToTooltipPlacementName()); + + if (AdditionalAttributes.TryGetValue("title", out _)) + AdditionalAttributes["title"] = TooltipTitle; + else + AdditionalAttributes.Add("title", TooltipTitle); + + if (AdditionalAttributes.TryGetValue("data-bs-custom-class", out _)) + AdditionalAttributes["data-bs-custom-class"] = TooltipColor.ToTooltipColorClass()!; + else + AdditionalAttributes.Add("data-bs-custom-class", TooltipColor.ToTooltipColorClass()!); + } + // button disabled (or) tooltip text empty + else + { + if (AdditionalAttributes.TryGetValue("data-bs-toggle", out _)) + AdditionalAttributes.Remove("data-bs-toggle"); + + if (AdditionalAttributes.TryGetValue("data-bs-placement", out _)) + AdditionalAttributes.Remove("data-bs-placement"); + + if (AdditionalAttributes.TryGetValue("title", out _)) + AdditionalAttributes.Remove("title"); + + if (AdditionalAttributes.TryGetValue("data-bs-custom-class", out _)) + AdditionalAttributes.Remove("data-bs-custom-class"); + } + } + + #endregion + + #region Properties, Indexers + + /// + /// When set to 'true', places the component in the active state with active styling. + /// + [Parameter] + public bool Active { get; set; } + + /// + /// Makes the button to span the full width of a parent. + /// + [Parameter] + public bool Block { get; set; } + + private string buttonTypeString => Type.ToButtonTypeString()!; + + /// + /// Gets or sets the content to be rendered within the component. + /// + [Parameter] + public RenderFragment ChildContent { get; set; } = default!; + + /// + /// Gets or sets the button color. + /// + [Parameter] + public ButtonColor Color { get; set; } = ButtonColor.None; + + /// + /// When set to 'true', disables the component's functionality and places it in a disabled state. + /// + [Parameter] + public bool Disabled { get; set; } + + /// + /// Shows the loading spinner or a . + /// + [Parameter] + public bool Loading { get; set; } + + /// + /// Gets or sets the component loading template. + /// + [Parameter] + public RenderFragment LoadingTemplate { get; set; } = default!; + + /// + /// Gets or sets the loadgin text. + /// takes precedence. + /// + [Parameter] + public string LoadingText { get; set; } = "Loading..."; + + /// + /// Makes the button to have the outlines. + /// + [Parameter] + public bool Outline { get; set; } + + /// + /// Gets or sets the position. + /// Use to modify a and position it in the corner of a link or button. + /// + [Parameter] + public Position Position { get; set; } + + /// + /// Changes the size of a button. + /// + [Parameter] + public Size Size { get; set; } = Size.None; + + /// + /// If defined, indicates that its element can be focused and can participates in sequential keyboard navigation. + /// + [Parameter] + public int? TabIndex { get; set; } + + /// + /// The target attribute specifies where to open the linked document for a . + /// + [Parameter] + public Target Target { get; set; } = Target.None; + + /// + /// Denotes the target route of the button. + /// + [Parameter] + public string? To { get; set; } + + /// + /// Gets or sets the tooltip color. + /// + [Parameter] + public TooltipColor TooltipColor { get; set; } + + /// + /// Tooltip placement + /// + [Parameter] + public TooltipPlacement TooltipPlacement { get; set; } = TooltipPlacement.Top; + + /// + /// Displays informative text when users hover, focus, or tap an element. + /// + [Parameter] + public string TooltipTitle { get; set; } = default!; + + /// + /// Defines the button type. + /// + [Parameter] + public ButtonType Type { get; set; } = ButtonType.Button; + + #endregion + + // TODO: Review + // - Disable text wrapping: https://getbootstrap.com/docs/5.1/components/buttons/#disable-text-wrapping + // - Toggle states: https://getbootstrap.com/docs/5.1/components/buttons/#toggle-states + // - IDispose +} diff --git a/blazorbootstrap/Components/Callout/Callout.razor b/blazorbootstrap/Components/Callout/Callout.razor new file mode 100644 index 000000000..683c21ae4 --- /dev/null +++ b/blazorbootstrap/Components/Callout/Callout.razor @@ -0,0 +1,16 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
+ @if (!HideHeading) + { +
+ + @heading + +
+ } +
+ @ChildContent +
+
diff --git a/blazorbootstrap/Components/Callout/Callout.razor.cs b/blazorbootstrap/Components/Callout/Callout.razor.cs new file mode 100644 index 000000000..cad1dafa7 --- /dev/null +++ b/blazorbootstrap/Components/Callout/Callout.razor.cs @@ -0,0 +1,76 @@ +namespace BlazorBootstrap; + +public partial class Callout : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.Callout) + .AddClass(Type.ToCalloutTypeClass()) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + private string GetHeading() + { + if (!string.IsNullOrWhiteSpace(Heading)) + return Heading; + + return Type switch + { + CalloutType.Default => "NOTE", + CalloutType.Info => "INFO", + CalloutType.Warning => "WARNING", + CalloutType.Danger => "DANGER", + CalloutType.Tip or CalloutType.Success => "TIP", + _ => "" + }; + } + + private IconName GetIconName() => + Type switch + { + CalloutType.Default => IconName.InfoCircleFill, + CalloutType.Info => IconName.InfoCircleFill, + CalloutType.Warning => IconName.ExclamationTriangleFill, + CalloutType.Danger => IconName.Fire, + CalloutType.Tip or CalloutType.Success => IconName.Lightbulb, + _ => IconName.InfoCircleFill + }; + + #endregion + + #region Properties, Indexers + + private string CalloutHeadingCssClass => BootstrapClass.CalloutHeading; + + /// + /// Specifies the content to be rendered inside this. + /// + [Parameter] + public RenderFragment? ChildContent { get; set; } + + private string heading => GetHeading(); + + /// + /// Gets or sets the callout heading. + /// + [Parameter] + public string? Heading { get; set; } + + /// + /// Gets or sets a value indicating whether to hide the callout heading. + /// + [Parameter] + public bool HideHeading { get; set; } + + private IconName iconName => GetIconName(); + + /// + /// Gets or sets the callout color. + /// + [Parameter] + public CalloutType Type { get; set; } = CalloutType.Default; + + #endregion +} diff --git a/blazorbootstrap/Components/Callout/Callout.razor.css b/blazorbootstrap/Components/Callout/Callout.razor.css new file mode 100644 index 000000000..5fb5e2a29 --- /dev/null +++ b/blazorbootstrap/Components/Callout/Callout.razor.css @@ -0,0 +1,50 @@ +.bb-callout { + --bs-link-color-rgb: var(--bb-callout-link); + --bs-code-color: var(--bb-callout-code-color); + padding: 1.25rem; + margin-top: 1.25rem; + margin-bottom: 1.25rem; + color: var(--bb-callout-color, inherit); + background-color: var(--bb-callout-bg, var(--bs-gray-100)); + border-left: 0.25rem solid var(--bb-callout-border, var(--bs-gray-300)) +} + +.bb-callout h4 { + margin-bottom: .25rem; +} + +.bb-callout > :last-child { + margin-bottom: 0 !important; +} + +.bb-callout + .bb-callout { + margin-top: -.25rem; +} + +.bb-callout .highlight { + background-color: rgba(0,0,0,0.05) +} + +.bb-callout-info { + --bb-callout-color: var(--bs-info-text-emphasis); + --bb-callout-bg: var(--bs-info-bg-subtle); + --bb-callout-border: var(--bs-info-border-subtle) +} + +.bb-callout-warning { + --bb-callout-color: var(--bs-warning-text-emphasis); + --bb-callout-bg: var(--bs-warning-bg-subtle); + --bb-callout-border: var(--bs-warning-border-subtle) +} + +.bb-callout-danger { + --bb-callout-color: var(--bs-danger-text-emphasis); + --bb-callout-bg: var(--bs-danger-bg-subtle); + --bb-callout-border: var(--bs-danger-border-subtle) +} + +.bb-callout-success { + --bb-callout-color: var(--bs-success-text-emphasis); + --bb-callout-bg: var(--bs-success-bg-subtle); + --bb-callout-border: var(--bs-success-border-subtle) +} diff --git a/blazorbootstrap/Components/Card/Card.razor b/blazorbootstrap/Components/Card/Card.razor new file mode 100644 index 000000000..216d20323 --- /dev/null +++ b/blazorbootstrap/Components/Card/Card.razor @@ -0,0 +1,6 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
+ @ChildContent +
diff --git a/blazorbootstrap/Components/Card/Card.razor.cs b/blazorbootstrap/Components/Card/Card.razor.cs new file mode 100644 index 000000000..e5dc3ce3d --- /dev/null +++ b/blazorbootstrap/Components/Card/Card.razor.cs @@ -0,0 +1,38 @@ +namespace BlazorBootstrap; + +public partial class Card : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.Card) + .AddClass(TextAlignment.ToTextAlignmentClass()) + .AddClass(Color.ToCardColorClass()) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the content to be rendered within the component. + /// + [Parameter] + public RenderFragment ChildContent { get; set; } = default!; + + /// + /// Gets or sets the card color. + /// + [Parameter] + public CardColor Color { get; set; } + + /// + /// Gets or sets the text alignment of the card. + /// + [Parameter] + public Alignment TextAlignment { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Components/Card/CardBody.razor b/blazorbootstrap/Components/Card/CardBody.razor new file mode 100644 index 000000000..216d20323 --- /dev/null +++ b/blazorbootstrap/Components/Card/CardBody.razor @@ -0,0 +1,6 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
+ @ChildContent +
diff --git a/blazorbootstrap/Components/Card/CardBody.razor.cs b/blazorbootstrap/Components/Card/CardBody.razor.cs new file mode 100644 index 000000000..daebe833b --- /dev/null +++ b/blazorbootstrap/Components/Card/CardBody.razor.cs @@ -0,0 +1,24 @@ +namespace BlazorBootstrap; + +public partial class CardBody : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.CardBody) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the content to be rendered within the component. + /// + [Parameter] + public RenderFragment ChildContent { get; set; } = default!; + + #endregion +} diff --git a/blazorbootstrap/Components/Card/CardFooter.razor b/blazorbootstrap/Components/Card/CardFooter.razor new file mode 100644 index 000000000..216d20323 --- /dev/null +++ b/blazorbootstrap/Components/Card/CardFooter.razor @@ -0,0 +1,6 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
+ @ChildContent +
diff --git a/blazorbootstrap/Components/Card/CardFooter.razor.cs b/blazorbootstrap/Components/Card/CardFooter.razor.cs new file mode 100644 index 000000000..671521241 --- /dev/null +++ b/blazorbootstrap/Components/Card/CardFooter.razor.cs @@ -0,0 +1,24 @@ +namespace BlazorBootstrap; + +public partial class CardFooter : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.CardFooter) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the content to be rendered within the component. + /// + [Parameter] + public RenderFragment ChildContent { get; set; } = default!; + + #endregion +} diff --git a/blazorbootstrap/Components/Card/CardGroup.razor b/blazorbootstrap/Components/Card/CardGroup.razor new file mode 100644 index 000000000..aa117b3b8 --- /dev/null +++ b/blazorbootstrap/Components/Card/CardGroup.razor @@ -0,0 +1,6 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
+ @ChildContent +
diff --git a/blazorbootstrap/Components/Card/CardGroup.razor.cs b/blazorbootstrap/Components/Card/CardGroup.razor.cs new file mode 100644 index 000000000..52536b96d --- /dev/null +++ b/blazorbootstrap/Components/Card/CardGroup.razor.cs @@ -0,0 +1,24 @@ +namespace BlazorBootstrap; + +public partial class CardGroup : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.CardGroup) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the content to be rendered within the component. + /// + [Parameter] + public RenderFragment ChildContent { get; set; } = default!; + + #endregion +} diff --git a/blazorbootstrap/Components/Card/CardHeader.razor b/blazorbootstrap/Components/Card/CardHeader.razor new file mode 100644 index 000000000..216d20323 --- /dev/null +++ b/blazorbootstrap/Components/Card/CardHeader.razor @@ -0,0 +1,6 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
+ @ChildContent +
diff --git a/blazorbootstrap/Components/Card/CardHeader.razor.cs b/blazorbootstrap/Components/Card/CardHeader.razor.cs new file mode 100644 index 000000000..8a3980000 --- /dev/null +++ b/blazorbootstrap/Components/Card/CardHeader.razor.cs @@ -0,0 +1,31 @@ +namespace BlazorBootstrap; + +public partial class CardHeader : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.CardHeader) + .AddClass(Color.ToCardColorClass()) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the content to be rendered within the component. + /// + [Parameter] + public RenderFragment ChildContent { get; set; } = default!; + + /// + /// Gets or sets the card header color. + /// + [Parameter] + public CardColor Color { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Components/Card/CardLink.razor b/blazorbootstrap/Components/Card/CardLink.razor new file mode 100644 index 000000000..47df3cd16 --- /dev/null +++ b/blazorbootstrap/Components/Card/CardLink.razor @@ -0,0 +1,6 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + + + @ChildContent + diff --git a/blazorbootstrap/Components/Card/CardLink.razor.cs b/blazorbootstrap/Components/Card/CardLink.razor.cs new file mode 100644 index 000000000..e04c7a39f --- /dev/null +++ b/blazorbootstrap/Components/Card/CardLink.razor.cs @@ -0,0 +1,156 @@ +namespace BlazorBootstrap; + +public partial class CardLink : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private bool disabled; + + private bool isFirstRenderComplete = false; + + private bool previousDisabled; + + private int? previousTabIndex; + + private Target previousTarget; + + private bool setButtonAttributesAgain = false; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.CardLink) + .AddClass(BootstrapClass.Disabled, Disabled) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + protected override void OnAfterRender(bool firstRender) + { + if (firstRender) + isFirstRenderComplete = true; + + base.OnAfterRender(firstRender); + } + + protected override void OnInitialized() + { + previousDisabled = Disabled; + previousTarget = Target; + previousTabIndex = TabIndex; + + SetAttributes(); + + base.OnInitialized(); + } + + protected override void OnParametersSet() + { + if (isFirstRenderComplete) + { + if (previousDisabled != Disabled) + { + previousDisabled = Disabled; + setButtonAttributesAgain = true; + } + + if (previousTarget != Target) + { + previousTarget = Target; + setButtonAttributesAgain = true; + } + + if (previousTabIndex != TabIndex) + { + previousTabIndex = TabIndex; + setButtonAttributesAgain = true; + } + + if (setButtonAttributesAgain) + { + setButtonAttributesAgain = false; + SetAttributes(); + } + } + } + + private void SetAttributes() + { + AdditionalAttributes ??= new Dictionary(); + + if (!AdditionalAttributes.TryGetValue("href", out _)) + AdditionalAttributes.Add("href", To!); + + if (Target != Target.None) + if (!AdditionalAttributes.TryGetValue("target", out _)) + AdditionalAttributes.Add("target", Target.ToTargetString()!); + + if (Disabled) + { + if (AdditionalAttributes.TryGetValue("aria-disabled", out _)) + AdditionalAttributes["aria-disabled"] = "true"; + else + AdditionalAttributes.Add("aria-disabled", "true"); + + if (AdditionalAttributes.TryGetValue("tabindex", out _)) + AdditionalAttributes["tabindex"] = -1; + else + AdditionalAttributes.Add("tabindex", -1); + } + else + { + if (AdditionalAttributes.TryGetValue("aria-disabled", out _)) + AdditionalAttributes.Remove("aria-disabled"); + + if (TabIndex is not null && !AdditionalAttributes.TryGetValue("tabindex", out _)) + AdditionalAttributes.Add("tabindex", TabIndex); + else if (TabIndex is null && AdditionalAttributes.TryGetValue("tabindex", out _)) + AdditionalAttributes.Remove("tabindex"); + } + } + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the content to be rendered within the component. + /// + [Parameter] + public RenderFragment ChildContent { get; set; } = default!; + + /// + /// When set to 'true', disables the component's functionality and places it in a disabled state. + /// + [Parameter] + public bool Disabled + { + get => disabled; + set + { + disabled = value; + } + } + + /// + /// If defined, indicates that its element can be focused and can participates in sequential keyboard navigation. + /// + [Parameter] + public int? TabIndex { get; set; } + + /// + /// The target attribute specifies where to open the linked document for a . + /// + [Parameter] + public Target Target { get; set; } = Target.None; + + /// + /// Gets or sets the target route. + /// + [Parameter] + public string? To { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Components/Card/CardSubTitle.razor b/blazorbootstrap/Components/Card/CardSubTitle.razor new file mode 100644 index 000000000..616e1df24 --- /dev/null +++ b/blazorbootstrap/Components/Card/CardSubTitle.razor @@ -0,0 +1,39 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +@if (Size == HeadingSize.H1) +{ +

+ @ChildContent +

+} +else if (Size == HeadingSize.H2) +{ +

+ @ChildContent +

+} +else if (Size == HeadingSize.H3) +{ +

+ @ChildContent +

+} +else if (Size == HeadingSize.H4) +{ +

+ @ChildContent +

+} +else if (Size == HeadingSize.H5) +{ +
+ @ChildContent +
+} +else if (Size == HeadingSize.H6) +{ +
+ @ChildContent +
+} diff --git a/blazorbootstrap/Components/Card/CardSubTitle.razor.cs b/blazorbootstrap/Components/Card/CardSubTitle.razor.cs new file mode 100644 index 000000000..1eeee86d9 --- /dev/null +++ b/blazorbootstrap/Components/Card/CardSubTitle.razor.cs @@ -0,0 +1,30 @@ +namespace BlazorBootstrap; + +public partial class CardSubTitle : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.CardSubTitle) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the content to be rendered within the component. + /// + [Parameter] + public RenderFragment ChildContent { get; set; } = default!; + + /// + /// Gets or sets the heading size. + /// + [Parameter] + public HeadingSize Size { get; set; } = HeadingSize.H6; + + #endregion +} diff --git a/blazorbootstrap/Components/Card/CardText.razor b/blazorbootstrap/Components/Card/CardText.razor new file mode 100644 index 000000000..010b6acff --- /dev/null +++ b/blazorbootstrap/Components/Card/CardText.razor @@ -0,0 +1,6 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +

+ @ChildContent +

diff --git a/blazorbootstrap/Components/Card/CardText.razor.cs b/blazorbootstrap/Components/Card/CardText.razor.cs new file mode 100644 index 000000000..bb0caf627 --- /dev/null +++ b/blazorbootstrap/Components/Card/CardText.razor.cs @@ -0,0 +1,24 @@ +namespace BlazorBootstrap; + +public partial class CardText : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.CardText) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the content to be rendered within the component. + /// + [Parameter] + public RenderFragment ChildContent { get; set; } = default!; + + #endregion +} diff --git a/blazorbootstrap/Components/Card/CardTitle.razor b/blazorbootstrap/Components/Card/CardTitle.razor new file mode 100644 index 000000000..616e1df24 --- /dev/null +++ b/blazorbootstrap/Components/Card/CardTitle.razor @@ -0,0 +1,39 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +@if (Size == HeadingSize.H1) +{ +

+ @ChildContent +

+} +else if (Size == HeadingSize.H2) +{ +

+ @ChildContent +

+} +else if (Size == HeadingSize.H3) +{ +

+ @ChildContent +

+} +else if (Size == HeadingSize.H4) +{ +

+ @ChildContent +

+} +else if (Size == HeadingSize.H5) +{ +
+ @ChildContent +
+} +else if (Size == HeadingSize.H6) +{ +
+ @ChildContent +
+} diff --git a/blazorbootstrap/Components/Card/CardTitle.razor.cs b/blazorbootstrap/Components/Card/CardTitle.razor.cs new file mode 100644 index 000000000..bbf6f4d89 --- /dev/null +++ b/blazorbootstrap/Components/Card/CardTitle.razor.cs @@ -0,0 +1,30 @@ +namespace BlazorBootstrap; + +public partial class CardTitle : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.CardTitle) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the content to be rendered within the component. + /// + [Parameter] + public RenderFragment ChildContent { get; set; } = default!; + + /// + /// Gets or sets the heading size. + /// + [Parameter] + public HeadingSize Size { get; set; } = HeadingSize.H5; + + #endregion +} diff --git a/blazorbootstrap/Components/Charts/BarChart.razor b/blazorbootstrap/Components/Charts/BarChart.razor new file mode 100644 index 000000000..aa9beab4a --- /dev/null +++ b/blazorbootstrap/Components/Charts/BarChart.razor @@ -0,0 +1,6 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapChart + +
+ +
diff --git a/blazorbootstrap/Components/Charts/BarChart.razor.cs b/blazorbootstrap/Components/Charts/BarChart.razor.cs new file mode 100644 index 000000000..ba8e5f05e --- /dev/null +++ b/blazorbootstrap/Components/Charts/BarChart.razor.cs @@ -0,0 +1,123 @@ +namespace BlazorBootstrap; + +public partial class BarChart : BlazorBootstrapChart +{ + #region Constructors + + public BarChart() + { + chartType = ChartType.Bar; + } + + #endregion + + #region Methods + + public override async Task AddDataAsync(ChartData chartData, string dataLabel, IChartDatasetData data) + { + if (chartData is null) + throw new ArgumentNullException(nameof(chartData)); + + if (chartData.Datasets is null) + throw new ArgumentNullException(nameof(chartData.Datasets)); + + if (data is null) + throw new ArgumentNullException(nameof(data)); + + foreach (var dataset in chartData.Datasets) + if (dataset is BarChartDataset barChartDataset && barChartDataset.Label == dataLabel) + if (data is BarChartDatasetData barChartDatasetData) + barChartDataset.Data?.Add(barChartDatasetData.Data); + + await JSRuntime.InvokeVoidAsync("window.blazorChart.bar.addDatasetData", Id, dataLabel, data); + + return chartData; + } + + public override async Task AddDataAsync(ChartData chartData, string dataLabel, List data) + { + if (chartData is null) + throw new ArgumentNullException(nameof(chartData)); + + if (chartData.Datasets is null) + throw new ArgumentNullException(nameof(chartData.Datasets)); + + if (chartData.Labels is null) + throw new ArgumentNullException(nameof(chartData.Labels)); + + if (dataLabel is null) + throw new ArgumentNullException(nameof(dataLabel)); + + if (string.IsNullOrWhiteSpace(dataLabel)) + throw new Exception($"{nameof(dataLabel)} cannot be empty."); + + if (data is null) + throw new ArgumentNullException(nameof(data)); + + if (!data.Any()) + throw new Exception($"{nameof(data)} cannot be empty."); + + if (chartData.Datasets.Count != data.Count) + throw new InvalidDataException("The chart dataset count and the new data points count do not match."); + + if (chartData.Labels.Contains(dataLabel)) + throw new Exception($"{dataLabel} already exists."); + + chartData.Labels.Add(dataLabel); + + foreach (var dataset in chartData.Datasets) + if (dataset is BarChartDataset barChartDataset) + { + var chartDatasetData = data.FirstOrDefault(x => x is BarChartDatasetData barChartDatasetData && barChartDatasetData.DatasetLabel == barChartDataset.Label); + + if (chartDatasetData is BarChartDatasetData barChartDatasetData) + barChartDataset.Data?.Add(barChartDatasetData.Data); + } + + await JSRuntime.InvokeVoidAsync("window.blazorChart.bar.addDatasetsData", Id, dataLabel, data?.Select(x => (BarChartDatasetData)x)); + + return chartData; + } + + public override async Task AddDatasetAsync(ChartData chartData, IChartDataset chartDataset, IChartOptions chartOptions) + { + if (chartData is null) + throw new ArgumentNullException(nameof(chartData)); + + if (chartData.Datasets is null) + throw new ArgumentNullException(nameof(chartData.Datasets)); + + if (chartDataset is null) + throw new ArgumentNullException(nameof(chartDataset)); + + if (chartDataset is BarChartDataset) + { + chartData.Datasets.Add(chartDataset); + await JSRuntime.InvokeVoidAsync("window.blazorChart.bar.addDataset", Id, (BarChartDataset)chartDataset); + } + + return chartData; + } + + public override async Task InitializeAsync(ChartData chartData, IChartOptions chartOptions, string[]? plugins = null) + { + if (chartData is not null && chartData.Datasets is not null) + { + var datasets = chartData.Datasets.OfType(); + var data = new { chartData.Labels, Datasets = datasets }; + await JSRuntime.InvokeVoidAsync("window.blazorChart.bar.initialize", Id, GetChartType(), data, (BarChartOptions)chartOptions, plugins); + } + } + + public override async Task UpdateAsync(ChartData chartData, IChartOptions chartOptions) + { + if (chartData is not null && chartData.Datasets is not null) + { + var datasets = chartData.Datasets.OfType(); + var data = new { chartData.Labels, Datasets = datasets }; + await JSRuntime.InvokeVoidAsync("window.blazorChart.bar.update", Id, GetChartType(), data, (BarChartOptions)chartOptions); + } + } + + #endregion +} diff --git a/blazorbootstrap/Components/Charts/BlazorBootstrapChart.cs b/blazorbootstrap/Components/Charts/BlazorBootstrapChart.cs new file mode 100644 index 000000000..40667f069 --- /dev/null +++ b/blazorbootstrap/Components/Charts/BlazorBootstrapChart.cs @@ -0,0 +1,188 @@ +namespace BlazorBootstrap; + +public class BlazorBootstrapChart : BlazorBootstrapComponentBase, IDisposable, IAsyncDisposable +{ + #region Fields and Constants + + internal ChartType chartType; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class).Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + //public async Task Stop() { } + + //public async Task ToBase64Image() { } + + //public async Task ToBase64Image(string type, double quality) { } + + public virtual async Task AddDataAsync(ChartData chartData, string dataLabel, IChartDatasetData data) => await Task.FromResult(chartData); + + public virtual async Task AddDataAsync(ChartData chartData, string dataLabel, List data) => await Task.FromResult(chartData); + + public virtual async Task AddDatasetAsync(ChartData chartData, IChartDataset chartDataset, IChartOptions chartOptions) => await Task.FromResult(chartData); + + /// + public new virtual void Dispose() => Dispose(true); + + /// + public new virtual async ValueTask DisposeAsync() + { + await DisposeAsyncCore(true); + Dispose(false); + } + + //public async Task Clear() { } + + /// + /// Initialize Bar Chart. + /// + /// + /// + /// + public virtual async Task InitializeAsync(ChartData chartData, IChartOptions chartOptions, string[]? plugins = null) + { + if (chartData is not null && chartData.Datasets is not null && chartData.Datasets.Any()) + { + var _data = GetChartDataObject(chartData); + + if (chartType == ChartType.Bar) + await JSRuntime.InvokeVoidAsync("window.blazorChart.bar.initialize", Id, GetChartType(), _data, (BarChartOptions)chartOptions, plugins); + else if (chartType == ChartType.Line) + await JSRuntime.InvokeVoidAsync("window.blazorChart.line.initialize", Id, GetChartType(), _data, (LineChartOptions)chartOptions, plugins); + else + await JSRuntime.InvokeVoidAsync("window.blazorChart.initialize", Id, GetChartType(), _data, chartOptions, plugins); + } + } + + //public async Task Render() { } + + //public async Task Reset() { } + + /// + /// Resize the chart. + /// + /// + /// + /// + /// + public async Task ResizeAsync(int width, int height, Unit widthUnit = Unit.Px, Unit heightUnit = Unit.Px) + { + var widthWithUnit = $"width:{width.ToString(CultureInfo.InvariantCulture)}{widthUnit.ToCssString()}"; + var heightWithUnit = $"height:{height.ToString(CultureInfo.InvariantCulture)}{heightUnit.ToCssString()}"; + await JSRuntime.InvokeVoidAsync("window.blazorChart.resize", Id, widthWithUnit, heightWithUnit); + } + + /// + /// Update chart. + /// + /// + /// + public virtual async Task UpdateAsync(ChartData chartData, IChartOptions chartOptions) + { + if (chartData is not null && chartData.Datasets is not null && chartData.Datasets.Any()) + { + var _data = GetChartDataObject(chartData); + + if (chartType == ChartType.Bar) + await JSRuntime.InvokeVoidAsync("window.blazorChart.bar.update", Id, GetChartType(), _data, (BarChartOptions)chartOptions); + else if (chartType == ChartType.Line) + await JSRuntime.InvokeVoidAsync("window.blazorChart.line.update", Id, GetChartType(), _data, (LineChartOptions)chartOptions); + else + await JSRuntime.InvokeVoidAsync("window.blazorChart.update", Id, GetChartType(), _data, chartOptions); + } + } + + private string GetChartContainerSizeAsStyle() + { + var style = ""; + + if (Width > 0) + style += $"width:{Width.Value.ToString(CultureInfo.InvariantCulture)}{WidthUnit.ToCssString()};"; + + if (Height > 0) + style += $"height:{Height.Value.ToString(CultureInfo.InvariantCulture)}{HeightUnit.ToCssString()};"; + + return style; + } + + protected string GetChartType() => + chartType switch + { + ChartType.Bar => "bar", + ChartType.Bubble => "bubble", + ChartType.Doughnut => "doughnut", + ChartType.Line => "line", + ChartType.Pie => "pie", + ChartType.PolarArea => "polarArea", + ChartType.Radar => "radar", + ChartType.Scatter => "scatter", + _ => "line" // default + }; + + private object GetChartDataObject(ChartData chartData) + { + var datasets = new List(); + + if (chartData?.Datasets?.Any() ?? false) + foreach (var dataset in chartData.Datasets) + if (dataset is BarChartDataset) + datasets.Add((BarChartDataset)dataset); + else if (dataset is BubbleChartDataset) + datasets.Add((BubbleChartDataset)dataset); + else if (dataset is DoughnutChartDataset) + datasets.Add((DoughnutChartDataset)dataset); + else if (dataset is LineChartDataset) + datasets.Add((LineChartDataset)dataset); + else if (dataset is PieChartDataset) + datasets.Add((PieChartDataset)dataset); + + var data = new { chartData?.Labels, Datasets = datasets }; + + return data; + } + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets chart container height. + /// + /// + /// The default unit of measure is . + /// To change the unit of measure see . + /// + [Parameter] + public int? Height { get; set; } + + /// + /// Gets or sets chart container height unit of measure. + /// + [Parameter] + public Unit HeightUnit { get; set; } = Unit.Px; + + /// + /// Get or sets chart container width. + /// + /// + /// The default unit of measure is . + /// To change the unit of measure see . + /// + [Parameter] + public int? Width { get; set; } + + /// + /// Gets or sets chart container width unit of measure. + /// + [Parameter] + public Unit WidthUnit { get; set; } = Unit.Px; + + internal string ContainerStyle => GetChartContainerSizeAsStyle(); + + #endregion +} diff --git a/blazorbootstrap/Components/Charts/DoughnutChart.razor b/blazorbootstrap/Components/Charts/DoughnutChart.razor new file mode 100644 index 000000000..aa9beab4a --- /dev/null +++ b/blazorbootstrap/Components/Charts/DoughnutChart.razor @@ -0,0 +1,6 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapChart + +
+ +
diff --git a/blazorbootstrap/Components/Charts/DoughnutChart.razor.cs b/blazorbootstrap/Components/Charts/DoughnutChart.razor.cs new file mode 100644 index 000000000..afd3eaa33 --- /dev/null +++ b/blazorbootstrap/Components/Charts/DoughnutChart.razor.cs @@ -0,0 +1,129 @@ +namespace BlazorBootstrap; + +public partial class DoughnutChart : BlazorBootstrapChart +{ + #region Constructors + + public DoughnutChart() + { + chartType = ChartType.Doughnut; + } + + #endregion + + #region Methods + + public override async Task AddDataAsync(ChartData chartData, string dataLabel, IChartDatasetData data) + { + if (chartData is null) + throw new ArgumentNullException(nameof(chartData)); + + if (chartData.Datasets is null) + throw new ArgumentNullException(nameof(chartData.Datasets)); + + if (data is null) + throw new ArgumentNullException(nameof(data)); + + foreach (var dataset in chartData.Datasets) + if (dataset is DoughnutChartDataset doughnutChartDataset && doughnutChartDataset.Label == dataLabel) + if (data is DoughnutChartDatasetData doughnutChartDatasetData) + { + doughnutChartDataset.Data?.Add(doughnutChartDatasetData.Data); + doughnutChartDataset.BackgroundColor?.Add(doughnutChartDatasetData.BackgroundColor!); + } + + await JSRuntime.InvokeVoidAsync("window.blazorChart.doughnut.addDatasetData", Id, dataLabel, data); + + return chartData; + } + + public override async Task AddDataAsync(ChartData chartData, string dataLabel, List data) + { + if (chartData is null) + throw new ArgumentNullException(nameof(chartData)); + + if (chartData.Datasets is null) + throw new ArgumentNullException(nameof(chartData.Datasets)); + + if (chartData.Labels is null) + throw new ArgumentNullException(nameof(chartData.Labels)); + + if (dataLabel is null) + throw new ArgumentNullException(nameof(dataLabel)); + + if (string.IsNullOrWhiteSpace(dataLabel)) + throw new Exception($"{nameof(dataLabel)} cannot be empty."); + + if (data is null) + throw new ArgumentNullException(nameof(data)); + + if (!data.Any()) + throw new Exception($"{nameof(data)} cannot be empty."); + + if (chartData.Datasets.Count != data.Count) + throw new InvalidDataException("The chart dataset count and the new data points count do not match."); + + if (chartData.Labels.Contains(dataLabel)) + throw new Exception($"{dataLabel} already exists."); + + chartData.Labels.Add(dataLabel); + + foreach (var dataset in chartData.Datasets) + if (dataset is DoughnutChartDataset doughnutChartDataset) + { + var chartDatasetData = data.FirstOrDefault(x => x is DoughnutChartDatasetData doughnutChartDatasetData && doughnutChartDatasetData.DatasetLabel == doughnutChartDataset.Label); + + if (chartDatasetData is DoughnutChartDatasetData doughnutChartDatasetData) + { + doughnutChartDataset.Data?.Add(doughnutChartDatasetData.Data); + doughnutChartDataset.BackgroundColor?.Add(doughnutChartDatasetData.BackgroundColor!); + } + } + + await JSRuntime.InvokeVoidAsync("window.blazorChart.doughnut.addDatasetsData", Id, dataLabel, data?.Select(x => (DoughnutChartDatasetData)x)); + + return chartData; + } + + public override async Task AddDatasetAsync(ChartData chartData, IChartDataset chartDataset, IChartOptions chartOptions) + { + if (chartData is null) + throw new ArgumentNullException(nameof(chartData)); + + if (chartData.Datasets is null) + throw new ArgumentNullException(nameof(chartData.Datasets)); + + if (chartDataset is null) + throw new ArgumentNullException(nameof(chartDataset)); + + if (chartDataset is DoughnutChartDataset doughnutChartDataset) + { + chartData.Datasets.Add(doughnutChartDataset); + await JSRuntime.InvokeVoidAsync("window.blazorChart.doughnut.addDataset", Id, doughnutChartDataset); + } + + return chartData; + } + + public override async Task InitializeAsync(ChartData chartData, IChartOptions chartOptions, string[]? plugins = null) + { + if (chartData is not null && chartData.Datasets is not null) + { + var datasets = chartData.Datasets.OfType(); + var data = new { chartData.Labels, Datasets = datasets }; + await JSRuntime.InvokeVoidAsync("window.blazorChart.doughnut.initialize", Id, GetChartType(), data, (DoughnutChartOptions)chartOptions, plugins); + } + } + + public override async Task UpdateAsync(ChartData chartData, IChartOptions chartOptions) + { + if (chartData is not null && chartData.Datasets is not null) + { + var datasets = chartData.Datasets.OfType(); + var data = new { chartData.Labels, Datasets = datasets }; + await JSRuntime.InvokeVoidAsync("window.blazorChart.doughnut.update", Id, GetChartType(), data, (DoughnutChartOptions)chartOptions); + } + } + + #endregion +} diff --git a/blazorbootstrap/Components/Charts/LineChart.razor b/blazorbootstrap/Components/Charts/LineChart.razor new file mode 100644 index 000000000..aa9beab4a --- /dev/null +++ b/blazorbootstrap/Components/Charts/LineChart.razor @@ -0,0 +1,6 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapChart + +
+ +
diff --git a/blazorbootstrap/Components/Charts/LineChart.razor.cs b/blazorbootstrap/Components/Charts/LineChart.razor.cs new file mode 100644 index 000000000..6da465b9b --- /dev/null +++ b/blazorbootstrap/Components/Charts/LineChart.razor.cs @@ -0,0 +1,139 @@ +namespace BlazorBootstrap; + +public partial class LineChart : BlazorBootstrapChart +{ + #region Constructors + + public LineChart() + { + chartType = ChartType.Line; + } + + #endregion + + #region Methods + + public override async Task AddDataAsync(ChartData chartData, string dataLabel, IChartDatasetData data) + { + if (chartData is null) + throw new ArgumentNullException(nameof(chartData)); + + if (chartData.Datasets is null) + throw new ArgumentNullException(nameof(chartData.Datasets)); + + if (data is null) + throw new ArgumentNullException(nameof(data)); + + foreach (var dataset in chartData.Datasets) + if (dataset is LineChartDataset lineChartDataset && lineChartDataset.Label == dataLabel) + if (data is LineChartDatasetData lineChartDatasetData) + lineChartDataset.Data?.Add(lineChartDatasetData.Data); + + await JSRuntime.InvokeVoidAsync("window.blazorChart.line.addDatasetData", Id, dataLabel, data); + + return chartData; + } + + public override async Task AddDataAsync(ChartData chartData, string dataLabel, List data) + { + if (chartData is null) + throw new ArgumentNullException(nameof(chartData)); + + if (chartData.Datasets is null) + throw new ArgumentNullException(nameof(chartData.Datasets)); + + if (chartData.Labels is null) + throw new ArgumentNullException(nameof(chartData.Labels)); + + if (dataLabel is null) + throw new ArgumentNullException(nameof(dataLabel)); + + if (string.IsNullOrWhiteSpace(dataLabel)) + throw new Exception($"{nameof(dataLabel)} cannot be empty."); + + if (data is null) + throw new ArgumentNullException(nameof(data)); + + if (!data.Any()) + throw new Exception($"{nameof(data)} cannot be empty."); + + if (chartData.Datasets.Count != data.Count) + throw new InvalidDataException("The chart dataset count and the new data points count do not match."); + + if (chartData.Labels.Contains(dataLabel)) + throw new Exception($"{dataLabel} already exists."); + + chartData.Labels.Add(dataLabel); + + foreach (var dataset in chartData.Datasets) + if (dataset is LineChartDataset lineChartDataset) + { + var chartDatasetData = data.FirstOrDefault(x => x is LineChartDatasetData lineChartDatasetData && lineChartDatasetData.DatasetLabel == lineChartDataset.Label); + + if (chartDatasetData is LineChartDatasetData lineChartDatasetData) + lineChartDataset.Data?.Add(lineChartDatasetData.Data); + } + + await JSRuntime.InvokeVoidAsync("window.blazorChart.line.addDatasetsData", Id, dataLabel, data?.Select(x => (LineChartDatasetData)x)); + + return chartData; + } + + public override async Task AddDatasetAsync(ChartData chartData, IChartDataset chartDataset, IChartOptions chartOptions) + { + if (chartData is null) + throw new ArgumentNullException(nameof(chartData)); + + if (chartData.Datasets is null) + throw new ArgumentNullException(nameof(chartData.Datasets)); + + if (chartDataset is null) + throw new ArgumentNullException(nameof(chartDataset)); + + if (chartDataset is LineChartDataset) + { + chartData.Datasets.Add(chartDataset); + await JSRuntime.InvokeVoidAsync("window.blazorChart.line.addDataset", Id, (LineChartDataset)chartDataset); + } + + return chartData; + } + + public override async Task InitializeAsync(ChartData chartData, IChartOptions chartOptions, string[]? plugins = null) + { + if (chartData is null) + throw new ArgumentNullException(nameof(chartData)); + + if (chartData.Datasets is null) + throw new ArgumentNullException(nameof(chartData.Datasets)); + + if (chartOptions is null) + throw new ArgumentNullException(nameof(chartOptions)); + + var datasets = chartData.Datasets.OfType(); + var data = new { chartData.Labels, Datasets = datasets }; + await JSRuntime.InvokeVoidAsync("window.blazorChart.line.initialize", Id, GetChartType(), data, (LineChartOptions)chartOptions, plugins); + } + + public override async Task UpdateAsync(ChartData chartData, IChartOptions chartOptions) + { + if (chartData is null) + throw new ArgumentNullException(nameof(chartData)); + + if (chartData.Datasets is null) + throw new ArgumentNullException(nameof(chartData.Datasets)); + + if (chartOptions is null) + throw new ArgumentNullException(nameof(chartOptions)); + + var datasets = chartData.Datasets.OfType(); + var data = new { chartData.Labels, Datasets = datasets }; + await JSRuntime.InvokeVoidAsync("window.blazorChart.line.update", Id, GetChartType(), data, (LineChartOptions)chartOptions); + } + + #endregion + + #region Properties, Indexers + + #endregion +} diff --git a/blazorbootstrap/Components/Charts/PieChart.razor b/blazorbootstrap/Components/Charts/PieChart.razor new file mode 100644 index 000000000..aa9beab4a --- /dev/null +++ b/blazorbootstrap/Components/Charts/PieChart.razor @@ -0,0 +1,6 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapChart + +
+ +
diff --git a/blazorbootstrap/Components/Charts/PieChart.razor.cs b/blazorbootstrap/Components/Charts/PieChart.razor.cs new file mode 100644 index 000000000..96968217d --- /dev/null +++ b/blazorbootstrap/Components/Charts/PieChart.razor.cs @@ -0,0 +1,129 @@ +namespace BlazorBootstrap; + +public partial class PieChart : BlazorBootstrapChart +{ + #region Constructors + + public PieChart() + { + chartType = ChartType.Pie; + } + + #endregion + + #region Methods + + public override async Task AddDataAsync(ChartData chartData, string dataLabel, IChartDatasetData data) + { + if (chartData is null) + throw new ArgumentNullException(nameof(chartData)); + + if (chartData.Datasets is null) + throw new ArgumentNullException(nameof(chartData.Datasets)); + + if (data is null) + throw new ArgumentNullException(nameof(data)); + + foreach (var dataset in chartData.Datasets) + if (dataset is PieChartDataset pieChartDataset && pieChartDataset.Label == dataLabel) + if (data is PieChartDatasetData pieChartDatasetData) + { + pieChartDataset.Data?.Add(pieChartDatasetData.Data); + pieChartDataset.BackgroundColor?.Add(pieChartDatasetData.BackgroundColor!); + } + + await JSRuntime.InvokeVoidAsync("window.blazorChart.pie.addDatasetData", Id, dataLabel, data); + + return chartData; + } + + public override async Task AddDataAsync(ChartData chartData, string dataLabel, List data) + { + if (chartData is null) + throw new ArgumentNullException(nameof(chartData)); + + if (chartData.Datasets is null) + throw new ArgumentNullException(nameof(chartData.Datasets)); + + if (chartData.Labels is null) + throw new ArgumentNullException(nameof(chartData.Labels)); + + if (dataLabel is null) + throw new ArgumentNullException(nameof(dataLabel)); + + if (string.IsNullOrWhiteSpace(dataLabel)) + throw new Exception($"{nameof(dataLabel)} cannot be empty."); + + if (data is null) + throw new ArgumentNullException(nameof(data)); + + if (!data.Any()) + throw new Exception($"{nameof(data)} cannot be empty."); + + if (chartData.Datasets.Count != data.Count) + throw new InvalidDataException("The chart dataset count and the new data points count do not match."); + + if (chartData.Labels.Contains(dataLabel)) + throw new Exception($"{dataLabel} already exists."); + + chartData.Labels.Add(dataLabel); + + foreach (var dataset in chartData.Datasets) + if (dataset is PieChartDataset pieChartDataset) + { + var chartDatasetData = data.FirstOrDefault(x => x is PieChartDatasetData pieChartDatasetData && pieChartDatasetData.DatasetLabel == pieChartDataset.Label); + + if (chartDatasetData is PieChartDatasetData pieChartDatasetData) + { + pieChartDataset.Data?.Add(pieChartDatasetData.Data); + pieChartDataset.BackgroundColor?.Add(pieChartDatasetData.BackgroundColor!); + } + } + + await JSRuntime.InvokeVoidAsync("window.blazorChart.pie.addDatasetsData", Id, dataLabel, data?.Select(x => (PieChartDatasetData)x)); + + return chartData; + } + + public override async Task AddDatasetAsync(ChartData chartData, IChartDataset chartDataset, IChartOptions chartOptions) + { + if (chartData is null) + throw new ArgumentNullException(nameof(chartData)); + + if (chartData.Datasets is null) + throw new ArgumentNullException(nameof(chartData.Datasets)); + + if (chartDataset is null) + throw new ArgumentNullException(nameof(chartDataset)); + + if (chartDataset is PieChartDataset pieChartDataset) + { + chartData.Datasets.Add(pieChartDataset); + await JSRuntime.InvokeVoidAsync("window.blazorChart.pie.addDataset", Id, pieChartDataset); + } + + return chartData; + } + + public override async Task InitializeAsync(ChartData chartData, IChartOptions chartOptions, string[]? plugins = null) + { + if (chartData is not null && chartData.Datasets is not null) + { + var datasets = chartData.Datasets.OfType(); + var data = new { chartData.Labels, Datasets = datasets }; + await JSRuntime.InvokeVoidAsync("window.blazorChart.pie.initialize", Id, GetChartType(), data, (PieChartOptions)chartOptions, plugins); + } + } + + public override async Task UpdateAsync(ChartData chartData, IChartOptions chartOptions) + { + if (chartData is not null && chartData.Datasets is not null) + { + var datasets = chartData.Datasets.OfType(); + var data = new { chartData.Labels, Datasets = datasets }; + await JSRuntime.InvokeVoidAsync("window.blazorChart.pie.update", Id, GetChartType(), data, (PieChartOptions)chartOptions); + } + } + + #endregion +} diff --git a/blazorbootstrap/Components/Collapse/Collapse.razor b/blazorbootstrap/Components/Collapse/Collapse.razor new file mode 100644 index 000000000..aa117b3b8 --- /dev/null +++ b/blazorbootstrap/Components/Collapse/Collapse.razor @@ -0,0 +1,6 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
+ @ChildContent +
diff --git a/blazorbootstrap/Components/Collapse/Collapse.razor.cs b/blazorbootstrap/Components/Collapse/Collapse.razor.cs new file mode 100644 index 000000000..bacffebb0 --- /dev/null +++ b/blazorbootstrap/Components/Collapse/Collapse.razor.cs @@ -0,0 +1,141 @@ +namespace BlazorBootstrap; + +public partial class Collapse : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private DotNetObjectReference? objRef; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.Collapse) + .AddClass(BootstrapClass.CollapseHorizontal, Horizontal) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + /// + protected override async ValueTask DisposeAsyncCore(bool disposing) + { + if (disposing) + { + try + { + if (IsRenderComplete) + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.collapse.dispose", Id); + } + catch (JSDisconnectedException) + { + // do nothing + } + + objRef?.Dispose(); + } + + await base.DisposeAsyncCore(disposing); + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.collapse.initialize", Id, Parent, Toggle, objRef); + + await base.OnAfterRenderAsync(firstRender); + } + + protected override async Task OnInitializedAsync() + { + objRef ??= DotNetObjectReference.Create(this); + + await base.OnInitializedAsync(); + } + + [JSInvokable] + public async Task bsHiddenCollapse() => await OnHidden.InvokeAsync(); + + [JSInvokable] + public async Task bsHideCollapse() => await OnHiding.InvokeAsync(); + + [JSInvokable] + public async Task bsShowCollapse() => await OnShowing.InvokeAsync(); + + [JSInvokable] + public async Task bsShownCollapse() => await OnShown.InvokeAsync(); + + /// + /// Hides a collapsible element. + /// + public async Task HideAsync() => await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.collapse.hide", Id); + + /// + /// Shows a collapsible element. + /// + public async Task ShowAsync() => await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.collapse.show", Id); + + /// + /// Toggles a collapsible element to shown or hidden. + /// + public async Task ToggleAsync() => await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.collapse.toggle", Id); + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the content to be rendered within the component. + /// + [Parameter] + [EditorRequired] + public RenderFragment ChildContent { get; set; } = default!; + + /// + /// Gets or sets the horizontal. + /// + [Parameter] + public bool Horizontal { get; set; } + + /// + /// This event is fired when a collapse element has been hidden from the user (will wait for CSS transitions to complete). + /// + [Parameter] + public EventCallback OnHidden { get; set; } + + /// + /// This event is fired immediately when the hide method has been called. + /// + [Parameter] + public EventCallback OnHiding { get; set; } + + /// + /// This event fires immediately when the show instance method is called. + /// + [Parameter] + public EventCallback OnShowing { get; set; } + + /// + /// This event is fired when a collapse element has been made visible to the user (will wait for CSS transitions to + /// complete). + /// + [Parameter] + public EventCallback OnShown { get; set; } + + /// + /// Gets or sets the parent selector, DOM element. + /// If parent is provided, then all collapsible elements under the specified parent will be closed when this collapsible + /// item is shown. (similar to traditional accordion behavior - this is dependent on the card class). + /// The attribute has to be set on the target collapsible area. + /// + [Parameter] + public object Parent { get; set; } = default!; + + /// + /// Toggles the collapsible element on invocation. + /// + [Parameter] + public bool Toggle { get; set; } = false; + + #endregion +} diff --git a/blazorbootstrap/Components/ConfirmDialog/ConfirmDialog.razor b/blazorbootstrap/Components/ConfirmDialog/ConfirmDialog.razor new file mode 100644 index 000000000..9979dd35f --- /dev/null +++ b/blazorbootstrap/Components/ConfirmDialog/ConfirmDialog.razor @@ -0,0 +1,56 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
+ @if (isVisible) + { + + } +
+ +@if (showBackdrop) +{ + +} diff --git a/blazorbootstrap/Components/ConfirmDialog/ConfirmDialog.razor.cs b/blazorbootstrap/Components/ConfirmDialog/ConfirmDialog.razor.cs new file mode 100644 index 000000000..34f6b169b --- /dev/null +++ b/blazorbootstrap/Components/ConfirmDialog/ConfirmDialog.razor.cs @@ -0,0 +1,136 @@ +namespace BlazorBootstrap; + +public partial class ConfirmDialog : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private Type? childComponent; + + private string? dialogCssClass; + private bool dismissable; + private string? headerCssClass; + + private bool isVisible; + private string? message1; + private string? message2; + private string? modalSize; + private string? noButtonColor; + private string? noButtonText; + private Dictionary? parameters; + private string? scrollable; + + private bool showBackdrop; + + private TaskCompletionSource? taskCompletionSource; + + private string? title; + private string? verticallyCentered; + private string? yesButtonColor; + private string? yesButtonText; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.Modal) + .AddClass(BootstrapClass.ConfirmationModal) + .AddClass(BootstrapClass.ModalFade) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style) + .AddStyle("display:block", showBackdrop) + .AddStyle("display:none", !showBackdrop) + .Build(); + + /// + /// Shows confirm dialog. + /// + /// title for the confirm dialog + /// message1 for the confirmation dialog. + /// options for the confirmation dialog. + /// bool + public Task ShowAsync(string title, string message1, ConfirmDialogOptions? confirmDialogOptions = null) => Show(title, message1, null, null, null, confirmDialogOptions!); + + /// + /// Shows confirm dialog. + /// + /// title for the confirm dialog + /// message1 for the confirmation dialog. + /// message2 for the confirmation dialog. This is optional. + /// options for the confirmation dialog. + /// bool + public Task ShowAsync(string title, string message1, string message2, ConfirmDialogOptions? confirmDialogOptions = null) => Show(title, message1, message2, null, null, confirmDialogOptions!); + + /// + /// Shows confirm dialog. + /// + /// Component + /// + /// + /// + /// bool + public Task ShowAsync(string title, Dictionary? parameters = null, ConfirmDialogOptions? confirmDialogOptions = null) where T : ComponentBase => Show(title, null, null, typeof(T), parameters, confirmDialogOptions!); + + /// + /// Hides confirm dialog. + /// + private void Hide() + { + isVisible = false; + showBackdrop = false; + + StateHasChanged(); + + Task.Run(() => JSRuntime.InvokeVoidAsync("window.blazorBootstrap.confirmDialog.hide", Id)); + } + + private void OnNoClick() + { + Hide(); + taskCompletionSource?.SetResult(false); + } + + private void OnYesClick() + { + Hide(); + taskCompletionSource?.SetResult(true); + } + + private Task Show(string title, string? message1, string? message2, Type? type, Dictionary? parameters, ConfirmDialogOptions confirmDialogOptions) + { + taskCompletionSource = new TaskCompletionSource(); + var task = taskCompletionSource.Task; + + this.title = title; + this.message1 = message1; + this.message2 = message2; + + childComponent = type; + this.parameters = parameters; + + confirmDialogOptions ??= new ConfirmDialogOptions(); + + dialogCssClass = confirmDialogOptions.DialogCssClass; + dismissable = confirmDialogOptions.Dismissable; + headerCssClass = confirmDialogOptions.HeaderCssClass; + scrollable = confirmDialogOptions.IsScrollable ? "modal-dialog-scrollable" : ""; + verticallyCentered = confirmDialogOptions.IsVerticallyCentered ? "modal-dialog-centered" : ""; + noButtonColor = $"{BootstrapClass.Button} {confirmDialogOptions.NoButtonColor.ToButtonColorClass()}"; + noButtonText = confirmDialogOptions.NoButtonText; + modalSize = confirmDialogOptions.Size.ToDialogSizeClass(); + yesButtonColor = $"{BootstrapClass.Button} {confirmDialogOptions.YesButtonColor.ToButtonColorClass()}"; + yesButtonText = confirmDialogOptions.YesButtonText; + + isVisible = true; + showBackdrop = true; + + StateHasChanged(); + + Task.Run(() => JSRuntime.InvokeVoidAsync("window.blazorBootstrap.confirmDialog.show", Id)); + + return task; + } + + #endregion +} diff --git a/blazorbootstrap/Components/Core/BlazorBootstrapComponentBase.cs b/blazorbootstrap/Components/Core/BlazorBootstrapComponentBase.cs new file mode 100644 index 000000000..d5c24c934 --- /dev/null +++ b/blazorbootstrap/Components/Core/BlazorBootstrapComponentBase.cs @@ -0,0 +1,107 @@ +namespace BlazorBootstrap; + +public abstract class BlazorBootstrapComponentBase : ComponentBase, IDisposable, IAsyncDisposable +{ + #region Fields and Constants + + private bool isAsyncDisposed = false; + + private bool isDisposed = false; + + #endregion + + #region Methods + + /// + protected override async Task OnAfterRenderAsync(bool firstRender) + { + IsRenderComplete = true; + + await base.OnAfterRenderAsync(firstRender); + } + + /// + protected override void OnInitialized() + { + Id ??= IdGenerator.GetNextId(); + + base.OnInitialized(); + } + + /// + /// + public void Dispose() + { + Dispose(disposing: true); + GC.SuppressFinalize(this); + } + + /// + /// + public async ValueTask DisposeAsync() + { + await DisposeAsyncCore(true).ConfigureAwait(false); + + Dispose(disposing: false); + GC.SuppressFinalize(this); + } + + protected virtual void Dispose(bool disposing) + { + if (!isDisposed) + { + if (disposing) + { + // cleanup + } + + isDisposed = true; + } + } + + protected virtual ValueTask DisposeAsyncCore(bool disposing) + { + if (!isAsyncDisposed) + { + if (disposing) + { + // cleanup + } + + isAsyncDisposed = true; + } + + return ValueTask.CompletedTask; + } + + ~BlazorBootstrapComponentBase() + { + Dispose(false); + } + + #endregion + + #region Properties, Indexers + + [Parameter(CaptureUnmatchedValues = true)] + public Dictionary AdditionalAttributes { get; set; } = default!; + + [Parameter] + public string? Class { get; set; } + + public ElementReference Element { get; set; } + + [Parameter] + public string? Id { get; set; } + + [Inject] protected IIdGenerator IdGenerator { get; set; } = default!; + + protected bool IsRenderComplete { get; private set; } + + [Inject] protected IJSRuntime JSRuntime { get; set; } = default!; + + [Parameter] + public string? Style { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Components/Dropdown/Dropdown.razor b/blazorbootstrap/Components/Dropdown/Dropdown.razor new file mode 100644 index 000000000..9562542ff --- /dev/null +++ b/blazorbootstrap/Components/Dropdown/Dropdown.razor @@ -0,0 +1,16 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + + + + + + +
+ @ChildContent +
+
+
+
+
+
diff --git a/blazorbootstrap/Components/Dropdown/Dropdown.razor.cs b/blazorbootstrap/Components/Dropdown/Dropdown.razor.cs new file mode 100644 index 000000000..b7d773969 --- /dev/null +++ b/blazorbootstrap/Components/Dropdown/Dropdown.razor.cs @@ -0,0 +1,164 @@ +namespace BlazorBootstrap; + +public partial class Dropdown : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private DotNetObjectReference objRef = default!; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.ButtonGroup) + .AddClass(Direction.ToDropdownDirectionClass()) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + /// + protected override async ValueTask DisposeAsyncCore(bool disposing) + { + if (disposing) + { + try + { + if (IsRenderComplete) + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.dropdown.dispose", Id); + } + catch (JSDisconnectedException) + { + // do nothing + } + + objRef?.Dispose(); + } + + await base.DisposeAsyncCore(disposing); + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.dropdown.initialize", Id, objRef); + + await base.OnAfterRenderAsync(firstRender); + } + + protected override void OnInitialized() + { + objRef ??= DotNetObjectReference.Create(this); + + base.OnInitialized(); + } + + [JSInvokable] + public async Task bsHiddenDropdown() => await OnHidden.InvokeAsync(); + + [JSInvokable] + public async Task bsHideDropdown() => await OnHiding.InvokeAsync(); + + [JSInvokable] + public async Task bsShowDropdown() => await OnShowing.InvokeAsync(); + + [JSInvokable] + public async Task bsShownDropdown() => await OnShown.InvokeAsync(); + + /// + /// Hides the dropdown menu of a given navbar or tabbed navigation. + /// + /// + public async Task HideAsync() => await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.dropdown.hide", Id); + + /// + /// Shows the dropdown menu of a given navbar or tabbed navigation. + /// + /// + public async Task ShowAsync() => await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.dropdown.show", Id); + + /// + /// Toggles the dropdown menu of a given navbar or tabbed navigation. + /// + /// + public async Task ToggleAsync() => await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.dropdown.toggle", Id); + + /// + /// Updates the position of an element’s dropdown. + /// + /// + public async Task UpdateAsync() => await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.dropdown.update", Id); + + #endregion + + #region Properties, Indexers + + /// + /// Enables or disables the auto close. + /// + [Parameter] + public bool AutoClose { get; set; } = true; + + /// + /// Gets or sets the auto close behavior of the dropdown. + /// + [Parameter] + public DropdownAutoCloseBehavior AutoCloseBehavior { get; set; } = DropdownAutoCloseBehavior.Both; + + /// + /// Gets or sets the content to be rendered within the component. + /// + [Parameter] + public RenderFragment ChildContent { get; set; } = default!; + + /// + /// Gets or sets the direction of the dropdown menu. + /// + [Parameter] + public DropdownDirection Direction { get; set; } = DropdownDirection.Dropdown; + + /// + /// Gets or sets whether the dropdown menu is disabled. + /// + [Parameter] + public bool Disabled { get; set; } + + /// + /// This event is fired when an dropdown element has been hidden from the user (will wait for CSS transitions to complete). + /// + [Parameter] + public EventCallback OnHidden { get; set; } + + /// + /// This event is fired immediately when the hide method has been called. + /// + [Parameter] + public EventCallback OnHiding { get; set; } + + /// + /// This event fires immediately when the show instance method is called. + /// + [Parameter] + public EventCallback OnShowing { get; set; } + + /// + /// This event is fired when an dropdown element has been made visible to the user (will wait for CSS transitions to + /// complete). + /// + [Parameter] + public EventCallback OnShown { get; set; } + + /// + /// Gets or sets the size of the . + /// + [Parameter] + public Size Size { get; set; } + + /// + /// Gets or sets the toggle button split behavior. + /// + [Parameter] + public bool Split { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Components/Dropdown/DropdownActionButton.razor b/blazorbootstrap/Components/Dropdown/DropdownActionButton.razor new file mode 100644 index 000000000..1a7287029 --- /dev/null +++ b/blazorbootstrap/Components/Dropdown/DropdownActionButton.razor @@ -0,0 +1,11 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + + diff --git a/blazorbootstrap/Components/Dropdown/DropdownActionButton.razor.cs b/blazorbootstrap/Components/Dropdown/DropdownActionButton.razor.cs new file mode 100644 index 000000000..f3b94cd5b --- /dev/null +++ b/blazorbootstrap/Components/Dropdown/DropdownActionButton.razor.cs @@ -0,0 +1,60 @@ +namespace BlazorBootstrap; + +public partial class DropdownActionButton : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.Button) + .AddClass(Color.ToButtonColorClass(), Color != ButtonColor.None) + .AddClass(Size.ToButtonSizeClass(), Size != Size.None) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + protected override void OnInitialized() + { + AdditionalAttributes ??= new Dictionary(); + + if (!AdditionalAttributes.TryGetValue("type", out _)) + AdditionalAttributes.Add("type", "button"); + + base.OnInitialized(); + } + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the content to be rendered within the component. + /// + [Parameter] + public RenderFragment ChildContent { get; set; } = default!; + + /// + /// Gets or sets the button color. + /// + [Parameter] + public ButtonColor Color { get; set; } = ButtonColor.None; + + /// + /// Gets or sets the disabled. + /// + [CascadingParameter(Name = "Disabled")] + public bool Disabled { get; set; } + + /// + /// Gets or sets the size of the . + /// + [CascadingParameter(Name = "Size")] + public Size Size { get; set; } = Size.None; + + /// + /// If defined, indicates that its element can be focused and can participates in sequential keyboard navigation. + /// + [Parameter] + public int? TabIndex { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Components/Dropdown/DropdownDivider.razor b/blazorbootstrap/Components/Dropdown/DropdownDivider.razor new file mode 100644 index 000000000..87d0fe85f --- /dev/null +++ b/blazorbootstrap/Components/Dropdown/DropdownDivider.razor @@ -0,0 +1,6 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
  • +
    +
  • diff --git a/blazorbootstrap/Components/Dropdown/DropdownDivider.razor.cs b/blazorbootstrap/Components/Dropdown/DropdownDivider.razor.cs new file mode 100644 index 000000000..5f558e591 --- /dev/null +++ b/blazorbootstrap/Components/Dropdown/DropdownDivider.razor.cs @@ -0,0 +1,14 @@ +namespace BlazorBootstrap; + +public partial class DropdownDivider : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.DropdownDivider) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + #endregion +} diff --git a/blazorbootstrap/Components/Dropdown/DropdownHeader.razor b/blazorbootstrap/Components/Dropdown/DropdownHeader.razor new file mode 100644 index 000000000..3f5635e1f --- /dev/null +++ b/blazorbootstrap/Components/Dropdown/DropdownHeader.razor @@ -0,0 +1,8 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
  • +
    + @ChildContent +
    +
  • diff --git a/blazorbootstrap/Components/Dropdown/DropdownHeader.razor.cs b/blazorbootstrap/Components/Dropdown/DropdownHeader.razor.cs new file mode 100644 index 000000000..c7e37a20b --- /dev/null +++ b/blazorbootstrap/Components/Dropdown/DropdownHeader.razor.cs @@ -0,0 +1,24 @@ +namespace BlazorBootstrap; + +public partial class DropdownHeader : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.DropdownHeader) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the content to be rendered within the component. + /// + [Parameter] + public RenderFragment ChildContent { get; set; } = default!; + + #endregion +} diff --git a/blazorbootstrap/Components/Dropdown/DropdownItem.razor b/blazorbootstrap/Components/Dropdown/DropdownItem.razor new file mode 100644 index 000000000..10d6979ff --- /dev/null +++ b/blazorbootstrap/Components/Dropdown/DropdownItem.razor @@ -0,0 +1,28 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
  • + @if (Type == ButtonType.Link) + { + + @ChildContent + + } + else + { + + } +
  • diff --git a/blazorbootstrap/Components/Dropdown/DropdownItem.razor.cs b/blazorbootstrap/Components/Dropdown/DropdownItem.razor.cs new file mode 100644 index 000000000..b75795db5 --- /dev/null +++ b/blazorbootstrap/Components/Dropdown/DropdownItem.razor.cs @@ -0,0 +1,219 @@ +namespace BlazorBootstrap; + +public partial class DropdownItem : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private bool isFirstRenderComplete = false; + + private bool previousActive; + + private bool previousDisabled; + + private int? previousTabIndex; + + private Target previousTarget; + + private ButtonType previousType; + + private bool setButtonAttributesAgain = false; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.DropdownItem) + .AddClass(BootstrapClass.Active, Active) + .AddClass(BootstrapClass.Disabled, Disabled) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + protected override void OnAfterRender(bool firstRender) + { + if (firstRender) + isFirstRenderComplete = true; + + base.OnAfterRender(firstRender); + } + + protected override void OnInitialized() + { + AdditionalAttributes ??= new Dictionary(); + + previousActive = Active; + previousDisabled = Disabled; + previousTabIndex = TabIndex; + previousTarget = Target; + previousType = Type; + + SetAttributes(); + + base.OnInitialized(); + } + + protected override void OnParametersSet() + { + if (isFirstRenderComplete) + { + if (previousActive != Active) + { + previousActive = Active; + setButtonAttributesAgain = true; + } + + if (previousDisabled != Disabled) + { + previousDisabled = Disabled; + setButtonAttributesAgain = true; + } + + if (previousTabIndex != TabIndex) + { + previousTabIndex = TabIndex; + setButtonAttributesAgain = true; + } + + if (previousTarget != Target) + { + previousTarget = Target; + setButtonAttributesAgain = true; + } + + if (previousType != Type) + { + previousType = Type; + setButtonAttributesAgain = true; + } + + if (setButtonAttributesAgain) + { + setButtonAttributesAgain = false; + SetAttributes(); + } + } + } + + private void SetAttributes() + { + AdditionalAttributes ??= new Dictionary(); + + if (Active && !AdditionalAttributes.TryGetValue("aria-current", out _)) + AdditionalAttributes.Add("aria-current", "true"); + else if (!Active && AdditionalAttributes.TryGetValue("aria-current", out _)) + AdditionalAttributes.Remove("aria-current"); + + // 'a' tag + if (Type == ButtonType.Link) + { + if (!AdditionalAttributes.TryGetValue("role", out _)) + AdditionalAttributes.Add("role", "button"); + + if (!AdditionalAttributes.TryGetValue("href", out _)) + AdditionalAttributes.Add("href", To!); + + if (Target != Target.None) + if (!AdditionalAttributes.TryGetValue("target", out _)) + AdditionalAttributes.Add("target", Target.ToTargetString()!); + + if (Disabled) + { + if (AdditionalAttributes.TryGetValue("aria-disabled", out _)) + AdditionalAttributes["aria-disabled"] = "true"; + else + AdditionalAttributes.Add("aria-disabled", "true"); + + if (AdditionalAttributes.TryGetValue("tabindex", out _)) + AdditionalAttributes["tabindex"] = -1; + else + AdditionalAttributes.Add("tabindex", -1); + } + else + { + if (AdditionalAttributes.TryGetValue("aria-disabled", out _)) + AdditionalAttributes.Remove("aria-disabled"); + + if (TabIndex is not null && !AdditionalAttributes.TryGetValue("tabindex", out _)) + AdditionalAttributes.Add("tabindex", TabIndex); + else if (TabIndex is null && AdditionalAttributes.TryGetValue("tabindex", out _)) + AdditionalAttributes.Remove("tabindex"); + } + } + else // button, submit + { + if (AdditionalAttributes.TryGetValue("role", out _)) + AdditionalAttributes.Remove("role"); + + if (AdditionalAttributes.TryGetValue("href", out _)) + AdditionalAttributes.Remove("href"); + + if (AdditionalAttributes.TryGetValue("target", out _)) + AdditionalAttributes.Remove("target"); + + if (AdditionalAttributes.TryGetValue("aria-disabled", out _)) + AdditionalAttributes.Remove("aria-disabled"); + + // NOTE: This is handled in .razor page - #182 + //if (this.Disabled && !Attributes.TryGetValue("disabled", out _)) + // Attributes.Add("disabled", "disabled"); + //else if (!this.Disabled && Attributes.TryGetValue("disabled", out _)) + // Attributes.Remove("disabled"); + + if (TabIndex is not null && !AdditionalAttributes.TryGetValue("tabindex", out _)) + AdditionalAttributes.Add("tabindex", TabIndex); + else if (TabIndex is null && AdditionalAttributes.TryGetValue("tabindex", out _)) + AdditionalAttributes.Remove("tabindex"); + } + } + + #endregion + + #region Properties, Indexers + + /// + /// When set to 'true', places the component in the active state with active styling. + /// + [Parameter] + public bool Active { get; set; } + + private string buttonTypeString => Type.ToButtonTypeString()!; + + /// + /// Gets or sets the content to be rendered within the component. + /// + [Parameter] + public RenderFragment ChildContent { get; set; } = default!; + + /// + /// When set to 'true', disables the component's functionality and places it in a disabled state. + /// + [Parameter] + public bool Disabled { get; set; } + + /// + /// If defined, indicates that its element can be focused and can participates in sequential keyboard navigation. + /// + [Parameter] + public int? TabIndex { get; set; } + + /// + /// The target attribute specifies where to open the linked document for a . + /// + [Parameter] + public Target Target { get; set; } = Target.None; + + /// + /// Denotes the target route of the button. + /// + [Parameter] + public string? To { get; set; } + + /// + /// Defines the button type. + /// + [Parameter] + public ButtonType Type { get; set; } = ButtonType.Button; + + #endregion +} diff --git a/blazorbootstrap/Components/Dropdown/DropdownMenu.razor b/blazorbootstrap/Components/Dropdown/DropdownMenu.razor new file mode 100644 index 000000000..536d0d7c6 --- /dev/null +++ b/blazorbootstrap/Components/Dropdown/DropdownMenu.razor @@ -0,0 +1,6 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
      + @ChildContent +
    diff --git a/blazorbootstrap/Components/Dropdown/DropdownMenu.razor.cs b/blazorbootstrap/Components/Dropdown/DropdownMenu.razor.cs new file mode 100644 index 000000000..6b26335cc --- /dev/null +++ b/blazorbootstrap/Components/Dropdown/DropdownMenu.razor.cs @@ -0,0 +1,31 @@ +namespace BlazorBootstrap; + +public partial class DropdownMenu : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.DropdownMenu) + .AddClass(Position.ToDropdownMenuPositionClass()) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the content to be rendered within the component. + /// + [Parameter] + public RenderFragment ChildContent { get; set; } = default!; + + /// + /// Gets or sets the dropdown menu position. + /// + [Parameter] + public DropdownMenuPosition Position { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Components/Dropdown/DropdownToggleButton.razor b/blazorbootstrap/Components/Dropdown/DropdownToggleButton.razor new file mode 100644 index 000000000..1a7287029 --- /dev/null +++ b/blazorbootstrap/Components/Dropdown/DropdownToggleButton.razor @@ -0,0 +1,11 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + + diff --git a/blazorbootstrap/Components/Dropdown/DropdownToggleButton.razor.cs b/blazorbootstrap/Components/Dropdown/DropdownToggleButton.razor.cs new file mode 100644 index 000000000..abae7e70f --- /dev/null +++ b/blazorbootstrap/Components/Dropdown/DropdownToggleButton.razor.cs @@ -0,0 +1,99 @@ +namespace BlazorBootstrap; + +public partial class DropdownToggleButton : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.Button) + .AddClass(Color.ToButtonColorClass(), Color != ButtonColor.None) + .AddClass(Size.ToButtonSizeClass(), Size != Size.None) + .AddClass(BootstrapClass.DropdownToggle) + .AddClass(BootstrapClass.DropdownToggleSplit, Split) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + protected override void OnInitialized() + { + AdditionalAttributes ??= new Dictionary(); + + if (!AdditionalAttributes.TryGetValue("type", out _)) + AdditionalAttributes.Add("type", "button"); + + if (!AdditionalAttributes.TryGetValue("data-bs-toggle", out _)) + AdditionalAttributes.Add("data-bs-toggle", "dropdown"); + + if (!AdditionalAttributes.TryGetValue("aria-expanded", out _)) + AdditionalAttributes.Add("aria-expanded", "false"); + + string? autoClose; + + if (AutoClose && AutoCloseBehavior == DropdownAutoCloseBehavior.Inside) + autoClose = "inside"; + else if (AutoClose && AutoCloseBehavior == DropdownAutoCloseBehavior.Outside) + autoClose = "outside"; + else if (AutoClose && AutoCloseBehavior == DropdownAutoCloseBehavior.Both) + autoClose = "true"; + else + autoClose = "false"; + + if (!AdditionalAttributes.TryGetValue("data-bs-auto-close", out _)) + AdditionalAttributes.Add("data-bs-auto-close", autoClose); + else + AdditionalAttributes["data-bs-auto-close"] = autoClose; + + base.OnInitialized(); + } + + #endregion + + #region Properties, Indexers + + /// + /// Enables or disables the auto close. + /// + [CascadingParameter(Name = "AutoClose")] + public bool AutoClose { get; set; } + + /// + /// Gets or sets the auto close behavior of the dropdown. + /// + [CascadingParameter(Name = "AutoCloseBehavior")] + public DropdownAutoCloseBehavior AutoCloseBehavior { get; set; } + + /// + /// Gets or sets the content to be rendered within the component. + /// + [Parameter] + public RenderFragment ChildContent { get; set; } = default!; + + /// + /// Gets or sets the button color. + /// + [Parameter] + public ButtonColor Color { get; set; } = ButtonColor.None; + + /// + /// Gets or sets the disabled. + /// + [CascadingParameter(Name = "Disabled")] + public bool Disabled { get; set; } + + /// + /// Gets or sets the size of the . + /// + [CascadingParameter(Name = "Size")] + public Size Size { get; set; } = Size.None; + + [CascadingParameter(Name = "Split")] + public bool Split { get; set; } + + /// + /// If defined, indicates that its element can be focused and can participates in sequential keyboard navigation. + /// + [Parameter] + public int? TabIndex { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Components/Form/AutoComplete/AutoComplete.razor b/blazorbootstrap/Components/Form/AutoComplete/AutoComplete.razor new file mode 100644 index 000000000..40cc8140d --- /dev/null +++ b/blazorbootstrap/Components/Form/AutoComplete/AutoComplete.razor @@ -0,0 +1,50 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase +@typeparam TItem + +
    +
    + + + @if (inputHasValue) + { + + } + +
    +
    diff --git a/blazorbootstrap/Components/Form/AutoComplete/AutoComplete.razor.cs b/blazorbootstrap/Components/Form/AutoComplete/AutoComplete.razor.cs new file mode 100644 index 000000000..a31ab5819 --- /dev/null +++ b/blazorbootstrap/Components/Form/AutoComplete/AutoComplete.razor.cs @@ -0,0 +1,389 @@ +namespace BlazorBootstrap; + +public partial class AutoComplete : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private CancellationTokenSource cancellationTokenSource = default!; + private Button closeButton = default!; + + private FieldIdentifier fieldIdentifier; + + private bool inputHasValue; + private bool isDropdownShown; + private IEnumerable? items = null; + private ElementReference list; // ul element reference + + private DotNetObjectReference> objRef = default!; + private bool searchInProgress; + private int selectedIndex = -1; + private TItem? selectedItem; + private int totalCount; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.FormControl) + .AddClass(Size.ToAutoCompleteSizeClass()) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + /// + protected override async ValueTask DisposeAsyncCore(bool disposing) + { + if (disposing) + { + cancellationTokenSource?.Dispose(); + try + { + if (IsRenderComplete) + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.autocomplete.dispose", Element); // NOTE: Always pass ElementRef + } + catch (JSDisconnectedException) + { + // do nothing + } + + objRef?.Dispose(); + } + + await base.DisposeAsyncCore(disposing); + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.autocomplete.initialize", Element, objRef); + + await base.OnAfterRenderAsync(firstRender); + } + + protected override async Task OnInitializedAsync() + { + objRef ??= DotNetObjectReference.Create(this); + + AdditionalAttributes ??= new Dictionary(); + + fieldIdentifier = FieldIdentifier.Create(ValueExpression); + + // check the default value is assigned. + if (Value is not null && Value.Length > 0) + SetInputHasValue(); + + await base.OnInitializedAsync(); + } + + [JSInvokable] + public void bsHiddenAutocomplete() + { + if (isDropdownShown) + { + isDropdownShown = false; + + if (AdditionalAttributes is not null && AdditionalAttributes.TryGetValue(StringConstants.DataBootstrapToggle, out _)) + AdditionalAttributes.Remove(StringConstants.DataBootstrapToggle); + + StateHasChanged(); + } + } + + [JSInvokable] + public void bsHideAutocomplete() { } + + [JSInvokable] + public void bsShowAutocomplete() { } + + [JSInvokable] + public void bsShownAutocomplete() { } + + /// + /// Disables autocomplete. + /// + public void Disable() => Disabled = true; + + /// + /// Enables autocomplete. + /// + public void Enable() => Disabled = false; + + /// + /// Refresh the autocomplete data. + /// + /// Task + public async Task RefreshDataAsync() => await FilterDataAsync(); + + /// + /// Resets the autocomplete selection. + /// + public async Task ResetAsync() => await ClearInputTextAsync(); + + /// + /// Clears the input test value. + /// + private async Task ClearInputTextAsync() + { + selectedItem = default; + selectedIndex = -1; + items = Enumerable.Empty(); + Value = string.Empty; + await ValueChanged.InvokeAsync(Value); + + await HideAsync(); + + SetInputHasValue(); + + EditContext?.NotifyFieldChanged(fieldIdentifier); + + if (OnChanged.HasDelegate) + await OnChanged.InvokeAsync(default); + + await Element.FocusAsync(); + } + + private async Task FilterDataAsync(CancellationToken cancellationToken = default) + { + var searchKey = Value; + + if (string.IsNullOrWhiteSpace(searchKey)) + return; + + var request = new AutoCompleteDataProviderRequest { Filter = new FilterItem(PropertyName, searchKey, GetFilterOperator(), StringComparison), CancellationToken = cancellationToken }; + + if (DataProvider != null) + { + var result = await DataProvider.Invoke(request); + + if (result is not null) + { + items = result.Data; + totalCount = result.TotalCount ?? result.Data!.Count(); + } + else + { + items = Enumerable.Empty(); + totalCount = 0; + } + } + } + + /// + /// Get equivalent filter operator. + /// + /// FilterOperator + private FilterOperator GetFilterOperator() => + StringFilterOperator switch + { + StringFilterOperator.Equals => FilterOperator.Equals, + StringFilterOperator.Contains => FilterOperator.Contains, + StringFilterOperator.StartsWith => FilterOperator.StartsWith, + StringFilterOperator.EndsWith => FilterOperator.EndsWith, + _ => FilterOperator.Contains + }; + + private string? GetPropertyValue(TItem item) + { + if (string.IsNullOrWhiteSpace(PropertyName)) + return string.Empty; + + var propertyInfo = typeof(TItem).GetProperty(PropertyName); + + return propertyInfo?.GetValue(item)?.ToString(); + } + + /// + /// Hides autocomplete dropdown. + /// + private async Task HideAsync() + { + isDropdownShown = false; + + if (AdditionalAttributes is not null && AdditionalAttributes.TryGetValue(StringConstants.DataBootstrapToggle, out _)) + AdditionalAttributes.Remove(StringConstants.DataBootstrapToggle); + + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.autocomplete.hide", Element); + } + + private async Task OnInputChangedAsync(ChangeEventArgs args) + { + searchInProgress = true; + + selectedIndex = -1; + Value = args?.Value?.ToString()!; + + SetInputHasValue(); + + if (inputHasValue) + await ShowAsync(); + else + await HideAsync(); + + closeButton?.ShowLoading(); + + if (cancellationTokenSource is not null + && !cancellationTokenSource.IsCancellationRequested) + { + cancellationTokenSource.Cancel(); + cancellationTokenSource.Dispose(); + } + + cancellationTokenSource = new CancellationTokenSource(); + + var token = cancellationTokenSource.Token; + await Task.Delay(300, token); // 300ms timeout for the debouncing + await FilterDataAsync(token); + + closeButton?.HideLoading(); + + searchInProgress = false; + } + + private async Task OnItemSelectedAsync(TItem item) + { + selectedItem = item; + selectedIndex = -1; + items = Enumerable.Empty(); + Value = GetPropertyValue(item)!; + await ValueChanged.InvokeAsync(Value); + + await HideAsync(); + + SetInputHasValue(); + + EditContext?.NotifyFieldChanged(fieldIdentifier); + + if (OnChanged.HasDelegate) + await OnChanged.InvokeAsync(item); + } + + private async Task OnKeyDownAsync(KeyboardEventArgs args) + { + var key = args.Code is not null ? args.Code : args.Key; + + if (key is "ArrowDown" or "ArrowUp" or "Home" or "End") + selectedIndex = await JSRuntime.InvokeAsync("window.blazorBootstrap.autocomplete.focusListItem", list, key, selectedIndex); + else if (key == "Enter") + if (selectedIndex >= 0 && selectedIndex <= items!.Count() - 1) + await OnItemSelectedAsync(items!.ElementAt(selectedIndex)); + // TODO: check anything needs to be handled here + } + + /// + /// Checks whether the input has value. + /// + private void SetInputHasValue() => inputHasValue = Value is not null && Value.Length > 0; + + /// + /// Shows autocomplete dropdown. + /// + private async Task ShowAsync() + { + isDropdownShown = true; + + if (AdditionalAttributes is not null && !AdditionalAttributes.TryGetValue(StringConstants.DataBootstrapToggle, out _)) + AdditionalAttributes.Add(StringConstants.DataBootstrapToggle, "dropdown"); + + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.autocomplete.show", Element); + } + + #endregion + + #region Properties, Indexers + + /// + /// DataProvider is for items to render. + /// The provider should always return an instance of 'AutoCompleteDataProviderResult', and 'null' is not allowed. + /// + [Parameter] + [EditorRequired] + public AutoCompleteDataProviderDelegate DataProvider { get; set; } = null!; + + /// + /// Gets or sets the disabled. + /// + [Parameter] + public bool Disabled { get; set; } + + [CascadingParameter] private EditContext EditContext { get; set; } = default!; + + /// + /// Gets or sets the empty text. + /// + [Parameter] + public string EmptyText { get; set; } = "No records found."; + + private string fieldCssClasses => EditContext?.FieldCssClass(fieldIdentifier) ?? ""; + + /// + /// Gets all Style attributes for the autocomplete delete button. + /// + private string DeleteButtonStyle => Size switch + { + AutoCompleteSize.Small => "z-index: 100; top: -2px;", + AutoCompleteSize.Default => "z-index: 100; top: 2px;", + AutoCompleteSize.Large => "z-index: 100; top: 7px;", + _ => "z-index: 100;", + }; + + /// + /// Gets or sets the loading text. + /// + [Parameter] + public string LoadingText { get; set; } = "Loading..."; + + /// + /// This event fires immediately when the autocomplete selection changes by the user. + /// + [Parameter] + public EventCallback OnChanged { get; set; } + + /// + /// Gets or sets the placeholder. + /// + [Parameter] + public string? Placeholder { get; set; } + + /// + /// Gets or sets the property name. + /// + [Parameter] + [EditorRequired] + public string PropertyName { get; set; } = null!; + + /// + /// Gets selected item. + /// + public TItem SelectedItem => selectedItem = default!; + + /// + /// Gets or sets the autocomplete size. + /// + [Parameter] + public AutoCompleteSize Size { get; set; } + + /// + /// Gets or sets the StringComparison. + /// + [Parameter] + public StringComparison StringComparison { get; set; } = StringComparison.OrdinalIgnoreCase; + + /// + /// Gets or sets the string filter operator. + /// + [Parameter] + public StringFilterOperator StringFilterOperator { get; set; } = StringFilterOperator.Contains; + + [Parameter] public string Value { get; set; } = default!; + + /// + /// This is event fires on every user keystroke that changes the textbox value. + /// + [Parameter] + public EventCallback ValueChanged { get; set; } + + [Parameter] public Expression> ValueExpression { get; set; } = default!; + + #endregion +} diff --git a/blazorbootstrap/Components/Form/AutoComplete/AutoComplete.razor.css b/blazorbootstrap/Components/Form/AutoComplete/AutoComplete.razor.css new file mode 100644 index 000000000..4ec81ffee --- /dev/null +++ b/blazorbootstrap/Components/Form/AutoComplete/AutoComplete.razor.css @@ -0,0 +1,31 @@ +.autocomplete { +} + + .autocomplete > .input-group > input { + border-top-right-radius: 0.25rem !important; + border-bottom-right-radius: 0.25rem !important; + padding-right: 2.75rem !important; + } + +.autocomplete-list { + max-height: 200px; + overflow-y: auto; + width: 100%; +} + +.autocomplete-item:focus, .autocomplete-item:hover { + color: #1e2125; + background-color: #e9ecef; + cursor: pointer; +} + + +.dropdown-item:focus, .dropdown-item:hover { + cursor: pointer; +} + +.dropdown-item-highlight { + color: #1e2125; + background-color: #e9ecef; + cursor: pointer; +} \ No newline at end of file diff --git a/blazorbootstrap/Components/Form/CurrencyInput/CurrencyInput.razor b/blazorbootstrap/Components/Form/CurrencyInput/CurrencyInput.razor new file mode 100644 index 000000000..1a2dadbb3 --- /dev/null +++ b/blazorbootstrap/Components/Form/CurrencyInput/CurrencyInput.razor @@ -0,0 +1,17 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase +@typeparam TValue + + diff --git a/blazorbootstrap/Components/Form/CurrencyInput/CurrencyInput.razor.cs b/blazorbootstrap/Components/Form/CurrencyInput/CurrencyInput.razor.cs new file mode 100644 index 000000000..b57263295 --- /dev/null +++ b/blazorbootstrap/Components/Form/CurrencyInput/CurrencyInput.razor.cs @@ -0,0 +1,511 @@ +namespace BlazorBootstrap; + +public partial class CurrencyInput : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private CultureInfo cultureInfo = default!; + + private FieldIdentifier fieldIdentifier; + + private string formattedValue = default!; + + private bool isFirstRenderComplete = false; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.FormControl) + .AddClass(TextAlignment.ToTextAlignmentClass(), TextAlignment != Alignment.None) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.currencyInput.initialize", Id, isFloatingNumber(), AllowNegativeNumbers, cultureInfo.NumberFormat.CurrencyDecimalSeparator); + + var currentValue = Value; // object + + if (currentValue is null || !TryParseValue(currentValue, out var value)) + Value = default!; + else if (EnableMinMax && Min is not null && IsLeftGreaterThanRight(Min, Value)) // value < min + Value = Min; + else if (EnableMinMax && Max is not null && IsLeftGreaterThanRight(Value, Max)) // value > max + Value = Max; + else + Value = value; + + await ValueChanged.InvokeAsync(Value); + + await SetFormattedValueAsync(); + + await InvokeAsync(StateHasChanged); + + isFirstRenderComplete = true; + } + + await base.OnAfterRenderAsync(firstRender); + } + + protected override async Task OnInitializedAsync() + { + if (IsLeftGreaterThanRight(Min, Max)) + throw new InvalidOperationException("The Min parameter value is greater than the Max parameter value."); + + if (!(typeof(TValue) == typeof(sbyte) + || typeof(TValue) == typeof(sbyte?) + || typeof(TValue) == typeof(short) + || typeof(TValue) == typeof(short?) + || typeof(TValue) == typeof(int) + || typeof(TValue) == typeof(int?) + || typeof(TValue) == typeof(long) + || typeof(TValue) == typeof(long?) + || typeof(TValue) == typeof(float) + || typeof(TValue) == typeof(float?) + || typeof(TValue) == typeof(double) + || typeof(TValue) == typeof(double?) + || typeof(TValue) == typeof(decimal) + || typeof(TValue) == typeof(decimal?) + )) + throw new InvalidOperationException($"{typeof(TValue)} is not supported."); + + AdditionalAttributes ??= new Dictionary(); + + fieldIdentifier = FieldIdentifier.Create(ValueExpression); + + try + { + cultureInfo = new CultureInfo(Locale); + } + catch (CultureNotFoundException) + { + cultureInfo = new CultureInfo("en-US"); + } + + await base.OnInitializedAsync(); + } + + protected override async Task OnParametersSetAsync() + { + if (isFirstRenderComplete) await SetFormattedValueAsync(); + + await base.OnParametersSetAsync(); + } + + /// + /// Disables currency input. + /// + public void Disable() => Disabled = true; + + /// + /// Enables currency input. + /// + public void Enable() => Disabled = false; + + private string ExtractValue(object value, CultureInfo cultureInfo) + { + if (value is null || string.IsNullOrWhiteSpace(value.ToString())) + return string.Empty; + + var validChars = "0123456789"; + + if (isFloatingNumber()) + validChars = string.Concat(validChars, "."); + + if (AllowNegativeNumbers) + validChars = string.Concat(validChars, "-"); + + return string.Concat(value?.ToString()?.Replace(",", ".")?.Where(c => validChars.Contains(c))!); + } + + private bool isFloatingNumber() => + typeof(TValue) == typeof(float) + || typeof(TValue) == typeof(float?) + || typeof(TValue) == typeof(double) + || typeof(TValue) == typeof(double?) + || typeof(TValue) == typeof(decimal) + || typeof(TValue) == typeof(decimal?); + + /// + /// Determines where the left input is greater than the right input. + /// + /// + /// + /// bool + private bool IsLeftGreaterThanRight(TValue left, TValue right) + { + // sbyte + if (typeof(TValue) == typeof(sbyte)) + { + var l = Convert.ToSByte(left); + var r = Convert.ToSByte(right); + + return l > r; + } + // sbyte? + + if (typeof(TValue) == typeof(sbyte?)) + { + var l = left as sbyte?; + var r = right as sbyte?; + + return l.HasValue && r.HasValue && l > r; + } + // short / int16 + + if (typeof(TValue) == typeof(short)) + { + var l = Convert.ToInt16(left); + var r = Convert.ToInt16(right); + + return l > r; + } + // short? / int16? + + if (typeof(TValue) == typeof(short?)) + { + var l = left as short?; + var r = right as short?; + + return l.HasValue && r.HasValue && l > r; + } + // int + + if (typeof(TValue) == typeof(int)) + { + var l = Convert.ToInt32(left); + var r = Convert.ToInt32(right); + + return l > r; + } + // int? + + if (typeof(TValue) == typeof(int?)) + { + var l = left as int?; + var r = right as int?; + + return l.HasValue && r.HasValue && l > r; + } + // long + + if (typeof(TValue) == typeof(long)) + { + var l = Convert.ToInt64(left); + var r = Convert.ToInt64(right); + + return l > r; + } + // long? + + if (typeof(TValue) == typeof(long?)) + { + var l = left as long?; + var r = right as long?; + + return l.HasValue && r.HasValue && l > r; + } + // float / single + + if (typeof(TValue) == typeof(float)) + { + var l = Convert.ToSingle(left); + var r = Convert.ToSingle(right); + + return l > r; + } + // float? / single? + + if (typeof(TValue) == typeof(float?)) + { + var l = left as float?; + var r = right as float?; + + return l.HasValue && r.HasValue && l > r; + } + // double + + if (typeof(TValue) == typeof(double)) + { + var l = Convert.ToDouble(left); + var r = Convert.ToDouble(right); + + return l > r; + } + // double? + + if (typeof(TValue) == typeof(double?)) + { + var l = left as double?; + var r = right as double?; + + return l.HasValue && r.HasValue && l > r; + } + // decimal + + if (typeof(TValue) == typeof(decimal)) + { + var l = Convert.ToDecimal(left); + var r = Convert.ToDecimal(right); + + return l > r; + } + // decimal? + + if (typeof(TValue) == typeof(decimal?)) + { + var l = left as decimal?; + var r = right as decimal?; + + return l.HasValue && r.HasValue && l > r; + } + + return false; + } + + private async Task OnChange(ChangeEventArgs e) + { + var newValue = ExtractValue(e.Value!, cultureInfo); + + if (newValue is null || !TryParseValue(newValue, out var value)) + Value = default!; + else if (EnableMinMax && Min is not null && IsLeftGreaterThanRight(Min, value)) // value < min + Value = Min; + else if (EnableMinMax && Max is not null && IsLeftGreaterThanRight(value, Max)) // value > max + Value = Max; + else + Value = value; + + await ValueChanged.InvokeAsync(Value); + + EditContext?.NotifyFieldChanged(fieldIdentifier); + + await SetFormattedValueAsync(); + } + + private async Task SetFormattedValueAsync() + { + var options = new CurrencyFormatOptions(); + + if (!HideCurrencySymbol) + { + options.Style = "currency"; + options.Currency = new RegionInfo(cultureInfo.Name).ISOCurrencySymbol; + } + else + { + options.Style = "decimal"; + options.Currency = null; + } + + options.CurrencySign = CurrencySign == CurrencySign.Accounting ? "accounting" : "standard"; + + options.MinimumIntegerDigits = MinimumIntegerDigits; + + if (isFloatingNumber()) + { + if (MinimumFractionDigits.HasValue) + options.MinimumFractionDigits = MinimumFractionDigits.Value; + + if (MaximumFractionDigits.HasValue) + options.MaximumFractionDigits = MaximumFractionDigits.Value; + } + else + { + options.MinimumFractionDigits = 0; + options.MaximumFractionDigits = 0; + } + + formattedValue = await JSRuntime.InvokeAsync("window.blazorBootstrap.currencyInput.getFormattedValue", Value is null ? "" : Value, Locale, options); + } + + private bool TryParseValue(object value, out TValue newValue) + { + try + { + // sbyte? / sbyte + if (typeof(TValue) == typeof(sbyte?) || typeof(TValue) == typeof(sbyte)) + { + newValue = (TValue)Convert.ChangeType(value, typeof(sbyte), CultureInfo.InvariantCulture); + + return true; + } + // short? / short + + if (typeof(TValue) == typeof(short?) || typeof(TValue) == typeof(short)) + { + newValue = (TValue)Convert.ChangeType(value, typeof(short), CultureInfo.InvariantCulture); + + return true; + } + // int? / int + + if (typeof(TValue) == typeof(int?) || typeof(TValue) == typeof(int)) + { + newValue = (TValue)Convert.ChangeType(value, typeof(int), CultureInfo.InvariantCulture); + + return true; + } + // long? / long + + if (typeof(TValue) == typeof(long?) || typeof(TValue) == typeof(long)) + { + newValue = (TValue)Convert.ChangeType(value, typeof(long), CultureInfo.InvariantCulture); + + return true; + } + // float? / float + + if (typeof(TValue) == typeof(float?) || typeof(TValue) == typeof(float)) + { + newValue = (TValue)Convert.ChangeType(value, typeof(float), CultureInfo.InvariantCulture); + + return true; + } + // double? / double + + if (typeof(TValue) == typeof(double?) || typeof(TValue) == typeof(double)) + { + newValue = (TValue)Convert.ChangeType(value, typeof(double), CultureInfo.InvariantCulture); + + return true; + } + // decimal? / decimal + + if (typeof(TValue) == typeof(decimal?) || typeof(TValue) == typeof(decimal)) + { + newValue = (TValue)Convert.ChangeType(value, typeof(decimal), CultureInfo.InvariantCulture); + + return true; + } + + newValue = default!; + + return false; + } + catch (Exception ex) + { + Console.WriteLine($"exception: {ex.Message}"); + newValue = default!; + + return false; + } + } + + #endregion + + #region Properties, Indexers + + /// + /// Allows negative numbers. By default, negative numbers are not allowed. + /// + [Parameter] + public bool AllowNegativeNumbers { get; set; } + + private string autoComplete => AutoComplete ? "true" : "false"; + + /// + /// Indicates whether the NumberInput can complete the values automatically by the browser. + /// + [Parameter] + public bool AutoComplete { get; set; } + + [Parameter] public CurrencySign CurrencySign { get; set; } + + /// + /// Gets or sets the disabled. + /// + [Parameter] + public bool Disabled { get; set; } + + [CascadingParameter] private EditContext EditContext { get; set; } = default!; + + /// + /// Determines whether to restrict the user input to Min and Max range. + /// If true, restricts the user input between the Min and Max range. Else accepts the user input. + /// + [Parameter] + public bool EnableMinMax { get; set; } + + private string fieldCssClasses => EditContext?.FieldCssClass(fieldIdentifier) ?? ""; + + /// + /// Determines whether to hide the currency symbol are not. + /// + [Parameter] + public bool HideCurrencySymbol { get; set; } + + /// + /// Gets or sets the locale. Default locale is 'en-US'. + /// + [Parameter] + //[EditorRequired] + public string Locale { get; set; } = "en-US"; + + /// + /// Gets or sets the max. + /// Max ignored if EnableMinMax="false". + /// + [Parameter] + public TValue Max { get; set; } = default!; + + /// + /// The maximum number of fraction digits to use. + /// + [Parameter] + public byte? MaximumFractionDigits { get; set; } + + /// + /// Gets or sets the min. + /// Min ignored if EnableMinMax="false". + /// + [Parameter] + public TValue Min { get; set; } = default!; + + /// + /// The minimum number of fraction digits to use. + /// + [Parameter] + public byte? MinimumFractionDigits { get; set; } + + /// + /// The minimum number of integer digits to use. A value with a smaller number of integer digits than this number will be + /// left-padded with zeros (to the specified length) when formatted. + /// The default is 1. + /// + [Parameter] + public byte MinimumIntegerDigits { get; set; } = 1; + + /// + /// Gets or sets the placeholder. + /// + [Parameter] + public string? Placeholder { get; set; } + + /// + /// Gets or sets the text alignment. + /// + [Parameter] + public Alignment TextAlignment { get; set; } + + /// + /// Gets or sets the value. + /// + [Parameter] + public TValue Value { get; set; } = default!; + + /// + /// This event fired on every user keystroke that changes the CurrencyInput value. + /// + [Parameter] + public EventCallback ValueChanged { get; set; } + + [Parameter] public Expression> ValueExpression { get; set; } = default!; + + #endregion +} diff --git a/blazorbootstrap/Components/Form/DateInput/DateInput.razor b/blazorbootstrap/Components/Form/DateInput/DateInput.razor new file mode 100644 index 000000000..d8909dce5 --- /dev/null +++ b/blazorbootstrap/Components/Form/DateInput/DateInput.razor @@ -0,0 +1,19 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase +@typeparam TValue + + diff --git a/blazorbootstrap/Components/Form/DateInput/DateInput.razor.cs b/blazorbootstrap/Components/Form/DateInput/DateInput.razor.cs new file mode 100644 index 000000000..48d4ded46 --- /dev/null +++ b/blazorbootstrap/Components/Form/DateInput/DateInput.razor.cs @@ -0,0 +1,356 @@ +namespace BlazorBootstrap; + +public partial class DateInput : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + /// + /// Date format: yyyy-MM-dd. + /// + private readonly string defaultFormat = "yyyy-MM-dd"; + + private FieldIdentifier fieldIdentifier; + + private string formattedMax = default!; + + private string formattedMin = default!; + + private string formattedValue = default!; + + private TValue max = default!; + + private TValue min = default!; + + private TValue? oldValue; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.FormControl) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + var currentValue = Value; + + if (currentValue is null || !TryParseValue(currentValue, out var value)) + { + if (EnableMinMax + && min is not null + && (typeof(TValue) == typeof(DateOnly) || typeof(TValue) == typeof(DateTime))) + Value = min; + else // DateOnly? / DateTime? + Value = default!; + } + else if (EnableMinMax && min is not null && IsLeftGreaterThanRight(min, Value!)) // value < min + { + Value = EnableMinMax && min is not null ? min : default!; + } + else if (EnableMinMax && max is not null && IsLeftGreaterThanRight(Value!, max)) // value > max + { + Value = max; + } + else + { + Value = value; + } + + formattedMax = EnableMinMax && max is not null ? GetFormattedValue(max) : string.Empty; + formattedMin = EnableMinMax && min is not null ? GetFormattedValue(min) : string.Empty; + formattedValue = GetFormattedValue(Value!); + + await ValueChanged.InvokeAsync(Value); + } + + await base.OnAfterRenderAsync(firstRender); + } + + protected override async Task OnInitializedAsync() + { + max = Max; + min = Min; + + if (EnableMinMax + && min is not null + && max is not null + && IsLeftGreaterThanRight(min, max)) + throw new InvalidOperationException("The Min parameter value is greater than the Max parameter value."); + + if (!(typeof(TValue) == typeof(DateOnly) + || typeof(TValue) == typeof(DateOnly?) + || typeof(TValue) == typeof(DateTime) + || typeof(TValue) == typeof(DateTime?) + )) + throw new InvalidOperationException($"{typeof(TValue)} is not supported."); + + AdditionalAttributes ??= new Dictionary(); + + fieldIdentifier = FieldIdentifier.Create(ValueExpression); + + Disabled = Disabled; + + await base.OnInitializedAsync(); + } + + protected override async Task OnParametersSetAsync() + { + if (EnableMinMax && !min!.Equals(Min)) + { + min = Min; + formattedMin = EnableMinMax && min is not null ? GetFormattedValue(min) : string.Empty; + } + + if (EnableMinMax && !max!.Equals(Max)) + { + max = Max; + formattedMax = EnableMinMax && max is not null ? GetFormattedValue(max) : string.Empty; + } + + if ((oldValue is null && Value is not null) + || (oldValue is not null && Value is null) + || !oldValue!.Equals(Value)) + { + await SetValueAsync(oldValue!, Value); + oldValue = Value; + } + } + + /// + /// Disables currency input. + /// + public void Disable() => Disabled = true; + + /// + /// Enables currency input. + /// + public void Enable() => Disabled = false; + + private string GetFormattedValue(object value) + { + var formattedDate = ""; + + try + { + if (value is null) + return formattedDate; + + // DateOnly / DateOnly? + if (typeof(TValue) == typeof(DateOnly) || typeof(TValue) == typeof(DateOnly?)) + { + if (DateTime.TryParse(value.ToString(), CultureInfo.CurrentCulture, DateTimeStyles.None, out var dt)) formattedDate = dt.ToString(defaultFormat); + } + // DateTime / DateTime? + else if (typeof(TValue) == typeof(DateTime) || typeof(TValue) == typeof(DateTime?)) + { + var d = Convert.ToDateTime(value, CultureInfo.CurrentCulture); // TODO: update this with .NET 8 upgrade + formattedDate = d.ToString(defaultFormat); + } + } + catch (FormatException) + { + return formattedDate; + } + + return formattedDate; + } + + /// + /// Determines where the left input is greater than the right input. + /// + /// + /// + /// bool + private bool IsLeftGreaterThanRight(object left, object right) + { + if (left is null || right is null) + return false; + + // DateOnly / DateOnly? + if (typeof(TValue) == typeof(DateOnly) || typeof(TValue) == typeof(DateOnly?)) + { + if (DateTime.TryParse(left.ToString(), CultureInfo.CurrentCulture, DateTimeStyles.None, out var ldt) + && DateTime.TryParse(right.ToString(), CultureInfo.CurrentCulture, DateTimeStyles.None, out var rdt)) + { + var l = DateOnly.FromDateTime(ldt); + var r = DateOnly.FromDateTime(rdt); + + return l > r; + } + } + // DateTime / DateTime? + else if (typeof(TValue) == typeof(DateTime) || typeof(TValue) == typeof(DateTime?)) + { + var l = Convert.ToDateTime(left, CultureInfo.CurrentCulture); + var r = Convert.ToDateTime(right, CultureInfo.CurrentCulture); + + return l > r; + } + + return false; + } + + private async Task OnChange(ChangeEventArgs e) + { + var oldValue = Value; + var newValue = e.Value; // object + + // When pressing 0 first the component falls back to default value + // We can avoid this by checking for an empty string first + if (e.Value is string tmp && tmp != string.Empty) + { + await SetValueAsync(oldValue, newValue); + } + + this.oldValue = Value; + } + + private async Task SetValueAsync(TValue oldValue, object? newValue) + { + if (newValue is null || !TryParseValue(newValue, out var value)) + { + if (EnableMinMax + && min is not null + && (typeof(TValue) == typeof(DateOnly) || typeof(TValue) == typeof(DateTime))) + Value = min; + else // DateOnly? / DateTime? + Value = default!; + } + else if (EnableMinMax && min is not null && IsLeftGreaterThanRight(min, value!)) // value < min + { + Value = min; + } + else if (EnableMinMax && max is not null && IsLeftGreaterThanRight(value!, max)) // value > max + { + Value = max; + } + else + { + Value = value; + } + + //this.formattedMax = EnableMinMax && max is not null ? GetFormattedValue(max) : string.Empty; + //this.formattedMin = EnableMinMax && min is not null ? GetFormattedValue(min) : string.Empty; + formattedValue = GetFormattedValue(Value!); + + if (oldValue!.Equals(Value)) + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.dateInput.setValue", Id, formattedValue); + + await ValueChanged.InvokeAsync(Value); + + EditContext?.NotifyFieldChanged(fieldIdentifier); + } + + private bool TryParseValue(object value, out TValue newValue) + { + try + { + // DateOnly / DateOnly? + if (typeof(TValue) == typeof(DateOnly) || typeof(TValue) == typeof(DateOnly?)) + { + if (DateTime.TryParse(value.ToString(), CultureInfo.CurrentCulture, DateTimeStyles.None, out var dt)) + { + newValue = (TValue)(object)DateOnly.FromDateTime(dt); + + return true; + } + + newValue = default!; + + return false; + } + // DateTime / DateTime? + + if (typeof(TValue) == typeof(DateTime) || typeof(TValue) == typeof(DateTime?)) + { + newValue = (TValue)Convert.ChangeType(value, typeof(DateTime), CultureInfo.CurrentCulture); + + return true; + } + + newValue = default!; + + return false; + } + catch (Exception) + { + newValue = default!; + + return false; + } + } + + #endregion + + #region Properties, Indexers + + private string autoComplete => AutoComplete ? "true" : "false"; + + /// + /// Indicates whether the DateInput can complete the values automatically by the browser. + /// + [Parameter] + public bool AutoComplete { get; set; } + + /// + /// Gets or sets the disabled. + /// + [Parameter] + public bool Disabled { get; set; } + + [CascadingParameter] private EditContext EditContext { get; set; } = default!; + + /// + /// Determines whether to restrict the user input to Min and Max range. + /// If true, restricts the user input between the Min and Max range. Else accepts the user input. + /// + [Parameter] + public bool EnableMinMax { get; set; } + + private string fieldCssClasses => EditContext?.FieldCssClass(fieldIdentifier) ?? ""; + + /// + /// Gets or sets the max. + /// Allowed format is yyyy-mm-dd. + /// + [Parameter] + public TValue Max { get; set; } = default!; + + /// + /// Gets or sets the min. + /// Allowed format is yyyy-mm-dd. + /// + [Parameter] + public TValue Min { get; set; } = default!; + + /// + /// Gets or sets the placeholder. + /// + [Parameter] + public string? Placeholder { get; set; } + + /// + /// Gets or sets the value. + /// + [Parameter] + public TValue Value { get; set; } = default!; + + /// + /// This event fired on every user keystroke that changes the DateInput value. + /// + [Parameter] + public EventCallback ValueChanged { get; set; } + + /// + /// Gets or sets the expression. + /// + [Parameter] + public Expression> ValueExpression { get; set; } = default!; + + #endregion +} diff --git a/blazorbootstrap/Components/Form/NumberInput/NumberInput.razor b/blazorbootstrap/Components/Form/NumberInput/NumberInput.razor new file mode 100644 index 000000000..96f2316ed --- /dev/null +++ b/blazorbootstrap/Components/Form/NumberInput/NumberInput.razor @@ -0,0 +1,16 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase +@typeparam TValue + + diff --git a/blazorbootstrap/Components/Form/NumberInput/NumberInput.razor.cs b/blazorbootstrap/Components/Form/NumberInput/NumberInput.razor.cs new file mode 100644 index 000000000..15ad44604 --- /dev/null +++ b/blazorbootstrap/Components/Form/NumberInput/NumberInput.razor.cs @@ -0,0 +1,440 @@ +namespace BlazorBootstrap; + +public partial class NumberInput : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private CultureInfo cultureInfo = default!; + + private FieldIdentifier fieldIdentifier; + + private string step = default!; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.FormControl) + .AddClass(TextAlignment.ToTextAlignmentClass(), TextAlignment != Alignment.None) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.numberInput.initialize", Id, isFloatingNumber(), AllowNegativeNumbers, cultureInfo.NumberFormat.NumberDecimalSeparator); + + var currentValue = Value; // object + + if (currentValue is null || !TryParseValue(currentValue, out var value)) + Value = default!; + else if (EnableMinMax && Min is not null && IsLeftGreaterThanRight(Min, Value)) // value < min + Value = Min; + else if (EnableMinMax && Max is not null && IsLeftGreaterThanRight(Value, Max)) // value > max + Value = Max; + else + Value = value; + + await ValueChanged.InvokeAsync(Value); + } + + await base.OnAfterRenderAsync(firstRender); + } + + protected override async Task OnInitializedAsync() + { + if (IsLeftGreaterThanRight(Min, Max)) + throw new InvalidOperationException("The Min parameter value is greater than the Max parameter value."); + + if (!(typeof(TValue) == typeof(sbyte) + || typeof(TValue) == typeof(sbyte?) + || typeof(TValue) == typeof(short) + || typeof(TValue) == typeof(short?) + || typeof(TValue) == typeof(int) + || typeof(TValue) == typeof(int?) + || typeof(TValue) == typeof(long) + || typeof(TValue) == typeof(long?) + || typeof(TValue) == typeof(float) + || typeof(TValue) == typeof(float?) + || typeof(TValue) == typeof(double) + || typeof(TValue) == typeof(double?) + || typeof(TValue) == typeof(decimal) + || typeof(TValue) == typeof(decimal?) + )) + throw new InvalidOperationException($"{typeof(TValue)} is not supported."); + + AdditionalAttributes ??= new Dictionary(); + + fieldIdentifier = FieldIdentifier.Create(ValueExpression); + + step = Step.HasValue ? $"{Step.Value}" : "any"; + + try + { + cultureInfo = new CultureInfo(Locale); + } + catch (CultureNotFoundException) + { + cultureInfo = new CultureInfo("en-US"); + } + + await base.OnInitializedAsync(); + } + + /// + /// Disables number input. + /// + public void Disable() => Disabled = true; + + /// + /// Enables number input. + /// + public void Enable() => Disabled = false; + + private string GetInvariantNumber(TValue value) + { + if (value is null) return string.Empty; + + if (value is float floatValue) return floatValue.ToString(CultureInfo.InvariantCulture); + + if (value is double doubleValue) return doubleValue.ToString(CultureInfo.InvariantCulture); + + if (value is decimal decimalValue) return decimalValue.ToString(CultureInfo.InvariantCulture); + + // All numbers without decimal places work fine by default + return value?.ToString() ?? string.Empty; + } + + private bool isFloatingNumber() => + typeof(TValue) == typeof(float) + || typeof(TValue) == typeof(float?) + || typeof(TValue) == typeof(double) + || typeof(TValue) == typeof(double?) + || typeof(TValue) == typeof(decimal) + || typeof(TValue) == typeof(decimal?); + + /// + /// Determines where the left input is greater than the right input. + /// + /// + /// + /// bool + private bool IsLeftGreaterThanRight(TValue left, TValue right) + { + // sbyte + if (typeof(TValue) == typeof(sbyte)) + { + var l = Convert.ToSByte(left); + var r = Convert.ToSByte(right); + + return l > r; + } + // sbyte? + + if (typeof(TValue) == typeof(sbyte?)) + { + var l = left as sbyte?; + var r = right as sbyte?; + + return l.HasValue && r.HasValue && l > r; + } + // short / int16 + + if (typeof(TValue) == typeof(short)) + { + var l = Convert.ToInt16(left); + var r = Convert.ToInt16(right); + + return l > r; + } + // short? / int16? + + if (typeof(TValue) == typeof(short?)) + { + var l = left as short?; + var r = right as short?; + + return l.HasValue && r.HasValue && l > r; + } + // int + + if (typeof(TValue) == typeof(int)) + { + var l = Convert.ToInt32(left); + var r = Convert.ToInt32(right); + + return l > r; + } + // int? + + if (typeof(TValue) == typeof(int?)) + { + var l = left as int?; + var r = right as int?; + + return l.HasValue && r.HasValue && l > r; + } + // long + + if (typeof(TValue) == typeof(long)) + { + var l = Convert.ToInt64(left); + var r = Convert.ToInt64(right); + + return l > r; + } + // long? + + if (typeof(TValue) == typeof(long?)) + { + var l = left as long?; + var r = right as long?; + + return l.HasValue && r.HasValue && l > r; + } + // float / single + + if (typeof(TValue) == typeof(float)) + { + var l = Convert.ToSingle(left); + var r = Convert.ToSingle(right); + + return l > r; + } + // float? / single? + + if (typeof(TValue) == typeof(float?)) + { + var l = left as float?; + var r = right as float?; + + return l.HasValue && r.HasValue && l > r; + } + // double + + if (typeof(TValue) == typeof(double)) + { + var l = Convert.ToDouble(left); + var r = Convert.ToDouble(right); + + return l > r; + } + // double? + + if (typeof(TValue) == typeof(double?)) + { + var l = left as double?; + var r = right as double?; + + return l.HasValue && r.HasValue && l > r; + } + // decimal + + if (typeof(TValue) == typeof(decimal)) + { + var l = Convert.ToDecimal(left); + var r = Convert.ToDecimal(right); + + return l > r; + } + // decimal? + + if (typeof(TValue) == typeof(decimal?)) + { + var l = left as decimal?; + var r = right as decimal?; + + return l.HasValue && r.HasValue && l > r; + } + + return false; + } + + private async Task OnChange(ChangeEventArgs e) + { + var oldValue = Value; + var newValue = e.Value; // object + + if (newValue is null || !TryParseValue(newValue, out var value)) + Value = default!; + else if (EnableMinMax && Min is not null && IsLeftGreaterThanRight(Min, value)) // value < min + Value = Min; + else if (EnableMinMax && Max is not null && IsLeftGreaterThanRight(value, Max)) // value > max + Value = Max; + else + Value = value; + + if (oldValue!.Equals(Value)) + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.numberInput.setValue", Id, Value); + + await ValueChanged.InvokeAsync(Value); + + EditContext?.NotifyFieldChanged(fieldIdentifier); + } + + private bool TryParseValue(object value, out TValue newValue) + { + try + { + // sbyte? / sbyte + if (typeof(TValue) == typeof(sbyte?) || typeof(TValue) == typeof(sbyte)) + { + newValue = (TValue)Convert.ChangeType(value, typeof(sbyte)); + + return true; + } + // short? / short + + if (typeof(TValue) == typeof(short?) || typeof(TValue) == typeof(short)) + { + newValue = (TValue)Convert.ChangeType(value, typeof(short)); + + return true; + } + // int? / int + + if (typeof(TValue) == typeof(int?) || typeof(TValue) == typeof(int)) + { + newValue = (TValue)Convert.ChangeType(value, typeof(int)); + + return true; + } + // long? / long + + if (typeof(TValue) == typeof(long?) || typeof(TValue) == typeof(long)) + { + newValue = (TValue)Convert.ChangeType(value, typeof(long)); + + return true; + } + // float? / float + + if (typeof(TValue) == typeof(float?) || typeof(TValue) == typeof(float)) + { + newValue = (TValue)Convert.ChangeType(value, typeof(float), CultureInfo.InvariantCulture); + + return true; + } + // double? / double + + if (typeof(TValue) == typeof(double?) || typeof(TValue) == typeof(double)) + { + newValue = (TValue)Convert.ChangeType(value, typeof(double), CultureInfo.InvariantCulture); + + return true; + } + // decimal? / decimal + + if (typeof(TValue) == typeof(decimal?) || typeof(TValue) == typeof(decimal)) + { + newValue = (TValue)Convert.ChangeType(value, typeof(decimal), CultureInfo.InvariantCulture); + + return true; + } + + newValue = default!; + + return false; + } + catch (Exception ex) + { + Console.WriteLine($"exception: {ex.Message}"); + newValue = default!; + + return false; + } + } + + #endregion + + #region Properties, Indexers + + /// + /// Allows negative numbers. By default, negative numbers are not allowed. + /// + [Parameter] + public bool AllowNegativeNumbers { get; set; } + + private string autoComplete => AutoComplete ? "true" : "false"; + + /// + /// Indicates whether the NumberInput can complete the values automatically by the browser. + /// + [Parameter] + public bool AutoComplete { get; set; } + + /// + /// Gets or sets the disabled. + /// + [Parameter] + public bool Disabled { get; set; } + + [CascadingParameter] private EditContext EditContext { get; set; } = default!; + + /// + /// Determines whether to restrict the user input to Min and Max range. + /// If true, restricts the user input between the Min and Max range. Else accepts the user input. + /// + [Parameter] + public bool EnableMinMax { get; set; } + + private string fieldCssClasses => EditContext?.FieldCssClass(fieldIdentifier) ?? ""; + + /// + /// Gets or sets the locale. Default locale is 'en-US'. + /// + [Parameter] + //[EditorRequired] + public string Locale { get; set; } = "en-US"; + + /// + /// Gets or sets the max. + /// Max ignored if EnableMinMax="false". + /// + [Parameter] + public TValue Max { get; set; } = default!; + + /// + /// Gets or sets the min. + /// Min ignored if EnableMinMax="false". + /// + [Parameter] + public TValue Min { get; set; } = default!; + + /// + /// Gets or sets the placeholder. + /// + [Parameter] + public string? Placeholder { get; set; } + + /// + /// Gets or sets the step. + /// + [Parameter] + public double? Step { get; set; } + + /// + /// Gets or sets the text alignment. + /// + [Parameter] + public Alignment TextAlignment { get; set; } + + /// + /// Gets or sets the value. + /// + [Parameter] + public TValue Value { get; set; } = default!; + + /// + /// This event fired on every user keystroke that changes the NumberInput value. + /// + [Parameter] + public EventCallback ValueChanged { get; set; } + + [Parameter] public Expression> ValueExpression { get; set; } = default!; + + #endregion +} diff --git a/blazorbootstrap/Components/Form/RangeInput/RangeInput.razor b/blazorbootstrap/Components/Form/RangeInput/RangeInput.razor new file mode 100644 index 000000000..9d3bd1920 --- /dev/null +++ b/blazorbootstrap/Components/Form/RangeInput/RangeInput.razor @@ -0,0 +1,27 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase +@typeparam TValue + + + +@if (showTickMarks) +{ + + @foreach (var item in TickMarks) + { + + } + +} diff --git a/blazorbootstrap/Components/Form/RangeInput/RangeInput.razor.cs b/blazorbootstrap/Components/Form/RangeInput/RangeInput.razor.cs new file mode 100644 index 000000000..bf41d8c09 --- /dev/null +++ b/blazorbootstrap/Components/Form/RangeInput/RangeInput.razor.cs @@ -0,0 +1,428 @@ +namespace BlazorBootstrap; + +/// +/// Represents a Blazor component that provides a range input for numeric values. +/// +/// The type of the numeric value. +/// +/// Supported types for TValue: sbyte, sbyte?, short, short?, int, int?, long, long?, float, float?, double, double?, +/// decimal, decimal? +/// +public partial class RangeInput : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private FieldIdentifier fieldIdentifier; + + private sbyte max = 100; + + private sbyte min = 0; + + private DotNetObjectReference> objRef = default!; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.FormRange) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.rangeInput.initialize", Id, objRef); + + var currentValue = Value; // object + + if (currentValue is null || !TryParseValue(currentValue, out var value)) + Value = default!; + else if (Min is not null && IsLeftGreaterThanRight(Min, Value)) // value < min + Value = Min; + else if (Max is not null && IsLeftGreaterThanRight(Value, Max)) // value > max + Value = Max; + else + Value = value; + + await ValueChanged.InvokeAsync(Value); + } + + await base.OnAfterRenderAsync(firstRender); + } + + protected override async Task OnInitializedAsync() + { + objRef ??= DotNetObjectReference.Create(this); + + if (!(typeof(TValue) == typeof(sbyte) + || typeof(TValue) == typeof(sbyte?) + || typeof(TValue) == typeof(short) + || typeof(TValue) == typeof(short?) + || typeof(TValue) == typeof(int) + || typeof(TValue) == typeof(int?) + || typeof(TValue) == typeof(long) + || typeof(TValue) == typeof(long?) + || typeof(TValue) == typeof(float) + || typeof(TValue) == typeof(float?) + || typeof(TValue) == typeof(double) + || typeof(TValue) == typeof(double?) + || typeof(TValue) == typeof(decimal) + || typeof(TValue) == typeof(decimal?) + )) + throw new InvalidOperationException($"{typeof(TValue)} is not supported."); + + if (IsLeftGreaterThanRight(Min, Max)) + throw new InvalidOperationException("The Min parameter value is greater than the Max parameter value."); + + AdditionalAttributes ??= new Dictionary(); + + fieldIdentifier = FieldIdentifier.Create(ValueExpression); + + SetDefaultValues(); + + await base.OnInitializedAsync(); + } + + [JSInvokable] + public async Task bsOnInput(object? newValue) + { + SetValue(newValue?.ToString()); + await HandleChangeAsync(); + } + + /// + /// Disables the range input. + /// + public void Disable() => Disabled = true; + + /// + /// Enables the range input. + /// + public void Enable() => Disabled = false; + + private string GetInvariantNumber(TValue value) + { + if (value is null) return string.Empty; + + if (value is float floatValue) return floatValue.ToString(CultureInfo.InvariantCulture); + + if (value is double doubleValue) return doubleValue.ToString(CultureInfo.InvariantCulture); + + if (value is decimal decimalValue) return decimalValue.ToString(CultureInfo.InvariantCulture); + + // All numbers without decimal places work fine by default + return value?.ToString() ?? string.Empty; + } + + private async Task HandleChangeAsync() + { + await ValueChanged.InvokeAsync(Value); + EditContext?.NotifyFieldChanged(fieldIdentifier); + } + + /// + /// Determines where the left input is greater than the right input. + /// + /// + /// + /// bool + private bool IsLeftGreaterThanRight(TValue left, TValue right) + { + // sbyte + if (typeof(TValue) == typeof(sbyte)) + { + var l = Convert.ToSByte(left); + var r = Convert.ToSByte(right); + + return l > r; + } + // sbyte? + + if (typeof(TValue) == typeof(sbyte?)) + { + var l = left as sbyte?; + var r = right as sbyte?; + + return l.HasValue && r.HasValue && l > r; + } + // short / int16 + + if (typeof(TValue) == typeof(short)) + { + var l = Convert.ToInt16(left); + var r = Convert.ToInt16(right); + + return l > r; + } + // short? / int16? + + if (typeof(TValue) == typeof(short?)) + { + var l = left as short?; + var r = right as short?; + + return l.HasValue && r.HasValue && l > r; + } + // int + + if (typeof(TValue) == typeof(int)) + { + var l = Convert.ToInt32(left); + var r = Convert.ToInt32(right); + + return l > r; + } + // int? + + if (typeof(TValue) == typeof(int?)) + { + var l = left as int?; + var r = right as int?; + + return l.HasValue && r.HasValue && l > r; + } + // long + + if (typeof(TValue) == typeof(long)) + { + var l = Convert.ToInt64(left); + var r = Convert.ToInt64(right); + + return l > r; + } + // long? + + if (typeof(TValue) == typeof(long?)) + { + var l = left as long?; + var r = right as long?; + + return l.HasValue && r.HasValue && l > r; + } + // float / single + + if (typeof(TValue) == typeof(float)) + { + var l = Convert.ToSingle(left); + var r = Convert.ToSingle(right); + + return l > r; + } + // float? / single? + + if (typeof(TValue) == typeof(float?)) + { + var l = left as float?; + var r = right as float?; + + return l.HasValue && r.HasValue && l > r; + } + // double + + if (typeof(TValue) == typeof(double)) + { + var l = Convert.ToDouble(left); + var r = Convert.ToDouble(right); + + return l > r; + } + // double? + + if (typeof(TValue) == typeof(double?)) + { + var l = left as double?; + var r = right as double?; + + return l.HasValue && r.HasValue && l > r; + } + // decimal + + if (typeof(TValue) == typeof(decimal)) + { + var l = Convert.ToDecimal(left); + var r = Convert.ToDecimal(right); + + return l > r; + } + // decimal? + + if (typeof(TValue) == typeof(decimal?)) + { + var l = left as decimal?; + var r = right as decimal?; + + return l.HasValue && r.HasValue && l > r; + } + + return false; + } + + private async Task OnChange(ChangeEventArgs e) + { + SetValue(e.Value); + await HandleChangeAsync(); + } + + private void SetDefaultValues() + { + // sbyte? / sbyte + if (typeof(TValue) == typeof(sbyte?) + || typeof(TValue) == typeof(short?) + || typeof(TValue) == typeof(int?) + || typeof(TValue) == typeof(long?) + || typeof(TValue) == typeof(float?) + || typeof(TValue) == typeof(double?) + || typeof(TValue) == typeof(decimal?)) + { + if (Min is null) + Min = TryParseValue(min, out var _min) ? _min : _min; + + if (Max is null) + Max = TryParseValue(max, out var _max) ? _max : _max; + } + } + + private void SetValue(object? newValue) + { + if (newValue is null || !TryParseValue(newValue, out var value)) + Value = default!; + else if (Min is not null && IsLeftGreaterThanRight(Min, value)) // value < min + Value = Min; + else if (Max is not null && IsLeftGreaterThanRight(value, Max)) // value > max + Value = Max; + else + Value = value; + } + + private bool TryParseValue(object value, out TValue newValue) + { + try + { + // sbyte? / sbyte + if (typeof(TValue) == typeof(sbyte?) || typeof(TValue) == typeof(sbyte)) + { + newValue = (TValue)Convert.ChangeType(value, typeof(sbyte)); + + return true; + } + + // short? / short + if (typeof(TValue) == typeof(short?) || typeof(TValue) == typeof(short)) + { + newValue = (TValue)Convert.ChangeType(value, typeof(short)); + + return true; + } + + // int? / int + if (typeof(TValue) == typeof(int?) || typeof(TValue) == typeof(int)) + { + newValue = (TValue)Convert.ChangeType(value, typeof(int)); + + return true; + } + + // long? / long + if (typeof(TValue) == typeof(long?) || typeof(TValue) == typeof(long)) + { + newValue = (TValue)Convert.ChangeType(value, typeof(long)); + + return true; + } + + // float? / float + if (typeof(TValue) == typeof(float?) || typeof(TValue) == typeof(float)) + { + newValue = (TValue)Convert.ChangeType(value, typeof(float), CultureInfo.InvariantCulture); + + return true; + } + + // double? / double + if (typeof(TValue) == typeof(double?) || typeof(TValue) == typeof(double)) + { + newValue = (TValue)Convert.ChangeType(value, typeof(double), CultureInfo.InvariantCulture); + + return true; + } + + // decimal? / decimal + if (typeof(TValue) == typeof(decimal?) || typeof(TValue) == typeof(decimal)) + { + newValue = (TValue)Convert.ChangeType(value, typeof(decimal), CultureInfo.InvariantCulture); + + return true; + } + + newValue = default!; + + return false; + } + catch (Exception ex) + { + Console.WriteLine($"exception: {ex.Message}"); + newValue = default!; + + return false; + } + } + + #endregion + + #region Properties, Indexers + + /// + /// Disables or enables the range input. + /// + [Parameter] + public bool Disabled { get; set; } + + [CascadingParameter] private EditContext EditContext { get; set; } = default!; + + private string fieldCssClasses => EditContext?.FieldCssClass(fieldIdentifier) ?? ""; + + /// + /// Gets or sets the maximum value of the range input. + /// + [Parameter] + public TValue Max { get; set; } = default!; + + /// + /// Gets or sets the minimum value of the range input. + /// + [Parameter] + public TValue Min { get; set; } = default!; + + private bool showTickMarks => TickMarks?.Any() ?? false; + + /// + /// Gets or sets the step value of the range input. + /// + [Parameter] + public double Step { get; set; } = 1; + + /// + /// Gets or sets the tick marks. + /// + [Parameter] + public IEnumerable TickMarks { get; set; } = default!; + + /// + /// Gets or sets the value of the range input. + /// + [Parameter] + public TValue Value { get; set; } = default!; + + /// + /// This event fires when the user specifies a numeric value. + /// + [Parameter] + public EventCallback ValueChanged { get; set; } + + [Parameter] public Expression> ValueExpression { get; set; } = default!; + + #endregion +} diff --git a/blazorbootstrap/Components/Form/Switch/Switch.razor b/blazorbootstrap/Components/Form/Switch/Switch.razor new file mode 100644 index 000000000..1251024ac --- /dev/null +++ b/blazorbootstrap/Components/Form/Switch/Switch.razor @@ -0,0 +1,20 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase +@preservewhitespace true + +
    + + + @if (!string.IsNullOrWhiteSpace(Label)) + { + + } +
    diff --git a/blazorbootstrap/Components/Form/Switch/Switch.razor.cs b/blazorbootstrap/Components/Form/Switch/Switch.razor.cs new file mode 100644 index 000000000..3f28aa0a1 --- /dev/null +++ b/blazorbootstrap/Components/Form/Switch/Switch.razor.cs @@ -0,0 +1,115 @@ +namespace BlazorBootstrap; + +public partial class Switch : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private FieldIdentifier fieldIdentifier; + + private bool oldValue; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.FormCheck) + .AddClass(BootstrapClass.FormSwitch) + .AddClass(BootstrapClass.FormCheckReverse, Reverse) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + protected override async Task OnInitializedAsync() + { + oldValue = Value; + + AdditionalAttributes ??= new Dictionary(); + + fieldIdentifier = FieldIdentifier.Create(ValueExpression); + + await base.OnInitializedAsync(); + } + + protected override async Task OnParametersSetAsync() + { + if (oldValue != Value) + { + await ValueChanged.InvokeAsync(Value); + + EditContext?.NotifyFieldChanged(fieldIdentifier); + + oldValue = Value; + } + } + + /// + /// Disables switch. + /// + public void Disable() => Disabled = true; + + /// + /// Enables switch. + /// + public void Enable() => Disabled = false; + + /// + /// This event is triggered only when the user changes the selection from the UI. + /// + /// + private async Task OnChange(ChangeEventArgs args) + { + bool.TryParse(args.Value?.ToString(), out var newValue); + Value = newValue; + + await ValueChanged.InvokeAsync(Value); + + EditContext?.NotifyFieldChanged(fieldIdentifier); + + oldValue = Value; + } + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the disabled. + /// + [Parameter] + public bool Disabled { get; set; } + + [CascadingParameter] private EditContext EditContext { get; set; } = default!; + + private string fieldCssClasses => EditContext?.FieldCssClass(fieldIdentifier) ?? ""; + + /// + /// Gets or sets the label. + /// + [Parameter] + public string Label { get; set; } = default!; + + private string reverse => Reverse ? BootstrapClass.FormCheckReverse : ""; + + /// + /// Determines whether to put the switch on the opposite side. + /// + [Parameter] + public bool Reverse { get; set; } + + /// + /// Gets or sets the value. + /// + [Parameter] + public bool Value { get; set; } + + /// + /// This event is fired when the switch selection changes. + /// + [Parameter] + public EventCallback ValueChanged { get; set; } = default!; + + [Parameter] public Expression> ValueExpression { get; set; } = default!; + + #endregion +} diff --git a/blazorbootstrap/Components/Form/TimeInput/TimeInput.razor b/blazorbootstrap/Components/Form/TimeInput/TimeInput.razor new file mode 100644 index 000000000..812bbdafd --- /dev/null +++ b/blazorbootstrap/Components/Form/TimeInput/TimeInput.razor @@ -0,0 +1,19 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase +@typeparam TValue + + diff --git a/blazorbootstrap/Components/Form/TimeInput/TimeInput.razor.cs b/blazorbootstrap/Components/Form/TimeInput/TimeInput.razor.cs new file mode 100644 index 000000000..d529759b3 --- /dev/null +++ b/blazorbootstrap/Components/Form/TimeInput/TimeInput.razor.cs @@ -0,0 +1,318 @@ +namespace BlazorBootstrap; + +public partial class TimeInput : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + /// + /// Time format: HH:mm. 24-hours format. + /// + private readonly string defaultFormat = "HH:mm"; + + private FieldIdentifier fieldIdentifier; + + private string formattedMax = default!; + + private string formattedMin = default!; + + private string formattedValue = default!; + + private TValue max = default!; + + private TValue min = default!; + + private TValue? oldValue; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.FormControl) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + var currentValue = Value; + + if (currentValue is null || !TryParseValue(currentValue, out var value)) + { + if (EnableMinMax + && min is not null + && typeof(TValue) == typeof(TimeOnly)) + Value = min; + else // TimeOnly? + Value = default!; + } + else if (EnableMinMax && min is not null && IsLeftGreaterThanRight(min, Value!)) // value < min + { + Value = EnableMinMax && min is not null ? min : default!; + } + else if (EnableMinMax && max is not null && IsLeftGreaterThanRight(Value!, max)) // value > max + { + Value = max; + } + else + { + Value = value; + } + + formattedMax = EnableMinMax && max is not null ? GetFormattedValue(max) : string.Empty; + formattedMin = EnableMinMax && min is not null ? GetFormattedValue(min) : string.Empty; + formattedValue = GetFormattedValue(Value!); + + await ValueChanged.InvokeAsync(Value); + } + + await base.OnAfterRenderAsync(firstRender); + } + + protected override async Task OnInitializedAsync() + { + max = Max; + min = Min; + + if (EnableMinMax + && min is not null + && max is not null + && IsLeftGreaterThanRight(min, max)) + throw new InvalidOperationException("The Min parameter value is greater than the Max parameter value."); + + if (!(typeof(TValue) == typeof(TimeOnly) + || typeof(TValue) == typeof(TimeOnly?) + )) + throw new InvalidOperationException($"{typeof(TValue)} is not supported."); + + AdditionalAttributes ??= new Dictionary(); + + fieldIdentifier = FieldIdentifier.Create(ValueExpression); + + await base.OnInitializedAsync(); + } + + protected override async Task OnParametersSetAsync() + { + if (EnableMinMax && !min!.Equals(Min)) + { + min = Min; + formattedMin = EnableMinMax && min is not null ? GetFormattedValue(min) : string.Empty; + } + + if (EnableMinMax && !max!.Equals(Max)) + { + max = Max; + formattedMax = EnableMinMax && max is not null ? GetFormattedValue(max) : string.Empty; + } + + if ((oldValue is null && Value is not null) + || (oldValue is not null && Value is null) + || !oldValue!.Equals(Value)) + { + await SetValueAsync(oldValue!, Value!); + oldValue = Value; + } + } + + /// + /// Disables currency input. + /// + public void Disable() => Disabled = true; + + /// + /// Enables currency input. + /// + public void Enable() => Disabled = false; + + private string GetFormattedValue(object value) + { + var formattedTime = ""; + + try + { + if (value is null) + return formattedTime; + + // TimeOnly / TimeOnly? + if (typeof(TValue) == typeof(TimeOnly) || typeof(TValue) == typeof(TimeOnly?)) + if (TimeOnly.TryParse(value.ToString(), CultureInfo.CurrentCulture, DateTimeStyles.None, out var t)) + formattedTime = t.ToString(defaultFormat); + } + catch (FormatException ex) + { + Console.WriteLine($"exception: {ex.Message}"); + + return formattedTime; + } + + return formattedTime; + } + + /// + /// Determines where the left input is greater than the right input. + /// + /// + /// + /// bool + private bool IsLeftGreaterThanRight(object left, object right) + { + if (left is null || right is null) + return false; + + // TimeOnly / TimeOnly? + if (typeof(TValue) == typeof(TimeOnly) || typeof(TValue) == typeof(TimeOnly?)) + if (TimeOnly.TryParse(left.ToString(), CultureInfo.CurrentCulture, DateTimeStyles.None, out var lt) + && TimeOnly.TryParse(right.ToString(), CultureInfo.CurrentCulture, DateTimeStyles.None, out var rt)) + return lt > rt; + + return false; + } + + private async Task OnChange(ChangeEventArgs e) + { + var oldValue = Value; + var newValue = e.Value; // object + + await SetValueAsync(oldValue, newValue); + + this.oldValue = Value; + } + + private async Task SetValueAsync(TValue oldValue, object? newValue) + { + if (newValue is null || !TryParseValue(newValue, out var value)) + { + if (EnableMinMax + && min is not null + && typeof(TValue) == typeof(TimeOnly)) + Value = min; + else // TimeOnly? + Value = default!; + } + else if (EnableMinMax && min is not null && IsLeftGreaterThanRight(min, value!)) // value < min + { + Value = min; + } + else if (EnableMinMax && max is not null && IsLeftGreaterThanRight(value!, max)) // value > max + { + Value = max; + } + else + { + Value = value; + } + + formattedValue = GetFormattedValue(Value!); + + if (oldValue!.Equals(Value)) + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.timeInput.setValue", Id, formattedValue); + + await ValueChanged.InvokeAsync(Value); + + EditContext?.NotifyFieldChanged(fieldIdentifier); + } + + private bool TryParseValue(object value, out TValue newValue) + { + try + { + // TimeOnly / TimeOnly? + if (typeof(TValue) == typeof(TimeOnly) || typeof(TValue) == typeof(TimeOnly?)) + { + if (TimeOnly.TryParse(value.ToString(), CultureInfo.CurrentCulture, DateTimeStyles.None, out var time)) + { + newValue = (TValue)(object)time; + + return true; + } + + newValue = default!; + + return false; + } + + newValue = default!; + + return false; + } + catch (Exception ex) + { + Console.WriteLine($"exception: {ex.Message}"); + newValue = default!; + + return false; + } + } + + #endregion + + #region Properties, Indexers + + private string autoComplete => AutoComplete ? "true" : "false"; + + /// + /// Indicates whether the DateInput can complete the values automatically by the browser. + /// + [Parameter] + public bool AutoComplete { get; set; } + + /// + /// Gets or sets the disabled. + /// + [Parameter] + public bool Disabled { get; set; } + + [CascadingParameter] private EditContext EditContext { get; set; } = default!; + + /// + /// Determines whether to restrict the user input to Min and Max range. + /// If true, restricts the user input between the Min and Max range. Else accepts the user input. + /// + [Parameter] + public bool EnableMinMax { get; set; } + + private string fieldCssClasses => EditContext?.FieldCssClass(fieldIdentifier) ?? ""; + + /// + /// Gets or sets the max. + /// Allowed format is hh:mm. + /// + [Parameter] + public TValue Max { get; set; } = default!; + + /// + /// Gets or sets the min. + /// Allowed format is hh:mm. + /// + [Parameter] + public TValue Min { get; set; } = default!; + + /// + /// Gets or sets the placeholder. + /// + [Parameter] + public string? Placeholder { get; set; } + + /// + /// Gets or sets the value. + /// + [Parameter] + public TValue Value { get; set; } = default!; + + /// + /// This event fired on every user keystroke that changes the TimeInput value. + /// + [Parameter] + public EventCallback ValueChanged { get; set; } + + /// + /// Gets or sets the expression. + /// + [Parameter] + public Expression> ValueExpression { get; set; } = default!; + + #endregion +} diff --git a/blazorbootstrap/Components/Grid/FilterOperatorHelper.cs b/blazorbootstrap/Components/Grid/FilterOperatorHelper.cs new file mode 100644 index 000000000..692d01c40 --- /dev/null +++ b/blazorbootstrap/Components/Grid/FilterOperatorHelper.cs @@ -0,0 +1,111 @@ +namespace BlazorBootstrap; + +public static class FilterOperatorHelper +{ + #region Methods + + public static IEnumerable GetBooleanFilterOperators() + { + List result = new() { new FilterOperatorInfo("=", "Equals", FilterOperator.Equals), new FilterOperatorInfo("!=", "Not equals", FilterOperator.NotEquals), new FilterOperatorInfo("x", "Clear", FilterOperator.Clear) }; + + return result; + } + + public static IEnumerable GetDateFilterOperators() + { + List result = new() + { + new FilterOperatorInfo("=", "Equals", FilterOperator.Equals), + new FilterOperatorInfo("!=", "Not equals", FilterOperator.NotEquals), + new FilterOperatorInfo("<", "Less than", FilterOperator.LessThan), + new FilterOperatorInfo("<=", "Less than or equals", FilterOperator.LessThanOrEquals), + new FilterOperatorInfo(">", "Greater than", FilterOperator.GreaterThan), + new FilterOperatorInfo(">=", "Greater than or equals", FilterOperator.GreaterThanOrEquals), + new FilterOperatorInfo("x", "Clear", FilterOperator.Clear) + }; + + return result; + } + + public static IEnumerable GetFilterOperators(string propertyTypeName, IEnumerable filtersTranslations) + { + if (filtersTranslations is null || !filtersTranslations.Any()) + return GetFilterOperators(propertyTypeName); + + var filters = new List(); + var defaultFilters = GetFilterOperators(propertyTypeName); + + foreach (var filter in defaultFilters) + { + var filterTranslation = filtersTranslations.FirstOrDefault(X => X.FilterOperator == filter.FilterOperator); + + if (filterTranslation is null) + filters.Add(filter); + else + filters.Add(filter with { Symbol = filterTranslation.Symbol, Text = filterTranslation.Text }); + } + + return filters; + } + + public static IEnumerable GetFilterOperators(string propertyTypeName) + { + if (propertyTypeName is StringConstants.PropertyTypeNameInt16 + or StringConstants.PropertyTypeNameInt32 + or StringConstants.PropertyTypeNameInt64 + or StringConstants.PropertyTypeNameSingle // float + or StringConstants.PropertyTypeNameDecimal + or StringConstants.PropertyTypeNameDouble) + return GetNumberFilterOperators(); + + if (propertyTypeName is StringConstants.PropertyTypeNameString + or StringConstants.PropertyTypeNameChar) + return GetStringFilterOperators(); + + if (propertyTypeName is StringConstants.PropertyTypeNameDateOnly + or StringConstants.PropertyTypeNameDateTime) + return GetDateFilterOperators(); + + if (propertyTypeName == StringConstants.PropertyTypeNameBoolean) return GetBooleanFilterOperators(); + + return new List(); + } + + public static IEnumerable GetNumberFilterOperators() + { + List result = new() + { + new FilterOperatorInfo("=", "Equals", FilterOperator.Equals), + new FilterOperatorInfo("!=", "Not equals", FilterOperator.NotEquals), + new FilterOperatorInfo("<", "Less than", FilterOperator.LessThan), + new FilterOperatorInfo("<=", "Less than or equals", FilterOperator.LessThanOrEquals), + new FilterOperatorInfo(">", "Greater than", FilterOperator.GreaterThan), + new FilterOperatorInfo(">=", "Greater than or equals", FilterOperator.GreaterThanOrEquals), + new FilterOperatorInfo("x", "Clear", FilterOperator.Clear) + }; + + return result; + } + + public static IEnumerable GetStringFilterOperators() + { + List result = new() + { + new FilterOperatorInfo("*a*", "Contains", FilterOperator.Contains), + //result.Add(new("!*a*", "Does not contain", FilterOperator.DoesNotContain)); + new FilterOperatorInfo("a**", "Starts with", FilterOperator.StartsWith), + new FilterOperatorInfo("**a", "Ends with", FilterOperator.EndsWith), + //result.Add(new("=''", "Is empty", FilterOperator.IsEmpty)); + //result.Add(new("!=''", "Is not empty", FilterOperator.IsNotEmpty)); + new FilterOperatorInfo("=", "Equals", FilterOperator.Equals), + new FilterOperatorInfo("!=", "Not equals", FilterOperator.NotEquals), + //result.Add(new("null", "Is null", FilterOperator.IsNull)); + //result.Add(new("!null", "Is not null", FilterOperator.IsNotNull)); + new FilterOperatorInfo("x", "Clear", FilterOperator.Clear) + }; + + return result; + } + + #endregion +} diff --git a/blazorbootstrap/Components/Grid/Grid.razor b/blazorbootstrap/Components/Grid/Grid.razor new file mode 100644 index 000000000..cc0af7639 --- /dev/null +++ b/blazorbootstrap/Components/Grid/Grid.razor @@ -0,0 +1,170 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase +@typeparam TItem + + + @ChildContent + + +@if (columns.Any()) +{ +
    + + + + @if (AllowSelection) + { + @HeaderSelectionTemplate + } + @foreach (var column in columns) + { + @column.HeaderTemplate + } + + @if (AllowFiltering) + { + + @if (AllowSelection) + { + + } + @foreach (var column in columns) + { + var columnClassList = new HashSet(); + var columnStyleList = new List(); + + columnClassList.Add(column.Class!); + if (column.Freeze) + { + columnClassList.Add("freeze-column"); + + if (column.FreezeDirection == FreezeDirection.Left) + columnStyleList.Add($"left:{column.FreezeLeftPosition.ToString(CultureInfo.InvariantCulture)}{Unit.ToCssString()}"); + else + { + columnStyleList.Add($"right:{column.FreezeRightPosition.ToString(CultureInfo.InvariantCulture)}{Unit.ToCssString()}"); + columnClassList.Add("freeze-column-right"); + } + } + + + } + + } + + + @if (requestInProgress) //|| totalCount == null + { + // show placeholders + @for (var i = 0; i < 5; i++) + { + + @for (var j = 0; j < columns.Count; j++) + { + + } + + } + } + else if (totalCount == 0) + { + // show empty + + @{ + var columnCount = AllowSelection ? columns.Count + 1 : columns.Count; + } + + + } + else if (totalCount > 0) + { + if (items != null) + { + var rowIndex = 0; + foreach (var item in items) + { + var rowClass = RowClass?.Invoke(item) ?? ""; + + @if (AllowSelection) + { + @ChildSelectionTemplate(rowIndex, item) + } + + @foreach (var column in columns) + { + @column.CellTemplate(item) + } + + rowIndex++; + } + } + } + +
    + @if (column.Filterable) + { + + } +
    + +
    + @if (EmptyDataTemplate == null) + { +
    +
    + +
    +
    @EmptyText
    +
    + } + else + { +
    + @EmptyDataTemplate +
    + } +
    +
    + + @if (AllowPaging && totalCount.HasValue && totalCount.Value > 0 && (!AutoHidePaging || (AutoHidePaging && totalCount.Value > pageSize))) + { +
    + + + @if (PageSizeSelectorVisible && PageSizeSelectorItems is not null && PageSizeSelectorItems.Any()) + { +
    +
    +
    + + @foreach (var i in PageSizeSelectorItems) + { + + } + +
    +
    @ItemsPerPageText
    +
    +
    + } + +
    + @paginationItemsText +
    +
    + } +} diff --git a/blazorbootstrap/Components/Grid/Grid.razor.cs b/blazorbootstrap/Components/Grid/Grid.razor.cs new file mode 100644 index 000000000..e04e2ed77 --- /dev/null +++ b/blazorbootstrap/Components/Grid/Grid.razor.cs @@ -0,0 +1,798 @@ +namespace BlazorBootstrap; + +public partial class Grid : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + public bool allItemsSelected = false; + + private CancellationTokenSource cancellationTokenSource = default!; + + private Dictionary checkboxIds = new(); + + private List> columns = new(); + + /// + /// Current grid state (filters, paging, sorting). + /// + internal GridState gridCurrentState = new(1, null); + + private string headerCheckboxId = default!; + + private RenderFragment? headerSelectionTemplate; + + private bool isFirstRenderComplete = false; + + private List? items = null; + + private object? lastAssignedDataOrDataProvider; + + private int pageSize; + + private bool requestInProgress = false; + + private HashSet selectedItems = new(); + + public int SelectedItemsCount = 0; + + private int? totalCount = null; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass("bb-table") + .AddClass(BootstrapClass.TableSticky, FixedHeader) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await RefreshDataAsync(firstRender); + isFirstRenderComplete = true; + } + + await base.OnAfterRenderAsync(firstRender); + } + + protected override void OnInitialized() + { + headerCheckboxId = IdGenerator.GetNextId(); + + pageSize = PageSize; + + base.OnInitialized(); + } + + protected override Task OnParametersSetAsync() + { + if ((Data is null && DataProvider is null) || (Data is not null && DataProvider is not null)) throw new ArgumentException($"Grid requires either {nameof(Data)} or {nameof(DataProvider)}, but not both or neither."); + + if (AllowPaging && PageSize < 0) + throw new ArgumentException($"{nameof(PageSize)} must be greater than zero."); + + if (isFirstRenderComplete) + { + // Perform a re-query only if the data source or something else has changed + var newDataOrDataProvider = Data; //?? (object?)DataProvider; + var dataSourceHasChanged = newDataOrDataProvider != lastAssignedDataOrDataProvider; + if (dataSourceHasChanged) lastAssignedDataOrDataProvider = newDataOrDataProvider; + + var mustRefreshData = dataSourceHasChanged && !GridSettingsChanged.HasDelegate; + + // page size changed + if (!mustRefreshData && pageSize != PageSize) + { + mustRefreshData = true; + pageSize = PageSize; + _ = ResetPageNumberAsync(); + SaveGridSettingsAsync(); + } + + // We want to trigger the first data load when we've collected the initial set of columns + // because they might perform some action, like setting the default sort order. + // It would be wasteful to have to re-query immediately. + return columns.Count > 0 && mustRefreshData ? RefreshDataAsync(false) : Task.CompletedTask; + } + + return base.OnParametersSetAsync(); + } + + /// + /// Get filters. + /// + /// IEnumerable + public IEnumerable? GetFilters() => + !AllowFiltering || columns == null || !columns.Any() + ? null + : columns + .Where(column => column.Filterable && column.GetFilterOperator() != FilterOperator.None && !string.IsNullOrWhiteSpace(column.GetFilterValue())) + ?.Select(column => new FilterItem(column.PropertyName, column.GetFilterValue(), column.GetFilterOperator(), column.StringComparison)); + + private string GetGridParentStyle() + { + var styleAttributes = new HashSet(); + + if (FixedHeader) + { + styleAttributes.Add($"height:{Height.ToString(CultureInfo.InvariantCulture)}{Unit.ToCssString()}"); + } + + return string.Join(";", styleAttributes); + } + + /// + /// Refresh the grid data. + /// + /// Task + public async Task RefreshDataAsync(CancellationToken cancellationToken = default) => await RefreshDataAsync(false, cancellationToken); + + /// + /// Reset the page number to 1 and refresh the grid. + /// + public async ValueTask ResetPageNumber() => await ResetPageNumberAsync(true); + + internal void AddColumn(GridColumn column) => columns.Add(column); + + internal async Task FilterChangedAsync() + { + if (cancellationTokenSource is not null + && !cancellationTokenSource.IsCancellationRequested) + { + cancellationTokenSource.Cancel(); + cancellationTokenSource.Dispose(); + } + + cancellationTokenSource = new CancellationTokenSource(); + + var token = cancellationTokenSource.Token; + await Task.Delay(300, token); // 300ms timeout for the debouncing + + await SaveGridSettingsAsync(); + await RefreshDataAsync(false, token); + } + + internal async Task RefreshDataAsync(bool firstRender = false, CancellationToken cancellationToken = default) + { + if (requestInProgress) + return; + + requestInProgress = true; + + if (firstRender) + await LoadGridSettingsAsync(); + + var request = new GridDataProviderRequest + { + PageNumber = AllowPaging ? gridCurrentState.PageIndex : 0, + PageSize = AllowPaging ? pageSize : 0, + Sorting = AllowSorting ? gridCurrentState.Sorting ?? GetDefaultSorting()! : null!, + Filters = AllowFiltering ? GetFilters()! : null!, + CancellationToken = cancellationToken + }; + + GridDataProviderResult result = default!; + + if (DataProvider is not null) + result = await DataProvider.Invoke(request); + else if (Data is not null) + result = request.ApplyTo(Data); + + if (result is not null) + { + items = result.Data!.ToList(); + totalCount = result.TotalCount ?? result.Data!.Count(); + } + else + { + items = new List(); + totalCount = 0; + } + + if (AllowSelection) + { + PrepareCheckboxIds(); + + if (!firstRender) + await RefreshSelectionAsync(); + } + + requestInProgress = false; + + await InvokeAsync(StateHasChanged); + } + + internal async ValueTask ResetPageNumberAsync(bool refreshGrid = false) + { + gridCurrentState = new GridState(1, gridCurrentState.Sorting); + + if (refreshGrid) + await RefreshDataAsync(false); + } + + internal async Task SortingChangedAsync(GridColumn column) + { + if (columns == null || !columns.Any()) + return; + + // check sorting enabled on any of the columns + var sortedColumn = columns.FirstOrDefault(c => c.currentSortDirection != SortDirection.None); + + // reset other columns sorting + columns.ForEach( + c => + { + if (c.Id != column.Id) + c.currentSortDirection = SortDirection.None; + + // set default sorting + if (sortedColumn == null && c.IsDefaultSortColumn) + { + if (c.Id == column.Id + && c.currentSortDirection == SortDirection.None + && c.defaultSortDirection == SortDirection.Descending) + c.currentSortDirection = SortDirection.Ascending; // Default Sorting: DESC + else + c.currentSortDirection = c.defaultSortDirection != SortDirection.None ? c.defaultSortDirection : SortDirection.Ascending; + + gridCurrentState = new GridState(gridCurrentState.PageIndex, c.GetSorting()); + } + else if (c.Id == column.Id && c.SortDirection != SortDirection.None) // TODO: this condition is not required. 1 -> ASC, 2 -> DESC, 3 -> None. Here 3 scenario is not working + { + gridCurrentState = new GridState(gridCurrentState.PageIndex, c.GetSorting()); + } + } + ); + + await SaveGridSettingsAsync(); + await RefreshDataAsync(false); + } + + private async Task CheckOrUnCheckAll() => await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.grid.checkOrUnCheckAll", $".bb-grid-form-check-{headerCheckboxId} > input.form-check-input", allItemsSelected); + + /// + /// Child selection template. + /// + private RenderFragment ChildSelectionTemplate(int rowIndex, TItem rowData) => + builder => + { + // td > div "class" > input + builder.OpenElement(101, "td"); + + builder.OpenElement(102, "div"); + builder.AddAttribute(103, "class", $"form-check bb-grid-form-check-{headerCheckboxId}"); + + builder.OpenElement(104, "input"); + builder.AddAttribute(105, "class", "form-check-input"); + builder.AddAttribute(106, "type", "checkbox"); + builder.AddAttribute(107, "role", "button"); + + if (IsItemSelected(rowData)) builder.AddAttribute(108, "checked", "checked"); + + // disable the checkbox + // remove the onchange event binding + // add disabled attribute + if (DisableRowSelection?.Invoke(rowData) ?? false) + { + builder.AddAttribute(109, "disabled", "disabled"); + } + else + { + var id = checkboxIds[rowIndex]; + builder.AddAttribute(110, "id", id); + builder.AddAttribute(111, "onchange", async (ChangeEventArgs args) => await OnRowCheckboxChanged(id, rowData, args)); + builder.AddEventStopPropagationAttribute(111, "onclick", true); + } + + builder.CloseElement(); // close: input + builder.CloseElement(); // close: div + builder.CloseElement(); // close: th + }; + + private IEnumerable>? GetDefaultSorting() => + !AllowSorting || columns == null || !columns.Any() + ? null + : columns? + .Where(column => column.CanSort() && column.IsDefaultSortColumn)? + .SelectMany(item => item.GetSorting()); + + private string GetPaginationItemsText() + { + var startRecord = (gridCurrentState.PageIndex - 1) * pageSize + 1; + var endRecord = gridCurrentState.PageIndex * pageSize; + + if (endRecord > totalCount) + endRecord = totalCount ?? 0; + + return string.Format(PaginationItemsTextFormat, startRecord, endRecord, totalCount); + } + + private int GetTotalPagesCount() + { + if (totalCount.HasValue && totalCount.Value > 0) + { + var q = totalCount.Value / pageSize; + var r = totalCount.Value % pageSize; + + return q < 1 ? 1 : q + (r > 0 ? 1 : 0); + } + + return 1; + } + + private async Task?> GridFiltersTranslationProviderAsync() + { + if (FiltersTranslationProvider is null) + return null; + + var filters = await FiltersTranslationProvider.Invoke(); + + if (filters is null || !filters.Any()) + return null; + + return filters; + } + + /// + /// Determines whether the item is already selected. + /// + /// + /// bool + private bool IsItemSelected(TItem item) => selectedItems.Contains(item); + + private async Task LoadGridSettingsAsync() + { + if (SettingsProvider is null) + return; + + var settings = await SettingsProvider.Invoke(); + + if (settings is null) + return; + + if (settings.Filters is not null && settings.Filters.Any()) + SetFilters(settings.Filters); + + if (settings.PageNumber > 0) + { + if (settings.PageSize > 0 && settings.PageNumber < settings.PageSize) + { + gridCurrentState = new GridState(settings.PageNumber, gridCurrentState.Sorting); + pageSize = settings.PageSize; + } + else + { + gridCurrentState = new GridState(1, null); + pageSize = 10; + } + } + else + { + gridCurrentState = new GridState(1, null); + pageSize = 10; + } + } + + private async Task OnHeaderCheckboxChanged(ChangeEventArgs args) + { + allItemsSelected = bool.TryParse(args?.Value?.ToString(), out var checkboxState) && checkboxState; + selectedItems = allItemsSelected ? new HashSet(items!) : new HashSet(); + SelectedItemsCount = selectedItems.Count; + await CheckOrUnCheckAll(); + + if (SelectedItemsChanged.HasDelegate) + await SelectedItemsChanged.InvokeAsync(selectedItems); + } + + private async Task OnPageChangedAsync(int newPageNumber) + { + gridCurrentState = new GridState(newPageNumber, gridCurrentState.Sorting); + await SaveGridSettingsAsync(); + await RefreshDataAsync(false); + } + + private async Task OnPageSizeChangedAsync(int newPageSize) + { + pageSize = PageSize = newPageSize; + await ResetPageNumberAsync(); + await SaveGridSettingsAsync(); + await RefreshDataAsync(false); + } + + private async Task OnRowCheckboxChanged(string id, TItem item, ChangeEventArgs args) + { + bool.TryParse(args?.Value?.ToString(), out var isChecked); + + if (SelectionMode == GridSelectionMode.Multiple) + { + _ = isChecked ? selectedItems.Add(item) : selectedItems.Remove(item); + SelectedItemsCount = selectedItems.Count; + allItemsSelected = SelectedItemsCount == (items?.Count ?? 0); + + if (allItemsSelected) + await SetCheckboxStateAsync(headerCheckboxId, CheckboxState.Checked); + else if (SelectedItemsCount == 0) + await SetCheckboxStateAsync(headerCheckboxId, CheckboxState.Unchecked); + else + await SetCheckboxStateAsync(headerCheckboxId, CheckboxState.Indeterminate); + } + else + { + selectedItems = isChecked ? new HashSet { item } : new HashSet(); + SelectedItemsCount = selectedItems.Count; + allItemsSelected = false; + await CheckOrUnCheckAll(); + await SetCheckboxStateAsync(id, isChecked ? CheckboxState.Checked : CheckboxState.Unchecked); + } + + if (SelectedItemsChanged.HasDelegate) + await SelectedItemsChanged.InvokeAsync(selectedItems); + } + + private async Task OnScroll(EventArgs e) + { + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.grid.scroll", Id); + } + + private void PrepareCheckboxIds() + { + checkboxIds ??= new Dictionary(); + var currentLength = checkboxIds.Count; + var itemsCount = (items?.Count ?? 0); + + if (currentLength < itemsCount) + for (var i = currentLength; i < itemsCount; i++) + checkboxIds[i] = IdGenerator.GetNextId(); + } + + /// + /// Refresh selection + /// + private async Task RefreshSelectionAsync() + { + selectedItems = (items?.Count ?? 0) == 0 + ? new HashSet() + : selectedItems?.Intersect(items!).ToHashSet() ?? new HashSet(); + + SelectedItemsCount = selectedItems.Count; + allItemsSelected = SelectedItemsCount > 0 && items!.Count == SelectedItemsCount; + + if (allItemsSelected) + await SetCheckboxStateAsync(headerCheckboxId, CheckboxState.Checked); + else if (SelectedItemsCount > 0) + await SetCheckboxStateAsync(headerCheckboxId, CheckboxState.Indeterminate); + else + await SetCheckboxStateAsync(headerCheckboxId, CheckboxState.Unchecked); + + if (SelectedItemsChanged.HasDelegate) + await SelectedItemsChanged.InvokeAsync(selectedItems); + } + + private async Task RowClick(TItem item, EventArgs args) + { + if (AllowRowClick && OnRowClick.HasDelegate) + await OnRowClick.InvokeAsync(new GridRowEventArgs(item)); + } + + private async Task RowDoubleClick(TItem item, EventArgs args) + { + if (AllowRowClick && OnRowDoubleClick.HasDelegate) + await OnRowDoubleClick.InvokeAsync(new GridRowEventArgs(item)); + } + + private Task SaveGridSettingsAsync() + { + if (!GridSettingsChanged.HasDelegate) + return Task.CompletedTask; + + var settings = new GridSettings { PageNumber = AllowPaging ? gridCurrentState.PageIndex : 0, PageSize = AllowPaging ? pageSize : 0, Filters = AllowFiltering ? GetFilters() : null }; + + return GridSettingsChanged.InvokeAsync(settings); + } + + private async Task SetCheckboxStateAsync(string id, CheckboxState checkboxState) => await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.grid.setSelectAllCheckboxState", id, (int)checkboxState); + + /// + /// Set filters. + /// + /// + private void SetFilters(IEnumerable filterItems) + { + if (filterItems is null || !filterItems.Any()) + return; + + foreach (var item in filterItems) + { + var column = columns.Where(x => x.PropertyName == item.PropertyName).FirstOrDefault(); + + if (column != null) + { + var allowedFilterOperators = FilterOperatorHelper.GetFilterOperators(column.GetPropertyTypeName()); + + if (allowedFilterOperators != null && allowedFilterOperators.Any(x => x.FilterOperator == item.Operator)) + { + column.SetFilterOperator(item.Operator); + column.SetFilterValue(item.Value); + } + } + } + } + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the grid delete. + /// + //[Parameter] public int AllowDelete { get; set; } + + /// + /// Gets or sets the grid edit. + /// + //[Parameter] public int AllowEdit { get; set; } + + /// + /// Gets or sets the grid filtering. + /// + [Parameter] + public bool AllowFiltering { get; set; } + + /// + /// Gets or sets the grid paging. + /// + [Parameter] + public bool AllowPaging { get; set; } + + /// + /// Gets or sets the allow row click. + /// + [Parameter] + public bool AllowRowClick { get; set; } + + /// + /// Gets or sets the grid selection. + /// + [Parameter] + public bool AllowSelection { get; set; } + + /// + /// Gets or sets the grid sorting. + /// + [Parameter] + public bool AllowSorting { get; set; } + + /// + /// Automatically hides the paging controls when the grid item count is less than or equal to the and this property is set to `true`. + /// + [Parameter] + public bool AutoHidePaging { get; set; } + + /// + /// Gets or sets the content to be rendered within the component. + /// + [Parameter] + public RenderFragment ChildContent { get; set; } = default!; + + /// + /// Gets or sets the grid data. + /// + [Parameter] + public IEnumerable Data { get; set; } = default!; + + /// + /// DataProvider is for items to render. + /// The provider should always return an instance of 'GridDataProviderResult', and 'null' is not allowed. + /// + [Parameter] + public GridDataProviderDelegate DataProvider { get; set; } = default!; + + /// + /// Enable or disable the header checkbox selection. + /// + [Parameter] + public Func, bool>? DisableAllRowsSelection { get; set; } + + /// + /// Enable or disable the row level checkbox selection. + /// + [Parameter] + public Func? DisableRowSelection { get; set; } + + /// + /// Template to render when there are no rows to display. + /// + public RenderFragment EmptyDataTemplate { get; set; } = default!; + + /// + /// Shows text on no records. + /// + [Parameter] + public string EmptyText { get; set; } = "No records to display"; + + /// + /// Gets or sets the filters row css class. + /// + [Parameter] + public string FiltersRowCssClass { get; set; } = default!; + + /// + /// Filters transalation is for grid filters to render. + /// The provider should always return a 'FilterOperatorInfo' collection, and 'null' is not allowed. + /// + [Parameter] + public GridFiltersTranslationDelegate FiltersTranslationProvider { get; set; } = default!; + + /// + /// Gets or sets the grid fixed header. + /// + [Parameter] + public bool FixedHeader { get; set; } + + private string gridParentStyle => GetGridParentStyle(); + + /// + /// This event is fired when the grid state is changed. + /// + [Parameter] + public EventCallback GridSettingsChanged { get; set; } + + /// + /// Gets or sets the header row css class but not the thead tag class. + /// + [Parameter] + public string HeaderRowCssClass { get; set; } = default!; + + /// + /// Header selection template. + /// + private RenderFragment HeaderSelectionTemplate => + headerSelectionTemplate ??= builder => + { + // th "style" > div "class" > input + builder.OpenElement(101, "th"); + builder.AddAttribute(102, "style", "width: 2rem;"); + + if (SelectionMode == GridSelectionMode.Multiple) + { + builder.OpenElement(103, "div"); + builder.AddAttribute(104, "class", "form-check"); + + builder.OpenElement(105, "input"); + builder.AddAttribute(106, "class", "form-check-input"); + builder.AddAttribute(107, "type", "checkbox"); + builder.AddAttribute(108, "role", "button"); + + // disable the checkbox + // remove the onchange event binding + // add disabled attribute + if (DisableAllRowsSelection?.Invoke(items!) ?? false) + { + builder.AddAttribute(109, "disabled", "disabled"); + } + else + { + builder.AddAttribute(110, "id", headerCheckboxId); + builder.AddAttribute(111, "onchange", async (ChangeEventArgs args) => await OnHeaderCheckboxChanged(args)); + builder.AddEventStopPropagationAttribute(112, "onclick", true); + } + + builder.CloseElement(); // close: input + builder.CloseElement(); // close: div + } + + builder.CloseElement(); // close: th + }; + + /// + /// Gets or sets the grid height. + /// + [Parameter] + public float Height { get; set; } = 320; + + [Parameter] + //[EditorRequired] + public string ItemsPerPageText { get; set; } = "Items per page"!; + + /// + /// This event is triggered when the user clicks on the row. + /// Set AllowRowClick to true to enable row clicking. + /// + [Parameter] + public EventCallback> OnRowClick { get; set; } + + /// + /// This event is triggered when the user double clicks on the row. + /// Set AllowRowClick to true to enable row double clicking. + /// + [Parameter] + public EventCallback> OnRowDoubleClick { get; set; } + + /// + /// Gets or sets the page size of the grid. + /// + [Parameter] + public int PageSize { get; set; } = 10; + + /// + /// Gets or sets the page size selector items. + /// + [Parameter] + //[EditorRequired] + public int[] PageSizeSelectorItems { get; set; } = { 10, 20, 50 }; + + /// + /// Gets or sets the page size selector visible. + /// + [Parameter] + public bool PageSizeSelectorVisible { get; set; } + + [Obsolete("PaginationAlignment parameter is not supported from 1.8.0 version onwards")] + /// + /// Gets or sets the pagination alignment. + /// + [Parameter] + public Alignment PaginationAlignment { get; set; } = Alignment.Start; + + private string paginationItemsText => GetPaginationItemsText(); + + /// + /// Gets or sets the pagination items text format. + /// + [Parameter] + //[EditorRequired] + public string PaginationItemsTextFormat { get; set; } = "{0} - {1} of {2} items"!; + + /// + /// Gets or sets a value indicating whether Grid is responsive. + /// + [Parameter] + public bool Responsive { get; set; } + + private string responsiveCssClass => Responsive ? "table-responsive" : ""; + + /// + /// Gets or sets the row class. + /// + [Parameter] + public Func? RowClass { get; set; } + + /// + /// This event is fired when the item selection changes. + /// + [Parameter] + public EventCallback> SelectedItemsChanged { get; set; } + + /// + /// Gets or sets the grid selection mode. + /// + [Parameter] + public GridSelectionMode SelectionMode { get; set; } = GridSelectionMode.Single; + + /// + /// Settings is for grid to render. + /// The provider should always return an instance of 'GridSettings', and 'null' is not allowed. + /// + [Parameter] + public GridSettingsProviderDelegate SettingsProvider { get; set; } = default!; + + /// + /// Gets or sets the thead css class. + /// + [Parameter] + public string? THeadCssClass { get; set; } + + /// + /// Gets or sets the units. + /// + [Parameter] + public Unit Unit { get; set; } = Unit.Px; + + private int totalPages => GetTotalPagesCount(); + + #endregion +} diff --git a/blazorbootstrap/Components/Grid/GridColumn.razor b/blazorbootstrap/Components/Grid/GridColumn.razor new file mode 100644 index 000000000..1674383a5 --- /dev/null +++ b/blazorbootstrap/Components/Grid/GridColumn.razor @@ -0,0 +1,3 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase +@typeparam TItem diff --git a/blazorbootstrap/Components/Grid/GridColumn.razor.cs b/blazorbootstrap/Components/Grid/GridColumn.razor.cs new file mode 100644 index 000000000..4bb6fcd5c --- /dev/null +++ b/blazorbootstrap/Components/Grid/GridColumn.razor.cs @@ -0,0 +1,398 @@ +namespace BlazorBootstrap; + +public partial class GridColumn : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private RenderFragment? cellTemplate; + + internal SortDirection currentSortDirection; + + internal SortDirection defaultSortDirection; + + private FilterOperator filterOperator; + + private string filterValue = default!; + + private RenderFragment? headerTemplate; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class).Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + protected override async Task OnInitializedAsync() + { + Id = IdGenerator.GetNextId(); // Required + + filterOperator = FilterOperator; + filterValue = FilterValue; + + currentSortDirection = SortDirection; + defaultSortDirection = SortDirection; + + if (IsDefaultSortColumn && SortDirection == SortDirection.None) + currentSortDirection = SortDirection = SortDirection.Ascending; + + Parent.AddColumn(this); + + await base.OnInitializedAsync(); + } + + protected override void OnParametersSet() => SetDefaultFilter(); + + internal bool CanSort() => Parent is not null && Parent.AllowSorting && Sortable && SortKeySelector is not null; + + internal FilterOperator GetFilterOperator() => filterOperator; + + internal string GetFilterValue() => filterValue; + + internal string GetPropertyTypeName() => typeof(TItem).GetPropertyTypeName(PropertyName); + + internal IEnumerable> GetSorting() + { + if (SortKeySelector == null && string.IsNullOrWhiteSpace(SortString)) + yield break; + + yield return new SortingItem(SortString, SortKeySelector!, currentSortDirection); + } + + internal async Task OnFilterChangedAsync(FilterEventArgs args, GridColumn column) + { + if (filterValue != args.Text || filterOperator != args.FilterOperator) + await Parent.ResetPageNumberAsync(); + + filterValue = args.Text; + filterOperator = args.FilterOperator; + await Parent.FilterChangedAsync(); + } + + internal void SetDefaultFilter() + { + var propertyTypeName = GetPropertyTypeName(); + + if (propertyTypeName is StringConstants.PropertyTypeNameInt16 + or StringConstants.PropertyTypeNameInt32 + or StringConstants.PropertyTypeNameInt64 + or StringConstants.PropertyTypeNameSingle // float + or StringConstants.PropertyTypeNameDecimal + or StringConstants.PropertyTypeNameDouble) + { + if (filterOperator == FilterOperator.None) + FilterOperator = filterOperator = FilterOperator.Equals; + } + else if (propertyTypeName is StringConstants.PropertyTypeNameString + or StringConstants.PropertyTypeNameChar) + { + if (filterOperator == FilterOperator.None) + FilterOperator = filterOperator = FilterOperator.Contains; + } + else if (propertyTypeName is StringConstants.PropertyTypeNameDateOnly + or StringConstants.PropertyTypeNameDateTime) + { + if (filterOperator == FilterOperator.None) + FilterOperator = filterOperator = FilterOperator.Equals; + } + else if (propertyTypeName == StringConstants.PropertyTypeNameBoolean) + { + if (filterOperator == FilterOperator.None) + FilterOperator = filterOperator = FilterOperator.Equals; + } + } + + internal void SetFilterOperator(FilterOperator filterOperator) => FilterOperator = this.filterOperator = filterOperator; + + internal void SetFilterValue(string filterValue) => FilterValue = this.filterValue = filterValue; + + private async Task OnSortClickAsync() + { + // toggle the direction + if (currentSortDirection == SortDirection.Ascending) + currentSortDirection = SortDirection = SortDirection.Descending; + else if (currentSortDirection == SortDirection.Descending) + currentSortDirection = SortDirection = SortDirection.None; + else if (currentSortDirection == SortDirection.None) + currentSortDirection = SortDirection = SortDirection.Ascending; + + await Parent.SortingChangedAsync(this); + } + + #endregion + + #region Properties, Indexers + + /// + /// Cell template. + /// + internal RenderFragment CellTemplate => + cellTemplate ??= rowData => builder => + { + builder.OpenElement(100, "td"); + + var classList = new List(); + + // default class names + if (!string.IsNullOrWhiteSpace(ClassNames)) + classList.Add(ClassNames); + + // text alignment + if (TextAlignment != Alignment.None) + classList.Add(TextAlignment.ToTextAlignmentClass()); + + // text nowrap + if (TextNoWrap) + classList.Add(BootstrapClass.TextNoWrap); + + // custom column class + var columnClass = ColumnClass?.Invoke(rowData) ?? ""; + + if (!string.IsNullOrWhiteSpace(columnClass)) + classList.Add(columnClass); + + if (Freeze) + { + classList.Add("freeze-column"); + + var styleList = new List(); + + if (FreezeDirection == FreezeDirection.Left) + styleList.Add($"left:{FreezeLeftPosition.ToString(CultureInfo.InvariantCulture)}{Parent.Unit.ToCssString()}"); + else + { + styleList.Add($"right:{FreezeRightPosition.ToString(CultureInfo.InvariantCulture)}{Parent.Unit.ToCssString()}"); + + classList.Add("freeze-column-right"); + } + + builder.AddAttribute(101, "style", string.Join(";", styleList)); + } + + if (classList.Any()) + builder.AddAttribute(102, "class", string.Join(" ", classList)); + + builder.AddContent(103, ChildContent, rowData); + builder.CloseElement(); + }; + + /// + /// Specifies the content to be rendered inside the grid column. + /// + [Parameter] + public RenderFragment ChildContent { get; set; } = default!; + + /// + /// Gets or sets the column class. + /// + [Parameter] + public Func? ColumnClass { get; set; } + + /// + /// Enable or disable the filter on a specific column. + /// The filter is enabled or disabled based on the grid `AllowFiltering` parameter. + /// + [Parameter] + public bool Filterable { get; set; } = true; + + /// + /// Gets or sets the filter operator. + /// + [Parameter] + public FilterOperator FilterOperator { get; set; } + + /// + /// Gets or sets the filter textbox width in pixels. + /// + [Parameter] + public int FilterTextboxWidth { get; set; } + + /// + /// Gets or sets the filter value. + /// + [Parameter] + public string FilterValue { get; set; } = default!; + + /// + /// Indicates whether the column is frozen. + /// + [Parameter] + public bool Freeze { get; set; } + + /// + /// Gets or sets the freeze direction of the column. + /// + [Parameter] + public FreezeDirection FreezeDirection { get; set; } + + /// + /// Gets or sets the horizontal position of the column from left. It has no effect on non-positioned columns. + /// + [Parameter] + public double FreezeLeftPosition { get; set; } + + /// + /// Gets or sets the horizontal position of the column from right. It has no effect on non-positioned columns. + /// + [Parameter] + public double FreezeRightPosition { get; set; } + + /// + /// Specifies the content to be rendered inside the grid column header. + /// + [Parameter] + public RenderFragment HeaderContent { get; set; } = default!; + + /// + /// Header template. + /// + internal RenderFragment HeaderTemplate => + headerTemplate ??= builder => + { + // th > span "title", span > i "icon" + builder.OpenElement(101, "th"); + + var classList = new List(); + + // default class names + if (!string.IsNullOrWhiteSpace(ClassNames)) + classList.Add(ClassNames); + + if (HeaderContent is null && HeaderTextAlignment != Alignment.None) + classList.Add(HeaderTextAlignment.ToTextAlignmentClass()); + + if (Freeze) + { + classList.Add("freeze-column"); + + var styleList = new List(); + + if (FreezeDirection == FreezeDirection.Left) + styleList.Add($"left:{FreezeLeftPosition.ToString(CultureInfo.InvariantCulture)}{Parent.Unit.ToCssString()}"); + else + { + styleList.Add($"right:{FreezeRightPosition.ToString(CultureInfo.InvariantCulture)}{Parent.Unit.ToCssString()}"); + + classList.Add("freeze-column-right"); + } + + builder.AddAttribute(102, "style", string.Join(";", styleList)); + } + + builder.AddAttribute(103, "class", string.Join(" ", classList)); + + if (HeaderContent is null) + { + if (CanSort()) + { + builder.AddAttribute(104, "role", "button"); + builder.AddAttribute(105, "onclick", async () => await OnSortClickAsync()); + } + + builder.OpenElement(106, "span"); // open: span + builder.AddAttribute(107, "class", "me-2"); + builder.AddContent(108, HeaderText); + builder.CloseElement(); // close: span + + if (CanSort()) + { + builder.OpenElement(109, "span"); // open: span + builder.OpenElement(110, "i"); // open: i + + var sortIcon = "bi bi-arrow-down-up"; // default icon + + if (currentSortDirection is not SortDirection.None and SortDirection.Ascending) + sortIcon = "bi bi-sort-alpha-down"; + else if (currentSortDirection is not SortDirection.None and SortDirection.Descending) + sortIcon = "bi bi-sort-alpha-down-alt"; + + builder.AddAttribute(111, "class", sortIcon); + builder.CloseElement(); // close: i + builder.CloseElement(); // close: span + } + } + else + { + // If headercontent is used, filters and sorting wont be added. + builder.AddContent(112, HeaderContent); + } + + builder.CloseElement(); // close: th + }; + + /// + /// Gets or sets the table column header. + /// + [Parameter] + public string HeaderText { get; set; } = default!; + + /// + /// Gets or sets the header text alignment. + /// + [Parameter] + public Alignment HeaderTextAlignment { get; set; } + + /// + /// Gets or sets the default sort column. + /// + [Parameter] + public bool IsDefaultSortColumn { get; set; } = false; + + [CascadingParameter] + public Grid Parent { get; set; } = default!; + + /// + /// Gets or sets the property name. + /// This is required when `AllowFiltering` is true. + /// + [Parameter] + public string PropertyName { get; set; } = default!; + + /// + /// Enable or disable the sorting on a specific column. + /// The sorting is enabled or disabled based on the `AllowSorting` parameter on the grid. + /// + [Parameter] + public bool Sortable { get; set; } = true; + + /// + /// Gets or sets the default sort direction of a column. + /// + [Parameter] + public SortDirection SortDirection { get; set; } = SortDirection.None; + + /// + /// Expression used for sorting. + /// + [Parameter] + public Expression> SortKeySelector { get; set; } = default!; + + /// + /// Gets or sets the column sort string. + /// This value will be passed to the backend/API for sorting. + /// And this property is ignored for the client-side sorting. + /// + [Parameter] + public string SortString { get; set; } = default!; + + /// + /// Gets or sets the StringComparison. + /// + [Parameter] + public StringComparison StringComparison { get; set; } = StringComparison.OrdinalIgnoreCase; + + /// + /// Gets or sets the text alignment. + /// + [Parameter] + public Alignment TextAlignment { get; set; } + + /// + /// Gets or sets text nowrap. + /// + [Parameter] + public bool TextNoWrap { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Components/Grid/GridColumnFilter.razor b/blazorbootstrap/Components/Grid/GridColumnFilter.razor new file mode 100644 index 000000000..06e628cea --- /dev/null +++ b/blazorbootstrap/Components/Grid/GridColumnFilter.razor @@ -0,0 +1,59 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
    + + + + @if (PropertyTypeName == StringConstants.PropertyTypeNameInt16 + || PropertyTypeName == StringConstants.PropertyTypeNameInt32 + || PropertyTypeName == StringConstants.PropertyTypeNameInt64 + || PropertyTypeName == StringConstants.PropertyTypeNameSingle // float + || PropertyTypeName == StringConstants.PropertyTypeNameDecimal + || PropertyTypeName == StringConstants.PropertyTypeNameDouble) + { + + } + else if (PropertyTypeName == StringConstants.PropertyTypeNameDateOnly) + { + + } + else if (PropertyTypeName == StringConstants.PropertyTypeNameDateTime) + { + + } + else if (PropertyTypeName == StringConstants.PropertyTypeNameBoolean) + { + + } + else // string + { + + } +
    diff --git a/blazorbootstrap/Components/Grid/GridColumnFilter.razor.cs b/blazorbootstrap/Components/Grid/GridColumnFilter.razor.cs new file mode 100644 index 000000000..a8e68931e --- /dev/null +++ b/blazorbootstrap/Components/Grid/GridColumnFilter.razor.cs @@ -0,0 +1,182 @@ +namespace BlazorBootstrap; + +public partial class GridColumnFilter : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private FilterOperator filterOperator; + + private IEnumerable? filterOperators; + + private string? filterValue; + + private string? selectedFilterSymbol; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class).Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + protected override async Task OnInitializedAsync() + { + filterOperators = await GetFilterOperatorsAsync(PropertyTypeName!); + filterOperator = FilterOperator; + filterValue = FilterValue; + + await base.OnInitializedAsync(); + } + + protected override void OnParametersSet() + { + SetDefaultFilter(); + SetSelectedFilterSymbol(); + } + + internal void SetDefaultFilter() + { + if (PropertyTypeName is StringConstants.PropertyTypeNameInt16 + or StringConstants.PropertyTypeNameInt32 + or StringConstants.PropertyTypeNameInt64 + or StringConstants.PropertyTypeNameSingle // float + or StringConstants.PropertyTypeNameDecimal + or StringConstants.PropertyTypeNameDouble) + { + if (filterOperator is FilterOperator.None or FilterOperator.Clear) + filterOperator = FilterOperator.Equals; + } + else if (PropertyTypeName is StringConstants.PropertyTypeNameString + or StringConstants.PropertyTypeNameChar) + { + if (filterOperator is FilterOperator.None or FilterOperator.Clear) + filterOperator = FilterOperator.Contains; + } + else if (PropertyTypeName is StringConstants.PropertyTypeNameDateOnly + or StringConstants.PropertyTypeNameDateTime) + { + if (filterOperator is FilterOperator.None or FilterOperator.Clear) + filterOperator = FilterOperator.Equals; + } + else if (PropertyTypeName == StringConstants.PropertyTypeNameBoolean) + { + if (filterOperator is FilterOperator.None or FilterOperator.Clear) + filterOperator = FilterOperator.Equals; + } + } + + private async Task> GetFilterOperatorsAsync(string propertyTypeName) + { + if (FiltersTranslationProvider is null) + return FilterOperatorHelper.GetFilterOperators(PropertyTypeName!); + + var filters = await FiltersTranslationProvider.Invoke(); + + if (!(filters?.Any() ?? false)) + return FilterOperatorHelper.GetFilterOperators(PropertyTypeName!); + + return FilterOperatorHelper.GetFilterOperators(PropertyTypeName!, filters!); + } + + private async Task OnFilterOperatorChangedAsync(FilterOperatorInfo filterOperatorInfo) + { + if (filterOperatorInfo.FilterOperator == FilterOperator.Clear) + { + SetDefaultFilter(); + + if (PropertyTypeName == StringConstants.PropertyTypeNameBoolean) + filterValue = null; + else + filterValue = string.Empty; + } + else + { + filterOperator = filterOperatorInfo.FilterOperator; + } + + SetSelectedFilterSymbol(); + + if (GridColumnFilterChanged.HasDelegate) + await GridColumnFilterChanged.InvokeAsync(new FilterEventArgs(filterValue!, filterOperator)); + } + + private async Task OnFilterValueChangedAsync(ChangeEventArgs args) + { + filterValue = args?.Value?.ToString(); + + if (GridColumnFilterChanged.HasDelegate) + await GridColumnFilterChanged.InvokeAsync(new FilterEventArgs(filterValue!, filterOperator)); + } + + private void SetSelectedFilterSymbol() + { + if (PropertyTypeName is StringConstants.PropertyTypeNameInt16 + or StringConstants.PropertyTypeNameInt32 + or StringConstants.PropertyTypeNameInt64 + or StringConstants.PropertyTypeNameSingle // float + or StringConstants.PropertyTypeNameDecimal + or StringConstants.PropertyTypeNameDouble) + selectedFilterSymbol = filterOperators?.FirstOrDefault(x => x.FilterOperator == filterOperator)?.Symbol; + else if (PropertyTypeName is StringConstants.PropertyTypeNameString + or StringConstants.PropertyTypeNameChar) + selectedFilterSymbol = filterOperators?.FirstOrDefault(x => x.FilterOperator == filterOperator)?.Symbol; + else if (PropertyTypeName is StringConstants.PropertyTypeNameDateOnly + or StringConstants.PropertyTypeNameDateTime) + selectedFilterSymbol = filterOperators?.FirstOrDefault(x => x.FilterOperator == filterOperator)?.Symbol; + else if (PropertyTypeName == StringConstants.PropertyTypeNameBoolean) selectedFilterSymbol = filterOperators?.FirstOrDefault(x => x.FilterOperator == filterOperator)?.Symbol; + } + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets filter operator. + /// + [Parameter] + public FilterOperator FilterOperator { get; set; } + + /// + /// Filters transalation is for grid filters to render. + /// The provider should always return a 'FilterOperatorInfo' collection, and 'null' is not allowed. + /// + [Parameter] + public GridFiltersTranslationDelegate FiltersTranslationProvider { get; set; } = default!; + + private string filterStyle => FilterWidth > 0 ? $"width:{FilterWidth.ToString(CultureInfo.InvariantCulture)}{Unit};" : ""; + + /// + /// Gets or sets filter value. + /// + [Parameter] + public string? FilterValue { get; set; } + + /// + /// Gets or sets the filter textbox width. + /// + [Parameter] + public int FilterWidth { get; set; } + + /// + /// Gets or sets the grid fixed header. + /// + [Parameter] + public bool FixedHeader { get; set; } + + [Parameter] public EventCallback GridColumnFilterChanged { get; set; } + + /// + /// Gets or sets the filter property name. + /// + [Parameter] + public string? PropertyTypeName { get; set; } + + /// + /// Gets or sets the units. + /// + [Parameter] + public Unit Unit { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Components/Grid/GridSettings.cs b/blazorbootstrap/Components/Grid/GridSettings.cs new file mode 100644 index 000000000..9bdda35bc --- /dev/null +++ b/blazorbootstrap/Components/Grid/GridSettings.cs @@ -0,0 +1,23 @@ +namespace BlazorBootstrap; + +public class GridSettings +{ + #region Properties, Indexers + + /// + /// Current filters. + /// + public IEnumerable? Filters { get; set; } + + /// + /// Page number. + /// + public int PageNumber { get; set; } + + /// + /// Size of the page. + /// + public int PageSize { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Components/Icon/Icon.razor b/blazorbootstrap/Components/Icon/Icon.razor new file mode 100644 index 000000000..2bf41587f --- /dev/null +++ b/blazorbootstrap/Components/Icon/Icon.razor @@ -0,0 +1,4 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + + diff --git a/blazorbootstrap/Components/Icon/Icon.razor.cs b/blazorbootstrap/Components/Icon/Icon.razor.cs new file mode 100644 index 000000000..3cf2359be --- /dev/null +++ b/blazorbootstrap/Components/Icon/Icon.razor.cs @@ -0,0 +1,46 @@ +namespace BlazorBootstrap; + +public partial class Icon : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapIconProvider.Icon(), string.IsNullOrWhiteSpace(CustomIconName)) + .AddClass(BootstrapIconProvider.Icon(Name), string.IsNullOrWhiteSpace(CustomIconName)) + .AddClass(CustomIconName!, !string.IsNullOrWhiteSpace(CustomIconName)) + .AddClass(BootstrapIconProvider.IconSize(Size)!, Size != IconSize.None) + .AddClass(Color.ToIconColorClass(), Color != IconColor.None) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the icon color. + /// + [Parameter] + public IconColor Color { get; set; } = IconColor.None; + + /// + /// Icon name that can be either a string or . + /// + [Parameter] + public string? CustomIconName { get; set; } + + /// + /// Icon name that can be either a string or . + /// + [Parameter] + public IconName Name { get; set; } = IconName.None; + + /// + /// Defines the icon size. + /// + [Parameter] + public IconSize Size { get; set; } = IconSize.None; + + #endregion +} diff --git a/blazorbootstrap/Components/Modals/Modal.razor b/blazorbootstrap/Components/Modals/Modal.razor new file mode 100644 index 000000000..3fac49436 --- /dev/null +++ b/blazorbootstrap/Components/Modals/Modal.razor @@ -0,0 +1,62 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
    + +
    diff --git a/blazorbootstrap/Components/Modals/Modal.razor.cs b/blazorbootstrap/Components/Modals/Modal.razor.cs new file mode 100644 index 000000000..9e4e0273b --- /dev/null +++ b/blazorbootstrap/Components/Modals/Modal.razor.cs @@ -0,0 +1,363 @@ +namespace BlazorBootstrap; + +public partial class Modal : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private Type? childComponent = default!; + + private IconColor closeIconColor; + + private ButtonColor footerButtonColor = ButtonColor.Secondary; + + private string footerButtonCSSClass = string.Empty; + + private string footerButtonText = string.Empty; + + private bool isVisible; + + private ModalType modalType = ModalType.Light; + + private DotNetObjectReference objRef = default!; + + private Dictionary parameters = default!; + + private bool showFooterButton = false; + + private ModalSize size = ModalSize.Regular; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.Modal) + .AddClass(BootstrapClass.ModalFade) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + /// + protected override async ValueTask DisposeAsyncCore(bool disposing) + { + if (disposing) + { + try + { + if (IsRenderComplete) + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.modal.dispose", Id); + } + catch (JSDisconnectedException) + { + // do nothing + } + + objRef?.Dispose(); + + if (ModalService is not null && IsServiceModal) + ModalService.OnShow -= OnShowAsync; + } + + await base.DisposeAsyncCore(disposing); + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.modal.initialize", Id, UseStaticBackdrop, CloseOnEscape, objRef); + + await base.OnAfterRenderAsync(firstRender); + } + + protected override async Task OnInitializedAsync() + { + objRef ??= DotNetObjectReference.Create(this); + + if (ModalService is not null && IsServiceModal) + ModalService.OnShow += OnShowAsync; + + await base.OnInitializedAsync(); + } + + [JSInvokable] + public async Task bsHiddenModal() + { + await OnHidden.InvokeAsync(); + + if (ModalService is not null && IsServiceModal) + ModalService.OnClose(); + } + + [JSInvokable] + public async Task bsHideModal() => await OnHiding.InvokeAsync(); + + [JSInvokable] + public async Task bsHidePreventedModal() => await OnHidePrevented.InvokeAsync(); + + [JSInvokable] + public async Task bsShowModal() => await OnShowing.InvokeAsync(); + + [JSInvokable] + public async Task bsShownModal() => await OnShown.InvokeAsync(); + + /// + /// Hides a modal. + /// + public async Task HideAsync() + { + isVisible = false; + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.modal.hide", Id); + } + + /// + /// Opens a modal. + /// + public async Task ShowAsync() => await ShowAsync(null, null, null, null); + + /// + /// Opens a modal. + /// + /// + /// + /// + /// + public async Task ShowAsync(string title, string? message = null, Dictionary? parameters = null) => await ShowAsync(title, message, typeof(T), parameters); + + private Task OnShowAsync(ModalOption modalOption) + { + if (modalOption is null) + throw new ArgumentNullException(nameof(modalOption)); + + modalType = modalOption.Type; + + Size = modalOption.Size; + + IsVerticallyCentered = modalOption.IsVerticallyCentered; + + showFooterButton = modalOption.ShowFooterButton; + + if (showFooterButton) + { + footerButtonColor = modalOption.FooterButtonColor; + footerButtonCSSClass = modalOption.FooterButtonCSSClass; + footerButtonText = modalOption.FooterButtonText; + FooterCssClass = "border-top-0"; + } + + return ShowAsync(modalOption.Title, modalOption.Message, null, null); + } + + private async Task ShowAsync(string? title, string? message, Type? type, Dictionary? parameters) + { + isVisible = true; + + if (!string.IsNullOrWhiteSpace(title)) + Title = title; + + if (!string.IsNullOrWhiteSpace(message)) + Message = message; + + childComponent = type; + + this.parameters = parameters!; + + await InvokeAsync(StateHasChanged); + + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.modal.show", Id); + } + + #endregion + + #region Properties, Indexers + + /// + /// Additional body CSS class. + /// + [Parameter] + public string BodyCssClass { get; set; } = default!; + + /// + /// Body template. + /// + [Parameter] + public RenderFragment BodyTemplate { get; set; } = default!; + + /// + /// Gets or sets the close icon color. + /// + [Parameter] + public IconColor CloseIconColor + { + get => closeIconColor; + set + { + closeIconColor = value; + } + } + + /// + /// Indicates whether the modal closes when escape key is pressed. + /// Default value is true. + /// + [Parameter] + public bool CloseOnEscape { get; set; } = true; + + /// + /// Additional CSS class for the dialog (div.modal-dialog element). + /// + [Parameter] + public string DialogCssClass { get; set; } = default!; + + /// + /// Footer css class. + /// + [Parameter] + public string FooterCssClass { get; set; } = default!; + + /// + /// Footer template. + /// + [Parameter] + public RenderFragment FooterTemplate { get; set; } = default!; + + /// + /// Fullscreen behavior of the modal. Default is . + /// + [Parameter] + public ModalFullscreen Fullscreen { get; set; } = ModalFullscreen.Disabled; + + /// + /// Additional header CSS class. + /// + [Parameter] + public string HeaderCssClass { get; set; } = default!; + + private string headerCssClassInternal => modalType.ToModalHeaderColorClass(); + + /// + /// Header template. + /// + [Parameter] + public RenderFragment HeaderTemplate { get; set; } = default!; + + /// + /// Allows modal body scroll. + /// + [Parameter] + public bool IsScrollable { get; set; } + + /// + /// Indicates whether the modal is related to a modal service or not. + /// + [Parameter] + public bool IsServiceModal { get; set; } = false; + + /// + /// Shows the modal vertically in the center. + /// + [Parameter] + public bool IsVerticallyCentered { get; set; } + + /// + /// Message in modal body. + /// + [Parameter] + public string Message { get; set; } = default!; + + private string modalFullscreen => Fullscreen.ToModalFullscreenClass(); + + [Inject] private ModalService ModalService { get; set; } = default!; + + private string modalSize => Size.ToModalSizeClass(); + + /// + /// Gets or sets the modal type. + /// + [Parameter] + public ModalType ModalType + { + get => modalType; + set + { + modalType = value; + } + } + + /// + /// This event is fired when an offcanvas element has been hidden from the user (will wait for CSS transitions to + /// complete). + /// + [Parameter] + public EventCallback OnHidden { get; set; } + + /// + /// This event is fired when the modal is shown, its backdrop is static and a click outside the modal or an escape key + /// press is performed with the keyboard option or data-bs-keyboard set to false. + /// + [Parameter] + public EventCallback OnHidePrevented { get; set; } + + /// + /// This event is fired immediately when the hide method has been called. + /// + [Parameter] + public EventCallback OnHiding { get; set; } + + /// + /// This event fires immediately when the show instance method is called. + /// + [Parameter] + public EventCallback OnShowing { get; set; } + + /// + /// This event is fired when an offcanvas element has been made visible to the user (will wait for CSS transitions to + /// complete). + /// + [Parameter] + public EventCallback OnShown { get; set; } + + private string scrollable => IsScrollable ? "modal-dialog-scrollable" : ""; + + /// + /// Indicates whether the modal shows close button in header. + /// Default value is true. + /// + [Parameter] + public bool ShowCloseButton { get; set; } = true; + + /// + /// Size of the modal. Default is . + /// + [Parameter] + public ModalSize Size + { + get => size; + set + { + size = value; + } + } + + /// + /// Gets or sets the tab index. + /// + [Parameter] + public int TabIndex { get; set; } = -1; + + /// + /// Title in modal header. + /// + [Parameter] + public string Title { get; set; } = default!; + + /// + /// Indicates whether the modal uses a static backdrop. + /// Default value is false. + /// + [Parameter] + public bool UseStaticBackdrop { get; set; } = false; + + private string verticallyCentered => IsVerticallyCentered ? "modal-dialog-centered" : ""; + + #endregion +} diff --git a/blazorbootstrap/Components/Offcanvas/Offcanvas.razor b/blazorbootstrap/Components/Offcanvas/Offcanvas.razor new file mode 100644 index 000000000..c88ac52e7 --- /dev/null +++ b/blazorbootstrap/Components/Offcanvas/Offcanvas.razor @@ -0,0 +1,41 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
    + @if (!string.IsNullOrWhiteSpace(Title) || HeaderTemplate != null || ShowCloseButton) + { +
    + @if (!string.IsNullOrWhiteSpace(title)) + { +
    @title
    + } + else if (HeaderTemplate is not null) + { + @HeaderTemplate + } + + @if (ShowCloseButton) + { + + } +
    + } + @if (childComponent is not null) + { +
    + +
    + } + else if (BodyTemplate != null) + { +
    + @BodyTemplate +
    + } + @if (FooterTemplate != null) + { + + } +
    diff --git a/blazorbootstrap/Components/Offcanvas/Offcanvas.razor.cs b/blazorbootstrap/Components/Offcanvas/Offcanvas.razor.cs new file mode 100644 index 000000000..117cddd77 --- /dev/null +++ b/blazorbootstrap/Components/Offcanvas/Offcanvas.razor.cs @@ -0,0 +1,234 @@ +namespace BlazorBootstrap; + +public partial class Offcanvas : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private Type? childComponent; + + private DotNetObjectReference objRef = default!; + + private Dictionary parameters = default!; + + private string title = default!; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.Offcanvas) + .AddClass(Placement.ToOffcanvasPlacementClass()) + .AddClass(Size.ToOffcanvasSizeClass()) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + /// + protected override async ValueTask DisposeAsyncCore(bool disposing) + { + if (disposing) + { + try + { + if (IsRenderComplete) + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.offcanvas.dispose", Id); + } + catch (JSDisconnectedException) + { + // do nothing + } + + objRef?.Dispose(); + } + + await base.DisposeAsyncCore(disposing); + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.offcanvas.initialize", Id, UseStaticBackdrop, CloseOnEscape, IsScrollable, objRef); + + await base.OnAfterRenderAsync(firstRender); + } + + protected override async Task OnInitializedAsync() + { + objRef ??= DotNetObjectReference.Create(this); + + title = Title; + + await base.OnInitializedAsync(); + } + + [JSInvokable] + public async Task bsHiddenOffcanvas() => await OnHidden.InvokeAsync(); + + [JSInvokable] + public async Task bsHideOffcanvas() => await OnHiding.InvokeAsync(); + + [JSInvokable] + public async Task bsShownOffcanvas() => await OnShown.InvokeAsync(); + + [JSInvokable] + public async Task bsShowOffcanvas() => await OnShowing.InvokeAsync(); + + /// + /// Hides an offcanvas. + /// + public async Task HideAsync() => await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.offcanvas.hide", Id); + + /// + /// Shows an offcanvas. + /// + public async Task ShowAsync() => await ShowAsync(null, null, null); + + /// + /// Opens a offcanvas. + /// + /// + /// + /// + public async Task ShowAsync(string title, Dictionary? parameters = null) => await ShowAsync(title, typeof(T), parameters); + + private async Task ShowAsync(string? title, Type? type, Dictionary? parameters) + { + if (!string.IsNullOrWhiteSpace(title)) + this.title = title; + + childComponent = type; + this.parameters = parameters!; + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.offcanvas.show", Id); + await InvokeAsync(StateHasChanged); + } + + #endregion + + #region Properties, Indexers + + /// + /// Additional body CSS class. + /// + [Parameter] + public string BodyCssClass { get; set; } = default!; + + /// + /// Body content. + /// + [Parameter] + public RenderFragment BodyTemplate { get; set; } = default!; + + /// + /// Indicates whether the offcanvas closes when escape key is pressed. + /// Default value is true. + /// + [Parameter] + public bool CloseOnEscape { get; set; } = true; + + /// + /// Additional footer CSS class. + /// + [Parameter] + public string FooterCssClass { get; set; } = default!; + + /// + /// Footer content. + /// + [Parameter] + public RenderFragment FooterTemplate { get; set; } = default!; + + /// + /// Additional header CSS class. + /// + [Parameter] + public string HeaderCssClass { get; set; } = default!; + + /// + /// Content for the header. + /// + [Parameter] + public RenderFragment HeaderTemplate { get; set; } = default!; + + /// + /// Indicates whether body (page) scrolling is allowed while offcanvas is open. + /// Default value is false. + /// + [Parameter] + public bool IsScrollable { get; set; } + + /// + /// This event is fired when an offcanvas element has been hidden from the user (will wait for CSS transitions to + /// complete). + /// + [Parameter] + public EventCallback OnHidden { get; set; } + + /// + /// This event is fired immediately when the hide method has been called. + /// + [Parameter] + public EventCallback OnHiding { get; set; } + + /// + /// This event fires immediately when the show instance method is called. + /// + [Parameter] + public EventCallback OnShowing { get; set; } + + /// + /// This event is fired when an offcanvas element has been made visible to the user (will wait for CSS transitions to + /// complete). + /// + [Parameter] + public EventCallback OnShown { get; set; } + + /// + /// Specifies the placement. + /// By default, offcanvas is placed on the right of the viewport. + /// + [Parameter] + public Placement Placement { get; set; } = Placement.End; + + /// + /// Indicates whether the modal shows close button in header. + /// Default value is true. + /// Use to change shape of the button. + /// + [Parameter] + public bool ShowCloseButton { get; set; } = true; + + /// + /// Size of the offcanvas. Default is . + /// + [Parameter] + public OffcanvasSize Size { get; set; } = OffcanvasSize.Regular; + + /// + /// Gets or sets the tab index. + /// + [Parameter] + public int TabIndex { get; set; } = -1; + + /// + /// Text for the title in header. + /// + [Parameter] + public string Title { get; set; } = default!; + + [Obsolete("Use `UseStaticBackdrop` parameter.")] + /// + /// Indicates whether to apply a backdrop on body while offcanvas is open. + /// Default value is true. + /// + [Parameter] + public bool UseBackdrop { get; set; } = true; + + /// + /// When `UseStaticBackdrop` is set to true, the offcanvas will not close when clicking outside of it. + /// + [Parameter] + public bool UseStaticBackdrop { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Components/Pagination/Pagination.razor b/blazorbootstrap/Components/Pagination/Pagination.razor new file mode 100644 index 000000000..e25ee4311 --- /dev/null +++ b/blazorbootstrap/Components/Pagination/Pagination.razor @@ -0,0 +1,24 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + + diff --git a/blazorbootstrap/Components/Pagination/Pagination.razor.cs b/blazorbootstrap/Components/Pagination/Pagination.razor.cs new file mode 100644 index 000000000..3cc50e7d6 --- /dev/null +++ b/blazorbootstrap/Components/Pagination/Pagination.razor.cs @@ -0,0 +1,182 @@ +namespace BlazorBootstrap; + +public partial class Pagination : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.Pagination) + .AddClass(Size.ToPaginationSizeClass(), Size != PaginationSize.None) + .AddClass(Alignment.ToPaginationAlignmentClass(), Alignment != Alignment.None) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + private int GetNextPageNumber() + { + var nextPageNumber = 1; + + if (TotalPages == 1 || ActivePageNumber == 0 || TotalPages == 0) + nextPageNumber = 1; + + if (ActivePageNumber == TotalPages) + nextPageNumber = TotalPages; + else if (TotalPages > 1 && ActivePageNumber >= 1 && ActivePageNumber < TotalPages) + nextPageNumber = ActivePageNumber + 1; + + return nextPageNumber; + } + + private int GetPageFromInclusive() + { + var q = ActivePageNumber / DisplayPages; + var r = ActivePageNumber % DisplayPages; + + if (q < 1) + return 1; + + if (q > 0 && r == 0) + return (q - 1) * DisplayPages + 1; + + if (q > 1 && r < DisplayPages) + return q * DisplayPages + 1; + + return ActivePageNumber / DisplayPages * DisplayPages + 1; + } + + private int GetPageToExclusive() => TotalPages == 0 ? 1 : Math.Min(TotalPages, pageFromInclusive + DisplayPages - 1); + + private int GetPreviousPageNumber() + { + var previousPageNUmber = 1; + + if (TotalPages == 1 || ActivePageNumber == 0 || TotalPages == 0) + previousPageNUmber = 1; + else if (ActivePageNumber > 1 && TotalPages > 1) + previousPageNUmber = ActivePageNumber - 1; + + return previousPageNUmber; + } + + /// + /// Changes current page number and fires event. + /// + private async Task SetPageNumberTo(int newPageNumber) + { + if (ActivePageNumber != newPageNumber) + { + ActivePageNumber = newPageNumber; + await PageChanged.InvokeAsync(newPageNumber); + } + } + + #endregion + + #region Properties, Indexers + + /// + /// Active page number. Starts with 1. + /// + [Parameter] + public int ActivePageNumber { get; set; } = 1; + + /// + /// Gets or sets the pagination alignment. + /// + [Parameter] + public Alignment Alignment { get; set; } = Alignment.None; + + /// + /// Gets or sets the maximum page links to be displayed. + /// + [Parameter] + public int DisplayPages { get; set; } = 5; + + /// + /// Gets or sets first link icon. + /// + [Parameter] + public IconName FirstLinkIcon { get; set; } + + private string firstLinkText => string.IsNullOrWhiteSpace(FirstLinkText) ? "First" : FirstLinkText; + + /// + /// Gets or sets first link text. 'FirstLinkText' is ignored if 'FirstLinkIcon' is specified. + /// + [Parameter] + public string? FirstLinkText { get; set; } + + private int firstPageNumber => 1; + + /// + /// Gets or sets last link icon. + /// + [Parameter] + public IconName LastLinkIcon { get; set; } + + private string lastLinkText => string.IsNullOrWhiteSpace(LastLinkText) ? "Last" : LastLinkText; + + /// + /// Gets or sets last link text. 'LastLinkText' is ignored if 'LastLinkIcon' is specified. + /// + [Parameter] + public string? LastLinkText { get; set; } + + private int lastPageNumber => TotalPages == 0 ? 1 : TotalPages; + + /// + /// Gets or sets next link icon. + /// + [Parameter] + public IconName NextLinkIcon { get; set; } + + private string nextLinkText => string.IsNullOrWhiteSpace(NextLinkText) ? "Next" : NextLinkText; + + /// + /// Gets or sets next link text. 'NextLinkText' is ignored if 'NextLinkIcon' is specified. + /// + [Parameter] + public string? NextLinkText { get; set; } + + private int nextPageNumber => GetNextPageNumber(); + + /// + /// This event fires immediately when the page number is changed. + /// + [Parameter] + public EventCallback PageChanged { get; set; } + + private int pageFromInclusive => GetPageFromInclusive(); + + private int pageToExclusive => GetPageToExclusive(); + + /// + /// Gets or sets previous link icon. + /// + [Parameter] + public IconName PreviousLinkIcon { get; set; } + + private string previousLinkText => string.IsNullOrWhiteSpace(PreviousLinkText) ? "Previous" : PreviousLinkText; + + /// + /// Gets or sets previous link text. 'PreviousLinkText' is ignored if 'PreviousLinkIcon' is specified. + /// + [Parameter] + public string? PreviousLinkText { get; set; } + + private int previousPageNumber => GetPreviousPageNumber(); + + /// + /// Gets or sets the pagination size. + /// + [Parameter] + public PaginationSize Size { get; set; } = PaginationSize.None; + + /// + /// Total pages of data items. + /// + [Parameter] + public int TotalPages { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Components/Pagination/PaginationItem.razor b/blazorbootstrap/Components/Pagination/PaginationItem.razor new file mode 100644 index 000000000..67f25379d --- /dev/null +++ b/blazorbootstrap/Components/Pagination/PaginationItem.razor @@ -0,0 +1,6 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
  • + +
  • diff --git a/blazorbootstrap/Components/Pagination/PaginationItem.razor.cs b/blazorbootstrap/Components/Pagination/PaginationItem.razor.cs new file mode 100644 index 000000000..586b74d25 --- /dev/null +++ b/blazorbootstrap/Components/Pagination/PaginationItem.razor.cs @@ -0,0 +1,48 @@ +namespace BlazorBootstrap; + +public partial class PaginationItem : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.PaginationItem) + .AddClass(BootstrapClass.PaginationItemActive, Active) + .AddClass(BootstrapClass.PaginationItemDisabled, Disabled) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + protected override void OnParametersSet() + { + if (Active) + AdditionalAttributes?.Add("aria-current", "page"); + + base.OnParametersSet(); + } + + #endregion + + #region Properties, Indexers + + /// + /// Indicate the currently active page. + /// + [Parameter] + public bool Active { get; set; } + + [Parameter] public string? AriaLabel { get; set; } + + /// + /// Used for links that appear un-clickable. + /// + [Parameter] + public bool Disabled { get; set; } + + [Parameter] public IconName LinkIcon { get; set; } + + [Parameter] public string? LinkText { get; set; } + + [Parameter] public string? Text { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Components/Pagination/PaginationLink.razor b/blazorbootstrap/Components/Pagination/PaginationLink.razor new file mode 100644 index 000000000..753331486 --- /dev/null +++ b/blazorbootstrap/Components/Pagination/PaginationLink.razor @@ -0,0 +1,15 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + + + @if (Enum.IsDefined(typeof(IconName), LinkIcon) && LinkIcon != IconName.None) + { + + } + else + { + @Text + } + diff --git a/blazorbootstrap/Components/Pagination/PaginationLink.razor.cs b/blazorbootstrap/Components/Pagination/PaginationLink.razor.cs new file mode 100644 index 000000000..e698c1701 --- /dev/null +++ b/blazorbootstrap/Components/Pagination/PaginationLink.razor.cs @@ -0,0 +1,34 @@ +namespace BlazorBootstrap; + +public partial class PaginationLink : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.PaginationLink) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + protected override void OnParametersSet() + { + if (!string.IsNullOrWhiteSpace(LinkAriaLabel)) + AdditionalAttributes?.Add("aria-label", LinkAriaLabel); // TODO: this is not working revisit again + + base.OnParametersSet(); + } + + #endregion + + #region Properties, Indexers + + [Parameter] public string? LinkAriaLabel { get; set; } + + [Parameter] public IconName LinkIcon { get; set; } + + [Parameter] public string? LinkText { get; set; } + + [Parameter] public string? Text { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Components/PdfViewer/PdfViewer.razor b/blazorbootstrap/Components/PdfViewer/PdfViewer.razor new file mode 100644 index 000000000..6829314c7 --- /dev/null +++ b/blazorbootstrap/Components/PdfViewer/PdfViewer.razor @@ -0,0 +1,50 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
    +
    +
    + + + + + + + +
    of @pagesCount
    +
    +
    + + + + @zoomPercentage + + + +
    +
    + @* + + *@ + +
    +
    + +
    + + +
    +
    diff --git a/blazorbootstrap/Components/PdfViewer/PdfViewer.razor.cs b/blazorbootstrap/Components/PdfViewer/PdfViewer.razor.cs new file mode 100644 index 000000000..066150543 --- /dev/null +++ b/blazorbootstrap/Components/PdfViewer/PdfViewer.razor.cs @@ -0,0 +1,239 @@ +namespace BlazorBootstrap; + +public partial class PdfViewer : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private int defaultZoomLevel = 8; + + private int maxZoomLevel = 17; + + private int minZoomLevel = 1; + + private DotNetObjectReference? objRef; + + private Orientation? oldOrientation; + + private int pageNumber = 0; + + private int pagesCount = 0; + + private double rotation = 0; + + private double scale = 1.0; + private int zoomLevel = 8; + + private string zoomPercentage = "100%"; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class).Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + await PdfViewerJsInterop.InitializeAsync(objRef!, Id!, scale, rotation, Url!); + + await base.OnAfterRenderAsync(firstRender); + } + + protected override async Task OnInitializedAsync() + { + objRef ??= DotNetObjectReference.Create(this); + + rotation = Orientation == Orientation.Portrait ? 0 : -90; + + await base.OnInitializedAsync(); + } + + protected override async Task OnParametersSetAsync() + { + if (IsRenderComplete) + if (!Orientation.Equals(oldOrientation)) + { + oldOrientation = Orientation; + rotation = Orientation == Orientation.Portrait ? 0 : -90; + await PdfViewerJsInterop.RotateAsync(objRef!, Id!, rotation); + } + + await base.OnParametersSetAsync(); + } + + [JSInvokable] + public void DocumentLoaded(PdfViewerModel pdfViewerModel) + { + if (pdfViewerModel is null) return; + + pageNumber = pdfViewerModel.PageNumber; + pagesCount = pdfViewerModel.PagesCount; + + StateHasChanged(); + + if (OnDocumentLoaded.HasDelegate) + OnDocumentLoaded.InvokeAsync(new PdfViewerEventArgs(pageNumber, pagesCount)); + } + + [JSInvokable] + public void SetPdfViewerMetaData(PdfViewerModel pdfViewerModel) + { + if (pdfViewerModel is null) return; + + pageNumber = pdfViewerModel.PageNumber; + pagesCount = pdfViewerModel.PagesCount; + + if (OnPageChanged.HasDelegate) + OnPageChanged.InvokeAsync(new PdfViewerEventArgs(pageNumber, pagesCount)); + } + + private async Task FirstPageAsync() => await PdfViewerJsInterop.FirstPageAsync(objRef!, Id!); + + private int GetZoomPercentage(int zoomLevel) => + zoomLevel switch + { + 1 => 25, + 2 => 33, + 3 => 50, + 4 => 67, + 5 => 75, + 6 => 80, + 7 => 90, + 8 => 100, + 9 => 110, + 10 => 125, + 11 => 150, + 12 => 175, + 13 => 200, + 14 => 250, + 15 => 300, + 16 => 400, + 17 => 500, + _ => 100 + }; + + private async Task LastPageAsync() => await PdfViewerJsInterop.LastPageAsync(objRef!, Id!); + + private async Task NextPageAsync() => await PdfViewerJsInterop.NextPageAsync(objRef!, Id!); + + private async Task PageNumberChangedAsync(int value) + { + if (value < 1 || value > pagesCount) + pageNumber = 1; + else + pageNumber = value; + + await PdfViewerJsInterop.GotoPageAsync(objRef!, Id!, pageNumber); + } + + private async Task PreviousPageAsync() => await PdfViewerJsInterop.PreviousPageAsync(objRef!, Id!); + + private async Task PrintAsync() => await PdfViewerJsInterop.PrintAsync(objRef!, Id!, Url!); + + private async Task ResetZoomAsync() + { + zoomLevel = defaultZoomLevel; + var zp = GetZoomPercentage(defaultZoomLevel); + zoomPercentage = $"{zp}%"; + scale = 0.01 * zp; + await PdfViewerJsInterop.ZoomInOutAsync(objRef!, Id!, scale); + } + + private async Task RotateClockwiseAsync() + { + rotation += 90; + rotation = rotation.Equals(360) ? 0 : rotation; + await PdfViewerJsInterop.RotateAsync(objRef!, Id!, rotation); + + // Orientation + SetOrientation(); + } + + private async Task RotateCounterclockwiseAsync() + { + rotation -= 90; + rotation = rotation.Equals(-360) ? 0 : rotation; + await PdfViewerJsInterop.RotateAsync(objRef!, Id!, rotation); + + // Orientation + SetOrientation(); + } + + private void SetOrientation() + { + if (rotation == 0) + oldOrientation = Orientation = Orientation.Portrait; + else if (rotation == -90) + oldOrientation = Orientation = Orientation.Landscape; + } + + private async Task SwitchOrientationAsync() + { + oldOrientation = Orientation; + Orientation = Orientation == Orientation.Portrait ? Orientation.Landscape : Orientation.Portrait; + rotation = Orientation == Orientation.Portrait ? 0 : -90; + await PdfViewerJsInterop.RotateAsync(objRef!, Id!, rotation); + } + + private async Task ZoomInAsync() + { + if (zoomLevel == maxZoomLevel) + return; + + zoomLevel += 1; + var zp = GetZoomPercentage(zoomLevel); + zoomPercentage = $"{zp}%"; + scale = 0.01 * zp; + await PdfViewerJsInterop.ZoomInOutAsync(objRef!, Id!, scale); + } + + private async Task ZoomOutAsync() + { + if (zoomLevel == minZoomLevel) + return; + + zoomLevel -= 1; + var zp = GetZoomPercentage(zoomLevel); + zoomPercentage = $"{zp}%"; + scale = 0.01 * zp; + await PdfViewerJsInterop.ZoomInOutAsync(objRef!, Id!, scale); + } + + #endregion + + #region Properties, Indexers + + /// + /// This event fires immediately after the PDF document is loaded. + /// + [Parameter] + public EventCallback OnDocumentLoaded { get; set; } + + /// + /// This event fires immediately after the page is changed. + /// + [Parameter] + public EventCallback OnPageChanged { get; set; } + + /// + /// Gets or sets the preferred orientation for the PDF viewer. + /// + [Parameter] + public Orientation Orientation { get; set; } + + /// + /// Provides JavaScript interop functionality for the PDF viewer. + /// + [Inject] + private PdfViewerJsInterop PdfViewerJsInterop { get; set; } = default!; + + /// + /// Gets or sets the URL of the PDF document to be displayed. + /// + [Parameter] + public string? Url { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Components/PdfViewer/PdfViewerJsInterop.cs b/blazorbootstrap/Components/PdfViewer/PdfViewerJsInterop.cs new file mode 100644 index 000000000..93bfc7f48 --- /dev/null +++ b/blazorbootstrap/Components/PdfViewer/PdfViewerJsInterop.cs @@ -0,0 +1,86 @@ +namespace BlazorBootstrap; + +public class PdfViewerJsInterop : IAsyncDisposable +{ + #region Fields and Constants + + private readonly Lazy> moduleTask; + + #endregion + + #region Constructors + + public PdfViewerJsInterop(IJSRuntime jsRuntime) + { + moduleTask = new Lazy>(() => jsRuntime.InvokeAsync("import", "./_content/Blazor.Bootstrap/blazor.bootstrap.pdf.js").AsTask()); + } + + #endregion + + #region Methods + + public async ValueTask DisposeAsync() + { + if (moduleTask.IsValueCreated) + { + var module = await moduleTask.Value; + await module.DisposeAsync(); + } + } + + public async Task FirstPageAsync(object objRef, string elementId) + { + var module = await moduleTask.Value; + await module.InvokeVoidAsync("firstPage", objRef, elementId); + } + + public async Task GotoPageAsync(object objRef, string elementId, int gotoPageNum) + { + var module = await moduleTask.Value; + await module.InvokeVoidAsync("gotoPage", objRef, elementId, gotoPageNum); + } + + public async Task InitializeAsync(object objRef, string elementId, double scale, double rotation, string url) + { + var module = await moduleTask.Value; + await module.InvokeVoidAsync("initialize", objRef, elementId, scale, rotation, url); + } + + public async Task LastPageAsync(object objRef, string elementId) + { + var module = await moduleTask.Value; + await module.InvokeVoidAsync("lastPage", objRef, elementId); + } + + public async Task NextPageAsync(object objRef, string elementId) + { + var module = await moduleTask.Value; + await module.InvokeVoidAsync("nextPage", objRef, elementId); + } + + public async Task PreviousPageAsync(object objRef, string elementId) + { + var module = await moduleTask.Value; + await module.InvokeVoidAsync("previousPage", objRef, elementId); + } + + public async Task PrintAsync(object objRef, string elementId, string url) + { + var module = await moduleTask.Value; + await module.InvokeVoidAsync("print", objRef, elementId, url); + } + + public async Task RotateAsync(object objRef, string elementId, double rotation) + { + var module = await moduleTask.Value; + await module.InvokeVoidAsync("rotate", objRef, elementId, rotation); + } + + public async Task ZoomInOutAsync(object objRef, string elementId, double scale) + { + var module = await moduleTask.Value; + await module.InvokeVoidAsync("zoomInOut", objRef, elementId, scale); + } + + #endregion +} diff --git a/blazorbootstrap/Components/Placeholders/Placeholder.razor b/blazorbootstrap/Components/Placeholders/Placeholder.razor new file mode 100644 index 000000000..e7e09d92a --- /dev/null +++ b/blazorbootstrap/Components/Placeholders/Placeholder.razor @@ -0,0 +1,5 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + + + diff --git a/blazorbootstrap/Components/Placeholders/Placeholder.razor.cs b/blazorbootstrap/Components/Placeholders/Placeholder.razor.cs new file mode 100644 index 000000000..c6999daec --- /dev/null +++ b/blazorbootstrap/Components/Placeholders/Placeholder.razor.cs @@ -0,0 +1,39 @@ +namespace BlazorBootstrap; + +public partial class Placeholder : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.Placeholder) + .AddClass(Width.ToPlaceholderWidthClass()) + .AddClass(Color.ToPlaceholderColorClass(), Color != PlaceholderColor.None) + .AddClass(Size.ToPlaceholderSizeClass(), Size != PlaceholderSize.None) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the placeholder color. Default is . + /// + [Parameter] + public PlaceholderColor Color { get; set; } = PlaceholderColor.None; + + /// + /// Gets or sets the placeholder size. Default is . + /// + [Parameter] + public PlaceholderSize Size { get; set; } = PlaceholderSize.None; + + /// + /// Gets or sets the placeholder width. Default is . + /// + [Parameter] + public PlaceholderWidth Width { get; set; } = PlaceholderWidth.Col1; + + #endregion +} diff --git a/blazorbootstrap/Components/Placeholders/PlaceholderContainer.razor b/blazorbootstrap/Components/Placeholders/PlaceholderContainer.razor new file mode 100644 index 000000000..3fb549114 --- /dev/null +++ b/blazorbootstrap/Components/Placeholders/PlaceholderContainer.razor @@ -0,0 +1,6 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + + + @ChildContent + diff --git a/blazorbootstrap/Components/Placeholders/PlaceholderContainer.razor.cs b/blazorbootstrap/Components/Placeholders/PlaceholderContainer.razor.cs new file mode 100644 index 000000000..4d7248735 --- /dev/null +++ b/blazorbootstrap/Components/Placeholders/PlaceholderContainer.razor.cs @@ -0,0 +1,30 @@ +namespace BlazorBootstrap; + +public partial class PlaceholderContainer : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(Animation.ToPlaceholderAnimationClass()) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the placeholder animation. Default is . + /// + [Parameter] + public PlaceholderAnimation Animation { get; set; } = PlaceholderAnimation.Glow; + + /// + /// Specifies the content to be rendered inside this. + /// + [Parameter] + public RenderFragment? ChildContent { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Components/Preload/Preload.razor b/blazorbootstrap/Components/Preload/Preload.razor new file mode 100644 index 000000000..82363c7b0 --- /dev/null +++ b/blazorbootstrap/Components/Preload/Preload.razor @@ -0,0 +1,36 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
    + +
    + +@if (showBackdrop) +{ + +} diff --git a/blazorbootstrap/Components/Preload/Preload.razor.cs b/blazorbootstrap/Components/Preload/Preload.razor.cs new file mode 100644 index 000000000..776f2d2e7 --- /dev/null +++ b/blazorbootstrap/Components/Preload/Preload.razor.cs @@ -0,0 +1,88 @@ +namespace BlazorBootstrap; + +public partial class Preload : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private string? loadingText; + + private bool showBackdrop; + + private string? spinnerColor; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.Modal) + .AddClass(BootstrapClass.PageLoadingModal) + .AddClass(BootstrapClass.ModalFade) + .AddClass(BootstrapClass.Show, showBackdrop) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style) + .AddStyle("display:block", showBackdrop) + .AddStyle("display:none", !showBackdrop) + .Build(); + + /// + protected override async ValueTask DisposeAsyncCore(bool disposing) + { + if (disposing) + { + PageLoadingService.OnShow -= OnShow; + PageLoadingService.OnHide -= OnHide; + } + + await base.DisposeAsyncCore(disposing); + } + + protected override void OnInitialized() + { + PageLoadingService.OnShow += OnShow; + PageLoadingService.OnHide += OnHide; + } + + private void OnHide() + { + showBackdrop = false; + + StateHasChanged(); + } + + private void OnShow(SpinnerColor spinnerColor, string? loadingText) + { + this.spinnerColor = spinnerColor.ToSpinnerColorClass(); + + this.showBackdrop = true; + + this.loadingText = loadingText; + + StateHasChanged(); + } + + #endregion + + #region Properties, Indexers + + /// + /// Specifies the content to be rendered inside this. + /// + [Parameter] + public RenderFragment? ChildContent { get; set; } + + /// + /// Gets or sets the instance. + /// + [Inject] + private PreloadService PageLoadingService { get; set; } = default!; + + /// + /// Gets or sets the loading text. + /// + [Parameter] + public string? LoadingText { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Components/Progress/Progress.razor b/blazorbootstrap/Components/Progress/Progress.razor new file mode 100644 index 000000000..aa117b3b8 --- /dev/null +++ b/blazorbootstrap/Components/Progress/Progress.razor @@ -0,0 +1,6 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
    + @ChildContent +
    diff --git a/blazorbootstrap/Components/Progress/Progress.razor.cs b/blazorbootstrap/Components/Progress/Progress.razor.cs new file mode 100644 index 000000000..1f789f131 --- /dev/null +++ b/blazorbootstrap/Components/Progress/Progress.razor.cs @@ -0,0 +1,45 @@ +namespace BlazorBootstrap; + +public partial class Progress : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private double height = 0; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.Progress) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style) + .AddStyle($"height:{height.ToString(CultureInfo.InvariantCulture)}px", height >= 0) + .Build(); + + protected override void OnInitialized() + { + height = Height; + + base.OnInitialized(); + } + + #endregion + + #region Properties, Indexers + + /// + /// Specifies the content to be rendered inside this . + /// + [Parameter] + public RenderFragment? ChildContent { get; set; } + + /// + /// Gets or sets the height of the Progress. Height is measured in pixels, and the default height is 16 pixels. + /// + [Parameter] + public double Height { get; set; } = 16; + + #endregion +} diff --git a/blazorbootstrap/Components/Progress/ProgressBar.razor b/blazorbootstrap/Components/Progress/ProgressBar.razor new file mode 100644 index 000000000..8d1a5e160 --- /dev/null +++ b/blazorbootstrap/Components/Progress/ProgressBar.razor @@ -0,0 +1,6 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
    + @Label +
    diff --git a/blazorbootstrap/Components/Progress/ProgressBar.razor.cs b/blazorbootstrap/Components/Progress/ProgressBar.razor.cs new file mode 100644 index 000000000..0008baa4e --- /dev/null +++ b/blazorbootstrap/Components/Progress/ProgressBar.razor.cs @@ -0,0 +1,141 @@ +namespace BlazorBootstrap; + +public partial class ProgressBar +{ + #region Fields and Constants + + private ProgressColor color = ProgressColor.None; + private ProgressType type = ProgressType.Default; + + private double width = 0; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.ProgressBar) + .AddClass(BootstrapClass.ProgressBarStriped, type is ProgressType.Striped or ProgressType.StripedAndAnimated) + .AddClass(BootstrapClass.ProgressBarAnimated, type == ProgressType.StripedAndAnimated) + .AddClass(color.ToProgressColorClass(), color != ProgressColor.None) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style) + // FIX: Toast progressbar not showing: https://github.com/vikramlearning/blazorbootstrap/issues/155 + .AddStyle($"width:{width.ToString(CultureInfo.InvariantCulture)}%", width is >= 0 and <= 100) + .Build(); + + /// + /// Decrease the progress bar width. + /// + /// + public void DecreaseWidth(double width) + { + if (width is < 0 or > 100) + return; + + if (Width - width < 0) + Width = 0; + else + Width -= width; + } + + /// + /// Get the progress bar width. + /// + /// + public double GetWidth() => width; + + /// + /// Increase the progress bar width. + /// + /// + public void IncreaseWidth(double width) + { + if (width is < 0 or > 100) + return; + + if (Width + width > 100) + Width = 100; + else + Width += width; + } + + /// + /// Set the progress bar color. + /// + /// + public void SetColor(ProgressColor color) => Color = color; + + /// + /// Set the progress bar label. + /// + /// + public void SetLabel(string text) => Label = text; + + /// + /// Set the progress bar width. + /// + /// + public void SetWidth(double width) + { + if (width is < 0 or > 100) + return; + + Width = width; + } + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the progress color. + /// + [Parameter] + public ProgressColor Color + { + get => color; + set + { + color = value; + StateHasChanged(); + } + } + + /// + /// Gets or sets the progress bar label. + /// + [Parameter] + public string Label { get; set; } = default!; + + /// + /// Gets or sets the progress bar type. + /// + [Parameter] + public ProgressType Type + { + get => type; + set + { + type = value; + StateHasChanged(); + } + } + + /// + /// Get or sets the progress bar width. + /// + [Parameter] + public double Width + { + get => width; + set + { + width = value; + StateHasChanged(); + } + } + + #endregion +} diff --git a/blazorbootstrap/Components/Ribbon/Ribbon.razor b/blazorbootstrap/Components/Ribbon/Ribbon.razor new file mode 100644 index 000000000..81a1966fd --- /dev/null +++ b/blazorbootstrap/Components/Ribbon/Ribbon.razor @@ -0,0 +1,46 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + + + @ChildContent + + +@if (tabs?.Any() ?? false) +{ +
    + +
    + @foreach (var t in tabs) + { + + } +
    +
    +} diff --git a/blazorbootstrap/Components/Ribbon/Ribbon.razor.cs b/blazorbootstrap/Components/Ribbon/Ribbon.razor.cs new file mode 100644 index 000000000..0ba8bd757 --- /dev/null +++ b/blazorbootstrap/Components/Ribbon/Ribbon.razor.cs @@ -0,0 +1,351 @@ +namespace BlazorBootstrap; + +public partial class Ribbon : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private RibbonTab activeTab = default!; + + private bool isDefaultActiveTabSet = false; + + private DotNetObjectReference objRef = default!; + + private int removedTabIndex = -1; + + private bool showLastTab = false; + + private List? tabs = new(); + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.Nav) + .AddClass(BootstrapClass.NavTabs, NavStyle == NavStyle.Tabs) + .AddClass(BootstrapClass.NavPills, NavStyle is (NavStyle.Pills or NavStyle.VerticalPills)) + .AddClass(BootstrapClass.NavUnderline, NavStyle is (NavStyle.Underline or NavStyle.VerticalUnderline)) + .AddClass(BootstrapClass.FlexColumn, IsVertical) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + /// + protected override async ValueTask DisposeAsyncCore(bool disposing) + { + if (disposing) tabs = null; + + await base.DisposeAsyncCore(disposing); + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.tabs.initialize", Id, objRef); + + // Set active tab + if (firstRender && !isDefaultActiveTabSet) + await SetDefaultActiveTabAsync(); + + // Show last tab + if (showLastTab) + { + await ShowLastTabAsync(); + showLastTab = false; + } + + // Show next available tab + if (removedTabIndex > -1) + { + await ShowNextAvailableTabAsync(removedTabIndex); + removedTabIndex = -1; + } + + await base.OnAfterRenderAsync(firstRender); + } + + protected override async Task OnInitializedAsync() + { + objRef ??= DotNetObjectReference.Create(this); + + AdditionalAttributes ??= new Dictionary(); + + if (IsVertical) + AdditionalAttributes.Add("aria-orientation", "vertical"); + + await base.OnInitializedAsync(); + } + + [JSInvokable] + public async Task bsHiddenTab(string activeTabId, string previousActiveTabId) + { + var activeTabTitle = tabs?.FirstOrDefault(x => x.Id == activeTabId)?.Title; + var previousActiveTabTitle = tabs?.FirstOrDefault(x => x.Id == previousActiveTabId)?.Title; + + var args = new RibbonEventArgs(activeTabTitle!, previousActiveTabTitle!); + await OnHidden.InvokeAsync(args); + } + + [JSInvokable] + public async Task bsHideTab(string activeTabId, string previousActiveTabId) + { + var activeTabTitle = tabs?.FirstOrDefault(x => x.Id == activeTabId)?.Title; + var previousActiveTabTitle = tabs?.FirstOrDefault(x => x.Id == previousActiveTabId)?.Title; + + var args = new RibbonEventArgs(activeTabTitle!, previousActiveTabTitle!); + await OnHiding.InvokeAsync(args); + } + + [JSInvokable] + public async Task bsShownTab(string activeTabId, string previousActiveTabId) + { + var activeTabTitle = tabs?.FirstOrDefault(x => x.Id == activeTabId)?.Title; + var previousActiveTabTitle = tabs?.FirstOrDefault(x => x.Id == previousActiveTabId)?.Title; + + var args = new RibbonEventArgs(activeTabTitle!, previousActiveTabTitle!); + await OnShown.InvokeAsync(args); + } + + [JSInvokable] + public async Task bsShowTab(string activeTabId, string previousActiveTabId) + { + var activeTabTitle = tabs?.FirstOrDefault(x => x.Id == activeTabId)?.Title; + var previousActiveTabTitle = tabs?.FirstOrDefault(x => x.Id == previousActiveTabId)?.Title; + + var args = new RibbonEventArgs(activeTabTitle!, previousActiveTabTitle!); + await OnShowing.InvokeAsync(args); + } + + /// + /// Removes the tab by index. + /// + /// + /// + public void RemoveTabByIndex(int tabIndex) + { + if (!tabs?.Any() ?? true) return; + + if (tabIndex < 0 || tabIndex >= tabs!.Count) throw new IndexOutOfRangeException(); + + var tab = tabs[tabIndex]; + + if (tab is null) return; + + tabs!.Remove(tab); + + removedTabIndex = tabIndex; + } + + /// + /// Removes the tab by name. + /// + /// + public void RemoveTabByName(string tabName) + { + if (!tabs?.Any() ?? true) return; + + var tabIndex = tabs!.FindIndex(x => x.Name == tabName); + + if (tabIndex == -1) return; + + var tab = tabs[tabIndex]; + + tabs!.Remove(tab); + + removedTabIndex = tabIndex; + } + + /// + /// Selects the first tab and show its associated pane. + /// + public async Task ShowFirstTabAsync() + { + if (!tabs?.Any() ?? true) return; + + var tab = tabs!.FirstOrDefault(x => !x.Disabled); + + if (tab is { Disabled: false }) + await ShowTabAsync(tab); + } + + /// + /// Selects the last tab and show its associated pane. + /// + public async Task ShowLastTabAsync() + { + if (!tabs?.Any() ?? true) return; + + var tab = tabs!.LastOrDefault(x => !x.Disabled); + + if (tab is { Disabled: false }) + await ShowTabAsync(tab); + } + + /// + /// Shows the recently added tab. + /// + public void ShowRecentTab() => showLastTab = true; + + /// + /// Selects the tab by index and show its associated pane. + /// + /// The zero-based index of the element to get or set. + public async Task ShowTabByIndexAsync(int tabIndex) + { + if (!tabs?.Any() ?? true) return; + + if (tabIndex < 0 || tabIndex >= tabs!.Count) throw new IndexOutOfRangeException(); + + var tab = tabs[tabIndex]; + + if (tab is { Disabled: false }) + await ShowTabAsync(tab); + } + + /// + /// Selects the tab by name and show its associated pane. + /// + /// The name of the tab to select. + public async Task ShowTabByNameAsync(string tabName) + { + if (!tabs?.Any() ?? true) return; + + var tab = tabs!.LastOrDefault(x => x.Name == tabName && !x.Disabled); + + if (tab is not null) + await ShowTabAsync(tab); + } + + internal void AddTab(RibbonTab tab) + { + tabs!.Add(tab); + + if (tab is { IsActive: true, Disabled: false }) + activeTab = tab; + + StateHasChanged(); // This is mandatory to reflect changes in UI + } + + internal async Task OnRibbonItemClick(RibbonItemEventArgs args) + { + if (OnClick.HasDelegate) + await OnClick.InvokeAsync(args); + } + + /// + /// Sets the default active tab. + /// + internal async Task SetDefaultActiveTabAsync() + { + if (!tabs?.Any() ?? true) return; + + activeTab ??= tabs!.FirstOrDefault(x => !x.Disabled)!; + + if (activeTab is not null) + await ShowTabAsync(activeTab); + } + + private async Task OnTabClickAsync(RibbonTab tab) => await ShowTabAsync(tab); + + private async Task ShowNextAvailableTabAsync(int removedTabIndex) + { + if (!tabs?.Any() ?? true) return; + + if (removedTabIndex < 0 || removedTabIndex > tabs!.Count) throw new IndexOutOfRangeException(); + + var tabIndex = 0; + + if (removedTabIndex == tabs!.Count) + tabIndex = tabs!.Count - 1; + else if (removedTabIndex < tabs!.Count) + tabIndex = removedTabIndex; + + var tab = tabs[tabIndex]; + + if (tab is { Disabled: false }) + await ShowTabAsync(tab); + } + + private async Task ShowTabAsync(RibbonTab tab) + { + if (!isDefaultActiveTabSet) + isDefaultActiveTabSet = true; + + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.tabs.show", tab.Id); + + if (tab?.OnClick.HasDelegate ?? false) + await tab.OnClick.InvokeAsync(new TabEventArgs(tab!.Name, tab.Title)); + } + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the content to be rendered within the component. + /// + [Parameter] + public RenderFragment ChildContent { get; set; } = default!; + + /// + /// Gets or sets the tabs fade effect. + /// + [Parameter] + public bool EnableFadeEffect { get; set; } + + /// + /// Determines whether the Ribbon is rendered vertically. + /// + private bool IsVertical => + NavStyle == NavStyle.Vertical + || NavStyle == NavStyle.VerticalPills + || NavStyle == NavStyle.VerticalUnderline; + + /// + /// CSS class applied to the parent div of the tab content when vertical. + /// + private string? NavParentDivCssClass => IsVertical ? "d-flex" : default; + + /// + /// Get or sets the nav style. + /// + //[Parameter] + private NavStyle NavStyle { get; set; } = NavStyle.Underline; + + /// + /// This event fires when the user clicks the corresponding . + /// + [Parameter] + public EventCallback OnClick { get; set; } + + /// + /// This event fires after a new tab is shown (and thus the previous active tab is hidden). + /// + [Parameter] + public EventCallback OnHidden { get; set; } + + /// + /// This event fires when a new tab is to be shown (and thus the previous active tab is to be hidden). + /// + [Parameter] + public EventCallback OnHiding { get; set; } + + /// + /// This event fires on tab show, but before the new tab has been shown. + /// + [Parameter] + public EventCallback OnShowing { get; set; } + + /// + /// This event fires on tab show after a tab has been shown. + /// + [Parameter] + public EventCallback OnShown { get; set; } + + /// + /// CSS class applied to the tab content container. + /// + private string? TabContentCssClass => IsVertical ? "tab-content flex-grow-1" : "tab-content"; + + #endregion +} diff --git a/blazorbootstrap/Components/Ribbon/RibbonGroup.razor b/blazorbootstrap/Components/Ribbon/RibbonGroup.razor new file mode 100644 index 000000000..216d20323 --- /dev/null +++ b/blazorbootstrap/Components/Ribbon/RibbonGroup.razor @@ -0,0 +1,6 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
    + @ChildContent +
    diff --git a/blazorbootstrap/Components/Ribbon/RibbonGroup.razor.cs b/blazorbootstrap/Components/Ribbon/RibbonGroup.razor.cs new file mode 100644 index 000000000..47c17e48b --- /dev/null +++ b/blazorbootstrap/Components/Ribbon/RibbonGroup.razor.cs @@ -0,0 +1,27 @@ +namespace BlazorBootstrap; + +public partial class RibbonGroup : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass("bb-ribbon-group") + .AddClass(BootstrapClass.Flex) + .AddClass(BootstrapClass.FlexRow) + .AddClass(BootstrapClass.Border) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the content to be rendered inside this component. + /// + [Parameter] + public RenderFragment? ChildContent { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Components/Ribbon/RibbonGroup.razor.css b/blazorbootstrap/Components/Ribbon/RibbonGroup.razor.css new file mode 100644 index 000000000..e69de29bb diff --git a/blazorbootstrap/Components/Ribbon/RibbonItem.razor b/blazorbootstrap/Components/Ribbon/RibbonItem.razor new file mode 100644 index 000000000..c5d661f59 --- /dev/null +++ b/blazorbootstrap/Components/Ribbon/RibbonItem.razor @@ -0,0 +1,37 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
    + +
    + @if (!string.IsNullOrEmpty(ImgSrc)) + { + + } + else + { + + } +
    + @if (!string.IsNullOrEmpty(Text)) + { +
    @Text
    + } + else + { +
    @ChildContent
    + } + +
    diff --git a/blazorbootstrap/Components/Ribbon/RibbonItem.razor.cs b/blazorbootstrap/Components/Ribbon/RibbonItem.razor.cs new file mode 100644 index 000000000..05eb36cba --- /dev/null +++ b/blazorbootstrap/Components/Ribbon/RibbonItem.razor.cs @@ -0,0 +1,108 @@ +namespace BlazorBootstrap; + +public partial class RibbonItem : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass("bb-ribbon-item") + .AddClass(BootstrapClass.Flex) + .AddClass(BootstrapClass.FlexColumn) + .AddClass(BootstrapClass.AlignItemsCenter) + .AddClass("ms-1", IsFirstItem) + .AddClass("me-1", IsLastItem) + .AddClass("mx-1", !IsFirstItem && !IsLastItem) + .AddClass("p-1") + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + /// + /// Triggers the OnRibbonItemClick event of the parent Ribbon component. + /// + private async Task OnRibbonItemClickAsync() + { + if (Parent is not null) + await Parent.OnRibbonItemClick(new RibbonItemEventArgs(Name!)); + } + + #endregion + + #region Properties, Indexers + + /// + /// Specifies the content to be rendered inside the RibbonItem. + /// + [Parameter] + public RenderFragment? ChildContent { get; set; } + + /// + /// The name of a custom icon to be displayed. + /// + [Parameter] public string? CustomIconName { get; set; } + + /// + /// The color of the icon. + /// + [Parameter] public IconColor IconColor { get; set; } + + /// + /// CSS class(es) to be applied to the icon element. + /// + [Parameter] public string? IconCssClass { get; set; } + + /// + /// The built-in icon to be displayed. + /// + [Parameter] public IconName IconName { get; set; } + + /// + /// The size of the icon. Defaults to x3 (extra large). + /// + [Parameter] public IconSize IconSize { get; set; } = IconSize.x3; + + /// + /// The height of the image in pixels. + /// + [Parameter] + public double ImgHeight { get; set; } = 28; + + /// + /// The source URL of the image. + /// + [Parameter] public string? ImgSrc { get; set; } + + /// + /// The width of the image in pixels. + /// + [Parameter] + public double ImgWidth { get; set; } = 28; + + /// + /// True if this is the first item in the RibbonItemGroup. + /// + [Parameter] public bool IsFirstItem { get; set; } = false; + + /// + /// True if this is the last item in the RibbonItemGroup. + /// + [Parameter] public bool IsLastItem { get; set; } = false; + + /// + /// The name associated with the RibbonItem. + /// + [Parameter] public string? Name { get; set; } + + /// + /// Gets or sets the parent. + /// + [CascadingParameter(Name = "Ribbon2")] + internal Ribbon Parent { get; set; } = default!; + + /// + /// The text content to be displayed inside the RibbonItem. + /// + [Parameter] public string? Text { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Components/Ribbon/RibbonItem.razor.css b/blazorbootstrap/Components/Ribbon/RibbonItem.razor.css new file mode 100644 index 000000000..e088fbcd7 --- /dev/null +++ b/blazorbootstrap/Components/Ribbon/RibbonItem.razor.css @@ -0,0 +1,11 @@ +.bb-ribbon-item { + cursor: pointer; + /*width: 64px;*/ +} + + .bb-ribbon-item:hover { + background-color: rgba(var(--bs-secondary-rgb), 0.10) !important; + } + + .bb-ribbon-item.active { + } diff --git a/blazorbootstrap/Components/Ribbon/RibbonItemGroup.razor b/blazorbootstrap/Components/Ribbon/RibbonItemGroup.razor new file mode 100644 index 000000000..1ab1f7237 --- /dev/null +++ b/blazorbootstrap/Components/Ribbon/RibbonItemGroup.razor @@ -0,0 +1,11 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
    +
    +
    + @ChildContent +
    +
    +
    @Text
    +
    diff --git a/blazorbootstrap/Components/Ribbon/RibbonItemGroup.razor.cs b/blazorbootstrap/Components/Ribbon/RibbonItemGroup.razor.cs new file mode 100644 index 000000000..ceb232f62 --- /dev/null +++ b/blazorbootstrap/Components/Ribbon/RibbonItemGroup.razor.cs @@ -0,0 +1,34 @@ +namespace BlazorBootstrap; + +public partial class RibbonItemGroup : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass("bb-ribbon-item-group") + .AddClass(BootstrapClass.Flex) + .AddClass(BootstrapClass.FlexColumn) + .AddClass(BootstrapClass.AlignItemsCenter) + .AddClass("my-1") + .AddClass(BootstrapClass.BorderEnd) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the content to be rendered within the component. + /// + [Parameter] + public RenderFragment? ChildContent { get; set; } + + /// + /// Gets or sets the text content of the component. + /// + [Parameter] public string? Text { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Components/Ribbon/RibbonItemGroup.razor.css b/blazorbootstrap/Components/Ribbon/RibbonItemGroup.razor.css new file mode 100644 index 000000000..e69de29bb diff --git a/blazorbootstrap/Components/Ribbon/RibbonTab.razor b/blazorbootstrap/Components/Ribbon/RibbonTab.razor new file mode 100644 index 000000000..c067a40f4 --- /dev/null +++ b/blazorbootstrap/Components/Ribbon/RibbonTab.razor @@ -0,0 +1,2 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase diff --git a/blazorbootstrap/Components/Ribbon/RibbonTab.razor.cs b/blazorbootstrap/Components/Ribbon/RibbonTab.razor.cs new file mode 100644 index 000000000..3378f3f4b --- /dev/null +++ b/blazorbootstrap/Components/Ribbon/RibbonTab.razor.cs @@ -0,0 +1,89 @@ +namespace BlazorBootstrap; + +public partial class RibbonTab : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class).Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + /// + protected override async ValueTask DisposeAsyncCore(bool disposing) + { + if (disposing && IsRenderComplete) + { + try + { + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.tabs.dispose", Id); + } + catch (JSDisconnectedException) + { + // do nothing + } + } + + await base.DisposeAsyncCore(disposing); + } + + protected override void OnInitialized() + { + Id = IdGenerator.GetNextId(); // This is required + Parent.AddTab(this); + } + + #endregion + + #region Properties, Indexers + + /// + /// Specifies the content to be rendered inside the tab. + /// + [Parameter] + [EditorRequired] + public RenderFragment Content { get; set; } = default!; + + /// + /// Gets or sets the disabled state. + /// + [Parameter] + public bool Disabled { get; set; } + + /// + /// Gets or sets the active tab. + /// + [Parameter] + public bool IsActive { get; set; } + + /// + /// Gets or sets the tab name. + /// + [Parameter] + public string Name { get; set; } = default!; + + /// + /// This event fires when the user clicks the corresponding tab button and the tab is displayed. + /// + [Parameter] + public EventCallback OnClick { get; set; } + + /// + /// Gets or sets the parent ribbon. + /// + [CascadingParameter(Name = "Ribbon1")] + internal Ribbon Parent { get; set; } = default!; + + /// + /// Gets or sets the tab title. + /// + [Parameter] + public string Title { get; set; } = default!; + + /// + /// Gets or sets the tab title template. + /// + [Parameter] + public RenderFragment TitleTemplate { get; set; } = default!; + + #endregion +} diff --git a/blazorbootstrap/Components/ScriptLoader/ScriptLoader.razor b/blazorbootstrap/Components/ScriptLoader/ScriptLoader.razor new file mode 100644 index 000000000..6f4135765 --- /dev/null +++ b/blazorbootstrap/Components/ScriptLoader/ScriptLoader.razor @@ -0,0 +1,5 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
    +
    diff --git a/blazorbootstrap/Components/ScriptLoader/ScriptLoader.razor.cs b/blazorbootstrap/Components/ScriptLoader/ScriptLoader.razor.cs new file mode 100644 index 000000000..25bac7d68 --- /dev/null +++ b/blazorbootstrap/Components/ScriptLoader/ScriptLoader.razor.cs @@ -0,0 +1,108 @@ +namespace BlazorBootstrap; + +/// +/// A component for loading scripts dynamically in a Blazor application. +/// +public partial class ScriptLoader : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + /// + /// The default content type for scripts. + /// + private const string type = "text/javascript"; + + /// + /// A reference to this component instance for use in JavaScript calls. + /// + private DotNetObjectReference objRef = default!; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class).Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.scriptLoader.initialize", Id, Async, ScriptId, Source, type, objRef); + + await base.OnAfterRenderAsync(firstRender); + } + + protected override async Task OnInitializedAsync() + { + objRef ??= DotNetObjectReference.Create(this); + + await base.OnInitializedAsync(); + } + + protected override void OnParametersSet() + { + if (string.IsNullOrWhiteSpace(Source)) + throw new ArgumentNullException(nameof(Source)); + + base.OnParametersSet(); + } + + /// + /// Handles a script error event from JavaScript. + /// + /// The error message. + [JSInvokable] + public void OnErrorJS(string errorMessage) + { + if (OnError.HasDelegate) + OnError.InvokeAsync(errorMessage); + } + + /// + /// Handles a script load event from JavaScript. + /// + [JSInvokable] + public void OnLoadJS() + { + if (OnLoad.HasDelegate) + OnLoad.InvokeAsync(); + } + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets a value indicating whether the script should be loaded asynchronously. + /// + [Parameter] + public bool Async { get; set; } + + /// + /// An event that is fired when a script loading error occurs. + /// + [Parameter] + public EventCallback OnError { get; set; } + + /// + /// An event that is fired when a script has been successfully loaded. + /// + [Parameter] + public EventCallback OnLoad { get; set; } + + /// + /// Gets or sets the ID of the script element. + /// + [Parameter] + public string? ScriptId { get; set; } + + /// + /// Specifies the URI of the external script to load. + /// + [Parameter] + [EditorRequired] + public string? Source { get; set; } = default!; + + #endregion +} diff --git a/blazorbootstrap/Components/Sidebar/Sidebar.razor b/blazorbootstrap/Components/Sidebar/Sidebar.razor new file mode 100644 index 000000000..2154ad783 --- /dev/null +++ b/blazorbootstrap/Components/Sidebar/Sidebar.razor @@ -0,0 +1,48 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + + + + + + diff --git a/blazorbootstrap/Components/Sidebar/Sidebar.razor.cs b/blazorbootstrap/Components/Sidebar/Sidebar.razor.cs new file mode 100644 index 000000000..dc20e993a --- /dev/null +++ b/blazorbootstrap/Components/Sidebar/Sidebar.razor.cs @@ -0,0 +1,166 @@ +namespace BlazorBootstrap; + +public partial class Sidebar : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private bool collapseNavMenu = true; + + private bool collapseSidebar = false; + + private bool isMobile = false; + + private IEnumerable? items = null; + + private DotNetObjectReference objRef = default!; + + private bool requestInProgress = false; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass("bb-sidebar") + .AddClass("collapsed", collapseSidebar) + .AddClass("expanded", !collapseSidebar) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.sidebar.initialize", Id, objRef); + + var width = await JSRuntime.InvokeAsync("window.blazorBootstrap.sidebar.windowSize"); + + bsWindowResize(width); + + await RefreshDataAsync(firstRender); + } + + await base.OnAfterRenderAsync(firstRender); + } + + protected override async Task OnInitializedAsync() + { + objRef ??= DotNetObjectReference.Create(this); + + AdditionalAttributes ??= new Dictionary(); + + await base.OnInitializedAsync(); + } + + [JSInvokable] + public void bsWindowResize(int width) + { + if (width < 641) // mobile + isMobile = true; + else + isMobile = false; + } + + /// + /// Refresh the sidebar data. + /// + /// Task + public async Task RefreshDataAsync(bool firstRender = false) + { + if (requestInProgress) + return; + + requestInProgress = true; + + if (DataProvider != null) + { + var request = new SidebarDataProviderRequest(); + var result = await DataProvider.Invoke(request); + items = result != null ? result.Data : new List(); + } + + requestInProgress = false; + + await InvokeAsync(StateHasChanged); + } + + /// + /// Toggles sidebar. + /// + public void ToggleSidebar() + { + collapseSidebar = !collapseSidebar; + StateHasChanged(); + } + + internal void HideNavMenuOnMobile() + { + if (isMobile && !collapseNavMenu) + collapseNavMenu = true; + } + + private string GetNavMenuCssClass() + { + var classList = new HashSet(); + + if (collapseNavMenu) + classList.Add("collapse"); + + classList.Add("bb-sidebar-content nav-scrollable bb-scrollbar"); + + if (collapseSidebar) + classList.Add("bb-scrollbar-hidden"); + + return string.Join(" ", classList); + } + + private void ToggleNavMenu() => collapseNavMenu = !collapseNavMenu; + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the badge text. + /// + [Parameter] + public string? BadgeText { get; set; } + + /// + /// Gets or sets the custom icon name. + /// + [Parameter] + public string? CustomIconName { get; set; } + + /// + /// DataProvider is for items to render. + /// The provider should always return an instance of 'SidebarDataProviderResult', and 'null' is not allowed. + /// + [Parameter] + [EditorRequired] + public SidebarDataProviderDelegate? DataProvider { get; set; } = default!; + + /// + /// Gets or sets the IconName. + /// + [Parameter] + public IconName IconName { get; set; } + + /// + /// Gets or sets the logo. + /// + [Parameter] + public string? ImageSrc { get; set; } + + private string? navMenuCssClass => GetNavMenuCssClass(); + + /// + /// Gets or sets the title. + /// + [Parameter] + [EditorRequired] + public string? Title { get; set; } = default!; + + #endregion +} diff --git a/blazorbootstrap/Components/Sidebar/Sidebar.razor.css b/blazorbootstrap/Components/Sidebar/Sidebar.razor.css new file mode 100644 index 000000000..6f4b2ed8f --- /dev/null +++ b/blazorbootstrap/Components/Sidebar/Sidebar.razor.css @@ -0,0 +1,94 @@ +.bb-sidebar { + background-color: var(--bb-sidebar-background-color); +} + + .bb-sidebar.collapsed { + width: var(--bb-sidebar-collapsed-width); + } + + .bb-sidebar.collapsed .expanded-only { + display: none; + } + +@media (min-width: 641px) { + .bb-sidebar { + width: var(--bb-sidebar-width); + position: sticky; + top: 0; + } +} + +.navbar-toggler { + background-color: var(--bb-sidebar-navbar-toggler-background-color); + color: rgb(var(--bb-sidebar-nav-item-text-active-color-rgb)); + padding: inherit !important; + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + line-height: inherit !important; + font-size: inherit !important; +} + +.navbar-toggler-icon { + background-image: inherit !important; + color: var(--bb-sidebar-navbar-toggler-icon-color) !important; +} + +.navbar-toggler:focus { + box-shadow: none !important; +} + +.bb-sidebar-top-row { + height: 3.5rem; + background-color: var(--bb-sidebar-top-row-background-color); + border-bottom: 1px solid var(--bb-sidebar-top-row-border-color); + border-right: 1px solid var(--bb-sidebar-top-row-border-color); +} + +.bb-sidebar-content { + border-right: 1px solid var(--bb-sidebar-content-border-color); +} + +.navbar-brand { + font-size: 1.1rem; +} + +.navbar-brand-icon { + color: var(--bb-sidebar-brand-icon-color); +} + +.navbar-brand-image { + height: var(--bb-sidebar-brand-image-height); +} + + .navbar-brand-image img { + width: var(--bb-sidebar-brand-image-width); + height: var(--bb-sidebar-brand-image-height); + vertical-align: initial !important; + } + +.navbar-brand-text { + color: var(--bb-sidebar-title-text-color); + font-weight: 600 !important; +} + +.navbar-brand-badge { + color: var(--bb-sidebar-title-badge-text-color); + background-color: var(--bb-sidebar-title-badge-background-color); +} + +@media (min-width: 641px) { + .navbar-toggler { + display: none; + } + + .collapse { + /* Never collapse the sidebar for wide screens */ + display: block; + } + + .nav-scrollable { + /* Allow sidebar to scroll for tall menus */ + height: calc(100vh - 3.5rem); + overflow-y: auto; + } +} diff --git a/blazorbootstrap/Components/Sidebar/SidebarItem.razor b/blazorbootstrap/Components/Sidebar/SidebarItem.razor new file mode 100644 index 000000000..13fc1c16a --- /dev/null +++ b/blazorbootstrap/Components/Sidebar/SidebarItem.razor @@ -0,0 +1,72 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
    + @if (HasChilds) + { + + @if (!CollapseSidebar) + { + + + } + else + { + + + + + } + @Text + @if (navitemGroupExpanded) + { + + + + } + else + { + + + + } + + } + else + { + + @if (!CollapseSidebar) + { + + + } + else + { + + + + + } + @Text + + } + + @if (navitemGroupExpanded && HasChilds && ChildItems is not null && ChildItems.Any()) + { + @foreach (var childItem in ChildItems) + { + + } + } +
    diff --git a/blazorbootstrap/Components/Sidebar/SidebarItem.razor.cs b/blazorbootstrap/Components/Sidebar/SidebarItem.razor.cs new file mode 100644 index 000000000..b5e68c6fe --- /dev/null +++ b/blazorbootstrap/Components/Sidebar/SidebarItem.razor.cs @@ -0,0 +1,79 @@ +namespace BlazorBootstrap; + +public partial class SidebarItem : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private bool navitemGroupExpanded = false; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass("nav-item") + .AddClass("nav-item-group", HasChilds) + .AddClass("active", navitemGroupExpanded) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + protected override void OnParametersSet() + { + if (!HasChilds || !(ChildItems?.Any() ?? false)) + return; + + foreach (var childItem in ChildItems) + if (NavLinkExtensions.ShouldExpand(NavigationManager, childItem.Href!, Match)) + { + navitemGroupExpanded = true; + + return; + } + } + + private void AutoHideNavMenu() + { + Parent.HideNavMenuOnMobile(); + } + + private void ToggleNavItemGroup() => navitemGroupExpanded = !navitemGroupExpanded; + + #endregion + + #region Properties, Indexers + + [Parameter] public IEnumerable? ChildItems { get; set; } + + [CascadingParameter] public bool CollapseSidebar { get; set; } + + [Parameter] public string? CustomIconName { get; set; } + + [Parameter] public bool HasChilds { get; set; } + + [Parameter] public string? Href { get; set; } + + [Parameter] public IconColor IconColor { get; set; } + + private string iconColorCssClass => IconColor.ToIconColorClass(); + + [Parameter] public IconName IconName { get; set; } + + /// + /// Gets or sets a value representing the URL matching behavior. + /// + [Parameter] + public NavLinkMatch Match { get; set; } + + [Inject] private NavigationManager NavigationManager { get; set; } = default!; + + [CascadingParameter] public Sidebar Parent { get; set; } = default!; + + [Parameter] public Target Target { get; set; } + + private string targetString => Target.ToTargetString()!; + + [Parameter] public string? Text { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Components/Sidebar/SidebarItem.razor.css b/blazorbootstrap/Components/Sidebar/SidebarItem.razor.css new file mode 100644 index 000000000..a84c36502 --- /dev/null +++ b/blazorbootstrap/Components/Sidebar/SidebarItem.razor.css @@ -0,0 +1,34 @@ +.bb-sidebar.collapsed .expanded-only { + display: none; +} + +.bb-sidebar.collapsed .bi.expanded-only { + display: none !important; +} + +.bb-sidebar .nav-link-icon { + padding-bottom: 0.5rem; + padding-top: 0.5rem; +} + +.bb-sidebar nav .nav-item ::deep a { + color: var(--bb-sidebar-nav-item-text-color); + align-items: center; + padding: 0.5rem 1rem; +} + + .bb-sidebar nav .nav-item ::deep a:hover { + background-color: var(--bb-sidebar-nav-item-background-hover-color); + color: var(--bb-sidebar-nav-item-text-hover-color); + } + + .bb-sidebar nav .nav-item ::deep a.active { + background-color: var(--bb-sidebar-nav-item-background-hover-color); + color: var(--bb-sidebar-nav-item-text-active-color); + font-weight: 600; + } + +/* MDN REFERENCE: https://developer.mozilla.org/en-US/docs/Web/CSS/:has#browser_compatibility */ +.bb-sidebar nav .nav-item.nav-item-group:has(.nav-link.active) { + background-color: var(--bb-sidebar-nav-item-group-background-color); +} diff --git a/blazorbootstrap/Components/Sidebar/SidebarItemGroup.razor b/blazorbootstrap/Components/Sidebar/SidebarItemGroup.razor new file mode 100644 index 000000000..130d1c445 --- /dev/null +++ b/blazorbootstrap/Components/Sidebar/SidebarItemGroup.razor @@ -0,0 +1,21 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + + diff --git a/blazorbootstrap/Components/Sidebar/SidebarItemGroup.razor.cs b/blazorbootstrap/Components/Sidebar/SidebarItemGroup.razor.cs new file mode 100644 index 000000000..a48b91978 --- /dev/null +++ b/blazorbootstrap/Components/Sidebar/SidebarItemGroup.razor.cs @@ -0,0 +1,22 @@ +namespace BlazorBootstrap; + +public partial class SidebarItemGroup : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.FlexColumn) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + #endregion + + #region Properties, Indexers + + [CascadingParameter] public bool CollapseSidebar { get; set; } + + [Parameter] public IEnumerable? NavItems { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Components/Sidebar/SidebarItemGroup.razor.css b/blazorbootstrap/Components/Sidebar/SidebarItemGroup.razor.css new file mode 100644 index 000000000..5f282702b --- /dev/null +++ b/blazorbootstrap/Components/Sidebar/SidebarItemGroup.razor.css @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blazorbootstrap/Components/Sidebar2/Sidebar2.razor b/blazorbootstrap/Components/Sidebar2/Sidebar2.razor new file mode 100644 index 000000000..b5888eee6 --- /dev/null +++ b/blazorbootstrap/Components/Sidebar2/Sidebar2.razor @@ -0,0 +1,48 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + + + + + + diff --git a/blazorbootstrap/Components/Sidebar2/Sidebar2.razor.cs b/blazorbootstrap/Components/Sidebar2/Sidebar2.razor.cs new file mode 100644 index 000000000..fe7af7f6b --- /dev/null +++ b/blazorbootstrap/Components/Sidebar2/Sidebar2.razor.cs @@ -0,0 +1,167 @@ +namespace BlazorBootstrap; + +public partial class Sidebar2 : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private bool collapseNavMenu = true; + + private bool collapseSidebar = false; + + private bool isMobile = false; + + private IEnumerable? items = null; + + private DotNetObjectReference objRef = default!; + + private bool requestInProgress = false; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass("bb-sidebar2") + .AddClass("collapsed", collapseSidebar) + .AddClass("expanded", !collapseSidebar) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.sidebar.initialize", Id, objRef); + + var width = await JSRuntime.InvokeAsync("window.blazorBootstrap.sidebar.windowSize"); + + bsWindowResize(width); + + await RefreshDataAsync(firstRender); + } + + await base.OnAfterRenderAsync(firstRender); + } + + protected override async Task OnInitializedAsync() + { + objRef ??= DotNetObjectReference.Create(this); + + AdditionalAttributes ??= new Dictionary(); + + await base.OnInitializedAsync(); + } + + [JSInvokable] + public void bsWindowResize(int width) + { + if (width < 641) // mobile + isMobile = true; + else + isMobile = false; + } + + /// + /// Refresh the sidebar data. + /// + /// Task + public async Task RefreshDataAsync(bool firstRender = false) + { + if (requestInProgress) + return; + + requestInProgress = true; + + if (DataProvider != null) + { + var request = new Sidebar2DataProviderRequest(); + var result = await DataProvider.Invoke(request); + + items = result != null ? result.Data : new List(); + } + + requestInProgress = false; + + await InvokeAsync(StateHasChanged); + } + + /// + /// Toggles sidebar. + /// + public void ToggleSidebar() + { + collapseSidebar = !collapseSidebar; + StateHasChanged(); + } + + internal void HideNavMenuOnMobile() + { + if (isMobile && !collapseNavMenu) + collapseNavMenu = true; + } + + private string GetNavMenuCssClass() + { + var classList = new HashSet(); + + if (collapseNavMenu) + classList.Add("collapse"); + + classList.Add("bb-sidebar2-content nav-scrollable bb-scrollbar"); + + if (collapseSidebar) + classList.Add("bb-scrollbar-hidden"); + + return string.Join(" ", classList); + } + + private void ToggleNavMenu() => collapseNavMenu = !collapseNavMenu; + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the badge text. + /// + [Parameter] + public string? BadgeText { get; set; } + + /// + /// Gets or sets the custom icon name. + /// + [Parameter] + public string? CustomIconName { get; set; } + + /// + /// DataProvider is for items to render. + /// The provider should always return an instance of , and 'null' is not allowed. + /// + [Parameter] + [EditorRequired] + public Sidebar2DataProviderDelegate? DataProvider { get; set; } = default!; + + /// + /// Gets or sets the IconName. + /// + [Parameter] + public IconName IconName { get; set; } + + /// + /// Gets or sets the logo. + /// + [Parameter] + public string? ImageSrc { get; set; } + + private string? navMenuCssClass => GetNavMenuCssClass(); + + /// + /// Gets or sets the title. + /// + [Parameter] + [EditorRequired] + public string? Title { get; set; } = default!; + + #endregion +} diff --git a/blazorbootstrap/Components/Sidebar2/Sidebar2.razor.css b/blazorbootstrap/Components/Sidebar2/Sidebar2.razor.css new file mode 100644 index 000000000..e9d60ed34 --- /dev/null +++ b/blazorbootstrap/Components/Sidebar2/Sidebar2.razor.css @@ -0,0 +1,91 @@ +.bb-sidebar2 { + background-color: var(--bb-sidebar2-background-color); + border-right: 1px solid var(--bb-sidebar2-content-border-color); +} + + .bb-sidebar2.collapsed { + width: var(--bb-sidebar2-collapsed-width); + } + + .bb-sidebar2.collapsed .expanded-only { + display: none; + } + +@media (min-width: 641px) { + .bb-sidebar2 { + width: var(--bb-sidebar2-width); + position: sticky; + top: 0; + } +} + +.bb-sidebar2-top-row { + height: 3.5rem; + background-color: var(--bb-sidebar2-top-row-background-color); + border-bottom: 1px solid var(--bb-sidebar2-top-row-border-color); + border-right: 1px solid var(--bb-sidebar2-top-row-border-color); +} + +.navbar-toggler { + background-color: var(--bb-sidebar2-navbar-toggler-background-color); + color: rgb(var(--bb-sidebar2-nav-item-text-active-color-rgb)); + padding: inherit !important; + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + line-height: inherit !important; + font-size: inherit !important; +} + +.navbar-toggler-icon { + background-image: inherit !important; + color: var(--bb-sidebar2-navbar-toggler-icon-color) !important; +} + +.navbar-toggler:focus { + box-shadow: none !important; +} + +.navbar-brand { + font-size: 1.1rem; +} + +.navbar-brand-icon { + color: var(--bb-sidebar2-brand-icon-color); +} + +.navbar-brand-image { + height: var(--bb-sidebar2-brand-image-height); +} + + .navbar-brand-image img { + width: var(--bb-sidebar2-brand-image-width); + height: var(--bb-sidebar2-brand-image-height); + vertical-align: initial !important; + } + +.navbar-brand-text { + color: var(--bb-sidebar2-title-text-color); + font-weight: 600 !important; +} + +.navbar-brand-badge { + color: var(--bb-sidebar2-title-badge-text-color); + background-color: var(--bb-sidebar2-title-badge-background-color); +} + +@media (min-width: 641px) { + .navbar-toggler { + display: none; + } + + .collapse { + /* Never collapse the sidebar for wide screens */ + display: block; + } + + .nav-scrollable { + /* Allow sidebar to scroll for tall menus */ + height: calc(100vh - 3.5rem); + overflow-y: auto; + } +} diff --git a/blazorbootstrap/Components/Sidebar2/Sidebar2Item.razor b/blazorbootstrap/Components/Sidebar2/Sidebar2Item.razor new file mode 100644 index 000000000..af35b6409 --- /dev/null +++ b/blazorbootstrap/Components/Sidebar2/Sidebar2Item.razor @@ -0,0 +1,69 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
    + @if (HasChilds) + { + + @{ + var navLinkArrowCssClass = ""; + if (Level == 0 && NavItemGroupExpanded) + navLinkArrowCssClass = "ps-1"; + else if (Level > 0 && !NavItemGroupExpanded) + navLinkArrowCssClass = "ps-1"; + else if (Level > 0) + navLinkArrowCssClass = "ps-2"; + } + + + + + @* + *@ + + @{ + var navLinkTextCssClass = "ms-2"; + if (NavItemGroupExpanded) + navLinkTextCssClass += " fw-semibold"; + } + @Text + + } + else + { + + @{ + var navLinkArrowCssClass = "ps-2"; + if (Level == 0) + navLinkArrowCssClass = ""; + } + + + + @{ + var navLinkTextCssClass = "ms-2"; + } + @Text + + } + + @if (NavItemGroupExpanded && HasChilds && ChildItems is not null && ChildItems.Any()) + { + @foreach (var childItem in ChildItems) + { + + } + } +
    diff --git a/blazorbootstrap/Components/Sidebar2/Sidebar2Item.razor.cs b/blazorbootstrap/Components/Sidebar2/Sidebar2Item.razor.cs new file mode 100644 index 000000000..7f9527ca4 --- /dev/null +++ b/blazorbootstrap/Components/Sidebar2/Sidebar2Item.razor.cs @@ -0,0 +1,98 @@ +namespace BlazorBootstrap; + +public partial class Sidebar2Item : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass("nav-item") + .AddClass($"nav-item-level-{Level}") + .AddClass("nav-item-group", HasChilds) + .AddClass("active", NavItemGroupExpanded) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + protected override void OnInitialized() + { + if (NavLinkExtensions.ShouldExpand(NavigationManager, ChildItems!, Match)) + NavItemGroupExpanded = true; + + base.OnInitialized(); + } + + private void AutoHideNavMenu() + { + Root.HideNavMenuOnMobile(); + } + + private string GetNavLinkStyle() + { + // Implementation: + // Level 0 = 1rem = 0 + 1 + (0 * 0.5) + // Level 1 = 2.5rem = 1 + 1 + (1 * 0.5) + // Level 2 = 4rem = 2 + 1 + (2 * 0.5) + // ... + // Level n = ..... = n + 1 + (n * 0.5) + + var level = Level + 1 + Level * 0.5; + + if (HasChilds && !NavItemGroupExpanded) + level += 0.25; + else if (!HasChilds && Level == 0) + level += 0.25; + + return $"padding-left:{level}rem;"; + } + + private void ToggleNavItemGroup() => NavItemGroupExpanded = !NavItemGroupExpanded; + + #endregion + + #region Properties, Indexers + + [Parameter] public IEnumerable? ChildItems { get; set; } + + [CascadingParameter] public bool CollapseSidebar { get; set; } + + [Parameter] public string? CustomIconName { get; set; } + + [Parameter] public bool HasChilds { get; set; } + + [Parameter] public string? Href { get; set; } + + [Parameter] public IconColor IconColor { get; set; } + + private string iconColorCssClass => IconColor.ToIconColorClass(); + + [Parameter] public IconName IconName { get; set; } + + [Parameter] public int Level { get; set; } = 0; + + /// + /// Gets or sets a value representing the URL matching behavior. + /// + [Parameter] + public NavLinkMatch Match { get; set; } + + [Inject] private NavigationManager NavigationManager { get; set; } = default!; + + [Parameter] public bool NavItemGroupExpanded { get; set; } = false; + + /// + /// Get nav link style. + /// + private string navLinkStyle => GetNavLinkStyle(); + + [Parameter] public Action OnNavItemGroupExpanded { get; set; } = default!; + + [CascadingParameter] public Sidebar2 Root { get; set; } = default!; + + [Parameter] public Target Target { get; set; } + + private string targetString => Target.ToTargetString()!; + + [Parameter] public string? Text { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Components/Sidebar2/Sidebar2Item.razor.css b/blazorbootstrap/Components/Sidebar2/Sidebar2Item.razor.css new file mode 100644 index 000000000..3f2eb9323 --- /dev/null +++ b/blazorbootstrap/Components/Sidebar2/Sidebar2Item.razor.css @@ -0,0 +1,42 @@ +.bb-sidebar2.collapsed .expanded-only { + display: none; +} + +.bb-sidebar2.collapsed .bi.expanded-only { + display: none !important; +} + +.bb-sidebar2 .nav-link-icon { + padding-bottom: 0.5rem; + padding-top: 0.5rem; +} + +.bb-sidebar2 nav .nav-item ::deep a { + color: var(--bb-sidebar2-nav-item-text-color); + align-items: center; + padding: 0.5rem 1rem; +} + + .bb-sidebar2 nav .nav-item ::deep a:hover { + background-color: var(--bb-sidebar2-nav-item-background-hover-color); + color: var(--bb-sidebar2-nav-item-text-hover-color); + } + + .bb-sidebar2 nav .nav-item ::deep a.active { + background-color: var(--bb-sidebar2-nav-item-background-hover-color); + color: var(--bb-sidebar2-nav-item-text-active-color); + font-weight: 600; + } + +/* MDN REFERENCE: https://developer.mozilla.org/en-US/docs/Web/CSS/:has#browser_compatibility */ +.bb-sidebar2 nav .nav-item.nav-item-group:has(.nav-link.active) { + background-color: var(--bb-sidebar2-nav-item-group-background-color); +} + +.bb-sidebar2 nav .nav-item.nav-item-group:has(.nav-item-group.active) { + background-color: var(--bb-sidebar2-nav-item-group-background-color); +} + +.bb-sidebar2 nav .nav-item.nav-item-group.active { + background-color: var(--bb-sidebar2-nav-item-group-background-color); +} diff --git a/blazorbootstrap/Components/Sidebar2/Sidebar2ItemGroup.razor b/blazorbootstrap/Components/Sidebar2/Sidebar2ItemGroup.razor new file mode 100644 index 000000000..4f1748b19 --- /dev/null +++ b/blazorbootstrap/Components/Sidebar2/Sidebar2ItemGroup.razor @@ -0,0 +1,24 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + + diff --git a/blazorbootstrap/Components/Sidebar2/Sidebar2ItemGroup.razor.cs b/blazorbootstrap/Components/Sidebar2/Sidebar2ItemGroup.razor.cs new file mode 100644 index 000000000..0e5f76cc2 --- /dev/null +++ b/blazorbootstrap/Components/Sidebar2/Sidebar2ItemGroup.razor.cs @@ -0,0 +1,30 @@ +namespace BlazorBootstrap; + +public partial class Sidebar2ItemGroup : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.FlexColumn) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + #endregion + + #region Properties, Indexers + + [CascadingParameter] public bool CollapseSidebar { get; set; } + + /// + /// Gets or sets a value representing the URL matching behavior. + /// + [Parameter] + public NavLinkMatch Match { get; set; } + + [Inject] private NavigationManager NavigationManager { get; set; } = default!; + + [Parameter] public IEnumerable? NavItems { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Components/Sidebar2/Sidebar2ItemGroup.razor.css b/blazorbootstrap/Components/Sidebar2/Sidebar2ItemGroup.razor.css new file mode 100644 index 000000000..e69de29bb diff --git a/blazorbootstrap/Components/SortableList/SortableList.razor b/blazorbootstrap/Components/SortableList/SortableList.razor new file mode 100644 index 000000000..720146a57 --- /dev/null +++ b/blazorbootstrap/Components/SortableList/SortableList.razor @@ -0,0 +1,46 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase +@typeparam TItem + +
    + @if (IsLoading) + { + if (LoadingTemplate is not null) + { +
    @LoadingTemplate
    + } + else + { + + } + } + else if (Data?.Any() ?? false) + { + @foreach (var item in Data) + { + if (ItemTemplate is not null) + { + var disableItem = DisableItem?.Invoke(item) ?? false; + if (disableItem) // disable item + { +
    @ItemTemplate(item)
    + } + else + { +
    @ItemTemplate(item)
    + } + } + } + } + else + { + if (EmptyDataTemplate is not null) + { +
    @EmptyDataTemplate
    + } + else + { +
    @EmptyText
    + } + } +
    diff --git a/blazorbootstrap/Components/SortableList/SortableList.razor.cs b/blazorbootstrap/Components/SortableList/SortableList.razor.cs new file mode 100644 index 000000000..cfbcfcc96 --- /dev/null +++ b/blazorbootstrap/Components/SortableList/SortableList.razor.cs @@ -0,0 +1,198 @@ +namespace BlazorBootstrap; + +/// +/// Represents a sortable list component. +/// +/// The type of items in the list. +public partial class SortableList : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + /// + /// A cancellation token source for managing asynchronous operations. + /// + private CancellationTokenSource cancellationTokenSource = default!; + + /// + /// A DotNetObjectReference that allows JavaScript interop with this component. + /// + private DotNetObjectReference>? objRef; + + /// + /// A CSS selector used to filter disabled items. + /// + private string filter = ".bb-sortable-list-item-disabled"; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass("list-group") + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + await SortableListJsInterop.InitializeAsync(Id!, Name!, Handle!, Group!, AllowSorting, Pull.ToSortableListPullMode(), Put.ToSortableListPutMode(), filter, objRef!); + + await base.OnAfterRenderAsync(firstRender); + } + + protected override async Task OnInitializedAsync() + { + objRef ??= DotNetObjectReference.Create(this); + + await base.OnInitializedAsync(); + } + + /// + protected override async ValueTask DisposeAsyncCore(bool disposing) + { + if (disposing) Data = null!; + + await base.DisposeAsyncCore(disposing); + } + + [JSInvokable] + public async Task OnAddJS(int oldIndex, int newIndex) + { + if (OnAdd.HasDelegate) + await OnAdd.InvokeAsync(new(oldIndex, newIndex)); + } + + [JSInvokable] + public async Task OnRemoveJS(int oldIndex, int newIndex, string fromListName, string toListName) + { + if (OnRemove.HasDelegate) + await OnRemove.InvokeAsync(new(oldIndex, newIndex, fromListName, toListName)); + } + + [JSInvokable] + public async Task OnUpdateJS(int oldIndex, int newIndex) + { + if (OnUpdate.HasDelegate) + await OnUpdate.InvokeAsync(new(oldIndex, newIndex)); + } + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets a value indicating whether sorting is allowed for the list. + /// + [Parameter] + public bool AllowSorting { get; set; } = true; + + /// + /// Gets or sets the content to be rendered within the component. + /// + [Parameter] + public RenderFragment ChildContent { get; set; } = default!; + + /// + /// Gets or sets the items. + /// + [Parameter] + public List Data { get; set; } = default!; + + /// + /// Gets or sets a delegate that determines whether an item should be disabled. + /// + [Parameter] + public Func DisableItem { get; set; } = default!; + + /// + /// Gets or sets the CSS class applied to disabled items. + /// + [Parameter] + public string? DisabledItemCssClass { get; set; } = default!; + + /// + /// Specifies the template to render when there are no items to display in the list. + /// + [Parameter] + public RenderFragment EmptyDataTemplate { get; set; } = default!; + + /// + /// Gets or sets the text to display when there are no records in the list. + /// + [Parameter] + public string EmptyText { get; set; } = "No records to display"; + + /// + /// Gets or sets the group name associated with the list. + /// + [Parameter] + public string? Group { get; set; } + + /// + /// Gets or sets the CSS selector for the drag handle element. + /// + [Parameter] + public string? Handle { get; set; } + + /// + /// Gets or sets a value indicating whether the list is currently loading. + /// + [Parameter] + public bool IsLoading { get; set; } + + /// + /// Specifies the template used to render individual items in the list. + /// + [Parameter] + public RenderFragment? ItemTemplate { get; set; } + + /// + /// Specifies the template to render while the list data is loading. + /// + [Parameter] + public RenderFragment LoadingTemplate { get; set; } = default!; + + /// + /// Gets or sets the name of the component. + /// + [Parameter] + public string? Name { get; set; } + + /// + /// Gets or sets an event callback that fires when an item is added to the list. + /// + [Parameter] + public EventCallback OnAdd { get; set; } + + /// + /// Gets or sets an event callback that fires when an item is removed from the list. + /// + [Parameter] + public EventCallback OnRemove { get; set; } + + /// + /// Gets or sets an event callback that fires when an item is updated in the list. + /// + [Parameter] + public EventCallback OnUpdate { get; set; } + + /// + /// Gets or sets the pull mode for the sortable list. + /// + [Parameter] + public SortableListPullMode Pull { get; set; } + + /// + /// Gets or sets the put mode for the sortable list. + /// + [Parameter] + public SortableListPutMode Put { get; set; } + + /// + /// Provides JavaScript interop functionality for the Sortable List. + /// + [Inject] private SortableListJsInterop SortableListJsInterop { get; set; } = default!; + + #endregion +} diff --git a/blazorbootstrap/Components/SortableList/SortableList.razor.css b/blazorbootstrap/Components/SortableList/SortableList.razor.css new file mode 100644 index 000000000..5a41b28a9 --- /dev/null +++ b/blazorbootstrap/Components/SortableList/SortableList.razor.css @@ -0,0 +1,3 @@ +::deep .bb-sortable-list-handle { + cursor: grab !important; +} diff --git a/blazorbootstrap/Components/SortableList/SortableListJsInterop.cs b/blazorbootstrap/Components/SortableList/SortableListJsInterop.cs new file mode 100644 index 000000000..dbda19200 --- /dev/null +++ b/blazorbootstrap/Components/SortableList/SortableListJsInterop.cs @@ -0,0 +1,38 @@ +namespace BlazorBootstrap; + +public class SortableListJsInterop : IAsyncDisposable +{ + #region Fields and Constants + + private readonly Lazy> moduleTask; + + #endregion + + #region Constructors + + public SortableListJsInterop(IJSRuntime jsRuntime) + { + moduleTask = new Lazy>(() => jsRuntime.InvokeAsync("import", "./_content/Blazor.Bootstrap/blazor.bootstrap.sortable-list.js").AsTask()); + } + + #endregion + + #region Methods + + public async ValueTask DisposeAsync() + { + if (moduleTask.IsValueCreated) + { + var module = await moduleTask.Value; + await module.DisposeAsync(); + } + } + + public async Task InitializeAsync(string elementId, string elementName, string handle, string group, bool allowSorting, object pull, object put, string filter, object objRef) + { + var module = await moduleTask.Value; + await module.InvokeVoidAsync("initialize", elementId, elementName, handle, group, allowSorting, pull, put, filter, objRef); + } + + #endregion +} diff --git a/blazorbootstrap/Components/Spinner/Spinner.razor b/blazorbootstrap/Components/Spinner/Spinner.razor new file mode 100644 index 000000000..ab5f906a5 --- /dev/null +++ b/blazorbootstrap/Components/Spinner/Spinner.razor @@ -0,0 +1,24 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +@if (Visible) +{ + @if (Type == SpinnerType.Dots) + { + + @if (!string.IsNullOrWhiteSpace(Title)) + { + @Title + } + + + + + } + else + { +
    + @VisuallyHiddenText +
    + } +} diff --git a/blazorbootstrap/Components/Spinner/Spinner.razor.cs b/blazorbootstrap/Components/Spinner/Spinner.razor.cs new file mode 100644 index 000000000..e63c3d850 --- /dev/null +++ b/blazorbootstrap/Components/Spinner/Spinner.razor.cs @@ -0,0 +1,111 @@ +using System.Drawing; + +namespace BlazorBootstrap; + +public partial class Spinner : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(Type.ToSpinnerTypeClass()) + .AddClass(Color.ToSpinnerColorClass()) + .AddClass($"{Type.ToSpinnerTypeClass()}-{Size.ToSpinnerSizeClass()}", Type is (SpinnerType.Border or SpinnerType.Grow)) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + protected override void OnInitialized() + { + AdditionalAttributes ??= new Dictionary(); + + if (Type != SpinnerType.Dots) + { + if (string.IsNullOrWhiteSpace(Title)) + AdditionalAttributes.Remove("title"); + else if (!AdditionalAttributes.TryGetValue("title", out _)) + AdditionalAttributes.Add("title", Title); + else if (AdditionalAttributes.TryGetValue("title", out _)) + AdditionalAttributes["title"] = Title; + } + + base.OnInitialized(); + } + + /// + /// Calculates width, height, and circles information for the spinner SVG. + /// + /// A tuple containing width, height, and a list of spinner circles. + private (int Width, int Height, List Circles) GetSpinnerSvgInfo() + { + // Calculate radius based on Size + var radius = 4; // default: SpinnerSize.Medium + + if (Size == SpinnerSize.Small) + radius = 2; + else if (Size == SpinnerSize.Large) + radius = 6; + else if (Size == SpinnerSize.ExtraLarge) + radius = 8; + + var defaultSpace = 4; + + // Calculate other dimensions based on radius + var diameter = 2 * radius; + + var circle1 = new SpinnerCircle(radius, radius, diameter); + var circle2 = new SpinnerCircle(radius, circle1.Cx + diameter + defaultSpace, diameter); + var circle3 = new SpinnerCircle(radius, circle2.Cx + diameter + defaultSpace, diameter); + + var width = defaultSpace + diameter * 3 + defaultSpace; + var height = defaultSpace + diameter + defaultSpace; + + return (width, height, new List { circle1, circle2, circle3 }); + } + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the color of the spinner. + /// + [Parameter] + public SpinnerColor Color { get; set; } = SpinnerColor.None; + + /// + /// Gets or sets the size of the spinner. + /// + [Parameter] + public SpinnerSize Size { get; set; } = SpinnerSize.Medium; + + /// + /// Gets the width, height, and circles information for the spinner SVG. + /// + private (int Width, int Height, List Circles) SpinnerSvg => GetSpinnerSvgInfo(); + + /// + /// Gets or sets the title text used as an accessibility attribute. + /// + [Parameter] + public string? Title { get; set; } + + /// + /// Gets or sets the type of the spinner. + /// + [Parameter] + public SpinnerType Type { get; set; } = SpinnerType.Border; + + /// + /// Gets or sets whether the spinner is visible or not. + /// + [Parameter] + public bool Visible { get; set; } = true; + + /// + /// Gets or sets the visually hidden text. + /// + [Parameter] + public string? VisuallyHiddenText { get; set; } = "Loading..."; + + #endregion +} diff --git a/blazorbootstrap/Components/Spinner/Spinner.razor.css b/blazorbootstrap/Components/Spinner/Spinner.razor.css new file mode 100644 index 000000000..b7e248257 --- /dev/null +++ b/blazorbootstrap/Components/Spinner/Spinner.razor.css @@ -0,0 +1,88 @@ +/* scss-docs-start spinner-dots-keyframes */ +@keyframes spinner-dots { + 0% { + opacity: 1; + } + + 50%, 100% { + opacity: .3; + } +} + +/* scss-docs-end spinner-dots-keyframes */ +.spinner-dots { + user-select: none; +} + + .spinner-dots > circle:first-of-type, + .spinner-dots > circle:last-of-type, + .spinner-dots > circle:nth-of-type(2) { + fill: currentcolor; + animation: spinner-dots .75s infinite ease-in-out alternate; + } + + .spinner-dots > circle:nth-of-type(2) { + animation-delay: .25s; + } + + .spinner-dots > circle:last-of-type { + animation-delay: .5s; + } + +/* Size: START */ + +/* default */ +.spinner-border-sm { + --bs-spinner-width: 1rem; + --bs-spinner-height: 1rem; + --bs-spinner-border-width: 0.25em; + --bs-spinner-vertical-align: -0.125em; +} +/* custom CSS classes */ +.spinner-border-md { + --bs-spinner-width: 2rem; + --bs-spinner-height: 2rem; + --bs-spinner-border-width: 0.25em; + --bs-spinner-vertical-align: -0.125em; +} +.spinner-border-lg { + --bs-spinner-width: 3rem; + --bs-spinner-height: 3rem; + --bs-spinner-border-width: 0.25em; + --bs-spinner-vertical-align: -0.125em; +} +.spinner-border-xl { + --bs-spinner-width: 4rem; + --bs-spinner-height: 4rem; + --bs-spinner-border-width: 0.25em; + --bs-spinner-vertical-align: -0.125em; +} + +/* default */ +.spinner-grow-sm { + --bs-spinner-width: 1rem; + --bs-spinner-height: 1rem; + --bs-spinner-border-width: 0.25em; + --bs-spinner-vertical-align: -0.125em; +} +/* custom CSS classes */ +.spinner-grow-md { + --bs-spinner-width: 2rem; + --bs-spinner-height: 2rem; + --bs-spinner-border-width: 0.25em; + --bs-spinner-vertical-align: -0.125em; +} +.spinner-grow-lg { + --bs-spinner-width: 3rem; + --bs-spinner-height: 3rem; + --bs-spinner-border-width: 0.25em; + --bs-spinner-vertical-align: -0.125em; +} +.spinner-grow-xl { + --bs-spinner-width: 4rem; + --bs-spinner-height: 4rem; + --bs-spinner-border-width: 0.25em; + --bs-spinner-vertical-align: -0.125em; +} + +/* Size: END */ \ No newline at end of file diff --git a/blazorbootstrap/Components/Tabs/Tab.razor b/blazorbootstrap/Components/Tabs/Tab.razor new file mode 100644 index 000000000..c067a40f4 --- /dev/null +++ b/blazorbootstrap/Components/Tabs/Tab.razor @@ -0,0 +1,2 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase diff --git a/blazorbootstrap/Components/Tabs/Tab.razor.cs b/blazorbootstrap/Components/Tabs/Tab.razor.cs new file mode 100644 index 000000000..228dbf47d --- /dev/null +++ b/blazorbootstrap/Components/Tabs/Tab.razor.cs @@ -0,0 +1,90 @@ +namespace BlazorBootstrap; + +public partial class Tab : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class).Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + /// + protected override async ValueTask DisposeAsyncCore(bool disposing) + { + if (disposing && IsRenderComplete) + { + try + { + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.tabs.dispose", Id); + } + catch (JSDisconnectedException) + { + // do nothing + } + } + + await base.DisposeAsyncCore(disposing); + } + + protected override void OnInitialized() + { + Id = IdGenerator.GetNextId(); // This is required + + Parent.AddTab(this); + } + + #endregion + + #region Properties, Indexers + + /// + /// Specifies the content to be rendered inside the tab. + /// + [Parameter] + [EditorRequired] + public RenderFragment Content { get; set; } = default!; + + /// + /// Gets or sets the disabled. + /// + [Parameter] + public bool Disabled { get; set; } + + /// + /// Gets or sets the active tab. + /// + [Parameter] + public bool IsActive { get; set; } + + /// + /// Gets or sets the tab name. + /// + [Parameter] + public string Name { get; set; } = default!; + + /// + /// This event fires when the user clicks the corresponding tab button and the tab is displayed. + /// + [Parameter] + public EventCallback OnClick { get; set; } + + /// + /// Gets or sets the parent. + /// + [CascadingParameter] + internal Tabs Parent { get; set; } = default!; + + /// + /// Gets or sets the tab title. + /// + [Parameter] + public string Title { get; set; } = default!; + + /// + /// Gets or sets the tab title template. + /// + [Parameter] + public RenderFragment TitleTemplate { get; set; } = default!; + + #endregion +} diff --git a/blazorbootstrap/Components/Tabs/Tabs.razor b/blazorbootstrap/Components/Tabs/Tabs.razor new file mode 100644 index 000000000..6aa202266 --- /dev/null +++ b/blazorbootstrap/Components/Tabs/Tabs.razor @@ -0,0 +1,42 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + + + @ChildContent + + +@if (tabs?.Any() ?? false) +{ +
    + +
    + @foreach (var t in tabs) + { + + } +
    +
    +} diff --git a/blazorbootstrap/Components/Tabs/Tabs.razor.cs b/blazorbootstrap/Components/Tabs/Tabs.razor.cs new file mode 100644 index 000000000..46d4b6c70 --- /dev/null +++ b/blazorbootstrap/Components/Tabs/Tabs.razor.cs @@ -0,0 +1,343 @@ +namespace BlazorBootstrap; + +public partial class Tabs : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private Tab activeTab = default!; + + private bool isDefaultActiveTabSet = false; + + private DotNetObjectReference objRef = default!; + + private int removedTabIndex = -1; + + private bool showLastTab = false; + + private List? tabs = new(); + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.Nav) + .AddClass(BootstrapClass.NavTabs, NavStyle == NavStyle.Tabs) + .AddClass(BootstrapClass.NavPills, NavStyle is (NavStyle.Pills or NavStyle.VerticalPills)) + .AddClass(BootstrapClass.NavUnderline, NavStyle is (NavStyle.Underline or NavStyle.VerticalUnderline)) + .AddClass(BootstrapClass.FlexColumn, IsVertical) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + /// + protected override async ValueTask DisposeAsyncCore(bool disposing) + { + if (disposing) tabs = null; + + await base.DisposeAsyncCore(disposing); + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.tabs.initialize", Id, objRef); + + // Set active tab + if (firstRender && !isDefaultActiveTabSet) + await SetDefaultActiveTabAsync(); + + // Show last tab + if (showLastTab) + { + await ShowLastTabAsync(); + showLastTab = false; + } + + // Show next available tab + if(removedTabIndex > -1) + { + await ShowNextAvailableTabAsync(removedTabIndex); + removedTabIndex = -1; + } + + await base.OnAfterRenderAsync(firstRender); + } + + protected override async Task OnInitializedAsync() + { + objRef ??= DotNetObjectReference.Create(this); + + AdditionalAttributes ??= new Dictionary(); + + if (IsVertical) + AdditionalAttributes.Add("aria-orientation", "vertical"); + + await base.OnInitializedAsync(); + } + + [JSInvokable] + public async Task bsHiddenTab(string activeTabId, string previousActiveTabId) + { + var activeTabTitle = tabs?.FirstOrDefault(x => x.Id == activeTabId)?.Title; + var previousActiveTabTitle = tabs?.FirstOrDefault(x => x.Id == previousActiveTabId)?.Title; + + var args = new TabsEventArgs(activeTabTitle!, previousActiveTabTitle!); + await OnHidden.InvokeAsync(args); + } + + [JSInvokable] + public async Task bsHideTab(string activeTabId, string previousActiveTabId) + { + var activeTabTitle = tabs?.FirstOrDefault(x => x.Id == activeTabId)?.Title; + var previousActiveTabTitle = tabs?.FirstOrDefault(x => x.Id == previousActiveTabId)?.Title; + + var args = new TabsEventArgs(activeTabTitle!, previousActiveTabTitle!); + await OnHiding.InvokeAsync(args); + } + + [JSInvokable] + public async Task bsShownTab(string activeTabId, string previousActiveTabId) + { + var activeTabTitle = tabs?.FirstOrDefault(x => x.Id == activeTabId)?.Title; + var previousActiveTabTitle = tabs?.FirstOrDefault(x => x.Id == previousActiveTabId)?.Title; + + var args = new TabsEventArgs(activeTabTitle!, previousActiveTabTitle!); + await OnShown.InvokeAsync(args); + } + + [JSInvokable] + public async Task bsShowTab(string activeTabId, string previousActiveTabId) + { + var activeTabTitle = tabs?.FirstOrDefault(x => x.Id == activeTabId)?.Title; + var previousActiveTabTitle = tabs?.FirstOrDefault(x => x.Id == previousActiveTabId)?.Title; + + var args = new TabsEventArgs(activeTabTitle!, previousActiveTabTitle!); + await OnShowing.InvokeAsync(args); + } + + /// + /// Initializes the most recently added tab, optionally displaying it. + /// + /// Specifies whether to display the tab after initialization. + [Obsolete("This method is obseolete. Use `ShowRecentTabAsync` method instead.")] + public void InitializeRecentTab(bool showTab) + { + if (showTab) + { + showLastTab = true; + } + } + + /// + /// Removes the tab by index. + /// + /// + /// + public void RemoveTabByIndex(int tabIndex) + { + if (!tabs?.Any() ?? true) return; + + if (tabIndex < 0 || tabIndex >= tabs!.Count) throw new IndexOutOfRangeException(); + + var tab = tabs[tabIndex]; + + if (tab is null) return; + + tabs!.Remove(tab); + + removedTabIndex = tabIndex; + } + + /// + /// Removes the tab by name. + /// + /// + public void RemoveTabByName(string tabName) + { + if (!tabs?.Any() ?? true) return; + + var tabIndex = tabs!.FindIndex(x => x.Name == tabName); + + if (tabIndex == -1) return; + + var tab = tabs[tabIndex]; + + tabs!.Remove(tab); + + removedTabIndex = tabIndex; + } + + /// + /// Selects the first tab and show its associated pane. + /// + public async Task ShowFirstTabAsync() + { + if (!tabs?.Any() ?? true) return; + + var tab = tabs!.FirstOrDefault(x => !x.Disabled); + + if (tab is { Disabled: false }) + await ShowTabAsync(tab); + } + + /// + /// Selects the last tab and show its associated pane. + /// + public async Task ShowLastTabAsync() + { + if (!tabs?.Any() ?? true) return; + + var tab = tabs!.LastOrDefault(x => !x.Disabled); + + if (tab is { Disabled: false }) + await ShowTabAsync(tab); + } + + /// + /// Shows the recently added tab. + /// + public void ShowRecentTab() => showLastTab = true; + + /// + /// Selects the tab by index and show its associated pane. + /// + /// The zero-based index of the element to get or set. + public async Task ShowTabByIndexAsync(int tabIndex) + { + if (!tabs?.Any() ?? true) return; + + if (tabIndex < 0 || tabIndex >= tabs!.Count) throw new IndexOutOfRangeException(); + + var tab = tabs[tabIndex]; + + if (tab is { Disabled: false }) + await ShowTabAsync(tab); + } + + /// + /// Selects the tab by name and show its associated pane. + /// + /// The name of the tab to select. + public async Task ShowTabByNameAsync(string tabName) + { + if (!tabs?.Any() ?? true) return; + + var tab = tabs!.LastOrDefault(x => x.Name == tabName && !x.Disabled); + + if (tab is not null) + await ShowTabAsync(tab); + } + + internal void AddTab(Tab tab) + { + tabs!.Add(tab); + + if (tab is { IsActive: true, Disabled: false }) + activeTab = tab; + + StateHasChanged(); // This is mandatory + } + + /// + /// Sets default active tab. + /// + internal async Task SetDefaultActiveTabAsync() + { + if (!tabs?.Any() ?? true) return; + + activeTab ??= tabs!.FirstOrDefault(x => !x.Disabled)!; + + if (activeTab is not null) + await ShowTabAsync(activeTab); + } + + private async Task OnTabClickAsync(Tab tab) => await ShowTabAsync(tab); + + private async Task ShowNextAvailableTabAsync(int removedTabIndex) + { + if (!tabs?.Any() ?? true) return; + + if (removedTabIndex < 0 || removedTabIndex > tabs!.Count) throw new IndexOutOfRangeException(); + + var tabIndex = 0; + + if (removedTabIndex == tabs!.Count) + tabIndex = tabs!.Count - 1; + else if (removedTabIndex < tabs!.Count) + tabIndex = removedTabIndex; + + var tab = tabs[tabIndex]; + + if (tab is { Disabled: false }) + await ShowTabAsync(tab); + } + + private async Task ShowTabAsync(Tab tab) + { + if (!isDefaultActiveTabSet) + isDefaultActiveTabSet = true; + + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.tabs.show", tab.Id); + + if (tab?.OnClick.HasDelegate ?? false) + await tab.OnClick.InvokeAsync(new TabEventArgs(tab!.Name, tab.Title)); + } + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the content to be rendered within the component. + /// + [Parameter] + public RenderFragment ChildContent { get; set; } = default!; + + /// + /// Gets or sets the tabs fade effect. + /// + [Parameter] + public bool EnableFadeEffect { get; set; } + + private bool IsVertical => + NavStyle == NavStyle.Vertical + || NavStyle == NavStyle.VerticalPills + || NavStyle == NavStyle.VerticalUnderline; + + private string? NavParentDivCssClass => IsVertical ? "d-flex" : default; + + /// + /// Get or sets the nav style. + /// + [Parameter] + public NavStyle NavStyle { get; set; } = NavStyle.Tabs; + + /// + /// This event fires after a new tab is shown (and thus the previous active tab is hidden). + /// + [Parameter] + public EventCallback OnHidden { get; set; } + + /// + /// This event fires when a new tab is to be shown (and thus the previous active tab is to be hidden). + /// + [Parameter] + public EventCallback OnHiding { get; set; } + + /// + /// This event fires on tab show, but before the new tab has been shown. + /// + [Parameter] + public EventCallback OnShowing { get; set; } + + /// + /// This event fires on tab show after a tab has been shown. + /// + [Parameter] + public EventCallback OnShown { get; set; } + + private string? TabContentCssClass => IsVertical ? "tab-content flex-grow-1" : "tab-content"; + + #endregion +} diff --git a/blazorbootstrap/Components/Toasts/SimpleToast.razor b/blazorbootstrap/Components/Toasts/SimpleToast.razor new file mode 100644 index 000000000..ec0843e9d --- /dev/null +++ b/blazorbootstrap/Components/Toasts/SimpleToast.razor @@ -0,0 +1,16 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + + +
    +
    +
    + @ToastMessage?.Message +
    + @if (!AutoHide || ShowCloseButton) + { + + } +
    +
    +
    diff --git a/blazorbootstrap/Components/Toasts/SimpleToast.razor.cs b/blazorbootstrap/Components/Toasts/SimpleToast.razor.cs new file mode 100644 index 000000000..910657bec --- /dev/null +++ b/blazorbootstrap/Components/Toasts/SimpleToast.razor.cs @@ -0,0 +1,121 @@ +namespace BlazorBootstrap; + +public partial class SimpleToast : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private DotNetObjectReference? objRef; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.Toast) + .AddClass(ToastMessage!.Type.ToToastTextColorClass(), ToastMessage is not null) + .AddClass(ToastMessage!.Type.ToToastBackgroundColorClass(), ToastMessage is not null) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + /// + protected override async ValueTask DisposeAsyncCore(bool disposing) + { + if (disposing) + { + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.toasts.dispose", Id); + objRef?.Dispose(); + } + + await base.DisposeAsyncCore(disposing); + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + await ShowAsync(); + + await base.OnAfterRenderAsync(firstRender); + } + + protected override async Task OnInitializedAsync() + { + objRef ??= DotNetObjectReference.Create(this); + + await base.OnInitializedAsync(); + } + + [JSInvokable] + public async Task bsHiddenToast() => await Hidden.InvokeAsync(new ToastEventArgs(ToastMessage!.Id, Id!)); + + [JSInvokable] + public async Task bsHideToast() => await Hiding.InvokeAsync(new ToastEventArgs(ToastMessage!.Id, Id!)); + + [JSInvokable] + public async Task bsShownToast() => await Shown.InvokeAsync(new ToastEventArgs(ToastMessage!.Id, Id!)); + + [JSInvokable] + public async Task bsShowToast() => await Showing.InvokeAsync(new ToastEventArgs(ToastMessage!.Id, Id!)); + + /// + /// Hides an element’s toast. + /// + public async Task HideAsync() => await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.toasts.hide", Id); + + /// + /// Reveals an element’s toast. + /// + public async Task ShowAsync() => await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.toasts.show", Id, AutoHide, Delay, objRef); + + #endregion + + #region Properties, Indexers + + /// + /// Auto hide the toast. Default is false. + /// + [Parameter] + public bool AutoHide { get; set; } = true; + + private string CloseButtonClass => $"btn-close-{ToastMessage!.Type.ToToastTextColorClass()}"; + + /// + /// Delay hiding the toast (ms). + /// + [Parameter] + public int Delay { get; set; } = 5000; + + /// + /// This event is fired when the toast has finished being hidden from the user. + /// + [Parameter] + public EventCallback Hidden { get; set; } + + /// + /// This event is fired immediately when the hide instance method has been called. + /// + [Parameter] + public EventCallback Hiding { get; set; } + + /// + /// Show the close button. + /// + [Parameter] + public bool ShowCloseButton { get; set; } = true; + + /// + /// This event fires immediately when the show instance method is called. + /// + [Parameter] + public EventCallback Showing { get; set; } + + /// + /// This event is fired when the toast has been made visible to the user. + /// + [Parameter] + public EventCallback Shown { get; set; } + + [Parameter] public ToastMessage? ToastMessage { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Components/Toasts/Toast.razor b/blazorbootstrap/Components/Toasts/Toast.razor new file mode 100644 index 000000000..83f4afec7 --- /dev/null +++ b/blazorbootstrap/Components/Toasts/Toast.razor @@ -0,0 +1,20 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
    +
    + + @ToastMessage.Title + @ToastMessage.HelpText + @if (!AutoHide || ShowCloseButton) + { + + } +
    +
    + @ToastMessage.Message +
    + + + +
    diff --git a/blazorbootstrap/Components/Toasts/Toast.razor.cs b/blazorbootstrap/Components/Toasts/Toast.razor.cs new file mode 100644 index 000000000..714c8d0c8 --- /dev/null +++ b/blazorbootstrap/Components/Toasts/Toast.razor.cs @@ -0,0 +1,209 @@ +namespace BlazorBootstrap; + +public partial class Toast : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private string? customIconName; + + private DotNetObjectReference objRef = default!; + + private ProgressBar toastProgressBar = default!; + + private double toastProgressBarWidth = 100; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.Toast) + .AddClass(BackgroundColor.White.ToBackgroundClass()) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + /// + protected override async ValueTask DisposeAsyncCore(bool disposing) + { + if (disposing) + { + try + { + if (IsRenderComplete) + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.toasts.dispose", Id); + } + catch (JSDisconnectedException) + { + // do nothing + } + + objRef?.Dispose(); + } + + await base.DisposeAsyncCore(disposing); + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + //await base.OnAfterRenderAsync(firstRender); + + if (firstRender) + await ShowAsync(); + + if (firstRender && AutoHide && Delay > 0) + { + var decrementWidth = (double)10000 / Delay; + using var periodicTimer = new PeriodicTimer(TimeSpan.FromMilliseconds(100)); + + while (await periodicTimer.WaitForNextTickAsync()) + { + if (toastProgressBarWidth == 0) + break; + + if (decrementWidth is < 0 or > 100) + continue; + + if (toastProgressBarWidth - decrementWidth < 0) + toastProgressBarWidth = 0; + else + toastProgressBarWidth -= decrementWidth; + + StateHasChanged(); + } + } + + await base.OnAfterRenderAsync(firstRender); + } + + protected override async Task OnInitializedAsync() + { + objRef ??= DotNetObjectReference.Create(this); + + customIconName = ToastMessage.CustomIconName; + + await base.OnInitializedAsync(); + } + + [JSInvokable] + public async Task bsHiddenToast() => await Hidden.InvokeAsync(new ToastEventArgs(ToastMessage.Id, Id!)); + + [JSInvokable] + public async Task bsHideToast() => await Hiding.InvokeAsync(new ToastEventArgs(ToastMessage.Id, Id!)); + + [JSInvokable] + public async Task bsShownToast() => await Shown.InvokeAsync(new ToastEventArgs(ToastMessage.Id, Id!)); + + [JSInvokable] + public async Task bsShowToast() => await Showing.InvokeAsync(new ToastEventArgs(ToastMessage.Id, Id!)); + + /// + /// Hides an element’s toast. + /// + public async Task HideAsync() => await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.toasts.hide", Id); + + /// + /// Reveals an element’s toast. + /// + public async Task ShowAsync() => await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.toasts.show", Id, AutoHide, Delay, objRef); + + private string GetIconClass() => + ToastMessage.Type switch + { + ToastType.Primary => TextColor.Primary.ToTextColorClass(), + ToastType.Secondary => TextColor.Secondary.ToTextColorClass(), + ToastType.Success => TextColor.Success.ToTextColorClass(), + ToastType.Danger => TextColor.Danger.ToTextColorClass(), + ToastType.Warning => TextColor.Warning.ToTextColorClass(), + ToastType.Info => TextColor.Info.ToTextColorClass(), + ToastType.Light => TextColor.Light.ToTextColorClass(), + ToastType.Dark => TextColor.Dark.ToTextColorClass(), + _ => "" + }; + + private ProgressColor GetProgressColor() => + ToastMessage.Type switch + { + ToastType.Primary => ProgressColor.Primary, + ToastType.Secondary => ProgressColor.Secondary, + ToastType.Success => ProgressColor.Success, + ToastType.Danger => ProgressColor.Danger, + ToastType.Warning => ProgressColor.Warning, + ToastType.Info => ProgressColor.Info, + ToastType.Dark => ProgressColor.Dark, + _ => ProgressColor.Primary + }; + + private IconName GetToastIconName() => + string.IsNullOrWhiteSpace(ToastMessage.CustomIconName) + && ToastMessage.IconName != IconName.None + ? ToastMessage.IconName + : ToastMessage.Type switch + { + ToastType.Primary => IconName.LightbulbFill, + ToastType.Secondary => IconName.ExclamationTriangleFill, + ToastType.Success => IconName.CheckCircleFill, + ToastType.Danger => IconName.Fire, + ToastType.Warning => IconName.ExclamationTriangleFill, + ToastType.Info => IconName.InfoCircleFill, + ToastType.Light => IconName.ExclamationTriangleFill, + ToastType.Dark => IconName.ExclamationTriangleFill, + _ => IconName.BellFill + }; + + #endregion + + #region Properties, Indexers + + /// + /// Automatically hide the toast after the delay. + /// + [Parameter] + public bool AutoHide { get; set; } + + /// + /// Delay in milliseconds before hiding the toast. + /// + [Parameter] + public int Delay { get; set; } = 5000; + + /// + /// This event is fired when the toast has finished being hidden from the user. + /// + [Parameter] + public EventCallback Hidden { get; set; } + + /// + /// This event is fired immediately when the hide instance method has been called. + /// + [Parameter] + public EventCallback Hiding { get; set; } + + private string iconClass => $"{GetIconClass()} me-2".Trim(); + + private IconName iconName => GetToastIconName(); + + private ProgressColor progressColor => GetProgressColor(); + + /// + /// Show the close button. + /// + [Parameter] + public bool ShowCloseButton { get; set; } = true; + + /// + /// This event fires immediately when the show instance method is called. + /// + [Parameter] + public EventCallback Showing { get; set; } + + /// + /// This event is fired when the toast has been made visible to the user. + /// + [Parameter] + public EventCallback Shown { get; set; } + + [Parameter] public ToastMessage ToastMessage { get; set; } = default!; + + #endregion +} diff --git a/blazorbootstrap/Components/Toasts/Toasts.razor b/blazorbootstrap/Components/Toasts/Toasts.razor new file mode 100644 index 000000000..7f4665a3f --- /dev/null +++ b/blazorbootstrap/Components/Toasts/Toasts.razor @@ -0,0 +1,19 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + +
    + @if (Messages != null && Messages.Any()) + { + foreach (var item in Messages) + { + if (string.IsNullOrWhiteSpace(item.Title)) + { + + } + else + { + + } + } + } +
    diff --git a/blazorbootstrap/Components/Toasts/Toasts.razor.cs b/blazorbootstrap/Components/Toasts/Toasts.razor.cs new file mode 100644 index 000000000..188dc194f --- /dev/null +++ b/blazorbootstrap/Components/Toasts/Toasts.razor.cs @@ -0,0 +1,131 @@ +namespace BlazorBootstrap; + +public partial class Toasts : BlazorBootstrapComponentBase +{ + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class) + .AddClass(BootstrapClass.ToastContainer) + .AddClass(BootstrapClass.PositionFixed) + .AddClass(Placement.ToToastsPlacementClass()) + .Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + /// + protected override async ValueTask DisposeAsyncCore(bool disposing) + { + if (disposing) + { + Messages = null; + + if (ToastService is not null) + ToastService.OnNotify -= OnNotify; + } + + await base.DisposeAsyncCore(disposing); + } + + protected override void OnInitialized() + { + if (ToastService is not null) + ToastService.OnNotify += OnNotify; + + base.OnInitialized(); + } + + private void OnNotify(ToastMessage toastMessage) + { + if (toastMessage is null) + return; + + Messages ??= new List(); + + Messages.Add(toastMessage); + + StateHasChanged(); + } + + private void OnToastHiddenAsync(ToastEventArgs args) + { + if (Messages is null || !Messages.Any()) + return; + + var message = Messages.FirstOrDefault(x => x.Id == args.ToastId); + + if (message is not null) + Messages.Remove(message); + } + + private async Task OnToastShownAsync(ToastEventArgs args) + { + if (Messages is null || !Messages.Any()) + return; + + Messages.ForEach( + x => + { + if (x.Id == args.ToastId) + x.SetElementId(args.ElementId); + } + ); + + if (Messages.Count >= StackLength) + { + var deleteMessages = Messages.GetRange(0, Messages.Count - StackLength); + + foreach (var message in deleteMessages) + { + if (message is not null) + Messages.Remove(message); + + if (string.IsNullOrWhiteSpace(message!.ElementId)) + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.toasts.hide", message.ElementId); + } + } + } + + #endregion + + #region Properties, Indexers + + /// + /// Auto hide the toast. Default is false. + /// + [Parameter] + public bool AutoHide { get; set; } + + /// + /// Delay hiding the toast (ms). Default is 5000 milli seconds. + /// + [Parameter] + public int Delay { get; set; } = 5000; + + /// + /// List of all the toasts. + /// + [Parameter] + public List? Messages { get; set; } = default!; + + /// + /// Specifies the toasts placement. Default is top right. + /// + [Parameter] + public ToastsPlacement Placement { get; set; } = ToastsPlacement.TopRight; + + /// + /// Show the close button. + /// + [Parameter] + public bool ShowCloseButton { get; set; } = true; + + /// + /// Specifies the toast container maximum capacity. Default is 5. + /// + [Parameter] + public int StackLength { get; set; } = 5; + + [Inject] public ToastService ToastService { get; set; } = default!; + + #endregion +} diff --git a/blazorbootstrap/Components/Tooltip/Tooltip.razor b/blazorbootstrap/Components/Tooltip/Tooltip.razor new file mode 100644 index 000000000..67efd5819 --- /dev/null +++ b/blazorbootstrap/Components/Tooltip/Tooltip.razor @@ -0,0 +1,15 @@ +@namespace BlazorBootstrap +@inherits BlazorBootstrapComponentBase + + + @ChildContent + \ No newline at end of file diff --git a/blazorbootstrap/Components/Tooltip/Tooltip.razor.cs b/blazorbootstrap/Components/Tooltip/Tooltip.razor.cs new file mode 100644 index 000000000..88ebe6ac4 --- /dev/null +++ b/blazorbootstrap/Components/Tooltip/Tooltip.razor.cs @@ -0,0 +1,118 @@ +namespace BlazorBootstrap; + +public partial class Tooltip : BlazorBootstrapComponentBase +{ + #region Fields and Constants + + private TooltipColor color = default!; + private bool isFirstRenderComplete = false; + private DotNetObjectReference objRef = default!; + private string? title; + + #endregion + + #region Methods + + protected string? ClassNames => new CssClassBuilder(Class).Build(); + + protected string? StyleNames => new CssStyleBuilder(Style).Build(); + + /// + protected override async ValueTask DisposeAsyncCore(bool disposing) + { + if (disposing) + { + try + { + if (IsRenderComplete) + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.tooltip.dispose", Element); + } + catch (JSDisconnectedException) + { + // do nothing + } + + objRef?.Dispose(); + } + + await base.DisposeAsyncCore(disposing); + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.tooltip.initialize", Element); + + isFirstRenderComplete = true; + } + + await base.OnAfterRenderAsync(firstRender); + } + + protected override async Task OnInitializedAsync() + { + objRef ??= DotNetObjectReference.Create(this); + + title = Title; + + color = Color; + + await base.OnInitializedAsync(); + } + + protected override async Task OnParametersSetAsync() + { + if (isFirstRenderComplete) + if (title != Title || color != Color) + { + title = Title; + color = Color; + + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.tooltip.dispose", Element); + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.tooltip.update", Element); + } + } + + public async Task ShowAsync() + { + await JSRuntime.InvokeVoidAsync("window.blazorBootstrap.tooltip.show", Element); + } + + #endregion + + #region Properties, Indexers + + /// + /// Gets or sets the content to be rendered within the component. + /// + [Parameter] + public RenderFragment ChildContent { get; set; } = default!; + + [Parameter] public TooltipColor Color { get; set; } + + private string colorClass => Color.ToTooltipColorClass()!; + + /// + /// Gets or sets a value indicating whether to display the content as HTML instead of text. + /// + [Parameter] + public bool IsHtml { get; set; } + + private string placement => Placement.ToTooltipPlacementName(); + + /// + /// Specifies the tooltip placement. Default is top right. + /// + [Parameter] + public TooltipPlacement Placement { get; set; } = TooltipPlacement.Top; + + /// + /// Displays informative text when users hover, focus, or tap an element. + /// + [Parameter] + [EditorRequired] + public string Title { get; set; } = default!; + + #endregion +} diff --git a/blazorbootstrap/Config.cs b/blazorbootstrap/Config.cs new file mode 100644 index 000000000..75900126e --- /dev/null +++ b/blazorbootstrap/Config.cs @@ -0,0 +1,30 @@ +using BlazorBootstrap; + +namespace Microsoft.Extensions.DependencyInjection; + +public static class Config +{ + #region Methods + + /// + /// Adds a bootstrap providers and component mappings. + /// + /// + /// IServiceCollection + public static IServiceCollection AddBlazorBootstrap(this IServiceCollection serviceCollection) + { + serviceCollection.AddScoped(); + + serviceCollection.AddScoped(); + serviceCollection.AddScoped(); + serviceCollection.AddScoped(); + serviceCollection.AddScoped(); + + serviceCollection.AddScoped(); + serviceCollection.AddScoped(); + + return serviceCollection; + } + + #endregion +} diff --git a/blazorbootstrap/Constants/BootstrapClass.cs b/blazorbootstrap/Constants/BootstrapClass.cs new file mode 100644 index 000000000..b650ac348 --- /dev/null +++ b/blazorbootstrap/Constants/BootstrapClass.cs @@ -0,0 +1,122 @@ +namespace BlazorBootstrap; + +/// +/// This class provides constants representing common Bootstrap CSS classes. +/// +public static class BootstrapClass +{ + #region Fields and Constants + + public const string Accordion = "accordion"; + public const string AccordionFlush = "accordion-flush"; + public const string AccordionItem = "accordion-item"; + + public const string Active = "active"; + + public const string AlignItemsBaseline = "align-items-baseline"; + public const string AlignItemsCenter = "align-items-center"; + public const string AlignItemsEnd = "align-items-end"; + public const string AlignItemsStart = "align-items-start"; + public const string AlignItemsStretch = "align-items-stretch"; + + public const string Alert = "alert"; + public const string AlertDismisable = "alert-dismissible"; + public const string Badge = "badge"; + + public const string Border = "border"; + public const string BorderEnd = "border-end"; + public const string BorderStart = "border-start"; + + public const string Button = "btn"; + public const string ButtonActive = "active"; + public const string ButtonBlock = "btn-block"; + public const string ButtonDisabled = "disabled"; + public const string ButtonGroup = "btn-group"; + public const string? ButtonLoading = null; + + public const string Callout = "bb-callout"; + public const string CalloutHeading = "bb-callout-heading"; + + public const string Card = "card"; + public const string CardBody = "card-body"; + public const string CardFooter = "card-footer"; + public const string CardGroup = "card-group"; + public const string CardHeader = "card-header"; + public const string CardLink = "card-link"; + public const string CardSubTitle = "card-subtitle"; + public const string CardText = "card-text"; + public const string CardTitle = "card-title"; + + public const string Collapse = "collapse"; + public const string CollapseHorizontal = "collapse-horizontal"; + + public const string ConfirmationModal = "modal-confirmation"; + + public const string Disabled = "disabled"; + + public const string Dropdown = "dropdown"; + public const string DropdownDivider = "dropdown-divider"; + public const string DropdownHeader = "dropdown-header"; + public const string DropdownItem = "dropdown-item"; + public const string DropdownMenu = "dropdown-menu"; + public const string DropdownToggle = "dropdown-toggle"; + public const string DropdownToggleSplit = "dropdown-toggle-split"; + + public const string Fade = "fade"; + + public const string Flex = "d-flex"; + public const string FlexColumn = "flex-column"; + public const string FlexInline = "d-inline-flex"; + public const string FlexRow = "flex-row"; + + public const string FormCheck = "form-check"; + public const string FormCheckInput = "form-check-input"; + public const string FormCheckReverse = "form-check-reverse"; + public const string FormControl = "form-control"; + public const string FormRange = "form-range"; + public const string FormSwitch= "form-switch"; + + public const string Modal = "modal"; + public const string ModalFade = "fade"; + + public const string Nav = "nav"; + public const string NavPills = "nav-pills"; + public const string NavTabs = "nav-tabs"; + public const string NavUnderline = "nav-underline"; + + public const string Offcanvas = "offcanvas"; + + public const string PageLoadingModal = "modal-page-loading"; + + public const string Pagination = "pagination"; + public const string PaginationItem = "page-item"; + public const string PaginationItemActive = "active"; + public const string PaginationItemDisabled = "disabled"; + public const string PaginationLink = "page-link"; + + public const string Placeholder = "placeholder"; + + public const string Position = "position"; + public const string PositionAbsolute = "position-absolute"; + public const string PositionFixed = "position-fixed"; + public const string PositionRelative = "position-relative"; + public const string PositionSticky = "position-sticky"; + + public const string Progress = "progress"; + public const string ProgressBar = "progress-bar"; + public const string ProgressBarAnimated = "progress-bar-animated"; + public const string ProgressBarStriped = "progress-bar-striped"; + + public const string Show = "show"; + + public const string Spinner = "spinner"; + + public const string TableSticky = "bb-table-sticky"; + + public const string TextNoWrap = "text-nowrap"; + + public const string Toast = "toast"; + public const string ToastContainer = "toast-container"; + + #endregion +} diff --git a/blazorbootstrap/Enums/Alignment.cs b/blazorbootstrap/Enums/Alignment.cs new file mode 100644 index 000000000..2dceb0497 --- /dev/null +++ b/blazorbootstrap/Enums/Alignment.cs @@ -0,0 +1,9 @@ +namespace BlazorBootstrap; + +public enum Alignment +{ + None, + Start, + Center, + End +} diff --git a/blazorbootstrap/Enums/AutoCompleteSize.cs b/blazorbootstrap/Enums/AutoCompleteSize.cs new file mode 100644 index 000000000..24718e758 --- /dev/null +++ b/blazorbootstrap/Enums/AutoCompleteSize.cs @@ -0,0 +1,8 @@ +namespace BlazorBootstrap; + +public enum AutoCompleteSize +{ + Default, + Large, + Small +} diff --git a/blazorbootstrap/Enums/BackgroundColor.cs b/blazorbootstrap/Enums/BackgroundColor.cs new file mode 100644 index 000000000..882948b65 --- /dev/null +++ b/blazorbootstrap/Enums/BackgroundColor.cs @@ -0,0 +1,21 @@ +namespace BlazorBootstrap; + +public enum BackgroundColor +{ + None, + Primary, + Secondary, + Success, + Danger, + Warning, + Info, + Light, + Dark, + Body, + White, + Transparent + + // TODO:Review + // https://getbootstrap.com/docs/5.1/utilities/background/#background-gradient + // https://getbootstrap.com/docs/5.1/utilities/background/#opacity +} diff --git a/blazorbootstrap/Enums/BadgeIndicatorType.cs b/blazorbootstrap/Enums/BadgeIndicatorType.cs new file mode 100644 index 000000000..816e38609 --- /dev/null +++ b/blazorbootstrap/Enums/BadgeIndicatorType.cs @@ -0,0 +1,8 @@ +namespace BlazorBootstrap; + +public enum BadgeIndicatorType +{ + None, + RoundedPill, + RoundedCircle +} diff --git a/blazorbootstrap/Enums/BadgePlacement.cs b/blazorbootstrap/Enums/BadgePlacement.cs new file mode 100644 index 000000000..becf79da1 --- /dev/null +++ b/blazorbootstrap/Enums/BadgePlacement.cs @@ -0,0 +1,15 @@ +namespace BlazorBootstrap; + +public enum BadgePlacement +{ + None, + TopLeft, + TopCenter, + TopRight, + MiddleLeft, + MiddleCenter, + MiddleRight, + BottomLeft, + BottomCenter, + BottomRight +} diff --git a/blazorbootstrap/Enums/ButtonType.cs b/blazorbootstrap/Enums/ButtonType.cs new file mode 100644 index 000000000..5bd2db301 --- /dev/null +++ b/blazorbootstrap/Enums/ButtonType.cs @@ -0,0 +1,9 @@ +namespace BlazorBootstrap; + +public enum ButtonType +{ + Button, + Submit, + Reset, + Link +} diff --git a/blazorbootstrap/Enums/ChartType.cs b/blazorbootstrap/Enums/ChartType.cs new file mode 100644 index 000000000..e66d9fc83 --- /dev/null +++ b/blazorbootstrap/Enums/ChartType.cs @@ -0,0 +1,13 @@ +namespace BlazorBootstrap; + +public enum ChartType +{ + Line, + Bar, + Pie, + Doughnut, + PolarArea, + Radar, + Scatter, + Bubble +} diff --git a/blazorbootstrap/Enums/CheckboxState.cs b/blazorbootstrap/Enums/CheckboxState.cs new file mode 100644 index 000000000..bb8358055 --- /dev/null +++ b/blazorbootstrap/Enums/CheckboxState.cs @@ -0,0 +1,8 @@ +namespace BlazorBootstrap; + +public enum CheckboxState +{ + Checked = 1, + Unchecked, + Indeterminate +} diff --git a/blazorbootstrap/Enums/Color/AlterColor.cs b/blazorbootstrap/Enums/Color/AlterColor.cs new file mode 100644 index 000000000..5c6ae0f68 --- /dev/null +++ b/blazorbootstrap/Enums/Color/AlterColor.cs @@ -0,0 +1,14 @@ +namespace BlazorBootstrap; + +public enum AlertColor +{ + None, + Primary, + Secondary, + Success, + Danger, + Warning, + Info, + Light, + Dark +} diff --git a/blazorbootstrap/Enums/Color/BadgeColor.cs b/blazorbootstrap/Enums/Color/BadgeColor.cs new file mode 100644 index 000000000..ca9ae2f2f --- /dev/null +++ b/blazorbootstrap/Enums/Color/BadgeColor.cs @@ -0,0 +1,14 @@ +namespace BlazorBootstrap; + +public enum BadgeColor +{ + None, + Primary, + Secondary, + Success, + Danger, + Warning, + Info, + Light, + Dark +} diff --git a/blazorbootstrap/Enums/Color/ButtonColor.cs b/blazorbootstrap/Enums/Color/ButtonColor.cs new file mode 100644 index 000000000..d9e5b7116 --- /dev/null +++ b/blazorbootstrap/Enums/Color/ButtonColor.cs @@ -0,0 +1,15 @@ +namespace BlazorBootstrap; + +public enum ButtonColor +{ + None, + Primary, + Secondary, + Success, + Danger, + Warning, + Info, + Light, + Dark, + Link +} diff --git a/blazorbootstrap/Enums/Color/CalloutColor.cs b/blazorbootstrap/Enums/Color/CalloutColor.cs new file mode 100644 index 000000000..7cb24d909 --- /dev/null +++ b/blazorbootstrap/Enums/Color/CalloutColor.cs @@ -0,0 +1,12 @@ +namespace BlazorBootstrap; + +public enum CalloutType +{ + Default = 0, + Danger, + Warning, + Info, + [Obsolete("This enum value is obsolete. Use `Success` instead.")] + Tip, + Success +} diff --git a/blazorbootstrap/Enums/Color/CardColor.cs b/blazorbootstrap/Enums/Color/CardColor.cs new file mode 100644 index 000000000..7d6a253eb --- /dev/null +++ b/blazorbootstrap/Enums/Color/CardColor.cs @@ -0,0 +1,14 @@ +namespace BlazorBootstrap; + +public enum CardColor +{ + None, + Primary, + Secondary, + Success, + Danger, + Warning, + Info, + Light, + Dark +} diff --git a/blazorbootstrap/Enums/Color/IconColor.cs b/blazorbootstrap/Enums/Color/IconColor.cs new file mode 100644 index 000000000..ad9c56509 --- /dev/null +++ b/blazorbootstrap/Enums/Color/IconColor.cs @@ -0,0 +1,17 @@ +namespace BlazorBootstrap; + +public enum IconColor +{ + None, + Primary, + Secondary, + Success, + Danger, + Warning, + Info, + Light, + Dark, + Body, + Muted, + White +} diff --git a/blazorbootstrap/Enums/Color/LinkColor.cs b/blazorbootstrap/Enums/Color/LinkColor.cs new file mode 100644 index 000000000..5faf74e74 --- /dev/null +++ b/blazorbootstrap/Enums/Color/LinkColor.cs @@ -0,0 +1,14 @@ +namespace BlazorBootstrap; + +public enum LinkColor +{ + None, + Primary, + Secondary, + Success, + Danger, + Warning, + Info, + Light, + Dark +} diff --git a/blazorbootstrap/Enums/Color/PlaceholderColor.cs b/blazorbootstrap/Enums/Color/PlaceholderColor.cs new file mode 100644 index 000000000..297ac36f5 --- /dev/null +++ b/blazorbootstrap/Enums/Color/PlaceholderColor.cs @@ -0,0 +1,14 @@ +namespace BlazorBootstrap; + +public enum PlaceholderColor +{ + None, + Primary, + Secondary, + Success, + Danger, + Warning, + Info, + Light, + Dark +} diff --git a/blazorbootstrap/Enums/Color/ProgressColor.cs b/blazorbootstrap/Enums/Color/ProgressColor.cs new file mode 100644 index 000000000..90597279b --- /dev/null +++ b/blazorbootstrap/Enums/Color/ProgressColor.cs @@ -0,0 +1,13 @@ +namespace BlazorBootstrap; + +public enum ProgressColor +{ + None, + Primary, + Secondary, + Success, + Danger, + Warning, + Info, + Dark +} diff --git a/blazorbootstrap/Enums/Color/SpinnerColor.cs b/blazorbootstrap/Enums/Color/SpinnerColor.cs new file mode 100644 index 000000000..0d8997176 --- /dev/null +++ b/blazorbootstrap/Enums/Color/SpinnerColor.cs @@ -0,0 +1,14 @@ +namespace BlazorBootstrap; + +public enum SpinnerColor +{ + None = 0, + Primary, + Secondary, + Success, + Danger, + Warning, + Info, + Light, + Dark +} diff --git a/blazorbootstrap/Enums/Color/TabColor.cs b/blazorbootstrap/Enums/Color/TabColor.cs new file mode 100644 index 000000000..51587c73a --- /dev/null +++ b/blazorbootstrap/Enums/Color/TabColor.cs @@ -0,0 +1,14 @@ +namespace BlazorBootstrap; + +public enum TabColor +{ + None, + Primary, + Secondary, + Success, + Danger, + Warning, + Info, + Light, + Dark +} diff --git a/blazorbootstrap/Enums/Color/TextColor.cs b/blazorbootstrap/Enums/Color/TextColor.cs new file mode 100644 index 000000000..d4d97d3d2 --- /dev/null +++ b/blazorbootstrap/Enums/Color/TextColor.cs @@ -0,0 +1,17 @@ +namespace BlazorBootstrap; + +public enum TextColor +{ + None, + Primary, + Secondary, + Success, + Danger, + Warning, + Info, + Light, + Dark, + Body, + Muted, + White +} diff --git a/blazorbootstrap/Enums/Color/TooltipColor.cs b/blazorbootstrap/Enums/Color/TooltipColor.cs new file mode 100644 index 000000000..e3781161c --- /dev/null +++ b/blazorbootstrap/Enums/Color/TooltipColor.cs @@ -0,0 +1,14 @@ +namespace BlazorBootstrap; + +public enum TooltipColor +{ + None, + Primary, + Secondary, + Success, + Danger, + Warning, + Info, + Light, + Dark +} diff --git a/blazorbootstrap/Enums/DialogSize.cs b/blazorbootstrap/Enums/DialogSize.cs new file mode 100644 index 000000000..3bb221d3e --- /dev/null +++ b/blazorbootstrap/Enums/DialogSize.cs @@ -0,0 +1,27 @@ +namespace BlazorBootstrap; + +/// +/// Defines the size of an element. +/// +public enum DialogSize +{ + /// + /// Default ConfirmDialog width 500px will be applied. + /// + Regular, + + /// + /// ConfirmDialog width 300px will be applied. + /// + Small, + + /// + /// ConfirmDialog width 800px will be applied. + /// + Large, + + /// + /// ConfirmDialog width 1140px will be applied. + /// + ExtraLarge +} diff --git a/blazorbootstrap/Enums/DropdownAutoCloseBehavior.cs b/blazorbootstrap/Enums/DropdownAutoCloseBehavior.cs new file mode 100644 index 000000000..208a2d9ed --- /dev/null +++ b/blazorbootstrap/Enums/DropdownAutoCloseBehavior.cs @@ -0,0 +1,19 @@ +namespace BlazorBootstrap; + +public enum DropdownAutoCloseBehavior +{ + /// + /// will be closed (only) by clicking inside the dropdown menu. + /// + Inside, + + /// + /// will be closed (only) by clicking outside the dropdown menu. + /// + Outside, + + /// + /// will be closed by clicking outside or inside the dropdown menu. + /// + Both +} diff --git a/blazorbootstrap/Enums/DropdownDirection.cs b/blazorbootstrap/Enums/DropdownDirection.cs new file mode 100644 index 000000000..6c055bde7 --- /dev/null +++ b/blazorbootstrap/Enums/DropdownDirection.cs @@ -0,0 +1,36 @@ +namespace BlazorBootstrap; + +/// +/// Defines the direction of an element. +/// +public enum DropdownDirection +{ + /// + /// Displays the dropdown menu below the element. + /// + Dropdown, + + /// + /// Displays the dropdown menu below the element and centered. + /// + DropdownCentered, + + /// + /// Displays the dropdown menu right of the element. + /// + Dropend, + + /// + /// Displays the dropdown menu above the element. + Dropup, + + /// + /// Displays the dropdown menu above the element and centered. + /// + DropupCentered, + + /// + /// Displays the dropdown menu start the element. + /// + Dropstart +} diff --git a/blazorbootstrap/Enums/DropdownMenuPosition.cs b/blazorbootstrap/Enums/DropdownMenuPosition.cs new file mode 100644 index 000000000..0341febb5 --- /dev/null +++ b/blazorbootstrap/Enums/DropdownMenuPosition.cs @@ -0,0 +1,7 @@ +namespace BlazorBootstrap; + +public enum DropdownMenuPosition +{ + Start, + End +} diff --git a/blazorbootstrap/Enums/FilterOperator.cs b/blazorbootstrap/Enums/FilterOperator.cs new file mode 100644 index 000000000..81cc10269 --- /dev/null +++ b/blazorbootstrap/Enums/FilterOperator.cs @@ -0,0 +1,84 @@ +namespace BlazorBootstrap; + +/// +/// Specifies the comparison operator of a filter. +/// +public enum FilterOperator +{ + None, + + /// + /// Satisfied if the current value equals the specified value. + /// + Equals, + + /// + /// Satisfied if the current value does not equal the specified value. + /// + NotEquals, + + /// + /// Satisfied if the current value is less than the specified value. + /// + LessThan, + + /// + /// Satisfied if the current value is less than or equal to the specified value. + /// + LessThanOrEquals, + + /// + /// Satisfied if the current value is greater than the specified value. + /// + GreaterThan, + + /// + /// Satisfied if the current value is greater than or equal to the specified value. + /// + GreaterThanOrEquals, + + /// + /// Satisfied if the current value contains the specified value. + /// + Contains, + + /// + /// Satisfied if the current value starts with the specified value. + /// + StartsWith, + + /// + /// Satisfied if the current value ends with the specified value. + /// + EndsWith, + + /// + /// Satisfied if the current value does not contain the specified value. + /// + DoesNotContain, + + /// + /// Satisfied if the current value is null. + /// + IsNull, + + /// + /// Satisfied if the current value is . + /// + IsEmpty, + + /// + /// Satisfied if the current value is not null. + /// + IsNotNull, + + /// + /// Satisfied if the current value is not . + /// + IsNotEmpty, + + /// + /// Clear the current filter. + /// + Clear +} diff --git a/blazorbootstrap/Enums/FlexDirection.cs b/blazorbootstrap/Enums/FlexDirection.cs new file mode 100644 index 000000000..3de75ded3 --- /dev/null +++ b/blazorbootstrap/Enums/FlexDirection.cs @@ -0,0 +1,9 @@ +namespace BlazorBootstrap; + +public enum FlexDirection +{ + Column, + ColumnReverse, + Row, + RowReverse +} diff --git a/blazorbootstrap/Enums/FreezeDirection.cs b/blazorbootstrap/Enums/FreezeDirection.cs new file mode 100644 index 000000000..78315ea01 --- /dev/null +++ b/blazorbootstrap/Enums/FreezeDirection.cs @@ -0,0 +1,7 @@ +namespace BlazorBootstrap; + +public enum FreezeDirection +{ + Left, + Right +} diff --git a/blazorbootstrap/Enums/GridSelectionMode.cs b/blazorbootstrap/Enums/GridSelectionMode.cs new file mode 100644 index 000000000..a10d2f467 --- /dev/null +++ b/blazorbootstrap/Enums/GridSelectionMode.cs @@ -0,0 +1,10 @@ +namespace BlazorBootstrap; + +/// +/// Defines the grid row selection mode. +/// +public enum GridSelectionMode +{ + Single, + Multiple +} diff --git a/blazorbootstrap/Enums/HeadingSize.cs b/blazorbootstrap/Enums/HeadingSize.cs new file mode 100644 index 000000000..d4950408d --- /dev/null +++ b/blazorbootstrap/Enums/HeadingSize.cs @@ -0,0 +1,11 @@ +namespace BlazorBootstrap; + +public enum HeadingSize +{ + H1, + H2, + H3, + H4, + H5, + H6 +} diff --git a/blazorbootstrap/Enums/IconName.cs b/blazorbootstrap/Enums/IconName.cs new file mode 100644 index 000000000..e317914bf --- /dev/null +++ b/blazorbootstrap/Enums/IconName.cs @@ -0,0 +1,2055 @@ +namespace BlazorBootstrap; + +public enum IconName +{ + None = 0, + Activity, + Airplane, + AirplaneEngines, + AirplaneEnginesFill, + AirplaneFill, + Alarm, + AlarmFill, + Alexa, + AlignBottom, + AlignCenter, + AlignEnd, + AlignMiddle, + AlignStart, + AlignTop, + Alipay, + Alphabet, + AlphabetUppercase, + Alt, + Amazon, + AMD, + Android, + Android2, + App, + AppIndicator, + Apple, + Archive, + ArchiveFill, + Arrow90DegDown, + Arrow90DegLeft, + Arrow90DegRight, + Arrow90DegUp, + ArrowBarDown, + ArrowBarLeft, + ArrowBarRight, + ArrowBarUp, + ArrowClockwise, + ArrowCounterclockwise, + ArrowDown, + ArrowDownCircle, + ArrowDownCircleFill, + ArrowDownLeft, + ArrowDownLeftCircle, + ArrowDownLeftCircleFill, + ArrowDownLeftSquare, + ArrowDownLeftSquareFill, + ArrowDownRight, + ArrowDownRightCircle, + ArrowDownRightCircleFill, + ArrowDownRightSquare, + ArrowDownRightSquareFill, + ArrowDownShort, + ArrowDownSquare, + ArrowDownSquareFill, + ArrowDownUp, + ArrowLeft, + ArrowLeftCircle, + ArrowLeftCircleFill, + ArrowLeftRight, + ArrowLeftShort, + ArrowLeftSquare, + ArrowLeftSquareFill, + ArrowRepeat, + ArrowReturnLeft, + ArrowReturnRight, + ArrowRight, + ArrowRightCircle, + ArrowRightCircleFill, + ArrowRightShort, + ArrowRightSquare, + ArrowRightSquareFill, + Arrows, + ArrowsAngleContract, + ArrowsAngleExpand, + ArrowsCollapse, + ArrowsCollapseVertical, + ArrowsExpand, + ArrowsExpandVertical, + ArrowsFullscreen, + ArrowsMove, + ArrowsVertical, + ArrowThroughHeart, + ArrowThroughHeartFill, + ArrowUp, + ArrowUpCircle, + ArrowUpCircleFill, + ArrowUpLeft, + ArrowUpLeftCircle, + ArrowUpLeftCircleFill, + ArrowUpLeftSquare, + ArrowUpLeftSquareFill, + ArrowUpRight, + ArrowUpRightCircle, + ArrowUpRightCircleFill, + ArrowUpRightSquare, + ArrowUpRightSquareFill, + ArrowUpShort, + ArrowUpSquare, + ArrowUpSquareFill, + AspectRatio, + AspectRatioFill, + Asterisk, + At, + Award, + AwardFill, + Back, + Backpack, + Backpack2, + Backpack2Fill, + Backpack3, + Backpack3Fill, + Backpack4, + Backpack4Fill, + BackpackFill, + Backspace, + BackspaceFill, + BackspaceReverse, + BackspaceReverseFill, + Badge3D, + Badge3DFill, + Badge4K, + Badge4KFill, + Badge8K, + Badge8KFill, + BadgeAd, + BadgeAdFill, + BadgeAr, + BadgeArFill, + BadgeCc, + BadgeCcFill, + BadgeHd, + BadgeHdFill, + BadgeSd, + BadgeSdFill, + BadgeTm, + BadgeTmFill, + BadgeVo, + BadgeVoFill, + BadgeVr, + BadgeVrFill, + BadgeWc, + BadgeWcFill, + Bag, + BagCheck, + BagCheckFill, + BagDash, + BagDashFill, + BagFill, + BagHeart, + BagHeartFill, + BagPlus, + BagPlusFill, + BagX, + BagXFill, + Balloon, + BalloonFill, + BalloonHeart, + BalloonHeartFill, + Ban, + Bandaid, + BandaidFill, + BanFill, + Bank, + Bank2, + BarChart, + BarChartFill, + BarChartLine, + BarChartLineFill, + BarChartSteps, + Basket, + Basket2, + Basket2Fill, + Basket3, + Basket3Fill, + BasketFill, + Battery, + BatteryCharging, + BatteryFull, + BatteryHalf, + Behance, + Bell, + BellFill, + BellSlash, + BellSlashFill, + Bezier, + Bezier2, + Bicycle, + Bing, + Binoculars, + BinocularsFill, + BlockquoteLeft, + BlockquoteRight, + Bluetooth, + BodyText, + Book, + BookFill, + BookHalf, + Bookmark, + BookmarkCheck, + BookmarkCheckFill, + BookmarkDash, + BookmarkDashFill, + BookmarkFill, + BookmarkHeart, + BookmarkHeartFill, + BookmarkPlus, + BookmarkPlusFill, + Bookmarks, + BookmarksFill, + BookmarkStar, + BookmarkStarFill, + BookmarkX, + BookmarkXFill, + Bookshelf, + Boombox, + BoomboxFill, + Bootstrap, + BootstrapFill, + BootstrapReboot, + Border, + BorderAll, + BorderBottom, + BorderCenter, + BorderInner, + BorderLeft, + BorderMiddle, + BorderOuter, + BorderRight, + BorderStyle, + BorderTop, + BorderWidth, + BoundingBox, + BoundingBoxCircles, + Box, + Box2, + Box2Fill, + Box2Heart, + Box2HeartFill, + BoxArrowDown, + BoxArrowDownLeft, + BoxArrowDownRight, + BoxArrowInDown, + BoxArrowInDownLeft, + BoxArrowInDownRight, + BoxArrowInLeft, + BoxArrowInRight, + BoxArrowInUp, + BoxArrowInUpLeft, + BoxArrowInUpRight, + BoxArrowLeft, + BoxArrowRight, + BoxArrowUp, + BoxArrowUpLeft, + BoxArrowUpRight, + Boxes, + BoxSeam, + BoxSeamFill, + Braces, + BracesAsterisk, + Bricks, + Briefcase, + BriefcaseFill, + BrightnessAltHigh, + BrightnessAltHighFill, + BrightnessAltLow, + BrightnessAltLowFill, + BrightnessHigh, + BrightnessHighFill, + BrightnessLow, + BrightnessLowFill, + Brilliance, + Broadcast, + BroadcastPin, + BrowserChrome, + BrowserEdge, + BrowserFirefox, + BrowserSafari, + Brush, + BrushFill, + Bucket, + BucketFill, + Bug, + BugFill, + Building, + BuildingAdd, + BuildingCheck, + BuildingDash, + BuildingDown, + BuildingExclamation, + BuildingFill, + BuildingFillAdd, + BuildingFillCheck, + BuildingFillDash, + BuildingFillDown, + BuildingFillExclamation, + BuildingFillGear, + BuildingFillLock, + BuildingFillSlash, + BuildingFillUp, + BuildingFillX, + BuildingGear, + BuildingLock, + Buildings, + BuildingsFill, + BuildingSlash, + BuildingUp, + BuildingX, + Bullseye, + BusFront, + BusFrontFill, + Cake, + Cake2, + Cake2Fill, + CakeFill, + Calculator, + CalculatorFill, + Calendar, + Calendar2, + Calendar2Check, + Calendar2CheckFill, + Calendar2Date, + Calendar2DateFill, + Calendar2Day, + Calendar2DayFill, + Calendar2Event, + Calendar2EventFill, + Calendar2Fill, + Calendar2Heart, + Calendar2HeartFill, + Calendar2Minus, + Calendar2MinusFill, + Calendar2Month, + Calendar2MonthFill, + Calendar2Plus, + Calendar2PlusFill, + Calendar2Range, + Calendar2RangeFill, + Calendar2Week, + Calendar2WeekFill, + Calendar2X, + Calendar2XFill, + Calendar3, + Calendar3Event, + Calendar3EventFill, + Calendar3Fill, + Calendar3Range, + Calendar3RangeFill, + Calendar3Week, + Calendar3WeekFill, + Calendar4, + Calendar4Event, + Calendar4Range, + Calendar4Week, + CalendarCheck, + CalendarCheckFill, + CalendarDate, + CalendarDateFill, + CalendarDay, + CalendarDayFill, + CalendarEvent, + CalendarEventFill, + CalendarFill, + CalendarHeart, + CalendarHeartFill, + CalendarMinus, + CalendarMinusFill, + CalendarMonth, + CalendarMonthFill, + CalendarPlus, + CalendarPlusFill, + CalendarRange, + CalendarRangeFill, + CalendarWeek, + CalendarWeekFill, + CalendarX, + CalendarXFill, + Camera, + Camera2, + CameraFill, + CameraReels, + CameraReelsFill, + CameraVideo, + CameraVideoFill, + CameraVideoOff, + CameraVideoOffFill, + Capslock, + CapslockFill, + Capsule, + CapsulePill, + CardChecklist, + CardHeading, + CardImage, + CardList, + CardText, + CaretDown, + CaretDownFill, + CaretDownSquare, + CaretDownSquareFill, + CaretLeft, + CaretLeftFill, + CaretLeftSquare, + CaretLeftSquareFill, + CaretRight, + CaretRightFill, + CaretRightSquare, + CaretRightSquareFill, + CaretUp, + CaretUpFill, + CaretUpSquare, + CaretUpSquareFill, + CarFront, + CarFrontFill, + Cart, + Cart2, + Cart3, + Cart4, + CartCheck, + CartCheckFill, + CartDash, + CartDashFill, + CartFill, + CartPlus, + CartPlusFill, + CartX, + CartXFill, + Cash, + CashCoin, + CashStack, + Cassette, + CassetteFill, + Cast, + CCCircle, + CCCircleFill, + CCircle, + CCircleFill, + CCircleSquare, + CCircleSquareFill, + CCSquare, + CCSquareFill, + Chat, + ChatDots, + ChatDotsFill, + ChatFill, + ChatHeart, + ChatHeartFill, + ChatLeft, + ChatLeftDots, + ChatLeftDotsFill, + ChatLeftFill, + ChatLeftHeart, + ChatLeftHeartFill, + ChatLeftQuote, + ChatLeftQuoteFill, + ChatLeftText, + ChatLeftTextFill, + ChatQuote, + ChatQuoteFill, + ChatRight, + ChatRightDots, + ChatRightDotsFill, + ChatRightFill, + ChatRightHeart, + ChatRightHeartFill, + ChatRightQuote, + ChatRightQuoteFill, + ChatRightText, + ChatRightTextFill, + ChatSquare, + ChatSquareDots, + ChatSquareDotsFill, + ChatSquareFill, + ChatSquareHeart, + ChatSquareHeartFill, + ChatSquareQuote, + ChatSquareQuoteFill, + ChatSquareText, + ChatSquareTextFill, + ChatText, + ChatTextFill, + Check, + Check2, + Check2All, + Check2Circle, + Check2Square, + CheckAll, + CheckCircle, + CheckCircleFill, + CheckLg, + CheckSquare, + CheckSquareFill, + ChevronBarContract, + ChevronBarDown, + ChevronBarExpand, + ChevronBarLeft, + ChevronBarRight, + ChevronBarUp, + ChevronCompactDown, + ChevronCompactLeft, + ChevronCompactRight, + ChevronCompactUp, + ChevronContract, + ChevronDoubleDown, + ChevronDoubleLeft, + ChevronDoubleRight, + ChevronDoubleUp, + ChevronDown, + ChevronExpand, + ChevronLeft, + ChevronRight, + ChevronUp, + Circle, + CircleFill, + CircleHalf, + CircleSquare, + Clipboard, + Clipboard2, + Clipboard2Check, + Clipboard2CheckFill, + Clipboard2Data, + Clipboard2DataFill, + Clipboard2Fill, + Clipboard2Heart, + Clipboard2HeartFill, + Clipboard2Minus, + Clipboard2MinusFill, + Clipboard2Plus, + Clipboard2PlusFill, + Clipboard2Pulse, + Clipboard2PulseFill, + Clipboard2X, + Clipboard2XFill, + ClipboardCheck, + ClipboardCheckFill, + ClipboardData, + ClipboardDataFill, + ClipboardFill, + ClipboardHeart, + ClipboardHeartFill, + ClipboardMinus, + ClipboardMinusFill, + ClipboardPlus, + ClipboardPlusFill, + ClipboardPulse, + ClipboardX, + ClipboardXFill, + Clock, + ClockFill, + ClockHistory, + Cloud, + CloudArrowDown, + CloudArrowDownFill, + CloudArrowUp, + CloudArrowUpFill, + CloudCheck, + CloudCheckFill, + CloudDownload, + CloudDownloadFill, + CloudDrizzle, + CloudDrizzleFill, + CloudFill, + CloudFog, + CloudFog2, + CloudFog2Fill, + CloudFogFill, + CloudHail, + CloudHailFill, + CloudHaze, + CloudHaze2, + CloudHaze2Fill, + CloudHazeFill, + CloudLightning, + CloudLightningFill, + CloudLightningRain, + CloudLightningRainFill, + CloudMinus, + CloudMinusFill, + CloudMoon, + CloudMoonFill, + CloudPlus, + CloudPlusFill, + CloudRain, + CloudRainFill, + CloudRainHeavy, + CloudRainHeavyFill, + Clouds, + CloudsFill, + CloudSlash, + CloudSlashFill, + CloudSleet, + CloudSleetFill, + CloudSnow, + CloudSnowFill, + CloudSun, + CloudSunFill, + CloudUpload, + CloudUploadFill, + Cloudy, + CloudyFill, + Code, + CodeSlash, + CodeSquare, + Coin, + Collection, + CollectionFill, + CollectionPlay, + CollectionPlayFill, + Columns, + ColumnsGap, + Command, + Compass, + CompassFill, + Cone, + ConeStriped, + Controller, + Cookie, + Copy, + Cpu, + CpuFill, + CreditCard, + CreditCard2Back, + CreditCard2BackFill, + CreditCard2Front, + CreditCard2FrontFill, + CreditCardFill, + Crop, + Crosshair, + Crosshair2, + Cup, + CupFill, + CupHot, + CupHotFill, + CupStraw, + CurrencyBitcoin, + CurrencyDollar, + CurrencyEuro, + CurrencyExchange, + CurrencyPound, + CurrencyRupee, + CurrencyYen, + Cursor, + CursorFill, + CursorText, + Dash, + DashCircle, + DashCircleDotted, + DashCircleFill, + DashLg, + DashSquare, + DashSquareDotted, + DashSquareFill, + Database, + DatabaseAdd, + DatabaseCheck, + DatabaseDash, + DatabaseDown, + DatabaseExclamation, + DatabaseFill, + DatabaseFillAdd, + DatabaseFillCheck, + DatabaseFillDash, + DatabaseFillDown, + DatabaseFillExclamation, + DatabaseFillGear, + DatabaseFillLock, + DatabaseFillSlash, + DatabaseFillUp, + DatabaseFillX, + DatabaseGear, + DatabaseLock, + DatabaseSlash, + DatabaseUp, + DatabaseX, + DeviceHdd, + DeviceHddFill, + DeviceSsd, + DeviceSsdFill, + Diagram2, + Diagram2Fill, + Diagram3, + Diagram3Fill, + Diamond, + DiamondFill, + DiamondHalf, + Dice1, + Dice1Fill, + Dice2, + Dice2Fill, + Dice3, + Dice3Fill, + Dice4, + Dice4Fill, + Dice5, + Dice5Fill, + Dice6, + Dice6Fill, + Disc, + DiscFill, + Discord, + Display, + DisplayFill, + Displayport, + DisplayportFill, + DistributeHorizontal, + DistributeVertical, + DoorClosed, + DoorClosedFill, + DoorOpen, + DoorOpenFill, + Dot, + Download, + Dpad, + DpadFill, + Dribbble, + Dropbox, + Droplet, + DropletFill, + DropletHalf, + Duffle, + DuffleFill, + Ear, + Earbuds, + EarFill, + Easel, + Easel2, + Easel2Fill, + Easel3, + Easel3Fill, + EaselFill, + Egg, + EggFill, + EggFried, + EightCircle, + EightCircleFill, + EightSquare, + EightSquareFill, + Eject, + EjectFill, + EmojiAngry, + EmojiAngryFill, + EmojiAstonished, + EmojiAstonishedFill, + EmojiDizzy, + EmojiDizzyFill, + EmojiExpressionless, + EmojiExpressionlessFill, + EmojiFrown, + EmojiFrownFill, + EmojiGrimace, + EmojiGrimaceFill, + EmojiGrin, + EmojiGrinFill, + EmojiHeartEyes, + EmojiHeartEyesFill, + EmojiKiss, + EmojiKissFill, + EmojiLaughing, + EmojiLaughingFill, + EmojiNeutral, + EmojiNeutralFill, + EmojiSmile, + EmojiSmileFill, + EmojiSmileUpsideDown, + EmojiSmileUpsideDownFill, + EmojiSunglasses, + EmojiSunglassesFill, + EmojiSurprise, + EmojiSurpriseFill, + EmojiTear, + EmojiTearFill, + EmojiWink, + EmojiWinkFill, + Envelope, + EnvelopeArrowDown, + EnvelopeArrowDownFill, + EnvelopeArrowUp, + EnvelopeArrowUpFill, + EnvelopeAt, + EnvelopeAtFill, + EnvelopeCheck, + EnvelopeCheckFill, + EnvelopeDash, + EnvelopeDashFill, + EnvelopeExclamation, + EnvelopeExclamationFill, + EnvelopeFill, + EnvelopeHeart, + EnvelopeHeartFill, + EnvelopeOpen, + EnvelopeOpenFill, + EnvelopeOpenHeart, + EnvelopeOpenHeartFill, + EnvelopePaper, + EnvelopePaperFill, + EnvelopePaperHeart, + EnvelopePaperHeartFill, + EnvelopePlus, + EnvelopePlusFill, + EnvelopeSlash, + EnvelopeSlashFill, + EnvelopeX, + EnvelopeXFill, + Eraser, + EraserFill, + Escape, + Ethernet, + EVFront, + EVFrontFill, + EVStation, + EVStationFill, + Exclamation, + ExclamationCircle, + ExclamationCircleFill, + ExclamationDiamond, + ExclamationDiamondFill, + ExclamationLg, + ExclamationOctagon, + ExclamationOctagonFill, + ExclamationSquare, + ExclamationSquareFill, + ExclamationTriangle, + ExclamationTriangleFill, + Exclude, + Explicit, + ExplicitFill, + Exposure, + Eye, + Eyedropper, + EyeFill, + Eyeglasses, + EyeSlash, + EyeSlashFill, + Facebook, + Fan, + FastForward, + FastForwardBtn, + FastForwardBtnFill, + FastForwardCircle, + FastForwardCircleFill, + FastForwardFill, + Feather, + Feather2, + File, + FileArrowDown, + FileArrowDownFill, + FileArrowUp, + FileArrowUpFill, + FileBarGraph, + FileBarGraphFill, + FileBinary, + FileBinaryFill, + FileBreak, + FileBreakFill, + FileCheck, + FileCheckFill, + FileCode, + FileCodeFill, + FileDiff, + FileDiffFill, + FileEarmark, + FileEarmarkArrowDown, + FileEarmarkArrowDownFill, + FileEarmarkArrowUp, + FileEarmarkArrowUpFill, + FileEarmarkBarGraph, + FileEarmarkBarGraphFill, + FileEarmarkBinary, + FileEarmarkBinaryFill, + FileEarmarkBreak, + FileEarmarkBreakFill, + FileEarmarkCheck, + FileEarmarkCheckFill, + FileEarmarkCode, + FileEarmarkCodeFill, + FileEarmarkDiff, + FileEarmarkDiffFill, + FileEarmarkEasel, + FileEarmarkEaselFill, + FileEarmarkExcel, + FileEarmarkExcelFill, + FileEarmarkFill, + FileEarmarkFont, + FileEarmarkFontFill, + FileEarmarkImage, + FileEarmarkImageFill, + FileEarmarkLock, + FileEarmarkLock2, + FileEarmarkLock2Fill, + FileEarmarkLockFill, + FileEarmarkMedical, + FileEarmarkMedicalFill, + FileEarmarkMinus, + FileEarmarkMinusFill, + FileEarmarkMusic, + FileEarmarkMusicFill, + FileEarmarkPdf, + FileEarmarkPdfFill, + FileEarmarkPerson, + FileEarmarkPersonFill, + FileEarmarkPlay, + FileEarmarkPlayFill, + FileEarmarkPlus, + FileEarmarkPlusFill, + FileEarmarkPost, + FileEarmarkPostFill, + FileEarmarkPpt, + FileEarmarkPptFill, + FileEarmarkRichtext, + FileEarmarkRichtextFill, + FileEarmarkRuled, + FileEarmarkRuledFill, + FileEarmarkSlides, + FileEarmarkSlidesFill, + FileEarmarkSpreadsheet, + FileEarmarkSpreadsheetFill, + FileEarmarkText, + FileEarmarkTextFill, + FileEarmarkWord, + FileEarmarkWordFill, + FileEarmarkX, + FileEarmarkXFill, + FileEarmarkZip, + FileEarmarkZipFill, + FileEasel, + FileEaselFill, + FileExcel, + FileExcelFill, + FileFill, + FileFont, + FileFontFill, + FileImage, + FileImageFill, + FileLock, + FileLock2, + FileLock2Fill, + FileLockFill, + FileMedical, + FileMedicalFill, + FileMinus, + FileMinusFill, + FileMusic, + FileMusicFill, + FilePdf, + FilePdfFill, + FilePerson, + FilePersonFill, + FilePlay, + FilePlayFill, + FilePlus, + FilePlusFill, + FilePost, + FilePostFill, + FilePpt, + FilePptFill, + FileRichtext, + FileRichtextFill, + FileRuled, + FileRuledFill, + Files, + FilesAlt, + FileSlides, + FileSlidesFill, + FileSpreadsheet, + FileSpreadsheetFill, + FileText, + FileTextFill, + FileTypeAac, + FileTypeAi, + FileTypeBmp, + FileTypeCs, + FileTypeCss, + FileTypeCsv, + FileTypeDoc, + FileTypeDocx, + FileTypeExe, + FileTypeGif, + FileTypeHeic, + FileTypeHtml, + FileTypeJava, + FileTypeJpg, + FileTypeJs, + FileTypeJson, + FileTypeJsx, + FileTypeKey, + FileTypeM4p, + FileTypeMd, + FileTypeMdx, + FileTypeMov, + FileTypeMp3, + FileTypeMp4, + FileTypeOtf, + FileTypePdf, + FileTypePhp, + FileTypePng, + FileTypePpt, + FileTypePptx, + FileTypePsd, + FileTypePy, + FileTypeRaw, + FileTypeRb, + FileTypeSass, + FileTypeScss, + FileTypeSh, + FileTypeSql, + FileTypeSvg, + FileTypeTiff, + FileTypeTsx, + FileTypeTtf, + FileTypeTxt, + FileTypeWav, + FileTypeWoff, + FileTypeXls, + FileTypeXlsx, + FileTypeXml, + FileTypeYml, + FileWord, + FileWordFill, + FileX, + FileXFill, + FileZip, + FileZipFill, + Film, + Filter, + FilterCircle, + FilterCircleFill, + FilterLeft, + FilterRight, + FilterSquare, + FilterSquareFill, + Fingerprint, + Fire, + FiveCircle, + FiveCircleFill, + FiveSquare, + FiveSquareFill, + Flag, + FlagFill, + Floppy, + Floppy2, + Floppy2Fill, + FloppyFill, + Flower1, + Flower2, + Flower3, + Folder, + Folder2, + Folder2Open, + FolderCheck, + FolderFill, + FolderMinus, + FolderPlus, + FolderSymlink, + FolderSymlinkFill, + FolderX, + Fonts, + Forward, + ForwardFill, + FourCircle, + FourCircleFill, + FourSquare, + FourSquareFill, + Front, + FuelPump, + FuelPumpDiesel, + FuelPumpDieselFill, + FuelPumpFill, + Fullscreen, + FullscreenExit, + Funnel, + FunnelFill, + Gear, + GearFill, + GearWide, + GearWideConnected, + Gem, + GenderAmbiguous, + GenderFemale, + GenderMale, + GenderNeuter, + GenderTrans, + Geo, + GeoAlt, + GeoAltFill, + GeoFill, + Gift, + GiftFill, + Git, + Github, + Gitlab, + Globe, + Globe2, + GlobeAmericas, + GlobeAsiaAustralia, + GlobeCentralSouthAsia, + GlobeEuropeAfrica, + Google, + GooglePlay, + GpuCard, + GraphDown, + GraphDownArrow, + GraphUp, + GraphUpArrow, + Grid, + Grid1X2, + Grid1X2Fill, + Grid3X2, + Grid3X2Gap, + Grid3X2GapFill, + Grid3X3, + Grid3X3Gap, + Grid3X3GapFill, + GridFill, + GripHorizontal, + GripVertical, + Hammer, + Handbag, + HandbagFill, + HandIndex, + HandIndexFill, + HandIndexThumb, + HandIndexThumbFill, + HandThumbsDown, + HandThumbsDownFill, + HandThumbsUp, + HandThumbsUpFill, + Hash, + HCircle, + HCircleFill, + Hdd, + HddFill, + HddNetwork, + HddNetworkFill, + HddRack, + HddRackFill, + HddStack, + HddStackFill, + Hdmi, + HdmiFill, + Headphones, + Headset, + HeadsetVr, + Heart, + HeartArrow, + HeartBreak, + HeartBreakFill, + HeartFill, + HeartHalf, + HeartPulse, + HeartPulseFill, + Hearts, + Heptagon, + HeptagonFill, + HeptagonHalf, + Hexagon, + HexagonFill, + HexagonHalf, + Highlighter, + Highlights, + Hospital, + HospitalFill, + Hourglass, + HourglassBottom, + HourglassSplit, + HourglassTop, + House, + HouseAdd, + HouseAddFill, + HouseCheck, + HouseCheckFill, + HouseDash, + HouseDashFill, + HouseDoor, + HouseDoorFill, + HouseDown, + HouseDownFill, + HouseExclamation, + HouseExclamationFill, + HouseFill, + HouseGear, + HouseGearFill, + HouseHeart, + HouseHeartFill, + HouseLock, + HouseLockFill, + Houses, + HousesFill, + HouseSlash, + HouseSlashFill, + HouseUp, + HouseUpFill, + HouseX, + HouseXFill, + Hr, + HSquare, + HSquareFill, + Hurricane, + Hypnotize, + Image, + ImageAlt, + ImageFill, + Images, + Inbox, + Inboxes, + InboxesFill, + InboxFill, + Incognito, + Indent, + Infinity, + Info, + InfoCircle, + InfoCircleFill, + InfoLg, + InfoSquare, + InfoSquareFill, + InputCursor, + InputCursorText, + Instagram, + Intersect, + Journal, + JournalAlbum, + JournalArrowDown, + JournalArrowUp, + JournalBookmark, + JournalBookmarkFill, + JournalCheck, + JournalCode, + JournalMedical, + JournalMinus, + JournalPlus, + JournalRichtext, + Journals, + JournalText, + JournalX, + Joystick, + Justify, + JustifyLeft, + JustifyRight, + Kanban, + KanbanFill, + Key, + Keyboard, + KeyboardFill, + KeyFill, + Ladder, + Lamp, + LampFill, + Laptop, + LaptopFill, + LayerBackward, + LayerForward, + Layers, + LayersFill, + LayersHalf, + LayoutSidebar, + LayoutSidebarInset, + LayoutSidebarInsetReverse, + LayoutSidebarReverse, + LayoutSplit, + LayoutTextSidebar, + LayoutTextSidebarReverse, + LayoutTextWindow, + LayoutTextWindowReverse, + LayoutThreeColumns, + LayoutWtf, + LifePreserver, + Lightbulb, + LightbulbFill, + LightbulbOff, + LightbulbOffFill, + Lightning, + LightningCharge, + LightningChargeFill, + LightningFill, + Line, + Link, + Link45Deg, + Linkedin, + List, + ListCheck, + ListColumns, + ListColumnsReverse, + ListNested, + ListOl, + ListStars, + ListTask, + ListUl, + Lock, + LockFill, + Luggage, + LuggageFill, + Lungs, + LungsFill, + Magic, + Magnet, + MagnetFill, + Mailbox, + Mailbox2, + Mailbox2Flag, + MailboxFlag, + Map, + MapFill, + Markdown, + MarkdownFill, + MarkerTip, + Mask, + Mastodon, + Medium, + Megaphone, + MegaphoneFill, + Memory, + MenuApp, + MenuAppFill, + MenuButton, + MenuButtonFill, + MenuButtonWide, + MenuButtonWideFill, + MenuDown, + MenuUp, + Messenger, + Meta, + Mic, + MicFill, + MicMute, + MicMuteFill, + Microsoft, + MicrosoftTeams, + Minecart, + MinecartLoaded, + Modem, + ModemFill, + Moisture, + Moon, + MoonFill, + MoonStars, + MoonStarsFill, + Mortarboard, + MortarboardFill, + Motherboard, + MotherboardFill, + Mouse, + Mouse2, + Mouse2Fill, + Mouse3, + Mouse3Fill, + MouseFill, + MusicNote, + MusicNoteBeamed, + MusicNoteList, + MusicPlayer, + MusicPlayerFill, + Newspaper, + NineCircle, + NineCircleFill, + NineSquare, + NineSquareFill, + NintendoSwitch, + NodeMinus, + NodeMinusFill, + NodePlus, + NodePlusFill, + NoiseReduction, + Nut, + NutFill, + Nvidia, + Nvme, + NvmeFill, + Octagon, + OctagonFill, + OctagonHalf, + OneCircle, + OneCircleFill, + OneSquare, + OneSquareFill, + OneTwoThree, + Opencollective, + OpticalAudio, + OpticalAudioFill, + Option, + Outlet, + PaintBucket, + Palette, + Palette2, + PaletteFill, + Paperclip, + Paragraph, + Pass, + PassFill, + Passport, + PassportFill, + PatchCheck, + PatchCheckFill, + PatchExclamation, + PatchExclamationFill, + PatchMinus, + PatchMinusFill, + PatchPlus, + PatchPlusFill, + PatchQuestion, + PatchQuestionFill, + Pause, + PauseBtn, + PauseBtnFill, + PauseCircle, + PauseCircleFill, + PauseFill, + Paypal, + Pc, + PcDisplay, + PcDisplayHorizontal, + PcHorizontal, + PciCard, + PciCardNetwork, + PciCardSound, + PCircle, + PCircleFill, + Peace, + PeaceFill, + Pen, + Pencil, + PencilFill, + PencilSquare, + PenFill, + Pentagon, + PentagonFill, + PentagonHalf, + People, + PeopleFill, + Percent, + Person, + PersonAdd, + PersonArmsUp, + PersonBadge, + PersonBadgeFill, + PersonBoundingBox, + PersonCheck, + PersonCheckFill, + PersonCircle, + PersonDash, + PersonDashFill, + PersonDown, + PersonExclamation, + PersonFill, + PersonFillAdd, + PersonFillCheck, + PersonFillDash, + PersonFillDown, + PersonFillExclamation, + PersonFillGear, + PersonFillLock, + PersonFillSlash, + PersonFillUp, + PersonFillX, + PersonGear, + PersonHeart, + PersonHearts, + PersonLinesFill, + PersonLock, + PersonPlus, + PersonPlusFill, + PersonRaisedHand, + PersonRolodex, + PersonSlash, + PersonSquare, + PersonStanding, + PersonStandingDress, + PersonUp, + PersonVCard, + PersonVCardFill, + PersonVideo, + PersonVideo2, + PersonVideo3, + PersonWalking, + PersonWheelchair, + PersonWorkspace, + PersonX, + PersonXFill, + Phone, + PhoneFill, + PhoneFlip, + PhoneLandscape, + PhoneLandscapeFill, + PhoneVibrate, + PhoneVibrateFill, + PieChart, + PieChartFill, + PiggyBank, + PiggyBankFill, + Pin, + PinAngle, + PinAngleFill, + PinFill, + PinMap, + PinMapFill, + Pinterest, + Pip, + PipFill, + Play, + PlayBtn, + PlayBtnFill, + PlayCircle, + PlayCircleFill, + PlayFill, + Playstation, + Plug, + PlugFill, + Plugin, + Plus, + PlusCircle, + PlusCircleDotted, + PlusCircleFill, + PlusLg, + PlusSlashMinus, + PlusSquare, + PlusSquareDotted, + PlusSquareFill, + Postage, + PostageFill, + PostageHeart, + PostageHeartFill, + Postcard, + PostcardFill, + PostcardHeart, + PostcardHeartFill, + Power, + Prescription, + Prescription2, + Printer, + PrinterFill, + Projector, + ProjectorFill, + PSquare, + PSquareFill, + Puzzle, + PuzzleFill, + QrCode, + QrCodeScan, + Question, + QuestionCircle, + QuestionCircleFill, + QuestionDiamond, + QuestionDiamondFill, + QuestionLg, + QuestionOctagon, + QuestionOctagonFill, + QuestionSquare, + QuestionSquareFill, + Quora, + Quote, + Radar, + Radioactive, + Rainbow, + RCircle, + RCircleFill, + Receipt, + ReceiptCutoff, + Reception0, + Reception1, + Reception2, + Reception3, + Reception4, + Record, + Record2, + Record2Fill, + RecordBtn, + RecordBtnFill, + RecordCircle, + RecordCircleFill, + RecordFill, + Recycle, + Reddit, + Regex, + Repeat, + Repeat1, + Reply, + ReplyAll, + ReplyAllFill, + ReplyFill, + Rewind, + RewindBtn, + RewindBtnFill, + RewindCircle, + RewindCircleFill, + RewindFill, + Robot, + Rocket, + RocketFill, + RocketTakeOff, + RocketTakeOffFill, + Router, + RouterFill, + RSquare, + RSquareFill, + Rss, + RssFill, + Rulers, + Safe, + Safe2, + Safe2Fill, + SafeFill, + Save, + Save2, + Save2Fill, + SaveFill, + Scissors, + Scooter, + Screwdriver, + SdCard, + SdCardFill, + Search, + SearchHeart, + SearchHeartFill, + SegmentedNav, + Send, + SendArrowDown, + SendArrowDownFill, + SendArrowUp, + SendArrowUpFill, + SendCheck, + SendCheckFill, + SendDash, + SendDashFill, + SendExclamation, + SendExclamationFill, + SendFill, + SendPlus, + SendPlusFill, + SendSlash, + SendSlashFill, + SendX, + SendXFill, + Server, + SevenCircle, + SevenCircleFill, + SevenSquare, + SevenSquareFill, + Shadows, + Share, + ShareFill, + Shield, + ShieldCheck, + ShieldExclamation, + ShieldFill, + ShieldFillCheck, + ShieldFillExclamation, + ShieldFillMinus, + ShieldFillPlus, + ShieldFillX, + ShieldLock, + ShieldLockFill, + ShieldMinus, + ShieldPlus, + ShieldShaded, + ShieldSlash, + ShieldSlashFill, + ShieldX, + Shift, + ShiftFill, + Shop, + ShopWindow, + Shuffle, + Signal, + SignDeadEnd, + SignDeadEndFill, + SignDoNotEnter, + SignDoNotEnterFill, + SignIntersection, + SignIntersectionFill, + SignIntersectionSide, + SignIntersectionSideFill, + SignIntersectionT, + SignIntersectionTFill, + SignIntersectionY, + SignIntersectionYFill, + SignMergeLeft, + SignMergeLeftFill, + SignMergeRight, + SignMergeRightFill, + SignNoLeftTurn, + SignNoLeftTurnFill, + SignNoParking, + SignNoParkingFill, + SignNoRightTurn, + SignNoRightTurnFill, + Signpost, + Signpost2, + Signpost2Fill, + SignpostFill, + SignpostSplit, + SignpostSplitFill, + SignRailRoad, + SignRailRoadFill, + SignStop, + SignStopFill, + SignStopLights, + SignStopLightsFill, + SignTurnLeft, + SignTurnLeftFill, + SignTurnRight, + SignTurnRightFill, + SignTurnSlightLeft, + SignTurnSlightLeftFill, + SignTurnSlightRight, + SignTurnSlightRightFill, + SignYield, + SignYieldFill, + Sim, + SimFill, + SimSlash, + SimSlashFill, + SinaWeibo, + SixCircle, + SixCircleFill, + SixSquare, + SixSquareFill, + SkipBackward, + SkipBackwardBtn, + SkipBackwardBtnFill, + SkipBackwardCircle, + SkipBackwardCircleFill, + SkipBackwardFill, + SkipEnd, + SkipEndBtn, + SkipEndBtnFill, + SkipEndCircle, + SkipEndCircleFill, + SkipEndFill, + SkipForward, + SkipForwardBtn, + SkipForwardBtnFill, + SkipForwardCircle, + SkipForwardCircleFill, + SkipForwardFill, + SkipStart, + SkipStartBtn, + SkipStartBtnFill, + SkipStartCircle, + SkipStartCircleFill, + SkipStartFill, + Skype, + Slack, + Slash, + SlashCircle, + SlashCircleFill, + SlashLg, + SlashSquare, + SlashSquareFill, + Sliders, + Sliders2, + Sliders2Vertical, + Smartwatch, + Snapchat, + Snow, + Snow2, + Snow3, + SortAlphaDown, + SortAlphaDownAlt, + SortAlphaUp, + SortAlphaUpAlt, + SortDown, + SortDownAlt, + SortNumericDown, + SortNumericDownAlt, + SortNumericUp, + SortNumericUpAlt, + SortUp, + SortUpAlt, + Soundwave, + Sourceforge, + Speaker, + SpeakerFill, + Speedometer, + Speedometer2, + Spellcheck, + Spotify, + Square, + SquareFill, + SquareHalf, + Stack, + StackOverflow, + Star, + StarFill, + StarHalf, + Stars, + Steam, + Stickies, + StickiesFill, + Sticky, + StickyFill, + Stop, + StopBtn, + StopBtnFill, + StopCircle, + StopCircleFill, + StopFill, + Stoplights, + StoplightsFill, + Stopwatch, + StopwatchFill, + Strava, + Stripe, + Subscript, + Substack, + Subtract, + Suitcase, + Suitcase2, + Suitcase2Fill, + SuitcaseFill, + SuitcaseLg, + SuitcaseLgFill, + SuitClub, + SuitClubFill, + SuitDiamond, + SuitDiamondFill, + SuitHeart, + SuitHeartFill, + SuitSpade, + SuitSpadeFill, + Sun, + SunFill, + Sunglasses, + Sunrise, + SunriseFill, + Sunset, + SunsetFill, + Superscript, + SymmetryHorizontal, + SymmetryVertical, + Table, + Tablet, + TabletFill, + TabletLandscape, + TabletLandscapeFill, + Tag, + TagFill, + Tags, + TagsFill, + TaxiFront, + TaxiFrontFill, + Telegram, + Telephone, + TelephoneFill, + TelephoneForward, + TelephoneForwardFill, + TelephoneInbound, + TelephoneInboundFill, + TelephoneMinus, + TelephoneMinusFill, + TelephoneOutbound, + TelephoneOutboundFill, + TelephonePlus, + TelephonePlusFill, + TelephoneX, + TelephoneXFill, + TencentQQ, + Terminal, + TerminalDash, + TerminalFill, + TerminalPlus, + TerminalSplit, + TerminalX, + Textarea, + TextareaResize, + TextareaT, + TextCenter, + TextIndentLeft, + TextIndentRight, + TextLeft, + TextParagraph, + TextRight, + Textwrap, + Thermometer, + ThermometerHalf, + ThermometerHigh, + ThermometerLow, + ThermometerSnow, + ThermometerSun, + Threads, + ThreadsFill, + ThreeCircle, + ThreeCircleFill, + ThreeDots, + ThreeDotsVertical, + ThreeSquare, + ThreeSquareFill, + Thunderbolt, + ThunderboltFill, + Ticket, + TicketDetailed, + TicketDetailedFill, + TicketFill, + TicketPerforated, + TicketPerforatedFill, + Tiktok, + Toggle2Off, + Toggle2On, + ToggleOff, + ToggleOn, + Toggles, + Toggles2, + Tools, + Tornado, + TrainFreightFront, + TrainFreightFrontFill, + TrainFront, + TrainFrontFill, + TrainLighttrailFront, + TrainLighttrailFrontFill, + Translate, + Transparency, + Trash, + Trash2, + Trash2Fill, + Trash3, + Trash3Fill, + TrashFill, + Tree, + TreeFill, + Trello, + Triangle, + TriangleFill, + TriangleHalf, + Trophy, + TrophyFill, + TropicalStorm, + Truck, + TruckFlatbed, + TruckFront, + TruckFrontFill, + Tsunami, + Tv, + TvFill, + Twitch, + Twitter, + TwitterX, + TwoCircle, + TwoCircleFill, + TwoSquare, + TwoSquareFill, + Type, + TypeBold, + TypeH1, + TypeH2, + TypeH3, + TypeH4, + TypeH5, + TypeH6, + TypeItalic, + TypeStrikethrough, + TypeUnderline, + Ubuntu, + UiChecks, + UiChecksGrid, + UiRadios, + UiRadiosGrid, + Umbrella, + UmbrellaFill, + Unindent, + Union, + Unity, + UniversalAccess, + UniversalAccessCircle, + Unlock, + UnlockFill, + Upc, + UpcScan, + Upload, + Usb, + UsbC, + UsbCFill, + UsbDrive, + UsbDriveFill, + UsbFill, + UsbMicro, + UsbMicroFill, + UsbMini, + UsbMiniFill, + UsbPlug, + UsbPlugFill, + UsbSymbol, + Valentine, + Valentine2, + VectorPen, + ViewList, + ViewStacked, + Vignette, + Vimeo, + Vinyl, + VinylFill, + Virus, + Virus2, + Voicemail, + VolumeDown, + VolumeDownFill, + VolumeMute, + VolumeMuteFill, + VolumeOff, + VolumeOffFill, + VolumeUp, + VolumeUpFill, + Vr, + Wallet, + Wallet2, + WalletFill, + Watch, + Water, + Webcam, + WebcamFill, + Wechat, + Whatsapp, + Wifi, + Wifi1, + Wifi2, + WifiOff, + Wikipedia, + Wind, + Window, + WindowDash, + WindowDesktop, + WindowDock, + WindowFullscreen, + WindowPlus, + Windows, + WindowSidebar, + WindowSplit, + WindowStack, + WindowX, + Wordpress, + Wrench, + WrenchAdjustable, + WrenchAdjustableCircle, + WrenchAdjustableCircleFill, + X, + Xbox, + XCircle, + XCircleFill, + XDiamond, + XDiamondFill, + XLg, + XOctagon, + XOctagonFill, + XSquare, + XSquareFill, + Yelp, + YinYang, + Youtube, + ZeroCircleFill, + ZeroSquare, + ZeroSquareFill, + ZoomIn, + ZoomOut, + ZeroCircle, +} diff --git a/blazorbootstrap/Enums/IconSize.cs b/blazorbootstrap/Enums/IconSize.cs new file mode 100644 index 000000000..5d8d0b66f --- /dev/null +++ b/blazorbootstrap/Enums/IconSize.cs @@ -0,0 +1,42 @@ +namespace BlazorBootstrap; + +/// +/// Represents the size of an element. +/// +public enum IconSize +{ + /// + /// The default icon size. + /// + None, + + /// + /// An extra large icon, 2.5rem in size. + /// + x1, + + /// + /// A large icon, 2rem in size. + /// + x2, + + /// + /// A medium icon, 1.75rem in size. + /// + x3, + + /// + /// A small icon, 1.5rem in size. + /// + x4, + + /// + /// A very small icon, 1.25rem in size. + /// + x5, + + /// + /// The smallest icon, 1rem in size. + /// + x6 +} diff --git a/blazorbootstrap/Enums/ModalFullscreen.cs b/blazorbootstrap/Enums/ModalFullscreen.cs new file mode 100644 index 000000000..44f5b32ff --- /dev/null +++ b/blazorbootstrap/Enums/ModalFullscreen.cs @@ -0,0 +1,42 @@ +namespace BlazorBootstrap; + +/// +/// Defines the fullscreen of an element. +/// +public enum ModalFullscreen +{ + /// + /// Fullscreen mode disabled + /// + Disabled, + + /// + /// Always fullscreen modal + /// + Always, + + /// + /// Fullscreen for viewports bellow "small" breakpoint (576px). + /// + SmallDown, + + /// + /// Fullscreen for viewports bellow "medium" breakpoint (768px). + /// + MediumDown, + + /// + /// Fullscreen for viewports bellow "large" breakpoint (992px). + /// + LargeDown, + + /// + /// Fullscreen for viewports bellow "extra-large" breakpoint (1200px). + /// + ExtraLargeDown, + + /// + /// Fullscreen for viewports bellow "XXL" breakpoint (1400px). + /// + ExtraExtraLargeDown +} diff --git a/blazorbootstrap/Enums/ModalSize.cs b/blazorbootstrap/Enums/ModalSize.cs new file mode 100644 index 000000000..dae9abb64 --- /dev/null +++ b/blazorbootstrap/Enums/ModalSize.cs @@ -0,0 +1,27 @@ +namespace BlazorBootstrap; + +/// +/// Defines the size of an element. +/// +public enum ModalSize +{ + /// + /// Default modal width 500px will be applied. + /// + Regular, + + /// + /// Modal width 300px will be applied. + /// + Small, + + /// + /// Modal width 800px will be applied. + /// + Large, + + /// + /// Modal width 1140px will be applied. + /// + ExtraLarge +} diff --git a/blazorbootstrap/Enums/ModalType.cs b/blazorbootstrap/Enums/ModalType.cs new file mode 100644 index 000000000..049a563eb --- /dev/null +++ b/blazorbootstrap/Enums/ModalType.cs @@ -0,0 +1,47 @@ +namespace BlazorBootstrap; + +/// +/// Defines the header color of an element. +/// +public enum ModalType +{ + /// + /// Primary color. + /// + Primary, + + /// + /// Secondary color. + /// + Secondary, + + /// + /// Success color. + /// + Success, + + /// + /// Danger color. + /// + Danger, + + /// + /// Warning color. + /// + Warning, + + /// + /// Info color. + /// + Info, + + /// + /// Light color. + /// + Light, + + /// + /// Dark color. + /// + Dark +} diff --git a/blazorbootstrap/Enums/NavStyle.cs b/blazorbootstrap/Enums/NavStyle.cs new file mode 100644 index 000000000..b9d5a4ca4 --- /dev/null +++ b/blazorbootstrap/Enums/NavStyle.cs @@ -0,0 +1,37 @@ +namespace BlazorBootstrap; + +/// +/// Specifies the available styles for navigation elements. +/// +public enum NavStyle +{ + /// + /// Applies the .nav-tabs class to create a tabbed interface. + /// + Tabs, + + /// + /// Applies the .nav-pills class to create a tabbed interface with pill-shaped elements. + /// + Pills, + + /// + /// Applies the .nav-underline class to create an underlined navigation style. + /// + Underline, + + /// + /// Creates a vertical navigation style using the appropriate Bootstrap classes. + /// + Vertical, + + /// + /// Creates a vertical navigation style with pill-shaped elements using the appropriate Bootstrap classes. + /// + VerticalPills, + + /// + /// Creates a vertical navigation style with an underlined active link using the appropriate Bootstrap classes. + /// + VerticalUnderline +} diff --git a/blazorbootstrap/Enums/OffcanvasSize.cs b/blazorbootstrap/Enums/OffcanvasSize.cs new file mode 100644 index 000000000..b37b762e7 --- /dev/null +++ b/blazorbootstrap/Enums/OffcanvasSize.cs @@ -0,0 +1,22 @@ +namespace BlazorBootstrap; + +/// +/// Defines the size of an element. +/// +public enum OffcanvasSize +{ + /// + /// Default modal width 400px will be applied. + /// + Regular, + + /// + /// Modal width 300px will be applied. + /// + Small, + + /// + /// Modal width 800px will be applied. + /// + Large +} diff --git a/blazorbootstrap/Enums/Orientation.cs b/blazorbootstrap/Enums/Orientation.cs new file mode 100644 index 000000000..f860614e0 --- /dev/null +++ b/blazorbootstrap/Enums/Orientation.cs @@ -0,0 +1,7 @@ +namespace BlazorBootstrap; + +public enum Orientation +{ + Portrait, + Landscape, +} diff --git a/blazorbootstrap/Enums/PaginationSize.cs b/blazorbootstrap/Enums/PaginationSize.cs new file mode 100644 index 000000000..1ba151b4c --- /dev/null +++ b/blazorbootstrap/Enums/PaginationSize.cs @@ -0,0 +1,8 @@ +namespace BlazorBootstrap; + +public enum PaginationSize +{ + None, + Small, + Large +} diff --git a/blazorbootstrap/Enums/PlaceholderAnimation.cs b/blazorbootstrap/Enums/PlaceholderAnimation.cs new file mode 100644 index 000000000..8a179909a --- /dev/null +++ b/blazorbootstrap/Enums/PlaceholderAnimation.cs @@ -0,0 +1,17 @@ +namespace BlazorBootstrap; + +/// +/// Defines the animation of an element. +/// +public enum PlaceholderAnimation +{ + /// + /// Glow animation + /// + Glow, + + /// + /// Wave animation + /// + Wave +} diff --git a/blazorbootstrap/Enums/PlaceholderSize.cs b/blazorbootstrap/Enums/PlaceholderSize.cs new file mode 100644 index 000000000..7d850e516 --- /dev/null +++ b/blazorbootstrap/Enums/PlaceholderSize.cs @@ -0,0 +1,9 @@ +namespace BlazorBootstrap; + +public enum PlaceholderSize +{ + None, + ExtraSmall, + Small, + Large +} diff --git a/blazorbootstrap/Enums/PlaceholderWidth.cs b/blazorbootstrap/Enums/PlaceholderWidth.cs new file mode 100644 index 000000000..83f566d62 --- /dev/null +++ b/blazorbootstrap/Enums/PlaceholderWidth.cs @@ -0,0 +1,17 @@ +namespace BlazorBootstrap; + +public enum PlaceholderWidth +{ + Col1, + Col2, + Col3, + Col4, + Col5, + Col6, + Col7, + Col8, + Col9, + Col10, + Col11, + Col12 +} diff --git a/blazorbootstrap/Enums/Placement.cs b/blazorbootstrap/Enums/Placement.cs new file mode 100644 index 000000000..6d93140db --- /dev/null +++ b/blazorbootstrap/Enums/Placement.cs @@ -0,0 +1,9 @@ +namespace BlazorBootstrap; + +public enum Placement +{ + Start = 1, + End, + Top, + Bottom +} diff --git a/blazorbootstrap/Enums/Position.cs b/blazorbootstrap/Enums/Position.cs new file mode 100644 index 000000000..5feb38faf --- /dev/null +++ b/blazorbootstrap/Enums/Position.cs @@ -0,0 +1,44 @@ +namespace BlazorBootstrap; + +/// +/// Defines the position of an element. +/// +public enum Position +{ + /// + /// No position will be applied to an element. + /// + None, + + /// + /// The element is positioned according to the normal flow of the document. + /// + Static, + + /// + /// The element is positioned according to the normal flow of the document, + /// and then offset relative to itself based on the values of top, right, bottom, and left. + /// + Relative, + + /// + /// The element is removed from the normal document flow, and no space is created for the element in the page layout. + /// It is positioned relative to its closest positioned ancestor, if any; otherwise, it is placed relative to the initial + /// containing block. + /// Its final position is determined by the values of top, right, bottom, and left. + /// + Absolute, + + /// + /// The element is removed from the normal document flow, and no space is created for the element in the page layout. + /// It is positioned relative to the initial containing block established by the viewport + /// + Fixed, + + /// + /// The element is positioned according to the normal flow of the document, and then offset relative to its nearest + /// scrolling ancestor and containing block (nearest block-level ancestor), including table-related elements, + /// based on the values of top, right, bottom, and left. + /// + Sticky +} diff --git a/blazorbootstrap/Enums/Priority.cs b/blazorbootstrap/Enums/Priority.cs new file mode 100644 index 000000000..e89143036 --- /dev/null +++ b/blazorbootstrap/Enums/Priority.cs @@ -0,0 +1,8 @@ +namespace BlazorBootstrap; + +public enum Priority +{ + High = 0, + Medium, + Low +} diff --git a/blazorbootstrap/Enums/ProgressType.cs b/blazorbootstrap/Enums/ProgressType.cs new file mode 100644 index 000000000..6d474a30f --- /dev/null +++ b/blazorbootstrap/Enums/ProgressType.cs @@ -0,0 +1,8 @@ +namespace BlazorBootstrap; + +public enum ProgressType +{ + Default = 1, + Striped, + StripedAndAnimated +} diff --git a/blazorbootstrap/Enums/Size.cs b/blazorbootstrap/Enums/Size.cs new file mode 100644 index 000000000..3052a554f --- /dev/null +++ b/blazorbootstrap/Enums/Size.cs @@ -0,0 +1,37 @@ +namespace BlazorBootstrap; + +/// +/// Defines an element size. +/// +public enum Size +{ + /// + /// Don't resize an element. + /// + None, + + /// + /// Makes an element extra small size. + /// + ExtraSmall, + + /// + /// Makes an element small size. + /// + Small, + + /// + /// Makes an element medium size. + /// + Medium, + + /// + /// Makes an element large. + /// + Large, + + /// + /// Makes an element extra large. + /// + ExtraLarge +} diff --git a/blazorbootstrap/Enums/SortDirection.cs b/blazorbootstrap/Enums/SortDirection.cs new file mode 100644 index 000000000..a299b13f2 --- /dev/null +++ b/blazorbootstrap/Enums/SortDirection.cs @@ -0,0 +1,8 @@ +namespace BlazorBootstrap; + +public enum SortDirection +{ + None = 0, + Ascending = 1, + Descending = 2 +} diff --git a/blazorbootstrap/Enums/SortableListPullMode.cs b/blazorbootstrap/Enums/SortableListPullMode.cs new file mode 100644 index 000000000..d362a0840 --- /dev/null +++ b/blazorbootstrap/Enums/SortableListPullMode.cs @@ -0,0 +1,9 @@ +namespace BlazorBootstrap; + +public enum SortableListPullMode +{ + True, + False, + Clone, + //@Array +} diff --git a/blazorbootstrap/Enums/SortableListPutMode.cs b/blazorbootstrap/Enums/SortableListPutMode.cs new file mode 100644 index 000000000..fd3d9ce49 --- /dev/null +++ b/blazorbootstrap/Enums/SortableListPutMode.cs @@ -0,0 +1,8 @@ +namespace BlazorBootstrap; + +public enum SortableListPutMode +{ + True, + False, + //@Array +} diff --git a/blazorbootstrap/Enums/SpinnerSize.cs b/blazorbootstrap/Enums/SpinnerSize.cs new file mode 100644 index 000000000..0be3cbf54 --- /dev/null +++ b/blazorbootstrap/Enums/SpinnerSize.cs @@ -0,0 +1,9 @@ +namespace BlazorBootstrap; + +public enum SpinnerSize +{ + Small, + Medium, + Large, + ExtraLarge +} diff --git a/blazorbootstrap/Enums/SpinnerType.cs b/blazorbootstrap/Enums/SpinnerType.cs new file mode 100644 index 000000000..ab1968da5 --- /dev/null +++ b/blazorbootstrap/Enums/SpinnerType.cs @@ -0,0 +1,8 @@ +namespace BlazorBootstrap; + +public enum SpinnerType +{ + Border, + Grow, + Dots +} diff --git a/blazorbootstrap/Enums/StringFilterOperator.cs b/blazorbootstrap/Enums/StringFilterOperator.cs new file mode 100644 index 000000000..c8ba2770c --- /dev/null +++ b/blazorbootstrap/Enums/StringFilterOperator.cs @@ -0,0 +1,24 @@ +namespace BlazorBootstrap; + +public enum StringFilterOperator +{ + /// + /// Satisfied if the current value equals the specified value. + /// + Equals, + + /// + /// Satisfied if the current value contains the specified value. + /// + Contains, + + /// + /// Satisfied if the current value starts with the specified value. + /// + StartsWith, + + /// + /// Satisfied if the current value ends with the specified value. + /// + EndsWith +} diff --git a/blazorbootstrap/Enums/Target.cs b/blazorbootstrap/Enums/Target.cs new file mode 100644 index 000000000..c0f2536fe --- /dev/null +++ b/blazorbootstrap/Enums/Target.cs @@ -0,0 +1,10 @@ +namespace BlazorBootstrap; + +public enum Target +{ + None, + Blank, + Parent, + Self, + Top +} diff --git a/blazorbootstrap/Enums/ToastType.cs b/blazorbootstrap/Enums/ToastType.cs new file mode 100644 index 000000000..9f4363c33 --- /dev/null +++ b/blazorbootstrap/Enums/ToastType.cs @@ -0,0 +1,48 @@ +namespace BlazorBootstrap; + +public enum ToastType +{ + /// + /// Primary background color. + /// + Primary = 1, + + /// + /// Secondary background color. + /// + Secondary, + + /// + /// Success background color. + /// + Success, + + /// + /// Danger background color. + /// + Danger, + + /// + /// Warning background color. + /// + Warning, + + /// + /// Info background color. + /// + Info, + + /// + /// Light background color. + /// + Light, + + /// + /// Dark background color. + /// + Dark + + // TODO: Review + // https://getbootstrap.com/docs/5.1/utilities/background/#background-gradient + // https://getbootstrap.com/docs/5.1/utilities/background/#opacity +} diff --git a/blazorbootstrap/Enums/ToastsPlacement.cs b/blazorbootstrap/Enums/ToastsPlacement.cs new file mode 100644 index 000000000..86b49dfdd --- /dev/null +++ b/blazorbootstrap/Enums/ToastsPlacement.cs @@ -0,0 +1,46 @@ +namespace BlazorBootstrap; + +public enum ToastsPlacement +{ + TopLeft, + + /// + /// Top center + /// + TopCenter, + + /// + /// Top right + /// + TopRight, + + /// + /// Middle left + /// + MiddleLeft, + + /// + /// Middle center + /// + MiddleCenter, + + /// + /// Middle right + /// + MiddleRight, + + /// + /// Bottom left + /// + BottomLeft, + + /// + /// Bottom center + /// + BottomCenter, + + /// + /// Bottom right + /// + BottomRight +} diff --git a/blazorbootstrap/Enums/TooltipPlacement.cs b/blazorbootstrap/Enums/TooltipPlacement.cs new file mode 100644 index 000000000..8a2f3cc8e --- /dev/null +++ b/blazorbootstrap/Enums/TooltipPlacement.cs @@ -0,0 +1,32 @@ +namespace BlazorBootstrap; + +/// +/// Defines the placement of an element. +/// +public enum TooltipPlacement +{ + /// + /// Dynamically reorient the tooltip. + /// + Auto, + + /// + /// Top side. + /// + Top, + + /// + /// Bottom side. + /// + Bottom, + + /// + /// Left side. + /// + Left, + + /// + /// Right side. + /// + Right +} diff --git a/blazorbootstrap/Enums/Unit.cs b/blazorbootstrap/Enums/Unit.cs new file mode 100644 index 000000000..f91e0dee5 --- /dev/null +++ b/blazorbootstrap/Enums/Unit.cs @@ -0,0 +1,57 @@ +namespace BlazorBootstrap; + +/// +/// Represents a unit of measurement for CSS properties. +/// +public enum Unit +{ + /// + /// No unit. + /// + None, + + /// + /// Ems. + /// + Em, + + /// + /// Percent. + /// + Percentage, + + /// + /// Points. + /// + Pt, + + /// + /// Pixels. + /// + Px, + + /// + /// Root ems. + /// + Rem, + + /// + /// Viewport height. + /// + Vh, + + /// + /// Viewport maximum height. + /// + VMax, + + /// + /// Viewport minimum height. + /// + VMin, + + /// + /// Viewport width. + /// + Vw +} diff --git a/blazorbootstrap/EventArguments/AccordionEventArgs.cs b/blazorbootstrap/EventArguments/AccordionEventArgs.cs new file mode 100644 index 000000000..87b88690e --- /dev/null +++ b/blazorbootstrap/EventArguments/AccordionEventArgs.cs @@ -0,0 +1,28 @@ +namespace BlazorBootstrap; + +public class AccordionEventArgs +{ + #region Constructors + + public AccordionEventArgs(string name, string title) + { + Name = name; + Title = title; + } + + #endregion + + #region Properties, Indexers + + /// + /// Gets the name. + /// + public string Name { get; } + + /// + /// Gets the title. + /// + public string Title { get; } + + #endregion +} diff --git a/blazorbootstrap/EventArguments/FilterEventArgs.cs b/blazorbootstrap/EventArguments/FilterEventArgs.cs new file mode 100644 index 000000000..24b0d0b4e --- /dev/null +++ b/blazorbootstrap/EventArguments/FilterEventArgs.cs @@ -0,0 +1,3 @@ +namespace BlazorBootstrap; + +public record FilterEventArgs(string Text, FilterOperator FilterOperator); diff --git a/blazorbootstrap/EventArguments/GridRowEventArgs.cs b/blazorbootstrap/EventArguments/GridRowEventArgs.cs new file mode 100644 index 000000000..02bb499a7 --- /dev/null +++ b/blazorbootstrap/EventArguments/GridRowEventArgs.cs @@ -0,0 +1,19 @@ +namespace BlazorBootstrap; + +public class GridRowEventArgs : EventArgs +{ + #region Constructors + + public GridRowEventArgs(TItem item) + { + Item = item; + } + + #endregion + + #region Properties, Indexers + + public TItem Item { get; set; } + + #endregion +} diff --git a/blazorbootstrap/EventArguments/PdfViewerEventArgs.cs b/blazorbootstrap/EventArguments/PdfViewerEventArgs.cs new file mode 100644 index 000000000..d77598906 --- /dev/null +++ b/blazorbootstrap/EventArguments/PdfViewerEventArgs.cs @@ -0,0 +1,22 @@ +namespace BlazorBootstrap; + +public class PdfViewerEventArgs +{ + #region Constructors + + public PdfViewerEventArgs(int currentPage, int totalPages) + { + CurrentPage = currentPage; + TotalPages = totalPages; + } + + #endregion + + #region Properties, Indexers + + public int CurrentPage { get; } + + public int TotalPages { get; } + + #endregion +} diff --git a/blazorbootstrap/EventArguments/Ribbon/RibbonEventArgs.cs b/blazorbootstrap/EventArguments/Ribbon/RibbonEventArgs.cs new file mode 100644 index 000000000..76462b979 --- /dev/null +++ b/blazorbootstrap/EventArguments/Ribbon/RibbonEventArgs.cs @@ -0,0 +1,21 @@ +namespace BlazorBootstrap; + +public class RibbonEventArgs : EventArgs +{ + #region Constructors + + public RibbonEventArgs(string activeTabTitle, string previousActiveTabTitle) + { + ActiveTabTitle = activeTabTitle; + PreviousActiveTabTitle = previousActiveTabTitle; + } + + #endregion + + #region Properties, Indexers + + public string ActiveTabTitle { get; } + public string PreviousActiveTabTitle { get; } + + #endregion +} diff --git a/blazorbootstrap/EventArguments/Ribbon/RibbonItemEventArgs.cs b/blazorbootstrap/EventArguments/Ribbon/RibbonItemEventArgs.cs new file mode 100644 index 000000000..af95ff513 --- /dev/null +++ b/blazorbootstrap/EventArguments/Ribbon/RibbonItemEventArgs.cs @@ -0,0 +1,22 @@ +namespace BlazorBootstrap; + +public class RibbonItemEventArgs : EventArgs +{ + #region Constructors + + public RibbonItemEventArgs(string name) + { + Name = name; + } + + #endregion + + #region Properties, Indexers + + /// + /// Gets the name. + /// + public string? Name { get; } + + #endregion +} diff --git a/blazorbootstrap/EventArguments/Ribbon/RibbonTabEventArgs.cs b/blazorbootstrap/EventArguments/Ribbon/RibbonTabEventArgs.cs new file mode 100644 index 000000000..47bc349c3 --- /dev/null +++ b/blazorbootstrap/EventArguments/Ribbon/RibbonTabEventArgs.cs @@ -0,0 +1,28 @@ +namespace BlazorBootstrap; + +public class RibbonTabEventArgs +{ + #region Constructors + + public RibbonTabEventArgs(string name, string title) + { + Name = name; + Title = title; + } + + #endregion + + #region Properties, Indexers + + /// + /// Gets the name. + /// + public string Name { get; } + + /// + /// Gets the title. + /// + public string Title { get; } + + #endregion +} diff --git a/blazorbootstrap/EventArguments/SortableListEventArgs.cs b/blazorbootstrap/EventArguments/SortableListEventArgs.cs new file mode 100644 index 000000000..6896744a8 --- /dev/null +++ b/blazorbootstrap/EventArguments/SortableListEventArgs.cs @@ -0,0 +1,31 @@ +namespace BlazorBootstrap; + +public class SortableListEventArgs : EventArgs +{ + #region Constructors + + public SortableListEventArgs(int oldIndex, int newIndex) + { + OldIndex = oldIndex; + NewIndex = newIndex; + } + + public SortableListEventArgs(int oldIndex, int newIndex, string fromListName, string toListName) + { + OldIndex = oldIndex; + NewIndex = newIndex; + FromListName = fromListName; + ToListName = toListName; + } + + #endregion + + #region Properties, Indexers + + public string? FromListName { get; } + public int NewIndex { get; } + public int OldIndex { get; } + public string? ToListName { get; } + + #endregion +} diff --git a/blazorbootstrap/EventArguments/Tabs/TabEventArgs.cs b/blazorbootstrap/EventArguments/Tabs/TabEventArgs.cs new file mode 100644 index 000000000..482a41b93 --- /dev/null +++ b/blazorbootstrap/EventArguments/Tabs/TabEventArgs.cs @@ -0,0 +1,28 @@ +namespace BlazorBootstrap; + +public class TabEventArgs +{ + #region Constructors + + public TabEventArgs(string name, string title) + { + Name = name; + Title = title; + } + + #endregion + + #region Properties, Indexers + + /// + /// Gets the name. + /// + public string Name { get; } + + /// + /// Gets the title. + /// + public string Title { get; } + + #endregion +} diff --git a/blazorbootstrap/EventArguments/Tabs/TabsEventArgs.cs b/blazorbootstrap/EventArguments/Tabs/TabsEventArgs.cs new file mode 100644 index 000000000..61794c7b6 --- /dev/null +++ b/blazorbootstrap/EventArguments/Tabs/TabsEventArgs.cs @@ -0,0 +1,21 @@ +namespace BlazorBootstrap; + +public class TabsEventArgs : EventArgs +{ + #region Constructors + + public TabsEventArgs(string activeTabTitle, string previousActiveTabTitle) + { + ActiveTabTitle = activeTabTitle; + PreviousActiveTabTitle = previousActiveTabTitle; + } + + #endregion + + #region Properties, Indexers + + public string ActiveTabTitle { get; } + public string PreviousActiveTabTitle { get; } + + #endregion +} diff --git a/blazorbootstrap/EventArguments/ToastEventArgs.cs b/blazorbootstrap/EventArguments/ToastEventArgs.cs new file mode 100644 index 000000000..e71c8e7bf --- /dev/null +++ b/blazorbootstrap/EventArguments/ToastEventArgs.cs @@ -0,0 +1,22 @@ +namespace BlazorBootstrap; + +public class ToastEventArgs : EventArgs +{ + #region Constructors + + public ToastEventArgs(Guid toastId, string elementId) + { + ToastId = toastId; + ElementId = elementId; + } + + #endregion + + #region Properties, Indexers + + public string ElementId { get; set; } + + public Guid ToastId { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Extensions/ColorExtensions.cs b/blazorbootstrap/Extensions/ColorExtensions.cs new file mode 100644 index 000000000..c442de307 --- /dev/null +++ b/blazorbootstrap/Extensions/ColorExtensions.cs @@ -0,0 +1,48 @@ +namespace BlazorBootstrap; + +public static class ColorExtensions +{ + #region Methods + + /// + /// Converts an Html color representation to a GDI+ . + /// + /// + /// Converts #RRGGBB string to . + public static Color ToColor(this string hex) => ColorTranslator.FromHtml(hex); + + /// + /// Converts System.Drawing.Color to #RRGGBBAA format string. + /// + /// + /// + /// #RRGGBBAA format string + public static string ToHexaString(this Color c) => $"#{c.R:X2}{c.G:X2}{c.B:X2}{c.A:X2}"; + + /// + /// Converts System.Drawing.Color to #RRGGBB format string. + /// + /// + /// + /// #RRGGBB format string + public static string ToHexString(this Color c) => $"#{c.R:X2}{c.G:X2}{c.B:X2}"; + + /// + /// Converts System.Drawing.Color to RGBA(R, G, B, A) format string. + /// + /// + /// System.Drawing.Color + /// The alpha parameter is a number between 0.0 (fully transparent) and 1.0 (fully opaque). + /// RGBA(R, G, B, A) format string + public static string ToRgbaString(this Color c, double alpha = 0.2) => $"RGBA({c.R}, {c.G}, {c.B}, {alpha})"; + + /// + /// Converts System.Drawing.Color to RGB(R, G, B) format string. + /// + /// + /// + /// RGB(R, G, B) format string + public static string ToRgbString(this Color c) => $"RGB({c.R}, {c.G}, {c.B})"; + + #endregion +} diff --git a/blazorbootstrap/Extensions/EnumExtensions.cs b/blazorbootstrap/Extensions/EnumExtensions.cs new file mode 100644 index 000000000..cbabc3e09 --- /dev/null +++ b/blazorbootstrap/Extensions/EnumExtensions.cs @@ -0,0 +1,571 @@ +namespace BlazorBootstrap; + +/// +/// Enum extensions +/// Pattern matching: https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/functional/pattern-matching +/// Discard pattern: https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/patterns#discard-pattern +/// +public static class EnumExtensions +{ + #region Methods + + public static string ToAlertColorClass(this AlertColor color) => + color switch + { + AlertColor.Primary => "alert-primary", + AlertColor.Secondary => "alert-secondary", + AlertColor.Success => "alert-success", + AlertColor.Danger => "alert-danger", + AlertColor.Warning => "alert-warning", + AlertColor.Info => "alert-info", + AlertColor.Light => "alert-light", + AlertColor.Dark => "alert-dark", + _ => "" + }; + + public static string ToAutoCompleteSizeClass(this AutoCompleteSize size) => + size switch + { + AutoCompleteSize.Large => "form-control-lg", + AutoCompleteSize.Small => "form-control-sm", + _ => "" + }; + + public static string ToBackgroundAndTextClass(this BackgroundColor backgroundColor) => + backgroundColor switch + { + BackgroundColor.Primary => "bg-primary text-white", + BackgroundColor.Secondary => "bg-secondary text-white", + BackgroundColor.Success => "bg-success text-white", + BackgroundColor.Danger => "bg-danger text-white", + BackgroundColor.Warning => "bg-warning text-dark", + BackgroundColor.Info => "bg-info text-dark", + BackgroundColor.Light => "bg-light text-dark", + BackgroundColor.Dark => "bg-dark text-white", + BackgroundColor.Body => "bg-body text-dark", + BackgroundColor.White => "bg-white text-dark", + BackgroundColor.Transparent => "bg-transparent text-dark", + _ => "" + }; + + public static string ToBackgroundClass(this BackgroundColor backgroundColor) => + backgroundColor switch + { + BackgroundColor.Primary => "bg-primary", + BackgroundColor.Secondary => "bg-secondary", + BackgroundColor.Success => "bg-success", + BackgroundColor.Danger => "bg-danger", + BackgroundColor.Warning => "bg-warning", + BackgroundColor.Info => "bg-info", + BackgroundColor.Light => "bg-light", + BackgroundColor.Dark => "bg-dark", + BackgroundColor.Body => "bg-body", + BackgroundColor.White => "bg-white", + BackgroundColor.Transparent => "bg-transparent", + _ => "" + }; + + public static string ToBadgeColorClass(this BadgeColor color) => + color switch + { + BadgeColor.Primary => "text-bg-primary", + BadgeColor.Secondary => "text-bg-secondary", + BadgeColor.Success => "text-bg-success", + BadgeColor.Danger => "text-bg-danger", + BadgeColor.Warning => "text-bg-warning", + BadgeColor.Info => "text-bg-info", + BadgeColor.Light => "text-bg-light", + BadgeColor.Dark => "text-bg-dark", + _ => "" + }; + + public static string ToBadgeIndicatorClass(this BadgeIndicatorType indicatorType) => + indicatorType switch + { + BadgeIndicatorType.RoundedPill => "rounded-pill", + BadgeIndicatorType.RoundedCircle => "rounded-circle", + _ => "" // default: Top right + }; + + public static string ToBadgePlacementClass(this BadgePlacement badgePlacement) => + badgePlacement switch + { + BadgePlacement.TopLeft => "top-0 start-0 translate-middle", + BadgePlacement.TopCenter => "top-0 start-50 translate-middle", + BadgePlacement.TopRight => "top-0 start-100 translate-middle", + BadgePlacement.MiddleLeft => "top-50 start-0 translate-middle", + BadgePlacement.MiddleCenter => "top-50 start-50 translate-middle", + BadgePlacement.MiddleRight => "top-50 start-100 translate-middle", + BadgePlacement.BottomLeft => "top-100 start-0 translate-middle", + BadgePlacement.BottomCenter => "top-100 start-50 translate-middle", + BadgePlacement.BottomRight => "top-100 start-100 translate-middle", + _ => "top-0 start-100 translate-middle" // default: Top right + }; + + public static string ToButtonColorClass(this ButtonColor buttonColor) => + buttonColor switch + { + ButtonColor.Primary => "btn-primary", + ButtonColor.Secondary => "btn-secondary", + ButtonColor.Success => "btn-success", + ButtonColor.Danger => "btn-danger", + ButtonColor.Warning => "btn-warning", + ButtonColor.Info => "btn-info", + ButtonColor.Light => "btn-light", + ButtonColor.Dark => "btn-dark", + ButtonColor.Link => "btn-link", + _ => "" + }; + + public static string ToButtonOutlineColorClass(this ButtonColor color) => + color switch + { + ButtonColor.Primary => "btn-outline-primary", + ButtonColor.Secondary => "btn-outline-secondary", + ButtonColor.Success => "btn-outline-success", + ButtonColor.Danger => "btn-outline-danger", + ButtonColor.Warning => "btn-outline-warning", + ButtonColor.Info => "btn-outline-info", + ButtonColor.Light => "btn-outline-light", + ButtonColor.Dark => "btn-outline-dark", + ButtonColor.Link => "btn-outline-link", + _ => "" + }; + + public static string ToButtonSizeClass(this Size size) => + size switch + { + Size.ExtraSmall => "btn-xs", + Size.Small => "btn-sm", + Size.Medium => "btn-md", + Size.Large => "btn-lg", + Size.ExtraLarge => "btn-xl", + _ => "" + }; + + public static string ToButtonTagName(this ButtonType buttonType) => + buttonType switch + { + ButtonType.Link => "a", + _ => "button" + }; + + public static string ToButtonTypeString(this ButtonType buttonType) => + buttonType switch + { + ButtonType.Button => "button", + ButtonType.Submit => "submit", + ButtonType.Reset => "reset", + _ => "" + }; + + public static string ToCalloutTypeClass(this CalloutType type) => + type switch + { + CalloutType.Default => "", + CalloutType.Danger => $"bb-callout-danger", + CalloutType.Warning => $"bb-callout-warning", + CalloutType.Info => $"bb-callout-info", + CalloutType.Tip or CalloutType.Success => $"bb-callout-success", + _ => "" + }; + + public static string ToCardColorClass(this CardColor color) => + color switch + { + CardColor.Primary => "text-bg-primary", + CardColor.Secondary => "text-bg-secondary", + CardColor.Success => "text-bg-success", + CardColor.Danger => "text-bg-danger", + CardColor.Warning => "text-bg-warning", + CardColor.Info => "text-bg-info", + CardColor.Light => "text-bg-light", + CardColor.Dark => "text-bg-dark", + _ => "" + }; + + public static string ToCssString(this Unit value) => + value switch + { + Unit.Em => "em", + Unit.Percentage => "%", + Unit.Pt => "pt", + Unit.Px => "px", + Unit.Rem => "rem", + Unit.Vh => "vh", + Unit.VMax => "vmax", + Unit.VMin => "vmin", + Unit.Vw => "vw", + _ => string.Empty + }; + + public static string ToDialogSizeClass(this DialogSize size) => + size switch + { + DialogSize.Regular => "", + DialogSize.Small => "modal-sm", + DialogSize.Large => "modal-lg", + DialogSize.ExtraLarge => "modal-xl", + _ => "" + }; + + public static string ToDropdownDirectionClass(this DropdownDirection direction) => + direction switch + { + DropdownDirection.Dropdown => "dropdown", + DropdownDirection.DropdownCentered => "dropdown dropdown-center", + DropdownDirection.Dropend => "dropend", + DropdownDirection.Dropup => "dropup", + DropdownDirection.DropupCentered => "dropup dropup-center", + DropdownDirection.Dropstart => "dropstart", + _ => "" + }; + + public static string ToDropdownMenuPositionClass(this DropdownMenuPosition position) => + position switch + { + DropdownMenuPosition.Start => "dropdown-menu-start", + DropdownMenuPosition.End => "dropdown-menu-end", + _ => "" + }; + + public static string ToHeadingSizeClass(this HeadingSize headingSize) => + headingSize switch + { + HeadingSize.H1 => "h1", + HeadingSize.H2 => "h2", + HeadingSize.H3 => "h3", + HeadingSize.H4 => "h4", + HeadingSize.H5 => "h5", + HeadingSize.H6 => "h6", + _ => "" + }; + + public static string ToIconColorClass(this IconColor color) => + color switch + { + IconColor.Primary => "text-primary", + IconColor.Secondary => "text-secondary", + IconColor.Success => "text-success", + IconColor.Danger => "text-danger", + IconColor.Warning => "text-warning", + IconColor.Info => "text-info", + IconColor.Light => "text-light", + IconColor.Dark => "text-dark", + IconColor.Body => "text-body", + IconColor.Muted => "text-muted", + IconColor.White => "text-white", + _ => "" + }; + + public static string ToModalFullscreenClass(this ModalFullscreen fullscreen) => + fullscreen switch + { + ModalFullscreen.Disabled => "", + ModalFullscreen.Always => "modal-fullscreen", + ModalFullscreen.SmallDown => "modal-fullscreen-sm-down", + ModalFullscreen.MediumDown => "modal-fullscreen-md-down", + ModalFullscreen.LargeDown => "modal-fullscreen-lg-down", + ModalFullscreen.ExtraLargeDown => "modal-fullscreen-xl-down", + ModalFullscreen.ExtraExtraLargeDown => "modal-fullscreen-xxl-down", + _ => "" + }; + + public static string ToModalHeaderColorClass(this ModalType modalType) => + modalType switch + { + ModalType.Primary => "text-bg-primary border-bottom border-primary", + ModalType.Secondary => "text-bg-secondary border-bottom border-secondary", + ModalType.Success => "text-bg-success border-bottom border-success", + ModalType.Danger => "text-bg-danger border-bottom border-danger", + ModalType.Warning => "text-bg-warning border-bottom border-warning", + ModalType.Info => "text-bg-info border-bottom border-info", + ModalType.Light => "text-bg-light border-bottom", + ModalType.Dark => "text-bg-dark border-bottom border-dark", + _ => "" + }; + + public static string ToModalSizeClass(this ModalSize size) => + size switch + { + ModalSize.Regular => "", + ModalSize.Small => "modal-sm", + ModalSize.Large => "modal-lg", + ModalSize.ExtraLarge => "modal-xl", + _ => "" + }; + + public static string ToOffcanvasPlacementClass(this Placement placement) => + placement switch + { + Placement.Start => "offcanvas-start", + Placement.End => "offcanvas-end", + Placement.Top => "offcanvas-top", + _ => "offcanvas-bottom" + }; + + public static string ToOffcanvasSizeClass(this OffcanvasSize size) => + size switch + { + OffcanvasSize.Regular => "", + OffcanvasSize.Small => "bb-offcanvas-sm", + OffcanvasSize.Large => "bb-offcanvas-lg", + _ => "" + }; + + public static string ToPaginationAlignmentClass(this Alignment alignment) => + alignment switch + { + Alignment.Start => "justify-content-start", + Alignment.Center => "justify-content-center", + Alignment.End => "justify-content-end", + _ => "" + }; + + public static string ToPaginationSizeClass(this PaginationSize size) => + size switch + { + PaginationSize.Small => "pagination-sm", + PaginationSize.Large => "pagination-lg", + _ => "" + }; + + public static string ToPlaceholderAnimationClass(this PlaceholderAnimation animation) => + animation switch + { + PlaceholderAnimation.Glow => "placeholder-glow", + PlaceholderAnimation.Wave => "placeholder-wave", + _ => "" + }; + + public static string ToPlaceholderColorClass(this PlaceholderColor color) => + color switch + { + PlaceholderColor.Primary => "bg-primary", + PlaceholderColor.Secondary => "bg-secondary", + PlaceholderColor.Success => "bg-success", + PlaceholderColor.Danger => "bg-danger", + PlaceholderColor.Warning => "bg-warning", + PlaceholderColor.Info => "bg-info", + PlaceholderColor.Light => "bg-light", + PlaceholderColor.Dark => "bg-dark", + _ => "" + }; + + public static string ToPlaceholderSizeClass(this PlaceholderSize size) => + size switch + { + PlaceholderSize.ExtraSmall => "placeholder-xs", + PlaceholderSize.Small => "placeholder-sm", + PlaceholderSize.Large => "placeholder-lg", + _ => "" + }; + + public static string ToPlaceholderWidthClass(this PlaceholderWidth width) => + width switch + { + PlaceholderWidth.Col1 => "col-1", + PlaceholderWidth.Col2 => "col-2", + PlaceholderWidth.Col3 => "col-3", + PlaceholderWidth.Col4 => "col-4", + PlaceholderWidth.Col5 => "col-5", + PlaceholderWidth.Col6 => "col-6", + PlaceholderWidth.Col7 => "col-7", + PlaceholderWidth.Col8 => "col-8", + PlaceholderWidth.Col9 => "col-9", + PlaceholderWidth.Col10 => "col-10", + PlaceholderWidth.Col11 => "col-11", + PlaceholderWidth.Col12 => "col-12", + _ => "" + }; + + public static string ToPositionClass(this Position position) => + position switch + { + Position.Static => BootstrapClass.PositionAbsolute, + Position.Relative => BootstrapClass.PositionRelative, + Position.Absolute => BootstrapClass.PositionAbsolute, + Position.Fixed => BootstrapClass.PositionFixed, + Position.Sticky => BootstrapClass.PositionSticky, + _ => "" + }; + + public static string ToProgressColorClass(this ProgressColor color) => + color switch + { + ProgressColor.Primary => "bg-primary", + ProgressColor.Secondary => "bg-secondary", + ProgressColor.Success => "bg-success", + ProgressColor.Danger => "bg-danger", + ProgressColor.Warning => "bg-warning", + ProgressColor.Info => "bg-info", + ProgressColor.Dark => "bg-dark", + _ => "" + }; + + public static string ToSizeClass(this Size size) => + size switch + { + Size.ExtraSmall => "xs", + Size.Small => "sm", + Size.Medium => "md", + Size.Large => "lg", + Size.ExtraLarge => "xl", + _ => "" + }; + + public static object ToSortableListPullMode(this SortableListPullMode mode) => + mode switch + { + SortableListPullMode.True => true, + SortableListPullMode.False => false, + SortableListPullMode.Clone => "clone", + //SortableListPullMode.Array => "array" + }; + + public static object ToSortableListPutMode(this SortableListPutMode mode) => + mode switch + { + SortableListPutMode.True => true, + SortableListPutMode.False => false, + //SortableListPullMode.Array => "array" + }; + + public static string ToSpinnerColorClass(this SpinnerColor color) => + color switch + { + SpinnerColor.Primary => "text-primary", + SpinnerColor.Secondary => "text-secondary", + SpinnerColor.Success => "text-success", + SpinnerColor.Danger => "text-danger", + SpinnerColor.Warning => "text-warning", + SpinnerColor.Info => "text-info", + SpinnerColor.Light => "text-light", + SpinnerColor.Dark => "text-dark", + _ => "" + }; + + public static string ToSpinnerSizeClass(this SpinnerSize size) => + size switch + { + SpinnerSize.Small => "sm", + SpinnerSize.Medium => "md", + SpinnerSize.Large => "lg", + SpinnerSize.ExtraLarge => "xl", + _ => "md" + }; + + public static string ToSpinnerTypeClass(this SpinnerType type) => + type switch + { + SpinnerType.Border => "spinner-border", + SpinnerType.Grow => "spinner-grow", + SpinnerType.Dots => "spinner-dots", + _ => "spinner-border" + }; + + public static string ToTargetString(this Target target) => + target switch + { + Target.Blank => "_blank", + Target.Parent => "_parent", + Target.Top => "_top", + Target.Self => "_self", + _ => "" + }; + + public static string ToTextAlignmentClass(this Alignment alignment) => + alignment switch + { + BlazorBootstrap.Alignment.Start => "text-start", + BlazorBootstrap.Alignment.Center => "text-center", + BlazorBootstrap.Alignment.End => "text-end", + _ => "" + }; + + public static string ToTextColorClass(this TextColor color) => + color switch + { + TextColor.Primary => "text-primary", + TextColor.Secondary => "text-secondary", + TextColor.Success => "text-success", + TextColor.Danger => "text-danger", + TextColor.Warning => "text-warning", + TextColor.Info => "text-info", + TextColor.Light => "text-light", + TextColor.Dark => "text-dark", + TextColor.Body => "text-body", + TextColor.Muted => "text-muted", + TextColor.White => "text-white", + _ => "" + }; + + public static string? ToTooltipColorClass(this TooltipColor color) => + color switch + { + TooltipColor.Primary => "bb-tooltip-primary", + TooltipColor.Secondary => "bb-tooltip-tooltip-secondary", + TooltipColor.Success => "bb-tooltip-success", + TooltipColor.Danger => "bb-tooltip-danger", + TooltipColor.Warning => "bb-tooltip-warning", + TooltipColor.Info => "bb-tooltip-info", + TooltipColor.Light => "bb-tooltip-light", + TooltipColor.Dark => "bb-tooltip-dark", + _ => null + }; + + public static string ToTooltipPlacementName(this TooltipPlacement tooltipPlacement) => + tooltipPlacement switch + { + TooltipPlacement.Auto => "auto", + TooltipPlacement.Right => "right", + TooltipPlacement.Bottom => "bottom", + TooltipPlacement.Left => "left", + _ => "top" + }; + + public static string ToToastBackgroundColorClass(this ToastType toastType) => + toastType switch + { + ToastType.Primary => "bg-primary", + ToastType.Secondary => "bg-secondary", + ToastType.Success => "bg-success", + ToastType.Danger => "bg-danger", + ToastType.Warning => "bg-warning", + ToastType.Info => "bg-info", + ToastType.Light => "bg-light", + ToastType.Dark => "bg-dark", + _ => "" + }; + + public static string ToToastsPlacementClass(this ToastsPlacement toastsPlacement) => + toastsPlacement switch + { + ToastsPlacement.TopLeft => "top-0 start-0", + ToastsPlacement.TopCenter => "top-0 start-50 translate-middle-x", + ToastsPlacement.TopRight => "top-0 end-0", + ToastsPlacement.MiddleLeft => "top-50 start-0 translate-middle-y", + ToastsPlacement.MiddleCenter => "top-50 start-50 translate-middle", + ToastsPlacement.MiddleRight => "top-50 end-0 translate-middle-y", + ToastsPlacement.BottomLeft => "bottom-0 start-0", + ToastsPlacement.BottomCenter => "bottom-0 start-50 translate-middle-x", + ToastsPlacement.BottomRight => "bottom-0 end-0", + _ => "top-0 end-0" // default: Top right + }; + + public static string ToToastTextColorClass(this ToastType toastType) => + toastType switch + { + ToastType.Primary + or ToastType.Secondary + or ToastType.Success + or ToastType.Danger + or ToastType.Dark => "text-white", + ToastType.Warning + or ToastType.Info + or ToastType.Light => "text-dark", + _ => "" + }; + + #endregion +} diff --git a/blazorbootstrap/Extensions/ExpressionExtensions.cs b/blazorbootstrap/Extensions/ExpressionExtensions.cs new file mode 100644 index 000000000..476b5f20f --- /dev/null +++ b/blazorbootstrap/Extensions/ExpressionExtensions.cs @@ -0,0 +1,689 @@ +namespace BlazorBootstrap; + +public static class ExpressionExtensions +{ + #region Methods + + public static Expression> And(this Expression> leftExpression, Expression> rightExpression) + { + var parameterExpression = leftExpression.Parameters[0]; + + SubstExpressionVisitor substExpressionVisitor = new(); + substExpressionVisitor.subst[rightExpression.Parameters[0]] = parameterExpression; + + Expression body = Expression.AndAlso(leftExpression.Body, substExpressionVisitor.Visit(rightExpression.Body)); + + return Expression.Lambda>(body, parameterExpression); + } + + public static ConstantExpression GetBooleanConstantExpression(FilterItem filterItem, string propertyTypeName) + { + ConstantExpression? value = null; + + if (propertyTypeName == StringConstants.PropertyTypeNameBoolean) + { + _ = bool.TryParse(filterItem.Value, out var filterValue); + value = Expression.Constant(filterValue); + } + + return value!; + } + + public static Expression> GetBooleanEqualExpressionDelegate(ParameterExpression parameterExpression, FilterItem filterItem, string propertyTypeName) + { + var property = Expression.Property(parameterExpression, filterItem.PropertyName); + var expression = Expression.Equal(property, GetBooleanConstantExpression(filterItem, propertyTypeName)); + + return Expression.Lambda>(expression, parameterExpression); + } + + public static Expression> GetBooleanNotEqualExpressionDelegate(ParameterExpression parameterExpression, FilterItem filterItem, string propertyTypeName) + { + var property = Expression.Property(parameterExpression, filterItem.PropertyName); + var expression = Expression.NotEqual(property, GetBooleanConstantExpression(filterItem, propertyTypeName)); + + return Expression.Lambda>(expression, parameterExpression); + } + + public static ConstantExpression GetDateConstantExpression(FilterItem filterItem, string propertyTypeName) + { + if (filterItem.Value == null) + return Expression.Constant(null); + + ConstantExpression? constantExpression = null; + + if (propertyTypeName == StringConstants.PropertyTypeNameDateOnly) + { + _ = DateOnly.TryParse(filterItem.Value, out var filterValue); + constantExpression = Expression.Constant(filterValue); + } + else if (propertyTypeName == StringConstants.PropertyTypeNameDateTime) + { + _ = DateTime.TryParse(filterItem.Value, out var filterValue); + constantExpression = Expression.Constant(filterValue); + } + + return constantExpression!; + } + + public static Expression> GetDateEqualExpressionDelegate(ParameterExpression parameterExpression, FilterItem filterItem, string propertyTypeName) + { + var propertyExpression = Expression.Property(parameterExpression, filterItem.PropertyName); + var dateConstantExpression = GetDateConstantExpression(filterItem, propertyTypeName); + + Expression nonNullComparisonExpression; + + if (propertyExpression.Type == typeof(DateOnly)) + { + nonNullComparisonExpression = Expression.Equal(propertyExpression, Expression.Convert(dateConstantExpression, typeof(DateOnly))); + } + else if (propertyExpression.Type == typeof(DateTime)) + { + nonNullComparisonExpression = Expression.Equal(propertyExpression, Expression.Convert(dateConstantExpression, typeof(DateTime))); + } + else if (propertyExpression.Type == typeof(DateOnly?)) + { + var nullableValueExpression = Expression.Property(propertyExpression, "Value"); + nonNullComparisonExpression = Expression.Equal(nullableValueExpression, Expression.Convert(dateConstantExpression, typeof(DateOnly))); + var nullCheckExpression = Expression.Property(propertyExpression, "HasValue"); + nonNullComparisonExpression = Expression.Condition(nullCheckExpression, nonNullComparisonExpression, Expression.Constant(false)); + } + else if (propertyExpression.Type == typeof(DateTime?)) + { + var nullableValueExpression = Expression.Property(propertyExpression, "Value"); + nonNullComparisonExpression = Expression.Equal(nullableValueExpression, Expression.Convert(dateConstantExpression, typeof(DateTime))); + var nullCheckExpression = Expression.Property(propertyExpression, "HasValue"); + nonNullComparisonExpression = Expression.Condition(nullCheckExpression, nonNullComparisonExpression, Expression.Constant(false)); + } + else + { + // Property type is not supported + throw new ArgumentException($"Unsupported property type: {propertyExpression.Type}"); + } + + return Expression.Lambda>(nonNullComparisonExpression, parameterExpression); + } + + public static Expression> GetDateGreaterThanExpressionDelegate(ParameterExpression parameterExpression, FilterItem filterItem, string propertyTypeName) + { + var propertyExpression = Expression.Property(parameterExpression, filterItem.PropertyName); + var dateConstantExpression = GetDateConstantExpression(filterItem, propertyTypeName); + + Expression nonNullComparisonExpression; + + if (propertyExpression.Type == typeof(DateOnly)) + { + nonNullComparisonExpression = Expression.GreaterThan(propertyExpression, Expression.Convert(dateConstantExpression, typeof(DateOnly))); + } + else if (propertyExpression.Type == typeof(DateTime)) + { + nonNullComparisonExpression = Expression.GreaterThan(propertyExpression, Expression.Convert(dateConstantExpression, typeof(DateTime))); + } + else if (propertyExpression.Type == typeof(DateOnly?)) + { + var nullableValueExpression = Expression.Property(propertyExpression, "Value"); + nonNullComparisonExpression = Expression.GreaterThan(nullableValueExpression, Expression.Convert(dateConstantExpression, typeof(DateOnly))); + var nullCheckExpression = Expression.Property(propertyExpression, "HasValue"); + nonNullComparisonExpression = Expression.Condition(nullCheckExpression, nonNullComparisonExpression, Expression.Constant(false)); + } + else if (propertyExpression.Type == typeof(DateTime?)) + { + var nullableValueExpression = Expression.Property(propertyExpression, "Value"); + nonNullComparisonExpression = Expression.GreaterThan(nullableValueExpression, Expression.Convert(dateConstantExpression, typeof(DateTime))); + var nullCheckExpression = Expression.Property(propertyExpression, "HasValue"); + nonNullComparisonExpression = Expression.Condition(nullCheckExpression, nonNullComparisonExpression, Expression.Constant(false)); + } + else + { + // Property type is not supported + throw new ArgumentException($"Unsupported property type: {propertyExpression.Type}"); + } + + return Expression.Lambda>(nonNullComparisonExpression, parameterExpression); + } + + public static Expression> GetDateGreaterThanOrEqualExpressionDelegate(ParameterExpression parameterExpression, FilterItem filterItem, string propertyTypeName) + { + var propertyExpression = Expression.Property(parameterExpression, filterItem.PropertyName); + var dateConstantExpression = GetDateConstantExpression(filterItem, propertyTypeName); + + Expression nonNullComparisonExpression; + + if (propertyExpression.Type == typeof(DateOnly)) + { + nonNullComparisonExpression = Expression.GreaterThanOrEqual(propertyExpression, Expression.Convert(dateConstantExpression, typeof(DateOnly))); + } + else if (propertyExpression.Type == typeof(DateTime)) + { + nonNullComparisonExpression = Expression.GreaterThanOrEqual(propertyExpression, Expression.Convert(dateConstantExpression, typeof(DateTime))); + } + else if (propertyExpression.Type == typeof(DateOnly?)) + { + var nullableValueExpression = Expression.Property(propertyExpression, "Value"); + nonNullComparisonExpression = Expression.GreaterThanOrEqual(nullableValueExpression, Expression.Convert(dateConstantExpression, typeof(DateOnly))); + var nullCheckExpression = Expression.Property(propertyExpression, "HasValue"); + nonNullComparisonExpression = Expression.Condition(nullCheckExpression, nonNullComparisonExpression, Expression.Constant(false)); + } + else if (propertyExpression.Type == typeof(DateTime?)) + { + var nullableValueExpression = Expression.Property(propertyExpression, "Value"); + nonNullComparisonExpression = Expression.GreaterThanOrEqual(nullableValueExpression, Expression.Convert(dateConstantExpression, typeof(DateTime))); + var nullCheckExpression = Expression.Property(propertyExpression, "HasValue"); + nonNullComparisonExpression = Expression.Condition(nullCheckExpression, nonNullComparisonExpression, Expression.Constant(false)); + } + else + { + // Property type is not supported + throw new ArgumentException($"Unsupported property type: {propertyExpression.Type}"); + } + + return Expression.Lambda>(nonNullComparisonExpression, parameterExpression); + } + + public static Expression> GetDateLessThanExpressionDelegate(ParameterExpression parameterExpression, FilterItem filterItem, string propertyTypeName) + { + var propertyExpression = Expression.Property(parameterExpression, filterItem.PropertyName); + var dateConstantExpression = GetDateConstantExpression(filterItem, propertyTypeName); + + Expression nonNullComparisonExpression; + + if (propertyExpression.Type == typeof(DateOnly)) + { + nonNullComparisonExpression = Expression.LessThan(propertyExpression, Expression.Convert(dateConstantExpression, typeof(DateOnly))); + } + else if (propertyExpression.Type == typeof(DateTime)) + { + nonNullComparisonExpression = Expression.LessThan(propertyExpression, Expression.Convert(dateConstantExpression, typeof(DateTime))); + } + else if (propertyExpression.Type == typeof(DateOnly?)) + { + var nullableValueExpression = Expression.Property(propertyExpression, "Value"); + nonNullComparisonExpression = Expression.LessThan(nullableValueExpression, Expression.Convert(dateConstantExpression, typeof(DateOnly))); + var nullCheckExpression = Expression.Property(propertyExpression, "HasValue"); + nonNullComparisonExpression = Expression.Condition(nullCheckExpression, nonNullComparisonExpression, Expression.Constant(false)); + } + else if (propertyExpression.Type == typeof(DateTime?)) + { + var nullableValueExpression = Expression.Property(propertyExpression, "Value"); + nonNullComparisonExpression = Expression.LessThan(nullableValueExpression, Expression.Convert(dateConstantExpression, typeof(DateTime))); + var nullCheckExpression = Expression.Property(propertyExpression, "HasValue"); + nonNullComparisonExpression = Expression.Condition(nullCheckExpression, nonNullComparisonExpression, Expression.Constant(false)); + } + else + { + // Property type is not supported + throw new ArgumentException($"Unsupported property type: {propertyExpression.Type}"); + } + + return Expression.Lambda>(nonNullComparisonExpression, parameterExpression); + } + + public static Expression> GetDateLessThanOrEqualExpressionDelegate(ParameterExpression parameterExpression, FilterItem filterItem, string propertyTypeName) + { + var propertyExpression = Expression.Property(parameterExpression, filterItem.PropertyName); + var dateConstantExpression = GetDateConstantExpression(filterItem, propertyTypeName); + + Expression nonNullComparisonExpression; + + if (propertyExpression.Type == typeof(DateOnly)) + { + nonNullComparisonExpression = Expression.LessThanOrEqual(propertyExpression, Expression.Convert(dateConstantExpression, typeof(DateOnly))); + } + else if (propertyExpression.Type == typeof(DateTime)) + { + nonNullComparisonExpression = Expression.LessThanOrEqual(propertyExpression, Expression.Convert(dateConstantExpression, typeof(DateTime))); + } + else if (propertyExpression.Type == typeof(DateOnly?)) + { + var nullableValueExpression = Expression.Property(propertyExpression, "Value"); + nonNullComparisonExpression = Expression.LessThanOrEqual(nullableValueExpression, Expression.Convert(dateConstantExpression, typeof(DateOnly))); + var nullCheckExpression = Expression.Property(propertyExpression, "HasValue"); + nonNullComparisonExpression = Expression.Condition(nullCheckExpression, nonNullComparisonExpression, Expression.Constant(false)); + } + else if (propertyExpression.Type == typeof(DateTime?)) + { + var nullableValueExpression = Expression.Property(propertyExpression, "Value"); + nonNullComparisonExpression = Expression.LessThanOrEqual(nullableValueExpression, Expression.Convert(dateConstantExpression, typeof(DateTime))); + var nullCheckExpression = Expression.Property(propertyExpression, "HasValue"); + nonNullComparisonExpression = Expression.Condition(nullCheckExpression, nonNullComparisonExpression, Expression.Constant(false)); + } + else + { + // Property type is not supported + throw new ArgumentException($"Unsupported property type: {propertyExpression.Type}"); + } + + return Expression.Lambda>(nonNullComparisonExpression, parameterExpression); + } + + public static Expression> GetDateNotEqualExpressionDelegate(ParameterExpression parameterExpression, FilterItem filterItem, string propertyTypeName) + { + var propertyExpression = Expression.Property(parameterExpression, filterItem.PropertyName); + var dateConstantExpression = GetDateConstantExpression(filterItem, propertyTypeName); + + Expression nonNullComparisonExpression; + + if (propertyExpression.Type == typeof(DateOnly)) + { + nonNullComparisonExpression = Expression.NotEqual(propertyExpression, Expression.Convert(dateConstantExpression, typeof(DateOnly))); + } + else if (propertyExpression.Type == typeof(DateTime)) + { + nonNullComparisonExpression = Expression.NotEqual(propertyExpression, Expression.Convert(dateConstantExpression, typeof(DateTime))); + } + else if (propertyExpression.Type == typeof(DateOnly?)) + { + var nullableValueExpression = Expression.Property(propertyExpression, "Value"); + nonNullComparisonExpression = Expression.NotEqual(nullableValueExpression, Expression.Convert(dateConstantExpression, typeof(DateOnly))); + var nullCheckExpression = Expression.Property(propertyExpression, "HasValue"); + nonNullComparisonExpression = Expression.Condition(nullCheckExpression, nonNullComparisonExpression, Expression.Constant(false)); + } + else if (propertyExpression.Type == typeof(DateTime?)) + { + var nullableValueExpression = Expression.Property(propertyExpression, "Value"); + nonNullComparisonExpression = Expression.NotEqual(nullableValueExpression, Expression.Convert(dateConstantExpression, typeof(DateTime))); + var nullCheckExpression = Expression.Property(propertyExpression, "HasValue"); + nonNullComparisonExpression = Expression.Condition(nullCheckExpression, nonNullComparisonExpression, Expression.Constant(false)); + } + else + { + // Property type is not supported + throw new ArgumentException($"Unsupported property type: {propertyExpression.Type}"); + } + + return Expression.Lambda>(nonNullComparisonExpression, parameterExpression); + } + + public static Expression>? GetExpressionDelegate(ParameterExpression parameterExpression, FilterItem filterItem) + { + var propertyTypeName = typeof(TItem).GetPropertyTypeName(filterItem.PropertyName); + + if (propertyTypeName is StringConstants.PropertyTypeNameInt16 + or StringConstants.PropertyTypeNameInt32 + or StringConstants.PropertyTypeNameInt64 + or StringConstants.PropertyTypeNameSingle + or StringConstants.PropertyTypeNameDecimal + or StringConstants.PropertyTypeNameDouble) + return filterItem.Operator switch + { + FilterOperator.Equals => GetNumberEqualExpressionDelegate(parameterExpression, filterItem, propertyTypeName), + FilterOperator.NotEquals => GetNumberNotEqualExpressionDelegate(parameterExpression, filterItem, propertyTypeName), + FilterOperator.LessThan => GetNumberLessThanExpressionDelegate(parameterExpression, filterItem, propertyTypeName), + FilterOperator.LessThanOrEquals => GetNumberLessThanOrEqualExpressionDelegate(parameterExpression, filterItem, propertyTypeName), + FilterOperator.GreaterThan => GetNumberGreaterThanExpressionDelegate(parameterExpression, filterItem, propertyTypeName), + FilterOperator.GreaterThanOrEquals => GetNumberGreaterThanOrEqualExpressionDelegate(parameterExpression, filterItem, propertyTypeName), + _ => GetNumberEqualExpressionDelegate(parameterExpression, filterItem, propertyTypeName) + }; + + if (propertyTypeName is StringConstants.PropertyTypeNameString + or StringConstants.PropertyTypeNameChar) + return filterItem.Operator switch + { + FilterOperator.Contains => GetStringContainsExpressionDelegate(parameterExpression, filterItem), + FilterOperator.StartsWith => GetStringStartsWithExpressionDelegate(parameterExpression, filterItem), + FilterOperator.EndsWith => GetStringEndsWithExpressionDelegate(parameterExpression, filterItem), + FilterOperator.Equals => GetStringEqualsExpressionDelegate(parameterExpression, filterItem), + FilterOperator.NotEquals => GetStringNotEqualsExpressionDelegate(parameterExpression, filterItem), + _ => GetStringContainsExpressionDelegate(parameterExpression, filterItem) + }; + + if (propertyTypeName is StringConstants.PropertyTypeNameDateOnly + or StringConstants.PropertyTypeNameDateTime) + return filterItem.Operator switch + { + FilterOperator.Equals => GetDateEqualExpressionDelegate(parameterExpression, filterItem, propertyTypeName), + FilterOperator.NotEquals => GetDateNotEqualExpressionDelegate(parameterExpression, filterItem, propertyTypeName), + FilterOperator.LessThan => GetDateLessThanExpressionDelegate(parameterExpression, filterItem, propertyTypeName), + FilterOperator.LessThanOrEquals => GetDateLessThanOrEqualExpressionDelegate(parameterExpression, filterItem, propertyTypeName), + FilterOperator.GreaterThan => GetDateGreaterThanExpressionDelegate(parameterExpression, filterItem, propertyTypeName), + FilterOperator.GreaterThanOrEquals => GetDateGreaterThanOrEqualExpressionDelegate(parameterExpression, filterItem, propertyTypeName), + _ => GetDateEqualExpressionDelegate(parameterExpression, filterItem, propertyTypeName) + }; + + if (propertyTypeName == StringConstants.PropertyTypeNameBoolean) + return filterItem.Operator switch + { + FilterOperator.Equals => GetBooleanEqualExpressionDelegate(parameterExpression, filterItem, propertyTypeName), + FilterOperator.NotEquals => GetBooleanNotEqualExpressionDelegate(parameterExpression, filterItem, propertyTypeName), + _ => GetBooleanEqualExpressionDelegate(parameterExpression, filterItem, propertyTypeName) + }; + + return null; + } + + public static ConstantExpression GetNumberConstantExpression(FilterItem filterItem, string propertyTypeName) + { + if (filterItem.Value is null) + return Expression.Constant(null); + + ConstantExpression? constantExpression = null; + + if (propertyTypeName == StringConstants.PropertyTypeNameInt16) + { + _ = short.TryParse(filterItem.Value, out var filterValue); + constantExpression = Expression.Constant((short?)filterValue); + } + else if (propertyTypeName == StringConstants.PropertyTypeNameInt32) + { + _ = int.TryParse(filterItem.Value, out var filterValue); + constantExpression = Expression.Constant((int?)filterValue); + } + else if (propertyTypeName == StringConstants.PropertyTypeNameInt64) + { + _ = long.TryParse(filterItem.Value, out var filterValue); + constantExpression = Expression.Constant((long?)filterValue); + } + else if (propertyTypeName == StringConstants.PropertyTypeNameSingle) + { + _ = float.TryParse(filterItem.Value, out var filterValue); + constantExpression = Expression.Constant((float?)filterValue); + } + else if (propertyTypeName == StringConstants.PropertyTypeNameDecimal) + { + _ = decimal.TryParse(filterItem.Value, out var filterValue); + constantExpression = Expression.Constant((decimal?)filterValue); + } + else if (propertyTypeName == StringConstants.PropertyTypeNameDouble) + { + _ = double.TryParse(filterItem.Value, out var filterValue); + constantExpression = Expression.Constant((double?)filterValue); + } + + return constantExpression!; + } + + public static Expression> GetNumberEqualExpressionDelegate(ParameterExpression parameterExpression, FilterItem filterItem, string propertyTypeName) + { + var propertyExpression = Expression.Property(parameterExpression, filterItem.PropertyName); + var constantExpression = GetNumberConstantExpression(filterItem, propertyTypeName); + + // Handle null check + var nullCheckExpression = propertyExpression.Type.IsNullableType() + ? Expression.NotEqual(propertyExpression, Expression.Constant(null, propertyExpression.Type)) + : (Expression)Expression.Constant(true); + + // Perform the greater than or equal comparison + Expression comparisonExpression; + + if (propertyExpression.Type.IsNullableType()) + { + var nullableValueExpression = Expression.Property(propertyExpression, "Value"); + comparisonExpression = Expression.Equal(nullableValueExpression, constantExpression); + } + else + { + comparisonExpression = Expression.Equal(propertyExpression, constantExpression); + } + + var finalExpression = Expression.AndAlso(nullCheckExpression, comparisonExpression); + + return Expression.Lambda>(finalExpression, parameterExpression); + } + + public static Expression> GetNumberGreaterThanExpressionDelegate(ParameterExpression parameterExpression, FilterItem filterItem, string propertyTypeName) + { + var propertyExpression = Expression.Property(parameterExpression, filterItem.PropertyName); + var constantExpression = GetNumberConstantExpression(filterItem, propertyTypeName); + + // Handle null check + var nullCheckExpression = propertyExpression.Type.IsNullableType() + ? Expression.NotEqual(propertyExpression, Expression.Constant(null, propertyExpression.Type)) + : (Expression)Expression.Constant(true); + + // Perform the greater than or equal comparison + Expression comparisonExpression; + + if (propertyExpression.Type.IsNullableType()) + { + var nullableValueExpression = Expression.Property(propertyExpression, "Value"); + comparisonExpression = Expression.GreaterThan(nullableValueExpression, constantExpression); + } + else + { + comparisonExpression = Expression.GreaterThan(propertyExpression, constantExpression); + } + + var finalExpression = Expression.AndAlso(nullCheckExpression, comparisonExpression); + + return Expression.Lambda>(finalExpression, parameterExpression); + } + + public static Expression> GetNumberGreaterThanOrEqualExpressionDelegate(ParameterExpression parameterExpression, FilterItem filterItem, string propertyTypeName) + { + var propertyExpression = Expression.Property(parameterExpression, filterItem.PropertyName); + var constantExpression = GetNumberConstantExpression(filterItem, propertyTypeName); + + // Handle null check + var nullCheckExpression = propertyExpression.Type.IsNullableType() + ? Expression.NotEqual(propertyExpression, Expression.Constant(null, propertyExpression.Type)) + : (Expression)Expression.Constant(true); + + // Perform the greater than or equal comparison + Expression comparisonExpression; + + if (propertyExpression.Type.IsNullableType()) + { + var nullableValueExpression = Expression.Property(propertyExpression, "Value"); + comparisonExpression = Expression.GreaterThanOrEqual(nullableValueExpression, constantExpression); + } + else + { + comparisonExpression = Expression.GreaterThanOrEqual(propertyExpression, constantExpression); + } + + var finalExpression = Expression.AndAlso(nullCheckExpression, comparisonExpression); + + return Expression.Lambda>(finalExpression, parameterExpression); + } + + public static Expression> GetNumberLessThanExpressionDelegate(ParameterExpression parameterExpression, FilterItem filterItem, string propertyTypeName) + { + var propertyExpression = Expression.Property(parameterExpression, filterItem.PropertyName); + var constantExpression = GetNumberConstantExpression(filterItem, propertyTypeName); + + // Handle null check + var nullCheckExpression = propertyExpression.Type.IsNullableType() + ? Expression.NotEqual(propertyExpression, Expression.Constant(null, propertyExpression.Type)) + : (Expression)Expression.Constant(true); + + // Perform the greater than or equal comparison + Expression comparisonExpression; + + if (propertyExpression.Type.IsNullableType()) + { + var nullableValueExpression = Expression.Property(propertyExpression, "Value"); + comparisonExpression = Expression.LessThan(nullableValueExpression, constantExpression); + } + else + { + comparisonExpression = Expression.LessThan(propertyExpression, constantExpression); + } + + var finalExpression = Expression.AndAlso(nullCheckExpression, comparisonExpression); + + return Expression.Lambda>(finalExpression, parameterExpression); + } + + public static Expression> GetNumberLessThanOrEqualExpressionDelegate(ParameterExpression parameterExpression, FilterItem filterItem, string propertyTypeName) + { + var propertyExpression = Expression.Property(parameterExpression, filterItem.PropertyName); + var constantExpression = GetNumberConstantExpression(filterItem, propertyTypeName); + + // Handle null check + var nullCheckExpression = propertyExpression.Type.IsNullableType() + ? Expression.NotEqual(propertyExpression, Expression.Constant(null, propertyExpression.Type)) + : (Expression)Expression.Constant(true); + + // Perform the greater than or equal comparison + Expression comparisonExpression; + + if (propertyExpression.Type.IsNullableType()) + { + var nullableValueExpression = Expression.Property(propertyExpression, "Value"); + comparisonExpression = Expression.LessThanOrEqual(nullableValueExpression, constantExpression); + } + else + { + comparisonExpression = Expression.LessThanOrEqual(propertyExpression, constantExpression); + } + + var finalExpression = Expression.AndAlso(nullCheckExpression, comparisonExpression); + + return Expression.Lambda>(finalExpression, parameterExpression); + } + + public static Expression> GetNumberNotEqualExpressionDelegate(ParameterExpression parameterExpression, FilterItem filterItem, string propertyTypeName) + { + var propertyExpression = Expression.Property(parameterExpression, filterItem.PropertyName); + var constantExpression = GetNumberConstantExpression(filterItem, propertyTypeName); + + // Handle null check + var nullCheckExpression = propertyExpression.Type.IsNullableType() + ? Expression.NotEqual(propertyExpression, Expression.Constant(null, propertyExpression.Type)) + : (Expression)Expression.Constant(true); + + // Perform the greater than or equal comparison + Expression comparisonExpression; + + if (propertyExpression.Type.IsNullableType()) + { + var nullableValueExpression = Expression.Property(propertyExpression, "Value"); + comparisonExpression = Expression.NotEqual(nullableValueExpression, constantExpression); + } + else + { + comparisonExpression = Expression.NotEqual(propertyExpression, constantExpression); + } + + var finalExpression = Expression.AndAlso(nullCheckExpression, comparisonExpression); + + return Expression.Lambda>(finalExpression, parameterExpression); + } + + public static Expression> GetStringContainsExpressionDelegate(ParameterExpression parameterExpression, FilterItem filterItem) + { + var propertyExp = Expression.Property(parameterExpression, filterItem.PropertyName); + var someValue = Expression.Constant(filterItem.Value, typeof(string)); + var comparisonExpression = Expression.Constant(filterItem.StringComparison); + + // Handle null check + var nullCheckExpression = Expression.NotEqual(propertyExp, Expression.Constant(null, typeof(string))); + + // Create method call expression for Contains method + var methodInfo = typeof(string).GetMethod(nameof(string.Contains), new[] { typeof(string), typeof(StringComparison) }); + var containsExpression = Expression.Call(propertyExp, methodInfo!, someValue, comparisonExpression); + + // Combine null check and contains expression using AndAlso + var finalExpression = Expression.AndAlso(nullCheckExpression, containsExpression); + + return Expression.Lambda>(finalExpression, parameterExpression); + } + + public static Expression> GetStringEndsWithExpressionDelegate(ParameterExpression parameterExpression, FilterItem filterItem) + { + var propertyExp = Expression.Property(parameterExpression, filterItem.PropertyName); + var someValue = Expression.Constant(filterItem.Value, typeof(string)); + var comparisonExpression = Expression.Constant(filterItem.StringComparison); + + // Handle null check + var nullCheckExpression = Expression.NotEqual(propertyExp, Expression.Constant(null, typeof(string))); + + // Create method call expression for Equals method + var methodInfo = typeof(string).GetMethod(nameof(string.EndsWith), new[] { typeof(string), typeof(StringComparison) }); + var equalsExpression = Expression.Call(propertyExp, methodInfo!, someValue, comparisonExpression); + + // Combine null check and equals expression using AndAlso + var finalExpression = Expression.AndAlso(nullCheckExpression, equalsExpression); + + return Expression.Lambda>(finalExpression, parameterExpression); + } + + public static Expression> GetStringEqualsExpressionDelegate(ParameterExpression parameterExpression, FilterItem filterItem) + { + var propertyExp = Expression.Property(parameterExpression, filterItem.PropertyName); + var someValue = Expression.Constant(filterItem.Value, typeof(string)); + var comparisonExpression = Expression.Constant(filterItem.StringComparison); + + // Handle null check + var nullCheckExpression = Expression.NotEqual(propertyExp, Expression.Constant(null, typeof(string))); + + // Create method call expression for Equals method + var methodInfo = typeof(string).GetMethod(nameof(string.Equals), new[] { typeof(string), typeof(StringComparison) }); + var equalsExpression = Expression.Call(propertyExp, methodInfo!, someValue, comparisonExpression); + + // Combine null check and equals expression using AndAlso + var finalExpression = Expression.AndAlso(nullCheckExpression, equalsExpression); + + return Expression.Lambda>(finalExpression, parameterExpression); + } + + public static Expression> GetStringNotEqualsExpressionDelegate(ParameterExpression parameterExpression, FilterItem filterItem) + { + var propertyExp = Expression.Property(parameterExpression, filterItem.PropertyName); + var someValue = Expression.Constant(filterItem.Value, typeof(string)); + var comparisonExpression = Expression.Constant(filterItem.StringComparison); + + // Handle null check + var nullCheckExpression = Expression.NotEqual(propertyExp, Expression.Constant(null, typeof(string))); + + // Create method call expression for Equals method + var methodInfo = typeof(string).GetMethod(nameof(string.Equals), new[] { typeof(string), typeof(StringComparison) }); + var equalsExpression = Expression.Call(propertyExp, methodInfo!, someValue, comparisonExpression); + var notEqualsExpresion = Expression.Equal(equalsExpression, Expression.Constant(false, typeof(bool))); + + // Combine null check and equals expression using AndAlso + var finalExpression = Expression.AndAlso(nullCheckExpression, notEqualsExpresion); + + return Expression.Lambda>(finalExpression, parameterExpression); + } + + public static Expression> GetStringStartsWithExpressionDelegate(ParameterExpression parameterExpression, FilterItem filterItem) + { + var propertyExp = Expression.Property(parameterExpression, filterItem.PropertyName); + var someValue = Expression.Constant(filterItem.Value, typeof(string)); + var comparisonExpression = Expression.Constant(filterItem.StringComparison); + + // Handle null check + var nullCheckExpression = Expression.NotEqual(propertyExp, Expression.Constant(null, typeof(string))); + + // Create method call expression for Equals method + var methodInfo = typeof(string).GetMethod(nameof(string.StartsWith), new[] { typeof(string), typeof(StringComparison) }); + var equalsExpression = Expression.Call(propertyExp, methodInfo!, someValue, comparisonExpression); + + // Combine null check and equals expression using AndAlso + var finalExpression = Expression.AndAlso(nullCheckExpression, equalsExpression); + + return Expression.Lambda>(finalExpression, parameterExpression); + } + + public static bool IsNullableType(this Type type) => Nullable.GetUnderlyingType(type) != null; + + public static Expression> Or(this Expression> leftExpression, Expression> rightExpression) + { + var parameterExpression = leftExpression.Parameters[0]; + + SubstExpressionVisitor substExpressionVisitor = new(); + substExpressionVisitor.subst[rightExpression.Parameters[0]] = parameterExpression; + + Expression body = Expression.OrElse(leftExpression.Body, substExpressionVisitor.Visit(rightExpression.Body)); + + return Expression.Lambda>(body, parameterExpression); + } + + #endregion +} + +internal class SubstExpressionVisitor : ExpressionVisitor +{ + #region Fields and Constants + + public Dictionary subst = new(); + + #endregion + + #region Methods + + protected override Expression VisitParameter(ParameterExpression parameterExpression) => subst.TryGetValue(parameterExpression, out var newExpression) ? newExpression : parameterExpression; + + #endregion +} diff --git a/blazorbootstrap/Extensions/NavLinkExtensions.cs b/blazorbootstrap/Extensions/NavLinkExtensions.cs new file mode 100644 index 000000000..26fdb0531 --- /dev/null +++ b/blazorbootstrap/Extensions/NavLinkExtensions.cs @@ -0,0 +1,70 @@ +namespace BlazorBootstrap; + +public static class NavLinkExtensions +{ + private static bool EqualsHrefExactlyOrIfTrailingSlashAdded(string currentUriAbsolute, string hrefAbsolute) + { + if (string.Equals(currentUriAbsolute, hrefAbsolute, StringComparison.OrdinalIgnoreCase)) return true; + + if (currentUriAbsolute.Length == hrefAbsolute.Length - 1) + // Special case: highlight links to http://host/path/ even if you're + // at http://host/path (with no trailing slash) + // + // This is because the router accepts an absolute URI value of "same + // as base URI but without trailing slash" as equivalent to "base URI", + // which in turn is because it's common for servers to return the same page + // for http://host/vdir as they do for host://host/vdir/ as it's no + // good to display a blank page in that case. + if (hrefAbsolute[^1] == '/' + && hrefAbsolute.StartsWith(currentUriAbsolute, StringComparison.OrdinalIgnoreCase)) + return true; + + return false; + } + + private static bool IsStrictlyPrefixWithSeparator(string value, string prefix) + { + var prefixLength = prefix.Length; + + return value.Length > prefixLength + && value.StartsWith(prefix, StringComparison.OrdinalIgnoreCase) + && ( + // Only match when there's a separator character either at the end of the + // prefix or right after it. + // Example: "/abc" is treated as a prefix of "/abc/def" but not "/abcdef" + // Example: "/abc/" is treated as a prefix of "/abc/def" but not "/abcdef" + prefixLength == 0 + || !char.IsLetterOrDigit(prefix[prefixLength - 1]) + || !char.IsLetterOrDigit(value[prefixLength]) + ); + } + + public static bool ShouldExpand(NavigationManager navigationManager, string href, NavLinkMatch match) + { + var hrefAbsolute = href is null ? null : navigationManager.ToAbsoluteUri(href).AbsoluteUri; + return hrefAbsolute is not null + && (EqualsHrefExactlyOrIfTrailingSlashAdded(navigationManager.Uri, hrefAbsolute) + || (match == NavLinkMatch.Prefix && IsStrictlyPrefixWithSeparator(navigationManager.Uri, hrefAbsolute))); + } + + public static bool ShouldExpand(NavigationManager navigationManager, IEnumerable navItems, NavLinkMatch match, int currentLevel = 0) + { + if(currentLevel > 16) + return false; + + if (navItems?.Any() ?? false) + { + foreach (var item in navItems) + { + if (ShouldExpand(navigationManager, item.Href!, match)) + return true; + + if (item?.HasChildItems ?? false) + if (ShouldExpand(navigationManager, item.ChildItems!, match, currentLevel + 1)) + return true; + } + } + + return false; + } +} diff --git a/blazorbootstrap/Extensions/TypeExtensions.cs b/blazorbootstrap/Extensions/TypeExtensions.cs new file mode 100644 index 000000000..6e03091e0 --- /dev/null +++ b/blazorbootstrap/Extensions/TypeExtensions.cs @@ -0,0 +1,63 @@ +namespace BlazorBootstrap; + +/// +/// Various extension methods for . +/// +public static class TypeExtensions +{ + #region Methods + + /// + /// Get property type name. + /// + /// + /// + /// string + public static string GetPropertyTypeName(this Type type, string propertyName) + { + if (type is null || string.IsNullOrWhiteSpace(propertyName)) + return string.Empty; + + var propertyTypeName = type.GetProperty(propertyName)?.PropertyType?.ToString(); + + if (string.IsNullOrWhiteSpace(propertyTypeName)) + return string.Empty; + + if (propertyTypeName.Contains(StringConstants.PropertyTypeNameInt16, StringComparison.InvariantCulture)) + return StringConstants.PropertyTypeNameInt16; + + if (propertyTypeName.Contains(StringConstants.PropertyTypeNameInt32, StringComparison.InvariantCulture)) + return StringConstants.PropertyTypeNameInt32; + + if (propertyTypeName.Contains(StringConstants.PropertyTypeNameInt64, StringComparison.InvariantCulture)) + return StringConstants.PropertyTypeNameInt64; + + if (propertyTypeName.Contains(StringConstants.PropertyTypeNameChar, StringComparison.InvariantCulture)) + return StringConstants.PropertyTypeNameChar; + + if (propertyTypeName.Contains(StringConstants.PropertyTypeNameString, StringComparison.InvariantCulture)) + return StringConstants.PropertyTypeNameString; + + if (propertyTypeName.Contains(StringConstants.PropertyTypeNameSingle, StringComparison.InvariantCulture)) // float + return StringConstants.PropertyTypeNameSingle; + + if (propertyTypeName.Contains(StringConstants.PropertyTypeNameDecimal, StringComparison.InvariantCulture)) + return StringConstants.PropertyTypeNameDecimal; + + if (propertyTypeName.Contains(StringConstants.PropertyTypeNameDouble, StringComparison.InvariantCulture)) + return StringConstants.PropertyTypeNameDouble; + + if (propertyTypeName.Contains(StringConstants.PropertyTypeNameDateOnly, StringComparison.InvariantCulture)) + return StringConstants.PropertyTypeNameDateOnly; + + if (propertyTypeName.Contains(StringConstants.PropertyTypeNameDateTime, StringComparison.InvariantCulture)) + return StringConstants.PropertyTypeNameDateTime; + + if (propertyTypeName.Contains(StringConstants.PropertyTypeNameBoolean, StringComparison.InvariantCulture)) + return StringConstants.PropertyTypeNameBoolean; + + return string.Empty; + } + + #endregion +} diff --git a/blazorbootstrap/Models/AutoCompleteDataProviderDelegate.cs b/blazorbootstrap/Models/AutoCompleteDataProviderDelegate.cs new file mode 100644 index 000000000..c6ac1cb34 --- /dev/null +++ b/blazorbootstrap/Models/AutoCompleteDataProviderDelegate.cs @@ -0,0 +1,6 @@ +namespace BlazorBootstrap; + +/// +/// Data provider (delegate). +/// +public delegate Task> AutoCompleteDataProviderDelegate(AutoCompleteDataProviderRequest request); diff --git a/blazorbootstrap/Models/AutoCompleteDataProviderRequest.cs b/blazorbootstrap/Models/AutoCompleteDataProviderRequest.cs new file mode 100644 index 000000000..b0aa9b8f1 --- /dev/null +++ b/blazorbootstrap/Models/AutoCompleteDataProviderRequest.cs @@ -0,0 +1,42 @@ +namespace BlazorBootstrap; + +public class AutoCompleteDataProviderRequest +{ + #region Methods + + public AutoCompleteDataProviderResult ApplyTo(IEnumerable data) + { + if (data is null) + return new AutoCompleteDataProviderResult { Data = null, TotalCount = null }; + + var resultData = data; + + // apply filter + if (Filter is not null) + try + { + var parameterExpression = Expression.Parameter(typeof(TItem)); // second param optional + var lambda = ExpressionExtensions.GetExpressionDelegate(parameterExpression, Filter); + + if (lambda is not null) + resultData = resultData.Where(lambda.Compile()); + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + } + + var totalCount = resultData.Count(); + + return new AutoCompleteDataProviderResult { Data = resultData.ToList(), TotalCount = totalCount }; + } + + #endregion + + #region Properties, Indexers + + public CancellationToken CancellationToken { get; init; } = default; + public FilterItem Filter { get; init; } = default!; + + #endregion +} diff --git a/blazorbootstrap/Models/AutoCompleteDataProviderResult.cs b/blazorbootstrap/Models/AutoCompleteDataProviderResult.cs new file mode 100644 index 000000000..dbcb5afc8 --- /dev/null +++ b/blazorbootstrap/Models/AutoCompleteDataProviderResult.cs @@ -0,0 +1,18 @@ +namespace BlazorBootstrap; + +public class AutoCompleteDataProviderResult +{ + #region Properties, Indexers + + /// + /// The provided items by the request. + /// + public IEnumerable? Data { get; init; } + + /// + /// The total item count in the source (for pagination and infinite scroll). + /// + public int? TotalCount { get; init; } + + #endregion +} diff --git a/blazorbootstrap/Models/BreadcrumbItem.cs b/blazorbootstrap/Models/BreadcrumbItem.cs new file mode 100644 index 000000000..969077cb7 --- /dev/null +++ b/blazorbootstrap/Models/BreadcrumbItem.cs @@ -0,0 +1,17 @@ +namespace BlazorBootstrap; + +public class BreadcrumbItem +{ + #region Properties, Indexers + + public string? Href { get; set; } + + /// + /// Represents the current page. + /// + public bool IsCurrentPage { get; set; } + + public string? Text { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Models/Charts/ChartData.cs b/blazorbootstrap/Models/Charts/ChartData.cs new file mode 100644 index 000000000..9e0a3a856 --- /dev/null +++ b/blazorbootstrap/Models/Charts/ChartData.cs @@ -0,0 +1,12 @@ +namespace BlazorBootstrap; + +public class ChartData +{ + #region Properties, Indexers + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public List? Datasets { get; set; } + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public List? Labels { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Models/Charts/ChartDataset/BarChartDataset.cs b/blazorbootstrap/Models/Charts/ChartDataset/BarChartDataset.cs new file mode 100644 index 000000000..f483d9417 --- /dev/null +++ b/blazorbootstrap/Models/Charts/ChartDataset/BarChartDataset.cs @@ -0,0 +1,67 @@ +namespace BlazorBootstrap; + +public class BarChartDataset : ChartDataset +{ + #region Properties, Indexers + + /// + /// Percent (0-1) of the available width each bar should be within the category width. + /// 1.0 will take the whole category width and put the bars right next to each other. + /// + public double BarPercentage { get; set; } = 0.8; + + /// + /// Border radius + /// + public int BorderRadius { get; set; } + + //BarThickness + //https://www.chartjs.org/docs/latest/api/interfaces/BarControllerDatasetOptions.html#barthickness + + //BorderSkipped + //https://www.chartjs.org/docs/latest/api/interfaces/BarControllerDatasetOptions.html#borderskipped + + /// + /// Percent (0-1) of the available width each category should be within the sample width. + /// + public double CategoryPercentage { get; set; } = 0.8; + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public BarChartDatasetDataLabels Datalabels { get; set; } = new(); + + /// + /// The label for the dataset which appears in the legend and tooltips. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? Label { get; set; } + + //MaxBarThickness + //https://www.chartjs.org/docs/latest/api/interfaces/BarControllerDatasetOptions.html#maxbarthickness + + //MinBarLength + //https://www.chartjs.org/docs/latest/api/interfaces/BarControllerDatasetOptions.html#minbarlength + + /// + /// The ID of the x axis to plot this dataset on. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? XAxisID { get; set; } + + /// + /// The ID of the y axis to plot this dataset on. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? YAxisID { get; set; } + + #endregion +} + +public class BarChartDatasetDataLabels +{ + #region Properties, Indexers + + public string? Align { get; set; } = "center"; + public string? Anchor { get; set; } = "center"; + + #endregion +} diff --git a/blazorbootstrap/Models/Charts/ChartDataset/BarChartDatasetData.cs b/blazorbootstrap/Models/Charts/ChartDataset/BarChartDatasetData.cs new file mode 100644 index 000000000..dbefa0865 --- /dev/null +++ b/blazorbootstrap/Models/Charts/ChartDataset/BarChartDatasetData.cs @@ -0,0 +1,10 @@ +namespace BlazorBootstrap; + +public record BarChartDatasetData : ChartDatasetData +{ + #region Constructors + + public BarChartDatasetData(string? datasetLabel, double data) : base(datasetLabel, data) { } + + #endregion +} diff --git a/blazorbootstrap/Models/Charts/ChartDataset/BubbleChartDataset.cs b/blazorbootstrap/Models/Charts/ChartDataset/BubbleChartDataset.cs new file mode 100644 index 000000000..e7e69ef94 --- /dev/null +++ b/blazorbootstrap/Models/Charts/ChartDataset/BubbleChartDataset.cs @@ -0,0 +1,49 @@ +namespace BlazorBootstrap; + +public class BubbleChartDataset : ChartDataset +{ + #region Properties, Indexers + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public new string? BackgroundColor { get; set; } + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public new string? BorderColor { get; set; } + + public new double BorderWidth { get; set; } + + public new List? Data { get; set; } + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public new string? HoverBackgroundColor { get; set; } + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public new string? HoverBorderColor { get; set; } + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public new string? HoverBorderWidth { get; set; } + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string? Label { get; set; } + + public int Radius { get; set; } = 3; + + #endregion +} + +public class BubbleData +{ + #region Constructors + + public BubbleData(double x, double y, double r) + { + X = x; + Y = y; + R = r; + } + + #endregion + + #region Properties, Indexers + + public double R { get; set; } + + public double X { get; set; } + public double Y { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Models/Charts/ChartDataset/ChartDataset.cs b/blazorbootstrap/Models/Charts/ChartDataset/ChartDataset.cs new file mode 100644 index 000000000..f1acee96e --- /dev/null +++ b/blazorbootstrap/Models/Charts/ChartDataset/ChartDataset.cs @@ -0,0 +1,84 @@ +namespace BlazorBootstrap; + +public interface IChartDataset { } + +public class ChartDataset : IChartDataset +{ + #region Constructors + + public ChartDataset() + { + Oid = Guid.NewGuid(); + } + + #endregion + + #region Properties, Indexers + + /// + /// Get or sets the BackgroundColor. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public List? BackgroundColor { get; set; } + + /// + /// Get or sets the BorderColor. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public List? BorderColor { get; set; } + + /// + /// Get or sets the BorderWidth. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public List? BorderWidth { get; set; } + + /// + /// How to clip relative to chartArea. Positive value allows overflow, negative value clips that many pixels inside + /// chartArea. 0 = clip at chartArea. + /// Clipping can also be configured per side: clip: {left: 5, top: false, right: -2, bottom: 0} + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? Clip { get; set; } + + /// + /// Get or sets the Data. + /// + public List? Data { get; set; } + + /// + /// Configures the visibility state of the dataset. Set it to true, to hide the dataset from the chart. + /// + public bool Hidden { get; set; } + + /// + /// Get or sets the HoverBackgroundColor. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public List? HoverBackgroundColor { get; set; } + + /// + /// Get or sets the HoverBorderColor. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public List? HoverBorderColor { get; set; } + + /// + /// Get or sets the HoverBorderWidth. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public List? HoverBorderWidth { get; set; } + + /// + /// Get unique object id. + /// + public Guid Oid { get; private set; } + + /// + /// Gets or sets the chart type. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? Type { get; protected set; } + + #endregion +} diff --git a/blazorbootstrap/Models/Charts/ChartDataset/ChartDatasetData.cs b/blazorbootstrap/Models/Charts/ChartDataset/ChartDatasetData.cs new file mode 100644 index 000000000..d1764aec0 --- /dev/null +++ b/blazorbootstrap/Models/Charts/ChartDataset/ChartDatasetData.cs @@ -0,0 +1,24 @@ +namespace BlazorBootstrap; + +public interface IChartDatasetData { } + +public record ChartDatasetData : IChartDatasetData +{ + #region Constructors + + public ChartDatasetData(string? datasetLabel, double data) + { + DatasetLabel = datasetLabel; + Data = data; + } + + #endregion + + #region Properties, Indexers + + public double Data { get; init; } + + public string? DatasetLabel { get; init; } + + #endregion +} diff --git a/blazorbootstrap/Models/Charts/ChartDataset/DoughnutChartDataset.cs b/blazorbootstrap/Models/Charts/ChartDataset/DoughnutChartDataset.cs new file mode 100644 index 000000000..39b6665da --- /dev/null +++ b/blazorbootstrap/Models/Charts/ChartDataset/DoughnutChartDataset.cs @@ -0,0 +1,34 @@ +namespace BlazorBootstrap; + +public class DoughnutChartDataset : ChartDataset +{ + #region Properties, Indexers + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public DoughnutChartDatasetDataLabels Datalabels { get; set; } = new(); + + /// + /// The label for the dataset which appears in the legend and tooltips. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? Label { get; set; } + + #endregion +} + +public class DoughnutChartDatasetDataLabels +{ + #region Properties, Indexers + + /// + /// Gets or sets the data label anchor. + /// Possible values: start, center, and end. + /// + public string? Anchor { get; set; } = "start"; + + //public string? BackgroundColor { get; set; } + + public double? BorderWidth { get; set; } = 2; + + #endregion +} diff --git a/blazorbootstrap/Models/Charts/ChartDataset/DoughnutChartDatasetData.cs b/blazorbootstrap/Models/Charts/ChartDataset/DoughnutChartDatasetData.cs new file mode 100644 index 000000000..0749b0d39 --- /dev/null +++ b/blazorbootstrap/Models/Charts/ChartDataset/DoughnutChartDatasetData.cs @@ -0,0 +1,19 @@ +namespace BlazorBootstrap; + +public record DoughnutChartDatasetData : ChartDatasetData +{ + #region Constructors + + public DoughnutChartDatasetData(string? datasetLabel, double data, string? backgroundColor) : base(datasetLabel, data) + { + BackgroundColor = backgroundColor; + } + + #endregion + + #region Properties, Indexers + + public string? BackgroundColor { get; init; } + + #endregion +} diff --git a/blazorbootstrap/Models/Charts/ChartDataset/LineChartDataset.cs b/blazorbootstrap/Models/Charts/ChartDataset/LineChartDataset.cs new file mode 100644 index 000000000..791f77b3e --- /dev/null +++ b/blazorbootstrap/Models/Charts/ChartDataset/LineChartDataset.cs @@ -0,0 +1,170 @@ +namespace BlazorBootstrap; + +public class LineChartDataset : ChartDataset +{ + #region Properties, Indexers + + /// + /// Line dash. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public List? BorderDash { get; set; } + + /// + /// Line dash offset. + /// + public double BorderDashOffset { get; set; } + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public LineChartDatasetDataLabels Datalabels { get; set; } = new(); + + /// + /// Both line and radar charts support a fill option on the dataset object + /// which can be used to create area between two datasets or a dataset and + /// a boundary, i.e. the scale origin, start or end. + /// + public bool Fill { get; set; } + + /// + /// Configures the visibility state of the dataset. Set it to true, to hide the dataset from the chart. + /// + public new bool Hidden { get; set; } + + /// + /// Hover line dash. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public List? HoverBorderDash { get; set; } + + /// + /// The label for the dataset which appears in the legend and tooltips. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? Label { get; set; } + + /// + /// The fill color for points. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public List PointBackgroundColor { get; set; } = new() { "rgba(0, 0, 0, 0.1)" }; + + /// + /// The border color for points. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public List PointBorderColor { get; set; } = new() { "rgba(0, 0, 0, 0.1)" }; + + /// + /// The width of the point border in pixels. + /// + public List PointBorderWidth { get; set; } = new() { 1 }; + + /// + /// The pixel size of the non-displayed point that reacts to mouse events. + /// + public List PointHitRadius { get; set; } = new() { 1 }; + + /// + /// Point background color when hovered. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public List? PointHoverBackgroundColor { get; set; } + + /// + /// Point border color when hovered. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public List? PointHoverBorderColor { get; set; } + + /// + /// Border width of point when hovered. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public List PointHoverBorderWidth { get; set; } = new() { 1 }; + + /// + /// The radius of the point when hovered. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public List PointHoverRadius { get; set; } = new() { 1 }; // Default: 4 + + /// + /// The radius of the point shape. If set to 0, the point is not rendered. + /// Default: 3 + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public List PointRadius { get; set; } = new() { 1 }; // Default: 3 + + /// + /// The rotation of the point in degrees. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public List PointRotation { get; set; } = new() { 0 }; + + /// + /// Style of the point. + /// Use 'circle', 'cross', 'crossRot', 'dash', 'line', 'rect', 'rectRounded', 'rectRot', 'star', and 'triangle' to style + /// the point. + /// + public List PointStyle { get; set; } = new() { "circle" }; + + // Segment + // https://www.chartjs.org/docs/latest/api/interfaces/LineControllerDatasetOptions.html#segment + + /// + /// If false, the lines between points are not drawn. + /// + public bool ShowLine { get; set; } = true; + + /// + /// If true, lines will be drawn between points with no or null data. + /// If false, points with null data will create a break in the line. + /// Can also be a number specifying the maximum gap length to span. + /// The unit of the value depends on the scale used. + /// + public bool SpanGaps { get; set; } + + /// + /// true to show the line as a stepped line (tension will be ignored). + /// + public bool Stepped { get; set; } + + /// + /// Bezier curve tension of the line. Set to 0 to draw straightlines. + /// This option is ignored if monotone cubic interpolation is used. + /// + public double Tension { get; set; } = 0.2; + + /// + /// The ID of the x axis to plot this dataset on. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? XAxisID { get; set; } + + /// + /// The ID of the y axis to plot this dataset on. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? YAxisID { get; set; } + + #endregion +} + +public class LineChartDatasetDataLabels +{ + #region Properties, Indexers + + /// + /// Gets or sets the data label alignment. + /// Possible values: start, center, and end. + /// + public string? Align { get; set; } = "start"; + + /// + /// Gets or sets the data label anchor. + /// Possible values: start, center, and end. + /// + public string? Anchor { get; set; } = "start"; + + #endregion +} diff --git a/blazorbootstrap/Models/Charts/ChartDataset/LineChartDatasetData.cs b/blazorbootstrap/Models/Charts/ChartDataset/LineChartDatasetData.cs new file mode 100644 index 000000000..ee728de11 --- /dev/null +++ b/blazorbootstrap/Models/Charts/ChartDataset/LineChartDatasetData.cs @@ -0,0 +1,10 @@ +namespace BlazorBootstrap; + +public record LineChartDatasetData : ChartDatasetData +{ + #region Constructors + + public LineChartDatasetData(string? datasetLabel, double data) : base(datasetLabel, data) { } + + #endregion +} diff --git a/blazorbootstrap/Models/Charts/ChartDataset/PieChartDataset.cs b/blazorbootstrap/Models/Charts/ChartDataset/PieChartDataset.cs new file mode 100644 index 000000000..89abc12e3 --- /dev/null +++ b/blazorbootstrap/Models/Charts/ChartDataset/PieChartDataset.cs @@ -0,0 +1,34 @@ +namespace BlazorBootstrap; + +public class PieChartDataset : ChartDataset +{ + #region Properties, Indexers + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public PieChartDatasetDataLabels Datalabels { get; set; } = new(); + + /// + /// The label for the dataset which appears in the legend and tooltips. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? Label { get; set; } + + #endregion +} + +public class PieChartDatasetDataLabels +{ + #region Properties, Indexers + + /// + /// Gets or sets the data label anchor. + /// Possible values: start, center, and end. + /// + public string? Anchor { get; set; } = "start"; + + //public string? BackgroundColor { get; set; } + + public double? BorderWidth { get; set; } = 2; + + #endregion +} diff --git a/blazorbootstrap/Models/Charts/ChartDataset/PieChartDatasetData.cs b/blazorbootstrap/Models/Charts/ChartDataset/PieChartDatasetData.cs new file mode 100644 index 000000000..024a8564c --- /dev/null +++ b/blazorbootstrap/Models/Charts/ChartDataset/PieChartDatasetData.cs @@ -0,0 +1,19 @@ +namespace BlazorBootstrap; + +public record PieChartDatasetData : ChartDatasetData +{ + #region Constructors + + public PieChartDatasetData(string? datasetLabel, double data, string? backgroundColor) : base(datasetLabel, data) + { + BackgroundColor = backgroundColor; + } + + #endregion + + #region Properties, Indexers + + public string? BackgroundColor { get; init; } + + #endregion +} diff --git a/blazorbootstrap/Models/Charts/ChartDataset/PolarAreaChartDataset.cs b/blazorbootstrap/Models/Charts/ChartDataset/PolarAreaChartDataset.cs new file mode 100644 index 000000000..43dc85c4e --- /dev/null +++ b/blazorbootstrap/Models/Charts/ChartDataset/PolarAreaChartDataset.cs @@ -0,0 +1,3 @@ +namespace BlazorBootstrap; + +public class PolarAreaChartDataset : ChartDataset { } diff --git a/blazorbootstrap/Models/Charts/ChartDataset/RadarChartDataset.cs b/blazorbootstrap/Models/Charts/ChartDataset/RadarChartDataset.cs new file mode 100644 index 000000000..0a578291b --- /dev/null +++ b/blazorbootstrap/Models/Charts/ChartDataset/RadarChartDataset.cs @@ -0,0 +1,22 @@ +namespace BlazorBootstrap; + +public class RadarChartDataset : ChartDataset +{ + #region Properties, Indexers + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public new string? BackgroundColor { get; set; } + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public new string? BorderColor { get; set; } + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public new double BorderWidth { get; set; } + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public new string? HoverBackgroundColor { get; set; } + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public new string? HoverBorderColor { get; set; } + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public new string? HoverBorderWidth { get; set; } + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string? Label { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Models/Charts/ChartLabel.cs b/blazorbootstrap/Models/Charts/ChartLabel.cs new file mode 100644 index 000000000..b08722e26 --- /dev/null +++ b/blazorbootstrap/Models/Charts/ChartLabel.cs @@ -0,0 +1,3 @@ +namespace BlazorBootstrap; + +public class ChartLabel { } diff --git a/blazorbootstrap/Models/Charts/ChartOptions/BarChartOptions.cs b/blazorbootstrap/Models/Charts/ChartOptions/BarChartOptions.cs new file mode 100644 index 000000000..91f974a62 --- /dev/null +++ b/blazorbootstrap/Models/Charts/ChartOptions/BarChartOptions.cs @@ -0,0 +1,28 @@ +namespace BlazorBootstrap; + +public class BarChartOptions : ChartOptions +{ + #region Properties, Indexers + + //hover -> mode, intersect + //maintainAspectRatio + //plugins -> title -> display, text + + /// + /// The base axis of the chart. 'x' for vertical charts and 'y' for horizontal charts. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string IndexAxis { get; set; } = "x"; + + public Interaction Interaction { get; set; } = new(); + + public ChartLayout Layout { get; set; } = new(); + + public BarChartPlugins Plugins { get; set; } = new(); + + public Scales Scales { get; set; } = new(); + + #endregion + + //tooltips -> mode, intersect +} diff --git a/blazorbootstrap/Models/Charts/ChartOptions/ChartOptions.cs b/blazorbootstrap/Models/Charts/ChartOptions/ChartOptions.cs new file mode 100644 index 000000000..dd9d5be1e --- /dev/null +++ b/blazorbootstrap/Models/Charts/ChartOptions/ChartOptions.cs @@ -0,0 +1,259 @@ +namespace BlazorBootstrap; + +public interface IChartOptions { } + +/// +/// +/// +public class ChartOptions : IChartOptions +{ + #region Properties, Indexers + + /// + /// Gets or sets the locale. + /// By default, the chart is using the default locale of the platform which is running on. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? Locale { get; set; } + + /// + /// Gets or sets the MaintainAspectRatio of the chart. + /// + /// + public bool MaintainAspectRatio { get; set; } = true; + + /// + /// Gets or set the responsive. + /// + /// + public bool Responsive { get; set; } + + #endregion +} + +public class ChartLayout +{ + #region Properties, Indexers + + /// + /// Apply automatic padding so visible elements are completely drawn. + /// + public bool AutoPadding { get; set; } = false; + + /// + /// The padding to add inside the chart. + /// + public int Padding { get; set; } = 0; + + #endregion +} + +public class Interaction +{ + #region Fields and Constants + + private InteractionMode mode; + + #endregion + + #region Constructors + +#pragma warning disable CS8618 + public Interaction() +#pragma warning restore CS8618 + { + Mode = InteractionMode.Nearest; + } + + #endregion + + #region Methods + + private void SetMode(InteractionMode interactionMode) => + ChartInteractionMode = interactionMode switch + { + InteractionMode.Dataset => "dataset", + InteractionMode.Index => "index", + InteractionMode.Nearest => "nearest", + InteractionMode.Point => "point", + InteractionMode.X => "x", + InteractionMode.Y => "y", + _ => "" + }; + + #endregion + + #region Properties, Indexers + + /// + /// Sets which elements appear in the interaction. + /// + [JsonPropertyName("mode")] + public string ChartInteractionMode { get; private set; } + + /// + /// if true, the interaction mode only applies when the mouse position intersects an item on the chart. + /// + public bool Intersect { get; set; } + + /// + /// Sets which elements appear in the tooltip. See Interaction Modes for details. + /// + [JsonIgnore] + public InteractionMode Mode + { + get => mode; + set + { + mode = value; + SetMode(value); + } + } + + #endregion +} + +public enum InteractionMode +{ + Dataset, + Index, + Nearest, + Point, + X, + Y +} + +public class Scales +{ + #region Properties, Indexers + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public ChartAxes? X { get; set; } = new(); + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public ChartAxes? Y { get; set; } = new(); + + #endregion +} + +public class ChartAxes +{ + #region Properties, Indexers + + // Stacked + public bool BeginAtZero { get; set; } = true; + + /// + /// User defined maximum number for the scale, overrides maximum value from data. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public double? Max { get; set; } + + /// + /// User defined minimum number for the scale, overrides minimum value from data. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public double? Min { get; set; } + + /// + /// Should the data be stacked. + /// By default data is not stacked. + /// If the stacked option of the value scale (y-axis on horizontal chart) is true, positive and negative values are stacked + /// separately. + /// + public bool Stacked { get; set; } + + /// + /// Adjustment used when calculating the maximum data value. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public double? SuggestedMax { get; set; } + + /// + /// Adjustment used when calculating the minimum data value. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public double? SuggestedMin { get; set; } + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public ChartAxesTitle? Title { get; set; } = new(); + + #endregion +} + +/// +/// The chart title defines text to draw at the top of the chart. +/// +/// +public class ChartAxesTitle +{ + #region Properties, Indexers + + /// + /// Alignment of the title. + /// Options are: 'start', 'center', and 'end' + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? Align { get; set; } = "center"; + + /// + /// Color of text. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? Color { get; set; } = "black"; + + /// + /// Is the title shown? + /// + public bool Display { get; set; } + + public ChartFont? Font { get; set; } = new(); + + //fullSize + //padding + //position + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string? Text { get; set; } + + #endregion +} + +/// +/// +/// +public class ChartFont +{ + #region Properties, Indexers + + /// + /// Default font family for all text, follows CSS font-family options. + /// 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? Family { get; set; } + + /// + /// Height of an individual line of text + /// + /// + public double LineHeight { get; set; } = 1.2; + + /// + /// Default font size (in px) for text. Does not apply to radialLinear scale point labels. + /// + public int Size { get; set; } = 12; + + /// + /// Default font style. Does not apply to tooltip title or footer. Does not apply to chart title. + /// Follows CSS font-style options (i.e. normal, italic, oblique, initial, inherit). + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? Style { get; set; } + + /// + /// Default font weight (boldness). + /// + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? Weight { get; set; } = "bold"; + + #endregion +} diff --git a/blazorbootstrap/Models/Charts/ChartOptions/DoughnutChartOptions.cs b/blazorbootstrap/Models/Charts/ChartOptions/DoughnutChartOptions.cs new file mode 100644 index 000000000..e516c0f7e --- /dev/null +++ b/blazorbootstrap/Models/Charts/ChartOptions/DoughnutChartOptions.cs @@ -0,0 +1,10 @@ +namespace BlazorBootstrap; + +public class DoughnutChartOptions : ChartOptions +{ + #region Properties, Indexers + + public DoughnutChartPlugins Plugins { get; set; } = new(); + + #endregion +} diff --git a/blazorbootstrap/Models/Charts/ChartOptions/LineChartOptions.cs b/blazorbootstrap/Models/Charts/ChartOptions/LineChartOptions.cs new file mode 100644 index 000000000..c3d05f7d6 --- /dev/null +++ b/blazorbootstrap/Models/Charts/ChartOptions/LineChartOptions.cs @@ -0,0 +1,28 @@ +namespace BlazorBootstrap; + +public class LineChartOptions : ChartOptions +{ + #region Properties, Indexers + + //hover -> mode, intersect + //maintainAspectRatio + //plugins -> title -> display, text + + /// + /// The base axis of the chart. 'x' for vertical charts and 'y' for horizontal charts. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string IndexAxis { get; set; } = "x"; + + public Interaction Interaction { get; set; } = new(); + + public ChartLayout Layout { get; set; } = new(); + + public LineChartPlugins Plugins { get; set; } = new(); + + public Scales Scales { get; set; } = new(); + + #endregion + + //tooltips -> mode, intersect +} diff --git a/blazorbootstrap/Models/Charts/ChartOptions/PieChartOptions.cs b/blazorbootstrap/Models/Charts/ChartOptions/PieChartOptions.cs new file mode 100644 index 000000000..6493382d5 --- /dev/null +++ b/blazorbootstrap/Models/Charts/ChartOptions/PieChartOptions.cs @@ -0,0 +1,10 @@ +namespace BlazorBootstrap; + +public class PieChartOptions : ChartOptions +{ + #region Properties, Indexers + + public PieChartPlugins Plugins { get; set; } = new(); + + #endregion +} diff --git a/blazorbootstrap/Models/Charts/ChartPlugins/BarChartPlugins.cs b/blazorbootstrap/Models/Charts/ChartPlugins/BarChartPlugins.cs new file mode 100644 index 000000000..6f41733d3 --- /dev/null +++ b/blazorbootstrap/Models/Charts/ChartPlugins/BarChartPlugins.cs @@ -0,0 +1,29 @@ +namespace BlazorBootstrap; + +public class BarChartPlugins : ChartPlugins +{ + #region Properties, Indexers + + public BarChartDataLabels Datalabels { get; set; } = new(); + + #endregion +} + +public class BarChartDataLabels +{ + #region Properties, Indexers + + public string? Color { get; set; } = "white"; + public BarChartDataLabelsFont Font { get; set; } = new(); + + #endregion +} + +public class BarChartDataLabelsFont +{ + #region Properties, Indexers + + public string? Weight { get; set; } = "bold"; + + #endregion +} diff --git a/blazorbootstrap/Models/Charts/ChartPlugins/ChartPlugins.cs b/blazorbootstrap/Models/Charts/ChartPlugins/ChartPlugins.cs new file mode 100644 index 000000000..7981f2ef7 --- /dev/null +++ b/blazorbootstrap/Models/Charts/ChartPlugins/ChartPlugins.cs @@ -0,0 +1,232 @@ +namespace BlazorBootstrap; + +public class ChartPlugins +{ + #region Properties, Indexers + + /// + /// The chart legend displays data about the datasets that are appearing on the chart. + /// + public ChartPluginsLegend Legend { get; set; } = new(); + + /// + /// The chart title defines text to draw at the top of the chart. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public ChartPluginsTitle? Title { get; set; } = new(); + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public ChartPluginsTooltip? Tooltip { get; set; } + + #endregion +} + +public class ChartPluginsLegend +{ + #region Properties, Indexers + + /// + /// Alignment of the legend. Default values is 'center'. Other possible values 'start' and 'end'. + /// + public string? Align { get; set; } = "center"; + + /// + /// Is the legend shown? Default value is 'true'. + /// + public bool Display { get; set; } = true; + + /// + /// Position of the legend. Default value is 'top'. Other possible value is 'bottom'. + /// + public string? Position { get; set; } = "top"; + + #endregion +} + +/// +/// The chart title defines text to draw at the top of the chart. +/// +/// +public class ChartPluginsTitle +{ + #region Properties, Indexers + + /// + /// Alignment of the title. + /// Options are: 'start', 'center', and 'end' + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? Align { get; set; } = "center"; + + /// + /// Color of text. + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? Color { get; set; } = "black"; + + /// + /// Is the title shown? + /// + public bool Display { get; set; } + + public ChartFont? Font { get; set; } = new(); + + //fullSize + //padding + //position + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? Text { get; set; } + + #endregion +} + +/// +/// Tooltip for bubble, doughnut, pie, polar area, and scatter charts +/// +/// +public class ChartPluginsTooltip +{ + #region Properties, Indexers + + /// + /// Background color of the tooltip. + /// + public string BackgroundColor { get; set; } = "rgba(0, 0, 0, 0.8)"; + + /// + /// Horizontal alignment of the body text lines. left/right/center. + /// + public string BodyAlign { get; set; } = "left"; + + /// + /// Color of body text. + /// + public string BodyColor { get; set; } = "#fff"; + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public ChartPluginsTooltipFont? BodyFont { get; set; } + + /// + /// Spacing to add to top and bottom of each tooltip item. + /// + public int BodySpacing { get; set; } = 2; + + /// + /// Extra distance to move the end of the tooltip arrow away from the tooltip point. + /// + public int CaretPadding { get; set; } = 2; + + /// + /// Size, in px, of the tooltip arrow. + /// + public int CaretSize { get; set; } = 5; + + /// + /// If true, color boxes are shown in the tooltip. + /// + public bool DisplayColors { get; set; } = true; + + /// + /// Are on-canvas tooltips enabled? + /// + public bool Enabled { get; set; } = true; + + /// + /// Horizontal alignment of the footer text lines. left/right/center. + /// + public string FooterAlign { get; set; } = "left"; + + /// + /// Color of footer text. + /// + public string FooterColor { get; set; } = "#fff"; + + public ChartPluginsTooltipFont FooterFont { get; set; } = new(); + + /// + /// Margin to add before drawing the footer. + /// + public int FooterMarginTop { get; set; } = 6; + + /// + /// Spacing to add to top and bottom of each footer line. + /// + public int FooterSpacing { get; set; } = 2; + + /// + /// Horizontal alignment of the title text lines. left/right/center. + /// + public string TitleAlign { get; set; } = "left"; + + /// + /// Color of title text. + /// + public string TitleColor { get; set; } = "#fff"; + + public ChartPluginsTooltipFont TitleFont { get; set; } = new(); + + /// + /// Margin to add on bottom of title section. + /// + public int TitleMarginBottom { get; set; } = 6; + + /// + /// Spacing to add to top and bottom of each title line. + /// + public int TitleSpacing { get; set; } = 2; + + /// + /// Position of the tooltip caret in the X direction. left/center/right. + /// + public string? XAlign { get; set; } + + /// + /// Position of the tooltip caret in the Y direction. top/center/bottom. + /// + public string? YAlign { get; set; } + + #endregion +} + +/// +/// +/// +public class ChartPluginsTooltipFont +{ + #region Properties, Indexers + + /// + /// Default font family for all text, follows CSS font-family options. + /// 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? Family { get; set; } + + /// + /// Height of an individual line of text + /// + /// + public double LineHeight { get; set; } = 1.2; + + /// + /// Default font size (in px) for text. Does not apply to radialLinear scale point labels. + /// + public int Size { get; set; } = 12; + + /// + /// Default font style. Does not apply to tooltip title or footer. Does not apply to chart title. + /// Follows CSS font-style options (i.e. normal, italic, oblique, initial, inherit). + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? Style { get; set; } + + /// + /// Default font weight (boldness). + /// + /// + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? Weight { get; set; } = "bold"; + + #endregion +} diff --git a/blazorbootstrap/Models/Charts/ChartPlugins/DoughnutChartPlugins.cs b/blazorbootstrap/Models/Charts/ChartPlugins/DoughnutChartPlugins.cs new file mode 100644 index 000000000..a51dfff44 --- /dev/null +++ b/blazorbootstrap/Models/Charts/ChartPlugins/DoughnutChartPlugins.cs @@ -0,0 +1,33 @@ +namespace BlazorBootstrap; + +public class DoughnutChartPlugins : ChartPlugins +{ + #region Properties, Indexers + + public DoughnutChartDataLabels Datalabels { get; set; } = new(); + + #endregion +} + +public class DoughnutChartDataLabels +{ + #region Properties, Indexers + + public string? BorderColor { get; set; } = "white"; + public double BorderRadius { get; set; } = 25; + public double BorderWidth { get; set; } = 2; + public string? Color { get; set; } = "white"; + public DoughnutChartDataLabelsFont Font { get; set; } = new(); + public double Padding { get; set; } = 6; + + #endregion +} + +public class DoughnutChartDataLabelsFont +{ + #region Properties, Indexers + + public string? Weight { get; set; } = "bold"; + + #endregion +} diff --git a/blazorbootstrap/Models/Charts/ChartPlugins/LineChartPlugins.cs b/blazorbootstrap/Models/Charts/ChartPlugins/LineChartPlugins.cs new file mode 100644 index 000000000..1e3eafc7e --- /dev/null +++ b/blazorbootstrap/Models/Charts/ChartPlugins/LineChartPlugins.cs @@ -0,0 +1,31 @@ +namespace BlazorBootstrap; + +public class LineChartPlugins : ChartPlugins +{ + #region Properties, Indexers + + public LineChartDataLabels Datalabels { get; set; } = new(); + + #endregion +} + +public class LineChartDataLabels +{ + #region Properties, Indexers + + public double BorderRadius { get; set; } = 4; + public string? Color { get; set; } = "white"; + public LineChartDataLabelsFont Font { get; set; } = new(); + public double Padding { get; set; } = 6; + + #endregion +} + +public class LineChartDataLabelsFont +{ + #region Properties, Indexers + + public string? Weight { get; set; } = "bold"; + + #endregion +} diff --git a/blazorbootstrap/Models/Charts/ChartPlugins/PieChartPlugins.cs b/blazorbootstrap/Models/Charts/ChartPlugins/PieChartPlugins.cs new file mode 100644 index 000000000..63a4ea1f4 --- /dev/null +++ b/blazorbootstrap/Models/Charts/ChartPlugins/PieChartPlugins.cs @@ -0,0 +1,33 @@ +namespace BlazorBootstrap; + +public class PieChartPlugins : ChartPlugins +{ + #region Properties, Indexers + + public PieChartDataLabels Datalabels { get; set; } = new(); + + #endregion +} + +public class PieChartDataLabels +{ + #region Properties, Indexers + + public string? BorderColor { get; set; } = "white"; + public double BorderRadius { get; set; } = 25; + public double BorderWidth { get; set; } = 2; + public string? Color { get; set; } = "white"; + public PieChartDataLabelsFont Font { get; set; } = new(); + public double Padding { get; set; } = 6; + + #endregion +} + +public class PieChartDataLabelsFont +{ + #region Properties, Indexers + + public string? Weight { get; set; } = "bold"; + + #endregion +} diff --git a/blazorbootstrap/Models/Charts/ChartRGB.cs b/blazorbootstrap/Models/Charts/ChartRGB.cs new file mode 100644 index 000000000..9303585fa --- /dev/null +++ b/blazorbootstrap/Models/Charts/ChartRGB.cs @@ -0,0 +1,3 @@ +namespace BlazorBootstrap; + +public record ChartRGB(int R, int G, int B); diff --git a/blazorbootstrap/Models/Charts/ChartRGBA.cs b/blazorbootstrap/Models/Charts/ChartRGBA.cs new file mode 100644 index 000000000..27f1cfb59 --- /dev/null +++ b/blazorbootstrap/Models/Charts/ChartRGBA.cs @@ -0,0 +1,3 @@ +namespace BlazorBootstrap; + +public record ChartRGBA(int R, int G, int B, double A); diff --git a/blazorbootstrap/Models/ConfirmDialogOptions.cs b/blazorbootstrap/Models/ConfirmDialogOptions.cs new file mode 100644 index 000000000..d018e0237 --- /dev/null +++ b/blazorbootstrap/Models/ConfirmDialogOptions.cs @@ -0,0 +1,63 @@ +namespace BlazorBootstrap; + +public class ConfirmDialogOptions +{ + #region Properties, Indexers + + /// + /// Determines whether to focus on the yes button or not. + /// + public bool AutoFocusYesButton { get; set; } = true; + + /// + /// Additional CSS class for the dialog (div.modal-dialog element). + /// + public string? DialogCssClass { get; set; } + + /// + /// Adds a dismissable close button to the confirm dialog. + /// + public bool Dismissable { get; set; } = true; + + /// + /// Additional header CSS class (div.modal-header element). + /// + public string? HeaderCssClass { get; set; } + + /// + /// Allows confirm dialog body to be scrollable. + /// + public bool IsScrollable { get; set; } + + /// + /// Shows the confirm dialog vertically in the center of the page. + /// + public bool IsVerticallyCentered { get; set; } + + /// + /// Gets or sets the 'No' button color. + /// + public ButtonColor NoButtonColor { get; set; } = ButtonColor.Secondary; + + /// + /// Gets or sets the 'No' button text. + /// + public string NoButtonText { get; set; } = "No"; + + /// + /// Size of the modal. Default is . + /// + public DialogSize Size { get; set; } + + /// + /// Gets or sets the 'Yes' button color. + /// + public ButtonColor YesButtonColor { get; set; } = ButtonColor.Primary; + + /// + /// Gets or sets the 'Yes' button text. + /// + public string YesButtonText { get; set; } = "Yes"; + + #endregion +} diff --git a/blazorbootstrap/Models/Constants.cs b/blazorbootstrap/Models/Constants.cs new file mode 100644 index 000000000..c20077625 --- /dev/null +++ b/blazorbootstrap/Models/Constants.cs @@ -0,0 +1,22 @@ +namespace BlazorBootstrap; + +internal class StringConstants +{ + #region Fields and Constants + + public const string PropertyTypeNameInt16 = "Int16"; + public const string PropertyTypeNameInt32 = "Int32"; + public const string PropertyTypeNameInt64 = "Int64"; + public const string PropertyTypeNameChar = "Char"; + public const string PropertyTypeNameString = "String"; + public const string PropertyTypeNameSingle = "Single"; // float + public const string PropertyTypeNameDecimal = "Decimal"; + public const string PropertyTypeNameDouble = "Double"; + public const string PropertyTypeNameDateOnly = "DateOnly"; + public const string PropertyTypeNameDateTime = "DateTime"; + public const string PropertyTypeNameBoolean = "Boolean"; + + public const string DataBootstrapToggle = "data-bs-toggle"; + + #endregion +} diff --git a/blazorbootstrap/Models/CurrencyFormatOptions.cs b/blazorbootstrap/Models/CurrencyFormatOptions.cs new file mode 100644 index 000000000..5402f6e75 --- /dev/null +++ b/blazorbootstrap/Models/CurrencyFormatOptions.cs @@ -0,0 +1,30 @@ +namespace BlazorBootstrap; + +internal class CurrencyFormatOptions +{ + #region Properties, Indexers + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string? Currency { get; set; } + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string? CurrencySign { get; set; } + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public byte? MaximumFractionDigits { get; set; } + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public byte? MinimumFractionDigits { get; set; } + + public byte MinimumIntegerDigits { get; set; } + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string? Style { get; set; } = "decimal"; + + #endregion +} + +public enum CurrencySign +{ + Standard, + + /// + /// Wrap the number with parentheses instead of appending a minus sign. + /// + Accounting +} diff --git a/blazorbootstrap/Models/FilterItem.cs b/blazorbootstrap/Models/FilterItem.cs new file mode 100644 index 000000000..863989466 --- /dev/null +++ b/blazorbootstrap/Models/FilterItem.cs @@ -0,0 +1,3 @@ +namespace BlazorBootstrap; + +public sealed record class FilterItem(string PropertyName, string Value, FilterOperator Operator, StringComparison StringComparison); diff --git a/blazorbootstrap/Models/FilterOperatorInfo.cs b/blazorbootstrap/Models/FilterOperatorInfo.cs new file mode 100644 index 000000000..534dc5af7 --- /dev/null +++ b/blazorbootstrap/Models/FilterOperatorInfo.cs @@ -0,0 +1,3 @@ +namespace BlazorBootstrap; + +public record FilterOperatorInfo(string Symbol, string Text, FilterOperator FilterOperator); diff --git a/blazorbootstrap/Models/GridDataProviderDelegate.cs b/blazorbootstrap/Models/GridDataProviderDelegate.cs new file mode 100644 index 000000000..d3653fd51 --- /dev/null +++ b/blazorbootstrap/Models/GridDataProviderDelegate.cs @@ -0,0 +1,6 @@ +namespace BlazorBootstrap; + +/// +/// Data provider (delegate). +/// +public delegate Task> GridDataProviderDelegate(GridDataProviderRequest request); diff --git a/blazorbootstrap/Models/GridDataProviderRequest.cs b/blazorbootstrap/Models/GridDataProviderRequest.cs new file mode 100644 index 000000000..42672bbf6 --- /dev/null +++ b/blazorbootstrap/Models/GridDataProviderRequest.cs @@ -0,0 +1,105 @@ +namespace BlazorBootstrap; + +public class GridDataProviderRequest +{ + #region Methods + + public GridDataProviderResult ApplyTo(IEnumerable data) + { + if (data == null) + return new GridDataProviderResult { Data = null, TotalCount = null }; + + var resultData = data; + + // apply filter + if (Filters != null && Filters.Any()) + try + { + var parameterExpression = Expression.Parameter(typeof(TItem)); // second param optional + Expression>? lambda = null; + + foreach (var filter in Filters) + if (lambda is null) + lambda = ExpressionExtensions.GetExpressionDelegate(parameterExpression, filter); + else + lambda = lambda.And(ExpressionExtensions.GetExpressionDelegate(parameterExpression, filter)!); + + if (lambda is not null) + resultData = resultData.Where(lambda.Compile()); + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + } + + // apply sorting + if (Sorting != null && Sorting.Any()) + { + IOrderedEnumerable orderedData = null!; + var index = 1; + + foreach (var sortItem in Sorting) + { + if (index == 1) + { + orderedData = sortItem.SortDirection == SortDirection.Ascending + ? resultData.OrderBy(sortItem.SortKeySelector.Compile()) + : resultData.OrderByDescending(sortItem.SortKeySelector.Compile()); + } + else + { + if (orderedData != null) + orderedData = sortItem.SortDirection == SortDirection.Ascending + ? orderedData.ThenBy(sortItem.SortKeySelector.Compile()) + : orderedData.ThenByDescending(sortItem.SortKeySelector.Compile()); + } + + index++; + } + + resultData = orderedData; + } + + // apply paging + var skip = 0; + var take = data.Count(); + var totalCount = resultData!.Count(); // before paging + + if (PageNumber > 0 && PageSize > 0) + { + skip = (PageNumber - 1) * PageSize; + take = PageSize; + resultData = resultData!.Skip(skip).Take(take); + } + + return new GridDataProviderResult { Data = resultData, TotalCount = totalCount }; + } + + #endregion + + #region Properties, Indexers + + public CancellationToken CancellationToken { get; init; } = default; + + /// + /// Current filters. + /// + public IEnumerable Filters { get; init; } = default!; + + /// + /// Page number. + /// + public int PageNumber { get; init; } + + /// + /// Size of the page. + /// + public int PageSize { get; init; } + + /// + /// Current sorting. + /// + public IEnumerable> Sorting { get; init; } = default!; + + #endregion +} diff --git a/blazorbootstrap/Models/GridDataProviderResult.cs b/blazorbootstrap/Models/GridDataProviderResult.cs new file mode 100644 index 000000000..3cda79f21 --- /dev/null +++ b/blazorbootstrap/Models/GridDataProviderResult.cs @@ -0,0 +1,18 @@ +namespace BlazorBootstrap; + +public class GridDataProviderResult +{ + #region Properties, Indexers + + /// + /// The provided items by the request. + /// + public IEnumerable? Data { get; init; } + + /// + /// The total item count in the source (for pagination and infinite scroll). + /// + public int? TotalCount { get; init; } + + #endregion +} diff --git a/blazorbootstrap/Models/GridFiltersTranslationDelegate.cs b/blazorbootstrap/Models/GridFiltersTranslationDelegate.cs new file mode 100644 index 000000000..70569aa60 --- /dev/null +++ b/blazorbootstrap/Models/GridFiltersTranslationDelegate.cs @@ -0,0 +1,6 @@ +namespace BlazorBootstrap; + +/// +/// Grid filters translation provider (delegate). +/// +public delegate Task> GridFiltersTranslationDelegate(); diff --git a/blazorbootstrap/Models/GridSettingsProviderDelegate.cs b/blazorbootstrap/Models/GridSettingsProviderDelegate.cs new file mode 100644 index 000000000..41f4ccb1c --- /dev/null +++ b/blazorbootstrap/Models/GridSettingsProviderDelegate.cs @@ -0,0 +1,6 @@ +namespace BlazorBootstrap; + +/// +/// Grid settings provider (delegate). +/// +public delegate Task GridSettingsProviderDelegate(); diff --git a/blazorbootstrap/Models/GridState.cs b/blazorbootstrap/Models/GridState.cs new file mode 100644 index 000000000..ff842ffbe --- /dev/null +++ b/blazorbootstrap/Models/GridState.cs @@ -0,0 +1,31 @@ +namespace BlazorBootstrap; + +/// +/// User state of the . +/// +public class GridState +{ + #region Constructors + + public GridState(int pageIndex, IEnumerable>? sorting) + { + PageIndex = pageIndex; + Sorting = sorting; + } + + #endregion + + #region Properties, Indexers + + /// + /// Current page index. + /// + public int PageIndex { get; } + + /// + /// Current sorting. + /// + public IEnumerable>? Sorting { get; } + + #endregion +} diff --git a/blazorbootstrap/Models/ModalOption.cs b/blazorbootstrap/Models/ModalOption.cs new file mode 100644 index 000000000..58abb9e55 --- /dev/null +++ b/blazorbootstrap/Models/ModalOption.cs @@ -0,0 +1,53 @@ +namespace BlazorBootstrap; + +public class ModalOption +{ + #region Properties, Indexers + + /// + /// Gets or sets the footer button color. + /// + public ButtonColor FooterButtonColor { get; set; } = ButtonColor.Secondary; + + /// + /// Gets or sets the footer button custom CSS class. + /// + public string FooterButtonCSSClass { get; set; } = default!; + + /// + /// Gets or sets the footer button text. Default text is `OK`. + /// + public string FooterButtonText { get; set; } = "OK"; + + /// + /// Gets or sets the IsVerticallyCentered. + /// + public bool IsVerticallyCentered { get; set; } + + /// + /// Gets or sets the modal message. + /// + public string Message { get; set; } = default!; + + /// + /// Shows or hides the footer button. Default value is `true`. + /// + public bool ShowFooterButton { get; set; } = true; + + /// + /// Gets or sets the modal size. + /// + public ModalSize Size { get; set; } + + /// + /// Gets or sets the modal title. + /// + public string Title { get; set; } = default!; + + /// + /// Gets or sets the modal type. Default value is `ModalType.Light`. + /// + public ModalType Type { get; set; } = ModalType.Light; + + #endregion +} diff --git a/blazorbootstrap/Models/NavItem.cs b/blazorbootstrap/Models/NavItem.cs new file mode 100644 index 000000000..ab9ba48ea --- /dev/null +++ b/blazorbootstrap/Models/NavItem.cs @@ -0,0 +1,78 @@ +namespace BlazorBootstrap; + +public class NavItem +{ + #region Properties, Indexers + + /// + /// Gets or sets the collection of child navigation items. + /// + internal List? ChildItems { get; set; } + + /// + /// Gets or sets an additional CSS class. + /// + public string? Class { get; set; } + + /// + /// Gets or sets the name of the custom icon to display. + /// + public string? CustomIconName { get; set; } + + /// + /// Gets or sets a Boolean value indicating whether the navigation item has child items. + /// + internal bool HasChildItems { get; set; } + + /// + /// Gets or sets the HyperText Reference (href). + /// + public string? Href { get; set; } + + /// + /// Gets or sets the icon color. + /// + public IconColor IconColor { get; set; } + + /// + /// Gets or sets the icon name. + /// + public IconName IconName { get; set; } + + /// + /// Gets or sets the Id. + /// + public string? Id { get; set; } + + /// + /// Gets or sets the item level. + /// + public int Level { get; set; } = 0; + + /// + /// Gets or sets the URL matching behavior. + /// + public NavLinkMatch Match { get; set; } + + /// + /// Gets or sets the parent Id. + /// + public string? ParentId { get; set; } + + /// + /// Gets or sets the sequence. + /// + public int Sequence { get; set; } + + /// + /// Gets or sets the target. + /// + public Target Target { get; set; } + + /// + /// Gets or sets the navigation link text. + /// + public string? Text { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Models/PdfViewerModel.cs b/blazorbootstrap/Models/PdfViewerModel.cs new file mode 100644 index 000000000..fb386fa77 --- /dev/null +++ b/blazorbootstrap/Models/PdfViewerModel.cs @@ -0,0 +1,7 @@ +namespace BlazorBootstrap; + +public class PdfViewerModel +{ + public int PageNumber { get; set; } = 0; + public int PagesCount { get; set; } = 0; +} diff --git a/blazorbootstrap/Models/Sidebar2DataProviderDelegate.cs b/blazorbootstrap/Models/Sidebar2DataProviderDelegate.cs new file mode 100644 index 000000000..c9a8b3d36 --- /dev/null +++ b/blazorbootstrap/Models/Sidebar2DataProviderDelegate.cs @@ -0,0 +1,6 @@ +namespace BlazorBootstrap; + +/// +/// Data provider (delegate). +/// +public delegate Task Sidebar2DataProviderDelegate(Sidebar2DataProviderRequest request); diff --git a/blazorbootstrap/Models/Sidebar2DataProviderRequest.cs b/blazorbootstrap/Models/Sidebar2DataProviderRequest.cs new file mode 100644 index 000000000..76646c580 --- /dev/null +++ b/blazorbootstrap/Models/Sidebar2DataProviderRequest.cs @@ -0,0 +1,92 @@ +namespace BlazorBootstrap; + +public class Sidebar2DataProviderRequest +{ + #region Methods + + public Sidebar2DataProviderResult ApplyTo(IEnumerable data) + { + if (data is null) + { + return new Sidebar2DataProviderResult { Data = Enumerable.Empty() }; + } + + var result = new List(); + var parentNavItems = data.Where(x => string.IsNullOrWhiteSpace(x.ParentId))?.OrderBy(x => x.Sequence)?.ToList(); + + if (!parentNavItems?.Any() ?? true) + { + return new Sidebar2DataProviderResult { Data = Enumerable.Empty() }; + } + + result.AddRange(parentNavItems!); + + foreach (var navItem in result) + { + if (string.IsNullOrWhiteSpace(navItem.Id)) + continue; + + navItem.Level = 0; + + var childNavItems = data.Where(x => x.ParentId == navItem.Id)?.OrderBy(x => x.Sequence)?.ToList(); + + if (childNavItems?.Any() ?? false) + { + navItem.HasChildItems = true; + navItem.ChildItems = childNavItems; + + try + { + SetLevel(data, navItem.ChildItems, 1, new HashSet()); + } + catch (CircularReferenceException ex) + { + // Handle circular reference exception (e.g., log the error, skip processing the item) + Console.WriteLine($"Circular reference detected: {ex.Message}"); + } + } + } + + return new Sidebar2DataProviderResult { Data = result }; + } + + private void SetLevel(IEnumerable data, List items, int currentLevel, HashSet visitedIds) + { + foreach (var item in items) + { + item.Level = currentLevel; + + if (string.IsNullOrWhiteSpace(item.Id)) + continue; + + if (visitedIds.Contains(item.Id)) + { + throw new CircularReferenceException($"Circular reference detected: Item {item.Id} has a child referring back to it or an ancestor."); + } + + visitedIds.Add(item.Id); + + var childItems = data.Where(x => x.ParentId == item.Id)?.OrderBy(x => x.Sequence)?.ToList(); + + if (childItems?.Any() ?? false) + { + item.HasChildItems = true; + item.ChildItems = childItems; + + SetLevel(data, childItems, currentLevel + 1, new HashSet(visitedIds)); // Pass a copy of visitedIds + } + + visitedIds.Remove(item.Id); // Remove from visitedIds after processing the item + } + } + + #endregion +} + +// Add a custom exception class for circular references (optional) +public class CircularReferenceException : Exception +{ + public CircularReferenceException(string message) : base(message) + { + } +} diff --git a/blazorbootstrap/Models/Sidebar2DataProviderResult.cs b/blazorbootstrap/Models/Sidebar2DataProviderResult.cs new file mode 100644 index 000000000..c05ef385a --- /dev/null +++ b/blazorbootstrap/Models/Sidebar2DataProviderResult.cs @@ -0,0 +1,13 @@ +namespace BlazorBootstrap; + +public class Sidebar2DataProviderResult +{ + #region Properties, Indexers + + /// + /// The provided items by the request. + /// + public IEnumerable? Data { get; init; } + + #endregion +} diff --git a/blazorbootstrap/Models/SidebarDataProviderDelegate.cs b/blazorbootstrap/Models/SidebarDataProviderDelegate.cs new file mode 100644 index 000000000..902a6d93a --- /dev/null +++ b/blazorbootstrap/Models/SidebarDataProviderDelegate.cs @@ -0,0 +1,6 @@ +namespace BlazorBootstrap; + +/// +/// Data provider (delegate). +/// +public delegate Task SidebarDataProviderDelegate(SidebarDataProviderRequest request); diff --git a/blazorbootstrap/Models/SidebarDataProviderRequest.cs b/blazorbootstrap/Models/SidebarDataProviderRequest.cs new file mode 100644 index 000000000..55217154c --- /dev/null +++ b/blazorbootstrap/Models/SidebarDataProviderRequest.cs @@ -0,0 +1,38 @@ +namespace BlazorBootstrap; + +public class SidebarDataProviderRequest +{ + #region Methods + + public SidebarDataProviderResult ApplyTo(IEnumerable data) + { + if (data is null) + return new SidebarDataProviderResult { Data = Enumerable.Empty() }; + + var result = new List(); + var parentNavItems = data.Where(x => string.IsNullOrWhiteSpace(x.ParentId))?.OrderBy(x => x.Sequence); + + if (parentNavItems is null || !parentNavItems.Any()) + return new SidebarDataProviderResult { Data = Enumerable.Empty() }; + + result.AddRange(parentNavItems); + + foreach (var navItem in parentNavItems) + { + if (string.IsNullOrWhiteSpace(navItem.Id)) + continue; + + var childNavItems = data.Where(x => x.ParentId == navItem.Id)?.OrderBy(x => x.Sequence)?.ToList(); + + if (childNavItems is not null && childNavItems.Any()) + { + navItem.HasChildItems = true; + navItem.ChildItems = childNavItems; + } + } + + return new SidebarDataProviderResult { Data = result }; + } + + #endregion +} diff --git a/blazorbootstrap/Models/SidebarDataProviderResult.cs b/blazorbootstrap/Models/SidebarDataProviderResult.cs new file mode 100644 index 000000000..f28eabbda --- /dev/null +++ b/blazorbootstrap/Models/SidebarDataProviderResult.cs @@ -0,0 +1,13 @@ +namespace BlazorBootstrap; + +public class SidebarDataProviderResult +{ + #region Properties, Indexers + + /// + /// The provided items by the request. + /// + public IEnumerable? Data { get; init; } + + #endregion +} diff --git a/blazorbootstrap/Models/SortingItem.cs b/blazorbootstrap/Models/SortingItem.cs new file mode 100644 index 000000000..f337e9d7b --- /dev/null +++ b/blazorbootstrap/Models/SortingItem.cs @@ -0,0 +1,40 @@ +namespace BlazorBootstrap; + +/// +/// Item describes one sorting criteria. +/// +public sealed class SortingItem +{ + #region Constructors + + /// + /// Constructor. + /// + public SortingItem(string sortString, Expression> sortKeySelector, SortDirection sortDirection) + { + SortString = sortString; + SortKeySelector = sortKeySelector; + SortDirection = sortDirection; + } + + #endregion + + #region Properties, Indexers + + /// + /// Sort direction of SortString/SortKeySelector. + /// + public SortDirection SortDirection { get; } + + /// + /// Selector function of sorting key. To be used for automatic in-memory sorting. + /// + public Expression> SortKeySelector { get; } + + /// + /// Sorting as string value. Can be used to pass value between application layers (ie. WebAPI call parameter). + /// + public string SortString { get; } + + #endregion +} diff --git a/blazorbootstrap/Models/SpinnerCircle.cs b/blazorbootstrap/Models/SpinnerCircle.cs new file mode 100644 index 000000000..5e82c6e2b --- /dev/null +++ b/blazorbootstrap/Models/SpinnerCircle.cs @@ -0,0 +1,3 @@ +namespace BlazorBootstrap; + +public record SpinnerCircle(int Radius, int Cx, int Cy); \ No newline at end of file diff --git a/blazorbootstrap/Models/TickMark.cs b/blazorbootstrap/Models/TickMark.cs new file mode 100644 index 000000000..88c249221 --- /dev/null +++ b/blazorbootstrap/Models/TickMark.cs @@ -0,0 +1,7 @@ +namespace BlazorBootstrap; + +public class TickMark +{ + public string? Label { get; set; } + public string? Value { get; set; } +} diff --git a/blazorbootstrap/Models/ToastMessage.cs b/blazorbootstrap/Models/ToastMessage.cs new file mode 100644 index 000000000..25482cdf9 --- /dev/null +++ b/blazorbootstrap/Models/ToastMessage.cs @@ -0,0 +1,110 @@ +namespace BlazorBootstrap; + +public class ToastMessage : IEquatable +{ + #region Constructors + + public ToastMessage() + { + Id = Guid.NewGuid(); + } + + public ToastMessage(ToastType type, string message) + { + Id = Guid.NewGuid(); + Type = type; + Message = message; + } + + public ToastMessage(ToastType type, string title, string message) + { + Id = Guid.NewGuid(); + Type = type; + Title = title; + Message = message; + } + + public ToastMessage(ToastType type, IconName iconName, string title, string message) + { + Id = Guid.NewGuid(); + Type = type; + IconName = iconName; + Title = title; + Message = message; + } + + public ToastMessage(ToastType type, string customIconName, string title, string message) + { + Id = Guid.NewGuid(); + Type = type; + CustomIconName = customIconName; + Title = title; + Message = message; + } + + public ToastMessage(ToastType type, IconName iconName, string title, string helpText, string message) + { + Id = Guid.NewGuid(); + Type = type; + IconName = iconName; + Title = title; + HelpText = helpText; + Message = message; + } + + public ToastMessage(ToastType type, string customIconName, string title, string helpText, string message) + { + Id = Guid.NewGuid(); + Type = type; + CustomIconName = customIconName; + Title = title; + HelpText = helpText; + Message = message; + } + + public ToastMessage(ToastType type, string customIconName, string title, string helpText, string message, bool autoHide) + { + Id = Guid.NewGuid(); + Type = type; + CustomIconName = customIconName; + Title = title; + HelpText = helpText; + Message = message; + AutoHide = autoHide; + } + + #endregion + + #region Methods + + public bool Equals(ToastMessage? other) => other != null && Id.Equals(other?.Id); + + internal void SetElementId(string elementId) => ElementId = elementId; + + #endregion + + #region Properties, Indexers + + public bool AutoHide { get; set; } + + /// + /// Specify custom icons of your own, like fontawesome. Example: 'fas fa-alarm-clock' + /// + public string? CustomIconName { get; set; } + + internal string? ElementId { get; private set; } + + public string? HelpText { get; set; } + + public IconName IconName { get; set; } + + internal Guid Id { get; } + + public string? Message { get; set; } + + public string? Title { get; set; } + + public ToastType Type { get; set; } + + #endregion +} diff --git a/blazorbootstrap/Services/BreadcrumbService.cs b/blazorbootstrap/Services/BreadcrumbService.cs new file mode 100644 index 000000000..b0bf87f93 --- /dev/null +++ b/blazorbootstrap/Services/BreadcrumbService.cs @@ -0,0 +1,16 @@ +namespace BlazorBootstrap; + +public class BreadcrumbService +{ + #region Events + + internal event Action> OnNotify = default!; + + #endregion + + #region Methods + + public void Notify(List items) => OnNotify?.Invoke(items); + + #endregion +} diff --git a/blazorbootstrap/Services/ModalService.cs b/blazorbootstrap/Services/ModalService.cs new file mode 100644 index 000000000..43f0a6ba6 --- /dev/null +++ b/blazorbootstrap/Services/ModalService.cs @@ -0,0 +1,62 @@ +namespace BlazorBootstrap; + +public class ModalService +{ + #region Events + + /// + /// Event that is raised when the modal is shown. + /// + internal event Func OnShow = default!; + + #endregion + + #region Fields and Constants + + /// + /// Event that is raised when the modal is hidden. + /// + internal Action OnHide = default!; + + #endregion + + #region Methods + + /// + /// Shows the modal. + /// + /// The modal options. + /// A task that represents the asynchronous operation. + public Task ShowAsync(ModalOption modalOption) + { + OnShow?.Invoke(modalOption); + + return Task.CompletedTask; + } + + /// + /// Shows the modal and calls the specified callback action when it is hidden. + /// + /// The modal options. + /// The callback action. + /// A task that represents the asynchronous operation. + public Task ShowAsync(ModalOption modalOption, Action callbackAction) + { + OnHide = callbackAction; + + OnShow?.Invoke(modalOption); + + return Task.CompletedTask; + } + + /// + /// Called when the modal is closed. + /// + internal void OnClose() + { + OnHide?.Invoke(); + OnHide = null!; + } + + #endregion +} diff --git a/blazorbootstrap/Services/PreloadService.cs b/blazorbootstrap/Services/PreloadService.cs new file mode 100644 index 000000000..a645281a3 --- /dev/null +++ b/blazorbootstrap/Services/PreloadService.cs @@ -0,0 +1,19 @@ +namespace BlazorBootstrap; + +public class PreloadService +{ + #region Events + + internal event Action OnHide = default!; + internal event Action OnShow = default!; + + #endregion + + #region Methods + + public void Hide() => OnHide?.Invoke(); + + public void Show(SpinnerColor spinnerColor = SpinnerColor.Light, string? loadingText = null) => OnShow?.Invoke(spinnerColor, loadingText); + + #endregion +} diff --git a/blazorbootstrap/Services/ToastService.cs b/blazorbootstrap/Services/ToastService.cs new file mode 100644 index 000000000..4e18c94eb --- /dev/null +++ b/blazorbootstrap/Services/ToastService.cs @@ -0,0 +1,16 @@ +namespace BlazorBootstrap; + +public class ToastService +{ + #region Events + + internal event Action OnNotify = default!; + + #endregion + + #region Methods + + public void Notify(ToastMessage toastMessage) => OnNotify?.Invoke(toastMessage); + + #endregion +} diff --git a/blazorbootstrap/Usings.cs b/blazorbootstrap/Usings.cs new file mode 100644 index 000000000..d7bab412e --- /dev/null +++ b/blazorbootstrap/Usings.cs @@ -0,0 +1,11 @@ +global using Microsoft.AspNetCore.Components; +global using Microsoft.AspNetCore.Components.Forms; +global using Microsoft.AspNetCore.Components.Routing; +global using Microsoft.AspNetCore.Components.Web; +global using Microsoft.JSInterop; +global using System.Buffers; +global using System.Drawing; +global using System.Globalization; +global using System.Linq.Expressions; +global using System.Text; +global using System.Text.Json.Serialization; diff --git a/blazorbootstrap/Utilities/BootstrapIconProvider.cs b/blazorbootstrap/Utilities/BootstrapIconProvider.cs new file mode 100644 index 000000000..1685316ec --- /dev/null +++ b/blazorbootstrap/Utilities/BootstrapIconProvider.cs @@ -0,0 +1,2108 @@ +namespace BlazorBootstrap; + +public static class BootstrapIconProvider +{ + #region Methods + + /// + /// The prefix for all Bootstrap icons. + /// + public static string Icon() + { + return "bi"; + } + + /// + /// Returns the CSS class for the specified icon name. + /// + /// The icon name. + /// The CSS class for the icon. + public static string Icon(IconName iconName) + { + return $"{Icon()}-{ToIconName(iconName)}"; + } + + /// + /// Returns the CSS class for the specified icon size. + /// + /// The icon size. + /// The CSS class for the icon size, or null if the size is not supported. + public static string? IconSize(IconSize iconSize) + { + return iconSize switch + { + BlazorBootstrap.IconSize.x1 => "fs-1", + BlazorBootstrap.IconSize.x2 => "fs-2", + BlazorBootstrap.IconSize.x3 => "fs-3", + BlazorBootstrap.IconSize.x4 => "fs-4", + BlazorBootstrap.IconSize.x5 => "fs-5", + BlazorBootstrap.IconSize.x6 => "fs-6", + _ => null + }; + } + + /// + /// Converts an icon name to its corresponding CSS class name. + /// + /// The icon name. + /// The CSS class name for the icon. + public static string ToIconName(IconName iconName) + { + return iconName switch + { + IconName.Activity => "activity", + IconName.Airplane => "airplane", + IconName.AirplaneEngines => "airplane-engines", + IconName.AirplaneEnginesFill => "airplane-engines-fill", + IconName.AirplaneFill => "airplane-fill", + IconName.Alarm => "alarm", + IconName.AlarmFill => "alarm-fill", + IconName.Alexa => "alexa", + IconName.AlignBottom => "align-bottom", + IconName.AlignCenter => "align-center", + IconName.AlignEnd => "align-end", + IconName.AlignMiddle => "align-middle", + IconName.AlignStart => "align-start", + IconName.AlignTop => "align-top", + IconName.Alipay => "alipay", + IconName.Alphabet => "alphabet", + IconName.AlphabetUppercase => "alphabet-uppercase", + IconName.Alt => "alt", + IconName.Amazon => "amazon", + IconName.AMD => "amd", + IconName.Android => "android", + IconName.Android2 => "android2", + IconName.App => "app", + IconName.AppIndicator => "app-indicator", + IconName.Apple => "apple", + IconName.Archive => "archive", + IconName.ArchiveFill => "archive-fill", + IconName.Arrow90DegDown => "arrow-90deg-down", + IconName.Arrow90DegLeft => "arrow-90deg-left", + IconName.Arrow90DegRight => "arrow-90deg-right", + IconName.Arrow90DegUp => "arrow-90deg-up", + IconName.ArrowBarDown => "arrow-bar-down", + IconName.ArrowBarLeft => "arrow-bar-left", + IconName.ArrowBarRight => "arrow-bar-right", + IconName.ArrowBarUp => "arrow-bar-up", + IconName.ArrowClockwise => "arrow-clockwise", + IconName.ArrowCounterclockwise => "arrow-counterclockwise", + IconName.ArrowDown => "arrow-down", + IconName.ArrowDownCircle => "arrow-down-circle", + IconName.ArrowDownCircleFill => "arrow-down-circle-fill", + IconName.ArrowDownLeft => "arrow-down-left", + IconName.ArrowDownLeftCircle => "arrow-down-left-circle", + IconName.ArrowDownLeftCircleFill => "arrow-down-left-circle-fill", + IconName.ArrowDownLeftSquare => "arrow-down-left-square", + IconName.ArrowDownLeftSquareFill => "arrow-down-left-square-fill", + IconName.ArrowDownRight => "arrow-down-right", + IconName.ArrowDownRightCircle => "arrow-down-right-circle", + IconName.ArrowDownRightCircleFill => "arrow-down-right-circle-fill", + IconName.ArrowDownRightSquare => "arrow-down-right-square", + IconName.ArrowDownRightSquareFill => "arrow-down-right-square-fill", + IconName.ArrowDownShort => "arrow-down-short", + IconName.ArrowDownSquare => "arrow-down-square", + IconName.ArrowDownSquareFill => "arrow-down-square-fill", + IconName.ArrowDownUp => "arrow-down-up", + IconName.ArrowLeft => "arrow-left", + IconName.ArrowLeftCircle => "arrow-left-circle", + IconName.ArrowLeftCircleFill => "arrow-left-circle-fill", + IconName.ArrowLeftRight => "arrow-left-right", + IconName.ArrowLeftShort => "arrow-left-short", + IconName.ArrowLeftSquare => "arrow-left-square", + IconName.ArrowLeftSquareFill => "arrow-left-square-fill", + IconName.ArrowRepeat => "arrow-repeat", + IconName.ArrowReturnLeft => "arrow-return-left", + IconName.ArrowReturnRight => "arrow-return-right", + IconName.ArrowRight => "arrow-right", + IconName.ArrowRightCircle => "arrow-right-circle", + IconName.ArrowRightCircleFill => "arrow-right-circle-fill", + IconName.ArrowRightShort => "arrow-right-short", + IconName.ArrowRightSquare => "arrow-right-square", + IconName.ArrowRightSquareFill => "arrow-right-square-fill", + IconName.Arrows => "arrows", + IconName.ArrowsAngleContract => "arrows-angle-contract", + IconName.ArrowsAngleExpand => "arrows-angle-expand", + IconName.ArrowsCollapse => "arrows-collapse", + IconName.ArrowsCollapseVertical => "arrows-collapse-vertical", + IconName.ArrowsExpand => "arrows-expand", + IconName.ArrowsExpandVertical => "arrows-expand-vertical", + IconName.ArrowsFullscreen => "arrows-fullscreen", + IconName.ArrowsMove => "arrows-move", + IconName.ArrowsVertical => "arrows-vertical", + IconName.ArrowThroughHeart => "arrow-through-heart", + IconName.ArrowThroughHeartFill => "arrow-through-heart-fill", + IconName.ArrowUp => "arrow-up", + IconName.ArrowUpCircle => "arrow-up-circle", + IconName.ArrowUpCircleFill => "arrow-up-circle-fill", + IconName.ArrowUpLeft => "arrow-up-left", + IconName.ArrowUpLeftCircle => "arrow-up-left-circle", + IconName.ArrowUpLeftCircleFill => "arrow-up-left-circle-fill", + IconName.ArrowUpLeftSquare => "arrow-up-left-square", + IconName.ArrowUpLeftSquareFill => "arrow-up-left-square-fill", + IconName.ArrowUpRight => "arrow-up-right", + IconName.ArrowUpRightCircle => "arrow-up-right-circle", + IconName.ArrowUpRightCircleFill => "arrow-up-right-circle-fill", + IconName.ArrowUpRightSquare => "arrow-up-right-square", + IconName.ArrowUpRightSquareFill => "arrow-up-right-square-fill", + IconName.ArrowUpShort => "arrow-up-short", + IconName.ArrowUpSquare => "arrow-up-square", + IconName.ArrowUpSquareFill => "arrow-up-square-fill", + IconName.AspectRatio => "aspect-ratio", + IconName.AspectRatioFill => "aspect-ratio-fill", + IconName.Asterisk => "asterisk", + IconName.At => "at", + IconName.Award => "award", + IconName.AwardFill => "award-fill", + IconName.Back => "back", + IconName.Backpack => "backpack", + IconName.Backpack2 => "backpack2", + IconName.Backpack2Fill => "backpack2-fill", + IconName.Backpack3 => "backpack3", + IconName.Backpack3Fill => "backpack3-fill", + IconName.Backpack4 => "backpack4", + IconName.Backpack4Fill => "backpack4-fill", + IconName.BackpackFill => "backpack-fill", + IconName.Backspace => "backspace", + IconName.BackspaceFill => "backspace-fill", + IconName.BackspaceReverse => "backspace-reverse", + IconName.BackspaceReverseFill => "backspace-reverse-fill", + IconName.Badge3D => "badge-3d", + IconName.Badge3DFill => "badge-3d-fill", + IconName.Badge4K => "badge-4k", + IconName.Badge4KFill => "badge-4k-fill", + IconName.Badge8K => "badge-8k", + IconName.Badge8KFill => "badge-8k-fill", + IconName.BadgeAd => "badge-ad", + IconName.BadgeAdFill => "badge-ad-fill", + IconName.BadgeAr => "badge-ar", + IconName.BadgeArFill => "badge-ar-fill", + IconName.BadgeCc => "badge-cc", + IconName.BadgeCcFill => "badge-cc-fill", + IconName.BadgeHd => "badge-hd", + IconName.BadgeHdFill => "badge-hd-fill", + IconName.BadgeSd => "badge-sd", + IconName.BadgeSdFill => "badge-sd-fill", + IconName.BadgeTm => "badge-tm", + IconName.BadgeTmFill => "badge-tm-fill", + IconName.BadgeVo => "badge-vo", + IconName.BadgeVoFill => "badge-vo-fill", + IconName.BadgeVr => "badge-vr", + IconName.BadgeVrFill => "badge-vr-fill", + IconName.BadgeWc => "badge-wc", + IconName.BadgeWcFill => "badge-wc-fill", + IconName.Bag => "bag", + IconName.BagCheck => "bag-check", + IconName.BagCheckFill => "bag-check-fill", + IconName.BagDash => "bag-dash", + IconName.BagDashFill => "bag-dash-fill", + IconName.BagFill => "bag-fill", + IconName.BagHeart => "bag-heart", + IconName.BagHeartFill => "bag-heart-fill", + IconName.BagPlus => "bag-plus", + IconName.BagPlusFill => "bag-plus-fill", + IconName.BagX => "bag-x", + IconName.BagXFill => "bag-x-fill", + IconName.Balloon => "balloon", + IconName.BalloonFill => "balloon-fill", + IconName.BalloonHeart => "balloon-heart", + IconName.BalloonHeartFill => "balloon-heart-fill", + IconName.Ban => "ban", + IconName.Bandaid => "bandaid", + IconName.BandaidFill => "bandaid-fill", + IconName.BanFill => "ban-fill", + IconName.Bank => "bank", + IconName.Bank2 => "bank2", + IconName.BarChart => "bar-chart", + IconName.BarChartFill => "bar-chart-fill", + IconName.BarChartLine => "bar-chart-line", + IconName.BarChartLineFill => "bar-chart-line-fill", + IconName.BarChartSteps => "bar-chart-steps", + IconName.Basket => "basket", + IconName.Basket2 => "basket2", + IconName.Basket2Fill => "basket2-fill", + IconName.Basket3 => "basket3", + IconName.Basket3Fill => "basket3-fill", + IconName.BasketFill => "basket-fill", + IconName.Battery => "battery", + IconName.BatteryCharging => "battery-charging", + IconName.BatteryFull => "battery-full", + IconName.BatteryHalf => "battery-half", + IconName.Behance => "behance", + IconName.Bell => "bell", + IconName.BellFill => "bell-fill", + IconName.BellSlash => "bell-slash", + IconName.BellSlashFill => "bell-slash-fill", + IconName.Bezier => "bezier", + IconName.Bezier2 => "bezier2", + IconName.Bicycle => "bicycle", + IconName.Bing => "bing", + IconName.Binoculars => "binoculars", + IconName.BinocularsFill => "binoculars-fill", + IconName.BlockquoteLeft => "blockquote-left", + IconName.BlockquoteRight => "blockquote-right", + IconName.Bluetooth => "bluetooth", + IconName.BodyText => "body-text", + IconName.Book => "book", + IconName.BookFill => "book-fill", + IconName.BookHalf => "book-half", + IconName.Bookmark => "bookmark", + IconName.BookmarkCheck => "bookmark-check", + IconName.BookmarkCheckFill => "bookmark-check-fill", + IconName.BookmarkDash => "bookmark-dash", + IconName.BookmarkDashFill => "bookmark-dash-fill", + IconName.BookmarkFill => "bookmark-fill", + IconName.BookmarkHeart => "bookmark-heart", + IconName.BookmarkHeartFill => "bookmark-heart-fill", + IconName.BookmarkPlus => "bookmark-plus", + IconName.BookmarkPlusFill => "bookmark-plus-fill", + IconName.Bookmarks => "bookmarks", + IconName.BookmarksFill => "bookmarks-fill", + IconName.BookmarkStar => "bookmark-star", + IconName.BookmarkStarFill => "bookmark-star-fill", + IconName.BookmarkX => "bookmark-x", + IconName.BookmarkXFill => "bookmark-x-fill", + IconName.Bookshelf => "bookshelf", + IconName.Boombox => "boombox", + IconName.BoomboxFill => "boombox-fill", + IconName.Bootstrap => "bootstrap", + IconName.BootstrapFill => "bootstrap-fill", + IconName.BootstrapReboot => "bootstrap-reboot", + IconName.Border => "border", + IconName.BorderAll => "border-all", + IconName.BorderBottom => "border-bottom", + IconName.BorderCenter => "border-center", + IconName.BorderInner => "border-inner", + IconName.BorderLeft => "border-left", + IconName.BorderMiddle => "border-middle", + IconName.BorderOuter => "border-outer", + IconName.BorderRight => "border-right", + IconName.BorderStyle => "border-style", + IconName.BorderTop => "border-top", + IconName.BorderWidth => "border-width", + IconName.BoundingBox => "bounding-box", + IconName.BoundingBoxCircles => "bounding-box-circles", + IconName.Box => "box", + IconName.Box2 => "box2", + IconName.Box2Fill => "box2-fill", + IconName.Box2Heart => "box2-heart", + IconName.Box2HeartFill => "box2-heart-fill", + IconName.BoxArrowDown => "box-arrow-down", + IconName.BoxArrowDownLeft => "box-arrow-down-left", + IconName.BoxArrowDownRight => "box-arrow-down-right", + IconName.BoxArrowInDown => "box-arrow-in-down", + IconName.BoxArrowInDownLeft => "box-arrow-in-down-left", + IconName.BoxArrowInDownRight => "box-arrow-in-down-right", + IconName.BoxArrowInLeft => "box-arrow-in-left", + IconName.BoxArrowInRight => "box-arrow-in-right", + IconName.BoxArrowInUp => "box-arrow-in-up", + IconName.BoxArrowInUpLeft => "box-arrow-in-up-left", + IconName.BoxArrowInUpRight => "box-arrow-in-up-right", + IconName.BoxArrowLeft => "box-arrow-left", + IconName.BoxArrowRight => "box-arrow-right", + IconName.BoxArrowUp => "box-arrow-up", + IconName.BoxArrowUpLeft => "box-arrow-up-left", + IconName.BoxArrowUpRight => "box-arrow-up-right", + IconName.Boxes => "boxes", + IconName.BoxSeam => "box-seam", + IconName.BoxSeamFill => "box-seam-fill", + IconName.Braces => "braces", + IconName.BracesAsterisk => "braces-asterisk", + IconName.Bricks => "bricks", + IconName.Briefcase => "briefcase", + IconName.BriefcaseFill => "briefcase-fill", + IconName.BrightnessAltHigh => "brightness-alt-high", + IconName.BrightnessAltHighFill => "brightness-alt-high-fill", + IconName.BrightnessAltLow => "brightness-alt-low", + IconName.BrightnessAltLowFill => "brightness-alt-low-fill", + IconName.BrightnessHigh => "brightness-high", + IconName.BrightnessHighFill => "brightness-high-fill", + IconName.BrightnessLow => "brightness-low", + IconName.BrightnessLowFill => "brightness-low-fill", + IconName.Brilliance => "brilliance", + IconName.Broadcast => "broadcast", + IconName.BroadcastPin => "broadcast-pin", + IconName.BrowserChrome => "browser-chrome", + IconName.BrowserEdge => "browser-edge", + IconName.BrowserFirefox => "browser-firefox", + IconName.BrowserSafari => "browser-safari", + IconName.Brush => "brush", + IconName.BrushFill => "brush-fill", + IconName.Bucket => "bucket", + IconName.BucketFill => "bucket-fill", + IconName.Bug => "bug", + IconName.BugFill => "bug-fill", + IconName.Building => "building", + IconName.BuildingAdd => "building-add", + IconName.BuildingCheck => "building-check", + IconName.BuildingDash => "building-dash", + IconName.BuildingDown => "building-down", + IconName.BuildingExclamation => "building-exclamation", + IconName.BuildingFill => "building-fill", + IconName.BuildingFillAdd => "building-fill-add", + IconName.BuildingFillCheck => "building-fill-check", + IconName.BuildingFillDash => "building-fill-dash", + IconName.BuildingFillDown => "building-fill-down", + IconName.BuildingFillExclamation => "building-fill-exclamation", + IconName.BuildingFillGear => "building-fill-gear", + IconName.BuildingFillLock => "building-fill-lock", + IconName.BuildingFillSlash => "building-fill-slash", + IconName.BuildingFillUp => "building-fill-up", + IconName.BuildingFillX => "building-fill-x", + IconName.BuildingGear => "building-gear", + IconName.BuildingLock => "building-lock", + IconName.Buildings => "buildings", + IconName.BuildingsFill => "buildings-fill", + IconName.BuildingSlash => "building-slash", + IconName.BuildingUp => "building-up", + IconName.BuildingX => "building-x", + IconName.Bullseye => "bullseye", + IconName.BusFront => "bus-front", + IconName.BusFrontFill => "bus-front-fill", + IconName.Cake => "cake", + IconName.Cake2 => "cake2", + IconName.Cake2Fill => "cake2-fill", + IconName.CakeFill => "cake-fill", + IconName.Calculator => "calculator", + IconName.CalculatorFill => "calculator-fill", + IconName.Calendar => "calendar", + IconName.Calendar2 => "​calendar2", + IconName.Calendar2Check => "​calendar2-check", + IconName.Calendar2CheckFill => "calendar2-check-fill", + IconName.Calendar2Date => "calendar2-date", + IconName.Calendar2DateFill => "calendar2-date-fill", + IconName.Calendar2Day => "calendar2-day", + IconName.Calendar2DayFill => "calendar2-day-fill", + IconName.Calendar2Event => "calendar2-event", + IconName.Calendar2EventFill => "calendar2-event-fill", + IconName.Calendar2Fill => "calendar2-fill", + IconName.Calendar2Heart => "calendar2-heart", + IconName.Calendar2HeartFill => "calendar2-heart-fill", + IconName.Calendar2Minus => "calendar2-minus", + IconName.Calendar2MinusFill => "calendar2-minus-fill", + IconName.Calendar2Month => "calendar2-month", + IconName.Calendar2MonthFill => "calendar2-month-fill", + IconName.Calendar2Plus => "calendar2-plus", + IconName.Calendar2PlusFill => "calendar2-plus-fill", + IconName.Calendar2Range => "calendar2-range", + IconName.Calendar2RangeFill => "calendar2-range-fill", + IconName.Calendar2Week => "calendar2-week", + IconName.Calendar2WeekFill => "calendar2-week-fill", + IconName.Calendar2X => "calendar2-x", + IconName.Calendar2XFill => "calendar2-x-fill", + IconName.Calendar3 => "calendar3", + IconName.Calendar3Event => "calendar3-event", + IconName.Calendar3EventFill => "calendar3-event-fill", + IconName.Calendar3Fill => "calendar3-fill", + IconName.Calendar3Range => "calendar3-range", + IconName.Calendar3RangeFill => "calendar3-range-fill", + IconName.Calendar3Week => "calendar3-week", + IconName.Calendar3WeekFill => "calendar3-week-fill", + IconName.Calendar4 => "calendar4", + IconName.Calendar4Event => "calendar4-event", + IconName.Calendar4Range => "calendar4-range", + IconName.Calendar4Week => "calendar4-week", + IconName.CalendarCheck => "calendar-check", + IconName.CalendarCheckFill => "calendar-check-fill", + IconName.CalendarDate => "calendar-date", + IconName.CalendarDateFill => "calendar-date-fill", + IconName.CalendarDay => "calendar-day", + IconName.CalendarDayFill => "calendar-day-fill", + IconName.CalendarEvent => "calendar-event", + IconName.CalendarEventFill => "calendar-event-fill", + IconName.CalendarFill => "calendar-fill", + IconName.CalendarHeart => "calendar-heart", + IconName.CalendarHeartFill => "calendar-heart-fill", + IconName.CalendarMinus => "calendar-minus", + IconName.CalendarMinusFill => "calendar-minus-fill", + IconName.CalendarMonth => "calendar-month", + IconName.CalendarMonthFill => "calendar-month-fill", + IconName.CalendarPlus => "calendar-plus", + IconName.CalendarPlusFill => "calendar-plus-fill", + IconName.CalendarRange => "calendar-range", + IconName.CalendarRangeFill => "calendar-range-fill", + IconName.CalendarWeek => "calendar-week", + IconName.CalendarWeekFill => "calendar-week-fill", + IconName.CalendarX => "calendar-x", + IconName.CalendarXFill => "calendar-x-fill", + IconName.Camera => "camera", + IconName.Camera2 => "camera2", + IconName.CameraFill => "camera-fill", + IconName.CameraReels => "camera-reels", + IconName.CameraReelsFill => "camera-reels-fill", + IconName.CameraVideo => "camera-video", + IconName.CameraVideoFill => "camera-video-fill", + IconName.CameraVideoOff => "camera-video-off", + IconName.CameraVideoOffFill => "camera-video-off-fill", + IconName.Capslock => "capslock", + IconName.CapslockFill => "capslock-fill", + IconName.Capsule => "capsule", + IconName.CapsulePill => "capsule-pill", + IconName.CardChecklist => "card-checklist", + IconName.CardHeading => "card-heading", + IconName.CardImage => "card-image", + IconName.CardList => "card-list", + IconName.CardText => "card-text", + IconName.CaretDown => "caret-down", + IconName.CaretDownFill => "caret-down-fill", + IconName.CaretDownSquare => "caret-down-square", + IconName.CaretDownSquareFill => "caret-down-square-fill", + IconName.CaretLeft => "caret-left", + IconName.CaretLeftFill => "caret-left-fill", + IconName.CaretLeftSquare => "caret-left-square", + IconName.CaretLeftSquareFill => "caret-left-square-fill", + IconName.CaretRight => "caret-right", + IconName.CaretRightFill => "caret-right-fill", + IconName.CaretRightSquare => "caret-right-square", + IconName.CaretRightSquareFill => "caret-right-square-fill", + IconName.CaretUp => "caret-up", + IconName.CaretUpFill => "caret-up-fill", + IconName.CaretUpSquare => "caret-up-square", + IconName.CaretUpSquareFill => "caret-up-square-fill", + IconName.CarFront => "car-front", + IconName.CarFrontFill => "car-front-fill", + IconName.Cart => "cart", + IconName.Cart2 => "cart2", + IconName.Cart3 => "cart3", + IconName.Cart4 => "cart4", + IconName.CartCheck => "cart-check", + IconName.CartCheckFill => "cart-check-fill", + IconName.CartDash => "cart-dash", + IconName.CartDashFill => "cart-dash-fill", + IconName.CartFill => "cart-fill", + IconName.CartPlus => "cart-plus", + IconName.CartPlusFill => "cart-plus-fill", + IconName.CartX => "cart-x", + IconName.CartXFill => "cart-x-fill", + IconName.Cash => "cash", + IconName.CashCoin => "cash-coin", + IconName.CashStack => "cash-stack", + IconName.Cassette => "cassette", + IconName.CassetteFill => "cassette-fill", + IconName.Cast => "cast", + IconName.CCCircle => "cc-circle", + IconName.CCCircleFill => "cc-circle-fill", + IconName.CCircle => "c-circle", + IconName.CCircleFill => "c-circle-fill", + IconName.CCircleSquare => "c-square", + IconName.CCircleSquareFill => "c-square-fill", + IconName.CCSquare => "cc-square", + IconName.CCSquareFill => "cc-square-fill", + IconName.Chat => "chat", + IconName.ChatDots => "chat-dots", + IconName.ChatDotsFill => "chat-dots-fill", + IconName.ChatFill => "chat-fill", + IconName.ChatHeart => "chat-heart", + IconName.ChatHeartFill => "chat-heart-fill", + IconName.ChatLeft => "chat-left", + IconName.ChatLeftDots => "chat-left-dots", + IconName.ChatLeftDotsFill => "chat-left-dots-fill", + IconName.ChatLeftFill => "chat-left-fill", + IconName.ChatLeftHeart => "chat-left-heart", + IconName.ChatLeftHeartFill => "chat-left-heart-fill", + IconName.ChatLeftQuote => "chat-left-quote", + IconName.ChatLeftQuoteFill => "chat-left-quote-fill", + IconName.ChatLeftText => "chat-left-text", + IconName.ChatLeftTextFill => "chat-left-text-fill", + IconName.ChatQuote => "chat-quote", + IconName.ChatQuoteFill => "chat-quote-fill", + IconName.ChatRight => "chat-right", + IconName.ChatRightDots => "chat-right-dots", + IconName.ChatRightDotsFill => "chat-right-dots-fill", + IconName.ChatRightFill => "chat-right-fill", + IconName.ChatRightHeart => "chat-right-heart", + IconName.ChatRightHeartFill => "chat-right-heart-fill", + IconName.ChatRightQuote => "chat-right-quote", + IconName.ChatRightQuoteFill => "chat-right-quote-fill", + IconName.ChatRightText => "chat-right-text", + IconName.ChatRightTextFill => "chat-right-text-fill", + IconName.ChatSquare => "chat-square", + IconName.ChatSquareDots => "chat-square-dots", + IconName.ChatSquareDotsFill => "chat-square-dots-fill", + IconName.ChatSquareFill => "chat-square-fill", + IconName.ChatSquareHeart => "chat-square-heart", + IconName.ChatSquareHeartFill => "chat-square-heart-fill", + IconName.ChatSquareQuote => "chat-square-quote", + IconName.ChatSquareQuoteFill => "chat-square-quote-fill", + IconName.ChatSquareText => "chat-square-text", + IconName.ChatSquareTextFill => "chat-square-text-fill", + IconName.ChatText => "chat-text", + IconName.ChatTextFill => "chat-text-fill", + IconName.Check => "check", + IconName.Check2 => "check2", + IconName.Check2All => "check2-all", + IconName.Check2Circle => "check2-circle", + IconName.Check2Square => "check2-square", + IconName.CheckAll => "check-all", + IconName.CheckCircle => "check-circle", + IconName.CheckCircleFill => "check-circle-fill", + IconName.CheckLg => "check-lg", + IconName.CheckSquare => "check-square", + IconName.CheckSquareFill => "check-square-fill", + IconName.ChevronBarContract => "chevron-bar-contract", + IconName.ChevronBarDown => "chevron-bar-down", + IconName.ChevronBarExpand => "chevron-bar-expand", + IconName.ChevronBarLeft => "chevron-bar-left", + IconName.ChevronBarRight => "chevron-bar-right", + IconName.ChevronBarUp => "chevron-bar-up", + IconName.ChevronCompactDown => "chevron-compact-down", + IconName.ChevronCompactLeft => "chevron-compact-left", + IconName.ChevronCompactRight => "chevron-compact-right", + IconName.ChevronCompactUp => "chevron-compact-up", + IconName.ChevronContract => "chevron-contract", + IconName.ChevronDoubleDown => "chevron-double-down", + IconName.ChevronDoubleLeft => "chevron-double-left", + IconName.ChevronDoubleRight => "chevron-double-right", + IconName.ChevronDoubleUp => "chevron-double-up", + IconName.ChevronDown => "chevron-down", + IconName.ChevronExpand => "chevron-expand", + IconName.ChevronLeft => "chevron-left", + IconName.ChevronRight => "chevron-right", + IconName.ChevronUp => "chevron-up", + IconName.Circle => "circle", + IconName.CircleFill => "circle-fill", + IconName.CircleHalf => "circle-half", + IconName.CircleSquare => "circle-square", + IconName.Clipboard => "clipboard", + IconName.Clipboard2 => "clipboard2", + IconName.Clipboard2Check => "clipboard2-check", + IconName.Clipboard2CheckFill => "clipboard2-check-fill", + IconName.Clipboard2Data => "clipboard2-data", + IconName.Clipboard2DataFill => "clipboard2-data-fill", + IconName.Clipboard2Fill => "clipboard2-fill", + IconName.Clipboard2Heart => "clipboard2-heart", + IconName.Clipboard2HeartFill => "clipboard2-heart-fill", + IconName.Clipboard2Minus => "clipboard2-minus", + IconName.Clipboard2MinusFill => "clipboard2-minus-fill", + IconName.Clipboard2Plus => "clipboard2-plus", + IconName.Clipboard2PlusFill => "clipboard2-plus-fill", + IconName.Clipboard2Pulse => "clipboard2-pulse", + IconName.Clipboard2PulseFill => "clipboard2-pulse-fill", + IconName.Clipboard2X => "clipboard2-x", + IconName.Clipboard2XFill => "clipboard2-x-fill", + IconName.ClipboardCheck => "clipboard-check", + IconName.ClipboardCheckFill => "clipboard-check-fill", + IconName.ClipboardData => "clipboard-data", + IconName.ClipboardDataFill => "clipboard-data-fill", + IconName.ClipboardFill => "clipboard-fill", + IconName.ClipboardHeart => "clipboard-heart", + IconName.ClipboardHeartFill => "clipboard-heart-fill", + IconName.ClipboardMinus => "clipboard-minus", + IconName.ClipboardMinusFill => "clipboard-minus-fill", + IconName.ClipboardPlus => "clipboard-plus", + IconName.ClipboardPlusFill => "clipboard-plus-fill", + IconName.ClipboardPulse => "clipboard-pulse", + IconName.ClipboardX => "clipboard-x", + IconName.ClipboardXFill => "clipboard-x-fill", + IconName.Clock => "clock", + IconName.ClockFill => "clock-fill", + IconName.ClockHistory => "clock-history", + IconName.Cloud => "cloud", + IconName.CloudArrowDown => "cloud-arrow-down", + IconName.CloudArrowDownFill => "cloud-arrow-down-fill", + IconName.CloudArrowUp => "cloud-arrow-up", + IconName.CloudArrowUpFill => "cloud-arrow-up-fill", + IconName.CloudCheck => "cloud-check", + IconName.CloudCheckFill => "cloud-check-fill", + IconName.CloudDownload => "cloud-download", + IconName.CloudDownloadFill => "cloud-download-fill", + IconName.CloudDrizzle => "cloud-drizzle", + IconName.CloudDrizzleFill => "cloud-drizzle-fill", + IconName.CloudFill => "cloud-fill", + IconName.CloudFog => "cloud-fog", + IconName.CloudFog2 => "cloud-fog2", + IconName.CloudFog2Fill => "cloud-fog2-fill", + IconName.CloudFogFill => "cloud-fog-fill", + IconName.CloudHail => "cloud-hail", + IconName.CloudHailFill => "cloud-hail-fill", + IconName.CloudHaze => "cloud-haze", + IconName.CloudHaze2 => "cloud-haze2", + IconName.CloudHaze2Fill => "cloud-haze2-fill", + IconName.CloudHazeFill => "cloud-haze-fill", + IconName.CloudLightning => "cloud-lightning", + IconName.CloudLightningFill => "cloud-lightning-fill", + IconName.CloudLightningRain => "cloud-lightning-rain", + IconName.CloudLightningRainFill => "cloud-lightning-rain-fill", + IconName.CloudMinus => "cloud-minus", + IconName.CloudMinusFill => "cloud-minus-fill", + IconName.CloudMoon => "cloud-moon", + IconName.CloudMoonFill => "cloud-moon-fill", + IconName.CloudPlus => "cloud-plus", + IconName.CloudPlusFill => "cloud-plus-fill", + IconName.CloudRain => "cloud-rain", + IconName.CloudRainFill => "cloud-rain-fill", + IconName.CloudRainHeavy => "cloud-rain-heavy", + IconName.CloudRainHeavyFill => "cloud-rain-heavy-fill", + IconName.Clouds => "clouds", + IconName.CloudsFill => "clouds-fill", + IconName.CloudSlash => "cloud-slash", + IconName.CloudSlashFill => "cloud-slash-fill", + IconName.CloudSleet => "cloud-sleet", + IconName.CloudSleetFill => "cloud-sleet-fill", + IconName.CloudSnow => "cloud-snow", + IconName.CloudSnowFill => "cloud-snow-fill", + IconName.CloudSun => "cloud-sun", + IconName.CloudSunFill => "cloud-sun-fill", + IconName.CloudUpload => "cloud-upload", + IconName.CloudUploadFill => "cloud-upload-fill", + IconName.Cloudy => "cloudy", + IconName.CloudyFill => "cloudy-fill", + IconName.Code => "code", + IconName.CodeSlash => "code-slash", + IconName.CodeSquare => "code-square", + IconName.Coin => "coin", + IconName.Collection => "collection", + IconName.CollectionFill => "collection-fill", + IconName.CollectionPlay => "collection-play", + IconName.CollectionPlayFill => "collection-play-fill", + IconName.Columns => "columns", + IconName.ColumnsGap => "columns-gap", + IconName.Command => "command", + IconName.Compass => "compass", + IconName.CompassFill => "compass-fill", + IconName.Cone => "cone", + IconName.ConeStriped => "cone-striped", + IconName.Controller => "controller", + IconName.Cookie => "cookie", + IconName.Copy => "copy", + IconName.Cpu => "cpu", + IconName.CpuFill => "cpu-fill", + IconName.CreditCard => "credit-card", + IconName.CreditCard2Back => "credit-card-2-back", + IconName.CreditCard2BackFill => "credit-card-2-back-fill", + IconName.CreditCard2Front => "credit-card-2-front", + IconName.CreditCard2FrontFill => "credit-card-2-front-fill", + IconName.CreditCardFill => "credit-card-fill", + IconName.Crop => "crop", + IconName.Crosshair => "crosshair", + IconName.Crosshair2 => "crosshair2", + IconName.Cup => "cup", + IconName.CupFill => "cup-fill", + IconName.CupHot => "cup-hot", + IconName.CupHotFill => "cup-hot-fill", + IconName.CupStraw => "cup-straw", + IconName.CurrencyBitcoin => "currency-bitcoin", + IconName.CurrencyDollar => "currency-dollar", + IconName.CurrencyEuro => "currency-euro", + IconName.CurrencyExchange => "currency-exchange", + IconName.CurrencyPound => "currency-pound", + IconName.CurrencyRupee => "currency-rupee", + IconName.CurrencyYen => "currency-yen", + IconName.Cursor => "cursor", + IconName.CursorFill => "cursor-fill", + IconName.CursorText => "cursor-text", + IconName.Dash => "dash", + IconName.DashCircle => "dash-circle", + IconName.DashCircleDotted => "dash-circle-dotted", + IconName.DashCircleFill => "dash-circle-fill", + IconName.DashLg => "dash-lg", + IconName.DashSquare => "dash-square", + IconName.DashSquareDotted => "dash-square-dotted", + IconName.DashSquareFill => "dash-square-fill", + IconName.Database => "database", + IconName.DatabaseAdd => "database-add", + IconName.DatabaseCheck => "database-check", + IconName.DatabaseDash => "database-dash", + IconName.DatabaseDown => "database-down", + IconName.DatabaseExclamation => "database-exclamation", + IconName.DatabaseFill => "database-fill", + IconName.DatabaseFillAdd => "database-fill-add", + IconName.DatabaseFillCheck => "database-fill-check", + IconName.DatabaseFillDash => "database-fill-dash", + IconName.DatabaseFillDown => "database-fill-down", + IconName.DatabaseFillExclamation => "database-fill-exclamation", + IconName.DatabaseFillGear => "database-fill-gear", + IconName.DatabaseFillLock => "database-fill-lock", + IconName.DatabaseFillSlash => "database-fill-slash", + IconName.DatabaseFillUp => "database-fill-up", + IconName.DatabaseFillX => "database-fill-x", + IconName.DatabaseGear => "database-gear", + IconName.DatabaseLock => "database-lock", + IconName.DatabaseSlash => "database-slash", + IconName.DatabaseUp => "database-up", + IconName.DatabaseX => "database-x", + IconName.DeviceHdd => "device-hdd", + IconName.DeviceHddFill => "device-hdd-fill", + IconName.DeviceSsd => "device-ssd", + IconName.DeviceSsdFill => "device-ssd-fill", + IconName.Diagram2 => "diagram-2", + IconName.Diagram2Fill => "diagram-2-fill", + IconName.Diagram3 => "diagram-3", + IconName.Diagram3Fill => "diagram-3-fill", + IconName.Diamond => "diamond", + IconName.DiamondFill => "diamond-fill", + IconName.DiamondHalf => "diamond-half", + IconName.Dice1 => "dice-1", + IconName.Dice1Fill => "dice-1-fill", + IconName.Dice2 => "dice-2", + IconName.Dice2Fill => "dice-2-fill", + IconName.Dice3 => "dice-3", + IconName.Dice3Fill => "dice-3-fill", + IconName.Dice4 => "dice-4", + IconName.Dice4Fill => "dice-4-fill", + IconName.Dice5 => "dice-5", + IconName.Dice5Fill => "dice-5-fill", + IconName.Dice6 => "dice-6", + IconName.Dice6Fill => "dice-6-fill", + IconName.Disc => "disc", + IconName.DiscFill => "disc-fill", + IconName.Discord => "discord", + IconName.Display => "display", + IconName.DisplayFill => "display-fill", + IconName.Displayport => "displayport", + IconName.DisplayportFill => "displayport-fill", + IconName.DistributeHorizontal => "distribute-horizontal", + IconName.DistributeVertical => "distribute-vertical", + IconName.DoorClosed => "door-closed", + IconName.DoorClosedFill => "door-closed-fill", + IconName.DoorOpen => "door-open", + IconName.DoorOpenFill => "door-open-fill", + IconName.Dot => "dot", + IconName.Download => "download", + IconName.Dpad => "dpad", + IconName.DpadFill => "dpad-fill", + IconName.Dribbble => "dribbble", + IconName.Dropbox => "dropbox", + IconName.Droplet => "droplet", + IconName.DropletFill => "droplet-fill", + IconName.DropletHalf => "droplet-half", + IconName.Duffle => "duffle", + IconName.DuffleFill => "duffle-fill", + IconName.Ear => "ear", + IconName.Earbuds => "earbuds", + IconName.EarFill => "ear-fill", + IconName.Easel => "easel", + IconName.Easel2 => "easel2", + IconName.Easel2Fill => "easel2-fill", + IconName.Easel3 => "easel3", + IconName.Easel3Fill => "easel3-fill", + IconName.EaselFill => "easel-fill", + IconName.Egg => "egg", + IconName.EggFill => "egg-fill", + IconName.EggFried => "egg-fried", + IconName.EightCircle => "8-circle", + IconName.EightCircleFill => "8-circle-fill", + IconName.EightSquare => "8-square", + IconName.EightSquareFill => "8-square-fill", + IconName.Eject => "eject", + IconName.EjectFill => "eject-fill", + IconName.EmojiAngry => "emoji-angry", + IconName.EmojiAngryFill => "emoji-angry-fill", + IconName.EmojiAstonished => "emoji-astonished", + IconName.EmojiAstonishedFill => "emoji-astonished-fill", + IconName.EmojiDizzy => "emoji-dizzy", + IconName.EmojiDizzyFill => "emoji-dizzy-fill", + IconName.EmojiExpressionless => "emoji-expressionless", + IconName.EmojiExpressionlessFill => "emoji-expressionless-fill", + IconName.EmojiFrown => "emoji-frown", + IconName.EmojiFrownFill => "emoji-frown-fill", + IconName.EmojiGrimace => "emoji-grimace", + IconName.EmojiGrimaceFill => "emoji-grimace-fill", + IconName.EmojiGrin => "emoji-grimace", + IconName.EmojiGrinFill => "emoji-grimace-fill", + IconName.EmojiHeartEyes => "emoji-heart-eyes", + IconName.EmojiHeartEyesFill => "emoji-heart-eyes-fill", + IconName.EmojiKiss => "emoji-kiss", + IconName.EmojiKissFill => "emoji-kiss-fill", + IconName.EmojiLaughing => "emoji-laughing", + IconName.EmojiLaughingFill => "emoji-laughing-fill", + IconName.EmojiNeutral => "emoji-neutral", + IconName.EmojiNeutralFill => "emoji-neutral-fill", + IconName.EmojiSmile => "emoji-smile", + IconName.EmojiSmileFill => "emoji-smile-fill", + IconName.EmojiSmileUpsideDown => "emoji-smile-upside-down", + IconName.EmojiSmileUpsideDownFill => "emoji-smile-upside-down-fill", + IconName.EmojiSunglasses => "emoji-sunglasses", + IconName.EmojiSunglassesFill => "emoji-sunglasses-fill", + IconName.EmojiSurprise => "emoji-surprise", + IconName.EmojiSurpriseFill => "emoji-surprise-fill", + IconName.EmojiTear => "emoji-tear", + IconName.EmojiTearFill => "emoji-tear-fill", + IconName.EmojiWink => "emoji-wink", + IconName.EmojiWinkFill => "emoji-wink-fill", + IconName.Envelope => "envelope", + IconName.EnvelopeArrowDown => "envelope-arrow-down", + IconName.EnvelopeArrowDownFill => "envelope-arrow-down-fill", + IconName.EnvelopeArrowUp => "envelope-arrow-up", + IconName.EnvelopeArrowUpFill => "envelope-arrow-up-fill", + IconName.EnvelopeAt => "envelope-at", + IconName.EnvelopeAtFill => "envelope-at-fill", + IconName.EnvelopeCheck => "envelope-check", + IconName.EnvelopeCheckFill => "envelope-check-fill", + IconName.EnvelopeDash => "envelope-dash", + IconName.EnvelopeDashFill => "envelope-dash-fill", + IconName.EnvelopeExclamation => "envelope-exclamation", + IconName.EnvelopeExclamationFill => "envelope-exclamation-fill", + IconName.EnvelopeFill => "envelope-fill", + IconName.EnvelopeHeart => "envelope-heart", + IconName.EnvelopeHeartFill => "envelope-heart-fill", + IconName.EnvelopeOpen => "envelope-open", + IconName.EnvelopeOpenFill => "envelope-open-fill", + IconName.EnvelopeOpenHeart => "envelope-open-heart", + IconName.EnvelopeOpenHeartFill => "envelope-open-heart-fill", + IconName.EnvelopePaper => "envelope-paper", + IconName.EnvelopePaperFill => "envelope-paper-fill", + IconName.EnvelopePaperHeart => "envelope-paper-heart", + IconName.EnvelopePaperHeartFill => "envelope-paper-heart-fill", + IconName.EnvelopePlus => "envelope-plus", + IconName.EnvelopePlusFill => "envelope-plus-fill", + IconName.EnvelopeSlash => "envelope-slash", + IconName.EnvelopeSlashFill => "envelope-slash-fill", + IconName.EnvelopeX => "envelope-x", + IconName.EnvelopeXFill => "envelope-x-fill", + IconName.Eraser => "eraser", + IconName.EraserFill => "eraser-fill", + IconName.Escape => "escape", + IconName.Ethernet => "ethernet", + IconName.EVFront => "ev-front", + IconName.EVFrontFill => "ev-front-fill", + IconName.EVStation => "ev-station", + IconName.EVStationFill => "ev-station-fill", + IconName.Exclamation => "exclamation", + IconName.ExclamationCircle => "exclamation-circle", + IconName.ExclamationCircleFill => "exclamation-circle-fill", + IconName.ExclamationDiamond => "exclamation-diamond", + IconName.ExclamationDiamondFill => "exclamation-diamond-fill", + IconName.ExclamationLg => "exclamation-lg", + IconName.ExclamationOctagon => "exclamation-octagon", + IconName.ExclamationOctagonFill => "exclamation-octagon-fill", + IconName.ExclamationSquare => "exclamation-square", + IconName.ExclamationSquareFill => "exclamation-square-fill", + IconName.ExclamationTriangle => "exclamation-triangle", + IconName.ExclamationTriangleFill => "exclamation-triangle-fill", + IconName.Exclude => "exclude", + IconName.Explicit => "explicit", + IconName.ExplicitFill => "explicit-fill", + IconName.Exposure => "exposure", + IconName.Eye => "eye", + IconName.Eyedropper => "eyedropper", + IconName.EyeFill => "eye-fill", + IconName.Eyeglasses => "eyeglasses", + IconName.EyeSlash => "eye-slash", + IconName.EyeSlashFill => "eye-slash-fill", + IconName.Facebook => "facebook", + IconName.Fan => "fan", + IconName.FastForward => "fast-forward", + IconName.FastForwardBtn => "fast-forward-btn", + IconName.FastForwardBtnFill => "fast-forward-btn-fill", + IconName.FastForwardCircle => "fast-forward-circle", + IconName.FastForwardCircleFill => "fast-forward-circle-fill", + IconName.FastForwardFill => "fast-forward-fill", + IconName.Feather => "feather", + IconName.Feather2 => "feather2", + IconName.File => "file", + IconName.FileArrowDown => "file-arrow-down", + IconName.FileArrowDownFill => "file-arrow-down-fill", + IconName.FileArrowUp => "file-arrow-up", + IconName.FileArrowUpFill => "file-arrow-up-fill", + IconName.FileBarGraph => "file-bar-graph", + IconName.FileBarGraphFill => "file-bar-graph-fill", + IconName.FileBinary => "file-binary", + IconName.FileBinaryFill => "file-binary-fill", + IconName.FileBreak => "file-break", + IconName.FileBreakFill => "file-break-fill", + IconName.FileCheck => "file-check", + IconName.FileCheckFill => "file-check-fill", + IconName.FileCode => "file-code", + IconName.FileCodeFill => "file-code-fill", + IconName.FileDiff => "file-diff", + IconName.FileDiffFill => "file-diff-fill", + IconName.FileEarmark => "file-earmark", + IconName.FileEarmarkArrowDown => "file-earmark-arrow-down", + IconName.FileEarmarkArrowDownFill => "file-earmark-arrow-down-fill", + IconName.FileEarmarkArrowUp => "file-earmark-arrow-up", + IconName.FileEarmarkArrowUpFill => "file-earmark-arrow-up-fill", + IconName.FileEarmarkBarGraph => "file-earmark-bar-graph", + IconName.FileEarmarkBarGraphFill => "file-earmark-bar-graph-fill", + IconName.FileEarmarkBinary => "file-earmark-binary", + IconName.FileEarmarkBinaryFill => "file-earmark-binary-fill", + IconName.FileEarmarkBreak => "file-earmark-break", + IconName.FileEarmarkBreakFill => "file-earmark-break-fill", + IconName.FileEarmarkCheck => "file-earmark-check", + IconName.FileEarmarkCheckFill => "file-earmark-check-fill", + IconName.FileEarmarkCode => "file-earmark-code", + IconName.FileEarmarkCodeFill => "file-earmark-code-fill", + IconName.FileEarmarkDiff => "file-earmark-diff", + IconName.FileEarmarkDiffFill => "file-earmark-diff-fill", + IconName.FileEarmarkEasel => "file-earmark-easel", + IconName.FileEarmarkEaselFill => "file-earmark-easel-fill", + IconName.FileEarmarkExcel => "file-earmark-excel", + IconName.FileEarmarkExcelFill => "file-earmark-excel-fill", + IconName.FileEarmarkFill => "file-earmark-fill", + IconName.FileEarmarkFont => "file-earmark-font", + IconName.FileEarmarkFontFill => "file-earmark-font-fill", + IconName.FileEarmarkImage => "file-earmark-image", + IconName.FileEarmarkImageFill => "file-earmark-image-fill", + IconName.FileEarmarkLock => "file-earmark-lock", + IconName.FileEarmarkLock2 => "file-earmark-lock2", + IconName.FileEarmarkLock2Fill => "file-earmark-lock2-fill", + IconName.FileEarmarkLockFill => "file-earmark-lock-fill", + IconName.FileEarmarkMedical => "file-earmark-medical", + IconName.FileEarmarkMedicalFill => "file-earmark-medical-fill", + IconName.FileEarmarkMinus => "file-earmark-minus", + IconName.FileEarmarkMinusFill => "file-earmark-minus-fill", + IconName.FileEarmarkMusic => "file-earmark-music", + IconName.FileEarmarkMusicFill => "file-earmark-music-fill", + IconName.FileEarmarkPdf => "file-earmark-pdf", + IconName.FileEarmarkPdfFill => "file-earmark-pdf-fill", + IconName.FileEarmarkPerson => "file-earmark-person", + IconName.FileEarmarkPersonFill => "file-earmark-person-fill", + IconName.FileEarmarkPlay => "file-earmark-play", + IconName.FileEarmarkPlayFill => "file-earmark-play-fill", + IconName.FileEarmarkPlus => "file-earmark-plus", + IconName.FileEarmarkPlusFill => "file-earmark-plus-fill", + IconName.FileEarmarkPost => "file-earmark-post", + IconName.FileEarmarkPostFill => "file-earmark-post-fill", + IconName.FileEarmarkPpt => "file-earmark-ppt", + IconName.FileEarmarkPptFill => "file-earmark-ppt-fill", + IconName.FileEarmarkRichtext => "file-earmark-richtext", + IconName.FileEarmarkRichtextFill => "file-earmark-richtext-fill", + IconName.FileEarmarkRuled => "file-earmark-ruled", + IconName.FileEarmarkRuledFill => "file-earmark-ruled-fill", + IconName.FileEarmarkSlides => "file-earmark-slides", + IconName.FileEarmarkSlidesFill => "file-earmark-slides-fill", + IconName.FileEarmarkSpreadsheet => "file-earmark-spreadsheet", + IconName.FileEarmarkSpreadsheetFill => "file-earmark-spreadsheet-fill", + IconName.FileEarmarkText => "file-earmark-text", + IconName.FileEarmarkTextFill => "file-earmark-text-fill", + IconName.FileEarmarkWord => "file-earmark-word", + IconName.FileEarmarkWordFill => "file-earmark-word-fill", + IconName.FileEarmarkX => "file-earmark-x", + IconName.FileEarmarkXFill => "file-earmark-x-fill", + IconName.FileEarmarkZip => "file-earmark-zip", + IconName.FileEarmarkZipFill => "file-earmark-zip-fill", + IconName.FileEasel => "file-easel", + IconName.FileEaselFill => "file-easel-fill", + IconName.FileExcel => "file-excel", + IconName.FileExcelFill => "file-excel-fill", + IconName.FileFill => "file-fill", + IconName.FileFont => "file-font", + IconName.FileFontFill => "file-font-fill", + IconName.FileImage => "file-image", + IconName.FileImageFill => "file-image-fill", + IconName.FileLock => "file-lock", + IconName.FileLock2 => "file-lock2", + IconName.FileLock2Fill => "file-lock2-fill", + IconName.FileLockFill => "file-lock-fill", + IconName.FileMedical => "file-medical", + IconName.FileMedicalFill => "file-medical-fill", + IconName.FileMinus => "file-minus", + IconName.FileMinusFill => "file-minus-fill", + IconName.FileMusic => "file-music", + IconName.FileMusicFill => "file-music-fill", + IconName.FilePdf => "file-pdf", + IconName.FilePdfFill => "file-pdf-fill", + IconName.FilePerson => "file-person", + IconName.FilePersonFill => "file-person-fill", + IconName.FilePlay => "file-play", + IconName.FilePlayFill => "file-play-fill", + IconName.FilePlus => "file-plus", + IconName.FilePlusFill => "file-plus-fill", + IconName.FilePost => "file-post", + IconName.FilePostFill => "file-post-fill", + IconName.FilePpt => "file-ppt", + IconName.FilePptFill => "file-ppt-fill", + IconName.FileRichtext => "file-richtext", + IconName.FileRichtextFill => "file-richtext-fill", + IconName.FileRuled => "file-ruled", + IconName.FileRuledFill => "file-ruled-fill", + IconName.Files => "files", + IconName.FilesAlt => "files-alt", + IconName.FileSlides => "file-slides", + IconName.FileSlidesFill => "file-slides-fill", + IconName.FileSpreadsheet => "file-spreadsheet", + IconName.FileSpreadsheetFill => "file-spreadsheet-fill", + IconName.FileText => "file-text", + IconName.FileTextFill => "file-text-fill", + IconName.FileTypeAac => "filetype-aac", + IconName.FileTypeAi => "filetype-ai", + IconName.FileTypeBmp => "filetype-bmp", + IconName.FileTypeCs => "filetype-cs", + IconName.FileTypeCss => "filetype-css", + IconName.FileTypeCsv => "filetype-csv", + IconName.FileTypeDoc => "filetype-doc", + IconName.FileTypeDocx => "filetype-docx", + IconName.FileTypeExe => "filetype-exe", + IconName.FileTypeGif => "filetype-gif", + IconName.FileTypeHeic => "filetype-heic", + IconName.FileTypeHtml => "filetype-html", + IconName.FileTypeJava => "filetype-java", + IconName.FileTypeJpg => "filetype-jpg", + IconName.FileTypeJs => "filetype-js", + IconName.FileTypeJson => "filetype-json", + IconName.FileTypeJsx => "filetype-jsx", + IconName.FileTypeKey => "filetype-key", + IconName.FileTypeM4p => "filetype-m4p", + IconName.FileTypeMd => "filetype-md", + IconName.FileTypeMdx => "filetype-mdx", + IconName.FileTypeMov => "filetype-mov", + IconName.FileTypeMp3 => "filetype-mp3", + IconName.FileTypeMp4 => "filetype-mp4", + IconName.FileTypeOtf => "filetype-otf", + IconName.FileTypePdf => "filetype-pdf", + IconName.FileTypePhp => "filetype-php", + IconName.FileTypePng => "filetype-png", + IconName.FileTypePpt => "filetype-ppt", + IconName.FileTypePptx => "filetype-pptx", + IconName.FileTypePsd => "filetype-psd", + IconName.FileTypePy => "filetype-py", + IconName.FileTypeRaw => "filetype-raw", + IconName.FileTypeRb => "filetype-rb", + IconName.FileTypeSass => "filetype-sass", + IconName.FileTypeScss => "filetype-scss", + IconName.FileTypeSh => "filetype-sh", + IconName.FileTypeSql => "filetype-sql", + IconName.FileTypeSvg => "filetype-svg", + IconName.FileTypeTiff => "filetype-tiff", + IconName.FileTypeTsx => "filetype-tsx", + IconName.FileTypeTtf => "filetype-ttf", + IconName.FileTypeTxt => "filetype-txt", + IconName.FileTypeWav => "filetype-wav", + IconName.FileTypeWoff => "filetype-woff", + IconName.FileTypeXls => "filetype-xls", + IconName.FileTypeXlsx => "filetype-xlsx", + IconName.FileTypeXml => "filetype-xml", + IconName.FileTypeYml => "filetype-yml", + IconName.FileWord => "file-word", + IconName.FileWordFill => "file-word-fill", + IconName.FileX => "file-x", + IconName.FileXFill => "file-x-fill", + IconName.FileZip => "file-zip", + IconName.FileZipFill => "file-zip-fill", + IconName.Film => "film", + IconName.Filter => "filter", + IconName.FilterCircle => "filter-circle", + IconName.FilterCircleFill => "filter-circle-fill", + IconName.FilterLeft => "filter-left", + IconName.FilterRight => "filter-right", + IconName.FilterSquare => "filter-square", + IconName.FilterSquareFill => "filter-square-fill", + IconName.Fingerprint => "fingerprint", + IconName.Fire => "fire", + IconName.FiveCircle => "5-circle", + IconName.FiveCircleFill => "5-circle-fill", + IconName.FiveSquare => "5-square", + IconName.FiveSquareFill => "5-square-fill", + IconName.Flag => "flag", + IconName.FlagFill => "flag-fill", + IconName.Floppy => "floppy", + IconName.Floppy2 => "floppy2", + IconName.Floppy2Fill => "floppy2-fill", + IconName.FloppyFill => "floppy-fill", + IconName.Flower1 => "flower1", + IconName.Flower2 => "flower2", + IconName.Flower3 => "flower3", + IconName.Folder => "folder", + IconName.Folder2 => "folder2", + IconName.Folder2Open => "folder2-open", + IconName.FolderCheck => "folder-check", + IconName.FolderFill => "folder-fill", + IconName.FolderMinus => "folder-minus", + IconName.FolderPlus => "folder-plus", + IconName.FolderSymlink => "folder-symlink", + IconName.FolderSymlinkFill => "folder-symlink-fill", + IconName.FolderX => "folder-x", + IconName.Fonts => "fonts", + IconName.Forward => "forward", + IconName.ForwardFill => "forward-fill", + IconName.FourCircle => "4-circle", + IconName.FourCircleFill => "4-circle-fill", + IconName.FourSquare => "4-square", + IconName.FourSquareFill => "4-square-fill", + IconName.Front => "front", + IconName.FuelPump => "fuel-pump", + IconName.FuelPumpDiesel => "fuel-pump-diesel", + IconName.FuelPumpDieselFill => "fuel-pump-diesel-fill", + IconName.FuelPumpFill => "fuel-pump-fill", + IconName.Fullscreen => "fullscreen", + IconName.FullscreenExit => "fullscreen-exit", + IconName.Funnel => "funnel", + IconName.FunnelFill => "funnel-fill", + IconName.Gear => "gear", + IconName.GearFill => "gear-fill", + IconName.GearWide => "gear-wide", + IconName.GearWideConnected => "gear-wide-connected", + IconName.Gem => "gem", + IconName.GenderAmbiguous => "gender-ambiguous", + IconName.GenderFemale => "gender-female", + IconName.GenderMale => "gender-male", + IconName.GenderNeuter => "gender-neuter", + IconName.GenderTrans => "gender-trans", + IconName.Geo => "geo", + IconName.GeoAlt => "geo-alt", + IconName.GeoAltFill => "geo-alt-fill", + IconName.GeoFill => "geo-fill", + IconName.Gift => "gift", + IconName.GiftFill => "gift-fill", + IconName.Git => "git", + IconName.Github => "github", + IconName.Gitlab => "gitlab", + IconName.Globe => "globe", + IconName.Globe2 => "globe2", + IconName.GlobeAmericas => "globe-americas", + IconName.GlobeAsiaAustralia => "globe-asia-australia", + IconName.GlobeCentralSouthAsia => "globe-central-south-asia", + IconName.GlobeEuropeAfrica => "globe-europe-africa", + IconName.Google => "google", + IconName.GooglePlay => "google-play", + IconName.GpuCard => "gpu-card", + IconName.GraphDown => "graph-down", + IconName.GraphDownArrow => "graph-down-arrow", + IconName.GraphUp => "graph-up", + IconName.GraphUpArrow => "graph-up-arrow", + IconName.Grid => "grid", + IconName.Grid1X2 => "grid-1x2", + IconName.Grid1X2Fill => "grid-1x2-fill", + IconName.Grid3X2 => "grid-3x2", + IconName.Grid3X2Gap => "grid-3x2-gap", + IconName.Grid3X2GapFill => "grid-3x2-gap-fill", + IconName.Grid3X3 => "grid-3x3", + IconName.Grid3X3Gap => "grid-3x3-gap", + IconName.Grid3X3GapFill => "grid-3x3-gap-fill", + IconName.GridFill => "grid-fill", + IconName.GripHorizontal => "grip-horizontal", + IconName.GripVertical => "grip-vertical", + IconName.Hammer => "hammer", + IconName.Handbag => "handbag", + IconName.HandbagFill => "handbag-fill", + IconName.HandIndex => "hand-index", + IconName.HandIndexFill => "hand-index-fill", + IconName.HandIndexThumb => "hand-index-thumb", + IconName.HandIndexThumbFill => "hand-index-thumb-fill", + IconName.HandThumbsDown => "hand-thumbs-down", + IconName.HandThumbsDownFill => "hand-thumbs-down-fill", + IconName.HandThumbsUp => "hand-thumbs-up", + IconName.HandThumbsUpFill => "hand-thumbs-up-fill", + IconName.Hash => "hash", + IconName.HCircle => "h-circle", + IconName.HCircleFill => "h-circle-fill", + IconName.Hdd => "hdd", + IconName.HddFill => "hdd-fill", + IconName.HddNetwork => "hdd-network", + IconName.HddNetworkFill => "hdd-network-fill", + IconName.HddRack => "hdd-rack", + IconName.HddRackFill => "hdd-rack-fill", + IconName.HddStack => "hdd-stack", + IconName.HddStackFill => "hdd-stack-fill", + IconName.Hdmi => "hdmi", + IconName.HdmiFill => "hdmi-fill", + IconName.Headphones => "headphones", + IconName.Headset => "headset", + IconName.HeadsetVr => "headset-vr", + IconName.Heart => "heart", + IconName.HeartArrow => "heart-arrow", + IconName.HeartBreak => "heartbreak", + IconName.HeartBreakFill => "heartbreak-fill", + IconName.HeartFill => "heart-fill", + IconName.HeartHalf => "heart-half", + IconName.HeartPulse => "heart-pulse", + IconName.HeartPulseFill => "heart-pulse-fill", + IconName.Hearts => "hearts", + IconName.Heptagon => "heptagon", + IconName.HeptagonFill => "heptagon-fill", + IconName.HeptagonHalf => "heptagon-half", + IconName.Hexagon => "hexagon", + IconName.HexagonFill => "hexagon-fill", + IconName.HexagonHalf => "hexagon-half", + IconName.Highlighter => "highlighter", + IconName.Highlights => "highlights", + IconName.Hospital => "hospital", + IconName.HospitalFill => "hospital-fill", + IconName.Hourglass => "hourglass", + IconName.HourglassBottom => "hourglass-bottom", + IconName.HourglassSplit => "hourglass-split", + IconName.HourglassTop => "hourglass-top", + IconName.House => "house", + IconName.HouseAdd => "house-add", + IconName.HouseAddFill => "house-add-fill", + IconName.HouseCheck => "house-check", + IconName.HouseCheckFill => "house-check-fill", + IconName.HouseDash => "house-dash", + IconName.HouseDashFill => "house-dash-fill", + IconName.HouseDoor => "house-door", + IconName.HouseDoorFill => "house-door-fill", + IconName.HouseDown => "house-down", + IconName.HouseDownFill => "house-down-fill", + IconName.HouseExclamation => "house-exclamation", + IconName.HouseExclamationFill => "house-exclamation-fill", + IconName.HouseFill => "house-fill", + IconName.HouseGear => "house-gear", + IconName.HouseGearFill => "house-gear-fill", + IconName.HouseHeart => "house-heart", + IconName.HouseHeartFill => "house-heart-fill", + IconName.HouseLock => "house-lock", + IconName.HouseLockFill => "house-lock-fill", + IconName.Houses => "houses", + IconName.HousesFill => "houses-fill", + IconName.HouseSlash => "house-slash", + IconName.HouseSlashFill => "house-slash-fill", + IconName.HouseUp => "house-up", + IconName.HouseUpFill => "house-up-fill", + IconName.HouseX => "house-x", + IconName.HouseXFill => "house-x-fill", + IconName.Hr => "hr", + IconName.HSquare => "h-square", + IconName.HSquareFill => "h-square-fill", + IconName.Hurricane => "hurricane", + IconName.Hypnotize => "hypnotize", + IconName.Image => "image", + IconName.ImageAlt => "image-alt", + IconName.ImageFill => "image-fill", + IconName.Images => "images", + IconName.Inbox => "inbox", + IconName.Inboxes => "inboxes", + IconName.InboxesFill => "inboxes-fill", + IconName.InboxFill => "inbox-fill", + IconName.Incognito => "incognito", + IconName.Indent => "indent", + IconName.Infinity => "infinity", + IconName.Info => "info", + IconName.InfoCircle => "info-circle", + IconName.InfoCircleFill => "info-circle-fill", + IconName.InfoLg => "info-lg", + IconName.InfoSquare => "info-square", + IconName.InfoSquareFill => "info-square-fill", + IconName.InputCursor => "input-cursor", + IconName.InputCursorText => "input-cursor-text", + IconName.Instagram => "instagram", + IconName.Intersect => "intersect", + IconName.Journal => "journal", + IconName.JournalAlbum => "journal-album", + IconName.JournalArrowDown => "journal-arrow-down", + IconName.JournalArrowUp => "journal-arrow-up", + IconName.JournalBookmark => "journal-bookmark", + IconName.JournalBookmarkFill => "journal-bookmark-fill", + IconName.JournalCheck => "journal-check", + IconName.JournalCode => "journal-code", + IconName.JournalMedical => "journal-medical", + IconName.JournalMinus => "journal-minus", + IconName.JournalPlus => "journal-plus", + IconName.JournalRichtext => "journal-richtext", + IconName.Journals => "journals", + IconName.JournalText => "journal-text", + IconName.JournalX => "journal-x", + IconName.Joystick => "joystick", + IconName.Justify => "justify", + IconName.JustifyLeft => "justify-left", + IconName.JustifyRight => "justify-right", + IconName.Kanban => "kanban", + IconName.KanbanFill => "kanban-fill", + IconName.Key => "key", + IconName.Keyboard => "keyboard", + IconName.KeyboardFill => "keyboard-fill", + IconName.KeyFill => "key-fill", + IconName.Ladder => "ladder", + IconName.Lamp => "lamp", + IconName.LampFill => "lamp-fill", + IconName.Laptop => "laptop", + IconName.LaptopFill => "laptop-fill", + IconName.LayerBackward => "layer-backward", + IconName.LayerForward => "layer-forward", + IconName.Layers => "layers", + IconName.LayersFill => "layers-fill", + IconName.LayersHalf => "layers-half", + IconName.LayoutSidebar => "layout-sidebar", + IconName.LayoutSidebarInset => "layout-sidebar-inset", + IconName.LayoutSidebarInsetReverse => "layout-sidebar-inset-reverse", + IconName.LayoutSidebarReverse => "layout-sidebar-reverse", + IconName.LayoutSplit => "layout-split", + IconName.LayoutTextSidebar => "layout-text-sidebar", + IconName.LayoutTextSidebarReverse => "layout-text-sidebar-reverse", + IconName.LayoutTextWindow => "layout-text-window", + IconName.LayoutTextWindowReverse => "layout-text-window-reverse", + IconName.LayoutThreeColumns => "layout-three-columns", + IconName.LayoutWtf => "layout-wtf", + IconName.LifePreserver => "life-preserver", + IconName.Lightbulb => "lightbulb", + IconName.LightbulbFill => "lightbulb-fill", + IconName.LightbulbOff => "lightbulb-off", + IconName.LightbulbOffFill => "lightbulb-off-fill", + IconName.Lightning => "lightning", + IconName.LightningCharge => "lightning-charge", + IconName.LightningChargeFill => "lightning-charge-fill", + IconName.LightningFill => "lightning-fill", + IconName.Line => "line", + IconName.Link => "link", + IconName.Link45Deg => "link-45deg", + IconName.Linkedin => "linkedin", + IconName.List => "list", + IconName.ListCheck => "list-check", + IconName.ListColumns => "list-columns", + IconName.ListColumnsReverse => "list-columns-reverse", + IconName.ListNested => "list-nested", + IconName.ListOl => "list-ol", + IconName.ListStars => "list-stars", + IconName.ListTask => "list-task", + IconName.ListUl => "list-ul", + IconName.Lock => "lock", + IconName.LockFill => "lock-fill", + IconName.Luggage => "luggage", + IconName.LuggageFill => "luggage-fill", + IconName.Lungs => "lungs", + IconName.LungsFill => "lungs-fill", + IconName.Magic => "magic", + IconName.Magnet => "magnet", + IconName.MagnetFill => "magnet-fill", + IconName.Mailbox => "mailbox", + IconName.Mailbox2 => "mailbox2", + IconName.Mailbox2Flag => "mailbox2-flag", + IconName.MailboxFlag => "mailbox-flag", + IconName.Map => "map", + IconName.MapFill => "map-fill", + IconName.Markdown => "markdown", + IconName.MarkdownFill => "markdown-fill", + IconName.MarkerTip => "marker-tip", + IconName.Mask => "mask", + IconName.Mastodon => "mastodon", + IconName.Medium => "medium", + IconName.Megaphone => "megaphone", + IconName.MegaphoneFill => "megaphone-fill", + IconName.Memory => "memory", + IconName.MenuApp => "menu-app", + IconName.MenuAppFill => "menu-app-fill", + IconName.MenuButton => "menu-button", + IconName.MenuButtonFill => "menu-button-fill", + IconName.MenuButtonWide => "menu-button-wide", + IconName.MenuButtonWideFill => "menu-button-wide-fill", + IconName.MenuDown => "menu-down", + IconName.MenuUp => "menu-up", + IconName.Messenger => "messenger", + IconName.Meta => "meta", + IconName.Mic => "mic", + IconName.MicFill => "mic-fill", + IconName.MicMute => "mic-mute", + IconName.MicMuteFill => "mic-mute-fill", + IconName.Microsoft => "microsoft", + IconName.MicrosoftTeams => "microsoft-teams", + IconName.Minecart => "minecart", + IconName.MinecartLoaded => "minecart-loaded", + IconName.Modem => "modem", + IconName.ModemFill => "modem-fill", + IconName.Moisture => "moisture", + IconName.Moon => "moon", + IconName.MoonFill => "moon-fill", + IconName.MoonStars => "moon-stars", + IconName.MoonStarsFill => "moon-stars-fill", + IconName.Mortarboard => "mortarboard", + IconName.MortarboardFill => "mortarboard-fill", + IconName.Motherboard => "motherboard", + IconName.MotherboardFill => "motherboard-fill", + IconName.Mouse => "mouse", + IconName.Mouse2 => "mouse2", + IconName.Mouse2Fill => "mouse2-fill", + IconName.Mouse3 => "mouse3", + IconName.Mouse3Fill => "mouse3-fill", + IconName.MouseFill => "mouse-fill", + IconName.MusicNote => "music-note", + IconName.MusicNoteBeamed => "music-note-beamed", + IconName.MusicNoteList => "music-note-list", + IconName.MusicPlayer => "music-player", + IconName.MusicPlayerFill => "music-player-fill", + IconName.Newspaper => "newspaper", + IconName.NineCircle => "9-circle", + IconName.NineCircleFill => "9-circle-fill", + IconName.NineSquare => "9-square", + IconName.NineSquareFill => "9-square-fill", + IconName.NintendoSwitch => "nintendo-switch", + IconName.NodeMinus => "node-minus", + IconName.NodeMinusFill => "node-minus-fill", + IconName.NodePlus => "node-plus", + IconName.NodePlusFill => "node-plus-fill", + IconName.NoiseReduction => "noise-reduction", + IconName.Nut => "nut", + IconName.NutFill => "nut-fill", + IconName.Nvidia => "nvidia", + IconName.Nvme => "nvme", + IconName.NvmeFill => "nvme-fill", + IconName.Octagon => "octagon", + IconName.OctagonFill => "octagon-fill", + IconName.OctagonHalf => "octagon-half", + IconName.OneCircle => "1-circle", + IconName.OneCircleFill => "1-circle-fill", + IconName.OneSquare => "1-square", + IconName.OneSquareFill => "1-square-fill", + IconName.OneTwoThree => "123", + IconName.Opencollective => "opencollective", + IconName.OpticalAudio => "optical-audio", + IconName.OpticalAudioFill => "optical-audio-fill", + IconName.Option => "option", + IconName.Outlet => "outlet", + IconName.PaintBucket => "paint-bucket", + IconName.Palette => "palette", + IconName.Palette2 => "palette2", + IconName.PaletteFill => "palette-fill", + IconName.Paperclip => "paperclip", + IconName.Paragraph => "paragraph", + IconName.Pass => "pass", + IconName.PassFill => "pass-fill", + IconName.Passport => "passport", + IconName.PassportFill => "passport-fill", + IconName.PatchCheck => "patch-check", + IconName.PatchCheckFill => "patch-check-fill", + IconName.PatchExclamation => "patch-exclamation", + IconName.PatchExclamationFill => "patch-exclamation-fill", + IconName.PatchMinus => "patch-minus", + IconName.PatchMinusFill => "patch-minus-fill", + IconName.PatchPlus => "patch-plus", + IconName.PatchPlusFill => "patch-plus-fill", + IconName.PatchQuestion => "patch-question", + IconName.PatchQuestionFill => "patch-question-fill", + IconName.Pause => "pause", + IconName.PauseBtn => "pause-btn", + IconName.PauseBtnFill => "pause-btn-fill", + IconName.PauseCircle => "pause-circle", + IconName.PauseCircleFill => "pause-circle-fill", + IconName.PauseFill => "pause-fill", + IconName.Paypal => "paypal", + IconName.Pc => "pc", + IconName.PcDisplay => "pc-display", + IconName.PcDisplayHorizontal => "pc-display-horizontal", + IconName.PcHorizontal => "pc-horizontal", + IconName.PciCard => "pci-card", + IconName.PciCardNetwork => "pci-card-network", + IconName.PciCardSound => "pci-card-sound", + IconName.PCircle => "p-circle", + IconName.PCircleFill => "p-circle-fill", + IconName.Peace => "peace", + IconName.PeaceFill => "peace-fill", + IconName.Pen => "pen", + IconName.Pencil => "pencil", + IconName.PencilFill => "pencil-fill", + IconName.PencilSquare => "pencil-square", + IconName.PenFill => "pen-fill", + IconName.Pentagon => "pentagon", + IconName.PentagonFill => "pentagon-fill", + IconName.PentagonHalf => "pentagon-half", + IconName.People => "people", + IconName.PeopleFill => "people-fill", + IconName.Percent => "percent", + IconName.Person => "person", + IconName.PersonAdd => "person-add", + IconName.PersonArmsUp => "person-arms-up", + IconName.PersonBadge => "person-badge", + IconName.PersonBadgeFill => "person-badge-fill", + IconName.PersonBoundingBox => "person-bounding-box", + IconName.PersonCheck => "person-check", + IconName.PersonCheckFill => "person-check-fill", + IconName.PersonCircle => "person-circle", + IconName.PersonDash => "person-dash", + IconName.PersonDashFill => "person-dash-fill", + IconName.PersonDown => "person-down", + IconName.PersonExclamation => "person-exclamation", + IconName.PersonFill => "person-fill", + IconName.PersonFillAdd => "person-fill-add", + IconName.PersonFillCheck => "person-fill-check", + IconName.PersonFillDash => "person-fill-dash", + IconName.PersonFillDown => "person-fill-down", + IconName.PersonFillExclamation => "person-fill-exclamation", + IconName.PersonFillGear => "person-fill-gear", + IconName.PersonFillLock => "person-fill-lock", + IconName.PersonFillSlash => "person-fill-slash", + IconName.PersonFillUp => "person-fill-up", + IconName.PersonFillX => "person-fill-x", + IconName.PersonGear => "person-gear", + IconName.PersonHeart => "person-heart", + IconName.PersonHearts => "person-hearts", + IconName.PersonLinesFill => "person-lines-fill", + IconName.PersonLock => "person-lock", + IconName.PersonPlus => "person-plus", + IconName.PersonPlusFill => "person-plus-fill", + IconName.PersonRaisedHand => "person-raised-hand", + IconName.PersonRolodex => "person-rolodex", + IconName.PersonSlash => "person-slash", + IconName.PersonSquare => "person-square", + IconName.PersonStanding => "person-standing", + IconName.PersonStandingDress => "person-standing-dress", + IconName.PersonUp => "person-up", + IconName.PersonVCard => "person-vcard", + IconName.PersonVCardFill => "person-vcard-fill", + IconName.PersonVideo => "person-video", + IconName.PersonVideo2 => "person-video2", + IconName.PersonVideo3 => "person-video3", + IconName.PersonWalking => "person-walking", + IconName.PersonWheelchair => "person-wheelchair", + IconName.PersonWorkspace => "person-workspace", + IconName.PersonX => "person-x", + IconName.PersonXFill => "person-x-fill", + IconName.Phone => "phone", + IconName.PhoneFill => "phone-fill", + IconName.PhoneFlip => "phone-flip", + IconName.PhoneLandscape => "phone-landscape", + IconName.PhoneLandscapeFill => "phone-landscape-fill", + IconName.PhoneVibrate => "phone-vibrate", + IconName.PhoneVibrateFill => "phone-vibrate-fill", + IconName.PieChart => "pie-chart", + IconName.PieChartFill => "pie-chart-fill", + IconName.PiggyBank => "piggy-bank", + IconName.PiggyBankFill => "piggy-bank-fill", + IconName.Pin => "pin", + IconName.PinAngle => "pin-angle", + IconName.PinAngleFill => "pin-angle-fill", + IconName.PinFill => "pin-fill", + IconName.PinMap => "pin-map", + IconName.PinMapFill => "pin-map-fill", + IconName.Pinterest => "pinterest", + IconName.Pip => "pip", + IconName.PipFill => "pip-fill", + IconName.Play => "play", + IconName.PlayBtn => "play-btn", + IconName.PlayBtnFill => "play-btn-fill", + IconName.PlayCircle => "play-circle", + IconName.PlayCircleFill => "play-circle-fill", + IconName.PlayFill => "play-fill", + IconName.Playstation => "playstation", + IconName.Plug => "plug", + IconName.PlugFill => "plug-fill", + IconName.Plugin => "plugin", + IconName.Plus => "plus", + IconName.PlusCircle => "plus-circle", + IconName.PlusCircleDotted => "plus-circle-dotted", + IconName.PlusCircleFill => "plus-circle-fill", + IconName.PlusLg => "plus-lg", + IconName.PlusSlashMinus => "plus-slash-minus", + IconName.PlusSquare => "plus-square", + IconName.PlusSquareDotted => "plus-square-dotted", + IconName.PlusSquareFill => "plus-square-fill", + IconName.Postage => "postage", + IconName.PostageFill => "postage-fill", + IconName.PostageHeart => "postage-heart", + IconName.PostageHeartFill => "postage-heart-fill", + IconName.Postcard => "postcard", + IconName.PostcardFill => "postcard-fill", + IconName.PostcardHeart => "postcard-heart", + IconName.PostcardHeartFill => "postcard-heart-fill", + IconName.Power => "power", + IconName.Prescription => "prescription", + IconName.Prescription2 => "prescription2", + IconName.Printer => "printer", + IconName.PrinterFill => "printer-fill", + IconName.Projector => "projector", + IconName.ProjectorFill => "projector-fill", + IconName.PSquare => "p-square", + IconName.PSquareFill => "p-square-fill", + IconName.Puzzle => "puzzle", + IconName.PuzzleFill => "puzzle-fill", + IconName.QrCode => "qr-code", + IconName.QrCodeScan => "qr-code-scan", + IconName.Question => "question", + IconName.QuestionCircle => "question-circle", + IconName.QuestionCircleFill => "question-circle-fill", + IconName.QuestionDiamond => "question-diamond", + IconName.QuestionDiamondFill => "question-diamond-fill", + IconName.QuestionLg => "question-lg", + IconName.QuestionOctagon => "question-octagon", + IconName.QuestionOctagonFill => "question-octagon-fill", + IconName.QuestionSquare => "question-square", + IconName.QuestionSquareFill => "question-square-fill", + IconName.Quora => "quora", + IconName.Quote => "quote", + IconName.Radar => "radar", + IconName.Radioactive => "radioactive", + IconName.Rainbow => "rainbow", + IconName.RCircle => "r-circle", + IconName.RCircleFill => "r-circle-fill", + IconName.Receipt => "receipt", + IconName.ReceiptCutoff => "receipt-cutoff", + IconName.Reception0 => "reception-0", + IconName.Reception1 => "reception-1", + IconName.Reception2 => "reception-2", + IconName.Reception3 => "reception-3", + IconName.Reception4 => "reception-4", + IconName.Record => "record", + IconName.Record2 => "record2", + IconName.Record2Fill => "record2-fill", + IconName.RecordBtn => "record-btn", + IconName.RecordBtnFill => "record-btn-fill", + IconName.RecordCircle => "record-circle", + IconName.RecordCircleFill => "record-circle-fill", + IconName.RecordFill => "record-fill", + IconName.Recycle => "recycle", + IconName.Reddit => "reddit", + IconName.Regex => "regex", + IconName.Repeat => "repeat", + IconName.Repeat1 => "repeat-1", + IconName.Reply => "reply", + IconName.ReplyAll => "reply-all", + IconName.ReplyAllFill => "reply-all-fill", + IconName.ReplyFill => "reply-fill", + IconName.Rewind => "rewind", + IconName.RewindBtn => "rewind-btn", + IconName.RewindBtnFill => "rewind-btn-fill", + IconName.RewindCircle => "rewind-circle", + IconName.RewindCircleFill => "rewind-circle-fill", + IconName.RewindFill => "rewind-fill", + IconName.Robot => "robot", + IconName.Rocket => "rocket", + IconName.RocketFill => "rocket-fill", + IconName.RocketTakeOff => "rocket-takeoff", + IconName.RocketTakeOffFill => "rocket-takeoff-fill", + IconName.Router => "router", + IconName.RouterFill => "router-fill", + IconName.RSquare => "r-square", + IconName.RSquareFill => "r-square-fill", + IconName.Rss => "rss", + IconName.RssFill => "rss-fill", + IconName.Rulers => "rulers", + IconName.Safe => "safe", + IconName.Safe2 => "safe2", + IconName.Safe2Fill => "safe2-fill", + IconName.SafeFill => "safe-fill", + IconName.Save => "save", + IconName.Save2 => "save2", + IconName.Save2Fill => "save2-fill", + IconName.SaveFill => "save-fill", + IconName.Scissors => "scissors", + IconName.Scooter => "scooter", + IconName.Screwdriver => "screwdriver", + IconName.SdCard => "sd-card", + IconName.SdCardFill => "sd-card-fill", + IconName.Search => "search", + IconName.SearchHeart => "search-heart", + IconName.SearchHeartFill => "search-heart-fills", + IconName.SegmentedNav => "segmented-nav", + IconName.Send => "send", + IconName.SendArrowDown => "send-arrow-down", + IconName.SendArrowDownFill => "send-arrow-down-fill", + IconName.SendArrowUp => "send-arrow-up-fill", + IconName.SendArrowUpFill => "send-arrow-up-fill", + IconName.SendCheck => "send-check", + IconName.SendCheckFill => "send-check-fill", + IconName.SendDash => "send-dash", + IconName.SendDashFill => "send-dash-fill", + IconName.SendExclamation => "send-exclamation", + IconName.SendExclamationFill => "send-exclamation-fill", + IconName.SendFill => "send-fill", + IconName.SendPlus => "send-plus", + IconName.SendPlusFill => "send-plus-fill", + IconName.SendSlash => "send-slash", + IconName.SendSlashFill => "send-slash-fill", + IconName.SendX => "send-x", + IconName.SendXFill => "send-x-fill", + IconName.Server => "server", + IconName.SevenCircle => "7-circle", + IconName.SevenCircleFill => "7-circle-fill", + IconName.SevenSquare => "7-square", + IconName.SevenSquareFill => "7-square-fill", + IconName.Shadows => "shadows", + IconName.Share => "share", + IconName.ShareFill => "share-fill", + IconName.Shield => "shield", + IconName.ShieldCheck => "shield-check", + IconName.ShieldExclamation => "shield-exclamation", + IconName.ShieldFill => "shield-fill", + IconName.ShieldFillCheck => "shield-fill-check", + IconName.ShieldFillExclamation => "shield-fill-exclamation", + IconName.ShieldFillMinus => "shield-fill-minus", + IconName.ShieldFillPlus => "shield-fill-plus", + IconName.ShieldFillX => "shield-fill-x", + IconName.ShieldLock => "shield-lock", + IconName.ShieldLockFill => "shield-lock-fill", + IconName.ShieldMinus => "shield-minus", + IconName.ShieldPlus => "shield-plus", + IconName.ShieldShaded => "shield-shaded", + IconName.ShieldSlash => "shield-slash", + IconName.ShieldSlashFill => "shield-slash-fill", + IconName.ShieldX => "shield-x", + IconName.Shift => "shift", + IconName.ShiftFill => "shift-fill", + IconName.Shop => "shop", + IconName.ShopWindow => "shop-window", + IconName.Shuffle => "shuffle", + IconName.Signal => "signal", + IconName.SignDeadEnd => "sign-dead-end", + IconName.SignDeadEndFill => "sign-dead-end-fill", + IconName.SignDoNotEnter => "sign-do-not-enter", + IconName.SignDoNotEnterFill => "sign-do-not-enter-fill", + IconName.SignIntersection => "sign-intersection", + IconName.SignIntersectionFill => "sign-intersection-fill", + IconName.SignIntersectionSide => "sign-intersection-side", + IconName.SignIntersectionSideFill => "sign-intersection-side-fill", + IconName.SignIntersectionT => "sign-intersection-t", + IconName.SignIntersectionTFill => "sign-intersection-t-fill", + IconName.SignIntersectionY => "sign-intersection-y", + IconName.SignIntersectionYFill => "sign-intersection-y-fill", + IconName.SignMergeLeft => "sign-merge-left", + IconName.SignMergeLeftFill => "sign-merge-left-fill", + IconName.SignMergeRight => "sign-merge-right", + IconName.SignMergeRightFill => "sign-merge-right-fill", + IconName.SignNoLeftTurn => "sign-no-left-turn", + IconName.SignNoLeftTurnFill => "sign-no-left-turn-fill", + IconName.SignNoParking => "sign-no-parking", + IconName.SignNoParkingFill => "sign-no-parking-fill", + IconName.SignNoRightTurn => "sign-no-right-turn", + IconName.SignNoRightTurnFill => "sign-no-right-turn-fill", + IconName.Signpost => "signpost", + IconName.Signpost2 => "signpost-2", + IconName.Signpost2Fill => "signpost-2-fill", + IconName.SignpostFill => "signpost-fill", + IconName.SignpostSplit => "signpost-split", + IconName.SignpostSplitFill => "signpost-split-fill", + IconName.SignRailRoad => "sign-railroad", + IconName.SignRailRoadFill => "sign-railroad-fill", + IconName.SignStop => "sign-stop", + IconName.SignStopFill => "sign-stop-fill", + IconName.SignStopLights => "sign-stop-lights", + IconName.SignStopLightsFill => "sign-stop-lights-fill", + IconName.SignTurnLeft => "sign-turn-left", + IconName.SignTurnLeftFill => "sign-turn-left-fill", + IconName.SignTurnRight => "sign-turn-right", + IconName.SignTurnRightFill => "sign-turn-right-fill", + IconName.SignTurnSlightLeft => "sign-turn-slight-left", + IconName.SignTurnSlightLeftFill => "sign-turn-slight-left-fill", + IconName.SignTurnSlightRight => "sign-turn-slight-right", + IconName.SignTurnSlightRightFill => "sign-turn-slight-right-fill", + IconName.SignYield => "sign-yield", + IconName.SignYieldFill => "sign-yield-fill", + IconName.Sim => "sim", + IconName.SimFill => "sim-fill", + IconName.SimSlash => "sim-slash", + IconName.SimSlashFill => "sim-slash-fill", + IconName.SinaWeibo => "sina-weibo", + IconName.SixCircle => "6-circle", + IconName.SixCircleFill => "6-circle-fill", + IconName.SixSquare => "6-square", + IconName.SixSquareFill => "6-square-fill", + IconName.SkipBackward => "skip-backward", + IconName.SkipBackwardBtn => "skip-backward-btn", + IconName.SkipBackwardBtnFill => "skip-backward-btn-fill", + IconName.SkipBackwardCircle => "skip-backward-circle", + IconName.SkipBackwardCircleFill => "skip-backward-circle-fill", + IconName.SkipBackwardFill => "skip-backward-fill", + IconName.SkipEnd => "skip-end", + IconName.SkipEndBtn => "skip-end-btn", + IconName.SkipEndBtnFill => "skip-end-btn-fill", + IconName.SkipEndCircle => "skip-end-circle", + IconName.SkipEndCircleFill => "skip-end-circle-fill", + IconName.SkipEndFill => "skip-end-fill", + IconName.SkipForward => "skip-forward", + IconName.SkipForwardBtn => "skip-forward-btn", + IconName.SkipForwardBtnFill => "skip-forward-btn-fill", + IconName.SkipForwardCircle => "skip-forward-circle", + IconName.SkipForwardCircleFill => "skip-forward-circle-fill", + IconName.SkipForwardFill => "skip-forward-fill", + IconName.SkipStart => "skip-start", + IconName.SkipStartBtn => "skip-start-btn", + IconName.SkipStartBtnFill => "skip-start-btn-fill", + IconName.SkipStartCircle => "skip-start-circle", + IconName.SkipStartCircleFill => "skip-start-circle-fill", + IconName.SkipStartFill => "skip-start-fill", + IconName.Skype => "skype", + IconName.Slack => "slack", + IconName.Slash => "slash", + IconName.SlashCircle => "slash-circle", + IconName.SlashCircleFill => "slash-circle-fill", + IconName.SlashLg => "slash-lg", + IconName.SlashSquare => "slash-square", + IconName.SlashSquareFill => "slash-square-fill", + IconName.Sliders => "sliders", + IconName.Sliders2 => "sliders2", + IconName.Sliders2Vertical => "sliders2-vertical", + IconName.Smartwatch => "smartwatch", + IconName.Snapchat => "snapchat", + IconName.Snow => "snow", + IconName.Snow2 => "snow2", + IconName.Snow3 => "snow3", + IconName.SortAlphaDown => "sort-alpha-down", + IconName.SortAlphaDownAlt => "sort-alpha-down-alt", + IconName.SortAlphaUp => "sort-alpha-up", + IconName.SortAlphaUpAlt => "sort-alpha-up-alt", + IconName.SortDown => "sort-down", + IconName.SortDownAlt => "sort-down-alt", + IconName.SortNumericDown => "sort-numeric-down", + IconName.SortNumericDownAlt => "sort-numeric-down-alt", + IconName.SortNumericUp => "sort-numeric-up", + IconName.SortNumericUpAlt => "sort-numeric-up-alt", + IconName.SortUp => "sort-up", + IconName.SortUpAlt => "sort-up-alt", + IconName.Soundwave => "soundwave", + IconName.Sourceforge => "sourceforge", + IconName.Speaker => "speaker", + IconName.SpeakerFill => "speaker-fill", + IconName.Speedometer => "speedometer", + IconName.Speedometer2 => "speedometer2", + IconName.Spellcheck => "spellcheck", + IconName.Spotify => "spotify", + IconName.Square => "square", + IconName.SquareFill => "square-fill", + IconName.SquareHalf => "square-half", + IconName.Stack => "stack", + IconName.StackOverflow => "stack-overflow", + IconName.Star => "star", + IconName.StarFill => "star-fill", + IconName.StarHalf => "star-half", + IconName.Stars => "stars", + IconName.Steam => "steam", + IconName.Stickies => "stickies", + IconName.StickiesFill => "stickies-fill", + IconName.Sticky => "sticky", + IconName.StickyFill => "sticky-fill", + IconName.Stop => "stop", + IconName.StopBtn => "stop-btn", + IconName.StopBtnFill => "stop-btn-fill", + IconName.StopCircle => "stop-circle", + IconName.StopCircleFill => "stop-circle-fill", + IconName.StopFill => "stop-fill", + IconName.Stoplights => "stoplights", + IconName.StoplightsFill => "stoplights-fill", + IconName.Stopwatch => "stopwatch", + IconName.StopwatchFill => "stopwatch-fill", + IconName.Strava => "strava", + IconName.Stripe => "stripe", + IconName.Subscript => "subscript", + IconName.Substack => "substack", + IconName.Subtract => "subtract", + IconName.Suitcase => "suitcase", + IconName.Suitcase2 => "suitcase2", + IconName.Suitcase2Fill => "suitcase2-fill", + IconName.SuitcaseFill => "suitcase-fill", + IconName.SuitcaseLg => "suitcase-lg", + IconName.SuitcaseLgFill => "suitcase-lg-fill", + IconName.SuitClub => "suit-club", + IconName.SuitClubFill => "suit-club-fill", + IconName.SuitDiamond => "suit-diamond", + IconName.SuitDiamondFill => "suit-diamond-fill", + IconName.SuitHeart => "suit-heart", + IconName.SuitHeartFill => "suit-heart-fill", + IconName.SuitSpade => "suit-spade", + IconName.SuitSpadeFill => "suit-spade-fill", + IconName.Sun => "sun", + IconName.SunFill => "sun-fill", + IconName.Sunglasses => "sunglasses", + IconName.Sunrise => "sunrise", + IconName.SunriseFill => "sunrise-fill", + IconName.Sunset => "sunset", + IconName.SunsetFill => "sunset-fill", + IconName.Superscript => "superscript", + IconName.SymmetryHorizontal => "symmetry-horizontal", + IconName.SymmetryVertical => "symmetry-vertical", + IconName.Table => "table", + IconName.Tablet => "tablet", + IconName.TabletFill => "tablet-fill", + IconName.TabletLandscape => "tablet-landscape", + IconName.TabletLandscapeFill => "tablet-landscape-fill", + IconName.Tag => "tag", + IconName.TagFill => "tag-fill", + IconName.Tags => "tags", + IconName.TagsFill => "tags-fill", + IconName.TaxiFront => "taxi-front", + IconName.TaxiFrontFill => "taxi-front-fill", + IconName.Telegram => "telegram", + IconName.Telephone => "telephone", + IconName.TelephoneFill => "telephone-fill", + IconName.TelephoneForward => "telephone-forward", + IconName.TelephoneForwardFill => "telephone-forward-fill", + IconName.TelephoneInbound => "telephone-inbound", + IconName.TelephoneInboundFill => "telephone-inbound-fill", + IconName.TelephoneMinus => "telephone-minus", + IconName.TelephoneMinusFill => "telephone-minus-fill", + IconName.TelephoneOutbound => "telephone-outbound", + IconName.TelephoneOutboundFill => "telephone-outbound-fill", + IconName.TelephonePlus => "telephone-plus", + IconName.TelephonePlusFill => "telephone-plus-fill", + IconName.TelephoneX => "telephone-x", + IconName.TelephoneXFill => "telephone-x-fill", + IconName.TencentQQ => "tencent-qq", + IconName.Terminal => "terminal", + IconName.TerminalDash => "terminal-dash", + IconName.TerminalFill => "terminal-fill", + IconName.TerminalPlus => "terminal-plus", + IconName.TerminalSplit => "terminal-split", + IconName.TerminalX => "terminal-x", + IconName.Textarea => "textarea", + IconName.TextareaResize => "textarea-resize", + IconName.TextareaT => "textarea-t", + IconName.TextCenter => "text-center", + IconName.TextIndentLeft => "text-indent-left", + IconName.TextIndentRight => "text-indent-right", + IconName.TextLeft => "text-left", + IconName.TextParagraph => "text-paragraph", + IconName.TextRight => "text-right", + IconName.Textwrap => "text-wrap", + IconName.Thermometer => "thermometer", + IconName.ThermometerHalf => "thermometer-half", + IconName.ThermometerHigh => "thermometer-high", + IconName.ThermometerLow => "thermometer-low", + IconName.ThermometerSnow => "thermometer-snow", + IconName.ThermometerSun => "thermometer-sun", + IconName.Threads => "threads", + IconName.ThreadsFill => "threads-fill", + IconName.ThreeCircle => "3-circle", + IconName.ThreeCircleFill => "3-circle-fill", + IconName.ThreeDots => "three-dots", + IconName.ThreeDotsVertical => "three-dots-vertical", + IconName.ThreeSquare => "3-square", + IconName.ThreeSquareFill => "3-square-fill", + IconName.Thunderbolt => "thunderbolt", + IconName.ThunderboltFill => "thunderbolt-fill", + IconName.Ticket => "ticket", + IconName.TicketDetailed => "ticket-detailed", + IconName.TicketDetailedFill => "ticket-detailed-fill", + IconName.TicketFill => "ticket-fill", + IconName.TicketPerforated => "ticket-perforated", + IconName.TicketPerforatedFill => "ticket-perforated-fill", + IconName.Tiktok => "tiktok", + IconName.Toggle2Off => "toggle2-off", + IconName.Toggle2On => "toggle2-on", + IconName.ToggleOff => "toggle-off", + IconName.ToggleOn => "toggle-on", + IconName.Toggles => "toggles", + IconName.Toggles2 => "toggles2", + IconName.Tools => "tools", + IconName.Tornado => "tornado", + IconName.TrainFreightFront => "train-freight-front", + IconName.TrainFreightFrontFill => "train-freight-front-fill", + IconName.TrainFront => "train-front", + IconName.TrainFrontFill => "train-front-fill", + IconName.TrainLighttrailFront => "train-lightrail-front", + IconName.TrainLighttrailFrontFill => "train-lightrail-front-fill", + IconName.Translate => "translate", + IconName.Transparency => "transparency", + IconName.Trash => "trash", + IconName.Trash2 => "trash2", + IconName.Trash2Fill => "trash2-fill", + IconName.Trash3 => "trash3", + IconName.Trash3Fill => "trash3-fill", + IconName.TrashFill => "trash-fill", + IconName.Tree => "tree", + IconName.TreeFill => "tree-fill", + IconName.Trello => "trello", + IconName.Triangle => "triangle", + IconName.TriangleFill => "triangle-fill", + IconName.TriangleHalf => "triangle-half", + IconName.Trophy => "trophy", + IconName.TrophyFill => "trophy-fill", + IconName.TropicalStorm => "tropical-storm", + IconName.Truck => "truck", + IconName.TruckFlatbed => "truck-flatbed", + IconName.TruckFront => "truck-front", + IconName.TruckFrontFill => "truck-front-fill", + IconName.Tsunami => "tsunami", + IconName.Tv => "tv", + IconName.TvFill => "tv-fill", + IconName.Twitch => "twitch", + IconName.Twitter => "twitter", + IconName.TwitterX => "twitter-x", + IconName.TwoCircle => "2-circle", + IconName.TwoCircleFill => "2-circle-fill", + IconName.TwoSquare => "2-square", + IconName.TwoSquareFill => "2-square-fill", + IconName.Type => "type", + IconName.TypeBold => "type-bold", + IconName.TypeH1 => "type-h1", + IconName.TypeH2 => "type-h2", + IconName.TypeH3 => "type-h3", + IconName.TypeH4 => "type-h4", + IconName.TypeH5 => "type-h5", + IconName.TypeH6 => "type-h6", + IconName.TypeItalic => "type-italic", + IconName.TypeStrikethrough => "type-strikethrough", + IconName.TypeUnderline => "type-underline", + IconName.Ubuntu => "ubuntu", + IconName.UiChecks => "ui-checks", + IconName.UiChecksGrid => "ui-checks-grid", + IconName.UiRadios => "ui-radios", + IconName.UiRadiosGrid => "ui-radios-grid", + IconName.Umbrella => "umbrella", + IconName.UmbrellaFill => "umbrella-fill", + IconName.Unindent => "unindent", + IconName.Union => "union", + IconName.Unity => "unity", + IconName.UniversalAccess => "universal-access", + IconName.UniversalAccessCircle => "universal-access-circle", + IconName.Unlock => "unlock", + IconName.UnlockFill => "unlock-fill", + IconName.Upc => "upc", + IconName.UpcScan => "upc-scan", + IconName.Upload => "upload", + IconName.Usb => "usb", + IconName.UsbC => "usb-c", + IconName.UsbCFill => "usb-c-fill", + IconName.UsbDrive => "usb-drive", + IconName.UsbDriveFill => "usb-drive-fill", + IconName.UsbFill => "usb-fill", + IconName.UsbMicro => "usb-micro", + IconName.UsbMicroFill => "usb-micro-fill", + IconName.UsbMini => "usb-mini", + IconName.UsbMiniFill => "usb-mini-fill", + IconName.UsbPlug => "usb-plug", + IconName.UsbPlugFill => "usb-plug-fill", + IconName.UsbSymbol => "usb-symbol", + IconName.Valentine => "valentine", + IconName.Valentine2 => "valentine2", + IconName.VectorPen => "vector-pen", + IconName.ViewList => "view-list", + IconName.ViewStacked => "view-stacked", + IconName.Vignette => "vignette", + IconName.Vimeo => "vimeo", + IconName.Vinyl => "vinyl", + IconName.VinylFill => "vinyl-fill", + IconName.Virus => "virus", + IconName.Virus2 => "virus2", + IconName.Voicemail => "voicemail", + IconName.VolumeDown => "volume-down", + IconName.VolumeDownFill => "volume-down-fill", + IconName.VolumeMute => "volume-mute", + IconName.VolumeMuteFill => "volume-mute-fill", + IconName.VolumeOff => "volume-off", + IconName.VolumeOffFill => "volume-off-fill", + IconName.VolumeUp => "volume-up", + IconName.VolumeUpFill => "volume-up-fill", + IconName.Vr => "vr", + IconName.Wallet => "wallet", + IconName.Wallet2 => "wallet2", + IconName.WalletFill => "wallet-fill", + IconName.Watch => "watch", + IconName.Water => "water", + IconName.Webcam => "webcam", + IconName.WebcamFill => "webcam-fill", + IconName.Wechat => "wechat", + IconName.Whatsapp => "whatsapp", + IconName.Wifi => "wifi", + IconName.Wifi1 => "wifi-1", + IconName.Wifi2 => "wifi-2", + IconName.WifiOff => "wifi-off", + IconName.Wikipedia => "wikipedia", + IconName.Wind => "wind", + IconName.Window => "window", + IconName.WindowDash => "window-dash", + IconName.WindowDesktop => "window-desktop", + IconName.WindowDock => "window-dock", + IconName.WindowFullscreen => "window-fullscreen", + IconName.WindowPlus => "window-plus", + IconName.Windows => "windows", + IconName.WindowSidebar => "window-sidebar", + IconName.WindowSplit => "window-split", + IconName.WindowStack => "window-stack", + IconName.WindowX => "window-x", + IconName.Wordpress => "wordpress", + IconName.Wrench => "wrench", + IconName.WrenchAdjustable => "wrench-adjustable", + IconName.WrenchAdjustableCircle => "wrench-adjustable-circle", + IconName.WrenchAdjustableCircleFill => "wrench-adjustable-circle-fill", + IconName.X => "x", + IconName.Xbox => "xbox", + IconName.XCircle => "x-circle", + IconName.XCircleFill => "x-circle-fill", + IconName.XDiamond => "x-diamond", + IconName.XDiamondFill => "x-diamond-fill", + IconName.XLg => "x-lg", + IconName.XOctagon => "x-octagon", + IconName.XOctagonFill => "x-octagon-fill", + IconName.XSquare => "x-square", + IconName.XSquareFill => "x-square-fill", + IconName.Yelp => "yelp", + IconName.YinYang => "yin-yang", + IconName.Youtube => "youtube", + IconName.ZeroCircleFill => "0-circle-fill", + IconName.ZeroSquare => "0-square", + IconName.ZeroSquareFill => "0-square-fill", + IconName.ZoomIn => "zoom-in", + IconName.ZoomOut => "zoom-out", + IconName.ZeroCircle => "0-circle", + + _ => "" + }; + } + + #endregion +} diff --git a/blazorbootstrap/Utilities/ColorBuilder.cs b/blazorbootstrap/Utilities/ColorBuilder.cs new file mode 100644 index 000000000..c0831b1c2 --- /dev/null +++ b/blazorbootstrap/Utilities/ColorBuilder.cs @@ -0,0 +1,20 @@ +namespace BlazorBootstrap; + +public static class ColorBuilder +{ + #region Properties, Indexers + + /// + /// Returns 6 categorical colors in the format #RRGGBB. + /// + /// + public static string[] CategoricalSixColors => new[] { "#0fb5ae", "#4046ca", "#f68511", "#de3d82", "#7e84fa", "#72e06a", "#147af3", "#7326d3", "#e8c600", "#e8c600", "#e8c600", "#e8c600" }; + + /// + /// Returns 12 categorical colors in the format #RRGGBB. + /// + /// + public static string[] CategoricalTwelveColors => new[] { "#0fb5ae", "#4046ca", "#f68511", "#de3d82", "#7e84fa", "#72e06a", "#147af3", "#7326d3", "#e8c600", "#cb5d00", "#008f5d", "#bce931" }; + + #endregion +} diff --git a/blazorbootstrap/Utilities/CssClassBuilder.cs b/blazorbootstrap/Utilities/CssClassBuilder.cs new file mode 100644 index 000000000..3e35d5adf --- /dev/null +++ b/blazorbootstrap/Utilities/CssClassBuilder.cs @@ -0,0 +1,45 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// License: MIT +// See https://github.com/microsoft/fluentui-blazor/blob/dev/src/Core/Utilities/CssBuilder.cs + +namespace BlazorBootstrap; + +public readonly struct CssClassBuilder +{ + private readonly HashSet classList; + private readonly string? @class; + + public CssClassBuilder(string? cssClass) + { + classList = new(); + @class = cssClass; + } + + public CssClassBuilder AddClass(string value) + { + if (!string.IsNullOrWhiteSpace(value)) + classList.Add(value); + + return this; + } + + public CssClassBuilder AddClass(string value, bool when) + { + if (when && !string.IsNullOrWhiteSpace(value)) + classList.Add(value); + + return this; + } + + public string? Build() + { + var classNames = string.IsNullOrWhiteSpace(@class) ? classList : classList.Union(new[] { @class }); + + if (!classNames.Any()) + return null; + + return string.Join(" ", classNames); + } + + public override string? ToString() => Build(); +} diff --git a/blazorbootstrap/Utilities/CssStyleBuilder.cs b/blazorbootstrap/Utilities/CssStyleBuilder.cs new file mode 100644 index 000000000..7a22f0bc5 --- /dev/null +++ b/blazorbootstrap/Utilities/CssStyleBuilder.cs @@ -0,0 +1,45 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// License: MIT +// See https://github.com/microsoft/fluentui-blazor/blob/dev/src/Core/Utilities/StyleBuilder.cs + +namespace BlazorBootstrap; + +public readonly struct CssStyleBuilder +{ + private readonly HashSet styleList; + private readonly string? style; + + public CssStyleBuilder(string? cssStyle) + { + styleList = new(); + style = cssStyle; + } + + public CssStyleBuilder AddStyle(string value) + { + if (!string.IsNullOrWhiteSpace(value)) + styleList.Add(value); + + return this; + } + + public CssStyleBuilder AddStyle(string value, bool when) + { + if (when && !string.IsNullOrWhiteSpace(value)) + styleList.Add(value); + + return this; + } + + public string? Build() + { + var styleNames = string.IsNullOrWhiteSpace(style) ? styleList : styleList.Union(new[] { style }); + + if (!styleNames.Any()) + return null; + + return string.Join(";", styleNames); + } + + public override string? ToString() => Build(); +} diff --git a/blazorbootstrap/Utilities/IdGenerator.cs b/blazorbootstrap/Utilities/IdGenerator.cs new file mode 100644 index 000000000..a47ab628a --- /dev/null +++ b/blazorbootstrap/Utilities/IdGenerator.cs @@ -0,0 +1,69 @@ +namespace BlazorBootstrap; + +/// +/// An interface that generates unique IDs. +/// +public interface IIdGenerator +{ + #region Methods + + /// + /// Gets the next unique ID. + /// + string GetNextId(); + + #endregion +} + +/// +/// Generates efficient base32-encoded IDs. +/// +/// +/// +public sealed class IdGenerator : IIdGenerator +{ + #region Fields and Constants + + // Base32 encoding - in ascii sort order for easy text based sorting + // Ref: https://stackoverflow.com/a/37271406 + private static readonly char[] encode32Chars = "ABCDEFGHIJKLMNOPQRSTUV0123456789".ToCharArray(); + + /// + /// The last generated ID. + /// + private static long lastId = DateTime.UtcNow.Ticks; + + #endregion + + #region Methods + + /// + /// Generates a base32-encoded ID. + /// + /// The base32-encoded ID. + public string GetNextId() => GenerateId(Interlocked.Increment(ref lastId)); + + private static string GenerateId(long id) + { + return string.Create(13, id, (buffer, value) => + { + char[] encode32Chars = IdGenerator.encode32Chars; + + buffer[12] = encode32Chars[value & 31]; + buffer[11] = encode32Chars[(value >> 5) & 31]; + buffer[10] = encode32Chars[(value >> 10) & 31]; + buffer[9] = encode32Chars[(value >> 15) & 31]; + buffer[8] = encode32Chars[(value >> 20) & 31]; + buffer[7] = encode32Chars[(value >> 25) & 31]; + buffer[6] = encode32Chars[(value >> 30) & 31]; + buffer[5] = encode32Chars[(value >> 35) & 31]; + buffer[4] = encode32Chars[(value >> 40) & 31]; + buffer[3] = encode32Chars[(value >> 45) & 31]; + buffer[2] = encode32Chars[(value >> 50) & 31]; + buffer[1] = encode32Chars[(value >> 55) & 31]; + buffer[0] = encode32Chars[(value >> 60) & 31]; + }); + } + + #endregion +} diff --git a/blazorbootstrap/_Imports.razor b/blazorbootstrap/_Imports.razor new file mode 100644 index 000000000..c3743de54 --- /dev/null +++ b/blazorbootstrap/_Imports.razor @@ -0,0 +1,4 @@ +@using Microsoft.AspNetCore.Components.Forms; +@using Microsoft.AspNetCore.Components.Routing; +@using Microsoft.AspNetCore.Components.Web; +@using BlazorBootstrap; \ No newline at end of file diff --git a/blazorbootstrap/wwwroot/blazor.bootstrap.css b/blazorbootstrap/wwwroot/blazor.bootstrap.css new file mode 100644 index 000000000..8de10958b --- /dev/null +++ b/blazorbootstrap/wwwroot/blazor.bootstrap.css @@ -0,0 +1,550 @@ +:root { + /* preload */ + --bb-preload-modal-z-index: 2055; + --bb-preload-modal-backdrop-z-index: 2050; + /* confirm dialog */ + --bb-confirm-dialog-z-index: 2045; + --bb-confirm-dialog-backdrop-z-index: 2040; + /* offcanvas */ + --bb-offcanvas-close-icon-font-size: 2rem; + --bb-offcanvas-footer-padding-y: 1rem; + --bb-offcanvas-footer-padding-x: 1rem; + --bb-offcanvas-horizontal-width-sm: 300px; + --bb-offcanvas-horizontal-width-lg: 800px; + /* sidebar */ + --bb-violet: #712cf9; + --bb-sidebar-width: 270px; + --bb-sidebar-collapsed-width: 50px; + --bb-sidebar-background-color: rgba(255, 255, 255, 1); + --bb-sidebar-top-row-background-color: var(--bb-violet); + --bb-sidebar-top-row-border-color: var(--bb-violet); + --bb-sidebar-title-text-color: rgb(255,255,255); + --bb-sidebar-brand-icon-color: rgb(255,255,255); + --bb-sidebar-brand-image-width: 24px; + --bb-sidebar-brand-image-height: 24px; + --bb-sidebar-title-badge-text-color: var(--bb-violet); + --bb-sidebar-title-badge-background-color: rgb(255,255,255); + --bb-sidebar-navbar-toggler-icon-color: var(--bb-violet); + --bb-sidebar-navbar-toggler-background-color: rgb(255,255,255); + --bb-sidebar-content-border-color: rgb(214,213,213); + --bb-sidebar-nav-item-text-color: rgba(0,0,0,0.9); + --bb-sidebar-nav-item-text-active-color-rgb: 112.520718,44.062154,249.437846; + --bb-sidebar-nav-item-text-hover-color: rgba(var(--bb-sidebar-nav-item-text-active-color-rgb),0.9); + --bb-sidebar-nav-item-text-active-color: rgba(var(--bb-sidebar-nav-item-text-active-color-rgb),0.9); + --bb-sidebar-nav-item-background-hover-color: rgba(var(--bb-sidebar-nav-item-text-active-color-rgb),0.08); + --bb-sidebar-nav-item-group-background-color: rgba(var(--bb-sidebar-nav-item-text-active-color-rgb),0.08); + /* custom tooltip */ + --bb-tooltip-primary: var(--bs-primary); + --bb-tooltip-secondary: var(--bs-secondary); + --bb-tooltip-success: var(--bs-success); + --bb-tooltip-danger: var(--bs-danger); + --bb-tooltip-warning: var(--bs-warning); + --bb-tooltip-info: var(--bs-info); + --bb-tooltip-light: var(--bs-light); + --bb-tooltip-dark: var(--bs-dark); + --bb-tooltip-color-white: var(--bs-white); + --bb-tooltip-color-dark: var(--bs-black); + /* border */ + --bs-border-radius-xs: 0.125rem; + --bs-border-radius-md: 0.375rem; + /* table */ + --bb-table-sticky-background-color: #fff; + --bb-table-freeze-column-background-color: #efefef; + /* callout */ + --bb-callout-link: 10, 88, 202; + --bb-callout-code-color: #ab296a; + /* sidebar2 */ + --bb-sidebar2-width: 270px; + --bb-sidebar2-collapsed-width: 50px; + --bb-sidebar2-background-color: rgba(255, 255, 255, 1); + --bb-sidebar2-top-row-background-color: var(--bb-violet); + --bb-sidebar2-top-row-border-color: var(--bb-violet); + --bb-sidebar2-title-text-color: rgb(255,255,255); + --bb-sidebar2-brand-icon-color: rgb(255,255,255); + --bb-sidebar2-brand-image-width: 24px; + --bb-sidebar2-brand-image-height: 24px; + --bb-sidebar2-title-badge-text-color: var(--bb-violet); + --bb-sidebar2-title-badge-background-color: rgb(255,255,255); + --bb-sidebar2-navbar-toggler-icon-color: var(--bb-violet); + --bb-sidebar2-navbar-toggler-background-color: rgb(255,255,255); + --bb-sidebar2-content-border-color: rgb(214,213,213); + --bb-sidebar2-nav-item-text-color: rgba(0,0,0,0.9); + --bb-sidebar2-nav-item-text-active-color-rgb: 112.520718,44.062154,249.437846; + --bb-sidebar2-nav-item-text-hover-color: rgba(var(--bb-sidebar2-nav-item-text-active-color-rgb),0.9); + --bb-sidebar2-nav-item-text-active-color: rgba(var(--bb-sidebar2-nav-item-text-active-color-rgb),0.9); + --bb-sidebar2-nav-item-background-hover-color: rgba(var(--bb-sidebar2-nav-item-text-active-color-rgb),0.08); + --bb-sidebar2-nav-item-group-background-color: rgba(var(--bb-sidebar2-nav-item-text-active-color-rgb),0.08); +} + +/* preload */ +.modal-page-loading { + z-index: var(--bb-preload-modal-z-index) !important; +} + +.modal-backdrop-page-loading { + z-index: var(--bb-preload-modal-backdrop-z-index) !important; +} + +.modal-content-page-loading { + background-color: inherit !important; + border: inherit !important; +} + +/* confirm dialog */ +.modal-confirmation { + z-index: var(--bb-confirm-dialog-z-index) !important; +} + +.modal-backdrop-confirmation { + z-index: var(--bb-confirm-dialog-backdrop-z-index) !important; +} + +/* offcanvas */ +.offcanvas-footer { + display: flex; + align-items: center; + padding: var(--bb-offcanvas-footer-padding-y) var(--bb-offcanvas-footer-padding-x); +} + +.offcanvas-start.bb-offcanvas-sm, +.offcanvas-end.bb-offcanvas-sm { + width: var(--bb-offcanvas-horizontal-width-sm); +} + +.offcanvas-start.bb-offcanvas-lg, +.offcanvas-end.bb-offcanvas-lg { + width: var(--bb-offcanvas-horizontal-width-lg); +} + +/* grid - filters */ +table button.dropdown-toggle.bb-grid-filter::after { + content: none !important; +} + +.filter-symbol { + width: 2.25rem; + display: inline-block; +} + +.bb-grid-pagination-text { + padding: .375rem; +} + +/* grid - fixed header */ +.bb-table { + /* NOTE: intentionally overriding the behavior */ + --bs-table-color: inherit !important; + --bs-table-bg: inherit !important; +} + +.bb-table-sticky { + border-collapse: collapse; + border-spacing: 0; + margin-bottom: 0rem; +} + + .bb-table-sticky > thead > tr { + border-top-width: 0 !important; + border-bottom-width: 0 !important; + } + + .bb-table-sticky > thead > tr > th { + background-color: var(--bb-table-sticky-background-color); + top: 0px; + position: sticky; + border-style: solid; + border-color: var(--bs-table-border-color); + box-shadow: inset 0 1px 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color); + } + + .bb-table-sticky > thead > tr:nth-child(2) > th { + box-shadow: inset 0 0 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color); + } + + /* below CSS is applicable, if filters are enabled. */ + .bb-table-sticky > thead > tr:nth-child(2) > th { + top: 40px; + } + + .bb-table-sticky > tbody > tr:nth-child(1) { + border-top-width: 0 !important; + } + + .bb-table-sticky > thead > tr > th > div > ul.dropdown-menu.show { + top: 6px !important; + } + +/* freeze columns */ +table > thead > tr > th.freeze-column { + position: sticky; + background-color: var(--bb-table-freeze-column-background-color); + z-index: 5; + border-left-width: 0px !important; + border-right-width: 0px !important; +} + +table > thead > tr:nth-child(2) > th.freeze-column { + position: sticky; + background-color: var(--bb-table-freeze-column-background-color); + z-index: 5; +} + +/* freeze column left */ +/* th: row-1 */ +table > thead > tr > th:not(.freeze-column-right):first-child.freeze-column { + box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset 0 1px 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color); +} + +table > thead > tr > th:not(.freeze-column-right).freeze-column { + box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset -1px 0 0 var(--bs-table-border-color), inset 0 1px 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color); +} + +table > thead > tr > th:not(.freeze-column-right):last-child.freeze-column { + box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color), inset -1px 0 0 var(--bs-table-border-color); +} + +/* th: row-2 */ +table > thead > tr:nth-child(2) > th:not(.freeze-column-right):first-child.freeze-column { + box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset 0 0 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color); +} + +table > thead > tr:nth-child(2) > th:not(.freeze-column-right).freeze-column { + box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset -1px 0 0 var(--bs-table-border-color), inset 0 0 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color); +} + +table > thead > tr:nth-child(2) > th:not(.freeze-column-right):last-child.freeze-column { + box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset 0 0 0 var(--bs-table-border-color), inset -1px 0 0 var(--bs-table-border-color); +} + +table > tbody > tr > td.freeze-column { + position: sticky; + background-color: var(--bb-table-freeze-column-background-color); + z-index: 4; + border-left-width: 0px !important; + border-right-width: 0px !important; +} + +table > tbody > tr > td:not(.freeze-column-right):first-child.freeze-column { + box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset 0 0 0 var(--bs-table-border-color), inset 0 0 0 var(--bs-table-border-color); +} + +table > tbody > tr > td:not(.freeze-column-right).freeze-column { + box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset 0 0 0 var(--bs-table-border-color), inset -1px 0 0 var(--bs-table-border-color); +} + +table > tbody > tr > td:not(.freeze-column-right):last-child.freeze-column { + box-shadow: inset 0 0 0 var(--bs-table-border-color), inset 0 0 0 var(--bs-table-border-color), inset 0 0 0 var(--bs-table-border-color); +} + +/* freeze column right */ +table > thead > tr > th:is(.freeze-column-right) { + box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset 0 1px 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color); +} + +table > thead > tr:nth-child(2) > th:is(.freeze-column-right) { + box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset 0 0 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color); +} + +table > tbody > tr > td:is(.freeze-column-right) { + box-shadow: inset 1px 0 0 var(--bs-table-border-color); +} + +/* below CSS is applicable, if scrollLeft > 0 */ +/* thead: first-row -> first th */ +table > thead > tr > th:not(.freeze-column-right):first-child.freeze-column-active { + box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset 0 1px 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color); +} +/* thead: second-row -> first th */ +table > thead > tr:nth-child(2) > th:not(.freeze-column-right):first-child.freeze-column-active { + box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset 0 0 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color); +} +/* thead: first-row -> all th's */ +table > thead > tr > th:not(.freeze-column-right).freeze-column-active { + box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset -1px 0 0 var(--bs-table-border-color), inset 0 1px 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color); +} +/* thead: second-row -> all th's */ +table > thead > tr:nth-child(2) > th:not(.freeze-column-right).freeze-column-active { + box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset -1px 0 0 var(--bs-table-border-color), inset 0 0 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color); +} +/* thead: first-row -> all th's, right freeze columns only */ +table > thead > tr > th:is(.freeze-column-right).freeze-column-active { + box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset 0 1px 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color); +} +/* thead: second-row -> all th's, right freeze columns only */ +table > thead > tr:nth-child(2) > th:is(.freeze-column-right).freeze-column-active { + box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset 0 0 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color); +} + +/* tbody: every row -> first td, except right freeze columns */ +table > tbody > tr > td:not(.freeze-column-right):first-child.freeze-column-active { + box-shadow: inset 1px 0 0 var(--bs-table-border-color); +} +/* tbody: every row -> all td's, except right freeze columns */ +table > tbody > tr > td:not(.freeze-column-right).freeze-column-active { + box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset -1px 0 0 var(--bs-table-border-color); +} + +/* tbody: every row -> all td's, right freeze columns only */ +table > tbody > tr > td:is(.freeze-column-right).freeze-column-active { + box-shadow: inset 1px 0 0 var(--bs-table-border-color); +} + +/* scrollbar */ +.v-scroll-auto { + overflow-y: auto !important; +} + +.scroll-hidden { + overflow: hidden; +} + +.bb-scrollbar { + scrollbar-color: rgba(0,0,0,.2) transparent; + scrollbar-color: rgba(0, 0, 0, .2) transparent; + scrollbar-width: thin +} + + .bb-scrollbar.scroll-auto-hide { + scrollbar-color: transparent transparent + } + + .bb-scrollbar.scroll-auto-hide:hover { + scrollbar-color: rgba(0,0,0,.2) transparent; + scrollbar-color: rgba(0, 0, 0, .2) transparent + } + + .bb-scrollbar::-webkit-scrollbar { + width: 18px; + height: 18px; + } + + .bb-scrollbar::-webkit-scrollbar-thumb { + border: 6px solid transparent; + background: rgba(0,0,0,.2); + background: rgba(0, 0, 0, .2); + border-radius: 10px; + background-clip: padding-box + } + + .bb-scrollbar::-webkit-scrollbar-corner { + background: transparent; + } + + .bb-scrollbar::-webkit-scrollbar-thumb:vertical { + min-height: 30px + } + + .bb-scrollbar::-webkit-scrollbar-thumb:horizontal { + min-width: 30px + } + + .bb-scrollbar.scroll-auto-hide::-webkit-scrollbar-thumb { + background: transparent; + background-clip: padding-box + } + + .bb-scrollbar.scroll-auto-hide:hover::-webkit-scrollbar-thumb { + background: rgba(0,0,0,.2); + background: rgba(0, 0, 0, .2); + background-clip: padding-box + } + + .bb-scrollbar::-webkit-scrollbar-thumb { + border: 6px solid transparent; + background: rgba(0,0,0,.2); + background: rgba(0, 0, 0, .2); + border-radius: 10px; + background-clip: padding-box; + } + + .bb-scrollbar::-webkit-scrollbar-thumb:hover { + background: rgba(0,0,0,.3); + background: rgba(0, 0, 0, .3); + background-clip: padding-box; + border: 4px solid transparent + } + +.bb-scrollbar-hidden { + -ms-overflow-style: none; + scrollbar-width: none +} + + .bb-scrollbar-hidden::-webkit-scrollbar { + width: 0 + } + +/* layout */ +@media (min-width: 641px) { + .bb-page { + flex-direction: row !important; + } + + .bb-top-row { + position: sticky; + top: 0; + z-index: 1; + } + + .top-row, article { + padding-left: 2rem !important; + padding-right: 1.5rem !important; + } +} + +.bb-page { + position: relative; + display: flex; + flex-direction: column; +} + +main { + flex: 1; + overflow-x: hidden; + height: 100vh; +} + +.main { + flex: 1; + overflow-x: hidden; + height: 100vh; +} + +.bb-top-row { + background-color: #f7f7f7; + border-bottom: 1px solid #d6d5d5; + justify-content: flex-end; + height: 3.5rem; + display: flex; + align-items: center; +} + +/* tooltip */ +.bb-tooltip-primary { + --bs-tooltip-bg: var(--bb-tooltip-primary); + --bs-tooltip-color: var(--bb-tooltip-color-white); +} + +.bb-tooltip-secondary { + --bs-tooltip-bg: var(--bb-tooltip-secondary); + --bs-tooltip-color: var(--bb-tooltip-color-white); +} + +.bb-tooltip-success { + --bs-tooltip-bg: var(--bb-tooltip-success); + --bs-tooltip-color: var(--bb-tooltip-color-white); +} + +.bb-tooltip-danger { + --bs-tooltip-bg: var(--bb-tooltip-danger); + --bs-tooltip-color: var(--bb-tooltip-color-white); +} + +.bb-tooltip-warning { + --bs-tooltip-bg: var(--bb-tooltip-warning); + --bs-tooltip-color: var(--bb-tooltip-color-dark); +} + +.bb-tooltip-info { + --bs-tooltip-bg: var(--bb-tooltip-info); + --bs-tooltip-color: var(--bb-tooltip-color-dark); +} + +.bb-tooltip-light { + --bs-tooltip-bg: var(--bb-tooltip-light); + --bs-tooltip-color: var(--bb-tooltip-color-dark); +} + +.bb-tooltip-dark { + --bs-tooltip-bg: var(--bb-tooltip-dark); + --bs-tooltip-color: var(--bb-tooltip-color-white); +} + +/* button */ +.btn-xs { + --bs-btn-padding-y: 0.125rem; + --bs-btn-padding-x: 0.25rem; + --bs-btn-font-size: 0.75rem; + --bs-btn-border-radius: var(--bs-border-radius-sm); +} + +.btn-sm { + --bs-btn-padding-y: 0.25rem; + --bs-btn-padding-x: 0.5rem; + --bs-btn-font-size: 0.875rem; + --bs-btn-border-radius: var(--bs-border-radius-sm); +} + +.btn-md { + --bs-btn-padding-y: 0.375rem; + --bs-btn-padding-x: 0.75rem; + --bs-btn-font-size: 1rem; + --bs-btn-border-radius: var(--bs-border-radius-md); +} + +.btn-lg { + --bs-btn-padding-y: 0.5rem; + --bs-btn-padding-x: 1rem; + --bs-btn-font-size: 1.25rem; + --bs-btn-border-radius: var(--bs-border-radius-lg); +} + +.btn-xl { + --bs-btn-padding-y: 0.625rem; + --bs-btn-padding-x: 1.25rem; + --bs-btn-font-size: 1.5rem; + --bs-btn-border-radius: var(--bs-border-radius-lg); +} + +/* button > spinner */ +.spinner-border-xs { + --bs-spinner-width: 0.5rem; + --bs-spinner-height: 0.5rem; + --bs-spinner-border-width: 0.125em; + --bs-spinner-vertical-align: 0; +} + +.spinner-border-sm { + --bs-spinner-width: 0.75rem; + --bs-spinner-height: 0.75rem; + --bs-spinner-border-width: 0.15em; + --bs-spinner-vertical-align: 0; +} + +.spinner-border-md { + --bs-spinner-width: 1rem; + --bs-spinner-height: 1rem; + --bs-spinner-border-width: 0.175em; + --bs-spinner-vertical-align: -0.125em; +} + +.spinner-border-lg { + --bs-spinner-width: 1.25rem; + --bs-spinner-height: 1.25rem; + --bs-spinner-border-width: 0.2em; + --bs-spinner-vertical-align: -0.125em; +} + +.spinner-border-xl { + --bs-spinner-width: 1.5rem; + --bs-spinner-height: 1.5rem; + --bs-spinner-border-width: 0.225em; + --bs-spinner-vertical-align: -0.125em; +} + +/* range */ +.bb-form-range-input { + appearance: auto !important; +} + +.bb-range-data-list { + display: flex; + flex-direction: column; + justify-content: space-between; + writing-mode: vertical-lr; + width: 100%; +} + +/* pdf viewer */ +.pdf-viewer-dropdown-toggle::after { + content: inherit !important; +} diff --git a/blazorbootstrap/wwwroot/blazor.bootstrap.js b/blazorbootstrap/wwwroot/blazor.bootstrap.js new file mode 100644 index 000000000..72b087e24 --- /dev/null +++ b/blazorbootstrap/wwwroot/blazor.bootstrap.js @@ -0,0 +1,1336 @@ +if (!window.blazorBootstrap) { + window.blazorBootstrap = {}; +} + +if (!window.blazorChart) { + window.blazorChart = {}; +} + +if (!window.blazorChart.line) { + window.blazorChart.line = {}; +} + +if (!window.blazorChart.bar) { + window.blazorChart.bar = {}; +} + +if (!window.blazorChart.doughnut) { + window.blazorChart.doughnut = {}; +} + +if (!window.blazorChart.pie) { + window.blazorChart.pie = {}; +} + +window.blazorBootstrap = { + de: { + DELETE: 46, + BACKSPACE: 8, + TAB: 9, + ENTER: 13, + ESCAPE: 27, + ARROWLEFT: 37, + ARROWUP: 38, + ARROWRIGHT: 39, + ARROWDOWN: 40, + SPACE: 32, + END: 35, + HOME: 36, + PAGE_UP: 33, + PAGE_DOWN: 34, + PAGEUP: 33, + PAGEDOWN: 34 + }, + fe: { + DELETE: "Delete", + BACKSPACE: "Backspace", + TAB: "Tab", + ENTER: "Enter", + ESC: "Escape", + ARROWLEFT: "ArrowLeft", + ARROWUP: "ArrowUp", + ARROWRIGHT: "ArrowRight", + ARROWDOWN: "ArrowDown", + SPACE: "Space", + END: "End", + HOME: "Home", + PAGE_UP: "PageUp", + PAGE_DOWN: "PageDown" + }, + ge: { + CTRL: "CTRL", + ALT: "ALT", + SHIFT: "SHIFT" + }, + alert: { + initialize: (elementId, dotNetHelper) => { + let alertEl = document.getElementById(elementId); + if (alertEl == null) + return; + + alertEl.addEventListener('close.bs.alert', function () { + dotNetHelper.invokeMethodAsync('bsCloseAlert'); + }); + alertEl.addEventListener('closed.bs.alert', function () { + dotNetHelper.invokeMethodAsync('bsClosedAlert'); + }); + + bootstrap?.Alert?.getOrCreateInstance(alertEl); + }, + close: (elementId) => { + let alertEl = document.getElementById(elementId); + if (alertEl != null) + bootstrap?.Alert?.getOrCreateInstance(alertEl)?.close(); + }, + dispose: (elementId) => { + let alertEl = document.getElementById(elementId); + if (alertEl != null) + bootstrap?.Alert?.getOrCreateInstance(alertEl)?.dispose(); + } + }, + autocomplete: { + initialize: (elementRef, dotNetHelper) => { + let dropdownToggleEl = elementRef; + if (dropdownToggleEl == null) + return; + + dropdownToggleEl.addEventListener('show.bs.dropdown', function () { + dotNetHelper.invokeMethodAsync('bsShowAutocomplete'); + }); + dropdownToggleEl.addEventListener('shown.bs.dropdown', function () { + dotNetHelper.invokeMethodAsync('bsShownAutocomplete'); + }); + dropdownToggleEl.addEventListener('hide.bs.dropdown', function () { + dotNetHelper.invokeMethodAsync('bsHideAutocomplete'); + }); + dropdownToggleEl.addEventListener('hidden.bs.dropdown', function () { + dotNetHelper.invokeMethodAsync('bsHiddenAutocomplete'); + }); + + bootstrap?.Dropdown?.getOrCreateInstance(elementRef); + }, + show: (elementRef) => { + if (elementRef != null) + bootstrap?.Dropdown?.getOrCreateInstance(elementRef)?.show(); + }, + hide: (elementRef) => { + if (elementRef != null) + bootstrap?.Dropdown?.getOrCreateInstance(elementRef)?.hide(); + }, + dispose: (elementRef) => { + if (elementRef != null) + bootstrap?.Dropdown?.getOrCreateInstance(elementRef)?.dispose(); + }, + focusListItem: (ul, key, startIndex) => { + if (!ul || startIndex < -1) return; + + let childNodes = ul.getElementsByTagName('LI'); + + if (!childNodes || childNodes.length === 0) return; + + if (startIndex === undefined || startIndex === null) + startIndex = -1; + + let nextSelectedIndex = startIndex; + + if (key === window.blazorBootstrap.fe.ARROWDOWN) { + if (nextSelectedIndex < childNodes.length - 1) + nextSelectedIndex++; + } + else if (key === window.blazorBootstrap.fe.ARROWUP) { + if (nextSelectedIndex > 0 && nextSelectedIndex <= childNodes.length - 1) + nextSelectedIndex--; + } + else if (key === window.blazorBootstrap.fe.HOME) { + nextSelectedIndex = 0; + } + else if (key === window.blazorBootstrap.fe.END) { + nextSelectedIndex = childNodes.length - 1; + } + else + return; + + // reset li element focus + let highlighted = ul.querySelectorAll('.dropdown-item-highlight'); + if (highlighted.length) { + for (let i = 0; i < highlighted.length; i++) { + highlighted[i].classList.remove('dropdown-item-highlight'); + } + } + + // focus on the next li element + if (nextSelectedIndex >= 0 && nextSelectedIndex <= childNodes.length - 1) { + childNodes[nextSelectedIndex].classList.add('dropdown-item-highlight'); + ul.scrollTop = childNodes[nextSelectedIndex].offsetTop; + } + + return nextSelectedIndex; + } + }, + collapse: { + initialize: (elementId, parent, toggle, dotNetHelper) => { + let collapseEl = document.getElementById(elementId); + if (collapseEl == null) + return; + + collapseEl.addEventListener('show.bs.collapse', (event) => { + dotNetHelper.invokeMethodAsync('bsShowCollapse'); + }); + collapseEl.addEventListener('shown.bs.collapse', (event) => { + dotNetHelper.invokeMethodAsync('bsShownCollapse'); + }); + collapseEl.addEventListener('hide.bs.collapse', (event) => { + dotNetHelper.invokeMethodAsync('bsHideCollapse'); + }); + collapseEl.addEventListener('hidden.bs.collapse', (event) => { + dotNetHelper.invokeMethodAsync('bsHiddenCollapse'); + }); + + let options = { parent: parent, toggle: toggle }; + bootstrap?.Collapse?.getOrCreateInstance(collapseEl, options); + }, + show: (elementId) => { + let collapseEl = document.getElementById(elementId); + if (collapseEl != null) + bootstrap?.Collapse?.getOrCreateInstance(collapseEl)?.show(); + }, + hide: (elementId) => { + let collapseEl = document.getElementById(elementId); + if (collapseEl != null) + bootstrap?.Collapse?.getOrCreateInstance(collapseEl)?.hide(); + }, + toggle: (elementId) => { + let collapseEl = document.getElementById(elementId); + if (collapseEl != null) + bootstrap?.Collapse?.getOrCreateInstance(collapseEl)?.toggle(); + }, + dispose: (elementId) => { + let collapseEl = document.getElementById(elementId); + if (collapseEl != null) + bootstrap?.Collapse?.getOrCreateInstance(collapseEl)?.dispose(); + } + }, + confirmDialog: { + show: (elementId, autoFocusYesButton) => { + let confirmDialogEl = document.getElementById(elementId); + if (confirmDialogEl != null) + setTimeout(() => confirmDialogEl.classList.add('show'), 90); // added delay for server + + let bodyEl = document.getElementsByTagName('body'); + if (bodyEl.length > 0) + bodyEl[0].style['overflow'] = 'hidden'; + + if (!autoFocusYesButton) + return; + + let yesButtonEl = document.getElementById(`bb-confirm-${elementId}`); + if (yesButtonEl) + yesButtonEl.focus(); + }, + hide: (elementId) => { + let confirmDialogEl = document.getElementById(elementId); + if (confirmDialogEl != null) + confirmDialogEl.classList.remove('show'); + + let bodyEl = document.getElementsByTagName('body'); + if (bodyEl.length > 0) + bodyEl[0].style['overflow'] = 'auto'; + } + }, + currencyInput: { + initialize: (elementId, isFloat, allowNegativeNumbers, decimalSeperator) => { + let currencyEl = document.getElementById(elementId); + + currencyEl?.addEventListener('keydown', function (event) { + + switch (event.code) { + case "Backspace": + case "Tab": + case "Enter": + case "ArrowLeft": + case "ArrowUp": + case "ArrowRight": + case "ArrowDown": + case "Delete": + return; + } + + let validChars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; + + if (isFloat) { + validChars.push(decimalSeperator); + } + + if (allowNegativeNumbers) { + validChars.push('-'); + } + + if (!validChars.includes(event.key)) + event.preventDefault(); + }); + + currencyEl?.addEventListener('beforeinput', function (event) { + if (event.inputType === 'insertFromPaste' || event.inputType === 'insertFromDrop') { + + let validChars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; + + if (isFloat) { + validChars.push(decimalSeperator); + } + + if (allowNegativeNumbers) { + validChars.push('-'); + } + + if (event.data && event.data.length > 0) { + if (blazorBootstrap.hasInvalidChars(event.data, validChars)) + event.preventDefault(); + } + } + }); + + currencyEl?.addEventListener('focusin', function (event) { + if (currencyEl.dataset.currentValue) + currencyEl.value = currencyEl.dataset.currentValue; // assign original value + else + currencyEl.value = ''; // don't assign zero. + }); + + // this event is fired after OnChange event + currencyEl?.addEventListener('focusout', function (event) { + // scenario: + // without changing the value focusout event is triggered + if (typeof (currencyEl.dataset.currentValue) === 'undefined' || currencyEl.dataset.currentValue === currencyEl.value) { + currencyEl.value = currencyEl.dataset.currentFormattedValue; // assign formatted value + } + }); + }, + getFormattedValue: (value, locales, options) => { + + let extractedValue = value.toString(); + let parsedValue = Number.parseFloat(extractedValue); + + if (isNaN(parsedValue)) + parsedValue = 0; + + return new Intl.NumberFormat(locales, options).format(parsedValue); + } + }, + dateInput: { + getFormattedValue: (value) => { + let extractedValue = value.toString(); + if (extractedValue.length === 0) + return ''; + + let isValid = !isNaN(Date.parse(extractedValue)); + if (!isValid) + return ''; + + let _date = new Date(extractedValue); + return _date.toLocaleDateString(); + }, + setValue: (elementId, value) => { + document.getElementById(elementId).value = value; + } + }, + dropdown: { + dispose: (elementId) => { + let dropdownEl = document.getElementById(elementId); + if (dropdownEl != null) + bootstrap?.Dropdown?.getOrCreateInstance(dropdownEl)?.dispose(); + }, + hide: (elementId) => { + let dropdownEl = document.getElementById(elementId); + if (dropdownEl != null) + bootstrap?.Dropdown?.getOrCreateInstance(dropdownEl)?.hide(); + }, + initialize: (elementId, dotNetHelper) => { + let dropdownEl = document.getElementById(elementId); + if (dropdownEl == null) + return; + + dropdownEl.addEventListener('hide.bs.dropdown', function () { + dotNetHelper.invokeMethodAsync('bsHideDropdown'); + }); + dropdownEl.addEventListener('hidden.bs.dropdown', function () { + dotNetHelper.invokeMethodAsync('bsHiddenDropdown'); + }); + dropdownEl.addEventListener('show.bs.dropdown', function () { + dotNetHelper.invokeMethodAsync('bsShowDropdown'); + }); + dropdownEl.addEventListener('shown.bs.dropdown', function () { + dotNetHelper.invokeMethodAsync('bsShownDropdown'); + }); + + bootstrap?.Dropdown?.getOrCreateInstance(dropdownEl); + }, + show: (elementId) => { + let dropdownEl = document.getElementById(elementId); + if (dropdownEl != null) + bootstrap?.Dropdown?.getOrCreateInstance(dropdownEl)?.show(); + }, + toggle: (elementId) => { + let dropdownEl = document.getElementById(elementId); + if (dropdownEl != null) + bootstrap?.Dropdown?.getOrCreateInstance(dropdownEl)?.toggle(); + }, + update: (elementId) => { + let dropdownEl = document.getElementById(elementId); + if (dropdownEl != null) + bootstrap?.Dropdown?.getOrCreateInstance(dropdownEl)?.update(); + } + }, + grid: { + checkOrUnCheckAll: (cssSelector, isChecked) => { + let chkEls = document.querySelectorAll(cssSelector); + if (chkEls.length === 0) + return; + + chkEls.forEach((ele, index) => { + ele.checked = isChecked; + }); + }, + scroll: (elementId) => { + let tableEl = document.getElementById(elementId); + if (tableEl === null) + return; + + if (tableEl.parentElement.scrollLeft === 0) { + let colEls = tableEl.querySelectorAll('.freeze-column'); + if (colEls.length === 0) + return; + + colEls.forEach((e, i) => { + e.classList.remove('freeze-column-active'); + }); + } + else if (tableEl.parentElement.scrollLeft > 0) { + let colEls = tableEl.querySelectorAll('.freeze-column'); + if (colEls.length === 0) + return; + + colEls.forEach((e, i) => { + e.classList.add('freeze-column-active'); + }); + } + }, + setSelectAllCheckboxState: (elementId, state) => { + let checkboxEl = document.getElementById(elementId); + if (checkboxEl != null) { + if (state === 1) { // checked + checkboxEl.checked = true; + checkboxEl.indeterminate = false; + } + else if (state === 2) { // unchecked + checkboxEl.checked = false; + checkboxEl.indeterminate = false; + } + else if (state === 3) { // indeterminate + checkboxEl.checked = false; + checkboxEl.indeterminate = true; + } + } + }, + }, + modal: { + initialize: (elementId, useStaticBackdrop, closeOnEscape, dotNetHelper) => { + let modalEl = document.getElementById(elementId); + if (modalEl == null) + return; + + modalEl.addEventListener('show.bs.modal', function () { + dotNetHelper.invokeMethodAsync('bsShowModal'); + }); + modalEl.addEventListener('shown.bs.modal', function () { + dotNetHelper.invokeMethodAsync('bsShownModal'); + }); + modalEl.addEventListener('hide.bs.modal', function () { + dotNetHelper.invokeMethodAsync('bsHideModal'); + }); + modalEl.addEventListener('hidden.bs.modal', function () { + dotNetHelper.invokeMethodAsync('bsHiddenModal'); + }); + modalEl.addEventListener('hidePrevented.bs.modal', function () { + dotNetHelper.invokeMethodAsync('bsHidePreventedModal'); + }); + + let options = { backdrop: useStaticBackdrop ? 'static' : true, keyboard: closeOnEscape }; + bootstrap?.Modal?.getOrCreateInstance(modalEl, options); + }, + show: (elementId) => { + let modalEl = document.getElementById(elementId); + if (modalEl != null) + bootstrap?.Modal?.getOrCreateInstance(modalEl)?.show(); + }, + hide: (elementId) => { + let modalEl = document.getElementById(elementId); + if (modalEl != null) + bootstrap?.Modal?.getOrCreateInstance(modalEl)?.hide(); + }, + dispose: (elementId) => { + let modalEl = document.getElementById(elementId); + if (modalEl != null) + bootstrap?.Modal?.getOrCreateInstance(modalEl)?.dispose(); + } + }, + numberInput: { + initialize: (elementId, isFloat, allowNegativeNumbers, numberDecimalSeparator) => { + let numberEl = document.getElementById(elementId); + + numberEl?.addEventListener('keydown', function (event) { + let invalidChars = ["e", "E", "+"]; + if (!isFloat) { + invalidChars.push("."); // restrict '.' for integer types + invalidChars.push(numberDecimalSeparator); // restrict ',' for specific culture + } + + if (!allowNegativeNumbers) { + invalidChars.push("-"); // restrict '-' + } + + if (invalidChars.includes(event.key)) + event.preventDefault(); + }); + + numberEl?.addEventListener('beforeinput', function (event) { + if (event.inputType === 'insertFromPaste' || event.inputType === 'insertFromDrop') { + + if (!allowNegativeNumbers) { + // restrict 'e', 'E', '+', '-' + if (isFloat && /[\e\E\+\-]/gi.test(event.data)) { + event.preventDefault(); + } + // restrict 'e', 'E', '.', '+', '-' + else if (!isFloat && /[\e\E\.\+\-]/gi.test(event.data)) { + event.preventDefault(); + } + } + // restrict 'e', 'E', '+' + else if (isFloat && /[\e\E\+]/gi.test(event.data)) { + event.preventDefault(); + } + // restrict 'e', 'E', '.', '+' + else if (!isFloat && /[\e\E\.\+]/gi.test(event.data)) { + event.preventDefault(); + } + + } + }); + }, + setValue: (elementId, value) => { + document.getElementById(elementId).value = value; + } + }, + offcanvas: { + initialize: (elementId, useStaticBackdrop, closeOnEscape, isScrollable, dotNetHelper) => { + let offcanvasEl = document.getElementById(elementId); + if (offcanvasEl == null) + return; + + offcanvasEl.addEventListener('show.bs.offcanvas', function () { + dotNetHelper.invokeMethodAsync('bsShowOffcanvas'); + }); + offcanvasEl.addEventListener('shown.bs.offcanvas', function () { + dotNetHelper.invokeMethodAsync('bsShownOffcanvas'); + }); + offcanvasEl.addEventListener('hide.bs.offcanvas', function () { + dotNetHelper.invokeMethodAsync('bsHideOffcanvas'); + }); + offcanvasEl.addEventListener('hidden.bs.offcanvas', function () { + dotNetHelper.invokeMethodAsync('bsHiddenOffcanvas'); + }); + + let options = { backdrop: useStaticBackdrop ? 'static' : true, keyboard: closeOnEscape, scroll: isScrollable }; + bootstrap?.Offcanvas?.getOrCreateInstance(offcanvasEl, options); + }, + show: (elementId) => { + let offcanvasEl = document.getElementById(elementId); + if (offcanvasEl != null) + bootstrap?.Offcanvas?.getOrCreateInstance(offcanvasEl)?.show(); + }, + hide: (elementId) => { + let offcanvasEl = document.getElementById(elementId); + if (offcanvasEl != null) + bootstrap?.Offcanvas?.getOrCreateInstance(offcanvasEl)?.hide(); + }, + dispose: (elementId) => { + let offcanvasEl = document.getElementById(elementId); + if (offcanvasEl != null) + bootstrap?.Offcanvas?.getOrCreateInstance(offcanvasEl)?.dispose(); + } + }, + rangeInput: { + initialize: (elementId, dotNetHelper) => { + let rangeEl = document.getElementById(elementId); + if (rangeEl == null) + return; + + rangeEl.addEventListener("input", (event) => { + dotNetHelper.invokeMethodAsync('bsOnInput', event.target.value); + }); + } + }, + scriptLoader: { + initialize: (elementId, async, scriptId, source, type, dotNetHelper) => { + let scriptLoaderEl = document.getElementById(elementId); + + if (source.length === 0) { + console.error(`Invalid src url.`); + return; + } + + let scriptEl = document.createElement('script'); + + scriptEl.async = async; + + if (scriptId != null) + scriptEl.id = scriptId; + + if (source != null) + scriptEl.src = source; + + if (type != null) + scriptEl.type = type; + + scriptEl.addEventListener("error", (event) => { + dotNetHelper.invokeMethodAsync('OnErrorJS', `An error occurred while loading the script: ${source}`); + }); + + scriptEl.addEventListener("load", (event) => { + dotNetHelper.invokeMethodAsync('OnLoadJS'); + }); + + if (scriptLoaderEl != null) + scriptLoaderEl.appendChild(scriptEl); + } + }, + sidebar: { + initialize: (elementId, dotNetHelper) => { + window.addEventListener("resize", () => { + dotNetHelper.invokeMethodAsync('bsWindowResize', window.innerWidth); + }); + }, + windowSize: () => window.innerWidth + }, + tabs: { + initialize: (elementId, dotNetHelper) => { + let navTabsEl = document.getElementById(elementId); + if (navTabsEl == null) + return; + + let triggerTabList = [].slice.call(navTabsEl.querySelectorAll('button.nav-link')); + + triggerTabList.forEach(function (tabEl) { + tabEl?.addEventListener('show.bs.tab', (event) => { + // event.target --> active tab + // event.relatedTarget --> previous active tab (if available) + dotNetHelper.invokeMethodAsync('bsShowTab', event.target?.id, event.relatedTarget?.id); + }); + tabEl?.addEventListener('shown.bs.tab', (event) => { + // event.target --> active tab + // event.relatedTarget --> previous active tab + dotNetHelper.invokeMethodAsync('bsShownTab', event.target?.id, event.relatedTarget?.id); + }); + tabEl?.addEventListener('hide.bs.tab', (event) => { + // event.target --> current active tab + // event.relatedTarget --> new soon-to-be-active tab + dotNetHelper.invokeMethodAsync('bsHideTab', event.relatedTarget?.id, event.target?.id); + }); + tabEl?.addEventListener('hidden.bs.tab', (event) => { + // event.target --> previous active tab + // event.relatedTarget --> new active tab + dotNetHelper.invokeMethodAsync('bsHiddenTab', event.relatedTarget?.id, event.target?.id); + }); + }); + }, + initializeNewTab: (tabId, dotNetHelper) => { + let tabEl = document.getElementById(tabId); + if (tabEl == null) + return; + + tabEl?.addEventListener('show.bs.tab', (event) => { + // event.target --> active tab + // event.relatedTarget --> previous active tab (if available) + dotNetHelper.invokeMethodAsync('bsShowTab', event.target?.id, event.relatedTarget?.id); + }); + tabEl?.addEventListener('shown.bs.tab', (event) => { + // event.target --> active tab + // event.relatedTarget --> previous active tab + dotNetHelper.invokeMethodAsync('bsShownTab', event.target?.id, event.relatedTarget?.id); + }); + tabEl?.addEventListener('hide.bs.tab', (event) => { + // event.target --> current active tab + // event.relatedTarget --> new soon-to-be-active tab + dotNetHelper.invokeMethodAsync('bsHideTab', event.relatedTarget?.id, event.target?.id); + }); + tabEl?.addEventListener('hidden.bs.tab', (event) => { + // event.target --> previous active tab + // event.relatedTarget --> new active tab + dotNetHelper.invokeMethodAsync('bsHiddenTab', event.relatedTarget?.id, event.target?.id); + }); + }, + show: (elementId) => { + let navTabsEl = document.getElementById(elementId); + if (navTabsEl != null) + bootstrap?.Tab?.getOrCreateInstance(navTabsEl)?.show(); + }, + dispose: (elementId) => { + let navTabsEl = document.getElementById(elementId); + if (navTabsEl != null) + bootstrap?.Tab?.getOrCreateInstance(navTabsEl)?.dispose(); + } + }, + timeInput: { + setValue: (elementId, value) => { + document.getElementById(elementId).value = value; + } + }, + toasts: { + show: (elementId, autohide, delay, dotNetHelper) => { + let toastEl = document.getElementById(elementId); + if (toastEl == null) + return; + + toastEl.addEventListener('show.bs.toast', function () { + dotNetHelper.invokeMethodAsync('bsShowToast'); + }); + toastEl.addEventListener('shown.bs.toast', function () { + dotNetHelper.invokeMethodAsync('bsShownToast'); + }); + toastEl.addEventListener('hide.bs.toast', function () { + let _this = this; + if (_this == null || document.getElementById(_this.id) == null) // when a user is redirected to a different page, the HTML element becomes unavailable. + return; + dotNetHelper.invokeMethodAsync('bsHideToast'); + }); + toastEl.addEventListener('hidden.bs.toast', function () { + let _this = this; + if (_this == null || document.getElementById(_this.id) == null) // when a user is redirected to a different page, the HTML element becomes unavailable. + return; + dotNetHelper.invokeMethodAsync('bsHiddenToast'); + }); + + let options = { animation: true, autohide: autohide, delay: delay }; + bootstrap?.Toast?.getOrCreateInstance(toastEl, options)?.show(); + }, + hide: (elementId) => { + let toastEl = document.getElementById(elementId); + if (toastEl != null) + bootstrap?.Toast?.getOrCreateInstance(toastEl)?.hide(); + }, + dispose: (elementId) => { + let toastEl = document.getElementById(elementId); + if (toastEl != null) + bootstrap?.Toast?.getOrCreateInstance(toastEl)?.dispose(); + } + }, + tooltip: { + initialize: (elementRef) => { + if (elementRef != null) + bootstrap?.Tooltip?.getOrCreateInstance(elementRef); + }, + show: (elementRef) => { + if (elementRef != null) + bootstrap?.Tooltip?.getOrCreateInstance(elementRef)?.show(); + }, + update: (elementRef) => { + if (elementRef != null) + bootstrap?.Tooltip?.getOrCreateInstance(elementRef)?.update(); + }, + dispose: (elementRef) => { + if (elementRef != null) + bootstrap?.Tooltip?.getOrCreateInstance(elementRef)?.dispose(); + } + }, + treeview: { + initialize: (elementId, dotNetHelper) => { + window.addEventListener("resize", () => { + dotNetHelper.invokeMethodAsync('bsWindowResize', window.innerWidth); + }); + }, + windowSize: () => window.innerWidth + }, + // global function + invokeMethodAsync: (callbackEventName, dotNetHelper) => { + dotNetHelper.invokeMethodAsync(callbackEventName); + }, + hasInvalidChars: (input, validChars) => { + if (input.length <= 0 || validChars.length <= 0) + return false; + + let inputCharArr = input.split(''); + for (let i = 0; i < inputCharArr.length; i++) { + if (!validChars.includes(inputCharArr[i])) + return true; + } + + return false; + }, +} + +window.blazorChart = { + create: (elementId, type, data, options, plugins) => { + let chartEl = document.getElementById(elementId); + let _plugins = []; + + if (plugins && plugins.length > 0) { + // register `ChartDataLabels` plugin + if (plugins.includes('ChartDataLabels')) { + _plugins.push(ChartDataLabels); + } + } + + const config = { + type: type, + data: data, + options: options, + plugins: _plugins + }; + + const chart = new Chart( + chartEl, + config + ); + }, + get: (elementId) => { + let chart; + Chart.helpers.each(Chart.instances, function (instance) { + if (instance.canvas.id === elementId) { + chart = instance; + } + }); + + return chart; + }, + initialize: (elementId, type, data, options, plugins) => { + let chart = window.blazorChart.get(elementId); + if (chart) return; + else + window.blazorChart.create(elementId, type, data, options, plugins); + }, + resize: (elementId, width, height) => { + let chart = window.blazorChart.get(elementId); + if (chart) { + chart.canvas.parentNode.style.height = height; + chart.canvas.parentNode.style.width = width; + } + }, + update: (elementId, type, data, options) => { + let chart = window.blazorChart.get(elementId); + if (chart) { + if (chart.config.plugins && chart.config.plugins.findIndex(x => x.id == 'datalabels') > -1) { + // set datalabel background color + options.plugins.datalabels.backgroundColor = function (context) { + return context.dataset.backgroundColor; + }; + } + + chart.data = data; + chart.options = options; + chart.update(); + } + else { + console.warn(`The chart is not initialized. Initialize it and then call update.`); + } + }, +} + +window.blazorChart.bar = { + addDatasetData: (elementId, dataLabel, data) => { + let chart = window.blazorChart.get(elementId); + if (chart) { + const chartData = chart.data; + const chartDatasetData = data; + + if (!chartData.labels.includes(dataLabel)) + chartData.labels.push(dataLabel); + + const chartDatasets = chartData.datasets; + + if (chartDatasets.length > 0) { + let datasetIndex = chartDatasets.findIndex(dataset => dataset.label === chartDatasetData.datasetLabel); + if (datasetIndex > -1) { + chartDatasets[datasetIndex].data.push(chartDatasetData.data); + chart.update(); + } + } + } + }, + addDatasetsData: (elementId, dataLabel, data) => { + let chart = window.blazorChart.get(elementId); + if (chart && data) { + const chartData = chart.data; + + if (!chartData.labels.includes(dataLabel)) { + chartData.labels.push(dataLabel); + + if (chartData.datasets.length > 0 && chartData.datasets.length === data.length) { + data.forEach(chartDatasetData => { + let datasetIndex = chartData.datasets.findIndex(dataset => dataset.label === chartDatasetData.datasetLabel); + chartData.datasets[datasetIndex].data.push(chartDatasetData.data); + }); + chart.update(); + } + } + } + }, + addDataset: (elementId, newDataset) => { + let chart = window.blazorChart.get(elementId); + if (chart) { + chart.data.datasets.push(newDataset); + chart.update(); + } + }, + create: (elementId, type, data, options, plugins) => { + let chartEl = document.getElementById(elementId); + let _plugins = []; + + if (plugins && plugins.length > 0) { + // register `ChartDataLabels` plugin + if (plugins.includes('ChartDataLabels')) { + _plugins.push(ChartDataLabels); + } + } + + const config = { + type: type, + data: data, + options: options, + plugins: _plugins + }; + + const chart = new Chart( + chartEl, + config + ); + }, + get: (elementId) => { + let chart; + Chart.helpers.each(Chart.instances, function (instance) { + if (instance.canvas.id === elementId) { + chart = instance; + } + }); + + return chart; + }, + initialize: (elementId, type, data, options, plugins) => { + let chart = window.blazorChart.bar.get(elementId); + if (chart) return; + else + window.blazorChart.bar.create(elementId, type, data, options, plugins); + }, + resize: (elementId, width, height) => { + let chart = window.blazorChart.bar.get(elementId); + if (chart) { + chart.canvas.parentNode.style.height = height; + chart.canvas.parentNode.style.width = width; + } + }, + update: (elementId, type, data, options) => { + let chart = window.blazorChart.bar.get(elementId); + if (chart) { + if (chart.config.plugins && chart.config.plugins.findIndex(x => x.id == 'datalabels') > -1) { + // set datalabel background color + options.plugins.datalabels.backgroundColor = function (context) { + return context.dataset.backgroundColor; + }; + } + + chart.data = data; + chart.options = options; + chart.update(); + } + else { + console.warn(`The chart is not initialized. Initialize it and then call update.`); + } + }, +} + +window.blazorChart.doughnut = { + addDatasetData: (elementId, dataLabel, data) => { + let chart = window.blazorChart.get(elementId); + if (chart) { + const chartData = chart.data; + const chartDatasetData = data; + + if (!chartData.labels.includes(dataLabel)) + chartData.labels.push(dataLabel); + + const chartDatasets = chartData.datasets; + + if (chartDatasets.length > 0) { + let datasetIndex = chartDatasets.findIndex(dataset => dataset.label === chartDatasetData.datasetLabel); + if (datasetIndex > -1) { + chartDatasets[datasetIndex].data.push(chartDatasetData.data); + chart.update(); + } + } + } + }, + addDatasetsData: (elementId, dataLabel, data) => { + let chart = window.blazorChart.get(elementId); + if (chart && data) { + const chartData = chart.data; + + if (!chartData.labels.includes(dataLabel)) { + chartData.labels.push(dataLabel); + + if (chartData.datasets.length > 0 && chartData.datasets.length === data.length) { + data.forEach(chartDatasetData => { + let datasetIndex = chartData.datasets.findIndex(dataset => dataset.label === chartDatasetData.datasetLabel); + chartData.datasets[datasetIndex].data.push(chartDatasetData.data); + chartData.datasets[datasetIndex].backgroundColor.push(chartDatasetData.backgroundColor); + }); + chart.update(); + } + } + } + }, + addDataset: (elementId, newDataset) => { + let chart = window.blazorChart.get(elementId); + if (chart) { + chart.data.datasets.push(newDataset); + chart.update(); + } + }, + create: (elementId, type, data, options, plugins) => { + let chartEl = document.getElementById(elementId); + let _plugins = []; + + if (plugins && plugins.length > 0) { + // register `ChartDataLabels` plugin + if (plugins.includes('ChartDataLabels')) { + _plugins.push(ChartDataLabels); + + // set datalabel background color + options.plugins.datalabels.backgroundColor = function (context) { + return context.dataset.backgroundColor; + }; + } + } + + const config = { + type: type, + data: data, + options: options, + plugins: _plugins + }; + + const chart = new Chart( + chartEl, + config + ); + }, + get: (elementId) => { + let chart; + Chart.helpers.each(Chart.instances, function (instance) { + if (instance.canvas.id === elementId) { + chart = instance; + } + }); + + return chart; + }, + initialize: (elementId, type, data, options, plugins) => { + let chart = window.blazorChart.doughnut.get(elementId); + if (chart) return; + else + window.blazorChart.doughnut.create(elementId, type, data, options, plugins); + }, + resize: (elementId, width, height) => { + let chart = window.blazorChart.doughnut.get(elementId); + if (chart) { + chart.canvas.parentNode.style.height = height; + chart.canvas.parentNode.style.width = width; + } + }, + update: (elementId, type, data, options) => { + let chart = window.blazorChart.doughnut.get(elementId); + if (chart) { + if (chart.config.plugins && chart.config.plugins.findIndex(x => x.id == 'datalabels') > -1) { + // set datalabel background color + options.plugins.datalabels.backgroundColor = function (context) { + return context.dataset.backgroundColor; + }; + } + + chart.data = data; + chart.options = options; + chart.update(); + } + else { + console.warn(`The chart is not initialized. Initialize it and then call update.`); + } + }, +} + +window.blazorChart.line = { + addDatasetData: (elementId, dataLabel, data) => { + let chart = window.blazorChart.get(elementId); + if (chart) { + const chartData = chart.data; + const chartDatasetData = data; + + if (!chartData.labels.includes(dataLabel)) + chartData.labels.push(dataLabel); + + const chartDatasets = chartData.datasets; + + if (chartDatasets.length > 0) { + let datasetIndex = chartDatasets.findIndex(dataset => dataset.label === chartDatasetData.datasetLabel); + if (datasetIndex > -1) { + chartDatasets[datasetIndex].data.push(chartDatasetData.data); + chart.update(); + } + } + } + }, + addDatasetsData: (elementId, dataLabel, data) => { + let chart = window.blazorChart.get(elementId); + if (chart && data) { + const chartData = chart.data; + + if (!chartData.labels.includes(dataLabel)) { + chartData.labels.push(dataLabel); + + if (chartData.datasets.length > 0 && chartData.datasets.length === data.length) { + data.forEach(chartDatasetData => { + let datasetIndex = chartData.datasets.findIndex(dataset => dataset.label === chartDatasetData.datasetLabel); + chartData.datasets[datasetIndex].data.push(chartDatasetData.data); + }); + chart.update(); + } + } + } + }, + addDataset: (elementId, newDataset) => { + let chart = window.blazorChart.get(elementId); + if (chart) { + chart.data.datasets.push(newDataset); + chart.update(); + } + }, + create: (elementId, type, data, options, plugins) => { + let chartEl = document.getElementById(elementId); + let _plugins = []; + + if (plugins && plugins.length > 0) { + // register `ChartDataLabels` plugin + if (plugins.includes('ChartDataLabels')) { + _plugins.push(ChartDataLabels); + + // set datalabel background color + options.plugins.datalabels.backgroundColor = function (context) { + return context.dataset.backgroundColor; + }; + } + } + + const config = { + type: type, + data: data, + options: options, + plugins: _plugins + }; + + if (type === 'line') { + // tooltipLine block + const tooltipLine = { + id: 'tooltipLine', + beforeDraw: chart => { + if (chart.tooltip?._active && chart.tooltip?._active.length) { + const ctx = chart.ctx; + ctx.save(); + const activePoint = chart.tooltip._active[0]; + + ctx.beginPath(); + ctx.setLineDash([5, 5]); + ctx.moveTo(activePoint.element.x, chart.chartArea.top); + ctx.lineTo(activePoint.element.x, activePoint.element.y); + ctx.linewidth = 2; + ctx.strokeStyle = 'grey'; + ctx.stroke(); + ctx.restore(); + + ctx.beginPath(); + ctx.setLineDash([5, 5]); + ctx.moveTo(activePoint.element.x, activePoint.element.y); + ctx.lineTo(activePoint.element.x, chart.chartArea.bottom); + ctx.linewidth = 2; + ctx.strokeStyle = 'grey'; + ctx.stroke(); + ctx.restore(); + } + }, + }; + + config.plugins.push(tooltipLine); + } + + const chart = new Chart( + chartEl, + config + ); + }, + get: (elementId) => { + let chart; + Chart.helpers.each(Chart.instances, function (instance) { + if (instance.canvas.id === elementId) { + chart = instance; + } + }); + + return chart; + }, + initialize: (elementId, type, data, options, plugins) => { + let chart = window.blazorChart.line.get(elementId); + if (chart) + return; + else + window.blazorChart.line.create(elementId, type, data, options, plugins); + }, + resize: (elementId, width, height) => { + let chart = window.blazorChart.line.get(elementId); + if (chart) { + chart.canvas.parentNode.style.height = height; + chart.canvas.parentNode.style.width = width; + } + }, + update: (elementId, type, data, options) => { + let chart = window.blazorChart.line.get(elementId); + if (chart) { + if (chart.config.plugins && chart.config.plugins.findIndex(x => x.id == 'datalabels') > -1) { + // set datalabel background color + options.plugins.datalabels.backgroundColor = function (context) { + return context.dataset.backgroundColor; + }; + } + + chart.data = data; + chart.options = options; + chart.update(); + } + else { + console.warn(`The chart is not initialized. Initialize it and then call update.`); + } + }, +} + +window.blazorChart.pie = { + addDatasetData: (elementId, dataLabel, data) => { + let chart = window.blazorChart.get(elementId); + if (chart) { + const chartData = chart.data; + const chartDatasetData = data; + + if (!chartData.labels.includes(dataLabel)) + chartData.labels.push(dataLabel); + + const chartDatasets = chartData.datasets; + + if (chartDatasets.length > 0) { + let datasetIndex = chartDatasets.findIndex(dataset => dataset.label === chartDatasetData.datasetLabel); + if (datasetIndex > -1) { + chartDatasets[datasetIndex].data.push(chartDatasetData.data); + chart.update(); + } + } + } + }, + addDatasetsData: (elementId, dataLabel, data) => { + let chart = window.blazorChart.get(elementId); + if (chart && data) { + const chartData = chart.data; + + if (!chartData.labels.includes(dataLabel)) { + chartData.labels.push(dataLabel); + + if (chartData.datasets.length > 0 && chartData.datasets.length === data.length) { + data.forEach(chartDatasetData => { + let datasetIndex = chartData.datasets.findIndex(dataset => dataset.label === chartDatasetData.datasetLabel); + chartData.datasets[datasetIndex].data.push(chartDatasetData.data); + chartData.datasets[datasetIndex].backgroundColor.push(chartDatasetData.backgroundColor); + }); + chart.update(); + } + } + } + }, + addDataset: (elementId, newDataset) => { + let chart = window.blazorChart.get(elementId); + if (chart) { + chart.data.datasets.push(newDataset); + chart.update(); + } + }, + create: (elementId, type, data, options, plugins) => { + let chartEl = document.getElementById(elementId); + let _plugins = []; + + if (plugins && plugins.length > 0) { + // register `ChartDataLabels` plugin + if (plugins.includes('ChartDataLabels')) { + _plugins.push(ChartDataLabels); + + // set datalabel background color + options.plugins.datalabels.backgroundColor = function (context) { + return context.dataset.backgroundColor; + }; + } + } + + const config = { + type: type, + data: data, + options: options, + plugins: _plugins + }; + + const chart = new Chart( + chartEl, + config + ); + }, + get: (elementId) => { + let chart; + Chart.helpers.each(Chart.instances, function (instance) { + if (instance.canvas.id === elementId) { + chart = instance; + } + }); + + return chart; + }, + initialize: (elementId, type, data, options, plugins) => { + let chart = window.blazorChart.pie.get(elementId); + if (chart) return; + else + window.blazorChart.pie.create(elementId, type, data, options, plugins); + }, + resize: (elementId, width, height) => { + let chart = window.blazorChart.pie.get(elementId); + if (chart) { + chart.canvas.parentNode.style.height = height; + chart.canvas.parentNode.style.width = width; + } + }, + update: (elementId, type, data, options) => { + let chart = window.blazorChart.pie.get(elementId); + if (chart) { + if (chart.config.plugins && chart.config.plugins.findIndex(x => x.id == 'datalabels') > -1) { + // set datalabel background color + options.plugins.datalabels.backgroundColor = function (context) { + return context.dataset.backgroundColor; + }; + } + + chart.data = data; + chart.options = options; + chart.update(); + } + else { + console.warn(`The chart is not initialized. Initialize it and then call update.`); + } + }, +} diff --git a/blazorbootstrap/wwwroot/blazor.bootstrap.pdf.js b/blazorbootstrap/wwwroot/blazor.bootstrap.pdf.js new file mode 100644 index 000000000..1fbea5e56 --- /dev/null +++ b/blazorbootstrap/wwwroot/blazor.bootstrap.pdf.js @@ -0,0 +1,267 @@ +import * as pdfJS from './pdfjs-4.0.379.min.mjs'; +import * as pdfWorker from './pdfjs-4.0.379.worker.min.mjs'; + +if (pdfJS != null && pdfWorker != null) { + pdfJS.GlobalWorkerOptions.workerSrc = pdfWorker; +} + +function getCanvas(item) { + if (isDomSupported() && typeof item === 'string') { + item = document.getElementById(item); + } else if (item && item.length) { + // support for array based queries + item = item[0]; + } + + if (item && item.canvas !== undefined && item.canvas) { + // support for any object associated to a canvas (including a context2d) + item = item.canvas; + } + + return item; +} + +const getPdf = (key) => { + const canvas = getCanvas(key); + return Object.values(pdfInstances).filter((c) => c.canvas === canvas).pop(); +}; + +const pdfInstances = {}; + +class Pdf { + static instances = pdfInstances; + static getPdf = getPdf; + + constructor(item) { + const canvas = getCanvas(item); + //const existingPdf = getPdf(canvas); + + this.id = canvas.id; + this.canvas = canvas; + this.ctx = canvas.getContext('2d'); + this.pdfDoc = null; + this.pageNum = 1; + this.pagesCount = 0; + this.pageRendering = false; + this.pageNumPending = null; + this.scale = 1; + this.rotation = 0; + + pdfInstances[this.id] = this; + } +} + +export function firstPage(dotNetHelper, elementId) { + const pdf = getPdf(elementId); + + if (pdf == null || pdf.pageNum === 1) + return; + + if (pdf.pageNum > 1) + pdf.pageNum = 1; + + queueRenderPage(pdf, pdf.pageNum); + + setPdfViewerMetaData(dotNetHelper, pdf); +} + +export function gotoPage(dotNetHelper, elementId, gotoPageNum) { + const pdf = getPdf(elementId); + + if (pdf == null || gotoPageNum < 1 || gotoPageNum > pdf.pagesCount) + return; + + pdf.pageNum = gotoPageNum; + + queueRenderPage(pdf, pdf.pageNum); + + setPdfViewerMetaData(dotNetHelper, pdf); +} + +export function lastPage(dotNetHelper, elementId) { + const pdf = getPdf(elementId); + + if (pdf == null || (pdf.pageNum === 1 && pdf.pageNum === pdf.pagesCount)) + return; + + if (pdf.pageNum < pdf.pagesCount) + pdf.pageNum = pdf.pagesCount; + + queueRenderPage(pdf, pdf.pageNum); + + setPdfViewerMetaData(dotNetHelper, pdf); +} + +export function nextPage(dotNetHelper, elementId) { + const pdf = getPdf(elementId); + + if (pdf == null || pdf.pageNum === pdf.pagesCount) + return; + + if (pdf.pageNum < pdf.pagesCount) + pdf.pageNum += 1; + + queueRenderPage(pdf, pdf.pageNum); + + setPdfViewerMetaData(dotNetHelper, pdf); +} + +export function previousPage(dotNetHelper, elementId) { + const pdf = getPdf(elementId); + + if (pdf == null || pdf.pageNum === 0 || pdf.pageNum === 1) + return; + + if (pdf.pageNum > 0) + pdf.pageNum -= 1; + + queueRenderPage(pdf, pdf.pageNum); + + setPdfViewerMetaData(dotNetHelper, pdf); +} + +export async function print(dotNetHelper, elementId, url) { + const pdfDoc = await pdfJS.getDocument(url).promise; + const pageRange = [1, 2, 3, 4]; // TODO: update this + + const iframeEl = document.createElement('iframe'); + iframeEl.style = 'display:none'; + document.body.appendChild(iframeEl); + + for (const pageNumber of pageRange) { + const page = await pdfDoc.getPage(pageNumber); + + const viewport = page.getViewport({ scale: 1.5 }); + const canvas = document.createElement("canvas"); + canvas.height = viewport.height; + canvas.width = viewport.width; + + //canvas.style.height = `${viewport.height * 2}px`; + //canvas.style.width = `${viewport.width * 2}px`; + + const ctx = canvas.getContext('2d'); + + const renderContext = { + //intent: 'print', + canvasContext: ctx, + viewport: viewport + }; + await page.render(renderContext).promise; + + const iframeDoc = iframeEl.contentWindow.document; + iframeDoc.body.appendChild(canvas); + } + + setTimeout(() => { + iframeEl.contentWindow.print(); + iframeEl.remove(); + }, + 1000); +} + +export function rotate(dotNetHelper, elementId, rotation) { + const pdf = getPdf(elementId); + + if (pdf == null || Number.isNaN(rotation) || rotation % 90 !== 0) + return; + + pdf.rotation = rotation; + + queueRenderPage(pdf, pdf.pageNum); +} + +export function zoomInOut(dotNetHelper, elementId, scale) { + const pdf = getPdf(elementId); + + if (pdf == null) + return; + + if (!Number.isNaN(scale)) + pdf.scale = scale; + + queueRenderPage(pdf, pdf.pageNum); +} + +// resize +// print +// download +// zoomreset + +/* +firstPageButton.disabled = this.pageNumber <= 1; +lastPageButton.disabled = this.pageNumber >= this.pagesCount; +pageRotateCwButton.disabled = this.pagesCount === 0; +pageRotateCcwButton.disabled = this.pagesCount === 0; +*/ + +export function initialize(dotNetHelper, elementId, scale, rotation, url) { + const pdf = new Pdf(elementId); + pdf.scale = scale; + pdf.rotation = rotation; + + pdfJS.getDocument(url).promise.then(function (doc) { + pdf.pdfDoc = doc; + pdf.pagesCount = doc.numPages; + renderPage(pdf, pdf.pageNum); + dotNetHelper.invokeMethodAsync('DocumentLoaded', { pagesCount: pdf.pagesCount, pageNumber: pdf.pageNum }); + }); +} + +function isDomSupported() { + return typeof window !== 'undefined' && typeof document !== 'undefined'; +} + +/** + * If another page rendering in progress, waits until the rendering is + * finished. Otherwise, executes rendering immediately. + */ +function queueRenderPage(pdf, num) { + if (pdf.pageRendering) { + pdf.pageNumPending = num; + } else { + renderPage(pdf, num); + } +} + +/** + * Get page info from document, resize canvas accordingly, and render page. + * @param num Page number. + */ +function renderPage(pdf, num) { + pdf.pageRendering = true; + + // Using promise to fetch the page + pdf.pdfDoc.getPage(num).then((page) => { + const viewport = page.getViewport({ scale: pdf.scale, rotation: pdf.rotation }); + pdf.canvas.height = viewport.height; + pdf.canvas.width = viewport.width; + + // Render PDF page into canvas context + const renderContext = { + canvasContext: pdf.ctx, + viewport: viewport + }; + + const renderTask = page.render(renderContext); + + // Wait for rendering to finish + renderTask.promise.then(() => { + pdf.pageRendering = false; + if (pdf.pageNumPending !== null) { + // New page rendering is pending + renderPage(pdf, pdf.pageNumPending); + pdf.pageNumPending = null; + } + }) + .catch((error) => { + // TODO: track exception + }); + }); +} + +function setPdfViewerMetaData(dotNetHelper, pdf) { + if (dotNetHelper == null) + return; + + dotNetHelper.invokeMethodAsync('SetPdfViewerMetaData', { pagesCount: pdf.pagesCount, pageNumber: pdf.pageNum }); +} diff --git a/blazorbootstrap/wwwroot/blazor.bootstrap.sortable-list.js b/blazorbootstrap/wwwroot/blazor.bootstrap.sortable-list.js new file mode 100644 index 000000000..d9365e8fa --- /dev/null +++ b/blazorbootstrap/wwwroot/blazor.bootstrap.sortable-list.js @@ -0,0 +1,49 @@ +export function initialize(elementId, elementName, handle, group, allowSorting, pull, put, filter, dotNetHelper) { + let listGroupEl = document.getElementById(elementId); + if (listGroupEl == null) + return; + + if (Sortable) { + const sortable = Sortable.create(listGroupEl, { + animation: 150, + filter: '.bb-sortable-list-item-disabled', + group: { + name: group, + pull: pull, + put: put + }, + handle: handle, // handle's class + onAdd: (event) => { + event.item.remove(); + dotNetHelper.invokeMethodAsync('OnAddJS', event.oldDraggableIndex, event.newDraggableIndex); + }, + onRemove: (event) => { + if (event.pullMode === 'clone') { + event.clone.remove(); + } + + event.item.remove(); + event.from.insertBefore(event.item, event.from.childNodes[event.oldIndex]); + + let fromElName = ''; + let toElName = ''; + + let fromEl = document.getElementById(event.from.id); + if (fromEl) + fromElName = fromEl.getAttribute('name'); + + let toEl = document.getElementById(event.to.id); + if (toEl) + toElName = toEl.getAttribute('name'); + + dotNetHelper.invokeMethodAsync('OnRemoveJS', event.oldDraggableIndex, event.newDraggableIndex, fromElName, toElName); + }, + onUpdate: (event) => { + event.item.remove(); + event.to.insertBefore(event.item, event.to.childNodes[event.oldIndex]); + dotNetHelper.invokeMethodAsync('OnUpdateJS', event.oldDraggableIndex, event.newDraggableIndex); + }, + sort: allowSorting + }); + } +} diff --git a/blazorbootstrap/wwwroot/icon/128X128.png b/blazorbootstrap/wwwroot/icon/128X128.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc404fcb6a25dcb4468c6ff787089f846b3e862 GIT binary patch literal 7074 zcmV;T8(rjyP)7%-*ey?7=diClRV-bo_gd!B72t_DD5sFZRE-sQH zRq*?zaRcT`KzKb4znnC^??}CSq9WDwyQW)_Vv$CS8#wp+2m@SHt$!Y*yY!R~&f_8s zaPhVNIG_KAjvF}Vst5yI9IZbZS+?eMRisBF3~+G}0j=rtW%_eJq(F7wv(b^d3N2;z zS{Vh+{B;2GbxuL&XWei81x--)GX|F%A`L+LBq9MS1^iVF)XE=@RKxA^pBzv?WqyEE z&t#DQXrv3M9Ps~uYzfls>Zt=kcn$UYT{!n7jT+ioH9ogLuib#k^05^c|zVSMMn}@?RU9CHiHsll}eQzIlFYl0qdD`Kp$3+;x zF6iAhL)(@~^gfP!fI&ZRM4vhUpX~XsAdPV0XS9VLP&L8;7APZSOEY9c0Qx^#!Pw!pu25t(s6!Mjs9Lp;$UX-=R;gaOO|Pu^AsL%Dbyc0aLrIB?F9VRYKK$t+&NVtR?bh0Ocy=jU-9F40&DrUjwO%x8+GP!+Ax) zrd%q^>AXj2ol?a$Ny+gJPn5shmaToLWJwzAMw%}U{t_}9PeWPll^4musOqNCVFY?p zWU1=-l!jCdtaYz;fC^g0>d~Z}`H9?@J=u5ZW%#TK_^yX7DVO#tr%7}r0!{!AMk2d3 zf#1qmiLw)gD2U|!2AT!@$n37HzRPYwHWv4HXToM(*(ndyjjjaXY5e&Z(jCn0IdRD@ z=(5dwg`OkLe+*jxd0pW96w+{Vyt#HS2aTblLj*cg#X1xkmK4;NNg@>}TLjZl#s52J zLBe)F(0i|-7JfT)lKW70d~g}o=YFXY7y#fC;5kU~_DYZiK$dMXhD-cqT=t1F*X*ob zt4N9Mg?rKE$vxC@I7bf&eitSM5qKK2PG&yN2e!bM%D5LAecAusbG~_*X0K}dOx9}r z>b;(dk%6Qc8F-&z{^hFgWj@ye?_>J+E5|bKpNach)`h{L9z9U+@32`q8#_ zSw{l+F;!u7kiaKx{yn5WR2~bL6X}9Z`4^Ov{TU7*l+79h7^{lYS{@Yvjo4Ar3+)_t>hB;G?ss# z#+430Coh=~k!DQYU9&hCKXz>V!AsCr_C-HC6#YIFGP!EGo}kyK>-5EvZ$BKM1NiF) z<$bbgpYDH7^3@B>bO3E1U(Rqk`hkfKAh`hkXr?$p*l{i)zqmJPs07gWg_85r6ZbVj zWsCp=Jd8?j9C`-uy|?0=B&76(0RyP^`dq3@8;>7DdJgF&0DrtPMPPc;?&<*b�Kc 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 M07*qoM6N<$f<@(i8UO$Q literal 0 HcmV?d00001 diff --git a/blazorbootstrap/wwwroot/pdfjs-4.0.379.min.mjs b/blazorbootstrap/wwwroot/pdfjs-4.0.379.min.mjs new file mode 100644 index 000000000..f1b120afb --- /dev/null +++ b/blazorbootstrap/wwwroot/pdfjs-4.0.379.min.mjs @@ -0,0 +1,21 @@ +/** + * @licstart The following is the entire license notice for the + * JavaScript code in this page + * + * Copyright 2023 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @licend The above is the entire license notice for the + * JavaScript code in this page + */var t,e,i,s,n={640:(t,e,i)=>{i.d(e,{AnnotationLayer:()=>AnnotationLayer,FreeTextAnnotationElement:()=>FreeTextAnnotationElement,InkAnnotationElement:()=>InkAnnotationElement,StampAnnotationElement:()=>StampAnnotationElement});var s=i(266),n=i(473),a=i(780);function makeColorComp(t){return Math.floor(255*Math.max(0,Math.min(1,t))).toString(16).padStart(2,"0")}function scaleAndClamp(t){return Math.max(0,Math.min(255,255*t))}class ColorConverters{static CMYK_G([t,e,i,s]){return["G",1-Math.min(1,.3*t+.59*i+.11*e+s)]}static G_CMYK([t]){return["CMYK",0,0,0,1-t]}static G_RGB([t]){return["RGB",t,t,t]}static G_rgb([t]){return[t=scaleAndClamp(t),t,t]}static G_HTML([t]){const e=makeColorComp(t);return`#${e}${e}${e}`}static RGB_G([t,e,i]){return["G",.3*t+.59*e+.11*i]}static RGB_rgb(t){return t.map(scaleAndClamp)}static RGB_HTML(t){return`#${t.map(makeColorComp).join("")}`}static T_HTML(){return"#00000000"}static T_rgb(){return[null]}static CMYK_RGB([t,e,i,s]){return["RGB",1-Math.min(1,t+s),1-Math.min(1,i+s),1-Math.min(1,e+s)]}static CMYK_rgb([t,e,i,s]){return[scaleAndClamp(1-Math.min(1,t+s)),scaleAndClamp(1-Math.min(1,i+s)),scaleAndClamp(1-Math.min(1,e+s))]}static CMYK_HTML(t){const e=this.CMYK_RGB(t).slice(1);return this.RGB_HTML(e)}static RGB_CMYK([t,e,i]){const s=1-t,n=1-e,a=1-i;return["CMYK",s,n,a,Math.min(s,n,a)]}}var r=i(160);const o=1e3,l=new WeakSet;function getRectDims(t){return{width:t[2]-t[0],height:t[3]-t[1]}}class AnnotationElementFactory{static create(t){switch(t.data.annotationType){case s.AnnotationType.LINK:return new LinkAnnotationElement(t);case s.AnnotationType.TEXT:return new TextAnnotationElement(t);case s.AnnotationType.WIDGET:switch(t.data.fieldType){case"Tx":return new TextWidgetAnnotationElement(t);case"Btn":return t.data.radioButton?new RadioButtonWidgetAnnotationElement(t):t.data.checkBox?new CheckboxWidgetAnnotationElement(t):new PushButtonWidgetAnnotationElement(t);case"Ch":return new ChoiceWidgetAnnotationElement(t);case"Sig":return new SignatureWidgetAnnotationElement(t)}return new WidgetAnnotationElement(t);case s.AnnotationType.POPUP:return new PopupAnnotationElement(t);case s.AnnotationType.FREETEXT:return new FreeTextAnnotationElement(t);case s.AnnotationType.LINE:return new LineAnnotationElement(t);case s.AnnotationType.SQUARE:return new SquareAnnotationElement(t);case s.AnnotationType.CIRCLE:return new CircleAnnotationElement(t);case s.AnnotationType.POLYLINE:return new PolylineAnnotationElement(t);case s.AnnotationType.CARET:return new CaretAnnotationElement(t);case s.AnnotationType.INK:return new InkAnnotationElement(t);case s.AnnotationType.POLYGON:return new PolygonAnnotationElement(t);case s.AnnotationType.HIGHLIGHT:return new HighlightAnnotationElement(t);case s.AnnotationType.UNDERLINE:return new UnderlineAnnotationElement(t);case s.AnnotationType.SQUIGGLY:return new SquigglyAnnotationElement(t);case s.AnnotationType.STRIKEOUT:return new StrikeOutAnnotationElement(t);case s.AnnotationType.STAMP:return new StampAnnotationElement(t);case s.AnnotationType.FILEATTACHMENT:return new FileAttachmentAnnotationElement(t);default:return new AnnotationElement(t)}}}class AnnotationElement{#t=!1;constructor(t,{isRenderable:e=!1,ignoreBorder:i=!1,createQuadrilaterals:s=!1}={}){this.isRenderable=e;this.data=t.data;this.layer=t.layer;this.linkService=t.linkService;this.downloadManager=t.downloadManager;this.imageResourcesPath=t.imageResourcesPath;this.renderForms=t.renderForms;this.svgFactory=t.svgFactory;this.annotationStorage=t.annotationStorage;this.enableScripting=t.enableScripting;this.hasJSActions=t.hasJSActions;this._fieldObjects=t.fieldObjects;this.parent=t.parent;e&&(this.container=this._createContainer(i));s&&this._createQuadrilaterals()}static _hasPopupData({titleObj:t,contentsObj:e,richText:i}){return!!(t?.str||e?.str||i?.str)}get hasPopupData(){return AnnotationElement._hasPopupData(this.data)}_createContainer(t){const{data:e,parent:{page:i,viewport:n}}=this,a=document.createElement("section");a.setAttribute("data-annotation-id",e.id);this instanceof WidgetAnnotationElement||(a.tabIndex=o);a.style.zIndex=this.parent.zIndex++;this.data.popupRef&&a.setAttribute("aria-haspopup","dialog");e.noRotate&&a.classList.add("norotate");const{pageWidth:r,pageHeight:l,pageX:h,pageY:d}=n.rawDims;if(!e.rect||this instanceof PopupAnnotationElement){const{rotation:t}=e;e.hasOwnCanvas||0===t||this.setRotation(t,a);return a}const{width:c,height:u}=getRectDims(e.rect),p=s.Util.normalizeRect([e.rect[0],i.view[3]-e.rect[1]+i.view[1],e.rect[2],i.view[3]-e.rect[3]+i.view[1]]);if(!t&&e.borderStyle.width>0){a.style.borderWidth=`${e.borderStyle.width}px`;const t=e.borderStyle.horizontalCornerRadius,i=e.borderStyle.verticalCornerRadius;if(t>0||i>0){const e=`calc(${t}px * var(--scale-factor)) / calc(${i}px * var(--scale-factor))`;a.style.borderRadius=e}else if(this instanceof RadioButtonWidgetAnnotationElement){const t=`calc(${c}px * var(--scale-factor)) / calc(${u}px * var(--scale-factor))`;a.style.borderRadius=t}switch(e.borderStyle.style){case s.AnnotationBorderStyleType.SOLID:a.style.borderStyle="solid";break;case s.AnnotationBorderStyleType.DASHED:a.style.borderStyle="dashed";break;case s.AnnotationBorderStyleType.BEVELED:(0,s.warn)("Unimplemented border style: beveled");break;case s.AnnotationBorderStyleType.INSET:(0,s.warn)("Unimplemented border style: inset");break;case s.AnnotationBorderStyleType.UNDERLINE:a.style.borderBottomStyle="solid"}const n=e.borderColor||null;if(n){this.#t=!0;a.style.borderColor=s.Util.makeHexColor(0|n[0],0|n[1],0|n[2])}else a.style.borderWidth=0}a.style.left=100*(p[0]-h)/r+"%";a.style.top=100*(p[1]-d)/l+"%";const{rotation:g}=e;if(e.hasOwnCanvas||0===g){a.style.width=100*c/r+"%";a.style.height=100*u/l+"%"}else this.setRotation(g,a);return a}setRotation(t,e=this.container){if(!this.data.rect)return;const{pageWidth:i,pageHeight:s}=this.parent.viewport.rawDims,{width:n,height:a}=getRectDims(this.data.rect);let r,o;if(t%180==0){r=100*n/i;o=100*a/s}else{r=100*a/i;o=100*n/s}e.style.width=`${r}%`;e.style.height=`${o}%`;e.setAttribute("data-main-rotation",(360-t)%360)}get _commonActions(){const setColor=(t,e,i)=>{const s=i.detail[t],n=s[0],a=s.slice(1);i.target.style[e]=ColorConverters[`${n}_HTML`](a);this.annotationStorage.setValue(this.data.id,{[e]:ColorConverters[`${n}_rgb`](a)})};return(0,s.shadow)(this,"_commonActions",{display:t=>{const{display:e}=t.detail,i=e%2==1;this.container.style.visibility=i?"hidden":"visible";this.annotationStorage.setValue(this.data.id,{noView:i,noPrint:1===e||2===e})},print:t=>{this.annotationStorage.setValue(this.data.id,{noPrint:!t.detail.print})},hidden:t=>{const{hidden:e}=t.detail;this.container.style.visibility=e?"hidden":"visible";this.annotationStorage.setValue(this.data.id,{noPrint:e,noView:e})},focus:t=>{setTimeout((()=>t.target.focus({preventScroll:!1})),0)},userName:t=>{t.target.title=t.detail.userName},readonly:t=>{t.target.disabled=t.detail.readonly},required:t=>{this._setRequired(t.target,t.detail.required)},bgColor:t=>{setColor("bgColor","backgroundColor",t)},fillColor:t=>{setColor("fillColor","backgroundColor",t)},fgColor:t=>{setColor("fgColor","color",t)},textColor:t=>{setColor("textColor","color",t)},borderColor:t=>{setColor("borderColor","borderColor",t)},strokeColor:t=>{setColor("strokeColor","borderColor",t)},rotation:t=>{const e=t.detail.rotation;this.setRotation(e);this.annotationStorage.setValue(this.data.id,{rotation:e})}})}_dispatchEventFromSandbox(t,e){const i=this._commonActions;for(const s of Object.keys(e.detail)){const n=t[s]||i[s];n?.(e)}}_setDefaultPropertiesFromJS(t){if(!this.enableScripting)return;const e=this.annotationStorage.getRawValue(this.data.id);if(!e)return;const i=this._commonActions;for(const[s,n]of Object.entries(e)){const a=i[s];if(a){a({detail:{[s]:n},target:t});delete e[s]}}}_createQuadrilaterals(){if(!this.container)return;const{quadPoints:t}=this.data;if(!t)return;const[e,i,s,n]=this.data.rect;if(1===t.length){const[,{x:a,y:r},{x:o,y:l}]=t[0];if(s===a&&n===r&&e===o&&i===l)return}const{style:a}=this.container;let r;if(this.#t){const{borderColor:t,borderWidth:e}=a;a.borderWidth=0;r=["url('data:image/svg+xml;utf8,",'',``];this.container.classList.add("hasBorder")}const o=s-e,l=n-i,{svgFactory:h}=this,d=h.createElement("svg");d.classList.add("quadrilateralsContainer");d.setAttribute("width",0);d.setAttribute("height",0);const c=h.createElement("defs");d.append(c);const u=h.createElement("clipPath"),p=`clippath_${this.data.id}`;u.setAttribute("id",p);u.setAttribute("clipPathUnits","objectBoundingBox");c.append(u);for(const[,{x:i,y:s},{x:a,y:d}]of t){const t=h.createElement("rect"),c=(a-e)/o,p=(n-s)/l,g=(i-a)/o,m=(s-d)/l;t.setAttribute("x",c);t.setAttribute("y",p);t.setAttribute("width",g);t.setAttribute("height",m);u.append(t);r?.push(``)}if(this.#t){r.push("')");a.backgroundImage=r.join("")}this.container.append(d);this.container.style.clipPath=`url(#${p})`}_createPopup(){const{container:t,data:e}=this;t.setAttribute("aria-haspopup","dialog");const i=new PopupAnnotationElement({data:{color:e.color,titleObj:e.titleObj,modificationDate:e.modificationDate,contentsObj:e.contentsObj,richText:e.richText,parentRect:e.rect,borderStyle:0,id:`popup_${e.id}`,rotation:e.rotation},parent:this.parent,elements:[this]});this.parent.div.append(i.render())}render(){(0,s.unreachable)("Abstract method `AnnotationElement.render` called")}_getElementsByName(t,e=null){const i=[];if(this._fieldObjects){const n=this._fieldObjects[t];if(n)for(const{page:t,id:a,exportValues:r}of n){if(-1===t)continue;if(a===e)continue;const n="string"==typeof r?r:null,o=document.querySelector(`[data-element-id="${a}"]`);!o||l.has(o)?i.push({id:a,exportValue:n,domElement:o}):(0,s.warn)(`_getElementsByName - element not allowed: ${a}`)}return i}for(const s of document.getElementsByName(t)){const{exportValue:t}=s,n=s.getAttribute("data-element-id");n!==e&&(l.has(s)&&i.push({id:n,exportValue:t,domElement:s}))}return i}show(){this.container&&(this.container.hidden=!1);this.popup?.maybeShow()}hide(){this.container&&(this.container.hidden=!0);this.popup?.forceHide()}getElementsToTriggerPopup(){return this.container}addHighlightArea(){const t=this.getElementsToTriggerPopup();if(Array.isArray(t))for(const e of t)e.classList.add("highlightArea");else t.classList.add("highlightArea")}get _isEditable(){return!1}_editOnDoubleClick(){if(!this._isEditable)return;const{annotationEditorType:t,data:{id:e}}=this;this.container.addEventListener("dblclick",(()=>{this.linkService.eventBus?.dispatch("switchannotationeditormode",{source:this,mode:t,editId:e})}))}}class LinkAnnotationElement extends AnnotationElement{constructor(t,e=null){super(t,{isRenderable:!0,ignoreBorder:!!e?.ignoreBorder,createQuadrilaterals:!0});this.isTooltipOnly=t.data.isTooltipOnly}render(){const{data:t,linkService:e}=this,i=document.createElement("a");i.setAttribute("data-element-id",t.id);let s=!1;if(t.url){e.addLinkAttributes(i,t.url,t.newWindow);s=!0}else if(t.action){this._bindNamedAction(i,t.action);s=!0}else if(t.attachment){this.#e(i,t.attachment,t.attachmentDest);s=!0}else if(t.setOCGState){this.#i(i,t.setOCGState);s=!0}else if(t.dest){this._bindLink(i,t.dest);s=!0}else{if(t.actions&&(t.actions.Action||t.actions["Mouse Up"]||t.actions["Mouse Down"])&&this.enableScripting&&this.hasJSActions){this._bindJSAction(i,t);s=!0}if(t.resetForm){this._bindResetFormAction(i,t.resetForm);s=!0}else if(this.isTooltipOnly&&!s){this._bindLink(i,"");s=!0}}this.container.classList.add("linkAnnotation");s&&this.container.append(i);return this.container}#s(){this.container.setAttribute("data-internal-link","")}_bindLink(t,e){t.href=this.linkService.getDestinationHash(e);t.onclick=()=>{e&&this.linkService.goToDestination(e);return!1};(e||""===e)&&this.#s()}_bindNamedAction(t,e){t.href=this.linkService.getAnchorUrl("");t.onclick=()=>{this.linkService.executeNamedAction(e);return!1};this.#s()}#e(t,e,i=null){t.href=this.linkService.getAnchorUrl("");t.onclick=()=>{this.downloadManager?.openOrDownloadData(e.content,e.filename,i);return!1};this.#s()}#i(t,e){t.href=this.linkService.getAnchorUrl("");t.onclick=()=>{this.linkService.executeSetOCGState(e);return!1};this.#s()}_bindJSAction(t,e){t.href=this.linkService.getAnchorUrl("");const i=new Map([["Action","onclick"],["Mouse Up","onmouseup"],["Mouse Down","onmousedown"]]);for(const s of Object.keys(e.actions)){const n=i.get(s);n&&(t[n]=()=>{this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e.id,name:s}});return!1})}t.onclick||(t.onclick=()=>!1);this.#s()}_bindResetFormAction(t,e){const i=t.onclick;i||(t.href=this.linkService.getAnchorUrl(""));this.#s();if(this._fieldObjects)t.onclick=()=>{i?.();const{fields:t,refs:n,include:a}=e,r=[];if(0!==t.length||0!==n.length){const e=new Set(n);for(const i of t){const t=this._fieldObjects[i]||[];for(const{id:i}of t)e.add(i)}for(const t of Object.values(this._fieldObjects))for(const i of t)e.has(i.id)===a&&r.push(i)}else for(const t of Object.values(this._fieldObjects))r.push(...t);const o=this.annotationStorage,h=[];for(const t of r){const{id:e}=t;h.push(e);switch(t.type){case"text":{const i=t.defaultValue||"";o.setValue(e,{value:i});break}case"checkbox":case"radiobutton":{const i=t.defaultValue===t.exportValues;o.setValue(e,{value:i});break}case"combobox":case"listbox":{const i=t.defaultValue||"";o.setValue(e,{value:i});break}default:continue}const i=document.querySelector(`[data-element-id="${e}"]`);i&&(l.has(i)?i.dispatchEvent(new Event("resetform")):(0,s.warn)(`_bindResetFormAction - element not allowed: ${e}`))}this.enableScripting&&this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:"app",ids:h,name:"ResetForm"}});return!1};else{(0,s.warn)('_bindResetFormAction - "resetForm" action not supported, ensure that the `fieldObjects` parameter is provided.');i||(t.onclick=()=>!1)}}}class TextAnnotationElement extends AnnotationElement{constructor(t){super(t,{isRenderable:!0})}render(){this.container.classList.add("textAnnotation");const t=document.createElement("img");t.src=this.imageResourcesPath+"annotation-"+this.data.name.toLowerCase()+".svg";t.setAttribute("data-l10n-id","pdfjs-text-annotation-type");t.setAttribute("data-l10n-args",JSON.stringify({type:this.data.name}));!this.data.popupRef&&this.hasPopupData&&this._createPopup();this.container.append(t);return this.container}}class WidgetAnnotationElement extends AnnotationElement{render(){this.data.alternativeText&&(this.container.title=this.data.alternativeText);return this.container}showElementAndHideCanvas(t){if(this.data.hasOwnCanvas){"CANVAS"===t.previousSibling?.nodeName&&(t.previousSibling.hidden=!0);t.hidden=!1}}_getKeyModifier(t){return s.FeatureTest.platform.isMac?t.metaKey:t.ctrlKey}_setEventListener(t,e,i,s,n){i.includes("mouse")?t.addEventListener(i,(t=>{this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:s,value:n(t),shift:t.shiftKey,modifier:this._getKeyModifier(t)}})})):t.addEventListener(i,(t=>{if("blur"===i){if(!e.focused||!t.relatedTarget)return;e.focused=!1}else if("focus"===i){if(e.focused)return;e.focused=!0}n&&this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:s,value:n(t)}})}))}_setEventListeners(t,e,i,s){for(const[n,a]of i)if("Action"===a||this.data.actions?.[a]){"Focus"!==a&&"Blur"!==a||(e||={focused:!1});this._setEventListener(t,e,n,a,s);"Focus"!==a||this.data.actions?.Blur?"Blur"!==a||this.data.actions?.Focus||this._setEventListener(t,e,"focus","Focus",null):this._setEventListener(t,e,"blur","Blur",null)}}_setBackgroundColor(t){const e=this.data.backgroundColor||null;t.style.backgroundColor=null===e?"transparent":s.Util.makeHexColor(e[0],e[1],e[2])}_setTextStyle(t){const e=["left","center","right"],{fontColor:i}=this.data.defaultAppearanceData,n=this.data.defaultAppearanceData.fontSize||9,a=t.style;let r;const roundToOneDecimal=t=>Math.round(10*t)/10;if(this.data.multiLine){const t=Math.abs(this.data.rect[3]-this.data.rect[1]-2),e=t/(Math.round(t/(s.LINE_FACTOR*n))||1);r=Math.min(n,roundToOneDecimal(e/s.LINE_FACTOR))}else{const t=Math.abs(this.data.rect[3]-this.data.rect[1]-2);r=Math.min(n,roundToOneDecimal(t/s.LINE_FACTOR))}a.fontSize=`calc(${r}px * var(--scale-factor))`;a.color=s.Util.makeHexColor(i[0],i[1],i[2]);null!==this.data.textAlignment&&(a.textAlign=e[this.data.textAlignment])}_setRequired(t,e){e?t.setAttribute("required",!0):t.removeAttribute("required");t.setAttribute("aria-required",e)}}class TextWidgetAnnotationElement extends WidgetAnnotationElement{constructor(t){super(t,{isRenderable:t.renderForms||t.data.hasOwnCanvas||!t.data.hasAppearance&&!!t.data.fieldValue})}setPropertyOnSiblings(t,e,i,s){const n=this.annotationStorage;for(const a of this._getElementsByName(t.name,t.id)){a.domElement&&(a.domElement[e]=i);n.setValue(a.id,{[s]:i})}}render(){const t=this.annotationStorage,e=this.data.id;this.container.classList.add("textWidgetAnnotation");let i=null;if(this.renderForms){const s=t.getValue(e,{value:this.data.fieldValue});let n=s.value||"";const a=t.getValue(e,{charLimit:this.data.maxLen}).charLimit;a&&n.length>a&&(n=n.slice(0,a));let r=s.formattedValue||this.data.textContent?.join("\n")||null;r&&this.data.comb&&(r=r.replaceAll(/\s+/g,""));const h={userValue:n,formattedValue:r,lastCommittedValue:null,commitKey:1,focused:!1};if(this.data.multiLine){i=document.createElement("textarea");i.textContent=r??n;this.data.doNotScroll&&(i.style.overflowY="hidden")}else{i=document.createElement("input");i.type="text";i.setAttribute("value",r??n);this.data.doNotScroll&&(i.style.overflowX="hidden")}this.data.hasOwnCanvas&&(i.hidden=!0);l.add(i);i.setAttribute("data-element-id",e);i.disabled=this.data.readOnly;i.name=this.data.fieldName;i.tabIndex=o;this._setRequired(i,this.data.required);a&&(i.maxLength=a);i.addEventListener("input",(s=>{t.setValue(e,{value:s.target.value});this.setPropertyOnSiblings(i,"value",s.target.value,"value");h.formattedValue=null}));i.addEventListener("resetform",(t=>{const e=this.data.defaultFieldValue??"";i.value=h.userValue=e;h.formattedValue=null}));let blurListener=t=>{const{formattedValue:e}=h;null!=e&&(t.target.value=e);t.target.scrollLeft=0};if(this.enableScripting&&this.hasJSActions){i.addEventListener("focus",(t=>{if(h.focused)return;const{target:e}=t;h.userValue&&(e.value=h.userValue);h.lastCommittedValue=e.value;h.commitKey=1;this.data.actions?.Focus||(h.focused=!0)}));i.addEventListener("updatefromsandbox",(i=>{this.showElementAndHideCanvas(i.target);const s={value(i){h.userValue=i.detail.value??"";t.setValue(e,{value:h.userValue.toString()});i.target.value=h.userValue},formattedValue(i){const{formattedValue:s}=i.detail;h.formattedValue=s;null!=s&&i.target!==document.activeElement&&(i.target.value=s);t.setValue(e,{formattedValue:s})},selRange(t){t.target.setSelectionRange(...t.detail.selRange)},charLimit:i=>{const{charLimit:s}=i.detail,{target:n}=i;if(0===s){n.removeAttribute("maxLength");return}n.setAttribute("maxLength",s);let a=h.userValue;if(a&&!(a.length<=s)){a=a.slice(0,s);n.value=h.userValue=a;t.setValue(e,{value:a});this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:a,willCommit:!0,commitKey:1,selStart:n.selectionStart,selEnd:n.selectionEnd}})}}};this._dispatchEventFromSandbox(s,i)}));i.addEventListener("keydown",(t=>{h.commitKey=1;let i=-1;"Escape"===t.key?i=0:"Enter"!==t.key||this.data.multiLine?"Tab"===t.key&&(h.commitKey=3):i=2;if(-1===i)return;const{value:s}=t.target;if(h.lastCommittedValue!==s){h.lastCommittedValue=s;h.userValue=s;this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:s,willCommit:!0,commitKey:i,selStart:t.target.selectionStart,selEnd:t.target.selectionEnd}})}}));const s=blurListener;blurListener=null;i.addEventListener("blur",(t=>{if(!h.focused||!t.relatedTarget)return;this.data.actions?.Blur||(h.focused=!1);const{value:i}=t.target;h.userValue=i;h.lastCommittedValue!==i&&this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:i,willCommit:!0,commitKey:h.commitKey,selStart:t.target.selectionStart,selEnd:t.target.selectionEnd}});s(t)}));this.data.actions?.Keystroke&&i.addEventListener("beforeinput",(t=>{h.lastCommittedValue=null;const{data:i,target:s}=t,{value:n,selectionStart:a,selectionEnd:r}=s;let o=a,l=r;switch(t.inputType){case"deleteWordBackward":{const t=n.substring(0,a).match(/\w*[^\w]*$/);t&&(o-=t[0].length);break}case"deleteWordForward":{const t=n.substring(a).match(/^[^\w]*\w*/);t&&(l+=t[0].length);break}case"deleteContentBackward":a===r&&(o-=1);break;case"deleteContentForward":a===r&&(l+=1)}t.preventDefault();this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:n,change:i||"",willCommit:!1,selStart:o,selEnd:l}})}));this._setEventListeners(i,h,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],(t=>t.target.value))}blurListener&&i.addEventListener("blur",blurListener);if(this.data.comb){const t=(this.data.rect[2]-this.data.rect[0])/a;i.classList.add("comb");i.style.letterSpacing=`calc(${t}px * var(--scale-factor) - 1ch)`}}else{i=document.createElement("div");i.textContent=this.data.fieldValue;i.style.verticalAlign="middle";i.style.display="table-cell";this.data.hasOwnCanvas&&(i.hidden=!0)}this._setTextStyle(i);this._setBackgroundColor(i);this._setDefaultPropertiesFromJS(i);this.container.append(i);return this.container}}class SignatureWidgetAnnotationElement extends WidgetAnnotationElement{constructor(t){super(t,{isRenderable:!!t.data.hasOwnCanvas})}}class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement{constructor(t){super(t,{isRenderable:t.renderForms})}render(){const t=this.annotationStorage,e=this.data,i=e.id;let s=t.getValue(i,{value:e.exportValue===e.fieldValue}).value;if("string"==typeof s){s="Off"!==s;t.setValue(i,{value:s})}this.container.classList.add("buttonWidgetAnnotation","checkBox");const n=document.createElement("input");l.add(n);n.setAttribute("data-element-id",i);n.disabled=e.readOnly;this._setRequired(n,this.data.required);n.type="checkbox";n.name=e.fieldName;s&&n.setAttribute("checked",!0);n.setAttribute("exportValue",e.exportValue);n.tabIndex=o;n.addEventListener("change",(s=>{const{name:n,checked:a}=s.target;for(const s of this._getElementsByName(n,i)){const i=a&&s.exportValue===e.exportValue;s.domElement&&(s.domElement.checked=i);t.setValue(s.id,{value:i})}t.setValue(i,{value:a})}));n.addEventListener("resetform",(t=>{const i=e.defaultFieldValue||"Off";t.target.checked=i===e.exportValue}));if(this.enableScripting&&this.hasJSActions){n.addEventListener("updatefromsandbox",(e=>{const s={value(e){e.target.checked="Off"!==e.detail.value;t.setValue(i,{value:e.target.checked})}};this._dispatchEventFromSandbox(s,e)}));this._setEventListeners(n,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],(t=>t.target.checked))}this._setBackgroundColor(n);this._setDefaultPropertiesFromJS(n);this.container.append(n);return this.container}}class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement{constructor(t){super(t,{isRenderable:t.renderForms})}render(){this.container.classList.add("buttonWidgetAnnotation","radioButton");const t=this.annotationStorage,e=this.data,i=e.id;let s=t.getValue(i,{value:e.fieldValue===e.buttonValue}).value;if("string"==typeof s){s=s!==e.buttonValue;t.setValue(i,{value:s})}if(s)for(const s of this._getElementsByName(e.fieldName,i))t.setValue(s.id,{value:!1});const n=document.createElement("input");l.add(n);n.setAttribute("data-element-id",i);n.disabled=e.readOnly;this._setRequired(n,this.data.required);n.type="radio";n.name=e.fieldName;s&&n.setAttribute("checked",!0);n.tabIndex=o;n.addEventListener("change",(e=>{const{name:s,checked:n}=e.target;for(const e of this._getElementsByName(s,i))t.setValue(e.id,{value:!1});t.setValue(i,{value:n})}));n.addEventListener("resetform",(t=>{const i=e.defaultFieldValue;t.target.checked=null!=i&&i===e.buttonValue}));if(this.enableScripting&&this.hasJSActions){const s=e.buttonValue;n.addEventListener("updatefromsandbox",(e=>{const n={value:e=>{const n=s===e.detail.value;for(const s of this._getElementsByName(e.target.name)){const e=n&&s.id===i;s.domElement&&(s.domElement.checked=e);t.setValue(s.id,{value:e})}}};this._dispatchEventFromSandbox(n,e)}));this._setEventListeners(n,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],(t=>t.target.checked))}this._setBackgroundColor(n);this._setDefaultPropertiesFromJS(n);this.container.append(n);return this.container}}class PushButtonWidgetAnnotationElement extends LinkAnnotationElement{constructor(t){super(t,{ignoreBorder:t.data.hasAppearance})}render(){const t=super.render();t.classList.add("buttonWidgetAnnotation","pushButton");this.data.alternativeText&&(t.title=this.data.alternativeText);const e=t.lastChild;if(this.enableScripting&&this.hasJSActions&&e){this._setDefaultPropertiesFromJS(e);e.addEventListener("updatefromsandbox",(t=>{this._dispatchEventFromSandbox({},t)}))}return t}}class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement{constructor(t){super(t,{isRenderable:t.renderForms})}render(){this.container.classList.add("choiceWidgetAnnotation");const t=this.annotationStorage,e=this.data.id,i=t.getValue(e,{value:this.data.fieldValue}),s=document.createElement("select");l.add(s);s.setAttribute("data-element-id",e);s.disabled=this.data.readOnly;this._setRequired(s,this.data.required);s.name=this.data.fieldName;s.tabIndex=o;let n=this.data.combo&&this.data.options.length>0;if(!this.data.combo){s.size=this.data.options.length;this.data.multiSelect&&(s.multiple=!0)}s.addEventListener("resetform",(t=>{const e=this.data.defaultFieldValue;for(const t of s.options)t.selected=t.value===e}));for(const t of this.data.options){const e=document.createElement("option");e.textContent=t.displayValue;e.value=t.exportValue;if(i.value.includes(t.exportValue)){e.setAttribute("selected",!0);n=!1}s.append(e)}let a=null;if(n){const t=document.createElement("option");t.value=" ";t.setAttribute("hidden",!0);t.setAttribute("selected",!0);s.prepend(t);a=()=>{t.remove();s.removeEventListener("input",a);a=null};s.addEventListener("input",a)}const getValue=t=>{const e=t?"value":"textContent",{options:i,multiple:n}=s;return n?Array.prototype.filter.call(i,(t=>t.selected)).map((t=>t[e])):-1===i.selectedIndex?null:i[i.selectedIndex][e]};let r=getValue(!1);const getItems=t=>{const e=t.target.options;return Array.prototype.map.call(e,(t=>({displayValue:t.textContent,exportValue:t.value})))};if(this.enableScripting&&this.hasJSActions){s.addEventListener("updatefromsandbox",(i=>{const n={value(i){a?.();const n=i.detail.value,o=new Set(Array.isArray(n)?n:[n]);for(const t of s.options)t.selected=o.has(t.value);t.setValue(e,{value:getValue(!0)});r=getValue(!1)},multipleSelection(t){s.multiple=!0},remove(i){const n=s.options,a=i.detail.remove;n[a].selected=!1;s.remove(a);if(n.length>0){-1===Array.prototype.findIndex.call(n,(t=>t.selected))&&(n[0].selected=!0)}t.setValue(e,{value:getValue(!0),items:getItems(i)});r=getValue(!1)},clear(i){for(;0!==s.length;)s.remove(0);t.setValue(e,{value:null,items:[]});r=getValue(!1)},insert(i){const{index:n,displayValue:a,exportValue:o}=i.detail.insert,l=s.children[n],h=document.createElement("option");h.textContent=a;h.value=o;l?l.before(h):s.append(h);t.setValue(e,{value:getValue(!0),items:getItems(i)});r=getValue(!1)},items(i){const{items:n}=i.detail;for(;0!==s.length;)s.remove(0);for(const t of n){const{displayValue:e,exportValue:i}=t,n=document.createElement("option");n.textContent=e;n.value=i;s.append(n)}s.options.length>0&&(s.options[0].selected=!0);t.setValue(e,{value:getValue(!0),items:getItems(i)});r=getValue(!1)},indices(i){const s=new Set(i.detail.indices);for(const t of i.target.options)t.selected=s.has(t.index);t.setValue(e,{value:getValue(!0)});r=getValue(!1)},editable(t){t.target.disabled=!t.detail.editable}};this._dispatchEventFromSandbox(n,i)}));s.addEventListener("input",(i=>{const s=getValue(!0);t.setValue(e,{value:s});i.preventDefault();this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:r,changeEx:s,willCommit:!1,commitKey:1,keyDown:!1}})}));this._setEventListeners(s,null,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"],["input","Action"],["input","Validate"]],(t=>t.target.value))}else s.addEventListener("input",(function(i){t.setValue(e,{value:getValue(!0)})}));this.data.combo&&this._setTextStyle(s);this._setBackgroundColor(s);this._setDefaultPropertiesFromJS(s);this.container.append(s);return this.container}}class PopupAnnotationElement extends AnnotationElement{constructor(t){const{data:e,elements:i}=t;super(t,{isRenderable:AnnotationElement._hasPopupData(e)});this.elements=i}render(){this.container.classList.add("popupAnnotation");const t=new PopupElement({container:this.container,color:this.data.color,titleObj:this.data.titleObj,modificationDate:this.data.modificationDate,contentsObj:this.data.contentsObj,richText:this.data.richText,rect:this.data.rect,parentRect:this.data.parentRect||null,parent:this.parent,elements:this.elements,open:this.data.open}),e=[];for(const i of this.elements){i.popup=t;e.push(i.data.id);i.addHighlightArea()}this.container.setAttribute("aria-controls",e.map((t=>`${s.AnnotationPrefix}${t}`)).join(","));return this.container}}class PopupElement{#n=this.#a.bind(this);#r=this.#o.bind(this);#l=this.#h.bind(this);#d=this.#c.bind(this);#u=null;#p=null;#g=null;#m=null;#f=null;#b=null;#A=null;#v=!1;#y=null;#E=null;#_=null;#w=null;#x=!1;constructor({container:t,color:e,elements:i,titleObj:s,modificationDate:a,contentsObj:r,richText:o,parent:l,rect:h,parentRect:d,open:c}){this.#p=t;this.#w=s;this.#g=r;this.#_=o;this.#b=l;this.#u=e;this.#E=h;this.#A=d;this.#f=i;this.#m=n.PDFDateString.toDateObject(a);this.trigger=i.flatMap((t=>t.getElementsToTriggerPopup()));for(const t of this.trigger){t.addEventListener("click",this.#d);t.addEventListener("mouseenter",this.#l);t.addEventListener("mouseleave",this.#r);t.classList.add("popupTriggerArea")}for(const t of i)t.container?.addEventListener("keydown",this.#n);this.#p.hidden=!0;c&&this.#c()}render(){if(this.#y)return;const{page:{view:t},viewport:{rawDims:{pageWidth:e,pageHeight:i,pageX:n,pageY:a}}}=this.#b,o=this.#y=document.createElement("div");o.className="popup";if(this.#u){const t=o.style.outlineColor=s.Util.makeHexColor(...this.#u);if(CSS.supports("background-color","color-mix(in srgb, red 30%, white)"))o.style.backgroundColor=`color-mix(in srgb, ${t} 30%, white)`;else{const t=.7;o.style.backgroundColor=s.Util.makeHexColor(...this.#u.map((e=>Math.floor(t*(255-e)+e))))}}const l=document.createElement("span");l.className="header";const h=document.createElement("h1");l.append(h);({dir:h.dir,str:h.textContent}=this.#w);o.append(l);if(this.#m){const t=document.createElement("span");t.classList.add("popupDate");t.setAttribute("data-l10n-id","pdfjs-annotation-date-string");t.setAttribute("data-l10n-args",JSON.stringify({date:this.#m.toLocaleDateString(),time:this.#m.toLocaleTimeString()}));l.append(t)}const d=this.#g,c=this.#_;if(!c?.str||d?.str&&d.str!==c.str){const t=this._formatContents(d);o.append(t)}else{r.XfaLayer.render({xfaHtml:c.html,intent:"richText",div:o});o.lastChild.classList.add("richText","popupContent")}let u=!!this.#A,p=u?this.#A:this.#E;for(const t of this.#f)if(!p||null!==s.Util.intersect(t.data.rect,p)){p=t.data.rect;u=!0;break}const g=s.Util.normalizeRect([p[0],t[3]-p[1]+t[1],p[2],t[3]-p[3]+t[1]]),m=u?p[2]-p[0]+5:0,f=g[0]+m,b=g[1],{style:A}=this.#p;A.left=100*(f-n)/e+"%";A.top=100*(b-a)/i+"%";this.#p.append(o)}_formatContents({str:t,dir:e}){const i=document.createElement("p");i.classList.add("popupContent");i.dir=e;const s=t.split(/(?:\r\n?|\n)/);for(let t=0,e=s.length;t{"Enter"===t.key&&(n?t.metaKey:t.ctrlKey)&&this.#R()}));!e.popupRef&&this.hasPopupData?this._createPopup():i.classList.add("popupTriggerArea");t.append(i);return t}getElementsToTriggerPopup(){return this.#F}addHighlightArea(){this.container.classList.add("highlightArea")}#R(){this.downloadManager?.openOrDownloadData(this.content,this.filename)}}class AnnotationLayer{#k=null;#D=null;#I=new Map;constructor({div:t,accessibilityManager:e,annotationCanvasMap:i,page:s,viewport:n}){this.div=t;this.#k=e;this.#D=i;this.page=s;this.viewport=n;this.zIndex=0}#L(t,e){const i=t.firstChild||t;i.id=`${s.AnnotationPrefix}${e}`;this.div.append(t);this.#k?.moveElementInDOM(this.div,t,i,!1)}async render(t){const{annotations:e}=t,i=this.div;(0,n.setLayerDimensions)(i,this.viewport);const r=new Map,o={data:null,layer:i,linkService:t.linkService,downloadManager:t.downloadManager,imageResourcesPath:t.imageResourcesPath||"",renderForms:!1!==t.renderForms,svgFactory:new n.DOMSVGFactory,annotationStorage:t.annotationStorage||new a.AnnotationStorage,enableScripting:!0===t.enableScripting,hasJSActions:t.hasJSActions,fieldObjects:t.fieldObjects,parent:this,elements:null};for(const t of e){if(t.noHTML)continue;const e=t.annotationType===s.AnnotationType.POPUP;if(e){const e=r.get(t.id);if(!e)continue;o.elements=e}else{const{width:e,height:i}=getRectDims(t.rect);if(e<=0||i<=0)continue}o.data=t;const i=AnnotationElementFactory.create(o);if(!i.isRenderable)continue;if(!e&&t.popupRef){const e=r.get(t.popupRef);e?e.push(i):r.set(t.popupRef,[i])}i.annotationEditorType>0&&this.#I.set(i.data.id,i);const n=i.render();t.hidden&&(n.style.visibility="hidden");this.#L(n,t.id)}this.#O()}update({viewport:t}){const e=this.div;this.viewport=t;(0,n.setLayerDimensions)(e,{rotation:t.rotation});this.#O();e.hidden=!1}#O(){if(!this.#D)return;const t=this.div;for(const[e,i]of this.#D){const s=t.querySelector(`[data-annotation-id="${e}"]`);if(!s)continue;const{firstChild:n}=s;n?"CANVAS"===n.nodeName?n.replaceWith(i):n.before(i):s.append(i)}this.#D.clear()}getEditableAnnotations(){return Array.from(this.#I.values())}getEditableAnnotation(t){return this.#I.get(t)}}},780:(t,e,i)=>{i.d(e,{AnnotationStorage:()=>AnnotationStorage,PrintAnnotationStorage:()=>PrintAnnotationStorage,SerializableEmpty:()=>r});var s=i(266),n=i(115),a=i(825);const r=Object.freeze({map:null,hash:"",transfer:void 0});class AnnotationStorage{#B=!1;#N=new Map;constructor(){this.onSetModified=null;this.onResetModified=null;this.onAnnotationEditor=null}getValue(t,e){const i=this.#N.get(t);return void 0===i?e:Object.assign(e,i)}getRawValue(t){return this.#N.get(t)}remove(t){this.#N.delete(t);0===this.#N.size&&this.resetModified();if("function"==typeof this.onAnnotationEditor){for(const t of this.#N.values())if(t instanceof n.AnnotationEditor)return;this.onAnnotationEditor(null)}}setValue(t,e){const i=this.#N.get(t);let s=!1;if(void 0!==i){for(const[t,n]of Object.entries(e))if(i[t]!==n){s=!0;i[t]=n}}else{s=!0;this.#N.set(t,e)}s&&this.#U();e instanceof n.AnnotationEditor&&"function"==typeof this.onAnnotationEditor&&this.onAnnotationEditor(e.constructor._type)}has(t){return this.#N.has(t)}getAll(){return this.#N.size>0?(0,s.objectFromMap)(this.#N):null}setAll(t){for(const[e,i]of Object.entries(t))this.setValue(e,i)}get size(){return this.#N.size}#U(){if(!this.#B){this.#B=!0;"function"==typeof this.onSetModified&&this.onSetModified()}}resetModified(){if(this.#B){this.#B=!1;"function"==typeof this.onResetModified&&this.onResetModified()}}get print(){return new PrintAnnotationStorage(this)}get serializable(){if(0===this.#N.size)return r;const t=new Map,e=new a.MurmurHash3_64,i=[],s=Object.create(null);let o=!1;for(const[i,a]of this.#N){const r=a instanceof n.AnnotationEditor?a.serialize(!1,s):a;if(r){t.set(i,r);e.update(`${i}:${JSON.stringify(r)}`);o||=!!r.bitmap}}if(o)for(const e of t.values())e.bitmap&&i.push(e.bitmap);return t.size>0?{map:t,hash:e.hexdigest(),transfer:i}:r}}class PrintAnnotationStorage extends AnnotationStorage{#z;constructor(t){super();const{map:e,hash:i,transfer:s}=t.serializable,n=structuredClone(e,s?{transfer:s}:null);this.#z={map:n,hash:i,transfer:s}}get print(){(0,s.unreachable)("Should not call PrintAnnotationStorage.print")}get serializable(){return this.#z}}},406:(t,e,i)=>{i.a(t,(async(t,s)=>{try{i.d(e,{PDFDataRangeTransport:()=>PDFDataRangeTransport,PDFWorker:()=>PDFWorker,build:()=>P,getDocument:()=>getDocument,version:()=>M});var n=i(266),a=i(780),r=i(473),o=i(742),l=i(738),h=i(250),d=i(368),c=i(694),u=i(472),p=i(890),g=i(92),m=i(171),f=i(474),b=i(498),A=i(521),v=t([l,b]);[l,b]=v.then?(await v)():v;const y=65536,E=100,_=5e3,w=n.isNodeJS?l.NodeCanvasFactory:r.DOMCanvasFactory,x=n.isNodeJS?l.NodeCMapReaderFactory:r.DOMCMapReaderFactory,C=n.isNodeJS?l.NodeFilterFactory:r.DOMFilterFactory,S=n.isNodeJS?l.NodeStandardFontDataFactory:r.DOMStandardFontDataFactory;function getDocument(t){"string"==typeof t||t instanceof URL?t={url:t}:(0,n.isArrayBuffer)(t)&&(t={data:t});if("object"!=typeof t)throw new Error("Invalid parameter in getDocument, need parameter object.");if(!t.url&&!t.data&&!t.range)throw new Error("Invalid parameter object: need either .data, .range or .url");const e=new PDFDocumentLoadingTask,{docId:i}=e,s=t.url?getUrlProp(t.url):null,a=t.data?getDataProp(t.data):null,o=t.httpHeaders||null,l=!0===t.withCredentials,h=t.password??null,u=t.range instanceof PDFDataRangeTransport?t.range:null,p=Number.isInteger(t.rangeChunkSize)&&t.rangeChunkSize>0?t.rangeChunkSize:y;let A=t.worker instanceof PDFWorker?t.worker:null;const v=t.verbosity,E="string"!=typeof t.docBaseUrl||(0,r.isDataScheme)(t.docBaseUrl)?null:t.docBaseUrl,_="string"==typeof t.cMapUrl?t.cMapUrl:null,T=!1!==t.cMapPacked,M=t.CMapReaderFactory||x,P="string"==typeof t.standardFontDataUrl?t.standardFontDataUrl:null,F=t.StandardFontDataFactory||S,R=!0!==t.stopAtErrors,k=Number.isInteger(t.maxImageSize)&&t.maxImageSize>-1?t.maxImageSize:-1,D=!1!==t.isEvalSupported,I="boolean"==typeof t.isOffscreenCanvasSupported?t.isOffscreenCanvasSupported:!n.isNodeJS,L=Number.isInteger(t.canvasMaxAreaInBytes)?t.canvasMaxAreaInBytes:-1,O="boolean"==typeof t.disableFontFace?t.disableFontFace:n.isNodeJS,B=!0===t.fontExtraProperties,N=!0===t.enableXfa,U=t.ownerDocument||globalThis.document,z=!0===t.disableRange,H=!0===t.disableStream,j=!0===t.disableAutoFetch,V=!0===t.pdfBug,W=u?u.length:t.length??NaN,q="boolean"==typeof t.useSystemFonts?t.useSystemFonts:!n.isNodeJS&&!O,G="boolean"==typeof t.useWorkerFetch?t.useWorkerFetch:M===r.DOMCMapReaderFactory&&F===r.DOMStandardFontDataFactory&&_&&P&&(0,r.isValidFetchUrl)(_,document.baseURI)&&(0,r.isValidFetchUrl)(P,document.baseURI),$=t.canvasFactory||new w({ownerDocument:U}),K=t.filterFactory||new C({docId:i,ownerDocument:U});(0,n.setVerbosityLevel)(v);const X={canvasFactory:$,filterFactory:K};if(!G){X.cMapReaderFactory=new M({baseUrl:_,isCompressed:T});X.standardFontDataFactory=new F({baseUrl:P})}if(!A){const t={verbosity:v,port:d.GlobalWorkerOptions.workerPort};A=t.port?PDFWorker.fromPort(t):new PDFWorker(t);e._worker=A}const Y={docId:i,apiVersion:"4.0.379",data:a,password:h,disableAutoFetch:j,rangeChunkSize:p,length:W,docBaseUrl:E,enableXfa:N,evaluatorOptions:{maxImageSize:k,disableFontFace:O,ignoreErrors:R,isEvalSupported:D,isOffscreenCanvasSupported:I,canvasMaxAreaInBytes:L,fontExtraProperties:B,useSystemFonts:q,cMapUrl:G?_:null,standardFontDataUrl:G?P:null}},J={ignoreErrors:R,isEvalSupported:D,disableFontFace:O,fontExtraProperties:B,enableXfa:N,ownerDocument:U,disableAutoFetch:j,pdfBug:V,styleElement:null};A.promise.then((function(){if(e.destroyed)throw new Error("Loading aborted");const t=_fetchDocument(A,Y),h=new Promise((function(t){let e;if(u)e=new g.PDFDataTransportStream({length:W,initialData:u.initialData,progressiveDone:u.progressiveDone,contentDispositionFilename:u.contentDispositionFilename,disableRange:z,disableStream:H},u);else if(!a){e=(t=>n.isNodeJS?new b.PDFNodeStream(t):(0,r.isValidFetchUrl)(t.url)?new m.PDFFetchStream(t):new f.PDFNetworkStream(t))({url:s,length:W,httpHeaders:o,withCredentials:l,rangeChunkSize:p,disableRange:z,disableStream:H})}t(e)}));return Promise.all([t,h]).then((function([t,s]){if(e.destroyed)throw new Error("Loading aborted");const n=new c.MessageHandler(i,t,A.port),a=new WorkerTransport(n,e,s,J,X);e._transport=a;n.send("Ready",null)}))})).catch(e._capability.reject);return e}async function _fetchDocument(t,e){if(t.destroyed)throw new Error("Worker was destroyed");const i=await t.messageHandler.sendWithPromise("GetDocRequest",e,e.data?[e.data.buffer]:null);if(t.destroyed)throw new Error("Worker was destroyed");return i}function getUrlProp(t){if(t instanceof URL)return t.href;try{return new URL(t,window.location).href}catch{if(n.isNodeJS&&"string"==typeof t)return t}throw new Error("Invalid PDF url data: either string or URL-object is expected in the url property.")}function getDataProp(t){if(n.isNodeJS&&"undefined"!=typeof Buffer&&t instanceof Buffer)throw new Error("Please provide binary data as `Uint8Array`, rather than `Buffer`.");if(t instanceof Uint8Array&&t.byteLength===t.buffer.byteLength)return t;if("string"==typeof t)return(0,n.stringToBytes)(t);if("object"==typeof t&&!isNaN(t?.length)||(0,n.isArrayBuffer)(t))return new Uint8Array(t);throw new Error("Invalid PDF binary data: either TypedArray, string, or array-like object is expected in the data property.")}class PDFDocumentLoadingTask{static#H=0;constructor(){this._capability=new n.PromiseCapability;this._transport=null;this._worker=null;this.docId="d"+PDFDocumentLoadingTask.#H++;this.destroyed=!1;this.onPassword=null;this.onProgress=null}get promise(){return this._capability.promise}async destroy(){this.destroyed=!0;try{this._worker?.port&&(this._worker._pendingDestroy=!0);await(this._transport?.destroy())}catch(t){this._worker?.port&&delete this._worker._pendingDestroy;throw t}this._transport=null;if(this._worker){this._worker.destroy();this._worker=null}}}class PDFDataRangeTransport{constructor(t,e,i=!1,s=null){this.length=t;this.initialData=e;this.progressiveDone=i;this.contentDispositionFilename=s;this._rangeListeners=[];this._progressListeners=[];this._progressiveReadListeners=[];this._progressiveDoneListeners=[];this._readyCapability=new n.PromiseCapability}addRangeListener(t){this._rangeListeners.push(t)}addProgressListener(t){this._progressListeners.push(t)}addProgressiveReadListener(t){this._progressiveReadListeners.push(t)}addProgressiveDoneListener(t){this._progressiveDoneListeners.push(t)}onDataRange(t,e){for(const i of this._rangeListeners)i(t,e)}onDataProgress(t,e){this._readyCapability.promise.then((()=>{for(const i of this._progressListeners)i(t,e)}))}onDataProgressiveRead(t){this._readyCapability.promise.then((()=>{for(const e of this._progressiveReadListeners)e(t)}))}onDataProgressiveDone(){this._readyCapability.promise.then((()=>{for(const t of this._progressiveDoneListeners)t()}))}transportReady(){this._readyCapability.resolve()}requestDataRange(t,e){(0,n.unreachable)("Abstract method PDFDataRangeTransport.requestDataRange")}abort(){}}class PDFDocumentProxy{constructor(t,e){this._pdfInfo=t;this._transport=e}get annotationStorage(){return this._transport.annotationStorage}get filterFactory(){return this._transport.filterFactory}get numPages(){return this._pdfInfo.numPages}get fingerprints(){return this._pdfInfo.fingerprints}get isPureXfa(){return(0,n.shadow)(this,"isPureXfa",!!this._transport._htmlForXfa)}get allXfaHtml(){return this._transport._htmlForXfa}getPage(t){return this._transport.getPage(t)}getPageIndex(t){return this._transport.getPageIndex(t)}getDestinations(){return this._transport.getDestinations()}getDestination(t){return this._transport.getDestination(t)}getPageLabels(){return this._transport.getPageLabels()}getPageLayout(){return this._transport.getPageLayout()}getPageMode(){return this._transport.getPageMode()}getViewerPreferences(){return this._transport.getViewerPreferences()}getOpenAction(){return this._transport.getOpenAction()}getAttachments(){return this._transport.getAttachments()}getJSActions(){return this._transport.getDocJSActions()}getOutline(){return this._transport.getOutline()}getOptionalContentConfig(){return this._transport.getOptionalContentConfig()}getPermissions(){return this._transport.getPermissions()}getMetadata(){return this._transport.getMetadata()}getMarkInfo(){return this._transport.getMarkInfo()}getData(){return this._transport.getData()}saveDocument(){return this._transport.saveDocument()}getDownloadInfo(){return this._transport.downloadInfoCapability.promise}cleanup(t=!1){return this._transport.startCleanup(t||this.isPureXfa)}destroy(){return this.loadingTask.destroy()}get loadingParams(){return this._transport.loadingParams}get loadingTask(){return this._transport.loadingTask}getFieldObjects(){return this._transport.getFieldObjects()}hasJSActions(){return this._transport.hasJSActions()}getCalculationOrderIds(){return this._transport.getCalculationOrderIds()}}class PDFPageProxy{#j=null;#V=!1;constructor(t,e,i,s=!1){this._pageIndex=t;this._pageInfo=e;this._transport=i;this._stats=s?new r.StatTimer:null;this._pdfBug=s;this.commonObjs=i.commonObjs;this.objs=new PDFObjects;this._maybeCleanupAfterRender=!1;this._intentStates=new Map;this.destroyed=!1}get pageNumber(){return this._pageIndex+1}get rotate(){return this._pageInfo.rotate}get ref(){return this._pageInfo.ref}get userUnit(){return this._pageInfo.userUnit}get view(){return this._pageInfo.view}getViewport({scale:t,rotation:e=this.rotate,offsetX:i=0,offsetY:s=0,dontFlip:n=!1}={}){return new r.PageViewport({viewBox:this.view,scale:t,rotation:e,offsetX:i,offsetY:s,dontFlip:n})}getAnnotations({intent:t="display"}={}){const e=this._transport.getRenderingIntent(t);return this._transport.getAnnotations(this._pageIndex,e.renderingIntent)}getJSActions(){return this._transport.getPageJSActions(this._pageIndex)}get filterFactory(){return this._transport.filterFactory}get isPureXfa(){return(0,n.shadow)(this,"isPureXfa",!!this._transport._htmlForXfa)}async getXfa(){return this._transport._htmlForXfa?.children[this._pageIndex]||null}render({canvasContext:t,viewport:e,intent:i="display",annotationMode:s=n.AnnotationMode.ENABLE,transform:a=null,background:r=null,optionalContentConfigPromise:o=null,annotationCanvasMap:l=null,pageColors:h=null,printAnnotationStorage:d=null}){this._stats?.time("Overall");const c=this._transport.getRenderingIntent(i,s,d);this.#V=!1;this.#W();o||(o=this._transport.getOptionalContentConfig());let u=this._intentStates.get(c.cacheKey);if(!u){u=Object.create(null);this._intentStates.set(c.cacheKey,u)}if(u.streamReaderCancelTimeout){clearTimeout(u.streamReaderCancelTimeout);u.streamReaderCancelTimeout=null}const p=!!(c.renderingIntent&n.RenderingIntentFlag.PRINT);if(!u.displayReadyCapability){u.displayReadyCapability=new n.PromiseCapability;u.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null};this._stats?.time("Page Request");this._pumpOperatorList(c)}const complete=t=>{u.renderTasks.delete(g);(this._maybeCleanupAfterRender||p)&&(this.#V=!0);this.#q(!p);if(t){g.capability.reject(t);this._abortOperatorList({intentState:u,reason:t instanceof Error?t:new Error(t)})}else g.capability.resolve();this._stats?.timeEnd("Rendering");this._stats?.timeEnd("Overall")},g=new InternalRenderTask({callback:complete,params:{canvasContext:t,viewport:e,transform:a,background:r},objs:this.objs,commonObjs:this.commonObjs,annotationCanvasMap:l,operatorList:u.operatorList,pageIndex:this._pageIndex,canvasFactory:this._transport.canvasFactory,filterFactory:this._transport.filterFactory,useRequestAnimationFrame:!p,pdfBug:this._pdfBug,pageColors:h});(u.renderTasks||=new Set).add(g);const m=g.task;Promise.all([u.displayReadyCapability.promise,o]).then((([t,e])=>{if(this.destroyed)complete();else{this._stats?.time("Rendering");g.initializeGraphics({transparency:t,optionalContentConfig:e});g.operatorListChanged()}})).catch(complete);return m}getOperatorList({intent:t="display",annotationMode:e=n.AnnotationMode.ENABLE,printAnnotationStorage:i=null}={}){const s=this._transport.getRenderingIntent(t,e,i,!0);let a,r=this._intentStates.get(s.cacheKey);if(!r){r=Object.create(null);this._intentStates.set(s.cacheKey,r)}if(!r.opListReadCapability){a=Object.create(null);a.operatorListChanged=function operatorListChanged(){if(r.operatorList.lastChunk){r.opListReadCapability.resolve(r.operatorList);r.renderTasks.delete(a)}};r.opListReadCapability=new n.PromiseCapability;(r.renderTasks||=new Set).add(a);r.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null};this._stats?.time("Page Request");this._pumpOperatorList(s)}return r.opListReadCapability.promise}streamTextContent({includeMarkedContent:t=!1,disableNormalization:e=!1}={}){return this._transport.messageHandler.sendWithStream("GetTextContent",{pageIndex:this._pageIndex,includeMarkedContent:!0===t,disableNormalization:!0===e},{highWaterMark:100,size:t=>t.items.length})}getTextContent(t={}){if(this._transport._htmlForXfa)return this.getXfa().then((t=>A.XfaText.textContent(t)));const e=this.streamTextContent(t);return new Promise((function(t,i){const s=e.getReader(),n={items:[],styles:Object.create(null)};!function pump(){s.read().then((function({value:e,done:i}){if(i)t(n);else{Object.assign(n.styles,e.styles);n.items.push(...e.items);pump()}}),i)}()}))}getStructTree(){return this._transport.getStructTree(this._pageIndex)}_destroy(){this.destroyed=!0;const t=[];for(const e of this._intentStates.values()){this._abortOperatorList({intentState:e,reason:new Error("Page was destroyed."),force:!0});if(!e.opListReadCapability)for(const i of e.renderTasks){t.push(i.completed);i.cancel()}}this.objs.clear();this.#V=!1;this.#W();return Promise.all(t)}cleanup(t=!1){this.#V=!0;const e=this.#q(!1);t&&e&&(this._stats&&=new r.StatTimer);return e}#q(t=!1){this.#W();if(!this.#V||this.destroyed)return!1;if(t){this.#j=setTimeout((()=>{this.#j=null;this.#q(!1)}),_);return!1}for(const{renderTasks:t,operatorList:e}of this._intentStates.values())if(t.size>0||!e.lastChunk)return!1;this._intentStates.clear();this.objs.clear();this.#V=!1;return!0}#W(){if(this.#j){clearTimeout(this.#j);this.#j=null}}_startRenderPage(t,e){const i=this._intentStates.get(e);if(i){this._stats?.timeEnd("Page Request");i.displayReadyCapability?.resolve(t)}}_renderPageChunk(t,e){for(let i=0,s=t.length;i{a.read().then((({value:t,done:e})=>{if(e)r.streamReader=null;else if(!this._transport.destroyed){this._renderPageChunk(t,r);pump()}}),(t=>{r.streamReader=null;if(!this._transport.destroyed){if(r.operatorList){r.operatorList.lastChunk=!0;for(const t of r.renderTasks)t.operatorListChanged();this.#q(!0)}if(r.displayReadyCapability)r.displayReadyCapability.reject(t);else{if(!r.opListReadCapability)throw t;r.opListReadCapability.reject(t)}}}))};pump()}_abortOperatorList({intentState:t,reason:e,force:i=!1}){if(t.streamReader){if(t.streamReaderCancelTimeout){clearTimeout(t.streamReaderCancelTimeout);t.streamReaderCancelTimeout=null}if(!i){if(t.renderTasks.size>0)return;if(e instanceof r.RenderingCancelledException){let i=E;e.extraDelay>0&&e.extraDelay<1e3&&(i+=e.extraDelay);t.streamReaderCancelTimeout=setTimeout((()=>{t.streamReaderCancelTimeout=null;this._abortOperatorList({intentState:t,reason:e,force:!0})}),i);return}}t.streamReader.cancel(new n.AbortException(e.message)).catch((()=>{}));t.streamReader=null;if(!this._transport.destroyed){for(const[e,i]of this._intentStates)if(i===t){this._intentStates.delete(e);break}this.cleanup()}}}get stats(){return this._stats}}class LoopbackPort{#G=new Set;#$=Promise.resolve();postMessage(t,e){const i={data:structuredClone(t,e?{transfer:e}:null)};this.#$.then((()=>{for(const t of this.#G)t.call(this,i)}))}addEventListener(t,e){this.#G.add(e)}removeEventListener(t,e){this.#G.delete(e)}terminate(){this.#G.clear()}}const T={isWorkerDisabled:!1,fakeWorkerId:0};if(n.isNodeJS){T.isWorkerDisabled=!0;d.GlobalWorkerOptions.workerSrc||="./pdf.worker.mjs"}T.isSameOrigin=function(t,e){let i;try{i=new URL(t);if(!i.origin||"null"===i.origin)return!1}catch{return!1}const s=new URL(e,i);return i.origin===s.origin};T.createCDNWrapper=function(t){const e=`await import("${t}");`;return URL.createObjectURL(new Blob([e],{type:"text/javascript"}))};class PDFWorker{static#K;constructor({name:t=null,port:e=null,verbosity:i=(0,n.getVerbosityLevel)()}={}){this.name=t;this.destroyed=!1;this.verbosity=i;this._readyCapability=new n.PromiseCapability;this._port=null;this._webWorker=null;this._messageHandler=null;if(e){if(PDFWorker.#K?.has(e))throw new Error("Cannot use more than one PDFWorker per port.");(PDFWorker.#K||=new WeakMap).set(e,this);this._initializeFromPort(e)}else this._initialize()}get promise(){return this._readyCapability.promise}get port(){return this._port}get messageHandler(){return this._messageHandler}_initializeFromPort(t){this._port=t;this._messageHandler=new c.MessageHandler("main","worker",t);this._messageHandler.on("ready",(function(){}));this._readyCapability.resolve();this._messageHandler.send("configure",{verbosity:this.verbosity})}_initialize(){if(!T.isWorkerDisabled&&!PDFWorker.#X){let{workerSrc:t}=PDFWorker;try{T.isSameOrigin(window.location.href,t)||(t=T.createCDNWrapper(new URL(t,window.location).href));const e=new Worker(t,{type:"module"}),i=new c.MessageHandler("main","worker",e),terminateEarly=()=>{e.removeEventListener("error",onWorkerError);i.destroy();e.terminate();this.destroyed?this._readyCapability.reject(new Error("Worker was destroyed")):this._setupFakeWorker()},onWorkerError=()=>{this._webWorker||terminateEarly()};e.addEventListener("error",onWorkerError);i.on("test",(t=>{e.removeEventListener("error",onWorkerError);if(this.destroyed)terminateEarly();else if(t){this._messageHandler=i;this._port=e;this._webWorker=e;this._readyCapability.resolve();i.send("configure",{verbosity:this.verbosity})}else{this._setupFakeWorker();i.destroy();e.terminate()}}));i.on("ready",(t=>{e.removeEventListener("error",onWorkerError);if(this.destroyed)terminateEarly();else try{sendTest()}catch{this._setupFakeWorker()}}));const sendTest=()=>{const t=new Uint8Array;i.send("test",t,[t.buffer])};sendTest();return}catch{(0,n.info)("The worker has been disabled.")}}this._setupFakeWorker()}_setupFakeWorker(){if(!T.isWorkerDisabled){(0,n.warn)("Setting up fake worker.");T.isWorkerDisabled=!0}PDFWorker._setupFakeWorkerGlobal.then((t=>{if(this.destroyed){this._readyCapability.reject(new Error("Worker was destroyed"));return}const e=new LoopbackPort;this._port=e;const i="fake"+T.fakeWorkerId++,s=new c.MessageHandler(i+"_worker",i,e);t.setup(s,e);const n=new c.MessageHandler(i,i+"_worker",e);this._messageHandler=n;this._readyCapability.resolve();n.send("configure",{verbosity:this.verbosity})})).catch((t=>{this._readyCapability.reject(new Error(`Setting up fake worker failed: "${t.message}".`))}))}destroy(){this.destroyed=!0;if(this._webWorker){this._webWorker.terminate();this._webWorker=null}PDFWorker.#K?.delete(this._port);this._port=null;if(this._messageHandler){this._messageHandler.destroy();this._messageHandler=null}}static fromPort(t){if(!t?.port)throw new Error("PDFWorker.fromPort - invalid method signature.");const e=this.#K?.get(t.port);if(e){if(e._pendingDestroy)throw new Error("PDFWorker.fromPort - the worker is being destroyed.\nPlease remember to await `PDFDocumentLoadingTask.destroy()`-calls.");return e}return new PDFWorker(t)}static get workerSrc(){if(d.GlobalWorkerOptions.workerSrc)return d.GlobalWorkerOptions.workerSrc;throw new Error('No "GlobalWorkerOptions.workerSrc" specified.')}static get#X(){try{return globalThis.pdfjsWorker?.WorkerMessageHandler||null}catch{return null}}static get _setupFakeWorkerGlobal(){return(0,n.shadow)(this,"_setupFakeWorkerGlobal",(async()=>{if(this.#X)return this.#X;return(await import(this.workerSrc)).WorkerMessageHandler})())}}class WorkerTransport{#Y=new Map;#J=new Map;#Q=new Map;#Z=null;constructor(t,e,i,s,a){this.messageHandler=t;this.loadingTask=e;this.commonObjs=new PDFObjects;this.fontLoader=new o.FontLoader({ownerDocument:s.ownerDocument,styleElement:s.styleElement});this._params=s;this.canvasFactory=a.canvasFactory;this.filterFactory=a.filterFactory;this.cMapReaderFactory=a.cMapReaderFactory;this.standardFontDataFactory=a.standardFontDataFactory;this.destroyed=!1;this.destroyCapability=null;this._networkStream=i;this._fullReader=null;this._lastProgress=null;this.downloadInfoCapability=new n.PromiseCapability;this.setupMessageHandler()}#tt(t,e=null){const i=this.#Y.get(t);if(i)return i;const s=this.messageHandler.sendWithPromise(t,e);this.#Y.set(t,s);return s}get annotationStorage(){return(0,n.shadow)(this,"annotationStorage",new a.AnnotationStorage)}getRenderingIntent(t,e=n.AnnotationMode.ENABLE,i=null,s=!1){let r=n.RenderingIntentFlag.DISPLAY,o=a.SerializableEmpty;switch(t){case"any":r=n.RenderingIntentFlag.ANY;break;case"display":break;case"print":r=n.RenderingIntentFlag.PRINT;break;default:(0,n.warn)(`getRenderingIntent - invalid intent: ${t}`)}switch(e){case n.AnnotationMode.DISABLE:r+=n.RenderingIntentFlag.ANNOTATIONS_DISABLE;break;case n.AnnotationMode.ENABLE:break;case n.AnnotationMode.ENABLE_FORMS:r+=n.RenderingIntentFlag.ANNOTATIONS_FORMS;break;case n.AnnotationMode.ENABLE_STORAGE:r+=n.RenderingIntentFlag.ANNOTATIONS_STORAGE;o=(r&n.RenderingIntentFlag.PRINT&&i instanceof a.PrintAnnotationStorage?i:this.annotationStorage).serializable;break;default:(0,n.warn)(`getRenderingIntent - invalid annotationMode: ${e}`)}s&&(r+=n.RenderingIntentFlag.OPLIST);return{renderingIntent:r,cacheKey:`${r}_${o.hash}`,annotationStorageSerializable:o}}destroy(){if(this.destroyCapability)return this.destroyCapability.promise;this.destroyed=!0;this.destroyCapability=new n.PromiseCapability;this.#Z?.reject(new Error("Worker was destroyed during onPassword callback"));const t=[];for(const e of this.#J.values())t.push(e._destroy());this.#J.clear();this.#Q.clear();this.hasOwnProperty("annotationStorage")&&this.annotationStorage.resetModified();const e=this.messageHandler.sendWithPromise("Terminate",null);t.push(e);Promise.all(t).then((()=>{this.commonObjs.clear();this.fontLoader.clear();this.#Y.clear();this.filterFactory.destroy();this._networkStream?.cancelAllRequests(new n.AbortException("Worker was terminated."));if(this.messageHandler){this.messageHandler.destroy();this.messageHandler=null}this.destroyCapability.resolve()}),this.destroyCapability.reject);return this.destroyCapability.promise}setupMessageHandler(){const{messageHandler:t,loadingTask:e}=this;t.on("GetReader",((t,e)=>{(0,n.assert)(this._networkStream,"GetReader - no `IPDFStream` instance available.");this._fullReader=this._networkStream.getFullReader();this._fullReader.onProgress=t=>{this._lastProgress={loaded:t.loaded,total:t.total}};e.onPull=()=>{this._fullReader.read().then((function({value:t,done:i}){if(i)e.close();else{(0,n.assert)(t instanceof ArrayBuffer,"GetReader - expected an ArrayBuffer.");e.enqueue(new Uint8Array(t),1,[t])}})).catch((t=>{e.error(t)}))};e.onCancel=t=>{this._fullReader.cancel(t);e.ready.catch((t=>{if(!this.destroyed)throw t}))}}));t.on("ReaderHeadersReady",(t=>{const i=new n.PromiseCapability,s=this._fullReader;s.headersReady.then((()=>{if(!s.isStreamingSupported||!s.isRangeSupported){this._lastProgress&&e.onProgress?.(this._lastProgress);s.onProgress=t=>{e.onProgress?.({loaded:t.loaded,total:t.total})}}i.resolve({isStreamingSupported:s.isStreamingSupported,isRangeSupported:s.isRangeSupported,contentLength:s.contentLength})}),i.reject);return i.promise}));t.on("GetRangeReader",((t,e)=>{(0,n.assert)(this._networkStream,"GetRangeReader - no `IPDFStream` instance available.");const i=this._networkStream.getRangeReader(t.begin,t.end);if(i){e.onPull=()=>{i.read().then((function({value:t,done:i}){if(i)e.close();else{(0,n.assert)(t instanceof ArrayBuffer,"GetRangeReader - expected an ArrayBuffer.");e.enqueue(new Uint8Array(t),1,[t])}})).catch((t=>{e.error(t)}))};e.onCancel=t=>{i.cancel(t);e.ready.catch((t=>{if(!this.destroyed)throw t}))}}else e.close()}));t.on("GetDoc",(({pdfInfo:t})=>{this._numPages=t.numPages;this._htmlForXfa=t.htmlForXfa;delete t.htmlForXfa;e._capability.resolve(new PDFDocumentProxy(t,this))}));t.on("DocException",(function(t){let i;switch(t.name){case"PasswordException":i=new n.PasswordException(t.message,t.code);break;case"InvalidPDFException":i=new n.InvalidPDFException(t.message);break;case"MissingPDFException":i=new n.MissingPDFException(t.message);break;case"UnexpectedResponseException":i=new n.UnexpectedResponseException(t.message,t.status);break;case"UnknownErrorException":i=new n.UnknownErrorException(t.message,t.details);break;default:(0,n.unreachable)("DocException - expected a valid Error.")}e._capability.reject(i)}));t.on("PasswordRequest",(t=>{this.#Z=new n.PromiseCapability;if(e.onPassword){const updatePassword=t=>{t instanceof Error?this.#Z.reject(t):this.#Z.resolve({password:t})};try{e.onPassword(updatePassword,t.code)}catch(t){this.#Z.reject(t)}}else this.#Z.reject(new n.PasswordException(t.message,t.code));return this.#Z.promise}));t.on("DataLoaded",(t=>{e.onProgress?.({loaded:t.length,total:t.length});this.downloadInfoCapability.resolve(t)}));t.on("StartRenderPage",(t=>{if(this.destroyed)return;this.#J.get(t.pageIndex)._startRenderPage(t.transparency,t.cacheKey)}));t.on("commonobj",(([e,i,s])=>{if(this.destroyed)return null;if(this.commonObjs.has(e))return null;switch(i){case"Font":const a=this._params;if("error"in s){const t=s.error;(0,n.warn)(`Error during font loading: ${t}`);this.commonObjs.resolve(e,t);break}const r=a.pdfBug&&globalThis.FontInspector?.enabled?(t,e)=>globalThis.FontInspector.fontAdded(t,e):null,l=new o.FontFaceObject(s,{isEvalSupported:a.isEvalSupported,disableFontFace:a.disableFontFace,ignoreErrors:a.ignoreErrors,inspectFont:r});this.fontLoader.bind(l).catch((i=>t.sendWithPromise("FontFallback",{id:e}))).finally((()=>{!a.fontExtraProperties&&l.data&&(l.data=null);this.commonObjs.resolve(e,l)}));break;case"CopyLocalImage":const{imageRef:h}=s;(0,n.assert)(h,"The imageRef must be defined.");for(const t of this.#J.values())for(const[,i]of t.objs)if(i.ref===h){if(!i.dataLen)return null;this.commonObjs.resolve(e,structuredClone(i));return i.dataLen}break;case"FontPath":case"Image":case"Pattern":this.commonObjs.resolve(e,s);break;default:throw new Error(`Got unknown common object type ${i}`)}return null}));t.on("obj",(([t,e,i,s])=>{if(this.destroyed)return;const a=this.#J.get(e);if(!a.objs.has(t))if(0!==a._intentStates.size)switch(i){case"Image":a.objs.resolve(t,s);s?.dataLen>n.MAX_IMAGE_SIZE_TO_CACHE&&(a._maybeCleanupAfterRender=!0);break;case"Pattern":a.objs.resolve(t,s);break;default:throw new Error(`Got unknown object type ${i}`)}else s?.bitmap?.close()}));t.on("DocProgress",(t=>{this.destroyed||e.onProgress?.({loaded:t.loaded,total:t.total})}));t.on("FetchBuiltInCMap",(t=>this.destroyed?Promise.reject(new Error("Worker was destroyed.")):this.cMapReaderFactory?this.cMapReaderFactory.fetch(t):Promise.reject(new Error("CMapReaderFactory not initialized, see the `useWorkerFetch` parameter."))));t.on("FetchStandardFontData",(t=>this.destroyed?Promise.reject(new Error("Worker was destroyed.")):this.standardFontDataFactory?this.standardFontDataFactory.fetch(t):Promise.reject(new Error("StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter."))))}getData(){return this.messageHandler.sendWithPromise("GetData",null)}saveDocument(){this.annotationStorage.size<=0&&(0,n.warn)("saveDocument called while `annotationStorage` is empty, please use the getData-method instead.");const{map:t,transfer:e}=this.annotationStorage.serializable;return this.messageHandler.sendWithPromise("SaveDocument",{isPureXfa:!!this._htmlForXfa,numPages:this._numPages,annotationStorage:t,filename:this._fullReader?.filename??null},e).finally((()=>{this.annotationStorage.resetModified()}))}getPage(t){if(!Number.isInteger(t)||t<=0||t>this._numPages)return Promise.reject(new Error("Invalid page request."));const e=t-1,i=this.#Q.get(e);if(i)return i;const s=this.messageHandler.sendWithPromise("GetPage",{pageIndex:e}).then((t=>{if(this.destroyed)throw new Error("Transport destroyed");const i=new PDFPageProxy(e,t,this,this._params.pdfBug);this.#J.set(e,i);return i}));this.#Q.set(e,s);return s}getPageIndex(t){return"object"!=typeof t||null===t||!Number.isInteger(t.num)||t.num<0||!Number.isInteger(t.gen)||t.gen<0?Promise.reject(new Error("Invalid pageIndex request.")):this.messageHandler.sendWithPromise("GetPageIndex",{num:t.num,gen:t.gen})}getAnnotations(t,e){return this.messageHandler.sendWithPromise("GetAnnotations",{pageIndex:t,intent:e})}getFieldObjects(){return this.#tt("GetFieldObjects")}hasJSActions(){return this.#tt("HasJSActions")}getCalculationOrderIds(){return this.messageHandler.sendWithPromise("GetCalculationOrderIds",null)}getDestinations(){return this.messageHandler.sendWithPromise("GetDestinations",null)}getDestination(t){return"string"!=typeof t?Promise.reject(new Error("Invalid destination request.")):this.messageHandler.sendWithPromise("GetDestination",{id:t})}getPageLabels(){return this.messageHandler.sendWithPromise("GetPageLabels",null)}getPageLayout(){return this.messageHandler.sendWithPromise("GetPageLayout",null)}getPageMode(){return this.messageHandler.sendWithPromise("GetPageMode",null)}getViewerPreferences(){return this.messageHandler.sendWithPromise("GetViewerPreferences",null)}getOpenAction(){return this.messageHandler.sendWithPromise("GetOpenAction",null)}getAttachments(){return this.messageHandler.sendWithPromise("GetAttachments",null)}getDocJSActions(){return this.#tt("GetDocJSActions")}getPageJSActions(t){return this.messageHandler.sendWithPromise("GetPageJSActions",{pageIndex:t})}getStructTree(t){return this.messageHandler.sendWithPromise("GetStructTree",{pageIndex:t})}getOutline(){return this.messageHandler.sendWithPromise("GetOutline",null)}getOptionalContentConfig(){return this.messageHandler.sendWithPromise("GetOptionalContentConfig",null).then((t=>new p.OptionalContentConfig(t)))}getPermissions(){return this.messageHandler.sendWithPromise("GetPermissions",null)}getMetadata(){const t="GetMetadata",e=this.#Y.get(t);if(e)return e;const i=this.messageHandler.sendWithPromise(t,null).then((t=>({info:t[0],metadata:t[1]?new u.Metadata(t[1]):null,contentDispositionFilename:this._fullReader?.filename??null,contentLength:this._fullReader?.contentLength??null})));this.#Y.set(t,i);return i}getMarkInfo(){return this.messageHandler.sendWithPromise("GetMarkInfo",null)}async startCleanup(t=!1){if(!this.destroyed){await this.messageHandler.sendWithPromise("Cleanup",null);for(const t of this.#J.values()){if(!t.cleanup())throw new Error(`startCleanup: Page ${t.pageNumber} is currently rendering.`)}this.commonObjs.clear();t||this.fontLoader.clear();this.#Y.clear();this.filterFactory.destroy(!0)}}get loadingParams(){const{disableAutoFetch:t,enableXfa:e}=this._params;return(0,n.shadow)(this,"loadingParams",{disableAutoFetch:t,enableXfa:e})}}class PDFObjects{#et=Object.create(null);#it(t){return this.#et[t]||={capability:new n.PromiseCapability,data:null}}get(t,e=null){if(e){const i=this.#it(t);i.capability.promise.then((()=>e(i.data)));return null}const i=this.#et[t];if(!i?.capability.settled)throw new Error(`Requesting object that isn't resolved yet ${t}.`);return i.data}has(t){const e=this.#et[t];return e?.capability.settled??!1}resolve(t,e=null){const i=this.#it(t);i.data=e;i.capability.resolve()}clear(){for(const t in this.#et){const{data:e}=this.#et[t];e?.bitmap?.close()}this.#et=Object.create(null)}*[Symbol.iterator](){for(const t in this.#et){const{capability:e,data:i}=this.#et[t];e.settled&&(yield[t,i])}}}class RenderTask{#st=null;constructor(t){this.#st=t;this.onContinue=null}get promise(){return this.#st.capability.promise}cancel(t=0){this.#st.cancel(null,t)}get separateAnnots(){const{separateAnnots:t}=this.#st.operatorList;if(!t)return!1;const{annotationCanvasMap:e}=this.#st;return t.form||t.canvas&&e?.size>0}}class InternalRenderTask{static#nt=new WeakSet;constructor({callback:t,params:e,objs:i,commonObjs:s,annotationCanvasMap:a,operatorList:r,pageIndex:o,canvasFactory:l,filterFactory:h,useRequestAnimationFrame:d=!1,pdfBug:c=!1,pageColors:u=null}){this.callback=t;this.params=e;this.objs=i;this.commonObjs=s;this.annotationCanvasMap=a;this.operatorListIdx=null;this.operatorList=r;this._pageIndex=o;this.canvasFactory=l;this.filterFactory=h;this._pdfBug=c;this.pageColors=u;this.running=!1;this.graphicsReadyCallback=null;this.graphicsReady=!1;this._useRequestAnimationFrame=!0===d&&"undefined"!=typeof window;this.cancelled=!1;this.capability=new n.PromiseCapability;this.task=new RenderTask(this);this._cancelBound=this.cancel.bind(this);this._continueBound=this._continue.bind(this);this._scheduleNextBound=this._scheduleNext.bind(this);this._nextBound=this._next.bind(this);this._canvas=e.canvasContext.canvas}get completed(){return this.capability.promise.catch((function(){}))}initializeGraphics({transparency:t=!1,optionalContentConfig:e}){if(this.cancelled)return;if(this._canvas){if(InternalRenderTask.#nt.has(this._canvas))throw new Error("Cannot use the same canvas during multiple render() operations. Use different canvas or ensure previous operations were cancelled or completed.");InternalRenderTask.#nt.add(this._canvas)}if(this._pdfBug&&globalThis.StepperManager?.enabled){this.stepper=globalThis.StepperManager.create(this._pageIndex);this.stepper.init(this.operatorList);this.stepper.nextBreakPoint=this.stepper.getNextBreakPoint()}const{canvasContext:i,viewport:s,transform:n,background:a}=this.params;this.gfx=new h.CanvasGraphics(i,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:e},this.annotationCanvasMap,this.pageColors);this.gfx.beginDrawing({transform:n,viewport:s,transparency:t,background:a});this.operatorListIdx=0;this.graphicsReady=!0;this.graphicsReadyCallback?.()}cancel(t=null,e=0){this.running=!1;this.cancelled=!0;this.gfx?.endDrawing();InternalRenderTask.#nt.delete(this._canvas);this.callback(t||new r.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex+1}`,e))}operatorListChanged(){if(this.graphicsReady){this.stepper?.updateOperatorList(this.operatorList);this.running||this._continue()}else this.graphicsReadyCallback||=this._continueBound}_continue(){this.running=!0;this.cancelled||(this.task.onContinue?this.task.onContinue(this._scheduleNextBound):this._scheduleNext())}_scheduleNext(){this._useRequestAnimationFrame?window.requestAnimationFrame((()=>{this._nextBound().catch(this._cancelBound)})):Promise.resolve().then(this._nextBound).catch(this._cancelBound)}async _next(){if(!this.cancelled){this.operatorListIdx=this.gfx.executeOperatorList(this.operatorList,this.operatorListIdx,this._continueBound,this.stepper);if(this.operatorListIdx===this.operatorList.argsArray.length){this.running=!1;if(this.operatorList.lastChunk){this.gfx.endDrawing();InternalRenderTask.#nt.delete(this._canvas);this.callback()}}}}}const M="4.0.379",P="9e14d04fd";s()}catch(F){s(F)}}))},822:(t,e,i)=>{i.d(e,{BaseCMapReaderFactory:()=>BaseCMapReaderFactory,BaseCanvasFactory:()=>BaseCanvasFactory,BaseFilterFactory:()=>BaseFilterFactory,BaseSVGFactory:()=>BaseSVGFactory,BaseStandardFontDataFactory:()=>BaseStandardFontDataFactory});var s=i(266);class BaseFilterFactory{constructor(){this.constructor===BaseFilterFactory&&(0,s.unreachable)("Cannot initialize BaseFilterFactory.")}addFilter(t){return"none"}addHCMFilter(t,e){return"none"}addHighlightHCMFilter(t,e,i,s){return"none"}destroy(t=!1){}}class BaseCanvasFactory{constructor(){this.constructor===BaseCanvasFactory&&(0,s.unreachable)("Cannot initialize BaseCanvasFactory.")}create(t,e){if(t<=0||e<=0)throw new Error("Invalid canvas size");const i=this._createCanvas(t,e);return{canvas:i,context:i.getContext("2d")}}reset(t,e,i){if(!t.canvas)throw new Error("Canvas is not specified");if(e<=0||i<=0)throw new Error("Invalid canvas size");t.canvas.width=e;t.canvas.height=i}destroy(t){if(!t.canvas)throw new Error("Canvas is not specified");t.canvas.width=0;t.canvas.height=0;t.canvas=null;t.context=null}_createCanvas(t,e){(0,s.unreachable)("Abstract method `_createCanvas` called.")}}class BaseCMapReaderFactory{constructor({baseUrl:t=null,isCompressed:e=!0}){this.constructor===BaseCMapReaderFactory&&(0,s.unreachable)("Cannot initialize BaseCMapReaderFactory.");this.baseUrl=t;this.isCompressed=e}async fetch({name:t}){if(!this.baseUrl)throw new Error('The CMap "baseUrl" parameter must be specified, ensure that the "cMapUrl" and "cMapPacked" API parameters are provided.');if(!t)throw new Error("CMap name must be specified.");const e=this.baseUrl+t+(this.isCompressed?".bcmap":""),i=this.isCompressed?s.CMapCompressionType.BINARY:s.CMapCompressionType.NONE;return this._fetchData(e,i).catch((t=>{throw new Error(`Unable to load ${this.isCompressed?"binary ":""}CMap at: ${e}`)}))}_fetchData(t,e){(0,s.unreachable)("Abstract method `_fetchData` called.")}}class BaseStandardFontDataFactory{constructor({baseUrl:t=null}){this.constructor===BaseStandardFontDataFactory&&(0,s.unreachable)("Cannot initialize BaseStandardFontDataFactory.");this.baseUrl=t}async fetch({filename:t}){if(!this.baseUrl)throw new Error('The standard font "baseUrl" parameter must be specified, ensure that the "standardFontDataUrl" API parameter is provided.');if(!t)throw new Error("Font filename must be specified.");const e=`${this.baseUrl}${t}`;return this._fetchData(e).catch((t=>{throw new Error(`Unable to load font data at: ${e}`)}))}_fetchData(t){(0,s.unreachable)("Abstract method `_fetchData` called.")}}class BaseSVGFactory{constructor(){this.constructor===BaseSVGFactory&&(0,s.unreachable)("Cannot initialize BaseSVGFactory.")}create(t,e,i=!1){if(t<=0||e<=0)throw new Error("Invalid SVG dimensions");const s=this._createSVG("svg:svg");s.setAttribute("version","1.1");if(!i){s.setAttribute("width",`${t}px`);s.setAttribute("height",`${e}px`)}s.setAttribute("preserveAspectRatio","none");s.setAttribute("viewBox",`0 0 ${t} ${e}`);return s}createElement(t){if("string"!=typeof t)throw new Error("Invalid SVG element type");return this._createSVG(t)}_createSVG(t){(0,s.unreachable)("Abstract method `_createSVG` called.")}}},250:(t,e,i)=>{i.d(e,{CanvasGraphics:()=>CanvasGraphics});var s=i(266),n=i(473);const a="Fill",r="Stroke",o="Shading";function applyBoundingBox(t,e){if(!e)return;const i=e[2]-e[0],s=e[3]-e[1],n=new Path2D;n.rect(e[0],e[1],i,s);t.clip(n)}class BaseShadingPattern{constructor(){this.constructor===BaseShadingPattern&&(0,s.unreachable)("Cannot initialize BaseShadingPattern.")}getPattern(){(0,s.unreachable)("Abstract method `getPattern` called.")}}class RadialAxialShadingPattern extends BaseShadingPattern{constructor(t){super();this._type=t[1];this._bbox=t[2];this._colorStops=t[3];this._p0=t[4];this._p1=t[5];this._r0=t[6];this._r1=t[7];this.matrix=null}_createGradient(t){let e;"axial"===this._type?e=t.createLinearGradient(this._p0[0],this._p0[1],this._p1[0],this._p1[1]):"radial"===this._type&&(e=t.createRadialGradient(this._p0[0],this._p0[1],this._r0,this._p1[0],this._p1[1],this._r1));for(const t of this._colorStops)e.addColorStop(t[0],t[1]);return e}getPattern(t,e,i,o){let l;if(o===r||o===a){const a=e.current.getClippedPathBoundingBox(o,(0,n.getCurrentTransform)(t))||[0,0,0,0],r=Math.ceil(a[2]-a[0])||1,h=Math.ceil(a[3]-a[1])||1,d=e.cachedCanvases.getCanvas("pattern",r,h,!0),c=d.context;c.clearRect(0,0,c.canvas.width,c.canvas.height);c.beginPath();c.rect(0,0,c.canvas.width,c.canvas.height);c.translate(-a[0],-a[1]);i=s.Util.transform(i,[1,0,0,1,a[0],a[1]]);c.transform(...e.baseTransform);this.matrix&&c.transform(...this.matrix);applyBoundingBox(c,this._bbox);c.fillStyle=this._createGradient(c);c.fill();l=t.createPattern(d.canvas,"no-repeat");const u=new DOMMatrix(i);l.setTransform(u)}else{applyBoundingBox(t,this._bbox);l=this._createGradient(t)}return l}}function drawTriangle(t,e,i,s,n,a,r,o){const l=e.coords,h=e.colors,d=t.data,c=4*t.width;let u;if(l[i+1]>l[s+1]){u=i;i=s;s=u;u=a;a=r;r=u}if(l[s+1]>l[n+1]){u=s;s=n;n=u;u=r;r=o;o=u}if(l[i+1]>l[s+1]){u=i;i=s;s=u;u=a;a=r;r=u}const p=(l[i]+e.offsetX)*e.scaleX,g=(l[i+1]+e.offsetY)*e.scaleY,m=(l[s]+e.offsetX)*e.scaleX,f=(l[s+1]+e.offsetY)*e.scaleY,b=(l[n]+e.offsetX)*e.scaleX,A=(l[n+1]+e.offsetY)*e.scaleY;if(g>=A)return;const v=h[a],y=h[a+1],E=h[a+2],_=h[r],w=h[r+1],x=h[r+2],C=h[o],S=h[o+1],T=h[o+2],M=Math.round(g),P=Math.round(A);let F,R,k,D,I,L,O,B;for(let t=M;t<=P;t++){if(tA?1:f===A?0:(f-t)/(f-A);F=m-(m-b)*e;R=_-(_-C)*e;k=w-(w-S)*e;D=x-(x-T)*e}let e;e=tA?1:(g-t)/(g-A);I=p-(p-b)*e;L=v-(v-C)*e;O=y-(y-S)*e;B=E-(E-T)*e;const i=Math.round(Math.min(F,I)),s=Math.round(Math.max(F,I));let n=c*t+4*i;for(let t=i;t<=s;t++){e=(F-t)/(F-I);e<0?e=0:e>1&&(e=1);d[n++]=R-(R-L)*e|0;d[n++]=k-(k-O)*e|0;d[n++]=D-(D-B)*e|0;d[n++]=255}}}function drawFigure(t,e,i){const s=e.coords,n=e.colors;let a,r;switch(e.type){case"lattice":const o=e.verticesPerRow,l=Math.floor(s.length/o)-1,h=o-1;for(a=0;a=s?n=s:i=n/t;return{scale:i,size:n}}clipBbox(t,e,i,s,a){const r=s-e,o=a-i;t.ctx.rect(e,i,r,o);t.current.updateRectMinMax((0,n.getCurrentTransform)(t.ctx),[e,i,s,a]);t.clip();t.endPath()}setFillAndStrokeStyleToContext(t,e,i){const n=t.ctx,a=t.current;switch(e){case l:const t=this.ctx;n.fillStyle=t.fillStyle;n.strokeStyle=t.strokeStyle;a.fillColor=t.fillStyle;a.strokeColor=t.strokeStyle;break;case h:const r=s.Util.makeHexColor(i[0],i[1],i[2]);n.fillStyle=r;n.strokeStyle=r;a.fillColor=r;a.strokeColor=r;break;default:throw new s.FormatError(`Unsupported paint type: ${e}`)}}getPattern(t,e,i,n){let a=i;if(n!==o){a=s.Util.transform(a,e.baseTransform);this.matrix&&(a=s.Util.transform(a,this.matrix))}const r=this.createPatternCanvas(e);let l=new DOMMatrix(a);l=l.translate(r.offsetX,r.offsetY);l=l.scale(1/r.scaleX,1/r.scaleY);const h=t.createPattern(r.canvas,"repeat");h.setTransform(l);return h}}function convertBlackAndWhiteToRGBA({src:t,srcPos:e=0,dest:i,width:n,height:a,nonBlackColor:r=4294967295,inverseDecode:o=!1}){const l=s.FeatureTest.isLittleEndian?4278190080:255,[h,d]=o?[r,l]:[l,r],c=n>>3,u=7&n,p=t.length;i=new Uint32Array(i.buffer);let g=0;for(let s=0;s>2),b=i.length,A=n+7>>3,v=4294967295,y=s.FeatureTest.isLittleEndian?4278190080:255;for(g=0;gA?n:8*t-7,r=-8&a;let o=0,l=0;for(;s>=1}}for(;h=r){f=a;b=n*f}h=0;for(m=b;m--;){p[h++]=u[d++];p[h++]=u[d++];p[h++]=u[d++];p[h++]=255}t.putImageData(l,0,g*c)}}}function putBinaryImageMask(t,e){if(e.bitmap){t.drawImage(e.bitmap,0,0);return}const i=e.height,s=e.width,n=i%c,a=(i-n)/c,r=0===n?a:a+1,o=t.createImageData(s,c);let l=0;const h=e.data,d=o.data;for(let e=0;e>8;t[a-2]=t[a-2]*n+i*r>>8;t[a-1]=t[a-1]*n+s*r>>8}}}function composeSMaskAlpha(t,e,i){const s=t.length;for(let n=3;n>8]>>8:e[n]*s>>16}}function composeSMask(t,e,i,s){const n=s[0],a=s[1],r=s[2]-n,o=s[3]-a;if(0!==r&&0!==o){!function genericComposeSMask(t,e,i,s,n,a,r,o,l,h,d){const c=!!a,u=c?a[0]:0,p=c?a[1]:0,g=c?a[2]:0,m="Luminosity"===n?composeSMaskLuminosity:composeSMaskAlpha,f=Math.min(s,Math.ceil(1048576/i));for(let n=0;n10&&"function"==typeof i,d=h?Date.now()+15:0;let c=0;const u=this.commonObjs,p=this.objs;let g;for(;;){if(void 0!==n&&o===n.nextBreakPoint){n.breakIt(o,i);return o}g=r[o];if(g!==s.OPS.dependency)this[g].apply(this,a[o]);else for(const t of a[o]){const e=t.startsWith("g_")?u:p;if(!e.has(t)){e.get(t,i);return o}}o++;if(o===l)return o;if(h&&++c>10){if(Date.now()>d){i();return o}c=0}}}#at(){for(;this.stateStack.length||this.inSMaskMode;)this.restore();this.ctx.restore();if(this.transparentCanvas){this.ctx=this.compositeCtx;this.ctx.save();this.ctx.setTransform(1,0,0,1,0,0);this.ctx.drawImage(this.transparentCanvas,0,0);this.ctx.restore();this.transparentCanvas=null}}endDrawing(){this.#at();this.cachedCanvases.clear();this.cachedPatterns.clear();for(const t of this._cachedBitmapsMap.values()){for(const e of t.values())"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement&&(e.width=e.height=0);t.clear()}this._cachedBitmapsMap.clear();this.#rt()}#rt(){if(this.pageColors){const t=this.filterFactory.addHCMFilter(this.pageColors.foreground,this.pageColors.background);if("none"!==t){const e=this.ctx.filter;this.ctx.filter=t;this.ctx.drawImage(this.ctx.canvas,0,0);this.ctx.filter=e}}}_scaleImage(t,e){const i=t.width,s=t.height;let n,a,r=Math.max(Math.hypot(e[0],e[1]),1),o=Math.max(Math.hypot(e[2],e[3]),1),l=i,h=s,d="prescale1";for(;r>2&&l>1||o>2&&h>1;){let e=l,i=h;if(r>2&&l>1){e=l>=16384?Math.floor(l/2)-1||1:Math.ceil(l/2);r/=l/e}if(o>2&&h>1){i=h>=16384?Math.floor(h/2)-1||1:Math.ceil(h)/2;o/=h/i}n=this.cachedCanvases.getCanvas(d,e,i);a=n.context;a.clearRect(0,0,e,i);a.drawImage(t,0,0,l,h,0,0,e,i);t=n.canvas;l=e;h=i;d="prescale1"===d?"prescale2":"prescale1"}return{img:t,paintWidth:l,paintHeight:h}}_createMaskCanvas(t){const e=this.ctx,{width:i,height:r}=t,o=this.current.fillColor,l=this.current.patternFill,h=(0,n.getCurrentTransform)(e);let d,c,u,p;if((t.bitmap||t.data)&&t.count>1){const e=t.bitmap||t.data.buffer;c=JSON.stringify(l?h:[h.slice(0,4),o]);d=this._cachedBitmapsMap.get(e);if(!d){d=new Map;this._cachedBitmapsMap.set(e,d)}const i=d.get(c);if(i&&!l){return{canvas:i,offsetX:Math.round(Math.min(h[0],h[2])+h[4]),offsetY:Math.round(Math.min(h[1],h[3])+h[5])}}u=i}if(!u){p=this.cachedCanvases.getCanvas("maskCanvas",i,r);putBinaryImageMask(p.context,t)}let g=s.Util.transform(h,[1/i,0,0,-1/r,0,0]);g=s.Util.transform(g,[1,0,0,1,0,-r]);const[m,f,b,A]=s.Util.getAxialAlignedBoundingBox([0,0,i,r],g),v=Math.round(b-m)||1,y=Math.round(A-f)||1,E=this.cachedCanvases.getCanvas("fillCanvas",v,y),_=E.context,w=m,x=f;_.translate(-w,-x);_.transform(...g);if(!u){u=this._scaleImage(p.canvas,(0,n.getCurrentTransformInverse)(_));u=u.img;d&&l&&d.set(c,u)}_.imageSmoothingEnabled=getImageSmoothingEnabled((0,n.getCurrentTransform)(_),t.interpolate);drawImageAtIntegerCoords(_,u,0,0,u.width,u.height,0,0,i,r);_.globalCompositeOperation="source-in";const C=s.Util.transform((0,n.getCurrentTransformInverse)(_),[1,0,0,1,-w,-x]);_.fillStyle=l?o.getPattern(e,this,C,a):o;_.fillRect(0,0,i,r);if(d&&!l){this.cachedCanvases.delete("fillCanvas");d.set(c,E.canvas)}return{canvas:E.canvas,offsetX:Math.round(w),offsetY:Math.round(x)}}setLineWidth(t){t!==this.current.lineWidth&&(this._cachedScaleForStroking[0]=-1);this.current.lineWidth=t;this.ctx.lineWidth=t}setLineCap(t){this.ctx.lineCap=u[t]}setLineJoin(t){this.ctx.lineJoin=p[t]}setMiterLimit(t){this.ctx.miterLimit=t}setDash(t,e){const i=this.ctx;if(void 0!==i.setLineDash){i.setLineDash(t);i.lineDashOffset=e}}setRenderingIntent(t){}setFlatness(t){}setGState(t){for(const[e,i]of t)switch(e){case"LW":this.setLineWidth(i);break;case"LC":this.setLineCap(i);break;case"LJ":this.setLineJoin(i);break;case"ML":this.setMiterLimit(i);break;case"D":this.setDash(i[0],i[1]);break;case"RI":this.setRenderingIntent(i);break;case"FL":this.setFlatness(i);break;case"Font":this.setFont(i[0],i[1]);break;case"CA":this.current.strokeAlpha=i;break;case"ca":this.current.fillAlpha=i;this.ctx.globalAlpha=i;break;case"BM":this.ctx.globalCompositeOperation=i;break;case"SMask":this.current.activeSMask=i?this.tempSMask:null;this.tempSMask=null;this.checkSMaskState();break;case"TR":this.ctx.filter=this.current.transferMaps=this.filterFactory.addFilter(i)}}get inSMaskMode(){return!!this.suspendedCtx}checkSMaskState(){const t=this.inSMaskMode;this.current.activeSMask&&!t?this.beginSMaskMode():!this.current.activeSMask&&t&&this.endSMaskMode()}beginSMaskMode(){if(this.inSMaskMode)throw new Error("beginSMaskMode called while already in smask mode");const t=this.ctx.canvas.width,e=this.ctx.canvas.height,i="smaskGroupAt"+this.groupLevel,s=this.cachedCanvases.getCanvas(i,t,e);this.suspendedCtx=this.ctx;this.ctx=s.context;const a=this.ctx;a.setTransform(...(0,n.getCurrentTransform)(this.suspendedCtx));copyCtxState(this.suspendedCtx,a);!function mirrorContextOperations(t,e){if(t._removeMirroring)throw new Error("Context is already forwarding operations.");t.__originalSave=t.save;t.__originalRestore=t.restore;t.__originalRotate=t.rotate;t.__originalScale=t.scale;t.__originalTranslate=t.translate;t.__originalTransform=t.transform;t.__originalSetTransform=t.setTransform;t.__originalResetTransform=t.resetTransform;t.__originalClip=t.clip;t.__originalMoveTo=t.moveTo;t.__originalLineTo=t.lineTo;t.__originalBezierCurveTo=t.bezierCurveTo;t.__originalRect=t.rect;t.__originalClosePath=t.closePath;t.__originalBeginPath=t.beginPath;t._removeMirroring=()=>{t.save=t.__originalSave;t.restore=t.__originalRestore;t.rotate=t.__originalRotate;t.scale=t.__originalScale;t.translate=t.__originalTranslate;t.transform=t.__originalTransform;t.setTransform=t.__originalSetTransform;t.resetTransform=t.__originalResetTransform;t.clip=t.__originalClip;t.moveTo=t.__originalMoveTo;t.lineTo=t.__originalLineTo;t.bezierCurveTo=t.__originalBezierCurveTo;t.rect=t.__originalRect;t.closePath=t.__originalClosePath;t.beginPath=t.__originalBeginPath;delete t._removeMirroring};t.save=function ctxSave(){e.save();this.__originalSave()};t.restore=function ctxRestore(){e.restore();this.__originalRestore()};t.translate=function ctxTranslate(t,i){e.translate(t,i);this.__originalTranslate(t,i)};t.scale=function ctxScale(t,i){e.scale(t,i);this.__originalScale(t,i)};t.transform=function ctxTransform(t,i,s,n,a,r){e.transform(t,i,s,n,a,r);this.__originalTransform(t,i,s,n,a,r)};t.setTransform=function ctxSetTransform(t,i,s,n,a,r){e.setTransform(t,i,s,n,a,r);this.__originalSetTransform(t,i,s,n,a,r)};t.resetTransform=function ctxResetTransform(){e.resetTransform();this.__originalResetTransform()};t.rotate=function ctxRotate(t){e.rotate(t);this.__originalRotate(t)};t.clip=function ctxRotate(t){e.clip(t);this.__originalClip(t)};t.moveTo=function(t,i){e.moveTo(t,i);this.__originalMoveTo(t,i)};t.lineTo=function(t,i){e.lineTo(t,i);this.__originalLineTo(t,i)};t.bezierCurveTo=function(t,i,s,n,a,r){e.bezierCurveTo(t,i,s,n,a,r);this.__originalBezierCurveTo(t,i,s,n,a,r)};t.rect=function(t,i,s,n){e.rect(t,i,s,n);this.__originalRect(t,i,s,n)};t.closePath=function(){e.closePath();this.__originalClosePath()};t.beginPath=function(){e.beginPath();this.__originalBeginPath()}}(a,this.suspendedCtx);this.setGState([["BM","source-over"],["ca",1],["CA",1]])}endSMaskMode(){if(!this.inSMaskMode)throw new Error("endSMaskMode called while not in smask mode");this.ctx._removeMirroring();copyCtxState(this.ctx,this.suspendedCtx);this.ctx=this.suspendedCtx;this.suspendedCtx=null}compose(t){if(!this.current.activeSMask)return;if(t){t[0]=Math.floor(t[0]);t[1]=Math.floor(t[1]);t[2]=Math.ceil(t[2]);t[3]=Math.ceil(t[3])}else t=[0,0,this.ctx.canvas.width,this.ctx.canvas.height];const e=this.current.activeSMask;composeSMask(this.suspendedCtx,e,this.ctx,t);this.ctx.save();this.ctx.setTransform(1,0,0,1,0,0);this.ctx.clearRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height);this.ctx.restore()}save(){if(this.inSMaskMode){copyCtxState(this.ctx,this.suspendedCtx);this.suspendedCtx.save()}else this.ctx.save();const t=this.current;this.stateStack.push(t);this.current=t.clone()}restore(){0===this.stateStack.length&&this.inSMaskMode&&this.endSMaskMode();if(0!==this.stateStack.length){this.current=this.stateStack.pop();if(this.inSMaskMode){this.suspendedCtx.restore();copyCtxState(this.suspendedCtx,this.ctx)}else this.ctx.restore();this.checkSMaskState();this.pendingClip=null;this._cachedScaleForStroking[0]=-1;this._cachedGetSinglePixelWidth=null}}transform(t,e,i,s,n,a){this.ctx.transform(t,e,i,s,n,a);this._cachedScaleForStroking[0]=-1;this._cachedGetSinglePixelWidth=null}constructPath(t,e,i){const a=this.ctx,r=this.current;let o,l,h=r.x,d=r.y;const c=(0,n.getCurrentTransform)(a),u=0===c[0]&&0===c[3]||0===c[1]&&0===c[2],p=u?i.slice(0):null;for(let i=0,n=0,g=t.length;i100&&(h=100);this.current.fontSizeScale=e/h;this.ctx.font=`${l} ${o} ${h}px ${r}`}setTextRenderingMode(t){this.current.textRenderingMode=t}setTextRise(t){this.current.textRise=t}moveText(t,e){this.current.x=this.current.lineX+=t;this.current.y=this.current.lineY+=e}setLeadingMoveText(t,e){this.setLeading(-e);this.moveText(t,e)}setTextMatrix(t,e,i,s,n,a){this.current.textMatrix=[t,e,i,s,n,a];this.current.textMatrixScale=Math.hypot(t,e);this.current.x=this.current.lineX=0;this.current.y=this.current.lineY=0}nextLine(){this.moveText(0,this.current.leading)}paintChar(t,e,i,a){const r=this.ctx,o=this.current,l=o.font,h=o.textRenderingMode,d=o.fontSize/o.fontSizeScale,c=h&s.TextRenderingMode.FILL_STROKE_MASK,u=!!(h&s.TextRenderingMode.ADD_TO_PATH_FLAG),p=o.patternFill&&!l.missingFile;let g;(l.disableFontFace||u||p)&&(g=l.getPathGenerator(this.commonObjs,t));if(l.disableFontFace||p){r.save();r.translate(e,i);r.beginPath();g(r,d);a&&r.setTransform(...a);c!==s.TextRenderingMode.FILL&&c!==s.TextRenderingMode.FILL_STROKE||r.fill();c!==s.TextRenderingMode.STROKE&&c!==s.TextRenderingMode.FILL_STROKE||r.stroke();r.restore()}else{c!==s.TextRenderingMode.FILL&&c!==s.TextRenderingMode.FILL_STROKE||r.fillText(t,e,i);c!==s.TextRenderingMode.STROKE&&c!==s.TextRenderingMode.FILL_STROKE||r.strokeText(t,e,i)}if(u){(this.pendingTextPaths||=[]).push({transform:(0,n.getCurrentTransform)(r),x:e,y:i,fontSize:d,addToPath:g})}}get isFontSubpixelAAEnabled(){const{context:t}=this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled",10,10);t.scale(1.5,1);t.fillText("I",0,10);const e=t.getImageData(0,0,10,10).data;let i=!1;for(let t=3;t0&&e[t]<255){i=!0;break}return(0,s.shadow)(this,"isFontSubpixelAAEnabled",i)}showText(t){const e=this.current,i=e.font;if(i.isType3Font)return this.showType3Text(t);const r=e.fontSize;if(0===r)return;const o=this.ctx,l=e.fontSizeScale,h=e.charSpacing,d=e.wordSpacing,c=e.fontDirection,u=e.textHScale*c,p=t.length,g=i.vertical,m=g?1:-1,f=i.defaultVMetrics,b=r*e.fontMatrix[0],A=e.textRenderingMode===s.TextRenderingMode.FILL&&!i.disableFontFace&&!e.patternFill;o.save();o.transform(...e.textMatrix);o.translate(e.x,e.y+e.textRise);c>0?o.scale(u,-1):o.scale(u,1);let v;if(e.patternFill){o.save();const t=e.fillColor.getPattern(o,this,(0,n.getCurrentTransformInverse)(o),a);v=(0,n.getCurrentTransform)(o);o.restore();o.fillStyle=t}let y=e.lineWidth;const E=e.textMatrixScale;if(0===E||0===y){const t=e.textRenderingMode&s.TextRenderingMode.FILL_STROKE_MASK;t!==s.TextRenderingMode.STROKE&&t!==s.TextRenderingMode.FILL_STROKE||(y=this.getSinglePixelWidth())}else y/=E;if(1!==l){o.scale(l,l);y/=l}o.lineWidth=y;if(i.isInvalidPDFjsFont){const i=[];let s=0;for(const e of t){i.push(e.unicode);s+=e.width}o.fillText(i.join(""),0,0);e.x+=s*b*u;o.restore();this.compose();return}let _,w=0;for(_=0;_0){const t=1e3*o.measureText(a).width/r*l;if(Enew CanvasGraphics(t,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:this.optionalContentConfig,markedContentStack:this.markedContentStack})};e=new TilingPattern(t,i,this.ctx,a,s)}else e=this._getPattern(t[1],t[2]);return e}setStrokeColorN(){this.current.strokeColor=this.getColorN_Pattern(arguments)}setFillColorN(){this.current.fillColor=this.getColorN_Pattern(arguments);this.current.patternFill=!0}setStrokeRGBColor(t,e,i){const n=s.Util.makeHexColor(t,e,i);this.ctx.strokeStyle=n;this.current.strokeColor=n}setFillRGBColor(t,e,i){const n=s.Util.makeHexColor(t,e,i);this.ctx.fillStyle=n;this.current.fillColor=n;this.current.patternFill=!1}_getPattern(t,e=null){let i;if(this.cachedPatterns.has(t))i=this.cachedPatterns.get(t);else{i=function getShadingPattern(t){switch(t[0]){case"RadialAxial":return new RadialAxialShadingPattern(t);case"Mesh":return new MeshShadingPattern(t);case"Dummy":return new DummyShadingPattern}throw new Error(`Unknown IR type: ${t[0]}`)}(this.getObject(t));this.cachedPatterns.set(t,i)}e&&(i.matrix=e);return i}shadingFill(t){if(!this.contentVisible)return;const e=this.ctx;this.save();const i=this._getPattern(t);e.fillStyle=i.getPattern(e,this,(0,n.getCurrentTransformInverse)(e),o);const a=(0,n.getCurrentTransformInverse)(e);if(a){const{width:t,height:i}=e.canvas,[n,r,o,l]=s.Util.getAxialAlignedBoundingBox([0,0,t,i],a);this.ctx.fillRect(n,r,o-n,l-r)}else this.ctx.fillRect(-1e10,-1e10,2e10,2e10);this.compose(this.current.getClippedPathBoundingBox());this.restore()}beginInlineImage(){(0,s.unreachable)("Should not call beginInlineImage")}beginImageData(){(0,s.unreachable)("Should not call beginImageData")}paintFormXObjectBegin(t,e){if(this.contentVisible){this.save();this.baseTransformStack.push(this.baseTransform);Array.isArray(t)&&6===t.length&&this.transform(...t);this.baseTransform=(0,n.getCurrentTransform)(this.ctx);if(e){const t=e[2]-e[0],i=e[3]-e[1];this.ctx.rect(e[0],e[1],t,i);this.current.updateRectMinMax((0,n.getCurrentTransform)(this.ctx),e);this.clip();this.endPath()}}}paintFormXObjectEnd(){if(this.contentVisible){this.restore();this.baseTransform=this.baseTransformStack.pop()}}beginGroup(t){if(!this.contentVisible)return;this.save();if(this.inSMaskMode){this.endSMaskMode();this.current.activeSMask=null}const e=this.ctx;t.isolated||(0,s.info)("TODO: Support non-isolated groups.");t.knockout&&(0,s.warn)("Knockout groups not supported.");const i=(0,n.getCurrentTransform)(e);t.matrix&&e.transform(...t.matrix);if(!t.bbox)throw new Error("Bounding box is required.");let a=s.Util.getAxialAlignedBoundingBox(t.bbox,(0,n.getCurrentTransform)(e));const r=[0,0,e.canvas.width,e.canvas.height];a=s.Util.intersect(a,r)||[0,0,0,0];const o=Math.floor(a[0]),l=Math.floor(a[1]);let h=Math.max(Math.ceil(a[2])-o,1),c=Math.max(Math.ceil(a[3])-l,1),u=1,p=1;if(h>d){u=h/d;h=d}if(c>d){p=c/d;c=d}this.current.startNewPathAndClipBox([0,0,h,c]);let g="groupAt"+this.groupLevel;t.smask&&(g+="_smask_"+this.smaskCounter++%2);const m=this.cachedCanvases.getCanvas(g,h,c),f=m.context;f.scale(1/u,1/p);f.translate(-o,-l);f.transform(...i);if(t.smask)this.smaskStack.push({canvas:m.canvas,context:f,offsetX:o,offsetY:l,scaleX:u,scaleY:p,subtype:t.smask.subtype,backdrop:t.smask.backdrop,transferMap:t.smask.transferMap||null,startTransformInverse:null});else{e.setTransform(1,0,0,1,0,0);e.translate(o,l);e.scale(u,p);e.save()}copyCtxState(e,f);this.ctx=f;this.setGState([["BM","source-over"],["ca",1],["CA",1]]);this.groupStack.push(e);this.groupLevel++}endGroup(t){if(!this.contentVisible)return;this.groupLevel--;const e=this.ctx,i=this.groupStack.pop();this.ctx=i;this.ctx.imageSmoothingEnabled=!1;if(t.smask){this.tempSMask=this.smaskStack.pop();this.restore()}else{this.ctx.restore();const t=(0,n.getCurrentTransform)(this.ctx);this.restore();this.ctx.save();this.ctx.setTransform(...t);const i=s.Util.getAxialAlignedBoundingBox([0,0,e.canvas.width,e.canvas.height],t);this.ctx.drawImage(e.canvas,0,0);this.ctx.restore();this.compose(i)}}beginAnnotation(t,e,i,a,r){this.#at();resetCtxToDefault(this.ctx);this.ctx.save();this.save();this.baseTransform&&this.ctx.setTransform(...this.baseTransform);if(Array.isArray(e)&&4===e.length){const a=e[2]-e[0],o=e[3]-e[1];if(r&&this.annotationCanvasMap){(i=i.slice())[4]-=e[0];i[5]-=e[1];(e=e.slice())[0]=e[1]=0;e[2]=a;e[3]=o;const[r,l]=s.Util.singularValueDecompose2dScale((0,n.getCurrentTransform)(this.ctx)),{viewportScale:h}=this,d=Math.ceil(a*this.outputScaleX*h),c=Math.ceil(o*this.outputScaleY*h);this.annotationCanvas=this.canvasFactory.create(d,c);const{canvas:u,context:p}=this.annotationCanvas;this.annotationCanvasMap.set(t,u);this.annotationCanvas.savedCtx=this.ctx;this.ctx=p;this.ctx.save();this.ctx.setTransform(r,0,0,-l,0,o*l);resetCtxToDefault(this.ctx)}else{resetCtxToDefault(this.ctx);this.ctx.rect(e[0],e[1],a,o);this.ctx.clip();this.endPath()}}this.current=new CanvasExtraState(this.ctx.canvas.width,this.ctx.canvas.height);this.transform(...i);this.transform(...a)}endAnnotation(){if(this.annotationCanvas){this.ctx.restore();this.#rt();this.ctx=this.annotationCanvas.savedCtx;delete this.annotationCanvas.savedCtx;delete this.annotationCanvas}}paintImageMaskXObject(t){if(!this.contentVisible)return;const e=t.count;(t=this.getObject(t.data,t)).count=e;const i=this.ctx,s=this.processingType3;if(s){void 0===s.compiled&&(s.compiled=function compileType3Glyph(t){const{width:e,height:i}=t;if(e>1e3||i>1e3)return null;const s=new Uint8Array([0,2,4,0,1,0,5,4,8,10,0,8,0,2,1,0]),n=e+1;let a,r,o,l=new Uint8Array(n*(i+1));const h=e+7&-8;let d=new Uint8Array(h*i),c=0;for(const e of t.data){let t=128;for(;t>0;){d[c++]=e&t?0:255;t>>=1}}let u=0;c=0;if(0!==d[c]){l[0]=1;++u}for(r=1;r>2)+(d[c+1]?4:0)+(d[c-h+1]?8:0);if(s[t]){l[o+r]=s[t];++u}c++}if(d[c-h]!==d[c]){l[o+r]=d[c]?2:4;++u}if(u>1e3)return null}c=h*(i-1);o=a*n;if(0!==d[c]){l[o]=8;++u}for(r=1;r1e3)return null;const p=new Int32Array([0,n,-1,0,-n,0,0,0,1]),g=new Path2D;for(a=0;u&&a<=i;a++){let t=a*n;const i=t+e;for(;t>4;l[t]&=r>>2|r<<2}g.lineTo(t%n,t/n|0);l[t]||--u}while(s!==t);--a}d=null;l=null;return function(t){t.save();t.scale(1/e,-1/i);t.translate(0,-i);t.fill(g);t.beginPath();t.restore()}}(t));if(s.compiled){s.compiled(i);return}}const n=this._createMaskCanvas(t),a=n.canvas;i.save();i.setTransform(1,0,0,1,0,0);i.drawImage(a,n.offsetX,n.offsetY);i.restore();this.compose()}paintImageMaskXObjectRepeat(t,e,i=0,a=0,r,o){if(!this.contentVisible)return;t=this.getObject(t.data,t);const l=this.ctx;l.save();const h=(0,n.getCurrentTransform)(l);l.transform(e,i,a,r,0,0);const d=this._createMaskCanvas(t);l.setTransform(1,0,0,1,d.offsetX-h[4],d.offsetY-h[5]);for(let t=0,n=o.length;te?h/e:1;r=l>e?l/e:1}}this._cachedScaleForStroking[0]=a;this._cachedScaleForStroking[1]=r}return this._cachedScaleForStroking}rescaleAndStroke(t){const{ctx:e}=this,{lineWidth:i}=this.current,[s,n]=this.getScaleForStroking();e.lineWidth=i||1;if(1===s&&1===n){e.stroke();return}const a=e.getLineDash();t&&e.save();e.scale(s,n);if(a.length>0){const t=Math.max(s,n);e.setLineDash(a.map((e=>e/t)));e.lineDashOffset/=t}e.stroke();t&&e.restore()}isContentVisible(){for(let t=this.markedContentStack.length-1;t>=0;t--)if(!this.markedContentStack[t].visible)return!1;return!0}}for(const t in s.OPS)void 0!==CanvasGraphics.prototype[t]&&(CanvasGraphics.prototype[s.OPS[t]]=CanvasGraphics.prototype[t])},473:(t,e,i)=>{i.d(e,{DOMCMapReaderFactory:()=>DOMCMapReaderFactory,DOMCanvasFactory:()=>DOMCanvasFactory,DOMFilterFactory:()=>DOMFilterFactory,DOMSVGFactory:()=>DOMSVGFactory,DOMStandardFontDataFactory:()=>DOMStandardFontDataFactory,PDFDateString:()=>PDFDateString,PageViewport:()=>PageViewport,PixelsPerInch:()=>PixelsPerInch,RenderingCancelledException:()=>RenderingCancelledException,StatTimer:()=>StatTimer,fetchData:()=>fetchData,getColorValues:()=>getColorValues,getCurrentTransform:()=>getCurrentTransform,getCurrentTransformInverse:()=>getCurrentTransformInverse,getFilenameFromUrl:()=>getFilenameFromUrl,getPdfFilenameFromUrl:()=>getPdfFilenameFromUrl,getRGB:()=>getRGB,getXfaPageViewport:()=>getXfaPageViewport,isDataScheme:()=>isDataScheme,isPdfFile:()=>isPdfFile,isValidFetchUrl:()=>isValidFetchUrl,noContextMenu:()=>noContextMenu,setLayerDimensions:()=>setLayerDimensions});var s=i(822),n=i(266);const a="http://www.w3.org/2000/svg";class PixelsPerInch{static CSS=96;static PDF=72;static PDF_TO_CSS_UNITS=this.CSS/this.PDF}class DOMFilterFactory extends s.BaseFilterFactory{#ot;#lt;#H;#ht;#dt;#ct;#ut;#pt;#gt;#mt;#ft=0;constructor({docId:t,ownerDocument:e=globalThis.document}={}){super();this.#H=t;this.#ht=e}get#bt(){return this.#ot||=new Map}get#At(){if(!this.#lt){const t=this.#ht.createElement("div"),{style:e}=t;e.visibility="hidden";e.contain="strict";e.width=e.height=0;e.position="absolute";e.top=e.left=0;e.zIndex=-1;const i=this.#ht.createElementNS(a,"svg");i.setAttribute("width",0);i.setAttribute("height",0);this.#lt=this.#ht.createElementNS(a,"defs");t.append(i);i.append(this.#lt);this.#ht.body.append(t)}return this.#lt}addFilter(t){if(!t)return"none";let e,i,s,n,a=this.#bt.get(t);if(a)return a;if(1===t.length){const a=t[0],r=new Array(256);for(let t=0;t<256;t++)r[t]=a[t]/255;n=e=i=s=r.join(",")}else{const[a,r,o]=t,l=new Array(256),h=new Array(256),d=new Array(256);for(let t=0;t<256;t++){l[t]=a[t]/255;h[t]=r[t]/255;d[t]=o[t]/255}e=l.join(",");i=h.join(",");s=d.join(",");n=`${e}${i}${s}`}a=this.#bt.get(n);if(a){this.#bt.set(t,a);return a}const r=`g_${this.#H}_transfer_map_${this.#ft++}`,o=`url(#${r})`;this.#bt.set(t,o);this.#bt.set(n,o);const l=this.#vt(r);this.#yt(e,i,s,l);return o}addHCMFilter(t,e){const i=`${t}-${e}`;if(this.#ct===i)return this.#ut;this.#ct=i;this.#ut="none";this.#dt?.remove();if(!t||!e)return this.#ut;const s=this.#Et(t);t=n.Util.makeHexColor(...s);const a=this.#Et(e);e=n.Util.makeHexColor(...a);this.#At.style.color="";if("#000000"===t&&"#ffffff"===e||t===e)return this.#ut;const r=new Array(256);for(let t=0;t<=255;t++){const e=t/255;r[t]=e<=.03928?e/12.92:((e+.055)/1.055)**2.4}const o=r.join(","),l=`g_${this.#H}_hcm_filter`,h=this.#pt=this.#vt(l);this.#yt(o,o,o,h);this.#_t(h);const getSteps=(t,e)=>{const i=s[t]/255,n=a[t]/255,r=new Array(e+1);for(let t=0;t<=e;t++)r[t]=i+t/e*(n-i);return r.join(",")};this.#yt(getSteps(0,5),getSteps(1,5),getSteps(2,5),h);this.#ut=`url(#${l})`;return this.#ut}addHighlightHCMFilter(t,e,i,s){const n=`${t}-${e}-${i}-${s}`;if(this.#gt===n)return this.#mt;this.#gt=n;this.#mt="none";this.#pt?.remove();if(!t||!e)return this.#mt;const[a,r]=[t,e].map(this.#Et.bind(this));let o=Math.round(.2126*a[0]+.7152*a[1]+.0722*a[2]),l=Math.round(.2126*r[0]+.7152*r[1]+.0722*r[2]),[h,d]=[i,s].map(this.#Et.bind(this));l{const s=new Array(256),n=(l-o)/i,a=t/255,r=(e-t)/(255*i);let h=0;for(let t=0;t<=i;t++){const e=Math.round(o+t*n),i=a+t*r;for(let t=h;t<=e;t++)s[t]=i;h=e+1}for(let t=h;t<256;t++)s[t]=s[h-1];return s.join(",")},c=`g_${this.#H}_hcm_highlight_filter`,u=this.#pt=this.#vt(c);this.#_t(u);this.#yt(getSteps(h[0],d[0],5),getSteps(h[1],d[1],5),getSteps(h[2],d[2],5),u);this.#mt=`url(#${c})`;return this.#mt}destroy(t=!1){if(!t||!this.#ut&&!this.#mt){if(this.#lt){this.#lt.parentNode.parentNode.remove();this.#lt=null}if(this.#ot){this.#ot.clear();this.#ot=null}this.#ft=0}}#_t(t){const e=this.#ht.createElementNS(a,"feColorMatrix");e.setAttribute("type","matrix");e.setAttribute("values","0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0");t.append(e)}#vt(t){const e=this.#ht.createElementNS(a,"filter");e.setAttribute("color-interpolation-filters","sRGB");e.setAttribute("id",t);this.#At.append(e);return e}#wt(t,e,i){const s=this.#ht.createElementNS(a,e);s.setAttribute("type","discrete");s.setAttribute("tableValues",i);t.append(s)}#yt(t,e,i,s){const n=this.#ht.createElementNS(a,"feComponentTransfer");s.append(n);this.#wt(n,"feFuncR",t);this.#wt(n,"feFuncG",e);this.#wt(n,"feFuncB",i)}#Et(t){this.#At.style.color=t;return getRGB(getComputedStyle(this.#At).getPropertyValue("color"))}}class DOMCanvasFactory extends s.BaseCanvasFactory{constructor({ownerDocument:t=globalThis.document}={}){super();this._document=t}_createCanvas(t,e){const i=this._document.createElement("canvas");i.width=t;i.height=e;return i}}async function fetchData(t,e="text"){if(isValidFetchUrl(t,document.baseURI)){const i=await fetch(t);if(!i.ok)throw new Error(i.statusText);switch(e){case"arraybuffer":return i.arrayBuffer();case"blob":return i.blob();case"json":return i.json()}return i.text()}return new Promise(((i,s)=>{const n=new XMLHttpRequest;n.open("GET",t,!0);n.responseType=e;n.onreadystatechange=()=>{if(n.readyState===XMLHttpRequest.DONE){if(200===n.status||0===n.status){let t;switch(e){case"arraybuffer":case"blob":case"json":t=n.response;break;default:t=n.responseText}if(t){i(t);return}}s(new Error(n.statusText))}};n.send(null)}))}class DOMCMapReaderFactory extends s.BaseCMapReaderFactory{_fetchData(t,e){return fetchData(t,this.isCompressed?"arraybuffer":"text").then((t=>({cMapData:t instanceof ArrayBuffer?new Uint8Array(t):(0,n.stringToBytes)(t),compressionType:e})))}}class DOMStandardFontDataFactory extends s.BaseStandardFontDataFactory{_fetchData(t){return fetchData(t,"arraybuffer").then((t=>new Uint8Array(t)))}}class DOMSVGFactory extends s.BaseSVGFactory{_createSVG(t){return document.createElementNS(a,t)}}class PageViewport{constructor({viewBox:t,scale:e,rotation:i,offsetX:s=0,offsetY:n=0,dontFlip:a=!1}){this.viewBox=t;this.scale=e;this.rotation=i;this.offsetX=s;this.offsetY=n;const r=(t[2]+t[0])/2,o=(t[3]+t[1])/2;let l,h,d,c,u,p,g,m;(i%=360)<0&&(i+=360);switch(i){case 180:l=-1;h=0;d=0;c=1;break;case 90:l=0;h=1;d=1;c=0;break;case 270:l=0;h=-1;d=-1;c=0;break;case 0:l=1;h=0;d=0;c=-1;break;default:throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.")}if(a){d=-d;c=-c}if(0===l){u=Math.abs(o-t[1])*e+s;p=Math.abs(r-t[0])*e+n;g=(t[3]-t[1])*e;m=(t[2]-t[0])*e}else{u=Math.abs(r-t[0])*e+s;p=Math.abs(o-t[1])*e+n;g=(t[2]-t[0])*e;m=(t[3]-t[1])*e}this.transform=[l*e,h*e,d*e,c*e,u-l*e*r-d*e*o,p-h*e*r-c*e*o];this.width=g;this.height=m}get rawDims(){const{viewBox:t}=this;return(0,n.shadow)(this,"rawDims",{pageWidth:t[2]-t[0],pageHeight:t[3]-t[1],pageX:t[0],pageY:t[1]})}clone({scale:t=this.scale,rotation:e=this.rotation,offsetX:i=this.offsetX,offsetY:s=this.offsetY,dontFlip:n=!1}={}){return new PageViewport({viewBox:this.viewBox.slice(),scale:t,rotation:e,offsetX:i,offsetY:s,dontFlip:n})}convertToViewportPoint(t,e){return n.Util.applyTransform([t,e],this.transform)}convertToViewportRectangle(t){const e=n.Util.applyTransform([t[0],t[1]],this.transform),i=n.Util.applyTransform([t[2],t[3]],this.transform);return[e[0],e[1],i[0],i[1]]}convertToPdfPoint(t,e){return n.Util.applyInverseTransform([t,e],this.transform)}}class RenderingCancelledException extends n.BaseException{constructor(t,e=0){super(t,"RenderingCancelledException");this.extraDelay=e}}function isDataScheme(t){const e=t.length;let i=0;for(;i=1&&s<=12?s-1:0;let n=parseInt(e[3],10);n=n>=1&&n<=31?n:1;let a=parseInt(e[4],10);a=a>=0&&a<=23?a:0;let o=parseInt(e[5],10);o=o>=0&&o<=59?o:0;let l=parseInt(e[6],10);l=l>=0&&l<=59?l:0;const h=e[7]||"Z";let d=parseInt(e[8],10);d=d>=0&&d<=23?d:0;let c=parseInt(e[9],10)||0;c=c>=0&&c<=59?c:0;if("-"===h){a+=d;o+=c}else if("+"===h){a-=d;o-=c}return new Date(Date.UTC(i,s,n,a,o,l))}}function getXfaPageViewport(t,{scale:e=1,rotation:i=0}){const{width:s,height:n}=t.attributes.style,a=[0,0,parseInt(s),parseInt(n)];return new PageViewport({viewBox:a,scale:e,rotation:i})}function getRGB(t){if(t.startsWith("#")){const e=parseInt(t.slice(1),16);return[(16711680&e)>>16,(65280&e)>>8,255&e]}if(t.startsWith("rgb("))return t.slice(4,-1).split(",").map((t=>parseInt(t)));if(t.startsWith("rgba("))return t.slice(5,-1).split(",").map((t=>parseInt(t))).slice(0,3);(0,n.warn)(`Not a valid color format: "${t}"`);return[0,0,0]}function getColorValues(t){const e=document.createElement("span");e.style.visibility="hidden";document.body.append(e);for(const i of t.keys()){e.style.color=i;const s=window.getComputedStyle(e).color;t.set(i,getRGB(s))}e.remove()}function getCurrentTransform(t){const{a:e,b:i,c:s,d:n,e:a,f:r}=t.getTransform();return[e,i,s,n,a,r]}function getCurrentTransformInverse(t){const{a:e,b:i,c:s,d:n,e:a,f:r}=t.getTransform().invertSelf();return[e,i,s,n,a,r]}function setLayerDimensions(t,e,i=!1,s=!0){if(e instanceof PageViewport){const{pageWidth:s,pageHeight:a}=e.rawDims,{style:r}=t,o=n.FeatureTest.isCSSRoundSupported,l=`var(--scale-factor) * ${s}px`,h=`var(--scale-factor) * ${a}px`,d=o?`round(${l}, 1px)`:`calc(${l})`,c=o?`round(${h}, 1px)`:`calc(${h})`;if(i&&e.rotation%180!=0){r.width=c;r.height=d}else{r.width=d;r.height=c}}s&&t.setAttribute("data-main-rotation",e.rotation)}},423:(t,e,i)=>{i.d(e,{DrawLayer:()=>DrawLayer});var s=i(473),n=i(266);class DrawLayer{#b=null;#ft=0;#xt=new Map;constructor({pageIndex:t}){this.pageIndex=t}setParent(t){if(this.#b){if(this.#b!==t){if(this.#xt.size>0)for(const e of this.#xt.values()){e.remove();t.append(e)}this.#b=t}}else this.#b=t}static get _svgFactory(){return(0,n.shadow)(this,"_svgFactory",new s.DOMSVGFactory)}static#Ct(t,{x:e,y:i,width:s,height:n}){const{style:a}=t;a.top=100*i+"%";a.left=100*e+"%";a.width=100*s+"%";a.height=100*n+"%"}#St(t){const e=DrawLayer._svgFactory.create(1,1,!0);this.#b.append(e);DrawLayer.#Ct(e,t);return e}highlight({outlines:t,box:e},i,s){const n=this.#ft++,a=this.#St(e);a.classList.add("highlight");const r=DrawLayer._svgFactory.createElement("defs");a.append(r);const o=DrawLayer._svgFactory.createElement("path");r.append(o);const l=`path_p${this.pageIndex}_${n}`;o.setAttribute("id",l);o.setAttribute("d",DrawLayer.#Tt(t));const h=DrawLayer._svgFactory.createElement("clipPath");r.append(h);const d=`clip_${l}`;h.setAttribute("id",d);h.setAttribute("clipPathUnits","objectBoundingBox");const c=DrawLayer._svgFactory.createElement("use");h.append(c);c.setAttribute("href",`#${l}`);c.classList.add("clip");const u=DrawLayer._svgFactory.createElement("use");a.append(u);a.setAttribute("fill",i);a.setAttribute("fill-opacity",s);u.setAttribute("href",`#${l}`);this.#xt.set(n,a);return{id:n,clipPathId:`url(#${d})`}}highlightOutline({outlines:t,box:e}){const i=this.#ft++,s=this.#St(e);s.classList.add("highlightOutline");const n=DrawLayer._svgFactory.createElement("defs");s.append(n);const a=DrawLayer._svgFactory.createElement("path");n.append(a);const r=`path_p${this.pageIndex}_${i}`;a.setAttribute("id",r);a.setAttribute("d",DrawLayer.#Tt(t));a.setAttribute("vector-effect","non-scaling-stroke");const o=DrawLayer._svgFactory.createElement("use");s.append(o);o.setAttribute("href",`#${r}`);const l=o.cloneNode();s.append(l);o.classList.add("mainOutline");l.classList.add("secondaryOutline");this.#xt.set(i,s);return i}static#Tt(t){const e=[];for(const i of t){let[t,s]=i;e.push(`M${t} ${s}`);for(let n=2;n{i.d(e,{AnnotationEditorLayer:()=>AnnotationEditorLayer});var s=i(266),n=i(115),a=i(812),r=i(640);class FreeTextEditor extends n.AnnotationEditor{#Mt=this.editorDivBlur.bind(this);#Pt=this.editorDivFocus.bind(this);#Ft=this.editorDivInput.bind(this);#Rt=this.editorDivKeydown.bind(this);#u;#kt="";#Dt=`${this.id}-editor`;#It;#Lt=null;static _freeTextDefaultContent="";static _internalPadding=0;static _defaultColor=null;static _defaultFontSize=10;static get _keyboardManager(){const t=FreeTextEditor.prototype,arrowChecker=t=>t.isEmpty(),e=a.AnnotationEditorUIManager.TRANSLATE_SMALL,i=a.AnnotationEditorUIManager.TRANSLATE_BIG;return(0,s.shadow)(this,"_keyboardManager",new a.KeyboardManager([[["ctrl+s","mac+meta+s","ctrl+p","mac+meta+p"],t.commitOrRemove,{bubbles:!0}],[["ctrl+Enter","mac+meta+Enter","Escape","mac+Escape"],t.commitOrRemove],[["ArrowLeft","mac+ArrowLeft"],t._translateEmpty,{args:[-e,0],checker:arrowChecker}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],t._translateEmpty,{args:[-i,0],checker:arrowChecker}],[["ArrowRight","mac+ArrowRight"],t._translateEmpty,{args:[e,0],checker:arrowChecker}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],t._translateEmpty,{args:[i,0],checker:arrowChecker}],[["ArrowUp","mac+ArrowUp"],t._translateEmpty,{args:[0,-e],checker:arrowChecker}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],t._translateEmpty,{args:[0,-i],checker:arrowChecker}],[["ArrowDown","mac+ArrowDown"],t._translateEmpty,{args:[0,e],checker:arrowChecker}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],t._translateEmpty,{args:[0,i],checker:arrowChecker}]]))}static _type="freetext";static _editorType=s.AnnotationEditorType.FREETEXT;constructor(t){super({...t,name:"freeTextEditor"});this.#u=t.color||FreeTextEditor._defaultColor||n.AnnotationEditor._defaultLineColor;this.#It=t.fontSize||FreeTextEditor._defaultFontSize}static initialize(t){n.AnnotationEditor.initialize(t,{strings:["pdfjs-free-text-default-content"]});const e=getComputedStyle(document.documentElement);this._internalPadding=parseFloat(e.getPropertyValue("--freetext-padding"))}static updateDefaultParams(t,e){switch(t){case s.AnnotationEditorParamsType.FREETEXT_SIZE:FreeTextEditor._defaultFontSize=e;break;case s.AnnotationEditorParamsType.FREETEXT_COLOR:FreeTextEditor._defaultColor=e}}updateParams(t,e){switch(t){case s.AnnotationEditorParamsType.FREETEXT_SIZE:this.#Ot(e);break;case s.AnnotationEditorParamsType.FREETEXT_COLOR:this.#Bt(e)}}static get defaultPropertiesToUpdate(){return[[s.AnnotationEditorParamsType.FREETEXT_SIZE,FreeTextEditor._defaultFontSize],[s.AnnotationEditorParamsType.FREETEXT_COLOR,FreeTextEditor._defaultColor||n.AnnotationEditor._defaultLineColor]]}get propertiesToUpdate(){return[[s.AnnotationEditorParamsType.FREETEXT_SIZE,this.#It],[s.AnnotationEditorParamsType.FREETEXT_COLOR,this.#u]]}#Ot(t){const setFontsize=t=>{this.editorDiv.style.fontSize=`calc(${t}px * var(--scale-factor))`;this.translate(0,-(t-this.#It)*this.parentScale);this.#It=t;this.#Nt()},e=this.#It;this.addCommands({cmd:()=>{setFontsize(t)},undo:()=>{setFontsize(e)},mustExec:!0,type:s.AnnotationEditorParamsType.FREETEXT_SIZE,overwriteIfSameType:!0,keepUndo:!0})}#Bt(t){const e=this.#u;this.addCommands({cmd:()=>{this.#u=this.editorDiv.style.color=t},undo:()=>{this.#u=this.editorDiv.style.color=e},mustExec:!0,type:s.AnnotationEditorParamsType.FREETEXT_COLOR,overwriteIfSameType:!0,keepUndo:!0})}_translateEmpty(t,e){this._uiManager.translateSelectedEditors(t,e,!0)}getInitialTranslation(){const t=this.parentScale;return[-FreeTextEditor._internalPadding*t,-(FreeTextEditor._internalPadding+this.#It)*t]}rebuild(){if(this.parent){super.rebuild();null!==this.div&&(this.isAttachedToDOM||this.parent.add(this))}}enableEditMode(){if(!this.isInEditMode()){this.parent.setEditingState(!1);this.parent.updateToolbar(s.AnnotationEditorType.FREETEXT);super.enableEditMode();this.overlayDiv.classList.remove("enabled");this.editorDiv.contentEditable=!0;this._isDraggable=!1;this.div.removeAttribute("aria-activedescendant");this.editorDiv.addEventListener("keydown",this.#Rt);this.editorDiv.addEventListener("focus",this.#Pt);this.editorDiv.addEventListener("blur",this.#Mt);this.editorDiv.addEventListener("input",this.#Ft)}}disableEditMode(){if(this.isInEditMode()){this.parent.setEditingState(!0);super.disableEditMode();this.overlayDiv.classList.add("enabled");this.editorDiv.contentEditable=!1;this.div.setAttribute("aria-activedescendant",this.#Dt);this._isDraggable=!0;this.editorDiv.removeEventListener("keydown",this.#Rt);this.editorDiv.removeEventListener("focus",this.#Pt);this.editorDiv.removeEventListener("blur",this.#Mt);this.editorDiv.removeEventListener("input",this.#Ft);this.div.focus({preventScroll:!0});this.isEditing=!1;this.parent.div.classList.add("freetextEditing")}}focusin(t){if(this._focusEventsAllowed){super.focusin(t);t.target!==this.editorDiv&&this.editorDiv.focus()}}onceAdded(){if(this.width)this.#Ut();else{this.enableEditMode();this.editorDiv.focus();this._initialOptions?.isCentered&&this.center();this._initialOptions=null}}isEmpty(){return!this.editorDiv||""===this.editorDiv.innerText.trim()}remove(){this.isEditing=!1;if(this.parent){this.parent.setEditingState(!0);this.parent.div.classList.add("freetextEditing")}super.remove()}#zt(){const t=this.editorDiv.getElementsByTagName("div");if(0===t.length)return this.editorDiv.innerText;const e=[];for(const i of t)e.push(i.innerText.replace(/\r\n?|\n/,""));return e.join("\n")}#Nt(){const[t,e]=this.parentDimensions;let i;if(this.isAttachedToDOM)i=this.div.getBoundingClientRect();else{const{currentLayer:t,div:e}=this,s=e.style.display;e.style.display="hidden";t.div.append(this.div);i=e.getBoundingClientRect();e.remove();e.style.display=s}if(this.rotation%180==this.parentRotation%180){this.width=i.width/t;this.height=i.height/e}else{this.width=i.height/t;this.height=i.width/e}this.fixAndSetPosition()}commit(){if(!this.isInEditMode())return;super.commit();this.disableEditMode();const t=this.#kt,e=this.#kt=this.#zt().trimEnd();if(t===e)return;const setText=t=>{this.#kt=t;if(t){this.#Ht();this._uiManager.rebuild(this);this.#Nt()}else this.remove()};this.addCommands({cmd:()=>{setText(e)},undo:()=>{setText(t)},mustExec:!1});this.#Nt()}shouldGetKeyboardEvents(){return this.isInEditMode()}enterInEditMode(){this.enableEditMode();this.editorDiv.focus()}dblclick(t){this.enterInEditMode()}keydown(t){if(t.target===this.div&&"Enter"===t.key){this.enterInEditMode();t.preventDefault()}}editorDivKeydown(t){FreeTextEditor._keyboardManager.exec(this,t)}editorDivFocus(t){this.isEditing=!0}editorDivBlur(t){this.isEditing=!1}editorDivInput(t){this.parent.div.classList.toggle("freetextEditing",this.isEmpty())}disableEditing(){this.editorDiv.setAttribute("role","comment");this.editorDiv.removeAttribute("aria-multiline")}enableEditing(){this.editorDiv.setAttribute("role","textbox");this.editorDiv.setAttribute("aria-multiline",!0)}render(){if(this.div)return this.div;let t,e;if(this.width){t=this.x;e=this.y}super.render();this.editorDiv=document.createElement("div");this.editorDiv.className="internal";this.editorDiv.setAttribute("id",this.#Dt);this.editorDiv.setAttribute("data-l10n-id","pdfjs-free-text");this.enableEditing();n.AnnotationEditor._l10nPromise.get("pdfjs-free-text-default-content").then((t=>this.editorDiv?.setAttribute("default-content",t)));this.editorDiv.contentEditable=!0;const{style:i}=this.editorDiv;i.fontSize=`calc(${this.#It}px * var(--scale-factor))`;i.color=this.#u;this.div.append(this.editorDiv);this.overlayDiv=document.createElement("div");this.overlayDiv.classList.add("overlay","enabled");this.div.append(this.overlayDiv);(0,a.bindEvents)(this,this.div,["dblclick","keydown"]);if(this.width){const[i,s]=this.parentDimensions;if(this.annotationElementId){const{position:n}=this.#Lt;let[a,r]=this.getInitialTranslation();[a,r]=this.pageTranslationToScreen(a,r);const[o,l]=this.pageDimensions,[h,d]=this.pageTranslation;let c,u;switch(this.rotation){case 0:c=t+(n[0]-h)/o;u=e+this.height-(n[1]-d)/l;break;case 90:c=t+(n[0]-h)/o;u=e-(n[1]-d)/l;[a,r]=[r,-a];break;case 180:c=t-this.width+(n[0]-h)/o;u=e-(n[1]-d)/l;[a,r]=[-a,-r];break;case 270:c=t+(n[0]-h-this.height*l)/o;u=e+(n[1]-d-this.width*o)/l;[a,r]=[-r,a]}this.setAt(c*i,u*s,a,r)}else this.setAt(t*i,e*s,this.width*i,this.height*s);this.#Ht();this._isDraggable=!0;this.editorDiv.contentEditable=!1}else{this._isDraggable=!1;this.editorDiv.contentEditable=!0}return this.div}#Ht(){this.editorDiv.replaceChildren();if(this.#kt)for(const t of this.#kt.split("\n")){const e=document.createElement("div");e.append(t?document.createTextNode(t):document.createElement("br"));this.editorDiv.append(e)}}get contentDiv(){return this.editorDiv}static deserialize(t,e,i){let n=null;if(t instanceof r.FreeTextAnnotationElement){const{data:{defaultAppearanceData:{fontSize:e,fontColor:i},rect:a,rotation:r,id:o},textContent:l,textPosition:h,parent:{page:{pageNumber:d}}}=t;if(!l||0===l.length)return null;n=t={annotationType:s.AnnotationEditorType.FREETEXT,color:Array.from(i),fontSize:e,value:l.join("\n"),position:h,pageIndex:d-1,rect:a,rotation:r,id:o,deleted:!1}}const a=super.deserialize(t,e,i);a.#It=t.fontSize;a.#u=s.Util.makeHexColor(...t.color);a.#kt=t.value;a.annotationElementId=t.id||null;a.#Lt=n;return a}serialize(t=!1){if(this.isEmpty())return null;if(this.deleted)return{pageIndex:this.pageIndex,id:this.annotationElementId,deleted:!0};const e=FreeTextEditor._internalPadding*this.parentScale,i=this.getRect(e,e),a=n.AnnotationEditor._colorManager.convert(this.isAttachedToDOM?getComputedStyle(this.editorDiv).color:this.#u),r={annotationType:s.AnnotationEditorType.FREETEXT,color:a,fontSize:this.#It,value:this.#kt,pageIndex:this.pageIndex,rect:i,rotation:this.rotation,structTreeParentId:this._structTreeParentId};if(t)return r;if(this.annotationElementId&&!this.#jt(r))return null;r.id=this.annotationElementId;return r}#jt(t){const{value:e,fontSize:i,color:s,rect:n,pageIndex:a}=this.#Lt;return t.value!==e||t.fontSize!==i||t.rect.some(((t,e)=>Math.abs(t-n[e])>=1))||t.color.some(((t,e)=>t!==s[e]))||t.pageIndex!==a}#Ut(t=!1){if(!this.annotationElementId)return;this.#Nt();if(!t&&(0===this.width||0===this.height)){setTimeout((()=>this.#Ut(!0)),0);return}const e=FreeTextEditor._internalPadding*this.parentScale;this.#Lt.rect=this.getRect(e,e)}}var o=i(97),l=i(405);class HighlightEditor extends n.AnnotationEditor{#Vt;#Wt=null;#qt=null;#Gt=null;#$t=null;#Kt=null;#ft=null;#Xt=null;#Yt;#Jt=null;static _defaultColor=null;static _defaultOpacity=1;static _l10nPromise;static _type="highlight";static _editorType=s.AnnotationEditorType.HIGHLIGHT;constructor(t){super({...t,name:"highlightEditor"});HighlightEditor._defaultColor||=this._uiManager.highlightColors?.values().next().value||"#fff066";this.color=t.color||HighlightEditor._defaultColor;this.#Yt=t.opacity||HighlightEditor._defaultOpacity;this.#Vt=t.boxes||null;this._isDraggable=!1;this.#Qt();this.#Zt();this.rotate(this.rotation)}#Qt(){const t=new l.Outliner(this.#Vt,.001);this.#Kt=t.getOutlines();({x:this.x,y:this.y,width:this.width,height:this.height}=this.#Kt.box);const e=new l.Outliner(this.#Vt,.0025,.001,"ltr"===this._uiManager.direction);this.#Gt=e.getOutlines();const{lastPoint:i}=this.#Gt.box;this.#Xt=[(i[0]-this.x)/this.width,(i[1]-this.y)/this.height]}static initialize(t){n.AnnotationEditor.initialize(t)}static updateDefaultParams(t,e){if(t===s.AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR)HighlightEditor._defaultColor=e}get toolbarPosition(){return this.#Xt}updateParams(t,e){if(t===s.AnnotationEditorParamsType.HIGHLIGHT_COLOR)this.#Bt(e)}static get defaultPropertiesToUpdate(){return[[s.AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR,HighlightEditor._defaultColor]]}get propertiesToUpdate(){return[[s.AnnotationEditorParamsType.HIGHLIGHT_COLOR,this.color||HighlightEditor._defaultColor]]}#Bt(t){const e=this.color;this.addCommands({cmd:()=>{this.color=t;this.parent.drawLayer.changeColor(this.#ft,t);this.#qt?.updateColor(t)},undo:()=>{this.color=e;this.parent.drawLayer.changeColor(this.#ft,e);this.#qt?.updateColor(e)},mustExec:!0,type:s.AnnotationEditorParamsType.HIGHLIGHT_COLOR,overwriteIfSameType:!0,keepUndo:!0})}async addEditToolbar(){const t=await super.addEditToolbar();if(!t)return null;if(this._uiManager.highlightColors){this.#qt=new o.ColorPicker({editor:this});t.addColorPicker(this.#qt)}return t}disableEditing(){super.disableEditing();this.div.classList.toggle("disabled",!0)}enableEditing(){super.enableEditing();this.div.classList.toggle("disabled",!1)}fixAndSetPosition(){return super.fixAndSetPosition(0)}getRect(t,e){return super.getRect(t,e,0)}onceAdded(){this.parent.addUndoableEditor(this);this.div.focus()}remove(){super.remove();this.#te()}rebuild(){if(this.parent){super.rebuild();if(null!==this.div){this.#Zt();this.isAttachedToDOM||this.parent.add(this)}}}setParent(t){let e=!1;if(this.parent&&!t)this.#te();else if(t){this.#Zt(t);e=!this.parent&&this.div?.classList.contains("selectedEditor")}super.setParent(t);e&&this.select()}#te(){if(null!==this.#ft&&this.parent){this.parent.drawLayer.remove(this.#ft);this.#ft=null;this.parent.drawLayer.remove(this.#Jt);this.#Jt=null}}#Zt(t=this.parent){if(null===this.#ft){({id:this.#ft,clipPathId:this.#Wt}=t.drawLayer.highlight(this.#Kt,this.color,this.#Yt));this.#$t&&(this.#$t.style.clipPath=this.#Wt);this.#Jt=t.drawLayer.highlightOutline(this.#Gt)}}static#ee({x:t,y:e,width:i,height:s},n){switch(n){case 90:return{x:1-e-s,y:t,width:s,height:i};case 180:return{x:1-t-i,y:1-e-s,width:i,height:s};case 270:return{x:e,y:1-t-i,width:s,height:i}}return{x:t,y:e,width:i,height:s}}rotate(t){const{drawLayer:e}=this.parent;e.rotate(this.#ft,t);e.rotate(this.#Jt,t);e.updateBox(this.#ft,HighlightEditor.#ee(this,t));e.updateBox(this.#Jt,HighlightEditor.#ee(this.#Gt.box,t))}render(){if(this.div)return this.div;const t=super.render(),e=this.#$t=document.createElement("div");t.append(e);e.className="internal";e.style.clipPath=this.#Wt;const[i,s]=this.parentDimensions;this.setDims(this.width*i,this.height*s);(0,a.bindEvents)(this,this.#$t,["pointerover","pointerleave"]);this.enableEditing();return t}pointerover(){this.parent.drawLayer.addClass(this.#Jt,"hovered")}pointerleave(){this.parent.drawLayer.removeClass(this.#Jt,"hovered")}select(){super.select();this.parent?.drawLayer.removeClass(this.#Jt,"hovered");this.parent?.drawLayer.addClass(this.#Jt,"selected")}unselect(){super.unselect();this.parent?.drawLayer.removeClass(this.#Jt,"selected")}#ie(){const[t,e]=this.pageDimensions,i=this.#Vt,s=new Array(8*i.length);let n=0;for(const{x:a,y:r,width:o,height:l}of i){const i=a*t,h=(1-r-l)*e;s[n]=s[n+4]=i;s[n+1]=s[n+3]=h;s[n+2]=s[n+6]=i+o*t;s[n+5]=s[n+7]=h+l*e;n+=8}return s}#se(){const[t,e]=this.pageDimensions,i=this.width*t,s=this.height*e,n=this.x*t,a=(1-this.y-this.height)*e,r=[];for(const t of this.#Kt.outlines){const e=new Array(t.length);for(let r=0;r{this.thickness=t;this.#Ee()},undo:()=>{this.thickness=e;this.#Ee()},mustExec:!0,type:s.AnnotationEditorParamsType.INK_THICKNESS,overwriteIfSameType:!0,keepUndo:!0})}#Bt(t){const e=this.color;this.addCommands({cmd:()=>{this.color=t;this.#_e()},undo:()=>{this.color=e;this.#_e()},mustExec:!0,type:s.AnnotationEditorParamsType.INK_COLOR,overwriteIfSameType:!0,keepUndo:!0})}#ye(t){t/=100;const e=this.opacity;this.addCommands({cmd:()=>{this.opacity=t;this.#_e()},undo:()=>{this.opacity=e;this.#_e()},mustExec:!0,type:s.AnnotationEditorParamsType.INK_OPACITY,overwriteIfSameType:!0,keepUndo:!0})}rebuild(){if(this.parent){super.rebuild();if(null!==this.div){if(!this.canvas){this.#we();this.#xe()}if(!this.isAttachedToDOM){this.parent.add(this);this.#Ce()}this.#Ee()}}}remove(){if(null!==this.canvas){this.isEmpty()||this.commit();this.canvas.width=this.canvas.height=0;this.canvas.remove();this.canvas=null;if(this.#de){clearTimeout(this.#de);this.#de=null}this.#me.disconnect();this.#me=null;super.remove()}}setParent(t){!this.parent&&t?this._uiManager.removeShouldRescale(this):this.parent&&null===t&&this._uiManager.addShouldRescale(this);super.setParent(t)}onScaleChanging(){const[t,e]=this.parentDimensions,i=this.width*t,s=this.height*e;this.setDimensions(i,s)}enableEditMode(){if(!this.#ue&&null!==this.canvas){super.enableEditMode();this._isDraggable=!1;this.canvas.addEventListener("pointerdown",this.#he)}}disableEditMode(){if(this.isInEditMode()&&null!==this.canvas){super.disableEditMode();this._isDraggable=!this.isEmpty();this.div.classList.remove("editing");this.canvas.removeEventListener("pointerdown",this.#he)}}onceAdded(){this._isDraggable=!this.isEmpty()}isEmpty(){return 0===this.paths.length||1===this.paths.length&&0===this.paths[0].length}#Se(){const{parentRotation:t,parentDimensions:[e,i]}=this;switch(t){case 90:return[0,i,i,e];case 180:return[e,i,e,i];case 270:return[e,0,i,e];default:return[0,0,e,i]}}#Te(){const{ctx:t,color:e,opacity:i,thickness:s,parentScale:n,scaleFactor:r}=this;t.lineWidth=s*n/r;t.lineCap="round";t.lineJoin="round";t.miterLimit=10;t.strokeStyle=`${e}${(0,a.opacityToHex)(i)}`}#Me(t,e){this.canvas.addEventListener("contextmenu",h.noContextMenu);this.canvas.addEventListener("pointerleave",this.#oe);this.canvas.addEventListener("pointermove",this.#re);this.canvas.addEventListener("pointerup",this.#le);this.canvas.removeEventListener("pointerdown",this.#he);this.isEditing=!0;if(!this.#ge){this.#ge=!0;this.#Ce();this.thickness||=InkEditor._defaultThickness;this.color||=InkEditor._defaultColor||n.AnnotationEditor._defaultLineColor;this.opacity??=InkEditor._defaultOpacity}this.currentPath.push([t,e]);this.#pe=!1;this.#Te();this.#Ae=()=>{this.#Pe();this.#Ae&&window.requestAnimationFrame(this.#Ae)};window.requestAnimationFrame(this.#Ae)}#Fe(t,e){const[i,s]=this.currentPath.at(-1);if(this.currentPath.length>1&&t===i&&e===s)return;const n=this.currentPath;let a=this.#ce;n.push([t,e]);this.#pe=!0;if(n.length<=2){a.moveTo(...n[0]);a.lineTo(t,e)}else{if(3===n.length){this.#ce=a=new Path2D;a.moveTo(...n[0])}this.#Re(a,...n.at(-3),...n.at(-2),t,e)}}#ke(){if(0===this.currentPath.length)return;const t=this.currentPath.at(-1);this.#ce.lineTo(...t)}#De(t,e){this.#Ae=null;t=Math.min(Math.max(t,0),this.canvas.width);e=Math.min(Math.max(e,0),this.canvas.height);this.#Fe(t,e);this.#ke();let i;if(1!==this.currentPath.length)i=this.#Ie();else{const s=[t,e];i=[[s,s.slice(),s.slice(),s]]}const s=this.#ce,n=this.currentPath;this.currentPath=[];this.#ce=new Path2D;this.addCommands({cmd:()=>{this.allRawPaths.push(n);this.paths.push(i);this.bezierPath2D.push(s);this.rebuild()},undo:()=>{this.allRawPaths.pop();this.paths.pop();this.bezierPath2D.pop();if(0===this.paths.length)this.remove();else{if(!this.canvas){this.#we();this.#xe()}this.#Ee()}},mustExec:!0})}#Pe(){if(!this.#pe)return;this.#pe=!1;const t=Math.ceil(this.thickness*this.parentScale),e=this.currentPath.slice(-3),i=e.map((t=>t[0])),s=e.map((t=>t[1])),{ctx:n}=(Math.min(...i),Math.max(...i),Math.min(...s),Math.max(...s),this);n.save();n.clearRect(0,0,this.canvas.width,this.canvas.height);for(const t of this.bezierPath2D)n.stroke(t);n.stroke(this.#ce);n.restore()}#Re(t,e,i,s,n,a,r){const o=(e+s)/2,l=(i+n)/2,h=(s+a)/2,d=(n+r)/2;t.bezierCurveTo(o+2*(s-o)/3,l+2*(n-l)/3,h+2*(s-h)/3,d+2*(n-d)/3,h,d)}#Ie(){const t=this.currentPath;if(t.length<=2)return[[t[0],t[0],t.at(-1),t.at(-1)]];const e=[];let i,[s,n]=t[0];for(i=1;i{this.#de=null;this.canvas.removeEventListener("contextmenu",h.noContextMenu)}),10);this.#De(t.offsetX,t.offsetY);this.addToAnnotationStorage();this.setInBackground()}#we(){this.canvas=document.createElement("canvas");this.canvas.width=this.canvas.height=0;this.canvas.className="inkEditorCanvas";this.canvas.setAttribute("data-l10n-id","pdfjs-ink-canvas");this.div.append(this.canvas);this.ctx=this.canvas.getContext("2d")}#xe(){this.#me=new ResizeObserver((t=>{const e=t[0].contentRect;e.width&&e.height&&this.setDimensions(e.width,e.height)}));this.#me.observe(this.div)}get isResizable(){return!this.isEmpty()&&this.#ue}render(){if(this.div)return this.div;let t,e;if(this.width){t=this.x;e=this.y}super.render();this.div.setAttribute("data-l10n-id","pdfjs-ink");const[i,s,n,a]=this.#Se();this.setAt(i,s,0,0);this.setDims(n,a);this.#we();if(this.width){const[i,s]=this.parentDimensions;this.setAspectRatio(this.width*i,this.height*s);this.setAt(t*i,e*s,this.width*i,this.height*s);this.#ge=!0;this.#Ce();this.setDims(this.width*i,this.height*s);this.#_e();this.div.classList.add("disabled")}else{this.div.classList.add("editing");this.enableEditMode()}this.#xe();return this.div}#Ce(){if(!this.#ge)return;const[t,e]=this.parentDimensions;this.canvas.width=Math.ceil(this.width*t);this.canvas.height=Math.ceil(this.height*e);this.#Le()}setDimensions(t,e){const i=Math.round(t),s=Math.round(e);if(this.#fe===i&&this.#be===s)return;this.#fe=i;this.#be=s;this.canvas.style.visibility="hidden";const[n,a]=this.parentDimensions;this.width=t/n;this.height=e/a;this.fixAndSetPosition();this.#ue&&this.#Be(t,e);this.#Ce();this.#_e();this.canvas.style.visibility="visible";this.fixDims()}#Be(t,e){const i=this.#Ne(),s=(t-i)/this.#ae,n=(e-i)/this.#ne;this.scaleFactor=Math.min(s,n)}#Le(){const t=this.#Ne()/2;this.ctx.setTransform(this.scaleFactor,0,0,this.scaleFactor,this.translationX*this.scaleFactor+t,this.translationY*this.scaleFactor+t)}static#Ue(t){const e=new Path2D;for(let i=0,s=t.length;i`image/${t}`)))}static get supportedTypesStr(){return(0,s.shadow)(this,"supportedTypesStr",this.supportedTypes.join(","))}static isHandlingMimeForPasting(t){return this.supportedTypes.includes(t)}static paste(t,e){e.pasteEditor(s.AnnotationEditorType.STAMP,{bitmapFile:t.getAsFile()})}#ti(t,e=!1){if(t){this.#We=t.bitmap;if(!e){this.#qe=t.id;this.#Qe=t.isSvg}t.file&&(this.#Xe=t.file.name);this.#we()}else this.remove()}#ei(){this.#Ge=null;this._uiManager.enableWaiting(!1);this.#Ye&&this.div.focus()}#ii(){if(this.#qe){this._uiManager.enableWaiting(!0);this._uiManager.imageManager.getFromId(this.#qe).then((t=>this.#ti(t,!0))).finally((()=>this.#ei()));return}if(this.#$e){const t=this.#$e;this.#$e=null;this._uiManager.enableWaiting(!0);this.#Ge=this._uiManager.imageManager.getFromUrl(t).then((t=>this.#ti(t))).finally((()=>this.#ei()));return}if(this.#Ke){const t=this.#Ke;this.#Ke=null;this._uiManager.enableWaiting(!0);this.#Ge=this._uiManager.imageManager.getFromFile(t).then((t=>this.#ti(t))).finally((()=>this.#ei()));return}const t=document.createElement("input");t.type="file";t.accept=StampEditor.supportedTypesStr;this.#Ge=new Promise((e=>{t.addEventListener("change",(async()=>{if(t.files&&0!==t.files.length){this._uiManager.enableWaiting(!0);const e=await this._uiManager.imageManager.getFromFile(t.files[0]);this.#ti(e)}else this.remove();e()}));t.addEventListener("cancel",(()=>{this.remove();e()}))})).finally((()=>this.#ei()));t.click()}remove(){if(this.#qe){this.#We=null;this._uiManager.imageManager.deleteId(this.#qe);this.#Ye?.remove();this.#Ye=null;this.#me?.disconnect();this.#me=null;if(this.#Je){clearTimeout(this.#Je);this.#Je=null}}super.remove()}rebuild(){if(this.parent){super.rebuild();if(null!==this.div){this.#qe&&this.#ii();this.isAttachedToDOM||this.parent.add(this)}}else this.#qe&&this.#ii()}onceAdded(){this._isDraggable=!0;this.div.focus()}isEmpty(){return!(this.#Ge||this.#We||this.#$e||this.#Ke)}get isResizable(){return!0}render(){if(this.div)return this.div;let t,e;if(this.width){t=this.x;e=this.y}super.render();this.div.hidden=!0;this.#We?this.#we():this.#ii();if(this.width){const[i,s]=this.parentDimensions;this.setAt(t*i,e*s,this.width*i,this.height*s)}return this.div}#we(){const{div:t}=this;let{width:e,height:i}=this.#We;const[s,n]=this.pageDimensions,a=.75;if(this.width){e=this.width*s;i=this.height*n}else if(e>a*s||i>a*n){const t=Math.min(a*s/e,a*n/i);e*=t;i*=t}const[r,o]=this.parentDimensions;this.setDims(e*r/s,i*o/n);this._uiManager.enableWaiting(!1);const l=this.#Ye=document.createElement("canvas");t.append(l);t.hidden=!1;this.#si(e,i);this.#xe();if(!this.#Ze){this.parent.addUndoableEditor(this);this.#Ze=!0}this._uiManager._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",subtype:this.editorType,data:{action:"inserted_image"}}});this.addAltTextButton();this.#Xe&&l.setAttribute("aria-label",this.#Xe)}#ni(t,e){const[i,s]=this.parentDimensions;this.width=t/i;this.height=e/s;this.setDims(t,e);this._initialOptions?.isCentered?this.center():this.fixAndSetPosition();this._initialOptions=null;null!==this.#Je&&clearTimeout(this.#Je);this.#Je=setTimeout((()=>{this.#Je=null;this.#si(t,e)}),200)}#ai(t,e){const{width:i,height:s}=this.#We;let n=i,a=s,r=this.#We;for(;n>2*t||a>2*e;){const i=n,s=a;n>2*t&&(n=n>=16384?Math.floor(n/2)-1:Math.ceil(n/2));a>2*e&&(a=a>=16384?Math.floor(a/2)-1:Math.ceil(a/2));const o=new OffscreenCanvas(n,a);o.getContext("2d").drawImage(r,0,0,i,s,0,0,n,a);r=o.transferToImageBitmap()}return r}#si(t,e){t=Math.ceil(t);e=Math.ceil(e);const i=this.#Ye;if(!i||i.width===t&&i.height===e)return;i.width=t;i.height=e;const s=this.#Qe?this.#We:this.#ai(t,e),n=i.getContext("2d");n.filter=this._uiManager.hcmFilter;n.drawImage(s,0,0,s.width,s.height,0,0,t,e)}getImageForAltText(){return this.#Ye}#ri(t){if(t){if(this.#Qe){const t=this._uiManager.imageManager.getSvgUrl(this.#qe);if(t)return t}const t=document.createElement("canvas");({width:t.width,height:t.height}=this.#We);t.getContext("2d").drawImage(this.#We,0,0);return t.toDataURL()}if(this.#Qe){const[t,e]=this.pageDimensions,i=Math.round(this.width*t*h.PixelsPerInch.PDF_TO_CSS_UNITS),s=Math.round(this.height*e*h.PixelsPerInch.PDF_TO_CSS_UNITS),n=new OffscreenCanvas(i,s);n.getContext("2d").drawImage(this.#We,0,0,this.#We.width,this.#We.height,0,0,i,s);return n.transferToImageBitmap()}return structuredClone(this.#We)}#xe(){this.#me=new ResizeObserver((t=>{const e=t[0].contentRect;e.width&&e.height&&this.#ni(e.width,e.height)}));this.#me.observe(this.div)}static deserialize(t,e,i){if(t instanceof r.StampAnnotationElement)return null;const s=super.deserialize(t,e,i),{rect:n,bitmapUrl:a,bitmapId:o,isSvg:l,accessibilityData:h}=t;o&&i.imageManager.isValidId(o)?s.#qe=o:s.#$e=a;s.#Qe=l;const[d,c]=s.pageDimensions;s.width=(n[2]-n[0])/d;s.height=(n[3]-n[1])/c;h&&(s.altTextData=h);return s}serialize(t=!1,e=null){if(this.isEmpty())return null;const i={annotationType:s.AnnotationEditorType.STAMP,bitmapId:this.#qe,pageIndex:this.pageIndex,rect:this.getRect(0,0),rotation:this.rotation,isSvg:this.#Qe,structTreeParentId:this._structTreeParentId};if(t){i.bitmapUrl=this.#ri(!0);i.accessibilityData=this.altTextData;return i}const{decorative:n,altText:a}=this.altTextData;!n&&a&&(i.accessibilityData={type:"Figure",alt:a});if(null===e)return i;e.stamps||=new Map;const r=this.#Qe?(i.rect[2]-i.rect[0])*(i.rect[3]-i.rect[1]):null;if(e.stamps.has(this.#qe)){if(this.#Qe){const t=e.stamps.get(this.#qe);if(r>t.area){t.area=r;t.serialized.bitmap.close();t.serialized.bitmap=this.#ri(!1)}}}else{e.stamps.set(this.#qe,{area:r,serialized:i});i.bitmap=this.#ri(!1)}return i}}class AnnotationEditorLayer{#k;#oi=!1;#li=null;#hi=this.pointerup.bind(this);#di=this.pointerUpAfterSelection.bind(this);#ci=this.pointerdown.bind(this);#ui=null;#pi=this.selectionStart.bind(this);#gi=new Map;#mi=!1;#fi=!1;#bi=!1;#Ai=null;#vi;static _initialized=!1;static#yi=new Map([FreeTextEditor,InkEditor,StampEditor,HighlightEditor].map((t=>[t._editorType,t])));constructor({uiManager:t,pageIndex:e,div:i,accessibilityManager:s,annotationLayer:n,drawLayer:a,textLayer:r,viewport:o,l10n:l}){const h=[...AnnotationEditorLayer.#yi.values()];if(!AnnotationEditorLayer._initialized){AnnotationEditorLayer._initialized=!0;for(const t of h)t.initialize(l)}t.registerEditorTypes(h);this.#vi=t;this.pageIndex=e;this.div=i;this.#k=s;this.#li=n;this.viewport=o;this.#Ai=r;this.drawLayer=a;this.#vi.addLayer(this)}get isEmpty(){return 0===this.#gi.size}updateToolbar(t){this.#vi.updateToolbar(t)}updateMode(t=this.#vi.getMode()){this.#Ei();switch(t){case s.AnnotationEditorType.NONE:this.disableTextSelection();this.togglePointerEvents(!1);this.disableClick();break;case s.AnnotationEditorType.INK:this.addInkEditorIfNeeded(!1);this.disableTextSelection();this.togglePointerEvents(!0);this.disableClick();break;case s.AnnotationEditorType.HIGHLIGHT:this.enableTextSelection();this.togglePointerEvents(!1);this.disableClick();break;default:this.disableTextSelection();this.togglePointerEvents(!0);this.enableClick()}if(t!==s.AnnotationEditorType.NONE){const{classList:e}=this.div;for(const i of AnnotationEditorLayer.#yi.values())e.toggle(`${i._type}Editing`,t===i._editorType);this.div.hidden=!1}}addInkEditorIfNeeded(t){if(this.#vi.getMode()!==s.AnnotationEditorType.INK)return;if(!t)for(const t of this.#gi.values())if(t.isEmpty()){t.setInBackground();return}this.#_i({offsetX:0,offsetY:0},!1).setInBackground()}setEditingState(t){this.#vi.setEditingState(t)}addCommands(t){this.#vi.addCommands(t)}togglePointerEvents(t=!1){this.div.classList.toggle("disabled",!t)}enable(){this.togglePointerEvents(!0);const t=new Set;for(const e of this.#gi.values()){e.enableEditing();e.annotationElementId&&t.add(e.annotationElementId)}if(!this.#li)return;const e=this.#li.getEditableAnnotations();for(const i of e){i.hide();if(this.#vi.isDeletedAnnotationElement(i.data.id))continue;if(t.has(i.data.id))continue;const e=this.deserialize(i);if(e){this.addOrRebuild(e);e.enableEditing()}}}disable(){this.#bi=!0;this.togglePointerEvents(!1);const t=new Set;for(const e of this.#gi.values()){e.disableEditing();if(e.annotationElementId&&null===e.serialize()){this.getEditableAnnotation(e.annotationElementId)?.show();e.remove()}else t.add(e.annotationElementId)}if(this.#li){const e=this.#li.getEditableAnnotations();for(const i of e){const{id:e}=i.data;t.has(e)||this.#vi.isDeletedAnnotationElement(e)||i.show()}}this.#Ei();this.isEmpty&&(this.div.hidden=!0);const{classList:e}=this.div;for(const t of AnnotationEditorLayer.#yi.values())e.remove(`${t._type}Editing`);this.disableTextSelection();this.#bi=!1}getEditableAnnotation(t){return this.#li?.getEditableAnnotation(t)||null}setActiveEditor(t){this.#vi.getActive()!==t&&this.#vi.setActiveEditor(t)}enableTextSelection(){this.#Ai?.div&&document.addEventListener("selectstart",this.#pi)}disableTextSelection(){this.#Ai?.div&&document.removeEventListener("selectstart",this.#pi)}enableClick(){this.div.addEventListener("pointerdown",this.#ci);this.div.addEventListener("pointerup",this.#hi)}disableClick(){this.div.removeEventListener("pointerdown",this.#ci);this.div.removeEventListener("pointerup",this.#hi)}attach(t){this.#gi.set(t.id,t);const{annotationElementId:e}=t;e&&this.#vi.isDeletedAnnotationElement(e)&&this.#vi.removeDeletedAnnotationElement(t)}detach(t){this.#gi.delete(t.id);this.#k?.removePointerInTextLayer(t.contentDiv);!this.#bi&&t.annotationElementId&&this.#vi.addDeletedAnnotationElement(t)}remove(t){this.detach(t);this.#vi.removeEditor(t);t.div.remove();t.isAttachedToDOM=!1;this.#fi||this.addInkEditorIfNeeded(!1)}changeParent(t){if(t.parent!==this){if(t.annotationElementId){this.#vi.addDeletedAnnotationElement(t.annotationElementId);n.AnnotationEditor.deleteAnnotationElement(t);t.annotationElementId=null}this.attach(t);t.parent?.detach(t);t.setParent(this);if(t.div&&t.isAttachedToDOM){t.div.remove();this.div.append(t.div)}}}add(t){this.changeParent(t);this.#vi.addEditor(t);this.attach(t);if(!t.isAttachedToDOM){const e=t.render();this.div.append(e);t.isAttachedToDOM=!0}t.fixAndSetPosition();t.onceAdded();this.#vi.addToAnnotationStorage(t)}moveEditorInDOM(t){if(!t.isAttachedToDOM)return;const{activeElement:e}=document;if(t.div.contains(e)&&!this.#ui){t._focusEventsAllowed=!1;this.#ui=setTimeout((()=>{this.#ui=null;if(t.div.contains(document.activeElement))t._focusEventsAllowed=!0;else{t.div.addEventListener("focusin",(()=>{t._focusEventsAllowed=!0}),{once:!0});e.focus()}}),0)}t._structTreeParentId=this.#k?.moveElementInDOM(this.div,t.div,t.contentDiv,!0)}addOrRebuild(t){if(t.needsToBeRebuilt()){t.parent||=this;t.rebuild()}else this.add(t)}addUndoableEditor(t){this.addCommands({cmd:()=>t._uiManager.rebuild(t),undo:()=>{t.remove()},mustExec:!1})}getNextId(){return this.#vi.getId()}get#wi(){return AnnotationEditorLayer.#yi.get(this.#vi.getMode())}#xi(t){const e=this.#wi;return e?new e.prototype.constructor(t):null}canCreateNewEmptyEditor(){return this.#wi?.canCreateNewEmptyEditor()}pasteEditor(t,e){this.#vi.updateToolbar(t);this.#vi.updateMode(t);const{offsetX:i,offsetY:s}=this.#Ci(),n=this.getNextId(),a=this.#xi({parent:this,id:n,x:i,y:s,uiManager:this.#vi,isCentered:!0,...e});a&&this.add(a)}deserialize(t){return AnnotationEditorLayer.#yi.get(t.annotationType??t.annotationEditorType)?.deserialize(t,this,this.#vi)||null}#_i(t,e,i={}){const s=this.getNextId(),n=this.#xi({parent:this,id:s,x:t.offsetX,y:t.offsetY,uiManager:this.#vi,isCentered:e,...i});n&&this.add(n);return n}#Ci(){const{x:t,y:e,width:i,height:s}=this.div.getBoundingClientRect(),n=Math.max(0,t),a=Math.max(0,e),r=(n+Math.min(window.innerWidth,t+i))/2-t,o=(a+Math.min(window.innerHeight,e+s))/2-e,[l,h]=this.viewport.rotation%180==0?[r,o]:[o,r];return{offsetX:l,offsetY:h}}addNewEditor(){this.#_i(this.#Ci(),!0)}setSelected(t){this.#vi.setSelected(t)}toggleSelected(t){this.#vi.toggleSelected(t)}isSelected(t){return this.#vi.isSelected(t)}unselect(t){this.#vi.unselect(t)}selectionStart(t){this.#Ai?.div.addEventListener("pointerup",this.#di,{once:!0})}pointerUpAfterSelection(t){const e=document.getSelection();if(0===e.rangeCount)return;const i=e.getRangeAt(0);if(i.collapsed)return;if(!this.#Ai?.div.contains(i.commonAncestorContainer))return;const{x:s,y:n,width:a,height:r}=this.#Ai.div.getBoundingClientRect(),o=i.getClientRects();let l;switch(this.viewport.rotation){case 90:l=(t,e,i,o)=>({x:(e-n)/r,y:1-(t+i-s)/a,width:o/r,height:i/a});break;case 180:l=(t,e,i,o)=>({x:1-(t+i-s)/a,y:1-(e+o-n)/r,width:i/a,height:o/r});break;case 270:l=(t,e,i,o)=>({x:1-(e+o-n)/r,y:(t-s)/a,width:o/r,height:i/a});break;default:l=(t,e,i,o)=>({x:(t-s)/a,y:(e-n)/r,width:i/a,height:o/r})}const h=[];for(const{x:t,y:e,width:i,height:s}of o)0!==i&&0!==s&&h.push(l(t,e,i,s));0!==h.length&&this.#_i(t,!1,{boxes:h});e.empty()}pointerup(t){const{isMac:e}=s.FeatureTest.platform;if(!(0!==t.button||t.ctrlKey&&e)&&t.target===this.div&&this.#mi){this.#mi=!1;this.#oi?this.#vi.getMode()!==s.AnnotationEditorType.STAMP?this.#_i(t,!1):this.#vi.unselectAll():this.#oi=!0}}pointerdown(t){this.#vi.getMode()===s.AnnotationEditorType.HIGHLIGHT&&this.enableTextSelection();if(this.#mi){this.#mi=!1;return}const{isMac:e}=s.FeatureTest.platform;if(0!==t.button||t.ctrlKey&&e)return;if(t.target!==this.div)return;this.#mi=!0;const i=this.#vi.getActive();this.#oi=!i||i.isEmpty()}findNewParent(t,e,i){const s=this.#vi.findParent(e,i);if(null===s||s===this)return!1;s.changeParent(t);return!0}destroy(){if(this.#vi.getActive()?.parent===this){this.#vi.commitOrRemove();this.#vi.setActiveEditor(null)}if(this.#ui){clearTimeout(this.#ui);this.#ui=null}for(const t of this.#gi.values()){this.#k?.removePointerInTextLayer(t.contentDiv);t.setParent(null);t.isAttachedToDOM=!1;t.div.remove()}this.div=null;this.#gi.clear();this.#vi.removeLayer(this)}#Ei(){this.#fi=!0;for(const t of this.#gi.values())t.isEmpty()&&t.remove();this.#fi=!1}render({viewport:t}){this.viewport=t;(0,h.setLayerDimensions)(this.div,t);for(const t of this.#vi.getEditors(this.pageIndex))this.add(t);this.updateMode()}update({viewport:t}){this.#vi.commitOrRemove();const e=this.viewport.rotation,i=t.rotation;this.viewport=t;(0,h.setLayerDimensions)(this.div,{rotation:i});if(e!==i)for(const t of this.#gi.values())t.rotate(i);this.updateMode()}get pageDimensions(){const{pageWidth:t,pageHeight:e}=this.viewport.rawDims;return[t,e]}}},97:(t,e,i)=>{i.d(e,{ColorPicker:()=>ColorPicker});var s=i(266),n=i(812),a=i(473);class ColorPicker{#n=this.#a.bind(this);#Si=null;#Ti=null;#Mi;#Pi=null;#Fi=!1;#Ri=!1;#ki;#vi=null;static get _keyboardManager(){return(0,s.shadow)(this,"_keyboardManager",new n.KeyboardManager([[["Escape","mac+Escape"],ColorPicker.prototype._hideDropdownFromKeyboard],[[" ","mac+ "],ColorPicker.prototype._colorSelectFromKeyboard],[["ArrowDown","ArrowRight","mac+ArrowDown","mac+ArrowRight"],ColorPicker.prototype._moveToNext],[["ArrowUp","ArrowLeft","mac+ArrowUp","mac+ArrowLeft"],ColorPicker.prototype._moveToPrevious],[["Home","mac+Home"],ColorPicker.prototype._moveToBeginning],[["End","mac+End"],ColorPicker.prototype._moveToEnd]]))}constructor({editor:t=null,uiManager:e=null}){this.#Ri=!t;this.#vi=t?._uiManager||e;this.#ki=this.#vi._eventBus;this.#Mi=t?.color||this.#vi?.highlightColors.values().next().value||"#FFFF98"}renderButton(){const t=this.#Si=document.createElement("button");t.className="colorPicker";t.tabIndex="0";t.setAttribute("data-l10n-id","pdfjs-editor-colorpicker-button");t.setAttribute("aria-haspopup",!0);t.addEventListener("click",this.#Di.bind(this));const e=this.#Ti=document.createElement("span");e.className="swatch";e.style.backgroundColor=this.#Mi;t.append(e);return t}renderMainDropdown(){const t=this.#Pi=this.#Ii(s.AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR);t.setAttribute("aria-orientation","horizontal");t.setAttribute("aria-labelledby","highlightColorPickerLabel");return t}#Ii(t){const e=document.createElement("div");e.addEventListener("contextmenu",a.noContextMenu);e.className="dropdown";e.role="listbox";e.setAttribute("aria-multiselectable",!1);e.setAttribute("aria-orientation","vertical");e.setAttribute("data-l10n-id","pdfjs-editor-colorpicker-dropdown");for(const[i,s]of this.#vi.highlightColors){const n=document.createElement("button");n.tabIndex="0";n.role="option";n.setAttribute("data-color",s);n.title=i;n.setAttribute("data-l10n-id",`pdfjs-editor-colorpicker-${i}`);const a=document.createElement("span");n.append(a);a.className="swatch";a.style.backgroundColor=s;n.setAttribute("aria-selected",s===this.#Mi);n.addEventListener("click",this.#Li.bind(this,t,s));e.append(n)}e.addEventListener("keydown",this.#n);return e}#Li(t,e,i){i.stopPropagation();this.#ki.dispatch("switchannotationeditorparams",{source:this,type:t,value:e})}_colorSelectFromKeyboard(t){const e=t.target.getAttribute("data-color");e&&this.#Li(e,t)}_moveToNext(t){t.target!==this.#Si?t.target.nextSibling?.focus():this.#Pi.firstChild?.focus()}_moveToPrevious(t){t.target.previousSibling?.focus()}_moveToBeginning(){this.#Pi.firstChild?.focus()}_moveToEnd(){this.#Pi.lastChild?.focus()}#a(t){ColorPicker._keyboardManager.exec(this,t)}#Di(t){if(this.#Pi&&!this.#Pi.classList.contains("hidden")){this.hideDropdown();return}this.#Si.addEventListener("keydown",this.#n);this.#Fi=0===t.detail;if(this.#Pi){this.#Pi.classList.remove("hidden");return}const e=this.#Pi=this.#Ii(s.AnnotationEditorParamsType.HIGHLIGHT_COLOR);this.#Si.append(e)}hideDropdown(){this.#Pi?.classList.add("hidden")}_hideDropdownFromKeyboard(){if(!this.#Ri&&this.#Pi&&!this.#Pi.classList.contains("hidden")){this.hideDropdown();this.#Si.removeEventListener("keydown",this.#n);this.#Si.focus({preventScroll:!0,focusVisible:this.#Fi})}}updateColor(t){this.#Ti&&(this.#Ti.style.backgroundColor=t);if(!this.#Pi)return;const e=this.#vi.highlightColors.values();for(const i of this.#Pi.children)i.setAttribute("aria-selected",e.next().value===t)}destroy(){this.#Si?.remove();this.#Si=null;this.#Ti=null;this.#Pi?.remove();this.#Pi=null}}},115:(t,e,i)=>{i.d(e,{AnnotationEditor:()=>AnnotationEditor});var s=i(812),n=i(266),a=i(473);class AltText{#Oi="";#Bi=!1;#Ni=null;#Ui=null;#zi=null;#Hi=!1;#ji=null;static _l10nPromise=null;constructor(t){this.#ji=t}static initialize(t){AltText._l10nPromise||=t}async render(){const t=this.#Ni=document.createElement("button");t.className="altText";const e=await AltText._l10nPromise.get("pdfjs-editor-alt-text-button-label");t.textContent=e;t.setAttribute("aria-label",e);t.tabIndex="0";t.addEventListener("contextmenu",a.noContextMenu);t.addEventListener("pointerdown",(t=>t.stopPropagation()));const onClick=t=>{t.preventDefault();this.#ji._uiManager.editAltText(this.#ji)};t.addEventListener("click",onClick,{capture:!0});t.addEventListener("keydown",(e=>{if(e.target===t&&"Enter"===e.key){this.#Hi=!0;onClick(e)}}));await this.#Vi();return t}finish(){if(this.#Ni){this.#Ni.focus({focusVisible:this.#Hi});this.#Hi=!1}}get data(){return{altText:this.#Oi,decorative:this.#Bi}}set data({altText:t,decorative:e}){if(this.#Oi!==t||this.#Bi!==e){this.#Oi=t;this.#Bi=e;this.#Vi()}}toggle(t=!1){if(this.#Ni){if(!t&&this.#zi){clearTimeout(this.#zi);this.#zi=null}this.#Ni.disabled=!t}}destroy(){this.#Ni?.remove();this.#Ni=null;this.#Ui=null}async#Vi(){const t=this.#Ni;if(!t)return;if(!this.#Oi&&!this.#Bi){t.classList.remove("done");this.#Ui?.remove();return}t.classList.add("done");AltText._l10nPromise.get("pdfjs-editor-alt-text-edit-button-label").then((e=>{t.setAttribute("aria-label",e)}));let e=this.#Ui;if(!e){this.#Ui=e=document.createElement("span");e.className="tooltip";e.setAttribute("role","tooltip");const i=e.id=`alt-text-tooltip-${this.#ji.id}`;t.setAttribute("aria-describedby",i);const s=100;t.addEventListener("mouseenter",(()=>{this.#zi=setTimeout((()=>{this.#zi=null;this.#Ui.classList.add("show");this.#ji._uiManager._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",subtype:this.#ji.editorType,data:{action:"alt_text_tooltip"}}})}),s)}));t.addEventListener("mouseleave",(()=>{if(this.#zi){clearTimeout(this.#zi);this.#zi=null}this.#Ui?.classList.remove("show")}))}e.innerText=this.#Bi?await AltText._l10nPromise.get("pdfjs-editor-alt-text-decorative-tooltip"):this.#Oi;e.parentNode||t.append(e);const i=this.#ji.getImageForAltText();i?.setAttribute("aria-describedby",e.id)}}class EditorToolbar{#Wi=null;#qt=null;#ji;#qi=null;constructor(t){this.#ji=t}render(){const t=this.#Wi=document.createElement("div");t.className="editToolbar";t.addEventListener("contextmenu",a.noContextMenu);t.addEventListener("pointerdown",EditorToolbar.#Gi);const e=this.#qi=document.createElement("div");e.className="buttons";t.append(e);const i=this.#ji.toolbarPosition;if(i){const{style:e}=t,s="ltr"===this.#ji._uiManager.direction?1-i[0]:i[0];e.insetInlineEnd=100*s+"%";e.top=`calc(${100*i[1]}% + var(--editor-toolbar-vert-offset))`}this.#$i();return t}static#Gi(t){t.stopPropagation()}#Ki(t){this.#ji._focusEventsAllowed=!1;t.preventDefault();t.stopPropagation()}#Xi(t){this.#ji._focusEventsAllowed=!0;t.preventDefault();t.stopPropagation()}#Yi(t){t.addEventListener("focusin",this.#Ki.bind(this),{capture:!0});t.addEventListener("focusout",this.#Xi.bind(this),{capture:!0});t.addEventListener("contextmenu",a.noContextMenu)}hide(){this.#Wi.classList.add("hidden");this.#qt?.hideDropdown()}show(){this.#Wi.classList.remove("hidden")}#$i(){const t=document.createElement("button");t.className="delete";t.tabIndex=0;t.setAttribute("data-l10n-id",`pdfjs-editor-remove-${this.#ji.editorType}-button`);this.#Yi(t);t.addEventListener("click",(t=>{this.#ji._uiManager.delete()}));this.#qi.append(t)}get#Ji(){const t=document.createElement("div");t.className="divider";return t}addAltTextButton(t){this.#Yi(t);this.#qi.prepend(t,this.#Ji)}addColorPicker(t){this.#qt=t;const e=t.renderButton();this.#Yi(e);this.#qi.prepend(e,this.#Ji)}remove(){this.#Wi.remove();this.#qt?.destroy();this.#qt=null}}class AnnotationEditor{#Qi=null;#Oi=null;#Zi=!1;#ts=null;#es=null;#is=this.focusin.bind(this);#ss=this.focusout.bind(this);#ns=null;#as="";#rs=!1;#os=!1;#ls=!1;#hs=!1;#ds=null;_initialOptions=Object.create(null);_uiManager=null;_focusEventsAllowed=!0;_l10nPromise=null;#cs=!1;#us=AnnotationEditor._zIndex++;static _borderLineWidth=-1;static _colorManager=new s.ColorManager;static _zIndex=1;static get _resizerKeyboardManager(){const t=AnnotationEditor.prototype._resizeWithKeyboard,e=s.AnnotationEditorUIManager.TRANSLATE_SMALL,i=s.AnnotationEditorUIManager.TRANSLATE_BIG;return(0,n.shadow)(this,"_resizerKeyboardManager",new s.KeyboardManager([[["ArrowLeft","mac+ArrowLeft"],t,{args:[-e,0]}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],t,{args:[-i,0]}],[["ArrowRight","mac+ArrowRight"],t,{args:[e,0]}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],t,{args:[i,0]}],[["ArrowUp","mac+ArrowUp"],t,{args:[0,-e]}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],t,{args:[0,-i]}],[["ArrowDown","mac+ArrowDown"],t,{args:[0,e]}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],t,{args:[0,i]}],[["Escape","mac+Escape"],AnnotationEditor.prototype._stopResizingWithKeyboard]]))}constructor(t){this.constructor===AnnotationEditor&&(0,n.unreachable)("Cannot initialize AnnotationEditor.");this.parent=t.parent;this.id=t.id;this.width=this.height=null;this.pageIndex=t.parent.pageIndex;this.name=t.name;this.div=null;this._uiManager=t.uiManager;this.annotationElementId=null;this._willKeepAspectRatio=!1;this._initialOptions.isCentered=t.isCentered;this._structTreeParentId=null;const{rotation:e,rawDims:{pageWidth:i,pageHeight:s,pageX:a,pageY:r}}=this.parent.viewport;this.rotation=e;this.pageRotation=(360+e-this._uiManager.viewParameters.rotation)%360;this.pageDimensions=[i,s];this.pageTranslation=[a,r];const[o,l]=this.parentDimensions;this.x=t.x/o;this.y=t.y/l;this.isAttachedToDOM=!1;this.deleted=!1}get editorType(){return Object.getPrototypeOf(this).constructor._type}static get _defaultLineColor(){return(0,n.shadow)(this,"_defaultLineColor",this._colorManager.getHexCode("CanvasText"))}static deleteAnnotationElement(t){const e=new FakeEditor({id:t.parent.getNextId(),parent:t.parent,uiManager:t._uiManager});e.annotationElementId=t.annotationElementId;e.deleted=!0;e._uiManager.addToAnnotationStorage(e)}static initialize(t,e=null){AnnotationEditor._l10nPromise||=new Map(["pdfjs-editor-alt-text-button-label","pdfjs-editor-alt-text-edit-button-label","pdfjs-editor-alt-text-decorative-tooltip","pdfjs-editor-resizer-label-topLeft","pdfjs-editor-resizer-label-topMiddle","pdfjs-editor-resizer-label-topRight","pdfjs-editor-resizer-label-middleRight","pdfjs-editor-resizer-label-bottomRight","pdfjs-editor-resizer-label-bottomMiddle","pdfjs-editor-resizer-label-bottomLeft","pdfjs-editor-resizer-label-middleLeft"].map((e=>[e,t.get(e.replaceAll(/([A-Z])/g,(t=>`-${t.toLowerCase()}`)))])));if(e?.strings)for(const i of e.strings)AnnotationEditor._l10nPromise.set(i,t.get(i));if(-1!==AnnotationEditor._borderLineWidth)return;const i=getComputedStyle(document.documentElement);AnnotationEditor._borderLineWidth=parseFloat(i.getPropertyValue("--outline-width"))||0}static updateDefaultParams(t,e){}static get defaultPropertiesToUpdate(){return[]}static isHandlingMimeForPasting(t){return!1}static paste(t,e){(0,n.unreachable)("Not implemented")}get propertiesToUpdate(){return[]}get _isDraggable(){return this.#cs}set _isDraggable(t){this.#cs=t;this.div?.classList.toggle("draggable",t)}get isEnterHandled(){return!0}center(){const[t,e]=this.pageDimensions;switch(this.parentRotation){case 90:this.x-=this.height*e/(2*t);this.y+=this.width*t/(2*e);break;case 180:this.x+=this.width/2;this.y+=this.height/2;break;case 270:this.x+=this.height*e/(2*t);this.y-=this.width*t/(2*e);break;default:this.x-=this.width/2;this.y-=this.height/2}this.fixAndSetPosition()}addCommands(t){this._uiManager.addCommands(t)}get currentLayer(){return this._uiManager.currentLayer}setInBackground(){this.div.style.zIndex=0}setInForeground(){this.div.style.zIndex=this.#us}setParent(t){if(null!==t){this.pageIndex=t.pageIndex;this.pageDimensions=t.pageDimensions}else this.#ps();this.parent=t}focusin(t){this._focusEventsAllowed&&(this.#rs?this.#rs=!1:this.parent.setSelected(this))}focusout(t){if(!this._focusEventsAllowed)return;if(!this.isAttachedToDOM)return;const e=t.relatedTarget;if(!e?.closest(`#${this.id}`)){t.preventDefault();this.parent?.isMultipleSelection||this.commitOrRemove()}}commitOrRemove(){this.isEmpty()?this.remove():this.commit()}commit(){this.addToAnnotationStorage()}addToAnnotationStorage(){this._uiManager.addToAnnotationStorage(this)}setAt(t,e,i,s){const[n,a]=this.parentDimensions;[i,s]=this.screenToPageTranslation(i,s);this.x=(t+i)/n;this.y=(e+s)/a;this.fixAndSetPosition()}#gs([t,e],i,s){[i,s]=this.screenToPageTranslation(i,s);this.x+=i/t;this.y+=s/e;this.fixAndSetPosition()}translate(t,e){this.#gs(this.parentDimensions,t,e)}translateInPage(t,e){this.#gs(this.pageDimensions,t,e);this.div.scrollIntoView({block:"nearest"})}drag(t,e){const[i,s]=this.parentDimensions;this.x+=t/i;this.y+=e/s;if(this.parent&&(this.x<0||this.x>1||this.y<0||this.y>1)){const{x:t,y:e}=this.div.getBoundingClientRect();if(this.parent.findNewParent(this,t,e)){this.x-=Math.floor(this.x);this.y-=Math.floor(this.y)}}let{x:n,y:a}=this;const[r,o]=this.#ms();n+=r;a+=o;this.div.style.left=`${(100*n).toFixed(2)}%`;this.div.style.top=`${(100*a).toFixed(2)}%`;this.div.scrollIntoView({block:"nearest"})}#ms(){const[t,e]=this.parentDimensions,{_borderLineWidth:i}=AnnotationEditor,s=i/t,n=i/e;switch(this.rotation){case 90:return[-s,n];case 180:return[s,n];case 270:return[s,-n];default:return[-s,-n]}}fixAndSetPosition(t=this.rotation){const[e,i]=this.pageDimensions;let{x:s,y:n,width:a,height:r}=this;a*=e;r*=i;s*=e;n*=i;switch(t){case 0:s=Math.max(0,Math.min(e-a,s));n=Math.max(0,Math.min(i-r,n));break;case 90:s=Math.max(0,Math.min(e-r,s));n=Math.min(i,Math.max(a,n));break;case 180:s=Math.min(e,Math.max(a,s));n=Math.min(i,Math.max(r,n));break;case 270:s=Math.min(e,Math.max(r,s));n=Math.max(0,Math.min(i-a,n))}this.x=s/=e;this.y=n/=i;const[o,l]=this.#ms();s+=o;n+=l;const{style:h}=this.div;h.left=`${(100*s).toFixed(2)}%`;h.top=`${(100*n).toFixed(2)}%`;this.moveInDOM()}static#fs(t,e,i){switch(i){case 90:return[e,-t];case 180:return[-t,-e];case 270:return[-e,t];default:return[t,e]}}screenToPageTranslation(t,e){return AnnotationEditor.#fs(t,e,this.parentRotation)}pageTranslationToScreen(t,e){return AnnotationEditor.#fs(t,e,360-this.parentRotation)}#bs(t){switch(t){case 90:{const[t,e]=this.pageDimensions;return[0,-t/e,e/t,0]}case 180:return[-1,0,0,-1];case 270:{const[t,e]=this.pageDimensions;return[0,t/e,-e/t,0]}default:return[1,0,0,1]}}get parentScale(){return this._uiManager.viewParameters.realScale}get parentRotation(){return(this._uiManager.viewParameters.rotation+this.pageRotation)%360}get parentDimensions(){const{parentScale:t,pageDimensions:[e,i]}=this,s=e*t,a=i*t;return n.FeatureTest.isCSSRoundSupported?[Math.round(s),Math.round(a)]:[s,a]}setDims(t,e){const[i,s]=this.parentDimensions;this.div.style.width=`${(100*t/i).toFixed(2)}%`;this.#Zi||(this.div.style.height=`${(100*e/s).toFixed(2)}%`)}fixDims(){const{style:t}=this.div,{height:e,width:i}=t,s=i.endsWith("%"),n=!this.#Zi&&e.endsWith("%");if(s&&n)return;const[a,r]=this.parentDimensions;s||(t.width=`${(100*parseFloat(i)/a).toFixed(2)}%`);this.#Zi||n||(t.height=`${(100*parseFloat(e)/r).toFixed(2)}%`)}getInitialTranslation(){return[0,0]}#As(){if(this.#ts)return;this.#ts=document.createElement("div");this.#ts.classList.add("resizers");const t=this._willKeepAspectRatio?["topLeft","topRight","bottomRight","bottomLeft"]:["topLeft","topMiddle","topRight","middleRight","bottomRight","bottomMiddle","bottomLeft","middleLeft"];for(const e of t){const t=document.createElement("div");this.#ts.append(t);t.classList.add("resizer",e);t.setAttribute("data-resizer-name",e);t.addEventListener("pointerdown",this.#vs.bind(this,e));t.addEventListener("contextmenu",a.noContextMenu);t.tabIndex=-1}this.div.prepend(this.#ts)}#vs(t,e){e.preventDefault();const{isMac:i}=n.FeatureTest.platform;if(0!==e.button||e.ctrlKey&&i)return;this.#Oi?.toggle(!1);const s=this.#ys.bind(this,t),a=this._isDraggable;this._isDraggable=!1;const r={passive:!0,capture:!0};this.parent.togglePointerEvents(!1);window.addEventListener("pointermove",s,r);const o=this.x,l=this.y,h=this.width,d=this.height,c=this.parent.div.style.cursor,u=this.div.style.cursor;this.div.style.cursor=this.parent.div.style.cursor=window.getComputedStyle(e.target).cursor;const pointerUpCallback=()=>{this.parent.togglePointerEvents(!0);this.#Oi?.toggle(!0);this._isDraggable=a;window.removeEventListener("pointerup",pointerUpCallback);window.removeEventListener("blur",pointerUpCallback);window.removeEventListener("pointermove",s,r);this.parent.div.style.cursor=c;this.div.style.cursor=u;this.#Es(o,l,h,d)};window.addEventListener("pointerup",pointerUpCallback);window.addEventListener("blur",pointerUpCallback)}#Es(t,e,i,s){const n=this.x,a=this.y,r=this.width,o=this.height;n===t&&a===e&&r===i&&o===s||this.addCommands({cmd:()=>{this.width=r;this.height=o;this.x=n;this.y=a;const[t,e]=this.parentDimensions;this.setDims(t*r,e*o);this.fixAndSetPosition()},undo:()=>{this.width=i;this.height=s;this.x=t;this.y=e;const[n,a]=this.parentDimensions;this.setDims(n*i,a*s);this.fixAndSetPosition()},mustExec:!0})}#ys(t,e){const[i,s]=this.parentDimensions,n=this.x,a=this.y,r=this.width,o=this.height,l=AnnotationEditor.MIN_SIZE/i,h=AnnotationEditor.MIN_SIZE/s,round=t=>Math.round(1e4*t)/1e4,d=this.#bs(this.rotation),transf=(t,e)=>[d[0]*t+d[2]*e,d[1]*t+d[3]*e],c=this.#bs(360-this.rotation);let u,p,g=!1,m=!1;switch(t){case"topLeft":g=!0;u=(t,e)=>[0,0];p=(t,e)=>[t,e];break;case"topMiddle":u=(t,e)=>[t/2,0];p=(t,e)=>[t/2,e];break;case"topRight":g=!0;u=(t,e)=>[t,0];p=(t,e)=>[0,e];break;case"middleRight":m=!0;u=(t,e)=>[t,e/2];p=(t,e)=>[0,e/2];break;case"bottomRight":g=!0;u=(t,e)=>[t,e];p=(t,e)=>[0,0];break;case"bottomMiddle":u=(t,e)=>[t/2,e];p=(t,e)=>[t/2,0];break;case"bottomLeft":g=!0;u=(t,e)=>[0,e];p=(t,e)=>[t,0];break;case"middleLeft":m=!0;u=(t,e)=>[0,e/2];p=(t,e)=>[t,e/2]}const f=u(r,o),b=p(r,o);let A=transf(...b);const v=round(n+A[0]),y=round(a+A[1]);let E=1,_=1,[w,x]=this.screenToPageTranslation(e.movementX,e.movementY);[w,x]=(C=w/i,S=x/s,[c[0]*C+c[2]*S,c[1]*C+c[3]*S]);var C,S;if(g){const t=Math.hypot(r,o);E=_=Math.max(Math.min(Math.hypot(b[0]-f[0]-w,b[1]-f[1]-x)/t,1/r,1/o),l/r,h/o)}else m?E=Math.max(l,Math.min(1,Math.abs(b[0]-f[0]-w)))/r:_=Math.max(h,Math.min(1,Math.abs(b[1]-f[1]-x)))/o;const T=round(r*E),M=round(o*_);A=transf(...p(T,M));const P=v-A[0],F=y-A[1];this.width=T;this.height=M;this.x=P;this.y=F;this.setDims(i*T,s*M);this.fixAndSetPosition()}altTextFinish(){this.#Oi?.finish()}async addEditToolbar(){if(this.#ns||this.#ls)return this.#ns;this.#ns=new EditorToolbar(this);this.div.append(this.#ns.render());this.#Oi&&this.#ns.addAltTextButton(await this.#Oi.render());return this.#ns}removeEditToolbar(){if(this.#ns){this.#ns.remove();this.#ns=null;this.#Oi?.destroy()}}getClientDimensions(){return this.div.getBoundingClientRect()}async addAltTextButton(){if(!this.#Oi){AltText.initialize(AnnotationEditor._l10nPromise);this.#Oi=new AltText(this);await this.addEditToolbar()}}get altTextData(){return this.#Oi?.data}set altTextData(t){this.#Oi&&(this.#Oi.data=t)}render(){this.div=document.createElement("div");this.div.setAttribute("data-editor-rotation",(360-this.rotation)%360);this.div.className=this.name;this.div.setAttribute("id",this.id);this.div.setAttribute("tabIndex",0);this.setInForeground();this.div.addEventListener("focusin",this.#is);this.div.addEventListener("focusout",this.#ss);const[t,e]=this.parentDimensions;if(this.parentRotation%180!=0){this.div.style.maxWidth=`${(100*e/t).toFixed(2)}%`;this.div.style.maxHeight=`${(100*t/e).toFixed(2)}%`}const[i,n]=this.getInitialTranslation();this.translate(i,n);(0,s.bindEvents)(this,this.div,["pointerdown"]);return this.div}pointerdown(t){const{isMac:e}=n.FeatureTest.platform;if(0!==t.button||t.ctrlKey&&e)t.preventDefault();else{this.#rs=!0;this._isDraggable?this.#_s(t):this.#ws(t)}}#ws(t){const{isMac:e}=n.FeatureTest.platform;t.ctrlKey&&!e||t.shiftKey||t.metaKey&&e?this.parent.toggleSelected(this):this.parent.setSelected(this)}#_s(t){const e=this._uiManager.isSelected(this);this._uiManager.setUpDragSession();let i,s;if(e){i={passive:!0,capture:!0};s=t=>{const[e,i]=this.screenToPageTranslation(t.movementX,t.movementY);this._uiManager.dragSelectedEditors(e,i)};window.addEventListener("pointermove",s,i)}const pointerUpCallback=()=>{window.removeEventListener("pointerup",pointerUpCallback);window.removeEventListener("blur",pointerUpCallback);e&&window.removeEventListener("pointermove",s,i);this.#rs=!1;this._uiManager.endDragSession()||this.#ws(t)};window.addEventListener("pointerup",pointerUpCallback);window.addEventListener("blur",pointerUpCallback)}moveInDOM(){this.#ds&&clearTimeout(this.#ds);this.#ds=setTimeout((()=>{this.#ds=null;this.parent?.moveEditorInDOM(this)}),0)}_setParentAndPosition(t,e,i){t.changeParent(this);this.x=e;this.y=i;this.fixAndSetPosition()}getRect(t,e,i=this.rotation){const s=this.parentScale,[n,a]=this.pageDimensions,[r,o]=this.pageTranslation,l=t/s,h=e/s,d=this.x*n,c=this.y*a,u=this.width*n,p=this.height*a;switch(i){case 0:return[d+l+r,a-c-h-p+o,d+l+u+r,a-c-h+o];case 90:return[d+h+r,a-c+l+o,d+h+p+r,a-c+l+u+o];case 180:return[d-l-u+r,a-c+h+o,d-l+r,a-c+h+p+o];case 270:return[d-h-p+r,a-c-l-u+o,d-h+r,a-c-l+o];default:throw new Error("Invalid rotation")}}getRectInCurrentCoords(t,e){const[i,s,n,a]=t,r=n-i,o=a-s;switch(this.rotation){case 0:return[i,e-a,r,o];case 90:return[i,e-s,o,r];case 180:return[n,e-s,r,o];case 270:return[n,e-a,o,r];default:throw new Error("Invalid rotation")}}onceAdded(){}isEmpty(){return!1}enableEditMode(){this.#ls=!0}disableEditMode(){this.#ls=!1}isInEditMode(){return this.#ls}shouldGetKeyboardEvents(){return this.#hs}needsToBeRebuilt(){return this.div&&!this.isAttachedToDOM}rebuild(){this.div?.addEventListener("focusin",this.#is);this.div?.addEventListener("focusout",this.#ss)}rotate(t){}serialize(t=!1,e=null){(0,n.unreachable)("An editor must be serializable")}static deserialize(t,e,i){const s=new this.prototype.constructor({parent:e,id:e.getNextId(),uiManager:i});s.rotation=t.rotation;const[n,a]=s.pageDimensions,[r,o,l,h]=s.getRectInCurrentCoords(t.rect,a);s.x=r/n;s.y=o/a;s.width=l/n;s.height=h/a;return s}remove(){this.div.removeEventListener("focusin",this.#is);this.div.removeEventListener("focusout",this.#ss);this.isEmpty()||this.commit();this.parent?this.parent.remove(this):this._uiManager.removeEditor(this);if(this.#ds){clearTimeout(this.#ds);this.#ds=null}this.#ps();this.removeEditToolbar()}get isResizable(){return!1}makeResizable(){if(this.isResizable){this.#As();this.#ts.classList.remove("hidden");(0,s.bindEvents)(this,this.div,["keydown"])}}get toolbarPosition(){return null}keydown(t){if(!this.isResizable||t.target!==this.div||"Enter"!==t.key)return;this._uiManager.setSelected(this);this.#es={savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height};const e=this.#ts.children;if(!this.#Qi){this.#Qi=Array.from(e);const t=this.#xs.bind(this),i=this.#Cs.bind(this);for(const e of this.#Qi){const s=e.getAttribute("data-resizer-name");e.setAttribute("role","spinbutton");e.addEventListener("keydown",t);e.addEventListener("blur",i);e.addEventListener("focus",this.#Ss.bind(this,s));AnnotationEditor._l10nPromise.get(`pdfjs-editor-resizer-label-${s}`).then((t=>e.setAttribute("aria-label",t)))}}const i=this.#Qi[0];let s=0;for(const t of e){if(t===i)break;s++}const n=(360-this.rotation+this.parentRotation)%360/90*(this.#Qi.length/4);if(n!==s){if(ns)for(let t=0;ti.setAttribute("aria-label",t)))}}this.#Ts(0);this.#hs=!0;this.#ts.firstChild.focus({focusVisible:!0});t.preventDefault();t.stopImmediatePropagation()}#xs(t){AnnotationEditor._resizerKeyboardManager.exec(this,t)}#Cs(t){this.#hs&&t.relatedTarget?.parentNode!==this.#ts&&this.#ps()}#Ss(t){this.#as=this.#hs?t:""}#Ts(t){if(this.#Qi)for(const e of this.#Qi)e.tabIndex=t}_resizeWithKeyboard(t,e){this.#hs&&this.#ys(this.#as,{movementX:t,movementY:e})}#ps(){this.#hs=!1;this.#Ts(-1);if(this.#es){const{savedX:t,savedY:e,savedWidth:i,savedHeight:s}=this.#es;this.#Es(t,e,i,s);this.#es=null}}_stopResizingWithKeyboard(){this.#ps();this.div.focus()}select(){this.makeResizable();this.div?.classList.add("selectedEditor");this.#ns?this.#ns?.show():this.addEditToolbar().then((()=>{this.div?.classList.contains("selectedEditor")&&this.#ns?.show()}))}unselect(){this.#ts?.classList.add("hidden");this.div?.classList.remove("selectedEditor");this.div?.contains(document.activeElement)&&this._uiManager.currentLayer.div.focus();this.#ns?.hide()}updateParams(t,e){}disableEditing(){}enableEditing(){}enterInEditMode(){}getImageForAltText(){return null}get contentDiv(){return this.div}get isEditing(){return this.#os}set isEditing(t){this.#os=t;if(this.parent)if(t){this.parent.setSelected(this);this.parent.setActiveEditor(this)}else this.parent.setActiveEditor(null)}setAspectRatio(t,e){this.#Zi=!0;const i=t/e,{style:s}=this.div;s.aspectRatio=i;s.height="auto"}static get MIN_SIZE(){return 16}static canCreateNewEmptyEditor(){return!0}}class FakeEditor extends AnnotationEditor{constructor(t){super(t);this.annotationElementId=t.annotationElementId;this.deleted=!0}serialize(){return{id:this.annotationElementId,deleted:!0,pageIndex:this.pageIndex}}}},405:(t,e,i)=>{i.d(e,{Outliner:()=>Outliner});class Outliner{#Ms;#Ps=[];#Fs=[];constructor(t,e=0,i=0,s=!0){let n=1/0,a=-1/0,r=1/0,o=-1/0;const l=10**-4;for(const{x:i,y:s,width:h,height:d}of t){const t=Math.floor((i-e)/l)*l,c=Math.ceil((i+h+e)/l)*l,u=Math.floor((s-e)/l)*l,p=Math.ceil((s+d+e)/l)*l,g=[t,u,p,!0],m=[c,u,p,!1];this.#Ps.push(g,m);n=Math.min(n,t);a=Math.max(a,c);r=Math.min(r,u);o=Math.max(o,p)}const h=a-n+2*i,d=o-r+2*i,c=n-i,u=r-i,p=this.#Ps.at(s?-1:-2),g=[p[0],p[2]];for(const t of this.#Ps){const[e,i,s]=t;t[0]=(e-c)/h;t[1]=(i-u)/d;t[2]=(s-u)/d}this.#Ms={x:c,y:u,width:h,height:d,lastPoint:g}}getOutlines(){this.#Ps.sort(((t,e)=>t[0]-e[0]||t[1]-e[1]||t[2]-e[2]));const t=[];for(const e of this.#Ps)if(e[3]){t.push(...this.#Rs(e));this.#ks(e)}else{this.#Ds(e);t.push(...this.#Rs(e))}return this.#Is(t)}#Is(t){const e=[],i=new Set;for(const i of t){const[t,s,n]=i;e.push([t,s,i],[t,n,i])}e.sort(((t,e)=>t[1]-e[1]||t[0]-e[0]));for(let t=0,s=e.length;t0;){const t=i.values().next().value;let[e,a,r,o,l]=t;i.delete(t);let h=e,d=a;n=[e,r];s.push(n);for(;;){let t;if(i.has(o))t=o;else{if(!i.has(l))break;t=l}i.delete(t);[e,a,r,o,l]=t;if(h!==e){n.push(h,d,e,d===a?a:r);h=e}d=d===a?r:a}n.push(h,d)}return{outlines:s,box:this.#Ms}}#Ls(t){const e=this.#Fs;let i=0,s=e.length-1;for(;i<=s;){const n=i+s>>1,a=e[n][0];if(a===t)return n;a=0;s--){const[i,n]=this.#Fs[s];if(i!==t)break;if(i===t&&n===e){this.#Fs.splice(s,1);return}}}#Rs(t){const[e,i,s]=t,n=[[e,i,s]],a=this.#Ls(s);for(let t=0;t=i)if(o>s)n[t][1]=s;else{if(1===a)return[];n.splice(t,1);t--;a--}else{n[t][2]=i;o>s&&n.push([e,s,o])}}}return n}}},812:(t,e,i)=>{i.d(e,{AnnotationEditorUIManager:()=>AnnotationEditorUIManager,ColorManager:()=>ColorManager,KeyboardManager:()=>KeyboardManager,bindEvents:()=>bindEvents,opacityToHex:()=>opacityToHex});var s=i(266),n=i(473);function bindEvents(t,e,i){for(const s of i)e.addEventListener(s,t[s].bind(t))}function opacityToHex(t){return Math.round(Math.min(255,Math.max(1,255*t))).toString(16).padStart(2,"0")}class IdManager{#ft=0;getId(){return`${s.AnnotationEditorPrefix}${this.#ft++}`}}class ImageManager{#Os=(0,s.getUuid)();#ft=0;#bt=null;static get _isSVGFittingCanvas(){const t=new OffscreenCanvas(1,3).getContext("2d"),e=new Image;e.src='data:image/svg+xml;charset=UTF-8,';const i=e.decode().then((()=>{t.drawImage(e,0,0,1,1,0,0,1,3);return 0===new Uint32Array(t.getImageData(0,0,1,1).data.buffer)[0]}));return(0,s.shadow)(this,"_isSVGFittingCanvas",i)}async#Bs(t,e){this.#bt||=new Map;let i=this.#bt.get(t);if(null===i)return null;if(i?.bitmap){i.refCounter+=1;return i}try{i||={bitmap:null,id:`image_${this.#Os}_${this.#ft++}`,refCounter:0,isSvg:!1};let t;if("string"==typeof e){i.url=e;t=await(0,n.fetchData)(e,"blob")}else t=i.file=e;if("image/svg+xml"===t.type){const e=ImageManager._isSVGFittingCanvas,s=new FileReader,n=new Image,a=new Promise(((t,a)=>{n.onload=()=>{i.bitmap=n;i.isSvg=!0;t()};s.onload=async()=>{const t=i.svgUrl=s.result;n.src=await e?`${t}#svgView(preserveAspectRatio(none))`:t};n.onerror=s.onerror=a}));s.readAsDataURL(t);await a}else i.bitmap=await createImageBitmap(t);i.refCounter=1}catch(t){console.error(t);i=null}this.#bt.set(t,i);i&&this.#bt.set(i.id,i);return i}async getFromFile(t){const{lastModified:e,name:i,size:s,type:n}=t;return this.#Bs(`${e}_${i}_${s}_${n}`,t)}async getFromUrl(t){return this.#Bs(t,t)}async getFromId(t){this.#bt||=new Map;const e=this.#bt.get(t);if(!e)return null;if(e.bitmap){e.refCounter+=1;return e}return e.file?this.getFromFile(e.file):this.getFromUrl(e.url)}getSvgUrl(t){const e=this.#bt.get(t);return e?.isSvg?e.svgUrl:null}deleteId(t){this.#bt||=new Map;const e=this.#bt.get(t);if(e){e.refCounter-=1;0===e.refCounter&&(e.bitmap=null)}}isValidId(t){return t.startsWith(`image_${this.#Os}_`)}}class CommandManager{#Ns=[];#Us=!1;#zs;#Hs=-1;constructor(t=128){this.#zs=t}add({cmd:t,undo:e,mustExec:i,type:s=NaN,overwriteIfSameType:n=!1,keepUndo:a=!1}){i&&t();if(this.#Us)return;const r={cmd:t,undo:e,type:s};if(-1===this.#Hs){this.#Ns.length>0&&(this.#Ns.length=0);this.#Hs=0;this.#Ns.push(r);return}if(n&&this.#Ns[this.#Hs].type===s){a&&(r.undo=this.#Ns[this.#Hs].undo);this.#Ns[this.#Hs]=r;return}const o=this.#Hs+1;if(o===this.#zs)this.#Ns.splice(0,1);else{this.#Hs=o;ot===e[i])))return ColorManager._colorsMapping.get(t);return e}getHexCode(t){const e=this._colors.get(t);return e?s.Util.makeHexColor(...e):t}}class AnnotationEditorUIManager{#Vs=null;#Ws=new Map;#qs=new Map;#Gs=null;#$s=null;#Ks=new CommandManager;#Xs=0;#Ys=new Set;#Js=null;#yi=null;#Qs=new Set;#Zs=null;#tn=null;#en=null;#in=new IdManager;#sn=!1;#nn=!1;#an=null;#rn=null;#on=s.AnnotationEditorType.NONE;#ln=new Set;#hn=null;#dn=this.blur.bind(this);#cn=this.focus.bind(this);#un=this.copy.bind(this);#pn=this.cut.bind(this);#gn=this.paste.bind(this);#mn=this.keydown.bind(this);#fn=this.onEditingAction.bind(this);#bn=this.onPageChanging.bind(this);#An=this.onScaleChanging.bind(this);#vn=this.onRotationChanging.bind(this);#yn={isEditing:!1,isEmpty:!0,hasSomethingToUndo:!1,hasSomethingToRedo:!1,hasSelectedEditor:!1};#En=[0,0];#_n=null;#p=null;#wn=null;static TRANSLATE_SMALL=1;static TRANSLATE_BIG=10;static get _keyboardManager(){const t=AnnotationEditorUIManager.prototype,arrowChecker=t=>t.#p.contains(document.activeElement)&&"BUTTON"!==document.activeElement.tagName&&t.hasSomethingToControl(),textInputChecker=(t,{target:e})=>{if(e instanceof HTMLInputElement){const{type:t}=e;return"text"!==t&&"number"!==t}return!0},e=this.TRANSLATE_SMALL,i=this.TRANSLATE_BIG;return(0,s.shadow)(this,"_keyboardManager",new KeyboardManager([[["ctrl+a","mac+meta+a"],t.selectAll,{checker:textInputChecker}],[["ctrl+z","mac+meta+z"],t.undo,{checker:textInputChecker}],[["ctrl+y","ctrl+shift+z","mac+meta+shift+z","ctrl+shift+Z","mac+meta+shift+Z"],t.redo,{checker:textInputChecker}],[["Backspace","alt+Backspace","ctrl+Backspace","shift+Backspace","mac+Backspace","mac+alt+Backspace","mac+ctrl+Backspace","Delete","ctrl+Delete","shift+Delete","mac+Delete"],t.delete,{checker:textInputChecker}],[["Enter","mac+Enter"],t.addNewEditorFromKeyboard,{checker:(t,{target:e})=>!(e instanceof HTMLButtonElement)&&t.#p.contains(e)&&!t.isEnterHandled}],[[" ","mac+ "],t.addNewEditorFromKeyboard,{checker:t=>t.#p.contains(document.activeElement)}],[["Escape","mac+Escape"],t.unselectAll],[["ArrowLeft","mac+ArrowLeft"],t.translateSelectedEditors,{args:[-e,0],checker:arrowChecker}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],t.translateSelectedEditors,{args:[-i,0],checker:arrowChecker}],[["ArrowRight","mac+ArrowRight"],t.translateSelectedEditors,{args:[e,0],checker:arrowChecker}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],t.translateSelectedEditors,{args:[i,0],checker:arrowChecker}],[["ArrowUp","mac+ArrowUp"],t.translateSelectedEditors,{args:[0,-e],checker:arrowChecker}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],t.translateSelectedEditors,{args:[0,-i],checker:arrowChecker}],[["ArrowDown","mac+ArrowDown"],t.translateSelectedEditors,{args:[0,e],checker:arrowChecker}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],t.translateSelectedEditors,{args:[0,i],checker:arrowChecker}]]))}constructor(t,e,i,s,a,r,o){this.#p=t;this.#wn=e;this.#Gs=i;this._eventBus=s;this._eventBus._on("editingaction",this.#fn);this._eventBus._on("pagechanging",this.#bn);this._eventBus._on("scalechanging",this.#An);this._eventBus._on("rotationchanging",this.#vn);this.#$s=a.annotationStorage;this.#Zs=a.filterFactory;this.#hn=r;this.#en=o||null;this.viewParameters={realScale:n.PixelsPerInch.PDF_TO_CSS_UNITS,rotation:0}}destroy(){this.#xn();this.#Cn();this._eventBus._off("editingaction",this.#fn);this._eventBus._off("pagechanging",this.#bn);this._eventBus._off("scalechanging",this.#An);this._eventBus._off("rotationchanging",this.#vn);for(const t of this.#qs.values())t.destroy();this.#qs.clear();this.#Ws.clear();this.#Qs.clear();this.#Vs=null;this.#ln.clear();this.#Ks.destroy();this.#Gs?.destroy();if(this.#tn){clearTimeout(this.#tn);this.#tn=null}if(this.#_n){clearTimeout(this.#_n);this.#_n=null}}get hcmFilter(){return(0,s.shadow)(this,"hcmFilter",this.#hn?this.#Zs.addHCMFilter(this.#hn.foreground,this.#hn.background):"none")}get direction(){return(0,s.shadow)(this,"direction",getComputedStyle(this.#p).direction)}get highlightColors(){return(0,s.shadow)(this,"highlightColors",this.#en?new Map(this.#en.split(",").map((t=>t.split("=").map((t=>t.trim()))))):null)}setMainHighlightColorPicker(t){this.#rn=t}editAltText(t){this.#Gs?.editAltText(this,t)}onPageChanging({pageNumber:t}){this.#Xs=t-1}focusMainContainer(){this.#p.focus()}findParent(t,e){for(const i of this.#qs.values()){const{x:s,y:n,width:a,height:r}=i.div.getBoundingClientRect();if(t>=s&&t<=s+a&&e>=n&&e<=n+r)return i}return null}disableUserSelect(t=!1){this.#wn.classList.toggle("noUserSelect",t)}addShouldRescale(t){this.#Qs.add(t)}removeShouldRescale(t){this.#Qs.delete(t)}onScaleChanging({scale:t}){this.commitOrRemove();this.viewParameters.realScale=t*n.PixelsPerInch.PDF_TO_CSS_UNITS;for(const t of this.#Qs)t.onScaleChanging()}onRotationChanging({pagesRotation:t}){this.commitOrRemove();this.viewParameters.rotation=t}addToAnnotationStorage(t){t.isEmpty()||!this.#$s||this.#$s.has(t.id)||this.#$s.setValue(t.id,t)}#Sn(){window.addEventListener("focus",this.#cn);window.addEventListener("blur",this.#dn)}#Cn(){window.removeEventListener("focus",this.#cn);window.removeEventListener("blur",this.#dn)}blur(){if(!this.hasSelection)return;const{activeElement:t}=document;for(const e of this.#ln)if(e.div.contains(t)){this.#an=[e,t];e._focusEventsAllowed=!1;break}}focus(){if(!this.#an)return;const[t,e]=this.#an;this.#an=null;e.addEventListener("focusin",(()=>{t._focusEventsAllowed=!0}),{once:!0});e.focus()}#Tn(){window.addEventListener("keydown",this.#mn)}#xn(){window.removeEventListener("keydown",this.#mn)}#Mn(){document.addEventListener("copy",this.#un);document.addEventListener("cut",this.#pn);document.addEventListener("paste",this.#gn)}#Pn(){document.removeEventListener("copy",this.#un);document.removeEventListener("cut",this.#pn);document.removeEventListener("paste",this.#gn)}addEditListeners(){this.#Tn();this.#Mn()}removeEditListeners(){this.#xn();this.#Pn()}copy(t){t.preventDefault();this.#Vs?.commitOrRemove();if(!this.hasSelection)return;const e=[];for(const t of this.#ln){const i=t.serialize(!0);i&&e.push(i)}0!==e.length&&t.clipboardData.setData("application/pdfjs",JSON.stringify(e))}cut(t){this.copy(t);this.delete()}paste(t){t.preventDefault();const{clipboardData:e}=t;for(const t of e.items)for(const e of this.#yi)if(e.isHandlingMimeForPasting(t.type)){e.paste(t,this.currentLayer);return}let i=e.getData("application/pdfjs");if(!i)return;try{i=JSON.parse(i)}catch(t){(0,s.warn)(`paste: "${t.message}".`);return}if(!Array.isArray(i))return;this.unselectAll();const n=this.currentLayer;try{const t=[];for(const e of i){const i=n.deserialize(e);if(!i)return;t.push(i)}const cmd=()=>{for(const e of t)this.#Fn(e);this.#Rn(t)},undo=()=>{for(const e of t)e.remove()};this.addCommands({cmd:cmd,undo:undo,mustExec:!0})}catch(t){(0,s.warn)(`paste: "${t.message}".`)}}keydown(t){this.isEditorHandlingKeyboard||AnnotationEditorUIManager._keyboardManager.exec(this,t)}onEditingAction(t){["undo","redo","delete","selectAll"].includes(t.name)&&this[t.name]()}#kn(t){Object.entries(t).some((([t,e])=>this.#yn[t]!==e))&&this._eventBus.dispatch("annotationeditorstateschanged",{source:this,details:Object.assign(this.#yn,t)})}#Dn(t){this._eventBus.dispatch("annotationeditorparamschanged",{source:this,details:t})}setEditingState(t){if(t){this.#Sn();this.#Tn();this.#Mn();this.#kn({isEditing:this.#on!==s.AnnotationEditorType.NONE,isEmpty:this.#In(),hasSomethingToUndo:this.#Ks.hasSomethingToUndo(),hasSomethingToRedo:this.#Ks.hasSomethingToRedo(),hasSelectedEditor:!1})}else{this.#Cn();this.#xn();this.#Pn();this.#kn({isEditing:!1});this.disableUserSelect(!1)}}registerEditorTypes(t){if(!this.#yi){this.#yi=t;for(const t of this.#yi)this.#Dn(t.defaultPropertiesToUpdate)}}getId(){return this.#in.getId()}get currentLayer(){return this.#qs.get(this.#Xs)}getLayer(t){return this.#qs.get(t)}get currentPageIndex(){return this.#Xs}addLayer(t){this.#qs.set(t.pageIndex,t);this.#sn?t.enable():t.disable()}removeLayer(t){this.#qs.delete(t.pageIndex)}updateMode(t,e=null,i=!1){if(this.#on!==t){this.#on=t;if(t!==s.AnnotationEditorType.NONE){this.setEditingState(!0);this.#Ln();this.unselectAll();for(const e of this.#qs.values())e.updateMode(t);if(e||!i){if(e)for(const t of this.#Ws.values())if(t.annotationElementId===e){this.setSelected(t);t.enterInEditMode();break}}else this.addNewEditorFromKeyboard()}else{this.setEditingState(!1);this.#On()}}}addNewEditorFromKeyboard(){this.currentLayer.canCreateNewEmptyEditor()&&this.currentLayer.addNewEditor()}updateToolbar(t){t!==this.#on&&this._eventBus.dispatch("switchannotationeditormode",{source:this,mode:t})}updateParams(t,e){if(this.#yi){switch(t){case s.AnnotationEditorParamsType.CREATE:this.currentLayer.addNewEditor();return;case s.AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:this.#rn?.updateColor(e)}for(const i of this.#ln)i.updateParams(t,e);for(const i of this.#yi)i.updateDefaultParams(t,e)}}enableWaiting(t=!1){if(this.#nn!==t){this.#nn=t;for(const e of this.#qs.values()){t?e.disableClick():e.enableClick();e.div.classList.toggle("waiting",t)}}}#Ln(){if(!this.#sn){this.#sn=!0;for(const t of this.#qs.values())t.enable()}}#On(){this.unselectAll();if(this.#sn){this.#sn=!1;for(const t of this.#qs.values())t.disable()}}getEditors(t){const e=[];for(const i of this.#Ws.values())i.pageIndex===t&&e.push(i);return e}getEditor(t){return this.#Ws.get(t)}addEditor(t){this.#Ws.set(t.id,t)}removeEditor(t){if(t.div.contains(document.activeElement)){this.#tn&&clearTimeout(this.#tn);this.#tn=setTimeout((()=>{this.focusMainContainer();this.#tn=null}),0)}this.#Ws.delete(t.id);this.unselect(t);t.annotationElementId&&this.#Ys.has(t.annotationElementId)||this.#$s?.remove(t.id)}addDeletedAnnotationElement(t){this.#Ys.add(t.annotationElementId);t.deleted=!0}isDeletedAnnotationElement(t){return this.#Ys.has(t)}removeDeletedAnnotationElement(t){this.#Ys.delete(t.annotationElementId);t.deleted=!1}#Fn(t){const e=this.#qs.get(t.pageIndex);e?e.addOrRebuild(t):this.addEditor(t)}setActiveEditor(t){if(this.#Vs!==t){this.#Vs=t;t&&this.#Dn(t.propertiesToUpdate)}}toggleSelected(t){if(this.#ln.has(t)){this.#ln.delete(t);t.unselect();this.#kn({hasSelectedEditor:this.hasSelection})}else{this.#ln.add(t);t.select();this.#Dn(t.propertiesToUpdate);this.#kn({hasSelectedEditor:!0})}}setSelected(t){for(const e of this.#ln)e!==t&&e.unselect();this.#ln.clear();this.#ln.add(t);t.select();this.#Dn(t.propertiesToUpdate);this.#kn({hasSelectedEditor:!0})}isSelected(t){return this.#ln.has(t)}get firstSelectedEditor(){return this.#ln.values().next().value}unselect(t){t.unselect();this.#ln.delete(t);this.#kn({hasSelectedEditor:this.hasSelection})}get hasSelection(){return 0!==this.#ln.size}get isEnterHandled(){return 1===this.#ln.size&&this.firstSelectedEditor.isEnterHandled}undo(){this.#Ks.undo();this.#kn({hasSomethingToUndo:this.#Ks.hasSomethingToUndo(),hasSomethingToRedo:!0,isEmpty:this.#In()})}redo(){this.#Ks.redo();this.#kn({hasSomethingToUndo:!0,hasSomethingToRedo:this.#Ks.hasSomethingToRedo(),isEmpty:this.#In()})}addCommands(t){this.#Ks.add(t);this.#kn({hasSomethingToUndo:!0,hasSomethingToRedo:!1,isEmpty:this.#In()})}#In(){if(0===this.#Ws.size)return!0;if(1===this.#Ws.size)for(const t of this.#Ws.values())return t.isEmpty();return!1}delete(){this.commitOrRemove();if(!this.hasSelection)return;const t=[...this.#ln];this.addCommands({cmd:()=>{for(const e of t)e.remove()},undo:()=>{for(const e of t)this.#Fn(e)},mustExec:!0})}commitOrRemove(){this.#Vs?.commitOrRemove()}hasSomethingToControl(){return this.#Vs||this.hasSelection}#Rn(t){this.#ln.clear();for(const e of t)if(!e.isEmpty()){this.#ln.add(e);e.select()}this.#kn({hasSelectedEditor:!0})}selectAll(){for(const t of this.#ln)t.commit();this.#Rn(this.#Ws.values())}unselectAll(){if(this.#Vs){this.#Vs.commitOrRemove();if(this.#on!==s.AnnotationEditorType.NONE)return}if(this.hasSelection){for(const t of this.#ln)t.unselect();this.#ln.clear();this.#kn({hasSelectedEditor:!1})}}translateSelectedEditors(t,e,i=!1){i||this.commitOrRemove();if(!this.hasSelection)return;this.#En[0]+=t;this.#En[1]+=e;const[s,n]=this.#En,a=[...this.#ln];this.#_n&&clearTimeout(this.#_n);this.#_n=setTimeout((()=>{this.#_n=null;this.#En[0]=this.#En[1]=0;this.addCommands({cmd:()=>{for(const t of a)this.#Ws.has(t.id)&&t.translateInPage(s,n)},undo:()=>{for(const t of a)this.#Ws.has(t.id)&&t.translateInPage(-s,-n)},mustExec:!1})}),1e3);for(const i of a)i.translateInPage(t,e)}setUpDragSession(){if(this.hasSelection){this.disableUserSelect(!0);this.#Js=new Map;for(const t of this.#ln)this.#Js.set(t,{savedX:t.x,savedY:t.y,savedPageIndex:t.pageIndex,newX:0,newY:0,newPageIndex:-1})}}endDragSession(){if(!this.#Js)return!1;this.disableUserSelect(!1);const t=this.#Js;this.#Js=null;let e=!1;for(const[{x:i,y:s,pageIndex:n},a]of t){a.newX=i;a.newY=s;a.newPageIndex=n;e||=i!==a.savedX||s!==a.savedY||n!==a.savedPageIndex}if(!e)return!1;const move=(t,e,i,s)=>{if(this.#Ws.has(t.id)){const n=this.#qs.get(s);if(n)t._setParentAndPosition(n,e,i);else{t.pageIndex=s;t.x=e;t.y=i}}};this.addCommands({cmd:()=>{for(const[e,{newX:i,newY:s,newPageIndex:n}]of t)move(e,i,s,n)},undo:()=>{for(const[e,{savedX:i,savedY:s,savedPageIndex:n}]of t)move(e,i,s,n)},mustExec:!0});return!0}dragSelectedEditors(t,e){if(this.#Js)for(const i of this.#Js.keys())i.drag(t,e)}rebuild(t){if(null===t.parent){const e=this.getLayer(t.pageIndex);if(e){e.changeParent(t);e.addOrRebuild(t)}else{this.addEditor(t);this.addToAnnotationStorage(t);t.rebuild()}}else t.parent.addOrRebuild(t)}get isEditorHandlingKeyboard(){return this.getActive()?.shouldGetKeyboardEvents()||1===this.#ln.size&&this.firstSelectedEditor.shouldGetKeyboardEvents()}isActive(t){return this.#Vs===t}getActive(){return this.#Vs}getMode(){return this.#on}get imageManager(){return(0,s.shadow)(this,"imageManager",new ImageManager)}}},171:(t,e,i)=>{i.d(e,{PDFFetchStream:()=>PDFFetchStream});var s=i(266),n=i(253);function createFetchOptions(t,e,i){return{method:"GET",headers:t,signal:i.signal,mode:"cors",credentials:e?"include":"same-origin",redirect:"follow"}}function createHeaders(t){const e=new Headers;for(const i in t){const s=t[i];void 0!==s&&e.append(i,s)}return e}function getArrayBuffer(t){if(t instanceof Uint8Array)return t.buffer;if(t instanceof ArrayBuffer)return t;(0,s.warn)(`getArrayBuffer - unexpected data format: ${t}`);return new Uint8Array(t).buffer}class PDFFetchStream{constructor(t){this.source=t;this.isHttp=/^https?:/i.test(t.url);this.httpHeaders=this.isHttp&&t.httpHeaders||{};this._fullRequestReader=null;this._rangeRequestReaders=[]}get _progressiveDataLength(){return this._fullRequestReader?._loaded??0}getFullReader(){(0,s.assert)(!this._fullRequestReader,"PDFFetchStream.getFullReader can only be called once.");this._fullRequestReader=new PDFFetchStreamReader(this);return this._fullRequestReader}getRangeReader(t,e){if(e<=this._progressiveDataLength)return null;const i=new PDFFetchStreamRangeReader(this,t,e);this._rangeRequestReaders.push(i);return i}cancelAllRequests(t){this._fullRequestReader?.cancel(t);for(const e of this._rangeRequestReaders.slice(0))e.cancel(t)}}class PDFFetchStreamReader{constructor(t){this._stream=t;this._reader=null;this._loaded=0;this._filename=null;const e=t.source;this._withCredentials=e.withCredentials||!1;this._contentLength=e.length;this._headersCapability=new s.PromiseCapability;this._disableRange=e.disableRange||!1;this._rangeChunkSize=e.rangeChunkSize;this._rangeChunkSize||this._disableRange||(this._disableRange=!0);this._abortController=new AbortController;this._isStreamingSupported=!e.disableStream;this._isRangeSupported=!e.disableRange;this._headers=createHeaders(this._stream.httpHeaders);const i=e.url;fetch(i,createFetchOptions(this._headers,this._withCredentials,this._abortController)).then((t=>{if(!(0,n.validateResponseStatus)(t.status))throw(0,n.createResponseStatusError)(t.status,i);this._reader=t.body.getReader();this._headersCapability.resolve();const getResponseHeader=e=>t.headers.get(e),{allowRangeRequests:e,suggestedLength:a}=(0,n.validateRangeRequestCapabilities)({getResponseHeader:getResponseHeader,isHttp:this._stream.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});this._isRangeSupported=e;this._contentLength=a||this._contentLength;this._filename=(0,n.extractFilenameFromHeader)(getResponseHeader);!this._isStreamingSupported&&this._isRangeSupported&&this.cancel(new s.AbortException("Streaming is disabled."))})).catch(this._headersCapability.reject);this.onProgress=null}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}async read(){await this._headersCapability.promise;const{value:t,done:e}=await this._reader.read();if(e)return{value:t,done:e};this._loaded+=t.byteLength;this.onProgress?.({loaded:this._loaded,total:this._contentLength});return{value:getArrayBuffer(t),done:!1}}cancel(t){this._reader?.cancel(t);this._abortController.abort()}}class PDFFetchStreamRangeReader{constructor(t,e,i){this._stream=t;this._reader=null;this._loaded=0;const a=t.source;this._withCredentials=a.withCredentials||!1;this._readCapability=new s.PromiseCapability;this._isStreamingSupported=!a.disableStream;this._abortController=new AbortController;this._headers=createHeaders(this._stream.httpHeaders);this._headers.append("Range",`bytes=${e}-${i-1}`);const r=a.url;fetch(r,createFetchOptions(this._headers,this._withCredentials,this._abortController)).then((t=>{if(!(0,n.validateResponseStatus)(t.status))throw(0,n.createResponseStatusError)(t.status,r);this._readCapability.resolve();this._reader=t.body.getReader()})).catch(this._readCapability.reject);this.onProgress=null}get isStreamingSupported(){return this._isStreamingSupported}async read(){await this._readCapability.promise;const{value:t,done:e}=await this._reader.read();if(e)return{value:t,done:e};this._loaded+=t.byteLength;this.onProgress?.({loaded:this._loaded});return{value:getArrayBuffer(t),done:!1}}cancel(t){this._reader?.cancel(t);this._abortController.abort()}}},742:(t,e,i)=>{i.d(e,{FontFaceObject:()=>FontFaceObject,FontLoader:()=>FontLoader});var s=i(266);class FontLoader{#Bn=new Set;constructor({ownerDocument:t=globalThis.document,styleElement:e=null}){this._document=t;this.nativeFontFaces=new Set;this.styleElement=null;this.loadingRequests=[];this.loadTestFontId=0}addNativeFontFace(t){this.nativeFontFaces.add(t);this._document.fonts.add(t)}removeNativeFontFace(t){this.nativeFontFaces.delete(t);this._document.fonts.delete(t)}insertRule(t){if(!this.styleElement){this.styleElement=this._document.createElement("style");this._document.documentElement.getElementsByTagName("head")[0].append(this.styleElement)}const e=this.styleElement.sheet;e.insertRule(t,e.cssRules.length)}clear(){for(const t of this.nativeFontFaces)this._document.fonts.delete(t);this.nativeFontFaces.clear();this.#Bn.clear();if(this.styleElement){this.styleElement.remove();this.styleElement=null}}async loadSystemFont({systemFontInfo:t,_inspectFont:e}){if(t&&!this.#Bn.has(t.loadedName)){(0,s.assert)(!this.disableFontFace,"loadSystemFont shouldn't be called when `disableFontFace` is set.");if(this.isFontLoadingAPISupported){const{loadedName:i,src:n,style:a}=t,r=new FontFace(i,n,a);this.addNativeFontFace(r);try{await r.load();this.#Bn.add(i);e?.(t)}catch{(0,s.warn)(`Cannot load system font: ${t.baseFontName}, installing it could help to improve PDF rendering.`);this.removeNativeFontFace(r)}}else(0,s.unreachable)("Not implemented: loadSystemFont without the Font Loading API.")}}async bind(t){if(t.attached||t.missingFile&&!t.systemFontInfo)return;t.attached=!0;if(t.systemFontInfo){await this.loadSystemFont(t);return}if(this.isFontLoadingAPISupported){const e=t.createNativeFontFace();if(e){this.addNativeFontFace(e);try{await e.loaded}catch(i){(0,s.warn)(`Failed to load font '${e.family}': '${i}'.`);t.disableFontFace=!0;throw i}}return}const e=t.createFontFaceRule();if(e){this.insertRule(e);if(this.isSyncFontLoadingSupported)return;await new Promise((e=>{const i=this._queueLoadingCallback(e);this._prepareFontLoadEvent(t,i)}))}}get isFontLoadingAPISupported(){const t=!!this._document?.fonts;return(0,s.shadow)(this,"isFontLoadingAPISupported",t)}get isSyncFontLoadingSupported(){let t=!1;(s.isNodeJS||"undefined"!=typeof navigator&&"string"==typeof navigator?.userAgent&&/Mozilla\/5.0.*?rv:\d+.*? Gecko/.test(navigator.userAgent))&&(t=!0);return(0,s.shadow)(this,"isSyncFontLoadingSupported",t)}_queueLoadingCallback(t){const{loadingRequests:e}=this,i={done:!1,complete:function completeRequest(){(0,s.assert)(!i.done,"completeRequest() cannot be called twice.");i.done=!0;for(;e.length>0&&e[0].done;){const t=e.shift();setTimeout(t.callback,0)}},callback:t};e.push(i);return i}get _loadTestFont(){const t=atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==");return(0,s.shadow)(this,"_loadTestFont",t)}_prepareFontLoadEvent(t,e){function int32(t,e){return t.charCodeAt(e)<<24|t.charCodeAt(e+1)<<16|t.charCodeAt(e+2)<<8|255&t.charCodeAt(e+3)}function spliceString(t,e,i,s){return t.substring(0,e)+s+t.substring(e+i)}let i,n;const a=this._document.createElement("canvas");a.width=1;a.height=1;const r=a.getContext("2d");let o=0;const l=`lt${Date.now()}${this.loadTestFontId++}`;let h=this._loadTestFont;h=spliceString(h,976,l.length,l);const d=1482184792;let c=int32(h,16);for(i=0,n=l.length-3;i30){(0,s.warn)("Load test font never loaded.");e();return}r.font="30px "+t;r.fillText(".",0,20);r.getImageData(0,0,1,1).data[3]>0?e():setTimeout(isFontReady.bind(null,t,e))}(l,(()=>{p.remove();e.complete()}))}}class FontFaceObject{constructor(t,{isEvalSupported:e=!0,disableFontFace:i=!1,ignoreErrors:s=!1,inspectFont:n=null}){this.compiledGlyphs=Object.create(null);for(const e in t)this[e]=t[e];this.isEvalSupported=!1!==e;this.disableFontFace=!0===i;this.ignoreErrors=!0===s;this._inspectFont=n}createNativeFontFace(){if(!this.data||this.disableFontFace)return null;let t;if(this.cssFontInfo){const e={weight:this.cssFontInfo.fontWeight};this.cssFontInfo.italicAngle&&(e.style=`oblique ${this.cssFontInfo.italicAngle}deg`);t=new FontFace(this.cssFontInfo.fontFamily,this.data,e)}else t=new FontFace(this.loadedName,this.data,{});this._inspectFont?.(this);return t}createFontFaceRule(){if(!this.data||this.disableFontFace)return null;const t=(0,s.bytesToString)(this.data),e=`url(data:${this.mimetype};base64,${btoa(t)});`;let i;if(this.cssFontInfo){let t=`font-weight: ${this.cssFontInfo.fontWeight};`;this.cssFontInfo.italicAngle&&(t+=`font-style: oblique ${this.cssFontInfo.italicAngle}deg;`);i=`@font-face {font-family:"${this.cssFontInfo.fontFamily}";${t}src:${e}}`}else i=`@font-face {font-family:"${this.loadedName}";src:${e}}`;this._inspectFont?.(this,e);return i}getPathGenerator(t,e){if(void 0!==this.compiledGlyphs[e])return this.compiledGlyphs[e];let i;try{i=t.get(this.loadedName+"_path_"+e)}catch(t){if(!this.ignoreErrors)throw t;(0,s.warn)(`getPathGenerator - ignoring character: "${t}".`);return this.compiledGlyphs[e]=function(t,e){}}if(this.isEvalSupported&&s.FeatureTest.isEvalSupported){const t=[];for(const e of i){const i=void 0!==e.args?e.args.join(","):"";t.push("c.",e.cmd,"(",i,");\n")}return this.compiledGlyphs[e]=new Function("c","size",t.join(""))}return this.compiledGlyphs[e]=function(t,e){for(const s of i){"scale"===s.cmd&&(s.args=[e,-e]);t[s.cmd].apply(t,s.args)}}}}},472:(t,e,i)=>{i.d(e,{Metadata:()=>Metadata});var s=i(266);class Metadata{#Nn;#Un;constructor({parsedData:t,rawData:e}){this.#Nn=t;this.#Un=e}getRaw(){return this.#Un}get(t){return this.#Nn.get(t)??null}getAll(){return(0,s.objectFromMap)(this.#Nn)}has(t){return this.#Nn.has(t)}}},474:(t,e,i)=>{i.d(e,{PDFNetworkStream:()=>PDFNetworkStream});var s=i(266),n=i(253);class NetworkManager{constructor(t,e={}){this.url=t;this.isHttp=/^https?:/i.test(t);this.httpHeaders=this.isHttp&&e.httpHeaders||Object.create(null);this.withCredentials=e.withCredentials||!1;this.currXhrId=0;this.pendingRequests=Object.create(null)}requestRange(t,e,i){const s={begin:t,end:e};for(const t in i)s[t]=i[t];return this.request(s)}requestFull(t){return this.request(t)}request(t){const e=new XMLHttpRequest,i=this.currXhrId++,s=this.pendingRequests[i]={xhr:e};e.open("GET",this.url);e.withCredentials=this.withCredentials;for(const t in this.httpHeaders){const i=this.httpHeaders[t];void 0!==i&&e.setRequestHeader(t,i)}if(this.isHttp&&"begin"in t&&"end"in t){e.setRequestHeader("Range",`bytes=${t.begin}-${t.end-1}`);s.expectedStatus=206}else s.expectedStatus=200;e.responseType="arraybuffer";t.onError&&(e.onerror=function(i){t.onError(e.status)});e.onreadystatechange=this.onStateChange.bind(this,i);e.onprogress=this.onProgress.bind(this,i);s.onHeadersReceived=t.onHeadersReceived;s.onDone=t.onDone;s.onError=t.onError;s.onProgress=t.onProgress;e.send(null);return i}onProgress(t,e){const i=this.pendingRequests[t];i&&i.onProgress?.(e)}onStateChange(t,e){const i=this.pendingRequests[t];if(!i)return;const n=i.xhr;if(n.readyState>=2&&i.onHeadersReceived){i.onHeadersReceived();delete i.onHeadersReceived}if(4!==n.readyState)return;if(!(t in this.pendingRequests))return;delete this.pendingRequests[t];if(0===n.status&&this.isHttp){i.onError?.(n.status);return}const a=n.status||200;if(!(200===a&&206===i.expectedStatus)&&a!==i.expectedStatus){i.onError?.(n.status);return}const r=function getArrayBuffer(t){const e=t.response;return"string"!=typeof e?e:(0,s.stringToBytes)(e).buffer}(n);if(206===a){const t=n.getResponseHeader("Content-Range"),e=/bytes (\d+)-(\d+)\/(\d+)/.exec(t);i.onDone({begin:parseInt(e[1],10),chunk:r})}else r?i.onDone({begin:0,chunk:r}):i.onError?.(n.status)}getRequestXhr(t){return this.pendingRequests[t].xhr}isPendingRequest(t){return t in this.pendingRequests}abortRequest(t){const e=this.pendingRequests[t].xhr;delete this.pendingRequests[t];e.abort()}}class PDFNetworkStream{constructor(t){this._source=t;this._manager=new NetworkManager(t.url,{httpHeaders:t.httpHeaders,withCredentials:t.withCredentials});this._rangeChunkSize=t.rangeChunkSize;this._fullRequestReader=null;this._rangeRequestReaders=[]}_onRangeRequestReaderClosed(t){const e=this._rangeRequestReaders.indexOf(t);e>=0&&this._rangeRequestReaders.splice(e,1)}getFullReader(){(0,s.assert)(!this._fullRequestReader,"PDFNetworkStream.getFullReader can only be called once.");this._fullRequestReader=new PDFNetworkStreamFullRequestReader(this._manager,this._source);return this._fullRequestReader}getRangeReader(t,e){const i=new PDFNetworkStreamRangeRequestReader(this._manager,t,e);i.onClosed=this._onRangeRequestReaderClosed.bind(this);this._rangeRequestReaders.push(i);return i}cancelAllRequests(t){this._fullRequestReader?.cancel(t);for(const e of this._rangeRequestReaders.slice(0))e.cancel(t)}}class PDFNetworkStreamFullRequestReader{constructor(t,e){this._manager=t;const i={onHeadersReceived:this._onHeadersReceived.bind(this),onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)};this._url=e.url;this._fullRequestId=t.requestFull(i);this._headersReceivedCapability=new s.PromiseCapability;this._disableRange=e.disableRange||!1;this._contentLength=e.length;this._rangeChunkSize=e.rangeChunkSize;this._rangeChunkSize||this._disableRange||(this._disableRange=!0);this._isStreamingSupported=!1;this._isRangeSupported=!1;this._cachedChunks=[];this._requests=[];this._done=!1;this._storedError=void 0;this._filename=null;this.onProgress=null}_onHeadersReceived(){const t=this._fullRequestId,e=this._manager.getRequestXhr(t),getResponseHeader=t=>e.getResponseHeader(t),{allowRangeRequests:i,suggestedLength:s}=(0,n.validateRangeRequestCapabilities)({getResponseHeader:getResponseHeader,isHttp:this._manager.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});i&&(this._isRangeSupported=!0);this._contentLength=s||this._contentLength;this._filename=(0,n.extractFilenameFromHeader)(getResponseHeader);this._isRangeSupported&&this._manager.abortRequest(t);this._headersReceivedCapability.resolve()}_onDone(t){if(t)if(this._requests.length>0){this._requests.shift().resolve({value:t.chunk,done:!1})}else this._cachedChunks.push(t.chunk);this._done=!0;if(!(this._cachedChunks.length>0)){for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0}}_onError(t){this._storedError=(0,n.createResponseStatusError)(t,this._url);this._headersReceivedCapability.reject(this._storedError);for(const t of this._requests)t.reject(this._storedError);this._requests.length=0;this._cachedChunks.length=0}_onProgress(t){this.onProgress?.({loaded:t.loaded,total:t.lengthComputable?t.total:this._contentLength})}get filename(){return this._filename}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}get contentLength(){return this._contentLength}get headersReady(){return this._headersReceivedCapability.promise}async read(){if(this._storedError)throw this._storedError;if(this._cachedChunks.length>0){return{value:this._cachedChunks.shift(),done:!1}}if(this._done)return{value:void 0,done:!0};const t=new s.PromiseCapability;this._requests.push(t);return t.promise}cancel(t){this._done=!0;this._headersReceivedCapability.reject(t);for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0;this._manager.isPendingRequest(this._fullRequestId)&&this._manager.abortRequest(this._fullRequestId);this._fullRequestReader=null}}class PDFNetworkStreamRangeRequestReader{constructor(t,e,i){this._manager=t;const s={onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)};this._url=t.url;this._requestId=t.requestRange(e,i,s);this._requests=[];this._queuedChunk=null;this._done=!1;this._storedError=void 0;this.onProgress=null;this.onClosed=null}_close(){this.onClosed?.(this)}_onDone(t){const e=t.chunk;if(this._requests.length>0){this._requests.shift().resolve({value:e,done:!1})}else this._queuedChunk=e;this._done=!0;for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0;this._close()}_onError(t){this._storedError=(0,n.createResponseStatusError)(t,this._url);for(const t of this._requests)t.reject(this._storedError);this._requests.length=0;this._queuedChunk=null}_onProgress(t){this.isStreamingSupported||this.onProgress?.({loaded:t.loaded})}get isStreamingSupported(){return!1}async read(){if(this._storedError)throw this._storedError;if(null!==this._queuedChunk){const t=this._queuedChunk;this._queuedChunk=null;return{value:t,done:!1}}if(this._done)return{value:void 0,done:!0};const t=new s.PromiseCapability;this._requests.push(t);return t.promise}cancel(t){this._done=!0;for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0;this._manager.isPendingRequest(this._requestId)&&this._manager.abortRequest(this._requestId);this._close()}}},253:(t,e,i)=>{i.d(e,{createResponseStatusError:()=>createResponseStatusError,extractFilenameFromHeader:()=>extractFilenameFromHeader,validateRangeRequestCapabilities:()=>validateRangeRequestCapabilities,validateResponseStatus:()=>validateResponseStatus});var s=i(266);var n=i(473);function validateRangeRequestCapabilities({getResponseHeader:t,isHttp:e,rangeChunkSize:i,disableRange:s}){const n={allowRangeRequests:!1,suggestedLength:void 0},a=parseInt(t("Content-Length"),10);if(!Number.isInteger(a))return n;n.suggestedLength=a;if(a<=2*i)return n;if(s||!e)return n;if("bytes"!==t("Accept-Ranges"))return n;if("identity"!==(t("Content-Encoding")||"identity"))return n;n.allowRangeRequests=!0;return n}function extractFilenameFromHeader(t){const e=t("Content-Disposition");if(e){let t=function getFilenameFromContentDispositionHeader(t){let e=!0,i=toParamRegExp("filename\\*","i").exec(t);if(i){i=i[1];let t=rfc2616unquote(i);t=unescape(t);t=rfc5987decode(t);t=rfc2047decode(t);return fixupEncoding(t)}i=function rfc2231getparam(t){const e=[];let i;const s=toParamRegExp("filename\\*((?!0\\d)\\d+)(\\*?)","ig");for(;null!==(i=s.exec(t));){let[,t,s,n]=i;t=parseInt(t,10);if(t in e){if(0===t)break}else e[t]=[s,n]}const n=[];for(let t=0;t{i.a(t,(async(t,s)=>{try{i.d(e,{PDFNodeStream:()=>PDFNodeStream});var n=i(266),a=i(253);let r,o,l,h;if(n.isNodeJS){r=await import("fs");o=await import("http");l=await import("https");h=await import("url")}const d=/^file:\/\/\/[a-zA-Z]:\//;function parseUrl(t){const e=h.parse(t);if("file:"===e.protocol||e.host)return e;if(/^[a-z]:[/\\]/i.test(t))return h.parse(`file:///${t}`);e.host||(e.protocol="file:");return e}class PDFNodeStream{constructor(t){this.source=t;this.url=parseUrl(t.url);this.isHttp="http:"===this.url.protocol||"https:"===this.url.protocol;this.isFsUrl="file:"===this.url.protocol;this.httpHeaders=this.isHttp&&t.httpHeaders||{};this._fullRequestReader=null;this._rangeRequestReaders=[]}get _progressiveDataLength(){return this._fullRequestReader?._loaded??0}getFullReader(){(0,n.assert)(!this._fullRequestReader,"PDFNodeStream.getFullReader can only be called once.");this._fullRequestReader=this.isFsUrl?new PDFNodeStreamFsFullReader(this):new PDFNodeStreamFullReader(this);return this._fullRequestReader}getRangeReader(t,e){if(e<=this._progressiveDataLength)return null;const i=this.isFsUrl?new PDFNodeStreamFsRangeReader(this,t,e):new PDFNodeStreamRangeReader(this,t,e);this._rangeRequestReaders.push(i);return i}cancelAllRequests(t){this._fullRequestReader?.cancel(t);for(const e of this._rangeRequestReaders.slice(0))e.cancel(t)}}class BaseFullReader{constructor(t){this._url=t.url;this._done=!1;this._storedError=null;this.onProgress=null;const e=t.source;this._contentLength=e.length;this._loaded=0;this._filename=null;this._disableRange=e.disableRange||!1;this._rangeChunkSize=e.rangeChunkSize;this._rangeChunkSize||this._disableRange||(this._disableRange=!0);this._isStreamingSupported=!e.disableStream;this._isRangeSupported=!e.disableRange;this._readableStream=null;this._readCapability=new n.PromiseCapability;this._headersCapability=new n.PromiseCapability}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}async read(){await this._readCapability.promise;if(this._done)return{value:void 0,done:!0};if(this._storedError)throw this._storedError;const t=this._readableStream.read();if(null===t){this._readCapability=new n.PromiseCapability;return this.read()}this._loaded+=t.length;this.onProgress?.({loaded:this._loaded,total:this._contentLength});return{value:new Uint8Array(t).buffer,done:!1}}cancel(t){this._readableStream?this._readableStream.destroy(t):this._error(t)}_error(t){this._storedError=t;this._readCapability.resolve()}_setReadableStream(t){this._readableStream=t;t.on("readable",(()=>{this._readCapability.resolve()}));t.on("end",(()=>{t.destroy();this._done=!0;this._readCapability.resolve()}));t.on("error",(t=>{this._error(t)}));!this._isStreamingSupported&&this._isRangeSupported&&this._error(new n.AbortException("streaming is disabled"));this._storedError&&this._readableStream.destroy(this._storedError)}}class BaseRangeReader{constructor(t){this._url=t.url;this._done=!1;this._storedError=null;this.onProgress=null;this._loaded=0;this._readableStream=null;this._readCapability=new n.PromiseCapability;const e=t.source;this._isStreamingSupported=!e.disableStream}get isStreamingSupported(){return this._isStreamingSupported}async read(){await this._readCapability.promise;if(this._done)return{value:void 0,done:!0};if(this._storedError)throw this._storedError;const t=this._readableStream.read();if(null===t){this._readCapability=new n.PromiseCapability;return this.read()}this._loaded+=t.length;this.onProgress?.({loaded:this._loaded});return{value:new Uint8Array(t).buffer,done:!1}}cancel(t){this._readableStream?this._readableStream.destroy(t):this._error(t)}_error(t){this._storedError=t;this._readCapability.resolve()}_setReadableStream(t){this._readableStream=t;t.on("readable",(()=>{this._readCapability.resolve()}));t.on("end",(()=>{t.destroy();this._done=!0;this._readCapability.resolve()}));t.on("error",(t=>{this._error(t)}));this._storedError&&this._readableStream.destroy(this._storedError)}}function createRequestOptions(t,e){return{protocol:t.protocol,auth:t.auth,host:t.hostname,port:t.port,path:t.path,method:"GET",headers:e}}class PDFNodeStreamFullReader extends BaseFullReader{constructor(t){super(t);const handleResponse=e=>{if(404===e.statusCode){const t=new n.MissingPDFException(`Missing PDF "${this._url}".`);this._storedError=t;this._headersCapability.reject(t);return}this._headersCapability.resolve();this._setReadableStream(e);const getResponseHeader=t=>this._readableStream.headers[t.toLowerCase()],{allowRangeRequests:i,suggestedLength:s}=(0,a.validateRangeRequestCapabilities)({getResponseHeader:getResponseHeader,isHttp:t.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});this._isRangeSupported=i;this._contentLength=s||this._contentLength;this._filename=(0,a.extractFilenameFromHeader)(getResponseHeader)};this._request=null;"http:"===this._url.protocol?this._request=o.request(createRequestOptions(this._url,t.httpHeaders),handleResponse):this._request=l.request(createRequestOptions(this._url,t.httpHeaders),handleResponse);this._request.on("error",(t=>{this._storedError=t;this._headersCapability.reject(t)}));this._request.end()}}class PDFNodeStreamRangeReader extends BaseRangeReader{constructor(t,e,i){super(t);this._httpHeaders={};for(const e in t.httpHeaders){const i=t.httpHeaders[e];void 0!==i&&(this._httpHeaders[e]=i)}this._httpHeaders.Range=`bytes=${e}-${i-1}`;const handleResponse=t=>{if(404!==t.statusCode)this._setReadableStream(t);else{const t=new n.MissingPDFException(`Missing PDF "${this._url}".`);this._storedError=t}};this._request=null;"http:"===this._url.protocol?this._request=o.request(createRequestOptions(this._url,this._httpHeaders),handleResponse):this._request=l.request(createRequestOptions(this._url,this._httpHeaders),handleResponse);this._request.on("error",(t=>{this._storedError=t}));this._request.end()}}class PDFNodeStreamFsFullReader extends BaseFullReader{constructor(t){super(t);let e=decodeURIComponent(this._url.path);d.test(this._url.href)&&(e=e.replace(/^\//,""));r.lstat(e,((t,i)=>{if(t){"ENOENT"===t.code&&(t=new n.MissingPDFException(`Missing PDF "${e}".`));this._storedError=t;this._headersCapability.reject(t)}else{this._contentLength=i.size;this._setReadableStream(r.createReadStream(e));this._headersCapability.resolve()}}))}}class PDFNodeStreamFsRangeReader extends BaseRangeReader{constructor(t,e,i){super(t);let s=decodeURIComponent(this._url.path);d.test(this._url.href)&&(s=s.replace(/^\//,""));this._setReadableStream(r.createReadStream(s,{start:e,end:i-1}))}}s()}catch(c){s(c)}}),1)},738:(t,e,i)=>{i.a(t,(async(t,s)=>{try{i.d(e,{NodeCMapReaderFactory:()=>NodeCMapReaderFactory,NodeCanvasFactory:()=>NodeCanvasFactory,NodeFilterFactory:()=>NodeFilterFactory,NodeStandardFontDataFactory:()=>NodeStandardFontDataFactory});var n=i(822);let t,a,r;if(i(266).isNodeJS){t=await import("fs");try{a=await import("canvas")}catch{}try{r=await import("path2d-polyfill")}catch{}}const fetchData=function(e){return new Promise(((i,s)=>{t.readFile(e,((t,e)=>{!t&&e?i(new Uint8Array(e)):s(new Error(t))}))}))};class NodeFilterFactory extends n.BaseFilterFactory{}class NodeCanvasFactory extends n.BaseCanvasFactory{_createCanvas(t,e){return a.createCanvas(t,e)}}class NodeCMapReaderFactory extends n.BaseCMapReaderFactory{_fetchData(t,e){return fetchData(t).then((t=>({cMapData:t,compressionType:e})))}}class NodeStandardFontDataFactory extends n.BaseStandardFontDataFactory{_fetchData(t){return fetchData(t)}}s()}catch(t){s(t)}}),1)},890:(t,e,i)=>{i.d(e,{OptionalContentConfig:()=>OptionalContentConfig});var s=i(266),n=i(825);const a=Symbol("INTERNAL");class OptionalContentGroup{#zn=!0;constructor(t,e){this.name=t;this.intent=e}get visible(){return this.#zn}_setVisible(t,e){t!==a&&(0,s.unreachable)("Internal method `_setVisible` called.");this.#zn=e}}class OptionalContentConfig{#Hn=null;#jn=new Map;#Vn=null;#Wn=null;constructor(t){this.name=null;this.creator=null;if(null!==t){this.name=t.name;this.creator=t.creator;this.#Wn=t.order;for(const e of t.groups)this.#jn.set(e.id,new OptionalContentGroup(e.name,e.intent));if("OFF"===t.baseState)for(const t of this.#jn.values())t._setVisible(a,!1);for(const e of t.on)this.#jn.get(e)._setVisible(a,!0);for(const e of t.off)this.#jn.get(e)._setVisible(a,!1);this.#Vn=this.getHash()}}#qn(t){const e=t.length;if(e<2)return!0;const i=t[0];for(let n=1;n0?(0,s.objectFromMap)(this.#jn):null}getGroup(t){return this.#jn.get(t)||null}getHash(){if(null!==this.#Hn)return this.#Hn;const t=new n.MurmurHash3_64;for(const[e,i]of this.#jn)t.update(`${e}:${i.visible}`);return this.#Hn=t.hexdigest()}}},739:(t,e,i)=>{i.d(e,{renderTextLayer:()=>renderTextLayer,updateTextLayer:()=>updateTextLayer});var s=i(266),n=i(473);const a=30,r=.8,o=new Map;function getCtx(t,e){let i;if(e&&s.FeatureTest.isOffscreenCanvasSupported)i=new OffscreenCanvas(t,t).getContext("2d",{alpha:!1});else{const e=document.createElement("canvas");e.width=e.height=t;i=e.getContext("2d",{alpha:!1})}return i}function appendText(t,e,i){const n=document.createElement("span"),l={angle:0,canvasWidth:0,hasText:""!==e.str,hasEOL:e.hasEOL,fontSize:0};t._textDivs.push(n);const h=s.Util.transform(t._transform,e.transform);let d=Math.atan2(h[1],h[0]);const c=i[e.fontName];c.vertical&&(d+=Math.PI/2);const u=t._fontInspectorEnabled&&c.fontSubstitution||c.fontFamily,p=Math.hypot(h[2],h[3]),g=p*function getAscent(t,e){const i=o.get(t);if(i)return i;const s=getCtx(a,e);s.font=`${a}px ${t}`;const n=s.measureText("");let l=n.fontBoundingBoxAscent,h=Math.abs(n.fontBoundingBoxDescent);if(l){const e=l/(l+h);o.set(t,e);s.canvas.width=s.canvas.height=0;return e}s.strokeStyle="red";s.clearRect(0,0,a,a);s.strokeText("g",0,0);let d=s.getImageData(0,0,a,a).data;h=0;for(let t=d.length-1-3;t>=0;t-=4)if(d[t]>0){h=Math.ceil(t/4/a);break}s.clearRect(0,0,a,a);s.strokeText("A",0,a);d=s.getImageData(0,0,a,a).data;l=0;for(let t=0,e=d.length;t0){l=a-Math.floor(t/4/a);break}s.canvas.width=s.canvas.height=0;if(l){const e=l/(l+h);o.set(t,e);return e}o.set(t,r);return r}(u,t._isOffscreenCanvasSupported);let m,f;if(0===d){m=h[4];f=h[5]-g}else{m=h[4]+g*Math.sin(d);f=h[5]-g*Math.cos(d)}const b="calc(var(--scale-factor)*",A=n.style;if(t._container===t._rootContainer){A.left=`${(100*m/t._pageWidth).toFixed(2)}%`;A.top=`${(100*f/t._pageHeight).toFixed(2)}%`}else{A.left=`${b}${m.toFixed(2)}px)`;A.top=`${b}${f.toFixed(2)}px)`}A.fontSize=`${b}${p.toFixed(2)}px)`;A.fontFamily=u;l.fontSize=p;n.setAttribute("role","presentation");n.textContent=e.str;n.dir=e.dir;t._fontInspectorEnabled&&(n.dataset.fontName=c.fontSubstitutionLoadedName||e.fontName);0!==d&&(l.angle=d*(180/Math.PI));let v=!1;if(e.str.length>1)v=!0;else if(" "!==e.str&&e.transform[0]!==e.transform[3]){const t=Math.abs(e.transform[0]),i=Math.abs(e.transform[3]);t!==i&&Math.max(t,i)/Math.min(t,i)>1.5&&(v=!0)}v&&(l.canvasWidth=c.vertical?e.height:e.width);t._textDivProperties.set(n,l);t._isReadableStream&&t._layoutText(n)}function layout(t){const{div:e,scale:i,properties:s,ctx:n,prevFontSize:a,prevFontFamily:r}=t,{style:o}=e;let l="";if(0!==s.canvasWidth&&s.hasText){const{fontFamily:h}=o,{canvasWidth:d,fontSize:c}=s;if(a!==c||r!==h){n.font=`${c*i}px ${h}`;t.prevFontSize=c;t.prevFontFamily=h}const{width:u}=n.measureText(e.textContent);u>0&&(l=`scaleX(${d*i/u})`)}0!==s.angle&&(l=`rotate(${s.angle}deg) ${l}`);l.length>0&&(o.transform=l)}class TextLayerRenderTask{constructor({textContentSource:t,container:e,viewport:i,textDivs:a,textDivProperties:r,textContentItemsStr:o,isOffscreenCanvasSupported:l}){this._textContentSource=t;this._isReadableStream=t instanceof ReadableStream;this._container=this._rootContainer=e;this._textDivs=a||[];this._textContentItemsStr=o||[];this._isOffscreenCanvasSupported=l;this._fontInspectorEnabled=!!globalThis.FontInspector?.enabled;this._reader=null;this._textDivProperties=r||new WeakMap;this._canceled=!1;this._capability=new s.PromiseCapability;this._layoutTextParams={prevFontSize:null,prevFontFamily:null,div:null,scale:i.scale*(globalThis.devicePixelRatio||1),properties:null,ctx:getCtx(0,l)};const{pageWidth:h,pageHeight:d,pageX:c,pageY:u}=i.rawDims;this._transform=[1,0,0,-1,-c,u+d];this._pageWidth=h;this._pageHeight=d;(0,n.setLayerDimensions)(e,i);this._capability.promise.finally((()=>{this._layoutTextParams=null})).catch((()=>{}))}get promise(){return this._capability.promise}cancel(){this._canceled=!0;if(this._reader){this._reader.cancel(new s.AbortException("TextLayer task cancelled.")).catch((()=>{}));this._reader=null}this._capability.reject(new s.AbortException("TextLayer task cancelled."))}_processItems(t,e){for(const i of t)if(void 0!==i.str){this._textContentItemsStr.push(i.str);appendText(this,i,e)}else if("beginMarkedContentProps"===i.type||"beginMarkedContent"===i.type){const t=this._container;this._container=document.createElement("span");this._container.classList.add("markedContent");null!==i.id&&this._container.setAttribute("id",`${i.id}`);t.append(this._container)}else"endMarkedContent"===i.type&&(this._container=this._container.parentNode)}_layoutText(t){const e=this._layoutTextParams.properties=this._textDivProperties.get(t);this._layoutTextParams.div=t;layout(this._layoutTextParams);e.hasText&&this._container.append(t);if(e.hasEOL){const t=document.createElement("br");t.setAttribute("role","presentation");this._container.append(t)}}_render(){const t=new s.PromiseCapability;let e=Object.create(null);if(this._isReadableStream){const pump=()=>{this._reader.read().then((({value:i,done:s})=>{if(s)t.resolve();else{Object.assign(e,i.styles);this._processItems(i.items,e);pump()}}),t.reject)};this._reader=this._textContentSource.getReader();pump()}else{if(!this._textContentSource)throw new Error('No "textContentSource" parameter specified.');{const{items:e,styles:i}=this._textContentSource;this._processItems(e,i);t.resolve()}}t.promise.then((()=>{e=null;!function render(t){if(t._canceled)return;const e=t._textDivs,i=t._capability;if(e.length>1e5)i.resolve();else{if(!t._isReadableStream)for(const i of e)t._layoutText(i);i.resolve()}}(this)}),this._capability.reject)}}function renderTextLayer(t){const e=new TextLayerRenderTask(t);e._render();return e}function updateTextLayer({container:t,viewport:e,textDivs:i,textDivProperties:s,isOffscreenCanvasSupported:a,mustRotate:r=!0,mustRescale:o=!0}){r&&(0,n.setLayerDimensions)(t,{rotation:e.rotation});if(o){const t=getCtx(0,a),n={prevFontSize:null,prevFontFamily:null,div:null,scale:e.scale*(globalThis.devicePixelRatio||1),properties:null,ctx:t};for(const t of i){n.properties=s.get(t);n.div=t;layout(n)}}}},92:(t,e,i)=>{i.d(e,{PDFDataTransportStream:()=>PDFDataTransportStream});var s=i(266),n=i(473);class PDFDataTransportStream{constructor({length:t,initialData:e,progressiveDone:i=!1,contentDispositionFilename:n=null,disableRange:a=!1,disableStream:r=!1},o){(0,s.assert)(o,'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.');this._queuedChunks=[];this._progressiveDone=i;this._contentDispositionFilename=n;if(e?.length>0){const t=e instanceof Uint8Array&&e.byteLength===e.buffer.byteLength?e.buffer:new Uint8Array(e).buffer;this._queuedChunks.push(t)}this._pdfDataRangeTransport=o;this._isStreamingSupported=!r;this._isRangeSupported=!a;this._contentLength=t;this._fullRequestReader=null;this._rangeReaders=[];this._pdfDataRangeTransport.addRangeListener(((t,e)=>{this._onReceiveData({begin:t,chunk:e})}));this._pdfDataRangeTransport.addProgressListener(((t,e)=>{this._onProgress({loaded:t,total:e})}));this._pdfDataRangeTransport.addProgressiveReadListener((t=>{this._onReceiveData({chunk:t})}));this._pdfDataRangeTransport.addProgressiveDoneListener((()=>{this._onProgressiveDone()}));this._pdfDataRangeTransport.transportReady()}_onReceiveData({begin:t,chunk:e}){const i=e instanceof Uint8Array&&e.byteLength===e.buffer.byteLength?e.buffer:new Uint8Array(e).buffer;if(void 0===t)this._fullRequestReader?this._fullRequestReader._enqueue(i):this._queuedChunks.push(i);else{const e=this._rangeReaders.some((function(e){if(e._begin!==t)return!1;e._enqueue(i);return!0}));(0,s.assert)(e,"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.")}}get _progressiveDataLength(){return this._fullRequestReader?._loaded??0}_onProgress(t){void 0===t.total?this._rangeReaders[0]?.onProgress?.({loaded:t.loaded}):this._fullRequestReader?.onProgress?.({loaded:t.loaded,total:t.total})}_onProgressiveDone(){this._fullRequestReader?.progressiveDone();this._progressiveDone=!0}_removeRangeReader(t){const e=this._rangeReaders.indexOf(t);e>=0&&this._rangeReaders.splice(e,1)}getFullReader(){(0,s.assert)(!this._fullRequestReader,"PDFDataTransportStream.getFullReader can only be called once.");const t=this._queuedChunks;this._queuedChunks=null;return new PDFDataTransportStreamReader(this,t,this._progressiveDone,this._contentDispositionFilename)}getRangeReader(t,e){if(e<=this._progressiveDataLength)return null;const i=new PDFDataTransportStreamRangeReader(this,t,e);this._pdfDataRangeTransport.requestDataRange(t,e);this._rangeReaders.push(i);return i}cancelAllRequests(t){this._fullRequestReader?.cancel(t);for(const e of this._rangeReaders.slice(0))e.cancel(t);this._pdfDataRangeTransport.abort()}}class PDFDataTransportStreamReader{constructor(t,e,i=!1,s=null){this._stream=t;this._done=i||!1;this._filename=(0,n.isPdfFile)(s)?s:null;this._queuedChunks=e||[];this._loaded=0;for(const t of this._queuedChunks)this._loaded+=t.byteLength;this._requests=[];this._headersReady=Promise.resolve();t._fullRequestReader=this;this.onProgress=null}_enqueue(t){if(!this._done){if(this._requests.length>0){this._requests.shift().resolve({value:t,done:!1})}else this._queuedChunks.push(t);this._loaded+=t.byteLength}}get headersReady(){return this._headersReady}get filename(){return this._filename}get isRangeSupported(){return this._stream._isRangeSupported}get isStreamingSupported(){return this._stream._isStreamingSupported}get contentLength(){return this._stream._contentLength}async read(){if(this._queuedChunks.length>0){return{value:this._queuedChunks.shift(),done:!1}}if(this._done)return{value:void 0,done:!0};const t=new s.PromiseCapability;this._requests.push(t);return t.promise}cancel(t){this._done=!0;for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0}progressiveDone(){this._done||(this._done=!0)}}class PDFDataTransportStreamRangeReader{constructor(t,e,i){this._stream=t;this._begin=e;this._end=i;this._queuedChunk=null;this._requests=[];this._done=!1;this.onProgress=null}_enqueue(t){if(!this._done){if(0===this._requests.length)this._queuedChunk=t;else{this._requests.shift().resolve({value:t,done:!1});for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0}this._done=!0;this._stream._removeRangeReader(this)}}get isStreamingSupported(){return!1}async read(){if(this._queuedChunk){const t=this._queuedChunk;this._queuedChunk=null;return{value:t,done:!1}}if(this._done)return{value:void 0,done:!0};const t=new s.PromiseCapability;this._requests.push(t);return t.promise}cancel(t){this._done=!0;for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0;this._stream._removeRangeReader(this)}}},368:(t,e,i)=>{i.d(e,{GlobalWorkerOptions:()=>s});const s=Object.create(null);s.workerPort=null;s.workerSrc=""},160:(t,e,i)=>{i.d(e,{XfaLayer:()=>XfaLayer});var s=i(521);class XfaLayer{static setupStorage(t,e,i,s,n){const a=s.getValue(e,{value:null});switch(i.name){case"textarea":null!==a.value&&(t.textContent=a.value);if("print"===n)break;t.addEventListener("input",(t=>{s.setValue(e,{value:t.target.value})}));break;case"input":if("radio"===i.attributes.type||"checkbox"===i.attributes.type){a.value===i.attributes.xfaOn?t.setAttribute("checked",!0):a.value===i.attributes.xfaOff&&t.removeAttribute("checked");if("print"===n)break;t.addEventListener("change",(t=>{s.setValue(e,{value:t.target.checked?t.target.getAttribute("xfaOn"):t.target.getAttribute("xfaOff")})}))}else{null!==a.value&&t.setAttribute("value",a.value);if("print"===n)break;t.addEventListener("input",(t=>{s.setValue(e,{value:t.target.value})}))}break;case"select":if(null!==a.value){t.setAttribute("value",a.value);for(const t of i.children)t.attributes.value===a.value?t.attributes.selected=!0:t.attributes.hasOwnProperty("selected")&&delete t.attributes.selected}t.addEventListener("input",(t=>{const i=t.target.options,n=-1===i.selectedIndex?"":i[i.selectedIndex].value;s.setValue(e,{value:n})}))}}static setAttributes({html:t,element:e,storage:i=null,intent:s,linkService:n}){const{attributes:a}=e,r=t instanceof HTMLAnchorElement;"radio"===a.type&&(a.name=`${a.name}-${s}`);for(const[e,i]of Object.entries(a))if(null!=i)switch(e){case"class":i.length&&t.setAttribute(e,i.join(" "));break;case"dataId":break;case"id":t.setAttribute("data-element-id",i);break;case"style":Object.assign(t.style,i);break;case"textContent":t.textContent=i;break;default:(!r||"href"!==e&&"newWindow"!==e)&&t.setAttribute(e,i)}r&&n.addLinkAttributes(t,a.href,a.newWindow);i&&a.dataId&&this.setupStorage(t,a.dataId,e,i)}static render(t){const e=t.annotationStorage,i=t.linkService,n=t.xfaHtml,a=t.intent||"display",r=document.createElement(n.name);n.attributes&&this.setAttributes({html:r,element:n,intent:a,linkService:i});const o="richText"!==a,l=t.div;l.append(r);if(t.viewport){const e=`matrix(${t.viewport.transform.join(",")})`;l.style.transform=e}o&&l.setAttribute("class","xfaLayer xfaFont");const h=[];if(0===n.children.length){if(n.value){const t=document.createTextNode(n.value);r.append(t);o&&s.XfaText.shouldBuildText(n.name)&&h.push(t)}return{textDivs:h}}const d=[[n,-1,r]];for(;d.length>0;){const[t,n,r]=d.at(-1);if(n+1===t.children.length){d.pop();continue}const l=t.children[++d.at(-1)[1]];if(null===l)continue;const{name:c}=l;if("#text"===c){const t=document.createTextNode(l.value);h.push(t);r.append(t);continue}const u=l?.attributes?.xmlns?document.createElementNS(l.attributes.xmlns,c):document.createElement(c);r.append(u);l.attributes&&this.setAttributes({html:u,element:l,storage:e,intent:a,linkService:i});if(l.children?.length>0)d.push([l,-1,u]);else if(l.value){const t=document.createTextNode(l.value);o&&s.XfaText.shouldBuildText(c)&&h.push(t);u.append(t)}}for(const t of l.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea"))t.setAttribute("readOnly",!0);return{textDivs:h}}static update(t){const e=`matrix(${t.viewport.transform.join(",")})`;t.div.style.transform=e;t.div.hidden=!1}}},521:(t,e,i)=>{i.d(e,{XfaText:()=>XfaText});class XfaText{static textContent(t){const e=[],i={items:e,styles:Object.create(null)};!function walk(t){if(!t)return;let i=null;const s=t.name;if("#text"===s)i=t.value;else{if(!XfaText.shouldBuildText(s))return;t?.attributes?.textContent?i=t.attributes.textContent:t.value&&(i=t.value)}null!==i&&e.push({str:i});if(t.children)for(const e of t.children)walk(e)}(t);return i}static shouldBuildText(t){return!("textarea"===t||"input"===t||"option"===t||"select"===t)}}},907:(t,e,i)=>{i.a(t,(async(t,s)=>{try{i.d(e,{AbortException:()=>n.AbortException,AnnotationEditorLayer:()=>l.AnnotationEditorLayer,AnnotationEditorParamsType:()=>n.AnnotationEditorParamsType,AnnotationEditorType:()=>n.AnnotationEditorType,AnnotationEditorUIManager:()=>h.AnnotationEditorUIManager,AnnotationLayer:()=>d.AnnotationLayer,AnnotationMode:()=>n.AnnotationMode,CMapCompressionType:()=>n.CMapCompressionType,ColorPicker:()=>c.ColorPicker,DOMSVGFactory:()=>r.DOMSVGFactory,DrawLayer:()=>u.DrawLayer,FeatureTest:()=>n.FeatureTest,GlobalWorkerOptions:()=>p.GlobalWorkerOptions,ImageKind:()=>n.ImageKind,InvalidPDFException:()=>n.InvalidPDFException,MissingPDFException:()=>n.MissingPDFException,OPS:()=>n.OPS,Outliner:()=>g.Outliner,PDFDataRangeTransport:()=>a.PDFDataRangeTransport,PDFDateString:()=>r.PDFDateString,PDFWorker:()=>a.PDFWorker,PasswordResponses:()=>n.PasswordResponses,PermissionFlag:()=>n.PermissionFlag,PixelsPerInch:()=>r.PixelsPerInch,PromiseCapability:()=>n.PromiseCapability,RenderingCancelledException:()=>r.RenderingCancelledException,UnexpectedResponseException:()=>n.UnexpectedResponseException,Util:()=>n.Util,VerbosityLevel:()=>n.VerbosityLevel,XfaLayer:()=>m.XfaLayer,build:()=>a.build,createValidAbsoluteUrl:()=>n.createValidAbsoluteUrl,fetchData:()=>r.fetchData,getDocument:()=>a.getDocument,getFilenameFromUrl:()=>r.getFilenameFromUrl,getPdfFilenameFromUrl:()=>r.getPdfFilenameFromUrl,getXfaPageViewport:()=>r.getXfaPageViewport,isDataScheme:()=>r.isDataScheme,isPdfFile:()=>r.isPdfFile,noContextMenu:()=>r.noContextMenu,normalizeUnicode:()=>n.normalizeUnicode,renderTextLayer:()=>o.renderTextLayer,setLayerDimensions:()=>r.setLayerDimensions,shadow:()=>n.shadow,updateTextLayer:()=>o.updateTextLayer,version:()=>a.version});var n=i(266),a=i(406),r=i(473),o=i(739),l=i(629),h=i(812),d=i(640),c=i(97),u=i(423),p=i(368),g=i(405),m=i(160),f=t([a]);a=(f.then?(await f)():f)[0];s()}catch(t){s(t)}}))},694:(t,e,i)=>{i.d(e,{MessageHandler:()=>MessageHandler});var s=i(266);const n=1,a=2,r=1,o=2,l=3,h=4,d=5,c=6,u=7,p=8;function wrapReason(t){t instanceof Error||"object"==typeof t&&null!==t||(0,s.unreachable)('wrapReason: Expected "reason" to be a (possibly cloned) Error.');switch(t.name){case"AbortException":return new s.AbortException(t.message);case"MissingPDFException":return new s.MissingPDFException(t.message);case"PasswordException":return new s.PasswordException(t.message,t.code);case"UnexpectedResponseException":return new s.UnexpectedResponseException(t.message,t.status);case"UnknownErrorException":return new s.UnknownErrorException(t.message,t.details);default:return new s.UnknownErrorException(t.message,t.toString())}}class MessageHandler{constructor(t,e,i){this.sourceName=t;this.targetName=e;this.comObj=i;this.callbackId=1;this.streamId=1;this.streamSinks=Object.create(null);this.streamControllers=Object.create(null);this.callbackCapabilities=Object.create(null);this.actionHandler=Object.create(null);this._onComObjOnMessage=t=>{const e=t.data;if(e.targetName!==this.sourceName)return;if(e.stream){this.#Gn(e);return}if(e.callback){const t=e.callbackId,i=this.callbackCapabilities[t];if(!i)throw new Error(`Cannot resolve callback ${t}`);delete this.callbackCapabilities[t];if(e.callback===n)i.resolve(e.data);else{if(e.callback!==a)throw new Error("Unexpected callback case");i.reject(wrapReason(e.reason))}return}const s=this.actionHandler[e.action];if(!s)throw new Error(`Unknown action from worker: ${e.action}`);if(e.callbackId){const t=this.sourceName,r=e.sourceName;new Promise((function(t){t(s(e.data))})).then((function(s){i.postMessage({sourceName:t,targetName:r,callback:n,callbackId:e.callbackId,data:s})}),(function(s){i.postMessage({sourceName:t,targetName:r,callback:a,callbackId:e.callbackId,reason:wrapReason(s)})}))}else e.streamId?this.#$n(e):s(e.data)};i.addEventListener("message",this._onComObjOnMessage)}on(t,e){const i=this.actionHandler;if(i[t])throw new Error(`There is already an actionName called "${t}"`);i[t]=e}send(t,e,i){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:t,data:e},i)}sendWithPromise(t,e,i){const n=this.callbackId++,a=new s.PromiseCapability;this.callbackCapabilities[n]=a;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:t,callbackId:n,data:e},i)}catch(t){a.reject(t)}return a.promise}sendWithStream(t,e,i,n){const a=this.streamId++,o=this.sourceName,l=this.targetName,h=this.comObj;return new ReadableStream({start:i=>{const r=new s.PromiseCapability;this.streamControllers[a]={controller:i,startCall:r,pullCall:null,cancelCall:null,isClosed:!1};h.postMessage({sourceName:o,targetName:l,action:t,streamId:a,data:e,desiredSize:i.desiredSize},n);return r.promise},pull:t=>{const e=new s.PromiseCapability;this.streamControllers[a].pullCall=e;h.postMessage({sourceName:o,targetName:l,stream:c,streamId:a,desiredSize:t.desiredSize});return e.promise},cancel:t=>{(0,s.assert)(t instanceof Error,"cancel must have a valid reason");const e=new s.PromiseCapability;this.streamControllers[a].cancelCall=e;this.streamControllers[a].isClosed=!0;h.postMessage({sourceName:o,targetName:l,stream:r,streamId:a,reason:wrapReason(t)});return e.promise}},i)}#$n(t){const e=t.streamId,i=this.sourceName,n=t.sourceName,a=this.comObj,r=this,o=this.actionHandler[t.action],c={enqueue(t,r=1,o){if(this.isCancelled)return;const l=this.desiredSize;this.desiredSize-=r;if(l>0&&this.desiredSize<=0){this.sinkCapability=new s.PromiseCapability;this.ready=this.sinkCapability.promise}a.postMessage({sourceName:i,targetName:n,stream:h,streamId:e,chunk:t},o)},close(){if(!this.isCancelled){this.isCancelled=!0;a.postMessage({sourceName:i,targetName:n,stream:l,streamId:e});delete r.streamSinks[e]}},error(t){(0,s.assert)(t instanceof Error,"error must have a valid reason");if(!this.isCancelled){this.isCancelled=!0;a.postMessage({sourceName:i,targetName:n,stream:d,streamId:e,reason:wrapReason(t)})}},sinkCapability:new s.PromiseCapability,onPull:null,onCancel:null,isCancelled:!1,desiredSize:t.desiredSize,ready:null};c.sinkCapability.resolve();c.ready=c.sinkCapability.promise;this.streamSinks[e]=c;new Promise((function(e){e(o(t.data,c))})).then((function(){a.postMessage({sourceName:i,targetName:n,stream:p,streamId:e,success:!0})}),(function(t){a.postMessage({sourceName:i,targetName:n,stream:p,streamId:e,reason:wrapReason(t)})}))}#Gn(t){const e=t.streamId,i=this.sourceName,n=t.sourceName,a=this.comObj,g=this.streamControllers[e],m=this.streamSinks[e];switch(t.stream){case p:t.success?g.startCall.resolve():g.startCall.reject(wrapReason(t.reason));break;case u:t.success?g.pullCall.resolve():g.pullCall.reject(wrapReason(t.reason));break;case c:if(!m){a.postMessage({sourceName:i,targetName:n,stream:u,streamId:e,success:!0});break}m.desiredSize<=0&&t.desiredSize>0&&m.sinkCapability.resolve();m.desiredSize=t.desiredSize;new Promise((function(t){t(m.onPull?.())})).then((function(){a.postMessage({sourceName:i,targetName:n,stream:u,streamId:e,success:!0})}),(function(t){a.postMessage({sourceName:i,targetName:n,stream:u,streamId:e,reason:wrapReason(t)})}));break;case h:(0,s.assert)(g,"enqueue should have stream controller");if(g.isClosed)break;g.controller.enqueue(t.chunk);break;case l:(0,s.assert)(g,"close should have stream controller");if(g.isClosed)break;g.isClosed=!0;g.controller.close();this.#Kn(g,e);break;case d:(0,s.assert)(g,"error should have stream controller");g.controller.error(wrapReason(t.reason));this.#Kn(g,e);break;case o:t.success?g.cancelCall.resolve():g.cancelCall.reject(wrapReason(t.reason));this.#Kn(g,e);break;case r:if(!m)break;new Promise((function(e){e(m.onCancel?.(wrapReason(t.reason)))})).then((function(){a.postMessage({sourceName:i,targetName:n,stream:o,streamId:e,success:!0})}),(function(t){a.postMessage({sourceName:i,targetName:n,stream:o,streamId:e,reason:wrapReason(t)})}));m.sinkCapability.reject(wrapReason(t.reason));m.isCancelled=!0;delete this.streamSinks[e];break;default:throw new Error("Unexpected stream case")}}async#Kn(t,e){await Promise.allSettled([t.startCall?.promise,t.pullCall?.promise,t.cancelCall?.promise]);delete this.streamControllers[e]}destroy(){this.comObj.removeEventListener("message",this._onComObjOnMessage)}}},825:(t,e,i)=>{i.d(e,{MurmurHash3_64:()=>MurmurHash3_64});var s=i(266);const n=3285377520,a=4294901760,r=65535;class MurmurHash3_64{constructor(t){this.h1=t?4294967295&t:n;this.h2=t?4294967295&t:n}update(t){let e,i;if("string"==typeof t){e=new Uint8Array(2*t.length);i=0;for(let s=0,n=t.length;s>>8;e[i++]=255&n}}}else{if(!(0,s.isArrayBuffer)(t))throw new Error("Wrong data format in MurmurHash3_64_update. Input must be a string or array.");e=t.slice();i=e.byteLength}const n=i>>2,o=i-4*n,l=new Uint32Array(e.buffer,0,n);let h=0,d=0,c=this.h1,u=this.h2;const p=3432918353,g=461845907,m=11601,f=13715;for(let t=0;t>>17;h=h*g&a|h*f&r;c^=h;c=c<<13|c>>>19;c=5*c+3864292196}else{d=l[t];d=d*p&a|d*m&r;d=d<<15|d>>>17;d=d*g&a|d*f&r;u^=d;u=u<<13|u>>>19;u=5*u+3864292196}h=0;switch(o){case 3:h^=e[4*n+2]<<16;case 2:h^=e[4*n+1]<<8;case 1:h^=e[4*n];h=h*p&a|h*m&r;h=h<<15|h>>>17;h=h*g&a|h*f&r;1&n?c^=h:u^=h}this.h1=c;this.h2=u}hexdigest(){let t=this.h1,e=this.h2;t^=e>>>1;t=3981806797*t&a|36045*t&r;e=4283543511*e&a|(2950163797*(e<<16|t>>>16)&a)>>>16;t^=e>>>1;t=444984403*t&a|60499*t&r;e=3301882366*e&a|(3120437893*(e<<16|t>>>16)&a)>>>16;t^=e>>>1;return(t>>>0).toString(16).padStart(8,"0")+(e>>>0).toString(16).padStart(8,"0")}}},266:(t,e,i)=>{i.d(e,{AbortException:()=>AbortException,AnnotationBorderStyleType:()=>b,AnnotationEditorParamsType:()=>u,AnnotationEditorPrefix:()=>d,AnnotationEditorType:()=>c,AnnotationMode:()=>h,AnnotationPrefix:()=>T,AnnotationType:()=>f,BaseException:()=>w,CMapCompressionType:()=>v,FONT_IDENTITY_MATRIX:()=>a,FeatureTest:()=>FeatureTest,FormatError:()=>FormatError,IDENTITY_MATRIX:()=>n,ImageKind:()=>m,InvalidPDFException:()=>InvalidPDFException,LINE_FACTOR:()=>o,MAX_IMAGE_SIZE_TO_CACHE:()=>r,MissingPDFException:()=>MissingPDFException,OPS:()=>y,PasswordException:()=>PasswordException,PasswordResponses:()=>E,PermissionFlag:()=>p,PromiseCapability:()=>PromiseCapability,RenderingIntentFlag:()=>l,TextRenderingMode:()=>g,UnexpectedResponseException:()=>UnexpectedResponseException,UnknownErrorException:()=>UnknownErrorException,Util:()=>Util,VerbosityLevel:()=>A,assert:()=>assert,bytesToString:()=>bytesToString,createValidAbsoluteUrl:()=>createValidAbsoluteUrl,getUuid:()=>getUuid,getVerbosityLevel:()=>getVerbosityLevel,info:()=>info,isArrayBuffer:()=>isArrayBuffer,isNodeJS:()=>s,normalizeUnicode:()=>normalizeUnicode,objectFromMap:()=>objectFromMap,setVerbosityLevel:()=>setVerbosityLevel,shadow:()=>shadow,string32:()=>string32,stringToBytes:()=>stringToBytes,unreachable:()=>unreachable,warn:()=>warn});const s=!("object"!=typeof process||process+""!="[object process]"||process.versions.nw||process.versions.electron&&process.type&&"browser"!==process.type),n=[1,0,0,1,0,0],a=[.001,0,0,.001,0,0],r=1e7,o=1.35,l={ANY:1,DISPLAY:2,PRINT:4,SAVE:8,ANNOTATIONS_FORMS:16,ANNOTATIONS_STORAGE:32,ANNOTATIONS_DISABLE:64,OPLIST:256},h={DISABLE:0,ENABLE:1,ENABLE_FORMS:2,ENABLE_STORAGE:3},d="pdfjs_internal_editor_",c={DISABLE:-1,NONE:0,FREETEXT:3,HIGHLIGHT:9,STAMP:13,INK:15},u={RESIZE:1,CREATE:2,FREETEXT_SIZE:11,FREETEXT_COLOR:12,FREETEXT_OPACITY:13,INK_COLOR:21,INK_THICKNESS:22,INK_OPACITY:23,HIGHLIGHT_COLOR:31,HIGHLIGHT_DEFAULT_COLOR:32},p={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048},g={FILL:0,STROKE:1,FILL_STROKE:2,INVISIBLE:3,FILL_ADD_TO_PATH:4,STROKE_ADD_TO_PATH:5,FILL_STROKE_ADD_TO_PATH:6,ADD_TO_PATH:7,FILL_STROKE_MASK:3,ADD_TO_PATH_FLAG:4},m={GRAYSCALE_1BPP:1,RGB_24BPP:2,RGBA_32BPP:3},f={TEXT:1,LINK:2,FREETEXT:3,LINE:4,SQUARE:5,CIRCLE:6,POLYGON:7,POLYLINE:8,HIGHLIGHT:9,UNDERLINE:10,SQUIGGLY:11,STRIKEOUT:12,STAMP:13,CARET:14,INK:15,POPUP:16,FILEATTACHMENT:17,SOUND:18,MOVIE:19,WIDGET:20,SCREEN:21,PRINTERMARK:22,TRAPNET:23,WATERMARK:24,THREED:25,REDACT:26},b={SOLID:1,DASHED:2,BEVELED:3,INSET:4,UNDERLINE:5},A={ERRORS:0,WARNINGS:1,INFOS:5},v={NONE:0,BINARY:1},y={dependency:1,setLineWidth:2,setLineCap:3,setLineJoin:4,setMiterLimit:5,setDash:6,setRenderingIntent:7,setFlatness:8,setGState:9,save:10,restore:11,transform:12,moveTo:13,lineTo:14,curveTo:15,curveTo2:16,curveTo3:17,closePath:18,rectangle:19,stroke:20,closeStroke:21,fill:22,eoFill:23,fillStroke:24,eoFillStroke:25,closeFillStroke:26,closeEOFillStroke:27,endPath:28,clip:29,eoClip:30,beginText:31,endText:32,setCharSpacing:33,setWordSpacing:34,setHScale:35,setLeading:36,setFont:37,setTextRenderingMode:38,setTextRise:39,moveText:40,setLeadingMoveText:41,setTextMatrix:42,nextLine:43,showText:44,showSpacedText:45,nextLineShowText:46,nextLineSetSpacingShowText:47,setCharWidth:48,setCharWidthAndBounds:49,setStrokeColorSpace:50,setFillColorSpace:51,setStrokeColor:52,setStrokeColorN:53,setFillColor:54,setFillColorN:55,setStrokeGray:56,setFillGray:57,setStrokeRGBColor:58,setFillRGBColor:59,setStrokeCMYKColor:60,setFillCMYKColor:61,shadingFill:62,beginInlineImage:63,beginImageData:64,endInlineImage:65,paintXObject:66,markPoint:67,markPointProps:68,beginMarkedContent:69,beginMarkedContentProps:70,endMarkedContent:71,beginCompat:72,endCompat:73,paintFormXObjectBegin:74,paintFormXObjectEnd:75,beginGroup:76,endGroup:77,beginAnnotation:80,endAnnotation:81,paintImageMaskXObject:83,paintImageMaskXObjectGroup:84,paintImageXObject:85,paintInlineImageXObject:86,paintInlineImageXObjectGroup:87,paintImageXObjectRepeat:88,paintImageMaskXObjectRepeat:89,paintSolidColorImageMask:90,constructPath:91},E={NEED_PASSWORD:1,INCORRECT_PASSWORD:2};let _=A.WARNINGS;function setVerbosityLevel(t){Number.isInteger(t)&&(_=t)}function getVerbosityLevel(){return _}function info(t){_>=A.INFOS&&console.log(`Info: ${t}`)}function warn(t){_>=A.WARNINGS&&console.log(`Warning: ${t}`)}function unreachable(t){throw new Error(t)}function assert(t,e){t||unreachable(e)}function createValidAbsoluteUrl(t,e=null,i=null){if(!t)return null;try{if(i&&"string"==typeof t){if(i.addDefaultProtocol&&t.startsWith("www.")){const e=t.match(/\./g);e?.length>=2&&(t=`http://${t}`)}if(i.tryConvertEncoding)try{t=function stringToUTF8String(t){return decodeURIComponent(escape(t))}(t)}catch{}}const s=e?new URL(t,e):new URL(t);if(function _isValidProtocol(t){switch(t?.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}(s))return s}catch{}return null}function shadow(t,e,i,s=!1){Object.defineProperty(t,e,{value:i,enumerable:!s,configurable:!0,writable:!1});return i}const w=function BaseExceptionClosure(){function BaseException(t,e){this.constructor===BaseException&&unreachable("Cannot initialize BaseException.");this.message=t;this.name=e}BaseException.prototype=new Error;BaseException.constructor=BaseException;return BaseException}();class PasswordException extends w{constructor(t,e){super(t,"PasswordException");this.code=e}}class UnknownErrorException extends w{constructor(t,e){super(t,"UnknownErrorException");this.details=e}}class InvalidPDFException extends w{constructor(t){super(t,"InvalidPDFException")}}class MissingPDFException extends w{constructor(t){super(t,"MissingPDFException")}}class UnexpectedResponseException extends w{constructor(t,e){super(t,"UnexpectedResponseException");this.status=e}}class FormatError extends w{constructor(t){super(t,"FormatError")}}class AbortException extends w{constructor(t){super(t,"AbortException")}}function bytesToString(t){"object"==typeof t&&void 0!==t?.length||unreachable("Invalid argument for bytesToString");const e=t.length,i=8192;if(e>24&255,t>>16&255,t>>8&255,255&t)}function objectFromMap(t){const e=Object.create(null);for(const[i,s]of t)e[i]=s;return e}class FeatureTest{static get isLittleEndian(){return shadow(this,"isLittleEndian",function isLittleEndian(){const t=new Uint8Array(4);t[0]=1;return 1===new Uint32Array(t.buffer,0,1)[0]}())}static get isEvalSupported(){return shadow(this,"isEvalSupported",function isEvalSupported(){try{new Function("");return!0}catch{return!1}}())}static get isOffscreenCanvasSupported(){return shadow(this,"isOffscreenCanvasSupported","undefined"!=typeof OffscreenCanvas)}static get platform(){return"undefined"!=typeof navigator&&"string"==typeof navigator?.platform?shadow(this,"platform",{isMac:navigator.platform.includes("Mac")}):shadow(this,"platform",{isMac:!1})}static get isCSSRoundSupported(){return shadow(this,"isCSSRoundSupported",globalThis.CSS?.supports?.("width: round(1.5px, 1px)"))}}const x=[...Array(256).keys()].map((t=>t.toString(16).padStart(2,"0")));class Util{static makeHexColor(t,e,i){return`#${x[t]}${x[e]}${x[i]}`}static scaleMinMax(t,e){let i;if(t[0]){if(t[0]<0){i=e[0];e[0]=e[1];e[1]=i}e[0]*=t[0];e[1]*=t[0];if(t[3]<0){i=e[2];e[2]=e[3];e[3]=i}e[2]*=t[3];e[3]*=t[3]}else{i=e[0];e[0]=e[2];e[2]=i;i=e[1];e[1]=e[3];e[3]=i;if(t[1]<0){i=e[2];e[2]=e[3];e[3]=i}e[2]*=t[1];e[3]*=t[1];if(t[2]<0){i=e[0];e[0]=e[1];e[1]=i}e[0]*=t[2];e[1]*=t[2]}e[0]+=t[4];e[1]+=t[4];e[2]+=t[5];e[3]+=t[5]}static transform(t,e){return[t[0]*e[0]+t[2]*e[1],t[1]*e[0]+t[3]*e[1],t[0]*e[2]+t[2]*e[3],t[1]*e[2]+t[3]*e[3],t[0]*e[4]+t[2]*e[5]+t[4],t[1]*e[4]+t[3]*e[5]+t[5]]}static applyTransform(t,e){return[t[0]*e[0]+t[1]*e[2]+e[4],t[0]*e[1]+t[1]*e[3]+e[5]]}static applyInverseTransform(t,e){const i=e[0]*e[3]-e[1]*e[2];return[(t[0]*e[3]-t[1]*e[2]+e[2]*e[5]-e[4]*e[3])/i,(-t[0]*e[1]+t[1]*e[0]+e[4]*e[1]-e[5]*e[0])/i]}static getAxialAlignedBoundingBox(t,e){const i=this.applyTransform(t,e),s=this.applyTransform(t.slice(2,4),e),n=this.applyTransform([t[0],t[3]],e),a=this.applyTransform([t[2],t[1]],e);return[Math.min(i[0],s[0],n[0],a[0]),Math.min(i[1],s[1],n[1],a[1]),Math.max(i[0],s[0],n[0],a[0]),Math.max(i[1],s[1],n[1],a[1])]}static inverseTransform(t){const e=t[0]*t[3]-t[1]*t[2];return[t[3]/e,-t[1]/e,-t[2]/e,t[0]/e,(t[2]*t[5]-t[4]*t[3])/e,(t[4]*t[1]-t[5]*t[0])/e]}static singularValueDecompose2dScale(t){const e=[t[0],t[2],t[1],t[3]],i=t[0]*e[0]+t[1]*e[2],s=t[0]*e[1]+t[1]*e[3],n=t[2]*e[0]+t[3]*e[2],a=t[2]*e[1]+t[3]*e[3],r=(i+a)/2,o=Math.sqrt((i+a)**2-4*(i*a-n*s))/2,l=r+o||1,h=r-o||1;return[Math.sqrt(l),Math.sqrt(h)]}static normalizeRect(t){const e=t.slice(0);if(t[0]>t[2]){e[0]=t[2];e[2]=t[0]}if(t[1]>t[3]){e[1]=t[3];e[3]=t[1]}return e}static intersect(t,e){const i=Math.max(Math.min(t[0],t[2]),Math.min(e[0],e[2])),s=Math.min(Math.max(t[0],t[2]),Math.max(e[0],e[2]));if(i>s)return null;const n=Math.max(Math.min(t[1],t[3]),Math.min(e[1],e[3])),a=Math.min(Math.max(t[1],t[3]),Math.max(e[1],e[3]));return n>a?null:[i,n,s,a]}static bezierBoundingBox(t,e,i,s,n,a,r,o){const l=[],h=[[],[]];let d,c,u,p,g,m,f,b;for(let h=0;h<2;++h){if(0===h){c=6*t-12*i+6*n;d=-3*t+9*i-9*n+3*r;u=3*i-3*t}else{c=6*e-12*s+6*a;d=-3*e+9*s-9*a+3*o;u=3*s-3*e}if(Math.abs(d)<1e-12){if(Math.abs(c)<1e-12)continue;p=-u/c;0{this.resolve=e=>{this.#Xn=!0;t(e)};this.reject=t=>{this.#Xn=!0;e(t)}}))}get settled(){return this.#Xn}}let C=null,S=null;function normalizeUnicode(t){if(!C){C=/([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc-\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa-\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu;S=new Map([["ſt","ſt"]])}return t.replaceAll(C,((t,e,i)=>e?e.normalize("NFKC"):S.get(i)))}function getUuid(){if("undefined"!=typeof crypto&&"function"==typeof crypto?.randomUUID)return crypto.randomUUID();const t=new Uint8Array(32);if("undefined"!=typeof crypto&&"function"==typeof crypto?.getRandomValues)crypto.getRandomValues(t);else for(let e=0;e<32;e++)t[e]=Math.floor(255*Math.random());return bytesToString(t)}const T="pdfjs_internal_id_"}},a={};function __webpack_require__(t){var e=a[t];if(void 0!==e)return e.exports;var i=a[t]={exports:{}};n[t](i,i.exports,__webpack_require__);return i.exports}t="function"==typeof Symbol?Symbol("webpack queues"):"__webpack_queues__",e="function"==typeof Symbol?Symbol("webpack exports"):"__webpack_exports__",i="function"==typeof Symbol?Symbol("webpack error"):"__webpack_error__",s=t=>{if(t&&t.d<1){t.d=1;t.forEach((t=>t.r--));t.forEach((t=>t.r--?t.r++:t()))}},__webpack_require__.a=(n,a,r)=>{var o;r&&((o=[]).d=-1);var l,h,d,c=new Set,u=n.exports,p=new Promise(((t,e)=>{d=e;h=t}));p[e]=u;p[t]=t=>(o&&t(o),c.forEach(t),p.catch((t=>{})));n.exports=p;a((n=>{l=(n=>n.map((n=>{if(null!==n&&"object"==typeof n){if(n[t])return n;if(n.then){var a=[];a.d=0;n.then((t=>{r[e]=t;s(a)}),(t=>{r[i]=t;s(a)}));var r={};r[t]=t=>t(a);return r}}var o={};o[t]=t=>{};o[e]=n;return o})))(n);var a,getResult=()=>l.map((t=>{if(t[i])throw t[i];return t[e]})),r=new Promise((e=>{(a=()=>e(getResult)).r=0;var fnQueue=t=>t!==o&&!c.has(t)&&(c.add(t),t&&!t.d&&(a.r++,t.push(a)));l.map((e=>e[t](fnQueue)))}));return a.r?r:getResult()}),(t=>(t?d(p[i]=t):h(u),s(o))));o&&o.d<0&&(o.d=0)};__webpack_require__.d=(t,e)=>{for(var i in e)__webpack_require__.o(e,i)&&!__webpack_require__.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})};__webpack_require__.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var r=__webpack_require__(907),o=(r=globalThis.pdfjsLib=await(globalThis.pdfjsLibPromise=r)).AbortException,l=r.AnnotationEditorLayer,h=r.AnnotationEditorParamsType,d=r.AnnotationEditorType,c=r.AnnotationEditorUIManager,u=r.AnnotationLayer,p=r.AnnotationMode,g=r.CMapCompressionType,m=r.ColorPicker,f=r.DOMSVGFactory,b=r.DrawLayer,A=r.FeatureTest,v=r.GlobalWorkerOptions,y=r.ImageKind,E=r.InvalidPDFException,_=r.MissingPDFException,w=r.OPS,x=r.Outliner,C=r.PDFDataRangeTransport,S=r.PDFDateString,T=r.PDFWorker,M=r.PasswordResponses,P=r.PermissionFlag,F=r.PixelsPerInch,R=r.PromiseCapability,k=r.RenderingCancelledException,D=r.UnexpectedResponseException,I=r.Util,L=r.VerbosityLevel,O=r.XfaLayer,B=r.build,N=r.createValidAbsoluteUrl,U=r.fetchData,z=r.getDocument,H=r.getFilenameFromUrl,j=r.getPdfFilenameFromUrl,V=r.getXfaPageViewport,W=r.isDataScheme,q=r.isPdfFile,G=r.noContextMenu,$=r.normalizeUnicode,K=r.renderTextLayer,X=r.setLayerDimensions,Y=r.shadow,J=r.updateTextLayer,Q=r.version;export{o as AbortException,l as AnnotationEditorLayer,h as AnnotationEditorParamsType,d as AnnotationEditorType,c as AnnotationEditorUIManager,u as AnnotationLayer,p as AnnotationMode,g as CMapCompressionType,m as ColorPicker,f as DOMSVGFactory,b as DrawLayer,A as FeatureTest,v as GlobalWorkerOptions,y as ImageKind,E as InvalidPDFException,_ as MissingPDFException,w as OPS,x as Outliner,C as PDFDataRangeTransport,S as PDFDateString,T as PDFWorker,M as PasswordResponses,P as PermissionFlag,F as PixelsPerInch,R as PromiseCapability,k as RenderingCancelledException,D as UnexpectedResponseException,I as Util,L as VerbosityLevel,O as XfaLayer,B as build,N as createValidAbsoluteUrl,U as fetchData,z as getDocument,H as getFilenameFromUrl,j as getPdfFilenameFromUrl,V as getXfaPageViewport,W as isDataScheme,q as isPdfFile,G as noContextMenu,$ as normalizeUnicode,K as renderTextLayer,X as setLayerDimensions,Y as shadow,J as updateTextLayer,Q as version}; \ No newline at end of file diff --git a/blazorbootstrap/wwwroot/pdfjs-4.0.379.worker.min.mjs b/blazorbootstrap/wwwroot/pdfjs-4.0.379.worker.min.mjs new file mode 100644 index 000000000..87a3ad8dc --- /dev/null +++ b/blazorbootstrap/wwwroot/pdfjs-4.0.379.worker.min.mjs @@ -0,0 +1,22 @@ +/** + * @licstart The following is the entire license notice for the + * JavaScript code in this page + * + * Copyright 2023 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @licend The above is the entire license notice for the + * JavaScript code in this page + */ + var e={d:(t,a)=>{for(var r in a)e.o(a,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:a[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t=globalThis.pdfjsWorker={};e.d(t,{WorkerMessageHandler:()=>WorkerMessageHandler});const a=!("object"!=typeof process||process+""!="[object process]"||process.versions.nw||process.versions.electron&&process.type&&"browser"!==process.type),r=[1,0,0,1,0,0],i=[.001,0,0,.001,0,0],n=1.35,s=.35,o=.25925925925925924,c=1,l=2,h=4,u=8,d=16,f=64,g=256,p="pdfjs_internal_editor_",m=3,b=9,y=13,w=15,x={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048},k=0,S=4,C=1,v=2,F=3,O=1,T=2,M=3,D=4,R=5,N=6,E=7,L=8,j=9,_=10,U=11,X=12,q=13,H=14,z=15,W=16,$=17,G=20,V="Group",K="R",J=1,Y=2,Z=4,Q=16,ee=32,te=128,ae=512,re=1,ie=2,ne=4096,se=8192,oe=32768,ce=65536,le=131072,he=1048576,ue=2097152,de=8388608,fe=16777216,ge=1,pe=2,me=3,be=4,ye=5,we={E:"Mouse Enter",X:"Mouse Exit",D:"Mouse Down",U:"Mouse Up",Fo:"Focus",Bl:"Blur",PO:"PageOpen",PC:"PageClose",PV:"PageVisible",PI:"PageInvisible",K:"Keystroke",F:"Format",V:"Validate",C:"Calculate"},xe={WC:"WillClose",WS:"WillSave",DS:"DidSave",WP:"WillPrint",DP:"DidPrint"},ke={O:"PageOpen",C:"PageClose"},Se={ERRORS:0,WARNINGS:1,INFOS:5},Ae={NONE:0,BINARY:1},Ce=1,ve=2,Fe=3,Ie=4,Oe=5,Te=6,Me=7,De=8,Be=9,Re=10,Ne=11,Ee=12,Pe=13,Le=14,je=15,_e=16,Ue=17,Xe=18,qe=19,He=20,ze=21,We=22,$e=23,Ge=24,Ve=25,Ke=26,Je=27,Ye=28,Ze=29,Qe=30,et=31,tt=32,at=33,rt=34,it=35,nt=36,st=37,ot=38,ct=39,lt=40,ht=41,ut=42,dt=43,ft=44,gt=45,pt=46,mt=47,bt=48,yt=49,wt=50,xt=51,kt=52,St=53,At=54,Ct=55,vt=56,Ft=57,It=58,Ot=59,Tt=60,Mt=61,Dt=62,Bt=63,Rt=64,Nt=65,Et=66,Pt=67,Lt=68,jt=69,_t=70,Ut=71,Xt=72,qt=73,Ht=74,zt=75,Wt=76,$t=77,Gt=80,Vt=81,Kt=83,Jt=84,Yt=85,Zt=86,Qt=87,ea=88,ta=89,aa=90,ra=91,ia=1,na=2;let sa=Se.WARNINGS;function getVerbosityLevel(){return sa}function info(e){sa>=Se.INFOS&&console.log(`Info: ${e}`)}function warn(e){sa>=Se.WARNINGS&&console.log(`Warning: ${e}`)}function unreachable(e){throw new Error(e)}function assert(e,t){e||unreachable(t)}function createValidAbsoluteUrl(e,t=null,a=null){if(!e)return null;try{if(a&&"string"==typeof e){if(a.addDefaultProtocol&&e.startsWith("www.")){const t=e.match(/\./g);t?.length>=2&&(e=`http://${e}`)}if(a.tryConvertEncoding)try{e=stringToUTF8String(e)}catch{}}const r=t?new URL(e,t):new URL(e);if(function _isValidProtocol(e){switch(e?.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}(r))return r}catch{}return null}function shadow(e,t,a,r=!1){Object.defineProperty(e,t,{value:a,enumerable:!r,configurable:!0,writable:!1});return a}const oa=function BaseExceptionClosure(){function BaseException(e,t){this.constructor===BaseException&&unreachable("Cannot initialize BaseException.");this.message=e;this.name=t}BaseException.prototype=new Error;BaseException.constructor=BaseException;return BaseException}();class PasswordException extends oa{constructor(e,t){super(e,"PasswordException");this.code=t}}class UnknownErrorException extends oa{constructor(e,t){super(e,"UnknownErrorException");this.details=t}}class InvalidPDFException extends oa{constructor(e){super(e,"InvalidPDFException")}}class MissingPDFException extends oa{constructor(e){super(e,"MissingPDFException")}}class UnexpectedResponseException extends oa{constructor(e,t){super(e,"UnexpectedResponseException");this.status=t}}class FormatError extends oa{constructor(e){super(e,"FormatError")}}class AbortException extends oa{constructor(e){super(e,"AbortException")}}function bytesToString(e){"object"==typeof e&&void 0!==e?.length||unreachable("Invalid argument for bytesToString");const t=e.length,a=8192;if(t>24&255,e>>16&255,e>>8&255,255&e)}function objectSize(e){return Object.keys(e).length}class FeatureTest{static get isLittleEndian(){return shadow(this,"isLittleEndian",function isLittleEndian(){const e=new Uint8Array(4);e[0]=1;return 1===new Uint32Array(e.buffer,0,1)[0]}())}static get isEvalSupported(){return shadow(this,"isEvalSupported",function isEvalSupported(){try{new Function("");return!0}catch{return!1}}())}static get isOffscreenCanvasSupported(){return shadow(this,"isOffscreenCanvasSupported","undefined"!=typeof OffscreenCanvas)}static get platform(){return"undefined"!=typeof navigator&&"string"==typeof navigator?.platform?shadow(this,"platform",{isMac:navigator.platform.includes("Mac")}):shadow(this,"platform",{isMac:!1})}static get isCSSRoundSupported(){return shadow(this,"isCSSRoundSupported",globalThis.CSS?.supports?.("width: round(1.5px, 1px)"))}}const ca=[...Array(256).keys()].map((e=>e.toString(16).padStart(2,"0")));class Util{static makeHexColor(e,t,a){return`#${ca[e]}${ca[t]}${ca[a]}`}static scaleMinMax(e,t){let a;if(e[0]){if(e[0]<0){a=t[0];t[0]=t[1];t[1]=a}t[0]*=e[0];t[1]*=e[0];if(e[3]<0){a=t[2];t[2]=t[3];t[3]=a}t[2]*=e[3];t[3]*=e[3]}else{a=t[0];t[0]=t[2];t[2]=a;a=t[1];t[1]=t[3];t[3]=a;if(e[1]<0){a=t[2];t[2]=t[3];t[3]=a}t[2]*=e[1];t[3]*=e[1];if(e[2]<0){a=t[0];t[0]=t[1];t[1]=a}t[0]*=e[2];t[1]*=e[2]}t[0]+=e[4];t[1]+=e[4];t[2]+=e[5];t[3]+=e[5]}static transform(e,t){return[e[0]*t[0]+e[2]*t[1],e[1]*t[0]+e[3]*t[1],e[0]*t[2]+e[2]*t[3],e[1]*t[2]+e[3]*t[3],e[0]*t[4]+e[2]*t[5]+e[4],e[1]*t[4]+e[3]*t[5]+e[5]]}static applyTransform(e,t){return[e[0]*t[0]+e[1]*t[2]+t[4],e[0]*t[1]+e[1]*t[3]+t[5]]}static applyInverseTransform(e,t){const a=t[0]*t[3]-t[1]*t[2];return[(e[0]*t[3]-e[1]*t[2]+t[2]*t[5]-t[4]*t[3])/a,(-e[0]*t[1]+e[1]*t[0]+t[4]*t[1]-t[5]*t[0])/a]}static getAxialAlignedBoundingBox(e,t){const a=this.applyTransform(e,t),r=this.applyTransform(e.slice(2,4),t),i=this.applyTransform([e[0],e[3]],t),n=this.applyTransform([e[2],e[1]],t);return[Math.min(a[0],r[0],i[0],n[0]),Math.min(a[1],r[1],i[1],n[1]),Math.max(a[0],r[0],i[0],n[0]),Math.max(a[1],r[1],i[1],n[1])]}static inverseTransform(e){const t=e[0]*e[3]-e[1]*e[2];return[e[3]/t,-e[1]/t,-e[2]/t,e[0]/t,(e[2]*e[5]-e[4]*e[3])/t,(e[4]*e[1]-e[5]*e[0])/t]}static singularValueDecompose2dScale(e){const t=[e[0],e[2],e[1],e[3]],a=e[0]*t[0]+e[1]*t[2],r=e[0]*t[1]+e[1]*t[3],i=e[2]*t[0]+e[3]*t[2],n=e[2]*t[1]+e[3]*t[3],s=(a+n)/2,o=Math.sqrt((a+n)**2-4*(a*n-i*r))/2,c=s+o||1,l=s-o||1;return[Math.sqrt(c),Math.sqrt(l)]}static normalizeRect(e){const t=e.slice(0);if(e[0]>e[2]){t[0]=e[2];t[2]=e[0]}if(e[1]>e[3]){t[1]=e[3];t[3]=e[1]}return t}static intersect(e,t){const a=Math.max(Math.min(e[0],e[2]),Math.min(t[0],t[2])),r=Math.min(Math.max(e[0],e[2]),Math.max(t[0],t[2]));if(a>r)return null;const i=Math.max(Math.min(e[1],e[3]),Math.min(t[1],t[3])),n=Math.min(Math.max(e[1],e[3]),Math.max(t[1],t[3]));return i>n?null:[a,i,r,n]}static bezierBoundingBox(e,t,a,r,i,n,s,o){const c=[],l=[[],[]];let h,u,d,f,g,p,m,b;for(let l=0;l<2;++l){if(0===l){u=6*e-12*a+6*i;h=-3*e+9*a-9*i+3*s;d=3*a-3*e}else{u=6*t-12*r+6*n;h=-3*t+9*r-9*n+3*o;d=3*r-3*t}if(Math.abs(h)<1e-12){if(Math.abs(u)<1e-12)continue;f=-d/u;0="ï"){let t;if("þ"===e[0]&&"ÿ"===e[1]){t="utf-16be";e.length%2==1&&(e=e.slice(0,-1))}else if("ÿ"===e[0]&&"þ"===e[1]){t="utf-16le";e.length%2==1&&(e=e.slice(0,-1))}else"ï"===e[0]&&"»"===e[1]&&"¿"===e[2]&&(t="utf-8");if(t)try{const a=new TextDecoder(t,{fatal:!0}),r=stringToBytes(e),i=a.decode(r);return i.includes("")?i.replaceAll(/\x1b[^\x1b]*(?:\x1b|$)/g,""):i}catch(e){warn(`stringToPDFString: "${e}".`)}}const t=[];for(let a=0,r=e.length;a{this.resolve=t=>{this.#e=!0;e(t)};this.reject=e=>{this.#e=!0;t(e)}}))}get settled(){return this.#e}}let ha=null,ua=null;const da=Symbol("CIRCULAR_REF"),fa=Symbol("EOF");let ga=Object.create(null),pa=Object.create(null),ma=Object.create(null);class Name{constructor(e){this.name=e}static get(e){return pa[e]||=new Name(e)}}class Cmd{constructor(e){this.cmd=e}static get(e){return ga[e]||=new Cmd(e)}}const ba=function nonSerializableClosure(){return ba};class Dict{constructor(e=null){this._map=Object.create(null);this.xref=e;this.objId=null;this.suppressEncryption=!1;this.__nonSerializable__=ba}assignXref(e){this.xref=e}get size(){return Object.keys(this._map).length}get(e,t,a){let r=this._map[e];if(void 0===r&&void 0!==t){r=this._map[t];void 0===r&&void 0!==a&&(r=this._map[a])}return r instanceof Ref&&this.xref?this.xref.fetch(r,this.suppressEncryption):r}async getAsync(e,t,a){let r=this._map[e];if(void 0===r&&void 0!==t){r=this._map[t];void 0===r&&void 0!==a&&(r=this._map[a])}return r instanceof Ref&&this.xref?this.xref.fetchAsync(r,this.suppressEncryption):r}getArray(e,t,a){let r=this._map[e];if(void 0===r&&void 0!==t){r=this._map[t];void 0===r&&void 0!==a&&(r=this._map[a])}r instanceof Ref&&this.xref&&(r=this.xref.fetch(r,this.suppressEncryption));if(Array.isArray(r)){r=r.slice();for(let e=0,t=r.length;e{unreachable("Should not call `set` on the empty dictionary.")};return shadow(this,"empty",e)}static merge({xref:e,dictArray:t,mergeSubDicts:a=!1}){const r=new Dict(e),i=new Map;for(const e of t)if(e instanceof Dict)for(const[t,r]of Object.entries(e._map)){let e=i.get(t);if(void 0===e){e=[];i.set(t,e)}else if(!(a&&r instanceof Dict))continue;e.push(r)}for(const[t,a]of i){if(1===a.length||!(a[0]instanceof Dict)){r._map[t]=a[0];continue}const i=new Dict(e);for(const e of a)for(const[t,a]of Object.entries(e._map))void 0===i._map[t]&&(i._map[t]=a);i.size>0&&(r._map[t]=i)}i.clear();return r.size>0?r:Dict.empty}clone(){const e=new Dict(this.xref);for(const t of this.getKeys())e.set(t,this.getRaw(t));return e}}class Ref{constructor(e,t){this.num=e;this.gen=t}toString(){return 0===this.gen?`${this.num}R`:`${this.num}R${this.gen}`}static fromString(e){const t=ma[e];if(t)return t;const a=/^(\d+)R(\d*)$/.exec(e);return a&&"0"!==a[1]?ma[e]=new Ref(parseInt(a[1]),a[2]?parseInt(a[2]):0):null}static get(e,t){const a=0===t?`${e}R`:`${e}R${t}`;return ma[a]||=new Ref(e,t)}}class RefSet{constructor(e=null){this._set=new Set(e?._set)}has(e){return this._set.has(e.toString())}put(e){this._set.add(e.toString())}remove(e){this._set.delete(e.toString())}[Symbol.iterator](){return this._set.values()}clear(){this._set.clear()}}class RefSetCache{constructor(){this._map=new Map}get size(){return this._map.size}get(e){return this._map.get(e.toString())}has(e){return this._map.has(e.toString())}put(e,t){this._map.set(e.toString(),t)}putAlias(e,t){this._map.set(e.toString(),this.get(t))}[Symbol.iterator](){return this._map.values()}clear(){this._map.clear()}}function isName(e,t){return e instanceof Name&&(void 0===t||e.name===t)}function isCmd(e,t){return e instanceof Cmd&&(void 0===t||e.cmd===t)}function isRefsEqual(e,t){return e.num===t.num&&e.gen===t.gen}class BaseStream{constructor(){this.constructor===BaseStream&&unreachable("Cannot initialize BaseStream.")}get length(){unreachable("Abstract getter `length` accessed")}get isEmpty(){unreachable("Abstract getter `isEmpty` accessed")}get isDataLoaded(){return shadow(this,"isDataLoaded",!0)}getByte(){unreachable("Abstract method `getByte` called")}getBytes(e){unreachable("Abstract method `getBytes` called")}peekByte(){const e=this.getByte();-1!==e&&this.pos--;return e}peekBytes(e){const t=this.getBytes(e);this.pos-=t.length;return t}getUint16(){const e=this.getByte(),t=this.getByte();return-1===e||-1===t?-1:(e<<8)+t}getInt32(){return(this.getByte()<<24)+(this.getByte()<<16)+(this.getByte()<<8)+this.getByte()}getByteRange(e,t){unreachable("Abstract method `getByteRange` called")}getString(e){return bytesToString(this.getBytes(e))}skip(e){this.pos+=e||1}reset(){unreachable("Abstract method `reset` called")}moveStart(){unreachable("Abstract method `moveStart` called")}makeSubStream(e,t,a=null){unreachable("Abstract method `makeSubStream` called")}getBaseStreams(){return null}}const ya=/^[1-9]\.\d$/;function getLookupTableFactory(e){let t;return function(){if(e){t=Object.create(null);e(t);e=null}return t}}class MissingDataException extends oa{constructor(e,t){super(`Missing data [${e}, ${t})`,"MissingDataException");this.begin=e;this.end=t}}class ParserEOFException extends oa{constructor(e){super(e,"ParserEOFException")}}class XRefEntryException extends oa{constructor(e){super(e,"XRefEntryException")}}class XRefParseException extends oa{constructor(e){super(e,"XRefParseException")}}function arrayBuffersToBytes(e){const t=e.length;if(0===t)return new Uint8Array(0);if(1===t)return new Uint8Array(e[0]);let a=0;for(let r=0;r0,"The number should be a positive integer.");const a=[];let r;for(;e>=1e3;){e-=1e3;a.push("M")}r=e/100|0;e%=100;a.push(wa[r]);r=e/10|0;e%=10;a.push(wa[10+r]);a.push(wa[20+e]);const i=a.join("");return t?i.toLowerCase():i}function log2(e){return e<=0?0:Math.ceil(Math.log2(e))}function readInt8(e,t){return e[t]<<24>>24}function readUint16(e,t){return e[t]<<8|e[t+1]}function readUint32(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0}function isWhiteSpace(e){return 32===e||9===e||13===e||10===e}function parseXFAPath(e){const t=/(.+)\[(\d+)\]$/;return e.split(".").map((e=>{const a=e.match(t);return a?{name:a[1],pos:parseInt(a[2],10)}:{name:e,pos:0}}))}function escapePDFName(e){const t=[];let a=0;for(let r=0,i=e.length;r126||35===i||40===i||41===i||60===i||62===i||91===i||93===i||123===i||125===i||47===i||37===i){a"\n"===e?"\\n":"\r"===e?"\\r":`\\${e}`))}function _collectJS(e,t,a,r){if(!e)return;let i=null;if(e instanceof Ref){if(r.has(e))return;i=e;r.put(i);e=t.fetch(e)}if(Array.isArray(e))for(const i of e)_collectJS(i,t,a,r);else if(e instanceof Dict){if(isName(e.get("S"),"JavaScript")){const t=e.get("JS");let r;t instanceof BaseStream?r=t.getString():"string"==typeof t&&(r=t);r&&=stringToPDFString(r).replaceAll("\0","");r&&a.push(r)}_collectJS(e.getRaw("Next"),t,a,r)}i&&r.remove(i)}function collectActions(e,t,a){const r=Object.create(null),i=getInheritableProperty({dict:t,key:"AA",stopWhenFound:!1});if(i)for(let t=i.length-1;t>=0;t--){const n=i[t];if(n instanceof Dict)for(const t of n.getKeys()){const i=a[t];if(!i)continue;const s=[];_collectJS(n.getRaw(t),e,s,new RefSet);s.length>0&&(r[i]=s)}}if(t.has("A")){const a=[];_collectJS(t.get("A"),e,a,new RefSet);a.length>0&&(r.Action=a)}return objectSize(r)>0?r:null}const xa={60:"<",62:">",38:"&",34:""",39:"'"};function encodeToXmlString(e){const t=[];let a=0;for(let r=0,i=e.length;r55295&&(i<57344||i>65533)&&r++;a=r+1}}if(0===t.length)return e;a: ${e}.`);return!1}return!0}function validateCSSFont(e){const t=new Set(["100","200","300","400","500","600","700","800","900","1000","normal","bold","bolder","lighter"]),{fontFamily:a,fontWeight:r,italicAngle:i}=e;if(!validateFontName(a,!0))return!1;const n=r?r.toString():"";e.fontWeight=t.has(n)?n:"400";const s=parseFloat(i);e.italicAngle=isNaN(s)||s<-90||s>90?"14":i.toString();return!0}function recoverJsURL(e){const t=new RegExp("^\\s*("+["app.launchURL","window.open","xfa.host.gotoURL"].join("|").replaceAll(".","\\.")+")\\((?:'|\")([^'\"]*)(?:'|\")(?:,\\s*(\\w+)\\)|\\))","i").exec(e);if(t?.[2]){const e=t[2];let a=!1;"true"===t[3]&&"app.launchURL"===t[1]&&(a=!0);return{url:e,newWindow:a}}return null}function numberToString(e){if(Number.isInteger(e))return e.toString();const t=Math.round(100*e);return t%100==0?(t/100).toString():t%10==0?e.toFixed(1):e.toFixed(2)}function getNewAnnotationsMap(e){if(!e)return null;const t=new Map;for(const[a,r]of e){if(!a.startsWith(p))continue;let e=t.get(r.pageIndex);if(!e){e=[];t.set(r.pageIndex,e)}e.push(r)}return t.size>0?t:null}function isAscii(e){return/^[\x00-\x7F]*$/.test(e)}function stringToUTF16HexString(e){const t=[];for(let a=0,r=e.length;a>8&255).toString(16).padStart(2,"0"),(255&r).toString(16).padStart(2,"0"))}return t.join("")}function stringToUTF16String(e,t=!1){const a=[];t&&a.push("þÿ");for(let t=0,r=e.length;t>8&255),String.fromCharCode(255&r))}return a.join("")}function getRotationMatrix(e,t,a){switch(e){case 90:return[0,1,-1,0,t,0];case 180:return[-1,0,0,-1,t,a];case 270:return[0,-1,1,0,0,a];default:throw new Error("Invalid rotation")}}class Stream extends BaseStream{constructor(e,t,a,r){super();this.bytes=e instanceof Uint8Array?e:new Uint8Array(e);this.start=t||0;this.pos=this.start;this.end=t+a||this.bytes.length;this.dict=r}get length(){return this.end-this.start}get isEmpty(){return 0===this.length}getByte(){return this.pos>=this.end?-1:this.bytes[this.pos++]}getBytes(e){const t=this.bytes,a=this.pos,r=this.end;if(!e)return t.subarray(a,r);let i=a+e;i>r&&(i=r);this.pos=i;return t.subarray(a,i)}getByteRange(e,t){e<0&&(e=0);t>this.end&&(t=this.end);return this.bytes.subarray(e,t)}reset(){this.pos=this.start}moveStart(){this.start=this.pos}makeSubStream(e,t,a=null){return new Stream(this.bytes.buffer,e,t,a)}}class StringStream extends Stream{constructor(e){super(stringToBytes(e))}}class NullStream extends Stream{constructor(){super(new Uint8Array(0))}}class ChunkedStream extends Stream{constructor(e,t,a){super(new Uint8Array(e),0,e,null);this.chunkSize=t;this._loadedChunks=new Set;this.numChunks=Math.ceil(e/t);this.manager=a;this.progressiveDataLength=0;this.lastSuccessfulEnsureByteChunk=-1}getMissingChunks(){const e=[];for(let t=0,a=this.numChunks;t=this.end?this.numChunks:Math.floor(t/this.chunkSize);for(let e=a;ethis.numChunks)&&t!==this.lastSuccessfulEnsureByteChunk){if(!this._loadedChunks.has(t))throw new MissingDataException(e,e+1);this.lastSuccessfulEnsureByteChunk=t}}ensureRange(e,t){if(e>=t)return;if(t<=this.progressiveDataLength)return;const a=Math.floor(e/this.chunkSize);if(a>this.numChunks)return;const r=Math.min(Math.floor((t-1)/this.chunkSize)+1,this.numChunks);for(let i=a;i=this.end)return-1;e>=this.progressiveDataLength&&this.ensureByte(e);return this.bytes[this.pos++]}getBytes(e){const t=this.bytes,a=this.pos,r=this.end;if(!e){r>this.progressiveDataLength&&this.ensureRange(a,r);return t.subarray(a,r)}let i=a+e;i>r&&(i=r);i>this.progressiveDataLength&&this.ensureRange(a,i);this.pos=i;return t.subarray(a,i)}getByteRange(e,t){e<0&&(e=0);t>this.end&&(t=this.end);t>this.progressiveDataLength&&this.ensureRange(e,t);return this.bytes.subarray(e,t)}makeSubStream(e,t,a=null){t?e+t>this.progressiveDataLength&&this.ensureRange(e,e+t):e>=this.progressiveDataLength&&this.ensureByte(e);function ChunkedStreamSubstream(){}ChunkedStreamSubstream.prototype=Object.create(this);ChunkedStreamSubstream.prototype.getMissingChunks=function(){const e=this.chunkSize,t=Math.floor(this.start/e),a=Math.floor((this.end-1)/e)+1,r=[];for(let e=t;e{const readChunk=({value:n,done:s})=>{try{if(s){const t=arrayBuffersToBytes(r);r=null;e(t);return}i+=n.byteLength;a.isStreamingSupported&&this.onProgress({loaded:i});r.push(n);a.read().then(readChunk,t)}catch(e){t(e)}};a.read().then(readChunk,t)})).then((t=>{this.aborted||this.onReceiveData({chunk:t,begin:e})}))}requestAllChunks(e=!1){if(!e){const e=this.stream.getMissingChunks();this._requestChunks(e)}return this._loadedStreamCapability.promise}_requestChunks(e){const t=this.currRequestId++,a=new Set;this._chunksNeededByRequest.set(t,a);for(const t of e)this.stream.hasChunk(t)||a.add(t);if(0===a.size)return Promise.resolve();const r=new PromiseCapability;this._promisesByRequest.set(t,r);const i=[];for(const e of a){let a=this._requestsByChunk.get(e);if(!a){a=[];this._requestsByChunk.set(e,a);i.push(e)}a.push(t)}if(i.length>0){const e=this.groupChunks(i);for(const t of e){const e=t.beginChunk*this.chunkSize,a=Math.min(t.endChunk*this.chunkSize,this.length);this.sendRequest(e,a).catch(r.reject)}}return r.promise.catch((e=>{if(!this.aborted)throw e}))}getStream(){return this.stream}requestRange(e,t){t=Math.min(t,this.length);const a=this.getBeginChunk(e),r=this.getEndChunk(t),i=[];for(let e=a;e=0&&r+1!==n){t.push({beginChunk:a,endChunk:r+1});a=n}i+1===e.length&&t.push({beginChunk:a,endChunk:n+1});r=n}return t}onProgress(e){this.msgHandler.send("DocProgress",{loaded:this.stream.numChunksLoaded*this.chunkSize+e.loaded,total:this.length})}onReceiveData(e){const t=e.chunk,a=void 0===e.begin,r=a?this.progressiveDataLength:e.begin,i=r+t.byteLength,n=Math.floor(r/this.chunkSize),s=i0||o.push(a)}}}if(!this.disableAutoFetch&&0===this._requestsByChunk.size){let e;if(1===this.stream.numChunksLoaded){const t=this.stream.numChunks-1;this.stream.hasChunk(t)||(e=t)}else e=this.stream.nextEmptyChunk(s);Number.isInteger(e)&&this._requestChunks([e])}for(const e of o){const t=this._promisesByRequest.get(e);this._promisesByRequest.delete(e);t.resolve()}this.msgHandler.send("DocProgress",{loaded:this.stream.numChunksLoaded*this.chunkSize,total:this.length})}onError(e){this._loadedStreamCapability.reject(e)}getBeginChunk(e){return Math.floor(e/this.chunkSize)}getEndChunk(e){return Math.floor((e-1)/this.chunkSize)+1}abort(e){this.aborted=!0;this.pdfNetworkStream?.cancelAllRequests(e);for(const t of this._promisesByRequest.values())t.reject(e)}}class ColorSpace{constructor(e,t){this.constructor===ColorSpace&&unreachable("Cannot initialize ColorSpace.");this.name=e;this.numComps=t}getRgb(e,t){const a=new Uint8ClampedArray(3);this.getRgbItem(e,t,a,0);return a}getRgbItem(e,t,a,r){unreachable("Should not call ColorSpace.getRgbItem")}getRgbBuffer(e,t,a,r,i,n,s){unreachable("Should not call ColorSpace.getRgbBuffer")}getOutputLength(e,t){unreachable("Should not call ColorSpace.getOutputLength")}isPassthrough(e){return!1}isDefaultDecode(e,t){return ColorSpace.isDefaultDecode(e,this.numComps)}fillRgb(e,t,a,r,i,n,s,o,c){const l=t*a;let h=null;const u=1<u&&"DeviceGray"!==this.name&&"DeviceRGB"!==this.name){const t=s<=8?new Uint8Array(u):new Uint16Array(u);for(let e=0;e=.99554525?1:this.#g(0,1,1.055*e**(1/2.4)-.055)}#g(e,t,a){return Math.max(e,Math.min(t,a))}#p(e){return e<0?-this.#p(-e):e>8?((e+16)/116)**3:e*CalRGBCS.#l}#m(e,t,a){if(0===e[0]&&0===e[1]&&0===e[2]){a[0]=t[0];a[1]=t[1];a[2]=t[2];return}const r=this.#p(0),i=(1-r)/(1-this.#p(e[0])),n=1-i,s=(1-r)/(1-this.#p(e[1])),o=1-s,c=(1-r)/(1-this.#p(e[2])),l=1-c;a[0]=t[0]*i+n;a[1]=t[1]*s+o;a[2]=t[2]*c+l}#b(e,t,a){if(1===e[0]&&1===e[2]){a[0]=t[0];a[1]=t[1];a[2]=t[2];return}const r=a;this.#h(CalRGBCS.#a,t,r);const i=CalRGBCS.#s;this.#u(e,r,i);this.#h(CalRGBCS.#r,i,a)}#y(e,t,a){const r=a;this.#h(CalRGBCS.#a,t,r);const i=CalRGBCS.#s;this.#d(e,r,i);this.#h(CalRGBCS.#r,i,a)}#t(e,t,a,r,i){const n=this.#g(0,1,e[t]*i),s=this.#g(0,1,e[t+1]*i),o=this.#g(0,1,e[t+2]*i),c=1===n?1:n**this.GR,l=1===s?1:s**this.GG,h=1===o?1:o**this.GB,u=this.MXA*c+this.MXB*l+this.MXC*h,d=this.MYA*c+this.MYB*l+this.MYC*h,f=this.MZA*c+this.MZB*l+this.MZC*h,g=CalRGBCS.#o;g[0]=u;g[1]=d;g[2]=f;const p=CalRGBCS.#c;this.#b(this.whitePoint,g,p);const m=CalRGBCS.#o;this.#m(this.blackPoint,p,m);const b=CalRGBCS.#c;this.#y(CalRGBCS.#n,m,b);const y=CalRGBCS.#o;this.#h(CalRGBCS.#i,b,y);a[r]=255*this.#f(y[0]);a[r+1]=255*this.#f(y[1]);a[r+2]=255*this.#f(y[2])}getRgbItem(e,t,a,r){this.#t(e,t,a,r,1)}getRgbBuffer(e,t,a,r,i,n,s){const o=1/((1<this.amax||this.bmin>this.bmax){info("Invalid Range, falling back to defaults");this.amin=-100;this.amax=100;this.bmin=-100;this.bmax=100}}#w(e){return e>=6/29?e**3:108/841*(e-4/29)}#x(e,t,a,r){return a+e*(r-a)/t}#t(e,t,a,r,i){let n=e[t],s=e[t+1],o=e[t+2];if(!1!==a){n=this.#x(n,a,0,100);s=this.#x(s,a,this.amin,this.amax);o=this.#x(o,a,this.bmin,this.bmax)}s>this.amax?s=this.amax:sthis.bmax?o=this.bmax:o>>0}function hexToStr(e,t){return 1===t?String.fromCharCode(e[0],e[1]):3===t?String.fromCharCode(e[0],e[1],e[2],e[3]):String.fromCharCode(...e.subarray(0,t+1))}function addHex(e,t,a){let r=0;for(let i=a;i>=0;i--){r+=e[i]+t[i];e[i]=255&r;r>>=8}}function incHex(e,t){let a=1;for(let r=t;r>=0&&a>0;r--){a+=e[r];e[r]=255&a;a>>=8}}const ka=16;class BinaryCMapStream{constructor(e){this.buffer=e;this.pos=0;this.end=e.length;this.tmpBuf=new Uint8Array(19)}readByte(){return this.pos>=this.end?-1:this.buffer[this.pos++]}readNumber(){let e,t=0;do{const a=this.readByte();if(a<0)throw new FormatError("unexpected EOF in bcmap");e=!(128&a);t=t<<7|127&a}while(!e);return t}readSigned(){const e=this.readNumber();return 1&e?~(e>>>1):e>>>1}readHex(e,t){e.set(this.buffer.subarray(this.pos,this.pos+t+1));this.pos+=t+1}readHexNumber(e,t){let a;const r=this.tmpBuf;let i=0;do{const e=this.readByte();if(e<0)throw new FormatError("unexpected EOF in bcmap");a=!(128&e);r[i++]=127&e}while(!a);let n=t,s=0,o=0;for(;n>=0;){for(;o<8&&r.length>0;){s|=r[--i]<>=8;o-=8}}readHexSigned(e,t){this.readHexNumber(e,t);const a=1&e[t]?255:0;let r=0;for(let i=0;i<=t;i++){r=(1&r)<<8|e[i];e[i]=r>>1^a}}readString(){const e=this.readNumber(),t=new Array(e);for(let a=0;a=0;){const e=d>>5;if(7===e){switch(31&d){case 0:r.readString();break;case 1:n=r.readString()}continue}const a=!!(16&d),i=15&d;if(i+1>ka)throw new Error("BinaryCMapReader.process: Invalid dataSize.");const f=1,g=r.readNumber();switch(e){case 0:r.readHex(s,i);r.readHexNumber(o,i);addHex(o,s,i);t.addCodespaceRange(i+1,hexToInt(s,i),hexToInt(o,i));for(let e=1;er&&(a=r)}else{for(;!this.eof;)this.readBlock();a=this.bufferLength}this.pos=a;return this.buffer.subarray(t,a)}reset(){this.pos=0}makeSubStream(e,t,a=null){if(void 0===t)for(;!this.eof;)this.readBlock();else{const a=e+t;for(;this.bufferLength<=a&&!this.eof;)this.readBlock()}return new Stream(this.buffer,e,t,a)}getBaseStreams(){return this.str?this.str.getBaseStreams():null}}class StreamsSequenceStream extends DecodeStream{constructor(e,t=null){let a=0;for(const t of e)a+=t instanceof DecodeStream?t._rawMinBufferLength:t.length;super(a);this.streams=e;this._onError=t}readBlock(){const e=this.streams;if(0===e.length){this.eof=!0;return}const t=e.shift();let a;try{a=t.getBytes()}catch(e){if(this._onError){this._onError(e,t.dict?.objId);return}throw e}const r=this.bufferLength,i=r+a.length;this.ensureBuffer(i).set(a,r);this.bufferLength=i}getBaseStreams(){const e=[];for(const t of this.streams){const a=t.getBaseStreams();a&&e.push(...a)}return e.length>0?e:null}}class Ascii85Stream extends DecodeStream{constructor(e,t){t&&(t*=.8);super(t);this.str=e;this.dict=e.dict;this.input=new Uint8Array(5)}readBlock(){const e=this.str;let t=e.getByte();for(;isWhiteSpace(t);)t=e.getByte();if(-1===t||126===t){this.eof=!0;return}const a=this.bufferLength;let r,i;if(122===t){r=this.ensureBuffer(a+4);for(i=0;i<4;++i)r[a+i]=0;this.bufferLength+=4}else{const n=this.input;n[0]=t;for(i=1;i<5;++i){t=e.getByte();for(;isWhiteSpace(t);)t=e.getByte();n[i]=t;if(-1===t||126===t)break}r=this.ensureBuffer(a+i-1);this.bufferLength+=i-1;if(i<5){for(;i<5;++i)n[i]=117;this.eof=!0}let s=0;for(i=0;i<5;++i)s=85*s+(n[i]-33);for(i=3;i>=0;--i){r[a+i]=255&s;s>>=8}}}}class AsciiHexStream extends DecodeStream{constructor(e,t){t&&(t*=.5);super(t);this.str=e;this.dict=e.dict;this.firstDigit=-1}readBlock(){const e=this.str.getBytes(8e3);if(!e.length){this.eof=!0;return}const t=e.length+1>>1,a=this.ensureBuffer(this.bufferLength+t);let r=this.bufferLength,i=this.firstDigit;for(const t of e){let e;if(t>=48&&t<=57)e=15&t;else{if(!(t>=65&&t<=70||t>=97&&t<=102)){if(62===t){this.eof=!0;break}continue}e=9+(15&t)}if(i<0)i=e;else{a[r++]=i<<4|e;i=-1}}if(i>=0&&this.eof){a[r++]=i<<4;i=-1}this.firstDigit=i;this.bufferLength=r}}const Aa=-1,Ca=[[-1,-1],[-1,-1],[7,8],[7,7],[6,6],[6,6],[6,5],[6,5],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2]],va=[[-1,-1],[12,-2],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[11,1792],[11,1792],[12,1984],[12,2048],[12,2112],[12,2176],[12,2240],[12,2304],[11,1856],[11,1856],[11,1920],[11,1920],[12,2368],[12,2432],[12,2496],[12,2560]],Fa=[[-1,-1],[-1,-1],[-1,-1],[-1,-1],[8,29],[8,29],[8,30],[8,30],[8,45],[8,45],[8,46],[8,46],[7,22],[7,22],[7,22],[7,22],[7,23],[7,23],[7,23],[7,23],[8,47],[8,47],[8,48],[8,48],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[7,20],[7,20],[7,20],[7,20],[8,33],[8,33],[8,34],[8,34],[8,35],[8,35],[8,36],[8,36],[8,37],[8,37],[8,38],[8,38],[7,19],[7,19],[7,19],[7,19],[8,31],[8,31],[8,32],[8,32],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[8,53],[8,53],[8,54],[8,54],[7,26],[7,26],[7,26],[7,26],[8,39],[8,39],[8,40],[8,40],[8,41],[8,41],[8,42],[8,42],[8,43],[8,43],[8,44],[8,44],[7,21],[7,21],[7,21],[7,21],[7,28],[7,28],[7,28],[7,28],[8,61],[8,61],[8,62],[8,62],[8,63],[8,63],[8,0],[8,0],[8,320],[8,320],[8,384],[8,384],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[7,27],[7,27],[7,27],[7,27],[8,59],[8,59],[8,60],[8,60],[9,1472],[9,1536],[9,1600],[9,1728],[7,18],[7,18],[7,18],[7,18],[7,24],[7,24],[7,24],[7,24],[8,49],[8,49],[8,50],[8,50],[8,51],[8,51],[8,52],[8,52],[7,25],[7,25],[7,25],[7,25],[8,55],[8,55],[8,56],[8,56],[8,57],[8,57],[8,58],[8,58],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[8,448],[8,448],[8,512],[8,512],[9,704],[9,768],[8,640],[8,640],[8,576],[8,576],[9,832],[9,896],[9,960],[9,1024],[9,1088],[9,1152],[9,1216],[9,1280],[9,1344],[9,1408],[7,256],[7,256],[7,256],[7,256],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7]],Ia=[[-1,-1],[-1,-1],[12,-2],[12,-2],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[11,1792],[11,1792],[11,1792],[11,1792],[12,1984],[12,1984],[12,2048],[12,2048],[12,2112],[12,2112],[12,2176],[12,2176],[12,2240],[12,2240],[12,2304],[12,2304],[11,1856],[11,1856],[11,1856],[11,1856],[11,1920],[11,1920],[11,1920],[11,1920],[12,2368],[12,2368],[12,2432],[12,2432],[12,2496],[12,2496],[12,2560],[12,2560],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[12,52],[12,52],[13,640],[13,704],[13,768],[13,832],[12,55],[12,55],[12,56],[12,56],[13,1280],[13,1344],[13,1408],[13,1472],[12,59],[12,59],[12,60],[12,60],[13,1536],[13,1600],[11,24],[11,24],[11,24],[11,24],[11,25],[11,25],[11,25],[11,25],[13,1664],[13,1728],[12,320],[12,320],[12,384],[12,384],[12,448],[12,448],[13,512],[13,576],[12,53],[12,53],[12,54],[12,54],[13,896],[13,960],[13,1024],[13,1088],[13,1152],[13,1216],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64]],Oa=[[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[11,23],[11,23],[12,50],[12,51],[12,44],[12,45],[12,46],[12,47],[12,57],[12,58],[12,61],[12,256],[10,16],[10,16],[10,16],[10,16],[10,17],[10,17],[10,17],[10,17],[12,48],[12,49],[12,62],[12,63],[12,30],[12,31],[12,32],[12,33],[12,40],[12,41],[11,22],[11,22],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[12,128],[12,192],[12,26],[12,27],[12,28],[12,29],[11,19],[11,19],[11,20],[11,20],[12,34],[12,35],[12,36],[12,37],[12,38],[12,39],[11,21],[11,21],[12,42],[12,43],[10,0],[10,0],[10,0],[10,0],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12]],Ta=[[-1,-1],[-1,-1],[-1,-1],[-1,-1],[6,9],[6,8],[5,7],[5,7],[4,6],[4,6],[4,6],[4,6],[4,5],[4,5],[4,5],[4,5],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2]];class CCITTFaxDecoder{constructor(e,t={}){if(!e||"function"!=typeof e.next)throw new Error('CCITTFaxDecoder - invalid "source" parameter.');this.source=e;this.eof=!1;this.encoding=t.K||0;this.eoline=t.EndOfLine||!1;this.byteAlign=t.EncodedByteAlign||!1;this.columns=t.Columns||1728;this.rows=t.Rows||0;this.eoblock=t.EndOfBlock??!0;this.black=t.BlackIs1||!1;this.codingLine=new Uint32Array(this.columns+1);this.refLine=new Uint32Array(this.columns+2);this.codingLine[0]=this.columns;this.codingPos=0;this.row=0;this.nextLine2D=this.encoding<0;this.inputBits=0;this.inputBuf=0;this.outputBits=0;this.rowsDone=!1;let a;for(;0===(a=this._lookBits(12));)this._eatBits(1);1===a&&this._eatBits(12);if(this.encoding>0){this.nextLine2D=!this._lookBits(1);this._eatBits(1)}}readNextChar(){if(this.eof)return-1;const e=this.refLine,t=this.codingLine,a=this.columns;let r,i,n,s,o;if(0===this.outputBits){this.rowsDone&&(this.eof=!0);if(this.eof)return-1;this.err=!1;let n,o,c;if(this.nextLine2D){for(s=0;t[s]=64);do{o+=c=this._getWhiteCode()}while(c>=64)}else{do{n+=c=this._getWhiteCode()}while(c>=64);do{o+=c=this._getBlackCode()}while(c>=64)}this._addPixels(t[this.codingPos]+n,i);t[this.codingPos]0?--r:++r;for(;e[r]<=t[this.codingPos]&&e[r]0?--r:++r;for(;e[r]<=t[this.codingPos]&&e[r]0?--r:++r;for(;e[r]<=t[this.codingPos]&&e[r]=64);else do{n+=c=this._getWhiteCode()}while(c>=64);this._addPixels(t[this.codingPos]+n,i);i^=1}}let l=!1;this.byteAlign&&(this.inputBits&=-8);if(this.eoblock||this.row!==this.rows-1){n=this._lookBits(12);if(this.eoline)for(;n!==Aa&&1!==n;){this._eatBits(1);n=this._lookBits(12)}else for(;0===n;){this._eatBits(1);n=this._lookBits(12)}if(1===n){this._eatBits(12);l=!0}else n===Aa&&(this.eof=!0)}else this.rowsDone=!0;if(!this.eof&&this.encoding>0&&!this.rowsDone){this.nextLine2D=!this._lookBits(1);this._eatBits(1)}if(this.eoblock&&l&&this.byteAlign){n=this._lookBits(12);if(1===n){this._eatBits(12);if(this.encoding>0){this._lookBits(1);this._eatBits(1)}if(this.encoding>=0)for(s=0;s<4;++s){n=this._lookBits(12);1!==n&&info("bad rtc code: "+n);this._eatBits(12);if(this.encoding>0){this._lookBits(1);this._eatBits(1)}}this.eof=!0}}else if(this.err&&this.eoline){for(;;){n=this._lookBits(13);if(n===Aa){this.eof=!0;return-1}if(n>>1==1)break;this._eatBits(1)}this._eatBits(12);if(this.encoding>0){this._eatBits(1);this.nextLine2D=!(1&n)}}this.outputBits=t[0]>0?t[this.codingPos=0]:t[this.codingPos=1];this.row++}if(this.outputBits>=8){o=1&this.codingPos?0:255;this.outputBits-=8;if(0===this.outputBits&&t[this.codingPos]n){o<<=n;1&this.codingPos||(o|=255>>8-n);this.outputBits-=n;n=0}else{o<<=this.outputBits;1&this.codingPos||(o|=255>>8-this.outputBits);n-=this.outputBits;this.outputBits=0;if(t[this.codingPos]0){o<<=n;n=0}}}while(n)}this.black&&(o^=255);return o}_addPixels(e,t){const a=this.codingLine;let r=this.codingPos;if(e>a[r]){if(e>this.columns){info("row is wrong length");this.err=!0;e=this.columns}1&r^t&&++r;a[r]=e}this.codingPos=r}_addPixelsNeg(e,t){const a=this.codingLine;let r=this.codingPos;if(e>a[r]){if(e>this.columns){info("row is wrong length");this.err=!0;e=this.columns}1&r^t&&++r;a[r]=e}else if(e0&&e=i){const t=a[e-i];if(t[0]===r){this._eatBits(r);return[!0,t[1],!0]}}}return[!1,0,!1]}_getTwoDimCode(){let e,t=0;if(this.eoblock){t=this._lookBits(7);e=Ca[t];if(e?.[0]>0){this._eatBits(e[0]);return e[1]}}else{const e=this._findTableCode(1,7,Ca);if(e[0]&&e[2])return e[1]}info("Bad two dim code");return Aa}_getWhiteCode(){let e,t=0;if(this.eoblock){t=this._lookBits(12);if(t===Aa)return 1;e=t>>5==0?va[t]:Fa[t>>3];if(e[0]>0){this._eatBits(e[0]);return e[1]}}else{let e=this._findTableCode(1,9,Fa);if(e[0])return e[1];e=this._findTableCode(11,12,va);if(e[0])return e[1]}info("bad white code");this._eatBits(1);return 1}_getBlackCode(){let e,t;if(this.eoblock){e=this._lookBits(13);if(e===Aa)return 1;t=e>>7==0?Ia[e]:e>>9==0&&e>>7!=0?Oa[(e>>1)-64]:Ta[e>>7];if(t[0]>0){this._eatBits(t[0]);return t[1]}}else{let e=this._findTableCode(2,6,Ta);if(e[0])return e[1];e=this._findTableCode(7,12,Oa,64);if(e[0])return e[1];e=this._findTableCode(10,13,Ia);if(e[0])return e[1]}info("bad black code");this._eatBits(1);return 1}_lookBits(e){let t;for(;this.inputBits>16-e;this.inputBuf=this.inputBuf<<8|t;this.inputBits+=8}return this.inputBuf>>this.inputBits-e&65535>>16-e}_eatBits(e){(this.inputBits-=e)<0&&(this.inputBits=0)}}class CCITTFaxStream extends DecodeStream{constructor(e,t,a){super(t);this.str=e;this.dict=e.dict;a instanceof Dict||(a=Dict.empty);const r={next:()=>e.getByte()};this.ccittFaxDecoder=new CCITTFaxDecoder(r,{K:a.get("K"),EndOfLine:a.get("EndOfLine"),EncodedByteAlign:a.get("EncodedByteAlign"),Columns:a.get("Columns"),Rows:a.get("Rows"),EndOfBlock:a.get("EndOfBlock"),BlackIs1:a.get("BlackIs1")})}readBlock(){for(;!this.eof;){const e=this.ccittFaxDecoder.readNextChar();if(-1===e){this.eof=!0;return}this.ensureBuffer(this.bufferLength+1);this.buffer[this.bufferLength++]=e}}}const Ma=new Int32Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Da=new Int32Array([3,4,5,6,7,8,9,10,65547,65549,65551,65553,131091,131095,131099,131103,196643,196651,196659,196667,262211,262227,262243,262259,327811,327843,327875,327907,258,258,258]),Ba=new Int32Array([1,2,3,4,65541,65543,131081,131085,196625,196633,262177,262193,327745,327777,393345,393409,459009,459137,524801,525057,590849,591361,657409,658433,724993,727041,794625,798721,868353,876545]),Ra=[new Int32Array([459008,524368,524304,524568,459024,524400,524336,590016,459016,524384,524320,589984,524288,524416,524352,590048,459012,524376,524312,589968,459028,524408,524344,590032,459020,524392,524328,59e4,524296,524424,524360,590064,459010,524372,524308,524572,459026,524404,524340,590024,459018,524388,524324,589992,524292,524420,524356,590056,459014,524380,524316,589976,459030,524412,524348,590040,459022,524396,524332,590008,524300,524428,524364,590072,459009,524370,524306,524570,459025,524402,524338,590020,459017,524386,524322,589988,524290,524418,524354,590052,459013,524378,524314,589972,459029,524410,524346,590036,459021,524394,524330,590004,524298,524426,524362,590068,459011,524374,524310,524574,459027,524406,524342,590028,459019,524390,524326,589996,524294,524422,524358,590060,459015,524382,524318,589980,459031,524414,524350,590044,459023,524398,524334,590012,524302,524430,524366,590076,459008,524369,524305,524569,459024,524401,524337,590018,459016,524385,524321,589986,524289,524417,524353,590050,459012,524377,524313,589970,459028,524409,524345,590034,459020,524393,524329,590002,524297,524425,524361,590066,459010,524373,524309,524573,459026,524405,524341,590026,459018,524389,524325,589994,524293,524421,524357,590058,459014,524381,524317,589978,459030,524413,524349,590042,459022,524397,524333,590010,524301,524429,524365,590074,459009,524371,524307,524571,459025,524403,524339,590022,459017,524387,524323,589990,524291,524419,524355,590054,459013,524379,524315,589974,459029,524411,524347,590038,459021,524395,524331,590006,524299,524427,524363,590070,459011,524375,524311,524575,459027,524407,524343,590030,459019,524391,524327,589998,524295,524423,524359,590062,459015,524383,524319,589982,459031,524415,524351,590046,459023,524399,524335,590014,524303,524431,524367,590078,459008,524368,524304,524568,459024,524400,524336,590017,459016,524384,524320,589985,524288,524416,524352,590049,459012,524376,524312,589969,459028,524408,524344,590033,459020,524392,524328,590001,524296,524424,524360,590065,459010,524372,524308,524572,459026,524404,524340,590025,459018,524388,524324,589993,524292,524420,524356,590057,459014,524380,524316,589977,459030,524412,524348,590041,459022,524396,524332,590009,524300,524428,524364,590073,459009,524370,524306,524570,459025,524402,524338,590021,459017,524386,524322,589989,524290,524418,524354,590053,459013,524378,524314,589973,459029,524410,524346,590037,459021,524394,524330,590005,524298,524426,524362,590069,459011,524374,524310,524574,459027,524406,524342,590029,459019,524390,524326,589997,524294,524422,524358,590061,459015,524382,524318,589981,459031,524414,524350,590045,459023,524398,524334,590013,524302,524430,524366,590077,459008,524369,524305,524569,459024,524401,524337,590019,459016,524385,524321,589987,524289,524417,524353,590051,459012,524377,524313,589971,459028,524409,524345,590035,459020,524393,524329,590003,524297,524425,524361,590067,459010,524373,524309,524573,459026,524405,524341,590027,459018,524389,524325,589995,524293,524421,524357,590059,459014,524381,524317,589979,459030,524413,524349,590043,459022,524397,524333,590011,524301,524429,524365,590075,459009,524371,524307,524571,459025,524403,524339,590023,459017,524387,524323,589991,524291,524419,524355,590055,459013,524379,524315,589975,459029,524411,524347,590039,459021,524395,524331,590007,524299,524427,524363,590071,459011,524375,524311,524575,459027,524407,524343,590031,459019,524391,524327,589999,524295,524423,524359,590063,459015,524383,524319,589983,459031,524415,524351,590047,459023,524399,524335,590015,524303,524431,524367,590079]),9],Na=[new Int32Array([327680,327696,327688,327704,327684,327700,327692,327708,327682,327698,327690,327706,327686,327702,327694,0,327681,327697,327689,327705,327685,327701,327693,327709,327683,327699,327691,327707,327687,327703,327695,0]),5];class FlateStream extends DecodeStream{constructor(e,t){super(t);this.str=e;this.dict=e.dict;const a=e.getByte(),r=e.getByte();if(-1===a||-1===r)throw new FormatError(`Invalid header in flate stream: ${a}, ${r}`);if(8!=(15&a))throw new FormatError(`Unknown compression method in flate stream: ${a}, ${r}`);if(((a<<8)+r)%31!=0)throw new FormatError(`Bad FCHECK in flate stream: ${a}, ${r}`);if(32&r)throw new FormatError(`FDICT bit set in flate stream: ${a}, ${r}`);this.codeSize=0;this.codeBuf=0}getBits(e){const t=this.str;let a,r=this.codeSize,i=this.codeBuf;for(;r>e;this.codeSize=r-=e;return a}getCode(e){const t=this.str,a=e[0],r=e[1];let i,n=this.codeSize,s=this.codeBuf;for(;n>16,l=65535&o;if(c<1||n>c;this.codeSize=n-c;return l}generateHuffmanTable(e){const t=e.length;let a,r=0;for(a=0;ar&&(r=e[a]);const i=1<>=1}for(a=e;a>=1;if(0===n){let t;if(-1===(t=a.getByte())){this.#k("Bad block header in flate stream");return}let r=t;if(-1===(t=a.getByte())){this.#k("Bad block header in flate stream");return}r|=t<<8;if(-1===(t=a.getByte())){this.#k("Bad block header in flate stream");return}let i=t;if(-1===(t=a.getByte())){this.#k("Bad block header in flate stream");return}i|=t<<8;if(i!==(65535&~r)&&(0!==r||0!==i))throw new FormatError("Bad uncompressed block length in flate stream");this.codeBuf=0;this.codeSize=0;const n=this.bufferLength,s=n+r;e=this.ensureBuffer(s);this.bufferLength=s;if(0===r)-1===a.peekByte()&&(this.eof=!0);else{const t=a.getBytes(r);e.set(t,n);t.length0;)h[o++]=f}r=this.generateHuffmanTable(h.subarray(0,e));i=this.generateHuffmanTable(h.subarray(e,l))}}e=this.buffer;let s=e?e.length:0,o=this.bufferLength;for(;;){let a=this.getCode(r);if(a<256){if(o+1>=s){e=this.ensureBuffer(o+1);s=e.length}e[o++]=a;continue}if(256===a){this.bufferLength=o;return}a-=257;a=Da[a];let n=a>>16;n>0&&(n=this.getBits(n));t=(65535&a)+n;a=this.getCode(i);a=Ba[a];n=a>>16;n>0&&(n=this.getBits(n));const c=(65535&a)+n;if(o+t>=s){e=this.ensureBuffer(o+t);s=e.length}for(let a=0;a>9&127;this.clow=this.clow<<7&65535;this.ct-=7;this.a=32768}byteIn(){const e=this.data;let t=this.bp;if(255===e[t])if(e[t+1]>143){this.clow+=65280;this.ct=8}else{t++;this.clow+=e[t]<<9;this.ct=7;this.bp=t}else{t++;this.clow+=t65535){this.chigh+=this.clow>>16;this.clow&=65535}}readBit(e,t){let a=e[t]>>1,r=1&e[t];const i=Ea[a],n=i.qe;let s,o=this.a-n;if(this.chigh>15&1;this.clow=this.clow<<1&65535;this.ct--}while(0==(32768&o));this.a=o;e[t]=a<<1|r;return s}}class Jbig2Error extends oa{constructor(e){super(`JBIG2 error: ${e}`,"Jbig2Error")}}class ContextCache{getContexts(e){return e in this?this[e]:this[e]=new Int8Array(65536)}}class DecodingContext{constructor(e,t,a){this.data=e;this.start=t;this.end=a}get decoder(){return shadow(this,"decoder",new ArithmeticDecoder(this.data,this.start,this.end))}get contextCache(){return shadow(this,"contextCache",new ContextCache)}}const Pa=2**31-1,La=-(2**31);function decodeInteger(e,t,a){const r=e.getContexts(t);let i=1;function readBits(e){let t=0;for(let n=0;n>>0}const n=readBits(1),s=readBits(1)?readBits(1)?readBits(1)?readBits(1)?readBits(1)?readBits(32)+4436:readBits(12)+340:readBits(8)+84:readBits(6)+20:readBits(4)+4:readBits(2);let o;0===n?o=s:s>0&&(o=-s);return o>=La&&o<=Pa?o:null}function decodeIAID(e,t,a){const r=e.getContexts("IAID");let i=1;for(let e=0;e=v&&E=F){q=q<<1&m;for(p=0;p=0&&j=0){_=D[L][j];_&&(q|=_<=e?l<<=1:l=l<<1|k[o][c]}for(f=0;f=w||c<0||c>=y?l<<=1:l=l<<1|r[o][c]}const g=S.readBit(C,l);t[s]=g}}return k}function decodeTextRegion(e,t,a,r,i,n,s,o,c,l,h,u,d,f,g,p,m,b,y){if(e&&t)throw new Jbig2Error("refinement with Huffman is not supported");const w=[];let x,k;for(x=0;x1&&(i=e?y.readBits(b):decodeInteger(C,"IAIT",S));const n=s*v+i,F=e?f.symbolIDTable.decode(y):decodeIAID(C,S,c),O=t&&(e?y.readBit():decodeInteger(C,"IARI",S));let T=o[F],M=T[0].length,D=T.length;if(O){const e=decodeInteger(C,"IARDW",S),t=decodeInteger(C,"IARDH",S);M+=e;D+=t;T=decodeRefinement(M,D,g,T,(e>>1)+decodeInteger(C,"IARDX",S),(t>>1)+decodeInteger(C,"IARDY",S),!1,p,m)}const R=n-(1&u?0:D-1),N=r-(2&u?M-1:0);let E,L,j;if(l){for(E=0;E>5&7;const c=[31&s];let l=t+6;if(7===s){o=536870911&readUint32(e,l-1);l+=3;let t=o+7>>3;c[0]=e[l++];for(;--t>0;)c.push(e[l++])}else if(5===s||6===s)throw new Jbig2Error("invalid referred-to flags");a.retainBits=c;let h=4;a.number<=256?h=1:a.number<=65536&&(h=2);const u=[];let d,f;for(d=0;d>>24&255;n[3]=t.height>>16&255;n[4]=t.height>>8&255;n[5]=255&t.height;for(d=l,f=e.length;d>2&3;e.huffmanDWSelector=t>>4&3;e.bitmapSizeSelector=t>>6&1;e.aggregationInstancesSelector=t>>7&1;e.bitmapCodingContextUsed=!!(256&t);e.bitmapCodingContextRetained=!!(512&t);e.template=t>>10&3;e.refinementTemplate=t>>12&1;l+=2;if(!e.huffman){c=0===e.template?4:1;s=[];for(o=0;o>2&3;h.stripSize=1<>4&3;h.transposed=!!(64&u);h.combinationOperator=u>>7&3;h.defaultPixelValue=u>>9&1;h.dsOffset=u<<17>>27;h.refinementTemplate=u>>15&1;if(h.huffman){const e=readUint16(r,l);l+=2;h.huffmanFS=3&e;h.huffmanDS=e>>2&3;h.huffmanDT=e>>4&3;h.huffmanRefinementDW=e>>6&3;h.huffmanRefinementDH=e>>8&3;h.huffmanRefinementDX=e>>10&3;h.huffmanRefinementDY=e>>12&3;h.huffmanRefinementSizeSelector=!!(16384&e)}if(h.refinement&&!h.refinementTemplate){s=[];for(o=0;o<2;o++){s.push({x:readInt8(r,l),y:readInt8(r,l+1)});l+=2}h.refinementAt=s}h.numberOfSymbolInstances=readUint32(r,l);l+=4;n=[h,a.referredTo,r,l,i];break;case 16:const d={},f=r[l++];d.mmr=!!(1&f);d.template=f>>1&3;d.patternWidth=r[l++];d.patternHeight=r[l++];d.maxPatternIndex=readUint32(r,l);l+=4;n=[d,a.number,r,l,i];break;case 22:case 23:const g={};g.info=readRegionSegmentInformation(r,l);l+=Ha;const p=r[l++];g.mmr=!!(1&p);g.template=p>>1&3;g.enableSkip=!!(8&p);g.combinationOperator=p>>4&7;g.defaultPixelValue=p>>7&1;g.gridWidth=readUint32(r,l);l+=4;g.gridHeight=readUint32(r,l);l+=4;g.gridOffsetX=4294967295&readUint32(r,l);l+=4;g.gridOffsetY=4294967295&readUint32(r,l);l+=4;g.gridVectorX=readUint16(r,l);l+=2;g.gridVectorY=readUint16(r,l);l+=2;n=[g,a.referredTo,r,l,i];break;case 38:case 39:const m={};m.info=readRegionSegmentInformation(r,l);l+=Ha;const b=r[l++];m.mmr=!!(1&b);m.template=b>>1&3;m.prediction=!!(8&b);if(!m.mmr){c=0===m.template?4:1;s=[];for(o=0;o>2&1;y.combinationOperator=w>>3&3;y.requiresBuffer=!!(32&w);y.combinationOperatorOverride=!!(64&w);n=[y];break;case 49:case 50:case 51:case 62:break;case 53:n=[a.number,r,l,i];break;default:throw new Jbig2Error(`segment type ${a.typeName}(${a.type}) is not implemented`)}const h="on"+a.typeName;h in t&&t[h].apply(t,n)}function processSegments(e,t){for(let a=0,r=e.length;a>3,a=new Uint8ClampedArray(t*e.height);e.defaultPixelValue&&a.fill(255);this.buffer=a}drawBitmap(e,t){const a=this.currentPageInfo,r=e.width,i=e.height,n=a.width+7>>3,s=a.combinationOperatorOverride?e.combinationOperator:a.combinationOperator,o=this.buffer,c=128>>(7&e.x);let l,h,u,d,f=e.y*n+(e.x>>3);switch(s){case 0:for(l=0;l>=1;if(!u){u=128;d++}}f+=n}break;case 2:for(l=0;l>=1;if(!u){u=128;d++}}f+=n}break;default:throw new Jbig2Error(`operator ${s} is not supported`)}}onImmediateGenericRegion(e,t,a,r){const i=e.info,n=new DecodingContext(t,a,r),s=decodeBitmap(e.mmr,i.width,i.height,e.template,e.prediction,null,e.at,n);this.drawBitmap(i,s)}onImmediateLosslessGenericRegion(){this.onImmediateGenericRegion(...arguments)}onSymbolDictionary(e,t,a,r,i,n){let s,o;if(e.huffman){s=function getSymbolDictionaryHuffmanTables(e,t,a){let r,i,n,s,o=0;switch(e.huffmanDHSelector){case 0:case 1:r=getStandardTable(e.huffmanDHSelector+4);break;case 3:r=getCustomHuffmanTable(o,t,a);o++;break;default:throw new Jbig2Error("invalid Huffman DH selector")}switch(e.huffmanDWSelector){case 0:case 1:i=getStandardTable(e.huffmanDWSelector+2);break;case 3:i=getCustomHuffmanTable(o,t,a);o++;break;default:throw new Jbig2Error("invalid Huffman DW selector")}if(e.bitmapSizeSelector){n=getCustomHuffmanTable(o,t,a);o++}else n=getStandardTable(1);s=e.aggregationInstancesSelector?getCustomHuffmanTable(o,t,a):getStandardTable(1);return{tableDeltaHeight:r,tableDeltaWidth:i,tableBitmapSize:n,tableAggregateInstances:s}}(e,a,this.customTables);o=new Reader(r,i,n)}let c=this.symbols;c||(this.symbols=c={});const l=[];for(const e of a){const t=c[e];t&&l.push(...t)}const h=new DecodingContext(r,i,n);c[t]=function decodeSymbolDictionary(e,t,a,r,i,n,s,o,c,l,h,u){if(e&&t)throw new Jbig2Error("symbol refinement with Huffman is not supported");const d=[];let f=0,g=log2(a.length+r);const p=h.decoder,m=h.contextCache;let b,y;if(e){b=getStandardTable(1);y=[];g=Math.max(g,1)}for(;d.length1)w=decodeTextRegion(e,t,r,f,0,i,1,a.concat(d),g,0,0,1,0,n,c,l,h,0,u);else{const e=decodeIAID(m,p,g),t=decodeInteger(m,"IARDX",p),i=decodeInteger(m,"IARDY",p);w=decodeRefinement(r,f,c,e=32){let a,r,s;switch(t){case 32:if(0===e)throw new Jbig2Error("no previous value in symbol ID table");r=i.readBits(2)+3;a=n[e-1].prefixLength;break;case 33:r=i.readBits(3)+3;a=0;break;case 34:r=i.readBits(7)+11;a=0;break;default:throw new Jbig2Error("invalid code length in symbol ID table")}for(s=0;s=0;m--){T=e?decodeMMRBitmap(O,c,l,!0):decodeBitmap(!1,c,l,a,!1,null,v,g);F[m]=T}for(M=0;M=0;b--){R^=F[b][M][D];N|=R<>8;j=u+M*d-D*f>>8;if(L>=0&&L+k<=r&&j>=0&&j+S<=i)for(m=0;m=i)){U=p[t];_=E[m];for(b=0;b=0&&e>1&7),c=1+(r>>4&7),l=[];let h,u,d=i;do{h=s.readBits(o);u=s.readBits(c);l.push(new HuffmanLine([d,h,u,0]));d+=1<>t&1;if(t<=0)this.children[a]=new HuffmanTreeNode(e);else{let r=this.children[a];r||(this.children[a]=r=new HuffmanTreeNode(null));r.buildTree(e,t-1)}}decodeNode(e){if(this.isLeaf){if(this.isOOB)return null;const t=e.readBits(this.rangeLength);return this.rangeLow+(this.isLowerRange?-t:t)}const t=this.children[e.readBit()];if(!t)throw new Jbig2Error("invalid Huffman data");return t.decodeNode(e)}}class HuffmanTable{constructor(e,t){t||this.assignPrefixCodes(e);this.rootNode=new HuffmanTreeNode(null);for(let t=0,a=e.length;t0&&this.rootNode.buildTree(a,a.prefixLength-1)}}decode(e){return this.rootNode.decodeNode(e)}assignPrefixCodes(e){const t=e.length;let a=0;for(let r=0;r=this.end)throw new Jbig2Error("end of data while reading bit");this.currentByte=this.data[this.position++];this.shift=7}const e=this.currentByte>>this.shift&1;this.shift--;return e}readBits(e){let t,a=0;for(t=e-1;t>=0;t--)a|=this.readBit()<=this.end?-1:this.data[this.position++]}}function getCustomHuffmanTable(e,t,a){let r=0;for(let i=0,n=t.length;i>a&1;a--}}if(r&&!o){const e=5;for(let t=0;t>2,c=new Uint32Array(e.buffer,t,o);if(FeatureTest.isLittleEndian){for(;s>>24|t<<8|4278190080;a[r+2]=t>>>16|i<<16|4278190080;a[r+3]=i>>>8|4278190080}for(let t=4*s,i=e.length;t>>8|255;a[r+2]=t<<16|i>>>16|255;a[r+3]=i<<8|255}for(let t=4*s,i=e.length;t>3,u=7&r,d=e.length;a=new Uint32Array(a.buffer);let f=0;for(let r=0;r0&&!e[n-1];)n--;const s=[{children:[],index:0}];let o,c=s[0];for(a=0;a0;)c=s.pop();c.index++;s.push(c);for(;s.length<=a;){s.push(o={children:[],index:0});c.children[c.index]=o.children;c=o}i++}if(a+10){g--;return f>>g&1}f=e[t++];if(255===f){const r=e[t++];if(r){if(220===r&&l){const r=readUint16(e,t+=2);t+=2;if(r>0&&r!==a.scanLines)throw new DNLMarkerError("Found DNL marker (0xFFDC) while parsing scan data",r)}else if(217===r){if(l){const e=y*(8===a.precision?8:0);if(e>0&&Math.round(a.scanLines/e)>=5)throw new DNLMarkerError("Found EOI marker (0xFFD9) while parsing scan data, possibly caused by incorrect `scanLines` parameter",e)}throw new EOIMarkerError("Found EOI marker (0xFFD9) while parsing scan data")}throw new JpegError(`unexpected marker ${(f<<8|r).toString(16)}`)}}g=7;return f>>>7}function decodeHuffman(e){let t=e;for(;;){t=t[readBit()];switch(typeof t){case"number":return t;case"object":continue}throw new JpegError("invalid huffman sequence")}}function receive(e){let t=0;for(;e>0;){t=t<<1|readBit();e--}return t}function receiveAndExtend(e){if(1===e)return 1===readBit()?1:-1;const t=receive(e);return t>=1<0){p--;return}let a=n;const r=s;for(;a<=r;){const r=decodeHuffman(e.huffmanTableAC),i=15&r,n=r>>4;if(0===i){if(n<15){p=receive(n)+(1<>4;if(0===i)if(l<15){p=receive(l)+(1<>4;if(0===r){if(n<15)break;i+=16;continue}i+=n;const s=Wa[i];e.blockData[t+s]=receiveAndExtend(r);i++}};let O,T=0;const M=1===w?r[0].blocksPerLine*r[0].blocksPerColumn:h*a.mcusPerColumn;let D,R;for(;T<=M;){const a=i?Math.min(M-T,i):M;if(a>0){for(k=0;k0?"unexpected":"excessive"} MCU data, current marker is: ${O.invalid}`);t=O.offset}if(!(O.marker>=65488&&O.marker<=65495))break;t+=2}return t-d}function quantizeAndInverse(e,t,a){const r=e.quantizationTable,i=e.blockData;let n,s,o,c,l,h,u,d,f,g,p,m,b,y,w,x,k;if(!r)throw new JpegError("missing required Quantization Table.");for(let e=0;e<64;e+=8){f=i[t+e];g=i[t+e+1];p=i[t+e+2];m=i[t+e+3];b=i[t+e+4];y=i[t+e+5];w=i[t+e+6];x=i[t+e+7];f*=r[e];if(0!=(g|p|m|b|y|w|x)){g*=r[e+1];p*=r[e+2];m*=r[e+3];b*=r[e+4];y*=r[e+5];w*=r[e+6];x*=r[e+7];n=Za*f+128>>8;s=Za*b+128>>8;o=p;c=w;l=Qa*(g-x)+128>>8;d=Qa*(g+x)+128>>8;h=m<<4;u=y<<4;n=n+s+1>>1;s=n-s;k=o*Ya+c*Ja+128>>8;o=o*Ja-c*Ya+128>>8;c=k;l=l+u+1>>1;u=l-u;d=d+h+1>>1;h=d-h;n=n+c+1>>1;c=n-c;s=s+o+1>>1;o=s-o;k=l*Ka+d*Va+2048>>12;l=l*Va-d*Ka+2048>>12;d=k;k=h*Ga+u*$a+2048>>12;h=h*$a-u*Ga+2048>>12;u=k;a[e]=n+d;a[e+7]=n-d;a[e+1]=s+u;a[e+6]=s-u;a[e+2]=o+h;a[e+5]=o-h;a[e+3]=c+l;a[e+4]=c-l}else{k=Za*f+512>>10;a[e]=k;a[e+1]=k;a[e+2]=k;a[e+3]=k;a[e+4]=k;a[e+5]=k;a[e+6]=k;a[e+7]=k}}for(let e=0;e<8;++e){f=a[e];g=a[e+8];p=a[e+16];m=a[e+24];b=a[e+32];y=a[e+40];w=a[e+48];x=a[e+56];if(0!=(g|p|m|b|y|w|x)){n=Za*f+2048>>12;s=Za*b+2048>>12;o=p;c=w;l=Qa*(g-x)+2048>>12;d=Qa*(g+x)+2048>>12;h=m;u=y;n=4112+(n+s+1>>1);s=n-s;k=o*Ya+c*Ja+2048>>12;o=o*Ja-c*Ya+2048>>12;c=k;l=l+u+1>>1;u=l-u;d=d+h+1>>1;h=d-h;n=n+c+1>>1;c=n-c;s=s+o+1>>1;o=s-o;k=l*Ka+d*Va+2048>>12;l=l*Va-d*Ka+2048>>12;d=k;k=h*Ga+u*$a+2048>>12;h=h*$a-u*Ga+2048>>12;u=k;f=n+d;x=n-d;g=s+u;w=s-u;p=o+h;y=o-h;m=c+l;b=c-l;f<16?f=0:f>=4080?f=255:f>>=4;g<16?g=0:g>=4080?g=255:g>>=4;p<16?p=0:p>=4080?p=255:p>>=4;m<16?m=0:m>=4080?m=255:m>>=4;b<16?b=0:b>=4080?b=255:b>>=4;y<16?y=0:y>=4080?y=255:y>>=4;w<16?w=0:w>=4080?w=255:w>>=4;x<16?x=0:x>=4080?x=255:x>>=4;i[t+e]=f;i[t+e+8]=g;i[t+e+16]=p;i[t+e+24]=m;i[t+e+32]=b;i[t+e+40]=y;i[t+e+48]=w;i[t+e+56]=x}else{k=Za*f+8192>>14;k=k<-2040?0:k>=2024?255:k+2056>>4;i[t+e]=k;i[t+e+8]=k;i[t+e+16]=k;i[t+e+24]=k;i[t+e+32]=k;i[t+e+40]=k;i[t+e+48]=k;i[t+e+56]=k}}}function buildComponentData(e,t){const a=t.blocksPerLine,r=t.blocksPerColumn,i=new Int16Array(64);for(let e=0;e=r)return null;const n=readUint16(e,t);if(n>=65472&&n<=65534)return{invalid:null,marker:n,offset:t};let s=readUint16(e,i);for(;!(s>=65472&&s<=65534);){if(++i>=r)return null;s=readUint16(e,i)}return{invalid:n.toString(16),marker:s,offset:i}}class JpegImage{constructor({decodeTransform:e=null,colorTransform:t=-1}={}){this._decodeTransform=e;this._colorTransform=t}parse(e,{dnlScanLines:t=null}={}){function readDataBlock(){const t=readUint16(e,i);i+=2;let a=i+t-2;const r=findNextFileMarker(e,a,i);if(r?.invalid){warn("readDataBlock - incorrect length, current marker is: "+r.invalid);a=r.offset}const n=e.subarray(i,a);i+=n.length;return n}function prepareComponents(e){const t=Math.ceil(e.samplesPerLine/8/e.maxH),a=Math.ceil(e.scanLines/8/e.maxV);for(const r of e.components){const i=Math.ceil(Math.ceil(e.samplesPerLine/8)*r.h/e.maxH),n=Math.ceil(Math.ceil(e.scanLines/8)*r.v/e.maxV),s=t*r.h,o=64*(a*r.v)*(s+1);r.blockData=new Int16Array(o);r.blocksPerLine=i;r.blocksPerColumn=n}e.mcusPerLine=t;e.mcusPerColumn=a}let a,r,i=0,n=null,s=null,o=0;const c=[],l=[],h=[];let u=readUint16(e,i);i+=2;if(65496!==u)throw new JpegError("SOI not found");u=readUint16(e,i);i+=2;e:for(;65497!==u;){let d,f,g;switch(u){case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:const p=readDataBlock();65504===u&&74===p[0]&&70===p[1]&&73===p[2]&&70===p[3]&&0===p[4]&&(n={version:{major:p[5],minor:p[6]},densityUnits:p[7],xDensity:p[8]<<8|p[9],yDensity:p[10]<<8|p[11],thumbWidth:p[12],thumbHeight:p[13],thumbData:p.subarray(14,14+3*p[12]*p[13])});65518===u&&65===p[0]&&100===p[1]&&111===p[2]&&98===p[3]&&101===p[4]&&(s={version:p[5]<<8|p[6],flags0:p[7]<<8|p[8],flags1:p[9]<<8|p[10],transformCode:p[11]});break;case 65499:const m=readUint16(e,i);i+=2;const b=m+i-2;let y;for(;i>4==0)for(f=0;f<64;f++){y=Wa[f];a[y]=e[i++]}else{if(t>>4!=1)throw new JpegError("DQT - invalid table spec");for(f=0;f<64;f++){y=Wa[f];a[y]=readUint16(e,i);i+=2}}c[15&t]=a}break;case 65472:case 65473:case 65474:if(a)throw new JpegError("Only single frame JPEGs supported");i+=2;a={};a.extended=65473===u;a.progressive=65474===u;a.precision=e[i++];const w=readUint16(e,i);i+=2;a.scanLines=t||w;a.samplesPerLine=readUint16(e,i);i+=2;a.components=[];a.componentIds={};const x=e[i++];let k=0,S=0;for(d=0;d>4,n=15&e[i+1];k>4==0?h:l)[15&t]=buildHuffmanTable(a,n)}break;case 65501:i+=2;r=readUint16(e,i);i+=2;break;case 65498:const v=1==++o&&!t;i+=2;const F=e[i++],O=[];for(d=0;d>4];n.huffmanTableAC=l[15&s];O.push(n)}const T=e[i++],M=e[i++],D=e[i++];try{const t=decodeScan(e,i,a,O,r,T,M,D>>4,15&D,v);i+=t}catch(t){if(t instanceof DNLMarkerError){warn(`${t.message} -- attempting to re-parse the JPEG image.`);return this.parse(e,{dnlScanLines:t.scanLines})}if(t instanceof EOIMarkerError){warn(`${t.message} -- ignoring the rest of the image data.`);break e}throw t}break;case 65500:i+=4;break;case 65535:255!==e[i]&&i--;break;default:const R=findNextFileMarker(e,i-2,i-3);if(R?.invalid){warn("JpegImage.parse - unexpected data, current marker is: "+R.invalid);i=R.offset;break}if(!R||i>=e.length-1){warn("JpegImage.parse - reached the end of the image data without finding an EOI marker (0xFFD9).");break e}throw new JpegError("JpegImage.parse - unknown marker: "+u.toString(16))}u=readUint16(e,i);i+=2}if(!a)throw new JpegError("JpegImage.parse - no frame data found.");this.width=a.samplesPerLine;this.height=a.scanLines;this.jfif=n;this.adobe=s;this.components=[];for(const e of a.components){const t=c[e.quantizationId];t&&(e.quantizationTable=t);this.components.push({index:e.index,output:buildComponentData(0,e),scaleX:e.h/a.maxH,scaleY:e.v/a.maxV,blocksPerLine:e.blocksPerLine,blocksPerColumn:e.blocksPerColumn})}this.numComponents=this.components.length}_getLinearizedBlockData(e,t,a=!1){const r=this.width/e,i=this.height/t;let n,s,o,c,l,h,u,d,f,g,p,m=0;const b=this.components.length,y=e*t*b,w=new Uint8ClampedArray(y),x=new Uint32Array(e),k=4294967288;let S;for(u=0;u>8)+C[f+1];return w}get _isColorConversionNeeded(){return this.adobe?!!this.adobe.transformCode:3===this.numComponents?0!==this._colorTransform&&(82!==this.components[0].index||71!==this.components[1].index||66!==this.components[2].index):1===this._colorTransform}_convertYccToRgb(e){let t,a,r;for(let i=0,n=e.length;i4)throw new JpegError("Unsupported color mode");const n=this._getLinearizedBlockData(e,t,i);if(1===this.numComponents&&(a||r)){const e=n.length*(a?4:3),t=new Uint8ClampedArray(e);let r=0;if(a)!function grayToRGBA(e,t){if(FeatureTest.isLittleEndian)for(let a=0,r=e.length;a>24&255,n>>16&255,n>>8&255,255&n)}).`)}o&&(a+=s)}}parseImageProperties(e){let t=e.getByte();for(;t>=0;){const a=t;t=e.getByte();if(65361===(a<<8|t)){e.skip(4);const t=e.getInt32()>>>0,a=e.getInt32()>>>0,r=e.getInt32()>>>0,i=e.getInt32()>>>0;e.skip(16);const n=e.getUint16();this.width=t-r;this.height=a-i;this.componentsCount=n;this.bitsPerComponent=8;return}}throw new JpxError("No size marker found in JPX stream")}parseCodestream(e,t,a){const r={};let i=!1;try{let n=t;for(;n+1>5;o=[];for(;a>3;t.mu=0}else{t.epsilon=e[a]>>3;t.mu=(7&e[a])<<8|e[a+1];a+=2}o.push(t)}p.SPqcds=o;if(r.mainHeader)r.QCD=p;else{r.currentTile.QCD=p;r.currentTile.QCC=[]}break;case 65373:u=readUint16(e,n);const m={};a=n+2;let b;if(r.SIZ.Csiz<257)b=e[a++];else{b=readUint16(e,a);a+=2}s=e[a++];switch(31&s){case 0:c=8;l=!0;break;case 1:c=16;l=!1;break;case 2:c=16;l=!0;break;default:throw new Error("Invalid SQcd value "+s)}m.noQuantization=8===c;m.scalarExpounded=l;m.guardBits=s>>5;o=[];for(;a>3;t.mu=0}else{t.epsilon=e[a]>>3;t.mu=(7&e[a])<<8|e[a+1];a+=2}o.push(t)}m.SPqcds=o;r.mainHeader?r.QCC[b]=m:r.currentTile.QCC[b]=m;break;case 65362:u=readUint16(e,n);const y={};a=n+2;const w=e[a++];y.entropyCoderWithCustomPrecincts=!!(1&w);y.sopMarkerUsed=!!(2&w);y.ephMarkerUsed=!!(4&w);y.progressionOrder=e[a++];y.layersCount=readUint16(e,a);a+=2;y.multipleComponentTransform=e[a++];y.decompositionLevelsCount=e[a++];y.xcb=2+(15&e[a++]);y.ycb=2+(15&e[a++]);const x=e[a++];y.selectiveArithmeticCodingBypass=!!(1&x);y.resetContextProbabilities=!!(2&x);y.terminationOnEachCodingPass=!!(4&x);y.verticallyStripe=!!(8&x);y.predictableTermination=!!(16&x);y.segmentationSymbolUsed=!!(32&x);y.reversibleTransformation=e[a++];if(y.entropyCoderWithCustomPrecincts){const t=[];for(;a>4})}y.precinctsSizes=t}const k=[];y.selectiveArithmeticCodingBypass&&k.push("selectiveArithmeticCodingBypass");y.terminationOnEachCodingPass&&k.push("terminationOnEachCodingPass");y.verticallyStripe&&k.push("verticallyStripe");y.predictableTermination&&k.push("predictableTermination");if(k.length>0){i=!0;warn(`JPX: Unsupported COD options (${k.join(", ")}).`)}if(r.mainHeader)r.COD=y;else{r.currentTile.COD=y;r.currentTile.COC=[]}break;case 65424:u=readUint16(e,n);h={};h.index=readUint16(e,n+2);h.length=readUint32(e,n+4);h.dataEnd=h.length+n-2;h.partIndex=e[n+8];h.partsCount=e[n+9];r.mainHeader=!1;if(0===h.partIndex){h.COD=r.COD;h.COC=r.COC.slice(0);h.QCD=r.QCD;h.QCC=r.QCC.slice(0)}r.currentTile=h;break;case 65427:h=r.currentTile;if(0===h.partIndex){initializeTile(r,h.index);buildPackets(r)}u=h.dataEnd-n;parseTilePackets(r,e,n,u);break;case 65363:warn("JPX: Codestream code 0xFF53 (COC) is not implemented.");case 65365:case 65367:case 65368:case 65380:u=readUint16(e,n);break;default:throw new Error("Unknown codestream code: "+t.toString(16))}n+=u}}catch(e){if(i||this.failOnCorruptedImage)throw new JpxError(e.message);warn(`JPX: Trying to recover from: "${e.message}".`)}this.tiles=function transformComponents(e){const t=e.SIZ,a=e.components,r=t.Csiz,i=[];for(let t=0,n=e.tiles.length;t>2);c[b++]=e+m>>h;c[b++]=e>>h;c[b++]=e+p>>h}else for(d=0;d>h;c[b++]=g-.34413*p-.71414*m>>h;c[b++]=g+1.772*p>>h}if(e)for(d=0,b=3;d>h}else for(let e=0;e>h;b+=r}}i.push(l)}return i}(r);this.width=r.SIZ.Xsiz-r.SIZ.XOsiz;this.height=r.SIZ.Ysiz-r.SIZ.YOsiz;this.componentsCount=r.SIZ.Csiz}}function calculateComponentDimensions(e,t){e.x0=Math.ceil(t.XOsiz/e.XRsiz);e.x1=Math.ceil(t.Xsiz/e.XRsiz);e.y0=Math.ceil(t.YOsiz/e.YRsiz);e.y1=Math.ceil(t.Ysiz/e.YRsiz);e.width=e.x1-e.x0;e.height=e.y1-e.y0}function calculateTileGrids(e,t){const a=e.SIZ,r=[];let i;const n=Math.ceil((a.Xsiz-a.XTOsiz)/a.XTsiz),s=Math.ceil((a.Ysiz-a.YTOsiz)/a.YTsiz);for(let e=0;e0?Math.min(r.xcb,i.PPx-1):Math.min(r.xcb,i.PPx);i.ycb_=a>0?Math.min(r.ycb,i.PPy-1):Math.min(r.ycb,i.PPy);return i}function buildPrecincts(e,t,a){const r=1<t.trx0?Math.ceil(t.trx1/r)-Math.floor(t.trx0/r):0,l=t.try1>t.try0?Math.ceil(t.try1/i)-Math.floor(t.try0/i):0,h=c*l;t.precinctParameters={precinctWidth:r,precinctHeight:i,numprecinctswide:c,numprecinctshigh:l,numprecincts:h,precinctWidthInSubband:s,precinctHeightInSubband:o}}function buildCodeblocks(e,t,a){const r=a.xcb_,i=a.ycb_,n=1<>r,c=t.tby0>>i,l=t.tbx1+n-1>>r,h=t.tby1+s-1>>i,u=t.resolution.precinctParameters,d=[],f=[];let g,p,m,b;for(p=c;pe.cbxMax&&(e.cbxMax=g);pe.cbyMax&&(e.cbyMax=p)}else f[b]=e={cbxMin:g,cbyMin:p,cbxMax:g,cbyMax:p};m.precinct=e}t.codeblockParameters={codeblockWidth:r,codeblockHeight:i,numcodeblockwide:l-o+1,numcodeblockhigh:h-c+1};t.codeblocks=d;t.precincts=f}function createPacket(e,t,a){const r=[],i=e.subbands;for(let e=0,a=i.length;ee.codingStyleParameters.decompositionLevelsCount)continue;const t=e.resolutions[c],a=t.precinctParameters.numprecincts;for(;he.codingStyleParameters.decompositionLevelsCount)continue;const t=e.resolutions[o],a=t.precinctParameters.numprecincts;for(;he.codingStyleParameters.decompositionLevelsCount)continue;const t=e.resolutions[o],a=t.precinctParameters.numprecincts;if(!(l>=a)){for(;s=0;--e){const a=t.resolutions[e],r=g*a.precinctParameters.precinctWidth,i=g*a.precinctParameters.precinctHeight;h=Math.min(h,r);u=Math.min(u,i);d=Math.max(d,a.precinctParameters.numprecinctswide);f=Math.max(f,a.precinctParameters.numprecinctshigh);l[e]={width:r,height:i};g<<=1}a=Math.min(a,h);r=Math.min(r,u);i=Math.max(i,d);n=Math.max(n,f);s[o]={resolutions:l,minWidth:h,minHeight:u,maxNumWide:d,maxNumHigh:f}}return{components:s,minWidth:a,minHeight:r,maxNumWide:i,maxNumHigh:n}}function buildPackets(e){const t=e.SIZ,a=e.currentTile.index,r=e.tiles[a],i=t.Csiz;for(let e=0;e>>s&(1<0;){const e=i.shift();s=e.codeblock;void 0===s.data&&(s.data=[]);s.data.push({data:t,start:a+n,end:a+n+e.dataLength,codingpasses:e.codingpasses});n+=e.dataLength}}return n}function copyCoefficients(e,t,a,r,i,n,s,o,c){const l=r.tbx0,h=r.tby0,u=r.tbx1-r.tbx0,d=r.codeblocks,f="H"===r.type.charAt(0)?1:0,g="H"===r.type.charAt(1)?t:0;for(let a=0,p=d.length;a=n?_:_*(1<0?1-e:0)}const g=t.subbands[r],p=er[g.type];copyCoefficients(n,a,0,g,f?1:2**(d+p-s)*(1+i/2048),l+s-1,f,h,u)}p.push({width:a,height:i,items:n})}const b=g.calculate(p,r.tcx0,r.tcy0);return{left:r.tcx0,top:r.tcy0,width:b.width,height:b.height,items:b.items}}function initializeTile(e,t){const a=e.SIZ.Csiz,r=e.tiles[t];for(let t=0;t>=1;t>>=1;r++}r--;a=this.levels[r];a.items[a.index]=i;this.currentLevel=r;delete this.value}incrementValue(){const e=this.levels[this.currentLevel];e.items[e.index]++}nextLevel(){let e=this.currentLevel,t=this.levels[e];const a=t.items[t.index];e--;if(e<0){this.value=a;return!1}this.currentLevel=e;t=this.levels[e];t.items[t.index]=a;return!0}}class InclusionTree{constructor(e,t,a){const r=log2(Math.max(e,t))+1;this.levels=[];for(let i=0;ia){this.currentLevel=r;this.propagateValues();return!1}e>>=1;t>>=1;r++}this.currentLevel=r-1;return!0}incrementValue(e){const t=this.levels[this.currentLevel];t.items[t.index]=e+1;this.propagateValues()}propagateValues(){let e=this.currentLevel,t=this.levels[e];const a=t.items[t.index];for(;--e>=0;){t=this.levels[e];t.items[t.index]=a}}nextLevel(){let e=this.currentLevel,t=this.levels[e];const a=t.items[t.index];t.items[t.index]=255;e--;if(e<0)return!1;this.currentLevel=e;t=this.levels[e];t.items[t.index]=a;return!0}}class BitModel{static UNIFORM_CONTEXT=17;static RUNLENGTH_CONTEXT=18;static LLAndLHContextsLabel=new Uint8Array([0,5,8,0,3,7,8,0,4,7,8,0,0,0,0,0,1,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8]);static HLContextLabel=new Uint8Array([0,3,4,0,5,7,7,0,8,8,8,0,0,0,0,0,1,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8]);static HHContextLabel=new Uint8Array([0,1,2,0,1,2,2,0,2,2,2,0,0,0,0,0,3,4,5,0,4,5,5,0,5,5,5,0,0,0,0,0,6,7,7,0,7,7,7,0,7,7,7,0,0,0,0,0,8,8,8,0,8,8,8,0,8,8,8,0,0,0,0,0,8,8,8,0,8,8,8,0,8,8,8]);constructor(e,t,a,r,i){this.width=e;this.height=t;let n;n="HH"===a?BitModel.HHContextLabel:"HL"===a?BitModel.HLContextLabel:BitModel.LLAndLHContextsLabel;this.contextLabelTable=n;const s=e*t;this.neighborsSignificance=new Uint8Array(s);this.coefficentsSign=new Uint8Array(s);let o;o=i>14?new Uint32Array(s):i>6?new Uint16Array(s):new Uint8Array(s);this.coefficentsMagnitude=o;this.processingFlags=new Uint8Array(s);const c=new Uint8Array(s);if(0!==r)for(let e=0;e0,o=t+10){c=a-i;s&&(r[c-1]+=16);o&&(r[c+1]+=16);r[c]+=4}if(e+1=a)break;s[d]&=-2;if(r[d]||!n[d])continue;const g=c[n[d]];if(e.readBit(o,g)){const e=this.decodeSignBit(t,u,d);i[d]=e;r[d]=1;this.setNeighborsSignificance(t,u,d);s[d]|=2}l[d]++;s[d]|=1}}}decodeSignBit(e,t,a){const r=this.width,i=this.height,n=this.coefficentsMagnitude,s=this.coefficentsSign;let o,c,l,h,u,d;h=t>0&&0!==n[a-1];if(t+10&&0!==n[a-r];if(e+1=0){u=9+o;d=this.decoder.readBit(this.contexts,u)}else{u=9-o;d=1^this.decoder.readBit(this.contexts,u)}return d}runMagnitudeRefinementPass(){const e=this.decoder,t=this.width,a=this.height,r=this.coefficentsMagnitude,i=this.neighborsSignificance,n=this.contexts,s=this.bitsDecoded,o=this.processingFlags,c=t*a,l=4*t;for(let a,h=0;h>1;let i,n,s,o;const c=-1.586134342059924,l=-.052980118572961,h=.882911075530934,u=.443506852043971,d=1.230174104914001;i=(t|=0)-3;for(n=r+4;n--;i+=2)e[i]*=.8128930661159609;i=t-2;s=u*e[i-1];for(n=r+3;n--;i+=2){o=u*e[i+1];e[i]=d*e[i]-s-o;if(!n--)break;i+=2;s=u*e[i+1];e[i]=d*e[i]-s-o}i=t-1;s=h*e[i-1];for(n=r+2;n--;i+=2){o=h*e[i+1];e[i]-=s+o;if(!n--)break;i+=2;s=h*e[i+1];e[i]-=s+o}i=t;s=l*e[i-1];for(n=r+1;n--;i+=2){o=l*e[i+1];e[i]-=s+o;if(!n--)break;i+=2;s=l*e[i+1];e[i]-=s+o}if(0!==r){i=t+1;s=c*e[i-1];for(n=r;n--;i+=2){o=c*e[i+1];e[i]-=s+o;if(!n--)break;i+=2;s=c*e[i+1];e[i]-=s+o}}}}class ReversibleTransform extends Transform{filter(e,t,a){const r=a>>1;let i,n;for(i=t|=0,n=r+1;n--;i+=2)e[i]-=e[i-1]+e[i+1]+2>>2;for(i=t+1,n=r;n--;i+=2)e[i]+=e[i-1]+e[i+1]>>1}}class JpxStream extends DecodeStream{constructor(e,t,a){super(t);this.stream=e;this.dict=e.dict;this.maybeLength=t;this.params=a}get bytes(){return shadow(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}readBlock(){if(this.eof)return;const e=new JpxImage;e.parse(this.bytes);const t=e.width,a=e.height,r=e.componentsCount,i=e.tiles.length;if(1===i)this.buffer=e.tiles[0].items;else{const n=new Uint8ClampedArray(t*a*r);for(let a=0;a>>t&(1<0;if(e<256){d[0]=e;f=1}else{if(!(e>=258)){if(256===e){h=9;s=258;f=0;continue}this.eof=!0;delete this.lzwState;break}if(e=0;t--){d[t]=o[a];a=l[a]}}else d[f++]=d[0]}if(i){l[s]=u;c[s]=c[u]+1;o[s]=d[0];s++;h=s+n&s+n-1?h:0|Math.min(Math.log(s+n)/.6931471805599453+1,12)}u=e;g+=f;if(r15))throw new FormatError(`Unsupported predictor: ${r}`);this.readBlock=2===r?this.readBlockTiff:this.readBlockPng;this.str=e;this.dict=e.dict;const i=this.colors=a.get("Colors")||1,n=this.bits=a.get("BPC","BitsPerComponent")||8,s=this.columns=a.get("Columns")||1;this.pixBytes=i*n+7>>3;this.rowBytes=s*i*n+7>>3;return this}readBlockTiff(){const e=this.rowBytes,t=this.bufferLength,a=this.ensureBuffer(t+e),r=this.bits,i=this.colors,n=this.str.getBytes(e);this.eof=!n.length;if(this.eof)return;let s,o=0,c=0,l=0,h=0,u=t;if(1===r&&1===i)for(s=0;s>1;e^=e>>2;e^=e>>4;o=(1&e)<<7;a[u++]=e}else if(8===r){for(s=0;s>8&255;a[u++]=255&e}}else{const e=new Uint8Array(i+1),u=(1<>l-r)&u;l-=r;c=c<=8){a[f++]=c>>h-8&255;h-=8}}h>0&&(a[f++]=(c<<8-h)+(o&(1<<8-h)-1))}this.bufferLength+=e}readBlockPng(){const e=this.rowBytes,t=this.pixBytes,a=this.str.getByte(),r=this.str.getBytes(e);this.eof=!r.length;if(this.eof)return;const i=this.bufferLength,n=this.ensureBuffer(i+e);let s=n.subarray(i-e,i);0===s.length&&(s=new Uint8Array(e));let o,c,l,h=i;switch(a){case 0:for(o=0;o>1)+r[o];for(;o>1)+r[o]&255;h++}break;case 4:for(o=0;o0){const e=this.str.getBytes(r);t.set(e,a);a+=r}}else{r=257-r;const i=e[1];t=this.ensureBuffer(a+r+1);for(let e=0;e>")&&this.buf1!==fa;){if(!(this.buf1 instanceof Name)){info("Malformed dictionary: key must be a name object");this.shift();continue}const t=this.buf1.name;this.shift();if(this.buf1===fa)break;r.set(t,this.getObj(e))}if(this.buf1===fa){if(this.recoveryMode)return r;throw new ParserEOFException("End of file inside dictionary.")}if(isCmd(this.buf2,"stream"))return this.allowStreams?this.makeStream(r,e):r;this.shift();return r;default:return t}if(Number.isInteger(t)){if(Number.isInteger(this.buf1)&&isCmd(this.buf2,"R")){const e=Ref.get(t,this.buf1);this.shift();this.shift();return e}return t}return"string"==typeof t&&e?e.decryptString(t):t}findDefaultInlineStreamEnd(e){const{knownCommands:t}=this.lexer,a=e.pos;let r,i,n=0;for(;-1!==(r=e.getByte());)if(0===n)n=69===r?1:0;else if(1===n)n=73===r?2:0;else if(32===r||10===r||13===r){i=e.pos;const a=e.peekBytes(15),s=a.length;if(0===s)break;for(let e=0;e127))){n=0;break}}if(2!==n)continue;if(!t){warn("findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.");continue}const o=new Lexer(new Stream(a.slice()),t);o._hexStringWarn=()=>{};let c=0;for(;;){const e=o.getObj();if(e===fa){n=0;break}if(e instanceof Cmd){const a=t[e.cmd];if(!a){n=0;break}if(a.variableArgs?c<=a.numArgs:c===a.numArgs)break;c=0}else c++}if(2===n)break}else n=0;if(-1===r){warn("findDefaultInlineStreamEnd: Reached the end of the stream without finding a valid EI marker");if(i){warn('... trying to recover by using the last "EI" occurrence.');e.skip(-(e.pos-i))}}let s=4;e.skip(-s);r=e.peekByte();e.skip(s);isWhiteSpace(r)||s--;return e.pos-s-a}findDCTDecodeInlineStreamEnd(e){const t=e.pos;let a,r,i=!1;for(;-1!==(a=e.getByte());)if(255===a){switch(e.getByte()){case 0:break;case 255:e.skip(-1);break;case 217:i=!0;break;case 192:case 193:case 194:case 195:case 197:case 198:case 199:case 201:case 202:case 203:case 205:case 206:case 207:case 196:case 204:case 218:case 219:case 220:case 221:case 222:case 223:case 224:case 225:case 226:case 227:case 228:case 229:case 230:case 231:case 232:case 233:case 234:case 235:case 236:case 237:case 238:case 239:case 254:r=e.getUint16();r>2?e.skip(r-2):e.skip(-2)}if(i)break}const n=e.pos-t;if(-1===a){warn("Inline DCTDecode image stream: EOI marker not found, searching for /EI/ instead.");e.skip(-n);return this.findDefaultInlineStreamEnd(e)}this.inlineStreamSkipEI(e);return n}findASCII85DecodeInlineStreamEnd(e){const t=e.pos;let a;for(;-1!==(a=e.getByte());)if(126===a){const t=e.pos;a=e.peekByte();for(;isWhiteSpace(a);){e.skip();a=e.peekByte()}if(62===a){e.skip();break}if(e.pos>t){const t=e.peekBytes(2);if(69===t[0]&&73===t[1])break}}const r=e.pos-t;if(-1===a){warn("Inline ASCII85Decode image stream: EOD marker not found, searching for /EI/ instead.");e.skip(-r);return this.findDefaultInlineStreamEnd(e)}this.inlineStreamSkipEI(e);return r}findASCIIHexDecodeInlineStreamEnd(e){const t=e.pos;let a;for(;-1!==(a=e.getByte())&&62!==a;);const r=e.pos-t;if(-1===a){warn("Inline ASCIIHexDecode image stream: EOD marker not found, searching for /EI/ instead.");e.skip(-r);return this.findDefaultInlineStreamEnd(e)}this.inlineStreamSkipEI(e);return r}inlineStreamSkipEI(e){let t,a=0;for(;-1!==(t=e.getByte());)if(0===a)a=69===t?1:0;else if(1===a)a=73===t?2:0;else if(2===a)break}makeInlineImage(e){const t=this.lexer,a=t.stream,r=Object.create(null);let i;for(;!isCmd(this.buf1,"ID")&&this.buf1!==fa;){if(!(this.buf1 instanceof Name))throw new FormatError("Dictionary key must be a name object");const t=this.buf1.name;this.shift();if(this.buf1===fa)break;r[t]=this.getObj(e)}-1!==t.beginInlineImagePos&&(i=a.pos-t.beginInlineImagePos);const n=this.xref.fetchIfRef(r.F||r.Filter);let s;if(n instanceof Name)s=n.name;else if(Array.isArray(n)){const e=this.xref.fetchIfRef(n[0]);e instanceof Name&&(s=e.name)}const o=a.pos;let c,l;switch(s){case"DCT":case"DCTDecode":c=this.findDCTDecodeInlineStreamEnd(a);break;case"A85":case"ASCII85Decode":c=this.findASCII85DecodeInlineStreamEnd(a);break;case"AHx":case"ASCIIHexDecode":c=this.findASCIIHexDecodeInlineStreamEnd(a);break;default:c=this.findDefaultInlineStreamEnd(a)}if(c<1e3&&i>0){const e=a.pos;a.pos=t.beginInlineImagePos;l=function getInlineImageCacheKey(e){const t=[],a=e.length;let r=0;for(;r=r){a.pos+=s;return a.pos-e}s++}a.pos+=n}return-1}makeStream(e,t){const a=this.lexer;let r=a.stream;a.skipToNextLine();const i=r.pos-1;let n=e.get("Length");if(!Number.isInteger(n)){info(`Bad length "${n&&n.toString()}" in stream.`);n=0}r.pos=i+n;a.nextChar();if(this.tryShift()&&isCmd(this.buf2,"endstream"))this.shift();else{const e=new Uint8Array([101,110,100,115,116,114,101,97,109]);let t=this._findStreamLength(i,e);if(t<0){const a=1;for(let n=1;n<=a;n++){const a=e.length-n,s=e.slice(0,a),o=this._findStreamLength(i,s);if(o>=0){if(!isWhiteSpace(r.peekBytes(a+1)[a]))break;info(`Found "${bytesToString(s)}" when searching for endstream command.`);t=o;break}}if(t<0)throw new FormatError("Missing endstream command.")}n=t;a.nextChar();this.shift();this.shift()}this.shift();r=r.makeSubStream(i,n,e);t&&(r=t.createStream(r,n));r=this.filter(r,e,n);r.dict=e;return r}filter(e,t,a){let r=t.get("F","Filter"),i=t.get("DP","DecodeParms");if(r instanceof Name){Array.isArray(i)&&warn("/DecodeParms should not be an Array, when /Filter is a Name.");return this.makeFilter(e,r.name,a,i)}let n=a;if(Array.isArray(r)){const t=r,a=i;for(let s=0,o=t.length;s=48&&e<=57?15&e:e>=65&&e<=70||e>=97&&e<=102?9+(15&e):-1}class Lexer{constructor(e,t=null){this.stream=e;this.nextChar();this.strBuf=[];this.knownCommands=t;this._hexStringNumWarn=0;this.beginInlineImagePos=-1}nextChar(){return this.currentChar=this.stream.getByte()}peekChar(){return this.stream.peekByte()}getNumber(){let e=this.currentChar,t=!1,a=0,r=1;if(45===e){r=-1;e=this.nextChar();45===e&&(e=this.nextChar())}else 43===e&&(e=this.nextChar());if(10===e||13===e)do{e=this.nextChar()}while(10===e||13===e);if(46===e){a=10;e=this.nextChar()}if(e<48||e>57){const t=`Invalid number: ${String.fromCharCode(e)} (charCode ${e})`;if(isWhiteSpace(e)||-1===e){info(`Lexer.getNumber - "${t}".`);return 0}throw new FormatError(t)}let i=e-48,n=0,s=1;for(;(e=this.nextChar())>=0;)if(e>=48&&e<=57){const r=e-48;if(t)n=10*n+r;else{0!==a&&(a*=10);i=10*i+r}}else if(46===e){if(0!==a)break;a=1}else if(45===e)warn("Badly formatted number: minus sign in the middle");else{if(69!==e&&101!==e)break;e=this.peekChar();if(43===e||45===e){s=45===e?-1:1;this.nextChar()}else if(e<48||e>57)break;t=!0}0!==a&&(i/=a);t&&(i*=10**(s*n));return r*i}getString(){let e=1,t=!1;const a=this.strBuf;a.length=0;let r=this.nextChar();for(;;){let i=!1;switch(0|r){case-1:warn("Unterminated string");t=!0;break;case 40:++e;a.push("(");break;case 41:if(0==--e){this.nextChar();t=!0}else a.push(")");break;case 92:r=this.nextChar();switch(r){case-1:warn("Unterminated string");t=!0;break;case 110:a.push("\n");break;case 114:a.push("\r");break;case 116:a.push("\t");break;case 98:a.push("\b");break;case 102:a.push("\f");break;case 92:case 40:case 41:a.push(String.fromCharCode(r));break;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:let e=15&r;r=this.nextChar();i=!0;if(r>=48&&r<=55){e=(e<<3)+(15&r);r=this.nextChar();if(r>=48&&r<=55){i=!1;e=(e<<3)+(15&r)}}a.push(String.fromCharCode(e));break;case 13:10===this.peekChar()&&this.nextChar();break;case 10:break;default:a.push(String.fromCharCode(r))}break;default:a.push(String.fromCharCode(r))}if(t)break;i||(r=this.nextChar())}return a.join("")}getName(){let e,t;const a=this.strBuf;a.length=0;for(;(e=this.nextChar())>=0&&!tr[e];)if(35===e){e=this.nextChar();if(tr[e]){warn("Lexer_getName: NUMBER SIGN (#) should be followed by a hexadecimal number.");a.push("#");break}const r=toHexDigit(e);if(-1!==r){t=e;e=this.nextChar();const i=toHexDigit(e);if(-1===i){warn(`Lexer_getName: Illegal digit (${String.fromCharCode(e)}) in hexadecimal number.`);a.push("#",String.fromCharCode(t));if(tr[e])break;a.push(String.fromCharCode(e));continue}a.push(String.fromCharCode(r<<4|i))}else a.push("#",String.fromCharCode(e))}else a.push(String.fromCharCode(e));a.length>127&&warn(`Name token is longer than allowed by the spec: ${a.length}`);return Name.get(a.join(""))}_hexStringWarn(e){5!=this._hexStringNumWarn++?this._hexStringNumWarn>5||warn(`getHexString - ignoring invalid character: ${e}`):warn("getHexString - ignoring additional invalid characters.")}getHexString(){const e=this.strBuf;e.length=0;let t,a,r=this.currentChar,i=!0;this._hexStringNumWarn=0;for(;;){if(r<0){warn("Unterminated hex string");break}if(62===r){this.nextChar();break}if(1!==tr[r]){if(i){t=toHexDigit(r);if(-1===t){this._hexStringWarn(r);r=this.nextChar();continue}}else{a=toHexDigit(r);if(-1===a){this._hexStringWarn(r);r=this.nextChar();continue}e.push(String.fromCharCode(t<<4|a))}i=!i;r=this.nextChar()}else r=this.nextChar()}return e.join("")}getObj(){let e=!1,t=this.currentChar;for(;;){if(t<0)return fa;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(1!==tr[t])break;t=this.nextChar()}switch(0|t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 43:case 45:case 46:return this.getNumber();case 40:return this.getString();case 47:return this.getName();case 91:this.nextChar();return Cmd.get("[");case 93:this.nextChar();return Cmd.get("]");case 60:t=this.nextChar();if(60===t){this.nextChar();return Cmd.get("<<")}return this.getHexString();case 62:t=this.nextChar();if(62===t){this.nextChar();return Cmd.get(">>")}return Cmd.get(">");case 123:this.nextChar();return Cmd.get("{");case 125:this.nextChar();return Cmd.get("}");case 41:this.nextChar();throw new FormatError(`Illegal character: ${t}`)}let a=String.fromCharCode(t);if(t<32||t>127){const e=this.peekChar();if(e>=32&&e<=127){this.nextChar();return Cmd.get(a)}}const r=this.knownCommands;let i=void 0!==r?.[a];for(;(t=this.nextChar())>=0&&!tr[t];){const e=a+String.fromCharCode(t);if(i&&void 0===r[e])break;if(128===a.length)throw new FormatError(`Command token too long: ${a.length}`);a=e;i=void 0!==r?.[a]}if("true"===a)return!0;if("false"===a)return!1;if("null"===a)return null;"BI"===a&&(this.beginInlineImagePos=this.stream.pos);return Cmd.get(a)}skipToNextLine(){let e=this.currentChar;for(;e>=0;){if(13===e){e=this.nextChar();10===e&&this.nextChar();break}if(10===e){this.nextChar();break}e=this.nextChar()}}}class Linearization{static create(e){function getInt(e,t,a=!1){const r=e.get(t);if(Number.isInteger(r)&&(a?r>=0:r>0))return r;throw new Error(`The "${t}" parameter in the linearization dictionary is invalid.`)}const t=new Parser({lexer:new Lexer(e),xref:null}),a=t.getObj(),r=t.getObj(),i=t.getObj(),n=t.getObj();let s,o;if(!(Number.isInteger(a)&&Number.isInteger(r)&&isCmd(i,"obj")&&n instanceof Dict&&"number"==typeof(s=n.get("Linearized"))&&s>0))return null;if((o=getInt(n,"L"))!==e.length)throw new Error('The "L" parameter in the linearization dictionary does not equal the stream length.');return{length:o,hints:function getHints(e){const t=e.get("H");let a;if(Array.isArray(t)&&(2===(a=t.length)||4===a)){for(let e=0;e0))throw new Error(`Hint (${e}) in the linearization dictionary is invalid.`)}return t}throw new Error("Hint array in the linearization dictionary is invalid.")}(n),objectNumberFirst:getInt(n,"O"),endFirst:getInt(n,"E"),numPages:getInt(n,"N"),mainXRefEntriesOffset:getInt(n,"T"),pageFirst:n.has("P")?getInt(n,"P",!0):0}}}const ar=["Adobe-GB1-UCS2","Adobe-CNS1-UCS2","Adobe-Japan1-UCS2","Adobe-Korea1-UCS2","78-EUC-H","78-EUC-V","78-H","78-RKSJ-H","78-RKSJ-V","78-V","78ms-RKSJ-H","78ms-RKSJ-V","83pv-RKSJ-H","90ms-RKSJ-H","90ms-RKSJ-V","90msp-RKSJ-H","90msp-RKSJ-V","90pv-RKSJ-H","90pv-RKSJ-V","Add-H","Add-RKSJ-H","Add-RKSJ-V","Add-V","Adobe-CNS1-0","Adobe-CNS1-1","Adobe-CNS1-2","Adobe-CNS1-3","Adobe-CNS1-4","Adobe-CNS1-5","Adobe-CNS1-6","Adobe-GB1-0","Adobe-GB1-1","Adobe-GB1-2","Adobe-GB1-3","Adobe-GB1-4","Adobe-GB1-5","Adobe-Japan1-0","Adobe-Japan1-1","Adobe-Japan1-2","Adobe-Japan1-3","Adobe-Japan1-4","Adobe-Japan1-5","Adobe-Japan1-6","Adobe-Korea1-0","Adobe-Korea1-1","Adobe-Korea1-2","B5-H","B5-V","B5pc-H","B5pc-V","CNS-EUC-H","CNS-EUC-V","CNS1-H","CNS1-V","CNS2-H","CNS2-V","ETHK-B5-H","ETHK-B5-V","ETen-B5-H","ETen-B5-V","ETenms-B5-H","ETenms-B5-V","EUC-H","EUC-V","Ext-H","Ext-RKSJ-H","Ext-RKSJ-V","Ext-V","GB-EUC-H","GB-EUC-V","GB-H","GB-V","GBK-EUC-H","GBK-EUC-V","GBK2K-H","GBK2K-V","GBKp-EUC-H","GBKp-EUC-V","GBT-EUC-H","GBT-EUC-V","GBT-H","GBT-V","GBTpc-EUC-H","GBTpc-EUC-V","GBpc-EUC-H","GBpc-EUC-V","H","HKdla-B5-H","HKdla-B5-V","HKdlb-B5-H","HKdlb-B5-V","HKgccs-B5-H","HKgccs-B5-V","HKm314-B5-H","HKm314-B5-V","HKm471-B5-H","HKm471-B5-V","HKscs-B5-H","HKscs-B5-V","Hankaku","Hiragana","KSC-EUC-H","KSC-EUC-V","KSC-H","KSC-Johab-H","KSC-Johab-V","KSC-V","KSCms-UHC-H","KSCms-UHC-HW-H","KSCms-UHC-HW-V","KSCms-UHC-V","KSCpc-EUC-H","KSCpc-EUC-V","Katakana","NWP-H","NWP-V","RKSJ-H","RKSJ-V","Roman","UniCNS-UCS2-H","UniCNS-UCS2-V","UniCNS-UTF16-H","UniCNS-UTF16-V","UniCNS-UTF32-H","UniCNS-UTF32-V","UniCNS-UTF8-H","UniCNS-UTF8-V","UniGB-UCS2-H","UniGB-UCS2-V","UniGB-UTF16-H","UniGB-UTF16-V","UniGB-UTF32-H","UniGB-UTF32-V","UniGB-UTF8-H","UniGB-UTF8-V","UniJIS-UCS2-H","UniJIS-UCS2-HW-H","UniJIS-UCS2-HW-V","UniJIS-UCS2-V","UniJIS-UTF16-H","UniJIS-UTF16-V","UniJIS-UTF32-H","UniJIS-UTF32-V","UniJIS-UTF8-H","UniJIS-UTF8-V","UniJIS2004-UTF16-H","UniJIS2004-UTF16-V","UniJIS2004-UTF32-H","UniJIS2004-UTF32-V","UniJIS2004-UTF8-H","UniJIS2004-UTF8-V","UniJISPro-UCS2-HW-V","UniJISPro-UCS2-V","UniJISPro-UTF8-V","UniJISX0213-UTF32-H","UniJISX0213-UTF32-V","UniJISX02132004-UTF32-H","UniJISX02132004-UTF32-V","UniKS-UCS2-H","UniKS-UCS2-V","UniKS-UTF16-H","UniKS-UTF16-V","UniKS-UTF32-H","UniKS-UTF32-V","UniKS-UTF8-H","UniKS-UTF8-V","V","WP-Symbol"],rr=2**24-1;class CMap{constructor(e=!1){this.codespaceRanges=[[],[],[],[]];this.numCodespaceRanges=0;this._map=[];this.name="";this.vertical=!1;this.useCMap=null;this.builtInCMap=e}addCodespaceRange(e,t,a){this.codespaceRanges[e-1].push(t,a);this.numCodespaceRanges++}mapCidRange(e,t,a){if(t-e>rr)throw new Error("mapCidRange - ignoring data above MAX_MAP_RANGE.");for(;e<=t;)this._map[e++]=a++}mapBfRange(e,t,a){if(t-e>rr)throw new Error("mapBfRange - ignoring data above MAX_MAP_RANGE.");const r=a.length-1;for(;e<=t;){this._map[e++]=a;const t=a.charCodeAt(r)+1;t>255?a=a.substring(0,r-1)+String.fromCharCode(a.charCodeAt(r-1)+1)+"\0":a=a.substring(0,r)+String.fromCharCode(t)}}mapBfRangeToArray(e,t,a){if(t-e>rr)throw new Error("mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.");const r=a.length;let i=0;for(;e<=t&&i>>0;const s=i[n];for(let e=0,t=s.length;e=t&&r<=i){a.charcode=r;a.length=n+1;return}}}a.charcode=0;a.length=1}getCharCodeLength(e){const t=this.codespaceRanges;for(let a=0,r=t.length;a=i&&e<=n)return a+1}}return 1}get length(){return this._map.length}get isIdentityCMap(){if("Identity-H"!==this.name&&"Identity-V"!==this.name)return!1;if(65536!==this._map.length)return!1;for(let e=0;e<65536;e++)if(this._map[e]!==e)return!1;return!0}}class IdentityCMap extends CMap{constructor(e,t){super();this.vertical=e;this.addCodespaceRange(t,0,65535)}mapCidRange(e,t,a){unreachable("should not call mapCidRange")}mapBfRange(e,t,a){unreachable("should not call mapBfRange")}mapBfRangeToArray(e,t,a){unreachable("should not call mapBfRangeToArray")}mapOne(e,t){unreachable("should not call mapCidOne")}lookup(e){return Number.isInteger(e)&&e<=65535?e:void 0}contains(e){return Number.isInteger(e)&&e<=65535}forEach(e){for(let t=0;t<=65535;t++)e(t,t)}charCodeOf(e){return Number.isInteger(e)&&e<=65535?e:-1}getMap(){const e=new Array(65536);for(let t=0;t<=65535;t++)e[t]=t;return e}get length(){return 65536}get isIdentityCMap(){unreachable("should not access .isIdentityCMap")}}function strToInt(e){let t=0;for(let a=0;a>>0}function expectString(e){if("string"!=typeof e)throw new FormatError("Malformed CMap: expected string.")}function expectInt(e){if(!Number.isInteger(e))throw new FormatError("Malformed CMap: expected int.")}function parseBfChar(e,t){for(;;){let a=t.getObj();if(a===fa)break;if(isCmd(a,"endbfchar"))return;expectString(a);const r=strToInt(a);a=t.getObj();expectString(a);const i=a;e.mapOne(r,i)}}function parseBfRange(e,t){for(;;){let a=t.getObj();if(a===fa)break;if(isCmd(a,"endbfrange"))return;expectString(a);const r=strToInt(a);a=t.getObj();expectString(a);const i=strToInt(a);a=t.getObj();if(Number.isInteger(a)||"string"==typeof a){const t=Number.isInteger(a)?String.fromCharCode(a):a;e.mapBfRange(r,i,t)}else{if(!isCmd(a,"["))break;{a=t.getObj();const n=[];for(;!isCmd(a,"]")&&a!==fa;){n.push(a);a=t.getObj()}e.mapBfRangeToArray(r,i,n)}}}throw new FormatError("Invalid bf range.")}function parseCidChar(e,t){for(;;){let a=t.getObj();if(a===fa)break;if(isCmd(a,"endcidchar"))return;expectString(a);const r=strToInt(a);a=t.getObj();expectInt(a);const i=a;e.mapOne(r,i)}}function parseCidRange(e,t){for(;;){let a=t.getObj();if(a===fa)break;if(isCmd(a,"endcidrange"))return;expectString(a);const r=strToInt(a);a=t.getObj();expectString(a);const i=strToInt(a);a=t.getObj();expectInt(a);const n=a;e.mapCidRange(r,i,n)}}function parseCodespaceRange(e,t){for(;;){let a=t.getObj();if(a===fa)break;if(isCmd(a,"endcodespacerange"))return;if("string"!=typeof a)break;const r=strToInt(a);a=t.getObj();if("string"!=typeof a)break;const i=strToInt(a);e.addCodespaceRange(a.length,r,i)}throw new FormatError("Invalid codespace range.")}function parseWMode(e,t){const a=t.getObj();Number.isInteger(a)&&(e.vertical=!!a)}function parseCMapName(e,t){const a=t.getObj();a instanceof Name&&(e.name=a.name)}async function parseCMap(e,t,a,r){let i,n;e:for(;;)try{const a=t.getObj();if(a===fa)break;if(a instanceof Name){"WMode"===a.name?parseWMode(e,t):"CMapName"===a.name&&parseCMapName(e,t);i=a}else if(a instanceof Cmd)switch(a.cmd){case"endcmap":break e;case"usecmap":i instanceof Name&&(n=i.name);break;case"begincodespacerange":parseCodespaceRange(e,t);break;case"beginbfchar":parseBfChar(e,t);break;case"begincidchar":parseCidChar(e,t);break;case"beginbfrange":parseBfRange(e,t);break;case"begincidrange":parseCidRange(e,t)}}catch(e){if(e instanceof MissingDataException)throw e;warn("Invalid cMap data: "+e);continue}!r&&n&&(r=n);return r?extendCMap(e,a,r):e}async function extendCMap(e,t,a){e.useCMap=await createBuiltInCMap(a,t);if(0===e.numCodespaceRanges){const t=e.useCMap.codespaceRanges;for(let a=0;aextendCMap(i,t,e)));if(r===Ae.NONE){const e=new Lexer(new Stream(a));return parseCMap(i,e,t,null)}throw new Error(`Invalid CMap "compressionType" value: ${r}`)}class CMapFactory{static async create({encoding:e,fetchBuiltInCMap:t,useCMap:a}){if(e instanceof Name)return createBuiltInCMap(e.name,t);if(e instanceof BaseStream){const r=await parseCMap(new CMap,new Lexer(e),t,a);return r.isIdentityCMap?createBuiltInCMap(r.name,t):r}throw new Error("Encoding required.")}}const ir=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron"],nr=[".notdef","space","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],sr=[".notdef","space","dollaroldstyle","dollarsuperior","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","hyphensuperior","colonmonetary","onefitted","rupiah","centoldstyle","figuredash","hypheninferior","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior"],or=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","","asuperior","bsuperior","centsuperior","dsuperior","esuperior","","","","isuperior","","","lsuperior","msuperior","nsuperior","osuperior","","","rsuperior","ssuperior","tsuperior","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdownsmall","centoldstyle","Lslashsmall","","","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","","Dotaccentsmall","","","Macronsmall","","","figuredash","hypheninferior","","","Ogoneksmall","Ringsmall","Cedillasmall","","","","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],cr=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","centoldstyle","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","","threequartersemdash","","questionsmall","","","","","Ethsmall","","","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","","","","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hypheninferior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","asuperior","centsuperior","","","","","Aacutesmall","Agravesmall","Acircumflexsmall","Adieresissmall","Atildesmall","Aringsmall","Ccedillasmall","Eacutesmall","Egravesmall","Ecircumflexsmall","Edieresissmall","Iacutesmall","Igravesmall","Icircumflexsmall","Idieresissmall","Ntildesmall","Oacutesmall","Ogravesmall","Ocircumflexsmall","Odieresissmall","Otildesmall","Uacutesmall","Ugravesmall","Ucircumflexsmall","Udieresissmall","","eightsuperior","fourinferior","threeinferior","sixinferior","eightinferior","seveninferior","Scaronsmall","","centinferior","twoinferior","","Dieresissmall","","Caronsmall","osuperior","fiveinferior","","commainferior","periodinferior","Yacutesmall","","dollarinferior","","","Thornsmall","","nineinferior","zeroinferior","Zcaronsmall","AEsmall","Oslashsmall","questiondownsmall","oneinferior","Lslashsmall","","","","","","","Cedillasmall","","","","","","OEsmall","figuredash","hyphensuperior","","","","","exclamdownsmall","","Ydieresissmall","","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","ninesuperior","zerosuperior","","esuperior","rsuperior","tsuperior","","","isuperior","ssuperior","dsuperior","","","","","","lsuperior","Ogoneksmall","Brevesmall","Macronsmall","bsuperior","nsuperior","msuperior","commasuperior","periodsuperior","Dotaccentsmall","Ringsmall","","","",""],lr=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","space","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron"],hr=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","","endash","dagger","daggerdbl","periodcentered","","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","","questiondown","","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","","ring","cedilla","","hungarumlaut","ogonek","caron","emdash","","","","","","","","","","","","","","","","","AE","","ordfeminine","","","","","Lslash","Oslash","OE","ordmasculine","","","","","","ae","","","","dotlessi","","","lslash","oslash","oe","germandbls","","","",""],ur=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","bullet","Euro","bullet","quotesinglbase","florin","quotedblbase","ellipsis","dagger","daggerdbl","circumflex","perthousand","Scaron","guilsinglleft","OE","bullet","Zcaron","bullet","bullet","quoteleft","quoteright","quotedblleft","quotedblright","bullet","endash","emdash","tilde","trademark","scaron","guilsinglright","oe","bullet","zcaron","Ydieresis","space","exclamdown","cent","sterling","currency","yen","brokenbar","section","dieresis","copyright","ordfeminine","guillemotleft","logicalnot","hyphen","registered","macron","degree","plusminus","twosuperior","threesuperior","acute","mu","paragraph","periodcentered","cedilla","onesuperior","ordmasculine","guillemotright","onequarter","onehalf","threequarters","questiondown","Agrave","Aacute","Acircumflex","Atilde","Adieresis","Aring","AE","Ccedilla","Egrave","Eacute","Ecircumflex","Edieresis","Igrave","Iacute","Icircumflex","Idieresis","Eth","Ntilde","Ograve","Oacute","Ocircumflex","Otilde","Odieresis","multiply","Oslash","Ugrave","Uacute","Ucircumflex","Udieresis","Yacute","Thorn","germandbls","agrave","aacute","acircumflex","atilde","adieresis","aring","ae","ccedilla","egrave","eacute","ecircumflex","edieresis","igrave","iacute","icircumflex","idieresis","eth","ntilde","ograve","oacute","ocircumflex","otilde","odieresis","divide","oslash","ugrave","uacute","ucircumflex","udieresis","yacute","thorn","ydieresis"],dr=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","universal","numbersign","existential","percent","ampersand","suchthat","parenleft","parenright","asteriskmath","plus","comma","minus","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","congruent","Alpha","Beta","Chi","Delta","Epsilon","Phi","Gamma","Eta","Iota","theta1","Kappa","Lambda","Mu","Nu","Omicron","Pi","Theta","Rho","Sigma","Tau","Upsilon","sigma1","Omega","Xi","Psi","Zeta","bracketleft","therefore","bracketright","perpendicular","underscore","radicalex","alpha","beta","chi","delta","epsilon","phi","gamma","eta","iota","phi1","kappa","lambda","mu","nu","omicron","pi","theta","rho","sigma","tau","upsilon","omega1","omega","xi","psi","zeta","braceleft","bar","braceright","similar","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Euro","Upsilon1","minute","lessequal","fraction","infinity","florin","club","diamond","heart","spade","arrowboth","arrowleft","arrowup","arrowright","arrowdown","degree","plusminus","second","greaterequal","multiply","proportional","partialdiff","bullet","divide","notequal","equivalence","approxequal","ellipsis","arrowvertex","arrowhorizex","carriagereturn","aleph","Ifraktur","Rfraktur","weierstrass","circlemultiply","circleplus","emptyset","intersection","union","propersuperset","reflexsuperset","notsubset","propersubset","reflexsubset","element","notelement","angle","gradient","registerserif","copyrightserif","trademarkserif","product","radical","dotmath","logicalnot","logicaland","logicalor","arrowdblboth","arrowdblleft","arrowdblup","arrowdblright","arrowdbldown","lozenge","angleleft","registersans","copyrightsans","trademarksans","summation","parenlefttp","parenleftex","parenleftbt","bracketlefttp","bracketleftex","bracketleftbt","bracelefttp","braceleftmid","braceleftbt","braceex","","angleright","integral","integraltp","integralex","integralbt","parenrighttp","parenrightex","parenrightbt","bracketrighttp","bracketrightex","bracketrightbt","bracerighttp","bracerightmid","bracerightbt",""],fr=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","a1","a2","a202","a3","a4","a5","a119","a118","a117","a11","a12","a13","a14","a15","a16","a105","a17","a18","a19","a20","a21","a22","a23","a24","a25","a26","a27","a28","a6","a7","a8","a9","a10","a29","a30","a31","a32","a33","a34","a35","a36","a37","a38","a39","a40","a41","a42","a43","a44","a45","a46","a47","a48","a49","a50","a51","a52","a53","a54","a55","a56","a57","a58","a59","a60","a61","a62","a63","a64","a65","a66","a67","a68","a69","a70","a71","a72","a73","a74","a203","a75","a204","a76","a77","a78","a79","a81","a82","a83","a84","a97","a98","a99","a100","","a89","a90","a93","a94","a91","a92","a205","a85","a206","a86","a87","a88","a95","a96","","","","","","","","","","","","","","","","","","","","a101","a102","a103","a104","a106","a107","a108","a112","a111","a110","a109","a120","a121","a122","a123","a124","a125","a126","a127","a128","a129","a130","a131","a132","a133","a134","a135","a136","a137","a138","a139","a140","a141","a142","a143","a144","a145","a146","a147","a148","a149","a150","a151","a152","a153","a154","a155","a156","a157","a158","a159","a160","a161","a163","a164","a196","a165","a192","a166","a167","a168","a169","a170","a171","a172","a173","a162","a174","a175","a176","a177","a178","a179","a193","a180","a199","a181","a200","a182","","a201","a183","a184","a197","a185","a194","a198","a186","a195","a187","a188","a189","a190","a191",""];function getEncoding(e){switch(e){case"WinAnsiEncoding":return ur;case"StandardEncoding":return hr;case"MacRomanEncoding":return lr;case"SymbolSetEncoding":return dr;case"ZapfDingbatsEncoding":return fr;case"ExpertEncoding":return or;case"MacExpertEncoding":return cr;default:return null}}const gr=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall","001.000","001.001","001.002","001.003","Black","Bold","Book","Light","Medium","Regular","Roman","Semibold"],pr=391,mr=[null,{id:"hstem",min:2,stackClearing:!0,stem:!0},null,{id:"vstem",min:2,stackClearing:!0,stem:!0},{id:"vmoveto",min:1,stackClearing:!0},{id:"rlineto",min:2,resetStack:!0},{id:"hlineto",min:1,resetStack:!0},{id:"vlineto",min:1,resetStack:!0},{id:"rrcurveto",min:6,resetStack:!0},null,{id:"callsubr",min:1,undefStack:!0},{id:"return",min:0,undefStack:!0},null,null,{id:"endchar",min:0,stackClearing:!0},null,null,null,{id:"hstemhm",min:2,stackClearing:!0,stem:!0},{id:"hintmask",min:0,stackClearing:!0},{id:"cntrmask",min:0,stackClearing:!0},{id:"rmoveto",min:2,stackClearing:!0},{id:"hmoveto",min:1,stackClearing:!0},{id:"vstemhm",min:2,stackClearing:!0,stem:!0},{id:"rcurveline",min:8,resetStack:!0},{id:"rlinecurve",min:8,resetStack:!0},{id:"vvcurveto",min:4,resetStack:!0},{id:"hhcurveto",min:4,resetStack:!0},null,{id:"callgsubr",min:1,undefStack:!0},{id:"vhcurveto",min:4,resetStack:!0},{id:"hvcurveto",min:4,resetStack:!0}],br=[null,null,null,{id:"and",min:2,stackDelta:-1},{id:"or",min:2,stackDelta:-1},{id:"not",min:1,stackDelta:0},null,null,null,{id:"abs",min:1,stackDelta:0},{id:"add",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]+e[t-1]}},{id:"sub",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]-e[t-1]}},{id:"div",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]/e[t-1]}},null,{id:"neg",min:1,stackDelta:0,stackFn(e,t){e[t-1]=-e[t-1]}},{id:"eq",min:2,stackDelta:-1},null,null,{id:"drop",min:1,stackDelta:-1},null,{id:"put",min:2,stackDelta:-2},{id:"get",min:1,stackDelta:0},{id:"ifelse",min:4,stackDelta:-3},{id:"random",min:0,stackDelta:1},{id:"mul",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]*e[t-1]}},null,{id:"sqrt",min:1,stackDelta:0},{id:"dup",min:1,stackDelta:1},{id:"exch",min:2,stackDelta:0},{id:"index",min:2,stackDelta:0},{id:"roll",min:3,stackDelta:-2},null,null,null,{id:"hflex",min:7,resetStack:!0},{id:"flex",min:13,resetStack:!0},{id:"hflex1",min:9,resetStack:!0},{id:"flex1",min:11,resetStack:!0}];class CFFParser{constructor(e,t,a){this.bytes=e.getBytes();this.properties=t;this.seacAnalysisEnabled=!!a}parse(){const e=this.properties,t=new CFF;this.cff=t;const a=this.parseHeader(),r=this.parseIndex(a.endPos),i=this.parseIndex(r.endPos),n=this.parseIndex(i.endPos),s=this.parseIndex(n.endPos),o=this.parseDict(i.obj.get(0)),c=this.createDict(CFFTopDict,o,t.strings);t.header=a.obj;t.names=this.parseNameIndex(r.obj);t.strings=this.parseStringIndex(n.obj);t.topDict=c;t.globalSubrIndex=s.obj;this.parsePrivateDict(t.topDict);t.isCIDFont=c.hasName("ROS");const l=c.getByName("CharStrings"),h=this.parseIndex(l).obj,u=c.getByName("FontMatrix");u&&(e.fontMatrix=u);const d=c.getByName("FontBBox");if(d){e.ascent=Math.max(d[3],d[1]);e.descent=Math.min(d[1],d[3]);e.ascentScaled=!0}let f,g;if(t.isCIDFont){const e=this.parseIndex(c.getByName("FDArray")).obj;for(let a=0,r=e.count;a=t)throw new FormatError("Invalid CFF header");if(0!==a){info("cff data is shifted");e=e.subarray(a);this.bytes=e}const r=e[0],i=e[1],n=e[2],s=e[3];return{obj:new CFFHeader(r,i,n,s),endPos:n}}parseDict(e){let t=0;function parseOperand(){let a=e[t++];if(30===a)return function parseFloatOperand(){let a="";const r=15,i=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"],n=e.length;for(;t>4,o=15&n;if(s===r)break;a+=i[s];if(o===r)break;a+=i[o]}return parseFloat(a)}();if(28===a){a=e[t++];a=(a<<24|e[t++]<<16)>>16;return a}if(29===a){a=e[t++];a=a<<8|e[t++];a=a<<8|e[t++];a=a<<8|e[t++];return a}if(a>=32&&a<=246)return a-139;if(a>=247&&a<=250)return 256*(a-247)+e[t++]+108;if(a>=251&&a<=254)return-256*(a-251)-e[t++]-108;warn('CFFParser_parseDict: "'+a+'" is a reserved command.');return NaN}let a=[];const r=[];t=0;const i=e.length;for(;t10)return!1;let i=e.stackSize;const n=e.stack;let s=t.length;for(let o=0;o>16;o+=2;i++}else if(14===c){if(i>=4){i-=4;if(this.seacAnalysisEnabled){e.seac=n.slice(i,i+4);return!1}}l=mr[c]}else if(c>=32&&c<=246){n[i]=c-139;i++}else if(c>=247&&c<=254){n[i]=c<251?(c-247<<8)+t[o]+108:-(c-251<<8)-t[o]-108;o++;i++}else if(255===c){n[i]=(t[o]<<24|t[o+1]<<16|t[o+2]<<8|t[o+3])/65536;o+=4;i++}else if(19===c||20===c){e.hints+=i>>1;if(0===e.hints){t.copyWithin(o-1,o,-1);o-=1;s-=1;continue}o+=e.hints+7>>3;i%=2;l=mr[c]}else{if(10===c||29===c){const t=10===c?a:r;if(!t){l=mr[c];warn("Missing subrsIndex for "+l.id);return!1}let s=32768;t.count<1240?s=107:t.count<33900&&(s=1131);const o=n[--i]+s;if(o<0||o>=t.count||isNaN(o)){l=mr[c];warn("Out of bounds subrIndex for "+l.id);return!1}e.stackSize=i;e.callDepth++;if(!this.parseCharString(e,t.get(o),a,r))return!1;e.callDepth--;i=e.stackSize;continue}if(11===c){e.stackSize=i;return!0}if(0===c&&o===t.length){t[o-1]=14;l=mr[14]}else{if(9===c){t.copyWithin(o-1,o,-1);o-=1;s-=1;continue}l=mr[c]}}if(l){if(l.stem){e.hints+=i>>1;if(3===c||23===c)e.hasVStems=!0;else if(e.hasVStems&&(1===c||18===c)){warn("CFF stem hints are in wrong order");t[o-1]=1===c?3:23}}if("min"in l&&!e.undefStack&&i=2&&l.stem?i%=2:i>1&&warn("Found too many parameters for stack-clearing command");i>0&&(e.width=n[i-1])}if("stackDelta"in l){"stackFn"in l&&l.stackFn(n,i);i+=l.stackDelta}else if(l.stackClearing)i=0;else if(l.resetStack){i=0;e.undefStack=!1}else if(l.undefStack){i=0;e.undefStack=!0;e.firstStackClearing=!1}}}s=i.length){warn("Invalid fd index for glyph index.");u=!1}if(u){f=i[e].privateDict;d=f.subrsIndex}}else t&&(d=t);u&&(u=this.parseCharString(h,c,d,a));if(null!==h.width){const e=f.getByName("nominalWidthX");o[l]=e+h.width}else{const e=f.getByName("defaultWidthX");o[l]=e}null!==h.seac&&(s[l]=h.seac);u||e.set(l,new Uint8Array([14]))}return{charStrings:e,seacs:s,widths:o}}emptyPrivateDictionary(e){const t=this.createDict(CFFPrivateDict,[],e.strings);e.setByKey(18,[0,0]);e.privateDict=t}parsePrivateDict(e){if(!e.hasName("Private")){this.emptyPrivateDictionary(e);return}const t=e.getByName("Private");if(!Array.isArray(t)||2!==t.length){e.removeByName("Private");return}const a=t[0],r=t[1];if(0===a||r>=this.bytes.length){this.emptyPrivateDictionary(e);return}const i=r+a,n=this.bytes.subarray(r,i),s=this.parseDict(n),o=this.createDict(CFFPrivateDict,s,e.strings);e.privateDict=o;0===o.getByName("ExpansionFactor")&&o.setByName("ExpansionFactor",.06);if(!o.getByName("Subrs"))return;const c=o.getByName("Subrs"),l=r+c;if(0===c||l>=this.bytes.length){this.emptyPrivateDictionary(e);return}const h=this.parseIndex(l);o.subrsIndex=h.obj}parseCharsets(e,t,a,r){if(0===e)return new CFFCharset(!0,xr.ISO_ADOBE,ir);if(1===e)return new CFFCharset(!0,xr.EXPERT,nr);if(2===e)return new CFFCharset(!0,xr.EXPERT_SUBSET,sr);const i=this.bytes,n=e,s=i[e++],o=[r?0:".notdef"];let c,l,h;t-=1;switch(s){case 0:for(h=0;h=65535){warn("Not enough space in charstrings to duplicate first glyph.");return}const e=this.charStrings.get(0);this.charStrings.add(e);this.isCIDFont&&this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0])}hasGlyphId(e){if(e<0||e>=this.charStrings.count)return!1;return this.charStrings.get(e).length>0}}class CFFHeader{constructor(e,t,a,r){this.major=e;this.minor=t;this.hdrSize=a;this.offSize=r}}class CFFStrings{constructor(){this.strings=[]}get(e){return e>=0&&e<=390?gr[e]:e-pr<=this.strings.length?this.strings[e-pr]:gr[0]}getSID(e){let t=gr.indexOf(e);if(-1!==t)return t;t=this.strings.indexOf(e);return-1!==t?t+pr:-1}add(e){this.strings.push(e)}get count(){return this.strings.length}}class CFFIndex{constructor(){this.objects=[];this.length=0}add(e){this.length+=e.length;this.objects.push(e)}set(e,t){this.length+=t.length-this.objects[e].length;this.objects[e]=t}get(e){return this.objects[e]}get count(){return this.objects.length}}class CFFDict{constructor(e,t){this.keyToNameMap=e.keyToNameMap;this.nameToKeyMap=e.nameToKeyMap;this.defaults=e.defaults;this.types=e.types;this.opcodes=e.opcodes;this.order=e.order;this.strings=t;this.values=Object.create(null)}setByKey(e,t){if(!(e in this.keyToNameMap))return!1;if(0===t.length)return!0;for(const a of t)if(isNaN(a)){warn(`Invalid CFFDict value: "${t}" for key "${e}".`);return!0}const a=this.types[e];"num"!==a&&"sid"!==a&&"offset"!==a||(t=t[0]);this.values[e]=t;return!0}setByName(e,t){if(!(e in this.nameToKeyMap))throw new FormatError(`Invalid dictionary name "${e}"`);this.values[this.nameToKeyMap[e]]=t}hasName(e){return this.nameToKeyMap[e]in this.values}getByName(e){if(!(e in this.nameToKeyMap))throw new FormatError(`Invalid dictionary name ${e}"`);const t=this.nameToKeyMap[e];return t in this.values?this.values[t]:this.defaults[t]}removeByName(e){delete this.values[this.nameToKeyMap[e]]}static createTables(e){const t={keyToNameMap:{},nameToKeyMap:{},defaults:{},types:{},opcodes:{},order:[]};for(const a of e){const e=Array.isArray(a[0])?(a[0][0]<<8)+a[0][1]:a[0];t.keyToNameMap[e]=a[1];t.nameToKeyMap[a[1]]=e;t.types[e]=a[2];t.defaults[e]=a[3];t.opcodes[e]=Array.isArray(a[0])?a[0]:[a[0]];t.order.push(e)}return t}}const yr=[[[12,30],"ROS",["sid","sid","num"],null],[[12,20],"SyntheticBase","num",null],[0,"version","sid",null],[1,"Notice","sid",null],[[12,0],"Copyright","sid",null],[2,"FullName","sid",null],[3,"FamilyName","sid",null],[4,"Weight","sid",null],[[12,1],"isFixedPitch","num",0],[[12,2],"ItalicAngle","num",0],[[12,3],"UnderlinePosition","num",-100],[[12,4],"UnderlineThickness","num",50],[[12,5],"PaintType","num",0],[[12,6],"CharstringType","num",2],[[12,7],"FontMatrix",["num","num","num","num","num","num"],[.001,0,0,.001,0,0]],[13,"UniqueID","num",null],[5,"FontBBox",["num","num","num","num"],[0,0,0,0]],[[12,8],"StrokeWidth","num",0],[14,"XUID","array",null],[15,"charset","offset",0],[16,"Encoding","offset",0],[17,"CharStrings","offset",0],[18,"Private",["offset","offset"],null],[[12,21],"PostScript","sid",null],[[12,22],"BaseFontName","sid",null],[[12,23],"BaseFontBlend","delta",null],[[12,31],"CIDFontVersion","num",0],[[12,32],"CIDFontRevision","num",0],[[12,33],"CIDFontType","num",0],[[12,34],"CIDCount","num",8720],[[12,35],"UIDBase","num",null],[[12,37],"FDSelect","offset",null],[[12,36],"FDArray","offset",null],[[12,38],"FontName","sid",null]];class CFFTopDict extends CFFDict{static get tables(){return shadow(this,"tables",this.createTables(yr))}constructor(e){super(CFFTopDict.tables,e);this.privateDict=null}}const wr=[[6,"BlueValues","delta",null],[7,"OtherBlues","delta",null],[8,"FamilyBlues","delta",null],[9,"FamilyOtherBlues","delta",null],[[12,9],"BlueScale","num",.039625],[[12,10],"BlueShift","num",7],[[12,11],"BlueFuzz","num",1],[10,"StdHW","num",null],[11,"StdVW","num",null],[[12,12],"StemSnapH","delta",null],[[12,13],"StemSnapV","delta",null],[[12,14],"ForceBold","num",0],[[12,17],"LanguageGroup","num",0],[[12,18],"ExpansionFactor","num",.06],[[12,19],"initialRandomSeed","num",0],[20,"defaultWidthX","num",0],[21,"nominalWidthX","num",0],[19,"Subrs","offset",null]];class CFFPrivateDict extends CFFDict{static get tables(){return shadow(this,"tables",this.createTables(wr))}constructor(e){super(CFFPrivateDict.tables,e);this.subrsIndex=null}}const xr={ISO_ADOBE:0,EXPERT:1,EXPERT_SUBSET:2};class CFFCharset{constructor(e,t,a,r){this.predefined=e;this.format=t;this.charset=a;this.raw=r}}class CFFEncoding{constructor(e,t,a,r){this.predefined=e;this.format=t;this.encoding=a;this.raw=r}}class CFFFDSelect{constructor(e,t){this.format=e;this.fdSelect=t}getFDIndex(e){return e<0||e>=this.fdSelect.length?-1:this.fdSelect[e]}}class CFFOffsetTracker{constructor(){this.offsets=Object.create(null)}isTracking(e){return e in this.offsets}track(e,t){if(e in this.offsets)throw new FormatError(`Already tracking location of ${e}`);this.offsets[e]=t}offset(e){for(const t in this.offsets)this.offsets[t]+=e}setEntryLocation(e,t,a){if(!(e in this.offsets))throw new FormatError(`Not tracking location of ${e}`);const r=a.data,i=this.offsets[e];for(let e=0,a=t.length;e>24&255;r[s]=l>>16&255;r[o]=l>>8&255;r[c]=255&l}}}class CFFCompiler{constructor(e){this.cff=e}compile(){const e=this.cff,t={data:[],length:0,add(e){try{this.data.push(...e)}catch{this.data=this.data.concat(e)}this.length=this.data.length}},a=this.compileHeader(e.header);t.add(a);const r=this.compileNameIndex(e.names);t.add(r);if(e.isCIDFont&&e.topDict.hasName("FontMatrix")){const t=e.topDict.getByName("FontMatrix");e.topDict.removeByName("FontMatrix");for(const a of e.fdArray){let e=t.slice(0);a.hasName("FontMatrix")&&(e=Util.transform(e,a.getByName("FontMatrix")));a.setByName("FontMatrix",e)}}const i=e.topDict.getByName("XUID");i?.length>16&&e.topDict.removeByName("XUID");e.topDict.setByName("charset",0);let n=this.compileTopDicts([e.topDict],t.length,e.isCIDFont);t.add(n.output);const s=n.trackers[0],o=this.compileStringIndex(e.strings.strings);t.add(o);const c=this.compileIndex(e.globalSubrIndex);t.add(c);if(e.encoding&&e.topDict.hasName("Encoding"))if(e.encoding.predefined)s.setEntryLocation("Encoding",[e.encoding.format],t);else{const a=this.compileEncoding(e.encoding);s.setEntryLocation("Encoding",[t.length],t);t.add(a)}const l=this.compileCharset(e.charset,e.charStrings.count,e.strings,e.isCIDFont);s.setEntryLocation("charset",[t.length],t);t.add(l);const h=this.compileCharStrings(e.charStrings);s.setEntryLocation("CharStrings",[t.length],t);t.add(h);if(e.isCIDFont){s.setEntryLocation("FDSelect",[t.length],t);const a=this.compileFDSelect(e.fdSelect);t.add(a);n=this.compileTopDicts(e.fdArray,t.length,!0);s.setEntryLocation("FDArray",[t.length],t);t.add(n.output);const r=n.trackers;this.compilePrivateDicts(e.fdArray,r,t)}this.compilePrivateDicts([e.topDict],[s],t);t.add([0]);return t.data}encodeNumber(e){return Number.isInteger(e)?this.encodeInteger(e):this.encodeFloat(e)}static get EncodeFloatRegExp(){return shadow(this,"EncodeFloatRegExp",/\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/)}encodeFloat(e){let t=e.toString();const a=CFFCompiler.EncodeFloatRegExp.exec(t);if(a){const r=parseFloat("1e"+((a[2]?+a[2]:0)+a[1].length));t=(Math.round(e*r)/r).toString()}let r,i,n="";for(r=0,i=t.length;r=-107&&e<=107?[e+139]:e>=108&&e<=1131?[247+((e-=108)>>8),255&e]:e>=-1131&&e<=-108?[251+((e=-e-108)>>8),255&e]:e>=-32768&&e<=32767?[28,e>>8&255,255&e]:[29,e>>24&255,e>>16&255,e>>8&255,255&e];return t}compileHeader(e){return[e.major,e.minor,4,e.offSize]}compileNameIndex(e){const t=new CFFIndex;for(const a of e){const e=Math.min(a.length,127);let r=new Array(e);for(let t=0;t"~"||"["===e||"]"===e||"("===e||")"===e||"{"===e||"}"===e||"<"===e||">"===e||"/"===e||"%"===e)&&(e="_");r[t]=e}r=r.join("");""===r&&(r="Bad_Font_Name");t.add(stringToBytes(r))}return this.compileIndex(t)}compileTopDicts(e,t,a){const r=[];let i=new CFFIndex;for(const n of e){if(a){n.removeByName("CIDFontVersion");n.removeByName("CIDFontRevision");n.removeByName("CIDFontType");n.removeByName("CIDCount");n.removeByName("UIDBase")}const e=new CFFOffsetTracker,s=this.compileDict(n,e);r.push(e);i.add(s);e.offset(t)}i=this.compileIndex(i,r);return{trackers:r,output:i}}compilePrivateDicts(e,t,a){for(let r=0,i=e.length;r>8&255,255&n]);else{i=new Uint8Array(1+2*n);i[0]=0;let t=0;const r=e.charset.length;let s=!1;for(let n=1;n>8&255;i[n+1]=255&o}}return this.compileTypedArray(i)}compileEncoding(e){return this.compileTypedArray(e.raw)}compileFDSelect(e){const t=e.format;let a,r;switch(t){case 0:a=new Uint8Array(1+e.fdSelect.length);a[0]=t;for(r=0;r>8&255,255&i,n];for(r=1;r>8&255,255&r,t);n=t}}const o=(s.length-3)/3;s[1]=o>>8&255;s[2]=255&o;s.push(r>>8&255,255&r);a=new Uint8Array(s)}return this.compileTypedArray(a)}compileTypedArray(e){return Array.from(e)}compileIndex(e,t=[]){const a=e.objects,r=a.length;if(0===r)return[0,0];const i=[r>>8&255,255&r];let n,s,o=1;for(n=0;n>8&255,255&c):3===s?i.push(c>>16&255,c>>8&255,255&c):i.push(c>>>24&255,c>>16&255,c>>8&255,255&c);a[n]&&(c+=a[n].length)}for(n=0;n=5&&t<=7))return-1;r=e.substring(1)}if(r===r.toUpperCase()){a=parseInt(r,16);if(a>=0)return a}}return-1}const Cr=[[0,127],[128,255],[256,383],[384,591],[592,687,7424,7551,7552,7615],[688,767,42752,42783],[768,879,7616,7679],[880,1023],[11392,11519],[1024,1279,1280,1327,11744,11775,42560,42655],[1328,1423],[1424,1535],[42240,42559],[1536,1791,1872,1919],[1984,2047],[2304,2431],[2432,2559],[2560,2687],[2688,2815],[2816,2943],[2944,3071],[3072,3199],[3200,3327],[3328,3455],[3584,3711],[3712,3839],[4256,4351,11520,11567],[6912,7039],[4352,4607],[7680,7935,11360,11391,42784,43007],[7936,8191],[8192,8303,11776,11903],[8304,8351],[8352,8399],[8400,8447],[8448,8527],[8528,8591],[8592,8703,10224,10239,10496,10623,11008,11263],[8704,8959,10752,11007,10176,10223,10624,10751],[8960,9215],[9216,9279],[9280,9311],[9312,9471],[9472,9599],[9600,9631],[9632,9727],[9728,9983],[9984,10175],[12288,12351],[12352,12447],[12448,12543,12784,12799],[12544,12591,12704,12735],[12592,12687],[43072,43135],[12800,13055],[13056,13311],[44032,55215],[55296,57343],[67840,67871],[19968,40959,11904,12031,12032,12255,12272,12287,13312,19903,131072,173791,12688,12703],[57344,63743],[12736,12783,63744,64255,194560,195103],[64256,64335],[64336,65023],[65056,65071],[65040,65055],[65104,65135],[65136,65279],[65280,65519],[65520,65535],[3840,4095],[1792,1871],[1920,1983],[3456,3583],[4096,4255],[4608,4991,4992,5023,11648,11743],[5024,5119],[5120,5759],[5760,5791],[5792,5887],[6016,6143],[6144,6319],[10240,10495],[40960,42127],[5888,5919,5920,5951,5952,5983,5984,6015],[66304,66351],[66352,66383],[66560,66639],[118784,119039,119040,119295,119296,119375],[119808,120831],[1044480,1048573],[65024,65039,917760,917999],[917504,917631],[6400,6479],[6480,6527],[6528,6623],[6656,6687],[11264,11359],[11568,11647],[19904,19967],[43008,43055],[65536,65663,65664,65791,65792,65855],[65856,65935],[66432,66463],[66464,66527],[66640,66687],[66688,66735],[67584,67647],[68096,68191],[119552,119647],[73728,74751,74752,74879],[119648,119679],[7040,7103],[7168,7247],[7248,7295],[43136,43231],[43264,43311],[43312,43359],[43520,43615],[65936,65999],[66e3,66047],[66208,66271,66176,66207,67872,67903],[127024,127135,126976,127023]];function getUnicodeRangeFor(e,t=-1){if(-1!==t){const a=Cr[t];for(let r=0,i=a.length;r=a[r]&&e<=a[r+1])return t}for(let t=0,a=Cr.length;t=a[r]&&e<=a[r+1])return t}return-1}const vr=new RegExp("^(\\s)|(\\p{Mn})|(\\p{Cf})$","u"),Fr=new Map;const Ir=!0,Or=1,Tr=2,Mr=4,Dr=32,Rr=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"];function recoverGlyphName(e,t){if(void 0!==t[e])return e;const a=getUnicodeForGlyph(e,t);if(-1!==a)for(const e in t)if(t[e]===a)return e;info("Unable to recover a standard glyph name for: "+e);return e}function type1FontGlyphMapping(e,t,a){const r=Object.create(null);let i,n,s;const o=!!(e.flags&Mr);if(e.isInternalFont){s=t;for(n=0;n=0?i:0}}else if(e.baseEncodingName){s=getEncoding(e.baseEncodingName);for(n=0;n=0?i:0}}else if(o)for(n in t)r[n]=t[n];else{s=hr;for(n=0;n=0?i:0}}const c=e.differences;let l;if(c)for(n in c){const e=c[n];i=a.indexOf(e);if(-1===i){l||(l=kr());const t=recoverGlyphName(e,l);t!==e&&(i=a.indexOf(t))}r[n]=i>=0?i:0}return r}function normalizeFontName(e){return e.replaceAll(/[,_]/g,"-").replaceAll(/\s/g,"")}const Nr=getLookupTableFactory((function(e){e["Times-Roman"]="Times-Roman";e.Helvetica="Helvetica";e.Courier="Courier";e.Symbol="Symbol";e["Times-Bold"]="Times-Bold";e["Helvetica-Bold"]="Helvetica-Bold";e["Courier-Bold"]="Courier-Bold";e.ZapfDingbats="ZapfDingbats";e["Times-Italic"]="Times-Italic";e["Helvetica-Oblique"]="Helvetica-Oblique";e["Courier-Oblique"]="Courier-Oblique";e["Times-BoldItalic"]="Times-BoldItalic";e["Helvetica-BoldOblique"]="Helvetica-BoldOblique";e["Courier-BoldOblique"]="Courier-BoldOblique";e.ArialNarrow="Helvetica";e["ArialNarrow-Bold"]="Helvetica-Bold";e["ArialNarrow-BoldItalic"]="Helvetica-BoldOblique";e["ArialNarrow-Italic"]="Helvetica-Oblique";e.ArialBlack="Helvetica";e["ArialBlack-Bold"]="Helvetica-Bold";e["ArialBlack-BoldItalic"]="Helvetica-BoldOblique";e["ArialBlack-Italic"]="Helvetica-Oblique";e["Arial-Black"]="Helvetica";e["Arial-Black-Bold"]="Helvetica-Bold";e["Arial-Black-BoldItalic"]="Helvetica-BoldOblique";e["Arial-Black-Italic"]="Helvetica-Oblique";e.Arial="Helvetica";e["Arial-Bold"]="Helvetica-Bold";e["Arial-BoldItalic"]="Helvetica-BoldOblique";e["Arial-Italic"]="Helvetica-Oblique";e.ArialMT="Helvetica";e["Arial-BoldItalicMT"]="Helvetica-BoldOblique";e["Arial-BoldMT"]="Helvetica-Bold";e["Arial-ItalicMT"]="Helvetica-Oblique";e["Arial-BoldItalicMT-BoldItalic"]="Helvetica-BoldOblique";e["Arial-BoldMT-Bold"]="Helvetica-Bold";e["Arial-ItalicMT-Italic"]="Helvetica-Oblique";e.ArialUnicodeMS="Helvetica";e["ArialUnicodeMS-Bold"]="Helvetica-Bold";e["ArialUnicodeMS-BoldItalic"]="Helvetica-BoldOblique";e["ArialUnicodeMS-Italic"]="Helvetica-Oblique";e["Courier-BoldItalic"]="Courier-BoldOblique";e["Courier-Italic"]="Courier-Oblique";e.CourierNew="Courier";e["CourierNew-Bold"]="Courier-Bold";e["CourierNew-BoldItalic"]="Courier-BoldOblique";e["CourierNew-Italic"]="Courier-Oblique";e["CourierNewPS-BoldItalicMT"]="Courier-BoldOblique";e["CourierNewPS-BoldMT"]="Courier-Bold";e["CourierNewPS-ItalicMT"]="Courier-Oblique";e.CourierNewPSMT="Courier";e["Helvetica-BoldItalic"]="Helvetica-BoldOblique";e["Helvetica-Italic"]="Helvetica-Oblique";e["Symbol-Bold"]="Symbol";e["Symbol-BoldItalic"]="Symbol";e["Symbol-Italic"]="Symbol";e.TimesNewRoman="Times-Roman";e["TimesNewRoman-Bold"]="Times-Bold";e["TimesNewRoman-BoldItalic"]="Times-BoldItalic";e["TimesNewRoman-Italic"]="Times-Italic";e.TimesNewRomanPS="Times-Roman";e["TimesNewRomanPS-Bold"]="Times-Bold";e["TimesNewRomanPS-BoldItalic"]="Times-BoldItalic";e["TimesNewRomanPS-BoldItalicMT"]="Times-BoldItalic";e["TimesNewRomanPS-BoldMT"]="Times-Bold";e["TimesNewRomanPS-Italic"]="Times-Italic";e["TimesNewRomanPS-ItalicMT"]="Times-Italic";e.TimesNewRomanPSMT="Times-Roman";e["TimesNewRomanPSMT-Bold"]="Times-Bold";e["TimesNewRomanPSMT-BoldItalic"]="Times-BoldItalic";e["TimesNewRomanPSMT-Italic"]="Times-Italic"})),Er=getLookupTableFactory((function(e){e.Courier="FoxitFixed.pfb";e["Courier-Bold"]="FoxitFixedBold.pfb";e["Courier-BoldOblique"]="FoxitFixedBoldItalic.pfb";e["Courier-Oblique"]="FoxitFixedItalic.pfb";e.Helvetica="LiberationSans-Regular.ttf";e["Helvetica-Bold"]="LiberationSans-Bold.ttf";e["Helvetica-BoldOblique"]="LiberationSans-BoldItalic.ttf";e["Helvetica-Oblique"]="LiberationSans-Italic.ttf";e["Times-Roman"]="FoxitSerif.pfb";e["Times-Bold"]="FoxitSerifBold.pfb";e["Times-BoldItalic"]="FoxitSerifBoldItalic.pfb";e["Times-Italic"]="FoxitSerifItalic.pfb";e.Symbol="FoxitSymbol.pfb";e.ZapfDingbats="FoxitDingbats.pfb";e["LiberationSans-Regular"]="LiberationSans-Regular.ttf";e["LiberationSans-Bold"]="LiberationSans-Bold.ttf";e["LiberationSans-Italic"]="LiberationSans-Italic.ttf";e["LiberationSans-BoldItalic"]="LiberationSans-BoldItalic.ttf"})),Pr=getLookupTableFactory((function(e){e.Calibri="Helvetica";e["Calibri-Bold"]="Helvetica-Bold";e["Calibri-BoldItalic"]="Helvetica-BoldOblique";e["Calibri-Italic"]="Helvetica-Oblique";e.CenturyGothic="Helvetica";e["CenturyGothic-Bold"]="Helvetica-Bold";e["CenturyGothic-BoldItalic"]="Helvetica-BoldOblique";e["CenturyGothic-Italic"]="Helvetica-Oblique";e.ComicSansMS="Comic Sans MS";e["ComicSansMS-Bold"]="Comic Sans MS-Bold";e["ComicSansMS-BoldItalic"]="Comic Sans MS-BoldItalic";e["ComicSansMS-Italic"]="Comic Sans MS-Italic";e.Impact="Helvetica";e["ItcSymbol-Bold"]="Helvetica-Bold";e["ItcSymbol-BoldItalic"]="Helvetica-BoldOblique";e["ItcSymbol-Book"]="Helvetica";e["ItcSymbol-BookItalic"]="Helvetica-Oblique";e["ItcSymbol-Medium"]="Helvetica";e["ItcSymbol-MediumItalic"]="Helvetica-Oblique";e.LucidaConsole="Courier";e["LucidaConsole-Bold"]="Courier-Bold";e["LucidaConsole-BoldItalic"]="Courier-BoldOblique";e["LucidaConsole-Italic"]="Courier-Oblique";e["LucidaSans-Demi"]="Helvetica-Bold";e["MS-Gothic"]="MS Gothic";e["MS-Gothic-Bold"]="MS Gothic-Bold";e["MS-Gothic-BoldItalic"]="MS Gothic-BoldItalic";e["MS-Gothic-Italic"]="MS Gothic-Italic";e["MS-Mincho"]="MS Mincho";e["MS-Mincho-Bold"]="MS Mincho-Bold";e["MS-Mincho-BoldItalic"]="MS Mincho-BoldItalic";e["MS-Mincho-Italic"]="MS Mincho-Italic";e["MS-PGothic"]="MS PGothic";e["MS-PGothic-Bold"]="MS PGothic-Bold";e["MS-PGothic-BoldItalic"]="MS PGothic-BoldItalic";e["MS-PGothic-Italic"]="MS PGothic-Italic";e["MS-PMincho"]="MS PMincho";e["MS-PMincho-Bold"]="MS PMincho-Bold";e["MS-PMincho-BoldItalic"]="MS PMincho-BoldItalic";e["MS-PMincho-Italic"]="MS PMincho-Italic";e.NuptialScript="Times-Italic";e.SegoeUISymbol="Helvetica"})),Lr=getLookupTableFactory((function(e){e["Adobe Jenson"]=!0;e["Adobe Text"]=!0;e.Albertus=!0;e.Aldus=!0;e.Alexandria=!0;e.Algerian=!0;e["American Typewriter"]=!0;e.Antiqua=!0;e.Apex=!0;e.Arno=!0;e.Aster=!0;e.Aurora=!0;e.Baskerville=!0;e.Bell=!0;e.Bembo=!0;e["Bembo Schoolbook"]=!0;e.Benguiat=!0;e["Berkeley Old Style"]=!0;e["Bernhard Modern"]=!0;e["Berthold City"]=!0;e.Bodoni=!0;e["Bauer Bodoni"]=!0;e["Book Antiqua"]=!0;e.Bookman=!0;e["Bordeaux Roman"]=!0;e["Californian FB"]=!0;e.Calisto=!0;e.Calvert=!0;e.Capitals=!0;e.Cambria=!0;e.Cartier=!0;e.Caslon=!0;e.Catull=!0;e.Centaur=!0;e["Century Old Style"]=!0;e["Century Schoolbook"]=!0;e.Chaparral=!0;e["Charis SIL"]=!0;e.Cheltenham=!0;e["Cholla Slab"]=!0;e.Clarendon=!0;e.Clearface=!0;e.Cochin=!0;e.Colonna=!0;e["Computer Modern"]=!0;e["Concrete Roman"]=!0;e.Constantia=!0;e["Cooper Black"]=!0;e.Corona=!0;e.Ecotype=!0;e.Egyptienne=!0;e.Elephant=!0;e.Excelsior=!0;e.Fairfield=!0;e["FF Scala"]=!0;e.Folkard=!0;e.Footlight=!0;e.FreeSerif=!0;e["Friz Quadrata"]=!0;e.Garamond=!0;e.Gentium=!0;e.Georgia=!0;e.Gloucester=!0;e["Goudy Old Style"]=!0;e["Goudy Schoolbook"]=!0;e["Goudy Pro Font"]=!0;e.Granjon=!0;e["Guardian Egyptian"]=!0;e.Heather=!0;e.Hercules=!0;e["High Tower Text"]=!0;e.Hiroshige=!0;e["Hoefler Text"]=!0;e["Humana Serif"]=!0;e.Imprint=!0;e["Ionic No. 5"]=!0;e.Janson=!0;e.Joanna=!0;e.Korinna=!0;e.Lexicon=!0;e.LiberationSerif=!0;e["Liberation Serif"]=!0;e["Linux Libertine"]=!0;e.Literaturnaya=!0;e.Lucida=!0;e["Lucida Bright"]=!0;e.Melior=!0;e.Memphis=!0;e.Miller=!0;e.Minion=!0;e.Modern=!0;e["Mona Lisa"]=!0;e["Mrs Eaves"]=!0;e["MS Serif"]=!0;e["Museo Slab"]=!0;e["New York"]=!0;e["Nimbus Roman"]=!0;e["NPS Rawlinson Roadway"]=!0;e.NuptialScript=!0;e.Palatino=!0;e.Perpetua=!0;e.Plantin=!0;e["Plantin Schoolbook"]=!0;e.Playbill=!0;e["Poor Richard"]=!0;e["Rawlinson Roadway"]=!0;e.Renault=!0;e.Requiem=!0;e.Rockwell=!0;e.Roman=!0;e["Rotis Serif"]=!0;e.Sabon=!0;e.Scala=!0;e.Seagull=!0;e.Sistina=!0;e.Souvenir=!0;e.STIX=!0;e["Stone Informal"]=!0;e["Stone Serif"]=!0;e.Sylfaen=!0;e.Times=!0;e.Trajan=!0;e["Trinité"]=!0;e["Trump Mediaeval"]=!0;e.Utopia=!0;e["Vale Type"]=!0;e["Bitstream Vera"]=!0;e["Vera Serif"]=!0;e.Versailles=!0;e.Wanted=!0;e.Weiss=!0;e["Wide Latin"]=!0;e.Windsor=!0;e.XITS=!0})),jr=getLookupTableFactory((function(e){e.Dingbats=!0;e.Symbol=!0;e.ZapfDingbats=!0;e.Wingdings=!0;e["Wingdings-Bold"]=!0;e["Wingdings-Regular"]=!0})),_r=getLookupTableFactory((function(e){e[2]=10;e[3]=32;e[4]=33;e[5]=34;e[6]=35;e[7]=36;e[8]=37;e[9]=38;e[10]=39;e[11]=40;e[12]=41;e[13]=42;e[14]=43;e[15]=44;e[16]=45;e[17]=46;e[18]=47;e[19]=48;e[20]=49;e[21]=50;e[22]=51;e[23]=52;e[24]=53;e[25]=54;e[26]=55;e[27]=56;e[28]=57;e[29]=58;e[30]=894;e[31]=60;e[32]=61;e[33]=62;e[34]=63;e[35]=64;e[36]=65;e[37]=66;e[38]=67;e[39]=68;e[40]=69;e[41]=70;e[42]=71;e[43]=72;e[44]=73;e[45]=74;e[46]=75;e[47]=76;e[48]=77;e[49]=78;e[50]=79;e[51]=80;e[52]=81;e[53]=82;e[54]=83;e[55]=84;e[56]=85;e[57]=86;e[58]=87;e[59]=88;e[60]=89;e[61]=90;e[62]=91;e[63]=92;e[64]=93;e[65]=94;e[66]=95;e[67]=96;e[68]=97;e[69]=98;e[70]=99;e[71]=100;e[72]=101;e[73]=102;e[74]=103;e[75]=104;e[76]=105;e[77]=106;e[78]=107;e[79]=108;e[80]=109;e[81]=110;e[82]=111;e[83]=112;e[84]=113;e[85]=114;e[86]=115;e[87]=116;e[88]=117;e[89]=118;e[90]=119;e[91]=120;e[92]=121;e[93]=122;e[94]=123;e[95]=124;e[96]=125;e[97]=126;e[98]=196;e[99]=197;e[100]=199;e[101]=201;e[102]=209;e[103]=214;e[104]=220;e[105]=225;e[106]=224;e[107]=226;e[108]=228;e[109]=227;e[110]=229;e[111]=231;e[112]=233;e[113]=232;e[114]=234;e[115]=235;e[116]=237;e[117]=236;e[118]=238;e[119]=239;e[120]=241;e[121]=243;e[122]=242;e[123]=244;e[124]=246;e[125]=245;e[126]=250;e[127]=249;e[128]=251;e[129]=252;e[130]=8224;e[131]=176;e[132]=162;e[133]=163;e[134]=167;e[135]=8226;e[136]=182;e[137]=223;e[138]=174;e[139]=169;e[140]=8482;e[141]=180;e[142]=168;e[143]=8800;e[144]=198;e[145]=216;e[146]=8734;e[147]=177;e[148]=8804;e[149]=8805;e[150]=165;e[151]=181;e[152]=8706;e[153]=8721;e[154]=8719;e[156]=8747;e[157]=170;e[158]=186;e[159]=8486;e[160]=230;e[161]=248;e[162]=191;e[163]=161;e[164]=172;e[165]=8730;e[166]=402;e[167]=8776;e[168]=8710;e[169]=171;e[170]=187;e[171]=8230;e[179]=8220;e[180]=8221;e[181]=8216;e[182]=8217;e[200]=193;e[203]=205;e[207]=211;e[210]=218;e[223]=711;e[224]=321;e[225]=322;e[226]=352;e[227]=353;e[228]=381;e[229]=382;e[233]=221;e[234]=253;e[252]=263;e[253]=268;e[254]=269;e[258]=258;e[260]=260;e[261]=261;e[265]=280;e[266]=281;e[267]=282;e[268]=283;e[269]=313;e[275]=323;e[276]=324;e[278]=328;e[283]=344;e[284]=345;e[285]=346;e[286]=347;e[292]=367;e[295]=377;e[296]=378;e[298]=380;e[305]=963;e[306]=964;e[307]=966;e[308]=8215;e[309]=8252;e[310]=8319;e[311]=8359;e[312]=8592;e[313]=8593;e[337]=9552;e[493]=1039;e[494]=1040;e[672]=1488;e[673]=1489;e[674]=1490;e[675]=1491;e[676]=1492;e[677]=1493;e[678]=1494;e[679]=1495;e[680]=1496;e[681]=1497;e[682]=1498;e[683]=1499;e[684]=1500;e[685]=1501;e[686]=1502;e[687]=1503;e[688]=1504;e[689]=1505;e[690]=1506;e[691]=1507;e[692]=1508;e[693]=1509;e[694]=1510;e[695]=1511;e[696]=1512;e[697]=1513;e[698]=1514;e[705]=1524;e[706]=8362;e[710]=64288;e[711]=64298;e[759]=1617;e[761]=1776;e[763]=1778;e[775]=1652;e[777]=1764;e[778]=1780;e[779]=1781;e[780]=1782;e[782]=771;e[783]=64726;e[786]=8363;e[788]=8532;e[790]=768;e[791]=769;e[792]=768;e[795]=803;e[797]=64336;e[798]=64337;e[799]=64342;e[800]=64343;e[801]=64344;e[802]=64345;e[803]=64362;e[804]=64363;e[805]=64364;e[2424]=7821;e[2425]=7822;e[2426]=7823;e[2427]=7824;e[2428]=7825;e[2429]=7826;e[2430]=7827;e[2433]=7682;e[2678]=8045;e[2679]=8046;e[2830]=1552;e[2838]=686;e[2840]=751;e[2842]=753;e[2843]=754;e[2844]=755;e[2846]=757;e[2856]=767;e[2857]=848;e[2858]=849;e[2862]=853;e[2863]=854;e[2864]=855;e[2865]=861;e[2866]=862;e[2906]=7460;e[2908]=7462;e[2909]=7463;e[2910]=7464;e[2912]=7466;e[2913]=7467;e[2914]=7468;e[2916]=7470;e[2917]=7471;e[2918]=7472;e[2920]=7474;e[2921]=7475;e[2922]=7476;e[2924]=7478;e[2925]=7479;e[2926]=7480;e[2928]=7482;e[2929]=7483;e[2930]=7484;e[2932]=7486;e[2933]=7487;e[2934]=7488;e[2936]=7490;e[2937]=7491;e[2938]=7492;e[2940]=7494;e[2941]=7495;e[2942]=7496;e[2944]=7498;e[2946]=7500;e[2948]=7502;e[2950]=7504;e[2951]=7505;e[2952]=7506;e[2954]=7508;e[2955]=7509;e[2956]=7510;e[2958]=7512;e[2959]=7513;e[2960]=7514;e[2962]=7516;e[2963]=7517;e[2964]=7518;e[2966]=7520;e[2967]=7521;e[2968]=7522;e[2970]=7524;e[2971]=7525;e[2972]=7526;e[2974]=7528;e[2975]=7529;e[2976]=7530;e[2978]=1537;e[2979]=1538;e[2980]=1539;e[2982]=1549;e[2983]=1551;e[2984]=1552;e[2986]=1554;e[2987]=1555;e[2988]=1556;e[2990]=1623;e[2991]=1624;e[2995]=1775;e[2999]=1791;e[3002]=64290;e[3003]=64291;e[3004]=64292;e[3006]=64294;e[3007]=64295;e[3008]=64296;e[3011]=1900;e[3014]=8223;e[3015]=8244;e[3017]=7532;e[3018]=7533;e[3019]=7534;e[3075]=7590;e[3076]=7591;e[3079]=7594;e[3080]=7595;e[3083]=7598;e[3084]=7599;e[3087]=7602;e[3088]=7603;e[3091]=7606;e[3092]=7607;e[3095]=7610;e[3096]=7611;e[3099]=7614;e[3100]=7615;e[3103]=7618;e[3104]=7619;e[3107]=8337;e[3108]=8338;e[3116]=1884;e[3119]=1885;e[3120]=1885;e[3123]=1886;e[3124]=1886;e[3127]=1887;e[3128]=1887;e[3131]=1888;e[3132]=1888;e[3135]=1889;e[3136]=1889;e[3139]=1890;e[3140]=1890;e[3143]=1891;e[3144]=1891;e[3147]=1892;e[3148]=1892;e[3153]=580;e[3154]=581;e[3157]=584;e[3158]=585;e[3161]=588;e[3162]=589;e[3165]=891;e[3166]=892;e[3169]=1274;e[3170]=1275;e[3173]=1278;e[3174]=1279;e[3181]=7622;e[3182]=7623;e[3282]=11799;e[3316]=578;e[3379]=42785;e[3393]=1159;e[3416]=8377})),Ur=getLookupTableFactory((function(e){e[227]=322;e[264]=261;e[291]=346})),Xr=getLookupTableFactory((function(e){e[1]=32;e[4]=65;e[5]=192;e[6]=193;e[9]=196;e[17]=66;e[18]=67;e[21]=268;e[24]=68;e[28]=69;e[29]=200;e[30]=201;e[32]=282;e[38]=70;e[39]=71;e[44]=72;e[47]=73;e[48]=204;e[49]=205;e[58]=74;e[60]=75;e[62]=76;e[68]=77;e[69]=78;e[75]=79;e[76]=210;e[80]=214;e[87]=80;e[89]=81;e[90]=82;e[92]=344;e[94]=83;e[97]=352;e[100]=84;e[104]=85;e[109]=220;e[115]=86;e[116]=87;e[121]=88;e[122]=89;e[124]=221;e[127]=90;e[129]=381;e[258]=97;e[259]=224;e[260]=225;e[263]=228;e[268]=261;e[271]=98;e[272]=99;e[273]=263;e[275]=269;e[282]=100;e[286]=101;e[287]=232;e[288]=233;e[290]=283;e[295]=281;e[296]=102;e[336]=103;e[346]=104;e[349]=105;e[350]=236;e[351]=237;e[361]=106;e[364]=107;e[367]=108;e[371]=322;e[373]=109;e[374]=110;e[381]=111;e[382]=242;e[383]=243;e[386]=246;e[393]=112;e[395]=113;e[396]=114;e[398]=345;e[400]=115;e[401]=347;e[403]=353;e[410]=116;e[437]=117;e[442]=252;e[448]=118;e[449]=119;e[454]=120;e[455]=121;e[457]=253;e[460]=122;e[462]=382;e[463]=380;e[853]=44;e[855]=58;e[856]=46;e[876]=47;e[878]=45;e[882]=45;e[894]=40;e[895]=41;e[896]=91;e[897]=93;e[923]=64;e[1004]=48;e[1005]=49;e[1006]=50;e[1007]=51;e[1008]=52;e[1009]=53;e[1010]=54;e[1011]=55;e[1012]=56;e[1013]=57;e[1081]=37;e[1085]=43;e[1086]=45}));function getStandardFontName(e){const t=normalizeFontName(e);return Nr()[t]}function isKnownFontName(e){const t=normalizeFontName(e);return!!(Nr()[t]||Pr()[t]||Lr()[t]||jr()[t])}class ToUnicodeMap{constructor(e=[]){this._map=e}get length(){return this._map.length}forEach(e){for(const t in this._map)e(t,this._map[t].charCodeAt(0))}has(e){return void 0!==this._map[e]}get(e){return this._map[e]}charCodeOf(e){const t=this._map;if(t.length<=65536)return t.indexOf(e);for(const a in t)if(t[a]===e)return 0|a;return-1}amend(e){for(const t in e)this._map[t]=e[t]}}class IdentityToUnicodeMap{constructor(e,t){this.firstChar=e;this.lastChar=t}get length(){return this.lastChar+1-this.firstChar}forEach(e){for(let t=this.firstChar,a=this.lastChar;t<=a;t++)e(t,t)}has(e){return this.firstChar<=e&&e<=this.lastChar}get(e){if(this.firstChar<=e&&e<=this.lastChar)return String.fromCharCode(e)}charCodeOf(e){return Number.isInteger(e)&&e>=this.firstChar&&e<=this.lastChar?e:-1}amend(e){unreachable("Should not call amend()")}}class CFFFont{constructor(e,t){this.properties=t;const a=new CFFParser(e,t,Ir);this.cff=a.parse();this.cff.duplicateFirstGlyph();const r=new CFFCompiler(this.cff);this.seacs=this.cff.seacs;try{this.data=r.compile()}catch{warn("Failed to compile font "+t.loadedName);this.data=e}this._createBuiltInEncoding()}get numGlyphs(){return this.cff.charStrings.count}getCharset(){return this.cff.charset.charset}getGlyphMapping(){const e=this.cff,t=this.properties,{cidToGidMap:a,cMap:r}=t,i=e.charset.charset;let n,s;if(t.composite){let t,o;if(a?.length>0){t=Object.create(null);for(let e=0,r=a.length;e=0){const r=a[t];r&&(i[e]=r)}}i.length>0&&(this.properties.builtInEncoding=i)}}function getUint32(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0}function getUint16(e,t){return e[t]<<8|e[t+1]}function getInt16(e,t){return(e[t]<<24|e[t+1]<<16)>>16}function getInt8(e,t){return e[t]<<24>>24}function getFloat214(e,t){return getInt16(e,t)/16384}function getSubroutineBias(e){const t=e.length;let a=32768;t<1240?a=107:t<33900&&(a=1131);return a}function parseCmap(e,t,a){const r=1===getUint16(e,t+2)?getUint32(e,t+8):getUint32(e,t+16),i=getUint16(e,t+r);let n,s,o;if(4===i){getUint16(e,t+r+2);const a=getUint16(e,t+r+6)>>1;s=t+r+14;n=[];for(o=0;o>1;a0;)h.push({flags:n})}for(a=0;a>1;y=!0;break;case 4:s+=i.pop();moveTo(n,s);y=!0;break;case 5:for(;i.length>0;){n+=i.shift();s+=i.shift();lineTo(n,s)}break;case 6:for(;i.length>0;){n+=i.shift();lineTo(n,s);if(0===i.length)break;s+=i.shift();lineTo(n,s)}break;case 7:for(;i.length>0;){s+=i.shift();lineTo(n,s);if(0===i.length)break;n+=i.shift();lineTo(n,s)}break;case 8:for(;i.length>0;){l=n+i.shift();u=s+i.shift();h=l+i.shift();d=u+i.shift();n=h+i.shift();s=d+i.shift();bezierCurveTo(l,u,h,d,n,s)}break;case 10:m=i.pop();b=null;if(a.isCFFCIDFont){const e=a.fdSelect.getFDIndex(r);if(e>=0&&eMath.abs(s-t)?n+=i.shift():s+=i.shift();bezierCurveTo(l,u,h,d,n,s);break;default:throw new FormatError(`unknown operator: 12 ${w}`)}break;case 14:if(i.length>=4){const e=i.pop(),r=i.pop();s=i.pop();n=i.pop();t.push({cmd:"save"},{cmd:"translate",args:[n,s]});let o=lookupCmap(a.cmap,String.fromCharCode(a.glyphNameMap[hr[e]]));compileCharString(a.glyphs[o.glyphId],t,a,o.glyphId);t.push({cmd:"restore"});o=lookupCmap(a.cmap,String.fromCharCode(a.glyphNameMap[hr[r]]));compileCharString(a.glyphs[o.glyphId],t,a,o.glyphId)}return;case 19:case 20:o+=i.length>>1;c+=o+7>>3;y=!0;break;case 21:s+=i.pop();n+=i.pop();moveTo(n,s);y=!0;break;case 22:n+=i.pop();moveTo(n,s);y=!0;break;case 24:for(;i.length>2;){l=n+i.shift();u=s+i.shift();h=l+i.shift();d=u+i.shift();n=h+i.shift();s=d+i.shift();bezierCurveTo(l,u,h,d,n,s)}n+=i.shift();s+=i.shift();lineTo(n,s);break;case 25:for(;i.length>6;){n+=i.shift();s+=i.shift();lineTo(n,s)}l=n+i.shift();u=s+i.shift();h=l+i.shift();d=u+i.shift();n=h+i.shift();s=d+i.shift();bezierCurveTo(l,u,h,d,n,s);break;case 26:i.length%2&&(n+=i.shift());for(;i.length>0;){l=n;u=s+i.shift();h=l+i.shift();d=u+i.shift();n=h;s=d+i.shift();bezierCurveTo(l,u,h,d,n,s)}break;case 27:i.length%2&&(s+=i.shift());for(;i.length>0;){l=n+i.shift();u=s;h=l+i.shift();d=u+i.shift();n=h+i.shift();s=d;bezierCurveTo(l,u,h,d,n,s)}break;case 28:i.push((e[c]<<24|e[c+1]<<16)>>16);c+=2;break;case 29:m=i.pop()+a.gsubrsBias;b=a.gsubrs[m];b&&parse(b);break;case 30:for(;i.length>0;){l=n;u=s+i.shift();h=l+i.shift();d=u+i.shift();n=h+i.shift();s=d+(1===i.length?i.shift():0);bezierCurveTo(l,u,h,d,n,s);if(0===i.length)break;l=n+i.shift();u=s;h=l+i.shift();d=u+i.shift();s=d+i.shift();n=h+(1===i.length?i.shift():0);bezierCurveTo(l,u,h,d,n,s)}break;case 31:for(;i.length>0;){l=n+i.shift();u=s;h=l+i.shift();d=u+i.shift();s=d+i.shift();n=h+(1===i.length?i.shift():0);bezierCurveTo(l,u,h,d,n,s);if(0===i.length)break;l=n;u=s+i.shift();h=l+i.shift();d=u+i.shift();n=h+i.shift();s=d+(1===i.length?i.shift():0);bezierCurveTo(l,u,h,d,n,s)}break;default:if(w<32)throw new FormatError(`unknown operator: ${w}`);if(w<247)i.push(w-139);else if(w<251)i.push(256*(w-247)+e[c++]+108);else if(w<255)i.push(256*-(w-251)-e[c++]-108);else{i.push((e[c]<<24|e[c+1]<<16|e[c+2]<<8|e[c+3])/65536);c+=4}}y&&(i.length=0)}}(e)}const qr=[];class CompiledFont{constructor(e){this.constructor===CompiledFont&&unreachable("Cannot initialize CompiledFont.");this.fontMatrix=e;this.compiledGlyphs=Object.create(null);this.compiledCharCodeToGlyphId=Object.create(null)}getPathJs(e){const{charCode:t,glyphId:a}=lookupCmap(this.cmap,e);let r=this.compiledGlyphs[a];if(!r)try{r=this.compileGlyph(this.glyphs[a],a);this.compiledGlyphs[a]=r}catch(e){this.compiledGlyphs[a]=qr;void 0===this.compiledCharCodeToGlyphId[t]&&(this.compiledCharCodeToGlyphId[t]=a);throw e}void 0===this.compiledCharCodeToGlyphId[t]&&(this.compiledCharCodeToGlyphId[t]=a);return r}compileGlyph(e,t){if(!e||0===e.length||14===e[0])return qr;let a=this.fontMatrix;if(this.isCFFCIDFont){const e=this.fdSelect.getFDIndex(t);if(e>=0&&e2*getUint16(e,t)}const n=[];let s=i(t,0);for(let a=r;ae+(t.getSize()+3&-4)),0)}write(){const e=this.getSize(),t=new DataView(new ArrayBuffer(e)),a=e>131070,r=a?4:2,i=new DataView(new ArrayBuffer((this.glyphs.length+1)*r));a?i.setUint32(0,0):i.setUint16(0,0);let n=0,s=0;for(const e of this.glyphs){n+=e.write(n,t);n=n+3&-4;s+=r;a?i.setUint32(s,n):i.setUint16(s,n>>1)}return{isLocationLong:a,loca:new Uint8Array(i.buffer),glyf:new Uint8Array(t.buffer)}}scale(e){for(let t=0,a=this.glyphs.length;te+t.getSize()),0);return this.header.getSize()+e}write(e,t){if(!this.header)return 0;const a=e;e+=this.header.write(e,t);if(this.simple)e+=this.simple.write(e,t);else for(const a of this.composites)e+=a.write(e,t);return e-a}scale(e){if(!this.header)return;const t=(this.header.xMin+this.header.xMax)/2;this.header.scale(t,e);if(this.simple)this.simple.scale(t,e);else for(const a of this.composites)a.scale(t,e)}}class GlyphHeader{constructor({numberOfContours:e,xMin:t,yMin:a,xMax:r,yMax:i}){this.numberOfContours=e;this.xMin=t;this.yMin=a;this.xMax=r;this.yMax=i}static parse(e,t){return[10,new GlyphHeader({numberOfContours:t.getInt16(e),xMin:t.getInt16(e+2),yMin:t.getInt16(e+4),xMax:t.getInt16(e+6),yMax:t.getInt16(e+8)})]}getSize(){return 10}write(e,t){t.setInt16(e,this.numberOfContours);t.setInt16(e+2,this.xMin);t.setInt16(e+4,this.yMin);t.setInt16(e+6,this.xMax);t.setInt16(e+8,this.yMax);return 10}scale(e,t){this.xMin=Math.round(e+(this.xMin-e)*t);this.xMax=Math.round(e+(this.xMax-e)*t)}}class Contour{constructor({flags:e,xCoordinates:t,yCoordinates:a}){this.xCoordinates=t;this.yCoordinates=a;this.flags=e}}class SimpleGlyph{constructor({contours:e,instructions:t}){this.contours=e;this.instructions=t}static parse(e,t,a){const r=[];for(let i=0;i255?e+=2:o>0&&(e+=1);t=n;o=Math.abs(s-a);o>255?e+=2:o>0&&(e+=1);a=s}}return e}write(e,t){const a=e,r=[],i=[],n=[];let s=0,o=0;for(const a of this.contours){for(let e=0,t=a.xCoordinates.length;e=0?18:2;r.push(e)}else r.push(l)}s=c;const h=a.yCoordinates[e];l=h-o;if(0===l){t|=32;i.push(0)}else{const e=Math.abs(l);if(e<=255){t|=l>=0?36:4;i.push(e)}else i.push(l)}o=h;n.push(t)}t.setUint16(e,r.length-1);e+=2}t.setUint16(e,this.instructions.length);e+=2;if(this.instructions.length){new Uint8Array(t.buffer,0,t.buffer.byteLength).set(this.instructions,e);e+=this.instructions.length}for(const a of n)t.setUint8(e++,a);for(let a=0,i=r.length;a=-128&&this.argument1<=127&&this.argument2>=-128&&this.argument2<=127||(e+=2):this.argument1>=0&&this.argument1<=255&&this.argument2>=0&&this.argument2<=255||(e+=2);return e}write(e,t){const a=e;2&this.flags?this.argument1>=-128&&this.argument1<=127&&this.argument2>=-128&&this.argument2<=127||(this.flags|=1):this.argument1>=0&&this.argument1<=255&&this.argument2>=0&&this.argument2<=255||(this.flags|=1);t.setUint16(e,this.flags);t.setUint16(e+2,this.glyphIndex);e+=4;if(1&this.flags){if(2&this.flags){t.setInt16(e,this.argument1);t.setInt16(e+2,this.argument2)}else{t.setUint16(e,this.argument1);t.setUint16(e+2,this.argument2)}e+=4}else{t.setUint8(e,this.argument1);t.setUint8(e+1,this.argument2);e+=2}if(256&this.flags){t.setUint16(e,this.instructions.length);e+=2;if(this.instructions.length){new Uint8Array(t.buffer,0,t.buffer.byteLength).set(this.instructions,e);e+=this.instructions.length}}return e-a}scale(e,t){}}function writeInt16(e,t,a){e[t]=a>>8&255;e[t+1]=255&a}function writeInt32(e,t,a){e[t]=a>>24&255;e[t+1]=a>>16&255;e[t+2]=a>>8&255;e[t+3]=255&a}function writeData(e,t,a){if(a instanceof Uint8Array)e.set(a,t);else if("string"==typeof a)for(let r=0,i=a.length;ra;){a<<=1;r++}const i=a*t;return{range:i,entry:r,rangeShift:t*e-i}}toArray(){let e=this.sfnt;const t=this.tables,a=Object.keys(t);a.sort();const r=a.length;let i,n,s,o,c,l=12+16*r;const h=[l];for(i=0;i>>0;h.push(l)}const u=new Uint8Array(l);for(i=0;i>>0}writeInt32(u,l+4,e);writeInt32(u,l+8,h[i]);writeInt32(u,l+12,t[c].length);l+=16}return u}addTable(e,t){if(e in this.tables)throw new Error("Table "+e+" already exists");this.tables[e]=t}}const Wr=[4],$r=[5],Gr=[6],Vr=[7],Kr=[8],Jr=[12,35],Yr=[14],Zr=[21],Qr=[22],ei=[30],ti=[31];class Type1CharString{constructor(){this.width=0;this.lsb=0;this.flexing=!1;this.output=[];this.stack=[]}convert(e,t,a){const r=e.length;let i,n,s,o=!1;for(let c=0;cr)return!0;const i=r-e;for(let e=i;e>8&255,255&t);else{t=65536*t|0;this.output.push(255,t>>24&255,t>>16&255,t>>8&255,255&t)}}this.output.push(...t);a?this.stack.splice(i,e):this.stack.length=0;return!1}}function isHexDigit(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function decrypt(e,t,a){if(a>=e.length)return new Uint8Array(0);let r,i,n=0|t;for(r=0;r>8;n=52845*(t+n)+22719&65535}return o}function isSpecial(e){return 47===e||91===e||93===e||123===e||125===e||40===e||41===e}class Type1Parser{constructor(e,t,a){if(t){const t=e.getBytes(),a=!((isHexDigit(t[0])||isWhiteSpace(t[0]))&&isHexDigit(t[1])&&isHexDigit(t[2])&&isHexDigit(t[3])&&isHexDigit(t[4])&&isHexDigit(t[5])&&isHexDigit(t[6])&&isHexDigit(t[7]));e=new Stream(a?decrypt(t,55665,4):function decryptAscii(e,t,a){let r=0|t;const i=e.length,n=new Uint8Array(i>>>1);let s,o;for(s=0,o=0;s>8;r=52845*(e+r)+22719&65535}}return n.slice(a,o)}(t,55665,4))}this.seacAnalysisEnabled=!!a;this.stream=e;this.nextChar()}readNumberArray(){this.getToken();const e=[];for(;;){const t=this.getToken();if(null===t||"]"===t||"}"===t)break;e.push(parseFloat(t||0))}return e}readNumber(){const e=this.getToken();return parseFloat(e||0)}readInt(){const e=this.getToken();return 0|parseInt(e||0,10)}readBoolean(){return"true"===this.getToken()?1:0}nextChar(){return this.currentChar=this.stream.getByte()}prevChar(){this.stream.skip(-2);return this.currentChar=this.stream.getByte()}getToken(){let e=!1,t=this.currentChar;for(;;){if(-1===t)return null;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(!isWhiteSpace(t))break;t=this.nextChar()}if(isSpecial(t)){this.nextChar();return String.fromCharCode(t)}let a="";do{a+=String.fromCharCode(t);t=this.nextChar()}while(t>=0&&!isWhiteSpace(t)&&!isSpecial(t));return a}readCharStrings(e,t){return-1===t?e:decrypt(e,4330,t)}extractFontProgram(e){const t=this.stream,a=[],r=[],i=Object.create(null);i.lenIV=4;const n={subrs:[],charstrings:[],properties:{privateData:i}};let s,o,c,l;for(;null!==(s=this.getToken());)if("/"===s){s=this.getToken();switch(s){case"CharStrings":this.getToken();this.getToken();this.getToken();this.getToken();for(;;){s=this.getToken();if(null===s||"end"===s)break;if("/"!==s)continue;const e=this.getToken();o=this.readInt();this.getToken();c=o>0?t.getBytes(o):new Uint8Array(0);l=n.properties.privateData.lenIV;const a=this.readCharStrings(c,l);this.nextChar();s=this.getToken();"noaccess"===s?this.getToken():"/"===s&&this.prevChar();r.push({glyph:e,encoded:a})}break;case"Subrs":this.readInt();this.getToken();for(;"dup"===this.getToken();){const e=this.readInt();o=this.readInt();this.getToken();c=o>0?t.getBytes(o):new Uint8Array(0);l=n.properties.privateData.lenIV;const r=this.readCharStrings(c,l);this.nextChar();s=this.getToken();"noaccess"===s&&this.getToken();a[e]=r}break;case"BlueValues":case"OtherBlues":case"FamilyBlues":case"FamilyOtherBlues":const e=this.readNumberArray();e.length>0&&e.length,0;break;case"StemSnapH":case"StemSnapV":n.properties.privateData[s]=this.readNumberArray();break;case"StdHW":case"StdVW":n.properties.privateData[s]=this.readNumberArray()[0];break;case"BlueShift":case"lenIV":case"BlueFuzz":case"BlueScale":case"LanguageGroup":n.properties.privateData[s]=this.readNumber();break;case"ExpansionFactor":n.properties.privateData[s]=this.readNumber()||.06;break;case"ForceBold":n.properties.privateData[s]=this.readBoolean()}}for(const{encoded:t,glyph:i}of r){const r=new Type1CharString,s=r.convert(t,a,this.seacAnalysisEnabled);let o=r.output;s&&(o=[14]);const c={glyphName:i,charstring:o,width:r.width,lsb:r.lsb,seac:r.seac};".notdef"===i?n.charstrings.unshift(c):n.charstrings.push(c);if(e.builtInEncoding){const t=e.builtInEncoding.indexOf(i);t>-1&&void 0===e.widths[t]&&t>=e.firstChar&&t<=e.lastChar&&(e.widths[t]=r.width)}}return n}extractFontHeader(e){let t;for(;null!==(t=this.getToken());)if("/"===t){t=this.getToken();switch(t){case"FontMatrix":const a=this.readNumberArray();e.fontMatrix=a;break;case"Encoding":const r=this.getToken();let i;if(/^\d+$/.test(r)){i=[];const e=0|parseInt(r,10);this.getToken();for(let a=0;a=i){s+=a;for(;s=0&&(r[e]=i)}}return type1FontGlyphMapping(e,r,a)}hasGlyphId(e){if(e<0||e>=this.numGlyphs)return!1;if(0===e)return!0;return this.charstrings[e-1].charstring.length>0}getSeacs(e){const t=[];for(let a=0,r=e.length;a0;e--)t[e]-=t[e-1];f.setByName(e,t)}n.topDict.privateDict=f;const p=new CFFIndex;for(h=0,u=r.length;h0&&e.toUnicode.amend(t)}class fonts_Glyph{constructor(e,t,a,r,i,n,s,o,c){this.originalCharCode=e;this.fontChar=t;this.unicode=a;this.accent=r;this.width=i;this.vmetric=n;this.operatorListId=s;this.isSpace=o;this.isInFont=c}get category(){return shadow(this,"category",function getCharUnicodeCategory(e){const t=Fr.get(e);if(t)return t;const a=e.match(vr),r={isWhitespace:!!a?.[1],isZeroWidthDiacritic:!!a?.[2],isInvisibleFormatMark:!!a?.[3]};Fr.set(e,r);return r}(this.unicode),!0)}}function int16(e,t){return(e<<8)+t}function writeSignedInt16(e,t,a){e[t+1]=a;e[t]=a>>>8}function signedInt16(e,t){const a=(e<<8)+t;return 32768&a?a-65536:a}function string16(e){return String.fromCharCode(e>>8&255,255&e)}function safeString16(e){e>32767?e=32767:e<-32768&&(e=-32768);return String.fromCharCode(e>>8&255,255&e)}function isTrueTypeCollectionFile(e){return"ttcf"===bytesToString(e.peekBytes(4))}function getFontFileType(e,{type:t,subtype:a,composite:r}){let i,n;if(function isTrueTypeFile(e){const t=e.peekBytes(4);return 65536===readUint32(t,0)||"true"===bytesToString(t)}(e)||isTrueTypeCollectionFile(e))i=r?"CIDFontType2":"TrueType";else if(function isOpenTypeFile(e){return"OTTO"===bytesToString(e.peekBytes(4))}(e))i=r?"CIDFontType2":"OpenType";else if(function isType1File(e){const t=e.peekBytes(2);return 37===t[0]&&33===t[1]||128===t[0]&&1===t[1]}(e))i=r?"CIDFontType0":"MMType1"===t?"MMType1":"Type1";else if(function isCFFFile(e){const t=e.peekBytes(4);return t[0]>=1&&t[3]>=1&&t[3]<=4}(e))if(r){i="CIDFontType0";n="CIDFontType0C"}else{i="MMType1"===t?"MMType1":"Type1";n="Type1C"}else{warn("getFontFileType: Unable to detect correct font file Type/Subtype.");i=t;n=a}return[i,n]}function applyStandardFontGlyphMap(e,t){for(const a in t)e[+a]=t[a]}function buildToFontChar(e,t,a){const r=[];let i;for(let a=0,n=e.length;ah){c++;if(c>=ai.length){warn("Ran out of space in font private use area.");break}l=ai[c][0];h=ai[c][1]}const g=l++;0===f&&(f=a);let p=r.get(d);"string"==typeof p&&(p=p.codePointAt(0));if(p&&!(u=p,ai[0][0]<=u&&u<=ai[0][1]||ai[1][0]<=u&&u<=ai[1][1])&&!o.has(f)){n.set(p,f);o.add(f)}i[g]=f;s[d]=g}var u;return{toFontChar:s,charCodeToGlyphId:i,toUnicodeExtraMap:n,nextAvailableFontCharCode:l}}function createCmapTable(e,t,a){const r=function getRanges(e,t,a){const r=[];for(const t in e)e[t]>=a||r.push({fontCharCode:0|t,glyphId:e[t]});if(t)for(const[e,i]of t)i>=a||r.push({fontCharCode:e,glyphId:i});0===r.length&&r.push({fontCharCode:0,glyphId:0});r.sort((function fontGetRangesSort(e,t){return e.fontCharCode-t.fontCharCode}));const i=[],n=r.length;for(let e=0;e65535?2:1;let n,s,o,c,l="\0\0"+string16(i)+"\0\0"+string32(4+8*i);for(n=r.length-1;n>=0&&!(r[n][0]<=65535);--n);const h=n+1;r[n][0]<65535&&65535===r[n][1]&&(r[n][1]=65534);const u=r[n][1]<65535?1:0,d=h+u,f=OpenTypeFileBuilder.getSearchParams(d,2);let g,p,m,b,y="",w="",x="",k="",S="",C=0;for(n=0,s=h;n0){w+="ÿÿ";y+="ÿÿ";x+="\0";k+="\0\0"}const v="\0\0"+string16(2*d)+string16(f.range)+string16(f.entry)+string16(f.rangeShift)+w+"\0\0"+y+x+k+S;let F="",O="";if(i>1){l+="\0\0\n"+string32(4+8*i+4+v.length);F="";for(n=0,s=r.length;ne||!c)&&(c=e);l 123 are reserved for internal usage");o|=1<65535&&(l=65535)}else{c=0;l=255}const u=e.bbox||[0,0,0,0],d=a.unitsPerEm||1/(e.fontMatrix||i)[0],f=e.ascentScaled?1:d/ri,g=a.ascent||Math.round(f*(e.ascent||u[3]));let p=a.descent||Math.round(f*(e.descent||u[1]));p>0&&e.descent>0&&u[1]<0&&(p=-p);const m=a.yMax||g,b=-a.yMin||-p;return"\0$ô\0\0\0Š»\0\0\0ŒŠ»\0\0ß\x001\0\0\0\0"+String.fromCharCode(e.fixedPitch?9:0)+"\0\0\0\0\0\0"+string32(r)+string32(n)+string32(s)+string32(o)+"*21*"+string16(e.italicAngle?1:0)+string16(c||e.firstChar)+string16(l||e.lastChar)+string16(g)+string16(p)+"\0d"+string16(m)+string16(b)+"\0\0\0\0\0\0\0\0"+string16(e.xHeight)+string16(e.capHeight)+string16(0)+string16(c||e.firstChar)+"\0"}function createPostTable(e){return"\0\0\0"+string32(Math.floor(65536*e.italicAngle))+"\0\0\0\0"+string32(e.fixedPitch?1:0)+"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}function createPostscriptName(e){return e.replaceAll(/[^\x21-\x7E]|[[\](){}<>/%]/g,"").slice(0,63)}function createNameTable(e,t){t||(t=[[],[]]);const a=[t[0][0]||"Original licence",t[0][1]||e,t[0][2]||"Unknown",t[0][3]||"uniqueID",t[0][4]||e,t[0][5]||"Version 0.11",t[0][6]||createPostscriptName(e),t[0][7]||"Unknown",t[0][8]||"Unknown",t[0][9]||"Unknown"],r=[];let i,n,s,o,c;for(i=0,n=a.length;i0;if((s||o)&&"CIDFontType2"===a&&this.cidEncoding.startsWith("Identity-")){const a=e.cidToGidMap,r=[];applyStandardFontGlyphMap(r,_r());/Arial-?Black/i.test(t)?applyStandardFontGlyphMap(r,Ur()):/Calibri/i.test(t)&&applyStandardFontGlyphMap(r,Xr());if(a){for(const e in r){const t=r[e];void 0!==a[t]&&(r[+e]=a[t])}a.length!==this.toUnicode.length&&e.hasIncludedToUnicodeMap&&this.toUnicode instanceof IdentityToUnicodeMap&&this.toUnicode.forEach((function(e,t){const i=r[e];void 0===a[i]&&(r[+e]=t)}))}this.toUnicode instanceof IdentityToUnicodeMap||this.toUnicode.forEach((function(e,t){r[+e]=t}));this.toFontChar=r;this.toUnicode=new ToUnicodeMap(r)}else if(/Symbol/i.test(r))this.toFontChar=buildToFontChar(dr,kr(),this.differences);else if(/Dingbats/i.test(r))this.toFontChar=buildToFontChar(fr,Sr(),this.differences);else if(s){const e=buildToFontChar(this.defaultEncoding,kr(),this.differences);"CIDFontType2"!==a||this.cidEncoding.startsWith("Identity-")||this.toUnicode instanceof IdentityToUnicodeMap||this.toUnicode.forEach((function(t,a){e[+t]=a}));this.toFontChar=e}else{const e=kr(),a=[];this.toUnicode.forEach(((t,r)=>{if(!this.composite){const a=getUnicodeForGlyph(this.differences[t]||this.defaultEncoding[t],e);-1!==a&&(r=a)}a[+t]=r}));this.composite&&this.toUnicode instanceof IdentityToUnicodeMap&&/Tahoma|Verdana/i.test(t)&&applyStandardFontGlyphMap(a,_r());this.toFontChar=a}amendFallbackToUnicode(e);this.loadedName=r.split("-")[0]}checkAndRepair(e,t,a){const r=["OS/2","cmap","head","hhea","hmtx","maxp","name","post","loca","glyf","fpgm","prep","cvt ","CFF "];function readTables(e,t){const a=Object.create(null);a["OS/2"]=null;a.cmap=null;a.head=null;a.hhea=null;a.hmtx=null;a.maxp=null;a.name=null;a.post=null;for(let i=0;i>>0,r=e.getInt32()>>>0,i=e.getInt32()>>>0,n=e.pos;e.pos=e.start||0;e.skip(r);const s=e.getBytes(i);e.pos=n;if("head"===t){s[8]=s[9]=s[10]=s[11]=0;s[17]|=32}return{tag:t,checksum:a,length:i,offset:r,data:s}}function readOpenTypeHeader(e){return{version:e.getString(4),numTables:e.getUint16(),searchRange:e.getUint16(),entrySelector:e.getUint16(),rangeShift:e.getUint16()}}function sanitizeGlyph(e,t,a,r,i,n){const s={length:0,sizeOfInstructions:0};if(t<0||t>=e.length||a>e.length||a-t<=12)return s;const o=e.subarray(t,a),c=signedInt16(o[2],o[3]),l=signedInt16(o[4],o[5]),h=signedInt16(o[6],o[7]),u=signedInt16(o[8],o[9]);if(c>h){writeSignedInt16(o,2,h);writeSignedInt16(o,6,c)}if(l>u){writeSignedInt16(o,4,u);writeSignedInt16(o,8,l)}const d=signedInt16(o[0],o[1]);if(d<0){if(d<-1)return s;r.set(o,i);s.length=o.length;return s}let f,g=10,p=0;for(f=0;fo.length)return s;if(!n&&b>0){r.set(o.subarray(0,m),i);r.set([0,0],i+m);r.set(o.subarray(y,x),i+m+2);x-=b;o.length-x>3&&(x=x+3&-4);s.length=x;return s}if(o.length-x>3){x=x+3&-4;r.set(o.subarray(0,x),i);s.length=x;return s}r.set(o,i);s.length=o.length;return s}function readNameTable(e){const a=(t.start||0)+e.offset;t.pos=a;const r=[[],[]],i=[],n=e.length,s=a+n;if(0!==t.getUint16()||n<6)return[r,i];const o=t.getUint16(),c=t.getUint16();let l,h;for(l=0;ls)continue;t.pos=n;const o=e.name;if(e.encoding){let a="";for(let r=0,i=e.length;r0&&(l+=e-1)}}else{if(m||y){warn("TT: nested FDEFs not allowed");p=!0}m=!0;u=l;s=d.pop();t.functionsDefined[s]={data:c,i:l}}else if(!m&&!y){s=d.at(-1);if(isNaN(s))info("TT: CALL empty stack (or invalid entry).");else{t.functionsUsed[s]=!0;if(s in t.functionsStackDeltas){const e=d.length+t.functionsStackDeltas[s];if(e<0){warn("TT: CALL invalid functions stack delta.");t.hintsValid=!1;return}d.length=e}else if(s in t.functionsDefined&&!g.includes(s)){f.push({data:c,i:l,stackTop:d.length-1});g.push(s);o=t.functionsDefined[s];if(!o){warn("TT: CALL non-existent function");t.hintsValid=!1;return}c=o.data;l=o.i}}}if(!m&&!y){let t=0;e<=142?t=i[e]:e>=192&&e<=223?t=-1:e>=224&&(t=-2);if(e>=113&&e<=117){r=d.pop();isNaN(r)||(t=2*-r)}for(;t<0&&d.length>0;){d.pop();t++}for(;t>0;){d.push(NaN);t--}}}t.tooComplexToFollowFunctions=p;const w=[c];l>c.length&&w.push(new Uint8Array(l-c.length));if(u>h){warn("TT: complementing a missing function tail");w.push(new Uint8Array([34,45]))}!function foldTTTable(e,t){if(t.length>1){let a,r,i=0;for(a=0,r=t.length;a>>0,n=[];for(let t=0;t>>0);const s={ttcTag:t,majorVersion:a,minorVersion:r,numFonts:i,offsetTable:n};switch(a){case 1:return s;case 2:s.dsigTag=e.getInt32()>>>0;s.dsigLength=e.getInt32()>>>0;s.dsigOffset=e.getInt32()>>>0;return s}throw new FormatError(`Invalid TrueType Collection majorVersion: ${a}.`)}(e),i=t.split("+");let n;for(let s=0;s0||!(a.cMap instanceof IdentityCMap));if("OTTO"===n.version&&!t||!s.head||!s.hhea||!s.maxp||!s.post){c=new Stream(s["CFF "].data);o=new CFFFont(c,a);adjustWidths(a);return this.convert(e,o,a)}delete s.glyf;delete s.loca;delete s.fpgm;delete s.prep;delete s["cvt "];this.isOpenType=!0}if(!s.maxp)throw new FormatError('Required "maxp" table is not found');t.pos=(t.start||0)+s.maxp.offset;let h=t.getInt32();const u=t.getUint16();if(65536!==h&&20480!==h){if(6===s.maxp.length)h=20480;else{if(!(s.maxp.length>=32))throw new FormatError('"maxp" table has a wrong version number');h=65536}!function writeUint32(e,t,a){e[t+3]=255&a;e[t+2]=a>>>8;e[t+1]=a>>>16;e[t]=a>>>24}(s.maxp.data,0,h)}if(a.scaleFactors?.length===u&&l){const{scaleFactors:e}=a,t=int16(s.head.data[50],s.head.data[51]),r=new GlyfTable({glyfTable:s.glyf.data,isGlyphLocationsLong:t,locaTable:s.loca.data,numGlyphs:u});r.scale(e);const{glyf:i,loca:n,isLocationLong:o}=r.write();s.glyf.data=i;s.loca.data=n;if(o!==!!t){s.head.data[50]=0;s.head.data[51]=o?1:0}const c=s.hmtx.data;for(let t=0;t>8&255;c[a+1]=255&r;writeSignedInt16(c,a+2,Math.round(e[t]*signedInt16(c[a+2],c[a+3])))}}let d=u+1,f=!0;if(d>65535){f=!1;d=u;warn("Not enough space in glyfs to duplicate first glyph.")}let g=0,p=0;if(h>=65536&&s.maxp.length>=32){t.pos+=8;if(t.getUint16()>2){s.maxp.data[14]=0;s.maxp.data[15]=2}t.pos+=4;g=t.getUint16();t.pos+=4;p=t.getUint16()}s.maxp.data[4]=d>>8;s.maxp.data[5]=255&d;const m=function sanitizeTTPrograms(e,t,a,r){const i={functionsDefined:[],functionsUsed:[],functionsStackDeltas:[],tooComplexToFollowFunctions:!1,hintsValid:!0};e&&sanitizeTTProgram(e,i);t&&sanitizeTTProgram(t,i);e&&function checkInvalidFunctions(e,t){if(!e.tooComplexToFollowFunctions)if(e.functionsDefined.length>t){warn("TT: more functions defined than expected");e.hintsValid=!1}else for(let a=0,r=e.functionsUsed.length;at){warn("TT: invalid function id: "+a);e.hintsValid=!1;return}if(e.functionsUsed[a]&&!e.functionsDefined[a]){warn("TT: undefined function: "+a);e.hintsValid=!1;return}}}(i,r);if(a&&1&a.length){const e=new Uint8Array(a.length+1);e.set(a.data);a.data=e}return i.hintsValid}(s.fpgm,s.prep,s["cvt "],g);if(!m){delete s.fpgm;delete s.prep;delete s["cvt "]}!function sanitizeMetrics(e,t,a,r,i,n){if(!t){a&&(a.data=null);return}e.pos=(e.start||0)+t.offset;e.pos+=4;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;const s=e.getUint16();e.pos+=8;e.pos+=2;let o=e.getUint16();if(0!==s){if(!(2&int16(r.data[44],r.data[45]))){t.data[22]=0;t.data[23]=0}}if(o>i){info(`The numOfMetrics (${o}) should not be greater than the numGlyphs (${i}).`);o=i;t.data[34]=(65280&o)>>8;t.data[35]=255&o}const c=i-o-(a.length-4*o>>1);if(c>0){const e=new Uint8Array(a.length+2*c);e.set(a.data);if(n){e[a.length]=a.data[2];e[a.length+1]=a.data[3]}a.data=e}}(t,s.hhea,s.hmtx,s.head,d,f);if(!s.head)throw new FormatError('Required "head" table is not found');!function sanitizeHead(e,t,a){const r=e.data,i=function int32(e,t,a,r){return(e<<24)+(t<<16)+(a<<8)+r}(r[0],r[1],r[2],r[3]);if(i>>16!=1){info("Attempting to fix invalid version in head table: "+i);r[0]=0;r[1]=1;r[2]=0;r[3]=0}const n=int16(r[50],r[51]);if(n<0||n>1){info("Attempting to fix invalid indexToLocFormat in head table: "+n);const e=t+1;if(a===e<<1){r[50]=0;r[51]=0}else{if(a!==e<<2)throw new FormatError("Could not fix indexToLocFormat: "+n);r[50]=0;r[51]=1}}}(s.head,u,l?s.loca.length:0);let b=Object.create(null);if(l){const e=int16(s.head.data[50],s.head.data[51]),t=function sanitizeGlyphLocations(e,t,a,r,i,n,s){let o,c,l;if(r){o=4;c=function fontItemDecodeLong(e,t){return e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3]};l=function fontItemEncodeLong(e,t,a){e[t]=a>>>24&255;e[t+1]=a>>16&255;e[t+2]=a>>8&255;e[t+3]=255&a}}else{o=2;c=function fontItemDecode(e,t){return e[t]<<9|e[t+1]<<1};l=function fontItemEncode(e,t,a){e[t]=a>>9&255;e[t+1]=a>>1&255}}const h=n?a+1:a,u=o*(1+h),d=new Uint8Array(u);d.set(e.data.subarray(0,u));e.data=d;const f=t.data,g=f.length,p=new Uint8Array(g);let m,b;const y=[];for(m=0,b=0;mg&&(e=g);y.push({index:m,offset:e,endOffset:0})}y.sort(((e,t)=>e.offset-t.offset));for(m=0;me.index-t.index));for(m=0;ms&&(s=e.sizeOfInstructions);x+=t;l(d,b,x)}if(0===x){const e=new Uint8Array([0,1,0,0,0,0,0,0,0,0,0,0,0,0,49,0]);for(m=0,b=o;ma+x)t.data=p.subarray(0,a+x);else{t.data=new Uint8Array(a+x);t.data.set(p.subarray(0,x))}t.data.set(p.subarray(0,a),x);l(e.data,d.length-o,x+a)}else t.data=p.subarray(0,x);return{missingGlyphs:w,maxSizeOfInstructions:s}}(s.loca,s.glyf,u,e,m,f,p);b=t.missingGlyphs;if(h>=65536&&s.maxp.length>=32){s.maxp.data[26]=t.maxSizeOfInstructions>>8;s.maxp.data[27]=255&t.maxSizeOfInstructions}}if(!s.hhea)throw new FormatError('Required "hhea" table is not found');if(0===s.hhea.data[10]&&0===s.hhea.data[11]){s.hhea.data[10]=255;s.hhea.data[11]=255}const y={unitsPerEm:int16(s.head.data[18],s.head.data[19]),yMax:signedInt16(s.head.data[42],s.head.data[43]),yMin:signedInt16(s.head.data[38],s.head.data[39]),ascent:signedInt16(s.hhea.data[4],s.hhea.data[5]),descent:signedInt16(s.hhea.data[6],s.hhea.data[7]),lineGap:signedInt16(s.hhea.data[8],s.hhea.data[9])};this.ascent=y.ascent/y.unitsPerEm;this.descent=y.descent/y.unitsPerEm;this.lineGap=y.lineGap/y.unitsPerEm;if(this.cssFontInfo?.lineHeight){this.lineHeight=this.cssFontInfo.metrics.lineHeight;this.lineGap=this.cssFontInfo.metrics.lineGap}else this.lineHeight=this.ascent-this.descent+this.lineGap;s.post&&function readPostScriptTable(e,a,r){const i=(t.start||0)+e.offset;t.pos=i;const n=i+e.length,s=t.getInt32();t.skip(28);let o,c,l=!0;switch(s){case 65536:o=Rr;break;case 131072:const e=t.getUint16();if(e!==r){l=!1;break}const i=[];for(c=0;c=32768){l=!1;break}i.push(e)}if(!l)break;const h=[],u=[];for(;t.pos65535)throw new FormatError("Max size of CID is 65,535");let i=-1;t?i=r:void 0!==e[r]&&(i=e[r]);i>=0&&i>>0;let h=!1;if(o?.platformId!==i||o?.encodingId!==n){if(0!==i||0!==n&&1!==n&&3!==n)if(1===i&&0===n)h=!0;else if(3!==i||1!==n||!r&&o){if(a&&3===i&&0===n){h=!0;let a=!0;if(e>3;e.push(r);a=Math.max(r,a)}const r=[];for(let e=0;e<=a;e++)r.push({firstCode:t.getUint16(),entryCount:t.getUint16(),idDelta:signedInt16(t.getByte(),t.getByte()),idRangePos:t.pos+t.getUint16()});for(let a=0;a<256;a++)if(0===e[a]){t.pos=r[0].idRangePos+2*a;f=t.getUint16();u.push({charCode:a,glyphId:f})}else{const i=r[e[a]];for(d=0;d>1;t.skip(6);const a=[];let r;for(r=0;r>1)-(e-r);i.offsetIndex=s;o=Math.max(o,s+i.end-i.start+1)}else i.offsetIndex=-1}const c=[];for(d=0;d>>0;for(d=0;d>>0,a=t.getInt32()>>>0;let r=t.getInt32()>>>0;for(let t=e;t<=a;t++)u.push({charCode:t,glyphId:r++})}}}u.sort((function(e,t){return e.charCode-t.charCode}));for(let e=1;e=61440&&t<=61695&&(t&=255);w[t]=e.glyphId}if(a.glyphNames&&(o.length||this.differences.length))for(let e=0;e<256;++e){if(!c&&void 0!==w[e])continue;const t=this.differences[e]||o[e];if(!t)continue;const r=a.glyphNames.indexOf(t);r>0&&hasGlyph(r)&&(w[e]=r)}}0===w.length&&(w[0]=0);let x=d-1;f||(x=0);if(!a.cssFontInfo){const e=adjustMapping(w,hasGlyph,x,this.toUnicode);this.toFontChar=e.toFontChar;s.cmap={tag:"cmap",data:createCmapTable(e.charCodeToGlyphId,e.toUnicodeExtraMap,d)};s["OS/2"]&&function validateOS2Table(e,t){t.pos=(t.start||0)+e.offset;const a=t.getUint16();t.skip(60);const r=t.getUint16();if(a<4&&768&r)return!1;if(t.getUint16()>t.getUint16())return!1;t.skip(6);if(0===t.getUint16())return!1;e.data[8]=e.data[9]=0;return!0}(s["OS/2"],t)||(s["OS/2"]={tag:"OS/2",data:createOS2Table(a,e.charCodeToGlyphId,y)})}if(!l)try{c=new Stream(s["CFF "].data);o=new CFFParser(c,a,Ir).parse();o.duplicateFirstGlyph();const e=new CFFCompiler(o);s["CFF "].data=e.compile()}catch{warn("Failed to compile font "+a.loadedName)}if(s.name){const[t,r]=readNameTable(s.name);s.name.data=createNameTable(e,t);this.psName=t[0][6]||null;a.composite||function adjustTrueTypeToUnicode(e,t,a){if(e.isInternalFont)return;if(e.hasIncludedToUnicodeMap)return;if(e.hasEncoding)return;if(e.toUnicode instanceof IdentityToUnicodeMap)return;if(!t)return;if(0===a.length)return;if(e.defaultEncoding===ur)return;for(const e of a)if(!isWinNameRecord(e))return;const r=ur,i=[],n=kr();for(const e in r){const t=r[e];if(""===t)continue;const a=n[t];void 0!==a&&(i[e]=String.fromCharCode(a))}i.length>0&&e.toUnicode.amend(i)}(a,this.isSymbolicFont,r)}else s.name={tag:"name",data:createNameTable(this.name)};const k=new OpenTypeFileBuilder(n.version);for(const e in s)k.addTable(e,s[e].data);return k.toArray()}convert(e,t,a){a.fixedPitch=!1;a.builtInEncoding&&function adjustType1ToUnicode(e,t){if(e.isInternalFont)return;if(e.hasIncludedToUnicodeMap)return;if(t===e.defaultEncoding)return;if(e.toUnicode instanceof IdentityToUnicodeMap)return;const a=[],r=kr();for(const i in t){if(e.hasEncoding&&(e.baseEncodingName||void 0!==e.differences[i]))continue;const n=getUnicodeForGlyph(t[i],r);-1!==n&&(a[i]=String.fromCharCode(n))}a.length>0&&e.toUnicode.amend(a)}(a,a.builtInEncoding);let r=1;t instanceof CFFFont&&(r=t.numGlyphs-1);const n=t.getGlyphMapping(a);let s=null,o=n,c=null;if(!a.cssFontInfo){s=adjustMapping(n,t.hasGlyphId.bind(t),r,this.toUnicode);this.toFontChar=s.toFontChar;o=s.charCodeToGlyphId;c=s.toUnicodeExtraMap}const l=t.numGlyphs;function getCharCodes(e,t){let a=null;for(const r in e)t===e[r]&&(a||=[]).push(0|r);return a}function createCharCode(e,t){for(const a in e)if(t===e[a])return 0|a;s.charCodeToGlyphId[s.nextAvailableFontCharCode]=t;return s.nextAvailableFontCharCode++}const h=t.seacs;if(s&&h?.length){const e=a.fontMatrix||i,r=t.getCharset(),o=Object.create(null);for(let t in h){t|=0;const a=h[t],i=hr[a[2]],c=hr[a[3]],l=r.indexOf(i),u=r.indexOf(c);if(l<0||u<0)continue;const d={x:a[0]*e[0]+a[1]*e[2]+e[4],y:a[0]*e[1]+a[1]*e[3]+e[5]},f=getCharCodes(n,t);if(f)for(const e of f){const t=s.charCodeToGlyphId,a=createCharCode(t,l),r=createCharCode(t,u);o[e]={baseFontCharCode:a,accentFontCharCode:r,accentOffset:d}}}a.seacMap=o}const u=1/(a.fontMatrix||i)[0],d=new OpenTypeFileBuilder("OTTO");d.addTable("CFF ",t.data);d.addTable("OS/2",createOS2Table(a,o));d.addTable("cmap",createCmapTable(o,c,l));d.addTable("head","\0\0\0\0\0\0\0\0\0\0_<õ\0\0"+safeString16(u)+"\0\0\0\0ž\v~'\0\0\0\0ž\v~'\0\0"+safeString16(a.descent)+"ÿ"+safeString16(a.ascent)+string16(a.italicAngle?2:0)+"\0\0\0\0\0\0\0");d.addTable("hhea","\0\0\0"+safeString16(a.ascent)+safeString16(a.descent)+"\0\0ÿÿ\0\0\0\0\0\0"+safeString16(a.capHeight)+safeString16(Math.tan(a.italicAngle)*a.xHeight)+"\0\0\0\0\0\0\0\0\0\0\0\0"+string16(l));d.addTable("hmtx",function fontFieldsHmtx(){const e=t.charstrings,a=t.cff?t.cff.widths:null;let r="\0\0\0\0";for(let t=1,i=l;t=65520&&e<=65535?0:e>=62976&&e<=63743?Ar()[e]||e:173===e?45:e}(a)}this.isType3Font&&(i=a);let h=null;if(this.seacMap?.[e]){l=!0;const t=this.seacMap[e];a=t.baseFontCharCode;h={fontChar:String.fromCodePoint(t.accentFontCharCode),offset:t.accentOffset}}let u="";"number"==typeof a&&(a<=1114111?u=String.fromCodePoint(a):warn(`charToGlyph - invalid fontCharCode: ${a}`));n=new fonts_Glyph(e,u,c,h,r,o,i,t,l);return this._glyphCache[e]=n}charsToGlyphs(e){let t=this._charsCache[e];if(t)return t;t=[];if(this.cMap){const a=Object.create(null),r=e.length;let i=0;for(;it.length%2==1,r=this.toUnicode instanceof IdentityToUnicodeMap?e=>this.toUnicode.charCodeOf(e):e=>this.toUnicode.charCodeOf(String.fromCodePoint(e));for(let i=0,n=e.length;i55295&&(n<57344||n>65533)&&i++;if(this.toUnicode){const e=r(n);if(-1!==e){if(hasCurrentBufErrors()){t.push(a.join(""));a.length=0}for(let t=(this.cMap?this.cMap.getCharCodeLength(e):1)-1;t>=0;t--)a.push(String.fromCharCode(e>>8*t&255));continue}}if(!hasCurrentBufErrors()){t.push(a.join(""));a.length=0}a.push(String.fromCodePoint(n))}t.push(a.join(""));return t}}class ErrorFont{constructor(e){this.error=e;this.loadedName="g_font_error";this.missingFile=!0}charsToGlyphs(){return[]}encodeString(e){return[e]}exportData(e=!1){return{error:this.error}}}const si=2,oi=3,ci=4,li=5,hi=6,ui=7;class Pattern{constructor(){unreachable("Cannot initialize Pattern.")}static parseShading(e,t,a,r,i){const n=e instanceof BaseStream?e.dict:e,s=n.get("ShadingType");try{switch(s){case si:case oi:return new RadialAxialShading(n,t,a,r,i);case ci:case li:case hi:case ui:return new MeshShading(e,t,a,r,i);default:throw new FormatError("Unsupported ShadingType: "+s)}}catch(e){if(e instanceof MissingDataException)throw e;warn(e);return new DummyShading}}}class BaseShading{static SMALL_NUMBER=1e-6;constructor(){this.constructor===BaseShading&&unreachable("Cannot initialize BaseShading.")}getIR(){unreachable("Abstract method `getIR` called.")}}class RadialAxialShading extends BaseShading{constructor(e,t,a,r,i){super();this.coordsArr=e.getArray("Coords");this.shadingType=e.get("ShadingType");const n=ColorSpace.parse({cs:e.getRaw("CS")||e.getRaw("ColorSpace"),xref:t,resources:a,pdfFunctionFactory:r,localColorSpaceCache:i}),s=e.getArray("BBox");this.bbox=Array.isArray(s)&&4===s.length?Util.normalizeRect(s):null;let o=0,c=1;if(e.has("Domain")){const t=e.getArray("Domain");o=t[0];c=t[1]}let l=!1,h=!1;if(e.has("Extend")){const t=e.getArray("Extend");l=t[0];h=t[1]}if(!(this.shadingType!==oi||l&&h)){const[e,t,a,r,i,n]=this.coordsArr,s=Math.hypot(e-r,t-i);a<=n+s&&n<=a+s&&warn("Unsupported radial gradient.")}this.extendStart=l;this.extendEnd=h;const u=e.getRaw("Function"),d=r.createFromArray(u),f=(c-o)/840,g=this.colorStops=[];if(o>=c||f<=0){info("Bad shading domain.");return}const p=new Float32Array(n.numComps),m=new Float32Array(1);let b,y=0;m[0]=o;d(m,0,p,0);let w=n.getRgb(p,0);const x=Util.makeHexColor(w[0],w[1],w[2]);g.push([0,x]);let k=1;m[0]=o+f;d(m,0,p,0);let S=n.getRgb(p,0),C=S[0]-w[0]+1,v=S[1]-w[1]+1,F=S[2]-w[2]+1,O=S[0]-w[0]-1,T=S[1]-w[1]-1,M=S[2]-w[2]-1;for(let e=2;e<840;e++){m[0]=o+e*f;d(m,0,p,0);b=n.getRgb(p,0);const t=e-y;C=Math.min(C,(b[0]-w[0]+1)/t);v=Math.min(v,(b[1]-w[1]+1)/t);F=Math.min(F,(b[2]-w[2]+1)/t);O=Math.max(O,(b[0]-w[0]-1)/t);T=Math.max(T,(b[1]-w[1]-1)/t);M=Math.max(M,(b[2]-w[2]-1)/t);if(!(O<=C&&T<=v&&M<=F)){const e=Util.makeHexColor(S[0],S[1],S[2]);g.push([k/840,e]);C=b[0]-S[0]+1;v=b[1]-S[1]+1;F=b[2]-S[2]+1;O=b[0]-S[0]-1;T=b[1]-S[1]-1;M=b[2]-S[2]-1;y=k;w=S}k=e;S=b}const D=Util.makeHexColor(S[0],S[1],S[2]);g.push([1,D]);let R="transparent";if(e.has("Background")){b=n.getRgb(e.get("Background"),0);R=Util.makeHexColor(b[0],b[1],b[2])}if(!l){g.unshift([0,R]);g[1][0]+=BaseShading.SMALL_NUMBER}if(!h){g.at(-1)[0]-=BaseShading.SMALL_NUMBER;g.push([1,R])}this.colorStops=g}getIR(){const e=this.coordsArr,t=this.shadingType;let a,r,i,n,s;if(t===si){r=[e[0],e[1]];i=[e[2],e[3]];n=null;s=null;a="axial"}else if(t===oi){r=[e[0],e[1]];i=[e[3],e[4]];n=e[2];s=e[5];a="radial"}else unreachable(`getPattern type unknown: ${t}`);return["RadialAxial",a,this.bbox,this.colorStops,r,i,n,s]}}class MeshStreamReader{constructor(e,t){this.stream=e;this.context=t;this.buffer=0;this.bufferLength=0;const a=t.numComps;this.tmpCompsBuf=new Float32Array(a);const r=t.colorSpace.numComps;this.tmpCsCompsBuf=t.colorFn?new Float32Array(r):this.tmpCompsBuf}get hasData(){if(this.stream.end)return this.stream.pos0)return!0;const e=this.stream.getByte();if(e<0)return!1;this.buffer=e;this.bufferLength=8;return!0}readBits(e){let t=this.buffer,a=this.bufferLength;if(32===e){if(0===a)return(this.stream.getByte()<<24|this.stream.getByte()<<16|this.stream.getByte()<<8|this.stream.getByte())>>>0;t=t<<24|this.stream.getByte()<<16|this.stream.getByte()<<8|this.stream.getByte();const e=this.stream.getByte();this.buffer=e&(1<>a)>>>0}if(8===e&&0===a)return this.stream.getByte();for(;a>a}align(){this.buffer=0;this.bufferLength=0}readFlag(){return this.readBits(this.context.bitsPerFlag)}readCoordinate(){const e=this.context.bitsPerCoordinate,t=this.readBits(e),a=this.readBits(e),r=this.context.decode,i=e<32?1/((1<n?n:e;t=t>s?s:t;a=ae*i[t])):a;let s,o=-2;const c=[];for(const[e,t]of r.map(((e,t)=>[e,t])).sort((([e],[t])=>e-t)))if(-1!==e)if(e===o+1){s.push(n[t]);o+=1}else{o=e;s=[n[t]];c.push(e,s)}return c}(e),a=new Dict(null);a.set("BaseFont",Name.get(e));a.set("Type",Name.get("Font"));a.set("Subtype",Name.get("CIDFontType2"));a.set("Encoding",Name.get("Identity-H"));a.set("CIDToGIDMap",Name.get("Identity"));a.set("W",t);a.set("FirstChar",t[0]);a.set("LastChar",t.at(-2)+t.at(-1).length-1);const r=new Dict(null);a.set("FontDescriptor",r);const i=new Dict(null);i.set("Ordering","Identity");i.set("Registry","Adobe");i.set("Supplement",0);a.set("CIDSystemInfo",i);return a}class PostScriptParser{constructor(e){this.lexer=e;this.operators=[];this.token=null;this.prev=null}nextToken(){this.prev=this.token;this.token=this.lexer.getToken()}accept(e){if(this.token.type===e){this.nextToken();return!0}return!1}expect(e){if(this.accept(e))return!0;throw new FormatError(`Unexpected symbol: found ${this.token.type} expected ${e}.`)}parse(){this.nextToken();this.expect(an.LBRACE);this.parseBlock();this.expect(an.RBRACE);return this.operators}parseBlock(){for(;;)if(this.accept(an.NUMBER))this.operators.push(this.prev.value);else if(this.accept(an.OPERATOR))this.operators.push(this.prev.value);else{if(!this.accept(an.LBRACE))return;this.parseCondition()}}parseCondition(){const e=this.operators.length;this.operators.push(null,null);this.parseBlock();this.expect(an.RBRACE);if(this.accept(an.IF)){this.operators[e]=this.operators.length;this.operators[e+1]="jz"}else{if(!this.accept(an.LBRACE))throw new FormatError("PS Function: error parsing conditional.");{const t=this.operators.length;this.operators.push(null,null);const a=this.operators.length;this.parseBlock();this.expect(an.RBRACE);this.expect(an.IFELSE);this.operators[t]=this.operators.length;this.operators[t+1]="j";this.operators[e]=a;this.operators[e+1]="jz"}}}}const an={LBRACE:0,RBRACE:1,NUMBER:2,OPERATOR:3,IF:4,IFELSE:5};class PostScriptToken{static get opCache(){return shadow(this,"opCache",Object.create(null))}constructor(e,t){this.type=e;this.value=t}static getOperator(e){return PostScriptToken.opCache[e]||=new PostScriptToken(an.OPERATOR,e)}static get LBRACE(){return shadow(this,"LBRACE",new PostScriptToken(an.LBRACE,"{"))}static get RBRACE(){return shadow(this,"RBRACE",new PostScriptToken(an.RBRACE,"}"))}static get IF(){return shadow(this,"IF",new PostScriptToken(an.IF,"IF"))}static get IFELSE(){return shadow(this,"IFELSE",new PostScriptToken(an.IFELSE,"IFELSE"))}}class PostScriptLexer{constructor(e){this.stream=e;this.nextChar();this.strBuf=[]}nextChar(){return this.currentChar=this.stream.getByte()}getToken(){let e=!1,t=this.currentChar;for(;;){if(t<0)return fa;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(!isWhiteSpace(t))break;t=this.nextChar()}switch(0|t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 43:case 45:case 46:return new PostScriptToken(an.NUMBER,this.getNumber());case 123:this.nextChar();return PostScriptToken.LBRACE;case 125:this.nextChar();return PostScriptToken.RBRACE}const a=this.strBuf;a.length=0;a[0]=String.fromCharCode(t);for(;(t=this.nextChar())>=0&&(t>=65&&t<=90||t>=97&&t<=122);)a.push(String.fromCharCode(t));const r=a.join("");switch(r.toLowerCase()){case"if":return PostScriptToken.IF;case"ifelse":return PostScriptToken.IFELSE;default:return PostScriptToken.getOperator(r)}}getNumber(){let e=this.currentChar;const t=this.strBuf;t.length=0;t[0]=String.fromCharCode(e);for(;(e=this.nextChar())>=0&&(e>=48&&e<=57||45===e||46===e);)t.push(String.fromCharCode(e));const a=parseFloat(t.join(""));if(isNaN(a))throw new FormatError(`Invalid floating point number: ${a}`);return a}}class BaseLocalCache{constructor(e){this.constructor===BaseLocalCache&&unreachable("Cannot initialize BaseLocalCache.");this._onlyRefs=!0===e?.onlyRefs;if(!this._onlyRefs){this._nameRefMap=new Map;this._imageMap=new Map}this._imageCache=new RefSetCache}getByName(e){this._onlyRefs&&unreachable("Should not call `getByName` method.");const t=this._nameRefMap.get(e);return t?this.getByRef(t):this._imageMap.get(e)||null}getByRef(e){return this._imageCache.get(e)||null}set(e,t,a){unreachable("Abstract method `set` called.")}}class LocalImageCache extends BaseLocalCache{set(e,t=null,a){if("string"!=typeof e)throw new Error('LocalImageCache.set - expected "name" argument.');if(t){if(this._imageCache.has(t))return;this._nameRefMap.set(e,t);this._imageCache.put(t,a)}else this._imageMap.has(e)||this._imageMap.set(e,a)}}class LocalColorSpaceCache extends BaseLocalCache{set(e=null,t=null,a){if("string"!=typeof e&&!t)throw new Error('LocalColorSpaceCache.set - expected "name" and/or "ref" argument.');if(t){if(this._imageCache.has(t))return;null!==e&&this._nameRefMap.set(e,t);this._imageCache.put(t,a)}else this._imageMap.has(e)||this._imageMap.set(e,a)}}class LocalFunctionCache extends BaseLocalCache{constructor(e){super({onlyRefs:!0})}set(e=null,t,a){if(!t)throw new Error('LocalFunctionCache.set - expected "ref" argument.');this._imageCache.has(t)||this._imageCache.put(t,a)}}class LocalGStateCache extends BaseLocalCache{set(e,t=null,a){if("string"!=typeof e)throw new Error('LocalGStateCache.set - expected "name" argument.');if(t){if(this._imageCache.has(t))return;this._nameRefMap.set(e,t);this._imageCache.put(t,a)}else this._imageMap.has(e)||this._imageMap.set(e,a)}}class LocalTilingPatternCache extends BaseLocalCache{constructor(e){super({onlyRefs:!0})}set(e=null,t,a){if(!t)throw new Error('LocalTilingPatternCache.set - expected "ref" argument.');this._imageCache.has(t)||this._imageCache.put(t,a)}}class RegionalImageCache extends BaseLocalCache{constructor(e){super({onlyRefs:!0})}set(e=null,t,a){if(!t)throw new Error('RegionalImageCache.set - expected "ref" argument.');this._imageCache.has(t)||this._imageCache.put(t,a)}}class GlobalImageCache{static NUM_PAGES_THRESHOLD=2;static MIN_IMAGES_TO_CACHE=10;static MAX_BYTE_SIZE=5e7;constructor(){this._refCache=new RefSetCache;this._imageCache=new RefSetCache}get _byteSize(){let e=0;for(const t of this._imageCache)e+=t.byteSize;return e}get _cacheLimitReached(){return!(this._imageCache.size>c)*h;l&=(1<a?e=a:e0&&(d=n[u-1]);let f=r[1];u>1,l=i.length>>1,h=new PostScriptEvaluator(o),u=Object.create(null);let d=8192;const f=new Float32Array(l);return function constructPostScriptFn(e,t,a,r){let i,s,o="";const g=f;for(i=0;ie&&(s=e)}m[i]=s}if(d>0){d--;u[o]=m}a.set(m,r)}}}function isPDFFunction(e){let t;if(e instanceof Dict)t=e;else{if(!(e instanceof BaseStream))return!1;t=e.dict}return t.has("FunctionType")}class PostScriptStack{static MAX_STACK_SIZE=100;constructor(e){this.stack=e?Array.from(e):[]}push(e){if(this.stack.length>=PostScriptStack.MAX_STACK_SIZE)throw new Error("PostScript function stack overflow.");this.stack.push(e)}pop(){if(this.stack.length<=0)throw new Error("PostScript function stack underflow.");return this.stack.pop()}copy(e){if(this.stack.length+e>=PostScriptStack.MAX_STACK_SIZE)throw new Error("PostScript function stack overflow.");const t=this.stack;for(let a=t.length-e,r=e-1;r>=0;r--,a++)t.push(t[a])}index(e){this.push(this.stack[this.stack.length-e-1])}roll(e,t){const a=this.stack,r=a.length-e,i=a.length-1,n=r+(t-Math.floor(t/e)*e);for(let e=r,t=i;e0?t.push(s<>o);break;case"ceiling":s=t.pop();t.push(Math.ceil(s));break;case"copy":s=t.pop();t.copy(s);break;case"cos":s=t.pop();t.push(Math.cos(s%360/180*Math.PI));break;case"cvi":s=0|t.pop();t.push(s);break;case"cvr":break;case"div":o=t.pop();s=t.pop();t.push(s/o);break;case"dup":t.copy(1);break;case"eq":o=t.pop();s=t.pop();t.push(s===o);break;case"exch":t.roll(2,1);break;case"exp":o=t.pop();s=t.pop();t.push(s**o);break;case"false":t.push(!1);break;case"floor":s=t.pop();t.push(Math.floor(s));break;case"ge":o=t.pop();s=t.pop();t.push(s>=o);break;case"gt":o=t.pop();s=t.pop();t.push(s>o);break;case"idiv":o=t.pop();s=t.pop();t.push(s/o|0);break;case"index":s=t.pop();t.index(s);break;case"le":o=t.pop();s=t.pop();t.push(s<=o);break;case"ln":s=t.pop();t.push(Math.log(s));break;case"log":s=t.pop();t.push(Math.log10(s));break;case"lt":o=t.pop();s=t.pop();t.push(s=t?new AstLiteral(t):e.max<=t?e:new AstMin(e,t)}class PostScriptCompiler{compile(e,t,a){const r=[],i=[],n=t.length>>1,s=a.length>>1;let o,c,l,h,u,d,f,g,p=0;for(let e=0;et.min){o.unshift("Math.max(",n,", ");o.push(")")}if(s4){r=!0;t=0}else{r=!1;t=1}const c=[];for(n=0;n=0&&"ET"===on[e];--e)on[e]="EN";for(let e=n+1;e0&&(t=on[n-1]);let a=u;e+1g&&isOdd(g)&&(m=g)}for(g=p;g>=m;--g){let e=-1;for(n=0,s=c.length;n=0){reverseValues(sn,e,n);e=-1}}else e<0&&(e=n);e>=0&&reverseValues(sn,e,c.length)}for(n=0,s=sn.length;n"!==e||(sn[n]="")}return createBidiText(sn.join(""),r)}const cn={style:"normal",weight:"normal"},ln={style:"normal",weight:"bold"},hn={style:"italic",weight:"normal"},un={style:"italic",weight:"bold"},dn=new Map([["Times-Roman",{local:["Times New Roman","Times-Roman","Times","Liberation Serif","Nimbus Roman","Nimbus Roman L","Tinos","Thorndale","TeX Gyre Termes","FreeSerif","DejaVu Serif","Bitstream Vera Serif","Ubuntu"],style:cn,ultimate:"serif"}],["Times-Bold",{alias:"Times-Roman",style:ln,ultimate:"serif"}],["Times-Italic",{alias:"Times-Roman",style:hn,ultimate:"serif"}],["Times-BoldItalic",{alias:"Times-Roman",style:un,ultimate:"serif"}],["Helvetica",{local:["Helvetica","Helvetica Neue","Arial","Arial Nova","Liberation Sans","Arimo","Nimbus Sans","Nimbus Sans L","A030","TeX Gyre Heros","FreeSans","DejaVu Sans","Albany","Bitstream Vera Sans","Arial Unicode MS","Microsoft Sans Serif","Apple Symbols","Cantarell"],path:"LiberationSans-Regular.ttf",style:cn,ultimate:"sans-serif"}],["Helvetica-Bold",{alias:"Helvetica",path:"LiberationSans-Bold.ttf",style:ln,ultimate:"sans-serif"}],["Helvetica-Oblique",{alias:"Helvetica",path:"LiberationSans-Italic.ttf",style:hn,ultimate:"sans-serif"}],["Helvetica-BoldOblique",{alias:"Helvetica",path:"LiberationSans-BoldItalic.ttf",style:un,ultimate:"sans-serif"}],["Courier",{local:["Courier","Courier New","Liberation Mono","Nimbus Mono","Nimbus Mono L","Cousine","Cumberland","TeX Gyre Cursor","FreeMono"],style:cn,ultimate:"monospace"}],["Courier-Bold",{alias:"Courier",style:ln,ultimate:"monospace"}],["Courier-Oblique",{alias:"Courier",style:hn,ultimate:"monospace"}],["Courier-BoldOblique",{alias:"Courier",style:un,ultimate:"monospace"}],["ArialBlack",{local:["Arial Black"],style:{style:"normal",weight:"900"},fallback:"Helvetica-Bold"}],["ArialBlack-Bold",{alias:"ArialBlack"}],["ArialBlack-Italic",{alias:"ArialBlack",style:{style:"italic",weight:"900"},fallback:"Helvetica-BoldOblique"}],["ArialBlack-BoldItalic",{alias:"ArialBlack-Italic"}],["ArialNarrow",{local:["Arial Narrow","Liberation Sans Narrow","Helvetica Condensed","Nimbus Sans Narrow","TeX Gyre Heros Cn"],style:cn,fallback:"Helvetica"}],["ArialNarrow-Bold",{alias:"ArialNarrow",style:ln,fallback:"Helvetica-Bold"}],["ArialNarrow-Italic",{alias:"ArialNarrow",style:hn,fallback:"Helvetica-Oblique"}],["ArialNarrow-BoldItalic",{alias:"ArialNarrow",style:un,fallback:"Helvetica-BoldOblique"}],["Calibri",{local:["Calibri","Carlito"],style:cn,fallback:"Helvetica"}],["Calibri-Bold",{alias:"Calibri",style:ln,fallback:"Helvetica-Bold"}],["Calibri-Italic",{alias:"Calibri",style:hn,fallback:"Helvetica-Oblique"}],["Calibri-BoldItalic",{alias:"Calibri",style:un,fallback:"Helvetica-BoldOblique"}],["Wingdings",{local:["Wingdings","URW Dingbats"],style:cn}],["Wingdings-Regular",{alias:"Wingdings"}],["Wingdings-Bold",{alias:"Wingdings"}]]),fn=new Map([["Arial-Black","ArialBlack"]]);function generateFont({alias:e,local:t,path:a,fallback:r,style:i,ultimate:n},s,o,c=!0,l=!0,h=""){const u={style:null,ultimate:null};if(t){const e=h?` ${h}`:"";for(const a of t)s.push(`local(${a}${e})`)}if(e){const t=dn.get(e),n=h||function getStyleToAppend(e){switch(e){case ln:return"Bold";case hn:return"Italic";case un:return"Bold Italic";default:if("bold"===e?.weight)return"Bold";if("italic"===e?.style)return"Italic"}return""}(i);Object.assign(u,generateFont(t,s,o,c&&!r,l&&!a,n))}i&&(u.style=i);n&&(u.ultimate=n);if(c&&r){const e=dn.get(r),{ultimate:t}=generateFont(e,s,o,c,l&&!a,h);u.ultimate||=t}l&&a&&o&&s.push(`url(${o}${a})`);return u}function getFontSubstitution(e,t,a,r,i){if(r.startsWith("InvalidPDFjsFont_"))return null;const n=r=normalizeFontName(r);let s=e.get(n);if(s)return s;let o=dn.get(r);if(!o)for(const[e,t]of fn)if(r.startsWith(e)){r=`${t}${r.substring(e.length)}`;o=dn.get(r);break}let c=!1;if(!o){o=dn.get(i);c=!0}const l=`${t.getDocId()}_s${t.createFontId()}`;if(!o){if(!validateFontName(r)){e.set(n,null);return null}const t=/bold/gi.test(r),a=/oblique|italic/gi.test(r);s={css:l,guessFallback:!0,loadedName:l,baseFontName:r,src:`local(${r})`,style:t&&a&&un||t&&ln||a&&hn||cn};e.set(n,s);return s}const h=[];c&&validateFontName(r)&&h.push(`local(${r})`);const{style:u,ultimate:d}=generateFont(o,h,a),f=null===d;s={css:`${l}${f?"":`,${d}`}`,guessFallback:f,loadedName:l,baseFontName:r,src:h.join(","),style:u};e.set(n,s);return s}class ImageResizer{constructor(e,t){this._imgData=e;this._isMask=t}static needsToBeResized(e,t){if(e<=this._goodSquareLength&&t<=this._goodSquareLength)return!1;const{MAX_DIM:a}=this;if(e>a||t>a)return!0;const r=e*t;if(this._hasMaxArea)return r>this.MAX_AREA;if(r(this.MAX_AREA=this._goodSquareLength**2)}static get MAX_DIM(){return shadow(this,"MAX_DIM",this._guessMax(2048,65537,0,1))}static get MAX_AREA(){this._hasMaxArea=!0;return shadow(this,"MAX_AREA",this._guessMax(ImageResizer._goodSquareLength,this.MAX_DIM,128,0)**2)}static set MAX_AREA(e){if(e>=0){this._hasMaxArea=!0;shadow(this,"MAX_AREA",e)}}static setMaxArea(e){this._hasMaxArea||(this.MAX_AREA=e>>2)}static _areGoodDims(e,t){try{const a=new OffscreenCanvas(e,t),r=a.getContext("2d");r.fillRect(0,0,1,1);const i=r.getImageData(0,0,1,1).data[3];a.width=a.height=1;return 0!==i}catch{return!1}}static _guessMax(e,t,a,r){for(;e+a+1>3,s=a+3&-4;if(a!==s){const e=new Uint8Array(s*t);let r=0;for(let n=0,o=t*a;n>>8;t[a++]=255&i}}}else{if(!function isArrayBuffer(e){return"object"==typeof e&&void 0!==e?.byteLength}(e))throw new Error("Wrong data format in MurmurHash3_64_update. Input must be a string or array.");t=e.slice();a=t.byteLength}const r=a>>2,i=a-4*r,n=new Uint32Array(t.buffer,0,r);let s=0,o=0,c=this.h1,l=this.h2;const h=3432918353,u=461845907,d=11601,f=13715;for(let e=0;e>>17;s=s*u&pn|s*f&mn;c^=s;c=c<<13|c>>>19;c=5*c+3864292196}else{o=n[e];o=o*h&pn|o*d&mn;o=o<<15|o>>>17;o=o*u&pn|o*f&mn;l^=o;l=l<<13|l>>>19;l=5*l+3864292196}s=0;switch(i){case 3:s^=t[4*r+2]<<16;case 2:s^=t[4*r+1]<<8;case 1:s^=t[4*r];s=s*h&pn|s*d&mn;s=s<<15|s>>>17;s=s*u&pn|s*f&mn;1&r?c^=s:l^=s}this.h1=c;this.h2=l}hexdigest(){let e=this.h1,t=this.h2;e^=t>>>1;e=3981806797*e&pn|36045*e&mn;t=4283543511*t&pn|(2950163797*(t<<16|e>>>16)&pn)>>>16;e^=t>>>1;e=444984403*e&pn|60499*e&mn;t=3301882366*t&pn|(3120437893*(t<<16|e>>>16)&pn)>>>16;e^=t>>>1;return(e>>>0).toString(16).padStart(8,"0")+(t>>>0).toString(16).padStart(8,"0")}}function addState(e,t,a,r,i){let n=e;for(let e=0,a=t.length-1;e1e3){l=Math.max(l,d);f+=u+2;d=0;u=0}h.push({transform:t,x:d,y:f,w:a.width,h:a.height});d+=a.width+2;u=Math.max(u,a.height)}const g=Math.max(l,d)+1,p=f+u+1,m=new Uint8Array(g*p*4),b=g<<2;for(let e=0;e=0;){t[n-4]=t[n];t[n-3]=t[n+1];t[n-2]=t[n+2];t[n-1]=t[n+3];t[n+a]=t[n+a-4];t[n+a+1]=t[n+a-3];t[n+a+2]=t[n+a-2];t[n+a+3]=t[n+a-1];n-=b}}const y={width:g,height:p};if(e.isOffscreenCanvasSupported){const e=new OffscreenCanvas(g,p);e.getContext("2d").putImageData(new ImageData(new Uint8ClampedArray(m.buffer),g,p),0,0);y.bitmap=e.transferToImageBitmap();y.data=null}else{y.kind=F;y.data=m}a.splice(n,4*c,Qt);r.splice(n,4*c,[y,h]);return n+1}));addState(bn,[Re,Ee,Kt,Ne],null,(function iterateImageMaskGroup(e,t){const a=e.fnArray,r=(t-(e.iCurr-3))%4;switch(r){case 0:return a[t]===Re;case 1:return a[t]===Ee;case 2:return a[t]===Kt;case 3:return a[t]===Ne}throw new Error(`iterateImageMaskGroup - invalid pos: ${r}`)}),(function foundImageMaskGroup(e,t){const a=e.fnArray,r=e.argsArray,i=e.iCurr,n=i-3,s=i-2,o=i-1;let c=Math.floor((t-n)/4);if(c<10)return t-(t-n)%4;let l,h,u=!1;const d=r[o][0],f=r[s][0],g=r[s][1],p=r[s][2],m=r[s][3];if(g===p){u=!0;l=s+4;let e=o+4;for(let t=1;t=4&&a[n-4]===a[s]&&a[n-3]===a[o]&&a[n-2]===a[c]&&a[n-1]===a[l]&&r[n-4][0]===h&&r[n-4][1]===u){d++;f-=5}let g=f+4;for(let e=1;e=a)break}r=(r||bn)[e[t]];if(r&&!Array.isArray(r)){n.iCurr=t;t++;if(!r.checkFn||(0,r.checkFn)(n)){i=r;r=null}else r=null}else t++}this.state=r;this.match=i;this.lastProcessed=t}flush(){for(;this.match;){const e=this.queue.fnArray.length;this.lastProcessed=(0,this.match.processFn)(this.context,e);this.match=null;this.state=null;this._optimize()}}reset(){this.state=null;this.match=null;this.lastProcessed=0}}class OperatorList{static CHUNK_SIZE=1e3;static CHUNK_SIZE_ABOUT=this.CHUNK_SIZE-5;constructor(e=0,t){this._streamSink=t;this.fnArray=[];this.argsArray=[];this.optimizer=!t||e&g?new NullOptimizer(this):new QueueOptimizer(this);this.dependencies=new Set;this._totalLength=0;this.weight=0;this._resolved=t?null:Promise.resolve()}set isOffscreenCanvasSupported(e){this.optimizer.isOffscreenCanvasSupported=e}get length(){return this.argsArray.length}get ready(){return this._resolved||this._streamSink.ready}get totalLength(){return this._totalLength+this.length}addOp(e,t){this.optimizer.push(e,t);this.weight++;this._streamSink&&(this.weight>=OperatorList.CHUNK_SIZE||this.weight>=OperatorList.CHUNK_SIZE_ABOUT&&(e===Ne||e===tt))&&this.flush()}addImageOps(e,t,a){void 0!==a&&this.addOp(_t,["OC",a]);this.addOp(e,t);void 0!==a&&this.addOp(Ut,[])}addDependency(e){if(!this.dependencies.has(e)){this.dependencies.add(e);this.addOp(Ce,[e])}}addDependencies(e){for(const t of e)this.addDependency(t)}addOpList(e){if(e instanceof OperatorList){for(const t of e.dependencies)this.dependencies.add(t);for(let t=0,a=e.length;tr&&(e=r);return e}function resizeImageMask(e,t,a,r,i,n){const s=i*n;let o;o=t<=8?new Uint8Array(s):t<=16?new Uint16Array(s):new Uint32Array(s);const c=a/i,l=r/n;let h,u,d,f,g=0;const p=new Uint16Array(i),m=a;for(h=0;h0&&Number.isInteger(a.height)&&a.height>0&&(a.width!==d||a.height!==f)){warn("PDFImage - using the Width/Height of the image data, rather than the image dictionary.");d=a.width;f=a.height}if(d<1||f<1)throw new FormatError(`Invalid image width: ${d} or height: ${f}`);this.width=d;this.height=f;this.interpolate=l.get("I","Interpolate");this.imageMask=l.get("IM","ImageMask")||!1;this.matte=l.get("Matte")||!1;let g=a.bitsPerComponent;if(!g){g=l.get("BPC","BitsPerComponent");if(!g){if(!this.imageMask)throw new FormatError(`Bits per component missing in image: ${this.imageMask}`);g=1}}this.bpc=g;if(!this.imageMask){let i=l.getRaw("CS")||l.getRaw("ColorSpace");if(!i){info("JPX images (which do not require color spaces)");switch(a.numComps){case 1:i=Name.get("DeviceGray");break;case 3:i=Name.get("DeviceRGB");break;case 4:i=Name.get("DeviceCMYK");break;default:throw new Error(`JPX images with ${a.numComps} color components not supported.`)}}this.colorSpace=ColorSpace.parse({cs:i,xref:e,resources:r?t:null,pdfFunctionFactory:o,localColorSpaceCache:c});this.numComps=this.colorSpace.numComps}this.decode=l.getArray("D","Decode");this.needsDecode=!1;if(this.decode&&(this.colorSpace&&!this.colorSpace.isDefaultDecode(this.decode,g)||s&&!ColorSpace.isDefaultDecode(this.decode,1))){this.needsDecode=!0;const e=(1<>3)*a,o=e.byteLength;let c,l;if(!r||i&&!(s===o))if(i){c=new Uint8Array(s);c.set(e);c.fill(255,o)}else c=new Uint8Array(e);else c=e;if(i)for(l=0;l>7&1;s[d+1]=u>>6&1;s[d+2]=u>>5&1;s[d+3]=u>>4&1;s[d+4]=u>>3&1;s[d+5]=u>>2&1;s[d+6]=u>>1&1;s[d+7]=1&u;d+=8}if(d>=1}}}}else{let a=0;u=0;for(d=0,h=n;d>r;i<0?i=0:i>l&&(i=l);s[d]=i;u&=(1<s[r+1]){t=255;break}}o[h]=t}}}if(o)for(h=0,d=3,u=t*r;h>3,h=t&&ImageResizer.needsToBeResized(a,r);if(!e){let e;"DeviceGray"===this.colorSpace.name&&1===c?e=C:"DeviceRGB"!==this.colorSpace.name||8!==c||this.needsDecode||(e=v);if(e&&!this.smask&&!this.mask&&a===s&&r===o){const n=this.getImageBytes(o*l,{});if(t)return h?ImageResizer.createImage({data:n,kind:e,width:a,height:r,interpolate:this.interpolate},this.needsDecode):this.createBitmap(e,s,o,n);i.kind=e;i.data=n;if(this.needsDecode){assert(e===C,"PDFImage.createImageData: The image must be grayscale.");const t=i.data;for(let e=0,a=t.length;e>3,s=this.getImageBytes(r*n,{internal:!0}),o=this.getComponents(s);let c,l;if(1===i){l=a*r;if(this.needsDecode)for(c=0;c0&&e.args[0].count++}class TimeSlotManager{static TIME_SLOT_DURATION_MS=20;static CHECK_TIME_EVERY=100;constructor(){this.reset()}check(){if(++this.checkedu){const e="Image exceeded maximum allowed size and was removed.";if(this.options.ignoreErrors){warn(e);return}throw new Error(e)}let d;o.has("OC")&&(d=await this.parseMarkedContentProps(o.get("OC"),e));let f,g;if(o.get("IM","ImageMask")||!1){const e=o.get("I","Interpolate"),a=l+7>>3,s=t.getBytes(a*h),u=o.getArray("D","Decode");if(this.parsingType3Font){f=PDFImage.createRawMask({imgArray:s,width:l,height:h,imageIsFromDecodeStream:t instanceof DecodeStream,inverseDecode:u?.[0]>0,interpolate:e});f.cached=!!i;g=[f];r.addImageOps(Kt,g,d);if(i){const e={fn:Kt,args:g,optionalContent:d};n.set(i,c,e);c&&this._regionalImageCache.set(null,c,e)}return}f=await PDFImage.createMask({imgArray:s,width:l,height:h,imageIsFromDecodeStream:t instanceof DecodeStream,inverseDecode:u?.[0]>0,interpolate:e,isOffscreenCanvasSupported:this.options.isOffscreenCanvasSupported});if(f.isSingleOpaquePixel){r.addImageOps(aa,[],d);if(i){const e={fn:aa,args:[],optionalContent:d};n.set(i,c,e);c&&this._regionalImageCache.set(null,c,e)}return}const p=`mask_${this.idFactory.createObjId()}`;r.addDependency(p);f.dataLen=f.bitmap?f.width*f.height*4:f.data.length;this._sendImgData(p,f);g=[{data:p,width:f.width,height:f.height,interpolate:f.interpolate,count:1}];r.addImageOps(Kt,g,d);if(i){const e={fn:Kt,args:g,optionalContent:d};n.set(i,c,e);c&&this._regionalImageCache.set(null,c,e)}return}if(a&&!o.has("SMask")&&!o.has("Mask")&&l+h<200){const i=new PDFImage({xref:this.xref,res:e,image:t,isInline:a,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:s});f=await i.createImageData(!0,!1);r.isOffscreenCanvasSupported=this.options.isOffscreenCanvasSupported;r.addImageOps(Zt,[f],d);return}let p=`img_${this.idFactory.createObjId()}`,m=!1;if(this.parsingType3Font)p=`${this.idFactory.getDocId()}_type3_${p}`;else if(i&&c){m=this.globalImageCache.shouldCache(c,this.pageIndex);if(m){assert(!a,"Cannot cache an inline image globally.");p=`${this.idFactory.getDocId()}_${p}`}}r.addDependency(p);g=[p,l,h];r.addImageOps(Yt,g,d);if(m&&l*h>25e4){const e=await this.handler.sendWithPromise("commonobj",[p,"CopyLocalImage",{imageRef:c}]);if(e){this.globalImageCache.setData(c,{objId:p,fn:Yt,args:g,optionalContent:d,byteSize:0});this.globalImageCache.addByteSize(c,e);return}}PDFImage.buildImage({xref:this.xref,res:e,image:t,isInline:a,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:s}).then((async e=>{f=await e.createImageData(!1,this.options.isOffscreenCanvasSupported);f.dataLen=f.bitmap?f.width*f.height*4:f.data.length;f.ref=c;m&&this.globalImageCache.addByteSize(c,f.dataLen);return this._sendImgData(p,f,m)})).catch((e=>{warn(`Unable to decode image "${p}": "${e}".`);return this._sendImgData(p,null,m)}));if(i){const e={fn:Yt,args:g,optionalContent:d};n.set(i,c,e);if(c){this._regionalImageCache.set(null,c,e);m&&this.globalImageCache.setData(c,{objId:p,fn:Yt,args:g,optionalContent:d,byteSize:0})}}}handleSMask(e,t,a,r,i,n){const s=e.get("G"),o={subtype:e.get("S").name,backdrop:e.get("BC")},c=e.get("TR");if(isPDFFunction(c)){const e=this._pdfFunctionFactory.create(c),t=new Uint8Array(256),a=new Float32Array(1);for(let r=0;r<256;r++){a[0]=r/255;e(a,0,a,0);t[r]=255*a[0]|0}o.transferMap=t}return this.buildFormXObject(t,s,o,a,r,i.state.clone(),n)}handleTransferFunction(e){let t;if(Array.isArray(e))t=e;else{if(!isPDFFunction(e))return null;t=[e]}const a=[];let r=0,i=0;for(const e of t){const t=this.xref.fetchIfRef(e);r++;if(isName(t,"Identity")){a.push(null);continue}if(!isPDFFunction(t))return null;const n=this._pdfFunctionFactory.create(t),s=new Uint8Array(256),o=new Float32Array(1);for(let e=0;e<256;e++){o[0]=e/255;n(o,0,o,0);s[e]=255*o[0]|0}a.push(s);i++}return 1!==r&&4!==r||0===i?null:a}handleTilingType(e,t,a,r,i,n,s,o){const c=new OperatorList,l=Dict.merge({xref:this.xref,dictArray:[i.get("Resources"),a]});return this.getOperatorList({stream:r,task:s,resources:l,operatorList:c}).then((function(){const a=c.getIR(),r=getTilingPatternIR(a,i,t);n.addDependencies(c.dependencies);n.addOp(e,r);i.objId&&o.set(null,i.objId,{operatorListIR:a,dict:i})})).catch((e=>{if(!(e instanceof AbortException)){if(!this.options.ignoreErrors)throw e;warn(`handleTilingType - ignoring pattern: "${e}".`)}}))}handleSetFont(e,t,a,r,i,n,s=null,o=null){const c=t?.[0]instanceof Name?t[0].name:null;return this.loadFont(c,a,e,s,o).then((t=>t.font.isType3Font?t.loadType3Data(this,e,i).then((function(){r.addDependencies(t.type3Dependencies);return t})).catch((e=>new TranslatedFont({loadedName:"g_font_error",font:new ErrorFont(`Type3 font load error: ${e}`),dict:t.font,evaluatorOptions:this.options}))):t)).then((e=>{n.font=e.font;e.send(this.handler);return e.loadedName}))}handleText(e,t){const a=t.font,r=a.charsToGlyphs(e);if(a.data){(!!(t.textRenderingMode&S)||"Pattern"===t.fillColorSpace.name||a.disableFontFace||this.options.disableFontFace)&&PartialEvaluator.buildFontPaths(a,r,this.handler,this.options)}return r}ensureStateFont(e){if(e.font)return;const t=new FormatError("Missing setFont (Tf) operator before text rendering operator.");if(!this.options.ignoreErrors)throw t;warn(`ensureStateFont: "${t}".`)}async setGState({resources:e,gState:t,operatorList:a,cacheKey:r,task:i,stateManager:n,localGStateCache:s,localColorSpaceCache:o}){const c=t.objId;let l=!0;const h=[];let u=Promise.resolve();for(const r of t.getKeys()){const s=t.get(r);switch(r){case"Type":break;case"LW":case"LC":case"LJ":case"ML":case"D":case"RI":case"FL":case"CA":case"ca":h.push([r,s]);break;case"Font":l=!1;u=u.then((()=>this.handleSetFont(e,null,s[0],a,i,n.state).then((function(e){a.addDependency(e);h.push([r,[e,s[1]]])}))));break;case"BM":h.push([r,normalizeBlendMode(s)]);break;case"SMask":if(isName(s,"None")){h.push([r,!1]);break}if(s instanceof Dict){l=!1;u=u.then((()=>this.handleSMask(s,e,a,i,n,o)));h.push([r,!0])}else warn("Unsupported SMask type");break;case"TR":const t=this.handleTransferFunction(s);h.push([r,t]);break;case"OP":case"op":case"OPM":case"BG":case"BG2":case"UCR":case"UCR2":case"TR2":case"HT":case"SM":case"SA":case"AIS":case"TK":info("graphic state operator "+r);break;default:info("Unknown graphic state operator "+r)}}return u.then((function(){h.length>0&&a.addOp(Be,[h]);l&&s.set(r,c,h)}))}loadFont(e,t,a,r=null,i=null){const errorFont=async()=>new TranslatedFont({loadedName:"g_font_error",font:new ErrorFont(`Font "${e}" is not available.`),dict:t,evaluatorOptions:this.options});let n;if(t)t instanceof Ref&&(n=t);else{const t=a.get("Font");t&&(n=t.getRaw(e))}if(n){if(this.parsingType3Font&&this.type3FontRefs.has(n))return errorFont();if(this.fontCache.has(n))return this.fontCache.get(n);t=this.xref.fetchIfRef(n)}if(!(t instanceof Dict)){if(!this.options.ignoreErrors&&!this.parsingType3Font){warn(`Font "${e}" is not available.`);return errorFont()}warn(`Font "${e}" is not available -- attempting to fallback to a default font.`);t=r||PartialEvaluator.fallbackFontDict}if(t.cacheKey&&this.fontCache.has(t.cacheKey))return this.fontCache.get(t.cacheKey);const s=new PromiseCapability;let o;try{o=this.preEvaluateFont(t);o.cssFontInfo=i}catch(e){warn(`loadFont - preEvaluateFont failed: "${e}".`);return errorFont()}const{descriptor:c,hash:l}=o,h=n instanceof Ref;let u;if(l&&c instanceof Dict){const e=c.fontAliases||=Object.create(null);if(e[l]){const t=e[l].aliasRef;if(h&&t&&this.fontCache.has(t)){this.fontCache.putAlias(n,t);return this.fontCache.get(n)}}else e[l]={fontID:this.idFactory.createFontId()};h&&(e[l].aliasRef=n);u=e[l].fontID}else u=this.idFactory.createFontId();assert(u?.startsWith("f"),'The "fontID" must be (correctly) defined.');if(h)this.fontCache.put(n,s.promise);else{t.cacheKey=`cacheKey_${u}`;this.fontCache.put(t.cacheKey,s.promise)}t.loadedName=`${this.idFactory.getDocId()}_${u}`;this.translateFont(o).then((e=>{s.resolve(new TranslatedFont({loadedName:t.loadedName,font:e,dict:t,evaluatorOptions:this.options}))})).catch((e=>{warn(`loadFont - translateFont failed: "${e}".`);s.resolve(new TranslatedFont({loadedName:t.loadedName,font:new ErrorFont(e instanceof Error?e.message:e),dict:t,evaluatorOptions:this.options}))}));return s.promise}buildPath(e,t,a,r=!1){const i=e.length-1;a||(a=[]);if(i<0||e.fnArray[i]!==ra){if(r){warn(`Encountered path operator "${t}" inside of a text object.`);e.addOp(Re,null)}let i;switch(t){case qe:const e=a[0]+a[2],t=a[1]+a[3];i=[Math.min(a[0],e),Math.max(a[0],e),Math.min(a[1],t),Math.max(a[1],t)];break;case Pe:case Le:i=[a[0],a[0],a[1],a[1]];break;default:i=[1/0,-1/0,1/0,-1/0]}e.addOp(ra,[[t],a,i]);r&&e.addOp(Ne,null)}else{const r=e.argsArray[i];r[0].push(t);r[1].push(...a);const n=r[2];switch(t){case qe:const e=a[0]+a[2],t=a[1]+a[3];n[0]=Math.min(n[0],a[0],e);n[1]=Math.max(n[1],a[0],e);n[2]=Math.min(n[2],a[1],t);n[3]=Math.max(n[3],a[1],t);break;case Pe:case Le:n[0]=Math.min(n[0],a[0]);n[1]=Math.max(n[1],a[0]);n[2]=Math.min(n[2],a[1]);n[3]=Math.max(n[3],a[1])}}}parseColorSpace({cs:e,resources:t,localColorSpaceCache:a}){return ColorSpace.parseAsync({cs:e,xref:this.xref,resources:t,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:a}).catch((e=>{if(e instanceof AbortException)return null;if(this.options.ignoreErrors){warn(`parseColorSpace - ignoring ColorSpace: "${e}".`);return null}throw e}))}parseShading({shading:e,resources:t,localColorSpaceCache:a,localShadingPatternCache:r}){let i=r.get(e);if(!i){const n=Pattern.parseShading(e,this.xref,t,this._pdfFunctionFactory,a).getIR();i=`pattern_${this.idFactory.createObjId()}`;this.parsingType3Font&&(i=`${this.idFactory.getDocId()}_type3_${i}`);r.set(e,i);this.parsingType3Font?this.handler.send("commonobj",[i,"Pattern",n]):this.handler.send("obj",[i,this.pageIndex,"Pattern",n])}return i}handleColorN(e,t,a,r,i,n,s,o,c,l){const h=a.pop();if(h instanceof Name){const u=i.getRaw(h.name),d=u instanceof Ref&&c.getByRef(u);if(d)try{const i=r.base?r.base.getRgb(a,0):null,n=getTilingPatternIR(d.operatorListIR,d.dict,i);e.addOp(t,n);return}catch{}const f=this.xref.fetchIfRef(u);if(f){const i=f instanceof BaseStream?f.dict:f,h=i.get("PatternType");if(h===wn){const o=r.base?r.base.getRgb(a,0):null;return this.handleTilingType(t,o,n,f,i,e,s,c)}if(h===xn){const a=i.get("Shading"),r=i.getArray("Matrix"),s=this.parseShading({shading:a,resources:n,localColorSpaceCache:o,localShadingPatternCache:l});e.addOp(t,["Shading",s,r]);return}throw new FormatError(`Unknown PatternType: ${h}`)}}throw new FormatError(`Unknown PatternName: ${h}`)}_parseVisibilityExpression(e,t,a){if(++t>10){warn("Visibility expression is too deeply nested");return}const r=e.length,i=this.xref.fetchIfRef(e[0]);if(!(r<2)&&i instanceof Name){switch(i.name){case"And":case"Or":case"Not":a.push(i.name);break;default:warn(`Invalid operator ${i.name} in visibility expression`);return}for(let i=1;i0)return{type:"OCMD",expression:t}}const t=a.get("OCGs");if(Array.isArray(t)||t instanceof Dict){const e=[];if(Array.isArray(t))for(const a of t)e.push(a.toString());else e.push(t.objId);return{type:r,ids:e,policy:a.get("P")instanceof Name?a.get("P").name:null,expression:null}}if(t instanceof Ref)return{type:r,id:t.toString()}}return null}getOperatorList({stream:e,task:t,resources:a,operatorList:r,initialState:i=null,fallbackFontDict:n=null}){a||=Dict.empty;i||=new EvalState;if(!r)throw new Error('getOperatorList: missing "operatorList" parameter');const s=this,o=this.xref;let c=!1;const l=new LocalImageCache,h=new LocalColorSpaceCache,u=new LocalGStateCache,d=new LocalTilingPatternCache,f=new Map,g=a.get("XObject")||Dict.empty,p=a.get("Pattern")||Dict.empty,m=new StateManager(i),b=new EvaluatorPreprocessor(e,o,m),y=new TimeSlotManager;function closePendingRestoreOPS(e){for(let e=0,t=b.savedStatesDepth;e0&&r.addOp(Be,[t]);e=null;continue}}next(new Promise((function(e,i){if(!F)throw new FormatError("GState must be referred to by name.");const n=a.get("ExtGState");if(!(n instanceof Dict))throw new FormatError("ExtGState should be a dictionary.");const o=n.get(v);if(!(o instanceof Dict))throw new FormatError("GState should be a dictionary.");s.setGState({resources:a,gState:o,operatorList:r,cacheKey:v,task:t,stateManager:m,localGStateCache:u,localColorSpaceCache:h}).then(e,i)})).catch((function(e){if(!(e instanceof AbortException)){if(!s.options.ignoreErrors)throw e;warn(`getOperatorList - ignoring ExtGState: "${e}".`)}})));return;case Pe:case Le:case je:case _e:case Ue:case Xe:case qe:s.buildPath(r,i,e,c);continue;case Pt:case Lt:case Xt:case qt:continue;case _t:if(!(e[0]instanceof Name)){warn(`Expected name for beginMarkedContentProps arg0=${e[0]}`);continue}if("OC"===e[0].name){next(s.parseMarkedContentProps(e[1],a).then((e=>{r.addOp(_t,["OC",e])})).catch((e=>{if(!(e instanceof AbortException)){if(!s.options.ignoreErrors)throw e;warn(`getOperatorList - ignoring beginMarkedContentProps: "${e}".`)}})));return}e=[e[0].name,e[1]instanceof Dict?e[1].get("MCID"):null];break;default:if(null!==e){for(k=0,S=e.length;k{if(!(e instanceof AbortException)){if(!this.options.ignoreErrors)throw e;warn(`getOperatorList - ignoring errors during "${t.name}" task: "${e}".`);closePendingRestoreOPS()}}))}getTextContent({stream:e,task:t,resources:a,stateManager:n=null,includeMarkedContent:s=!1,sink:o,seenStyles:c=new Set,viewBox:l,markedContentData:h=null,disableNormalization:u=!1}){a||=Dict.empty;n||=new StateManager(new TextState);s&&(h||={level:0});const d={items:[],styles:Object.create(null)},f={initialized:!1,str:[],totalWidth:0,totalHeight:0,width:0,height:0,vertical:!1,prevTransform:null,textAdvanceScale:0,spaceInFlowMin:0,spaceInFlowMax:0,trackingSpaceMin:1/0,negativeSpaceMax:-1/0,notASpace:-1/0,transform:null,fontName:null,hasEOL:!1},g=[" "," "];let p=0;function saveLastChar(e){const t=(p+1)%2,a=" "!==g[p]&&" "===g[t];g[p]=e;p=t;return a}function shouldAddWhitepsace(){return" "!==g[p]&&" "===g[(p+1)%2]}function resetLastChars(){g[0]=g[1]=" ";p=0}const m=this,b=this.xref,y=[];let w=null;const x=new LocalImageCache,k=new LocalGStateCache,S=new EvaluatorPreprocessor(e,b,n);let C;function pushWhitespace({width:e=0,height:t=0,transform:a=f.prevTransform,fontName:r=f.fontName}){d.items.push({str:" ",dir:"ltr",width:e,height:t,transform:a,fontName:r,hasEOL:!1})}function getCurrentTextTransform(){const e=C.font,t=[C.fontSize*C.textHScale,0,0,C.fontSize,0,C.textRise];if(e.isType3Font&&(C.fontSize<=1||e.isCharBBox)&&!isArrayEqual(C.fontMatrix,i)){const a=e.bbox[3]-e.bbox[1];a>0&&(t[3]*=a*C.fontMatrix[3])}return Util.transform(C.ctm,Util.transform(C.textMatrix,t))}function ensureTextContentItem(){if(f.initialized)return f;const{font:e,loadedName:t}=C;if(!c.has(t)){c.add(t);d.styles[t]={fontFamily:e.fallbackName,ascent:e.ascent,descent:e.descent,vertical:e.vertical};if(m.options.fontExtraProperties&&e.systemFontInfo){const a=d.styles[t];a.fontSubstitution=e.systemFontInfo.css;a.fontSubstitutionLoadedName=e.systemFontInfo.loadedName}}f.fontName=t;const a=f.transform=getCurrentTextTransform();if(e.vertical){f.width=f.totalWidth=Math.hypot(a[0],a[1]);f.height=f.totalHeight=0;f.vertical=!0}else{f.width=f.totalWidth=0;f.height=f.totalHeight=Math.hypot(a[2],a[3]);f.vertical=!1}const r=Math.hypot(C.textLineMatrix[0],C.textLineMatrix[1]),i=Math.hypot(C.ctm[0],C.ctm[1]);f.textAdvanceScale=i*r;const{fontSize:n}=C;f.trackingSpaceMin=.102*n;f.notASpace=.03*n;f.negativeSpaceMax=-.2*n;f.spaceInFlowMin=.102*n;f.spaceInFlowMax=.6*n;f.hasEOL=!1;f.initialized=!0;return f}function updateAdvanceScale(){if(!f.initialized)return;const e=Math.hypot(C.textLineMatrix[0],C.textLineMatrix[1]),t=Math.hypot(C.ctm[0],C.ctm[1])*e;if(t!==f.textAdvanceScale){if(f.vertical){f.totalHeight+=f.height*f.textAdvanceScale;f.height=0}else{f.totalWidth+=f.width*f.textAdvanceScale;f.width=0}f.textAdvanceScale=t}}function runBidiTransform(e){let t=e.str.join("");u||(t=function normalizeUnicode(e){if(!ha){ha=/([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc-\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa-\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu;ua=new Map([["ſt","ſt"]])}return e.replaceAll(ha,((e,t,a)=>t?t.normalize("NFKC"):ua.get(a)))}(t));const a=bidi(t,-1,e.vertical);return{str:a.str,dir:a.dir,width:Math.abs(e.totalWidth),height:Math.abs(e.totalHeight),transform:e.transform,fontName:e.fontName,hasEOL:e.hasEOL}}function handleSetFont(e,r){return m.loadFont(e,r,a).then((function(e){return e.font.isType3Font?e.loadType3Data(m,a,t).catch((function(){})).then((function(){return e})):e})).then((function(e){C.loadedName=e.loadedName;C.font=e.font;C.fontMatrix=e.font.fontMatrix||i}))}function applyInverseRotation(e,t,a){const r=Math.hypot(a[0],a[1]);return[(a[0]*e+a[1]*t)/r,(a[2]*e+a[3]*t)/r]}function compareWithLastPosition(e){const t=getCurrentTextTransform();let a=t[4],r=t[5];if(C.font?.vertical){if(al[2]||r+el[3])return!1}else if(a+el[2]||rl[3])return!1;if(!C.font||!f.prevTransform)return!0;let i=f.prevTransform[4],n=f.prevTransform[5];if(i===a&&n===r)return!0;let s=-1;t[0]&&0===t[1]&&0===t[2]?s=t[0]>0?0:180:t[1]&&0===t[0]&&0===t[3]&&(s=t[1]>0?90:270);switch(s){case 0:break;case 90:[a,r]=[r,a];[i,n]=[n,i];break;case 180:[a,r,i,n]=[-a,-r,-i,-n];break;case 270:[a,r]=[-r,-a];[i,n]=[-n,-i];break;default:[a,r]=applyInverseRotation(a,r,t);[i,n]=applyInverseRotation(i,n,f.prevTransform)}if(C.font.vertical){const e=(n-r)/f.textAdvanceScale,t=a-i,s=Math.sign(f.height);if(e.5*f.width){appendEOL();return!0}resetLastChars();flushTextContentItem();return!0}if(Math.abs(t)>f.width){appendEOL();return!0}e<=s*f.notASpace&&resetLastChars();if(e<=s*f.trackingSpaceMin)if(shouldAddWhitepsace()){resetLastChars();flushTextContentItem();pushWhitespace({height:Math.abs(e)})}else f.height+=e;else if(!addFakeSpaces(e,f.prevTransform,s))if(0===f.str.length){resetLastChars();pushWhitespace({height:Math.abs(e)})}else f.height+=e;Math.abs(t)>.25*f.width&&flushTextContentItem();return!0}const o=(a-i)/f.textAdvanceScale,c=r-n,h=Math.sign(f.width);if(o.5*f.height){appendEOL();return!0}resetLastChars();flushTextContentItem();return!0}if(Math.abs(c)>f.height){appendEOL();return!0}o<=h*f.notASpace&&resetLastChars();if(o<=h*f.trackingSpaceMin)if(shouldAddWhitepsace()){resetLastChars();flushTextContentItem();pushWhitespace({width:Math.abs(o)})}else f.width+=o;else if(!addFakeSpaces(o,f.prevTransform,h))if(0===f.str.length){resetLastChars();pushWhitespace({width:Math.abs(o)})}else f.width+=o;Math.abs(c)>.25*f.height&&flushTextContentItem();return!0}function buildTextContentItem({chars:e,extraSpacing:t}){const a=C.font;if(!e){const e=C.charSpacing+t;e&&(a.vertical?C.translateTextMatrix(0,-e):C.translateTextMatrix(e*C.textHScale,0));return}const r=a.charsToGlyphs(e),i=C.fontMatrix[0]*C.fontSize;for(let e=0,n=r.length;e0){const e=y.join("");y.length=0;buildTextContentItem({chars:e,extraSpacing:0})}break;case ft:if(!n.state.font){m.ensureStateFont(n.state);continue}buildTextContentItem({chars:p[0],extraSpacing:0});break;case pt:if(!n.state.font){m.ensureStateFont(n.state);continue}C.carriageReturn();buildTextContentItem({chars:p[0],extraSpacing:0});break;case mt:if(!n.state.font){m.ensureStateFont(n.state);continue}C.wordSpacing=p[0];C.charSpacing=p[1];C.carriageReturn();buildTextContentItem({chars:p[2],extraSpacing:0});break;case Et:flushTextContentItem();w||(w=a.get("XObject")||Dict.empty);var T=p[0]instanceof Name,M=p[0].name;if(T&&x.getByName(M))break;next(new Promise((function(e,r){if(!T)throw new FormatError("XObject must be referred to by name.");let i=w.getRaw(M);if(i instanceof Ref){if(x.getByRef(i)){e();return}if(m.globalImageCache.getData(i,m.pageIndex)){e();return}i=b.fetch(i)}if(!(i instanceof BaseStream))throw new FormatError("XObject should be a stream");const d=i.dict.get("Subtype");if(!(d instanceof Name))throw new FormatError("XObject should have a Name subtype");if("Form"!==d.name){x.set(M,i.dict.objId,!0);e();return}const f=n.state.clone(),g=new StateManager(f),p=i.dict.getArray("Matrix");Array.isArray(p)&&6===p.length&&g.transform(p);enqueueChunk();const y={enqueueInvoked:!1,enqueue(e,t){this.enqueueInvoked=!0;o.enqueue(e,t)},get desiredSize(){return o.desiredSize},get ready(){return o.ready}};m.getTextContent({stream:i,task:t,resources:i.dict.get("Resources")||a,stateManager:g,includeMarkedContent:s,sink:y,seenStyles:c,viewBox:l,markedContentData:h,disableNormalization:u}).then((function(){y.enqueueInvoked||x.set(M,i.dict.objId,!0);e()}),r)})).catch((function(e){if(!(e instanceof AbortException)){if(!m.options.ignoreErrors)throw e;warn(`getTextContent - ignoring XObject: "${e}".`)}})));return;case Be:T=p[0]instanceof Name;M=p[0].name;if(T&&k.getByName(M))break;next(new Promise((function(e,t){if(!T)throw new FormatError("GState must be referred to by name.");const r=a.get("ExtGState");if(!(r instanceof Dict))throw new FormatError("ExtGState should be a dictionary.");const i=r.get(M);if(!(i instanceof Dict))throw new FormatError("GState should be a dictionary.");const n=i.get("Font");if(n){flushTextContentItem();C.fontName=null;C.fontSize=n[1];handleSetFont(null,n[0]).then(e,t)}else{k.set(M,i.objId,!0);e()}})).catch((function(e){if(!(e instanceof AbortException)){if(!m.options.ignoreErrors)throw e;warn(`getTextContent - ignoring ExtGState: "${e}".`)}})));return;case jt:flushTextContentItem();if(s){h.level++;d.items.push({type:"beginMarkedContent",tag:p[0]instanceof Name?p[0].name:null})}break;case _t:flushTextContentItem();if(s){h.level++;let e=null;p[1]instanceof Dict&&(e=p[1].get("MCID"));d.items.push({type:"beginMarkedContentProps",id:Number.isInteger(e)?`${m.idFactory.getPageObjId()}_mc${e}`:null,tag:p[0]instanceof Name?p[0].name:null})}break;case Ut:flushTextContentItem();if(s){if(0===h.level)break;h.level--;d.items.push({type:"endMarkedContent"})}break;case Ne:!e||e.font===C.font&&e.fontSize===C.fontSize&&e.fontName===C.fontName||flushTextContentItem()}if(d.items.length>=o.desiredSize){g=!0;break}}if(g)next(kn);else{flushTextContentItem();enqueueChunk();e()}})).catch((e=>{if(!(e instanceof AbortException)){if(!this.options.ignoreErrors)throw e;warn(`getTextContent - ignoring errors during "${t.name}" task: "${e}".`);flushTextContentItem();enqueueChunk()}}))}extractDataStructures(e,t,a){const r=this.xref;let i;const n=this.readToUnicode(a.toUnicode||e.get("ToUnicode")||t.get("ToUnicode"));if(a.composite){const t=e.get("CIDSystemInfo");t instanceof Dict&&(a.cidSystemInfo={registry:stringToPDFString(t.get("Registry")),ordering:stringToPDFString(t.get("Ordering")),supplement:t.get("Supplement")});try{const t=e.get("CIDToGIDMap");t instanceof BaseStream&&(i=t.getBytes())}catch(e){if(!this.options.ignoreErrors)throw e;warn(`extractDataStructures - ignoring CIDToGIDMap data: "${e}".`)}}const s=[];let o,c=null;if(e.has("Encoding")){o=e.get("Encoding");if(o instanceof Dict){c=o.get("BaseEncoding");c=c instanceof Name?c.name:null;if(o.has("Differences")){const e=o.get("Differences");let t=0;for(const a of e){const e=r.fetchIfRef(a);if("number"==typeof e)t=e;else{if(!(e instanceof Name))throw new FormatError(`Invalid entry in 'Differences' array: ${e}`);s[t++]=e.name}}}}else if(o instanceof Name)c=o.name;else{const e="Encoding is not a Name nor a Dict";if(!this.options.ignoreErrors)throw new FormatError(e);warn(e)}"MacRomanEncoding"!==c&&"MacExpertEncoding"!==c&&"WinAnsiEncoding"!==c&&(c=null)}const l=!a.file||a.isInternalFont,h=jr()[a.name];c&&l&&h&&(c=null);if(c)a.defaultEncoding=getEncoding(c);else{const e=!!(a.flags&Mr),t=!!(a.flags&Dr);o=hr;"TrueType"!==a.type||t||(o=ur);if(e||h){o=lr;l&&(/Symbol/i.test(a.name)?o=dr:/Dingbats/i.test(a.name)?o=fr:/Wingdings/i.test(a.name)&&(o=ur))}a.defaultEncoding=o}a.differences=s;a.baseEncodingName=c;a.hasEncoding=!!c||s.length>0;a.dict=e;return n.then((e=>{a.toUnicode=e;return this.buildToUnicode(a)})).then((e=>{a.toUnicode=e;i&&(a.cidToGidMap=this.readCidToGidMap(i,e));return a}))}_simpleFontToUnicode(e,t=!1){assert(!e.composite,"Must be a simple font.");const a=[],r=e.defaultEncoding.slice(),i=e.baseEncodingName,n=e.differences;for(const e in n){const t=n[e];".notdef"!==t&&(r[e]=t)}const s=kr();for(const n in r){let o=r[n];if(""===o)continue;let c=s[o];if(void 0!==c){a[n]=String.fromCharCode(c);continue}let l=0;switch(o[0]){case"G":3===o.length&&(l=parseInt(o.substring(1),16));break;case"g":5===o.length&&(l=parseInt(o.substring(1),16));break;case"C":case"c":if(o.length>=3&&o.length<=4){const a=o.substring(1);if(t){l=parseInt(a,16);break}l=+a;if(Number.isNaN(l)&&Number.isInteger(parseInt(a,16)))return this._simpleFontToUnicode(e,!0)}break;case"u":c=getUnicodeForGlyph(o,s);-1!==c&&(l=c);break;default:switch(o){case"f_h":case"f_t":case"T_h":a[n]=o.replaceAll("_","");continue}}if(l>0&&l<=1114111&&Number.isInteger(l)){if(i&&l===+n){const e=getEncoding(i);if(e&&(o=e[n])){a[n]=String.fromCharCode(s[o]);continue}}a[n]=String.fromCodePoint(l)}}return a}async buildToUnicode(e){e.hasIncludedToUnicodeMap=e.toUnicode?.length>0;if(e.hasIncludedToUnicodeMap){!e.composite&&e.hasEncoding&&(e.fallbackToUnicode=this._simpleFontToUnicode(e));return e.toUnicode}if(!e.composite)return new ToUnicodeMap(this._simpleFontToUnicode(e));if(e.composite&&(e.cMap.builtInCMap&&!(e.cMap instanceof IdentityCMap)||"Adobe"===e.cidSystemInfo.registry&&("GB1"===e.cidSystemInfo.ordering||"CNS1"===e.cidSystemInfo.ordering||"Japan1"===e.cidSystemInfo.ordering||"Korea1"===e.cidSystemInfo.ordering))){const{registry:t,ordering:a}=e.cidSystemInfo,r=Name.get(`${t}-${a}-UCS2`),i=await CMapFactory.create({encoding:r,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null}),n=[],s=[];e.cMap.forEach((function(e,t){if(t>65535)throw new FormatError("Max size of CID is 65,535");const a=i.lookup(t);if(a){s.length=0;for(let e=0,t=a.length;e{if(e instanceof AbortException)return null;if(this.options.ignoreErrors){warn(`readToUnicode - ignoring ToUnicode data: "${e}".`);return null}throw e})):Promise.resolve(null):Promise.resolve(null)}readCidToGidMap(e,t){const a=[];for(let r=0,i=e.length;r>1;(0!==i||t.has(n))&&(a[n]=i)}return a}extractWidths(e,t,a){const r=this.xref;let i=[],n=0;const s=[];let o,c,l,h,u,d,f,g;if(a.composite){n=e.has("DW")?e.get("DW"):1e3;g=e.get("W");if(g)for(c=0,l=g.length;c{if(d){const e=[];let a=s;for(const t of d)e[a++]=this.xref.fetchIfRef(t);t.widths=e}else t.widths=this.buildCharCodeToWidth(r.widths,t);return new Font(e,g,t)}))}(e=new Dict(null)).set("FontName",Name.get(n));e.set("FontBBox",t.getArray("FontBBox")||[0,0,0,0])}let d=e.get("FontName"),f=t.get("BaseFont");"string"==typeof d&&(d=Name.get(d));"string"==typeof f&&(f=Name.get(f));const g=d?.name,p=f?.name;if(!h&&g!==p){info(`The FontDescriptor's FontName is "${g}" but should be the same as the Font's BaseFont "${p}".`);g&&p&&(p.startsWith(g)||!isKnownFontName(g)&&isKnownFontName(p))&&(d=null)}d||=f;if(!(d instanceof Name))throw new FormatError("invalid font name");let m,b,y,w,x;try{m=e.get("FontFile","FontFile2","FontFile3")}catch(e){if(!this.options.ignoreErrors)throw e;warn(`translateFont - fetching "${d.name}" font file: "${e}".`);m=new NullStream}let k=!1,S=null,C=null;if(m){if(m.dict){const e=m.dict.get("Subtype");e instanceof Name&&(b=e.name);y=m.dict.get("Length1");w=m.dict.get("Length2");x=m.dict.get("Length3")}}else if(l){const e=getXfaFontName(d.name);if(e){l.fontFamily=`${l.fontFamily}-PdfJS-XFA`;l.metrics=e.metrics||null;S=e.factors||null;m=await this.fetchStandardFontData(e.name);k=!!m;a=t=getXfaFontDict(d.name);r=!0}}else if(!h){const e=getStandardFontName(d.name);if(e){m=await this.fetchStandardFontData(e);k=!!m}!k&&this.options.useSystemFonts&&(C=getFontSubstitution(this.systemFontCache,this.idFactory,this.options.standardFontDataUrl,d.name,e))}u={type:n,name:d.name,subtype:b,file:m,length1:y,length2:w,length3:x,isInternalFont:k,loadedName:a.loadedName,composite:r,fixedPitch:!1,fontMatrix:t.getArray("FontMatrix")||i,firstChar:s,lastChar:o,toUnicode:c,bbox:e.getArray("FontBBox")||t.getArray("FontBBox"),ascent:e.get("Ascent"),descent:e.get("Descent"),xHeight:e.get("XHeight")||0,capHeight:e.get("CapHeight")||0,flags:e.get("Flags"),italicAngle:e.get("ItalicAngle")||0,isType3Font:h,cssFontInfo:l,scaleFactors:S,systemFontInfo:C};if(r){const e=a.get("Encoding");e instanceof Name&&(u.cidEncoding=e.name);const t=await CMapFactory.create({encoding:e,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null});u.cMap=t;u.vertical=u.cMap.vertical}return this.extractDataStructures(t,a,u).then((a=>{this.extractWidths(t,e,a);return new Font(d.name,m,a)}))}static buildFontPaths(e,t,a,r){function buildPath(t){const i=`${e.loadedName}_path_${t}`;try{if(e.renderer.hasBuiltPath(t))return;a.send("commonobj",[i,"FontPath",e.renderer.getPathJs(t)])}catch(e){if(r.ignoreErrors){warn(`buildFontPaths - ignoring ${i} glyph: "${e}".`);return}throw e}}for(const e of t){buildPath(e.fontChar);const t=e.accent;t?.fontChar&&buildPath(t.fontChar)}}static get fallbackFontDict(){const e=new Dict;e.set("BaseFont",Name.get("Helvetica"));e.set("Type",Name.get("FallbackType"));e.set("Subtype",Name.get("FallbackType"));e.set("Encoding",Name.get("WinAnsiEncoding"));return shadow(this,"fallbackFontDict",e)}}class TranslatedFont{constructor({loadedName:e,font:t,dict:a,evaluatorOptions:r}){this.loadedName=e;this.font=t;this.dict=a;this._evaluatorOptions=r||yn;this.type3Loaded=null;this.type3Dependencies=t.isType3Font?new Set:null;this.sent=!1}send(e){if(!this.sent){this.sent=!0;e.send("commonobj",[this.loadedName,"Font",this.font.exportData(this._evaluatorOptions.fontExtraProperties)])}}fallback(e){if(this.font.data){this.font.disableFontFace=!0;PartialEvaluator.buildFontPaths(this.font,this.font.glyphCacheValues,e,this._evaluatorOptions)}}loadType3Data(e,t,a){if(this.type3Loaded)return this.type3Loaded;if(!this.font.isType3Font)throw new Error("Must be a Type3 font.");const r=e.clone({ignoreErrors:!1});r.parsingType3Font=!0;const i=new RefSet(e.type3FontRefs);this.dict.objId&&!i.has(this.dict.objId)&&i.put(this.dict.objId);r.type3FontRefs=i;const n=this.font,s=this.type3Dependencies;let o=Promise.resolve();const c=this.dict.get("CharProcs"),l=this.dict.get("Resources")||t,h=Object.create(null),u=Util.normalizeRect(n.bbox||[0,0,0,0]),d=u[2]-u[0],f=u[3]-u[1],g=Math.hypot(d,f);for(const e of c.getKeys())o=o.then((()=>{const t=c.get(e),i=new OperatorList;return r.getOperatorList({stream:t,task:a,resources:l,operatorList:i}).then((()=>{i.fnArray[0]===yt&&this._removeType3ColorOperators(i,g);h[e]=i.getIR();for(const e of i.dependencies)s.add(e)})).catch((function(t){warn(`Type3 font resource "${e}" is not available.`);const a=new OperatorList;h[e]=a.getIR()}))}));this.type3Loaded=o.then((()=>{n.charProcOperatorList=h;if(this._bbox){n.isCharBBox=!0;n.bbox=this._bbox}}));return this.type3Loaded}_removeType3ColorOperators(e,t=NaN){const a=Util.normalizeRect(e.argsArray[0].slice(2)),r=a[2]-a[0],i=a[3]-a[1],n=Math.hypot(r,i);if(0===r||0===i){e.fnArray.splice(0,1);e.argsArray.splice(0,1)}else if(0===t||Math.round(n/t)>=10){this._bbox||(this._bbox=[1/0,1/0,-1/0,-1/0]);this._bbox[0]=Math.min(this._bbox[0],a[0]);this._bbox[1]=Math.min(this._bbox[1],a[1]);this._bbox[2]=Math.max(this._bbox[2],a[2]);this._bbox[3]=Math.max(this._bbox[3],a[3])}let s=0,o=e.length;for(;s=Pe&&n<=Ye;if(i.variableArgs)o>s&&info(`Command ${r}: expected [0, ${s}] args, but received ${o} args.`);else{if(o!==s){const e=this.nonProcessedArgs;for(;o>s;){e.push(t.shift());o--}for(;oEvaluatorPreprocessor.MAX_INVALID_PATH_OPS)throw new FormatError(`Invalid ${e}`);warn(`Skipping ${e}`);null!==t&&(t.length=0);continue}}this.preprocessCommand(n,t);e.fn=n;e.args=t;return!0}if(a===fa)return!1;if(null!==a){null===t&&(t=[]);t.push(a);if(t.length>33)throw new FormatError("Too many arguments")}}}preprocessCommand(e,t){switch(0|e){case Re:this.stateManager.save();break;case Ne:this.stateManager.restore();break;case Ee:this.stateManager.transform(t)}}}class DefaultAppearanceEvaluator extends EvaluatorPreprocessor{constructor(e){super(new StringStream(e))}parse(){const e={fn:0,args:[]},t={fontSize:0,fontName:"",fontColor:new Uint8ClampedArray(3)};try{for(;;){e.args.length=0;if(!this.read(e))break;if(0!==this.savedStatesDepth)continue;const{fn:a,args:r}=e;switch(0|a){case st:const[e,a]=r;e instanceof Name&&(t.fontName=e.name);"number"==typeof a&&a>0&&(t.fontSize=a);break;case Ot:ColorSpace.singletons.rgb.getRgbItem(r,0,t.fontColor,0);break;case Ft:ColorSpace.singletons.gray.getRgbItem(r,0,t.fontColor,0);break;case Mt:ColorSpace.singletons.cmyk.getRgbItem(r,0,t.fontColor,0)}}}catch(e){warn(`parseDefaultAppearance - ignoring errors: "${e}".`)}return t}}function parseDefaultAppearance(e){return new DefaultAppearanceEvaluator(e).parse()}class AppearanceStreamEvaluator extends EvaluatorPreprocessor{constructor(e,t,a){super(e);this.stream=e;this.evaluatorOptions=t;this.xref=a;this.resources=e.dict?.get("Resources")}parse(){const e={fn:0,args:[]};let t={scaleFactor:1,fontSize:0,fontName:"",fontColor:new Uint8ClampedArray(3),fillColorSpace:ColorSpace.singletons.gray},a=!1;const r=[];try{for(;;){e.args.length=0;if(a||!this.read(e))break;const{fn:i,args:n}=e;switch(0|i){case Re:r.push({scaleFactor:t.scaleFactor,fontSize:t.fontSize,fontName:t.fontName,fontColor:t.fontColor.slice(),fillColorSpace:t.fillColorSpace});break;case Ne:t=r.pop()||t;break;case ut:t.scaleFactor*=Math.hypot(n[0],n[1]);break;case st:const[e,i]=n;e instanceof Name&&(t.fontName=e.name);"number"==typeof i&&i>0&&(t.fontSize=i*t.scaleFactor);break;case xt:t.fillColorSpace=ColorSpace.parse({cs:n[0],xref:this.xref,resources:this.resources,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:this._localColorSpaceCache});break;case At:t.fillColorSpace.getRgbItem(n,0,t.fontColor,0);break;case Ot:ColorSpace.singletons.rgb.getRgbItem(n,0,t.fontColor,0);break;case Ft:ColorSpace.singletons.gray.getRgbItem(n,0,t.fontColor,0);break;case Mt:ColorSpace.singletons.cmyk.getRgbItem(n,0,t.fontColor,0);break;case ft:case gt:case pt:case mt:a=!0}}}catch(e){warn(`parseAppearanceStream - ignoring errors: "${e}".`)}this.stream.reset();delete t.scaleFactor;delete t.fillColorSpace;return t}get _localColorSpaceCache(){return shadow(this,"_localColorSpaceCache",new LocalColorSpaceCache)}get _pdfFunctionFactory(){return shadow(this,"_pdfFunctionFactory",new PDFFunctionFactory({xref:this.xref,isEvalSupported:this.evaluatorOptions.isEvalSupported}))}}function getPdfColor(e,t){if(e[0]===e[1]&&e[1]===e[2]){return`${numberToString(e[0]/255)} ${t?"g":"G"}`}return Array.from(e,(e=>numberToString(e/255))).join(" ")+" "+(t?"rg":"RG")}class FakeUnicodeFont{constructor(e,t){this.xref=e;this.widths=null;this.firstChar=1/0;this.lastChar=-1/0;this.fontFamily=t;const a=new OffscreenCanvas(1,1);this.ctxMeasure=a.getContext("2d");FakeUnicodeFont._fontNameId||(FakeUnicodeFont._fontNameId=1);this.fontName=Name.get(`InvalidPDFjsFont_${t}_${FakeUnicodeFont._fontNameId++}`)}get toUnicodeRef(){if(!FakeUnicodeFont._toUnicodeRef){const e="/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo\n<< /Registry (Adobe)\n/Ordering (UCS) /Supplement 0 >> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n1 begincodespacerange\n<0000> \nendcodespacerange\n1 beginbfrange\n<0000> <0000>\nendbfrange\nendcmap CMapName currentdict /CMap defineresource pop end end",t=FakeUnicodeFont.toUnicodeStream=new StringStream(e),a=new Dict(this.xref);t.dict=a;a.set("Length",e.length);FakeUnicodeFont._toUnicodeRef=this.xref.getNewPersistentRef(t)}return FakeUnicodeFont._toUnicodeRef}get fontDescriptorRef(){if(!FakeUnicodeFont._fontDescriptorRef){const e=new Dict(this.xref);e.set("Type",Name.get("FontDescriptor"));e.set("FontName",this.fontName);e.set("FontFamily","MyriadPro Regular");e.set("FontBBox",[0,0,0,0]);e.set("FontStretch",Name.get("Normal"));e.set("FontWeight",400);e.set("ItalicAngle",0);FakeUnicodeFont._fontDescriptorRef=this.xref.getNewPersistentRef(e)}return FakeUnicodeFont._fontDescriptorRef}get descendantFontRef(){const e=new Dict(this.xref);e.set("BaseFont",this.fontName);e.set("Type",Name.get("Font"));e.set("Subtype",Name.get("CIDFontType0"));e.set("CIDToGIDMap",Name.get("Identity"));e.set("FirstChar",this.firstChar);e.set("LastChar",this.lastChar);e.set("FontDescriptor",this.fontDescriptorRef);e.set("DW",1e3);const t=[],a=[...this.widths.entries()].sort();let r=null,i=null;for(const[e,n]of a)if(r)if(e===r+i.length)i.push(n);else{t.push(r,i);r=e;i=[n]}else{r=e;i=[n]}r&&t.push(r,i);e.set("W",t);const n=new Dict(this.xref);n.set("Ordering","Identity");n.set("Registry","Adobe");n.set("Supplement",0);e.set("CIDSystemInfo",n);return this.xref.getNewPersistentRef(e)}get baseFontRef(){const e=new Dict(this.xref);e.set("BaseFont",this.fontName);e.set("Type",Name.get("Font"));e.set("Subtype",Name.get("Type0"));e.set("Encoding",Name.get("Identity-H"));e.set("DescendantFonts",[this.descendantFontRef]);e.set("ToUnicode",this.toUnicodeRef);return this.xref.getNewPersistentRef(e)}get resources(){const e=new Dict(this.xref),t=new Dict(this.xref);t.set(this.fontName.name,this.baseFontRef);e.set("Font",t);return e}_createContext(){this.widths=new Map;this.ctxMeasure.font=`1000px ${this.fontFamily}`;return this.ctxMeasure}createFontResources(e){const t=this._createContext();for(const a of e.split(/\r\n?|\n/))for(const e of a.split("")){const a=e.charCodeAt(0);if(this.widths.has(a))continue;const r=t.measureText(e),i=Math.ceil(r.width);this.widths.set(a,i);this.firstChar=Math.min(a,this.firstChar);this.lastChar=Math.max(a,this.lastChar)}return this.resources}createAppearance(e,t,a,r,i,o){const c=this._createContext(),l=[];let h=-1/0;for(const t of e.split(/\r\n?|\n/)){l.push(t);const e=c.measureText(t).width;h=Math.max(h,e);for(const e of t.split("")){const t=e.charCodeAt(0);let a=this.widths.get(t);if(void 0===a){const r=c.measureText(e);a=Math.ceil(r.width);this.widths.set(t,a);this.firstChar=Math.min(t,this.firstChar);this.lastChar=Math.max(t,this.lastChar)}}}h*=r/1e3;const[u,d,f,g]=t;let p=f-u,m=g-d;a%180!=0&&([p,m]=[m,p]);let b=1;h>p&&(b=p/h);let y=1;const w=n*r,x=s*r,k=w*l.length;k>m&&(y=m/k);const S=r*Math.min(b,y),C=["q",`0 0 ${numberToString(p)} ${numberToString(m)} re W n`,"BT",`1 0 0 1 0 ${numberToString(m+x)} Tm 0 Tc ${getPdfColor(i,!0)}`,`/${this.fontName.name} ${numberToString(S)} Tf`],{resources:v}=this;if(1!==(o="number"==typeof o&&o>=0&&o<=1?o:1)){C.push("/R0 gs");const e=new Dict(this.xref),t=new Dict(this.xref);t.set("ca",o);t.set("CA",o);t.set("Type",Name.get("ExtGState"));e.set("R0",t);v.set("ExtGState",e)}const F=numberToString(w);for(const e of l)C.push(`0 -${F} Td <${stringToUTF16HexString(e)}> Tj`);C.push("ET","Q");const O=C.join("\n"),T=new Dict(this.xref);T.set("Subtype",Name.get("Form"));T.set("Type",Name.get("XObject"));T.set("BBox",[0,0,p,m]);T.set("Length",O.length);T.set("Resources",v);if(a){const e=getRotationMatrix(a,p,m);T.set("Matrix",e)}const M=new StringStream(O);M.dict=T;return M}}class NameOrNumberTree{constructor(e,t,a){this.constructor===NameOrNumberTree&&unreachable("Cannot initialize NameOrNumberTree.");this.root=e;this.xref=t;this._type=a}getAll(){const e=new Map;if(!this.root)return e;const t=this.xref,a=new RefSet;a.put(this.root);const r=[this.root];for(;r.length>0;){const i=t.fetchIfRef(r.shift());if(!(i instanceof Dict))continue;if(i.has("Kids")){const e=i.get("Kids");if(!Array.isArray(e))continue;for(const t of e){if(a.has(t))throw new FormatError(`Duplicate entry in "${this._type}" tree.`);r.push(t);a.put(t)}continue}const n=i.get(this._type);if(Array.isArray(n))for(let a=0,r=n.length;a10){warn(`Search depth limit reached for "${this._type}" tree.`);return null}const i=a.get("Kids");if(!Array.isArray(i))return null;let n=0,s=i.length-1;for(;n<=s;){const r=n+s>>1,o=t.fetchIfRef(i[r]),c=o.get("Limits");if(et.fetchIfRef(c[1]))){a=o;break}n=r+1}}if(n>s)return null}const i=a.get(this._type);if(Array.isArray(i)){let a=0,r=i.length-2;for(;a<=r;){const n=a+r>>1,s=n+(1&n),o=t.fetchIfRef(i[s]);if(eo))return t.fetchIfRef(i[s+1]);a=s+2}}}return null}}class NameTree extends NameOrNumberTree{constructor(e,t){super(e,t,"Names")}}class NumberTree extends NameOrNumberTree{constructor(e,t){super(e,t,"Nums")}}function clearGlobalCaches(){!function clearPatternCaches(){di=Object.create(null)}();!function clearPrimitiveCaches(){ga=Object.create(null);pa=Object.create(null);ma=Object.create(null)}();!function clearUnicodeCaches(){Fr.clear()}()}function pickPlatformItem(e){return e.has("UF")?e.get("UF"):e.has("F")?e.get("F"):e.has("Unix")?e.get("Unix"):e.has("Mac")?e.get("Mac"):e.has("DOS")?e.get("DOS"):null}class FileSpec{constructor(e,t){if(e instanceof Dict){this.xref=t;this.root=e;e.has("FS")&&(this.fs=e.get("FS"));this.description=e.has("Desc")?stringToPDFString(e.get("Desc")):"";e.has("RF")&&warn("Related file specifications are not supported");this.contentAvailable=!0;if(!e.has("EF")){this.contentAvailable=!1;warn("Non-embedded file specifications are not supported")}}}get filename(){if(!this._filename&&this.root){const e=pickPlatformItem(this.root)||"unnamed";this._filename=stringToPDFString(e).replaceAll("\\\\","\\").replaceAll("\\/","/").replaceAll("\\","/")}return this._filename}get content(){if(!this.contentAvailable)return null;!this.contentRef&&this.root&&(this.contentRef=pickPlatformItem(this.root.get("EF")));let e=null;if(this.contentRef){const t=this.xref.fetchIfRef(this.contentRef);t instanceof BaseStream?e=t.getBytes():warn("Embedded file specification points to non-existing/invalid content")}else warn("Embedded file specification does not have a content");return e}get serializable(){return{filename:this.filename,content:this.content}}}const Sn=0,An=-2,Cn=-3,vn=-4,Fn=-5,In=-6,On=-9;function isWhitespace(e,t){const a=e[t];return" "===a||"\n"===a||"\r"===a||"\t"===a}class XMLParserBase{_resolveEntities(e){return e.replaceAll(/&([^;]+);/g,((e,t)=>{if("#x"===t.substring(0,2))return String.fromCodePoint(parseInt(t.substring(2),16));if("#"===t.substring(0,1))return String.fromCodePoint(parseInt(t.substring(1),10));switch(t){case"lt":return"<";case"gt":return">";case"amp":return"&";case"quot":return'"';case"apos":return"'"}return this.onResolveEntity(t)}))}_parseContent(e,t){const a=[];let r=t;function skipWs(){for(;r"!==e[r]&&"/"!==e[r];)++r;const i=e.substring(t,r);skipWs();for(;r"!==e[r]&&"/"!==e[r]&&"?"!==e[r];){skipWs();let t="",i="";for(;r"!==e[a]&&"?"!==e[a]&&"/"!==e[a];)++a;const r=e.substring(t,a);!function skipWs(){for(;a"!==e[a+1]);)++a;return{name:r,value:e.substring(i,a),parsed:a-t}}parseXml(e){let t=0;for(;t",a);if(t<0){this.onError(On);return}this.onEndElement(e.substring(a,t));a=t+1;break;case"?":++a;const r=this._parseProcessingInstruction(e,a);if("?>"!==e.substring(a+r.parsed,a+r.parsed+2)){this.onError(Cn);return}this.onPi(r.name,r.value);a+=r.parsed+2;break;case"!":if("--"===e.substring(a+1,a+3)){t=e.indexOf("--\x3e",a+3);if(t<0){this.onError(Fn);return}this.onComment(e.substring(a+3,t));a=t+3}else if("[CDATA["===e.substring(a+1,a+8)){t=e.indexOf("]]>",a+8);if(t<0){this.onError(An);return}this.onCdata(e.substring(a+8,t));a=t+3}else{if("DOCTYPE"!==e.substring(a+1,a+8)){this.onError(In);return}{const r=e.indexOf("[",a+8);let i=!1;t=e.indexOf(">",a+8);if(t<0){this.onError(vn);return}if(r>0&&t>r){t=e.indexOf("]>",a+8);if(t<0){this.onError(vn);return}i=!0}const n=e.substring(a+8,t+(i?1:0));this.onDoctype(n);a=t+(i?2:1)}}break;default:const i=this._parseContent(e,a);if(null===i){this.onError(In);return}let n=!1;if("/>"===e.substring(a+i.parsed,a+i.parsed+2))n=!0;else if(">"!==e.substring(a+i.parsed,a+i.parsed+1)){this.onError(On);return}this.onBeginElement(i.name,i.attributes,n);a+=i.parsed+(n?2:1)}}else{for(;a0}searchNode(e,t){if(t>=e.length)return this;const a=e[t];if(a.name.startsWith("#")&&t0){r.push([i,0]);i=i.childNodes[0]}else{if(0===r.length)return null;for(;0!==r.length;){const[e,t]=r.pop(),a=t+1;if(a");for(const t of this.childNodes)t.dump(e);e.push(``)}else this.nodeValue?e.push(`>${encodeToXmlString(this.nodeValue)}`):e.push("/>")}else e.push(encodeToXmlString(this.nodeValue))}}class SimpleXMLParser extends XMLParserBase{constructor({hasAttributes:e=!1,lowerCaseName:t=!1}){super();this._currentFragment=null;this._stack=null;this._errorCode=Sn;this._hasAttributes=e;this._lowerCaseName=t}parseFromString(e){this._currentFragment=[];this._stack=[];this._errorCode=Sn;this.parseXml(e);if(this._errorCode!==Sn)return;const[t]=this._currentFragment;return t?{documentElement:t}:void 0}onText(e){if(function isWhitespaceString(e){for(let t=0,a=e.length;t\\376\\377([^<]+)/g,(function(e,t){const a=t.replaceAll(/\\([0-3])([0-7])([0-7])/g,(function(e,t,a,r){return String.fromCharCode(64*t+8*a+1*r)})).replaceAll(/&(amp|apos|gt|lt|quot);/g,(function(e,t){switch(t){case"amp":return"&";case"apos":return"'";case"gt":return">";case"lt":return"<";case"quot":return'"'}throw new Error(`_repair: ${t} isn't defined.`)})),r=[">"];for(let e=0,t=a.length;e=32&&t<127&&60!==t&&62!==t&&38!==t?r.push(String.fromCharCode(t)):r.push("&#x"+(65536+t).toString(16).substring(1)+";")}return r.join("")}))}_getSequence(e){const t=e.nodeName;return"rdf:bag"!==t&&"rdf:seq"!==t&&"rdf:alt"!==t?null:e.childNodes.filter((e=>"rdf:li"===e.nodeName))}_parseArray(e){if(!e.hasChildNodes())return;const[t]=e.childNodes,a=this._getSequence(t)||[];this._metadataMap.set(e.nodeName,a.map((e=>e.textContent.trim())))}_parse(e){let t=e.documentElement;if("rdf:rdf"!==t.nodeName){t=t.firstChild;for(;t&&"rdf:rdf"!==t.nodeName;)t=t.nextSibling}if(t&&"rdf:rdf"===t.nodeName&&t.hasChildNodes())for(const e of t.childNodes)if("rdf:description"===e.nodeName)for(const t of e.childNodes){const e=t.nodeName;switch(e){case"#text":continue;case"dc:creator":case"dc:subject":this._parseArray(t);continue}this._metadataMap.set(e,t.textContent.trim())}}get serializable(){return{parsedData:this._metadataMap,rawData:this._data}}}class DecryptStream extends DecodeStream{constructor(e,t,a){super(t);this.str=e;this.dict=e.dict;this.decrypt=a;this.nextChunk=null;this.initialized=!1}readBlock(){let e;if(this.initialized)e=this.nextChunk;else{e=this.str.getBytes(512);this.initialized=!0}if(!e||0===e.length){this.eof=!0;return}this.nextChunk=this.str.getBytes(512);const t=this.nextChunk?.length>0;e=(0,this.decrypt)(e,!t);const a=this.bufferLength,r=a+e.length;this.ensureBuffer(r).set(e,a);this.bufferLength=r}}class ARCFourCipher{constructor(e){this.a=0;this.b=0;const t=new Uint8Array(256),a=e.length;for(let e=0;e<256;++e)t[e]=e;for(let r=0,i=0;r<256;++r){const n=t[r];i=i+n+e[r%a]&255;t[r]=t[i];t[i]=n}this.s=t}encryptBlock(e){let t=this.a,a=this.b;const r=this.s,i=e.length,n=new Uint8Array(i);for(let s=0;s>5&255;h[u++]=i>>13&255;h[u++]=i>>21&255;h[u++]=i>>>29&255;h[u++]=0;h[u++]=0;h[u++]=0;const g=new Int32Array(16);for(u=0;u>>32-o)|0;i=n}n=n+i|0;s=s+l|0;o=o+f|0;c=c+p|0}return new Uint8Array([255&n,n>>8&255,n>>16&255,n>>>24&255,255&s,s>>8&255,s>>16&255,s>>>24&255,255&o,o>>8&255,o>>16&255,o>>>24&255,255&c,c>>8&255,c>>16&255,c>>>24&255])}}();class Word64{constructor(e,t){this.high=0|e;this.low=0|t}and(e){this.high&=e.high;this.low&=e.low}xor(e){this.high^=e.high;this.low^=e.low}or(e){this.high|=e.high;this.low|=e.low}shiftRight(e){if(e>=32){this.low=this.high>>>e-32|0;this.high=0}else{this.low=this.low>>>e|this.high<<32-e;this.high=this.high>>>e|0}}shiftLeft(e){if(e>=32){this.high=this.low<>>32-e;this.low<<=e}}rotateRight(e){let t,a;if(32&e){a=this.low;t=this.high}else{t=this.low;a=this.high}e&=31;this.low=t>>>e|a<<32-e;this.high=a>>>e|t<<32-e}not(){this.high=~this.high;this.low=~this.low}add(e){const t=(this.low>>>0)+(e.low>>>0);let a=(this.high>>>0)+(e.high>>>0);t>4294967295&&(a+=1);this.low=0|t;this.high=0|a}copyTo(e,t){e[t]=this.high>>>24&255;e[t+1]=this.high>>16&255;e[t+2]=this.high>>8&255;e[t+3]=255&this.high;e[t+4]=this.low>>>24&255;e[t+5]=this.low>>16&255;e[t+6]=this.low>>8&255;e[t+7]=255&this.low}assign(e){this.high=e.high;this.low=e.low}}const Mn=function calculateSHA256Closure(){function rotr(e,t){return e>>>t|e<<32-t}function ch(e,t,a){return e&t^~e&a}function maj(e,t,a){return e&t^e&a^t&a}function sigma(e){return rotr(e,2)^rotr(e,13)^rotr(e,22)}function sigmaPrime(e){return rotr(e,6)^rotr(e,11)^rotr(e,25)}function littleSigma(e){return rotr(e,7)^rotr(e,18)^e>>>3}const e=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];return function hash(t,a,r){let i=1779033703,n=3144134277,s=1013904242,o=2773480762,c=1359893119,l=2600822924,h=528734635,u=1541459225;const d=64*Math.ceil((r+9)/64),f=new Uint8Array(d);let g,p;for(g=0;g>>29&255;f[g++]=r>>21&255;f[g++]=r>>13&255;f[g++]=r>>5&255;f[g++]=r<<3&255;const b=new Uint32Array(64);for(g=0;g>>10)+b[p-7]+littleSigma(b[p-15])+b[p-16]|0;let t,a,r=i,d=n,m=s,w=o,x=c,k=l,S=h,C=u;for(p=0;p<64;++p){t=C+sigmaPrime(x)+ch(x,k,S)+e[p]+b[p];a=sigma(r)+maj(r,d,m);C=S;S=k;k=x;x=w+t|0;w=m;m=d;d=r;r=t+a|0}i=i+r|0;n=n+d|0;s=s+m|0;o=o+w|0;c=c+x|0;l=l+k|0;h=h+S|0;u=u+C|0}var y;return new Uint8Array([i>>24&255,i>>16&255,i>>8&255,255&i,n>>24&255,n>>16&255,n>>8&255,255&n,s>>24&255,s>>16&255,s>>8&255,255&s,o>>24&255,o>>16&255,o>>8&255,255&o,c>>24&255,c>>16&255,c>>8&255,255&c,l>>24&255,l>>16&255,l>>8&255,255&l,h>>24&255,h>>16&255,h>>8&255,255&h,u>>24&255,u>>16&255,u>>8&255,255&u])}}(),Dn=function calculateSHA512Closure(){function ch(e,t,a,r,i){e.assign(t);e.and(a);i.assign(t);i.not();i.and(r);e.xor(i)}function maj(e,t,a,r,i){e.assign(t);e.and(a);i.assign(t);i.and(r);e.xor(i);i.assign(a);i.and(r);e.xor(i)}function sigma(e,t,a){e.assign(t);e.rotateRight(28);a.assign(t);a.rotateRight(34);e.xor(a);a.assign(t);a.rotateRight(39);e.xor(a)}function sigmaPrime(e,t,a){e.assign(t);e.rotateRight(14);a.assign(t);a.rotateRight(18);e.xor(a);a.assign(t);a.rotateRight(41);e.xor(a)}function littleSigma(e,t,a){e.assign(t);e.rotateRight(1);a.assign(t);a.rotateRight(8);e.xor(a);a.assign(t);a.shiftRight(7);e.xor(a)}function littleSigmaPrime(e,t,a){e.assign(t);e.rotateRight(19);a.assign(t);a.rotateRight(61);e.xor(a);a.assign(t);a.shiftRight(6);e.xor(a)}const e=[new Word64(1116352408,3609767458),new Word64(1899447441,602891725),new Word64(3049323471,3964484399),new Word64(3921009573,2173295548),new Word64(961987163,4081628472),new Word64(1508970993,3053834265),new Word64(2453635748,2937671579),new Word64(2870763221,3664609560),new Word64(3624381080,2734883394),new Word64(310598401,1164996542),new Word64(607225278,1323610764),new Word64(1426881987,3590304994),new Word64(1925078388,4068182383),new Word64(2162078206,991336113),new Word64(2614888103,633803317),new Word64(3248222580,3479774868),new Word64(3835390401,2666613458),new Word64(4022224774,944711139),new Word64(264347078,2341262773),new Word64(604807628,2007800933),new Word64(770255983,1495990901),new Word64(1249150122,1856431235),new Word64(1555081692,3175218132),new Word64(1996064986,2198950837),new Word64(2554220882,3999719339),new Word64(2821834349,766784016),new Word64(2952996808,2566594879),new Word64(3210313671,3203337956),new Word64(3336571891,1034457026),new Word64(3584528711,2466948901),new Word64(113926993,3758326383),new Word64(338241895,168717936),new Word64(666307205,1188179964),new Word64(773529912,1546045734),new Word64(1294757372,1522805485),new Word64(1396182291,2643833823),new Word64(1695183700,2343527390),new Word64(1986661051,1014477480),new Word64(2177026350,1206759142),new Word64(2456956037,344077627),new Word64(2730485921,1290863460),new Word64(2820302411,3158454273),new Word64(3259730800,3505952657),new Word64(3345764771,106217008),new Word64(3516065817,3606008344),new Word64(3600352804,1432725776),new Word64(4094571909,1467031594),new Word64(275423344,851169720),new Word64(430227734,3100823752),new Word64(506948616,1363258195),new Word64(659060556,3750685593),new Word64(883997877,3785050280),new Word64(958139571,3318307427),new Word64(1322822218,3812723403),new Word64(1537002063,2003034995),new Word64(1747873779,3602036899),new Word64(1955562222,1575990012),new Word64(2024104815,1125592928),new Word64(2227730452,2716904306),new Word64(2361852424,442776044),new Word64(2428436474,593698344),new Word64(2756734187,3733110249),new Word64(3204031479,2999351573),new Word64(3329325298,3815920427),new Word64(3391569614,3928383900),new Word64(3515267271,566280711),new Word64(3940187606,3454069534),new Word64(4118630271,4000239992),new Word64(116418474,1914138554),new Word64(174292421,2731055270),new Word64(289380356,3203993006),new Word64(460393269,320620315),new Word64(685471733,587496836),new Word64(852142971,1086792851),new Word64(1017036298,365543100),new Word64(1126000580,2618297676),new Word64(1288033470,3409855158),new Word64(1501505948,4234509866),new Word64(1607167915,987167468),new Word64(1816402316,1246189591)];return function hash(t,a,r,i=!1){let n,s,o,c,l,h,u,d;if(i){n=new Word64(3418070365,3238371032);s=new Word64(1654270250,914150663);o=new Word64(2438529370,812702999);c=new Word64(355462360,4144912697);l=new Word64(1731405415,4290775857);h=new Word64(2394180231,1750603025);u=new Word64(3675008525,1694076839);d=new Word64(1203062813,3204075428)}else{n=new Word64(1779033703,4089235720);s=new Word64(3144134277,2227873595);o=new Word64(1013904242,4271175723);c=new Word64(2773480762,1595750129);l=new Word64(1359893119,2917565137);h=new Word64(2600822924,725511199);u=new Word64(528734635,4215389547);d=new Word64(1541459225,327033209)}const f=128*Math.ceil((r+17)/128),g=new Uint8Array(f);let p,m;for(p=0;p>>29&255;g[p++]=r>>21&255;g[p++]=r>>13&255;g[p++]=r>>5&255;g[p++]=r<<3&255;const y=new Array(80);for(p=0;p<80;p++)y[p]=new Word64(0,0);let w=new Word64(0,0),x=new Word64(0,0),k=new Word64(0,0),S=new Word64(0,0),C=new Word64(0,0),v=new Word64(0,0),F=new Word64(0,0),O=new Word64(0,0);const T=new Word64(0,0),M=new Word64(0,0),D=new Word64(0,0),R=new Word64(0,0);let N,E;for(p=0;p=1;--e){a=n[13];n[13]=n[9];n[9]=n[5];n[5]=n[1];n[1]=a;a=n[14];r=n[10];n[14]=n[6];n[10]=n[2];n[6]=a;n[2]=r;a=n[15];r=n[11];i=n[7];n[15]=n[3];n[11]=a;n[7]=r;n[3]=i;for(let e=0;e<16;++e)n[e]=this._inv_s[n[e]];for(let a=0,r=16*e;a<16;++a,++r)n[a]^=t[r];for(let e=0;e<16;e+=4){const t=this._mix[n[e]],r=this._mix[n[e+1]],i=this._mix[n[e+2]],s=this._mix[n[e+3]];a=t^r>>>8^r<<24^i>>>16^i<<16^s>>>24^s<<8;n[e]=a>>>24&255;n[e+1]=a>>16&255;n[e+2]=a>>8&255;n[e+3]=255&a}}a=n[13];n[13]=n[9];n[9]=n[5];n[5]=n[1];n[1]=a;a=n[14];r=n[10];n[14]=n[6];n[10]=n[2];n[6]=a;n[2]=r;a=n[15];r=n[11];i=n[7];n[15]=n[3];n[11]=a;n[7]=r;n[3]=i;for(let e=0;e<16;++e){n[e]=this._inv_s[n[e]];n[e]^=t[e]}return n}_encrypt(e,t){const a=this._s;let r,i,n;const s=new Uint8Array(16);s.set(e);for(let e=0;e<16;++e)s[e]^=t[e];for(let e=1;e=r;--a)if(e[a]!==t){t=0;break}o-=t;n[n.length-1]=e.subarray(0,16-t)}}const c=new Uint8Array(o);for(let e=0,t=0,a=n.length;e=256&&(o=255&(27^o))}for(let t=0;t<4;++t){a[e]=r^=a[e-32];e++;a[e]=i^=a[e-32];e++;a[e]=n^=a[e-32];e++;a[e]=s^=a[e-32];e++}}return a}}class PDF17{checkOwnerPassword(e,t,a,r){const i=new Uint8Array(e.length+56);i.set(e,0);i.set(t,e.length);i.set(a,e.length+t.length);return isArrayEqual(Mn(i,0,i.length),r)}checkUserPassword(e,t,a){const r=new Uint8Array(e.length+8);r.set(e,0);r.set(t,e.length);return isArrayEqual(Mn(r,0,r.length),a)}getOwnerKey(e,t,a,r){const i=new Uint8Array(e.length+56);i.set(e,0);i.set(t,e.length);i.set(a,e.length+t.length);const n=Mn(i,0,i.length);return new AES256Cipher(n).decryptBlock(r,!1,new Uint8Array(16))}getUserKey(e,t,a){const r=new Uint8Array(e.length+8);r.set(e,0);r.set(t,e.length);const i=Mn(r,0,r.length);return new AES256Cipher(i).decryptBlock(a,!1,new Uint8Array(16))}}class PDF20{_hash(e,t,a){let r=Mn(t,0,t.length).subarray(0,32),i=[0],n=0;for(;n<64||i.at(-1)>n-32;){const t=e.length+r.length+a.length,l=new Uint8Array(t);let h=0;l.set(e,h);h+=e.length;l.set(r,h);h+=r.length;l.set(a,h);const u=new Uint8Array(64*t);for(let e=0,a=0;e<64;e++,a+=t)u.set(l,a);i=new AES128Cipher(r.subarray(0,16)).encrypt(u,r.subarray(16,32));const d=i.slice(0,16).reduce(((e,t)=>e+t),0)%3;0===d?r=Mn(i,0,i.length):1===d?r=(s=i,o=0,c=i.length,Dn(s,o,c,!0)):2===d&&(r=Dn(i,0,i.length));n++}var s,o,c;return r.subarray(0,32)}checkOwnerPassword(e,t,a,r){const i=new Uint8Array(e.length+56);i.set(e,0);i.set(t,e.length);i.set(a,e.length+t.length);return isArrayEqual(this._hash(e,i,a),r)}checkUserPassword(e,t,a){const r=new Uint8Array(e.length+8);r.set(e,0);r.set(t,e.length);return isArrayEqual(this._hash(e,r,[]),a)}getOwnerKey(e,t,a,r){const i=new Uint8Array(e.length+56);i.set(e,0);i.set(t,e.length);i.set(a,e.length+t.length);const n=this._hash(e,i,a);return new AES256Cipher(n).decryptBlock(r,!1,new Uint8Array(16))}getUserKey(e,t,a){const r=new Uint8Array(e.length+8);r.set(e,0);r.set(t,e.length);const i=this._hash(e,r,[]);return new AES256Cipher(i).decryptBlock(a,!1,new Uint8Array(16))}}class CipherTransform{constructor(e,t){this.StringCipherConstructor=e;this.StreamCipherConstructor=t}createStream(e,t){const a=new this.StreamCipherConstructor;return new DecryptStream(e,t,(function cipherTransformDecryptStream(e,t){return a.decryptBlock(e,t)}))}decryptString(e){const t=new this.StringCipherConstructor;let a=stringToBytes(e);a=t.decryptBlock(a,!0);return bytesToString(a)}encryptString(e){const t=new this.StringCipherConstructor;if(t instanceof AESBaseCipher){const a=16-e.length%16;e+=String.fromCharCode(a).repeat(a);const r=new Uint8Array(16);if("undefined"!=typeof crypto)crypto.getRandomValues(r);else for(let e=0;e<16;e++)r[e]=Math.floor(256*Math.random());let i=stringToBytes(e);i=t.encrypt(i,r);const n=new Uint8Array(16+i.length);n.set(r);n.set(i,16);return bytesToString(n)}let a=stringToBytes(e);a=t.encrypt(a);return bytesToString(a)}}class CipherTransformFactory{static#S=new Uint8Array([40,191,78,94,78,117,138,65,100,0,78,86,255,250,1,8,46,46,0,182,208,104,62,128,47,12,169,254,100,83,105,122]);#A(e,t,a,r,i,n,s,o,c,l,h,u){if(t){const e=Math.min(127,t.length);t=t.subarray(0,e)}else t=[];const d=6===e?new PDF20:new PDF17;return d.checkUserPassword(t,o,s)?d.getUserKey(t,c,h):t.length&&d.checkOwnerPassword(t,r,n,a)?d.getOwnerKey(t,i,n,l):null}#C(e,t,a,r,i,n,s,o){const c=40+a.length+e.length,l=new Uint8Array(c);let h,u,d=0;if(t){u=Math.min(32,t.length);for(;d>8&255;l[d++]=i>>16&255;l[d++]=i>>>24&255;for(h=0,u=e.length;h=4&&!o){l[d++]=255;l[d++]=255;l[d++]=255;l[d++]=255}let f=Tn(l,0,d);const g=s>>3;if(n>=3)for(h=0;h<50;++h)f=Tn(f,0,g);const p=f.subarray(0,g);let m,b;if(n>=3){for(d=0;d<32;++d)l[d]=CipherTransformFactory.#S[d];for(h=0,u=e.length;h>3;if(a>=3)for(o=0;o<50;++o)c=Tn(c,0,c.length);let h,u;if(a>=3){u=t;const e=new Uint8Array(l);for(o=19;o>=0;o--){for(let t=0;t>8&255;i[s++]=e>>16&255;i[s++]=255&t;i[s++]=t>>8&255;if(r){i[s++]=115;i[s++]=65;i[s++]=108;i[s++]=84}return Tn(i,0,s).subarray(0,Math.min(a.length+5,16))}#I(e,t,a,r,i){if(!(t instanceof Name))throw new FormatError("Invalid crypt filter name.");const n=this,s=e.get(t.name),o=s?.get("CFM");if(!o||"None"===o.name)return function(){return new NullCipher};if("V2"===o.name)return function(){return new ARCFourCipher(n.#F(a,r,i,!1))};if("AESV2"===o.name)return function(){return new AES128Cipher(n.#F(a,r,i,!0))};if("AESV3"===o.name)return function(){return new AES256Cipher(i)};throw new FormatError("Unknown crypto method")}constructor(e,t,a){const r=e.get("Filter");if(!isName(r,"Standard"))throw new FormatError("unknown encryption method");this.filterName=r.name;this.dict=e;const i=e.get("V");if(!Number.isInteger(i)||1!==i&&2!==i&&4!==i&&5!==i)throw new FormatError("unsupported encryption algorithm");this.algorithm=i;let n=e.get("Length");if(!n)if(i<=3)n=40;else{const t=e.get("CF"),a=e.get("StmF");if(t instanceof Dict&&a instanceof Name){t.suppressEncryption=!0;const e=t.get(a.name);n=e?.get("Length")||128;n<40&&(n<<=3)}}if(!Number.isInteger(n)||n<40||n%8!=0)throw new FormatError("invalid key length");const s=stringToBytes(e.get("O")),o=stringToBytes(e.get("U")),c=s.subarray(0,32),l=o.subarray(0,32),h=e.get("P"),u=e.get("R"),d=(4===i||5===i)&&!1!==e.get("EncryptMetadata");this.encryptMetadata=d;const f=stringToBytes(t);let g,p;if(a){if(6===u)try{a=utf8StringToString(a)}catch{warn("CipherTransformFactory: Unable to convert UTF8 encoded password.")}g=stringToBytes(a)}if(5!==i)p=this.#C(f,g,c,l,h,u,n,d);else{const t=s.subarray(32,40),a=s.subarray(40,48),r=o.subarray(0,48),i=o.subarray(32,40),n=o.subarray(40,48),h=stringToBytes(e.get("OE")),d=stringToBytes(e.get("UE")),f=stringToBytes(e.get("Perms"));p=this.#A(u,g,c,t,a,r,l,i,n,h,d,f)}if(!p&&!a)throw new PasswordException("No password given",ia);if(!p&&a){const e=this.#v(g,c,u,n);p=this.#C(f,e,c,l,h,u,n,d)}if(!p)throw new PasswordException("Incorrect Password",na);this.encryptionKey=p;if(i>=4){const t=e.get("CF");t instanceof Dict&&(t.suppressEncryption=!0);this.cf=t;this.stmf=e.get("StmF")||Name.get("Identity");this.strf=e.get("StrF")||Name.get("Identity");this.eff=e.get("EFF")||this.stmf}}createCipherTransform(e,t){if(4===this.algorithm||5===this.algorithm)return new CipherTransform(this.#I(this.cf,this.strf,e,t,this.encryptionKey),this.#I(this.cf,this.stmf,e,t,this.encryptionKey));const a=this.#F(e,t,this.encryptionKey,!1),cipherConstructor=function(){return new ARCFourCipher(a)};return new CipherTransform(cipherConstructor,cipherConstructor)}}async function writeObject(e,t,a,{encrypt:r=null}){const i=r?.createCipherTransform(e.num,e.gen);a.push(`${e.num} ${e.gen} obj\n`);t instanceof Dict?await writeDict(t,a,i):t instanceof BaseStream?await writeStream(t,a,i):Array.isArray(t)&&await writeArray(t,a,i);a.push("\nendobj\n")}async function writeDict(e,t,a){t.push("<<");for(const r of e.getKeys()){t.push(` /${escapePDFName(r)} `);await writeValue(e.getRaw(r),t,a)}t.push(">>")}async function writeStream(e,t,a){let r=e.getBytes();const{dict:i}=e,[n,s]=await Promise.all([i.getAsync("Filter"),i.getAsync("DecodeParms")]),o=isName(Array.isArray(n)?await i.xref.fetchIfRefAsync(n[0]):n,"FlateDecode");if("undefined"!=typeof CompressionStream&&(r.length>=256||o))try{const e=new CompressionStream("deflate"),t=e.writable.getWriter();t.write(r);t.close();const a=await new Response(e.readable).arrayBuffer();r=new Uint8Array(a);let c,l;if(n){if(!o){c=Array.isArray(n)?[Name.get("FlateDecode"),...n]:[Name.get("FlateDecode"),n];s&&(l=Array.isArray(s)?[null,...s]:[null,s])}}else c=Name.get("FlateDecode");c&&i.set("Filter",c);l&&i.set("DecodeParms",l)}catch(e){info(`writeStream - cannot compress data: "${e}".`)}let c=bytesToString(r);a&&(c=a.encryptString(c));i.set("Length",c.length);await writeDict(i,t,a);t.push(" stream\n",c,"\nendstream")}async function writeArray(e,t,a){t.push("[");let r=!0;for(const i of e){r?r=!1:t.push(" ");await writeValue(i,t,a)}t.push("]")}async function writeValue(e,t,a){if(e instanceof Name)t.push(`/${escapePDFName(e.name)}`);else if(e instanceof Ref)t.push(`${e.num} ${e.gen} R`);else if(Array.isArray(e))await writeArray(e,t,a);else if("string"==typeof e){a&&(e=a.encryptString(e));t.push(`(${escapeString(e)})`)}else"number"==typeof e?t.push(numberToString(e)):"boolean"==typeof e?t.push(e.toString()):e instanceof Dict?await writeDict(e,t,a):e instanceof BaseStream?await writeStream(e,t,a):null===e?t.push("null"):warn(`Unhandled value in writer: ${typeof e}, please file a bug.`)}function writeInt(e,t,a,r){for(let i=t+a-1;i>a-1;i--){r[i]=255&e;e>>=8}return a+t}function writeString(e,t,a){for(let r=0,i=e.length;r1&&(n=a.documentElement.searchNode([i.at(-1)],0));n?n.childNodes=Array.isArray(r)?r.map((e=>new SimpleDOMNode("value",e))):[new SimpleDOMNode("#text",r)]:warn(`Node not found for path: ${t}`)}const r=[];a.documentElement.dump(r);return r.join("")}(r.fetchIfRef(t).getString(),a)}const i=r.encrypt;if(i){e=i.createCipherTransform(t.num,t.gen).encryptString(e)}const n=`${t.num} ${t.gen} obj\n<< /Type /EmbeddedFile /Length ${e.length}>>\nstream\n`+e+"\nendstream\nendobj\n";a.push({ref:t,data:n})}async function incrementalUpdate({originalData:e,xrefInfo:t,newRefs:a,xref:r=null,hasXfa:i=!1,xfaDatasetsRef:n=null,hasXfaDatasetsEntry:s=!1,needAppearances:o,acroFormRef:c=null,acroForm:l=null,xfaData:h=null}){await async function updateAcroform({xref:e,acroForm:t,acroFormRef:a,hasXfa:r,hasXfaDatasetsEntry:i,xfaDatasetsRef:n,needAppearances:s,newRefs:o}){!r||i||n||warn("XFA - Cannot save it");if(!s&&(!r||!n||i))return;const c=t.clone();if(r&&!i){const e=t.get("XFA").slice();e.splice(2,0,"datasets");e.splice(3,0,n);c.set("XFA",e)}s&&c.set("NeedAppearances",!0);const l=[];await writeObject(a,c,l,e);o.push({ref:a,data:l.join("")})}({xref:r,acroForm:l,acroFormRef:c,hasXfa:i,hasXfaDatasetsEntry:s,xfaDatasetsRef:n,needAppearances:o,newRefs:a});i&&updateXFA({xfaData:h,xfaDatasetsRef:n,newRefs:a,xref:r});const u=new Dict(null),d=t.newRef;let f,g;const p=e.at(-1);if(10===p||13===p){f=[];g=e.length}else{f=["\n"];g=e.length+1}u.set("Size",d.num+1);u.set("Prev",t.startXRef);u.set("Type",Name.get("XRef"));null!==t.rootRef&&u.set("Root",t.rootRef);null!==t.infoRef&&u.set("Info",t.infoRef);null!==t.encryptRef&&u.set("Encrypt",t.encryptRef);a.push({ref:d,data:""});a=a.sort(((e,t)=>e.ref.num-t.ref.num));const m=[[0,1,65535]],b=[0,1];let y=0;for(const{ref:e,data:t}of a){y=Math.max(y,g);m.push([1,g,Math.min(e.gen,65535)]);g+=t.length;b.push(e.num,1);f.push(t)}u.set("Index",b);if(Array.isArray(t.fileIds)&&t.fileIds.length>0){const e=function computeMD5(e,t){const a=Math.floor(Date.now()/1e3),r=t.filename||"",i=[a.toString(),r,e.toString()];let n=i.reduce(((e,t)=>e+t.length),0);for(const e of Object.values(t.info)){i.push(e);n+=e.length}const s=new Uint8Array(n);let o=0;for(const e of i){writeString(e,o,s);o+=e.length}return bytesToString(Tn(s))}(g,t);u.set("ID",[t.fileIds[0],e])}const w=[1,Math.ceil(Math.log2(y)/8),2],x=(w[0]+w[1]+w[2])*m.length;u.set("W",w);u.set("Length",x);f.push(`${d.num} ${d.gen} obj\n`);await writeDict(u,f,null);f.push(" stream\n");const k=f.reduce(((e,t)=>e+t.length),0),S=`\nendstream\nendobj\nstartxref\n${g}\n%%EOF\n`,C=new Uint8Array(e.length+k+x+S.length);C.set(e);let v=e.length;for(const e of f){writeString(e,v,C);v+=e.length}for(const[e,t,a]of m){v=writeInt(e,w[0],v,C);v=writeInt(t,w[1],v,C);v=writeInt(a,w[2],v,C)}writeString(S,v,C);return C}const Bn=1,Rn=2,Nn=3,En=4,Pn=5;class StructTreeRoot{constructor(e,t){this.dict=e;this.ref=t instanceof Ref?t:null;this.roleMap=new Map;this.structParentIds=null}init(){this.readRoleMap()}#O(e,t,a){if(!(e instanceof Ref)||t<0)return;this.structParentIds||=new RefSetCache;let r=this.structParentIds.get(e);if(!r){r=[];this.structParentIds.put(e,r)}r.push([t,a])}addAnnotationIdToPage(e,t){this.#O(e,t,En)}readRoleMap(){const e=this.dict.get("RoleMap");e instanceof Dict&&e.forEach(((e,t)=>{t instanceof Name&&this.roleMap.set(e,t.name)}))}static async canCreateStructureTree({catalogRef:e,pdfManager:t,newAnnotationsByPage:a}){if(!(e instanceof Ref)){warn("Cannot save the struct tree: no catalog reference.");return!1}let r=0,i=!0;for(const[e,n]of a){const{ref:a}=await t.getPage(e);if(!(a instanceof Ref)){warn(`Cannot save the struct tree: page ${e} has no ref.`);i=!0;break}for(const e of n)if(e.accessibilityData?.type){e.parentTreeId=r++;i=!1}}if(i){for(const e of a.values())for(const t of e)delete t.parentTreeId;return!1}return!0}static async createStructureTree({newAnnotationsByPage:e,xref:t,catalogRef:a,pdfManager:r,newRefs:i}){const n=r.catalog.cloneDict(),s=t.getNewTemporaryRef();n.set("StructTreeRoot",s);const o=[];await writeObject(a,n,o,t);i.push({ref:a,data:o.join("")});const c=new Dict(t);c.set("Type",Name.get("StructTreeRoot"));const l=t.getNewTemporaryRef();c.set("ParentTree",l);const h=[];c.set("K",h);const u=new Dict(t),d=[];u.set("Nums",d);const f=await this.#T({newAnnotationsByPage:e,structTreeRootRef:s,kids:h,nums:d,xref:t,pdfManager:r,newRefs:i,buffer:o});c.set("ParentTreeNextKey",f);o.length=0;await writeObject(l,u,o,t);i.push({ref:l,data:o.join("")});o.length=0;await writeObject(s,c,o,t);i.push({ref:s,data:o.join("")})}async canUpdateStructTree({pdfManager:e,xref:t,newAnnotationsByPage:a}){if(!this.ref){warn("Cannot update the struct tree: no root reference.");return!1}let r=this.dict.get("ParentTreeNextKey");if(!Number.isInteger(r)||r<0){warn("Cannot update the struct tree: invalid next key.");return!1}const i=this.dict.get("ParentTree");if(!(i instanceof Dict)){warn("Cannot update the struct tree: ParentTree isn't a dict.");return!1}const n=i.get("Nums");if(!Array.isArray(n)){warn("Cannot update the struct tree: nums isn't an array.");return!1}const s=new NumberTree(i,t);for(const t of a.keys()){const{pageDict:a}=await e.getPage(t);if(!a.has("StructParents"))continue;const r=a.get("StructParents");if(!Number.isInteger(r)||!Array.isArray(s.get(r))){warn(`Cannot save the struct tree: page ${t} has a wrong id.`);return!1}}let o=!0;for(const[t,i]of a){const{pageDict:a}=await e.getPage(t);StructTreeRoot.#M({elements:i,xref:this.dict.xref,pageDict:a,numberTree:s});for(const e of i)if(e.accessibilityData?.type){e.parentTreeId=r++;o=!1}}if(o){for(const e of a.values())for(const t of e){delete t.parentTreeId;delete t.structTreeParent}return!1}return!0}async updateStructureTree({newAnnotationsByPage:e,pdfManager:t,newRefs:a}){const r=this.dict.xref,i=this.dict.clone(),n=this.ref;let s,o=i.getRaw("ParentTree");if(o instanceof Ref)s=r.fetch(o);else{s=o;o=r.getNewTemporaryRef();i.set("ParentTree",o)}s=s.clone();let c=s.getRaw("Nums"),l=null;if(c instanceof Ref){l=c;c=r.fetch(l)}c=c.slice();l||s.set("Nums",c);let h=i.getRaw("K"),u=null;if(h instanceof Ref){u=h;h=r.fetch(u)}else{u=r.getNewTemporaryRef();i.set("K",u)}h=Array.isArray(h)?h.slice():[h];const d=[],f=await StructTreeRoot.#T({newAnnotationsByPage:e,structTreeRootRef:n,kids:h,nums:c,xref:r,pdfManager:t,newRefs:a,buffer:d});i.set("ParentTreeNextKey",f);d.length=0;await writeObject(u,h,d,r);a.push({ref:u,data:d.join("")});if(l){d.length=0;await writeObject(l,c,d,r);a.push({ref:l,data:d.join("")})}d.length=0;await writeObject(o,s,d,r);a.push({ref:o,data:d.join("")});d.length=0;await writeObject(n,i,d,r);a.push({ref:n,data:d.join("")})}static async#T({newAnnotationsByPage:e,structTreeRootRef:t,kids:a,nums:r,xref:i,pdfManager:n,newRefs:s,buffer:o}){const c=Name.get("OBJR");let l=-1/0;for(const[h,u]of e){const{ref:e}=await n.getPage(h),d=e instanceof Ref;for(const{accessibilityData:n,ref:h,parentTreeId:f,structTreeParent:g}of u){if(!n?.type)continue;const{type:u,title:p,lang:m,alt:b,expanded:y,actualText:w}=n;l=Math.max(l,f);const x=i.getNewTemporaryRef(),k=new Dict(i);k.set("S",Name.get(u));p&&k.set("T",p);m&&k.set("Lang",m);b&&k.set("Alt",b);y&&k.set("E",y);w&&k.set("ActualText",w);g?await this.#D({structTreeParent:g,tagDict:k,newTagRef:x,fallbackRef:t,xref:i,newRefs:s,buffer:o}):k.set("P",t);const S=new Dict(i);k.set("K",S);S.set("Type",c);d&&S.set("Pg",e);S.set("Obj",h);o.length=0;await writeObject(x,k,o,i);s.push({ref:x,data:o.join("")});r.push(f,x);a.push(x)}}return l+1}static#M({elements:e,xref:t,pageDict:a,numberTree:r}){const i=new Map;for(const t of e)if(t.structTreeParentId){const e=parseInt(t.structTreeParentId.split("_mc")[1],10);i.set(e,t)}const n=a.get("StructParents");if(!Number.isInteger(n))return;const s=r.get(n),updateElement=(e,a,r)=>{const n=i.get(e);if(n){const e=a.getRaw("P"),i=t.fetchIfRef(e);e instanceof Ref&&i instanceof Dict&&(n.structTreeParent={ref:r,dict:a});return!0}return!1};for(const e of s){if(!(e instanceof Ref))continue;const a=t.fetch(e),r=a.get("K");if(Number.isInteger(r))updateElement(r,a,e);else if(Array.isArray(r))for(let i of r){i=t.fetchIfRef(i);if(Number.isInteger(i)&&updateElement(i,a,e))break}}}static async#D({structTreeParent:{ref:e,dict:t},tagDict:a,newTagRef:r,fallbackRef:i,xref:n,newRefs:s,buffer:o}){const c=t.getRaw("P");let l=n.fetchIfRef(c);a.set("P",c);let h,u=!1,d=l.getRaw("K");if(d instanceof Ref)h=n.fetch(d);else{h=d;d=n.getNewTemporaryRef();l=l.clone();l.set("K",d);u=!0}if(Array.isArray(h)){const t=h.indexOf(e);if(!(t>=0)){warn("Cannot update the struct tree: parent kid not found.");a.set("P",i);return}h=h.slice();h.splice(t+1,0,r)}else if(h instanceof Dict){h=[d,r];d=n.getNewTemporaryRef();l.set("K",d);u=!0}o.length=0;await writeObject(d,h,o,n);s.push({ref:d,data:o.join("")});if(u){o.length=0;await writeObject(c,l,o,n);s.push({ref:c,data:o.join("")})}}}class StructElementNode{constructor(e,t){this.tree=e;this.dict=t;this.kids=[];this.parseKids()}get role(){const e=this.dict.get("S"),t=e instanceof Name?e.name:"",{root:a}=this.tree;return a.roleMap.has(t)?a.roleMap.get(t):t}parseKids(){let e=null;const t=this.dict.getRaw("Pg");t instanceof Ref&&(e=t.toString());const a=this.dict.get("K");if(Array.isArray(a))for(const t of a){const a=this.parseKid(e,t);a&&this.kids.push(a)}else{const t=this.parseKid(e,a);t&&this.kids.push(t)}}parseKid(e,t){if(Number.isInteger(t))return this.tree.pageDict.objId!==e?null:new StructElement({type:Bn,mcid:t,pageObjId:e});let a=null;t instanceof Ref?a=this.dict.xref.fetch(t):t instanceof Dict&&(a=t);if(!a)return null;const r=a.getRaw("Pg");r instanceof Ref&&(e=r.toString());const i=a.get("Type")instanceof Name?a.get("Type").name:null;if("MCR"===i){if(this.tree.pageDict.objId!==e)return null;const t=a.getRaw("Stm");return new StructElement({type:Rn,refObjId:t instanceof Ref?t.toString():null,pageObjId:e,mcid:a.get("MCID")})}if("OBJR"===i){if(this.tree.pageDict.objId!==e)return null;const t=a.getRaw("Obj");return new StructElement({type:Nn,refObjId:t instanceof Ref?t.toString():null,pageObjId:e})}return new StructElement({type:Pn,dict:a})}}class StructElement{constructor({type:e,dict:t=null,mcid:a=null,pageObjId:r=null,refObjId:i=null}){this.type=e;this.dict=t;this.mcid=a;this.pageObjId=r;this.refObjId=i;this.parentNode=null}}class StructTreePage{constructor(e,t){this.root=e;this.rootDict=e?e.dict:null;this.pageDict=t;this.nodes=[]}parse(e){if(!this.root||!this.rootDict)return;const t=this.rootDict.get("ParentTree");if(!t)return;const a=this.pageDict.get("StructParents"),r=e instanceof Ref&&this.root.structParentIds?.get(e);if(!Number.isInteger(a)&&!r)return;const i=new Map,n=new NumberTree(t,this.rootDict.xref);if(Number.isInteger(a)){const e=n.get(a);if(Array.isArray(e))for(const t of e)t instanceof Ref&&this.addNode(this.rootDict.xref.fetch(t),i)}if(r)for(const[e,t]of r){const a=n.get(e);if(a){const e=this.addNode(this.rootDict.xref.fetchIfRef(a),i);1===e?.kids?.length&&e.kids[0].type===Nn&&(e.kids[0].type=t)}}}addNode(e,t,a=0){if(a>40){warn("StructTree MAX_DEPTH reached.");return null}if(t.has(e))return t.get(e);const r=new StructElementNode(this,e);t.set(e,r);const i=e.get("P");if(!i||isName(i.get("Type"),"StructTreeRoot")){this.addTopLevelNode(e,r)||t.delete(e);return r}const n=this.addNode(i,t,a+1);if(!n)return r;let s=!1;for(const t of n.kids)if(t.type===Pn&&t.dict===e){t.parentNode=r;s=!0}s||t.delete(e);return r}addTopLevelNode(e,t){const a=this.rootDict.get("K");if(!a)return!1;if(a instanceof Dict){if(a.objId!==e.objId)return!1;this.nodes[0]=t;return!0}if(!Array.isArray(a))return!0;let r=!1;for(let i=0;i40){warn("StructTree too deep to be fully serialized.");return}const r=Object.create(null);r.role=e.role;r.children=[];t.children.push(r);const i=e.dict.get("Alt");"string"==typeof i&&(r.alt=stringToPDFString(i));const n=e.dict.get("Lang");"string"==typeof n&&(r.lang=stringToPDFString(n));for(const t of e.kids){const e=t.type===Pn?t.parentNode:null;e?nodeToSerializable(e,r,a+1):t.type===Bn||t.type===Rn?r.children.push({type:"content",id:`p${t.pageObjId}_mc${t.mcid}`}):t.type===Nn?r.children.push({type:"object",id:t.refObjId}):t.type===En&&r.children.push({type:"annotation",id:`pdfjs_internal_id_${t.refObjId}`})}}const e=Object.create(null);e.children=[];e.role="Root";for(const t of this.nodes)t&&nodeToSerializable(t,e);return e}}function fetchDestination(e){e instanceof Dict&&(e=e.get("D"));return Array.isArray(e)?e:null}function fetchRemoteDest(e){let t=e.get("D");if(t){t instanceof Name&&(t=t.name);if("string"==typeof t)return stringToPDFString(t);if(Array.isArray(t))return JSON.stringify(t)}return null}class Catalog{constructor(e,t){this.pdfManager=e;this.xref=t;this._catDict=t.getCatalogObj();if(!(this._catDict instanceof Dict))throw new FormatError("Catalog object is not a dictionary.");this.toplevelPagesDict;this._actualNumPages=null;this.fontCache=new RefSetCache;this.builtInCMapCache=new Map;this.standardFontDataCache=new Map;this.globalImageCache=new GlobalImageCache;this.pageKidsCountCache=new RefSetCache;this.pageIndexCache=new RefSetCache;this.nonBlendModesSet=new RefSet;this.systemFontCache=new Map}cloneDict(){return this._catDict.clone()}get version(){const e=this._catDict.get("Version");if(e instanceof Name){if(ya.test(e.name))return shadow(this,"version",e.name);warn(`Invalid PDF catalog version: ${e.name}`)}return shadow(this,"version",null)}get lang(){const e=this._catDict.get("Lang");return shadow(this,"lang","string"==typeof e?stringToPDFString(e):null)}get needsRendering(){const e=this._catDict.get("NeedsRendering");return shadow(this,"needsRendering","boolean"==typeof e&&e)}get collection(){let e=null;try{const t=this._catDict.get("Collection");t instanceof Dict&&t.size>0&&(e=t)}catch(e){if(e instanceof MissingDataException)throw e;info("Cannot fetch Collection entry; assuming no collection is present.")}return shadow(this,"collection",e)}get acroForm(){let e=null;try{const t=this._catDict.get("AcroForm");t instanceof Dict&&t.size>0&&(e=t)}catch(e){if(e instanceof MissingDataException)throw e;info("Cannot fetch AcroForm entry; assuming no forms are present.")}return shadow(this,"acroForm",e)}get acroFormRef(){const e=this._catDict.getRaw("AcroForm");return shadow(this,"acroFormRef",e instanceof Ref?e:null)}get metadata(){const e=this._catDict.getRaw("Metadata");if(!(e instanceof Ref))return shadow(this,"metadata",null);let t=null;try{const a=this.xref.fetch(e,!this.xref.encrypt?.encryptMetadata);if(a instanceof BaseStream&&a.dict instanceof Dict){const e=a.dict.get("Type"),r=a.dict.get("Subtype");if(isName(e,"Metadata")&&isName(r,"XML")){const e=stringToUTF8String(a.getString());e&&(t=new MetadataParser(e).serializable)}}}catch(e){if(e instanceof MissingDataException)throw e;info(`Skipping invalid Metadata: "${e}".`)}return shadow(this,"metadata",t)}get markInfo(){let e=null;try{e=this._readMarkInfo()}catch(e){if(e instanceof MissingDataException)throw e;warn("Unable to read mark info.")}return shadow(this,"markInfo",e)}_readMarkInfo(){const e=this._catDict.get("MarkInfo");if(!(e instanceof Dict))return null;const t={Marked:!1,UserProperties:!1,Suspects:!1};for(const a in t){const r=e.get(a);"boolean"==typeof r&&(t[a]=r)}return t}get structTreeRoot(){let e=null;try{e=this._readStructTreeRoot()}catch(e){if(e instanceof MissingDataException)throw e;warn("Unable read to structTreeRoot info.")}return shadow(this,"structTreeRoot",e)}_readStructTreeRoot(){const e=this._catDict.getRaw("StructTreeRoot"),t=this.xref.fetchIfRef(e);if(!(t instanceof Dict))return null;const a=new StructTreeRoot(t,e);a.init();return a}get toplevelPagesDict(){const e=this._catDict.get("Pages");if(!(e instanceof Dict))throw new FormatError("Invalid top-level pages dictionary.");return shadow(this,"toplevelPagesDict",e)}get documentOutline(){let e=null;try{e=this._readDocumentOutline()}catch(e){if(e instanceof MissingDataException)throw e;warn("Unable to read document outline.")}return shadow(this,"documentOutline",e)}_readDocumentOutline(){let e=this._catDict.get("Outlines");if(!(e instanceof Dict))return null;e=e.getRaw("First");if(!(e instanceof Ref))return null;const t={items:[]},a=[{obj:e,parent:t}],r=new RefSet;r.put(e);const i=this.xref,n=new Uint8ClampedArray(3);for(;a.length>0;){const t=a.shift(),s=i.fetchIfRef(t.obj);if(null===s)continue;if(!s.has("Title"))throw new FormatError("Invalid outline item encountered.");const o={url:null,dest:null,action:null};Catalog.parseDestDictionary({destDict:s,resultObj:o,docBaseUrl:this.baseUrl,docAttachments:this.attachments});const c=s.get("Title"),l=s.get("F")||0,h=s.getArray("C"),u=s.get("Count");let d=n;!Array.isArray(h)||3!==h.length||0===h[0]&&0===h[1]&&0===h[2]||(d=ColorSpace.singletons.rgb.getRgb(h,0));const f={action:o.action,attachment:o.attachment,dest:o.dest,url:o.url,unsafeUrl:o.unsafeUrl,newWindow:o.newWindow,setOCGState:o.setOCGState,title:stringToPDFString(c),color:d,count:Number.isInteger(u)?u:void 0,bold:!!(2&l),italic:!!(1&l),items:[]};t.parent.items.push(f);e=s.getRaw("First");if(e instanceof Ref&&!r.has(e)){a.push({obj:e,parent:f});r.put(e)}e=s.getRaw("Next");if(e instanceof Ref&&!r.has(e)){a.push({obj:e,parent:t.parent});r.put(e)}}return t.items.length>0?t.items:null}get permissions(){let e=null;try{e=this._readPermissions()}catch(e){if(e instanceof MissingDataException)throw e;warn("Unable to read permissions.")}return shadow(this,"permissions",e)}_readPermissions(){const e=this.xref.trailer.get("Encrypt");if(!(e instanceof Dict))return null;let t=e.get("P");if("number"!=typeof t)return null;t+=2**32;const a=[];for(const e in x){const r=x[e];t&r&&a.push(r)}return a}get optionalContentConfig(){let e=null;try{const t=this._catDict.get("OCProperties");if(!t)return shadow(this,"optionalContentConfig",null);const a=t.get("D");if(!a)return shadow(this,"optionalContentConfig",null);const r=t.get("OCGs");if(!Array.isArray(r))return shadow(this,"optionalContentConfig",null);const i=[],n=new RefSet;for(const e of r){if(!(e instanceof Ref)||n.has(e))continue;n.put(e);const t=this.xref.fetch(e);i.push({id:e.toString(),name:"string"==typeof t.get("Name")?stringToPDFString(t.get("Name")):null,intent:"string"==typeof t.get("Intent")?stringToPDFString(t.get("Intent")):null})}e=this._readOptionalContentConfig(a,n);e.groups=i}catch(e){if(e instanceof MissingDataException)throw e;warn(`Unable to read optional content config: ${e}`)}return shadow(this,"optionalContentConfig",e)}_readOptionalContentConfig(e,t){function parseOnOff(e){const a=[];if(Array.isArray(e))for(const r of e)r instanceof Ref&&t.has(r)&&a.push(r.toString());return a}function parseOrder(e,a=0){if(!Array.isArray(e))return null;const i=[];for(const n of e){if(n instanceof Ref&&t.has(n)){r.put(n);i.push(n.toString());continue}const e=parseNestedOrder(n,a);e&&i.push(e)}if(a>0)return i;const n=[];for(const e of t)r.has(e)||n.push(e.toString());n.length&&i.push({name:null,order:n});return i}function parseNestedOrder(e,t){if(++t>i){warn("parseNestedOrder - reached MAX_NESTED_LEVELS.");return null}const r=a.fetchIfRef(e);if(!Array.isArray(r))return null;const n=a.fetchIfRef(r[0]);if("string"!=typeof n)return null;const s=parseOrder(r.slice(1),t);return s&&s.length?{name:stringToPDFString(n),order:s}:null}const a=this.xref,r=new RefSet,i=10;return{name:"string"==typeof e.get("Name")?stringToPDFString(e.get("Name")):null,creator:"string"==typeof e.get("Creator")?stringToPDFString(e.get("Creator")):null,baseState:e.get("BaseState")instanceof Name?e.get("BaseState").name:null,on:parseOnOff(e.get("ON")),off:parseOnOff(e.get("OFF")),order:parseOrder(e.get("Order")),groups:null}}setActualNumPages(e=null){this._actualNumPages=e}get hasActualNumPages(){return null!==this._actualNumPages}get _pagesCount(){const e=this.toplevelPagesDict.get("Count");if(!Number.isInteger(e))throw new FormatError("Page count in top-level pages dictionary is not an integer.");return shadow(this,"_pagesCount",e)}get numPages(){return this.hasActualNumPages?this._actualNumPages:this._pagesCount}get destinations(){const e=this._readDests(),t=Object.create(null);if(e instanceof NameTree)for(const[a,r]of e.getAll()){const e=fetchDestination(r);e&&(t[stringToPDFString(a)]=e)}else e instanceof Dict&&e.forEach((function(e,a){const r=fetchDestination(a);r&&(t[e]=r)}));return shadow(this,"destinations",t)}getDestination(e){const t=this._readDests();if(t instanceof NameTree){const a=fetchDestination(t.get(e));if(a)return a;const r=this.destinations[e];if(r){warn(`Found "${e}" at an incorrect position in the NameTree.`);return r}}else if(t instanceof Dict){const a=fetchDestination(t.get(e));if(a)return a}return null}_readDests(){const e=this._catDict.get("Names");return e?.has("Dests")?new NameTree(e.getRaw("Dests"),this.xref):this._catDict.has("Dests")?this._catDict.get("Dests"):void 0}get pageLabels(){let e=null;try{e=this._readPageLabels()}catch(e){if(e instanceof MissingDataException)throw e;warn("Unable to read page labels.")}return shadow(this,"pageLabels",e)}_readPageLabels(){const e=this._catDict.getRaw("PageLabels");if(!e)return null;const t=new Array(this.numPages);let a=null,r="";const i=new NumberTree(e,this.xref).getAll();let n="",s=1;for(let e=0,o=this.numPages;e=1))throw new FormatError("Invalid start in PageLabel dictionary.");s=e}else s=1}switch(a){case"D":n=s;break;case"R":case"r":n=toRomanNumerals(s,"r"===a);break;case"A":case"a":const e=26,t="a"===a?97:65,r=s-1;n=String.fromCharCode(t+r%e).repeat(Math.floor(r/e)+1);break;default:if(a)throw new FormatError(`Invalid style "${a}" in PageLabel dictionary.`);n=""}t[e]=r+n;s++}return t}get pageLayout(){const e=this._catDict.get("PageLayout");let t="";if(e instanceof Name)switch(e.name){case"SinglePage":case"OneColumn":case"TwoColumnLeft":case"TwoColumnRight":case"TwoPageLeft":case"TwoPageRight":t=e.name}return shadow(this,"pageLayout",t)}get pageMode(){const e=this._catDict.get("PageMode");let t="UseNone";if(e instanceof Name)switch(e.name){case"UseNone":case"UseOutlines":case"UseThumbs":case"FullScreen":case"UseOC":case"UseAttachments":t=e.name}return shadow(this,"pageMode",t)}get viewerPreferences(){const e=this._catDict.get("ViewerPreferences");if(!(e instanceof Dict))return shadow(this,"viewerPreferences",null);let t=null;for(const a of e.getKeys()){const r=e.get(a);let i;switch(a){case"HideToolbar":case"HideMenubar":case"HideWindowUI":case"FitWindow":case"CenterWindow":case"DisplayDocTitle":case"PickTrayByPDFSize":"boolean"==typeof r&&(i=r);break;case"NonFullScreenPageMode":if(r instanceof Name)switch(r.name){case"UseNone":case"UseOutlines":case"UseThumbs":case"UseOC":i=r.name;break;default:i="UseNone"}break;case"Direction":if(r instanceof Name)switch(r.name){case"L2R":case"R2L":i=r.name;break;default:i="L2R"}break;case"ViewArea":case"ViewClip":case"PrintArea":case"PrintClip":if(r instanceof Name)switch(r.name){case"MediaBox":case"CropBox":case"BleedBox":case"TrimBox":case"ArtBox":i=r.name;break;default:i="CropBox"}break;case"PrintScaling":if(r instanceof Name)switch(r.name){case"None":case"AppDefault":i=r.name;break;default:i="AppDefault"}break;case"Duplex":if(r instanceof Name)switch(r.name){case"Simplex":case"DuplexFlipShortEdge":case"DuplexFlipLongEdge":i=r.name;break;default:i="None"}break;case"PrintPageRange":if(Array.isArray(r)&&r.length%2==0){r.every(((e,t,a)=>Number.isInteger(e)&&e>0&&(0===t||e>=a[t-1])&&e<=this.numPages))&&(i=r)}break;case"NumCopies":Number.isInteger(r)&&r>0&&(i=r);break;default:warn(`Ignoring non-standard key in ViewerPreferences: ${a}.`);continue}if(void 0!==i){t||(t=Object.create(null));t[a]=i}else warn(`Bad value, for key "${a}", in ViewerPreferences: ${r}.`)}return shadow(this,"viewerPreferences",t)}get openAction(){const e=this._catDict.get("OpenAction"),t=Object.create(null);if(e instanceof Dict){const a=new Dict(this.xref);a.set("A",e);const r={url:null,dest:null,action:null};Catalog.parseDestDictionary({destDict:a,resultObj:r});Array.isArray(r.dest)?t.dest=r.dest:r.action&&(t.action=r.action)}else Array.isArray(e)&&(t.dest=e);return shadow(this,"openAction",objectSize(t)>0?t:null)}get attachments(){const e=this._catDict.get("Names");let t=null;if(e instanceof Dict&&e.has("EmbeddedFiles")){const a=new NameTree(e.getRaw("EmbeddedFiles"),this.xref);for(const[e,r]of a.getAll()){const a=new FileSpec(r,this.xref);t||(t=Object.create(null));t[stringToPDFString(e)]=a.serializable}}return shadow(this,"attachments",t)}get xfaImages(){const e=this._catDict.get("Names");let t=null;if(e instanceof Dict&&e.has("XFAImages")){const a=new NameTree(e.getRaw("XFAImages"),this.xref);for(const[e,r]of a.getAll()){t||(t=new Dict(this.xref));t.set(stringToPDFString(e),r)}}return shadow(this,"xfaImages",t)}_collectJavaScript(){const e=this._catDict.get("Names");let t=null;function appendIfJavaScriptDict(e,a){if(!(a instanceof Dict))return;if(!isName(a.get("S"),"JavaScript"))return;let r=a.get("JS");if(r instanceof BaseStream)r=r.getString();else if("string"!=typeof r)return;r=stringToPDFString(r).replaceAll("\0","");r&&(t||=new Map).set(e,r)}if(e instanceof Dict&&e.has("JavaScript")){const t=new NameTree(e.getRaw("JavaScript"),this.xref);for(const[e,a]of t.getAll())appendIfJavaScriptDict(stringToPDFString(e),a)}const a=this._catDict.get("OpenAction");a&&appendIfJavaScriptDict("OpenAction",a);return t}get jsActions(){const e=this._collectJavaScript();let t=collectActions(this.xref,this._catDict,xe);if(e){t||=Object.create(null);for(const[a,r]of e)a in t?t[a].push(r):t[a]=[r]}return shadow(this,"jsActions",t)}async fontFallback(e,t){const a=await Promise.all(this.fontCache);for(const r of a)if(r.loadedName===e){r.fallback(t);return}}async cleanup(e=!1){clearGlobalCaches();this.globalImageCache.clear(e);this.pageKidsCountCache.clear();this.pageIndexCache.clear();this.nonBlendModesSet.clear();const t=await Promise.all(this.fontCache);for(const{dict:e}of t)delete e.cacheKey;this.fontCache.clear();this.builtInCMapCache.clear();this.standardFontDataCache.clear();this.systemFontCache.clear()}async getPageDict(e){const t=[this.toplevelPagesDict],a=new RefSet,r=this._catDict.getRaw("Pages");r instanceof Ref&&a.put(r);const i=this.xref,n=this.pageKidsCountCache,s=this.pageIndexCache;let o=0;for(;t.length;){const r=t.pop();if(r instanceof Ref){const c=n.get(r);if(c>=0&&o+c<=e){o+=c;continue}if(a.has(r))throw new FormatError("Pages tree contains circular reference.");a.put(r);const l=await i.fetchAsync(r);if(l instanceof Dict){let t=l.getRaw("Type");t instanceof Ref&&(t=await i.fetchAsync(t));if(isName(t,"Page")||!l.has("Kids")){n.has(r)||n.put(r,1);s.has(r)||s.put(r,o);if(o===e)return[l,r];o++;continue}}t.push(l);continue}if(!(r instanceof Dict))throw new FormatError("Page dictionary kid reference points to wrong type of object.");const{objId:c}=r;let l=r.getRaw("Count");l instanceof Ref&&(l=await i.fetchAsync(l));if(Number.isInteger(l)&&l>=0){c&&!n.has(c)&&n.put(c,l);if(o+l<=e){o+=l;continue}}let h=r.getRaw("Kids");h instanceof Ref&&(h=await i.fetchAsync(h));if(!Array.isArray(h)){let t=r.getRaw("Type");t instanceof Ref&&(t=await i.fetchAsync(t));if(isName(t,"Page")||!r.has("Kids")){if(o===e)return[r,null];o++;continue}throw new FormatError("Page dictionary kids object is not an array.")}for(let e=h.length-1;e>=0;e--)t.push(h[e])}throw new Error(`Page index ${e} not found.`)}async getAllPageDicts(e=!1){const{ignoreErrors:t}=this.pdfManager.evaluatorOptions,a=[{currentNode:this.toplevelPagesDict,posInKids:0}],r=new RefSet,i=this._catDict.getRaw("Pages");i instanceof Ref&&r.put(i);const n=new Map,s=this.xref,o=this.pageIndexCache;let c=0;function addPageDict(e,t){t&&!o.has(t)&&o.put(t,c);n.set(c++,[e,t])}function addPageError(a){if(a instanceof XRefEntryException&&!e)throw a;if(e&&t&&0===c){warn(`getAllPageDicts - Skipping invalid first page: "${a}".`);a=Dict.empty}n.set(c++,[a,null])}for(;a.length>0;){const e=a.at(-1),{currentNode:t,posInKids:i}=e;let n=t.getRaw("Kids");if(n instanceof Ref)try{n=await s.fetchAsync(n)}catch(e){addPageError(e);break}if(!Array.isArray(n)){addPageError(new FormatError("Page dictionary kids object is not an array."));break}if(i>=n.length){a.pop();continue}const o=n[i];let c;if(o instanceof Ref){if(r.has(o)){addPageError(new FormatError("Pages tree contains circular reference."));break}r.put(o);try{c=await s.fetchAsync(o)}catch(e){addPageError(e);break}}else c=o;if(!(c instanceof Dict)){addPageError(new FormatError("Page dictionary kid reference points to wrong type of object."));break}let l=c.getRaw("Type");if(l instanceof Ref)try{l=await s.fetchAsync(l)}catch(e){addPageError(e);break}isName(l,"Page")||!c.has("Kids")?addPageDict(c,o instanceof Ref?o:null):a.push({currentNode:c,posInKids:0});e.posInKids++}return n}getPageIndex(e){const t=this.pageIndexCache.get(e);if(void 0!==t)return Promise.resolve(t);const a=this.xref;function pagesBeforeRef(t){let r,i=0;return a.fetchAsync(t).then((function(a){if(isRefsEqual(t,e)&&!function isDict(e,t){return e instanceof Dict&&(void 0===t||isName(e.get("Type"),t))}(a,"Page")&&!(a instanceof Dict&&!a.has("Type")&&a.has("Contents")))throw new FormatError("The reference does not point to a /Page dictionary.");if(!a)return null;if(!(a instanceof Dict))throw new FormatError("Node must be a dictionary.");r=a.getRaw("Parent");return a.getAsync("Parent")})).then((function(e){if(!e)return null;if(!(e instanceof Dict))throw new FormatError("Parent must be a dictionary.");return e.getAsync("Kids")})).then((function(e){if(!e)return null;const n=[];let s=!1;for(const r of e){if(!(r instanceof Ref))throw new FormatError("Kid must be a reference.");if(isRefsEqual(r,t)){s=!0;break}n.push(a.fetchAsync(r).then((function(e){if(!(e instanceof Dict))throw new FormatError("Kid node must be a dictionary.");e.has("Count")?i+=e.get("Count"):i++})))}if(!s)throw new FormatError("Kid reference not found in parent's kids.");return Promise.all(n).then((function(){return[i,r]}))}))}let r=0;const next=t=>pagesBeforeRef(t).then((t=>{if(!t){this.pageIndexCache.put(e,r);return r}const[a,i]=t;r+=a;return next(i)}));return next(e)}get baseUrl(){const e=this._catDict.get("URI");if(e instanceof Dict){const t=e.get("Base");if("string"==typeof t){const e=createValidAbsoluteUrl(t,null,{tryConvertEncoding:!0});if(e)return shadow(this,"baseUrl",e.href)}}return shadow(this,"baseUrl",this.pdfManager.docBaseUrl)}static parseDestDictionary({destDict:e,resultObj:t,docBaseUrl:a=null,docAttachments:r=null}){if(!(e instanceof Dict)){warn("parseDestDictionary: `destDict` must be a dictionary.");return}let i,n,s=e.get("A");if(!(s instanceof Dict))if(e.has("Dest"))s=e.get("Dest");else{s=e.get("AA");s instanceof Dict&&(s.has("D")?s=s.get("D"):s.has("U")&&(s=s.get("U")))}if(s instanceof Dict){const e=s.get("S");if(!(e instanceof Name)){warn("parseDestDictionary: Invalid type in Action dictionary.");return}const a=e.name;switch(a){case"ResetForm":const e=s.get("Flags"),o=0==(1&("number"==typeof e?e:0)),c=[],l=[];for(const e of s.get("Fields")||[])e instanceof Ref?l.push(e.toString()):"string"==typeof e&&c.push(stringToPDFString(e));t.resetForm={fields:c,refs:l,include:o};break;case"URI":i=s.get("URI");i instanceof Name&&(i="/"+i.name);break;case"GoTo":n=s.get("D");break;case"Launch":case"GoToR":const h=s.get("F");h instanceof Dict?i=h.get("F")||null:"string"==typeof h&&(i=h);const u=fetchRemoteDest(s);u&&"string"==typeof i&&(i=i.split("#",1)[0]+"#"+u);const d=s.get("NewWindow");"boolean"==typeof d&&(t.newWindow=d);break;case"GoToE":const f=s.get("T");let g;if(r&&f instanceof Dict){const e=f.get("R"),t=f.get("N");isName(e,"C")&&"string"==typeof t&&(g=r[stringToPDFString(t)])}if(g){t.attachment=g;const e=fetchRemoteDest(s);e&&(t.attachmentDest=e)}else warn('parseDestDictionary - unimplemented "GoToE" action.');break;case"Named":const p=s.get("N");p instanceof Name&&(t.action=p.name);break;case"SetOCGState":const m=s.get("State"),b=s.get("PreserveRB");if(!Array.isArray(m)||0===m.length)break;const y=[];for(const e of m)if(e instanceof Name)switch(e.name){case"ON":case"OFF":case"Toggle":y.push(e.name)}else e instanceof Ref&&y.push(e.toString());if(y.length!==m.length)break;t.setOCGState={state:y,preserveRB:"boolean"!=typeof b||b};break;case"JavaScript":const w=s.get("JS");let x;w instanceof BaseStream?x=w.getString():"string"==typeof w&&(x=w);const k=x&&recoverJsURL(stringToPDFString(x));if(k){i=k.url;t.newWindow=k.newWindow;break}default:if("JavaScript"===a||"SubmitForm"===a)break;warn(`parseDestDictionary - unsupported action: "${a}".`)}}else e.has("Dest")&&(n=e.get("Dest"));if("string"==typeof i){const e=createValidAbsoluteUrl(i,a,{addDefaultProtocol:!0,tryConvertEncoding:!0});e&&(t.url=e.href);t.unsafeUrl=i}if(n){n instanceof Name&&(n=n.name);"string"==typeof n?t.dest=stringToPDFString(n):Array.isArray(n)&&(t.dest=n)}}}function addChildren(e,t){if(e instanceof Dict)e=e.getRawValues();else if(e instanceof BaseStream)e=e.dict.getRawValues();else if(!Array.isArray(e))return;for(const r of e)((a=r)instanceof Ref||a instanceof Dict||a instanceof BaseStream||Array.isArray(a))&&t.push(r);var a}class ObjectLoader{constructor(e,t,a){this.dict=e;this.keys=t;this.xref=a;this.refSet=null}async load(){if(this.xref.stream.isDataLoaded)return;const{keys:e,dict:t}=this;this.refSet=new RefSet;const a=[];for(const r of e){const e=t.getRaw(r);void 0!==e&&a.push(e)}return this._walk(a)}async _walk(e){const t=[],a=[];for(;e.length;){let r=e.pop();if(r instanceof Ref){if(this.refSet.has(r))continue;try{this.refSet.put(r);r=this.xref.fetch(r)}catch(e){if(!(e instanceof MissingDataException)){warn(`ObjectLoader._walk - requesting all data: "${e}".`);this.refSet=null;const{manager:t}=this.xref.stream;return t.requestAllChunks()}t.push(r);a.push({begin:e.begin,end:e.end})}}if(r instanceof BaseStream){const e=r.getBaseStreams();if(e){let i=!1;for(const t of e)if(!t.isDataLoaded){i=!0;a.push({begin:t.start,end:t.end})}i&&t.push(r)}}addChildren(r,e)}if(a.length){await this.xref.stream.manager.requestRanges(a);for(const e of t)e instanceof Ref&&this.refSet.remove(e);return this._walk(t)}this.refSet=null}}const Ln=Symbol(),jn=Symbol(),_n=Symbol(),Un=Symbol(),Xn=Symbol(),qn=Symbol(),Hn=Symbol(),zn=Symbol(),Wn=Symbol(),$n=Symbol("content"),Gn=Symbol("data"),Vn=Symbol(),Kn=Symbol("extra"),Jn=Symbol(),Yn=Symbol(),Zn=Symbol(),Qn=Symbol(),es=Symbol(),ts=Symbol(),as=Symbol(),rs=Symbol(),is=Symbol(),ns=Symbol(),ss=Symbol(),os=Symbol(),cs=Symbol(),ls=Symbol(),hs=Symbol(),us=Symbol(),ds=Symbol(),fs=Symbol(),gs=Symbol(),ps=Symbol(),ms=Symbol(),bs=Symbol(),ys=Symbol(),ws=Symbol(),xs=Symbol(),ks=Symbol(),Ss=Symbol(),As=Symbol(),Cs=Symbol(),vs=Symbol(),Fs=Symbol(),Is=Symbol(),Os=Symbol("namespaceId"),Ts=Symbol("nodeName"),Ms=Symbol(),Ds=Symbol(),Bs=Symbol(),Rs=Symbol(),Ns=Symbol(),Es=Symbol(),Ls=Symbol(),js=Symbol(),_s=Symbol("root"),Us=Symbol(),Xs=Symbol(),qs=Symbol(),Hs=Symbol(),zs=Symbol(),Ws=Symbol(),$s=Symbol(),Gs=Symbol(),Vs=Symbol(),Ks=Symbol(),Js=Symbol(),Ys=Symbol("uid"),Zs=Symbol(),Qs={config:{id:0,check:e=>e.startsWith("http://www.xfa.org/schema/xci/")},connectionSet:{id:1,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-connection-set/")},datasets:{id:2,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-data/")},form:{id:3,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-form/")},localeSet:{id:4,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-locale-set/")},pdf:{id:5,check:e=>"http://ns.adobe.com/xdp/pdf/"===e},signature:{id:6,check:e=>"http://www.w3.org/2000/09/xmldsig#"===e},sourceSet:{id:7,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-source-set/")},stylesheet:{id:8,check:e=>"http://www.w3.org/1999/XSL/Transform"===e},template:{id:9,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-template/")},xdc:{id:10,check:e=>e.startsWith("http://www.xfa.org/schema/xdc/")},xdp:{id:11,check:e=>"http://ns.adobe.com/xdp/"===e},xfdf:{id:12,check:e=>"http://ns.adobe.com/xfdf/"===e},xhtml:{id:13,check:e=>"http://www.w3.org/1999/xhtml"===e},xmpmeta:{id:14,check:e=>"http://ns.adobe.com/xmpmeta/"===e}},eo={pt:e=>e,cm:e=>e/2.54*72,mm:e=>e/25.4*72,in:e=>72*e,px:e=>e},to=/([+-]?\d+\.?\d*)(.*)/;function stripQuotes(e){return e.startsWith("'")||e.startsWith('"')?e.slice(1,-1):e}function getInteger({data:e,defaultValue:t,validate:a}){if(!e)return t;e=e.trim();const r=parseInt(e,10);return!isNaN(r)&&a(r)?r:t}function getFloat({data:e,defaultValue:t,validate:a}){if(!e)return t;e=e.trim();const r=parseFloat(e);return!isNaN(r)&&a(r)?r:t}function getKeyword({data:e,defaultValue:t,validate:a}){return e&&a(e=e.trim())?e:t}function getStringOption(e,t){return getKeyword({data:e,defaultValue:t[0],validate:e=>t.includes(e)})}function getMeasurement(e,t="0"){t||="0";if(!e)return getMeasurement(t);const a=e.trim().match(to);if(!a)return getMeasurement(t);const[,r,i]=a,n=parseFloat(r);if(isNaN(n))return getMeasurement(t);if(0===n)return 0;const s=eo[i];return s?s(n):n}function getRatio(e){if(!e)return{num:1,den:1};const t=e.trim().split(/\s*:\s*/).map((e=>parseFloat(e))).filter((e=>!isNaN(e)));1===t.length&&t.push(1);if(0===t.length)return{num:1,den:1};const[a,r]=t;return{num:a,den:r}}function getRelevant(e){return e?e.trim().split(/\s+/).map((e=>({excluded:"-"===e[0],viewname:e.substring(1)}))):[]}class HTMLResult{static get FAILURE(){return shadow(this,"FAILURE",new HTMLResult(!1,null,null,null))}static get EMPTY(){return shadow(this,"EMPTY",new HTMLResult(!0,null,null,null))}constructor(e,t,a,r){this.success=e;this.html=t;this.bbox=a;this.breakNode=r}isBreak(){return!!this.breakNode}static breakNode(e){return new HTMLResult(!1,null,null,e)}static success(e,t=null){return new HTMLResult(!0,e,t,null)}}class FontFinder{constructor(e){this.fonts=new Map;this.cache=new Map;this.warned=new Set;this.defaultFont=null;this.add(e)}add(e,t=null){for(const t of e)this.addPdfFont(t);for(const e of this.fonts.values())e.regular||(e.regular=e.italic||e.bold||e.bolditalic);if(!t||0===t.size)return;const a=this.fonts.get("PdfJS-Fallback-PdfJS-XFA");for(const e of t)this.fonts.set(e,a)}addPdfFont(e){const t=e.cssFontInfo,a=t.fontFamily;let r=this.fonts.get(a);if(!r){r=Object.create(null);this.fonts.set(a,r);this.defaultFont||(this.defaultFont=r)}let i="";const n=parseFloat(t.fontWeight);0!==parseFloat(t.italicAngle)?i=n>=700?"bolditalic":"italic":n>=700&&(i="bold");if(!i){(e.name.includes("Bold")||e.psName?.includes("Bold"))&&(i="bold");(e.name.includes("Italic")||e.name.endsWith("It")||e.psName?.includes("Italic")||e.psName?.endsWith("It"))&&(i+="italic")}i||(i="regular");r[i]=e}getDefault(){return this.defaultFont}find(e,t=!0){let a=this.fonts.get(e)||this.cache.get(e);if(a)return a;const r=/,|-|_| |bolditalic|bold|italic|regular|it/gi;let i=e.replaceAll(r,"");a=this.fonts.get(i);if(a){this.cache.set(e,a);return a}i=i.toLowerCase();const n=[];for(const[e,t]of this.fonts.entries())e.replaceAll(r,"").toLowerCase().startsWith(i)&&n.push(t);if(0===n.length)for(const[,e]of this.fonts.entries())e.regular.name?.replaceAll(r,"").toLowerCase().startsWith(i)&&n.push(e);if(0===n.length){i=i.replaceAll(/psmt|mt/gi,"");for(const[e,t]of this.fonts.entries())e.replaceAll(r,"").toLowerCase().startsWith(i)&&n.push(t)}if(0===n.length)for(const e of this.fonts.values())e.regular.name?.replaceAll(r,"").toLowerCase().startsWith(i)&&n.push(e);if(n.length>=1){1!==n.length&&t&&warn(`XFA - Too many choices to guess the correct font: ${e}`);this.cache.set(e,n[0]);return n[0]}if(t&&!this.warned.has(e)){this.warned.add(e);warn(`XFA - Cannot find the font: ${e}`)}return null}}function selectFont(e,t){return"italic"===e.posture?"bold"===e.weight?t.bolditalic:t.italic:"bold"===e.weight?t.bold:t.regular}class FontInfo{constructor(e,t,a,r){this.lineHeight=a;this.paraMargin=t||{top:0,bottom:0,left:0,right:0};if(!e){[this.pdfFont,this.xfaFont]=this.defaultFont(r);return}this.xfaFont={typeface:e.typeface,posture:e.posture,weight:e.weight,size:e.size,letterSpacing:e.letterSpacing};const i=r.find(e.typeface);if(i){this.pdfFont=selectFont(e,i);this.pdfFont||([this.pdfFont,this.xfaFont]=this.defaultFont(r))}else[this.pdfFont,this.xfaFont]=this.defaultFont(r)}defaultFont(e){const t=e.find("Helvetica",!1)||e.find("Myriad Pro",!1)||e.find("Arial",!1)||e.getDefault();if(t?.regular){const e=t.regular;return[e,{typeface:e.cssFontInfo.fontFamily,posture:"normal",weight:"normal",size:10,letterSpacing:0}]}return[null,{typeface:"Courier",posture:"normal",weight:"normal",size:10,letterSpacing:0}]}}class FontSelector{constructor(e,t,a,r){this.fontFinder=r;this.stack=[new FontInfo(e,t,a,r)]}pushData(e,t,a){const r=this.stack.at(-1);for(const t of["typeface","posture","weight","size","letterSpacing"])e[t]||(e[t]=r.xfaFont[t]);for(const e of["top","bottom","left","right"])isNaN(t[e])&&(t[e]=r.paraMargin[e]);const i=new FontInfo(e,t,a||r.lineHeight,this.fontFinder);i.pdfFont||(i.pdfFont=r.pdfFont);this.stack.push(i)}popFont(){this.stack.pop()}topFont(){return this.stack.at(-1)}}class TextMeasure{constructor(e,t,a,r){this.glyphs=[];this.fontSelector=new FontSelector(e,t,a,r);this.extraHeight=0}pushData(e,t,a){this.fontSelector.pushData(e,t,a)}popFont(e){return this.fontSelector.popFont()}addPara(){const e=this.fontSelector.topFont();this.extraHeight+=e.paraMargin.top+e.paraMargin.bottom}addString(e){if(!e)return;const t=this.fontSelector.topFont(),a=t.xfaFont.size;if(t.pdfFont){const r=t.xfaFont.letterSpacing,i=t.pdfFont,n=i.lineHeight||1.2,s=t.lineHeight||Math.max(1.2,n)*a,o=n-(void 0===i.lineGap?.2:i.lineGap),c=Math.max(1,o)*a,l=a/1e3,h=i.defaultWidth||i.charsToGlyphs(" ")[0].width;for(const t of e.split(/[\u2029\n]/)){const e=i.encodeString(t).join(""),a=i.charsToGlyphs(e);for(const e of a){const t=e.width||h;this.glyphs.push([t*l+r,s,c,e.unicode,!1])}this.glyphs.push([0,0,0,"\n",!0])}this.glyphs.pop()}else{for(const t of e.split(/[\u2029\n]/)){for(const e of t.split(""))this.glyphs.push([a,1.2*a,a,e,!1]);this.glyphs.push([0,0,0,"\n",!0])}this.glyphs.pop()}}compute(e){let t=-1,a=0,r=0,i=0,n=0,s=0,o=!1,c=!0;for(let l=0,h=this.glyphs.length;le){r=Math.max(r,n);n=0;i+=s;s=m;t=-1;a=0;o=!0;c=!1}else{s=Math.max(m,s);a=n;n+=h;t=l}else if(n+h>e){i+=s;s=m;if(-1!==t){l=t;r=Math.max(r,a);n=0;t=-1;a=0}else{r=Math.max(r,n);n=h}o=!0;c=!1}else{n+=h;s=Math.max(m,s)}}r=Math.max(r,n);i+=s+this.extraHeight;return{width:1.02*r,height:i,isBroken:o}}}const ao=/^[^.[]+/,ro=/^[^\]]+/,io={dot:0,dotDot:1,dotHash:2,dotBracket:3,dotParen:4},no=new Map([["$data",(e,t)=>e.datasets?e.datasets.data:e],["$record",(e,t)=>(e.datasets?e.datasets.data:e)[os]()[0]],["$template",(e,t)=>e.template],["$connectionSet",(e,t)=>e.connectionSet],["$form",(e,t)=>e.form],["$layout",(e,t)=>e.layout],["$host",(e,t)=>e.host],["$dataWindow",(e,t)=>e.dataWindow],["$event",(e,t)=>e.event],["!",(e,t)=>e.datasets],["$xfa",(e,t)=>e],["xfa",(e,t)=>e],["$",(e,t)=>t]]),so=new WeakMap;function parseExpression(e,t,a=!0){let r=e.match(ao);if(!r)return null;let[i]=r;const n=[{name:i,cacheName:"."+i,index:0,js:null,formCalc:null,operator:io.dot}];let s=i.length;for(;s0&&h.push(e)}if(0!==h.length||o||0!==c)e=isFinite(l)?h.filter((e=>le[l])):h.flat();else{const a=t[us]();if(!(t=a))return null;c=-1;e=[t]}}return 0===e.length?null:e}function createDataNode(e,t,a){const r=parseExpression(a);if(!r)return null;if(r.some((e=>e.operator===io.dotDot)))return null;const i=no.get(r[0].name);let n=0;if(i){e=i(e,t);n=1}else e=t||e;for(let t=r.length;ne[$s]())).join("")}get[lo](){const e=Object.getPrototypeOf(this);if(!e._attributes){const t=e._attributes=new Set;for(const e of Object.getOwnPropertyNames(this)){if(null===this[e]||this[e]instanceof XFAObject||this[e]instanceof XFAObjectArray)break;t.add(e)}}return shadow(this,lo,e._attributes)}[ks](e){let t=this;for(;t;){if(t===e)return!0;t=t[us]()}return!1}[us](){return this[ko]}[hs](){return this[us]()}[os](e=null){return e?this[e]:this[ho]}[Vn](){const e=Object.create(null);this[$n]&&(e.$content=this[$n]);for(const t of Object.getOwnPropertyNames(this)){const a=this[t];null!==a&&(a instanceof XFAObject?e[t]=a[Vn]():a instanceof XFAObjectArray?a.isEmpty()||(e[t]=a.dump()):e[t]=a)}return e}[Js](){return null}[Vs](){return HTMLResult.EMPTY}*[cs](){for(const e of this[os]())yield e}*[po](e,t){for(const a of this[cs]())if(!e||t===e.has(a[Ts])){const e=this[es](),t=a[Vs](e);t.success||(this[Kn].failingNode=a);yield t}}[Yn](){return null}[jn](e,t){this[Kn].children.push(e)}[es](){}[Un]({filter:e=null,include:t=!0}){if(this[Kn].generator){const e=this[es](),t=this[Kn].failingNode[Vs](e);if(!t.success)return t;t.html&&this[jn](t.html,t.bbox);delete this[Kn].failingNode}else this[Kn].generator=this[po](e,t);for(;;){const e=this[Kn].generator.next();if(e.done)break;const t=e.value;if(!t.success)return t;t.html&&this[jn](t.html,t.bbox)}this[Kn].generator=null;return HTMLResult.EMPTY}[Hs](e){this[Ao]=new Set(Object.keys(e))}[bo](e){const t=this[lo],a=this[Ao];return[...e].filter((e=>t.has(e)&&!a.has(e)))}[Us](e,t=new Set){for(const a of this[ho])a[So](e,t)}[So](e,t){const a=this[mo](e,t);a?this[oo](a,e,t):this[Us](e,t)}[mo](e,t){const{use:a,usehref:r}=this;if(!a&&!r)return null;let i=null,n=null,s=null,o=a;if(r){o=r;r.startsWith("#som(")&&r.endsWith(")")?n=r.slice(5,-1):r.startsWith(".#som(")&&r.endsWith(")")?n=r.slice(6,-1):r.startsWith("#")?s=r.slice(1):r.startsWith(".#")&&(s=r.slice(2))}else a.startsWith("#")?s=a.slice(1):n=a;this.use=this.usehref="";if(s)i=e.get(s);else{i=searchNode(e.get(_s),this,n,!0,!1);i&&(i=i[0])}if(!i){warn(`XFA - Invalid prototype reference: ${o}.`);return null}if(i[Ts]!==this[Ts]){warn(`XFA - Incompatible prototype: ${i[Ts]} !== ${this[Ts]}.`);return null}if(t.has(i)){warn("XFA - Cycle detected in prototypes use.");return null}t.add(i);const c=i[mo](e,t);c&&i[oo](c,e,t);i[Us](e,t);t.delete(i);return i}[oo](e,t,a){if(a.has(e)){warn("XFA - Cycle detected in prototypes use.");return}!this[$n]&&e[$n]&&(this[$n]=e[$n]);new Set(a).add(e);for(const t of this[bo](e[Ao])){this[t]=e[t];this[Ao]&&this[Ao].add(t)}for(const r of Object.getOwnPropertyNames(this)){if(this[lo].has(r))continue;const i=this[r],n=e[r];if(i instanceof XFAObjectArray){for(const e of i[ho])e[So](t,a);for(let r=i[ho].length,s=n[ho].length;rXFAObject[uo](e))):"object"==typeof e&&null!==e?Object.assign({},e):e}[zn](){const e=Object.create(Object.getPrototypeOf(this));for(const t of Object.getOwnPropertySymbols(this))try{e[t]=this[t]}catch{shadow(e,t,this[t])}e[Ys]=`${e[Ts]}${vo++}`;e[ho]=[];for(const t of Object.getOwnPropertyNames(this)){if(this[lo].has(t)){e[t]=XFAObject[uo](this[t]);continue}const a=this[t];e[t]=a instanceof XFAObjectArray?new XFAObjectArray(a[wo]):null}for(const t of this[ho]){const a=t[Ts],r=t[zn]();e[ho].push(r);r[ko]=e;null===e[a]?e[a]=r:e[a][ho].push(r)}return e}[os](e=null){return e?this[ho].filter((t=>t[Ts]===e)):this[ho]}[ts](e){return this[e]}[as](e,t,a=!0){return Array.from(this[rs](e,t,a))}*[rs](e,t,a=!0){if("parent"!==e){for(const a of this[ho]){a[Ts]===e&&(yield a);a.name===e&&(yield a);(t||a[vs]())&&(yield*a[rs](e,t,!1))}a&&this[lo].has(e)&&(yield new XFAAttribute(this,e,this[e]))}else yield this[ko]}}class XFAObjectArray{constructor(e=1/0){this[wo]=e;this[ho]=[]}get isXFAObject(){return!1}get isXFAObjectArray(){return!0}push(e){if(this[ho].length<=this[wo]){this[ho].push(e);return!0}warn(`XFA - node "${e[Ts]}" accepts no more than ${this[wo]} children`);return!1}isEmpty(){return 0===this[ho].length}dump(){return 1===this[ho].length?this[ho][0][Vn]():this[ho].map((e=>e[Vn]()))}[zn](){const e=new XFAObjectArray(this[wo]);e[ho]=this[ho].map((e=>e[zn]()));return e}get children(){return this[ho]}clear(){this[ho].length=0}}class XFAAttribute{constructor(e,t,a){this[ko]=e;this[Ts]=t;this[$n]=a;this[Wn]=!1;this[Ys]="attribute"+vo++}[us](){return this[ko]}[xs](){return!0}[is](){return this[$n].trim()}[zs](e){e=e.value||"";this[$n]=e.toString()}[$s](){return this[$n]}[ks](e){return this[ko]===e||this[ko][ks](e)}}class XmlObject extends XFAObject{constructor(e,t,a={}){super(e,t);this[$n]="";this[fo]=null;if("#text"!==t){const e=new Map;this[co]=e;for(const[t,r]of Object.entries(a))e.set(t,new XFAAttribute(this,t,r));if(a.hasOwnProperty(Ms)){const e=a[Ms].xfa.dataNode;void 0!==e&&("dataGroup"===e?this[fo]=!1:"dataValue"===e&&(this[fo]=!0))}}this[Wn]=!1}[Ks](e){const t=this[Ts];if("#text"===t){e.push(encodeToXmlString(this[$n]));return}const a=utf8StringToString(t),r=this[Os]===Fo?"xfa:":"";e.push(`<${r}${a}`);for(const[t,a]of this[co].entries()){const r=utf8StringToString(t);e.push(` ${r}="${encodeToXmlString(a[$n])}"`)}null!==this[fo]&&(this[fo]?e.push(' xfa:dataNode="dataValue"'):e.push(' xfa:dataNode="dataGroup"'));if(this[$n]||0!==this[ho].length){e.push(">");if(this[$n])"string"==typeof this[$n]?e.push(encodeToXmlString(this[$n])):this[$n][Ks](e);else for(const t of this[ho])t[Ks](e);e.push(``)}else e.push("/>")}[Ds](e){if(this[$n]){const e=new XmlObject(this[Os],"#text");this[_n](e);e[$n]=this[$n];this[$n]=""}this[_n](e);return!0}[Rs](e){this[$n]+=e}[Jn](){if(this[$n]&&this[ho].length>0){const e=new XmlObject(this[Os],"#text");this[_n](e);e[$n]=this[$n];delete this[$n]}}[Vs](){return"#text"===this[Ts]?HTMLResult.success({name:"#text",value:this[$n]}):HTMLResult.EMPTY}[os](e=null){return e?this[ho].filter((t=>t[Ts]===e)):this[ho]}[Qn](){return this[co]}[ts](e){const t=this[co].get(e);return void 0!==t?t:this[os](e)}*[rs](e,t){const a=this[co].get(e);a&&(yield a);for(const a of this[ho]){a[Ts]===e&&(yield a);t&&(yield*a[rs](e,t))}}*[Zn](e,t){const a=this[co].get(e);!a||t&&a[Wn]||(yield a);for(const a of this[ho])yield*a[Zn](e,t)}*[ss](e,t,a){for(const r of this[ho]){r[Ts]!==e||a&&r[Wn]||(yield r);t&&(yield*r[ss](e,t,a))}}[xs](){return null===this[fo]?0===this[ho].length||this[ho][0][Os]===Qs.xhtml.id:this[fo]}[is](){return null===this[fo]?0===this[ho].length?this[$n].trim():this[ho][0][Os]===Qs.xhtml.id?this[ho][0][$s]().trim():null:this[$n].trim()}[zs](e){e=e.value||"";this[$n]=e.toString()}[Vn](e=!1){const t=Object.create(null);e&&(t.$ns=this[Os]);this[$n]&&(t.$content=this[$n]);t.$name=this[Ts];t.children=[];for(const a of this[ho])t.children.push(a[Vn](e));t.attributes=Object.create(null);for(const[e,a]of this[co])t.attributes[e]=a[$n];return t}}class ContentObject extends XFAObject{constructor(e,t){super(e,t);this[$n]=""}[Rs](e){this[$n]+=e}[Jn](){}}class OptionObject extends ContentObject{constructor(e,t,a){super(e,t);this[xo]=a}[Jn](){this[$n]=getKeyword({data:this[$n],defaultValue:this[xo][0],validate:e=>this[xo].includes(e)})}[Xn](e){super[Xn](e);delete this[xo]}}class StringObject extends ContentObject{[Jn](){this[$n]=this[$n].trim()}}class IntegerObject extends ContentObject{constructor(e,t,a,r){super(e,t);this[go]=a;this[Co]=r}[Jn](){this[$n]=getInteger({data:this[$n],defaultValue:this[go],validate:this[Co]})}[Xn](e){super[Xn](e);delete this[go];delete this[Co]}}class Option01 extends IntegerObject{constructor(e,t){super(e,t,0,(e=>1===e))}}class Option10 extends IntegerObject{constructor(e,t){super(e,t,1,(e=>0===e))}}function measureToString(e){return"string"==typeof e?"0px":Number.isInteger(e)?`${e}px`:`${e.toFixed(2)}px`}const Io={anchorType(e,t){const a=e[hs]();if(a&&(!a.layout||"position"===a.layout)){"transform"in t||(t.transform="");switch(e.anchorType){case"bottomCenter":t.transform+="translate(-50%, -100%)";break;case"bottomLeft":t.transform+="translate(0,-100%)";break;case"bottomRight":t.transform+="translate(-100%,-100%)";break;case"middleCenter":t.transform+="translate(-50%,-50%)";break;case"middleLeft":t.transform+="translate(0,-50%)";break;case"middleRight":t.transform+="translate(-100%,-50%)";break;case"topCenter":t.transform+="translate(-50%,0)";break;case"topRight":t.transform+="translate(-100%,0)"}}},dimensions(e,t){const a=e[hs]();let r=e.w;const i=e.h;if(a.layout?.includes("row")){const t=a[Kn],i=e.colSpan;let n;if(-1===i){n=t.columnWidths.slice(t.currentColumn).reduce(((e,t)=>e+t),0);t.currentColumn=0}else{n=t.columnWidths.slice(t.currentColumn,t.currentColumn+i).reduce(((e,t)=>e+t),0);t.currentColumn=(t.currentColumn+e.colSpan)%t.columnWidths.length}isNaN(n)||(r=e.w=n)}t.width=""!==r?measureToString(r):"auto";t.height=""!==i?measureToString(i):"auto"},position(e,t){const a=e[hs]();if(!a?.layout||"position"===a.layout){t.position="absolute";t.left=measureToString(e.x);t.top=measureToString(e.y)}},rotate(e,t){if(e.rotate){"transform"in t||(t.transform="");t.transform+=`rotate(-${e.rotate}deg)`;t.transformOrigin="top left"}},presence(e,t){switch(e.presence){case"invisible":t.visibility="hidden";break;case"hidden":case"inactive":t.display="none"}},hAlign(e,t){if("para"===e[Ts])switch(e.hAlign){case"justifyAll":t.textAlign="justify-all";break;case"radix":t.textAlign="left";break;default:t.textAlign=e.hAlign}else switch(e.hAlign){case"left":t.alignSelf="start";break;case"center":t.alignSelf="center";break;case"right":t.alignSelf="end"}},margin(e,t){e.margin&&(t.margin=e.margin[Js]().margin)}};function setMinMaxDimensions(e,t){if("position"===e[hs]().layout){e.minW>0&&(t.minWidth=measureToString(e.minW));e.maxW>0&&(t.maxWidth=measureToString(e.maxW));e.minH>0&&(t.minHeight=measureToString(e.minH));e.maxH>0&&(t.maxHeight=measureToString(e.maxH))}}function layoutText(e,t,a,r,i,n){const s=new TextMeasure(t,a,r,i);"string"==typeof e?s.addString(e):e[Ns](s);return s.compute(n)}function layoutNode(e,t){let a=null,r=null,i=!1;if((!e.w||!e.h)&&e.value){let n=0,s=0;if(e.margin){n=e.margin.leftInset+e.margin.rightInset;s=e.margin.topInset+e.margin.bottomInset}let o=null,c=null;if(e.para){c=Object.create(null);o=""===e.para.lineHeight?null:e.para.lineHeight;c.top=""===e.para.spaceAbove?0:e.para.spaceAbove;c.bottom=""===e.para.spaceBelow?0:e.para.spaceBelow;c.left=""===e.para.marginLeft?0:e.para.marginLeft;c.right=""===e.para.marginRight?0:e.para.marginRight}let l=e.font;if(!l){const t=e[ds]();let a=e[us]();for(;a&&a!==t;){if(a.font){l=a.font;break}a=a[us]()}}const h=(e.w||t.width)-n,u=e[fs].fontFinder;if(e.value.exData&&e.value.exData[$n]&&"text/html"===e.value.exData.contentType){const t=layoutText(e.value.exData[$n],l,c,o,u,h);r=t.width;a=t.height;i=t.isBroken}else{const t=e.value[$s]();if(t){const e=layoutText(t,l,c,o,u,h);r=e.width;a=e.height;i=e.isBroken}}null===r||e.w||(r+=n);null===a||e.h||(a+=s)}return{w:r,h:a,isBroken:i}}function computeBbox(e,t,a){let r;if(""!==e.w&&""!==e.h)r=[e.x,e.y,e.w,e.h];else{if(!a)return null;let i=e.w;if(""===i){if(0===e.maxW){const t=e[hs]();i="position"===t.layout&&""!==t.w?0:e.minW}else i=Math.min(e.maxW,a.width);t.attributes.style.width=measureToString(i)}let n=e.h;if(""===n){if(0===e.maxH){const t=e[hs]();n="position"===t.layout&&""!==t.h?0:e.minH}else n=Math.min(e.maxH,a.height);t.attributes.style.height=measureToString(n)}r=[e.x,e.y,i,n]}return r}function fixDimensions(e){const t=e[hs]();if(t.layout?.includes("row")){const a=t[Kn],r=e.colSpan;let i;i=-1===r?a.columnWidths.slice(a.currentColumn).reduce(((e,t)=>e+t),0):a.columnWidths.slice(a.currentColumn,a.currentColumn+r).reduce(((e,t)=>e+t),0);isNaN(i)||(e.w=i)}t.layout&&"position"!==t.layout&&(e.x=e.y=0);"table"===e.layout&&""===e.w&&Array.isArray(e.columnWidths)&&(e.w=e.columnWidths.reduce(((e,t)=>e+t),0))}function layoutClass(e){switch(e.layout){case"position":default:return"xfaPosition";case"lr-tb":return"xfaLrTb";case"rl-row":return"xfaRlRow";case"rl-tb":return"xfaRlTb";case"row":return"xfaRow";case"table":return"xfaTable";case"tb":return"xfaTb"}}function toStyle(e,...t){const a=Object.create(null);for(const r of t){const t=e[r];if(null!==t)if(Io.hasOwnProperty(r))Io[r](e,a);else if(t instanceof XFAObject){const e=t[Js]();e?Object.assign(a,e):warn(`(DEBUG) - XFA - style for ${r} not implemented yet`)}}return a}function createWrapper(e,t){const{attributes:a}=t,{style:r}=a,i={name:"div",attributes:{class:["xfaWrapper"],style:Object.create(null)},children:[]};a.class.push("xfaWrapped");if(e.border){const{widths:a,insets:n}=e.border[Kn];let s,o,c=n[0],l=n[3];const h=n[0]+n[2],u=n[1]+n[3];switch(e.border.hand){case"even":c-=a[0]/2;l-=a[3]/2;s=`calc(100% + ${(a[1]+a[3])/2-u}px)`;o=`calc(100% + ${(a[0]+a[2])/2-h}px)`;break;case"left":c-=a[0];l-=a[3];s=`calc(100% + ${a[1]+a[3]-u}px)`;o=`calc(100% + ${a[0]+a[2]-h}px)`;break;case"right":s=u?`calc(100% - ${u}px)`:"100%";o=h?`calc(100% - ${h}px)`:"100%"}const d=["xfaBorder"];isPrintOnly(e.border)&&d.push("xfaPrintOnly");const f={name:"div",attributes:{class:d,style:{top:`${c}px`,left:`${l}px`,width:s,height:o}},children:[]};for(const e of["border","borderWidth","borderColor","borderRadius","borderStyle"])if(void 0!==r[e]){f.attributes.style[e]=r[e];delete r[e]}i.children.push(f,t)}else i.children.push(t);for(const e of["background","backgroundClip","top","left","width","height","minWidth","minHeight","maxWidth","maxHeight","transform","transformOrigin","visibility"])if(void 0!==r[e]){i.attributes.style[e]=r[e];delete r[e]}i.attributes.style.position="absolute"===r.position?"absolute":"relative";delete r.position;if(r.alignSelf){i.attributes.style.alignSelf=r.alignSelf;delete r.alignSelf}return i}function fixTextIndent(e){const t=getMeasurement(e.textIndent,"0px");if(t>=0)return;const a="padding"+("left"===("right"===e.textAlign?"right":"left")?"Left":"Right"),r=getMeasurement(e[a],"0px");e[a]=r-t+"px"}function setAccess(e,t){switch(e.access){case"nonInteractive":t.push("xfaNonInteractive");break;case"readOnly":t.push("xfaReadOnly");break;case"protected":t.push("xfaDisabled")}}function isPrintOnly(e){return e.relevant.length>0&&!e.relevant[0].excluded&&"print"===e.relevant[0].viewname}function getCurrentPara(e){const t=e[ds]()[Kn].paraStack;return t.length?t.at(-1):null}function setPara(e,t,a){if(a.attributes.class?.includes("xfaRich")){if(t){""===e.h&&(t.height="auto");""===e.w&&(t.width="auto")}const r=getCurrentPara(e);if(r){const e=a.attributes.style;e.display="flex";e.flexDirection="column";switch(r.vAlign){case"top":e.justifyContent="start";break;case"bottom":e.justifyContent="end";break;case"middle":e.justifyContent="center"}const t=r[Js]();for(const[a,r]of Object.entries(t))a in e||(e[a]=r)}}}function setFontFamily(e,t,a,r){if(!a){delete r.fontFamily;return}const i=stripQuotes(e.typeface);r.fontFamily=`"${i}"`;const n=a.find(i);if(n){const{fontFamily:a}=n.regular.cssFontInfo;a!==i&&(r.fontFamily=`"${a}"`);const s=getCurrentPara(t);if(s&&""!==s.lineHeight)return;if(r.lineHeight)return;const o=selectFont(e,n);o&&(r.lineHeight=Math.max(1.2,o.lineHeight))}}function fixURL(e){const t=createValidAbsoluteUrl(e,null,{addDefaultProtocol:!0,tryConvertEncoding:!0});return t?t.href:null}function createLine(e,t){return{name:"div",attributes:{class:["lr-tb"===e.layout?"xfaLr":"xfaRl"]},children:t}}function flushHTML(e){if(!e[Kn])return null;const t={name:"div",attributes:e[Kn].attributes,children:e[Kn].children};if(e[Kn].failingNode){const a=e[Kn].failingNode[Yn]();a&&(e.layout.endsWith("-tb")?t.children.push(createLine(e,[a])):t.children.push(a))}return 0===t.children.length?null:t}function addHTML(e,t,a){const r=e[Kn],i=r.availableSpace,[n,s,o,c]=a;switch(e.layout){case"position":r.width=Math.max(r.width,n+o);r.height=Math.max(r.height,s+c);r.children.push(t);break;case"lr-tb":case"rl-tb":if(!r.line||1===r.attempt){r.line=createLine(e,[]);r.children.push(r.line);r.numberInLine=0}r.numberInLine+=1;r.line.children.push(t);if(0===r.attempt){r.currentWidth+=o;r.height=Math.max(r.height,r.prevHeight+c)}else{r.currentWidth=o;r.prevHeight=r.height;r.height+=c;r.attempt=0}r.width=Math.max(r.width,r.currentWidth);break;case"rl-row":case"row":{r.children.push(t);r.width+=o;r.height=Math.max(r.height,c);const e=measureToString(r.height);for(const t of r.children)t.attributes.style.height=e;break}case"table":case"tb":r.width=Math.min(i.width,Math.max(r.width,o));r.height+=c;r.children.push(t)}}function getAvailableSpace(e){const t=e[Kn].availableSpace,a=e.margin?e.margin.topInset+e.margin.bottomInset:0,r=e.margin?e.margin.leftInset+e.margin.rightInset:0;switch(e.layout){case"lr-tb":case"rl-tb":return 0===e[Kn].attempt?{width:t.width-r-e[Kn].currentWidth,height:t.height-a-e[Kn].prevHeight}:{width:t.width-r,height:t.height-a-e[Kn].height};case"rl-row":case"row":return{width:e[Kn].columnWidths.slice(e[Kn].currentColumn).reduce(((e,t)=>e+t)),height:t.height-r};case"table":case"tb":return{width:t.width-r,height:t.height-a-e[Kn].height};default:return t}}function checkDimensions(e,t){if(null===e[ds]()[Kn].firstUnsplittable)return!0;if(0===e.w||0===e.h)return!0;const a=e[hs](),r=a[Kn]?.attempt||0,[,i,n,s]=function getTransformedBBox(e){let t,a,r=""===e.w?NaN:e.w,i=""===e.h?NaN:e.h,[n,s]=[0,0];switch(e.anchorType||""){case"bottomCenter":[n,s]=[r/2,i];break;case"bottomLeft":[n,s]=[0,i];break;case"bottomRight":[n,s]=[r,i];break;case"middleCenter":[n,s]=[r/2,i/2];break;case"middleLeft":[n,s]=[0,i/2];break;case"middleRight":[n,s]=[r,i/2];break;case"topCenter":[n,s]=[r/2,0];break;case"topRight":[n,s]=[r,0]}switch(e.rotate||0){case 0:[t,a]=[-n,-s];break;case 90:[t,a]=[-s,n];[r,i]=[i,-r];break;case 180:[t,a]=[n,s];[r,i]=[-r,-i];break;case 270:[t,a]=[s,-n];[r,i]=[-i,r]}return[e.x+t+Math.min(0,r),e.y+a+Math.min(0,i),Math.abs(r),Math.abs(i)]}(e);switch(a.layout){case"lr-tb":case"rl-tb":return 0===r?e[ds]()[Kn].noLayoutFailure?""!==e.w?Math.round(n-t.width)<=2:t.width>2:!(""!==e.h&&Math.round(s-t.height)>2)&&(""!==e.w?Math.round(n-t.width)<=2||0===a[Kn].numberInLine&&t.height>2:t.width>2):!!e[ds]()[Kn].noLayoutFailure||!(""!==e.h&&Math.round(s-t.height)>2)&&((""===e.w||Math.round(n-t.width)<=2||!a[Cs]())&&t.height>2);case"table":case"tb":return!!e[ds]()[Kn].noLayoutFailure||(""===e.h||e[As]()?(""===e.w||Math.round(n-t.width)<=2||!a[Cs]())&&t.height>2:Math.round(s-t.height)<=2);case"position":if(e[ds]()[Kn].noLayoutFailure)return!0;if(""===e.h||Math.round(s+i-t.height)<=2)return!0;return s+i>e[ds]()[Kn].currentContentArea.h;case"rl-row":case"row":return!!e[ds]()[Kn].noLayoutFailure||(""===e.h||Math.round(s-t.height)<=2);default:return!0}}const Oo=Qs.template.id,Mo="http://www.w3.org/2000/svg",Do=/^H(\d+)$/,Bo=new Set(["image/gif","image/jpeg","image/jpg","image/pjpeg","image/png","image/apng","image/x-png","image/bmp","image/x-ms-bmp","image/tiff","image/tif","application/octet-stream"]),Ro=[[[66,77],"image/bmp"],[[255,216,255],"image/jpeg"],[[73,73,42,0],"image/tiff"],[[77,77,0,42],"image/tiff"],[[71,73,70,56,57,97],"image/gif"],[[137,80,78,71,13,10,26,10],"image/png"]];function getBorderDims(e){if(!e||!e.border)return{w:0,h:0};const t=e.border[ns]();return t?{w:t.widths[0]+t.widths[2]+t.insets[0]+t.insets[2],h:t.widths[1]+t.widths[3]+t.insets[1]+t.insets[3]}:{w:0,h:0}}function hasMargin(e){return e.margin&&(e.margin.topInset||e.margin.rightInset||e.margin.bottomInset||e.margin.leftInset)}function _setValue(e,t){if(!e.value){const t=new Value({});e[_n](t);e.value=t}e.value[zs](t)}function*getContainedChildren(e){for(const t of e[os]())t instanceof SubformSet?yield*t[cs]():yield t}function isRequired(e){return"error"===e.validate?.nullTest}function setTabIndex(e){for(;e;){if(!e.traversal){e[Ws]=e[us]()[Ws];return}if(e[Ws])return;let t=null;for(const a of e.traversal[os]())if("next"===a.operation){t=a;break}if(!t||!t.ref){e[Ws]=e[us]()[Ws];return}const a=e[ds]();e[Ws]=++a[Ws];const r=a[Xs](t.ref,e);if(!r)return;e=r[0]}}function applyAssist(e,t){const a=e.assist;if(a){const e=a[Vs]();e&&(t.title=e);const r=a.role.match(Do);if(r){const e="heading",a=r[1];t.role=e;t["aria-level"]=a}}if("table"===e.layout)t.role="table";else if("row"===e.layout)t.role="row";else{const a=e[us]();"row"===a.layout&&(t.role="TH"===a.assist?.role?"columnheader":"cell")}}function ariaLabel(e){if(!e.assist)return null;const t=e.assist;return t.speak&&""!==t.speak[$n]?t.speak[$n]:t.toolTip?t.toolTip[$n]:null}function valueToHtml(e){return HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:Object.create(null)},children:[{name:"span",attributes:{style:Object.create(null)},value:e}]})}function setFirstUnsplittable(e){const t=e[ds]();if(null===t[Kn].firstUnsplittable){t[Kn].firstUnsplittable=e;t[Kn].noLayoutFailure=!0}}function unsetFirstUnsplittable(e){const t=e[ds]();t[Kn].firstUnsplittable===e&&(t[Kn].noLayoutFailure=!1)}function handleBreak(e){if(e[Kn])return!1;e[Kn]=Object.create(null);if("auto"===e.targetType)return!1;const t=e[ds]();let a=null;if(e.target){a=t[Xs](e.target,e[us]());if(!a)return!1;a=a[0]}const{currentPageArea:r,currentContentArea:i}=t[Kn];if("pageArea"===e.targetType){a instanceof PageArea||(a=null);if(e.startNew){e[Kn].target=a||r;return!0}if(a&&a!==r){e[Kn].target=a;return!0}return!1}a instanceof ContentArea||(a=null);const n=a&&a[us]();let s,o=n;if(e.startNew)if(a){const e=n.contentArea.children,t=e.indexOf(i),r=e.indexOf(a);-1!==t&&te;r[Kn].noLayoutFailure=!0;const s=t[Vs](a);e[jn](s.html,s.bbox);r[Kn].noLayoutFailure=i;t[hs]=n}class AppearanceFilter extends StringObject{constructor(e){super(Oo,"appearanceFilter");this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Arc extends XFAObject{constructor(e){super(Oo,"arc",!0);this.circular=getInteger({data:e.circular,defaultValue:0,validate:e=>1===e});this.hand=getStringOption(e.hand,["even","left","right"]);this.id=e.id||"";this.startAngle=getFloat({data:e.startAngle,defaultValue:0,validate:e=>!0});this.sweepAngle=getFloat({data:e.sweepAngle,defaultValue:360,validate:e=>!0});this.use=e.use||"";this.usehref=e.usehref||"";this.edge=null;this.fill=null}[Vs](){const e=this.edge||new Edge({}),t=e[Js](),a=Object.create(null);"visible"===this.fill?.presence?Object.assign(a,this.fill[Js]()):a.fill="transparent";a.strokeWidth=measureToString("visible"===e.presence?e.thickness:0);a.stroke=t.color;let r;const i={xmlns:Mo,style:{width:"100%",height:"100%",overflow:"visible"}};if(360===this.sweepAngle)r={name:"ellipse",attributes:{xmlns:Mo,cx:"50%",cy:"50%",rx:"50%",ry:"50%",style:a}};else{const e=this.startAngle*Math.PI/180,t=this.sweepAngle*Math.PI/180,n=this.sweepAngle>180?1:0,[s,o,c,l]=[50*(1+Math.cos(e)),50*(1-Math.sin(e)),50*(1+Math.cos(e+t)),50*(1-Math.sin(e+t))];r={name:"path",attributes:{xmlns:Mo,d:`M ${s} ${o} A 50 50 0 ${n} 0 ${c} ${l}`,vectorEffect:"non-scaling-stroke",style:a}};Object.assign(i,{viewBox:"0 0 100 100",preserveAspectRatio:"none"})}const n={name:"svg",children:[r],attributes:i};if(hasMargin(this[us]()[us]()))return HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[n]});n.attributes.style.position="absolute";return HTMLResult.success(n)}}class Area extends XFAObject{constructor(e){super(Oo,"area",!0);this.colSpan=getInteger({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.id=e.id||"";this.name=e.name||"";this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.x=getMeasurement(e.x,"0pt");this.y=getMeasurement(e.y,"0pt");this.desc=null;this.extras=null;this.area=new XFAObjectArray;this.draw=new XFAObjectArray;this.exObject=new XFAObjectArray;this.exclGroup=new XFAObjectArray;this.field=new XFAObjectArray;this.subform=new XFAObjectArray;this.subformSet=new XFAObjectArray}*[cs](){yield*getContainedChildren(this)}[vs](){return!0}[ws](){return!0}[jn](e,t){const[a,r,i,n]=t;this[Kn].width=Math.max(this[Kn].width,a+i);this[Kn].height=Math.max(this[Kn].height,r+n);this[Kn].children.push(e)}[es](){return this[Kn].availableSpace}[Vs](e){const t=toStyle(this,"position"),a={style:t,id:this[Ys],class:["xfaArea"]};isPrintOnly(this)&&a.class.push("xfaPrintOnly");this.name&&(a.xfaName=this.name);const r=[];this[Kn]={children:r,width:0,height:0,availableSpace:e};const i=this[Un]({filter:new Set(["area","draw","field","exclGroup","subform","subformSet"]),include:!0});if(!i.success){if(i.isBreak())return i;delete this[Kn];return HTMLResult.FAILURE}t.width=measureToString(this[Kn].width);t.height=measureToString(this[Kn].height);const n={name:"div",attributes:a,children:r},s=[this.x,this.y,this[Kn].width,this[Kn].height];delete this[Kn];return HTMLResult.success(n,s)}}class Assist extends XFAObject{constructor(e){super(Oo,"assist",!0);this.id=e.id||"";this.role=e.role||"";this.use=e.use||"";this.usehref=e.usehref||"";this.speak=null;this.toolTip=null}[Vs](){return this.toolTip?.[$n]||null}}class Barcode extends XFAObject{constructor(e){super(Oo,"barcode",!0);this.charEncoding=getKeyword({data:e.charEncoding?e.charEncoding.toLowerCase():"",defaultValue:"",validate:e=>["utf-8","big-five","fontspecific","gbk","gb-18030","gb-2312","ksc-5601","none","shift-jis","ucs-2","utf-16"].includes(e)||e.match(/iso-8859-\d{2}/)});this.checksum=getStringOption(e.checksum,["none","1mod10","1mod10_1mod11","2mod10","auto"]);this.dataColumnCount=getInteger({data:e.dataColumnCount,defaultValue:-1,validate:e=>e>=0});this.dataLength=getInteger({data:e.dataLength,defaultValue:-1,validate:e=>e>=0});this.dataPrep=getStringOption(e.dataPrep,["none","flateCompress"]);this.dataRowCount=getInteger({data:e.dataRowCount,defaultValue:-1,validate:e=>e>=0});this.endChar=e.endChar||"";this.errorCorrectionLevel=getInteger({data:e.errorCorrectionLevel,defaultValue:-1,validate:e=>e>=0&&e<=8});this.id=e.id||"";this.moduleHeight=getMeasurement(e.moduleHeight,"5mm");this.moduleWidth=getMeasurement(e.moduleWidth,"0.25mm");this.printCheckDigit=getInteger({data:e.printCheckDigit,defaultValue:0,validate:e=>1===e});this.rowColumnRatio=getRatio(e.rowColumnRatio);this.startChar=e.startChar||"";this.textLocation=getStringOption(e.textLocation,["below","above","aboveEmbedded","belowEmbedded","none"]);this.truncate=getInteger({data:e.truncate,defaultValue:0,validate:e=>1===e});this.type=getStringOption(e.type?e.type.toLowerCase():"",["aztec","codabar","code2of5industrial","code2of5interleaved","code2of5matrix","code2of5standard","code3of9","code3of9extended","code11","code49","code93","code128","code128a","code128b","code128c","code128sscc","datamatrix","ean8","ean8add2","ean8add5","ean13","ean13add2","ean13add5","ean13pwcd","fim","logmars","maxicode","msi","pdf417","pdf417macro","plessey","postauscust2","postauscust3","postausreplypaid","postausstandard","postukrm4scc","postusdpbc","postusimb","postusstandard","postus5zip","qrcode","rfid","rss14","rss14expanded","rss14limited","rss14stacked","rss14stackedomni","rss14truncated","telepen","ucc128","ucc128random","ucc128sscc","upca","upcaadd2","upcaadd5","upcapwcd","upce","upceadd2","upceadd5","upcean2","upcean5","upsmaxicode"]);this.upsMode=getStringOption(e.upsMode,["usCarrier","internationalCarrier","secureSymbol","standardSymbol"]);this.use=e.use||"";this.usehref=e.usehref||"";this.wideNarrowRatio=getRatio(e.wideNarrowRatio);this.encrypt=null;this.extras=null}}class Bind extends XFAObject{constructor(e){super(Oo,"bind",!0);this.match=getStringOption(e.match,["once","dataRef","global","none"]);this.ref=e.ref||"";this.picture=null}}class BindItems extends XFAObject{constructor(e){super(Oo,"bindItems");this.connection=e.connection||"";this.labelRef=e.labelRef||"";this.ref=e.ref||"";this.valueRef=e.valueRef||""}}class Bookend extends XFAObject{constructor(e){super(Oo,"bookend");this.id=e.id||"";this.leader=e.leader||"";this.trailer=e.trailer||"";this.use=e.use||"";this.usehref=e.usehref||""}}class BooleanElement extends Option01{constructor(e){super(Oo,"boolean");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[Vs](e){return valueToHtml(1===this[$n]?"1":"0")}}class Border extends XFAObject{constructor(e){super(Oo,"border",!0);this.break=getStringOption(e.break,["close","open"]);this.hand=getStringOption(e.hand,["even","left","right"]);this.id=e.id||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.corner=new XFAObjectArray(4);this.edge=new XFAObjectArray(4);this.extras=null;this.fill=null;this.margin=null}[ns](){if(!this[Kn]){const e=this.edge.children.slice();if(e.length<4){const t=e.at(-1)||new Edge({});for(let a=e.length;a<4;a++)e.push(t)}const t=e.map((e=>e.thickness)),a=[0,0,0,0];if(this.margin){a[0]=this.margin.topInset;a[1]=this.margin.rightInset;a[2]=this.margin.bottomInset;a[3]=this.margin.leftInset}this[Kn]={widths:t,insets:a,edges:e}}return this[Kn]}[Js](){const{edges:e}=this[ns](),t=e.map((e=>{const t=e[Js]();t.color||="#000000";return t})),a=Object.create(null);this.margin&&Object.assign(a,this.margin[Js]());"visible"===this.fill?.presence&&Object.assign(a,this.fill[Js]());if(this.corner.children.some((e=>0!==e.radius))){const e=this.corner.children.map((e=>e[Js]()));if(2===e.length||3===e.length){const t=e.at(-1);for(let a=e.length;a<4;a++)e.push(t)}a.borderRadius=e.map((e=>e.radius)).join(" ")}switch(this.presence){case"invisible":case"hidden":a.borderStyle="";break;case"inactive":a.borderStyle="none";break;default:a.borderStyle=t.map((e=>e.style)).join(" ")}a.borderWidth=t.map((e=>e.width)).join(" ");a.borderColor=t.map((e=>e.color)).join(" ");return a}}class Break extends XFAObject{constructor(e){super(Oo,"break",!0);this.after=getStringOption(e.after,["auto","contentArea","pageArea","pageEven","pageOdd"]);this.afterTarget=e.afterTarget||"";this.before=getStringOption(e.before,["auto","contentArea","pageArea","pageEven","pageOdd"]);this.beforeTarget=e.beforeTarget||"";this.bookendLeader=e.bookendLeader||"";this.bookendTrailer=e.bookendTrailer||"";this.id=e.id||"";this.overflowLeader=e.overflowLeader||"";this.overflowTarget=e.overflowTarget||"";this.overflowTrailer=e.overflowTrailer||"";this.startNew=getInteger({data:e.startNew,defaultValue:0,validate:e=>1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}}class BreakAfter extends XFAObject{constructor(e){super(Oo,"breakAfter",!0);this.id=e.id||"";this.leader=e.leader||"";this.startNew=getInteger({data:e.startNew,defaultValue:0,validate:e=>1===e});this.target=e.target||"";this.targetType=getStringOption(e.targetType,["auto","contentArea","pageArea"]);this.trailer=e.trailer||"";this.use=e.use||"";this.usehref=e.usehref||"";this.script=null}}class BreakBefore extends XFAObject{constructor(e){super(Oo,"breakBefore",!0);this.id=e.id||"";this.leader=e.leader||"";this.startNew=getInteger({data:e.startNew,defaultValue:0,validate:e=>1===e});this.target=e.target||"";this.targetType=getStringOption(e.targetType,["auto","contentArea","pageArea"]);this.trailer=e.trailer||"";this.use=e.use||"";this.usehref=e.usehref||"";this.script=null}[Vs](e){this[Kn]={};return HTMLResult.FAILURE}}class Button extends XFAObject{constructor(e){super(Oo,"button",!0);this.highlight=getStringOption(e.highlight,["inverted","none","outline","push"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[Vs](e){const t=this[us]()[us](),a={name:"button",attributes:{id:this[Ys],class:["xfaButton"],style:{}},children:[]};for(const e of t.event.children){if("click"!==e.activity||!e.script)continue;const t=recoverJsURL(e.script[$n]);if(!t)continue;const r=fixURL(t.url);r&&a.children.push({name:"a",attributes:{id:"link"+this[Ys],href:r,newWindow:t.newWindow,class:["xfaLink"],style:{}},children:[]})}return HTMLResult.success(a)}}class Calculate extends XFAObject{constructor(e){super(Oo,"calculate",!0);this.id=e.id||"";this.override=getStringOption(e.override,["disabled","error","ignore","warning"]);this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.message=null;this.script=null}}class Caption extends XFAObject{constructor(e){super(Oo,"caption",!0);this.id=e.id||"";this.placement=getStringOption(e.placement,["left","bottom","inline","right","top"]);this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.reserve=Math.ceil(getMeasurement(e.reserve));this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.font=null;this.margin=null;this.para=null;this.value=null}[zs](e){_setValue(this,e)}[ns](e){if(!this[Kn]){let{width:t,height:a}=e;switch(this.placement){case"left":case"right":case"inline":t=this.reserve<=0?t:this.reserve;break;case"top":case"bottom":a=this.reserve<=0?a:this.reserve}this[Kn]=layoutNode(this,{width:t,height:a})}return this[Kn]}[Vs](e){if(!this.value)return HTMLResult.EMPTY;this[Ls]();const t=this.value[Vs](e).html;if(!t){this[Es]();return HTMLResult.EMPTY}const a=this.reserve;if(this.reserve<=0){const{w:t,h:a}=this[ns](e);switch(this.placement){case"left":case"right":case"inline":this.reserve=t;break;case"top":case"bottom":this.reserve=a}}const r=[];"string"==typeof t?r.push({name:"#text",value:t}):r.push(t);const i=toStyle(this,"font","margin","visibility");switch(this.placement){case"left":case"right":this.reserve>0&&(i.width=measureToString(this.reserve));break;case"top":case"bottom":this.reserve>0&&(i.height=measureToString(this.reserve))}setPara(this,null,t);this[Es]();this.reserve=a;return HTMLResult.success({name:"div",attributes:{style:i,class:["xfaCaption"]},children:r})}}class Certificate extends StringObject{constructor(e){super(Oo,"certificate");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Certificates extends XFAObject{constructor(e){super(Oo,"certificates",!0);this.credentialServerPolicy=getStringOption(e.credentialServerPolicy,["optional","required"]);this.id=e.id||"";this.url=e.url||"";this.urlPolicy=e.urlPolicy||"";this.use=e.use||"";this.usehref=e.usehref||"";this.encryption=null;this.issuers=null;this.keyUsage=null;this.oids=null;this.signing=null;this.subjectDNs=null}}class CheckButton extends XFAObject{constructor(e){super(Oo,"checkButton",!0);this.id=e.id||"";this.mark=getStringOption(e.mark,["default","check","circle","cross","diamond","square","star"]);this.shape=getStringOption(e.shape,["square","round"]);this.size=getMeasurement(e.size,"10pt");this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}[Vs](e){const t=toStyle("margin"),a=measureToString(this.size);t.width=t.height=a;let r,i,n;const s=this[us]()[us](),o=s.items.children.length&&s.items.children[0][Vs]().html||[],c={on:(void 0!==o[0]?o[0]:"on").toString(),off:(void 0!==o[1]?o[1]:"off").toString()},l=(s.value?.[$s]()||"off")===c.on||void 0,h=s[hs](),u=s[Ys];let d;if(h instanceof ExclGroup){n=h[Ys];r="radio";i="xfaRadio";d=h[Gn]?.[Ys]||h[Ys]}else{r="checkbox";i="xfaCheckbox";d=s[Gn]?.[Ys]||s[Ys]}const f={name:"input",attributes:{class:[i],style:t,fieldId:u,dataId:d,type:r,checked:l,xfaOn:c.on,xfaOff:c.off,"aria-label":ariaLabel(s),"aria-required":!1}};n&&(f.attributes.name=n);if(isRequired(s)){f.attributes["aria-required"]=!0;f.attributes.required=!0}return HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[f]})}}class ChoiceList extends XFAObject{constructor(e){super(Oo,"choiceList",!0);this.commitOn=getStringOption(e.commitOn,["select","exit"]);this.id=e.id||"";this.open=getStringOption(e.open,["userControl","always","multiSelect","onEntry"]);this.textEntry=getInteger({data:e.textEntry,defaultValue:0,validate:e=>1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}[Vs](e){const t=toStyle(this,"border","margin"),a=this[us]()[us](),r={fontSize:`calc(${a.font?.size||10}px * var(--scale-factor))`},i=[];if(a.items.children.length>0){const e=a.items;let t=0,n=0;if(2===e.children.length){t=e.children[0].save;n=1-t}const s=e.children[t][Vs]().html,o=e.children[n][Vs]().html;let c=!1;const l=a.value?.[$s]()||"";for(let e=0,t=s.length;eMath.min(Math.max(0,parseInt(e.trim(),10)),255))).map((e=>isNaN(e)?0:e));if(n.length<3)return{r:a,g:r,b:i};[a,r,i]=n;return{r:a,g:r,b:i}}(e.value):"";this.extras=null}[gs](){return!1}[Js](){return this.value?Util.makeHexColor(this.value.r,this.value.g,this.value.b):null}}class Comb extends XFAObject{constructor(e){super(Oo,"comb");this.id=e.id||"";this.numberOfCells=getInteger({data:e.numberOfCells,defaultValue:0,validate:e=>e>=0});this.use=e.use||"";this.usehref=e.usehref||""}}class Connect extends XFAObject{constructor(e){super(Oo,"connect",!0);this.connection=e.connection||"";this.id=e.id||"";this.ref=e.ref||"";this.usage=getStringOption(e.usage,["exportAndImport","exportOnly","importOnly"]);this.use=e.use||"";this.usehref=e.usehref||"";this.picture=null}}class ContentArea extends XFAObject{constructor(e){super(Oo,"contentArea",!0);this.h=getMeasurement(e.h);this.id=e.id||"";this.name=e.name||"";this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.w=getMeasurement(e.w);this.x=getMeasurement(e.x,"0pt");this.y=getMeasurement(e.y,"0pt");this.desc=null;this.extras=null}[Vs](e){const t={left:measureToString(this.x),top:measureToString(this.y),width:measureToString(this.w),height:measureToString(this.h)},a=["xfaContentarea"];isPrintOnly(this)&&a.push("xfaPrintOnly");return HTMLResult.success({name:"div",children:[],attributes:{style:t,class:a,id:this[Ys]}})}}class Corner extends XFAObject{constructor(e){super(Oo,"corner",!0);this.id=e.id||"";this.inverted=getInteger({data:e.inverted,defaultValue:0,validate:e=>1===e});this.join=getStringOption(e.join,["square","round"]);this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.radius=getMeasurement(e.radius);this.stroke=getStringOption(e.stroke,["solid","dashDot","dashDotDot","dashed","dotted","embossed","etched","lowered","raised"]);this.thickness=getMeasurement(e.thickness,"0.5pt");this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[Js](){const e=toStyle(this,"visibility");e.radius=measureToString("square"===this.join?0:this.radius);return e}}class DateElement extends ContentObject{constructor(e){super(Oo,"date");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[Jn](){const e=this[$n].trim();this[$n]=e?new Date(e):null}[Vs](e){return valueToHtml(this[$n]?this[$n].toString():"")}}class DateTime extends ContentObject{constructor(e){super(Oo,"dateTime");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[Jn](){const e=this[$n].trim();this[$n]=e?new Date(e):null}[Vs](e){return valueToHtml(this[$n]?this[$n].toString():"")}}class DateTimeEdit extends XFAObject{constructor(e){super(Oo,"dateTimeEdit",!0);this.hScrollPolicy=getStringOption(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.picker=getStringOption(e.picker,["host","none"]);this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.comb=null;this.extras=null;this.margin=null}[Vs](e){const t=toStyle(this,"border","font","margin"),a=this[us]()[us](),r={name:"input",attributes:{type:"text",fieldId:a[Ys],dataId:a[Gn]?.[Ys]||a[Ys],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(a),"aria-required":!1}};if(isRequired(a)){r.attributes["aria-required"]=!0;r.attributes.required=!0}return HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[r]})}}class Decimal extends ContentObject{constructor(e){super(Oo,"decimal");this.fracDigits=getInteger({data:e.fracDigits,defaultValue:2,validate:e=>!0});this.id=e.id||"";this.leadDigits=getInteger({data:e.leadDigits,defaultValue:-1,validate:e=>!0});this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[Jn](){const e=parseFloat(this[$n].trim());this[$n]=isNaN(e)?null:e}[Vs](e){return valueToHtml(null!==this[$n]?this[$n].toString():"")}}class DefaultUi extends XFAObject{constructor(e){super(Oo,"defaultUi",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}}class Desc extends XFAObject{constructor(e){super(Oo,"desc",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.boolean=new XFAObjectArray;this.date=new XFAObjectArray;this.dateTime=new XFAObjectArray;this.decimal=new XFAObjectArray;this.exData=new XFAObjectArray;this.float=new XFAObjectArray;this.image=new XFAObjectArray;this.integer=new XFAObjectArray;this.text=new XFAObjectArray;this.time=new XFAObjectArray}}class DigestMethod extends OptionObject{constructor(e){super(Oo,"digestMethod",["","SHA1","SHA256","SHA512","RIPEMD160"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class DigestMethods extends XFAObject{constructor(e){super(Oo,"digestMethods",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.digestMethod=new XFAObjectArray}}class Draw extends XFAObject{constructor(e){super(Oo,"draw",!0);this.anchorType=getStringOption(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]);this.colSpan=getInteger({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.h=e.h?getMeasurement(e.h):"";this.hAlign=getStringOption(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.locale=e.locale||"";this.maxH=getMeasurement(e.maxH,"0pt");this.maxW=getMeasurement(e.maxW,"0pt");this.minH=getMeasurement(e.minH,"0pt");this.minW=getMeasurement(e.minW,"0pt");this.name=e.name||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=getRelevant(e.relevant);this.rotate=getInteger({data:e.rotate,defaultValue:0,validate:e=>e%90==0});this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?getMeasurement(e.w):"";this.x=getMeasurement(e.x,"0pt");this.y=getMeasurement(e.y,"0pt");this.assist=null;this.border=null;this.caption=null;this.desc=null;this.extras=null;this.font=null;this.keep=null;this.margin=null;this.para=null;this.traversal=null;this.ui=null;this.value=null;this.setProperty=new XFAObjectArray}[zs](e){_setValue(this,e)}[Vs](e){setTabIndex(this);if("hidden"===this.presence||"inactive"===this.presence)return HTMLResult.EMPTY;fixDimensions(this);this[Ls]();const t=this.w,a=this.h,{w:r,h:i,isBroken:n}=layoutNode(this,e);if(r&&""===this.w){if(n&&this[hs]()[Cs]()){this[Es]();return HTMLResult.FAILURE}this.w=r}i&&""===this.h&&(this.h=i);setFirstUnsplittable(this);if(!checkDimensions(this,e)){this.w=t;this.h=a;this[Es]();return HTMLResult.FAILURE}unsetFirstUnsplittable(this);const s=toStyle(this,"font","hAlign","dimensions","position","presence","rotate","anchorType","border","margin");setMinMaxDimensions(this,s);if(s.margin){s.padding=s.margin;delete s.margin}const o=["xfaDraw"];this.font&&o.push("xfaFont");isPrintOnly(this)&&o.push("xfaPrintOnly");const c={style:s,id:this[Ys],class:o};this.name&&(c.xfaName=this.name);const l={name:"div",attributes:c,children:[]};applyAssist(this,c);const h=computeBbox(this,l,e),u=this.value?this.value[Vs](e).html:null;if(null===u){this.w=t;this.h=a;this[Es]();return HTMLResult.success(createWrapper(this,l),h)}l.children.push(u);setPara(this,s,u);this.w=t;this.h=a;this[Es]();return HTMLResult.success(createWrapper(this,l),h)}}class Edge extends XFAObject{constructor(e){super(Oo,"edge",!0);this.cap=getStringOption(e.cap,["square","butt","round"]);this.id=e.id||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.stroke=getStringOption(e.stroke,["solid","dashDot","dashDotDot","dashed","dotted","embossed","etched","lowered","raised"]);this.thickness=getMeasurement(e.thickness,"0.5pt");this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[Js](){const e=toStyle(this,"visibility");Object.assign(e,{linecap:this.cap,width:measureToString(this.thickness),color:this.color?this.color[Js]():"#000000",style:""});if("visible"!==this.presence)e.style="none";else switch(this.stroke){case"solid":e.style="solid";break;case"dashDot":case"dashDotDot":case"dashed":e.style="dashed";break;case"dotted":e.style="dotted";break;case"embossed":e.style="ridge";break;case"etched":e.style="groove";break;case"lowered":e.style="inset";break;case"raised":e.style="outset"}return e}}class Encoding extends OptionObject{constructor(e){super(Oo,"encoding",["adbe.x509.rsa_sha1","adbe.pkcs7.detached","adbe.pkcs7.sha1"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Encodings extends XFAObject{constructor(e){super(Oo,"encodings",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.encoding=new XFAObjectArray}}class Encrypt extends XFAObject{constructor(e){super(Oo,"encrypt",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=null}}class EncryptData extends XFAObject{constructor(e){super(Oo,"encryptData",!0);this.id=e.id||"";this.operation=getStringOption(e.operation,["encrypt","decrypt"]);this.target=e.target||"";this.use=e.use||"";this.usehref=e.usehref||"";this.filter=null;this.manifest=null}}class Encryption extends XFAObject{constructor(e){super(Oo,"encryption",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=new XFAObjectArray}}class EncryptionMethod extends OptionObject{constructor(e){super(Oo,"encryptionMethod",["","AES256-CBC","TRIPLEDES-CBC","AES128-CBC","AES192-CBC"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class EncryptionMethods extends XFAObject{constructor(e){super(Oo,"encryptionMethods",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.encryptionMethod=new XFAObjectArray}}class Event extends XFAObject{constructor(e){super(Oo,"event",!0);this.activity=getStringOption(e.activity,["click","change","docClose","docReady","enter","exit","full","indexChange","initialize","mouseDown","mouseEnter","mouseExit","mouseUp","postExecute","postOpen","postPrint","postSave","postSign","postSubmit","preExecute","preOpen","prePrint","preSave","preSign","preSubmit","ready","validationState"]);this.id=e.id||"";this.listen=getStringOption(e.listen,["refOnly","refAndDescendents"]);this.name=e.name||"";this.ref=e.ref||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.encryptData=null;this.execute=null;this.script=null;this.signData=null;this.submit=null}}class ExData extends ContentObject{constructor(e){super(Oo,"exData");this.contentType=e.contentType||"";this.href=e.href||"";this.id=e.id||"";this.maxLength=getInteger({data:e.maxLength,defaultValue:-1,validate:e=>e>=-1});this.name=e.name||"";this.rid=e.rid||"";this.transferEncoding=getStringOption(e.transferEncoding,["none","base64","package"]);this.use=e.use||"";this.usehref=e.usehref||""}[ys](){return"text/html"===this.contentType}[Ds](e){if("text/html"===this.contentType&&e[Os]===Qs.xhtml.id){this[$n]=e;return!0}if("text/xml"===this.contentType){this[$n]=e;return!0}return!1}[Vs](e){return"text/html"===this.contentType&&this[$n]?this[$n][Vs](e):HTMLResult.EMPTY}}class ExObject extends XFAObject{constructor(e){super(Oo,"exObject",!0);this.archive=e.archive||"";this.classId=e.classId||"";this.codeBase=e.codeBase||"";this.codeType=e.codeType||"";this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.boolean=new XFAObjectArray;this.date=new XFAObjectArray;this.dateTime=new XFAObjectArray;this.decimal=new XFAObjectArray;this.exData=new XFAObjectArray;this.exObject=new XFAObjectArray;this.float=new XFAObjectArray;this.image=new XFAObjectArray;this.integer=new XFAObjectArray;this.text=new XFAObjectArray;this.time=new XFAObjectArray}}class ExclGroup extends XFAObject{constructor(e){super(Oo,"exclGroup",!0);this.access=getStringOption(e.access,["open","nonInteractive","protected","readOnly"]);this.accessKey=e.accessKey||"";this.anchorType=getStringOption(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]);this.colSpan=getInteger({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.h=e.h?getMeasurement(e.h):"";this.hAlign=getStringOption(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.layout=getStringOption(e.layout,["position","lr-tb","rl-row","rl-tb","row","table","tb"]);this.maxH=getMeasurement(e.maxH,"0pt");this.maxW=getMeasurement(e.maxW,"0pt");this.minH=getMeasurement(e.minH,"0pt");this.minW=getMeasurement(e.minW,"0pt");this.name=e.name||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?getMeasurement(e.w):"";this.x=getMeasurement(e.x,"0pt");this.y=getMeasurement(e.y,"0pt");this.assist=null;this.bind=null;this.border=null;this.calculate=null;this.caption=null;this.desc=null;this.extras=null;this.margin=null;this.para=null;this.traversal=null;this.validate=null;this.connect=new XFAObjectArray;this.event=new XFAObjectArray;this.field=new XFAObjectArray;this.setProperty=new XFAObjectArray}[ws](){return!0}[gs](){return!0}[zs](e){for(const t of this.field.children){if(!t.value){const e=new Value({});t[_n](e);t.value=e}t.value[zs](e)}}[Cs](){return this.layout.endsWith("-tb")&&0===this[Kn].attempt&&this[Kn].numberInLine>0||this[us]()[Cs]()}[As](){const e=this[hs]();if(!e[As]())return!1;if(void 0!==this[Kn]._isSplittable)return this[Kn]._isSplittable;if("position"===this.layout||this.layout.includes("row")){this[Kn]._isSplittable=!1;return!1}if(e.layout?.endsWith("-tb")&&0!==e[Kn].numberInLine)return!1;this[Kn]._isSplittable=!0;return!0}[Yn](){return flushHTML(this)}[jn](e,t){addHTML(this,e,t)}[es](){return getAvailableSpace(this)}[Vs](e){setTabIndex(this);if("hidden"===this.presence||"inactive"===this.presence||0===this.h||0===this.w)return HTMLResult.EMPTY;fixDimensions(this);const t=[],a={id:this[Ys],class:[]};setAccess(this,a.class);this[Kn]||(this[Kn]=Object.create(null));Object.assign(this[Kn],{children:t,attributes:a,attempt:0,line:null,numberInLine:0,availableSpace:{width:Math.min(this.w||1/0,e.width),height:Math.min(this.h||1/0,e.height)},width:0,height:0,prevHeight:0,currentWidth:0});const r=this[As]();r||setFirstUnsplittable(this);if(!checkDimensions(this,e))return HTMLResult.FAILURE;const i=new Set(["field"]);if(this.layout.includes("row")){const e=this[hs]().columnWidths;if(Array.isArray(e)&&e.length>0){this[Kn].columnWidths=e;this[Kn].currentColumn=0}}const n=toStyle(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),s=["xfaExclgroup"],o=layoutClass(this);o&&s.push(o);isPrintOnly(this)&&s.push("xfaPrintOnly");a.style=n;a.class=s;this.name&&(a.xfaName=this.name);this[Ls]();const c="lr-tb"===this.layout||"rl-tb"===this.layout,l=c?2:1;for(;this[Kn].attempte>=1||-1===e});this.h=e.h?getMeasurement(e.h):"";this.hAlign=getStringOption(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.locale=e.locale||"";this.maxH=getMeasurement(e.maxH,"0pt");this.maxW=getMeasurement(e.maxW,"0pt");this.minH=getMeasurement(e.minH,"0pt");this.minW=getMeasurement(e.minW,"0pt");this.name=e.name||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=getRelevant(e.relevant);this.rotate=getInteger({data:e.rotate,defaultValue:0,validate:e=>e%90==0});this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?getMeasurement(e.w):"";this.x=getMeasurement(e.x,"0pt");this.y=getMeasurement(e.y,"0pt");this.assist=null;this.bind=null;this.border=null;this.calculate=null;this.caption=null;this.desc=null;this.extras=null;this.font=null;this.format=null;this.items=new XFAObjectArray(2);this.keep=null;this.margin=null;this.para=null;this.traversal=null;this.ui=null;this.validate=null;this.value=null;this.bindItems=new XFAObjectArray;this.connect=new XFAObjectArray;this.event=new XFAObjectArray;this.setProperty=new XFAObjectArray}[ws](){return!0}[zs](e){_setValue(this,e)}[Vs](e){setTabIndex(this);if(!this.ui){this.ui=new Ui({});this.ui[fs]=this[fs];this[_n](this.ui);let e;switch(this.items.children.length){case 0:e=new TextEdit({});this.ui.textEdit=e;break;case 1:e=new CheckButton({});this.ui.checkButton=e;break;case 2:e=new ChoiceList({});this.ui.choiceList=e}this.ui[_n](e)}if(!this.ui||"hidden"===this.presence||"inactive"===this.presence||0===this.h||0===this.w)return HTMLResult.EMPTY;this.caption&&delete this.caption[Kn];this[Ls]();const t=this.caption?this.caption[Vs](e).html:null,a=this.w,r=this.h;let i=0,n=0;if(this.margin){i=this.margin.leftInset+this.margin.rightInset;n=this.margin.topInset+this.margin.bottomInset}let s=null;if(""===this.w||""===this.h){let t=null,a=null,r=0,o=0;if(this.ui.checkButton)r=o=this.ui.checkButton.size;else{const{w:t,h:a}=layoutNode(this,e);if(null!==t){r=t;o=a}else o=function fonts_getMetrics(e,t=!1){let a=null;if(e){const t=stripQuotes(e.typeface),r=e[fs].fontFinder.find(t);a=selectFont(e,r)}if(!a)return{lineHeight:12,lineGap:2,lineNoGap:10};const r=e.size||10,i=a.lineHeight?Math.max(t?0:1.2,a.lineHeight):1.2,n=void 0===a.lineGap?.2:a.lineGap;return{lineHeight:i*r,lineGap:n*r,lineNoGap:Math.max(1,i-n)*r}}(this.font,!0).lineNoGap}s=getBorderDims(this.ui[ns]());r+=s.w;o+=s.h;if(this.caption){const{w:i,h:n,isBroken:s}=this.caption[ns](e);if(s&&this[hs]()[Cs]()){this[Es]();return HTMLResult.FAILURE}t=i;a=n;switch(this.caption.placement){case"left":case"right":case"inline":t+=r;break;case"top":case"bottom":a+=o}}else{t=r;a=o}if(t&&""===this.w){t+=i;this.w=Math.min(this.maxW<=0?1/0:this.maxW,this.minW+1e>=1&&e<=5});this.appearanceFilter=null;this.certificates=null;this.digestMethods=null;this.encodings=null;this.encryptionMethods=null;this.handler=null;this.lockDocument=null;this.mdp=null;this.reasons=null;this.timeStamp=null}}class Float extends ContentObject{constructor(e){super(Oo,"float");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[Jn](){const e=parseFloat(this[$n].trim());this[$n]=isNaN(e)?null:e}[Vs](e){return valueToHtml(null!==this[$n]?this[$n].toString():"")}}class template_Font extends XFAObject{constructor(e){super(Oo,"font",!0);this.baselineShift=getMeasurement(e.baselineShift);this.fontHorizontalScale=getFloat({data:e.fontHorizontalScale,defaultValue:100,validate:e=>e>=0});this.fontVerticalScale=getFloat({data:e.fontVerticalScale,defaultValue:100,validate:e=>e>=0});this.id=e.id||"";this.kerningMode=getStringOption(e.kerningMode,["none","pair"]);this.letterSpacing=getMeasurement(e.letterSpacing,"0");this.lineThrough=getInteger({data:e.lineThrough,defaultValue:0,validate:e=>1===e||2===e});this.lineThroughPeriod=getStringOption(e.lineThroughPeriod,["all","word"]);this.overline=getInteger({data:e.overline,defaultValue:0,validate:e=>1===e||2===e});this.overlinePeriod=getStringOption(e.overlinePeriod,["all","word"]);this.posture=getStringOption(e.posture,["normal","italic"]);this.size=getMeasurement(e.size,"10pt");this.typeface=e.typeface||"Courier";this.underline=getInteger({data:e.underline,defaultValue:0,validate:e=>1===e||2===e});this.underlinePeriod=getStringOption(e.underlinePeriod,["all","word"]);this.use=e.use||"";this.usehref=e.usehref||"";this.weight=getStringOption(e.weight,["normal","bold"]);this.extras=null;this.fill=null}[Xn](e){super[Xn](e);this[fs].usedTypefaces.add(this.typeface)}[Js](){const e=toStyle(this,"fill"),t=e.color;if(t)if("#000000"===t)delete e.color;else if(!t.startsWith("#")){e.background=t;e.backgroundClip="text";e.color="transparent"}this.baselineShift&&(e.verticalAlign=measureToString(this.baselineShift));e.fontKerning="none"===this.kerningMode?"none":"normal";e.letterSpacing=measureToString(this.letterSpacing);if(0!==this.lineThrough){e.textDecoration="line-through";2===this.lineThrough&&(e.textDecorationStyle="double")}if(0!==this.overline){e.textDecoration="overline";2===this.overline&&(e.textDecorationStyle="double")}e.fontStyle=this.posture;e.fontSize=measureToString(.99*this.size);setFontFamily(this,this,this[fs].fontFinder,e);if(0!==this.underline){e.textDecoration="underline";2===this.underline&&(e.textDecorationStyle="double")}e.fontWeight=this.weight;return e}}class Format extends XFAObject{constructor(e){super(Oo,"format",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.picture=null}}class Handler extends StringObject{constructor(e){super(Oo,"handler");this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Hyphenation extends XFAObject{constructor(e){super(Oo,"hyphenation");this.excludeAllCaps=getInteger({data:e.excludeAllCaps,defaultValue:0,validate:e=>1===e});this.excludeInitialCap=getInteger({data:e.excludeInitialCap,defaultValue:0,validate:e=>1===e});this.hyphenate=getInteger({data:e.hyphenate,defaultValue:0,validate:e=>1===e});this.id=e.id||"";this.pushCharacterCount=getInteger({data:e.pushCharacterCount,defaultValue:3,validate:e=>e>=0});this.remainCharacterCount=getInteger({data:e.remainCharacterCount,defaultValue:3,validate:e=>e>=0});this.use=e.use||"";this.usehref=e.usehref||"";this.wordCharacterCount=getInteger({data:e.wordCharacterCount,defaultValue:7,validate:e=>e>=0})}}class Image extends StringObject{constructor(e){super(Oo,"image");this.aspect=getStringOption(e.aspect,["fit","actual","height","none","width"]);this.contentType=e.contentType||"";this.href=e.href||"";this.id=e.id||"";this.name=e.name||"";this.transferEncoding=getStringOption(e.transferEncoding,["base64","none","package"]);this.use=e.use||"";this.usehref=e.usehref||""}[Vs](){if(this.contentType&&!Bo.has(this.contentType.toLowerCase()))return HTMLResult.EMPTY;let e=this[fs].images&&this[fs].images.get(this.href);if(!e&&(this.href||!this[$n]))return HTMLResult.EMPTY;e||"base64"!==this.transferEncoding||(e=stringToBytes(atob(this[$n])));if(!e)return HTMLResult.EMPTY;if(!this.contentType){for(const[t,a]of Ro)if(e.length>t.length&&t.every(((t,a)=>t===e[a]))){this.contentType=a;break}if(!this.contentType)return HTMLResult.EMPTY}const t=new Blob([e],{type:this.contentType});let a;switch(this.aspect){case"fit":case"actual":break;case"height":a={height:"100%",objectFit:"fill"};break;case"none":a={width:"100%",height:"100%",objectFit:"fill"};break;case"width":a={width:"100%",objectFit:"fill"}}const r=this[us]();return HTMLResult.success({name:"img",attributes:{class:["xfaImage"],style:a,src:URL.createObjectURL(t),alt:r?ariaLabel(r[us]()):null}})}}class ImageEdit extends XFAObject{constructor(e){super(Oo,"imageEdit",!0);this.data=getStringOption(e.data,["link","embed"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}[Vs](e){return"embed"===this.data?HTMLResult.success({name:"div",children:[],attributes:{}}):HTMLResult.EMPTY}}class Integer extends ContentObject{constructor(e){super(Oo,"integer");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[Jn](){const e=parseInt(this[$n].trim(),10);this[$n]=isNaN(e)?null:e}[Vs](e){return valueToHtml(null!==this[$n]?this[$n].toString():"")}}class Issuers extends XFAObject{constructor(e){super(Oo,"issuers",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=new XFAObjectArray}}class Items extends XFAObject{constructor(e){super(Oo,"items",!0);this.id=e.id||"";this.name=e.name||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.ref=e.ref||"";this.save=getInteger({data:e.save,defaultValue:0,validate:e=>1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.boolean=new XFAObjectArray;this.date=new XFAObjectArray;this.dateTime=new XFAObjectArray;this.decimal=new XFAObjectArray;this.exData=new XFAObjectArray;this.float=new XFAObjectArray;this.image=new XFAObjectArray;this.integer=new XFAObjectArray;this.text=new XFAObjectArray;this.time=new XFAObjectArray}[Vs](){const e=[];for(const t of this[os]())e.push(t[$s]());return HTMLResult.success(e)}}class Keep extends XFAObject{constructor(e){super(Oo,"keep",!0);this.id=e.id||"";const t=["none","contentArea","pageArea"];this.intact=getStringOption(e.intact,t);this.next=getStringOption(e.next,t);this.previous=getStringOption(e.previous,t);this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}}class KeyUsage extends XFAObject{constructor(e){super(Oo,"keyUsage");const t=["","yes","no"];this.crlSign=getStringOption(e.crlSign,t);this.dataEncipherment=getStringOption(e.dataEncipherment,t);this.decipherOnly=getStringOption(e.decipherOnly,t);this.digitalSignature=getStringOption(e.digitalSignature,t);this.encipherOnly=getStringOption(e.encipherOnly,t);this.id=e.id||"";this.keyAgreement=getStringOption(e.keyAgreement,t);this.keyCertSign=getStringOption(e.keyCertSign,t);this.keyEncipherment=getStringOption(e.keyEncipherment,t);this.nonRepudiation=getStringOption(e.nonRepudiation,t);this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Line extends XFAObject{constructor(e){super(Oo,"line",!0);this.hand=getStringOption(e.hand,["even","left","right"]);this.id=e.id||"";this.slope=getStringOption(e.slope,["\\","/"]);this.use=e.use||"";this.usehref=e.usehref||"";this.edge=null}[Vs](){const e=this[us]()[us](),t=this.edge||new Edge({}),a=t[Js](),r=Object.create(null),i="visible"===t.presence?t.thickness:0;r.strokeWidth=measureToString(i);r.stroke=a.color;let n,s,o,c,l="100%",h="100%";if(e.w<=i){[n,s,o,c]=["50%",0,"50%","100%"];l=r.strokeWidth}else if(e.h<=i){[n,s,o,c]=[0,"50%","100%","50%"];h=r.strokeWidth}else"\\"===this.slope?[n,s,o,c]=[0,0,"100%","100%"]:[n,s,o,c]=[0,"100%","100%",0];const u={name:"svg",children:[{name:"line",attributes:{xmlns:Mo,x1:n,y1:s,x2:o,y2:c,style:r}}],attributes:{xmlns:Mo,width:l,height:h,style:{overflow:"visible"}}};if(hasMargin(e))return HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[u]});u.attributes.style.position="absolute";return HTMLResult.success(u)}}class Linear extends XFAObject{constructor(e){super(Oo,"linear",!0);this.id=e.id||"";this.type=getStringOption(e.type,["toRight","toBottom","toLeft","toTop"]);this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[Js](e){e=e?e[Js]():"#FFFFFF";return`linear-gradient(${this.type.replace(/([RBLT])/," $1").toLowerCase()}, ${e}, ${this.color?this.color[Js]():"#000000"})`}}class LockDocument extends ContentObject{constructor(e){super(Oo,"lockDocument");this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}[Jn](){this[$n]=getStringOption(this[$n],["auto","0","1"])}}class Manifest extends XFAObject{constructor(e){super(Oo,"manifest",!0);this.action=getStringOption(e.action,["include","all","exclude"]);this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.ref=new XFAObjectArray}}class Margin extends XFAObject{constructor(e){super(Oo,"margin",!0);this.bottomInset=getMeasurement(e.bottomInset,"0");this.id=e.id||"";this.leftInset=getMeasurement(e.leftInset,"0");this.rightInset=getMeasurement(e.rightInset,"0");this.topInset=getMeasurement(e.topInset,"0");this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[Js](){return{margin:measureToString(this.topInset)+" "+measureToString(this.rightInset)+" "+measureToString(this.bottomInset)+" "+measureToString(this.leftInset)}}}class Mdp extends XFAObject{constructor(e){super(Oo,"mdp");this.id=e.id||"";this.permissions=getInteger({data:e.permissions,defaultValue:2,validate:e=>1===e||3===e});this.signatureType=getStringOption(e.signatureType,["filler","author"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Medium extends XFAObject{constructor(e){super(Oo,"medium");this.id=e.id||"";this.imagingBBox=function getBBox(e){const t=-1;if(!e)return{x:t,y:t,width:t,height:t};const a=e.trim().split(/\s*,\s*/).map((e=>getMeasurement(e,"-1")));if(a.length<4||a[2]<0||a[3]<0)return{x:t,y:t,width:t,height:t};const[r,i,n,s]=a;return{x:r,y:i,width:n,height:s}}(e.imagingBBox);this.long=getMeasurement(e.long);this.orientation=getStringOption(e.orientation,["portrait","landscape"]);this.short=getMeasurement(e.short);this.stock=e.stock||"";this.trayIn=getStringOption(e.trayIn,["auto","delegate","pageFront"]);this.trayOut=getStringOption(e.trayOut,["auto","delegate"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Message extends XFAObject{constructor(e){super(Oo,"message",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.text=new XFAObjectArray}}class NumericEdit extends XFAObject{constructor(e){super(Oo,"numericEdit",!0);this.hScrollPolicy=getStringOption(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.comb=null;this.extras=null;this.margin=null}[Vs](e){const t=toStyle(this,"border","font","margin"),a=this[us]()[us](),r={name:"input",attributes:{type:"text",fieldId:a[Ys],dataId:a[Gn]?.[Ys]||a[Ys],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(a),"aria-required":!1}};if(isRequired(a)){r.attributes["aria-required"]=!0;r.attributes.required=!0}return HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[r]})}}class Occur extends XFAObject{constructor(e){super(Oo,"occur",!0);this.id=e.id||"";this.initial=""!==e.initial?getInteger({data:e.initial,defaultValue:"",validate:e=>!0}):"";this.max=""!==e.max?getInteger({data:e.max,defaultValue:1,validate:e=>!0}):"";this.min=""!==e.min?getInteger({data:e.min,defaultValue:1,validate:e=>!0}):"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[Xn](){const e=this[us](),t=this.min;""===this.min&&(this.min=e instanceof PageArea||e instanceof PageSet?0:1);""===this.max&&(this.max=""===t?e instanceof PageArea||e instanceof PageSet?-1:1:this.min);-1!==this.max&&this.max!0});this.name=e.name||"";this.numbered=getInteger({data:e.numbered,defaultValue:1,validate:e=>!0});this.oddOrEven=getStringOption(e.oddOrEven,["any","even","odd"]);this.pagePosition=getStringOption(e.pagePosition,["any","first","last","only","rest"]);this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.desc=null;this.extras=null;this.medium=null;this.occur=null;this.area=new XFAObjectArray;this.contentArea=new XFAObjectArray;this.draw=new XFAObjectArray;this.exclGroup=new XFAObjectArray;this.field=new XFAObjectArray;this.subform=new XFAObjectArray}[Fs](){if(!this[Kn]){this[Kn]={numberOfUse:0};return!0}return!this.occur||-1===this.occur.max||this[Kn].numberOfUsee.oddOrEven===t&&e.pagePosition===a));if(r)return r;r=this.pageArea.children.find((e=>"any"===e.oddOrEven&&e.pagePosition===a));if(r)return r;r=this.pageArea.children.find((e=>"any"===e.oddOrEven&&"any"===e.pagePosition));return r||this.pageArea.children[0]}}class Para extends XFAObject{constructor(e){super(Oo,"para",!0);this.hAlign=getStringOption(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.lineHeight=e.lineHeight?getMeasurement(e.lineHeight,"0pt"):"";this.marginLeft=e.marginLeft?getMeasurement(e.marginLeft,"0pt"):"";this.marginRight=e.marginRight?getMeasurement(e.marginRight,"0pt"):"";this.orphans=getInteger({data:e.orphans,defaultValue:0,validate:e=>e>=0});this.preserve=e.preserve||"";this.radixOffset=e.radixOffset?getMeasurement(e.radixOffset,"0pt"):"";this.spaceAbove=e.spaceAbove?getMeasurement(e.spaceAbove,"0pt"):"";this.spaceBelow=e.spaceBelow?getMeasurement(e.spaceBelow,"0pt"):"";this.tabDefault=e.tabDefault?getMeasurement(this.tabDefault):"";this.tabStops=(e.tabStops||"").trim().split(/\s+/).map(((e,t)=>t%2==1?getMeasurement(e):e));this.textIndent=e.textIndent?getMeasurement(e.textIndent,"0pt"):"";this.use=e.use||"";this.usehref=e.usehref||"";this.vAlign=getStringOption(e.vAlign,["top","bottom","middle"]);this.widows=getInteger({data:e.widows,defaultValue:0,validate:e=>e>=0});this.hyphenation=null}[Js](){const e=toStyle(this,"hAlign");""!==this.marginLeft&&(e.paddingLeft=measureToString(this.marginLeft));""!==this.marginRight&&(e.paddingight=measureToString(this.marginRight));""!==this.spaceAbove&&(e.paddingTop=measureToString(this.spaceAbove));""!==this.spaceBelow&&(e.paddingBottom=measureToString(this.spaceBelow));if(""!==this.textIndent){e.textIndent=measureToString(this.textIndent);fixTextIndent(e)}this.lineHeight>0&&(e.lineHeight=measureToString(this.lineHeight));""!==this.tabDefault&&(e.tabSize=measureToString(this.tabDefault));this.tabStops.length;this.hyphenatation&&Object.assign(e,this.hyphenatation[Js]());return e}}class PasswordEdit extends XFAObject{constructor(e){super(Oo,"passwordEdit",!0);this.hScrollPolicy=getStringOption(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.passwordChar=e.passwordChar||"*";this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}}class template_Pattern extends XFAObject{constructor(e){super(Oo,"pattern",!0);this.id=e.id||"";this.type=getStringOption(e.type,["crossHatch","crossDiagonal","diagonalLeft","diagonalRight","horizontal","vertical"]);this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[Js](e){e=e?e[Js]():"#FFFFFF";const t=this.color?this.color[Js]():"#000000",a="repeating-linear-gradient",r=`${e},${e} 5px,${t} 5px,${t} 10px`;switch(this.type){case"crossHatch":return`${a}(to top,${r}) ${a}(to right,${r})`;case"crossDiagonal":return`${a}(45deg,${r}) ${a}(-45deg,${r})`;case"diagonalLeft":return`${a}(45deg,${r})`;case"diagonalRight":return`${a}(-45deg,${r})`;case"horizontal":return`${a}(to top,${r})`;case"vertical":return`${a}(to right,${r})`}return""}}class Picture extends StringObject{constructor(e){super(Oo,"picture");this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Proto extends XFAObject{constructor(e){super(Oo,"proto",!0);this.appearanceFilter=new XFAObjectArray;this.arc=new XFAObjectArray;this.area=new XFAObjectArray;this.assist=new XFAObjectArray;this.barcode=new XFAObjectArray;this.bindItems=new XFAObjectArray;this.bookend=new XFAObjectArray;this.boolean=new XFAObjectArray;this.border=new XFAObjectArray;this.break=new XFAObjectArray;this.breakAfter=new XFAObjectArray;this.breakBefore=new XFAObjectArray;this.button=new XFAObjectArray;this.calculate=new XFAObjectArray;this.caption=new XFAObjectArray;this.certificate=new XFAObjectArray;this.certificates=new XFAObjectArray;this.checkButton=new XFAObjectArray;this.choiceList=new XFAObjectArray;this.color=new XFAObjectArray;this.comb=new XFAObjectArray;this.connect=new XFAObjectArray;this.contentArea=new XFAObjectArray;this.corner=new XFAObjectArray;this.date=new XFAObjectArray;this.dateTime=new XFAObjectArray;this.dateTimeEdit=new XFAObjectArray;this.decimal=new XFAObjectArray;this.defaultUi=new XFAObjectArray;this.desc=new XFAObjectArray;this.digestMethod=new XFAObjectArray;this.digestMethods=new XFAObjectArray;this.draw=new XFAObjectArray;this.edge=new XFAObjectArray;this.encoding=new XFAObjectArray;this.encodings=new XFAObjectArray;this.encrypt=new XFAObjectArray;this.encryptData=new XFAObjectArray;this.encryption=new XFAObjectArray;this.encryptionMethod=new XFAObjectArray;this.encryptionMethods=new XFAObjectArray;this.event=new XFAObjectArray;this.exData=new XFAObjectArray;this.exObject=new XFAObjectArray;this.exclGroup=new XFAObjectArray;this.execute=new XFAObjectArray;this.extras=new XFAObjectArray;this.field=new XFAObjectArray;this.fill=new XFAObjectArray;this.filter=new XFAObjectArray;this.float=new XFAObjectArray;this.font=new XFAObjectArray;this.format=new XFAObjectArray;this.handler=new XFAObjectArray;this.hyphenation=new XFAObjectArray;this.image=new XFAObjectArray;this.imageEdit=new XFAObjectArray;this.integer=new XFAObjectArray;this.issuers=new XFAObjectArray;this.items=new XFAObjectArray;this.keep=new XFAObjectArray;this.keyUsage=new XFAObjectArray;this.line=new XFAObjectArray;this.linear=new XFAObjectArray;this.lockDocument=new XFAObjectArray;this.manifest=new XFAObjectArray;this.margin=new XFAObjectArray;this.mdp=new XFAObjectArray;this.medium=new XFAObjectArray;this.message=new XFAObjectArray;this.numericEdit=new XFAObjectArray;this.occur=new XFAObjectArray;this.oid=new XFAObjectArray;this.oids=new XFAObjectArray;this.overflow=new XFAObjectArray;this.pageArea=new XFAObjectArray;this.pageSet=new XFAObjectArray;this.para=new XFAObjectArray;this.passwordEdit=new XFAObjectArray;this.pattern=new XFAObjectArray;this.picture=new XFAObjectArray;this.radial=new XFAObjectArray;this.reason=new XFAObjectArray;this.reasons=new XFAObjectArray;this.rectangle=new XFAObjectArray;this.ref=new XFAObjectArray;this.script=new XFAObjectArray;this.setProperty=new XFAObjectArray;this.signData=new XFAObjectArray;this.signature=new XFAObjectArray;this.signing=new XFAObjectArray;this.solid=new XFAObjectArray;this.speak=new XFAObjectArray;this.stipple=new XFAObjectArray;this.subform=new XFAObjectArray;this.subformSet=new XFAObjectArray;this.subjectDN=new XFAObjectArray;this.subjectDNs=new XFAObjectArray;this.submit=new XFAObjectArray;this.text=new XFAObjectArray;this.textEdit=new XFAObjectArray;this.time=new XFAObjectArray;this.timeStamp=new XFAObjectArray;this.toolTip=new XFAObjectArray;this.traversal=new XFAObjectArray;this.traverse=new XFAObjectArray;this.ui=new XFAObjectArray;this.validate=new XFAObjectArray;this.value=new XFAObjectArray;this.variables=new XFAObjectArray}}class Radial extends XFAObject{constructor(e){super(Oo,"radial",!0);this.id=e.id||"";this.type=getStringOption(e.type,["toEdge","toCenter"]);this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[Js](e){e=e?e[Js]():"#FFFFFF";const t=this.color?this.color[Js]():"#000000";return`radial-gradient(circle at center, ${"toEdge"===this.type?`${e},${t}`:`${t},${e}`})`}}class Reason extends StringObject{constructor(e){super(Oo,"reason");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Reasons extends XFAObject{constructor(e){super(Oo,"reasons",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.reason=new XFAObjectArray}}class Rectangle extends XFAObject{constructor(e){super(Oo,"rectangle",!0);this.hand=getStringOption(e.hand,["even","left","right"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.corner=new XFAObjectArray(4);this.edge=new XFAObjectArray(4);this.fill=null}[Vs](){const e=this.edge.children.length?this.edge.children[0]:new Edge({}),t=e[Js](),a=Object.create(null);"visible"===this.fill?.presence?Object.assign(a,this.fill[Js]()):a.fill="transparent";a.strokeWidth=measureToString("visible"===e.presence?e.thickness:0);a.stroke=t.color;const r=(this.corner.children.length?this.corner.children[0]:new Corner({}))[Js](),i={name:"svg",children:[{name:"rect",attributes:{xmlns:Mo,width:"100%",height:"100%",x:0,y:0,rx:r.radius,ry:r.radius,style:a}}],attributes:{xmlns:Mo,style:{overflow:"visible"},width:"100%",height:"100%"}};if(hasMargin(this[us]()[us]()))return HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[i]});i.attributes.style.position="absolute";return HTMLResult.success(i)}}class RefElement extends StringObject{constructor(e){super(Oo,"ref");this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Script extends StringObject{constructor(e){super(Oo,"script");this.binding=e.binding||"";this.contentType=e.contentType||"";this.id=e.id||"";this.name=e.name||"";this.runAt=getStringOption(e.runAt,["client","both","server"]);this.use=e.use||"";this.usehref=e.usehref||""}}class SetProperty extends XFAObject{constructor(e){super(Oo,"setProperty");this.connection=e.connection||"";this.ref=e.ref||"";this.target=e.target||""}}class SignData extends XFAObject{constructor(e){super(Oo,"signData",!0);this.id=e.id||"";this.operation=getStringOption(e.operation,["sign","clear","verify"]);this.ref=e.ref||"";this.target=e.target||"";this.use=e.use||"";this.usehref=e.usehref||"";this.filter=null;this.manifest=null}}class Signature extends XFAObject{constructor(e){super(Oo,"signature",!0);this.id=e.id||"";this.type=getStringOption(e.type,["PDF1.3","PDF1.6"]);this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.filter=null;this.manifest=null;this.margin=null}}class Signing extends XFAObject{constructor(e){super(Oo,"signing",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=new XFAObjectArray}}class Solid extends XFAObject{constructor(e){super(Oo,"solid",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[Js](e){return e?e[Js]():"#FFFFFF"}}class Speak extends StringObject{constructor(e){super(Oo,"speak");this.disable=getInteger({data:e.disable,defaultValue:0,validate:e=>1===e});this.id=e.id||"";this.priority=getStringOption(e.priority,["custom","caption","name","toolTip"]);this.rid=e.rid||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Stipple extends XFAObject{constructor(e){super(Oo,"stipple",!0);this.id=e.id||"";this.rate=getInteger({data:e.rate,defaultValue:50,validate:e=>e>=0&&e<=100});this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[Js](e){const t=this.rate/100;return Util.makeHexColor(Math.round(e.value.r*(1-t)+this.value.r*t),Math.round(e.value.g*(1-t)+this.value.g*t),Math.round(e.value.b*(1-t)+this.value.b*t))}}class Subform extends XFAObject{constructor(e){super(Oo,"subform",!0);this.access=getStringOption(e.access,["open","nonInteractive","protected","readOnly"]);this.allowMacro=getInteger({data:e.allowMacro,defaultValue:0,validate:e=>1===e});this.anchorType=getStringOption(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]);this.colSpan=getInteger({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.columnWidths=(e.columnWidths||"").trim().split(/\s+/).map((e=>"-1"===e?-1:getMeasurement(e)));this.h=e.h?getMeasurement(e.h):"";this.hAlign=getStringOption(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.layout=getStringOption(e.layout,["position","lr-tb","rl-row","rl-tb","row","table","tb"]);this.locale=e.locale||"";this.maxH=getMeasurement(e.maxH,"0pt");this.maxW=getMeasurement(e.maxW,"0pt");this.mergeMode=getStringOption(e.mergeMode,["consumeData","matchTemplate"]);this.minH=getMeasurement(e.minH,"0pt");this.minW=getMeasurement(e.minW,"0pt");this.name=e.name||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=getRelevant(e.relevant);this.restoreState=getStringOption(e.restoreState,["manual","auto"]);this.scope=getStringOption(e.scope,["name","none"]);this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?getMeasurement(e.w):"";this.x=getMeasurement(e.x,"0pt");this.y=getMeasurement(e.y,"0pt");this.assist=null;this.bind=null;this.bookend=null;this.border=null;this.break=null;this.calculate=null;this.desc=null;this.extras=null;this.keep=null;this.margin=null;this.occur=null;this.overflow=null;this.pageSet=null;this.para=null;this.traversal=null;this.validate=null;this.variables=null;this.area=new XFAObjectArray;this.breakAfter=new XFAObjectArray;this.breakBefore=new XFAObjectArray;this.connect=new XFAObjectArray;this.draw=new XFAObjectArray;this.event=new XFAObjectArray;this.exObject=new XFAObjectArray;this.exclGroup=new XFAObjectArray;this.field=new XFAObjectArray;this.proto=new XFAObjectArray;this.setProperty=new XFAObjectArray;this.subform=new XFAObjectArray;this.subformSet=new XFAObjectArray}[hs](){const e=this[us]();return e instanceof SubformSet?e[hs]():e}[ws](){return!0}[Cs](){return this.layout.endsWith("-tb")&&0===this[Kn].attempt&&this[Kn].numberInLine>0||this[us]()[Cs]()}*[cs](){yield*getContainedChildren(this)}[Yn](){return flushHTML(this)}[jn](e,t){addHTML(this,e,t)}[es](){return getAvailableSpace(this)}[As](){const e=this[hs]();if(!e[As]())return!1;if(void 0!==this[Kn]._isSplittable)return this[Kn]._isSplittable;if("position"===this.layout||this.layout.includes("row")){this[Kn]._isSplittable=!1;return!1}if(this.keep&&"none"!==this.keep.intact){this[Kn]._isSplittable=!1;return!1}if(e.layout?.endsWith("-tb")&&0!==e[Kn].numberInLine)return!1;this[Kn]._isSplittable=!0;return!0}[Vs](e){setTabIndex(this);if(this.break){if("auto"!==this.break.after||""!==this.break.afterTarget){const e=new BreakAfter({targetType:this.break.after,target:this.break.afterTarget,startNew:this.break.startNew.toString()});e[fs]=this[fs];this[_n](e);this.breakAfter.push(e)}if("auto"!==this.break.before||""!==this.break.beforeTarget){const e=new BreakBefore({targetType:this.break.before,target:this.break.beforeTarget,startNew:this.break.startNew.toString()});e[fs]=this[fs];this[_n](e);this.breakBefore.push(e)}if(""!==this.break.overflowTarget){const e=new Overflow({target:this.break.overflowTarget,leader:this.break.overflowLeader,trailer:this.break.overflowTrailer});e[fs]=this[fs];this[_n](e);this.overflow.push(e)}this[js](this.break);this.break=null}if("hidden"===this.presence||"inactive"===this.presence)return HTMLResult.EMPTY;(this.breakBefore.children.length>1||this.breakAfter.children.length>1)&&warn("XFA - Several breakBefore or breakAfter in subforms: please file a bug.");if(this.breakBefore.children.length>=1){const e=this.breakBefore.children[0];if(handleBreak(e))return HTMLResult.breakNode(e)}if(this[Kn]?.afterBreakAfter)return HTMLResult.EMPTY;fixDimensions(this);const t=[],a={id:this[Ys],class:[]};setAccess(this,a.class);this[Kn]||(this[Kn]=Object.create(null));Object.assign(this[Kn],{children:t,line:null,attributes:a,attempt:0,numberInLine:0,availableSpace:{width:Math.min(this.w||1/0,e.width),height:Math.min(this.h||1/0,e.height)},width:0,height:0,prevHeight:0,currentWidth:0});const r=this[ds](),i=r[Kn].noLayoutFailure,n=this[As]();n||setFirstUnsplittable(this);if(!checkDimensions(this,e))return HTMLResult.FAILURE;const s=new Set(["area","draw","exclGroup","field","subform","subformSet"]);if(this.layout.includes("row")){const e=this[hs]().columnWidths;if(Array.isArray(e)&&e.length>0){this[Kn].columnWidths=e;this[Kn].currentColumn=0}}const o=toStyle(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),c=["xfaSubform"],l=layoutClass(this);l&&c.push(l);a.style=o;a.class=c;this.name&&(a.xfaName=this.name);if(this.overflow){const t=this.overflow[ns]();if(t.addLeader){t.addLeader=!1;handleOverflow(this,t.leader,e)}}this[Ls]();const h="lr-tb"===this.layout||"rl-tb"===this.layout,u=h?2:1;for(;this[Kn].attempt=1){const e=this.breakAfter.children[0];if(handleBreak(e)){this[Kn].afterBreakAfter=y;return HTMLResult.breakNode(e)}}delete this[Kn];return y}}class SubformSet extends XFAObject{constructor(e){super(Oo,"subformSet",!0);this.id=e.id||"";this.name=e.name||"";this.relation=getStringOption(e.relation,["ordered","choice","unordered"]);this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.bookend=null;this.break=null;this.desc=null;this.extras=null;this.occur=null;this.overflow=null;this.breakAfter=new XFAObjectArray;this.breakBefore=new XFAObjectArray;this.subform=new XFAObjectArray;this.subformSet=new XFAObjectArray}*[cs](){yield*getContainedChildren(this)}[hs](){let e=this[us]();for(;!(e instanceof Subform);)e=e[us]();return e}[ws](){return!0}}class SubjectDN extends ContentObject{constructor(e){super(Oo,"subjectDN");this.delimiter=e.delimiter||",";this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[Jn](){this[$n]=new Map(this[$n].split(this.delimiter).map((e=>{(e=e.split("=",2))[0]=e[0].trim();return e})))}}class SubjectDNs extends XFAObject{constructor(e){super(Oo,"subjectDNs",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.subjectDN=new XFAObjectArray}}class Submit extends XFAObject{constructor(e){super(Oo,"submit",!0);this.embedPDF=getInteger({data:e.embedPDF,defaultValue:0,validate:e=>1===e});this.format=getStringOption(e.format,["xdp","formdata","pdf","urlencoded","xfd","xml"]);this.id=e.id||"";this.target=e.target||"";this.textEncoding=getKeyword({data:e.textEncoding?e.textEncoding.toLowerCase():"",defaultValue:"",validate:e=>["utf-8","big-five","fontspecific","gbk","gb-18030","gb-2312","ksc-5601","none","shift-jis","ucs-2","utf-16"].includes(e)||e.match(/iso-8859-\d{2}/)});this.use=e.use||"";this.usehref=e.usehref||"";this.xdpContent=e.xdpContent||"";this.encrypt=null;this.encryptData=new XFAObjectArray;this.signData=new XFAObjectArray}}class Template extends XFAObject{constructor(e){super(Oo,"template",!0);this.baseProfile=getStringOption(e.baseProfile,["full","interactiveForms"]);this.extras=null;this.subform=new XFAObjectArray}[Jn](){0===this.subform.children.length&&warn("XFA - No subforms in template node.");this.subform.children.length>=2&&warn("XFA - Several subforms in template node: please file a bug.");this[Ws]=5e3}[As](){return!0}[Xs](e,t){return e.startsWith("#")?[this[ps].get(e.slice(1))]:searchNode(this,t,e,!0,!0)}*[Gs](){if(!this.subform.children.length)return HTMLResult.success({name:"div",children:[]});this[Kn]={overflowNode:null,firstUnsplittable:null,currentContentArea:null,currentPageArea:null,noLayoutFailure:!1,pageNumber:1,pagePosition:"first",oddOrEven:"odd",blankOrNotBlank:"nonBlank",paraStack:[]};const e=this.subform.children[0];e.pageSet[qn]();const t=e.pageSet.pageArea.children,a={name:"div",children:[]};let r=null,i=null,n=null;if(e.breakBefore.children.length>=1){i=e.breakBefore.children[0];n=i.target}else if(e.subform.children.length>=1&&e.subform.children[0].breakBefore.children.length>=1){i=e.subform.children[0].breakBefore.children[0];n=i.target}else if(e.break?.beforeTarget){i=e.break;n=i.beforeTarget}else if(e.subform.children.length>=1&&e.subform.children[0].break?.beforeTarget){i=e.subform.children[0].break;n=i.beforeTarget}if(i){const e=this[Xs](n,i[us]());if(e instanceof PageArea){r=e;i[Kn]={}}}r||(r=t[0]);r[Kn]={numberOfUse:1};const s=r[us]();s[Kn]={numberOfUse:1,pageIndex:s.pageArea.children.indexOf(r),pageSetIndex:0};let o,c=null,l=null,h=!0,u=0,d=0;for(;;){if(h)u=0;else{a.children.pop();if(3==++u){warn("XFA - Something goes wrong: please file a bug.");return a}}o=null;this[Kn].currentPageArea=r;const t=r[Vs]().html;a.children.push(t);if(c){this[Kn].noLayoutFailure=!0;t.children.push(c[Vs](r[Kn].space).html);c=null}if(l){this[Kn].noLayoutFailure=!0;t.children.push(l[Vs](r[Kn].space).html);l=null}const i=r.contentArea.children,n=t.children.filter((e=>e.attributes.class.includes("xfaContentarea")));h=!1;this[Kn].firstUnsplittable=null;this[Kn].noLayoutFailure=!1;const flush=t=>{const a=e[Yn]();if(a){h||=a.children?.length>0;n[t].children.push(a)}};for(let t=d,r=i.length;t0;n[t].children.push(u.html)}else!h&&a.children.length>1&&a.children.pop();return a}if(u.isBreak()){const e=u.breakNode;flush(t);if("auto"===e.targetType)continue;if(e.leader){c=this[Xs](e.leader,e[us]());c=c?c[0]:null}if(e.trailer){l=this[Xs](e.trailer,e[us]());l=l?l[0]:null}if("pageArea"===e.targetType){o=e[Kn].target;t=1/0}else if(e[Kn].target){o=e[Kn].target;d=e[Kn].index+1;t=1/0}else t=e[Kn].index}else if(this[Kn].overflowNode){const e=this[Kn].overflowNode;this[Kn].overflowNode=null;const a=e[ns](),r=a.target;a.addLeader=null!==a.leader;a.addTrailer=null!==a.trailer;flush(t);const n=t;t=1/0;if(r instanceof PageArea)o=r;else if(r instanceof ContentArea){const e=i.indexOf(r);if(-1!==e)e>n?t=e-1:d=e;else{o=r[us]();d=o.contentArea.children.indexOf(r)}}}else flush(t)}this[Kn].pageNumber+=1;o&&(o[Fs]()?o[Kn].numberOfUse+=1:o=null);r=o||r[ls]();yield null}}}class Text extends ContentObject{constructor(e){super(Oo,"text");this.id=e.id||"";this.maxChars=getInteger({data:e.maxChars,defaultValue:0,validate:e=>e>=0});this.name=e.name||"";this.rid=e.rid||"";this.use=e.use||"";this.usehref=e.usehref||""}[Ln](){return!0}[Ds](e){if(e[Os]===Qs.xhtml.id){this[$n]=e;return!0}warn(`XFA - Invalid content in Text: ${e[Ts]}.`);return!1}[Rs](e){this[$n]instanceof XFAObject||super[Rs](e)}[Jn](){"string"==typeof this[$n]&&(this[$n]=this[$n].replaceAll("\r\n","\n"))}[ns](){return"string"==typeof this[$n]?this[$n].split(/[\u2029\u2028\n]/).reduce(((e,t)=>{t&&e.push(t);return e}),[]).join("\n"):this[$n][$s]()}[Vs](e){if("string"==typeof this[$n]){const e=valueToHtml(this[$n]).html;if(this[$n].includes("\u2029")){e.name="div";e.children=[];this[$n].split("\u2029").map((e=>e.split(/[\u2028\n]/).reduce(((e,t)=>{e.push({name:"span",value:t},{name:"br"});return e}),[]))).forEach((t=>{e.children.push({name:"p",children:t})}))}else if(/[\u2028\n]/.test(this[$n])){e.name="div";e.children=[];this[$n].split(/[\u2028\n]/).forEach((t=>{e.children.push({name:"span",value:t},{name:"br"})}))}return HTMLResult.success(e)}return this[$n][Vs](e)}}class TextEdit extends XFAObject{constructor(e){super(Oo,"textEdit",!0);this.allowRichText=getInteger({data:e.allowRichText,defaultValue:0,validate:e=>1===e});this.hScrollPolicy=getStringOption(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.multiLine=getInteger({data:e.multiLine,defaultValue:"",validate:e=>0===e||1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.vScrollPolicy=getStringOption(e.vScrollPolicy,["auto","off","on"]);this.border=null;this.comb=null;this.extras=null;this.margin=null}[Vs](e){const t=toStyle(this,"border","font","margin");let a;const r=this[us]()[us]();""===this.multiLine&&(this.multiLine=r instanceof Draw?1:0);a=1===this.multiLine?{name:"textarea",attributes:{dataId:r[Gn]?.[Ys]||r[Ys],fieldId:r[Ys],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(r),"aria-required":!1}}:{name:"input",attributes:{type:"text",dataId:r[Gn]?.[Ys]||r[Ys],fieldId:r[Ys],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(r),"aria-required":!1}};if(isRequired(r)){a.attributes["aria-required"]=!0;a.attributes.required=!0}return HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[a]})}}class Time extends StringObject{constructor(e){super(Oo,"time");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[Jn](){const e=this[$n].trim();this[$n]=e?new Date(e):null}[Vs](e){return valueToHtml(this[$n]?this[$n].toString():"")}}class TimeStamp extends XFAObject{constructor(e){super(Oo,"timeStamp");this.id=e.id||"";this.server=e.server||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class ToolTip extends StringObject{constructor(e){super(Oo,"toolTip");this.id=e.id||"";this.rid=e.rid||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Traversal extends XFAObject{constructor(e){super(Oo,"traversal",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.traverse=new XFAObjectArray}}class Traverse extends XFAObject{constructor(e){super(Oo,"traverse",!0);this.id=e.id||"";this.operation=getStringOption(e.operation,["next","back","down","first","left","right","up"]);this.ref=e.ref||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.script=null}get name(){return this.operation}[vs](){return!1}}class Ui extends XFAObject{constructor(e){super(Oo,"ui",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.picture=null;this.barcode=null;this.button=null;this.checkButton=null;this.choiceList=null;this.dateTimeEdit=null;this.defaultUi=null;this.imageEdit=null;this.numericEdit=null;this.passwordEdit=null;this.signature=null;this.textEdit=null}[ns](){if(void 0===this[Kn]){for(const e of Object.getOwnPropertyNames(this)){if("extras"===e||"picture"===e)continue;const t=this[e];if(t instanceof XFAObject){this[Kn]=t;return t}}this[Kn]=null}return this[Kn]}[Vs](e){const t=this[ns]();return t?t[Vs](e):HTMLResult.EMPTY}}class Validate extends XFAObject{constructor(e){super(Oo,"validate",!0);this.formatTest=getStringOption(e.formatTest,["warning","disabled","error"]);this.id=e.id||"";this.nullTest=getStringOption(e.nullTest,["disabled","error","warning"]);this.scriptTest=getStringOption(e.scriptTest,["error","disabled","warning"]);this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.message=null;this.picture=null;this.script=null}}class Value extends XFAObject{constructor(e){super(Oo,"value",!0);this.id=e.id||"";this.override=getInteger({data:e.override,defaultValue:0,validate:e=>1===e});this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.arc=null;this.boolean=null;this.date=null;this.dateTime=null;this.decimal=null;this.exData=null;this.float=null;this.image=null;this.integer=null;this.line=null;this.rectangle=null;this.text=null;this.time=null}[zs](e){const t=this[us]();if(t instanceof Field&&t.ui?.imageEdit){if(!this.image){this.image=new Image({});this[_n](this.image)}this.image[$n]=e[$n];return}const a=e[Ts];if(null===this[a]){for(const e of Object.getOwnPropertyNames(this)){const t=this[e];if(t instanceof XFAObject){this[e]=null;this[js](t)}}this[e[Ts]]=e;this[_n](e)}else this[a][$n]=e[$n]}[$s](){if(this.exData)return"string"==typeof this.exData[$n]?this.exData[$n].trim():this.exData[$n][$s]().trim();for(const e of Object.getOwnPropertyNames(this)){if("image"===e)continue;const t=this[e];if(t instanceof XFAObject)return(t[$n]||"").toString().trim()}return null}[Vs](e){for(const t of Object.getOwnPropertyNames(this)){const a=this[t];if(a instanceof XFAObject)return a[Vs](e)}return HTMLResult.EMPTY}}class Variables extends XFAObject{constructor(e){super(Oo,"variables",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.boolean=new XFAObjectArray;this.date=new XFAObjectArray;this.dateTime=new XFAObjectArray;this.decimal=new XFAObjectArray;this.exData=new XFAObjectArray;this.float=new XFAObjectArray;this.image=new XFAObjectArray;this.integer=new XFAObjectArray;this.manifest=new XFAObjectArray;this.script=new XFAObjectArray;this.text=new XFAObjectArray;this.time=new XFAObjectArray}[vs](){return!0}}class TemplateNamespace{static[Zs](e,t){if(TemplateNamespace.hasOwnProperty(e)){const a=TemplateNamespace[e](t);a[Hs](t);return a}}static appearanceFilter(e){return new AppearanceFilter(e)}static arc(e){return new Arc(e)}static area(e){return new Area(e)}static assist(e){return new Assist(e)}static barcode(e){return new Barcode(e)}static bind(e){return new Bind(e)}static bindItems(e){return new BindItems(e)}static bookend(e){return new Bookend(e)}static boolean(e){return new BooleanElement(e)}static border(e){return new Border(e)}static break(e){return new Break(e)}static breakAfter(e){return new BreakAfter(e)}static breakBefore(e){return new BreakBefore(e)}static button(e){return new Button(e)}static calculate(e){return new Calculate(e)}static caption(e){return new Caption(e)}static certificate(e){return new Certificate(e)}static certificates(e){return new Certificates(e)}static checkButton(e){return new CheckButton(e)}static choiceList(e){return new ChoiceList(e)}static color(e){return new Color(e)}static comb(e){return new Comb(e)}static connect(e){return new Connect(e)}static contentArea(e){return new ContentArea(e)}static corner(e){return new Corner(e)}static date(e){return new DateElement(e)}static dateTime(e){return new DateTime(e)}static dateTimeEdit(e){return new DateTimeEdit(e)}static decimal(e){return new Decimal(e)}static defaultUi(e){return new DefaultUi(e)}static desc(e){return new Desc(e)}static digestMethod(e){return new DigestMethod(e)}static digestMethods(e){return new DigestMethods(e)}static draw(e){return new Draw(e)}static edge(e){return new Edge(e)}static encoding(e){return new Encoding(e)}static encodings(e){return new Encodings(e)}static encrypt(e){return new Encrypt(e)}static encryptData(e){return new EncryptData(e)}static encryption(e){return new Encryption(e)}static encryptionMethod(e){return new EncryptionMethod(e)}static encryptionMethods(e){return new EncryptionMethods(e)}static event(e){return new Event(e)}static exData(e){return new ExData(e)}static exObject(e){return new ExObject(e)}static exclGroup(e){return new ExclGroup(e)}static execute(e){return new Execute(e)}static extras(e){return new Extras(e)}static field(e){return new Field(e)}static fill(e){return new Fill(e)}static filter(e){return new Filter(e)}static float(e){return new Float(e)}static font(e){return new template_Font(e)}static format(e){return new Format(e)}static handler(e){return new Handler(e)}static hyphenation(e){return new Hyphenation(e)}static image(e){return new Image(e)}static imageEdit(e){return new ImageEdit(e)}static integer(e){return new Integer(e)}static issuers(e){return new Issuers(e)}static items(e){return new Items(e)}static keep(e){return new Keep(e)}static keyUsage(e){return new KeyUsage(e)}static line(e){return new Line(e)}static linear(e){return new Linear(e)}static lockDocument(e){return new LockDocument(e)}static manifest(e){return new Manifest(e)}static margin(e){return new Margin(e)}static mdp(e){return new Mdp(e)}static medium(e){return new Medium(e)}static message(e){return new Message(e)}static numericEdit(e){return new NumericEdit(e)}static occur(e){return new Occur(e)}static oid(e){return new Oid(e)}static oids(e){return new Oids(e)}static overflow(e){return new Overflow(e)}static pageArea(e){return new PageArea(e)}static pageSet(e){return new PageSet(e)}static para(e){return new Para(e)}static passwordEdit(e){return new PasswordEdit(e)}static pattern(e){return new template_Pattern(e)}static picture(e){return new Picture(e)}static proto(e){return new Proto(e)}static radial(e){return new Radial(e)}static reason(e){return new Reason(e)}static reasons(e){return new Reasons(e)}static rectangle(e){return new Rectangle(e)}static ref(e){return new RefElement(e)}static script(e){return new Script(e)}static setProperty(e){return new SetProperty(e)}static signData(e){return new SignData(e)}static signature(e){return new Signature(e)}static signing(e){return new Signing(e)}static solid(e){return new Solid(e)}static speak(e){return new Speak(e)}static stipple(e){return new Stipple(e)}static subform(e){return new Subform(e)}static subformSet(e){return new SubformSet(e)}static subjectDN(e){return new SubjectDN(e)}static subjectDNs(e){return new SubjectDNs(e)}static submit(e){return new Submit(e)}static template(e){return new Template(e)}static text(e){return new Text(e)}static textEdit(e){return new TextEdit(e)}static time(e){return new Time(e)}static timeStamp(e){return new TimeStamp(e)}static toolTip(e){return new ToolTip(e)}static traversal(e){return new Traversal(e)}static traverse(e){return new Traverse(e)}static ui(e){return new Ui(e)}static validate(e){return new Validate(e)}static value(e){return new Value(e)}static variables(e){return new Variables(e)}}const No=Qs.datasets.id;function createText(e){const t=new Text({});t[$n]=e;return t}class Binder{constructor(e){this.root=e;this.datasets=e.datasets;this.data=e.datasets?.data||new XmlObject(Qs.datasets.id,"data");this.emptyMerge=0===this.data[os]().length;this.root.form=this.form=e.template[zn]()}_isConsumeData(){return!this.emptyMerge&&this._mergeMode}_isMatchTemplate(){return!this._isConsumeData()}bind(){this._bindElement(this.form,this.data);return this.form}getData(){return this.data}_bindValue(e,t,a){e[Gn]=t;if(e[gs]())if(t[xs]()){const a=t[is]();e[zs](createText(a))}else if(e instanceof Field&&"multiSelect"===e.ui?.choiceList?.open){const a=t[os]().map((e=>e[$n].trim())).join("\n");e[zs](createText(a))}else this._isConsumeData()&&warn("XFA - Nodes haven't the same type.");else!t[xs]()||this._isMatchTemplate()?this._bindElement(e,t):warn("XFA - Nodes haven't the same type.")}_findDataByNameToConsume(e,t,a,r){if(!e)return null;let i,n;for(let r=0;r<3;r++){i=a[ss](e,!1,!0);for(;;){n=i.next().value;if(!n)break;if(t===n[xs]())return n}if(a[Os]===Qs.datasets.id&&"data"===a[Ts])break;a=a[us]()}if(!r)return null;i=this.data[ss](e,!0,!1);n=i.next().value;if(n)return n;i=this.data[Zn](e,!0);n=i.next().value;return n?.[xs]()?n:null}_setProperties(e,t){if(e.hasOwnProperty("setProperty"))for(const{ref:a,target:r,connection:i}of e.setProperty.children){if(i)continue;if(!a)continue;const n=searchNode(this.root,t,a,!1,!1);if(!n){warn(`XFA - Invalid reference: ${a}.`);continue}const[s]=n;if(!s[ks](this.data)){warn("XFA - Invalid node: must be a data node.");continue}const o=searchNode(this.root,e,r,!1,!1);if(!o){warn(`XFA - Invalid target: ${r}.`);continue}const[c]=o;if(!c[ks](e)){warn("XFA - Invalid target: must be a property or subproperty.");continue}const l=c[us]();if(c instanceof SetProperty||l instanceof SetProperty){warn("XFA - Invalid target: cannot be a setProperty or one of its properties.");continue}if(c instanceof BindItems||l instanceof BindItems){warn("XFA - Invalid target: cannot be a bindItems or one of its properties.");continue}const h=s[$s](),u=c[Ts];if(c instanceof XFAAttribute){const e=Object.create(null);e[u]=h;const t=Reflect.construct(Object.getPrototypeOf(l).constructor,[e]);l[u]=t[u]}else if(c.hasOwnProperty($n)){c[Gn]=s;c[$n]=h;c[Jn]()}else warn("XFA - Invalid node to use in setProperty")}}_bindItems(e,t){if(!e.hasOwnProperty("items")||!e.hasOwnProperty("bindItems")||e.bindItems.isEmpty())return;for(const t of e.items.children)e[js](t);e.items.clear();const a=new Items({}),r=new Items({});e[_n](a);e.items.push(a);e[_n](r);e.items.push(r);for(const{ref:i,labelRef:n,valueRef:s,connection:o}of e.bindItems.children){if(o)continue;if(!i)continue;const e=searchNode(this.root,t,i,!1,!1);if(e)for(const t of e){if(!t[ks](this.datasets)){warn(`XFA - Invalid ref (${i}): must be a datasets child.`);continue}const e=searchNode(this.root,t,n,!0,!1);if(!e){warn(`XFA - Invalid label: ${n}.`);continue}const[o]=e;if(!o[ks](this.datasets)){warn("XFA - Invalid label: must be a datasets child.");continue}const c=searchNode(this.root,t,s,!0,!1);if(!c){warn(`XFA - Invalid value: ${s}.`);continue}const[l]=c;if(!l[ks](this.datasets)){warn("XFA - Invalid value: must be a datasets child.");continue}const h=createText(o[$s]()),u=createText(l[$s]());a[_n](h);a.text.push(h);r[_n](u);r.text.push(u)}else warn(`XFA - Invalid reference: ${i}.`)}}_bindOccurrences(e,t,a){let r;if(t.length>1){r=e[zn]();r[js](r.occur);r.occur=null}this._bindValue(e,t[0],a);this._setProperties(e,t[0]);this._bindItems(e,t[0]);if(1===t.length)return;const i=e[us](),n=e[Ts],s=i[ms](e);for(let e=1,o=t.length;et.name===e.name)).length:a[r].children.length;const n=a[ms](e)+1,s=t.initial-i;if(s){const t=e[zn]();t[js](t.occur);t.occur=null;a[r].push(t);a[bs](n,t);for(let e=1;e0)this._bindOccurrences(r,[e[0]],null);else if(this.emptyMerge){const e=t[Os]===No?-1:t[Os],a=r[Gn]=new XmlObject(e,r.name||"root");t[_n](a);this._bindElement(r,a)}continue}if(!r[ws]())continue;let e=!1,i=null,n=null,s=null;if(r.bind){switch(r.bind.match){case"none":this._setAndBind(r,t);continue;case"global":e=!0;break;case"dataRef":if(!r.bind.ref){warn(`XFA - ref is empty in node ${r[Ts]}.`);this._setAndBind(r,t);continue}n=r.bind.ref}r.bind.picture&&(i=r.bind.picture[$n])}const[o,c]=this._getOccurInfo(r);if(n){s=searchNode(this.root,t,n,!0,!1);if(null===s){s=createDataNode(this.data,t,n);if(!s)continue;this._isConsumeData()&&(s[Wn]=!0);this._setAndBind(r,s);continue}this._isConsumeData()&&(s=s.filter((e=>!e[Wn])));s.length>c?s=s.slice(0,c):0===s.length&&(s=null);s&&this._isConsumeData()&&s.forEach((e=>{e[Wn]=!0}))}else{if(!r.name){this._setAndBind(r,t);continue}if(this._isConsumeData()){const a=[];for(;a.length0?a:null}else{s=t[ss](r.name,!1,this.emptyMerge).next().value;if(!s){if(0===o){a.push(r);continue}const e=t[Os]===No?-1:t[Os];s=r[Gn]=new XmlObject(e,r.name);this.emptyMerge&&(s[Wn]=!0);t[_n](s);this._setAndBind(r,s);continue}this.emptyMerge&&(s[Wn]=!0);s=[s]}}s?this._bindOccurrences(r,s,i):o>0?this._setAndBind(r,t):a.push(r)}a.forEach((e=>e[us]()[js](e)))}}class DataHandler{constructor(e,t){this.data=t;this.dataset=e.datasets||null}serialize(e){const t=[[-1,this.data[os]()]];for(;t.length>0;){const a=t.at(-1),[r,i]=a;if(r+1===i.length){t.pop();continue}const n=i[++a[0]],s=e.get(n[Ys]);if(s)n[zs](s);else{const t=n[Qn]();for(const a of t.values()){const t=e.get(a[Ys]);if(t){a[zs](t);break}}}const o=n[os]();o.length>0&&t.push([-1,o])}const a=[''];if(this.dataset)for(const e of this.dataset[os]())"data"!==e[Ts]&&e[Ks](a);this.data[Ks](a);a.push("");return a.join("")}}const Eo=Qs.config.id;class Acrobat extends XFAObject{constructor(e){super(Eo,"acrobat",!0);this.acrobat7=null;this.autoSave=null;this.common=null;this.validate=null;this.validateApprovalSignatures=null;this.submitUrl=new XFAObjectArray}}class Acrobat7 extends XFAObject{constructor(e){super(Eo,"acrobat7",!0);this.dynamicRender=null}}class ADBE_JSConsole extends OptionObject{constructor(e){super(Eo,"ADBE_JSConsole",["delegate","Enable","Disable"])}}class ADBE_JSDebugger extends OptionObject{constructor(e){super(Eo,"ADBE_JSDebugger",["delegate","Enable","Disable"])}}class AddSilentPrint extends Option01{constructor(e){super(Eo,"addSilentPrint")}}class AddViewerPreferences extends Option01{constructor(e){super(Eo,"addViewerPreferences")}}class AdjustData extends Option10{constructor(e){super(Eo,"adjustData")}}class AdobeExtensionLevel extends IntegerObject{constructor(e){super(Eo,"adobeExtensionLevel",0,(e=>e>=1&&e<=8))}}class Agent extends XFAObject{constructor(e){super(Eo,"agent",!0);this.name=e.name?e.name.trim():"";this.common=new XFAObjectArray}}class AlwaysEmbed extends ContentObject{constructor(e){super(Eo,"alwaysEmbed")}}class Amd extends StringObject{constructor(e){super(Eo,"amd")}}class config_Area extends XFAObject{constructor(e){super(Eo,"area");this.level=getInteger({data:e.level,defaultValue:0,validate:e=>e>=1&&e<=3});this.name=getStringOption(e.name,["","barcode","coreinit","deviceDriver","font","general","layout","merge","script","signature","sourceSet","templateCache"])}}class Attributes extends OptionObject{constructor(e){super(Eo,"attributes",["preserve","delegate","ignore"])}}class AutoSave extends OptionObject{constructor(e){super(Eo,"autoSave",["disabled","enabled"])}}class Base extends StringObject{constructor(e){super(Eo,"base")}}class BatchOutput extends XFAObject{constructor(e){super(Eo,"batchOutput");this.format=getStringOption(e.format,["none","concat","zip","zipCompress"])}}class BehaviorOverride extends ContentObject{constructor(e){super(Eo,"behaviorOverride")}[Jn](){this[$n]=new Map(this[$n].trim().split(/\s+/).filter((e=>e.includes(":"))).map((e=>e.split(":",2))))}}class Cache extends XFAObject{constructor(e){super(Eo,"cache",!0);this.templateCache=null}}class Change extends Option01{constructor(e){super(Eo,"change")}}class Common extends XFAObject{constructor(e){super(Eo,"common",!0);this.data=null;this.locale=null;this.localeSet=null;this.messaging=null;this.suppressBanner=null;this.template=null;this.validationMessaging=null;this.versionControl=null;this.log=new XFAObjectArray}}class Compress extends XFAObject{constructor(e){super(Eo,"compress");this.scope=getStringOption(e.scope,["imageOnly","document"])}}class CompressLogicalStructure extends Option01{constructor(e){super(Eo,"compressLogicalStructure")}}class CompressObjectStream extends Option10{constructor(e){super(Eo,"compressObjectStream")}}class Compression extends XFAObject{constructor(e){super(Eo,"compression",!0);this.compressLogicalStructure=null;this.compressObjectStream=null;this.level=null;this.type=null}}class Config extends XFAObject{constructor(e){super(Eo,"config",!0);this.acrobat=null;this.present=null;this.trace=null;this.agent=new XFAObjectArray}}class Conformance extends OptionObject{constructor(e){super(Eo,"conformance",["A","B"])}}class ContentCopy extends Option01{constructor(e){super(Eo,"contentCopy")}}class Copies extends IntegerObject{constructor(e){super(Eo,"copies",1,(e=>e>=1))}}class Creator extends StringObject{constructor(e){super(Eo,"creator")}}class CurrentPage extends IntegerObject{constructor(e){super(Eo,"currentPage",0,(e=>e>=0))}}class Data extends XFAObject{constructor(e){super(Eo,"data",!0);this.adjustData=null;this.attributes=null;this.incrementalLoad=null;this.outputXSL=null;this.range=null;this.record=null;this.startNode=null;this.uri=null;this.window=null;this.xsl=null;this.excludeNS=new XFAObjectArray;this.transform=new XFAObjectArray}}class Debug extends XFAObject{constructor(e){super(Eo,"debug",!0);this.uri=null}}class DefaultTypeface extends ContentObject{constructor(e){super(Eo,"defaultTypeface");this.writingScript=getStringOption(e.writingScript,["*","Arabic","Cyrillic","EastEuropeanRoman","Greek","Hebrew","Japanese","Korean","Roman","SimplifiedChinese","Thai","TraditionalChinese","Vietnamese"])}}class Destination extends OptionObject{constructor(e){super(Eo,"destination",["pdf","pcl","ps","webClient","zpl"])}}class DocumentAssembly extends Option01{constructor(e){super(Eo,"documentAssembly")}}class Driver extends XFAObject{constructor(e){super(Eo,"driver",!0);this.name=e.name?e.name.trim():"";this.fontInfo=null;this.xdc=null}}class DuplexOption extends OptionObject{constructor(e){super(Eo,"duplexOption",["simplex","duplexFlipLongEdge","duplexFlipShortEdge"])}}class DynamicRender extends OptionObject{constructor(e){super(Eo,"dynamicRender",["forbidden","required"])}}class Embed extends Option01{constructor(e){super(Eo,"embed")}}class config_Encrypt extends Option01{constructor(e){super(Eo,"encrypt")}}class config_Encryption extends XFAObject{constructor(e){super(Eo,"encryption",!0);this.encrypt=null;this.encryptionLevel=null;this.permissions=null}}class EncryptionLevel extends OptionObject{constructor(e){super(Eo,"encryptionLevel",["40bit","128bit"])}}class Enforce extends StringObject{constructor(e){super(Eo,"enforce")}}class Equate extends XFAObject{constructor(e){super(Eo,"equate");this.force=getInteger({data:e.force,defaultValue:1,validate:e=>0===e});this.from=e.from||"";this.to=e.to||""}}class EquateRange extends XFAObject{constructor(e){super(Eo,"equateRange");this.from=e.from||"";this.to=e.to||"";this._unicodeRange=e.unicodeRange||""}get unicodeRange(){const e=[],t=/U\+([0-9a-fA-F]+)/,a=this._unicodeRange;for(let r of a.split(",").map((e=>e.trim())).filter((e=>!!e))){r=r.split("-",2).map((e=>{const a=e.match(t);return a?parseInt(a[1],16):0}));1===r.length&&r.push(r[0]);e.push(r)}return shadow(this,"unicodeRange",e)}}class Exclude extends ContentObject{constructor(e){super(Eo,"exclude")}[Jn](){this[$n]=this[$n].trim().split(/\s+/).filter((e=>e&&["calculate","close","enter","exit","initialize","ready","validate"].includes(e)))}}class ExcludeNS extends StringObject{constructor(e){super(Eo,"excludeNS")}}class FlipLabel extends OptionObject{constructor(e){super(Eo,"flipLabel",["usePrinterSetting","on","off"])}}class config_FontInfo extends XFAObject{constructor(e){super(Eo,"fontInfo",!0);this.embed=null;this.map=null;this.subsetBelow=null;this.alwaysEmbed=new XFAObjectArray;this.defaultTypeface=new XFAObjectArray;this.neverEmbed=new XFAObjectArray}}class FormFieldFilling extends Option01{constructor(e){super(Eo,"formFieldFilling")}}class GroupParent extends StringObject{constructor(e){super(Eo,"groupParent")}}class IfEmpty extends OptionObject{constructor(e){super(Eo,"ifEmpty",["dataValue","dataGroup","ignore","remove"])}}class IncludeXDPContent extends StringObject{constructor(e){super(Eo,"includeXDPContent")}}class IncrementalLoad extends OptionObject{constructor(e){super(Eo,"incrementalLoad",["none","forwardOnly"])}}class IncrementalMerge extends Option01{constructor(e){super(Eo,"incrementalMerge")}}class Interactive extends Option01{constructor(e){super(Eo,"interactive")}}class Jog extends OptionObject{constructor(e){super(Eo,"jog",["usePrinterSetting","none","pageSet"])}}class LabelPrinter extends XFAObject{constructor(e){super(Eo,"labelPrinter",!0);this.name=getStringOption(e.name,["zpl","dpl","ipl","tcpl"]);this.batchOutput=null;this.flipLabel=null;this.fontInfo=null;this.xdc=null}}class Layout extends OptionObject{constructor(e){super(Eo,"layout",["paginate","panel"])}}class Level extends IntegerObject{constructor(e){super(Eo,"level",0,(e=>e>0))}}class Linearized extends Option01{constructor(e){super(Eo,"linearized")}}class Locale extends StringObject{constructor(e){super(Eo,"locale")}}class LocaleSet extends StringObject{constructor(e){super(Eo,"localeSet")}}class Log extends XFAObject{constructor(e){super(Eo,"log",!0);this.mode=null;this.threshold=null;this.to=null;this.uri=null}}class MapElement extends XFAObject{constructor(e){super(Eo,"map",!0);this.equate=new XFAObjectArray;this.equateRange=new XFAObjectArray}}class MediumInfo extends XFAObject{constructor(e){super(Eo,"mediumInfo",!0);this.map=null}}class config_Message extends XFAObject{constructor(e){super(Eo,"message",!0);this.msgId=null;this.severity=null}}class Messaging extends XFAObject{constructor(e){super(Eo,"messaging",!0);this.message=new XFAObjectArray}}class Mode extends OptionObject{constructor(e){super(Eo,"mode",["append","overwrite"])}}class ModifyAnnots extends Option01{constructor(e){super(Eo,"modifyAnnots")}}class MsgId extends IntegerObject{constructor(e){super(Eo,"msgId",1,(e=>e>=1))}}class NameAttr extends StringObject{constructor(e){super(Eo,"nameAttr")}}class NeverEmbed extends ContentObject{constructor(e){super(Eo,"neverEmbed")}}class NumberOfCopies extends IntegerObject{constructor(e){super(Eo,"numberOfCopies",null,(e=>e>=2&&e<=5))}}class OpenAction extends XFAObject{constructor(e){super(Eo,"openAction",!0);this.destination=null}}class Output extends XFAObject{constructor(e){super(Eo,"output",!0);this.to=null;this.type=null;this.uri=null}}class OutputBin extends StringObject{constructor(e){super(Eo,"outputBin")}}class OutputXSL extends XFAObject{constructor(e){super(Eo,"outputXSL",!0);this.uri=null}}class Overprint extends OptionObject{constructor(e){super(Eo,"overprint",["none","both","draw","field"])}}class Packets extends StringObject{constructor(e){super(Eo,"packets")}[Jn](){"*"!==this[$n]&&(this[$n]=this[$n].trim().split(/\s+/).filter((e=>["config","datasets","template","xfdf","xslt"].includes(e))))}}class PageOffset extends XFAObject{constructor(e){super(Eo,"pageOffset");this.x=getInteger({data:e.x,defaultValue:"useXDCSetting",validate:e=>!0});this.y=getInteger({data:e.y,defaultValue:"useXDCSetting",validate:e=>!0})}}class PageRange extends StringObject{constructor(e){super(Eo,"pageRange")}[Jn](){const e=this[$n].trim().split(/\s+/).map((e=>parseInt(e,10))),t=[];for(let a=0,r=e.length;a!1))}}class Pcl extends XFAObject{constructor(e){super(Eo,"pcl",!0);this.name=e.name||"";this.batchOutput=null;this.fontInfo=null;this.jog=null;this.mediumInfo=null;this.outputBin=null;this.pageOffset=null;this.staple=null;this.xdc=null}}class Pdf extends XFAObject{constructor(e){super(Eo,"pdf",!0);this.name=e.name||"";this.adobeExtensionLevel=null;this.batchOutput=null;this.compression=null;this.creator=null;this.encryption=null;this.fontInfo=null;this.interactive=null;this.linearized=null;this.openAction=null;this.pdfa=null;this.producer=null;this.renderPolicy=null;this.scriptModel=null;this.silentPrint=null;this.submitFormat=null;this.tagged=null;this.version=null;this.viewerPreferences=null;this.xdc=null}}class Pdfa extends XFAObject{constructor(e){super(Eo,"pdfa",!0);this.amd=null;this.conformance=null;this.includeXDPContent=null;this.part=null}}class Permissions extends XFAObject{constructor(e){super(Eo,"permissions",!0);this.accessibleContent=null;this.change=null;this.contentCopy=null;this.documentAssembly=null;this.formFieldFilling=null;this.modifyAnnots=null;this.plaintextMetadata=null;this.print=null;this.printHighQuality=null}}class PickTrayByPDFSize extends Option01{constructor(e){super(Eo,"pickTrayByPDFSize")}}class config_Picture extends StringObject{constructor(e){super(Eo,"picture")}}class PlaintextMetadata extends Option01{constructor(e){super(Eo,"plaintextMetadata")}}class Presence extends OptionObject{constructor(e){super(Eo,"presence",["preserve","dissolve","dissolveStructure","ignore","remove"])}}class Present extends XFAObject{constructor(e){super(Eo,"present",!0);this.behaviorOverride=null;this.cache=null;this.common=null;this.copies=null;this.destination=null;this.incrementalMerge=null;this.layout=null;this.output=null;this.overprint=null;this.pagination=null;this.paginationOverride=null;this.script=null;this.validate=null;this.xdp=null;this.driver=new XFAObjectArray;this.labelPrinter=new XFAObjectArray;this.pcl=new XFAObjectArray;this.pdf=new XFAObjectArray;this.ps=new XFAObjectArray;this.submitUrl=new XFAObjectArray;this.webClient=new XFAObjectArray;this.zpl=new XFAObjectArray}}class Print extends Option01{constructor(e){super(Eo,"print")}}class PrintHighQuality extends Option01{constructor(e){super(Eo,"printHighQuality")}}class PrintScaling extends OptionObject{constructor(e){super(Eo,"printScaling",["appdefault","noScaling"])}}class PrinterName extends StringObject{constructor(e){super(Eo,"printerName")}}class Producer extends StringObject{constructor(e){super(Eo,"producer")}}class Ps extends XFAObject{constructor(e){super(Eo,"ps",!0);this.name=e.name||"";this.batchOutput=null;this.fontInfo=null;this.jog=null;this.mediumInfo=null;this.outputBin=null;this.staple=null;this.xdc=null}}class Range extends ContentObject{constructor(e){super(Eo,"range")}[Jn](){this[$n]=this[$n].trim().split(/\s*,\s*/,2).map((e=>e.split("-").map((e=>parseInt(e.trim(),10))))).filter((e=>e.every((e=>!isNaN(e))))).map((e=>{1===e.length&&e.push(e[0]);return e}))}}class Record extends ContentObject{constructor(e){super(Eo,"record")}[Jn](){this[$n]=this[$n].trim();const e=parseInt(this[$n],10);!isNaN(e)&&e>=0&&(this[$n]=e)}}class Relevant extends ContentObject{constructor(e){super(Eo,"relevant")}[Jn](){this[$n]=this[$n].trim().split(/\s+/)}}class Rename extends ContentObject{constructor(e){super(Eo,"rename")}[Jn](){this[$n]=this[$n].trim();(this[$n].toLowerCase().startsWith("xml")||new RegExp("[\\p{L}_][\\p{L}\\d._\\p{M}-]*","u").test(this[$n]))&&warn("XFA - Rename: invalid XFA name")}}class RenderPolicy extends OptionObject{constructor(e){super(Eo,"renderPolicy",["server","client"])}}class RunScripts extends OptionObject{constructor(e){super(Eo,"runScripts",["both","client","none","server"])}}class config_Script extends XFAObject{constructor(e){super(Eo,"script",!0);this.currentPage=null;this.exclude=null;this.runScripts=null}}class ScriptModel extends OptionObject{constructor(e){super(Eo,"scriptModel",["XFA","none"])}}class Severity extends OptionObject{constructor(e){super(Eo,"severity",["ignore","error","information","trace","warning"])}}class SilentPrint extends XFAObject{constructor(e){super(Eo,"silentPrint",!0);this.addSilentPrint=null;this.printerName=null}}class Staple extends XFAObject{constructor(e){super(Eo,"staple");this.mode=getStringOption(e.mode,["usePrinterSetting","on","off"])}}class StartNode extends StringObject{constructor(e){super(Eo,"startNode")}}class StartPage extends IntegerObject{constructor(e){super(Eo,"startPage",0,(e=>!0))}}class SubmitFormat extends OptionObject{constructor(e){super(Eo,"submitFormat",["html","delegate","fdf","xml","pdf"])}}class SubmitUrl extends StringObject{constructor(e){super(Eo,"submitUrl")}}class SubsetBelow extends IntegerObject{constructor(e){super(Eo,"subsetBelow",100,(e=>e>=0&&e<=100))}}class SuppressBanner extends Option01{constructor(e){super(Eo,"suppressBanner")}}class Tagged extends Option01{constructor(e){super(Eo,"tagged")}}class config_Template extends XFAObject{constructor(e){super(Eo,"template",!0);this.base=null;this.relevant=null;this.startPage=null;this.uri=null;this.xsl=null}}class Threshold extends OptionObject{constructor(e){super(Eo,"threshold",["trace","error","information","warning"])}}class To extends OptionObject{constructor(e){super(Eo,"to",["null","memory","stderr","stdout","system","uri"])}}class TemplateCache extends XFAObject{constructor(e){super(Eo,"templateCache");this.maxEntries=getInteger({data:e.maxEntries,defaultValue:5,validate:e=>e>=0})}}class Trace extends XFAObject{constructor(e){super(Eo,"trace",!0);this.area=new XFAObjectArray}}class config_Transform extends XFAObject{constructor(e){super(Eo,"transform",!0);this.groupParent=null;this.ifEmpty=null;this.nameAttr=null;this.picture=null;this.presence=null;this.rename=null;this.whitespace=null}}class Type extends OptionObject{constructor(e){super(Eo,"type",["none","ascii85","asciiHex","ccittfax","flate","lzw","runLength","native","xdp","mergedXDP"])}}class Uri extends StringObject{constructor(e){super(Eo,"uri")}}class config_Validate extends OptionObject{constructor(e){super(Eo,"validate",["preSubmit","prePrint","preExecute","preSave"])}}class ValidateApprovalSignatures extends ContentObject{constructor(e){super(Eo,"validateApprovalSignatures")}[Jn](){this[$n]=this[$n].trim().split(/\s+/).filter((e=>["docReady","postSign"].includes(e)))}}class ValidationMessaging extends OptionObject{constructor(e){super(Eo,"validationMessaging",["allMessagesIndividually","allMessagesTogether","firstMessageOnly","noMessages"])}}class Version extends OptionObject{constructor(e){super(Eo,"version",["1.7","1.6","1.5","1.4","1.3","1.2"])}}class VersionControl extends XFAObject{constructor(e){super(Eo,"VersionControl");this.outputBelow=getStringOption(e.outputBelow,["warn","error","update"]);this.sourceAbove=getStringOption(e.sourceAbove,["warn","error"]);this.sourceBelow=getStringOption(e.sourceBelow,["update","maintain"])}}class ViewerPreferences extends XFAObject{constructor(e){super(Eo,"viewerPreferences",!0);this.ADBE_JSConsole=null;this.ADBE_JSDebugger=null;this.addViewerPreferences=null;this.duplexOption=null;this.enforce=null;this.numberOfCopies=null;this.pageRange=null;this.pickTrayByPDFSize=null;this.printScaling=null}}class WebClient extends XFAObject{constructor(e){super(Eo,"webClient",!0);this.name=e.name?e.name.trim():"";this.fontInfo=null;this.xdc=null}}class Whitespace extends OptionObject{constructor(e){super(Eo,"whitespace",["preserve","ltrim","normalize","rtrim","trim"])}}class Window extends ContentObject{constructor(e){super(Eo,"window")}[Jn](){const e=this[$n].trim().split(/\s*,\s*/,2).map((e=>parseInt(e,10)));if(e.some((e=>isNaN(e))))this[$n]=[0,0];else{1===e.length&&e.push(e[0]);this[$n]=e}}}class Xdc extends XFAObject{constructor(e){super(Eo,"xdc",!0);this.uri=new XFAObjectArray;this.xsl=new XFAObjectArray}}class Xdp extends XFAObject{constructor(e){super(Eo,"xdp",!0);this.packets=null}}class Xsl extends XFAObject{constructor(e){super(Eo,"xsl",!0);this.debug=null;this.uri=null}}class Zpl extends XFAObject{constructor(e){super(Eo,"zpl",!0);this.name=e.name?e.name.trim():"";this.batchOutput=null;this.flipLabel=null;this.fontInfo=null;this.xdc=null}}class ConfigNamespace{static[Zs](e,t){if(ConfigNamespace.hasOwnProperty(e))return ConfigNamespace[e](t)}static acrobat(e){return new Acrobat(e)}static acrobat7(e){return new Acrobat7(e)}static ADBE_JSConsole(e){return new ADBE_JSConsole(e)}static ADBE_JSDebugger(e){return new ADBE_JSDebugger(e)}static addSilentPrint(e){return new AddSilentPrint(e)}static addViewerPreferences(e){return new AddViewerPreferences(e)}static adjustData(e){return new AdjustData(e)}static adobeExtensionLevel(e){return new AdobeExtensionLevel(e)}static agent(e){return new Agent(e)}static alwaysEmbed(e){return new AlwaysEmbed(e)}static amd(e){return new Amd(e)}static area(e){return new config_Area(e)}static attributes(e){return new Attributes(e)}static autoSave(e){return new AutoSave(e)}static base(e){return new Base(e)}static batchOutput(e){return new BatchOutput(e)}static behaviorOverride(e){return new BehaviorOverride(e)}static cache(e){return new Cache(e)}static change(e){return new Change(e)}static common(e){return new Common(e)}static compress(e){return new Compress(e)}static compressLogicalStructure(e){return new CompressLogicalStructure(e)}static compressObjectStream(e){return new CompressObjectStream(e)}static compression(e){return new Compression(e)}static config(e){return new Config(e)}static conformance(e){return new Conformance(e)}static contentCopy(e){return new ContentCopy(e)}static copies(e){return new Copies(e)}static creator(e){return new Creator(e)}static currentPage(e){return new CurrentPage(e)}static data(e){return new Data(e)}static debug(e){return new Debug(e)}static defaultTypeface(e){return new DefaultTypeface(e)}static destination(e){return new Destination(e)}static documentAssembly(e){return new DocumentAssembly(e)}static driver(e){return new Driver(e)}static duplexOption(e){return new DuplexOption(e)}static dynamicRender(e){return new DynamicRender(e)}static embed(e){return new Embed(e)}static encrypt(e){return new config_Encrypt(e)}static encryption(e){return new config_Encryption(e)}static encryptionLevel(e){return new EncryptionLevel(e)}static enforce(e){return new Enforce(e)}static equate(e){return new Equate(e)}static equateRange(e){return new EquateRange(e)}static exclude(e){return new Exclude(e)}static excludeNS(e){return new ExcludeNS(e)}static flipLabel(e){return new FlipLabel(e)}static fontInfo(e){return new config_FontInfo(e)}static formFieldFilling(e){return new FormFieldFilling(e)}static groupParent(e){return new GroupParent(e)}static ifEmpty(e){return new IfEmpty(e)}static includeXDPContent(e){return new IncludeXDPContent(e)}static incrementalLoad(e){return new IncrementalLoad(e)}static incrementalMerge(e){return new IncrementalMerge(e)}static interactive(e){return new Interactive(e)}static jog(e){return new Jog(e)}static labelPrinter(e){return new LabelPrinter(e)}static layout(e){return new Layout(e)}static level(e){return new Level(e)}static linearized(e){return new Linearized(e)}static locale(e){return new Locale(e)}static localeSet(e){return new LocaleSet(e)}static log(e){return new Log(e)}static map(e){return new MapElement(e)}static mediumInfo(e){return new MediumInfo(e)}static message(e){return new config_Message(e)}static messaging(e){return new Messaging(e)}static mode(e){return new Mode(e)}static modifyAnnots(e){return new ModifyAnnots(e)}static msgId(e){return new MsgId(e)}static nameAttr(e){return new NameAttr(e)}static neverEmbed(e){return new NeverEmbed(e)}static numberOfCopies(e){return new NumberOfCopies(e)}static openAction(e){return new OpenAction(e)}static output(e){return new Output(e)}static outputBin(e){return new OutputBin(e)}static outputXSL(e){return new OutputXSL(e)}static overprint(e){return new Overprint(e)}static packets(e){return new Packets(e)}static pageOffset(e){return new PageOffset(e)}static pageRange(e){return new PageRange(e)}static pagination(e){return new Pagination(e)}static paginationOverride(e){return new PaginationOverride(e)}static part(e){return new Part(e)}static pcl(e){return new Pcl(e)}static pdf(e){return new Pdf(e)}static pdfa(e){return new Pdfa(e)}static permissions(e){return new Permissions(e)}static pickTrayByPDFSize(e){return new PickTrayByPDFSize(e)}static picture(e){return new config_Picture(e)}static plaintextMetadata(e){return new PlaintextMetadata(e)}static presence(e){return new Presence(e)}static present(e){return new Present(e)}static print(e){return new Print(e)}static printHighQuality(e){return new PrintHighQuality(e)}static printScaling(e){return new PrintScaling(e)}static printerName(e){return new PrinterName(e)}static producer(e){return new Producer(e)}static ps(e){return new Ps(e)}static range(e){return new Range(e)}static record(e){return new Record(e)}static relevant(e){return new Relevant(e)}static rename(e){return new Rename(e)}static renderPolicy(e){return new RenderPolicy(e)}static runScripts(e){return new RunScripts(e)}static script(e){return new config_Script(e)}static scriptModel(e){return new ScriptModel(e)}static severity(e){return new Severity(e)}static silentPrint(e){return new SilentPrint(e)}static staple(e){return new Staple(e)}static startNode(e){return new StartNode(e)}static startPage(e){return new StartPage(e)}static submitFormat(e){return new SubmitFormat(e)}static submitUrl(e){return new SubmitUrl(e)}static subsetBelow(e){return new SubsetBelow(e)}static suppressBanner(e){return new SuppressBanner(e)}static tagged(e){return new Tagged(e)}static template(e){return new config_Template(e)}static templateCache(e){return new TemplateCache(e)}static threshold(e){return new Threshold(e)}static to(e){return new To(e)}static trace(e){return new Trace(e)}static transform(e){return new config_Transform(e)}static type(e){return new Type(e)}static uri(e){return new Uri(e)}static validate(e){return new config_Validate(e)}static validateApprovalSignatures(e){return new ValidateApprovalSignatures(e)}static validationMessaging(e){return new ValidationMessaging(e)}static version(e){return new Version(e)}static versionControl(e){return new VersionControl(e)}static viewerPreferences(e){return new ViewerPreferences(e)}static webClient(e){return new WebClient(e)}static whitespace(e){return new Whitespace(e)}static window(e){return new Window(e)}static xdc(e){return new Xdc(e)}static xdp(e){return new Xdp(e)}static xsl(e){return new Xsl(e)}static zpl(e){return new Zpl(e)}}const Po=Qs.connectionSet.id;class ConnectionSet extends XFAObject{constructor(e){super(Po,"connectionSet",!0);this.wsdlConnection=new XFAObjectArray;this.xmlConnection=new XFAObjectArray;this.xsdConnection=new XFAObjectArray}}class EffectiveInputPolicy extends XFAObject{constructor(e){super(Po,"effectiveInputPolicy");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class EffectiveOutputPolicy extends XFAObject{constructor(e){super(Po,"effectiveOutputPolicy");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Operation extends StringObject{constructor(e){super(Po,"operation");this.id=e.id||"";this.input=e.input||"";this.name=e.name||"";this.output=e.output||"";this.use=e.use||"";this.usehref=e.usehref||""}}class RootElement extends StringObject{constructor(e){super(Po,"rootElement");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class SoapAction extends StringObject{constructor(e){super(Po,"soapAction");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class SoapAddress extends StringObject{constructor(e){super(Po,"soapAddress");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class connection_set_Uri extends StringObject{constructor(e){super(Po,"uri");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class WsdlAddress extends StringObject{constructor(e){super(Po,"wsdlAddress");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class WsdlConnection extends XFAObject{constructor(e){super(Po,"wsdlConnection",!0);this.dataDescription=e.dataDescription||"";this.name=e.name||"";this.effectiveInputPolicy=null;this.effectiveOutputPolicy=null;this.operation=null;this.soapAction=null;this.soapAddress=null;this.wsdlAddress=null}}class XmlConnection extends XFAObject{constructor(e){super(Po,"xmlConnection",!0);this.dataDescription=e.dataDescription||"";this.name=e.name||"";this.uri=null}}class XsdConnection extends XFAObject{constructor(e){super(Po,"xsdConnection",!0);this.dataDescription=e.dataDescription||"";this.name=e.name||"";this.rootElement=null;this.uri=null}}class ConnectionSetNamespace{static[Zs](e,t){if(ConnectionSetNamespace.hasOwnProperty(e))return ConnectionSetNamespace[e](t)}static connectionSet(e){return new ConnectionSet(e)}static effectiveInputPolicy(e){return new EffectiveInputPolicy(e)}static effectiveOutputPolicy(e){return new EffectiveOutputPolicy(e)}static operation(e){return new Operation(e)}static rootElement(e){return new RootElement(e)}static soapAction(e){return new SoapAction(e)}static soapAddress(e){return new SoapAddress(e)}static uri(e){return new connection_set_Uri(e)}static wsdlAddress(e){return new WsdlAddress(e)}static wsdlConnection(e){return new WsdlConnection(e)}static xmlConnection(e){return new XmlConnection(e)}static xsdConnection(e){return new XsdConnection(e)}}const Lo=Qs.datasets.id;class datasets_Data extends XmlObject{constructor(e){super(Lo,"data",e)}[Ss](){return!0}}class Datasets extends XFAObject{constructor(e){super(Lo,"datasets",!0);this.data=null;this.Signature=null}[Ds](e){const t=e[Ts];("data"===t&&e[Os]===Lo||"Signature"===t&&e[Os]===Qs.signature.id)&&(this[t]=e);this[_n](e)}}class DatasetsNamespace{static[Zs](e,t){if(DatasetsNamespace.hasOwnProperty(e))return DatasetsNamespace[e](t)}static datasets(e){return new Datasets(e)}static data(e){return new datasets_Data(e)}}const jo=Qs.localeSet.id;class CalendarSymbols extends XFAObject{constructor(e){super(jo,"calendarSymbols",!0);this.name="gregorian";this.dayNames=new XFAObjectArray(2);this.eraNames=null;this.meridiemNames=null;this.monthNames=new XFAObjectArray(2)}}class CurrencySymbol extends StringObject{constructor(e){super(jo,"currencySymbol");this.name=getStringOption(e.name,["symbol","isoname","decimal"])}}class CurrencySymbols extends XFAObject{constructor(e){super(jo,"currencySymbols",!0);this.currencySymbol=new XFAObjectArray(3)}}class DatePattern extends StringObject{constructor(e){super(jo,"datePattern");this.name=getStringOption(e.name,["full","long","med","short"])}}class DatePatterns extends XFAObject{constructor(e){super(jo,"datePatterns",!0);this.datePattern=new XFAObjectArray(4)}}class DateTimeSymbols extends ContentObject{constructor(e){super(jo,"dateTimeSymbols")}}class Day extends StringObject{constructor(e){super(jo,"day")}}class DayNames extends XFAObject{constructor(e){super(jo,"dayNames",!0);this.abbr=getInteger({data:e.abbr,defaultValue:0,validate:e=>1===e});this.day=new XFAObjectArray(7)}}class Era extends StringObject{constructor(e){super(jo,"era")}}class EraNames extends XFAObject{constructor(e){super(jo,"eraNames",!0);this.era=new XFAObjectArray(2)}}class locale_set_Locale extends XFAObject{constructor(e){super(jo,"locale",!0);this.desc=e.desc||"";this.name="isoname";this.calendarSymbols=null;this.currencySymbols=null;this.datePatterns=null;this.dateTimeSymbols=null;this.numberPatterns=null;this.numberSymbols=null;this.timePatterns=null;this.typeFaces=null}}class locale_set_LocaleSet extends XFAObject{constructor(e){super(jo,"localeSet",!0);this.locale=new XFAObjectArray}}class Meridiem extends StringObject{constructor(e){super(jo,"meridiem")}}class MeridiemNames extends XFAObject{constructor(e){super(jo,"meridiemNames",!0);this.meridiem=new XFAObjectArray(2)}}class Month extends StringObject{constructor(e){super(jo,"month")}}class MonthNames extends XFAObject{constructor(e){super(jo,"monthNames",!0);this.abbr=getInteger({data:e.abbr,defaultValue:0,validate:e=>1===e});this.month=new XFAObjectArray(12)}}class NumberPattern extends StringObject{constructor(e){super(jo,"numberPattern");this.name=getStringOption(e.name,["full","long","med","short"])}}class NumberPatterns extends XFAObject{constructor(e){super(jo,"numberPatterns",!0);this.numberPattern=new XFAObjectArray(4)}}class NumberSymbol extends StringObject{constructor(e){super(jo,"numberSymbol");this.name=getStringOption(e.name,["decimal","grouping","percent","minus","zero"])}}class NumberSymbols extends XFAObject{constructor(e){super(jo,"numberSymbols",!0);this.numberSymbol=new XFAObjectArray(5)}}class TimePattern extends StringObject{constructor(e){super(jo,"timePattern");this.name=getStringOption(e.name,["full","long","med","short"])}}class TimePatterns extends XFAObject{constructor(e){super(jo,"timePatterns",!0);this.timePattern=new XFAObjectArray(4)}}class TypeFace extends XFAObject{constructor(e){super(jo,"typeFace",!0);this.name=""|e.name}}class TypeFaces extends XFAObject{constructor(e){super(jo,"typeFaces",!0);this.typeFace=new XFAObjectArray}}class LocaleSetNamespace{static[Zs](e,t){if(LocaleSetNamespace.hasOwnProperty(e))return LocaleSetNamespace[e](t)}static calendarSymbols(e){return new CalendarSymbols(e)}static currencySymbol(e){return new CurrencySymbol(e)}static currencySymbols(e){return new CurrencySymbols(e)}static datePattern(e){return new DatePattern(e)}static datePatterns(e){return new DatePatterns(e)}static dateTimeSymbols(e){return new DateTimeSymbols(e)}static day(e){return new Day(e)}static dayNames(e){return new DayNames(e)}static era(e){return new Era(e)}static eraNames(e){return new EraNames(e)}static locale(e){return new locale_set_Locale(e)}static localeSet(e){return new locale_set_LocaleSet(e)}static meridiem(e){return new Meridiem(e)}static meridiemNames(e){return new MeridiemNames(e)}static month(e){return new Month(e)}static monthNames(e){return new MonthNames(e)}static numberPattern(e){return new NumberPattern(e)}static numberPatterns(e){return new NumberPatterns(e)}static numberSymbol(e){return new NumberSymbol(e)}static numberSymbols(e){return new NumberSymbols(e)}static timePattern(e){return new TimePattern(e)}static timePatterns(e){return new TimePatterns(e)}static typeFace(e){return new TypeFace(e)}static typeFaces(e){return new TypeFaces(e)}}const _o=Qs.signature.id;class signature_Signature extends XFAObject{constructor(e){super(_o,"signature",!0)}}class SignatureNamespace{static[Zs](e,t){if(SignatureNamespace.hasOwnProperty(e))return SignatureNamespace[e](t)}static signature(e){return new signature_Signature(e)}}const Uo=Qs.stylesheet.id;class Stylesheet extends XFAObject{constructor(e){super(Uo,"stylesheet",!0)}}class StylesheetNamespace{static[Zs](e,t){if(StylesheetNamespace.hasOwnProperty(e))return StylesheetNamespace[e](t)}static stylesheet(e){return new Stylesheet(e)}}const Xo=Qs.xdp.id;class xdp_Xdp extends XFAObject{constructor(e){super(Xo,"xdp",!0);this.uuid=e.uuid||"";this.timeStamp=e.timeStamp||"";this.config=null;this.connectionSet=null;this.datasets=null;this.localeSet=null;this.stylesheet=new XFAObjectArray;this.template=null}[Bs](e){const t=Qs[e[Ts]];return t&&e[Os]===t.id}}class XdpNamespace{static[Zs](e,t){if(XdpNamespace.hasOwnProperty(e))return XdpNamespace[e](t)}static xdp(e){return new xdp_Xdp(e)}}const qo=Qs.xhtml.id,Ho=Symbol(),zo=new Set(["color","font","font-family","font-size","font-stretch","font-style","font-weight","margin","margin-bottom","margin-left","margin-right","margin-top","letter-spacing","line-height","orphans","page-break-after","page-break-before","page-break-inside","tab-interval","tab-stop","text-align","text-decoration","text-indent","vertical-align","widows","kerning-mode","xfa-font-horizontal-scale","xfa-font-vertical-scale","xfa-spacerun","xfa-tab-stops"]),Wo=new Map([["page-break-after","breakAfter"],["page-break-before","breakBefore"],["page-break-inside","breakInside"],["kerning-mode",e=>"none"===e?"none":"normal"],["xfa-font-horizontal-scale",e=>`scaleX(${Math.max(0,Math.min(parseInt(e)/100)).toFixed(2)})`],["xfa-font-vertical-scale",e=>`scaleY(${Math.max(0,Math.min(parseInt(e)/100)).toFixed(2)})`],["xfa-spacerun",""],["xfa-tab-stops",""],["font-size",(e,t)=>measureToString(.99*(e=t.fontSize=getMeasurement(e)))],["letter-spacing",e=>measureToString(getMeasurement(e))],["line-height",e=>measureToString(getMeasurement(e))],["margin",e=>measureToString(getMeasurement(e))],["margin-bottom",e=>measureToString(getMeasurement(e))],["margin-left",e=>measureToString(getMeasurement(e))],["margin-right",e=>measureToString(getMeasurement(e))],["margin-top",e=>measureToString(getMeasurement(e))],["text-indent",e=>measureToString(getMeasurement(e))],["font-family",e=>e],["vertical-align",e=>measureToString(getMeasurement(e))]]),$o=/\s+/g,Go=/[\r\n]+/g,Vo=/\r\n?/g;function mapStyle(e,t,a){const r=Object.create(null);if(!e)return r;const i=Object.create(null);for(const[t,a]of e.split(";").map((e=>e.split(":",2)))){const e=Wo.get(t);if(""===e)continue;let n=a;e&&(n="string"==typeof e?e:e(a,i));t.endsWith("scale")?r.transform=r.transform?`${r[t]} ${n}`:n:r[t.replaceAll(/-([a-zA-Z])/g,((e,t)=>t.toUpperCase()))]=n}r.fontFamily&&setFontFamily({typeface:r.fontFamily,weight:r.fontWeight||"normal",posture:r.fontStyle||"normal",size:i.fontSize||0},t,t[fs].fontFinder,r);if(a&&r.verticalAlign&&"0px"!==r.verticalAlign&&r.fontSize){const e=.583,t=.333,a=getMeasurement(r.fontSize);r.fontSize=measureToString(a*e);r.verticalAlign=measureToString(Math.sign(getMeasurement(r.verticalAlign))*a*t)}a&&r.fontSize&&(r.fontSize=`calc(${r.fontSize} * var(--scale-factor))`);fixTextIndent(r);return r}const Ko=new Set(["body","html"]);class XhtmlObject extends XmlObject{constructor(e,t){super(qo,t);this[Ho]=!1;this.style=e.style||""}[Xn](e){super[Xn](e);this.style=function checkStyle(e){return e.style?e.style.trim().split(/\s*;\s*/).filter((e=>!!e)).map((e=>e.split(/\s*:\s*/,2))).filter((([t,a])=>{"font-family"===t&&e[fs].usedTypefaces.add(a);return zo.has(t)})).map((e=>e.join(":"))).join(";"):""}(this)}[Ln](){return!Ko.has(this[Ts])}[Rs](e,t=!1){if(t)this[Ho]=!0;else{e=e.replaceAll(Go,"");this.style.includes("xfa-spacerun:yes")||(e=e.replaceAll($o," "))}e&&(this[$n]+=e)}[Ns](e,t=!0){const a=Object.create(null),r={top:NaN,bottom:NaN,left:NaN,right:NaN};let i=null;for(const[e,t]of this.style.split(";").map((e=>e.split(":",2))))switch(e){case"font-family":a.typeface=stripQuotes(t);break;case"font-size":a.size=getMeasurement(t);break;case"font-weight":a.weight=t;break;case"font-style":a.posture=t;break;case"letter-spacing":a.letterSpacing=getMeasurement(t);break;case"margin":const e=t.split(/ \t/).map((e=>getMeasurement(e)));switch(e.length){case 1:r.top=r.bottom=r.left=r.right=e[0];break;case 2:r.top=r.bottom=e[0];r.left=r.right=e[1];break;case 3:r.top=e[0];r.bottom=e[2];r.left=r.right=e[1];break;case 4:r.top=e[0];r.left=e[1];r.bottom=e[2];r.right=e[3]}break;case"margin-top":r.top=getMeasurement(t);break;case"margin-bottom":r.bottom=getMeasurement(t);break;case"margin-left":r.left=getMeasurement(t);break;case"margin-right":r.right=getMeasurement(t);break;case"line-height":i=getMeasurement(t)}e.pushData(a,r,i);if(this[$n])e.addString(this[$n]);else for(const t of this[os]())"#text"!==t[Ts]?t[Ns](e):e.addString(t[$n]);t&&e.popFont()}[Vs](e){const t=[];this[Kn]={children:t};this[Un]({});if(0===t.length&&!this[$n])return HTMLResult.EMPTY;let a;a=this[Ho]?this[$n]?this[$n].replaceAll(Vo,"\n"):void 0:this[$n]||void 0;return HTMLResult.success({name:this[Ts],attributes:{href:this.href,style:mapStyle(this.style,this,this[Ho])},children:t,value:a})}}class A extends XhtmlObject{constructor(e){super(e,"a");this.href=fixURL(e.href)||""}}class B extends XhtmlObject{constructor(e){super(e,"b")}[Ns](e){e.pushFont({weight:"bold"});super[Ns](e);e.popFont()}}class Body extends XhtmlObject{constructor(e){super(e,"body")}[Vs](e){const t=super[Vs](e),{html:a}=t;if(!a)return HTMLResult.EMPTY;a.name="div";a.attributes.class=["xfaRich"];return t}}class Br extends XhtmlObject{constructor(e){super(e,"br")}[$s](){return"\n"}[Ns](e){e.addString("\n")}[Vs](e){return HTMLResult.success({name:"br"})}}class Html extends XhtmlObject{constructor(e){super(e,"html")}[Vs](e){const t=[];this[Kn]={children:t};this[Un]({});if(0===t.length)return HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:{}},value:this[$n]||""});if(1===t.length){const e=t[0];if(e.attributes?.class.includes("xfaRich"))return HTMLResult.success(e)}return HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:{}},children:t})}}class I extends XhtmlObject{constructor(e){super(e,"i")}[Ns](e){e.pushFont({posture:"italic"});super[Ns](e);e.popFont()}}class Li extends XhtmlObject{constructor(e){super(e,"li")}}class Ol extends XhtmlObject{constructor(e){super(e,"ol")}}class P extends XhtmlObject{constructor(e){super(e,"p")}[Ns](e){super[Ns](e,!1);e.addString("\n");e.addPara();e.popFont()}[$s](){return this[us]()[os]().at(-1)===this?super[$s]():super[$s]()+"\n"}}class Span extends XhtmlObject{constructor(e){super(e,"span")}}class Sub extends XhtmlObject{constructor(e){super(e,"sub")}}class Sup extends XhtmlObject{constructor(e){super(e,"sup")}}class Ul extends XhtmlObject{constructor(e){super(e,"ul")}}class XhtmlNamespace{static[Zs](e,t){if(XhtmlNamespace.hasOwnProperty(e))return XhtmlNamespace[e](t)}static a(e){return new A(e)}static b(e){return new B(e)}static body(e){return new Body(e)}static br(e){return new Br(e)}static html(e){return new Html(e)}static i(e){return new I(e)}static li(e){return new Li(e)}static ol(e){return new Ol(e)}static p(e){return new P(e)}static span(e){return new Span(e)}static sub(e){return new Sub(e)}static sup(e){return new Sup(e)}static ul(e){return new Ul(e)}}const Jo={config:ConfigNamespace,connection:ConnectionSetNamespace,datasets:DatasetsNamespace,localeSet:LocaleSetNamespace,signature:SignatureNamespace,stylesheet:StylesheetNamespace,template:TemplateNamespace,xdp:XdpNamespace,xhtml:XhtmlNamespace};class UnknownNamespace{constructor(e){this.namespaceId=e}[Zs](e,t){return new XmlObject(this.namespaceId,e,t)}}class Root extends XFAObject{constructor(e){super(-1,"root",Object.create(null));this.element=null;this[ps]=e}[Ds](e){this.element=e;return!0}[Jn](){super[Jn]();if(this.element.template instanceof Template){this[ps].set(_s,this.element);this.element.template[Us](this[ps]);this.element.template[ps]=this[ps]}}}class Empty extends XFAObject{constructor(){super(-1,"",Object.create(null))}[Ds](e){return!1}}class Builder{constructor(e=null){this._namespaceStack=[];this._nsAgnosticLevel=0;this._namespacePrefixes=new Map;this._namespaces=new Map;this._nextNsId=Math.max(...Object.values(Qs).map((({id:e})=>e)));this._currentNamespace=e||new UnknownNamespace(++this._nextNsId)}buildRoot(e){return new Root(e)}build({nsPrefix:e,name:t,attributes:a,namespace:r,prefixes:i}){const n=null!==r;if(n){this._namespaceStack.push(this._currentNamespace);this._currentNamespace=this._searchNamespace(r)}i&&this._addNamespacePrefix(i);if(a.hasOwnProperty(Ms)){const e=Jo.datasets,t=a[Ms];let r=null;for(const[a,i]of Object.entries(t)){if(this._getNamespaceToUse(a)===e){r={xfa:i};break}}r?a[Ms]=r:delete a[Ms]}const s=this._getNamespaceToUse(e),o=s?.[Zs](t,a)||new Empty;o[Ss]()&&this._nsAgnosticLevel++;(n||i||o[Ss]())&&(o[Hn]={hasNamespace:n,prefixes:i,nsAgnostic:o[Ss]()});return o}isNsAgnostic(){return this._nsAgnosticLevel>0}_searchNamespace(e){let t=this._namespaces.get(e);if(t)return t;for(const[a,{check:r}]of Object.entries(Qs))if(r(e)){t=Jo[a];if(t){this._namespaces.set(e,t);return t}break}t=new UnknownNamespace(++this._nextNsId);this._namespaces.set(e,t);return t}_addNamespacePrefix(e){for(const{prefix:t,value:a}of e){const e=this._searchNamespace(a);let r=this._namespacePrefixes.get(t);if(!r){r=[];this._namespacePrefixes.set(t,r)}r.push(e)}}_getNamespaceToUse(e){if(!e)return this._currentNamespace;const t=this._namespacePrefixes.get(e);if(t?.length>0)return t.at(-1);warn(`Unknown namespace prefix: ${e}.`);return null}clean(e){const{hasNamespace:t,prefixes:a,nsAgnostic:r}=e;t&&(this._currentNamespace=this._namespaceStack.pop());a&&a.forEach((({prefix:e})=>{this._namespacePrefixes.get(e).pop()}));r&&this._nsAgnosticLevel--}}class XFAParser extends XMLParserBase{constructor(e=null,t=!1){super();this._builder=new Builder(e);this._stack=[];this._globalData={usedTypefaces:new Set};this._ids=new Map;this._current=this._builder.buildRoot(this._ids);this._errorCode=Sn;this._whiteRegex=/^\s+$/;this._nbsps=/\xa0+/g;this._richText=t}parse(e){this.parseXml(e);if(this._errorCode===Sn){this._current[Jn]();return this._current.element}}onText(e){e=e.replace(this._nbsps,(e=>e.slice(1)+" "));this._richText||this._current[Ln]()?this._current[Rs](e,this._richText):this._whiteRegex.test(e)||this._current[Rs](e.trim())}onCdata(e){this._current[Rs](e)}_mkAttributes(e,t){let a=null,r=null;const i=Object.create({});for(const{name:n,value:s}of e)if("xmlns"===n)a?warn(`XFA - multiple namespace definition in <${t}>`):a=s;else if(n.startsWith("xmlns:")){const e=n.substring(6);r||(r=[]);r.push({prefix:e,value:s})}else{const e=n.indexOf(":");if(-1===e)i[n]=s;else{let t=i[Ms];t||(t=i[Ms]=Object.create(null));const[a,r]=[n.slice(0,e),n.slice(e+1)];(t[a]||=Object.create(null))[r]=s}}return[a,r,i]}_getNameAndPrefix(e,t){const a=e.indexOf(":");return-1===a?[e,null]:[e.substring(a+1),t?"":e.substring(0,a)]}onBeginElement(e,t,a){const[r,i,n]=this._mkAttributes(t,e),[s,o]=this._getNameAndPrefix(e,this._builder.isNsAgnostic()),c=this._builder.build({nsPrefix:o,name:s,attributes:n,namespace:r,prefixes:i});c[fs]=this._globalData;if(a){c[Jn]();this._current[Ds](c)&&c[qs](this._ids);c[Xn](this._builder)}else{this._stack.push(this._current);this._current=c}}onEndElement(e){const t=this._current;if(t[ys]()&&"string"==typeof t[$n]){const e=new XFAParser;e._globalData=this._globalData;const a=e.parse(t[$n]);t[$n]=null;t[Ds](a)}t[Jn]();this._current=this._stack.pop();this._current[Ds](t)&&t[qs](this._ids);t[Xn](this._builder)}onError(e){this._errorCode=e}}class XFAFactory{constructor(e){try{this.root=(new XFAParser).parse(XFAFactory._createDocument(e));const t=new Binder(this.root);this.form=t.bind();this.dataHandler=new DataHandler(this.root,t.getData());this.form[fs].template=this.form}catch(e){warn(`XFA - an error occurred during parsing and binding: ${e}`)}}isValid(){return this.root&&this.form}_createPagesHelper(){const e=this.form[Gs]();return new Promise(((t,a)=>{const nextIteration=()=>{try{const a=e.next();a.done?t(a.value):setTimeout(nextIteration,0)}catch(e){a(e)}};setTimeout(nextIteration,0)}))}async _createPages(){try{this.pages=await this._createPagesHelper();this.dims=this.pages.children.map((e=>{const{width:t,height:a}=e.attributes.style;return[0,0,parseInt(t),parseInt(a)]}))}catch(e){warn(`XFA - an error occurred during layout: ${e}`)}}getBoundingBox(e){return this.dims[e]}async getNumPages(){this.pages||await this._createPages();return this.dims.length}setImages(e){this.form[fs].images=e}setFonts(e){this.form[fs].fontFinder=new FontFinder(e);const t=[];for(let e of this.form[fs].usedTypefaces){e=stripQuotes(e);this.form[fs].fontFinder.find(e)||t.push(e)}return t.length>0?t:null}appendFonts(e,t){this.form[fs].fontFinder.add(e,t)}async getPages(){this.pages||await this._createPages();const e=this.pages;this.pages=null;return e}serializeData(e){return this.dataHandler.serialize(e)}static _createDocument(e){return e["/xdp:xdp"]?Object.values(e).join(""):e["xdp:xdp"]}static getRichTextAsHtml(e){if(!e||"string"!=typeof e)return null;try{let t=new XFAParser(XhtmlNamespace,!0).parse(e);if(!["body","xhtml"].includes(t[Ts])){const e=XhtmlNamespace.body({});e[_n](t);t=e}const a=t[Vs]();if(!a.success)return null;const{html:r}=a,{attributes:i}=r;if(i){i.class&&(i.class=i.class.filter((e=>!e.startsWith("xfa"))));i.dir="auto"}return{html:r,str:t[$s]()}}catch(e){warn(`XFA - an error occurred during parsing of rich text: ${e}`)}return null}}class AnnotationFactory{static createGlobals(e){return Promise.all([e.ensureCatalog("acroForm"),e.ensureDoc("xfaDatasets"),e.ensureCatalog("structTreeRoot"),e.ensureCatalog("baseUrl"),e.ensureCatalog("attachments")]).then((([t,a,r,i,n])=>({pdfManager:e,acroForm:t instanceof Dict?t:Dict.empty,xfaDatasets:a,structTreeRoot:r,baseUrl:i,attachments:n})),(e=>{warn(`createGlobals: "${e}".`);return null}))}static async create(e,t,a,r,i,n){const s=i?await this._getPageIndex(e,t,a.pdfManager):null;return a.pdfManager.ensure(this,"_create",[e,t,a,r,i,s,n])}static _create(e,t,a,r,i=!1,n=null,s=null){const o=e.fetchIfRef(t);if(!(o instanceof Dict))return;const{acroForm:c,pdfManager:l}=a,h=t instanceof Ref?t.toString():`annot_${r.createObjId()}`;let u=o.get("Subtype");u=u instanceof Name?u.name:null;const d={xref:e,ref:t,dict:o,subtype:u,id:h,annotationGlobals:a,collectFields:i,needAppearances:!i&&!0===c.get("NeedAppearances"),pageIndex:n,evaluatorOptions:l.evaluatorOptions,pageRef:s};switch(u){case"Link":return new LinkAnnotation(d);case"Text":return new TextAnnotation(d);case"Widget":let e=getInheritableProperty({dict:o,key:"FT"});e=e instanceof Name?e.name:null;switch(e){case"Tx":return new TextWidgetAnnotation(d);case"Btn":return new ButtonWidgetAnnotation(d);case"Ch":return new ChoiceWidgetAnnotation(d);case"Sig":return new SignatureWidgetAnnotation(d)}warn(`Unimplemented widget field type "${e}", falling back to base field type.`);return new WidgetAnnotation(d);case"Popup":return new PopupAnnotation(d);case"FreeText":return new FreeTextAnnotation(d);case"Line":return new LineAnnotation(d);case"Square":return new SquareAnnotation(d);case"Circle":return new CircleAnnotation(d);case"PolyLine":return new PolylineAnnotation(d);case"Polygon":return new PolygonAnnotation(d);case"Caret":return new CaretAnnotation(d);case"Ink":return new InkAnnotation(d);case"Highlight":return new HighlightAnnotation(d);case"Underline":return new UnderlineAnnotation(d);case"Squiggly":return new SquigglyAnnotation(d);case"StrikeOut":return new StrikeOutAnnotation(d);case"Stamp":return new StampAnnotation(d);case"FileAttachment":return new FileAttachmentAnnotation(d);default:i||warn(u?`Unimplemented annotation type "${u}", falling back to base annotation.`:"Annotation is missing the required /Subtype.");return new Annotation(d)}}static async _getPageIndex(e,t,a){try{const r=await e.fetchIfRefAsync(t);if(!(r instanceof Dict))return-1;const i=r.getRaw("P");if(i instanceof Ref)try{return await a.ensureCatalog("getPageIndex",[i])}catch(e){info(`_getPageIndex -- not a valid page reference: "${e}".`)}if(r.has("Kids"))return-1;const n=await a.ensureDoc("numPages");for(let e=0;ee/255))}function getQuadPoints(e,t){const a=e.getArray("QuadPoints");if(!Array.isArray(a)||0===a.length||a.length%8>0)return null;const r=[];for(let e=0,i=a.length/8;et[2]||st[3]))return null;r.push([{x:i,y:o},{x:n,y:o},{x:i,y:s},{x:n,y:s}])}return r}function getTransformMatrix(e,t,a){const[r,i,n,s]=Util.getAxialAlignedBoundingBox(t,a);if(r===n||i===s)return[1,0,0,1,e[0],e[1]];const o=(e[2]-e[0])/(n-r),c=(e[3]-e[1])/(s-i);return[o,0,0,c,e[0]-r*o,e[1]-i*c]}class Annotation{constructor(e){const{dict:t,xref:a,annotationGlobals:r}=e;this.setTitle(t.get("T"));this.setContents(t.get("Contents"));this.setModificationDate(t.get("M"));this.setFlags(t.get("F"));this.setRectangle(t.getArray("Rect"));this.setColor(t.getArray("C"));this.setBorderStyle(t);this.setAppearance(t);this.setOptionalContent(t);const i=t.get("MK");this.setBorderAndBackgroundColors(i);this.setRotation(i,t);this.ref=e.ref instanceof Ref?e.ref:null;this._streams=[];this.appearance&&this._streams.push(this.appearance);const n=!!(this.flags&te),s=!!(this.flags&ae);if(r.structTreeRoot){let a=t.get("StructParent");a=Number.isInteger(a)&&a>=0?a:-1;r.structTreeRoot.addAnnotationIdToPage(e.pageRef,a)}this.data={annotationFlags:this.flags,borderStyle:this.borderStyle,color:this.color,backgroundColor:this.backgroundColor,borderColor:this.borderColor,rotation:this.rotation,contentsObj:this._contents,hasAppearance:!!this.appearance,id:e.id,modificationDate:this.modificationDate,rect:this.rectangle,subtype:e.subtype,hasOwnCanvas:!1,noRotate:!!(this.flags&Q),noHTML:n&&s};if(e.collectFields){const r=t.get("Kids");if(Array.isArray(r)){const e=[];for(const t of r)t instanceof Ref&&e.push(t.toString());0!==e.length&&(this.data.kidIds=e)}this.data.actions=collectActions(a,t,we);this.data.fieldName=this._constructFieldName(t);this.data.pageIndex=e.pageIndex}this._isOffscreenCanvasSupported=e.evaluatorOptions.isOffscreenCanvasSupported;this._fallbackFontDict=null;this._needAppearances=!1}_hasFlag(e,t){return!!(e&t)}_isViewable(e){return!this._hasFlag(e,J)&&!this._hasFlag(e,ee)}_isPrintable(e){return this._hasFlag(e,Z)&&!this._hasFlag(e,Y)&&!this._hasFlag(e,J)}mustBeViewed(e,t){const a=e?.get(this.data.id)?.noView;return void 0!==a?!a:this.viewable&&!this._hasFlag(this.flags,Y)}mustBePrinted(e){const t=e?.get(this.data.id)?.noPrint;return void 0!==t?!t:this.printable}get viewable(){return null!==this.data.quadPoints&&(0===this.flags||this._isViewable(this.flags))}get printable(){return null!==this.data.quadPoints&&(0!==this.flags&&this._isPrintable(this.flags))}_parseStringHelper(e){const t="string"==typeof e?stringToPDFString(e):"";return{str:t,dir:t&&"rtl"===bidi(t).dir?"rtl":"ltr"}}setDefaultAppearance(e){const{dict:t,annotationGlobals:a}=e,r=getInheritableProperty({dict:t,key:"DA"})||a.acroForm.get("DA");this._defaultAppearance="string"==typeof r?r:"";this.data.defaultAppearanceData=parseDefaultAppearance(this._defaultAppearance)}setTitle(e){this._title=this._parseStringHelper(e)}setContents(e){this._contents=this._parseStringHelper(e)}setModificationDate(e){this.modificationDate="string"==typeof e?e:null}setFlags(e){this.flags=Number.isInteger(e)&&e>0?e:0;this.flags&J&&"Annotation"!==this.constructor.name&&(this.flags^=J)}hasFlag(e){return this._hasFlag(this.flags,e)}setRectangle(e){this.rectangle=Array.isArray(e)&&4===e.length?Util.normalizeRect(e):[0,0,0,0]}setColor(e){this.color=getRgbColor(e)}setLineEndings(e){this.lineEndings=["None","None"];if(Array.isArray(e)&&2===e.length)for(let t=0;t<2;t++){const a=e[t];if(a instanceof Name)switch(a.name){case"None":continue;case"Square":case"Circle":case"Diamond":case"OpenArrow":case"ClosedArrow":case"Butt":case"ROpenArrow":case"RClosedArrow":case"Slash":this.lineEndings[t]=a.name;continue}warn(`Ignoring invalid lineEnding: ${a}`)}}setRotation(e,t){this.rotation=0;let a=e instanceof Dict?e.get("R")||0:t.get("Rotate")||0;if(Number.isInteger(a)&&0!==a){a%=360;a<0&&(a+=360);a%90==0&&(this.rotation=a)}}setBorderAndBackgroundColors(e){if(e instanceof Dict){this.borderColor=getRgbColor(e.getArray("BC"),null);this.backgroundColor=getRgbColor(e.getArray("BG"),null)}else this.borderColor=this.backgroundColor=null}setBorderStyle(e){this.borderStyle=new AnnotationBorderStyle;if(e instanceof Dict)if(e.has("BS")){const t=e.get("BS");if(t instanceof Dict){const e=t.get("Type");if(!e||isName(e,"Border")){this.borderStyle.setWidth(t.get("W"),this.rectangle);this.borderStyle.setStyle(t.get("S"));this.borderStyle.setDashArray(t.getArray("D"))}}}else if(e.has("Border")){const t=e.getArray("Border");if(Array.isArray(t)&&t.length>=3){this.borderStyle.setHorizontalCornerRadius(t[0]);this.borderStyle.setVerticalCornerRadius(t[1]);this.borderStyle.setWidth(t[2],this.rectangle);4===t.length&&this.borderStyle.setDashArray(t[3],!0)}}else this.borderStyle.setWidth(0)}setAppearance(e){this.appearance=null;const t=e.get("AP");if(!(t instanceof Dict))return;const a=t.get("N");if(a instanceof BaseStream){this.appearance=a;return}if(!(a instanceof Dict))return;const r=e.get("AS");if(!(r instanceof Name&&a.has(r.name)))return;const i=a.get(r.name);i instanceof BaseStream&&(this.appearance=i)}setOptionalContent(e){this.oc=null;const t=e.get("OC");t instanceof Name?warn("setOptionalContent: Support for /Name-entry is not implemented."):t instanceof Dict&&(this.oc=t)}loadResources(e,t){return t.dict.getAsync("Resources").then((t=>{if(!t)return;return new ObjectLoader(t,e,t.xref).load().then((function(){return t}))}))}async getOperatorList(e,t,a,r,i){const n=this.data;let s=this.appearance;const o=!!(this.data.hasOwnCanvas&&a&l);if(!s){if(!o)return{opList:new OperatorList,separateForm:!1,separateCanvas:!1};s=new StringStream("");s.dict=new Dict}const c=s.dict,h=await this.loadResources(["ExtGState","ColorSpace","Pattern","Shading","XObject","Font"],s),u=c.getArray("BBox")||[0,0,1,1],d=c.getArray("Matrix")||[1,0,0,1,0,0],f=getTransformMatrix(n.rect,u,d),g=new OperatorList;let p;this.oc&&(p=await e.parseMarkedContentProps(this.oc,null));void 0!==p&&g.addOp(_t,["OC",p]);g.addOp(Gt,[n.id,n.rect,f,d,o]);await e.getOperatorList({stream:s,task:t,resources:h,operatorList:g,fallbackFontDict:this._fallbackFontDict});g.addOp(Vt,[]);void 0!==p&&g.addOp(Ut,[]);this.reset();return{opList:g,separateForm:!1,separateCanvas:o}}async save(e,t,a){return null}get hasTextContent(){return!1}async extractTextContent(e,t,a){if(!this.appearance)return;const r=await this.loadResources(["ExtGState","Font","Properties","XObject"],this.appearance),i=[],n=[];let s=null;const o={desiredSize:Math.Infinity,ready:!0,enqueue(e,t){for(const t of e.items)if(void 0!==t.str){s||=t.transform.slice(-2);n.push(t.str);if(t.hasEOL){i.push(n.join(""));n.length=0}}}};await e.getTextContent({stream:this.appearance,task:t,resources:r,includeMarkedContent:!0,sink:o,viewBox:a});this.reset();n.length&&i.push(n.join(""));if(i.length>1||i[0]){const e=this.appearance.dict,t=e.getArray("BBox")||[0,0,1,1],a=e.getArray("Matrix")||[1,0,0,1,0,0],r=this.data.rect,n=getTransformMatrix(r,t,a);n[4]-=r[0];n[5]-=r[1];s=Util.applyTransform(s,n);s=Util.applyTransform(s,a);this.data.textPosition=s;this.data.textContent=i}}getFieldObject(){return this.data.kidIds?{id:this.data.id,actions:this.data.actions,name:this.data.fieldName,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,type:"",kidIds:this.data.kidIds,page:this.data.pageIndex,rotation:this.rotation}:null}reset(){for(const e of this._streams)e.reset()}_constructFieldName(e){if(!e.has("T")&&!e.has("Parent")){warn("Unknown field name, falling back to empty field name.");return""}if(!e.has("Parent"))return stringToPDFString(e.get("T"));const t=[];e.has("T")&&t.unshift(stringToPDFString(e.get("T")));let a=e;const r=new RefSet;e.objId&&r.put(e.objId);for(;a.has("Parent");){a=a.get("Parent");if(!(a instanceof Dict)||a.objId&&r.has(a.objId))break;a.objId&&r.put(a.objId);a.has("T")&&t.unshift(stringToPDFString(a.get("T")))}return t.join(".")}}class AnnotationBorderStyle{constructor(){this.width=1;this.style=ge;this.dashArray=[3];this.horizontalCornerRadius=0;this.verticalCornerRadius=0}setWidth(e,t=[0,0,0,0]){if(e instanceof Name)this.width=0;else if("number"==typeof e){if(e>0){const a=(t[2]-t[0])/2,r=(t[3]-t[1])/2;if(a>0&&r>0&&(e>a||e>r)){warn(`AnnotationBorderStyle.setWidth - ignoring width: ${e}`);e=1}}this.width=e}}setStyle(e){if(e instanceof Name)switch(e.name){case"S":this.style=ge;break;case"D":this.style=pe;break;case"B":this.style=me;break;case"I":this.style=be;break;case"U":this.style=ye}}setDashArray(e,t=!1){if(Array.isArray(e)&&e.length>0){let a=!0,r=!0;for(const t of e){if(!(+t>=0)){a=!1;break}t>0&&(r=!1)}if(a&&!r){this.dashArray=e;t&&this.setStyle(Name.get("D"))}else this.width=0}else e&&(this.width=0)}setHorizontalCornerRadius(e){Number.isInteger(e)&&(this.horizontalCornerRadius=e)}setVerticalCornerRadius(e){Number.isInteger(e)&&(this.verticalCornerRadius=e)}}class MarkupAnnotation extends Annotation{constructor(e){super(e);const{dict:t}=e;if(t.has("IRT")){const e=t.getRaw("IRT");this.data.inReplyTo=e instanceof Ref?e.toString():null;const a=t.get("RT");this.data.replyType=a instanceof Name?a.name:K}let a=null;if(this.data.replyType===V){const e=t.get("IRT");this.setTitle(e.get("T"));this.data.titleObj=this._title;this.setContents(e.get("Contents"));this.data.contentsObj=this._contents;if(e.has("CreationDate")){this.setCreationDate(e.get("CreationDate"));this.data.creationDate=this.creationDate}else this.data.creationDate=null;if(e.has("M")){this.setModificationDate(e.get("M"));this.data.modificationDate=this.modificationDate}else this.data.modificationDate=null;a=e.getRaw("Popup");if(e.has("C")){this.setColor(e.getArray("C"));this.data.color=this.color}else this.data.color=null}else{this.data.titleObj=this._title;this.setCreationDate(t.get("CreationDate"));this.data.creationDate=this.creationDate;a=t.getRaw("Popup");t.has("C")||(this.data.color=null)}this.data.popupRef=a instanceof Ref?a.toString():null;t.has("RC")&&(this.data.richText=XFAFactory.getRichTextAsHtml(t.get("RC")))}setCreationDate(e){this.creationDate="string"==typeof e?e:null}_setDefaultAppearance({xref:e,extra:t,strokeColor:a,fillColor:r,blendMode:i,strokeAlpha:n,fillAlpha:s,pointsCallback:o}){let c=Number.MAX_VALUE,l=Number.MAX_VALUE,h=Number.MIN_VALUE,u=Number.MIN_VALUE;const d=["q"];t&&d.push(t);a&&d.push(`${a[0]} ${a[1]} ${a[2]} RG`);r&&d.push(`${r[0]} ${r[1]} ${r[2]} rg`);let f=this.data.quadPoints;f||(f=[[{x:this.rectangle[0],y:this.rectangle[3]},{x:this.rectangle[2],y:this.rectangle[3]},{x:this.rectangle[0],y:this.rectangle[1]},{x:this.rectangle[2],y:this.rectangle[1]}]]);for(const e of f){const[t,a,r,i]=o(d,e);c=Math.min(c,t);h=Math.max(h,a);l=Math.min(l,r);u=Math.max(u,i)}d.push("Q");const g=new Dict(e),p=new Dict(e);p.set("Subtype",Name.get("Form"));const m=new StringStream(d.join(" "));m.dict=p;g.set("Fm0",m);const b=new Dict(e);i&&b.set("BM",Name.get(i));"number"==typeof n&&b.set("CA",n);"number"==typeof s&&b.set("ca",s);const y=new Dict(e);y.set("GS0",b);const w=new Dict(e);w.set("ExtGState",y);w.set("XObject",g);const x=new Dict(e);x.set("Resources",w);const k=this.data.rect=[c,l,h,u];x.set("BBox",k);this.appearance=new StringStream("/GS0 gs /Fm0 Do");this.appearance.dict=x;this._streams.push(this.appearance,m)}static async createNewAnnotation(e,t,a,r){const i=t.ref||=e.getNewTemporaryRef(),n=await this.createNewAppearanceStream(t,e,r),s=[];let o;if(n){const r=e.getNewTemporaryRef();o=this.createNewDict(t,e,{apRef:r});await writeObject(r,n,s,e);a.push({ref:r,data:s.join("")})}else o=this.createNewDict(t,e,{});Number.isInteger(t.parentTreeId)&&o.set("StructParent",t.parentTreeId);s.length=0;await writeObject(i,o,s,e);return{ref:i,data:s.join("")}}static async createNewPrintAnnotation(e,t,a,r){const i=await this.createNewAppearanceStream(a,t,r),n=this.createNewDict(a,t,{ap:i}),s=new this.prototype.constructor({dict:n,xref:t,annotationGlobals:e,evaluatorOptions:r.evaluatorOptions});a.ref&&(s.ref=s.refToReplace=a.ref);return s}}class WidgetAnnotation extends Annotation{constructor(e){super(e);const{dict:t,xref:a,annotationGlobals:r}=e,i=this.data;this._needAppearances=e.needAppearances;i.annotationType=G;void 0===i.fieldName&&(i.fieldName=this._constructFieldName(t));void 0===i.actions&&(i.actions=collectActions(a,t,we));let n=getInheritableProperty({dict:t,key:"V",getArray:!0});i.fieldValue=this._decodeFormValue(n);const s=getInheritableProperty({dict:t,key:"DV",getArray:!0});i.defaultFieldValue=this._decodeFormValue(s);if(void 0===n&&r.xfaDatasets){const e=this._title.str;if(e){this._hasValueFromXFA=!0;i.fieldValue=n=r.xfaDatasets.getValue(e)}}void 0===n&&null!==i.defaultFieldValue&&(i.fieldValue=i.defaultFieldValue);i.alternativeText=stringToPDFString(t.get("TU")||"");this.setDefaultAppearance(e);i.hasAppearance||=this._needAppearances&&void 0!==i.fieldValue&&null!==i.fieldValue;const o=getInheritableProperty({dict:t,key:"FT"});i.fieldType=o instanceof Name?o.name:null;const c=getInheritableProperty({dict:t,key:"DR"}),l=r.acroForm.get("DR"),h=this.appearance?.dict.get("Resources");this._fieldResources={localResources:c,acroFormResources:l,appearanceResources:h,mergedResources:Dict.merge({xref:a,dictArray:[c,h,l],mergeSubDicts:!0})};i.fieldFlags=getInheritableProperty({dict:t,key:"Ff"});(!Number.isInteger(i.fieldFlags)||i.fieldFlags<0)&&(i.fieldFlags=0);i.readOnly=this.hasFieldFlag(re);i.required=this.hasFieldFlag(ie);i.hidden=this._hasFlag(i.annotationFlags,Y)||this._hasFlag(i.annotationFlags,ee)}_decodeFormValue(e){return Array.isArray(e)?e.filter((e=>"string"==typeof e)).map((e=>stringToPDFString(e))):e instanceof Name?stringToPDFString(e.name):"string"==typeof e?stringToPDFString(e):null}hasFieldFlag(e){return!!(this.data.fieldFlags&e)}_isViewable(e){return!0}mustBeViewed(e,t){return t?this.viewable:super.mustBeViewed(e,t)&&!this._hasFlag(this.flags,ee)}getRotationMatrix(e){let t=e?.get(this.data.id)?.rotation;void 0===t&&(t=this.rotation);if(0===t)return r;return getRotationMatrix(t,this.data.rect[2]-this.data.rect[0],this.data.rect[3]-this.data.rect[1])}getBorderAndBackgroundAppearances(e){let t=e?.get(this.data.id)?.rotation;void 0===t&&(t=this.rotation);if(!this.backgroundColor&&!this.borderColor)return"";const a=this.data.rect[2]-this.data.rect[0],r=this.data.rect[3]-this.data.rect[1],i=0===t||180===t?`0 0 ${a} ${r} re`:`0 0 ${r} ${a} re`;let n="";this.backgroundColor&&(n=`${getPdfColor(this.backgroundColor,!0)} ${i} f `);if(this.borderColor){n+=`${this.borderStyle.width||1} w ${getPdfColor(this.borderColor,!1)} ${i} S `}return n}async getOperatorList(e,t,a,r,i){if(r&&!(this instanceof SignatureWidgetAnnotation)&&!this.data.noHTML&&!this.data.hasOwnCanvas)return{opList:new OperatorList,separateForm:!0,separateCanvas:!1};if(!this._hasText)return super.getOperatorList(e,t,a,r,i);const n=await this._getAppearance(e,t,a,i);if(this.appearance&&null===n)return super.getOperatorList(e,t,a,r,i);const s=new OperatorList;if(!this._defaultAppearance||null===n)return{opList:s,separateForm:!1,separateCanvas:!1};const o=!!(this.data.hasOwnCanvas&&a&l),c=[0,0,this.data.rect[2]-this.data.rect[0],this.data.rect[3]-this.data.rect[1]],h=getTransformMatrix(this.data.rect,c,[1,0,0,1,0,0]);let u;this.oc&&(u=await e.parseMarkedContentProps(this.oc,null));void 0!==u&&s.addOp(_t,["OC",u]);s.addOp(Gt,[this.data.id,this.data.rect,h,this.getRotationMatrix(i),o]);const d=new StringStream(n);await e.getOperatorList({stream:d,task:t,resources:this._fieldResources.mergedResources,operatorList:s});s.addOp(Vt,[]);void 0!==u&&s.addOp(Ut,[]);return{opList:s,separateForm:!1,separateCanvas:o}}_getMKDict(e){const t=new Dict(null);e&&t.set("R",e);this.borderColor&&t.set("BC",getPdfColorArray(this.borderColor));this.backgroundColor&&t.set("BG",getPdfColorArray(this.backgroundColor));return t.size>0?t:null}amendSavedDict(e,t){}async save(e,t,a){const i=a?.get(this.data.id);let n=i?.value,s=i?.rotation;if(n===this.data.fieldValue||void 0===n){if(!this._hasValueFromXFA&&void 0===s)return null;n||=this.data.fieldValue}if(void 0===s&&!this._hasValueFromXFA&&Array.isArray(n)&&Array.isArray(this.data.fieldValue)&&n.length===this.data.fieldValue.length&&n.every(((e,t)=>e===this.data.fieldValue[t])))return null;void 0===s&&(s=this.rotation);let o=null;if(!this._needAppearances){o=await this._getAppearance(e,t,u,a);if(null===o)return null}let c=!1;if(o?.needAppearances){c=!0;o=null}const{xref:l}=e,h=l.fetchIfRef(this.ref);if(!(h instanceof Dict))return null;const d=new Dict(l);for(const e of h.getKeys())"AP"!==e&&d.set(e,h.getRaw(e));const f={path:this.data.fieldName,value:n},encoder=e=>isAscii(e)?e:stringToUTF16String(e,!0);d.set("V",Array.isArray(n)?n.map(encoder):encoder(n));this.amendSavedDict(a,d);const g=this._getMKDict(s);g&&d.set("MK",g);const p=[],m=[{ref:this.ref,data:"",xfa:f,needAppearances:c}];if(null!==o){const e=l.getNewTemporaryRef(),t=new Dict(l);d.set("AP",t);t.set("N",e);const i=this._getSaveFieldResources(l),n=new StringStream(o),s=n.dict=new Dict(l);s.set("Subtype",Name.get("Form"));s.set("Resources",i);s.set("BBox",[0,0,this.data.rect[2]-this.data.rect[0],this.data.rect[3]-this.data.rect[1]]);const c=this.getRotationMatrix(a);c!==r&&s.set("Matrix",c);await writeObject(e,n,p,l);m.push({ref:e,data:p.join(""),xfa:null,needAppearances:!1});p.length=0}d.set("M",`D:${getModificationDate()}`);await writeObject(this.ref,d,p,l);m[0].data=p.join("");return m}async _getAppearance(e,t,a,r){if(this.hasFieldFlag(se))return null;const i=r?.get(this.data.id);let n,s;if(i){n=i.formattedValue||i.value;s=i.rotation}if(void 0===s&&void 0===n&&!this._needAppearances&&(!this._hasValueFromXFA||this.appearance))return null;const c=this.getBorderAndBackgroundAppearances(r);if(void 0===n){n=this.data.fieldValue;if(!n)return`/Tx BMC q ${c}Q EMC`}Array.isArray(n)&&1===n.length&&(n=n[0]);assert("string"==typeof n,"Expected `value` to be a string.");n=n.trim();if(this.data.combo){const e=this.data.options.find((({exportValue:e})=>n===e));n=e?.displayValue||n}if(""===n)return`/Tx BMC q ${c}Q EMC`;void 0===s&&(s=this.rotation);let l,h=-1;if(this.data.multiLine){l=n.split(/\r\n?|\n/).map((e=>e.normalize("NFC")));h=l.length}else l=[n.replace(/\r\n?|\n/,"").normalize("NFC")];let d=this.data.rect[3]-this.data.rect[1],f=this.data.rect[2]-this.data.rect[0];90!==s&&270!==s||([f,d]=[d,f]);this._defaultAppearance||(this.data.defaultAppearanceData=parseDefaultAppearance(this._defaultAppearance="/Helvetica 0 Tf 0 g"));let g,p,m,b=await WidgetAnnotation._getFontData(e,t,this.data.defaultAppearanceData,this._fieldResources.mergedResources);const y=[];let w=!1;for(const e of l){const t=b.encodeString(e);t.length>1&&(w=!0);y.push(t.join(""))}if(w&&a&u)return{needAppearances:!0};if(w&&this._isOffscreenCanvasSupported){const a=this.data.comb?"monospace":"sans-serif",r=new FakeUnicodeFont(e.xref,a),i=r.createFontResources(l.join("")),s=i.getRaw("Font");if(this._fieldResources.mergedResources.has("Font")){const e=this._fieldResources.mergedResources.get("Font");for(const t of s.getKeys())e.set(t,s.getRaw(t))}else this._fieldResources.mergedResources.set("Font",s);const o=r.fontName.name;b=await WidgetAnnotation._getFontData(e,t,{fontName:o,fontSize:0},i);for(let e=0,t=y.length;e2)return`/Tx BMC q ${c}BT `+g+` 1 0 0 1 ${numberToString(2)} ${numberToString(C)} Tm (${escapeString(y[0])}) Tj ET Q EMC`;return`/Tx BMC q ${c}BT `+g+` 1 0 0 1 0 0 Tm ${this._renderText(y[0],b,p,f,S,{shift:0},2,C)} ET Q EMC`}static async _getFontData(e,t,a,r){const i=new OperatorList,n={font:null,clone(){return this}},{fontName:s,fontSize:o}=a;await e.handleSetFont(r,[s&&Name.get(s),o],null,i,t,n,null);return n.font}_getTextWidth(e,t){return t.charsToGlyphs(e).reduce(((e,t)=>e+t.width),0)/1e3}_computeFontSize(e,t,a,r,i){let{fontSize:s}=this.data.defaultAppearanceData,o=(s||12)*n,c=Math.round(e/o);if(!s){const roundWithTwoDigits=e=>Math.floor(100*e)/100;if(-1===i){const i=this._getTextWidth(a,r);s=roundWithTwoDigits(Math.min(e/n,i>t?t/i:1/0));c=1}else{const l=a.split(/\r\n?|\n/),h=[];for(const e of l){const t=r.encodeString(e).join(""),a=r.charsToGlyphs(t),i=r.getCharPositions(t);h.push({line:t,glyphs:a,positions:i})}const isTooBig=a=>{let i=0;for(const n of h){i+=this._splitLine(null,r,a,t,n).length*a;if(i>e)return!0}return!1};c=Math.max(c,i);for(;;){o=e/c;s=roundWithTwoDigits(o/n);if(!isTooBig(s))break;c++}}const{fontName:l,fontColor:h}=this.data.defaultAppearanceData;this._defaultAppearance=function createDefaultAppearance({fontSize:e,fontName:t,fontColor:a}){return`/${escapePDFName(t)} ${e} Tf ${getPdfColor(a,!0)}`}({fontSize:s,fontName:l,fontColor:h})}return[this._defaultAppearance,s,e/c]}_renderText(e,t,a,r,i,n,s,o){let c;if(1===i){c=(r-this._getTextWidth(e,t)*a)/2}else if(2===i){c=r-this._getTextWidth(e,t)*a-s}else c=s;const l=numberToString(c-n.shift);n.shift=c;return`${l} ${o=numberToString(o)} Td (${escapeString(e)}) Tj`}_getSaveFieldResources(e){const{localResources:t,appearanceResources:a,acroFormResources:r}=this._fieldResources,i=this.data.defaultAppearanceData?.fontName;if(!i)return t||Dict.empty;for(const e of[t,a])if(e instanceof Dict){const t=e.get("Font");if(t instanceof Dict&&t.has(i))return e}if(r instanceof Dict){const a=r.get("Font");if(a instanceof Dict&&a.has(i)){const r=new Dict(e);r.set(i,a.getRaw(i));const n=new Dict(e);n.set("Font",r);return Dict.merge({xref:e,dictArray:[n,t],mergeSubDicts:!0})}}return t||Dict.empty}getFieldObject(){return null}}class TextWidgetAnnotation extends WidgetAnnotation{constructor(e){super(e);this.data.hasOwnCanvas=this.data.readOnly&&!this.data.noHTML;this._hasText=!0;const t=e.dict;"string"!=typeof this.data.fieldValue&&(this.data.fieldValue="");let a=getInheritableProperty({dict:t,key:"Q"});(!Number.isInteger(a)||a<0||a>2)&&(a=null);this.data.textAlignment=a;let r=getInheritableProperty({dict:t,key:"MaxLen"});(!Number.isInteger(r)||r<0)&&(r=0);this.data.maxLen=r;this.data.multiLine=this.hasFieldFlag(ne);this.data.comb=this.hasFieldFlag(fe)&&!this.hasFieldFlag(ne)&&!this.hasFieldFlag(se)&&!this.hasFieldFlag(he)&&0!==this.data.maxLen;this.data.doNotScroll=this.hasFieldFlag(de)}get hasTextContent(){return!!this.appearance&&!this._needAppearances}_getCombAppearance(e,t,a,r,i,n,s,o,c,l,h){const u=i/this.data.maxLen,d=this.getBorderAndBackgroundAppearances(h),f=[],g=t.getCharPositions(a);for(const[e,t]of g)f.push(`(${escapeString(a.substring(e,t))}) Tj`);const p=f.join(` ${numberToString(u)} 0 Td `);return`/Tx BMC q ${d}BT `+e+` 1 0 0 1 ${numberToString(s)} ${numberToString(o+c)} Tm ${p} ET Q EMC`}_getMultilineAppearance(e,t,a,r,i,n,s,o,c,l,h,u){const d=[],f=i-2*o,g={shift:0};for(let e=0,n=t.length;er){c.push(e.substring(d,a));d=a;f=p;l=-1;u=-1}else{f+=p;l=a;h=i;u=t}else if(f+p>r)if(-1!==l){c.push(e.substring(d,h));d=h;t=u+1;l=-1;f=0}else{c.push(e.substring(d,a));d=a;f=p}else f+=p}d"Off"!==e));n.length=0;n.push("Off",e)}n.includes(this.data.fieldValue)||(this.data.fieldValue="Off");this.data.exportValue=n[1];const s=a.get(this.data.exportValue);this.checkedAppearance=s instanceof BaseStream?s:null;const o=a.get("Off");this.uncheckedAppearance=o instanceof BaseStream?o:null;this.checkedAppearance?this._streams.push(this.checkedAppearance):this._getDefaultCheckedAppearance(e,"check");this.uncheckedAppearance&&this._streams.push(this.uncheckedAppearance);this._fallbackFontDict=this.fallbackFontDict;null===this.data.defaultFieldValue&&(this.data.defaultFieldValue="Off")}_processRadioButton(e){this.data.buttonValue=null;const t=e.dict.get("Parent");if(t instanceof Dict){this.parent=e.dict.getRaw("Parent");const a=t.get("V");a instanceof Name&&(this.data.fieldValue=this._decodeFormValue(a))}const a=e.dict.get("AP");if(!(a instanceof Dict))return;const r=a.get("N");if(!(r instanceof Dict))return;for(const e of r.getKeys())if("Off"!==e){this.data.buttonValue=this._decodeFormValue(e);break}const i=r.get(this.data.buttonValue);this.checkedAppearance=i instanceof BaseStream?i:null;const n=r.get("Off");this.uncheckedAppearance=n instanceof BaseStream?n:null;this.checkedAppearance?this._streams.push(this.checkedAppearance):this._getDefaultCheckedAppearance(e,"disc");this.uncheckedAppearance&&this._streams.push(this.uncheckedAppearance);this._fallbackFontDict=this.fallbackFontDict;null===this.data.defaultFieldValue&&(this.data.defaultFieldValue="Off")}_processPushButton(e){const{dict:t,annotationGlobals:a}=e;if(t.has("A")||t.has("AA")||this.data.alternativeText){this.data.isTooltipOnly=!t.has("A")&&!t.has("AA");Catalog.parseDestDictionary({destDict:t,resultObj:this.data,docBaseUrl:a.baseUrl,docAttachments:a.attachments})}else warn("Push buttons without action dictionaries are not supported")}getFieldObject(){let e,t="button";if(this.data.checkBox){t="checkbox";e=this.data.exportValue}else if(this.data.radioButton){t="radiobutton";e=this.data.buttonValue}return{id:this.data.id,value:this.data.fieldValue||"Off",defaultValue:this.data.defaultFieldValue,exportValues:e,editable:!this.data.readOnly,name:this.data.fieldName,rect:this.data.rect,hidden:this.data.hidden,actions:this.data.actions,page:this.data.pageIndex,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,rotation:this.rotation,type:t}}get fallbackFontDict(){const e=new Dict;e.set("BaseFont",Name.get("ZapfDingbats"));e.set("Type",Name.get("FallbackType"));e.set("Subtype",Name.get("FallbackType"));e.set("Encoding",Name.get("ZapfDingbatsEncoding"));return shadow(this,"fallbackFontDict",e)}}class ChoiceWidgetAnnotation extends WidgetAnnotation{constructor(e){super(e);const{dict:t,xref:a}=e;this.indices=t.getArray("I");this.hasIndices=Array.isArray(this.indices)&&this.indices.length>0;this.data.options=[];const r=getInheritableProperty({dict:t,key:"Opt"});if(Array.isArray(r))for(let e=0,t=r.length;e=0&&t0?this.data.fieldValue[0]:null;return{id:this.data.id,value:t,defaultValue:this.data.defaultFieldValue,editable:!this.data.readOnly,name:this.data.fieldName,rect:this.data.rect,numItems:this.data.fieldValue.length,multipleSelection:this.data.multiSelect,hidden:this.data.hidden,actions:this.data.actions,items:this.data.options,page:this.data.pageIndex,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,rotation:this.rotation,type:e}}amendSavedDict(e,t){if(!this.hasIndices)return;let a=e?.get(this.data.id)?.value;Array.isArray(a)||(a=[a]);const r=[],{options:i}=this.data;for(let e=0,t=0,n=i.length;ea){a=r;t=e}}[f,g]=this._computeFontSize(e,l-4,t,d,-1)}const p=g*n,m=(p-g)/2,b=Math.floor(c/p);let y=0;if(u.length>0){const e=Math.min(...u),t=Math.max(...u);y=Math.max(0,t-b+1);y>e&&(y=e)}const w=Math.min(y+b+1,h),x=["/Tx BMC q",`1 1 ${l} ${c} re W n`];if(u.length){x.push("0.600006 0.756866 0.854904 rg");for(const e of u)y<=e&&e1)return null;e=t.join("");v.push(e);let a=0;const r=g.charsToGlyphs(e);for(const e of r)a+=e.width*S;C=Math.max(C,a)}let F=1;C>w&&(F=w/C);let O=1;const T=n*c,M=1*c,D=T*k.length;D>x&&(O=x/D);const R=c*Math.min(F,O);let N,E,L;switch(h){case 0:L=[1,0,0,1];E=[l[0],l[1],w,x];N=[l[0],l[3]-M];break;case 90:L=[0,1,-1,0];E=[l[1],-l[2],w,x];N=[l[1],-l[0]-M];break;case 180:L=[-1,0,0,-1];E=[-l[2],-l[3],w,x];N=[-l[2],-l[1]-M];break;case 270:L=[0,-1,1,0];E=[-l[3],l[0],w,x];N=[-l[3],l[2]-M]}const j=["q",`${L.join(" ")} 0 0 cm`,`${E.join(" ")} re W n`,"BT",`${getPdfColor(o,!0)}`,`0 Tc /Helv ${numberToString(R)} Tf`];j.push(`${N.join(" ")} Td (${escapeString(v[0])}) Tj`);const _=numberToString(T);for(let e=1,t=v.length;e{e.push(`${r[0]} ${r[1]} m`,`${r[2]} ${r[3]} l`,"S");return[t[0].x-c,t[1].x+c,t[3].y-c,t[1].y+c]}})}}}class SquareAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:a}=e;this.data.annotationType=R;this.data.hasOwnCanvas=this.data.noRotate;this.data.noHTML=!1;if(!this.appearance){const e=this.color?getPdfColorArray(this.color):[0,0,0],r=t.get("CA"),i=getRgbColor(t.getArray("IC"),null),n=i?getPdfColorArray(i):null,s=n?r:null;if(0===this.borderStyle.width&&!n)return;this._setDefaultAppearance({xref:a,extra:`${this.borderStyle.width} w`,strokeColor:e,fillColor:n,strokeAlpha:r,fillAlpha:s,pointsCallback:(e,t)=>{const a=t[2].x+this.borderStyle.width/2,r=t[2].y+this.borderStyle.width/2,i=t[3].x-t[2].x-this.borderStyle.width,s=t[1].y-t[3].y-this.borderStyle.width;e.push(`${a} ${r} ${i} ${s} re`);n?e.push("B"):e.push("S");return[t[0].x,t[1].x,t[3].y,t[1].y]}})}}}class CircleAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:a}=e;this.data.annotationType=N;if(!this.appearance){const e=this.color?getPdfColorArray(this.color):[0,0,0],r=t.get("CA"),i=getRgbColor(t.getArray("IC"),null),n=i?getPdfColorArray(i):null,s=n?r:null;if(0===this.borderStyle.width&&!n)return;const o=4/3*Math.tan(Math.PI/8);this._setDefaultAppearance({xref:a,extra:`${this.borderStyle.width} w`,strokeColor:e,fillColor:n,strokeAlpha:r,fillAlpha:s,pointsCallback:(e,t)=>{const a=t[0].x+this.borderStyle.width/2,r=t[0].y-this.borderStyle.width/2,i=t[3].x-this.borderStyle.width/2,s=t[3].y+this.borderStyle.width/2,c=a+(i-a)/2,l=r+(s-r)/2,h=(i-a)/2*o,u=(s-r)/2*o;e.push(`${c} ${s} m`,`${c+h} ${s} ${i} ${l+u} ${i} ${l} c`,`${i} ${l-u} ${c+h} ${r} ${c} ${r} c`,`${c-h} ${r} ${a} ${l-u} ${a} ${l} c`,`${a} ${l+u} ${c-h} ${s} ${c} ${s} c`,"h");n?e.push("B"):e.push("S");return[t[0].x,t[1].x,t[3].y,t[1].y]}})}}}class PolylineAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:a}=e;this.data.annotationType=L;this.data.hasOwnCanvas=this.data.noRotate;this.data.noHTML=!1;this.data.vertices=[];if(!(this instanceof PolygonAnnotation)){this.setLineEndings(t.getArray("LE"));this.data.lineEndings=this.lineEndings}const r=t.getArray("Vertices");if(Array.isArray(r)){for(let e=0,t=r.length;e{const a=this.data.vertices;for(let t=0,r=a.length;t{for(const t of this.data.inkLists){for(let a=0,r=t.length;ae.points)));h.set("F",4);h.set("Rotate",c);const u=new Dict(t);h.set("BS",u);u.set("W",l);h.set("C",Array.from(i,(e=>e/255)));h.set("CA",n);const d=new Dict(t);h.set("AP",d);a?d.set("N",a):d.set("N",r);return h}static async createNewAppearanceStream(e,t,a){const{color:r,rect:i,paths:n,thickness:s,opacity:o}=e,c=[`${s} w 1 J 1 j`,`${getPdfColor(r,!1)}`];1!==o&&c.push("/R0 gs");const l=[];for(const{bezier:e}of n){l.length=0;l.push(`${numberToString(e[0])} ${numberToString(e[1])} m`);for(let t=2,a=e.length;t{e.push(`${t[0].x} ${t[0].y} m`,`${t[1].x} ${t[1].y} l`,`${t[3].x} ${t[3].y} l`,`${t[2].x} ${t[2].y} l`,"f");return[t[0].x,t[1].x,t[3].y,t[1].y]}})}}else this.data.popupRef=null}static createNewDict(e,t,{apRef:a,ap:r}){const{color:i,opacity:n,rect:s,rotation:o,user:c,quadPoints:l}=e,h=new Dict(t);h.set("Type",Name.get("Annot"));h.set("Subtype",Name.get("Highlight"));h.set("CreationDate",`D:${getModificationDate()}`);h.set("Rect",s);h.set("F",4);h.set("Border",[0,0,0]);h.set("Rotate",o);h.set("QuadPoints",l);h.set("C",Array.from(i,(e=>e/255)));h.set("CA",n);c&&h.set("T",isAscii(c)?c:stringToUTF16String(c,!0));if(a||r){const e=new Dict(t);h.set("AP",e);e.set("N",a||r)}return h}static async createNewAppearanceStream(e,t,a){const{color:r,rect:i,outlines:n,opacity:s}=e,o=[`${getPdfColor(r,!0)}`,"/R0 gs"],c=[];for(const e of n){c.length=0;c.push(`${numberToString(e[0])} ${numberToString(e[1])} m`);for(let t=2,a=e.length;t{e.push(`${t[2].x} ${t[2].y+1.3} m`,`${t[3].x} ${t[3].y+1.3} l`,"S");return[t[0].x,t[1].x,t[3].y,t[1].y]}})}}else this.data.popupRef=null}}class SquigglyAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:a}=e;this.data.annotationType=U;if(this.data.quadPoints=getQuadPoints(t,null)){if(!this.appearance){const e=this.color?getPdfColorArray(this.color):[0,0,0],r=t.get("CA");this._setDefaultAppearance({xref:a,extra:"[] 0 d 1 w",strokeColor:e,strokeAlpha:r,pointsCallback:(e,t)=>{const a=(t[0].y-t[2].y)/6;let r=a,i=t[2].x;const n=t[2].y,s=t[3].x;e.push(`${i} ${n+r} m`);do{i+=2;r=0===r?a:0;e.push(`${i} ${n+r} l`)}while(i{e.push((t[0].x+t[2].x)/2+" "+(t[0].y+t[2].y)/2+" m",(t[1].x+t[3].x)/2+" "+(t[1].y+t[3].y)/2+" l","S");return[t[0].x,t[1].x,t[3].y,t[1].y]}})}}else this.data.popupRef=null}}class StampAnnotation extends MarkupAnnotation{constructor(e){super(e);this.data.annotationType=q;this.data.hasOwnCanvas=this.data.noRotate;this.data.noHTML=!1}static async createImage(e,t){const{width:a,height:r}=e,i=new OffscreenCanvas(a,r),n=i.getContext("2d",{alpha:!0});n.drawImage(e,0,0);const s=n.getImageData(0,0,a,r).data,o=new Uint32Array(s.buffer),c=o.some(FeatureTest.isLittleEndian?e=>e>>>24!=255:e=>255!=(255&e));if(c){n.fillStyle="white";n.fillRect(0,0,a,r);n.drawImage(e,0,0)}const l=i.convertToBlob({type:"image/jpeg",quality:1}).then((e=>e.arrayBuffer())),h=Name.get("XObject"),u=Name.get("Image"),d=new Dict(t);d.set("Type",h);d.set("Subtype",u);d.set("BitsPerComponent",8);d.set("ColorSpace",Name.get("DeviceRGB"));d.set("Filter",Name.get("DCTDecode"));d.set("BBox",[0,0,a,r]);d.set("Width",a);d.set("Height",r);let f=null;if(c){const e=new Uint8Array(o.length);if(FeatureTest.isLittleEndian)for(let t=0,a=o.length;t>>24;else for(let t=0,a=o.length;t=0&&n<=1?n:null}}function decodeString(e){try{return stringToUTF8String(e)}catch(t){warn(`UTF-8 decoding failed: "${t}".`);return e}}class DatasetXMLParser extends SimpleXMLParser{constructor(e){super(e);this.node=null}onEndElement(e){const t=super.onEndElement(e);if(t&&"xfa:datasets"===e){this.node=t;throw new Error("Aborting DatasetXMLParser.")}}}class DatasetReader{constructor(e){if(e.datasets)this.node=new SimpleXMLParser({hasAttributes:!0}).parseFromString(e.datasets).documentElement;else{const t=new DatasetXMLParser({hasAttributes:!0});try{t.parseFromString(e["xdp:xdp"])}catch{}this.node=t.node}}getValue(e){if(!this.node||!e)return"";const t=this.node.searchNode(parseXFAPath(e),0);if(!t)return"";const a=t.firstChild;return"value"===a?.nodeName?t.children.map((e=>decodeString(e.textContent))):decodeString(t.textContent)}}class XRef{#B=null;constructor(e,t){this.stream=e;this.pdfManager=t;this.entries=[];this._xrefStms=new Set;this._cacheMap=new Map;this._pendingRefs=new RefSet;this._newPersistentRefNum=null;this._newTemporaryRefNum=null;this._persistentRefsCache=null}getNewPersistentRef(e){null===this._newPersistentRefNum&&(this._newPersistentRefNum=this.entries.length||1);const t=this._newPersistentRefNum++;this._cacheMap.set(t,e);return Ref.get(t,0)}getNewTemporaryRef(){if(null===this._newTemporaryRefNum){this._newTemporaryRefNum=this.entries.length||1;if(this._newPersistentRefNum){this._persistentRefsCache=new Map;for(let e=this._newTemporaryRefNum;e0;){const[s,o]=n;if(!Number.isInteger(s)||!Number.isInteger(o))throw new FormatError(`Invalid XRef range fields: ${s}, ${o}`);if(!Number.isInteger(a)||!Number.isInteger(r)||!Number.isInteger(i))throw new FormatError(`Invalid XRef entry fields length: ${s}, ${o}`);for(let n=t.entryNum;n=e.length);){a+=String.fromCharCode(r);r=e[t]}return a}function skipUntil(e,t,a){const r=a.length,i=e.length;let n=0;for(;t=r)break;t++;n++}return n}const e=/\b(endobj|\d+\s+\d+\s+obj|xref|trailer\s*<<)\b/g,t=/\b(startxref|\d+\s+\d+\s+obj)\b/g,a=/^(\d+)\s+(\d+)\s+obj\b/,r=new Uint8Array([116,114,97,105,108,101,114]),i=new Uint8Array([115,116,97,114,116,120,114,101,102]),n=new Uint8Array([47,88,82,101,102]);this.entries.length=0;this._cacheMap.clear();const s=this.stream;s.pos=0;const o=s.getBytes(),c=bytesToString(o),l=o.length;let h=s.start;const u=[],d=[];for(;h=l)break;f=o[h]}while(10!==f&&13!==f);continue}const g=readToken(o,h);let p;if(g.startsWith("xref")&&(4===g.length||/\s/.test(g[4]))){h+=skipUntil(o,h,r);u.push(h);h+=skipUntil(o,h,i)}else if(p=a.exec(g)){const t=0|p[1],a=0|p[2],r=h+g.length;let i,u=!1;if(this.entries[t]){if(this.entries[t].gen===a)try{new Parser({lexer:new Lexer(s.makeSubStream(r))}).getObj();u=!0}catch(e){e instanceof ParserEOFException?warn(`indexObjects -- checking object (${g}): "${e}".`):u=!0}}else u=!0;u&&(this.entries[t]={offset:h-s.start,gen:a,uncompressed:!0});e.lastIndex=r;const f=e.exec(c);if(f){i=e.lastIndex+1-h;if("endobj"!==f[1]){warn(`indexObjects: Found "${f[1]}" inside of another "obj", caused by missing "endobj" -- trying to recover.`);i-=f[1].length+1}}else i=l-h;const m=o.subarray(h,h+i),b=skipUntil(m,0,n);if(b0?Math.max(...this._xrefStms):null)}getEntry(e){const t=this.entries[e];return t&&!t.free&&t.offset?t:null}fetchIfRef(e,t=!1){return e instanceof Ref?this.fetch(e,t):e}fetch(e,t=!1){if(!(e instanceof Ref))throw new Error("ref object is not a reference");const a=e.num,r=this._cacheMap.get(a);if(void 0!==r){r instanceof Dict&&!r.objId&&(r.objId=e.toString());return r}let i=this.getEntry(a);if(null===i){this._cacheMap.set(a,i);return i}if(this._pendingRefs.has(e)){this._pendingRefs.remove(e);warn(`Ignoring circular reference: ${e}.`);return da}this._pendingRefs.put(e);try{i=i.uncompressed?this.fetchUncompressed(e,i,t):this.fetchCompressed(e,i,t);this._pendingRefs.remove(e)}catch(t){this._pendingRefs.remove(e);throw t}i instanceof Dict?i.objId=e.toString():i instanceof BaseStream&&(i.dict.objId=e.toString());return i}fetchUncompressed(e,t,a=!1){const r=e.gen;let i=e.num;if(t.gen!==r){const n=`Inconsistent generation in XRef: ${e}`;if(this._generationFallback&&t.gen0&&t[3]-t[1]>0)return t;warn(`Empty, or invalid, /${e} entry.`)}return null}get mediaBox(){return shadow(this,"mediaBox",this._getBoundingBox("MediaBox")||Yo)}get cropBox(){return shadow(this,"cropBox",this._getBoundingBox("CropBox")||this.mediaBox)}get userUnit(){let e=this.pageDict.get("UserUnit");("number"!=typeof e||e<=0)&&(e=1);return shadow(this,"userUnit",e)}get view(){const{cropBox:e,mediaBox:t}=this;if(e!==t&&!isArrayEqual(e,t)){const a=Util.intersect(e,t);if(a&&a[2]-a[0]>0&&a[3]-a[1]>0)return shadow(this,"view",a);warn("Empty /CropBox and /MediaBox intersection.")}return shadow(this,"view",t)}get rotate(){let e=this._getInheritableProperty("Rotate")||0;e%90!=0?e=0:e>=360?e%=360:e<0&&(e=(e%360+360)%360);return shadow(this,"rotate",e)}_onSubStreamError(e,t){if(!this.evaluatorOptions.ignoreErrors)throw e;warn(`getContentStream - ignoring sub-stream (${t}): "${e}".`)}getContentStream(){return this.pdfManager.ensure(this,"content").then((e=>e instanceof BaseStream?e:Array.isArray(e)?new StreamsSequenceStream(e,this._onSubStreamError.bind(this)):new NullStream))}get xfaData(){return shadow(this,"xfaData",this.xfaFactory?{bbox:this.xfaFactory.getBoundingBox(this.pageIndex)}:null)}#R(e,t,a){for(const r of e)if(r.id){const e=Ref.fromString(r.id);if(!e){warn(`A non-linked annotation cannot be modified: ${r.id}`);continue}if(r.deleted){t.put(e);continue}a?.put(e);r.ref=e;delete r.id}}async saveNewAnnotations(e,t,a,r){if(this.xfaFactory)throw new Error("XFA: Cannot save new annotations.");const i=new PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions}),n=new RefSet,s=new RefSet;this.#R(a,n,s);const o=this.pageDict,c=this.annotations.filter((e=>!(e instanceof Ref&&n.has(e)))),l=await AnnotationFactory.saveNewAnnotations(i,t,a,r);for(const{ref:e}of l.annotations)e instanceof Ref&&!s.has(e)&&c.push(e);const h=o.get("Annots");o.set("Annots",c);const u=[];await writeObject(this.ref,o,u,this.xref);h&&o.set("Annots",h);const d=l.dependencies;d.push({ref:this.ref,data:u.join("")},...l.annotations);return d}save(e,t,a){const r=new PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions});return this._parsedAnnotations.then((function(e){const i=[];for(const n of e)n.mustBePrinted(a)&&i.push(n.save(r,t,a).catch((function(e){warn(`save - ignoring annotation data during "${t.name}" task: "${e}".`);return null})));return Promise.all(i).then((function(e){return e.filter((e=>!!e))}))}))}loadResources(e){this.resourcesPromise||(this.resourcesPromise=this.pdfManager.ensure(this,"resources"));return this.resourcesPromise.then((()=>new ObjectLoader(this.resources,e,this.xref).load()))}getOperatorList({handler:e,sink:t,task:a,intent:r,cacheKey:i,annotationStorage:n=null}){const s=this.getContentStream(),o=this.loadResources(["ColorSpace","ExtGState","Font","Pattern","Properties","Shading","XObject"]),u=new PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions}),g=this.xfaFactory?null:getNewAnnotationsMap(n);let m=null,b=Promise.resolve(null);if(g){const e=g.get(this.pageIndex);if(e){const t=this.pdfManager.ensureDoc("annotationGlobals");let r;const i=new Set;for(const{bitmapId:t,bitmap:a}of e)!t||a||i.has(t)||i.add(t);const{isOffscreenCanvasSupported:s}=this.evaluatorOptions;if(i.size>0){const t=e.slice();for(const[e,a]of n)e.startsWith(p)&&a.bitmap&&i.has(a.bitmapId)&&t.push(a);r=AnnotationFactory.generateImages(t,this.xref,s)}else r=AnnotationFactory.generateImages(e,this.xref,s);m=new RefSet;this.#R(e,m,null);b=t.then((t=>t?AnnotationFactory.printNewAnnotations(t,u,a,e,r):null))}}const y=Promise.all([s,o]).then((([n])=>{const s=new OperatorList(r,t);e.send("StartRenderPage",{transparency:u.hasBlendModes(this.resources,this.nonBlendModesSet),pageIndex:this.pageIndex,cacheKey:i});return u.getOperatorList({stream:n,task:a,resources:this.resources,operatorList:s}).then((function(){return s}))}));return Promise.all([y,this._parsedAnnotations,b]).then((function([e,t,i]){if(i){t=t.filter((e=>!(e.ref&&m.has(e.ref))));for(let e=0,a=i.length;ee.ref&&isRefsEqual(e.ref,r.refToReplace)));if(n>=0){t.splice(n,1,r);i.splice(e--,1);a--}}}t=t.concat(i)}if(0===t.length||r&f){e.flush(!0);return{length:e.totalLength}}const s=!!(r&d),o=!!(r&c),g=!!(r&l),p=!!(r&h),b=[];for(const e of t)(o||g&&e.mustBeViewed(n,s)||p&&e.mustBePrinted(n))&&b.push(e.getOperatorList(u,a,r,s,n).catch((function(e){warn(`getOperatorList - ignoring annotation data during "${a.name}" task: "${e}".`);return{opList:null,separateForm:!1,separateCanvas:!1}})));return Promise.all(b).then((function(t){let a=!1,r=!1;for(const{opList:i,separateForm:n,separateCanvas:s}of t){e.addOpList(i);a||=n;r||=s}e.flush(!0,{form:a,canvas:r});return{length:e.totalLength}}))}))}extractTextContent({handler:e,task:t,includeMarkedContent:a,disableNormalization:r,sink:i}){const n=this.getContentStream(),s=this.loadResources(["ExtGState","Font","Properties","XObject"]);return Promise.all([n,s]).then((([n])=>new PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions}).getTextContent({stream:n,task:t,resources:this.resources,includeMarkedContent:a,disableNormalization:r,sink:i,viewBox:this.view})))}async getStructTree(){const e=await this.pdfManager.ensureCatalog("structTreeRoot");if(!e)return null;await this._parsedAnnotations;return(await this.pdfManager.ensure(this,"_parseStructTree",[e])).serializable}_parseStructTree(e){const t=new StructTreePage(e,this.pageDict);t.parse(this.ref);return t}async getAnnotationsData(e,t,a){const r=await this._parsedAnnotations;if(0===r.length)return r;const i=[],n=[];let s;const o=!!(a&c),u=!!(a&l),d=!!(a&h);for(const a of r){const r=o||u&&a.viewable;(r||d&&a.printable)&&i.push(a.data);if(a.hasTextContent&&r){s||=new PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions});n.push(a.extractTextContent(s,t,[-1/0,-1/0,1/0,1/0]).catch((function(e){warn(`getAnnotationsData - ignoring textContent during "${t.name}" task: "${e}".`)})))}}await Promise.all(n);return i}get annotations(){const e=this._getInheritableProperty("Annots");return shadow(this,"annotations",Array.isArray(e)?e:[])}get _parsedAnnotations(){return shadow(this,"_parsedAnnotations",this.pdfManager.ensure(this,"annotations").then((async e=>{if(0===e.length)return e;const t=await this.pdfManager.ensureDoc("annotationGlobals");if(!t)return[];const a=[];for(const r of e)a.push(AnnotationFactory.create(this.xref,r,t,this._localIdFactory,!1,this.ref).catch((function(e){warn(`_parsedAnnotations: "${e}".`);return null})));const r=[];let i;for(const e of await Promise.all(a))e&&(e instanceof PopupAnnotation?(i||=[]).push(e):r.push(e));i&&r.push(...i);return r})))}get jsActions(){return shadow(this,"jsActions",collectActions(this.xref,this.pageDict,ke))}}const Zo=new Uint8Array([37,80,68,70,45]),Qo=new Uint8Array([115,116,97,114,116,120,114,101,102]),ec=new Uint8Array([101,110,100,111,98,106]);function find(e,t,a=1024,r=!1){const i=t.length,n=e.peekBytes(a),s=n.length-i;if(s<=0)return!1;if(r){const a=i-1;let r=n.length-1;for(;r>=a;){let s=0;for(;s=i){e.pos+=r-a;return!0}r--}}else{let a=0;for(;a<=s;){let r=0;for(;r=i){e.pos+=a;return!0}a++}}return!1}class PDFDocument{constructor(e,t){if(t.length<=0)throw new InvalidPDFException("The PDF file is empty, i.e. its size is zero bytes.");this.pdfManager=e;this.stream=t;this.xref=new XRef(t,e);this._pagePromises=new Map;this._version=null;const a={font:0};this._globalIdFactory=class{static getDocId(){return`g_${e.docId}`}static createFontId(){return"f"+ ++a.font}static createObjId(){unreachable("Abstract method `createObjId` called.")}static getPageObjId(){unreachable("Abstract method `getPageObjId` called.")}}}parse(e){this.xref.parse(e);this.catalog=new Catalog(this.pdfManager,this.xref)}get linearization(){let e=null;try{e=Linearization.create(this.stream)}catch(e){if(e instanceof MissingDataException)throw e;info(e)}return shadow(this,"linearization",e)}get startXRef(){const e=this.stream;let t=0;if(this.linearization){e.reset();find(e,ec)&&(t=e.pos+6-e.start)}else{const a=1024,r=Qo.length;let i=!1,n=e.end;for(;!i&&n>0;){n-=a-r;n<0&&(n=0);e.pos=n;i=find(e,Qo,a,!0)}if(i){e.skip(9);let a;do{a=e.getByte()}while(isWhiteSpace(a));let r="";for(;a>=32&&a<=57;){r+=String.fromCharCode(a);a=e.getByte()}t=parseInt(r,10);isNaN(t)&&(t=0)}}return shadow(this,"startXRef",t)}checkHeader(){const e=this.stream;e.reset();if(!find(e,Zo))return;e.moveStart();e.skip(Zo.length);let t,a="";for(;(t=e.getByte())>32&&a.length<7;)a+=String.fromCharCode(t);ya.test(a)?this._version=a:warn(`Invalid PDF header version: ${a}`)}parseStartXRef(){this.xref.setStartXRef(this.startXRef)}get numPages(){let e=0;e=this.catalog.hasActualNumPages?this.catalog.numPages:this.xfaFactory?this.xfaFactory.getNumPages():this.linearization?this.linearization.numPages:this.catalog.numPages;return shadow(this,"numPages",e)}_hasOnlyDocumentSignatures(e,t=0){return!!Array.isArray(e)&&e.every((e=>{if(!((e=this.xref.fetchIfRef(e))instanceof Dict))return!1;if(e.has("Kids")){if(++t>10){warn("_hasOnlyDocumentSignatures: maximum recursion depth reached");return!1}return this._hasOnlyDocumentSignatures(e.get("Kids"),t)}const a=isName(e.get("FT"),"Sig"),r=e.get("Rect"),i=Array.isArray(r)&&r.every((e=>0===e));return a&&i}))}get _xfaStreams(){const e=this.catalog.acroForm;if(!e)return null;const t=e.get("XFA"),a={"xdp:xdp":"",template:"",datasets:"",config:"",connectionSet:"",localeSet:"",stylesheet:"","/xdp:xdp":""};if(t instanceof BaseStream&&!t.isEmpty){a["xdp:xdp"]=t;return a}if(!Array.isArray(t)||0===t.length)return null;for(let e=0,r=t.length;e{u.set(e,t)}));const d=[];for(const[e,a]of u){const i=a.get("FontDescriptor");if(!(i instanceof Dict))continue;let n=i.get("FontFamily");n=n.replaceAll(/[ ]+(\d)/g,"$1");const s={fontFamily:n,fontWeight:i.get("FontWeight"),italicAngle:-i.get("ItalicAngle")};validateCSSFont(s)&&d.push(o.handleSetFont(r,[Name.get(e),1],null,c,t,h,null,s).catch((function(e){warn(`loadXfaFonts: "${e}".`);return null})))}await Promise.all(d);const f=this.xfaFactory.setFonts(l);if(!f)return;s.ignoreErrors=!0;d.length=0;l.length=0;const g=new Set;for(const e of f)getXfaFontName(`${e}-Regular`)||g.add(e);g.size&&f.push("PdfJS-Fallback");for(const e of f)if(!g.has(e))for(const a of[{name:"Regular",fontWeight:400,italicAngle:0},{name:"Bold",fontWeight:700,italicAngle:0},{name:"Italic",fontWeight:400,italicAngle:12},{name:"BoldItalic",fontWeight:700,italicAngle:12}]){const i=`${e}-${a.name}`,n=getXfaFontDict(i);d.push(o.handleSetFont(r,[Name.get(i),1],null,c,t,h,n,{fontFamily:e,fontWeight:a.fontWeight,italicAngle:a.italicAngle}).catch((function(e){warn(`loadXfaFonts: "${e}".`);return null})))}await Promise.all(d);this.xfaFactory.appendFonts(l,g)}async serializeXfaData(e){return this.xfaFactory?this.xfaFactory.serializeData(e):null}get version(){return this.catalog.version||this._version}get formInfo(){const e={hasFields:!1,hasAcroForm:!1,hasXfa:!1,hasSignatures:!1},t=this.catalog.acroForm;if(!t)return shadow(this,"formInfo",e);try{const a=t.get("Fields"),r=Array.isArray(a)&&a.length>0;e.hasFields=r;const i=t.get("XFA");e.hasXfa=Array.isArray(i)&&i.length>0||i instanceof BaseStream&&!i.isEmpty;const n=!!(1&t.get("SigFlags")),s=n&&this._hasOnlyDocumentSignatures(a);e.hasAcroForm=r&&!s;e.hasSignatures=n}catch(e){if(e instanceof MissingDataException)throw e;warn(`Cannot fetch form information: "${e}".`)}return shadow(this,"formInfo",e)}get documentInfo(){const e={PDFFormatVersion:this.version,Language:this.catalog.lang,EncryptFilterName:this.xref.encrypt?this.xref.encrypt.filterName:null,IsLinearized:!!this.linearization,IsAcroFormPresent:this.formInfo.hasAcroForm,IsXFAPresent:this.formInfo.hasXfa,IsCollectionPresent:!!this.catalog.collection,IsSignaturesPresent:this.formInfo.hasSignatures};let t;try{t=this.xref.trailer.get("Info")}catch(e){if(e instanceof MissingDataException)throw e;info("The document information dictionary is invalid.")}if(!(t instanceof Dict))return shadow(this,"documentInfo",e);for(const a of t.getKeys()){const r=t.get(a);switch(a){case"Title":case"Author":case"Subject":case"Keywords":case"Creator":case"Producer":case"CreationDate":case"ModDate":if("string"==typeof r){e[a]=stringToPDFString(r);continue}break;case"Trapped":if(r instanceof Name){e[a]=r;continue}break;default:let t;switch(typeof r){case"string":t=stringToPDFString(r);break;case"number":case"boolean":t=r;break;default:r instanceof Name&&(t=r)}if(void 0===t){warn(`Bad value, for custom key "${a}", in Info: ${r}.`);continue}e.Custom||(e.Custom=Object.create(null));e.Custom[a]=t;continue}warn(`Bad value, for key "${a}", in Info: ${r}.`)}return shadow(this,"documentInfo",e)}get fingerprints(){function validate(e){return"string"==typeof e&&e.length>0&&"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"!==e}function hexString(e){const t=[];for(const a of e){const e=a.toString(16);t.push(e.padStart(2,"0"))}return t.join("")}const e=this.xref.trailer.get("ID");let t,a;if(Array.isArray(e)&&validate(e[0])){t=stringToBytes(e[0]);e[1]!==e[0]&&validate(e[1])&&(a=stringToBytes(e[1]))}else t=Tn(this.stream.getByteRange(0,1024),0,1024);return shadow(this,"fingerprints",[hexString(t),a?hexString(a):null])}async _getLinearizationPage(e){const{catalog:t,linearization:a,xref:r}=this,i=Ref.get(a.objectNumberFirst,0);try{const e=await r.fetchAsync(i);if(e instanceof Dict){let a=e.getRaw("Type");a instanceof Ref&&(a=await r.fetchAsync(a));if(isName(a,"Page")||!e.has("Type")&&!e.has("Kids")){t.pageKidsCountCache.has(i)||t.pageKidsCountCache.put(i,1);t.pageIndexCache.has(i)||t.pageIndexCache.put(i,0);return[e,i]}}throw new FormatError("The Linearization dictionary doesn't point to a valid Page dictionary.")}catch(a){warn(`_getLinearizationPage: "${a.message}".`);return t.getPageDict(e)}}getPage(e){const t=this._pagePromises.get(e);if(t)return t;const{catalog:a,linearization:r,xfaFactory:i}=this;let n;n=i?Promise.resolve([Dict.empty,null]):r?.pageFirst===e?this._getLinearizationPage(e):a.getPageDict(e);n=n.then((([t,r])=>new Page({pdfManager:this.pdfManager,xref:this.xref,pageIndex:e,pageDict:t,ref:r,globalIdFactory:this._globalIdFactory,fontCache:a.fontCache,builtInCMapCache:a.builtInCMapCache,standardFontDataCache:a.standardFontDataCache,globalImageCache:a.globalImageCache,systemFontCache:a.systemFontCache,nonBlendModesSet:a.nonBlendModesSet,xfaFactory:i})));this._pagePromises.set(e,n);return n}async checkFirstPage(e=!1){if(!e)try{await this.getPage(0)}catch(e){if(e instanceof XRefEntryException){this._pagePromises.delete(0);await this.cleanup();throw new XRefParseException}}}async checkLastPage(e=!1){const{catalog:t,pdfManager:a}=this;t.setActualNumPages();let r;try{await Promise.all([a.ensureDoc("xfaFactory"),a.ensureDoc("linearization"),a.ensureCatalog("numPages")]);if(this.xfaFactory)return;r=this.linearization?this.linearization.numPages:t.numPages;if(!Number.isInteger(r))throw new FormatError("Page count is not an integer.");if(r<=1)return;await this.getPage(r-1)}catch(i){this._pagePromises.delete(r-1);await this.cleanup();if(i instanceof XRefEntryException&&!e)throw new XRefParseException;warn(`checkLastPage - invalid /Pages tree /Count: ${r}.`);let n;try{n=await t.getAllPageDicts(e)}catch(a){if(a instanceof XRefEntryException&&!e)throw new XRefParseException;t.setActualNumPages(1);return}for(const[e,[r,i]]of n){let n;if(r instanceof Error){n=Promise.reject(r);n.catch((()=>{}))}else n=Promise.resolve(new Page({pdfManager:a,xref:this.xref,pageIndex:e,pageDict:r,ref:i,globalIdFactory:this._globalIdFactory,fontCache:t.fontCache,builtInCMapCache:t.builtInCMapCache,standardFontDataCache:t.standardFontDataCache,globalImageCache:t.globalImageCache,systemFontCache:t.systemFontCache,nonBlendModesSet:t.nonBlendModesSet,xfaFactory:null}));this._pagePromises.set(e,n)}t.setActualNumPages(n.size)}}fontFallback(e,t){return this.catalog.fontFallback(e,t)}async cleanup(e=!1){return this.catalog?this.catalog.cleanup(e):clearGlobalCaches()}async#N(e,t,a,r,i){const{xref:n}=this;if(!(t instanceof Ref)||i.has(t))return;i.put(t);const s=await n.fetchAsync(t);if(!(s instanceof Dict))return;if(s.has("T")){const t=stringToPDFString(await s.getAsync("T"));e=""===e?t:`${e}.${t}`}else{let t=s;for(;;){t=t.getRaw("Parent");if(t instanceof Ref){if(i.has(t))break;t=await n.fetchAsync(t)}if(!(t instanceof Dict))break;if(t.has("T")){const a=stringToPDFString(await t.getAsync("T"));e=""===e?a:`${e}.${a}`;break}}}a.has(e)||a.set(e,[]);a.get(e).push(AnnotationFactory.create(n,t,r,null,!0,null).then((e=>e?.getFieldObject())).catch((function(e){warn(`#collectFieldObjects: "${e}".`);return null})));if(!s.has("Kids"))return;const o=await s.getAsync("Kids");if(Array.isArray(o))for(const t of o)await this.#N(e,t,a,r,i)}get fieldObjects(){if(!this.formInfo.hasFields)return shadow(this,"fieldObjects",Promise.resolve(null));return shadow(this,"fieldObjects",Promise.all([this.pdfManager.ensureDoc("annotationGlobals"),this.pdfManager.ensureCatalog("acroForm")]).then((async([e,t])=>{if(!e)return null;const a=new RefSet,r=Object.create(null),i=new Map;for(const r of await t.getAsync("Fields"))await this.#N("",r,i,e,a);const n=[];for(const[e,t]of i)n.push(Promise.all(t).then((t=>{(t=t.filter((e=>!!e))).length>0&&(r[e]=t)})));await Promise.all(n);return r})))}get hasJSActions(){return shadow(this,"hasJSActions",this.pdfManager.ensureDoc("_parseHasJSActions"))}async _parseHasJSActions(){const[e,t]=await Promise.all([this.pdfManager.ensureCatalog("jsActions"),this.pdfManager.ensureDoc("fieldObjects")]);return!!e||!!t&&Object.values(t).some((e=>e.some((e=>null!==e.actions))))}get calculationOrderIds(){const e=this.catalog.acroForm;if(!e?.has("CO"))return shadow(this,"calculationOrderIds",null);const t=e.get("CO");if(!Array.isArray(t)||0===t.length)return shadow(this,"calculationOrderIds",null);const a=[];for(const e of t)e instanceof Ref&&a.push(e.toString());return 0===a.length?shadow(this,"calculationOrderIds",null):shadow(this,"calculationOrderIds",a)}get annotationGlobals(){return shadow(this,"annotationGlobals",AnnotationFactory.createGlobals(this.pdfManager))}}class BasePdfManager{constructor(e){this.constructor===BasePdfManager&&unreachable("Cannot initialize BasePdfManager.");this._docBaseUrl=function parseDocBaseUrl(e){if(e){const t=createValidAbsoluteUrl(e);if(t)return t.href;warn(`Invalid absolute docBaseUrl: "${e}".`)}return null}(e.docBaseUrl);this._docId=e.docId;this._password=e.password;this.enableXfa=e.enableXfa;e.evaluatorOptions.isOffscreenCanvasSupported&&=FeatureTest.isOffscreenCanvasSupported;this.evaluatorOptions=e.evaluatorOptions}get docId(){return this._docId}get password(){return this._password}get docBaseUrl(){return this._docBaseUrl}get catalog(){return this.pdfDocument.catalog}ensureDoc(e,t){return this.ensure(this.pdfDocument,e,t)}ensureXRef(e,t){return this.ensure(this.pdfDocument.xref,e,t)}ensureCatalog(e,t){return this.ensure(this.pdfDocument.catalog,e,t)}getPage(e){return this.pdfDocument.getPage(e)}fontFallback(e,t){return this.pdfDocument.fontFallback(e,t)}loadXfaFonts(e,t){return this.pdfDocument.loadXfaFonts(e,t)}loadXfaImages(){return this.pdfDocument.loadXfaImages()}serializeXfaData(e){return this.pdfDocument.serializeXfaData(e)}cleanup(e=!1){return this.pdfDocument.cleanup(e)}async ensure(e,t,a){unreachable("Abstract method `ensure` called")}requestRange(e,t){unreachable("Abstract method `requestRange` called")}requestLoadedStream(e=!1){unreachable("Abstract method `requestLoadedStream` called")}sendProgressiveData(e){unreachable("Abstract method `sendProgressiveData` called")}updatePassword(e){this._password=e}terminate(e){unreachable("Abstract method `terminate` called")}}class LocalPdfManager extends BasePdfManager{constructor(e){super(e);const t=new Stream(e.source);this.pdfDocument=new PDFDocument(this,t);this._loadedStreamPromise=Promise.resolve(t)}async ensure(e,t,a){const r=e[t];return"function"==typeof r?r.apply(e,a):r}requestRange(e,t){return Promise.resolve()}requestLoadedStream(e=!1){return this._loadedStreamPromise}terminate(e){}}class NetworkPdfManager extends BasePdfManager{constructor(e){super(e);this.streamManager=new ChunkedStreamManager(e.source,{msgHandler:e.handler,length:e.length,disableAutoFetch:e.disableAutoFetch,rangeChunkSize:e.rangeChunkSize});this.pdfDocument=new PDFDocument(this,this.streamManager.getStream())}async ensure(e,t,a){try{const r=e[t];return"function"==typeof r?r.apply(e,a):r}catch(r){if(!(r instanceof MissingDataException))throw r;await this.requestRange(r.begin,r.end);return this.ensure(e,t,a)}}requestRange(e,t){return this.streamManager.requestRange(e,t)}requestLoadedStream(e=!1){return this.streamManager.requestAllChunks(e)}sendProgressiveData(e){this.streamManager.onReceiveData({chunk:e})}terminate(e){this.streamManager.abort(e)}}const tc=1,ac=2,rc=1,ic=2,nc=3,sc=4,oc=5,cc=6,lc=7,hc=8;function wrapReason(e){e instanceof Error||"object"==typeof e&&null!==e||unreachable('wrapReason: Expected "reason" to be a (possibly cloned) Error.');switch(e.name){case"AbortException":return new AbortException(e.message);case"MissingPDFException":return new MissingPDFException(e.message);case"PasswordException":return new PasswordException(e.message,e.code);case"UnexpectedResponseException":return new UnexpectedResponseException(e.message,e.status);case"UnknownErrorException":return new UnknownErrorException(e.message,e.details);default:return new UnknownErrorException(e.message,e.toString())}}class MessageHandler{constructor(e,t,a){this.sourceName=e;this.targetName=t;this.comObj=a;this.callbackId=1;this.streamId=1;this.streamSinks=Object.create(null);this.streamControllers=Object.create(null);this.callbackCapabilities=Object.create(null);this.actionHandler=Object.create(null);this._onComObjOnMessage=e=>{const t=e.data;if(t.targetName!==this.sourceName)return;if(t.stream){this.#E(t);return}if(t.callback){const e=t.callbackId,a=this.callbackCapabilities[e];if(!a)throw new Error(`Cannot resolve callback ${e}`);delete this.callbackCapabilities[e];if(t.callback===tc)a.resolve(t.data);else{if(t.callback!==ac)throw new Error("Unexpected callback case");a.reject(wrapReason(t.reason))}return}const r=this.actionHandler[t.action];if(!r)throw new Error(`Unknown action from worker: ${t.action}`);if(t.callbackId){const e=this.sourceName,i=t.sourceName;new Promise((function(e){e(r(t.data))})).then((function(r){a.postMessage({sourceName:e,targetName:i,callback:tc,callbackId:t.callbackId,data:r})}),(function(r){a.postMessage({sourceName:e,targetName:i,callback:ac,callbackId:t.callbackId,reason:wrapReason(r)})}))}else t.streamId?this.#P(t):r(t.data)};a.addEventListener("message",this._onComObjOnMessage)}on(e,t){const a=this.actionHandler;if(a[e])throw new Error(`There is already an actionName called "${e}"`);a[e]=t}send(e,t,a){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,data:t},a)}sendWithPromise(e,t,a){const r=this.callbackId++,i=new PromiseCapability;this.callbackCapabilities[r]=i;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,callbackId:r,data:t},a)}catch(e){i.reject(e)}return i.promise}sendWithStream(e,t,a,r){const i=this.streamId++,n=this.sourceName,s=this.targetName,o=this.comObj;return new ReadableStream({start:a=>{const c=new PromiseCapability;this.streamControllers[i]={controller:a,startCall:c,pullCall:null,cancelCall:null,isClosed:!1};o.postMessage({sourceName:n,targetName:s,action:e,streamId:i,data:t,desiredSize:a.desiredSize},r);return c.promise},pull:e=>{const t=new PromiseCapability;this.streamControllers[i].pullCall=t;o.postMessage({sourceName:n,targetName:s,stream:cc,streamId:i,desiredSize:e.desiredSize});return t.promise},cancel:e=>{assert(e instanceof Error,"cancel must have a valid reason");const t=new PromiseCapability;this.streamControllers[i].cancelCall=t;this.streamControllers[i].isClosed=!0;o.postMessage({sourceName:n,targetName:s,stream:rc,streamId:i,reason:wrapReason(e)});return t.promise}},a)}#P(e){const t=e.streamId,a=this.sourceName,r=e.sourceName,i=this.comObj,n=this,s=this.actionHandler[e.action],o={enqueue(e,n=1,s){if(this.isCancelled)return;const o=this.desiredSize;this.desiredSize-=n;if(o>0&&this.desiredSize<=0){this.sinkCapability=new PromiseCapability;this.ready=this.sinkCapability.promise}i.postMessage({sourceName:a,targetName:r,stream:sc,streamId:t,chunk:e},s)},close(){if(!this.isCancelled){this.isCancelled=!0;i.postMessage({sourceName:a,targetName:r,stream:nc,streamId:t});delete n.streamSinks[t]}},error(e){assert(e instanceof Error,"error must have a valid reason");if(!this.isCancelled){this.isCancelled=!0;i.postMessage({sourceName:a,targetName:r,stream:oc,streamId:t,reason:wrapReason(e)})}},sinkCapability:new PromiseCapability,onPull:null,onCancel:null,isCancelled:!1,desiredSize:e.desiredSize,ready:null};o.sinkCapability.resolve();o.ready=o.sinkCapability.promise;this.streamSinks[t]=o;new Promise((function(t){t(s(e.data,o))})).then((function(){i.postMessage({sourceName:a,targetName:r,stream:hc,streamId:t,success:!0})}),(function(e){i.postMessage({sourceName:a,targetName:r,stream:hc,streamId:t,reason:wrapReason(e)})}))}#E(e){const t=e.streamId,a=this.sourceName,r=e.sourceName,i=this.comObj,n=this.streamControllers[t],s=this.streamSinks[t];switch(e.stream){case hc:e.success?n.startCall.resolve():n.startCall.reject(wrapReason(e.reason));break;case lc:e.success?n.pullCall.resolve():n.pullCall.reject(wrapReason(e.reason));break;case cc:if(!s){i.postMessage({sourceName:a,targetName:r,stream:lc,streamId:t,success:!0});break}s.desiredSize<=0&&e.desiredSize>0&&s.sinkCapability.resolve();s.desiredSize=e.desiredSize;new Promise((function(e){e(s.onPull?.())})).then((function(){i.postMessage({sourceName:a,targetName:r,stream:lc,streamId:t,success:!0})}),(function(e){i.postMessage({sourceName:a,targetName:r,stream:lc,streamId:t,reason:wrapReason(e)})}));break;case sc:assert(n,"enqueue should have stream controller");if(n.isClosed)break;n.controller.enqueue(e.chunk);break;case nc:assert(n,"close should have stream controller");if(n.isClosed)break;n.isClosed=!0;n.controller.close();this.#L(n,t);break;case oc:assert(n,"error should have stream controller");n.controller.error(wrapReason(e.reason));this.#L(n,t);break;case ic:e.success?n.cancelCall.resolve():n.cancelCall.reject(wrapReason(e.reason));this.#L(n,t);break;case rc:if(!s)break;new Promise((function(t){t(s.onCancel?.(wrapReason(e.reason)))})).then((function(){i.postMessage({sourceName:a,targetName:r,stream:ic,streamId:t,success:!0})}),(function(e){i.postMessage({sourceName:a,targetName:r,stream:ic,streamId:t,reason:wrapReason(e)})}));s.sinkCapability.reject(wrapReason(e.reason));s.isCancelled=!0;delete this.streamSinks[t];break;default:throw new Error("Unexpected stream case")}}async#L(e,t){await Promise.allSettled([e.startCall?.promise,e.pullCall?.promise,e.cancelCall?.promise]);delete this.streamControllers[t]}destroy(){this.comObj.removeEventListener("message",this._onComObjOnMessage)}}class PDFWorkerStream{constructor(e){this._msgHandler=e;this._contentLength=null;this._fullRequestReader=null;this._rangeRequestReaders=[]}getFullReader(){assert(!this._fullRequestReader,"PDFWorkerStream.getFullReader can only be called once.");this._fullRequestReader=new PDFWorkerStreamReader(this._msgHandler);return this._fullRequestReader}getRangeReader(e,t){const a=new PDFWorkerStreamRangeReader(e,t,this._msgHandler);this._rangeRequestReaders.push(a);return a}cancelAllRequests(e){this._fullRequestReader?.cancel(e);for(const t of this._rangeRequestReaders.slice(0))t.cancel(e)}}class PDFWorkerStreamReader{constructor(e){this._msgHandler=e;this.onProgress=null;this._contentLength=null;this._isRangeSupported=!1;this._isStreamingSupported=!1;const t=this._msgHandler.sendWithStream("GetReader");this._reader=t.getReader();this._headersReady=this._msgHandler.sendWithPromise("ReaderHeadersReady").then((e=>{this._isStreamingSupported=e.isStreamingSupported;this._isRangeSupported=e.isRangeSupported;this._contentLength=e.contentLength}))}get headersReady(){return this._headersReady}get contentLength(){return this._contentLength}get isStreamingSupported(){return this._isStreamingSupported}get isRangeSupported(){return this._isRangeSupported}async read(){const{value:e,done:t}=await this._reader.read();return t?{value:void 0,done:!0}:{value:e.buffer,done:!1}}cancel(e){this._reader.cancel(e)}}class PDFWorkerStreamRangeReader{constructor(e,t,a){this._msgHandler=a;this.onProgress=null;const r=this._msgHandler.sendWithStream("GetRangeReader",{begin:e,end:t});this._reader=r.getReader()}get isStreamingSupported(){return!1}async read(){const{value:e,done:t}=await this._reader.read();return t?{value:void 0,done:!0}:{value:e.buffer,done:!1}}cancel(e){this._reader.cancel(e)}}class WorkerTask{constructor(e){this.name=e;this.terminated=!1;this._capability=new PromiseCapability}get finished(){return this._capability.promise}finish(){this._capability.resolve()}terminate(){this.terminated=!0}ensureNotTerminated(){if(this.terminated)throw new Error("Worker task was terminated")}}class WorkerMessageHandler{static setup(e,t){let a=!1;e.on("test",(function(t){if(!a){a=!0;e.send("test",t instanceof Uint8Array)}}));e.on("configure",(function(e){!function setVerbosityLevel(e){Number.isInteger(e)&&(sa=e)}(e.verbosity)}));e.on("GetDocRequest",(function(e){return WorkerMessageHandler.createDocumentHandler(e,t)}))}static createDocumentHandler(e,t){let a,r=!1,i=null;const n=new Set,s=getVerbosityLevel(),{docId:o,apiVersion:c}=e,l="4.0.379";if(c!==l)throw new Error(`The API version "${c}" does not match the Worker version "${l}".`);const h=[];for(const e in[])h.push(e);if(h.length)throw new Error("The `Array.prototype` contains unexpected enumerable properties: "+h.join(", ")+"; thus breaking e.g. `for...in` iteration of `Array`s.");const u=o+"_worker";let d=new MessageHandler(u,o,t);function ensureNotTerminated(){if(r)throw new Error("Worker was terminated")}function startWorkerTask(e){n.add(e)}function finishWorkerTask(e){e.finish();n.delete(e)}async function loadDocument(e){await a.ensureDoc("checkHeader");await a.ensureDoc("parseStartXRef");await a.ensureDoc("parse",[e]);await a.ensureDoc("checkFirstPage",[e]);await a.ensureDoc("checkLastPage",[e]);const t=await a.ensureDoc("isPureXfa");if(t){const e=new WorkerTask("loadXfaFonts");startWorkerTask(e);await Promise.all([a.loadXfaFonts(d,e).catch((e=>{})).then((()=>finishWorkerTask(e))),a.loadXfaImages()])}const[r,i]=await Promise.all([a.ensureDoc("numPages"),a.ensureDoc("fingerprints")]);return{numPages:r,fingerprints:i,htmlForXfa:t?await a.ensureDoc("htmlForXfa"):null}}function getPdfManager({data:e,password:t,disableAutoFetch:a,rangeChunkSize:r,length:n,docBaseUrl:s,enableXfa:c,evaluatorOptions:l}){const h={source:null,disableAutoFetch:a,docBaseUrl:s,docId:o,enableXfa:c,evaluatorOptions:l,handler:d,length:n,password:t,rangeChunkSize:r},u=new PromiseCapability;let f;if(e){try{h.source=e;f=new LocalPdfManager(h);u.resolve(f)}catch(e){u.reject(e)}return u.promise}let g,p=[];try{g=new PDFWorkerStream(d)}catch(e){u.reject(e);return u.promise}const m=g.getFullReader();m.headersReady.then((function(){if(m.isRangeSupported){h.source=g;h.length=m.contentLength;h.disableAutoFetch||=m.isStreamingSupported;f=new NetworkPdfManager(h);for(const e of p)f.sendProgressiveData(e);p=[];u.resolve(f);i=null}})).catch((function(e){u.reject(e);i=null}));let b=0;new Promise((function(e,t){const readChunk=function({value:e,done:a}){try{ensureNotTerminated();if(a){f||function(){const e=arrayBuffersToBytes(p);n&&e.length!==n&&warn("reported HTTP length is different from actual");try{h.source=e;f=new LocalPdfManager(h);u.resolve(f)}catch(e){u.reject(e)}p=[]}();i=null;return}b+=e.byteLength;m.isStreamingSupported||d.send("DocProgress",{loaded:b,total:Math.max(b,m.contentLength||0)});f?f.sendProgressiveData(e):p.push(e);m.read().then(readChunk,t)}catch(e){t(e)}};m.read().then(readChunk,t)})).catch((function(e){u.reject(e);i=null}));i=function(e){g.cancelAllRequests(e)};return u.promise}d.on("GetPage",(function(e){return a.getPage(e.pageIndex).then((function(e){return Promise.all([a.ensure(e,"rotate"),a.ensure(e,"ref"),a.ensure(e,"userUnit"),a.ensure(e,"view")]).then((function([e,t,a,r]){return{rotate:e,ref:t,userUnit:a,view:r}}))}))}));d.on("GetPageIndex",(function(e){const t=Ref.get(e.num,e.gen);return a.ensureCatalog("getPageIndex",[t])}));d.on("GetDestinations",(function(e){return a.ensureCatalog("destinations")}));d.on("GetDestination",(function(e){return a.ensureCatalog("getDestination",[e.id])}));d.on("GetPageLabels",(function(e){return a.ensureCatalog("pageLabels")}));d.on("GetPageLayout",(function(e){return a.ensureCatalog("pageLayout")}));d.on("GetPageMode",(function(e){return a.ensureCatalog("pageMode")}));d.on("GetViewerPreferences",(function(e){return a.ensureCatalog("viewerPreferences")}));d.on("GetOpenAction",(function(e){return a.ensureCatalog("openAction")}));d.on("GetAttachments",(function(e){return a.ensureCatalog("attachments")}));d.on("GetDocJSActions",(function(e){return a.ensureCatalog("jsActions")}));d.on("GetPageJSActions",(function({pageIndex:e}){return a.getPage(e).then((function(e){return a.ensure(e,"jsActions")}))}));d.on("GetOutline",(function(e){return a.ensureCatalog("documentOutline")}));d.on("GetOptionalContentConfig",(function(e){return a.ensureCatalog("optionalContentConfig")}));d.on("GetPermissions",(function(e){return a.ensureCatalog("permissions")}));d.on("GetMetadata",(function(e){return Promise.all([a.ensureDoc("documentInfo"),a.ensureCatalog("metadata")])}));d.on("GetMarkInfo",(function(e){return a.ensureCatalog("markInfo")}));d.on("GetData",(function(e){return a.requestLoadedStream().then((function(e){return e.bytes}))}));d.on("GetAnnotations",(function({pageIndex:e,intent:t}){return a.getPage(e).then((function(a){const r=new WorkerTask(`GetAnnotations: page ${e}`);startWorkerTask(r);return a.getAnnotationsData(d,r,t).then((e=>{finishWorkerTask(r);return e}),(e=>{finishWorkerTask(r);throw e}))}))}));d.on("GetFieldObjects",(function(e){return a.ensureDoc("fieldObjects")}));d.on("HasJSActions",(function(e){return a.ensureDoc("hasJSActions")}));d.on("GetCalculationOrderIds",(function(e){return a.ensureDoc("calculationOrderIds")}));d.on("SaveDocument",(async function({isPureXfa:e,numPages:t,annotationStorage:r,filename:i}){const n=[a.requestLoadedStream(),a.ensureCatalog("acroForm"),a.ensureCatalog("acroFormRef"),a.ensureDoc("startXRef"),a.ensureDoc("xref"),a.ensureDoc("linearization"),a.ensureCatalog("structTreeRoot")],s=[],o=e?null:getNewAnnotationsMap(r),[c,l,h,u,f,g,p]=await Promise.all(n),m=f.trailer.getRaw("Root")||null;let b;if(o){p?await p.canUpdateStructTree({pdfManager:a,xref:f,newAnnotationsByPage:o})&&(b=p):await StructTreeRoot.canCreateStructureTree({catalogRef:m,pdfManager:a,newAnnotationsByPage:o})&&(b=null);const e=AnnotationFactory.generateImages(r.values(),f,a.evaluatorOptions.isOffscreenCanvasSupported),t=void 0===b?s:[];for(const[r,i]of o)t.push(a.getPage(r).then((t=>{const a=new WorkerTask(`Save (editor): page ${r}`);return t.saveNewAnnotations(d,a,i,e).finally((function(){finishWorkerTask(a)}))})));null===b?s.push(Promise.all(t).then((async e=>{await StructTreeRoot.createStructureTree({newAnnotationsByPage:o,xref:f,catalogRef:m,pdfManager:a,newRefs:e});return e}))):b&&s.push(Promise.all(t).then((async e=>{await b.updateStructureTree({newAnnotationsByPage:o,pdfManager:a,newRefs:e});return e})))}if(e)s.push(a.serializeXfaData(r));else for(let e=0;ee.needAppearances)),S=l instanceof Dict&&l.get("XFA")||null;let C=null,v=!1;if(Array.isArray(S)){for(let e=0,t=S.length;e{"string"==typeof a&&(e[t]=stringToPDFString(a))}));F={rootRef:m,encryptRef:f.trailer.getRaw("Encrypt")||null,newRef:f.getNewTemporaryRef(),infoRef:f.trailer.getRaw("Info")||null,info:e,fileIds:f.trailer.get("ID")||null,startXRef:g?u:f.lastXRefStreamPos??u,filename:i}}return incrementalUpdate({originalData:c.bytes,xrefInfo:F,newRefs:w,xref:f,hasXfa:!!S,xfaDatasetsRef:C,hasXfaDatasetsEntry:v,needAppearances:k,acroFormRef:h,acroForm:l,xfaData:x}).finally((()=>{f.resetNewTemporaryRef()}))}));d.on("GetOperatorList",(function(e,t){const r=e.pageIndex;a.getPage(r).then((function(a){const i=new WorkerTask(`GetOperatorList: page ${r}`);startWorkerTask(i);const n=s>=Se.INFOS?Date.now():0;a.getOperatorList({handler:d,sink:t,task:i,intent:e.intent,cacheKey:e.cacheKey,annotationStorage:e.annotationStorage}).then((function(e){finishWorkerTask(i);n&&info(`page=${r+1} - getOperatorList: time=${Date.now()-n}ms, len=${e.length}`);t.close()}),(function(e){finishWorkerTask(i);i.terminated||t.error(e)}))}))}));d.on("GetTextContent",(function(e,t){const{pageIndex:r,includeMarkedContent:i,disableNormalization:n}=e;a.getPage(r).then((function(e){const a=new WorkerTask("GetTextContent: page "+r);startWorkerTask(a);const o=s>=Se.INFOS?Date.now():0;e.extractTextContent({handler:d,task:a,sink:t,includeMarkedContent:i,disableNormalization:n}).then((function(){finishWorkerTask(a);o&&info(`page=${r+1} - getTextContent: time=`+(Date.now()-o)+"ms");t.close()}),(function(e){finishWorkerTask(a);a.terminated||t.error(e)}))}))}));d.on("GetStructTree",(function(e){return a.getPage(e.pageIndex).then((function(e){return a.ensure(e,"getStructTree")}))}));d.on("FontFallback",(function(e){return a.fontFallback(e.id,d)}));d.on("Cleanup",(function(e){return a.cleanup(!0)}));d.on("Terminate",(function(e){r=!0;const t=[];if(a){a.terminate(new AbortException("Worker was terminated."));const e=a.cleanup();t.push(e);a=null}else clearGlobalCaches();i&&i(new AbortException("Worker was terminated."));for(const e of n){t.push(e.finished);e.terminate()}return Promise.all(t).then((function(){d.destroy();d=null}))}));d.on("Ready",(function(t){!function setupDoc(e){function onSuccess(e){ensureNotTerminated();d.send("GetDoc",{pdfInfo:e})}function onFailure(e){ensureNotTerminated();if(e instanceof PasswordException){const t=new WorkerTask(`PasswordException: response ${e.code}`);startWorkerTask(t);d.sendWithPromise("PasswordRequest",e).then((function({password:e}){finishWorkerTask(t);a.updatePassword(e);pdfManagerReady()})).catch((function(){finishWorkerTask(t);d.send("DocException",e)}))}else e instanceof InvalidPDFException||e instanceof MissingPDFException||e instanceof UnexpectedResponseException||e instanceof UnknownErrorException?d.send("DocException",e):d.send("DocException",new UnknownErrorException(e.message,e.toString()))}function pdfManagerReady(){ensureNotTerminated();loadDocument(!1).then(onSuccess,(function(e){ensureNotTerminated();e instanceof XRefParseException?a.requestLoadedStream().then((function(){ensureNotTerminated();loadDocument(!0).then(onSuccess,onFailure)})):onFailure(e)}))}ensureNotTerminated();getPdfManager(e).then((function(e){if(r){e.terminate(new AbortException("Worker was terminated."));throw new Error("Worker was terminated")}a=e;a.requestLoadedStream(!0).then((e=>{d.send("DataLoaded",{length:e.bytes.byteLength})}))})).then(pdfManagerReady,onFailure)}(e);e=null}));return u}static initializeFromPort(e){const t=new MessageHandler("worker","main",e);WorkerMessageHandler.setup(t,e);t.send("ready",null)}}"undefined"==typeof window&&!a&&"undefined"!=typeof self&&function isMessagePort(e){return"function"==typeof e.postMessage&&"onmessage"in e}(self)&&WorkerMessageHandler.initializeFromPort(self);var uc=t.WorkerMessageHandler;export{uc as WorkerMessageHandler}; \ No newline at end of file diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 000000000..b2d6de306 --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,20 @@ +# Dependencies +/node_modules + +# Production +/build + +# Generated files +.docusaurus +.cache-loader + +# Misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 000000000..55d0c3ef4 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,33 @@ +# Website + +This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator. + +### Installation + +``` +$ yarn +``` + +### Local Development + +``` +$ yarn start +``` + +This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. + +### Build + +``` +$ yarn build +``` + +This command generates static content into the `build` directory and can be served using any static contents hosting service. + +### Deployment + +``` +$ GIT_USER= USE_SSH=true yarn deploy +``` + +If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. diff --git a/docs/babel.config.js b/docs/babel.config.js new file mode 100644 index 000000000..e00595dae --- /dev/null +++ b/docs/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: [require.resolve('@docusaurus/core/lib/babel/preset')], +}; diff --git a/docs/blog/2021-11-23-blazorbootstrap-0.0.1.md b/docs/blog/2021-11-23-blazorbootstrap-0.0.1.md new file mode 100644 index 000000000..ade975aaa --- /dev/null +++ b/docs/blog/2021-11-23-blazorbootstrap-0.0.1.md @@ -0,0 +1,22 @@ +--- +title: BlazorBootstrap v0.0.1 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v0.0.1, blazorbootstrap] +--- + +Welcome to BlazorBoostrap! This is our first release. We have created a few components used most frequently by the developers. + + + +### New Components + +- Alert +- Button +- Icon +- Modals +- Offcanvas +- Tooltip diff --git a/docs/blog/2021-11-27-blazorbootstrap-0.0.2.md b/docs/blog/2021-11-27-blazorbootstrap-0.0.2.md new file mode 100644 index 000000000..570878feb --- /dev/null +++ b/docs/blog/2021-11-27-blazorbootstrap-0.0.2.md @@ -0,0 +1,22 @@ +--- +title: BlazorBootstrap v0.0.2 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v0.0.2, blazorbootstrap] +--- + +In this release, our focus was more on documenting the individual components. + + + +Initial documentation is available for the below components: + +- Alert +- Button +- Icon +- Modal +- Offcanvas +- Tooltip \ No newline at end of file diff --git a/docs/blog/2021-12-08-blazorbootstrap-0.0.3.md b/docs/blog/2021-12-08-blazorbootstrap-0.0.3.md new file mode 100644 index 000000000..3a90e2c7a --- /dev/null +++ b/docs/blog/2021-12-08-blazorbootstrap-0.0.3.md @@ -0,0 +1,17 @@ +--- +title: BlazorBootstrap v0.0.3 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v0.0.3, blazorbootstrap] +--- + +In this release, we added the Toasts component and improved documentation. + + + +### New Component + +- Toasts \ No newline at end of file diff --git a/docs/blog/2021-12-12-blazorbootstrap-0.0.4.md b/docs/blog/2021-12-12-blazorbootstrap-0.0.4.md new file mode 100644 index 000000000..2cfa4586a --- /dev/null +++ b/docs/blog/2021-12-12-blazorbootstrap-0.0.4.md @@ -0,0 +1,55 @@ +--- +title: BlazorBootstrap v0.0.4 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v0.0.4, blazorbootstrap] +--- + +Our focus was on ensuring the component parameter names were consistent and documentation improvements in this release. + + + +### Changelog + +- Code improvements +- Documentation updates + +### Breaking changes + +#### Modal + +- Callback events renamed + - `Showing` -> `OnShowing` + - `Shown` -> `OnShown` + - `Hiding` -> `OnHiding` + - `Hidden` -> `OnHidden` + - `HidePrevented` -> `OnHidePrevented` + +#### Offcanvas + +- Callback events renamed + - `Showing` -> `OnShowing` + - `Shown` -> `OnShown` + - `Hiding` -> `OnHiding` + - `Hidden` -> `OnHidden` + +#### Tooltip + +- Parameters renamed + - `TooltipTitle` -> `Title` + - `TooltipPlacement` -> `Placement` + +### Docs update + +For the below components, documentation is updated. + +- Alerts +- Buttons +- Icons +- Modal +- Offcanvas +- Toasts +- Tooltips \ No newline at end of file diff --git a/docs/blog/2021-12-20-blazorbootstrap-0.1.0.md b/docs/blog/2021-12-20-blazorbootstrap-0.1.0.md new file mode 100644 index 000000000..22070be8c --- /dev/null +++ b/docs/blog/2021-12-20-blazorbootstrap-0.1.0.md @@ -0,0 +1,32 @@ +--- +title: BlazorBootstrap v0.1.0 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v0.1.0, blazorbootstrap] +--- + +We are excited to release `0.1.0` with lots of updates. + + + +### Major changes + +- .NET 6 upgrade +- New components added +- Demo website created + +### Four New Comoponents + +- Preload +- Breadcrumb +- Confirm Dialog +- Callout + +### Demo Website + +We are happy to share the demo website link. + +- https://demos.getblazorbootstrap.com/ \ No newline at end of file diff --git a/docs/blog/2021-12-21-blazorbootstrap-0.1.1.md b/docs/blog/2021-12-21-blazorbootstrap-0.1.1.md new file mode 100644 index 000000000..8a773673f --- /dev/null +++ b/docs/blog/2021-12-21-blazorbootstrap-0.1.1.md @@ -0,0 +1,24 @@ +--- +title: BlazorBootstrap v0.1.1 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v0.1.1, blazorbootstrap, alert] +--- + +In this release, we made minor updates to the Alert component parameter. Also, docs and demos are updated. + + + +### Component changes + +- Alert + - Parameter renamed from Dismisable to Dismissable + - Docs update + - Demos update + +### Demo Website + +- https://demos.getblazorbootstrap.com/ \ No newline at end of file diff --git a/docs/blog/2022-01-15-blazorbootstrap-0.2.0.md b/docs/blog/2022-01-15-blazorbootstrap-0.2.0.md new file mode 100644 index 000000000..e11699192 --- /dev/null +++ b/docs/blog/2022-01-15-blazorbootstrap-0.2.0.md @@ -0,0 +1,32 @@ +--- +title: BlazorBootstrap v0.2.0 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v0.2.0, blazorbootstrap, modal, offcanvas, grid, pagination] +--- + +We are excited to release `0.2.0` with lots of updates. + + + +### Major changes + +- Modal component enhancements +- Offcanvas enhancements +- Demo website updates + +### Two New Comoponents + +- Grid +- Pagination + +### Links + +- [Demo Website](https://demos.getblazorbootstrap.com/) +- [Modals](https://demos.getblazorbootstrap.com/modals) +- [Offcanvas](https://demos.getblazorbootstrap.com/offcanvas) +- [Grid](https://demos.getblazorbootstrap.com/grid) +- [Pagination](https://demos.getblazorbootstrap.com/pagination) \ No newline at end of file diff --git a/docs/blog/2022-02-27-blazorbootstrap-0.2.1.md b/docs/blog/2022-02-27-blazorbootstrap-0.2.1.md new file mode 100644 index 000000000..10ba9a6d3 --- /dev/null +++ b/docs/blog/2022-02-27-blazorbootstrap-0.2.1.md @@ -0,0 +1,30 @@ +--- +title: BlazorBootstrap v0.2.1 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v0.2.1, blazorbootstrap, icons, confirm dialog, toasts] +--- + +We are excited to release `0.2.1` with minor updates. + +## Bootstrap Icons updated to v1.8.0 + +Blazor Bootstrap: Icon Component - Bootstrap Icons + + + +### Minor Updates + +- Toasts component UI alignment fix +- Confirm Dialog component docs update +- Bootstrap Icons updated to `v1.8.0` + +### Links + +- [Demo Website](https://demos.getblazorbootstrap.com/) +- [Confirm Dialog](https://demos.getblazorbootstrap.com/confirm-dialog) +- [Icons](https://demos.getblazorbootstrap.com/icons) +- [Toasts](https://demos.getblazorbootstrap.com/toasts) \ No newline at end of file diff --git a/docs/blog/2022-03-15-blazorbootstrap-0.2.2.md b/docs/blog/2022-03-15-blazorbootstrap-0.2.2.md new file mode 100644 index 000000000..b6e9695f0 --- /dev/null +++ b/docs/blog/2022-03-15-blazorbootstrap-0.2.2.md @@ -0,0 +1,23 @@ +--- +title: BlazorBootstrap v0.2.2 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v0.2.2, blazorbootstrap, placeholders] +--- + +We are excited to release `0.2.2` with a new component and minor updates. + + + +### Updates + +- New `Placeholders` component +- .NET version upgrade from v6.0.1 to v6.0.3 + +### Links + +- [Demo Website](https://demos.getblazorbootstrap.com/) +- [Placeholders Component](https://demos.getblazorbootstrap.com/placeholders) \ No newline at end of file diff --git a/docs/blog/2022-04-30-blazorbootstrap-0.2.3.md b/docs/blog/2022-04-30-blazorbootstrap-0.2.3.md new file mode 100644 index 000000000..83b5a0357 --- /dev/null +++ b/docs/blog/2022-04-30-blazorbootstrap-0.2.3.md @@ -0,0 +1,23 @@ +--- +title: BlazorBootstrap v0.2.3 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v0.2.3, blazorbootstrap, placeholders] +--- + +We are excited to release `0.2.3` with a new component and minor updates. + + + +### Updates + +- New `Tabs` component +- Other improvements + +### Links + +- [Demo Website](https://demos.getblazorbootstrap.com/) +- [Tabs Component](https://demos.getblazorbootstrap.com/tabs) \ No newline at end of file diff --git a/docs/blog/2022-06-19-blazorbootstrap-0.2.4.md b/docs/blog/2022-06-19-blazorbootstrap-0.2.4.md new file mode 100644 index 000000000..d28325139 --- /dev/null +++ b/docs/blog/2022-06-19-blazorbootstrap-0.2.4.md @@ -0,0 +1,23 @@ +--- +title: BlazorBootstrap v0.2.4 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v0.2.4, blazorbootstrap, placeholders] +--- + +We are excited to release `0.2.4` with bug fixes and docs enhancement. + + + +### Updates + +- `Alert` component bug fixes +- Docs enhancement + +### Links + +- [Demo Website](https://demos.getblazorbootstrap.com/) +- [Alert Component](https://getblazorbootstrap.com/docs/components/alerts) \ No newline at end of file diff --git a/docs/blog/2022-07-28-blazorbootstrap-0.2.5.md b/docs/blog/2022-07-28-blazorbootstrap-0.2.5.md new file mode 100644 index 000000000..26c274a1b --- /dev/null +++ b/docs/blog/2022-07-28-blazorbootstrap-0.2.5.md @@ -0,0 +1,25 @@ +--- +title: BlazorBootstrap v0.2.5 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v0.2.5, blazorbootstrap, offcanvas, modal] +--- + +We are excited to release `0.2.5` with bug fixes and docs enhancement. + + + +### Updates + +- `Offcanvas` component bug fix +- `Modal` component bug fix +- Docs enhancement + +### Links + +- [Demo Website](https://demos.getblazorbootstrap.com/) +- [Offcanvas Component](https://getblazorbootstrap.com/docs/components/offcanvas) +- [Modal Component](https://getblazorbootstrap.com/docs/components/modal) \ No newline at end of file diff --git a/docs/blog/2022-08-13-blazorbootstrap-0.2.6.md b/docs/blog/2022-08-13-blazorbootstrap-0.2.6.md new file mode 100644 index 000000000..754178eec --- /dev/null +++ b/docs/blog/2022-08-13-blazorbootstrap-0.2.6.md @@ -0,0 +1,25 @@ +--- +title: BlazorBootstrap v0.2.6 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v0.2.6, blazorbootstrap, button] +--- + +We are excited to release `0.2.6` with enhancements and bug fixes. + + + +### Updates + +- Bootstrap Icons v1.9.1 support +- `Buttons` component enhancements +- Docs enhancement + +### Links + +- [Demo Website](https://demos.getblazorbootstrap.com/) +- [Icons](https://getblazorbootstrap.com/docs/content/icons) +- [Button Component](https://getblazorbootstrap.com/docs/components/buttons) \ No newline at end of file diff --git a/docs/blog/2022-08-31-blazorbootstrap-0.3.0.md b/docs/blog/2022-08-31-blazorbootstrap-0.3.0.md new file mode 100644 index 000000000..b030f8594 --- /dev/null +++ b/docs/blog/2022-08-31-blazorbootstrap-0.3.0.md @@ -0,0 +1,40 @@ +--- +title: BlazorBootstrap v0.3.0 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v0.3.0, blazorbootstrap, grid] +--- + +We are excited to release `0.3.0` with significant enhancements to the grid component. + + + +Blazor Bootstrap: Grid Component + +### Updates + +- `Grid` component enhancements + +### Grid component enhancements +- Multiple columns filtering (client side and server side) +- Set default filtering +- Disable specific column filter +- Increase filter textbox width +- Set default sorting +- Disable specific column sorting +- Header text alignment +- Cell alignment +- Cell formatting +- Cell nowrap +- Pagination alignment +- Empty data +- Responsive grid with horizontal scrolling + +### Links + +- [Demo Website](https://demos.getblazorbootstrap.com/) +- [Grid Demos](https://demos.getblazorbootstrap.com/grid) +- [Grid Component Documentation](https://getblazorbootstrap.com/docs/components/grid) \ No newline at end of file diff --git a/docs/blog/2022-09-04-blazorbootstrap-0.4.0.md b/docs/blog/2022-09-04-blazorbootstrap-0.4.0.md new file mode 100644 index 000000000..a8bdde90f --- /dev/null +++ b/docs/blog/2022-09-04-blazorbootstrap-0.4.0.md @@ -0,0 +1,34 @@ +--- +title: BlazorBootstrap v0.4.0 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v0.4.0, blazorbootstrap, autocomplete, docs] +--- + +We are excited to release `0.4.0` with new blazor autocomplete component. + + + +Blazor Bootstrap AutoComplete Component - Server side data + +### New Components + +- `AutoComplete` component + +### AutoComplete component features +- Client side data filtering +- Server side data filtering +- Validations + +Blazor Bootstrap AutoComplete Component - Validations - Data empty + +Blazor Bootstrap AutoComplete Component - Validations - Item selected + +### Links + +- [Demo Website](https://demos.getblazorbootstrap.com/) +- [Blazor AutoComplete Component Demos](https://demos.getblazorbootstrap.com/autocomplete) +- [Blazor AutoComplete Component Documentation](https://getblazorbootstrap.com/docs/forms/autocomplete) \ No newline at end of file diff --git a/docs/blog/2022-09-12-blazorbootstrap-0.4.1.md b/docs/blog/2022-09-12-blazorbootstrap-0.4.1.md new file mode 100644 index 000000000..2c3c7f606 --- /dev/null +++ b/docs/blog/2022-09-12-blazorbootstrap-0.4.1.md @@ -0,0 +1,43 @@ +--- +title: BlazorBootstrap v0.4.1 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v0.4.1, blazorbootstrap, callout, autocomplete, grid, docs] +--- + +We are excited to release `0.4.1` with enhancements. + + + +Blazor Bootstrap: Callout Component - Examples + +### Enhancements + +- `AutoComplete` component +- `Callout` component +- `Grid` component + +### AutoComplete enhancements +- StringComparison support +- StringFilterOperator support + +### Callout enhancements +- The default heading and default icon are displayed based on the callout type. +- Change the callout header according to your context. + +### Callout breaking changes +- Renamed enum `CalloutColor` to `CalloutType` +- Renamed parameter `Color` to `Type` + +### Grid enhancements +- StringComparison support + +### Links + +- [Demo Website](https://demos.getblazorbootstrap.com/) +- [Blazor AutoComplete Component Documentation](https://getblazorbootstrap.com/docs/components/autocomplete) +- [Blazor Callout Component Documentation](https://getblazorbootstrap.com/docs/components/callout) +- [Blazor Grid Component Documentation](https://getblazorbootstrap.com/docs/components/grid) \ No newline at end of file diff --git a/docs/blog/2022-09-17-blazorbootstrap-0.4.2.md b/docs/blog/2022-09-17-blazorbootstrap-0.4.2.md new file mode 100644 index 000000000..b7e32990e --- /dev/null +++ b/docs/blog/2022-09-17-blazorbootstrap-0.4.2.md @@ -0,0 +1,20 @@ +--- +title: BlazorBootstrap v0.4.2 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v0.4.2, blazorbootstrap, autocomplete] +--- + +We are excited to release `0.4.2` with bug fixes. + +### Bug fixes + +- `AutoComplete` component bug fix + +### Links + +- [Demo Website](https://demos.getblazorbootstrap.com/) +- [Blazor AutoComplete Component Documentation](https://getblazorbootstrap.com/docs/components/autocomplete) \ No newline at end of file diff --git a/docs/blog/2022-10-16-blazorbootstrap-0.5.0.md b/docs/blog/2022-10-16-blazorbootstrap-0.5.0.md new file mode 100644 index 000000000..f5034cadc --- /dev/null +++ b/docs/blog/2022-10-16-blazorbootstrap-0.5.0.md @@ -0,0 +1,44 @@ +--- +title: BlazorBootstrap v0.5.0 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v0.5.0, blazorbootstrap, blazor-charts, blazor-bar-chart, blazor-doughnut-chart, blazor-line-chart, blazor-pie-chart] +--- + +We are excited to release `0.5.0` with new blazor chart components. + +Blazor Chart Component - Blazor Bar Chart Example +
    +Blazor Chart Component - Blazor Line Chart Example +
    + + + +### New blazor chart components + +- Blazor Bar Chart component + + Blazor Chart Component - Blazor Bar Chart + +- Blazor Doughnut Chart component + + Blazor Chart Component - Blazor Doughnut Chart + +- Blazor Line Chart component + + Blazor Chart Component - Blazor Line Chart + +- Blazor Pie Chart component + + Blazor Chart Component - Blazor Pie Chart + +### Links + +- [Demo Website](https://demos.getblazorbootstrap.com/charts) +- [Blazor Bar Chart Component Documentation](https://getblazorbootstrap.com/docs/data-visualization/bar-chart) +- [Blazor Doughnut Chart Component Documentation](https://getblazorbootstrap.com/docs/data-visualization/doughnut-chart) +- [Blazor Line Chart Component Documentation](https://getblazorbootstrap.com/docs/data-visualization/line-chart) +- [Blazor Pie Chart Component Documentation](https://getblazorbootstrap.com/docs/data-visualization/pie-chart) \ No newline at end of file diff --git a/docs/blog/2022-10-22-blazorbootstrap-0.5.1.md b/docs/blog/2022-10-22-blazorbootstrap-0.5.1.md new file mode 100644 index 000000000..a55b8b15c --- /dev/null +++ b/docs/blog/2022-10-22-blazorbootstrap-0.5.1.md @@ -0,0 +1,26 @@ +--- +title: Blazor Bootstrap v0.5.1 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v0.5.1, blazorbootstrap, blazorgrid, blazor-grid, blazor-grid-sorting, blazor-grid-filtering, blazor-grid-paging] +--- + +We are excited to release `0.5.1` with blazor grid enhancements. + +Blazor Grid Component - Sorting, Filtering, and Paging +
    + + + +### Grid Enhancements + +- Support for save/load Grid state. The state includes the **page number**, **page size**, and **filters**. +- Performance improvements by removing unnecessary conversions + +### Links + +- [Demo Website](https://demos.getblazorbootstrap.com/grid) +- [Blazor Grid Component Documentation](https://getblazorbootstrap.com/docs/components/grid) \ No newline at end of file diff --git a/docs/blog/2022-10-30-blazorbootstrap-0.6.0.md b/docs/blog/2022-10-30-blazorbootstrap-0.6.0.md new file mode 100644 index 000000000..1d74989dc --- /dev/null +++ b/docs/blog/2022-10-30-blazorbootstrap-0.6.0.md @@ -0,0 +1,43 @@ +--- +title: Blazor Bootstrap v0.6.0 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v0.6.0, blazorbootstrap, blazor-toasts, blazor-progress, blazor-progress-bar, toasts, progress, progress-bar] +--- + +We are excited to release `0.6.0` with the new blazor progress component and enhancements to the blazor toasts component. + +Blazor Progress component + + + + +### New Components + +- `Progress` component + +### Progress component features +- Labels +- Backgrounds +- Multiple bars +- Striped +- Animated stripes + +Blazor Progress component + +### Toasts component features +- Toasts with/without title +- Auto hide +- Placement +- Stack Length + +Blazor Toasts component + +### Links + +- [Demo Website](https://demos.getblazorbootstrap.com/charts) +- [Blazor Progress Component Documentation](https://getblazorbootstrap.com/docs/components/progress) +- [Blazor Toasts Component Documentation](https://getblazorbootstrap.com/docs/components/toasts) \ No newline at end of file diff --git a/docs/blog/2022-11-18-blazorbootstrap-1.0.0.md b/docs/blog/2022-11-18-blazorbootstrap-1.0.0.md new file mode 100644 index 000000000..71622cfb1 --- /dev/null +++ b/docs/blog/2022-11-18-blazorbootstrap-1.0.0.md @@ -0,0 +1,53 @@ +--- +title: Blazor Bootstrap v1.0.0 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.0.0, blazor, blazorbootstrap, blazor-bootstrap, blazor-tabs, blazor-input, blazor-input-number, blazor-number-input, input, input-number] +--- + +We are excited to release our major version, `1.0.0`, with new components, enhancements to existing ones, and more!!! + +Blazor NumberInput component + +Blazor Tabs component + + + +## New Components + +- `NumberInput` component + +### Blazor NumberInput component features +- Generic type support +- Enable min and max +- Step +- Text alignment +- Allow negative numbers +- Disable +- Validations +- Events: ValueChanged + +Blazor NumberInput component + +## Blazor Tabs component features +- Fade effect +- Title with Icon +- Disable Tab +- Pills +- Activate individual tabs +- Events + +Blazor Tabs component + +## Demos site enhancements +- Brand new landing page +- The demo example and source code are split into two tabs for easy access. + +### Links + +- [Demo Website](https://demos.getblazorbootstrap.com/form/number-input) +- [Blazor NumberInput Component Documentation](https://getblazorbootstrap.com/docs/forms/number-input) +- [Blazor Tabs Component Documentation](https://getblazorbootstrap.com/docs/components/tabs) \ No newline at end of file diff --git a/docs/blog/2022-11-22-blazorbootstrap-1.0.1.md b/docs/blog/2022-11-22-blazorbootstrap-1.0.1.md new file mode 100644 index 000000000..a5cfdea74 --- /dev/null +++ b/docs/blog/2022-11-22-blazorbootstrap-1.0.1.md @@ -0,0 +1,36 @@ +--- +title: Blazor Bootstrap v1.0.1 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.0.1, blazor, blazorbootstrap, blazor-bootstrap, blazor-offcanvas, blazor-sidemodal, blazor-dialog, blazor-confirm-dialog, blazor-preload, blazor-spinner] +--- + +We are excited to release 1.0.1, with enhancements and more examples!!! + +Blazor Preload component + +Blazor Offcanvas component + +Blazor Confirm Dialog component + + + +## What's changed + +- `Confirmation Dialog` component enhancements +- `Offcanvas` component enhancements + +## Demos site examples +- New examples for 'Blazor Confirm Dialog Component' +- New examples for 'Blazor Offcanvas Component' +- New examples for 'Blazor Preload Component' +- SEO Updates + +## Links +- [Demo Website](https://demos.getblazorbootstrap.com/) +- [Blazor Confirm Dialog Component Documentation](https://getblazorbootstrap.com/docs/components/confirmation-dialog) +- [Blazor Offcanvas Component Documentation](https://getblazorbootstrap.com/docs/components/offcanvas) +- [Blazor Preload Component Documentation](https://getblazorbootstrap.com/docs/components/preload) \ No newline at end of file diff --git a/docs/blog/2022-11-28-blazorbootstrap-1.1.0.md b/docs/blog/2022-11-28-blazorbootstrap-1.1.0.md new file mode 100644 index 000000000..86cec82f0 --- /dev/null +++ b/docs/blog/2022-11-28-blazorbootstrap-1.1.0.md @@ -0,0 +1,42 @@ +--- +title: Blazor Bootstrap v1.1.0 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.1.0, blazor, blazorbootstrap, blazor-bootstrap, blazor-dialog, blazor-confirm-dialog, blazor-preload, blazor-spinner, blazor-toast] +--- + +We are excited to release 1.1.0, with new Toast Service, ConfirmDialog, Icons enhancements, and more examples!!! + +Blazor Toasts service +Blazor Bootstrap: Blazor Toasts service + +Blazor ConfirmDialog component +Blazor Bootstrap: Blazor ConfirmDialog component + +Blazor Icon component +Blazor Bootstrap: Blazor Icon component + + + +## What's changed + +- New `ToastService` +- `ConfirmDialog` component enhancements +- `PreloadService` enhancements +- `Icon` component enhancements + +## Demos site examples +- New examples for 'Blazor ToastService' +- New examples for 'Blazor Confirm Dialog Component' +- New examples for 'Blazor Preload Component' +- New examples for 'Blazor Icon Component' + +## Links +- [Demo Website](https://demos.getblazorbootstrap.com/) +- [Blazor Toasts Component Documentation](https://getblazorbootstrap.com/docs/components/toasts) +- [Blazor Confirm Dialog Component Documentation](https://getblazorbootstrap.com/docs/components/confirmation-dialog) +- [Blazor Preload Component Documentation](https://getblazorbootstrap.com/docs/components/preload) +- [Blazor Icon Component Documentation](https://getblazorbootstrap.com/docs/content/icons) \ No newline at end of file diff --git a/docs/blog/2022-12-12-blazorbootstrap-1.2.0.md b/docs/blog/2022-12-12-blazorbootstrap-1.2.0.md new file mode 100644 index 000000000..cc6a3d50c --- /dev/null +++ b/docs/blog/2022-12-12-blazorbootstrap-1.2.0.md @@ -0,0 +1,29 @@ +--- +title: Blazor Bootstrap v1.2.0 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.2.0, blazor, blazorbootstrap, blazor-bootstrap, blazornumber, blazor-number, blazorcurrencyinput, blazor-currency-input] +--- + +We are excited to release 1.2.0, with new CurrencyInput component, and more examples!!! + +Blazor CurrencyInput component +Blazor Bootstrap: Blazor CurrencyInput component + + + +## What's changed + +- New `CurrencyInput` component + +## Demos site updates +- New examples for 'Blazor CurrencyInput Component' +- New examples for 'Blazor Confirm Dialog Component' + +## Links +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Blazor CurrencyInput Documentation](https://getblazorbootstrap.com/docs/forms/currency-input) \ No newline at end of file diff --git a/docs/blog/2022-12-15-blazorbootstrap-1.3.0.md b/docs/blog/2022-12-15-blazorbootstrap-1.3.0.md new file mode 100644 index 000000000..61d3ad227 --- /dev/null +++ b/docs/blog/2022-12-15-blazorbootstrap-1.3.0.md @@ -0,0 +1,29 @@ +--- +title: Blazor Bootstrap v1.3.0 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.3.0, blazor, blazorbootstrap, blazor-bootstrap, blazorswitch] +--- + +We are excited to release 1.3.0, with new Switch component, and more examples!!! + +Blazor Switch component +Blazor Bootstrap: Blazor Switch component + + + +## What's changed + +- New `Switch` component + +## Demos site updates +- New examples for 'Blazor Switch Component' +- Updates to 'Blazor Auto Complete Component' examples + +## Links +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Blazor Switch Documentation](https://getblazorbootstrap.com/docs/forms/switch) \ No newline at end of file diff --git a/docs/blog/2022-12-18-blazorbootstrap-1.3.1.md b/docs/blog/2022-12-18-blazorbootstrap-1.3.1.md new file mode 100644 index 000000000..c397b65e4 --- /dev/null +++ b/docs/blog/2022-12-18-blazorbootstrap-1.3.1.md @@ -0,0 +1,29 @@ +--- +title: Blazor Bootstrap v1.3.1 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.3.1, blazor, blazorbootstrap, autocomplete, blazorautocomplete] +--- + +We are excited to release 1.3.1, with AutoComplete - keyboard navigation support, and more examples!!! + +Blazor AutoComplete component +Blazor Bootstrap: Blazor AutoComplete component + + + +## What's changed + +- `AutoComplete` component - keyboard navigation support +- `AutoComplete` component - CancellationToken support + +## Demos site updates +- New examples for 'Blazor AutoComplete Component' + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Blazor AutoComplete Documentation](https://getblazorbootstrap.com/docs/forms/autocomplete) \ No newline at end of file diff --git a/docs/blog/2023-01-15-blazorbootstrap-1.4.0.md b/docs/blog/2023-01-15-blazorbootstrap-1.4.0.md new file mode 100644 index 000000000..84cd95e52 --- /dev/null +++ b/docs/blog/2023-01-15-blazorbootstrap-1.4.0.md @@ -0,0 +1,28 @@ +--- +title: Blazor Bootstrap v1.4.0 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.4.0, blazor, blazorbootstrap, sidebar, blazorsidebar, leftmenu, navigation, layout] +--- + +We are excited to release 1.4.0, with new sidebar and more examples!!! + +Blazor Sidebar component +Blazor Bootstrap: Blazor Sidebar component + + + +## What's changed + +- `Sidebar` component + +## Demos site updates +- New examples for 'Blazor Sidebar Component' + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Blazor Sidebar Documentation](https://getblazorbootstrap.com/docs/components/sidebar) \ No newline at end of file diff --git a/docs/blog/2023-01-23-blazorbootstrap-1.4.1.md b/docs/blog/2023-01-23-blazorbootstrap-1.4.1.md new file mode 100644 index 000000000..3fb02114d --- /dev/null +++ b/docs/blog/2023-01-23-blazorbootstrap-1.4.1.md @@ -0,0 +1,33 @@ +--- +title: Blazor Bootstrap v1.4.1 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.4.1, blazor, bootstrap, bootstrap5, blazorbootstrap, modal, blazormodal, confirmmodal, blazorconfirmmodal, dialog, blazordialog] +--- + +We are excited to release 1.4.1, with modal updates and more examples!!! + +Blazor modal component +Blazor Bootstrap: Blazor modal component + + + +## What's changed + +- `Modal` component + - Render different components dynamically within the modal without iterating through possible types or using conditional logic. + - If dynamically-rendered components have component parameters, pass them as an `IDictionary`. + - Pass event callbacks to a dynamic component. + +## Demos site updates +- New examples for `Blazor Modal Component` +- New examples for `Blazor Confirm Dialog Component` + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Blazor Modal Documentation](https://getblazorbootstrap.com/docs/components/modal) +- [Blazor Confirm Dialog Documentation](https://getblazorbootstrap.com/docs/components/confirm-dialog) \ No newline at end of file diff --git a/docs/blog/2023-01-30-blazorbootstrap-1.4.2.md b/docs/blog/2023-01-30-blazorbootstrap-1.4.2.md new file mode 100644 index 000000000..4397e5ca2 --- /dev/null +++ b/docs/blog/2023-01-30-blazorbootstrap-1.4.2.md @@ -0,0 +1,33 @@ +--- +title: Blazor Bootstrap v1.4.2 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.4.2, blazor, bootstrap, bootstrap5, bootstrap-5, blazorbootstrap, autocomplete, blazor-autocomplete, blazor-templates, blazor-starter-templates, blazorbootstrap-starter-templates] +--- + +We are excited to release 1.4.2, with Auto Complete updates and new starter templates for blazor webassembly and blazor server!!! + +**Blazor Bootstrap: Blazor WebAssembly and Server starter templates** + +Blazor Bootstrap: Blazor WebAssembly and Server starter templates + + + +## What's changed + +1. `Auto Complete` component + - Bug fix + +## Starter Templates +1. Blazor Bootstrap: Blazor WebAssembly Template +1. Blazor Bootstrap: Blazor WebAssembly Empty Template +1. Blazor Bootstrap: Blazor Server Template +1. Blazor Bootstrap: Blazor Server Empty Template + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Blazor Auto Complete Documentation](https://getblazorbootstrap.com/docs/forms/autocomplete) \ No newline at end of file diff --git a/docs/blog/2023-02-07-blazorbootstrap-1.4.3.md b/docs/blog/2023-02-07-blazorbootstrap-1.4.3.md new file mode 100644 index 000000000..08e0316fa --- /dev/null +++ b/docs/blog/2023-02-07-blazorbootstrap-1.4.3.md @@ -0,0 +1,26 @@ +--- +title: Blazor Bootstrap v1.4.3 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.4.3, blazor, bootstrap, bootstrap5, bootstrap-5, blazorbootstrap, grid, blazor-grid, blazorgrid] +--- + +We are excited to release 1.4.3, with Grid enhancements and more examples!!! + +Blazor Bootstrap: Grid Component + + + +## What's changed + +- `Grid` component + - New `Data` parameter + - New `ResetPageNumber()` method + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Blazor Grid Documentation](https://getblazorbootstrap.com/docs/components/grid) \ No newline at end of file diff --git a/docs/blog/2023-02-10-blazorbootstrap-1.4.4.md b/docs/blog/2023-02-10-blazorbootstrap-1.4.4.md new file mode 100644 index 000000000..ad8a6fa09 --- /dev/null +++ b/docs/blog/2023-02-10-blazorbootstrap-1.4.4.md @@ -0,0 +1,26 @@ +--- +title: Blazor Bootstrap v1.4.4 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.4.4, blazor, bootstrap, bootstrap5, bootstrap-5, blazorbootstrap, grid, blazor-grid, blazorgrid] +--- + +We are excited to release 1.4.4, with Grid enhancements and more examples!!! + +Blazor Bootstrap: Grid Component + + + +## What's changed + +- `Grid` component + - Filters have 300ms timeout for the debouncing + - `CancellationToken` support for the `RefreshDataAsync()` method + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Blazor Grid Documentation](https://getblazorbootstrap.com/docs/components/grid) \ No newline at end of file diff --git a/docs/blog/2023-02-23-blazorbootstrap-1.4.5.md b/docs/blog/2023-02-23-blazorbootstrap-1.4.5.md new file mode 100644 index 000000000..8344a9fdd --- /dev/null +++ b/docs/blog/2023-02-23-blazorbootstrap-1.4.5.md @@ -0,0 +1,25 @@ +--- +title: Blazor Bootstrap v1.4.5 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.4.5, blazor, bootstrap, bootstrap5, bootstrap-5, blazorbootstrap, toasts, blazor-toasts, blazortoasts] +--- + +We are excited to release 1.4.5 with the Toasts component bug fix!!! + +Blazor Bootstrap: Toasts Component + + + +## What's changed + +- `Toasts` component bug fixed + - Toast progress bar not working when the browser language is french + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Blazor Toasts Documentation](https://getblazorbootstrap.com/docs/components/toasts) \ No newline at end of file diff --git a/docs/blog/2023-03-05-blazorbootstrap-1.5.0.md b/docs/blog/2023-03-05-blazorbootstrap-1.5.0.md new file mode 100644 index 000000000..b32bc5a15 --- /dev/null +++ b/docs/blog/2023-03-05-blazorbootstrap-1.5.0.md @@ -0,0 +1,45 @@ +--- +title: Blazor Bootstrap v1.5.0 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.5.0, blazor, bootstrap, bootstrap5, bootstrap-5, blazorbootstrap, buttons, blazorbuttons, dateinput, datepicker, blazordateinput, blazordatepicker, offcanvas, blazoroffcanvas, modal, blazormodal] +--- + +We are excited to release 1.5.0 with new DateInput component and other updates!!! + +Blazor Bootstrap: DateInput Component + + + +## What's new + +- `DateInput` component + - Generic type: DateOnly, DateOnly?, DateTime, and DateTime? data types supported + - Max and Min range + - Disable + - Validations + - ValueChanged event + +## What's changed + +- `Offcanvas` component + - Render different components dynamically within the modal without iterating through possible types or using conditional logic. + - If dynamically-rendered components have component parameters, pass them as an `IDictionary`. + - Pass event callbacks to a dynamic component. + +- `Button` component + - Dynamic tooltip support added + +- `Tooltip` component + - Dynamic tooltip support added + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Blazor DateInput Documentation](https://getblazorbootstrap.com/docs/forms/date-input) +- [Blazor Offcanvas Documentation](https://getblazorbootstrap.com/docs/components/offcanvas) +- [Blazor Button Documentation](https://getblazorbootstrap.com/docs/components/buttons) +- [Blazor Tooltip Documentation](https://getblazorbootstrap.com/docs/components/tooltips) \ No newline at end of file diff --git a/docs/blog/2023-03-12-blazorbootstrap-1.6.0.md b/docs/blog/2023-03-12-blazorbootstrap-1.6.0.md new file mode 100644 index 000000000..72a6d2cad --- /dev/null +++ b/docs/blog/2023-03-12-blazorbootstrap-1.6.0.md @@ -0,0 +1,51 @@ +--- +title: Blazor Bootstrap v1.6.0 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.6.0, blazor, bootstrap, bootstrap5, bootstrap-5, blazorbootstrap, timeinput, timepicker, blazortimeinput, blazortimepicker, blazortime, dateinput, datepicker, blazordateinput, blazordatepicker, blazordate, grid, blazorgrid, modal, blazormodal, offcanvas, blazoroffcanvas] +--- + +We are excited to release 1.6.0 with new TimeInput component and other updates!!! + +Blazor Bootstrap: TimeInput Component + + + +## What's new + +- `TimeInput` component + - Generic type: TimeOnly and TimeOnly? supported + - Max and Min range + - Disable + - Validations + - ValueChanged event + - Restrict the time field based on the entry in another field + +## What's changed + +- `Grid` component + - Conditional css class for grid row + - Conditional css class for grid column + +- `DateInput` component + - Restrict the date field based on the entry in another field + +- `Modal` component + - Modal CloseOnEscape not working - Fixed + +- `Offcanvas` component + - Offcanvas CloseOnEscape not working #160 - Fixed + +- Upgrade Bootstrap version from v5.1.3 to v5.2.3 + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Blazor TimeInput Documentation](https://getblazorbootstrap.com/docs/forms/time-input) +- [Blazor Grid Documentation](https://getblazorbootstrap.com/docs/components/grid) +- [Blazor DateInput Documentation](https://getblazorbootstrap.com/docs/forms/date-input) +- [Blazor Modal Documentation](https://getblazorbootstrap.com/docs/components/modal) +- [Blazor Offcanvas Documentation](https://getblazorbootstrap.com/docs/components/offcanvas) \ No newline at end of file diff --git a/docs/blog/2023-04-10-blazorbootstrap-1.7.0.md b/docs/blog/2023-04-10-blazorbootstrap-1.7.0.md new file mode 100644 index 000000000..4de118e0e --- /dev/null +++ b/docs/blog/2023-04-10-blazorbootstrap-1.7.0.md @@ -0,0 +1,57 @@ +--- +title: Blazor Bootstrap v1.7.0 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.7.0, blazor, bootstrap, bootstrap5, blazorbootstrap, badge, blazorbadge, collapse, blazorcollapse, accordion, blazoraccordion, button, blazorbutton] +--- + +We are excited to release 1.7.0 with new Badge, Collapse, and Accordion components and other updates!!! + +Blazor Bootstrap: Accordion Component + + + +## What's new + +- `Badge` component + - Background colors + - Pill badges + - Buttons + - Positioned + - Generic indicator + +- `Collapse` component + - Horizontal collapse + - **Call back events:** OnShowing, OnShown, OnHiding, and OnHidden + +- `Accordion` component + - Title with Icon + - Flush + - Set default active accordion item + - Always open + - Activate individual accordion items + - **Call back events:** OnShowing, OnShown, OnHiding, and OnHidden + +## What's changed + +- `Buttons` component + - Disable and enable state dynamically [#172](https://github.com/vikramlearning/blazorbootstrap/issues/172) + +## Documentation + +- Layout setup docs + - Layout Setup - Blazor WebAssembly + - Layout Setup - Blazor Server + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Blazor Badge Documentation](https://getblazorbootstrap.com/docs/components/badge) +- [Blazor Collapse Documentation](https://getblazorbootstrap.com/docs/components/collapse) +- [Blazor Accordion Documentation](https://getblazorbootstrap.com/docs/components/accordion) +- [Blazor Buttons Documentation](https://getblazorbootstrap.com/docs/components/buttons) +- [Layout Setup - Blazor WebAssembly Documentation](https://getblazorbootstrap.com/docs/layout/blazor-webassembly) +- [Layout Setup - Blazor Server Documentation](https://getblazorbootstrap.com/docs/layout/blazor-server) diff --git a/docs/blog/2023-04-19-blazorbootstrap-1.7.1.md b/docs/blog/2023-04-19-blazorbootstrap-1.7.1.md new file mode 100644 index 000000000..3cfe16dac --- /dev/null +++ b/docs/blog/2023-04-19-blazorbootstrap-1.7.1.md @@ -0,0 +1,32 @@ +--- +title: Blazor Bootstrap v1.7.1 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.7.1, blazor, bootstrap, bootstrap5, blazorbootstrap, autocomplete, blazorautocomplete, buttons, blazorbuttons] +--- + +We are excited to release 1.7.1 with Auto complete and Buttons updates!!! + +Blazor Bootstrap: Accordion Component + + + +## What's changed + +- `Auto Complete` component + - Show Autocomplete reset button when default value set [#183](https://github.com/vikramlearning/blazorbootstrap/issues/183) + +- `Buttons` component + - Button Disabled parameter doesn't work properly on first render in Tabs / Modal [#182](https://github.com/vikramlearning/blazorbootstrap/issues/182) + + `CSS` + - A CSS rule could be more targeted to not interfere with others [#184](https://github.com/vikramlearning/blazorbootstrap/issues/184) + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Blazor Auto Complete Documentation](https://getblazorbootstrap.com/docs/forms/autocomplete) +- [Blazor Buttons Documentation](https://getblazorbootstrap.com/docs/components/buttons) \ No newline at end of file diff --git a/docs/blog/2023-04-24-blazorbootstrap-1.7.2.md b/docs/blog/2023-04-24-blazorbootstrap-1.7.2.md new file mode 100644 index 000000000..44ea94bba --- /dev/null +++ b/docs/blog/2023-04-24-blazorbootstrap-1.7.2.md @@ -0,0 +1,25 @@ +--- +title: Blazor Bootstrap v1.7.2 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.7.2, blazor, bootstrap, bootstrap5, blazorbootstrap, currency, currencyinput, blazorcurrencyinput] +--- + +We are excited to release 1.7.2 with Currency Input updates!!! + +Blazor Bootstrap: Currency Input Component + + + +## What's changed + +- `Currency Input` component + - CurrencyInput InvalidOperationException [#192](https://github.com/vikramlearning/blazorbootstrap/issues/192) + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Blazor Currency Input Documentation](https://getblazorbootstrap.com/docs/forms/currency-input) diff --git a/docs/blog/2023-04-29-blazorbootstrap-1.7.3.md b/docs/blog/2023-04-29-blazorbootstrap-1.7.3.md new file mode 100644 index 000000000..464943c2a --- /dev/null +++ b/docs/blog/2023-04-29-blazorbootstrap-1.7.3.md @@ -0,0 +1,29 @@ +--- +title: Blazor Bootstrap v1.7.3 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.7.3, blazor, bootstrap, bootstrap5, blazorbootstrap, buttons, blazorbuttons, grid, blazorgrid] +--- + +We are excited to release 1.7.3 with Buttons and Grid updates!!! + +Blazor Bootstrap: Grid Component + + + +## What's changed + +- `Button` component + - Button - id on Button is causing Unhandled error [#194](https://github.com/vikramlearning/blazorbootstrap/issues/194) + +- `Grid` component + - Grid calls DataProvider method after input's onchange event [#195](https://github.com/vikramlearning/blazorbootstrap/issues/195) + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Blazor Buttons Documentation](https://getblazorbootstrap.com/docs/components/buttons) +- [Blazor Grid Documentation](https://getblazorbootstrap.com/docs/components/grid) diff --git a/docs/blog/2023-05-28-blazorbootstrap-1.8.0.md b/docs/blog/2023-05-28-blazorbootstrap-1.8.0.md new file mode 100644 index 000000000..e270e5e9e --- /dev/null +++ b/docs/blog/2023-05-28-blazorbootstrap-1.8.0.md @@ -0,0 +1,71 @@ +--- +title: Blazor Bootstrap v1.8.0 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.8.0, blazor, bootstrap, bootstrap5, blazorbootstrap, grid, blazorgrid, offcanvas, blazoroffcanvas, autocomplete, blazorautocomplete, currencyinput, blazorcurrencyinput, dateinput, blazordateinput, numberinput, blazornumberinput, switch, blazorswitch, timeinput, blazortimeinput] +--- + +We are excited to release 1.8.0 with Grid, Offcanvas and Form components updates!!! + +Blazor Bootstrap: Grid Component + + + +## What's changed + +- `Grid` component + - Grid Selection [#179](https://github.com/vikramlearning/blazorbootstrap/issues/179) + - Single selection + - Multiple selection + - Disable selection + - Disable all rows selection + - Grid Paging [#196](https://github.com/vikramlearning/blazorbootstrap/issues/196) + - Dynamic Page Size + - Page Size Selection + +- `Offcanvas` component + - Static backdrop [#210](https://github.com/vikramlearning/blazorbootstrap/pull/210) + +- `Auto Complete` component + - Disable parameter + - Use either the `Disable` parameter or use `Disable()` and `Enable()` methods to disable/enable the component. + +- `Currency Input` component + - Disable parameter + - Use either the `Disable` parameter or use `Disable()` and `Enable()` methods to disable/enable the component. + +- `Date Input` component + - Disable parameter + - Use either the `Disable` parameter or use `Disable()` and `Enable()` methods to disable/enable the component. + +- `Number Input` component + - Disable parameter + - Use either the `Disable` parameter or use `Disable()` and `Enable()` methods to disable/enable the component. + +- `Switch` component + - Disable parameter + - Use either the `Disable` parameter or use `Disable()` and `Enable()` methods to disable/enable the component. + +- `Time Input` component + - Disable parameter + - Use either the `Disable` parameter or use `Disable()` and `Enable()` methods to disable/enable the component. + +- `Blazor Bootstrap Templates` + - Install with .NET CLI: `dotnet new install Blazor.Bootstrap.Templates::1.8.0` + + Blazor Bootstrap Templates + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Blazor Grid Documentation](https://getblazorbootstrap.com/docs/components/grid) +- [Blazor Offcanvas Documentation](https://getblazorbootstrap.com/docs/components/offcanvas) +- [Blazor Auto Complete Documentation](https://getblazorbootstrap.com/docs/forms/autocomplete) +- [Blazor Currency Input Documentation](https://getblazorbootstrap.com/docs/forms/currency-input) +- [Blazor Date Input Documentation](https://getblazorbootstrap.com/docs/forms/date-input) +- [Blazor Number Input Documentation](https://getblazorbootstrap.com/docs/forms/number-input) +- [Blazor Switch Documentation](https://getblazorbootstrap.com/docs/forms/switch) +- [Blazor Time Input Documentation](https://getblazorbootstrap.com/docs/forms/time-input) diff --git a/docs/blog/2023-05-31-blazorbootstrap-1.8.1.md b/docs/blog/2023-05-31-blazorbootstrap-1.8.1.md new file mode 100644 index 000000000..2208b86af --- /dev/null +++ b/docs/blog/2023-05-31-blazorbootstrap-1.8.1.md @@ -0,0 +1,35 @@ +--- +title: Blazor Bootstrap v1.8.1 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.8.1, blazor, bootstrap, bootstrap5, blazorbootstrap, grid, blazorgrid, tooltip, blazortooltip] +--- + +We are excited to release 1.8.1 with Grid and Tooltip components updates!!! + +![image](https://github.com/vikramlearning/blazorbootstrap/assets/2337067/027363dc-d293-4b12-8155-e0380e8dfc6f "Blazor Bootstrap: Grid Component") + + + +## What's changed + +- `Grid` component + - Selection and filters both active bug [#214](https://github.com/vikramlearning/blazorbootstrap/issues/214) + +- `Tooltip` component + - Tooltip does not disappear [#213](https://github.com/vikramlearning/blazorbootstrap/issues/213) + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Blazor Grid Documentation](https://getblazorbootstrap.com/docs/components/grid) +- [Blazor Offcanvas Documentation](https://getblazorbootstrap.com/docs/components/offcanvas) +- [Blazor Auto Complete Documentation](https://getblazorbootstrap.com/docs/forms/autocomplete) +- [Blazor Currency Input Documentation](https://getblazorbootstrap.com/docs/forms/currency-input) +- [Blazor Date Input Documentation](https://getblazorbootstrap.com/docs/forms/date-input) +- [Blazor Number Input Documentation](https://getblazorbootstrap.com/docs/forms/number-input) +- [Blazor Switch Documentation](https://getblazorbootstrap.com/docs/forms/switch) +- [Blazor Time Input Documentation](https://getblazorbootstrap.com/docs/forms/time-input) diff --git a/docs/blog/2023-06-11-blazorbootstrap-1.8.2.md b/docs/blog/2023-06-11-blazorbootstrap-1.8.2.md new file mode 100644 index 000000000..eec40bc13 --- /dev/null +++ b/docs/blog/2023-06-11-blazorbootstrap-1.8.2.md @@ -0,0 +1,34 @@ +--- +title: Blazor Bootstrap v1.8.2 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.8.2, blazor, bootstrap, bootstrap5, blazorbootstrap, grid, blazorgrid, button, blazorbutton, date, dateinput, input, blazordateinput] +--- + +We are excited to release 1.8.2 with Grid, Button and DateInput components updates!!! + +![image](https://github.com/vikramlearning/blazorbootstrap/assets/2337067/027363dc-d293-4b12-8155-e0380e8dfc6f "Blazor Bootstrap: Grid Component") + + + +## What's changed + +- `Grid` component + - Grid local filter with null strings [#227](https://github.com/vikramlearning/blazorbootstrap/issues/227) + - Grid Single Select [#230](https://github.com/vikramlearning/blazorbootstrap/issues/230) + +- `Button` component + - Button TooltipTitle does not disappear when clicked [#222](https://github.com/vikramlearning/blazorbootstrap/issues/222) + +- `DateInput` component + - DateInput no reaction to null [#221](https://github.com/vikramlearning/blazorbootstrap/issues/221) + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Blazor Grid Documentation](https://getblazorbootstrap.com/docs/components/grid) +- [Blazor Buttons Documentation](https://demos.blazorbootstrap.com/buttons) +- [Blazor Date Input Documentation](https://getblazorbootstrap.com/docs/forms/date-input) diff --git a/docs/blog/2023-06-16-blazorbootstrap-1.8.3.md b/docs/blog/2023-06-16-blazorbootstrap-1.8.3.md new file mode 100644 index 000000000..7e3c402da --- /dev/null +++ b/docs/blog/2023-06-16-blazorbootstrap-1.8.3.md @@ -0,0 +1,29 @@ +--- +title: Blazor Bootstrap v1.8.3 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.8.3, blazor, bootstrap, bootstrap5, blazorbootstrap, grid, blazorgrid, progress, blazorprogress] +--- + +We are excited to release 1.8.3 with Grid and Progress components updates!!! + +![image](https://github.com/vikramlearning/blazorbootstrap/assets/2337067/027363dc-d293-4b12-8155-e0380e8dfc6f "Blazor Bootstrap: Grid Component") + + + +## What's changed + +- `Grid` component + - Select all/none refresh problem [#217](https://github.com/vikramlearning/blazorbootstrap/issues/217) + +- `Progress` component + - Progress bar grid bind problem [#229](https://github.com/vikramlearning/blazorbootstrap/issues/229) + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Blazor Grid Documentation](https://getblazorbootstrap.com/docs/components/grid) +- [Blazor Progress Documentation](https://demos.blazorbootstrap.com/progress) diff --git a/docs/blog/2023-06-30-blazorbootstrap-1.9.0.md b/docs/blog/2023-06-30-blazorbootstrap-1.9.0.md new file mode 100644 index 000000000..e7f0723dc --- /dev/null +++ b/docs/blog/2023-06-30-blazorbootstrap-1.9.0.md @@ -0,0 +1,43 @@ +--- +title: Blazor Bootstrap v1.9.0 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.9.0, blazor, bootstrap, bootstrap5, blazorbootstrap, modal, blazormodal, icon, blazoricon, modalservice, blazormodalservice, icon, blazoricon, toasts, blazortoasts, tabs, blazortabs] +--- + +We are excited to release 1.9.0 with Modal Service, Modals, Icons, Toasts, and Tabs updates!!! + +![image](https://i.imgur.com/vIELA4s.png "Blazor Bootstrap: Modal Component") + + + +## What's new + +- `Modal` service + - Global service for the application + +## What's changed + +- `Modal` component + - Dynamic modal title does not work when using static content [#242](https://github.com/vikramlearning/blazorbootstrap/issues/242) + +- `Icon` component + - New `Color` parameter added + +- `Toasts` component + - ToastService.Notify method does not have AutoHide [#238](https://github.com/vikramlearning/blazorbootstrap/issues/238) + +- `Tabs` component + - ShowTabByIndexAsync not working after OnAfterRenderAsync [#243](https://github.com/vikramlearning/blazorbootstrap/issues/243) + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Blazor Modal Documentation](https://getblazorbootstrap.com/docs/components/modal) +- [Blazor Modal Service Documentation](https://getblazorbootstrap.com/docs/services/modal) +- [Blazor Icon Documentation](https://getblazorbootstrap.com/docs/content/icons) +- [Blazor Toasts Documentation](https://getblazorbootstrap.com/docs/components/toasts) +- [Blazor Tabs Documentation](https://getblazorbootstrap.com/docs/components/tabs) diff --git a/docs/blog/2023-06-31-blazorbootstrap-1.9.1.md b/docs/blog/2023-06-31-blazorbootstrap-1.9.1.md new file mode 100644 index 000000000..4f064fb85 --- /dev/null +++ b/docs/blog/2023-06-31-blazorbootstrap-1.9.1.md @@ -0,0 +1,25 @@ +--- +title: Blazor Bootstrap v1.9.1 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.9.1, blazor, bootstrap, bootstrap5, blazorbootstrap, modal, blazormodal] +--- + +We are excited to release 1.9.1 with Modal Service updates!!! + +![image](https://i.imgur.com/Tze7msN.png "Blazor Bootstrap: Modal Component") + + + +## What's changed + +- `Modal` service + - Issue with new ModalService [#258](https://github.com/vikramlearning/blazorbootstrap/issues/258) + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Blazor Modal Service Documentation](https://getblazorbootstrap.com/docs/services/modal) diff --git a/docs/blog/2023-07-01-blazorbootstrap-1.9.2.md b/docs/blog/2023-07-01-blazorbootstrap-1.9.2.md new file mode 100644 index 000000000..6c353af5e --- /dev/null +++ b/docs/blog/2023-07-01-blazorbootstrap-1.9.2.md @@ -0,0 +1,29 @@ +--- +title: Blazor Bootstrap v1.9.2 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.9.2, blazor, bootstrap, bootstrap5, blazorbootstrap, breadcrumbservice, breadcrumb, blazorbreadcrumb, toast, blazortoast, toastservice] +--- + +We are excited to release 1.9.2 with New Breadcrumb service and Toast Service updates!!! + +![image](https://i.imgur.com/W1YkmJH.png "Blazor Bootstrap: Toast Component") + + + +## What's new + +- `Breadcrumb` service + - Global service for the application + +## What's changed + +- `Toast` service + - ToastService not working anymore in version 1.9.1 [#261](https://github.com/vikramlearning/blazorbootstrap/issues/261) + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) diff --git a/docs/blog/2023-07-04-blazorbootstrap-1.9.3.md b/docs/blog/2023-07-04-blazorbootstrap-1.9.3.md new file mode 100644 index 000000000..cceac4e28 --- /dev/null +++ b/docs/blog/2023-07-04-blazorbootstrap-1.9.3.md @@ -0,0 +1,27 @@ +--- +title: Blazor Bootstrap v1.9.3 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.9.3, blazor, bootstrap, bootstrap5, blazorbootstrap, grid, blazorgrid] +--- + +We are excited to release 1.9.3 with Grid component updates!!! + +![image](https://i.imgur.com/11SK9v4.png "Blazor Bootstrap: Grid Component") + + + +## What's changed + +- `Grid` component + - New `HeaderRowCssClass` parameter + - New `FiltersRowCssClass` parameter + - Default sorting icon to indicate the column is sortable + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Blazor Grid Documentation](https://getblazorbootstrap.com/docs/components/grid) diff --git a/docs/blog/2023-07-05-blazorbootstrap-1.9.4.md b/docs/blog/2023-07-05-blazorbootstrap-1.9.4.md new file mode 100644 index 000000000..104e13343 --- /dev/null +++ b/docs/blog/2023-07-05-blazorbootstrap-1.9.4.md @@ -0,0 +1,25 @@ +--- +title: Blazor Bootstrap v1.9.4 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.9.4, blazor, bootstrap, bootstrap5, blazorbootstrap, modal, modalservice, blazormodal, blazormodalservice] +--- + +We are excited to release 1.9.4 with Modal service updates!!! + +![image](https://i.imgur.com/vIELA4s.png "Blazor Bootstrap: Modal Service") + + + +## What's changed + +- `Modal` service + - Blazor Modal Service problem [#265](https://github.com/vikramlearning/blazorbootstrap/issues/265) + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Blazor Modal Service Documentation](https://getblazorbootstrap.com/docs/services/modal) diff --git a/docs/blog/2023-07-16-blazorbootstrap-1.9.5.md b/docs/blog/2023-07-16-blazorbootstrap-1.9.5.md new file mode 100644 index 000000000..7d2221312 --- /dev/null +++ b/docs/blog/2023-07-16-blazorbootstrap-1.9.5.md @@ -0,0 +1,48 @@ +--- +title: Blazor Bootstrap v1.9.5 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.9.5, blazor, bootstrap, bootstrap5, blazorbootstrap, grid, blazorgrid, timeinput, blazortimeinput, modal, blazormodal] +--- + +We are excited to release 1.9.5 with Grid, TimeInput, and Modal component updates!!! + +![image](https://i.imgur.com/qH7G1ZT.png "Blazor Bootstrap: Grid Component") + + + +## What's changed + +- `Grid` component + - New **OnRowClick** event + - New **OnRowDoubleClick** event + - Grid Component: Row Click Event [#264](https://github.com/vikramlearning/blazorbootstrap/issues/264) + - Grid Component - Translatable page size selector [#287](https://github.com/vikramlearning/blazorbootstrap/pull/287) + +- `TimeInput` component + - TimeInput: Changing value does not work [#271](https://github.com/vikramlearning/blazorbootstrap/issues/271) + +- `Switch` component + - Switch class not applied to label [#235](https://github.com/vikramlearning/blazorbootstrap/issues/235) + +- `Modal` component + - Cannot change modal type on static modals [#278](https://github.com/vikramlearning/blazorbootstrap/issues/278) + +- `Line Chart` component + - Multiple of the same chart causing js exception [#283](https://github.com/vikramlearning/blazorbootstrap/issues/283) + +- `Sidebar` component + - SidebarItem without childs, CustomIconName not passed to Icon [#286](https://github.com/vikramlearning/blazorbootstrap/issues/286) + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Blazor Grid Component Documentation](https://getblazorbootstrap.com/docs/components/grid) +- [Blazor TimeInput Component Documentation](https://getblazorbootstrap.com/docs/forms/time-input) +- [Blazor Switch Component Documentation](https://getblazorbootstrap.com/docs/forms/switch) +- [Blazor Modal Component Documentation](https://getblazorbootstrap.com/docs/components/modal) +- [Blazor Line Chart Component Documentation](https://getblazorbootstrap.com/docs/components/charts) +- [Blazor Sidebar Component Documentation](https://getblazorbootstrap.com/docs/components/sidebar) diff --git a/docs/blog/2023-08-13-blazorbootstrap-1.10.0.md b/docs/blog/2023-08-13-blazorbootstrap-1.10.0.md new file mode 100644 index 000000000..a14939d8e --- /dev/null +++ b/docs/blog/2023-08-13-blazorbootstrap-1.10.0.md @@ -0,0 +1,77 @@ +--- +title: Blazor Bootstrap v1.10.0 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.10.0, blazor, bootstrap, bootstrap5, blazorbootstrap, grid, blazorgrid] +--- + +We are excited to release 1.10.0 with new Card and Dropdown component. Charts, Grid, Button, Tooltip, and Switch component updates!!! + +![image](https://i.imgur.com/qH7G1ZT.png "Blazor Bootstrap: Grid Component") + + + +## What's New + +- `Dropdown` Component + - Single button + - Multiple colors + - Split button + - Sizing + - Directions (Dropup, Dropup centered, Dropend, and Dropstart) + - Active + - Disabled + - Menu content (Header, Dividers, Text, and Forms) + - Auto close behavior + +- `Card` Component + - Content types (Body, Titles, text, and links) + - Images + - List groups + - Header and footer + - Sizing + - Text alignment + - Background and color + - Card groups + - Card groups with footer + +## What's changed + +- `Bar Chart` component + - New AddDataSetAsync and AddAsync methods + +- `Doughnut Chart` component + - New AddDataSetAsync and AddAsync methods + +- `Line Chart` component + - New AddDataSetAsync and AddAsync methods + +- `Pie Chart` component + - New AddDataSetAsync and AddAsync methods + +- `Grid` component + - Grid: Filters translation support [#292](https://github.com/vikramlearning/blazorbootstrap/issues/292) + +- `Button` component + - Tooltip color support added + +- `Tooltip` component + - Tooltip color support added + - Tooltip on button problem [#296](https://github.com/vikramlearning/blazorbootstrap/issues/296) + +- `Switch` component + - Switch is invoking EditContext OnFieldChanged even the change was not from UI [#297](https://github.com/vikramlearning/blazorbootstrap/issues/297) + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Blazor Card Component Documentation](https://getblazorbootstrap.com/docs/components/card) +- [Blazor Dropdown Component Documentation](https://getblazorbootstrap.com/docs/components/dropdown) +- [Blazor Chart Components Documentation](https://getblazorbootstrap.com/docs/components/charts) +- [Blazor Grid Component Documentation](https://getblazorbootstrap.com/docs/components/grid) +- [Blazor Button Component Documentation](https://getblazorbootstrap.com/docs/forms/buttons) +- [Blazor Tooltip Component Documentation](https://getblazorbootstrap.com/docs/forms/tooltips) +- [Blazor Switch Component Documentation](https://getblazorbootstrap.com/docs/forms/switch) diff --git a/docs/blog/2023-08-29-blazorbootstrap-1.10.1.md b/docs/blog/2023-08-29-blazorbootstrap-1.10.1.md new file mode 100644 index 000000000..16048606b --- /dev/null +++ b/docs/blog/2023-08-29-blazorbootstrap-1.10.1.md @@ -0,0 +1,36 @@ +--- +title: Blazor Bootstrap v1.10.1 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.10.1, blazor, bootstrap, bootstrap5, blazorbootstrap, grid, blazorgrid] +--- + +We are excited to release 1.10.1 with base component improvements and chart updates!!! + +![image](https://i.imgur.com/jMIvDFZ.png "Blazor Bootstrap: BarChart Component") + + + +## What's changed + +- We have made improvements to the base components + +- `Bar Chart` component + - UpdateAsync method + +- `Doughnut Chart` component + - UpdateAsync method + +- `Line Chart` component + - UpdateAsync method + +- `Pie Chart` component + - UpdateAsync method + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Blazor Chart Components Documentation](https://getblazorbootstrap.com/docs/components/charts) diff --git a/docs/blog/2023-09-15-blazorbootstrap-1.10.2.md b/docs/blog/2023-09-15-blazorbootstrap-1.10.2.md new file mode 100644 index 000000000..9aa8fb6cf --- /dev/null +++ b/docs/blog/2023-09-15-blazorbootstrap-1.10.2.md @@ -0,0 +1,42 @@ +--- +title: Blazor Bootstrap v1.10.2 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.10.2, blazor, bootstrap, bootstrap5, blazorbootstrap, autocomplete, blazorautocomplete, confirmdialog, blazorconfirmdialog, modal, blazormodal, modalservice, tooltip, blazortooltip, sidebar, blazorsidebar, chart, blazorchart, docs] +--- + +We are excited to release 1.10.2 with enhancements to autocomplete, charts, confirmation dialog, sidebar, and others!!! + +![image](https://i.imgur.com/xEPhAsW.png "Blazor Bootstrap: Doughnut Chart Component") + + + +## What's changed + +- `AutoComplete` component + - Autocomplete shows "No Records Found" Before Search is finished [#352](https://github.com/vikramlearning/blazorbootstrap/issues/352) + +- `Confirm Dialog` component + - Confirm Dialog - No fade animation [#334](https://github.com/vikramlearning/blazorbootstrap/issues/334) + +- `Modal Service` + - Callback support has been added + +- `Tooltip` component + - Dispose issue fixed [#327](https://github.com/vikramlearning/blazorbootstrap/issues/327) + +- `Sidebar` component + - Sidebar should close automatically on mobile [#274](https://github.com/vikramlearning/blazorbootstrap/issues/274) + +- We have made improvements to all the charts to support data labels [#317](https://github.com/vikramlearning/blazorbootstrap/issues/317) + - `Bar Chart`, `Doughnut Chart`, `Line Chart`, and `Pie Chart` + +- MAUI Blazor App - Getting started docs added + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Blazor Chart Components Documentation](https://getblazorbootstrap.com/docs/components/charts) diff --git a/docs/blog/2023-10-15-blazorbootstrap-1.10.3.md b/docs/blog/2023-10-15-blazorbootstrap-1.10.3.md new file mode 100644 index 000000000..f9a521030 --- /dev/null +++ b/docs/blog/2023-10-15-blazorbootstrap-1.10.3.md @@ -0,0 +1,36 @@ +--- +title: Blazor Bootstrap v1.10.3 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.10.3, blazor, bootstrap, bootstrap5, blazorbootstrap, dropdown, blazordropdown, icon, blazoricon, docs] +--- + +We are excited to release 1.10.3 with enhancements to grid, dropdown, icons, and others!!! + +![image](https://i.imgur.com/QRgyrZK.png "Blazor Bootstrap: Gird Component - Fixed header") + + + +## What's changed + +- `Grid` component + - Grid: Fixed Header Support [#53](https://github.com/vikramlearning/blazorbootstrap/issues/53) + +- `Dropdown` component + - Add feature to disable Dropdown [#373](https://github.com/vikramlearning/blazorbootstrap/issues/373) + +- `Icon` component + - Sizing for icons in buttons is strange [#346](https://github.com/vikramlearning/blazorbootstrap/issues/346) + +- `Sidebar` component + - Sidebar: Add option to space items [#276](https://github.com/vikramlearning/blazorbootstrap/issues/276) + +- Docs updates + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Documentation](https://docs.blazorbootstrap.com/) diff --git a/docs/blog/2023-11-18-blazorbootstrap-1.10.4.md b/docs/blog/2023-11-18-blazorbootstrap-1.10.4.md new file mode 100644 index 000000000..333abf39d --- /dev/null +++ b/docs/blog/2023-11-18-blazorbootstrap-1.10.4.md @@ -0,0 +1,39 @@ +--- +title: Blazor Bootstrap v1.10.4 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.10.4, blazor, bootstrap, bootstrap5, blazorbootstrap, grid, preload, switch, charts, modal, docs] +--- + +We are excited to release 1.10.4 with enhancements to grid, preload, modal, and switch!!! + +![image](https://i.imgur.com/GzXuQep.png "Blazor Bootstrap: Gird Component - Freeze columns with fixed header and filters") + + + +## What's changed + +- `Grid` component + - Grid: Freeze Columns Support [#246](https://github.com/vikramlearning/blazorbootstrap/issues/246) + +- `Preload` component + - Preload: Add text to preload component [#414](https://github.com/vikramlearning/blazorbootstrap/issues/414) + +- `Switch` component + - Switch: Double click on switch selects the label [#401](https://github.com/vikramlearning/blazorbootstrap/issues/401) + +- `Charts` component + - Chart size updates [#384](https://github.com/vikramlearning/blazorbootstrap/pull/384) + +- `Modal` component + - Pressing Esc still closes the modal even with UseStaticBackdrop="true" [#416](https://github.com/vikramlearning/blazorbootstrap/issues/416) + +- Docs updates + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Documentation](https://docs.blazorbootstrap.com/) diff --git a/docs/blog/2024-01-01-blazorbootstrap-1.10.5.md b/docs/blog/2024-01-01-blazorbootstrap-1.10.5.md new file mode 100644 index 000000000..881835bb2 --- /dev/null +++ b/docs/blog/2024-01-01-blazorbootstrap-1.10.5.md @@ -0,0 +1,45 @@ +--- +title: Blazor Bootstrap v1.10.5 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.10.5, blazor, bootstrap, bootstrap5, blazorbootstrap, accordion, charts, grid, modal, toast, docs] +--- + +We are excited to release 1.10.5 with enhancements to accordion, grid, modal, toast, and charts!!! + +![image](https://i.imgur.com/GzXuQep.png "Blazor Bootstrap: Gird Component - Freeze columns with fixed header and filters") + + + +## What's changed + +- `Accordion` component + - Accordion: Add hide methods to Accordion [#473](https://github.com/vikramlearning/blazorbootstrap/pull/473) + - Accordion: Add Accordion show/hide all methods [476](https://github.com/vikramlearning/blazorbootstrap/pull/476) + +- `Chart` component + - Charts: How to change legend position in chat [#484](https://github.com/vikramlearning/blazorbootstrap/pull/484) + +- `Grid` component + - Grid: Docs update [#478](https://github.com/vikramlearning/blazorbootstrap/pull/478) + - Grid: PageSizeSelector dropdown is default to smallest value [#482](https://github.com/vikramlearning/blazorbootstrap/pull/482) + - Grid: Auto hide paginations on few elements [#483](https://github.com/vikramlearning/blazorbootstrap/pull/483) + +- `Modal` component + - Modal: Throws Error on Navigating Away in .NET 8 [#468](https://github.com/vikramlearning/blazorbootstrap/pull/468) + +- `Toast` component + - Toast: Dispose issue [#488](https://github.com/vikramlearning/blazorbootstrap/pull/488) + +- Docs updates + - Docs: Fixed typo [#438](https://github.com/vikramlearning/blazorbootstrap/pull/438) + - Docs: Getting Started Docs - .NET 8 - Web Assembly & Web App - Server - Global [#458](https://github.com/vikramlearning/blazorbootstrap/pull/458) + - Docs: Getting Started Docs update [#462](https://github.com/vikramlearning/blazorbootstrap/pull/462) + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Documentation](https://docs.blazorbootstrap.com/) diff --git a/docs/blog/2024-02-04-blazorbootstrap-1.11.0.md b/docs/blog/2024-02-04-blazorbootstrap-1.11.0.md new file mode 100644 index 000000000..a37c2e6eb --- /dev/null +++ b/docs/blog/2024-02-04-blazorbootstrap-1.11.0.md @@ -0,0 +1,58 @@ +--- +title: Blazor Bootstrap v1.11.0 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.11.0, blazor, bootstrap, bootstrap5, blazorbootstrap, autocomplete, badge, grid, pdfviewer, rangeinput, scriptloader, tabs, docs] +--- + +We are excited to release version 1.11.0, featuring new PDF Viewer, Range Input, and Script Loader components, along with updates to Auto Complete, Badge, Grid, and Tabs. + +![image](https://i.imgur.com/7Vz9Efi.png "Blazor Bootstrap: PDF Viewer Component") + + + +## What's New + +- `PDF Viewer` component + - Allows users to view PDF files directly in the browser, eliminating the need for third-party browser tools or extensions. + - Supports two callback events: OnDocumentLoaded and OnPageChanged +- `Range Input` component + - Disabled + - Min and Max + - Step + - Tick marks +- `Script Loader` component + - Allows users to load JS sctipt files dynamically on the fly. + +## What's changed + +- `Auto Complete` component + - AutoComplete dispose issue [#527](https://github.com/vikramlearning/blazorbootstrap/pull/527) + +- `Badge` component + - Badge: Demos update [#497](https://github.com/vikramlearning/blazorbootstrap/pull/497) + +- `Grid` component + - GGrid: Filters - Support string NotEqual [#486](https://github.com/vikramlearning/blazorbootstrap/issues/486) + +- `Tabs` component + - Dynamic Tabs [#538](https://github.com/vikramlearning/blazorbootstrap/pull/538) + - Vertical Tabs [#533](https://github.com/vikramlearning/blazorbootstrap/pull/533) + - Vertical Pills Tabs[#533](https://github.com/vikramlearning/blazorbootstrap/pull/533) + - Vertical Underline Tabs[#533](https://github.com/vikramlearning/blazorbootstrap/pull/533) + - Underline Tabs[#533](https://github.com/vikramlearning/blazorbootstrap/pull/533) + - Tab: OnClick call back event [#543](https://github.com/vikramlearning/blazorbootstrap/pull/543) + +- Other updates + - Upgrade bootstrap version to 5.3.2 [#498](https://github.com/vikramlearning/blazorbootstrap/pull/498) + - Fix build warnings [#534](https://github.com/vikramlearning/blazorbootstrap/pull/534) + - Nuget update [#520](https://github.com/vikramlearning/blazorbootstrap/pull/520) + - Update docs to Bootstrap Icons 1.11.3 [#541](https://github.com/vikramlearning/blazorbootstrap/pull/541) + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Documentation](https://docs.blazorbootstrap.com/) diff --git a/docs/blog/2024-02-04-blazorbootstrap-1.11.1.md b/docs/blog/2024-02-04-blazorbootstrap-1.11.1.md new file mode 100644 index 000000000..a19e6e029 --- /dev/null +++ b/docs/blog/2024-02-04-blazorbootstrap-1.11.1.md @@ -0,0 +1,27 @@ +--- +title: Blazor Bootstrap v1.11.1 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v1.11.1, blazor, bootstrap, bootstrap5, blazorbootstrap, pdfviewer] +--- + +We are excited to release 1.11.1 with PDF Viewer updates!!! + +![image](https://i.imgur.com/7Vz9Efi.png "Blazor Bootstrap: PDF Viewer Component") + + + +## What's changed + +- We have made improvements to the base components + +- `PDF Viewer` component + - PDF Viewer JS call issue fixed. [#547](https://github.com/vikramlearning/blazorbootstrap/pull/547) + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Blazor Chart Components Documentation](https://getblazorbootstrap.com/docs/components/charts) diff --git a/docs/blog/2024-02-25-blazorbootstrap-2.0.0.md b/docs/blog/2024-02-25-blazorbootstrap-2.0.0.md new file mode 100644 index 000000000..90ca44571 --- /dev/null +++ b/docs/blog/2024-02-25-blazorbootstrap-2.0.0.md @@ -0,0 +1,34 @@ +--- +title: Blazor Bootstrap v2.0.0 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v2.0.0, blazor, bootstrap, bootstrap5, blazorbootstrap, button, callout, clipboard, spinner] +--- + +We are excited to release 2.0.0 with Core updates, Spinner Component, and other improvements!!! + +![image](https://i.imgur.com/bJwpAFS.png "Blazor Bootstrap: Spinner Component") + + + +## What's New + +- `Spinner` component + +## What's changed + +- We have made improvements to the base components + +- `Button` component + +- `Callout` component + +- Documentation: clipboard support added + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) +- [Blazor Chart Components Documentation](https://getblazorbootstrap.com/docs/components/charts) diff --git a/docs/blog/2024-02-25-upgrade-to-v2.0.0.md b/docs/blog/2024-02-25-upgrade-to-v2.0.0.md new file mode 100644 index 000000000..d624872a4 --- /dev/null +++ b/docs/blog/2024-02-25-upgrade-to-v2.0.0.md @@ -0,0 +1,28 @@ +--- +title: Upgrade to v2.x.x +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +--- + +### Recommendation + +We strongly recommend all `BlazorBootstrap` users migrate to version **2.x.x**. + +If you are using version `1.x.x` for non-commercial purposes, you may continue using them, but upgrading to version `2.x.x` is strongly recommended. + +If you are using version `1.x.x` for commercial purposes, you are no longer permitted to do so due to code usage concerns regarding Blazorise's ClassBuilder and StyleBuilder classes. + +### Background of ClassBuilder & StyleBuilder References + +In March 2021, we created a component library proof-of-concept (POC) using `ClassBuilder` and `StyleBuilder` from Blazorise. At that time, Blazorise was under the MIT license. We inadvertently neglected to re-verify the Blazorise project's license later. + +On February 12th, 2024, Blazorise contacted us regarding a potential licensing concern with both `ClassBuilder` and `StyleBuilder` classes. We respect Blazorise's dedication to open-source software and responsible licensing. + +We have now removed all references to ClassBuilder and StyleBuilder from our codebase. + +:::danger IMPORTANT +If you wish to continue using version `1.x.x` for commercial purposes, please reach out to the Blazorise team for licensing. +::: diff --git a/docs/blog/2024-03-17-blazorbootstrap-2.1.0.md b/docs/blog/2024-03-17-blazorbootstrap-2.1.0.md new file mode 100644 index 000000000..aa51de77f --- /dev/null +++ b/docs/blog/2024-03-17-blazorbootstrap-2.1.0.md @@ -0,0 +1,43 @@ +--- +title: Blazor Bootstrap v2.1.0 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v2.1.0, blazor, bootstrap, bootstrap5, blazorbootstrap, barchart, callout, currencyinput, grid, numberinput, pdfviewer, rangeinput, sidebar2, tooltip] +--- + +We are excited to release 2.1.0 with New Sidebar2 Component and Other Improvements!!! + +![image](https://i.imgur.com/vs8kl7G.png "Blazor Bootstrap: Sidebar2 Component") + + + +## What's New + +- `Sidebar2` component + +## What's changed + +- `BarChart` component + +- `Callout` component + +- `CurrencyInput` component + +- `Grid` component + +- `NumberInput` component + +- `PdfViewer` component + +- `RangeInput` component + +- `Tooltip` component + +- Documentation & Demos + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) diff --git a/docs/blog/2024-04-14-blazorbootstrap-2.2.0.md b/docs/blog/2024-04-14-blazorbootstrap-2.2.0.md new file mode 100644 index 000000000..f22200bc7 --- /dev/null +++ b/docs/blog/2024-04-14-blazorbootstrap-2.2.0.md @@ -0,0 +1,37 @@ +--- +title: Blazor Bootstrap v2.2.0 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v2.2.0, blazor, bootstrap, bootstrap5, blazorbootstrap, confirmdialog, pdfviewer, Ribbon, sortablelist, tabs] +--- + +We are excited to release 2.2.0 with New Ribbon and SortableList Component, and Other Improvements!!! + +![image](https://i.imgur.com/LpZVLbF.png "Blazor Bootstrap: Ribbon Component") + + + +## What's New + +- `Ribbon` component + +- `SortableList` component + +## What's changed + +- `ConfirmDialog` component + +- `Grid` component + +- `PdfViewer` component + +- `Tabs` component + +- Documentation & Demos + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) diff --git a/docs/blog/2024-04-21-blazorbootstrap-2.2.1.md b/docs/blog/2024-04-21-blazorbootstrap-2.2.1.md new file mode 100644 index 000000000..bd750e014 --- /dev/null +++ b/docs/blog/2024-04-21-blazorbootstrap-2.2.1.md @@ -0,0 +1,27 @@ +--- +title: Blazor Bootstrap v2.2.1 +authors: + name: Vikram Reddy + title: Creator + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 +tags: [v2.2.1, blazor, bootstrap, blazorbootstrap, confirmdialog, grid] +--- + +We are excited to release version 2.2.1, which includes a Confirm Dialog, Grid updates, and demo projects upgraded to .NET 8!!! + +![image](https://i.imgur.com/XG4Wv17.png "Blazor Bootstrap: Grid Component - Column class") + + + +## What's changed + +- `ConfirmDialog` component + +- `Grid` component + +- Demos - Upgraded to .NET 8 + +## Links +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) diff --git a/docs/blog/authors.yml b/docs/blog/authors.yml new file mode 100644 index 000000000..9699a7f5b --- /dev/null +++ b/docs/blog/authors.yml @@ -0,0 +1,11 @@ +Vikram: + name: Vikram Reddy Gaddam + title: Creator of BlazorBootstrap + url: https://github.com/gvreddy04 + image_url: https://avatars.githubusercontent.com/u/2337067 + +Vijay: + name: Vijay Reddy Gaddam + title: BlazorBootstrap Maintainer + url: https://github.com/gvreddy579 + diff --git a/docs/carbon-ad.mdx b/docs/carbon-ad.mdx new file mode 100644 index 000000000..f8bfa16b9 --- /dev/null +++ b/docs/carbon-ad.mdx @@ -0,0 +1,3 @@ +import CarbonAd from '/src/js/carbon-ad.js' + + diff --git a/docs/docs/01-getting-started/01-a-getting-started-webassembly-NET-8.mdx b/docs/docs/01-getting-started/01-a-getting-started-webassembly-NET-8.mdx new file mode 100644 index 000000000..ff1d5b197 --- /dev/null +++ b/docs/docs/01-getting-started/01-a-getting-started-webassembly-NET-8.mdx @@ -0,0 +1,217 @@ +--- +id: blazor-webassembly-net-8 +sidebar_label: Blazor WebAssembly (.NET 8) +sidebar_position: 1 +title: Blazor WebAssembly (.NET 8) +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Getting started - Blazor WebAssembly (.NET 8) + +Get started with the Enterprise-class Blazor Bootstrap Component library built on the Blazor and Bootstrap CSS framework. + + + +## Install Nuget Package + +Looking to quickly add **Blazor Bootstrap** to your project? Use NuGet package manager. + +```shell +Install-Package Blazor.Bootstrap -Version 2.2.1 +``` + +## Add CSS references + +After the `` tag in the **head** section of the **wwwroot/index.html** file, add the following references: + +```html showLineNumbers + + + +``` + +## Add script references + +Insert the following references into the **body** section of the **wwwroot/index.html** file, immediately after the **_framework/blazor.webassembly.js** reference: + +``` js showLineNumbers + + + + + + + + +``` + +:::tip +The **chart.js** reference is optional. Include it only when the **Chart** components are used in the application. +::: + +## Register services + +Add Blazor Bootstrap service in the **Program.cs** + +```cs showLineNumbers +builder.Services.AddBlazorBootstrap(); +``` + +Register tag helpers in **_Imports.razor** + +```razor showLineNumbers +@using BlazorBootstrap; +``` + +## Remove default references +The default Blazor template includes demonstration code and Bootstrap. To remove these components, follow these steps: + +1. Delete the **bootstrap** folder from the **wwwroot** directory: + + - Delete the **wwwroot/css/bootstrap** folder. + +1. Remove the following line from **wwwroot/index.html** file: + + ``` html showLineNumbers + + ``` + +## Starter template + +[GitHub Repo: Blazor Bootstrap - Blazor WebAssembly Standalone App (.NET 8)](https://github.com/vikramlearning/blazorbootstrap-starter-templates/tree/master/src/BlazorBootstrap.Templates.Starter/NET8.BlazorWebAssemblyStandaloneApp) + +Blazor Bootstrap - Blazor WebAssembly Standalone App + +## Sample Code + +### index.html + +```html {9-11,32-37} showLineNumbers + + + + + + + NET8.BlazorWebAssemblyStandaloneApp + + + + + + + + + + +
    + + + + +
    +
    + +
    + An unhandled error has occurred. + Reload + 🗙 +
    + + + + + + + + + + + + +``` + +### Program.cs + +```cs {11} showLineNumbers +using Microsoft.AspNetCore.Components.Web; +using Microsoft.AspNetCore.Components.WebAssembly.Hosting; +using NET8.BlazorWebAssemblyStandaloneApp; + +var builder = WebAssemblyHostBuilder.CreateDefault(args); +builder.RootComponents.Add("#app"); +builder.RootComponents.Add("head::after"); + +builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); + +builder.Services.AddBlazorBootstrap(); + +await builder.Build().RunAsync(); +``` + +### _Imports.razor + +```razor {11} showLineNumbers +@using System.Net.Http +@using System.Net.Http.Json +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.AspNetCore.Components.WebAssembly.Http +@using Microsoft.JSInterop +@using NET8.BlazorWebAssemblyStandaloneApp +@using NET8.BlazorWebAssemblyStandaloneApp.Layout +@using BlazorBootstrap; +``` + +### MainLayout.razor + +```razor {} showLineNumbers +@inherits LayoutComponentBase + +
    + + + +
    +
    + About +
    + +
    +
    @Body
    +
    +
    + +
    + +@code { + Sidebar sidebar; + IEnumerable navItems; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/", IconName = IconName.HouseDoorFill, Text = "Home", Match=NavLinkMatch.All}, + new NavItem { Id = "2", Href = "/counter", IconName = IconName.PlusSquareFill, Text = "Counter"}, + new NavItem { Id = "3", Href = "/weather", IconName = IconName.Table, Text = "Fetch Data"}, + }; + + return navItems; + } +} +``` diff --git a/docs/docs/01-getting-started/01-b-getting-started-webapp-server-global-NET-8.mdx b/docs/docs/01-getting-started/01-b-getting-started-webapp-server-global-NET-8.mdx new file mode 100644 index 000000000..ce14c3541 --- /dev/null +++ b/docs/docs/01-getting-started/01-b-getting-started-webapp-server-global-NET-8.mdx @@ -0,0 +1,229 @@ +--- +id: blazor-webapp-server-global-net-8 +sidebar_label: Blazor WebApp Server (.NET 8) +sidebar_position: 2 +title: Blazor WebApp Server (.NET 8) +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Getting started - Blazor WebApp (.NET 8) - Interactive render mode Server - Global location + +Get started with the Enterprise-class Blazor Bootstrap Component library built on the Blazor and Bootstrap CSS framework. + + + +## Install Nuget Package + +Looking to quickly add **Blazor Bootstrap** to your project? Use NuGet package manager. + +```shell +Install-Package Blazor.Bootstrap -Version 2.2.1 +``` + +## Add CSS references + +After the `` tag in the **head** section of the **Components/App.razor**. + +```html showLineNumbers + + + +``` + +## Add script references + +Insert the following references into the **body** section of the **Components/App.razor** file, immediately after the **_framework/blazor.web.js** reference: + +``` js showLineNumbers + + + + + + + + +``` + +:::tip +**chart.js** reference is optional. Add when the **Chart** components are used in the application. +::: + +## Register services + +Add Blazor Bootstrap service in the **Program.cs** + +```cs +builder.Services.AddBlazorBootstrap(); +``` + +Register tag helpers in **Components/_Imports.razor** + +```razor +@using BlazorBootstrap; +``` + +## Remove default references + +The default Blazor template includes demonstration code and Bootstrap. To remove these components, follow these steps: + +1. Delete the **bootstrap** folder from the **wwwroot** directory: + + - Delete the **wwwroot/css/bootstrap** folder. + +1. Remove the following line from **Components/App.razor** file: + + ``` html showLineNumbers + + ``` + +## Starter template + +[GitHub Repo: Blazor Bootstrap - Blazor Web App - Interactive Render Mode Server - Global (.NET 8)](https://github.com/vikramlearning/blazorbootstrap-starter-templates/tree/master/src/BlazorBootstrap.Templates.Starter/NET8.BlazorWebAppRenderModeServerGlobal) + +Blazor Bootstrap - Blazor Web App - Interactive Render Mode Server - Global + +## Sample Code + +### App.razor + +```html {8-10,14,18,20-25} showLineNumbers + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +### Program.cs + +```cs {5} showLineNumbers +using NET8.BlazorWebAppRenderModeServer.Components; + +var builder = WebApplication.CreateBuilder(args); + +builder.Services.AddBlazorBootstrap(); + +// Add services to the container. +builder.Services.AddRazorComponents() + .AddInteractiveServerComponents(); + +var app = builder.Build(); + +// Configure the HTTP request pipeline. +if (!app.Environment.IsDevelopment()) +{ + app.UseExceptionHandler("/Error", createScopeForErrors: true); + // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. + app.UseHsts(); +} + +app.UseHttpsRedirection(); + +app.UseStaticFiles(); +app.UseAntiforgery(); + +app.MapRazorComponents() + .AddInteractiveServerRenderMode(); + +app.Run(); +``` + +### _Imports.razor + +```razor {11} showLineNumbers +@using System.Net.Http +@using System.Net.Http.Json +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using static Microsoft.AspNetCore.Components.Web.RenderMode +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.JSInterop +@using NET8.BlazorWebAppRenderModeServer +@using NET8.BlazorWebAppRenderModeServer.Components +@using BlazorBootstrap; +``` + +### MainLayout.razor + +```razor {} showLineNumbers +@inherits LayoutComponentBase + +
    + + + +
    +
    + About +
    + +
    +
    @Body
    +
    +
    + +
    + +@code { + Sidebar sidebar; + IEnumerable navItems; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/", IconName = IconName.HouseDoorFill, Text = "Home", Match=NavLinkMatch.All}, + new NavItem { Id = "2", Href = "/counter", IconName = IconName.PlusSquareFill, Text = "Counter"}, + new NavItem { Id = "3", Href = "/weather", IconName = IconName.Table, Text = "Fetch Data"}, + }; + + return navItems; + } +} + + +
    + An unhandled error has occurred. + Reload + 🗙 +
    +``` diff --git a/docs/docs/01-getting-started/01-c-getting-started-webapp-auto-global-NET-8.mdx b/docs/docs/01-getting-started/01-c-getting-started-webapp-auto-global-NET-8.mdx new file mode 100644 index 000000000..6fbfd0d6d --- /dev/null +++ b/docs/docs/01-getting-started/01-c-getting-started-webapp-auto-global-NET-8.mdx @@ -0,0 +1,293 @@ +--- +id: blazor-webapp-auto-global-net-8 +sidebar_label: Blazor WebApp Auto (.NET 8) +sidebar_position: 3 +title: Blazor WebApp Auto (.NET 8) +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Getting started - Blazor WebApp (.NET 8) - Interactive render mode Auto - Global location + +Get started with the Enterprise-class Blazor Bootstrap Component library built on the Blazor and Bootstrap CSS framework. + + + +## Server Project + +### Install Nuget Package + +Use NuGet package manager. + +```shell +Install-Package Blazor.Bootstrap -Version 2.2.1 +``` + +### Add CSS references + +After the `` tag in the **head** section of the **Components/App.razor**. + +```html showLineNumbers + + + +``` + +### Add script references + +Insert the following references into the **body** section of the **Components/App.razor** file, immediately after the **_framework/blazor.web.js** reference: + +``` js showLineNumbers + + + + + + + + +``` + +:::tip +**chart.js** reference is optional. Add when the **Chart** components are used in the application. +::: + +### Register services + +Add Blazor Bootstrap service in the **Program.cs** + +```cs +builder.Services.AddBlazorBootstrap(); +``` + +Register tag helpers in **Components/_Imports.razor** + +```razor +@using BlazorBootstrap; +``` + +### Remove default references + +The default Blazor template includes demonstration code and Bootstrap. To remove these components, follow these steps: + +1. Delete the **bootstrap** folder from the **wwwroot** directory: + + - Delete the **wwwroot/css/bootstrap** folder. + +1. Remove the following line from **Components/App.razor** file: + + ``` html showLineNumbers + + ``` + +## Client Project + +### Install Nuget Package + +Use NuGet package manager. + +```shell +Install-Package Blazor.Bootstrap -Version 1.10.4 +``` + +### Register services + +Add Blazor Bootstrap service in the **Program.cs** + +```cs +builder.Services.AddBlazorBootstrap(); +``` + +Register tag helpers in **_Imports.razor** + +```razor +@using BlazorBootstrap; +``` + +## Starter template + +[GitHub Repo: Blazor Bootstrap - Blazor Web App - Interactive Render Mode Auto - Interactive Location Global (.NET 8)](https://github.com/vikramlearning/blazorbootstrap-starter-templates/tree/master/src/BlazorBootstrap.Templates.Starter/Net8.BlazorAutoGlobal) + +Blazor Bootstrap - Blazor Web App - Interactive Render Mode Auto - Interactive Location Global + +## Sample Code - Server + +### App.razor + +```html {8-10,20-25} showLineNumbers + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +### Program.cs + +```cs {11} showLineNumbers +using Net8.BlazorAutoGlobal.Client.Pages; +using Net8.BlazorAutoGlobal.Components; + +var builder = WebApplication.CreateBuilder(args); + +// Add services to the container. +builder.Services.AddRazorComponents() + .AddInteractiveServerComponents() + .AddInteractiveWebAssemblyComponents(); + +builder.Services.AddBlazorBootstrap(); + +var app = builder.Build(); + +// Configure the HTTP request pipeline. +if (app.Environment.IsDevelopment()) +{ + app.UseWebAssemblyDebugging(); +} +else +{ + app.UseExceptionHandler("/Error", createScopeForErrors: true); + // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. + app.UseHsts(); +} + +app.UseHttpsRedirection(); + +app.UseStaticFiles(); +app.UseAntiforgery(); + +app.MapRazorComponents() + .AddInteractiveServerRenderMode() + .AddInteractiveWebAssemblyRenderMode() + .AddAdditionalAssemblies(typeof(Counter).Assembly); + +app.Run(); + +``` + +### _Imports.razor + +```razor {12} showLineNumbers +@using System.Net.Http +@using System.Net.Http.Json +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using static Microsoft.AspNetCore.Components.Web.RenderMode +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.JSInterop +@using Net8.BlazorAutoGlobal +@using Net8.BlazorAutoGlobal.Client +@using Net8.BlazorAutoGlobal.Components +@using BlazorBootstrap; +``` + +## Sample Code - Client + +### Program.cs + +```cs {5} showLineNumbers +using Microsoft.AspNetCore.Components.WebAssembly.Hosting; + +var builder = WebAssemblyHostBuilder.CreateDefault(args); + +builder.Services.AddBlazorBootstrap(); + +await builder.Build().RunAsync(); +``` + +### _Imports.razor + +```razor {10} showLineNumbers +@using System.Net.Http +@using System.Net.Http.Json +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using static Microsoft.AspNetCore.Components.Web.RenderMode +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.JSInterop +@using Net8.BlazorAutoGlobal.Client +@using BlazorBootstrap; +``` + +### MainLayout.razor + +```razor {} showLineNumbers +@inherits LayoutComponentBase + +
    + + + +
    +
    + About +
    + +
    +
    @Body
    +
    +
    + +
    + +@code { + Sidebar sidebar; + IEnumerable navItems; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/", IconName = IconName.HouseDoorFill, Text = "Home", Match=NavLinkMatch.All}, + new NavItem { Id = "2", Href = "/counter", IconName = IconName.PlusSquareFill, Text = "Counter"}, + new NavItem { Id = "3", Href = "/weather", IconName = IconName.Table, Text = "Fetch Data"}, + }; + + return navItems; + } +} + +
    + An unhandled error has occurred. + Reload + 🗙 +
    +``` diff --git a/docs/docs/01-getting-started/01-d-getting-started-maui-blazor-NET-8.mdx b/docs/docs/01-getting-started/01-d-getting-started-maui-blazor-NET-8.mdx new file mode 100644 index 000000000..eb0eba2b3 --- /dev/null +++ b/docs/docs/01-getting-started/01-d-getting-started-maui-blazor-NET-8.mdx @@ -0,0 +1,87 @@ +--- +id: maui-blazor-net-8 +sidebar_label: MAUI Blazor Hybrid App (.NET 8) +sidebar_position: 4 +title: MAUI Blazor Hybrid App (.NET 8) +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Getting started - MAUI Blazor Hybrid App (.NET 8) + +Get started with the Enterprise-class Blazor Bootstrap Component library built on the Blazor and Bootstrap CSS framework. + + + +## Install Nuget Package + +Looking to quickly add **Blazor Bootstrap** to your project? Use NuGet package manager. + +```shell +Install-Package Blazor.Bootstrap -Version 2.2.1 +``` + +## Add CSS references + +After the tag in the **head** section in the **wwwroot/index.html** file, add the following references: + +```html showLineNumbers + + + +``` + +## Add script references + +Insert the following references into the **body** section of the **wwwroot/index.html** file, immediately after the **_framework/blazor.webview.js** reference: + +``` js showLineNumbers + + + + + + + + +``` + +:::tip +**chart.js** reference is optional. Add when the **Chart** components are used in the application. +::: + +## Register services + +Add Blazor Bootstrap service in the **MauiProgram.cs** + +```cs showLineNumbers +builder.Services.AddBlazorBootstrap(); +``` + +Register tag helpers in **_Imports.razor** + +```razor showLineNumbers +@using BlazorBootstrap; +``` + +## Remove default references + +The default Blazor template includes demonstration code, icons, and Bootstrap. To remove these components, follow these steps: + +1. Delete the **bootstrap** folder from the **wwwroot** directory: + + - Delete the **wwwroot/css/bootstrap** folder. + +1. Remove the following line from **wwwroot/index.html** file: + + ``` html showLineNumbers + + ``` + +## Starter template + +TODO + +## Sample Code + +TODO diff --git a/docs/docs/01-getting-started/02-a-getting-started-webassembly-NET-7.mdx b/docs/docs/01-getting-started/02-a-getting-started-webassembly-NET-7.mdx new file mode 100644 index 000000000..1c3bdaa2c --- /dev/null +++ b/docs/docs/01-getting-started/02-a-getting-started-webassembly-NET-7.mdx @@ -0,0 +1,237 @@ +--- +id: blazor-webassembly-net-7 +sidebar_label: Blazor WebAssembly (.NET 7) +sidebar_position: 5 +title: Blazor WebAssembly (.NET 7) +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Getting started - Blazor WebAssembly (.NET 7) + +Get started with the Enterprise-class Blazor Bootstrap Component library built on the Blazor and Bootstrap CSS framework. + + + +## Install Nuget Package + +Looking to quickly add **Blazor Bootstrap** to your project? Use NuGet package manager. + +```shell +Install-Package Blazor.Bootstrap -Version 2.2.1 +``` + +## Add CSS references + +After the `` tag in the **head** section of the **wwwroot/index.html** file, add the following references: + +```html showLineNumbers + + + +``` + +:::note +If you use the **Blazor WebAssembly App Empty** template (without demonstration code and Bootstrap), add the following references to the `head` section in the **wwwroot/index.html**. +There is a known GitHub issue [Blazor empty template doesn't load scoped CSS](https://github.com/dotnet/aspnetcore/issues/43975). +::: + +```html showLineNumbers + +``` + +## Add script references + +Insert the following references into the **body** section of the **wwwroot/index.html** file, immediately after the **_framework/blazor.webassembly.js** reference: + +``` js showLineNumbers + + + + + + + + +``` + +:::tip +The **chart.js** reference is optional. Include it only when the **Chart** components are used in the application. +::: + +## Register services + +Add Blazor Bootstrap service in the **Program.cs** + +```cs showLineNumbers +builder.Services.AddBlazorBootstrap(); +``` + +Register tag helpers in **_Imports.razor** + +```razor showLineNumbers +@using BlazorBootstrap; +``` + +## Remove default references + +The default Blazor template includes demonstration code, icons, and Bootstrap. To remove these components, follow these steps: + +1. Delete the **bootstrap** and **open-iconic** folders from the **wwwroot** directory: + + - Delete the **wwwroot/css/bootstrap** folder. + - Delete the **wwwroot/css/open-iconic** folder. + +1. Remove the following line from **wwwroot/index.html** file: + + ``` html showLineNumbers + + ``` + +1. Remove the following line from **wwwroot/css/app.css** file: + + ```css {} showLineNumbers + @import url('open-iconic/font/css/open-iconic-bootstrap.min.css'); + ``` + +## Starter template + +[GitHub Repo: Blazor Bootstrap - Blazor WebAssembly App (.NET 7)](https://github.com/vikramlearning/blazorbootstrap-starter-templates/tree/master/src/BlazorBootstrap.Templates.Starter/NET7.BlazorWebAssemblyApp) + +Blazor Bootstrap - Blazor WebAssembly App + +## Sample Code + +### index.html + +```html {9-11,33-35} showLineNumbers + + + + + + + NET7.BlazorWebAssemblyApp + + + + + + + + + + +
    + + + + +
    +
    + +
    + An unhandled error has occurred. + Reload + 🗙 +
    + + + + + + + + + + +``` + +### Program.cs + +```cs {10} showLineNumbers +using Microsoft.AspNetCore.Components.Web; +using Microsoft.AspNetCore.Components.WebAssembly.Hosting; +using NET7.BlazorWebAssemblyApp; + +var builder = WebAssemblyHostBuilder.CreateDefault(args); +builder.RootComponents.Add("#app"); +builder.RootComponents.Add("head::after"); + +builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); +builder.Services.AddBlazorBootstrap(); + +await builder.Build().RunAsync(); +``` + +### _Imports.razor + +```razor {11} showLineNumbers +@using System.Net.Http +@using System.Net.Http.Json +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.AspNetCore.Components.WebAssembly.Http +@using Microsoft.JSInterop +@using NET7.BlazorWebAssemblyApp +@using NET7.BlazorWebAssemblyApp.Shared +@using BlazorBootstrap; +``` + +### MainLayout.razor + +```razor {} showLineNumbers +@inherits LayoutComponentBase + +
    + + + +
    +
    + About +
    + +
    +
    + @Body +
    +
    +
    + +
    + + + + + +@code { + private Sidebar sidebar = default!; + private IEnumerable navItems = default!; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/", IconName = IconName.HouseDoorFill, Text = "Home", Match=NavLinkMatch.All}, + new NavItem { Id = "2", Href = "/counter", IconName = IconName.PlusSquareFill, Text = "Counter"}, + new NavItem { Id = "3", Href = "/fetchdata", IconName = IconName.Table, Text = "Fetch Data"}, + }; + + return navItems; + } +} +``` diff --git a/docs/docs/01-getting-started/02-b-getting-started-server-NET-7.mdx b/docs/docs/01-getting-started/02-b-getting-started-server-NET-7.mdx new file mode 100644 index 000000000..7b8205edc --- /dev/null +++ b/docs/docs/01-getting-started/02-b-getting-started-server-NET-7.mdx @@ -0,0 +1,261 @@ +--- +id: blazor-server-net-7 +sidebar_label: Blazor Server (.NET 7) +sidebar_position: 6 +title: Blazor Server (.NET 7) +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Getting started - Blazor Server (.NET 7) + +Get started with the Enterprise-class Blazor Bootstrap Component library built on the Blazor and Bootstrap CSS framework. + + + +## Install Nuget Package + +Looking to quickly add **Blazor Bootstrap** to your project? Use NuGet package manager. + +```shell +Install-Package Blazor.Bootstrap -Version 2.2.1 +``` + +## Add CSS references + +After the `` tag in the **head** section in the **Pages/_Host.cshtml** file, add the following references: + +```html showLineNumbers + + + +``` + +:::note +If you use the **Blazor Server App Empty** template (without demonstration code and Bootstrap), add the following references to the `head` section in the **Pages/_Host.cshtml**. +There is a known GitHub issue [Blazor empty template doesn't load scoped CSS](https://github.com/dotnet/aspnetcore/issues/43975). +::: + +```html showLineNumbers + +``` + +## Add script references + +Insert the following references into the **body** section of the **Pages/_Host.cshtml** file, immediately after the **_framework/blazor.server.js** reference: + +``` js showLineNumbers + + + + + + + + +``` + +:::tip +**chart.js** reference is optional. Add when the **Chart** components are used in the application. +::: + +## Register services + +Add Blazor Bootstrap service in the **Program.cs** + +```cs showLineNumbers +builder.Services.AddBlazorBootstrap(); +``` + +Register tag helpers in **_Imports.razor** + +```razor showLineNumbers +@using BlazorBootstrap; +``` + +## Remove default references + +The default Blazor template includes demonstration code, icons, and Bootstrap. To remove these components, follow these steps: + +1. Delete the **bootstrap** and **open-iconic** folders from the **wwwroot** directory: + + - Delete the **wwwroot/css/bootstrap** folder. + - Delete the **wwwroot/css/open-iconic** folder. + +1. Remove the following line from **Pages/_Host.cshtml** file: + + ``` html showLineNumbers + + ``` + +1. Remove the following line from **wwwroot/css/site.css** file: + + ```css {} showLineNumbers + @import url('open-iconic/font/css/open-iconic-bootstrap.min.css'); + ``` + +## Starter template + +[GitHub Repo: Blazor Bootstrap - Blazor Server App (.NET 7)](https://github.com/vikramlearning/blazorbootstrap-starter-templates/tree/master/src/BlazorBootstrap.Templates.Starter/NET7.BlazorServerApp) + +Blazor Bootstrap - Blazor Server App + +## Sample Code + +### _Host.cshtml + +```cshtml {12-14,35-40} showLineNumbers +@page "/" +@using Microsoft.AspNetCore.Components.Web +@namespace NET7.BlazorServerApp.Pages +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers + + + + + + + + + + + + + + + + + + +
    + + An error has occurred. This application may no longer respond until reloaded. + + + An unhandled exception has occurred. See browser dev tools for details. + + Reload + 🗙 +
    + + + + + + + + + + + + +``` + +### Program.cs + +```cs {11} showLineNumbers +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Web; +using NET7.BlazorServerApp.Data; + +var builder = WebApplication.CreateBuilder(args); + +// Add services to the container. +builder.Services.AddRazorPages(); +builder.Services.AddServerSideBlazor(); +builder.Services.AddSingleton(); +builder.Services.AddBlazorBootstrap(); + +var app = builder.Build(); + +// Configure the HTTP request pipeline. +if (!app.Environment.IsDevelopment()) +{ + app.UseExceptionHandler("/Error"); + // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. + app.UseHsts(); +} + +app.UseHttpsRedirection(); + +app.UseStaticFiles(); + +app.UseRouting(); + +app.MapBlazorHub(); +app.MapFallbackToPage("/_Host"); + +app.Run(); +``` + +### _Imports.razor + +```razor {11} showLineNumbers +@using System.Net.Http +@using Microsoft.AspNetCore.Authorization +@using Microsoft.AspNetCore.Components.Authorization +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.JSInterop +@using NET7.BlazorServerApp +@using NET7.BlazorServerApp.Shared +@using BlazorBootstrap; +``` + +### MainLayout.razor + +```razor {} showLineNumbers +@inherits LayoutComponentBase + +
    + + + +
    +
    + About +
    + +
    +
    + @Body +
    +
    +
    + +
    + + + + + +@code { + private Sidebar sidebar = default!; + private IEnumerable navItems = default!; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/", IconName = IconName.HouseDoorFill, Text = "Home", Match=NavLinkMatch.All}, + new NavItem { Id = "2", Href = "/counter", IconName = IconName.PlusSquareFill, Text = "Counter"}, + new NavItem { Id = "3", Href = "/fetchdata", IconName = IconName.Table, Text = "Fetch Data"}, + }; + + return navItems; + } +} +``` diff --git a/docs/docs/01-getting-started/02-c-getting-started-maui-blazor-NET-7.mdx b/docs/docs/01-getting-started/02-c-getting-started-maui-blazor-NET-7.mdx new file mode 100644 index 000000000..c59be32cb --- /dev/null +++ b/docs/docs/01-getting-started/02-c-getting-started-maui-blazor-NET-7.mdx @@ -0,0 +1,94 @@ +--- +id: maui-blazor-net-7 +sidebar_label: MAUI Blazor Hybrid App (.NET 7) +sidebar_position: 7 +title: MAUI Blazor Hybrid App (.NET 7) +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Getting started - MAUI Blazor Hybrid App (.NET 7) + +Get started with the Enterprise-class Blazor Bootstrap Component library built on the Blazor and Bootstrap CSS framework. + + + +## Install Nuget Package + +Looking to quickly add **Blazor Bootstrap** to your project? Use NuGet package manager. + +```shell +Install-Package Blazor.Bootstrap -Version 2.2.1 +``` + +## Add CSS references + +After the tag in the **head** section in the **wwwroot/index.html** file, add the following references: + +```html showLineNumbers + + + +``` + +## Add script references + +Insert the following references into the **body** section of the **wwwroot/index.html** file, immediately after the **_framework/blazor.webview.js** reference: + +``` js showLineNumbers + + + + + + + + +``` + +:::tip +**chart.js** reference is optional. Add when the **Chart** components are used in the application. +::: + +## Register services + +Add Blazor Bootstrap service in the **MauiProgram.cs** + +```cs showLineNumbers +builder.Services.AddBlazorBootstrap(); +``` + +Register tag helpers in **_Imports.razor** + +```razor showLineNumbers +@using BlazorBootstrap; +``` + +## Remove default references + +The default Blazor template includes demonstration code, icons, and Bootstrap. To remove these components, follow these steps: + +1. Delete the **bootstrap** and **open-iconic** folders from the **wwwroot** directory: + + - Delete the **wwwroot/css/bootstrap** folder. + - Delete the **wwwroot/css/open-iconic** folder. + +1. Remove the following line from **wwwroot/index.html** file: + + ``` html showLineNumbers + + ``` + +1. Remove the following line from **wwwroot/css/app.css** file: + + ```css {} showLineNumbers + @import url('open-iconic/font/css/open-iconic-bootstrap.min.css'); + ``` + +## Starter template + +TODO + +## Sample Code + +TODO diff --git a/docs/docs/01-getting-started/03-a-getting-started-webassembly-NET-6.mdx b/docs/docs/01-getting-started/03-a-getting-started-webassembly-NET-6.mdx new file mode 100644 index 000000000..cca1b8ca9 --- /dev/null +++ b/docs/docs/01-getting-started/03-a-getting-started-webassembly-NET-6.mdx @@ -0,0 +1,231 @@ +--- +id: blazor-webassembly-net-6 +sidebar_label: Blazor WebAssembly (.NET 6) +sidebar_position: 8 +title: Blazor WebAssembly (.NET 6) +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Getting started - Blazor WebAssembly (.NET 6) + +Get started with the Enterprise-class Blazor Bootstrap Component library built on the Blazor and Bootstrap CSS framework. + + + +## Install Nuget Package + +Looking to quickly add **Blazor Bootstrap** to your project? Use NuGet package manager. + +```shell +Install-Package Blazor.Bootstrap -Version 2.2.1 +``` + +## Add CSS references + +After the `` tag in the **head** section of the **wwwroot/index.html** file, add the following references: + +```html showLineNumbers + + + +``` + +:::note +If you use the **Blazor WebAssembly App Empty** template (without demonstration code and Bootstrap), add the following references to the `head` section in the **wwwroot/index.html**. +There is a known GitHub issue [Blazor empty template doesn't load scoped CSS](https://github.com/dotnet/aspnetcore/issues/43975). +::: + +```html showLineNumbers + +``` + +## Add script references + +Insert the following references into the **body** section of the **wwwroot/index.html** file, immediately after the **_framework/blazor.webassembly.js** reference: + +``` js showLineNumbers + + + + + + + + +``` + +:::tip +The **chart.js** reference is optional. Include it only when the **Chart** components are used in the application. +::: + +## Register services + +Add Blazor Bootstrap service in the **Program.cs** + +```cs showLineNumbers +builder.Services.AddBlazorBootstrap(); +``` + +Register tag helpers in **_Imports.razor** + +```razor showLineNumbers +@using BlazorBootstrap; +``` + +## Remove default references + +The default Blazor template includes demonstration code, icons, and Bootstrap. To remove these components, follow these steps: + +1. Delete the **bootstrap** and **open-iconic** folders from the **wwwroot** directory: + + - Delete the **wwwroot/css/bootstrap** folder. + - Delete the **wwwroot/css/open-iconic** folder. + +1. Remove the following line from **wwwroot/index.html** file: + + ``` html showLineNumbers + + ``` + +1. Remove the following line from **wwwroot/css/app.css** file: + + ```css {} showLineNumbers + @import url('open-iconic/font/css/open-iconic-bootstrap.min.css'); + ``` + +## Starter template + +[GitHub Repo: Blazor Bootstrap - Blazor WebAssembly App (.NET 6)](https://github.com/vikramlearning/blazorbootstrap-starter-templates/tree/master/src/BlazorBootstrap.Templates.Starter/NET6.BlazorWebAssemblyApp) + +Blazor Bootstrap - Blazor WebAssembly App + +## Sample Code + +### index.html + +```html {9-11,26-28} showLineNumbers + + + + + + + NET6.BlazorWebAssemblyApp + + + + + + + + + +
    Loading...
    + +
    + An unhandled error has occurred. + Reload + 🗙 +
    + + + + + + + + + + +``` + +### Program.cs + +```cs {11} showLineNumbers +using Microsoft.AspNetCore.Components.Web; +using Microsoft.AspNetCore.Components.WebAssembly.Hosting; +using NET6.BlazorWebAssemblyApp; +using BlazorBootstrap; // Add this line + +var builder = WebAssemblyHostBuilder.CreateDefault(args); +builder.RootComponents.Add("#app"); +builder.RootComponents.Add("head::after"); + +builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); +builder.Services.AddBlazorBootstrap(); + +await builder.Build().RunAsync(); +``` + +### _Imports.razor + +```razor {11} showLineNumbers +@using System.Net.Http +@using System.Net.Http.Json +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.AspNetCore.Components.WebAssembly.Http +@using Microsoft.JSInterop +@using NET6.BlazorWebAssemblyApp +@using NET6.BlazorWebAssemblyApp.Shared +@using BlazorBootstrap; +``` + +### MainLayout.razor + +```razor {} showLineNumbers +@inherits LayoutComponentBase + +
    + + + +
    +
    + About +
    + +
    +
    + @Body +
    +
    +
    + +
    + + + + + +@code { + private Sidebar sidebar = default!; + private IEnumerable navItems = default!; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/", IconName = IconName.HouseDoorFill, Text = "Home", Match=NavLinkMatch.All}, + new NavItem { Id = "2", Href = "/counter", IconName = IconName.PlusSquareFill, Text = "Counter"}, + new NavItem { Id = "3", Href = "/fetchdata", IconName = IconName.Table, Text = "Fetch Data"}, + }; + + return navItems; + } +} +``` diff --git a/docs/docs/01-getting-started/03-b-getting-started-server-NET-6.mdx b/docs/docs/01-getting-started/03-b-getting-started-server-NET-6.mdx new file mode 100644 index 000000000..5541a4a55 --- /dev/null +++ b/docs/docs/01-getting-started/03-b-getting-started-server-NET-6.mdx @@ -0,0 +1,258 @@ +--- +id: blazor-server-net-6 +sidebar_label: Blazor Server (.NET 6) +sidebar_position: 9 +title: Blazor Server (.NET 6) +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Getting started - Blazor Server (.NET 6) + +Get started with the Enterprise-class Blazor Bootstrap Component library built on the Blazor and Bootstrap CSS framework. + + + +## Install Nuget Package + +Looking to quickly add **Blazor Bootstrap** to your project? Use NuGet package manager. + +```shell +Install-Package Blazor.Bootstrap -Version 2.2.1 +``` + +## Add CSS references + +After the `` tag in the **head** section in the **Pages/_Layout.cshtml** file, add the following references: + +```html showLineNumbers + + + +``` + +:::note +If you use the **Blazor Server App Empty** template (without demonstration code and Bootstrap), add the following references to the `head` section in the **Pages/_Host.cshtml**. +There is a known GitHub issue [Blazor empty template doesn't load scoped CSS](https://github.com/dotnet/aspnetcore/issues/43975). +::: + +```html showLineNumbers + +``` + +:::danger IMPORTANT +In .NET 6 Blazor Server App default template, you may see **Pages/_Layout.cshtml**. So, add these references in the **Pages/_Layout.cshtml** instead of in the **Pages/_Host.cshtml**. +::: + +## Add script references + +Insert the following references into the **body** section of the **Pages/_Layout.cshtml** file, immediately after the **_framework/blazor.server.js** reference: + +``` js showLineNumbers + + + + + + + + +``` + +:::tip +**chart.js** reference is optional. Add when the **Chart** components are used in the application. +::: + +## Register services + +Add Blazor Bootstrap service in the **Program.cs** + +```cs showLineNumbers +builder.Services.AddBlazorBootstrap(); +``` + +Register tag helpers in **_Imports.razor** + +```razor showLineNumbers +@using BlazorBootstrap; +``` + +## Remove default references + +The default Blazor template includes demonstration code, icons, and Bootstrap. To remove these components, follow these steps: + +1. Delete the **bootstrap** and **open-iconic** folders from the **wwwroot** directory: + + - Delete the **wwwroot/css/bootstrap** folder. + - Delete the **wwwroot/css/open-iconic** folder. + +1. Remove the following line from **Pages/_Layout.cshtml** file: + + ``` html showLineNumbers + + ``` + +1. Remove the following line from **wwwroot/css/site.css** file: + + ```css {} showLineNumbers + @import url('open-iconic/font/css/open-iconic-bootstrap.min.css'); + ``` + +## Starter template + +[GitHub Repo: Blazor Bootstrap - Blazor Server App (.NET 6)](https://github.com/vikramlearning/blazorbootstrap-starter-templates/tree/master/src/BlazorBootstrap.Templates.Starter/NET6.BlazorServerApp) + +Blazor Bootstrap - Blazor Server App + +## Sample Code + +### _Layout.cshtml + +```cshtml {11-13,33-35} showLineNumbers +@using Microsoft.AspNetCore.Components.Web +@namespace NET6.BlazorServerApp.Pages +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers + + + + + + + + + + + + + + + + @RenderBody() + +
    + + An error has occurred. This application may no longer respond until reloaded. + + + An unhandled exception has occurred. See browser dev tools for details. + + Reload + 🗙 +
    + + + + + + + +``` + +### Program.cs + +```cs {11} showLineNumbers +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Web; +using NET6.BlazorServerApp.Data; + +var builder = WebApplication.CreateBuilder(args); + +// Add services to the container. +builder.Services.AddRazorPages(); +builder.Services.AddServerSideBlazor(); +builder.Services.AddSingleton(); +builder.Services.AddBlazorBootstrap(); + +var app = builder.Build(); + +// Configure the HTTP request pipeline. +if (!app.Environment.IsDevelopment()) +{ + app.UseExceptionHandler("/Error"); + // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. + app.UseHsts(); +} + +app.UseHttpsRedirection(); + +app.UseStaticFiles(); + +app.UseRouting(); + +app.MapBlazorHub(); +app.MapFallbackToPage("/_Host"); + +app.Run(); +``` + +### _Imports.razor + +```razor {11} showLineNumbers +@using System.Net.Http +@using Microsoft.AspNetCore.Authorization +@using Microsoft.AspNetCore.Components.Authorization +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.JSInterop +@using NET6.BlazorServerApp +@using NET6.BlazorServerApp.Shared +@using BlazorBootstrap; +``` + +### MainLayout.razor + +```razor {} showLineNumbers +@inherits LayoutComponentBase + +
    + + + +
    +
    + About +
    + +
    +
    + @Body +
    +
    +
    + +
    + + + + + +@code { + private Sidebar sidebar = default!; + private IEnumerable navItems = default!; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/", IconName = IconName.HouseDoorFill, Text = "Home", Match=NavLinkMatch.All}, + new NavItem { Id = "2", Href = "/counter", IconName = IconName.PlusSquareFill, Text = "Counter"}, + new NavItem { Id = "3", Href = "/fetchdata", IconName = IconName.Table, Text = "Fetch Data"}, + }; + + return navItems; + } +} +``` diff --git a/docs/docs/01-getting-started/_category_.json b/docs/docs/01-getting-started/_category_.json new file mode 100644 index 000000000..3562d433d --- /dev/null +++ b/docs/docs/01-getting-started/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Getting Started", + "position": 1 +} diff --git a/docs/docs/02-layout/_category_.json b/docs/docs/02-layout/_category_.json new file mode 100644 index 000000000..6eb39735a --- /dev/null +++ b/docs/docs/02-layout/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Layout", + "position": 2 +} diff --git a/docs/docs/02-layout/getting-started-server.mdx b/docs/docs/02-layout/getting-started-server.mdx new file mode 100644 index 000000000..04aaa4f9f --- /dev/null +++ b/docs/docs/02-layout/getting-started-server.mdx @@ -0,0 +1,97 @@ +--- +id: blazor-server +sidebar_label: Blazor Server +sidebar_position: 2 +title: Blazor Server +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Layout Setup - Blazor WebAssembly + +Get started with the Enterprise-class Blazor Bootstrap Component library built on the Blazor and Bootstrap CSS framework. + + + +## Prerequisites + +Assuming you followed the getting started docs for the initial setup. + +1. **Blazor WebAssembly Project:** Follow the [getting started](/getting-started/blazor-webassembly) steps for the initial setup. +1. **Blazor Server Project:** Follow the [getting started](/getting-started/blazor-server) steps for the initial setup. + +## Steps + +Replace **MainLayout.razor** page code with the below code. + +:::danger NOTE +Remove all the CSS content from the **Shared/MainLayout.razor.css** file. +::: + +```cshtml {} showLineNumbers +@inherits LayoutComponentBase + +
    + + + +
    +
    + About +
    + +
    +
    + @Body +
    +
    +
    + +
    + +@code { + private Sidebar sidebar = default!; + private IEnumerable navItems = default!; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/", IconName = IconName.HouseDoorFill, Text = "Home", Match=NavLinkMatch.All}, + new NavItem { Id = "2", Href = "/counter", IconName = IconName.PlusSquareFill, Text = "Counter"}, + new NavItem { Id = "3", Href = "/fetchdata", IconName = IconName.Table, Text = "Fetch Data"}, + }; + + return navItems; + } +} +``` + +## Starter templates + +### .NET 6 + +1. [Blazor Bootstrap - Blazor WebAssembly App](https://github.com/vikramlearning/blazorbootstrap-starter-templates/tree/master/src/BlazorBootstrap.Templates.Starter/NET6.BlazorWebAssemblyApp) + + Blazor Bootstrap - Blazor WebAssembly App + +### .NET 7 + +1. [Blazor Bootstrap - Blazor WebAssembly App](https://github.com/vikramlearning/blazorbootstrap-starter-templates/tree/master/src/BlazorBootstrap.Templates.Starter/NET7.BlazorWebAssemblyApp) + + Blazor Bootstrap - Blazor WebAssembly App + +1. [Blazor Bootstrap - Blazor Empty WebAssembly App](https://github.com/vikramlearning/blazorbootstrap-starter-templates/tree/master/src/BlazorBootstrap.Templates.Starter/NET7.BlazorWebAssemblyAppEmpty) + + Blazor Bootstrap - Blazor Empty WebAssembly App diff --git a/docs/docs/02-layout/getting-started-webassembly.mdx b/docs/docs/02-layout/getting-started-webassembly.mdx new file mode 100644 index 000000000..3b75933b7 --- /dev/null +++ b/docs/docs/02-layout/getting-started-webassembly.mdx @@ -0,0 +1,97 @@ +--- +id: blazor-webassembly +sidebar_label: Blazor WebAssembly +sidebar_position: 1 +title: Blazor WebAssembly +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Layout Setup - Blazor WebAssembly + +Get started with the Enterprise-class Blazor Bootstrap Component library built on the Blazor and Bootstrap CSS framework. + + + +## Prerequisites + +Assuming you followed the getting started docs for the initial setup. + +1. **Blazor WebAssembly Project:** Follow the [getting started](/getting-started/blazor-webassembly) steps for the initial setup. +1. **Blazor Server Project:** Follow the [getting started](/getting-started/blazor-server) steps for the initial setup. + +## Steps + +Replace **MainLayout.razor** page code with the below code. + +:::danger NOTE +Remove all the CSS content from the **Shared/MainLayout.razor.css** file. +::: + +```cshtml {} showLineNumbers +@inherits LayoutComponentBase + +
    + + + +
    +
    + About +
    + +
    +
    + @Body +
    +
    +
    + +
    + +@code { + private Sidebar sidebar = default!; + private IEnumerable navItems = default!; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/", IconName = IconName.HouseDoorFill, Text = "Home", Match=NavLinkMatch.All}, + new NavItem { Id = "2", Href = "/counter", IconName = IconName.PlusSquareFill, Text = "Counter"}, + new NavItem { Id = "3", Href = "/fetchdata", IconName = IconName.Table, Text = "Fetch Data"}, + }; + + return navItems; + } +} +``` + +## Starter templates + +### .NET 6 + +1. [Blazor Bootstrap - Blazor WebAssembly App](https://github.com/vikramlearning/blazorbootstrap-starter-templates/tree/master/src/BlazorBootstrap.Templates.Starter/NET6.BlazorWebAssemblyApp) + + Blazor Bootstrap - Blazor WebAssembly App + +### .NET 7 + +1. [Blazor Bootstrap - Blazor WebAssembly App](https://github.com/vikramlearning/blazorbootstrap-starter-templates/tree/master/src/BlazorBootstrap.Templates.Starter/NET7.BlazorWebAssemblyApp) + + Blazor Bootstrap - Blazor WebAssembly App + +1. [Blazor Bootstrap - Blazor Empty WebAssembly App](https://github.com/vikramlearning/blazorbootstrap-starter-templates/tree/master/src/BlazorBootstrap.Templates.Starter/NET7.BlazorWebAssemblyAppEmpty) + + Blazor Bootstrap - Blazor Empty WebAssembly App diff --git a/docs/docs/03-content/_category_.json b/docs/docs/03-content/_category_.json new file mode 100644 index 000000000..5f4ba24d6 --- /dev/null +++ b/docs/docs/03-content/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Content", + "position": 3 +} diff --git a/docs/docs/03-content/icons.mdx b/docs/docs/03-content/icons.mdx new file mode 100644 index 000000000..d6d5ca9cb --- /dev/null +++ b/docs/docs/03-content/icons.mdx @@ -0,0 +1,181 @@ +--- +title: Blazor Icons Component +description: Use Blazor Bootstrap tooltip component to add custom tooltips to your web pages. +image: https://i.imgur.com/8HcjpiK.png + +sidebar_label: Icons +sidebar_position: 1 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Icons + +Blazor Bootstrap icon component will display an icon from any icon font. + + + +## Prerequisites + +- Install Bootstrap Icons or other. + - Refer: [Bootstrap Icons](https://icons.getbootstrap.com/) + +- Include the icon fonts stylesheet in your website `` or `@import` in CSS from CDN. +``` + +``` + +## Parameters + +| Name | Type | Description | Required | Default | Added Version | +|:--|:--|:--|:--|:--|:--| +| Color | `IconColor` | Gets or sets the icon color. | | `IconColor.None` | 1.9.0 | +| CustomIconName | string | Specify custom icons of your own, like `fontawesome`. Example: `fas fa-alarm-clock` | ✔️ | | 1.0.0 | +| Name | `IconName` | Gets or sets the icon name. | ✔️ | | 1.0.0 | +| Size | `IconSize` | Gets or sets the icon size. | | `IconSize.None` | 1.0.0 | + +:::caution NOTE +Either `Name` or `CustomIconName` parameter is mandatory. For **Font Awesome** setup, please follow the **Font Awesome** website. +::: + +## Examples + +### Icons + +Blazor Bootstrap: Icon Component + +```cshtml {} showLineNumbers + + + + +``` +[See icons demo here.](https://demos.blazorbootstrap.com/icons#examples) + +### Sizes + +Blazor Bootstrap: Icon Component - Sizes + +```cshtml {} showLineNumbers + + + + +``` +[See icons with different size demo here.](https://demos.blazorbootstrap.com/icons#sizes) + +### Font awesome icons + +In the following example, we used **Font Awesome 6.4.2** free version icons. For Font Awesome setup, please follow the Font Awesome website. + +Blazor Bootstrap: Icon Component - Font awesome icons + +```cshtml {} showLineNumbers + + + + + + +``` + +### Colors + +Blazor Bootstrap: Icon Component - Colors + +```cshtml {} showLineNumbers + + + + + + + + + + + +``` +[See icons with different size demo here.](https://demos.blazorbootstrap.com/icons#colors) + +### Inline text with icon + +Blazor Bootstrap: Icon Component - Inline text with icon + +```cshtml {} showLineNumbers +Inline text +``` +[See inline text with icon demo here.](https://demos.blazorbootstrap.com/icons#inline-text-with-icon) + +### Link with icon + +Blazor Bootstrap: Icon Component - Link with icon + +```cshtml {} showLineNumbers + + Example link text + +``` +[See link with icon demo here.](https://demos.blazorbootstrap.com/icons#link-with-icon) + +### Link with custom icon + +Blazor Bootstrap: Icon Component - Link with custom icon + +```cshtml {} showLineNumbers + + Example link text + +``` +[See link with custom icon demo here.](https://demos.blazorbootstrap.com/icons#link-with-custom-icon) + +### Button with icon and text + +Blazor Bootstrap: Icon Component - Button with icon and text + +```cshtml {} showLineNumbers + + + +``` +[See button with icon and text demo here.](https://demos.blazorbootstrap.com/icons#button-with-icon-and-text) + +### Button with icon only + +Blazor Bootstrap: Icon Component - Button with icon only + +```cshtml {} showLineNumbers + +``` +[See button with icon only demo here.](https://demos.blazorbootstrap.com/icons#button-with-icon-only) + +### Button with font awesome icon + +In the following example, we used **Font Awesome 6.4.2** free version icons. For Font Awesome setup, please follow the Font Awesome website. + +Blazor Bootstrap: Icon Component - Button with font awesome icon + +```cshtml {} showLineNumbers + + +``` + +### Icon with tooltip + +Blazor Bootstrap: Icon Component - Icon with tooltip + +```cshtml {} showLineNumbers + + + +``` + +### Bootstrap Icons + +Blazor Bootstrap: Icon Component - Bootstrap Icons + +[See all bootstrap icons demo here.](https://demos.blazorbootstrap.com/icons#bootstrap-icons) \ No newline at end of file diff --git a/docs/docs/04-forms/_category_.json b/docs/docs/04-forms/_category_.json new file mode 100644 index 000000000..7724d8edd --- /dev/null +++ b/docs/docs/04-forms/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Forms", + "position": 4 +} diff --git a/docs/docs/04-forms/autocomplete.mdx b/docs/docs/04-forms/autocomplete.mdx new file mode 100644 index 000000000..093402e94 --- /dev/null +++ b/docs/docs/04-forms/autocomplete.mdx @@ -0,0 +1,544 @@ +--- +title: Blazor AutoComplete Component +description: Blazor Bootstrap `AutoComplete` component is a textbox that offers the users suggestions as they type from the data source. And it supports client-side and server-side filtering. +image: https://i.imgur.com/gRcdvc0.png + +sidebar_label: Auto Complete +sidebar_position: 1 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Auto Complete + +Blazor Bootstrap autocomplete component is a textbox that offers the users suggestions as they type from the data source. And it supports client-side and server-side filtering. + + + +## Parameters +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| DataProvider | delegate | null | ✔️ | DataProvider is for items to render. The provider should always return an instance of `AutoCompleteDataProviderResult`, and null is not allowed. | 0.4.0 | +| Disabled | bool | false | | Is AutoComplete disabled. | 0.4.0 | +| EmptyText | string | `No records found.` | ✔️ | Gets or sets the empty text. | 1.10.2 | +| LoadingText | string | `Loading...` | ✔️ | Gets or sets the loading text. | 1.10.2 | +| Placeholder | string | null | | AutoComplete placeholder. | 0.4.0 | +| PropertyName | string | null | ✔️ | AutoComplete data text property name. | 0.4.0 | +| Size | enum | `AutoCompleteSize.Default` | | Use `AutoCompleteSize.Default` or `AutoCompleteSize.Large` or `AutoCompleteSize.Small` | 0.4.0 | +| StringComparison | enum | `StringComparison.OrdinalIgnoreCase` | | Specifies the culture, case, and sort rules to be used. Use `StringComparison.CurrentCulture` or `StringComparison.CurrentCultureIgnoreCase` or `StringComparison.InvariantCulture` or `StringComparison.InvariantCultureIgnoreCase` or `StringComparison.Ordinal` or `StringComparison.OrdinalIgnoreCase`. | 0.4.1 | +| StringFilterOperator | enum | `StringFilterOperator.Contains` | | Use `StringFilterOperator.Equals` or `StringFilterOperator.Contains` or `StringFilterOperator.StartsWith` or `StringFilterOperator.EndsWith` | 0.4.1 | +| Value | string | null | ✔️ | AutoComplete value. | 0.4.0 | +| ValueExpression | expression | null | | AutoComplete value expression. | 0.4.0 | + +## Methods + +| Name | Returns | Description | Added Version | +|:--|:--|:--|:--| +| Disable() | void | Disables autocomplete. | 0.4.0 | +| Enable() | void | Enables autocomplete. | 0.4.0 | +| RefreshDataAsync() | Task | Refresh the autocomplete data. | 0.4.0 | +| ResetAsync() | Task | Resets the autocomplete selection. | 0.4.0 | + +## Events + +| Name | Description | Added Version | +|:--|:--|:--| +| OnChanged | This event fires immediately when the autocomplete selection changes by the user. | 0.4.0 | +| ValueChanged | This event fires on every user keystroke that changes the textbox value. | 0.4.0 | + +## Keyboard Navigation + +Blazor Bootstrap autocomplete component supports the following keyboard shortcuts to initiate various actions. + +| Key | Description | Added Version | +|:--|:--|:--| +| Esc | Closes the popup list when it is in an open state. | 1.3.1 | +| Up arrow | Focuses on the previous item in the list. | 1.3.1 | +| Down arrow | Focuses on the next item in the list. | 1.3.1 | +| Home | Focuses on the first item in the list. | 1.3.1 | +| End | Focuses on the last item in the list. | 1.3.1 | +| Enter | Selects the currently focused item. | 1.3.1 | + +## Examples + +### Client side data + +Blazor Bootstrap AutoComplete Component - Client side data + +```cshtml {3-8} showLineNumbers +
    +
    + +
    +
    +``` + +```cs {6-12} showLineNumbers +@code { + private string customerName; + + public IEnumerable customers; + + private async Task> CustomersDataProvider(AutoCompleteDataProviderRequest request) + { + if (customers is null) // pull customers only one time for client-side autocomplete + customers = GetCustomers(); // call a service or an API to pull the customers + + return await Task.FromResult(request.ApplyTo(customers.OrderBy(customer => customer.CustomerName))); + } + + private IEnumerable GetCustomers() + { + return new List { + new(1, "Pich S"), + new(2, "sfh Sobi"), + new(3, "Jojo chan"), + new(4, "Jee ja"), + new(5, "Rose Canon"), + new(6, "Manju A"), + new(7, "Bandita PA"), + new(8, "Sagar Adil"), + new(9, "Isha Wang"), + new(10, "Daina JJ"), + new(11, "Komala Mug"), + new(12, "Dikshita BD"), + new(13, "Neha Gosar"), + new(14, "Preeti S"), + new(15, "Sagar Seth"), + new(16, "Vinayak MM"), + new(17, "Vijaya Lakhsmi"), + new(18, "Jahan K"), + new(19, "Joy B"), + new(20, "Zaraiah C"), + new(21, "Laura L"), + new(22, "Punith ES") + }; + } + + private void OnAutoCompleteChanged(Customer customer) + { + // TODO: handle your own logic + + // NOTE: do null check + Console.WriteLine($"'{customer?.CustomerName}' selected."); + } +} +``` + +```cs showLineNumbers +public record Customer(int CustomerId, string CustomerName); +``` + +[See demo here](https://demos.blazorbootstrap.com/autocomplete#client-side-data) + +### Client side data with StringComparision + +In the below example, `StringComparision.Ordinal` is used to make the filter case-sensitive. + +:::info +By default, `StringComparison.OrdinalIgnoreCase` is used to compare culture-agnostic and case-insensitive string matching. +::: + +Blazor Bootstrap AutoComplete Component - Client side data with StringComparision + +```cshtml {8} showLineNumbers +
    +
    + +
    +
    +``` + +```cs {6-12} showLineNumbers +@code { + private string customerName; + + public IEnumerable customers; + + private async Task> CustomersDataProvider(AutoCompleteDataProviderRequest request) + { + if (customers is null) // pull customers only one time for client-side autocomplete + customers = GetCustomers(); // call a service or an API to pull the customers + + return await Task.FromResult(request.ApplyTo(customers.OrderBy(customer => customer.CustomerName))); + } + + private IEnumerable GetCustomers() + { + return new List { + new(1, "Pich S"), + new(2, "sfh Sobi"), + new(3, "Jojo chan"), + new(4, "Jee ja"), + new(5, "Rose Canon"), + new(6, "Manju A"), + new(7, "Bandita PA"), + new(8, "Sagar Adil"), + new(9, "Isha Wang"), + new(10, "Daina JJ"), + new(11, "Komala Mug"), + new(12, "Dikshita BD"), + new(13, "Neha Gosar"), + new(14, "Preeti S"), + new(15, "Sagar Seth"), + new(16, "Vinayak MM"), + new(17, "Vijaya Lakhsmi"), + new(18, "Jahan K"), + new(19, "Joy B"), + new(20, "Zaraiah C"), + new(21, "Laura L"), + new(22, "Punith ES") + }; + } + + private void OnAutoCompleteChanged(Customer customer) + { + // TODO: handle your own logic + + // NOTE: do null check + Console.WriteLine($"'{customer?.CustomerName}' selected."); + } +} +``` + +```cs showLineNumbers +public record Customer(int CustomerId, string CustomerName); +``` + +[See demo here](https://demos.blazorbootstrap.com/autocomplete#client-side-data-with-string-comparision) + +### Server side data + +Blazor Bootstrap AutoComplete Component - Server side data + +```cshtml {3-8} showLineNumbers +
    +
    + +
    +
    +``` + +```cs {6-10} showLineNumbers +@code { + private string customerName; + + [Inject] ICustomerService _customerService { get; set; } + + private async Task> CustomersDataProvider(AutoCompleteDataProviderRequest request) + { + var customers = await _customerService.GetCustomers(request.Filter, request.CancellationToken); // API call + return await Task.FromResult(new AutoCompleteDataProviderResult { Data = customers, TotalCount = customers.Count() }); + } + + private void OnAutoCompleteChanged(Customer customer) + { + // TODO: handle your own logic + + // NOTE: do null check + Console.WriteLine($"'{customer?.CustomerName}' selected."); + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/autocomplete#server-side-data) + +### Set default value + +Blazor Bootstrap AutoComplete Component - Set default value + +```cshtml {} showLineNumbers +
    +
    + +
    +
    +``` + +```csharp +@code { + private string customerName; + + public IEnumerable customers; + + protected override void OnInitialized() + { + customerName = "Pich S"; + } + + private async Task> CustomersDataProvider(AutoCompleteDataProviderRequest request) + { + if (customers is null) // pull customers only one time for client-side autocomplete + customers = GetCustomers(); // call a service or an API to pull the customers + + return await Task.FromResult(request.ApplyTo(customers.OrderBy(customer => customer.CustomerName))); + } + + private IEnumerable GetCustomers() + { + return new List { + new(1, "Pich S"), + new(2, "sfh Sobi"), + new(3, "Jojo chan"), + new(4, "Jee ja"), + new(5, "Rose Canon"), + new(6, "Manju A"), + new(7, "Bandita PA"), + new(8, "Sagar Adil"), + new(9, "Isha Wang"), + new(10, "Daina JJ"), + new(11, "Komala Mug"), + new(12, "Dikshita BD"), + new(13, "Neha Gosar"), + new(14, "Preeti S"), + new(15, "Sagar Seth"), + new(16, "Vinayak MM"), + new(17, "Vijaya Lakhsmi"), + new(18, "Jahan K"), + new(19, "Joy B"), + new(20, "Zaraiah C"), + new(21, "Laura L"), + new(22, "Punith ES") + }; + } + + private void OnAutoCompleteChanged(Customer customer) + { + // TODO: handle your own logic + + // NOTE: do null check + Console.WriteLine($"'{customer?.CustomerName}' selected."); + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/autocomplete#set-default-value) + +### Validations + +Blazor Bootstrap AutoComplete Component - Validations - Data empty + +Blazor Bootstrap AutoComplete Component - Validations - Item selected + +```cs showLineNumbers +@using System.ComponentModel.DataAnnotations +``` + +```html showLineNumbers + +``` + +```cshtml {7-13} showLineNumbers + + + +
    + +
    + + +
    +
    + +
    + +
    + + +
    +
    + +
    +
    + +
    +
    +
    +``` + +```cs {} showLineNumbers +@code { + private CustomerAddress customerAddress = new(); + private EditContext _editContext; + + [Inject] ICustomerService _customerService { get; set; } + + protected override void OnInitialized() + { + _editContext = new EditContext(customerAddress); + base.OnInitialized(); + } + + public void HandleOnValidSubmit() + { + Console.WriteLine($"Customer name is {customerAddress.CustomerName} and address is {customerAddress.Address}"); + } + + private async Task> CustomersDataProvider(AutoCompleteDataProviderRequest request) + { + var customers = await _customerService.GetCustomers(request.Filter); // API call + return await Task.FromResult(new AutoCompleteDataProviderResult { Data = customers, TotalCount = customers.Count() }); + } + + private void OnAutoCompleteChanged(Customer customer) + { + // TODO: handle your own logic + + // NOTE: do null check + Console.WriteLine($"'{customer?.CustomerName}' selected."); + Console.WriteLine($"Data null: {customer is null}."); + } + + public class CustomerAddress + { + [Required] + public string CustomerName { get; set; } + + [Required] + public string Address { get; set; } + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/autocomplete#validations) + +### Disable + +Use the Disabled parameter to disable the AutoComplete. + +```cshtml {8,13-15} showLineNumbers +
    +
    + +
    +
    + + + + +``` + +```cs {3,21,23,25} showLineNumbers +@code { + private string customerName = default!; + private bool disabled = true; + + [Inject] ICustomerService _customerService { get; set; } = default!; + + private async Task> CustomersDataProvider(AutoCompleteDataProviderRequest request) + { + var customers = await _customerService.GetCustomersAsync(request.Filter, request.CancellationToken); // API call + return await Task.FromResult(new AutoCompleteDataProviderResult { Data = customers, TotalCount = customers.Count() }); + } + + private void OnAutoCompleteChanged(Customer2 customer) + { + // TODO: handle your own logic + + // NOTE: do null check + Console.WriteLine($"'{customer?.CustomerName}' selected."); + } + + private void Enable() => disabled = false; + + private void Disable() => disabled = true; + + private void Toggle() => disabled = !disabled; +} +``` + +Also, use **Enable()** and **Disable()** methods to enable and disable the AutoComplete. + +:::caution NOTE +Do not use both the **Disabled** parameter and **Enable()** & **Disable()** methods. +::: + +```cshtml {3,13-14} showLineNumbers +
    +
    + +
    +
    + + + +``` + +```cs {2,21,23} showLineNumbers +@code { + private AutoComplete autoComplete1 = default!; + private string customerName = default!; + + [Inject] ICustomerService _customerService { get; set; } = default!; + + private async Task> CustomersDataProvider(AutoCompleteDataProviderRequest request) + { + var customers = await _customerService.GetCustomersAsync(request.Filter, request.CancellationToken); // API call + return await Task.FromResult(new AutoCompleteDataProviderResult { Data = customers, TotalCount = customers.Count() }); + } + + private void OnAutoCompleteChanged(Customer2 customer) + { + // TODO: handle your own logic + + // NOTE: do null check + Console.WriteLine($"'{customer?.CustomerName}' selected."); + } + + private void Disable() => autoComplete1.Disable(); + + private void Enable() => autoComplete1.Enable(); +} +``` + +[See demo here](https://demos.blazorbootstrap.com/autocomplete#disable) diff --git a/docs/docs/04-forms/currency-input.mdx b/docs/docs/04-forms/currency-input.mdx new file mode 100644 index 000000000..17727fdaa --- /dev/null +++ b/docs/docs/04-forms/currency-input.mdx @@ -0,0 +1,672 @@ +--- +title: Blazor Currency Input Component +description: Use the Blazor Bootstrap `CurrencyInput` component to show the numbers in the user's locale format, including the currency symbol. +image: https://i.imgur.com/mihpoXk.png + +sidebar_label: Currency Input +sidebar_position: 2 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Currency Input + +Use the Blazor Bootstrap `CurrencyInput` component to show the numbers in the user's locale format, including the currency symbol. + + + +Blazor Bootstrap: Currency Input Component + +## Parameters + +| Name | Type | Default | Required | Description | +|:--|:--|:--|:--|:--| +| AllowNegativeNumbers | bool | false | | Allows negative numbers. By default, negative numbers are not allowed. | +| AutoComplete | bool | false | | Indicates whether the NumberInput can complete the values automatically by the browser. | +| CurrencySign | `CurrencySign` | `CurrencySign.Standard` | | | +| Disabled | bool | false | | Gets or sets the disabled. | +| EnableMinMax | bool | false | | Determines whether to restrict the user input to Min and Max range. If true, restricts the user input between the Min and Max range. Else accepts the user input. | +| HideCurrencySymbol | bool | false | | Determines whether to hide the currency symbol are not. | +| Locale | string | `en-US` | ✔️ | Gets or sets the locale. | +| Max| TValue | | | Gets or sets the max. Max ignored if EnableMinMax="false". | +| MaximumFractionDigits | byte? | null | | The maximum number of fraction digits to use. | +| Min| TValue | | | Gets or sets the min. Min ignored if EnableMinMax="false". | +| MinimumFractionDigits | byte? | null | | The minimum number of fraction digits to use. | +| MinimumIntegerDigits | byte | 1 | | The minimum number of integer digits to use. A value with a smaller number of integer digits than this number will be left-padded with zeros (to the specified length) when formatted. | +| Placeholder | string? | null | | Gets or sets the placeholder. | +| TextAlignment | `Alignment` | `Alignment.None` | | Gets or sets the text alignment. | +| Value | TValue | | | Gets or sets the value. | + +## Methods + +| Name | Description | +|:--|:--| +| Disable() | Disables currency input. | +| Enable() | Enables currency input. | + +## Events + +| Name | Description | +|:--|:--| +| ValueChanged | This event fired on every user keystroke that changes the `CurrencyInput` value. | + +## Examples + +### Basic usage + +By default, `e + -` are blocked. For all integral numeric types, dot `.` is blocked. + +Blazor Bootstrap: Currency Input Component - Basic usage + +```cshtml {2} showLineNumbers +
    + +
    +
    Entered Amount: @amount1
    +``` + +```cs showLineNumbers +@code { + private int amount1 = 12345678; +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/currency-input#basic-usage) + +### Show currency symbols for the different locales + +Blazor Bootstrap: Currency Input Component - Show currency symbols for the different locales + +```cshtml {3,9,15,21,27,33,39,45,51} showLineNumbers +
    + + +
    +
    Entered Amount: @amount1
    + +
    + + +
    +
    Entered Amount: @amount2
    + +
    + + +
    +
    Entered Amount: @amount3
    + +
    + + +
    +
    Entered Amount: @amount4
    + +
    + + +
    +
    Entered Amount: @amount5
    + +
    + + +
    +
    Entered Amount: @amount6
    + +
    + + +
    +
    Entered Amount: @amount7
    + +
    + + +
    +
    Entered Amount: @amount8
    + +
    + + +
    +
    Entered Amount: @amount9
    +``` + +```cs showLineNumbers +@code { + private int amount1 = 12345678; + private int amount2 = 12345678; + private int amount3 = 12345678; + private int amount4 = 12345678; + private int amount5 = 12345678; + private int amount6 = 12345678; + private int amount7 = 12345678; + private int amount8 = 12345678; + private int amount9 = 12345678; +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/currency-input#show-currency-symbols-for-the-different-locales) + +### Hide currency symbol + +Set `HideCurrencySymbol` parameter value to `true` to hide the currency symbol. + +Blazor Bootstrap: Currency Input Component - + +```cshtml {2,5} showLineNumbers +
    + +
    +
    Entered Value: @amount1
    +``` + +```cs showLineNumbers +@code { + private double amount1 = 4.33; +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/currency-input#hide-currency-symbol) + +### Using fraction digits and integer digits + +In the below example, formatting adds zeros to display minimum integers and fractions. + +Blazor Bootstrap: Currency Input Component - Using fraction digits and integer digits + +:::danger +MinimumFractionDigits and MaximumFractionDigits parameters are applicable for floating-point numeric types only. +::: + +```cshtml {2,5,6} showLineNumbers +
    + +
    +
    Entered Value: @amount1
    +``` + +```cs showLineNumbers +@code { + private double amount1 = 4.33; +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/currency-input#using-fraction-digits-and-integer-digits) + +### Wrap the number with parentheses instead of appending a minus sign + +In many locales, accounting format means to wrap the number with parentheses instead of appending a minus sign. You can enable this formatting by setting the CurrencySign option to `Accounting`. The default value is `Standard`. + +Blazor Bootstrap: Currency Input Component - Wrap the number with parentheses instead of appending a minus sign + +```cshtml {2,5} showLineNumbers +
    + +
    +
    Entered Value: @amount1
    +``` + +```cs showLineNumbers +@code { + private int amount1 = -21231; +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/currency-input#wrap-the-number-with-parentheses-instead-of-appending-a-minus-sign) + +### Generic type + +`CurrencyInput` is a generic component. Always specify the exact type. In the below example TValue is set to `int`, `int?`, `float`, `float?`, `double`, `double?`, `decimal`, and `decimal?`. + +Blazor Bootstrap: Currency Input Component - Generic type + +```cshtml {3,8,13,18,23,28,33,38} showLineNumbers +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    +``` + +```cs {} showLineNumbers +@code { + private int amount; + private int? amount2; + private float amount3; + private float? amount4; + private double amount5; + private double? amount6; + private decimal amount7; + private decimal? amount8; +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/currency-input#generic-type) + +### Enable min and max + +Set `EnableMinMax="true"` and set the `Min` and `Max` parameters to restrict the user input between the Min and Max range. + +Blazor Bootstrap: Currency Input Component - Enable min and max + +:::caution NOTE +If the user tries to enter a number in the CurrencyInput field which is out of range, then it will override with Min or Max value based on the context. +If the user input is less than the Min value, then it will override with the Min value. +If the user input exceeds the Max value, it will override with the Max value. +::: + +```cshtml {3} showLineNumbers +
    + + + Tip: The amount must be between 10 and 500. +
    +
    Entered Amount: @amount
    +``` + +```cs {} showLineNumbers +@code { + private decimal? amount; +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/currency-input#enable-min-and-max) + +### Text alignment + +You can change the text alignment according to your need. Use the `TextAlignment` parameter to set the alignment. In the below example, alignment is set to center and end. + +Blazor Bootstrap: Currency Input Component - Text alignment + +```cshtml {3,9} showLineNumbers +
    + + +
    +
    Entered Amount: @amount
    + +
    + + +
    +
    Entered Amount: @amount2
    +``` + +```cs {} showLineNumbers +@code { + private int amount; + private decimal amount2 = 2.34M; +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/currency-input#text-alignment) + +### Allow negative numbers + +By default, negative numbers are not allowed. Set the `AllowNegativeNumbers` parameter to true to allow the negative numbers. + +Blazor Bootstrap: Currency Input Component - Allow negative numbers + +```cshtml {3} showLineNumbers +
    + + + Tip: Negative numbers are also allowed. +
    +
    Entered Amount: @amount
    +``` + +```cs {} showLineNumbers +@code { + private int amount; +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/currency-input#allow-negative-numbers) + +### Disable + +Use the Disabled parameter to disable the CurrencyInput. + +```cshtml {5,9-11} showLineNumbers +
    + + +
    + + + + +``` + +```cs {3,5,7,9} showLineNumbers +@code { + private int? amount; + private bool disabled = true; + + private void Enable() => disabled = false; + + private void Disable() => disabled = true; + + private void Toggle() => disabled = !disabled; +} +``` + +Also, use **Enable()** and **Disable()** methods to enable and disable the CurrencyInput. + +:::caution NOTE +Do not use both the **Disabled** parameter and **Enable()** & **Disable()** methods. +::: + +```cshtml {3,9-10} showLineNumbers +
    + + +
    + + + +``` + +```cs {2,5,7} showLineNumbers +@code { + private CurrencyInput currencyInput = default!; + private int? amount; + + private void Disable() => currencyInput.Disable(); + + private void Enable() => currencyInput.Enable(); +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/currency-input#disable) + +### Validations + +Like any other blazor input components, `CurrencyInput` supports validations. Add the DataAnnotations on the `CurrencyInput` component to validate the user input before submitting the form. In the below example, we used Required and Range attributes. + +Blazor Bootstrap: Currency Input Component - Validations + +```cshtml {17,18,23,24,31,32,39,40} showLineNumbers +@using System.ComponentModel.DataAnnotations + + + + + + +
    + +
    + + +
    +
    + +
    + +
    + + +
    +
    + +
    + +
    + + +
    +
    + +
    +
    + + +
    +
    +
    +``` + +```cs {2-3,7,36,46,49-61} showLineNumbers +@code { + private Invoice invoice = new(); + private EditContext editContext; + + protected override void OnInitialized() + { + editContext = new EditContext(invoice); + base.OnInitialized(); + } + + protected override void OnParametersSet() + { + CalculateToatl(); + base.OnParametersSet(); + } + + private void PriceChanged(decimal? value) + { + invoice.Price = value; + CalculateToatl(); + } + + private void DiscountChanged(decimal? value) + { + invoice.Discount = value; + CalculateToatl(); + } + + private void CalculateToatl() + { + var price = invoice.Price.HasValue ? invoice.Price.Value : 0; + var discount = invoice.Discount.HasValue ? invoice.Discount.Value : 0; + invoice.Total = price - discount; + } + + public void HandleOnValidSubmit() + { + Console.WriteLine($"Price: {invoice.Price}"); + Console.WriteLine($"Discount: {invoice.Discount}"); + Console.WriteLine($"Total: {invoice.Total}"); + } + + private void ResetForm() + { + invoice = new(); + editContext = new EditContext(invoice); + } + + public class Invoice + { + [Required(ErrorMessage = "Price required.")] + [Range(60, 500, ErrorMessage = "Price should be between 60 and 500.")] + public decimal? Price { get; set; } = 22M; + + [Range(0, 50, ErrorMessage = "Discount should be between 0 and 50.")] + public decimal? Discount { get; set; } + + [Required(ErrorMessage = "Amount required.")] + [Range(10, 500, ErrorMessage = "Total should be between 60 and 500.")] + public decimal? Total { get; set; } + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/currency-input#validations) + +### Decimal values + +Blazor Bootstrap: Currency Input Component - Decimal values + +```cshtml {3,9,15,21,27,33,39,45,51} showLineNumbers +
    + + +
    +
    Entered Amount: @amount1
    + +
    + + +
    +
    Entered Amount: @amount2
    + +
    + + +
    +
    Entered Amount: @amount3
    + +
    + + +
    +
    Entered Amount: @amount4
    + +
    + + +
    +
    Entered Amount: @amount5
    + +
    + + +
    +
    Entered Amount: @amount6
    + +
    + + +
    +
    Entered Amount: @amount7
    + +
    + + +
    +
    Entered Amount: @amount8
    + +
    + + +
    +
    Entered Amount: @amount9
    +``` + +```cs {} showLineNumbers +@code { + private decimal amount1 = 12345678.55m; + private decimal amount2 = 12345678.55m; + private decimal amount3 = 12345678.55m; + private decimal amount4 = 12345678.55m; + private decimal amount5 = 12345678.55m; + private decimal amount6 = 12345678.55m; + private decimal amount7 = 12345678.55m; + private decimal amount8 = 12345678.55m; + private decimal amount9 = 12345678.55m; +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/currency-input#decimal-values) + +### Events: ValueChanged + +This event fires on every user keystroke that changes the `CurrencyInput` value. + +Blazor Bootstrap: Currency Input Component - ValueChanged + +```cshtml {4} showLineNumbers +
    + +
    + +
    +
    +
    + @displayPrice +
    +``` + +```cs {5-9} showLineNumbers +@code { + private decimal? price = 10M; + private string displayPrice; + + private void PriceChanged(decimal? value) + { + price = value; // this is mandatory + displayPrice = $"Price: {value}, changed at {DateTime.Now.ToLocalTime()}."; + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/currency-input#event-value-changed) diff --git a/docs/docs/04-forms/date-input.mdx b/docs/docs/04-forms/date-input.mdx new file mode 100644 index 000000000..ccb5610f4 --- /dev/null +++ b/docs/docs/04-forms/date-input.mdx @@ -0,0 +1,530 @@ +--- +title: Blazor Date Input Component +description: Blazor Bootstrap `DateInput` component is constructed using an HTML input of `type="date"` which limits user input based on pre-defined parameters. This component enables users to input a date using a text box with validation or a special date picker interface. +image: https://i.imgur.com/1mVjqQv.png + +sidebar_label: Date Input +sidebar_position: 3 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Date Input + +Blazor Bootstrap `DateInput` component is constructed using an HTML input of `type="date"` which limits user input based on pre-defined parameters. This component enables users to input a date using a text box with validation or a special date picker interface. + + + +Blazor Bootstrap: Date Input Component + +## Parameters + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| AutoComplete | bool | false | | Indicates whether the DateInput can complete the values automatically by the browser. | 1.5.0 | +| Disabled | bool | false | | Gets or sets the disabled. | 1.5.0 | +| EnableMinMax | bool | false | | Determines whether to restrict the user input to Min and Max range. If true, restricts the user input between the Min and Max range. Else accepts the user input. | 1.5.0 | +| Max| TValue | | | Gets or sets the max. Max ignored if EnableMinMax="false". | 1.5.0 | +| Min| TValue | | | Gets or sets the min. Min ignored if EnableMinMax="false". | 1.5.0 | +| Placeholder | string? | null | | Gets or sets the placeholder. | 1.5.0 | +| Value | TValue | | | Gets or sets the value. | 1.5.0 | +| ValueExpression | `Expression>` | | | Gets or sets the expression | 1.6.0 | + +## Methods + +| Name | Description | Added Version | +|:--|:--|:--| +| Disable | Disables date input. | 1.5.0 | +| Enable | Enables date input. | 1.5.0 | + +## Events + +| Name | Description | +|:--|:--| +| ValueChanged | This event fired on every user keystroke that changes the `DateInput` value. | + +## Examples + +### Basic usage + +:::caution NOTE +The input UI generally varies from browser to browser. In unsupported browsers, the control degrades gracefully to `type="text"`. +::: + +Blazor Bootstrap: Date Input Component - Basic usage + +```cshtml {} showLineNumbers +
    + +
    +
    Entered date: @date1
    +``` + +```cs showLineNumbers +@code { + private DateOnly date1 = DateOnly.FromDateTime(DateTime.Now.AddDays(1)); +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/date-input#basic-usage) + +### Generic type + +The Blazor Bootstrap DateInput component supports several data types: `DateOnly`, `DateOnly?`, `DateTime`, and `DateTime?`. This allows flexible component usage to accommodate various data types in Blazor applications. + +In the below example, TValue is set to `DateOnly`, `DateOnly?`, `DateTime`, and `DateTime?`. + +Blazor Bootstrap: Date Input Component - Generic type + +```cshtml {} showLineNumbers +
    + DateOnly: +
    +
    + +
    +
    Entered date: @date1
    + +
    + DateOnly?: +
    +
    + +
    +
    Entered date: @date2
    + +
    + DateTime: +
    +
    + +
    +
    Entered date: @date3
    + +
    + DateTime?: +
    +
    + +
    +
    Entered date: @date4
    +``` + +```cs {} showLineNumbers +@code { + private DateOnly date1 = DateOnly.FromDateTime(DateTime.Now.AddMonths(3)); + private DateOnly? date2; + private DateTime date3 = DateTime.Now.AddMonths(3); + private DateTime? date4; +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/date-input#generic-type) + +### Enable min and max + +Set `EnableMinMax="true"` and set the `Min` and `Max` parameters to restrict the user input between the Min and Max range. + +Blazor Bootstrap: Date Input Component - Enable min and max + +:::caution NOTE +If the user tries to enter a number in the DateInput field which is out of range, then it will override with Min or Max value based on the context. +If the user input is less than the Min value, then it will override with the Min value. +If the user input exceeds the Max value, it will override with the Max value. +::: + +```cshtml {} showLineNumbers +
    + DateOnly: +
    +
    + +
    +
    Min date: @min1
    +
    Max date: @max1
    +
    Entered date: @date1
    + +
    + DateOnly?: +
    +
    + +
    +
    Min date: @min2
    +
    Max date: @max2
    +
    Entered date: @date2
    + +
    + DateTime: +
    +
    + +
    +
    Min date: @min3
    +
    Max date: @max3
    +
    Entered date: @date3
    + +
    + DateTime?: +
    +
    + +
    +
    Min date: @min4
    +
    Max date: @max4
    +
    Entered date: @date4
    +``` + +```cs {} showLineNumbers +@code { + private DateTime date = DateTime.Now.AddMonths(3); + private DateTime min = DateTime.Now.AddMonths(-1); + private DateTime max = DateTime.Now.AddYears(1); + + private DateOnly date1, min1, max1; + private DateOnly? date2, min2, max2; + private DateTime date3, min3, max3; + private DateTime? date4, min4, max4; + + protected override void OnInitialized() + { + date1 = DateOnly.FromDateTime(date); + min1 = DateOnly.FromDateTime(min); + max1 = DateOnly.FromDateTime(max); + + date2 = null; + min2 = DateOnly.FromDateTime(min); + max2 = DateOnly.FromDateTime(max); + + date3 = DateTime.Now.AddMonths(3); + min3 = min; + max3 = max; + + date4 = null; + min4 = min; + max4 = max; + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/date-input#enable-max-min) + +### Disable + +Use the Disabled parameter to disable the DateInput. + +```cshtml {4,9-11} showLineNumbers +
    + +
    +
    Entered date: @date1
    + + + + +``` + +```cs {3,5,7,9} showLineNumbers +@code { + private DateOnly date1 = DateOnly.FromDateTime(DateTime.Now); + private bool disabled = true; + + private void Enable() => disabled = false; + + private void Disable() => disabled = true; + + private void Toggle() => disabled = !disabled; +} +``` + +Also, use **Enable()** and **Disable()** methods to enable and disable the DateInput. + +:::caution NOTE +Do not use both the **Disabled** parameter and **Enable()** & **Disable()** methods. +::: + +```cshtml {2,9-10} showLineNumbers +
    + +
    +
    Entered date: @date1
    + + + +``` + +```cs {2,6,8} showLineNumbers +@code { + private DateInput dateInput = default!; + + private DateOnly date1 = DateOnly.FromDateTime(DateTime.Now); + + private void Disable() => dateInput.Disable(); + + private void Enable() => dateInput.Enable(); +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/date-input#disable) + +### Validations + +Like any other blazor input component, `DateInput` component supports validations. Use the Use the **DataAnnotations** to validate the user input before submitting the form. In the below example, we used the `Required` attributes. + +Blazor Bootstrap: Date Input Component - Validations + +```cshtml {} showLineNumbers +@using System.ComponentModel.DataAnnotations + + + + + + +
    + +
    + + +
    +
    + +
    + +
    + + +
    +
    + +
    +
    + + +
    +
    +
    +``` + +```cs {} showLineNumbers +@code { + private Invoice invoice = new(); + private EditContext editContext; + + protected override void OnInitialized() + { + editContext = new EditContext(invoice); + base.OnInitialized(); + } + + public void HandleOnValidSubmit() + { + Console.WriteLine($"Invoice Date: {invoice.InvoiceDate}"); + Console.WriteLine($"Customer Name: {invoice.CustomerName}"); + } + + private void ResetForm() + { + invoice = new(); + editContext = new EditContext(invoice); + } + + public class Invoice + { + [Required(ErrorMessage = "Invoice Date required.")] + public DateOnly? InvoiceDate { get; set; } + + [Required(ErrorMessage = "Customer Name required.")] + public string CustomerName { get; set; } + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/date-input#validations) + +### Events: ValueChanged + +This event fires on every user keystroke/selection that changes the `DateInput` value. + +Blazor Bootstrap: Date Input Component - Events: ValueChanged + +```cshtml {} showLineNumbers +
    + +
    +
    Changed date: @date1
    +``` + +```cs {} showLineNumbers +@code { + private DateOnly date1 = DateOnly.FromDateTime(DateTime.Now); + + private void DateChanged(DateOnly dateOnly) + { + date1 = dateOnly; + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/date-input#event-value-changed) + +### Restrict the date field based on the entry in another date field + +One common scenario is that the date fields are restricted based on the entry in another date field. +In the example below, we restrict the course end time based on the selection of course start date. + +Blazor Bootstrap:- Date Input Component - Restrict the date field based on the entry in another date field + +```cshtml {} showLineNumbers +@using System.ComponentModel.DataAnnotations +``` + +```css {} showLineNumbers + +``` + +```cshtml {17-18,28-30} showLineNumbers + + + +
    + +
    + + +
    +
    + +
    + +
    + + +
    +
    + +
    + +
    + + +
    +
    + +
    +
    + + +
    +
    +
    +``` + +```cshtml {23-25,32-34} showLineNumbers +@code { + DateInput endDateInput = default!; + + private OnlineCourseForm onlineCourseForm = new(); + private EditContext editContext; + + private DateTime? courseMinDate; + private DateTime? courseMaxDate; + + [Inject] ToastService _toastService { get; set; } + + protected override void OnInitialized() + { + editContext = new EditContext(onlineCourseForm); + base.OnInitialized(); + } + + private void StartDateChanged(DateTime? startDate) + { + if (startDate is null || !startDate.HasValue) + { + onlineCourseForm.StartDate = null; + onlineCourseForm.EndDate = null; + courseMinDate = null; + courseMaxDate = null; + endDateInput.Disable(); + + return; + } + + onlineCourseForm.StartDate = startDate; + onlineCourseForm.EndDate = null; + courseMinDate = startDate.Value; + courseMaxDate = startDate.Value.AddDays(5); + endDateInput.Enable(); + } + + public void HandleValidSubmit() + { + var toastMessage = new ToastMessage + ( + type: ToastType.Success, + iconName: IconName.Check2All, + title: "Success!", + helpText: $"{DateTime.Now.ToLocalTime()}", + message: "Online course schedule created." + ); + _toastService.Notify(toastMessage); + } + + private void ResetForm() + { + onlineCourseForm = new(); + editContext = new EditContext(onlineCourseForm); + } + + public class OnlineCourseForm + { + [Required(ErrorMessage = "Course Name required.")] + public string CourseName { get; set; } + + [Required(ErrorMessage = "Start Date required.")] + public DateTime? StartDate { get; set; } + + [Required(ErrorMessage = "End Date required.")] + public DateTime? EndDate { get; set; } + } +} +``` diff --git a/docs/docs/04-forms/number-input.mdx b/docs/docs/04-forms/number-input.mdx new file mode 100644 index 000000000..95911ded7 --- /dev/null +++ b/docs/docs/04-forms/number-input.mdx @@ -0,0 +1,476 @@ +--- +title: Blazor Number Input Component +description: Blazor Bootstrap `NumberInput` component is built around HTML input of `type="number"` that prevents the user input based on the parameters set. +image: https://i.imgur.com/iUNBkki.png + +sidebar_label: Number Input +sidebar_position: 4 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Number Input + +Blazor Bootstrap `NumberInput` component is built around HTML input of `type="number"` that prevents the user input based on the parameters set. + + + +Blazor Bootstrap: Number Input Component + +## Parameters + +| Name | Type | Default | Required | Description | +|:--|:--|:--|:--|:--| +| AllowNegativeNumbers | bool | false | | Allows negative numbers. By default, negative numbers are not allowed. | +| AutoComplete | bool | false | | Indicates whether the NumberInput can complete the values automatically by the browser. | +| Disabled | bool | false | | Gets or sets the disabled. | +| EnableMinMax | bool | false | | Determines whether to restrict the user input to Min and Max range. If true, restricts the user input between the Min and Max range. Else accepts the user input. | +| Locale | string | `en-US` | ✔️ | Gets or sets the locale. | +| Max| TValue | | | Gets or sets the max. Max ignored if EnableMinMax="false". | +| Min| TValue | | | Gets or sets the min. Min ignored if EnableMinMax="false". | +| Placeholder | string? | null | | Gets or sets the placeholder. | +| Step | double? | null | | Gets or sets the step. | +| TextAlignment | `Alignment` | `Alignment.None` | | Gets or sets the text alignment. | +| Value | TValue | | | Gets or sets the value. | + +## Methods + +| Name | Description | +|:--|:--| +| Disable() | Disables number input. | +| Enable() | Enables number input. | + +## Events + +| Name | Description | +|:--|:--| +| ValueChanged | This event fired on every user keystroke that changes the `NumberInput` value. | + +## Examples + +### Basic usage + +By default, `e + -` are blocked. For all integral numeric types, dot `.` is blocked. + +Blazor Bootstrap: Number Input Component - Basic usage + +```cshtml {3} showLineNumbers +
    + + +
    +
    Entered Amount: @amount
    +``` + +```cs showLineNumbers +@code { + private int amount; +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/number-input#basic-usage) + +### Generic type + +`NumberInput` is a generic component. Always specify the exact type. In the below example TValue is set to `int`, `int?`, `float`, `float?`, `double`, `double?`, `decimal`, and `decimal?`. + +Blazor Bootstrap: Number Input Component - Generic type + +```cshtml {3,9,15,21,27,33,39,45} showLineNumbers +
    + + +
    Entered Number: @amount
    +
    + +
    + + +
    Entered Number: @amount2
    +
    + +
    + + +
    Entered Number: @amount3
    +
    + +
    + + +
    Entered Number: @amount4
    +
    + +
    + + +
    Entered Number: @amount5
    +
    + +
    + + +
    Entered Number: @amount6
    +
    + +
    + + +
    Entered Number: @amount7
    +
    + +
    + + +
    Entered Number: @amount8
    +
    +``` + +```cs {} showLineNumbers +@code { + private int amount; + private int? amount2; + private float amount3; + private float? amount4; + private double amount5; + private double? amount6; + private decimal amount7; + private decimal? amount8; +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/number-input#generic-type) + +### Enable min and max + +Set `EnableMinMax="true"` and set the `Min` and `Max` parameters to restrict the user input between the Min and Max range. + +Blazor Bootstrap: Number Input Component - Enable min and max + +:::caution NOTE +If the user tries to enter a number in the NumberInput field which is out of range, then it will override with Min or Max value based on the context. +If the user input is less than the Min value, then it will override with the Min value. +If the user input exceeds the Max value, it will override with the Max value. +::: + +```cshtml {3} showLineNumbers +
    + + + Tip: The amount must be between 10 and 500. +
    +
    Entered Amount: @amount
    +``` + +```cs {} showLineNumbers +@code { + private decimal? amount; +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/number-input#enable-min-and-max) + +### Step + +The `Step` sets the stepping interval when clicking the up and down spinner buttons. If not explicitly included, `Step` defaults to 1. + +Blazor Bootstrap: Number Input Component - Step + +```cshtml {3,10} showLineNumbers +
    + + + Info: Here Step parameter is set to 10. +
    +
    Entered Amount: @amount
    + +
    + + + Info: Here Step parameter is set to 2.5. +
    +
    Entered Amount: @amount2
    +``` + +```cs {} showLineNumbers +@code { + private int? amount; + private decimal? amount2; +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/number-input#step) + +### Text alignment + +You can change the text alignment according to your need. Use the `TextAlignment` parameter to set the alignment. In the below example, alignment is set to center and end. + +Blazor Bootstrap: Number Input Component - Text alignment + +```cshtml {3,9} showLineNumbers +
    + + +
    +
    Entered Amount: @amount
    + +
    + + +
    +
    Entered Amount: @amount2
    +``` + +```cs {} showLineNumbers +@code { + private int amount; + private decimal amount2 = 2.34M; +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/number-input#text-alignment) + +### Allow negative numbers + +By default, negative numbers are not allowed. Set the `AllowNegativeNumbers` parameter to true to allow the negative numbers. + +Blazor Bootstrap: Number Input Component - Allow negative numbers + +```cshtml {3} showLineNumbers +
    + + + Tip: Negative numbers are also allowed. +
    +
    Entered Amount: @amount
    +``` + +```cs {} showLineNumbers +@code { + private int amount; +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/number-input#allow-negative-numbers) + +### Disable + +Use the Disabled parameter to disable the NumberInput. + +```cshtml {5,9-11} showLineNumbers +
    + + +
    + + + + +``` + +```cs {3,5,7,9} showLineNumbers +@code { + private int? amount; + private bool disabled = true; + + private void Enable() => disabled = false; + + private void Disable() => disabled = true; + + private void Toggle() => disabled = !disabled; +} +``` + +Also, use **Enable()** and **Disable()** methods to enable and disable the NumberInput. + +:::caution NOTE +Do not use both the **Disabled** parameter and **Enable()** & **Disable()** methods. +::: + +```cshtml {3,9-10} showLineNumbers +
    + + +
    + + + +``` + +```cs {2,5,7} showLineNumbers +@code { + private NumberInput numberInput = default!; + private int? amount; + + private void Disable() => numberInput.Disable(); + + private void Enable() => numberInput.Enable(); +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/number-input#disable) + +### Validations + +Like any other blazor input component, `NumberInput` supports validations. Add the DataAnnotations on the `NumberInput` component to validate the user input before submitting the form. In the below example, we used Required and Range attributes. + +Blazor Bootstrap: Number Input Component - Validations + +```cshtml {17,18,23,24,31,32,39,40} showLineNumbers +@using System.ComponentModel.DataAnnotations + + + + + + +
    + +
    + + +
    +
    + +
    + +
    + + +
    +
    + +
    + +
    + + +
    +
    + +
    +
    + + +
    +
    +
    +``` + +```cs {2-3,7-8,36,46,49-61} showLineNumbers +@code { + private Invoice invoice = new(); + private EditContext editContext; + + protected override void OnInitialized() + { + editContext = new EditContext(invoice); + base.OnInitialized(); + } + + protected override void OnParametersSet() + { + CalculateToatl(); + base.OnParametersSet(); + } + + private void PriceChanged(decimal? value) + { + invoice.Price = value; + CalculateToatl(); + } + + private void DiscountChanged(decimal? value) + { + invoice.Discount = value; + CalculateToatl(); + } + + private void CalculateToatl() + { + var price = invoice.Price.HasValue ? invoice.Price.Value : 0; + var discount = invoice.Discount.HasValue ? invoice.Discount.Value : 0; + invoice.Total = price - discount; + } + + public void HandleOnValidSubmit() + { + Console.WriteLine($"Price: {invoice.Price}"); + Console.WriteLine($"Discount: {invoice.Discount}"); + Console.WriteLine($"Total: {invoice.Total}"); + } + + private void ResetForm() + { + invoice = new(); + editContext = new EditContext(invoice); + } + + public class Invoice + { + [Required(ErrorMessage = "Price required.")] + [Range(60, 500, ErrorMessage = "Price should be between 60 and 500.")] + public decimal? Price { get; set; } = 232M; + + [Range(0, 50, ErrorMessage = "Discount should be between 0 and 50.")] + public decimal? Discount { get; set; } + + [Required(ErrorMessage = "Amount required.")] + [Range(10, 500, ErrorMessage = "Total should be between 60 and 500.")] + public decimal? Total { get; set; } + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/number-input#validations) + +### Events: ValueChanged + +This event fires on every user keystroke that changes the `NumberInput` value. + +Blazor Bootstrap: Number Input Component - Events: ValueChanged + +```cshtml {4} showLineNumbers +
    + +
    + +
    +
    +
    + @displayPrice +
    +``` + +```cs {5-9} showLineNumbers +@code { + private decimal? price = 10M; + private string displayPrice; + + private void PriceChanged(decimal? value) + { + price = value; // this is mandatory + displayPrice = $"Price: {value}, changed at {DateTime.Now.ToLocalTime()}."; + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/number-input#event-value-changed) diff --git a/docs/docs/04-forms/range-input.mdx b/docs/docs/04-forms/range-input.mdx new file mode 100644 index 000000000..d3da93403 --- /dev/null +++ b/docs/docs/04-forms/range-input.mdx @@ -0,0 +1,275 @@ +--- +title: Blazor Range Input Component +description: Blazor Bootstrap `NumberInput` component is built around HTML input of `type="number"` that prevents the user input based on the parameters set. +image: https://i.imgur.com/rWDDHaf.png + +sidebar_label: Range Input +sidebar_position: 5 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Range Input + +Blazor Bootstrap `RangeInput` component is built around HTML input of `type="range"`. + + + +Blazor Bootstrap: Range Input Component + +## Parameters + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| Disabled | bool | false | | Disables or enables the range input. | 1.10.6 | +| Max| TValue | | | Gets or sets the maximum value of the range input. | 1.10.6 | +| Min| TValue | | | Gets or sets the minimum value of the range input. | 1.10.6 | +| Step | double | 1 | | Gets or sets the step value of the range input. | 1.10.6 | +| TickMarks | `IEnumerable` | `default` | | Gets or sets the tick marks. | 1.10.6 | +| Value | TValue | | | Gets or sets the value of the range input. | 1.10.6 | + +## Methods + +| Name | Description | Added Version | +|:--|:--|:--| +| Disable() | Disables range input. | 1.10.6 | +| Enable() | Enables range input. | 1.10.6 | + +## Events + +| Name | Description | Added Version | +|:--|:--|:--| +| ValueChanged | This event fires when the user specifies a numeric value. | 1.10.6 | + +## TickMark Properties + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| Label | `string?` | | | Gets or sets the label. | 1.10.6 | +| Value | `string?` | | | Gets or sets the value. | 1.10.6 | + +## Examples + +### Basic usage + +Blazor Bootstrap: Range Input Component - Basic usage + +```cshtml {1} showLineNumbers + +``` + +```cs {2} showLineNumbers +@code { + int amount1 = 10; +} +``` + +Blazor Bootstrap: Range Input Component - Multiple + +```cshtml {2,6,10,14} showLineNumbers +
    + + @amount1 +
    +
    + + @amount2 +
    +
    + + @amount3 +
    +
    + + @amount4 +
    +``` + +```cs {} showLineNumbers +@code { + int amount1 = 10; + int? amount2 = 20; + float amount3 = 30; + float? amount4 = 40; +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/range-input#basic-usage) + +### Disabled + +Use the `Disabled` parameter to disable the `RangeInput`. + +Blazor Bootstrap: Range Input Component - Disabled parameter + +```cshtml {5} showLineNumbers +
    + + +
    + + + + +``` + +```cs {5-7} showLineNumbers +@code { + private int? amount = 10; + private bool disabled = true; + + private void Enable() => disabled = false; + private void Disable() => disabled = true; + private void Toggle() => disabled = !disabled; +} +``` + +Also, use `Enable()` and `Disable()` methods to enable and disable the `RangeInput`. + +:::danger +Do not use both the `Disabled` parameter and `Enable()` & `Disable()` methods. +::: + +Blazor Bootstrap: Range Input Component - Disable method + +```cshtml {} showLineNumbers +
    + + +
    + + + +``` + +```cs {4,5} showLineNumbers +@code { + private RangeInput rangeInput = default!; + private int? amount = 10; + private void Disable() => rangeInput.Disable(); + private void Enable() => rangeInput.Enable(); +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/range-input#disabled) + +### Min and max + +Set the `Min` and `Max` parameters to restrict the user input between the `Min` and `Max` range. By default, the minimum is 0. + +:::caution +By default the maximum is 100 for `sbyte?`, `short?`, `int?`, `long?`, `float?`, `double?` and `decimal?` data types. For other data types it is 0. + +If the user tries to specify a numeric value which is out of range, then it will override with `Min` or `Max` value based on the context. If the user input is less than the minimum value, then it will override with the `Min` value. If the user input exceeds the maximum value, it will override with the `Max` value. +::: + +Blazor Bootstrap: Range Input Component - Min and max + +```cshtml {2} showLineNumbers +
    + + @amount1 +
    +``` + +```cs {} showLineNumbers +@code { + int amount1 = -3; +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/range-input#min-and-max) + +### Step + +The `Step` parameter is a number that specifies the granularity that the value must adhere to. Only values that match the specified stepping interval are valid. + +Blazor Bootstrap: Range Input Component - Step + +```cshtml {6,10,14} showLineNumbers +
    + + @amount1 +
    +
    + + @amount2 +
    +
    + + @amount3 +
    +
    + + @amount4 +
    +``` + +```cs {} showLineNumbers +@code { + int amount1 = 10; + int? amount2 = 20; + float amount3 = 30; + float? amount4 = 40; +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/range-input#step) + +### Decimal values + +Blazor Bootstrap: Range Input Component - Decimal values + +```cshtml {} showLineNumbers + +
    @amount1
    +``` + +```cs {} showLineNumbers +@code { + decimal amount1 = 0; +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/range-input#decimal-values) + +### Tick marks + +To add tick marks to a `RangeInput`, set the `TickMarks` parameter. + +Blazor Bootstrap: Range Input Component - Tick marks + +```cshtml {3} showLineNumbers +
    +
    + +
    +
    +@temperature1 +Fahrenheit +``` + +```cs {4-11} showLineNumbers +@code { + float temperature1 = 10; + + IEnumerable list = new List + { + new(){ Label = "very cold!", Value = "0"}, + new(){ Label = "cool", Value = "25"}, + new(){ Label = "medium", Value = "50"}, + new(){ Label = "getting warm!", Value = "75"}, + new(){ Label = "hot!", Value = "100"}, + }; +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/range-input#tick-marks) diff --git a/docs/docs/04-forms/switch.mdx b/docs/docs/04-forms/switch.mdx new file mode 100644 index 000000000..052b2f290 --- /dev/null +++ b/docs/docs/04-forms/switch.mdx @@ -0,0 +1,164 @@ +--- +title: Blazor Switch Component +description: Use the Blazor Bootstrap `Switch` component to show the consistent cross-browser and cross-device custom checkboxes. +image: https://i.imgur.com/ALKzreq.png + +sidebar_label: Switch +sidebar_position: 6 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Switch + +Use the Blazor Bootstrap `Switch` component to show the consistent cross-browser and cross-device custom checkboxes. + + + +Blazor Bootstrap: Switch Component + +## Parameters + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| Disabled | bool | false | | Gets or sets the disabled. | 1.3.0 | +| Label | string | null | | Gets or sets the label. | 1.3.0 | +| Reverse | bool | false | | Determines whether to put the switch on the opposite side. | 1.3.0 | +| Value | bool | false | ✔️ | Gets or sets the value. | 1.3.0 | + +## Methods + +| Name | Return Type |Description | Added Version | +|:--|:--|:--|:--| +| Disable() | void | Disables switch. | 1.3.0 | +| Enable() | void | Enables switch. | 1.3.0 | + +## Events + +| Name | Description | Added Version | +|:--|:--|:--| +| ValueChanged | This event fired when the switch selection changed. | 1.3.0 | + +## Examples + +### Basic usage + +Blazor Bootstrap: Switch Component - Basic usage + +```cshtml {} showLineNumbers + + + +
    Switch 1 Status: @agree1
    +
    Switch 2 Status: @agree2
    +``` + +```cs showLineNumbers +@code { + bool agree1; + bool agree2 = true; +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/switch#basic-usage) + +### Disable + +### Disable + +Use the Disabled parameter to disable the Switch. + +```cshtml {2,5-7} showLineNumbers +
    + +
    + + + + +``` + +```cs {3,5,7,9} showLineNumbers +@code { + private bool agree = true; + private bool disabled = true; + + private void Enable() => disabled = false; + + private void Disable() => disabled = true; + + private void Toggle() => disabled = !disabled; +} +``` + +Also, use **Enable()** and **Disable()** methods to enable and disable the Switch. + +:::caution NOTE +Do not use both the **Disabled** parameter and **Enable()** & **Disable()** methods. +::: + +```cshtml {2,5-6} showLineNumbers +
    + +
    + + + +``` + +```cs {2,5,7} showLineNumbers +@code { + private Switch switch1 = default!; + private bool agree = true; + + private void Disable() => switch1.Disable(); + + private void Enable() => switch1.Enable(); +} +``` + +[See demo here](https://demos.blazorbootstrap.com/autocomplete#disable) + +### Reverse + +Put your switches on the opposite side by using the `Reverse` parameter. + +Blazor Bootstrap: Switch Component - Reverse + +```cshtml {} showLineNumbers + +``` + +```cs {} showLineNumbers +@code { + bool agree; +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/switch#reverse) + +### Events: ValueChanged + +This event fired when the `Switch` selection changed. + +Blazor Bootstrap: Switch Component - Events: ValueChanged + +```cshtml {} showLineNumbers + +
    @displaySwitchStatus
    +``` + +```cs {} showLineNumbers +@code { + private bool agree; + private string displaySwitchStatus; + + private void SwitchChanged(bool value) + { + agree = value; // this is mandatory + displaySwitchStatus = $"Switch Status: {value}, changed at {DateTime.Now.ToLocalTime()}."; + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/switch#events-value-changed) \ No newline at end of file diff --git a/docs/docs/04-forms/time-input.mdx b/docs/docs/04-forms/time-input.mdx new file mode 100644 index 000000000..7da290a3c --- /dev/null +++ b/docs/docs/04-forms/time-input.mdx @@ -0,0 +1,498 @@ +--- +title: Blazor Time Input Component +description: The Blazor Bootstrap `TimeInput` component is constructed using an HTML input of `type="time"` which limits user input based on pre-defined parameters. This component enables users to input a time using a text box with validation or a special time picker interface. +image: https://i.imgur.com/TlvjRlP.png + +sidebar_label: Time Input +sidebar_position: 7 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Time Input + +The Blazor Bootstrap `TimeInput` component is constructed using an HTML input of `type="time"` which limits user input based on pre-defined parameters. This component enables users to input a time using a text box with validation or a special time picker interface. + + + +Blazor Bootstrap: Time Input Component + +## Parameters + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| AutoComplete | bool | false | | Indicates whether the TimeInput can complete the values automatically by the browser. | 1.6.0 | +| Disabled | bool | false | | Gets or sets the disabled. | 1.6.0 | +| EnableMinMax | bool | false | | Determines whether to restrict the user input to Min and Max range. If true, restricts the user input between the Min and Max range. Else accepts the user input. | 1.6.0 | +| Max| TValue | | | Gets or sets the max. Max ignored if EnableMinMax="false". | 1.6.0 | +| Min| TValue | | | Gets or sets the min. Min ignored if EnableMinMax="false". | 1.6.0 | +| Placeholder | string? | null | | Gets or sets the placeholder. | 1.6.0 | +| Value | TValue | | | Gets or sets the value. | 1.6.0 | +| ValueExpression | `Expression>` | | | Gets or sets the expression | 1.6.0 | + +## Methods + +| Name | Description | Added Version | +|:--|:--|:--| +| Disable | Disables time input. | 1.6.0 | +| Enable | Enables time input. | 1.6.0 | + +## Events + +| Name | Description | +|:--|:--| +| ValueChanged | This event fired on every user keystroke that changes the `TimeInput` value. | + +## Examples + +### Basic usage + +:::caution NOTE +The input UI generally varies from browser to browser. In unsupported browsers, the control degrades gracefully to `type="text"`. +::: + +Blazor Bootstrap: Time Input Component - Basic usage + +```cshtml {} showLineNumbers +
    + +
    +
    Entered date: @date1
    + +@code { + private TimeOnly date1 = new TimeOnly(13, 14); +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/time-input#basic-usage) + +### Generic type + +The Blazor Bootstrap TimeInput component supports `TimeOnly` and `TimeOnly?`. In the below example, `TValue` is set to `TimeOnly` and `TimeOnly?`. + +Blazor Bootstrap: Time Input Component - Generic type + +```cshtml {} showLineNumbers +
    + TimeOnly: +
    +
    + +
    +
    Entered time: @time1
    + +
    + TimeOnly?: +
    +
    + +
    +
    Entered time: @time2
    +``` + +```cs {} showLineNumbers +@code { + private TimeOnly time1 = new TimeOnly(6, 40); + private TimeOnly? time2; +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/time-input#generic-type) + +### Enable min and max + +Set `EnableMinMax="true"` and set the `Min` and `Max` parameters to restrict the user input between the Min and Max range. + +Blazor Bootstrap: Date Input Component - Enable min and max + +:::caution NOTE +If the user tries to enter a number in the TimeInput field which is out of range, then it will override with Min or Max value based on the context. +If the user input is less than the Min value, then it will override with the Min value. +If the user input exceeds the Max value, it will override with the Max value. +::: + +```cshtml {} showLineNumbers +
    + TimeOnly: +
    +
    + +
    +
    Min time: @min1
    +
    Max time: @max1
    +
    Entered time: @time1
    + +
    + TimeOnly?: +
    +
    + +
    +
    Min time: @min2
    +
    Max time: @max2
    +
    Entered time: @time2
    +``` + +```cs {} showLineNumbers +@code { + private TimeOnly time1, min1, max1; + private TimeOnly? time2, min2, max2; + + protected override void OnInitialized() + { + time1 = new TimeOnly(10, 0); // 10:00 AM + min1 = new TimeOnly(8, 0); // 08:00 AM + max1 = new TimeOnly(18, 0); // 06:00 PM + + time2 = null; + min2 = new TimeOnly(8, 0); // 08:00 AM + max2 = new TimeOnly(18, 0); // 06:00 PM + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/time-input#enable-max-min) + +### Disable + +Use the Disabled parameter to disable the TimeInput. + +```cshtml {2,6-8} showLineNumbers +
    + +
    +
    Entered time: @time1
    + + + + +``` + +```cs {3,5,7,9} showLineNumbers +@code { + private TimeOnly time1 = new TimeOnly(10, 50); // 10:50 AM + private bool disabled = true; + + private void Enable() => disabled = false; + + private void Disable() => disabled = true; + + private void Toggle() => disabled = !disabled; +} +``` + +Also, use **Enable()** and **Disable()** methods to enable and disable the TimeInput. + +:::caution NOTE +Do not use both the **Disabled** parameter and **Enable()** & **Disable()** methods. +::: + +```cshtml {2,6-7} showLineNumbers +
    + +
    +
    Entered time: @time1
    + + + +``` + +```cs {2,6,8} showLineNumbers +@code { + private TimeInput timeInput1 = default!; + + private TimeOnly time1 = new TimeOnly(10, 50); // 10:50 AM + + private void Disable() => timeInput1.Disable(); + + private void Enable() => timeInput1.Enable(); +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/time-input#disable) + +### Validations + +Like any other blazor input component, `TimeInput` component supports validations. +Use the Use the **DataAnnotations** to validate the user input before submitting the form. In the below example, we used the `Required` attributes. + +Blazor Bootstrap: Time Input Component - Validations + +```cshtml {} showLineNumbers +@using System.ComponentModel.DataAnnotations + + + + + + +
    + +
    + + +
    +
    + +
    + +
    + + +
    +
    + +
    + +
    + + +
    +
    + +
    + +
    + + +
    +
    + +
    + +
    + + +
    +
    + +
    +
    + + +
    +
    +
    +``` + +```cs {} showLineNumbers +@code { + private FlightForm flightForm = new(); + private EditContext editContext; + + [Inject] ToastService _toastService { get; set; } + + protected override void OnInitialized() + { + editContext = new EditContext(flightForm); + base.OnInitialized(); + } + + public void HandleValidSubmit() + { + var toastMessage = new ToastMessage + ( + type: ToastType.Success, + iconName: IconName.Check2All, + title: "Success!", + helpText: $"{DateTime.Now.ToLocalTime()}", + message: "Flight schedule created." + ); + _toastService.Notify(toastMessage); + } + + private void ResetForm() + { + flightForm = new(); + editContext = new EditContext(flightForm); + } + + public class FlightForm + { + [Required(ErrorMessage = "Flight Number required.")] + public string FlightNumber { get; set; } + + [Required(ErrorMessage = "Departure Date required.")] + public DateOnly? DepartureDate { get; set; } + + [Required(ErrorMessage = "Departure Time required.")] + public TimeOnly? DepartureTime { get; set; } + + [Required(ErrorMessage = "Arrival Date required.")] + public DateOnly? ArrivalDate { get; set; } + + [Required(ErrorMessage = "Arrival Time required.")] + public TimeOnly? ArrivalTime { get; set; } + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/time-input#validations) + +### Events: ValueChanged + +This event fires on every user keystroke/selection that changes the `TimeInput` value. + +Blazor Bootstrap: Time Input Component - Events: ValueChanged + +```cshtml {} showLineNumbers +
    + +
    +
    Changed time: @time1
    + +@code { + private TimeOnly time1 = new TimeOnly(10, 0); // 10:00 AM + + private void TimeChanged(TimeOnly timeOnly) + { + time1 = timeOnly; + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/form/time-input#event-value-changed) + +### Restrict the date field based on the entry in another date field + +One common scenario is that the time fields are restricted based on the entry in another time field. +In the example below, we restrict the arrival time based on the selection of departure. + +Blazor Bootstrap:- Time Input Component - Restrict the date field based on the entry in another date field + +```cshtml {} showLineNumbers +@using System.ComponentModel.DataAnnotations +``` + +```css {} showLineNumbers + +``` + +```cshtml {} showLineNumbers + + + +
    + +
    + + +
    +
    + +
    + +
    + + +
    +
    + +
    +
    + + +
    +
    +
    +``` + +```cshtml {} showLineNumbers +@code { + TimeInput arrivalTimeInput = default!; + + private FlightForm flightForm = new(); + private EditContext editContext; + + private TimeOnly? arrivalMinTime; + private TimeOnly? arrivalMaxTime; + + [Inject] ToastService _toastService { get; set; } + + protected override void OnInitialized() + { + editContext = new EditContext(flightForm); + base.OnInitialized(); + } + + private void DepartureTimeChanged(TimeOnly? departureTime) + { + if (departureTime is null || !departureTime.HasValue) + { + flightForm.DepartureTime = null; + flightForm.ArrivalTime = null; + arrivalMinTime = null; + arrivalMaxTime = null; + arrivalTimeInput.Disable(); + + return; + } + + flightForm.DepartureTime = departureTime; + flightForm.ArrivalTime = null; + arrivalMinTime = departureTime.Value.AddHours(1); + arrivalMaxTime = departureTime.Value.AddHours(12); + arrivalTimeInput.Enable(); + } + + public void HandleValidSubmit() + { + var toastMessage = new ToastMessage + ( + type: ToastType.Success, + iconName: IconName.Check2All, + title: "Success!", + helpText: $"{DateTime.Now.ToLocalTime()}", + message: "Flight schedule created." + ); + _toastService.Notify(toastMessage); + } + + private void ResetForm() + { + flightForm = new(); + editContext = new EditContext(flightForm); + } + + public class FlightForm + { + [Required(ErrorMessage = "Departure Time required.")] + public TimeOnly? DepartureTime { get; set; } + + [Required(ErrorMessage = "Arrival Time required.")] + public TimeOnly? ArrivalTime { get; set; } + } +} +``` diff --git a/docs/docs/05-components/_category_.json b/docs/docs/05-components/_category_.json new file mode 100644 index 000000000..d6b06f524 --- /dev/null +++ b/docs/docs/05-components/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Components", + "position": 5 +} diff --git a/docs/docs/05-components/accordion.mdx b/docs/docs/05-components/accordion.mdx new file mode 100644 index 000000000..ed1540ad6 --- /dev/null +++ b/docs/docs/05-components/accordion.mdx @@ -0,0 +1,398 @@ +--- +title: Blazor Accordion Component +description: Build vertically collapsing accordions in combination with our Collapse component. +image: https://i.imgur.com/g4zpMXp.png + +sidebar_label: Accordion +sidebar_position: 1 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Accordion + +Build vertically collapsing accordions in combination with our Collapse component. + + + +Blazor Bootstrap: Accordion Component + +## Accordion Parameters + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| ChildContent | RenderFragment | null | ✔️ | Gets or sets the content to be rendered within the component. | 1.7.0 | +| Flush | bool | false | | Removes borders and rounded corners to render accordions edge-to-edge with their parent container. | 1.7.0 | +| AlwaysOpen | bool | false | | It makes accordion items stay open when another item is opened. | 1.7.0 | + +## Accordion Methods + +| Name | Description | Added Version | +|:--|:--|:--| +| HideAccordionItemByIndexAsync(int index) | Hides the `AccordionItem` by index. | 1.10.5 | +| HideAccordionItemByNameAsync(string accordionItemName) | Hides the `AccordionItem` by name. | 1.10.5 | +| HideAllAccordionItemsAsync() | Hides all `AccordionItem` instances. | 1.10.5 | +| HideFirstAccordionItemAsync() | Hides the first `AccordionItem`. | 1.10.5 | +| HideLastAccordionItemAsync() | Hides the last `AccordionItem`. | 1.10.5 | +| ShowAccordionItemByIndexAsync(int index) | Shows the `AccordionItem` by index. | 1.7.0 | +| ShowAccordionItemByNameAsync(string accordionItemName) | Shows the `AccordionItem` by name. | 1.7.0 | +| ShowAllAccordionItemsAsync() | Shows all `AccordionItem` instances if `AlwaysOpen` is true. | 1.10.5 | +| ShowFirstAccordionItemAsync() | Shows the first `AccordionItem`. | 1.7.0 | +| ShowLastAccordionItemAsync() | Shows the last `AccordionItem`. | 1.7.0 | + +## Accordion Events + +| Name | Description | Added Version | +|:--|:--|:--| +| OnShowing | This event fires immediately when the show method is called. | 1.7.0 | +| OnShown | This event is fired when a accordion item has been made visible to the user (will wait for CSS transitions to complete). | 1.7.0 | +| OnHiding | This event is fired immediately when the hide method has been called. | 1.7.0 | +| OnHidden | This event is fired when a accordion item has been hidden from the user (will wait for CSS transitions to complete). | 1.7.0 | + +## AccordionItem Parameters + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| Content | RenderFragment | null | ✔️ | Specifies the content to be rendered inside the `AccordionItem`. | 1.7.0 | +| IsActive | bool | false | | Gets or sets the active `AccordionItem`. | 1.7.0 | +| Name | string | null | | Gets or sets the name. | 1.7.0 | +| Title | string | null | | Gets or sets the `AccordionItem` title. | 1.7.0 | +| TitleTemplate | RenderFragment | null | | Gets or sets the `AccordionItem` title template. | 1.7.0 | + +## Examples + +### Accordion + +Click the accordions below to expand/collapse the accordion content. + +Blazor Bootstrap: Accordion Component - Examples + +```cshtml {} showLineNumbers + + + + This is the first item's accordion body. It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the second item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the third item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + +``` +[See demo here.](https://demos.blazorbootstrap.com/accordion#examples) + +### Title with Icon + +To customize the accordion title, use `TitleTemplate`, as shown in the below example. + +Blazor Bootstrap: Accordion Component - Title with Icon + +```cshtml {} showLineNumbers + + + + Accordion Item #1 + + + This is the first item's accordion body. It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + Accordion Item #2 + + + This is the second item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + Accordion Item #3 + + + This is the third item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + +``` +[See demo here.](https://demos.blazorbootstrap.com/accordion#title-with-icon) + +### Flush + +Set the `Flush` parameter to `true` to remove borders and rounded corners to render accordions edge-to-edge with their parent container. + +Blazor Bootstrap: Accordion Component - Flush + +```cshtml {} showLineNumbers + + + + This is the first item's accordion body. It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the second item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the third item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + +``` +[See demo here.](https://demos.blazorbootstrap.com/accordion#flush) + +### Set default active accordion item + +Set the `IsActive` parameter to `true` to keep the accordion item open by default. + +Blazor Bootstrap: Accordion Component - Set default active accordion item + +```cshtml {} showLineNumbers + + + + This is the first item's accordion body. It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the second item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the third item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + +``` +[See demo here.](https://demos.blazorbootstrap.com/accordion#set-default-active-accordion-item) + +### Always open + +Set the `AlwaysOpen` parameter to `true` to keep accordion items open when another item is opened. + +Blazor Bootstrap: Accordion Component - Always open + +```cshtml {} showLineNumbers + + + + This is the first item's accordion body. It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the second item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the third item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + +``` +[See demo here.](https://demos.blazorbootstrap.com/accordion#always-open) + +### Show / hide individual accordion items + +You can show and hide individual accordion items in several ways. +- To show an accordion item, use predefined methods `ShowFirstAccordionItemAsync`, `ShowLastAccordionItemAsync`, `ShowAccordionItemByNameAsync`, and `ShowAccordionItemByIndexAsync`. +- To hide an accordion item, use predefined methods `HideFirstAccordionItemAsync`, `HideLastAccordionItemAsync`, `HideAccordionItemByNameAsync`, and `HideAccordionItemByIndexAsync`. + +Blazor Bootstrap: Accordion Component - Show / hide individual accordion items + +```cshtml {} showLineNumbers + + + + This is the first item's accordion body. It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the second item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the third item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the fourth item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the fifth item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the sixth item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + +

    Show

    + + + + + + + + +

    Hide

    + + + + + + + +``` + +```cshtml {} showLineNumbers +@code { + private Accordion accordion1 = default!; + + private async Task ShowFirstAccordionItemAsync() => await accordion1.ShowFirstAccordionItemAsync(); + private async Task ShowSecondAccordionItemAsync() => await accordion1.ShowAccordionItemByIndexAsync(1); + private async Task ShowThirdAccordionItemAsync() => await accordion1.ShowAccordionItemByIndexAsync(2); + private async Task ShowProductsAccordionItemAsync() => await accordion1.ShowAccordionItemByNameAsync("Products"); + private async Task ShowFaqsAccordionItemAsync() => await accordion1.ShowAccordionItemByNameAsync("FAQ"); + private async Task ShowLastAccordionItemAsync() => await accordion1.ShowLastAccordionItemAsync(); + + private async Task HideFirstAccordionItemAsync() => await accordion1.HideFirstAccordionItemAsync(); + private async Task HideSecondAccordionItemAsync() => await accordion1.HideAccordionItemByIndexAsync(1); + private async Task HideThirdAccordionItemAsync() => await accordion1.HideAccordionItemByIndexAsync(2); + private async Task HideProductsAccordionItemAsync() => await accordion1.HideAccordionItemByNameAsync("Products"); + private async Task HideFaqsAccordionItemAsync() => await accordion1.HideAccordionItemByNameAsync("FAQ"); + private async Task HideLastAccordionItemAsync() => await accordion1.HideLastAccordionItemAsync(); +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/accordion#show-hide-individual-accordion-items) + +### Show / hide all accordion items + +When the `AlwaysOpen` parameter is set to `true`, you can show all accordion items simultaneously using the `ShowAllAccordionItemsAsync` method. +The `HideAllAccordionItemsAsync` method will hide all accordion items, regardless of the value of `AlwaysOpen`. + +Blazor Bootstrap: Accordion Component - Show / hide all accordion items + +```cshtml {} showLineNumbers + + + + This is the first item's accordion body. It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the second item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the third item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + + +``` + +```cshtml {} showLineNumbers +@code { + private Accordion accordion1 = default!; + + private Task ShowAllAccordionItemsAsync() => accordion1.ShowAllAccordionItemsAsync(); + private Task HideAllAccordionItemsAsync() => accordion1.HideAllAccordionItemsAsync(); +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/accordion#show-hide-individual-accordion-items) + +### Events Example + +Blazor Bootstrap Accordion component exposes a few events for hooking into accordion functionality. + +Blazor Bootstrap: Accordion Component - Events Example + +```cshtml {} showLineNumbers + + + + This is the first item's accordion body. It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the second item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + + + This is the third item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. + + + +``` + +```cshtml {} showLineNumbers +@code { + private Accordion accordion1 = default!; + + [Inject] ToastService ToastService { get; set; } = default!; + + private void OnShowingAsync(AccordionEventArgs args) + { + ToastService.Notify(new ToastMessage( + type: ToastType.Primary, + message: $"Event Name: Showing, AccordionItemName: {args.Name}, AccordionItemTitle: {args.Title}")); + } + + private void OnShownAsync(AccordionEventArgs args) + { + ToastService.Notify(new ToastMessage( + type: ToastType.Primary, + message: $"Event Name: OnShown, AccordionItemName: {args.Name}, AccordionItemTitle: {args.Title}")); + } + + private void OnHidingAsync(AccordionEventArgs args) + { + ToastService.Notify(new ToastMessage( + type: ToastType.Primary, + message: $"Event Name: OnHiding, AccordionItemName: {args.Name}, AccordionItemTitle: {args.Title}")); + } + + private void OnHiddenAsync(AccordionEventArgs args) + { + ToastService.Notify(new ToastMessage( + type: ToastType.Primary, + message: $"Event Name: OnHidden, AccordionItemName: {args.Name}, AccordionItemTitle: {args.Title}")); + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/accordion#events) \ No newline at end of file diff --git a/docs/docs/05-components/alerts.mdx b/docs/docs/05-components/alerts.mdx new file mode 100644 index 000000000..e0f0bf927 --- /dev/null +++ b/docs/docs/05-components/alerts.mdx @@ -0,0 +1,131 @@ +--- +title: Blazor Alert Component +description: Provide contextual feedback messages for typical user actions with the handful of available and flexible Blazor Bootstrap alert messages. +image: https://i.imgur.com/wjCs7bZ.jpg + +sidebar_label: Alerts +sidebar_position: 2 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Alerts + +Provide contextual feedback messages for typical user actions with the handful of available and flexible Blazor Bootstrap alert messages. + + + +## Parameters + +| Name | Type | Description | Required | Default | +|--|--|--|--|--| +| ChildContent | RenderFragment | Gets or sets the content to be rendered within the component. | | | +| Color | `AlertColor` | Gets or sets the alert color. | | `AlertColor.None` | +| Dismissable | bool | Enables the alert to be closed by placing the padding for close button. | | false | + +## Methods + +| Name | Description | +|--|--| +| CloseAsync | Closes an alert by removing it from the DOM. | + +## Callback Events + +| Name | Description | +|--|--| +| OnClose | Fires immediately when the `close` instance method is called. | +| OnClosed | Fired when the alert has been closed and CSS transitions have completed. | + +## Examples + +### Alerts + +Alerts are available for any length of text, as well as an optional close button. For proper styling, use one of the eight colors. + +Blazor Bootstrap: Alert Component + +```cshtml showLineNumbers +
    + A simple primary alert - check it out! + A simple secondary alert - check it out! + A simple success alert - check it out! + A simple danger alert - check it out! + A simple warning alert - check it out! + A simple info alert - check it out! + A simple light alert - check it out! + A simple dark alert - check it out! +
    +``` +[See alerts demo here.](https://demos.blazorbootstrap.com/alerts#examples) + +### Additional Content + +Alerts can also contain additional HTML elements like headings, paragraphs and dividers. + +Blazor Bootstrap: Alert Component - Alerts with additional content + +```cshtml showLineNumbers +
    + +

    Well done!

    +

    Aww yeah, you successfully read this important alert message. This example text is going to run a bit longer so that you can see how spacing within an alert works with this kind of content.

    +
    +

    Whenever you need to, be sure to use margin utilities to keep things nice and tidy.

    +
    +
    +``` +[See alerts with additional content demo.](https://demos.blazorbootstrap.com/alerts#additional-content) + +### Icons + +Similarly, you can use Bootstrap Icons to create alerts with icons. + +Blazor Bootstrap: Alert Component - Alerts with an icon + +```cshtml showLineNumbers +
    + An example alert with an icon + A simple success alert with an icon + A simple danger alert with an icon + A simple warning alert with an icon +
    +``` +[See alerts with an icon demo.](https://demos.blazorbootstrap.com/alerts#icons) + +### Dismissing + +1. Using the `Dismissable="true"`, it's possible to dismiss any alert inline. + +It's possible to dismiss any alert inline. Here's how: + +Blazor Bootstrap: Alert Component - Dismissing + +```cshtml showLineNumbers +
    + Holy guacamole! You should check in on some of those fields below. +
    +``` +2. Manually we can close an alert with button click. + +Blazor Bootstrap: Alert Component - Dismissing manually + +```cshtml showLineNumbers +
    + + Holy guacamole! You should check in on some of those fields below. + +
    +``` + +```cs {4} showLineNumbers +@code { + Alert warningAlert; + + private async Task CloseAlert() => await warningAlert?.CloseAsync(); +} +``` +[See dismissable alerts demo.](https://demos.blazorbootstrap.com/alerts#dismissing) + +:::caution NOTE +When an alert is dismissed, the element is completely removed from the page structure. If a keyboard user dismisses the alert using the close button, their focus will suddenly be lost and, depending on the browser, reset to the start of the page/document. For this reason, we recommend subscribing to the `OnClosed` callback event and programmatically sets focus to the most appropriate location on the page. +::: diff --git a/docs/docs/05-components/badge.mdx b/docs/docs/05-components/badge.mdx new file mode 100644 index 000000000..e096c6fcb --- /dev/null +++ b/docs/docs/05-components/badge.mdx @@ -0,0 +1,230 @@ +--- +title: Blazor Badge Component +description: The Blazor Bootstrap Badge component shows the small count and labels. +image: https://i.imgur.com/ux0sTs9.png + +sidebar_label: Badge +sidebar_position: 3 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Badge + +The Blazor Bootstrap `Badge` component shows the small count and labels. + + + +Blazor Bootstrap: Badge Component + +## Parameters + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| ChildContent | RenderFragment | | | Gets or sets the content to be rendered within the component. | 1.7.0 | +| Color | `BadgeColor` | `BadgeColor.Secondary` | ✔️ | Gets or sets the badge color. | 1.7.0 | +| IndicatorType | `BadgeIndicatorType` | `BadgeIndicatorType.None` | | Gets or sets the badge indicator. | 1.7.0 | +| Placement | `BadgePlacement` | `BadgePlacement.None` | | Gets or sets the badge placement. | 1.7.0 | +| Position | `Position` | | | Gets or sets the badge position. | 1.7.0 | +| VisuallyHiddenText | string | | | Gets or sets the visually hidden text. | 1.7.0 | + +## Examples + +### Basic usage + +Badges scale to match the size of the immediate parent element by using relative font sizing and em units. +As of now, badges no longer have focus or hover styles for links. + +Blazor Bootstrap: Badge Component - Basic usage + +```cshtml {} showLineNumbers +

    Example heading New

    +

    Example heading New

    +

    Example heading New

    +

    Example heading New

    +
    Example heading New
    +
    Example heading New
    +``` + +[See demo here](https://demos.blazorbootstrap.com/badge#examples) + +### Background colors + +Blazor Bootstrap: Badge Component - Background colors + +```cshtml {} showLineNumbers +Primary +Secondary +Success +Danger +Warning +Info +Light +Dark +``` + +:::info Conveying meaning to assistive technologies +Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g., the visible text) or is included through alternative means, such as additional text hidden with the `VisuallyHiddenText` parameter. +::: + +[See demo here](https://demos.blazorbootstrap.com/badge#background-colors) + +### Pill badges + +Use the `IndicatorType` parameter to make badges more rounded with a larger `border-radius`. + +Blazor Bootstrap: Badge Component - Pill badges + +```cshtml {} showLineNumbers +Primary +Secondary +Success +Danger +Warning +Info +Light +Dark +``` + +[See demo here](https://demos.blazorbootstrap.com/badge#pill-badges) + +### Buttons + +Badges can be used as part of links or buttons to provide a counter. + +Blazor Bootstrap: Badge Component - Buttons + +```cshtml {} showLineNumbers +
    + + +
    +
    + + +
    +``` + +[See demo here](https://demos.blazorbootstrap.com/badge#buttons) + +### Positioned + +Use `Position` and `Placement` parameters to position it in the corner of a link or button. + +Blazor Bootstrap: Badge Component - Positioned + +```cshtml {} showLineNumbers +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +``` + +[See demo here](https://demos.blazorbootstrap.com/badge#positioned) + +### Generic indicator + +You can also replace the badge with a generic indicator without the count. + +Blazor Bootstrap: Badge Component - Generic indicator + +```cshtml {} showLineNumbers + +``` + +[See demo here](https://demos.blazorbootstrap.com/badge#generic-indicator) diff --git a/docs/docs/05-components/breadcrumb.mdx b/docs/docs/05-components/breadcrumb.mdx new file mode 100644 index 000000000..35c69e5e1 --- /dev/null +++ b/docs/docs/05-components/breadcrumb.mdx @@ -0,0 +1,117 @@ +--- +title: Blazor Breadcrumb Component +description: Blazor Bootstrap breadcrumb component indicates the current page's location within a navigational hierarchy that automatically adds separators. +image: https://i.imgur.com/hO90HoC.jpg + +sidebar_label: Breadcrumb +sidebar_position: 4 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Breadcrumb + +Blazor Bootstrap breadcrumb component indicates the current page's location within a navigational hierarchy that automatically adds separators. + + + +## Parameters + +| Name | Type | Description | Required | Default | +|--|--|--|--|--| +| Items | `List` | List of all the items. | ✔️ | | + +## Examples + +### Breadcrumb + +Blazor Bootstrap: Breadcrumb Component + +```cshtml showLineNumbers +
    + + +
    +``` + +```cs showLineNumbers +@code { + private List NavItems1 { get; set; } + private List NavItems2 { get; set; } + + protected override void OnInitialized() + { + NavItems1 = new List + { + new BreadcrumbItem{ Text = "Home", Href ="/" }, + new BreadcrumbItem{ Text = "Breadcrumb", IsCurrentPage = true } + }; + + NavItems2 = new List + { + new BreadcrumbItem{ Text = "Home", Href ="/" }, + new BreadcrumbItem{ Text = "Docs", Href ="/docs" }, + new BreadcrumbItem{ Text = "Breadcrumb", IsCurrentPage = true } + }; + } +} +``` +[See breadcrumb demo here.](https://demos.blazorbootstrap.com/breadcrumb#examples) + +### Dividers + +Dividers are automatically added in CSS through `::before` and `content`. They can be changed by modifying a local CSS custom property `--bs-breadcrumb-divider.` + +Blazor Bootstrap: Breadcrumb Component - Dividers + +```cshtml showLineNumbers +
    + +
    +``` + +```cs showLineNumbers +@code { + private List NavItems2 { get; set; } + + protected override void OnInitialized() + { + NavItems2 = new List + { + new BreadcrumbItem{ Text = "Home", Href ="/" }, + new BreadcrumbItem{ Text = "Docs", Href ="/docs" }, + new BreadcrumbItem{ Text = "Breadcrumb", IsCurrentPage = true } + }; + } +} +``` +[See breadcrumb with dividers demo here.](https://demos.blazorbootstrap.com/breadcrumb#dividers) + +### Embedded SVG icon + +It's also possible to use an embedded SVG icon. Apply it via our CSS custom property + +Blazor Bootstrap: Breadcrumb Component - Embedded SVG icon + +```cshtml showLineNumbers +
    + +
    +``` + +```cs showLineNumbers +@code { + private List NavItems2 { get; set; } + + protected override void OnInitialized() + { + NavItems2 = new List + { + new BreadcrumbItem{ Text = "Home", Href ="/" }, + new BreadcrumbItem{ Text = "Docs", Href ="/docs" }, + new BreadcrumbItem{ Text = "Breadcrumb", IsCurrentPage = true } + }; + } +} +``` +[See breadcrumb with embedded svg icon demo here.](https://demos.blazorbootstrap.com/breadcrumb#embedded-svg-icon) \ No newline at end of file diff --git a/docs/docs/05-components/buttons.mdx b/docs/docs/05-components/buttons.mdx new file mode 100644 index 000000000..467b5ebe6 --- /dev/null +++ b/docs/docs/05-components/buttons.mdx @@ -0,0 +1,388 @@ +--- +title: Blazor Button Component +description: Use Blazor Bootstrap button styles for actions in forms, dialogs, and more with support for multiple sizes, states, etc. +image: https://i.imgur.com/Ne7FJ5H.jpg + +sidebar_label: Buttons +sidebar_position: 5 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Buttons + +Use Blazor Bootstrap button styles for actions in forms, dialogs, and more with support for multiple sizes, states, etc. + + + +## Parameters + +| Name | Type | Description | Required | Default | Added Version | +|:--|:--|:--|:--|:--|:--| +| Active | bool | When set to `true`, places the component in the active state with active styling. | | false | 1.0.0 | +| Block | bool | Makes the button to span the full width of a parent. | | false | 1.0.0 | +| ChildContent | RenderFragment | Gets or sets the content to be rendered within the component. | | | 1.0.0 | +| Color | `ButtonColor` | Gets or sets the button color. | ✔️ | | 1.0.0 | +| Disabled | bool | When set to `true`, disables the component's functionality and places it in a disabled state. | | false | 1.0.0 | +| Loading | bool | Shows the loading spinner or a `LoadingTemplate`. | | false | 1.0.0 | +| LoadingTemplate | RenderFragment | Gets or sets the component loading template. | | | 1.0.0 | +| LoadingText | string | Gets or sets the loadgin text. | | `Loading...` | 1.0.0 | +| Outline | bool | Makes the button to have the outlines. | | false | 1.0.0 | +| Position | `Position` | Gets or sets the position. | | | 1.7.0 | +| Size | `Size` | Changes the size of a button. | | | 1.0.0 | +| TabIndex | int? | If defined, indicates that its element can be focused and can participates in sequential keyboard navigation. | | | 1.0.0 | +| Target | `Target` | The target attribute specifies where to open the linked document for a `ButtonType.Link`. | | `Target.None` | 1.0.0 | +| To | string | Denotes the target route of the `ButtonType.Link` button. | | | 1.0.0 | +| TooltipPlacement | `TooltipPlacement` | Tooltip placement | | `TooltipPlacement.Top` | 1.0.0 | +| TooltipTitle | string | Displays informative text when users hover, focus, or tap an element. | | | 1.0.0 | +| TooltipColor | `TooltipColor` | Gets or sets the tooltip color. | | `TooltipColor.None` | 1.10.0 | +| Type | `ButtonType` | Defines the button type. | | `ButtonType.Button` | 1.0.0 | + +## Methods + +| Name | Description | +|--|--| +| ShowLoading | Shows the loading state and disables the button. | +| HideLoading | Hides the loading state and enables the button. | + +## Examples + +### Buttons + +Blazor Bootstrap includes several predefined button styles, each serving its own semantic purpose, with a few extras thrown in for more control. + +Blazor Bootstrap: Button Component + +```cshtml showLineNumbers +

    + + + + + + + + + +

    +``` + +[See buttons demo here.](https://demos.blazorbootstrap.com/buttons#examples) + +### Button tags + +Blazor Bootstrap: Button Component - Button tags + +```cshtml showLineNumbers +

    + + +

    +``` + +[See button tags demo here.](https://demos.blazorbootstrap.com/buttons#button-tags) + +### Outline Buttons + +Blazor Bootstrap: Button Component - Outline Buttons + +```cshtml showLineNumbers +

    + + + + + + + +

    +``` + +[See outline button demo here.](https://demos.blazorbootstrap.com/buttons#outline-buttons) + +:::info +Some of the button styles use a relatively light foreground color, and should only be used on a dark background in order to have sufficient contrast. +::: + +### Sizes + +Fancy larger or smaller buttons? Add `Size="Size.Large"` or `Size="Size.Small"` for additional sizes. + +Blazor Bootstrap: Button Component - Sizes + +```cshtml showLineNumbers +

    + + +

    +

    + + +

    +``` + +[See buttons with different size demo here.](https://demos.blazorbootstrap.com/buttons#sizes) + +### Disabled State + +Make buttons look inactive by adding the `Disabled="true"` boolean parameter to any ` + +

    +

    + + +

    +``` + +[See button disabled state demo here.](https://demos.blazorbootstrap.com/buttons#disabled-state) + +### Disable and enable state dynamically + +Blazor Bootstrap: Button Component - Disable and enable state dynamically + +```cshtml {} showLineNumbers + + + + + + +``` + +```cshtml {} LineNumbers +@code +{ + bool disableButton = true; + string tooltip = ""; + + public void SwapDisable() + { + disableButton = !disableButton; + tooltip = $"Updated at {DateTime.Now}"; + } +} +``` + +[See disable and enable state dynamically demo here.](https://demos.blazorbootstrap.com/buttons#disable-and-enable-state-dynamically) + +### Block Buttons + +Create responsive stacks of full-width, "block buttons" like those in Bootstrap 4 with a mix of our display and gap utilities. By using utilities instead of button specific classes, we have much greater control over spacing, alignment, and responsive behaviors. + +Blazor Bootstrap: Button Component - Block Buttons + +```cshtml showLineNumbers +
    + + +
    +``` + +Blazor Bootstrap: Button Component - Block Buttons + +```cshtml showLineNumbers +
    + + +
    +``` + +Blazor Bootstrap: Button Component - Block Buttons + +```cshtml showLineNumbers +
    + + +
    +``` + +Blazor Bootstrap: Button Component - Block Buttons + +```cshtml showLineNumbers +
    + + +
    +``` + +[See block buttons demo here.](https://demos.blazorbootstrap.com/buttons#block-buttons) + +### Toggle States + +If you''re pre-toggling a button, you must manually add the `Active="true"` parameter. + +Blazor Bootstrap: Button Component - Button Toggle States + +```cshtml showLineNumbers +

    + + + +

    +``` + +[See button toggle states demo here.](https://demos.blazorbootstrap.com/buttons#toggle-states) + +### Loading spinner + +Use spinners within buttons to indicate an action is currently processing or taking place. You may also swap the text out of the spinner element and utilize button text as needed. + +Blazor Bootstrap: Button Component - Button with Loading Spinner + +```cshtml showLineNumbers +

    + +

    +``` + +[See button with loading spinner demo here.](https://demos.blazorbootstrap.com/buttons#loading-spinner) + +### Show/Hide loading spinner + +Use `ShowLoading()` and `HideLoading()` methods to toggle the button state. + +Blazor Bootstrap: Button Component - Show/Hide loading spinner + +```cshtml showLineNumbers + +``` + +```csharp {2,6,10} showLineNumbers +@code { + private Button saveButton; + + private async Task OnSaveClick() + { + saveButton?.ShowLoading("Saving details..."); + + await Task.Delay(5000); // API call + + saveButton?.HideLoading(); + } +} +``` + +[See button with loading spinner demo here.](https://demos.blazorbootstrap.com/buttons#show-hide-loading-spinner) + +### Show Tooltip + +Hover over the buttons below to see the four tooltips directions: top, right, bottom, and left. + +Blazor Bootstrap: Button Component - Buttons with Tooltip + +```cshtml showLineNumbers +

    + + + + + + + +

    +``` + +[See button with tooltip demo here.](https://demos.blazorbootstrap.com/buttons#tooltip) + +:::caution NOTE +HTML tooltips not supported at this moment. +::: + +### Dynamically update the tooltip text + +```cshtml showLineNumbers +
    + +
    + + +``` +```csharp +@code { + private string text = "Tooltip text"; + + private void ChangeTooltip() => text = $"Updated {DateTime.Now.ToLongTimeString()}"; +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/buttons#dynamically-update-the-tooltip-text) + +### Events + +#### Click events + +```cshtml showLineNumbers +

    + +

    +``` + +```cs showLineNumbers +@code{ + + protected void OnClick(EventArgs args) + { + Console.WriteLine("click event"); + } + +} +``` + +#### Double click event + +```cshtml showLineNumbers +

    + +

    +``` + +```cs showLineNumbers +@code{ + + protected void OnDoubleClick(EventArgs args) + { + Console.WriteLine("double click event"); + } + +} +``` + +#### Click event with arguments + +```cshtml showLineNumbers +

    + +

    +``` + +```cs showLineNumbers +@code{ + + public string message = "Test message"; + + protected void OnClickWithArgs(EventArgs args, string message) + { + Console.WriteLine($"message: {message}"); + } + +} +``` + +[See button click events demo here.](https://demos.blazorbootstrap.com/buttons#click-events) \ No newline at end of file diff --git a/docs/docs/05-components/callout.mdx b/docs/docs/05-components/callout.mdx new file mode 100644 index 000000000..59d36469d --- /dev/null +++ b/docs/docs/05-components/callout.mdx @@ -0,0 +1,146 @@ +--- +title: Blazor Callout Component +description: Blazor Bootstrap callout component provides content presentation in a visually distinct manner. +image: https://i.imgur.com/y2jI9ix.png + +sidebar_label: Callout +sidebar_position: 6 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Callout + +Blazor Bootstrap callout component provides content presentation in a visually distinct manner. + + + +## Parameters + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| ChildContent | RenderFragment | | ✔️ | Gets or sets the content to be rendered within the component. | 1.0.0 | +| Heading | string | null | | Gets or sets the callout heading. | 1.0.0 | +| HideHeading | bool | false | | Gets or sets a value indicating whether to hide the callout heading. | 2.0.0 | +| Type | `CalloutType` | `CalloutType.Default` | | Use `CalloutType.Default` or `CalloutType.Info` or `CalloutType.Warning` or `CalloutType.Danger` or `CalloutType.Tip` | 1.0.0 | + +## Examples + +### Callout + +Blazor Bootstrap: Callout Component - Examples + +```cshtml {} showLineNumbers + + This is a default callout. Example text to show it in action. See callout documentation. + + + + This is an danger callout. Example text to show it in action. See callout documentation. + + + + This is an warning callout. Example text to show it in action. See callout documentation. + + + + This is an info callout. Example text to show it in action. See callout documentation. + + + + This is an tip callout. Example text to show it in action. See callout documentation. + +``` +[See demo here.](https://demos.blazorbootstrap.com/callout#examples) + +### Custom heading + +Blazor Bootstrap: Callout Component - Custom heading + +```cshtml {} showLineNumbers + + This is a default callout. Example text to show it in action. See callout documentation. + + + + This is an danger callout. Example text to show it in action. See callout documentation. + + + + This is an warning callout. Example text to show it in action. See callout documentation. + + + + This is an info callout. Example text to show it in action. See callout documentation. + + + + This is an tip callout. Example text to show it in action. See callout documentation. + +``` +[See demo here.](https://demos.blazorbootstrap.com/callout#custom-heading) + +### Large text + +Blazor Bootstrap: Callout Component - Large text + +```cshtml {} showLineNumbers + +

    Conveying meaning to assistive technologies

    +

    Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .visually-hidden class.

    +
    + + +

    Conveying meaning to assistive technologies

    +

    Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .visually-hidden class.

    +
    + + +

    Conveying meaning to assistive technologies

    +

    Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .visually-hidden class.

    +
    + + +

    Conveying meaning to assistive technologies

    +

    Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .visually-hidden class.

    +
    + + +

    Conveying meaning to assistive technologies

    +

    Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .visually-hidden class.

    +
    +``` +[See demo here.](https://demos.blazorbootstrap.com/callout#large-text) + +### Hide heading + +Blazor Bootstrap: Callout Component - Hide heading + +```cshtml {} showLineNumbers + +

    Conveying meaning to assistive technologies

    +

    Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .visually-hidden class.

    +
    + + +

    Conveying meaning to assistive technologies

    +

    Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .visually-hidden class.

    +
    + + +

    Conveying meaning to assistive technologies

    +

    Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .visually-hidden class.

    +
    + + +

    Conveying meaning to assistive technologies

    +

    Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .visually-hidden class.

    +
    + + +

    Conveying meaning to assistive technologies

    +

    Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .visually-hidden class.

    +
    +``` + +[See demo here.](https://demos.blazorbootstrap.com/callout#hide-heading) diff --git a/docs/docs/05-components/card.mdx b/docs/docs/05-components/card.mdx new file mode 100644 index 000000000..762a4047a --- /dev/null +++ b/docs/docs/05-components/card.mdx @@ -0,0 +1,462 @@ +--- +title: Blazor Card Component +description: BootstrapBootstrap's cards provide a flexible and extensible content container with multiple variants and options. +image: https://i.imgur.com/RhytwPa.png + +sidebar_label: Card +sidebar_position: 7 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Card + +BootstrapBootstrap's cards provide a flexible and extensible content container with multiple variants and options. + + + +Blazor Bootstrap: Card component + +## About + +A card is a flexible and extensible content container. It includes options for headers and footers, a wide variety of content, contextual background colors, and powerful display options. + +## Parameters + +### Card Parameters + +| Name | Type | Description | Required | Default | Added Version | +|:--|:--|:--|:--|:--|:--| +| ChildContent | RenderFragment | Gets or sets the content to be rendered within the component. | ✔️ | | 1.10.0 | +| Color | `CardColor` | Gets or sets the card color. | | `CardColor.None` | 1.10.0 | +| TextAlignment | `Alignment` | Gets or sets the text alignment of the card. | | `Alignment.None` | 1.10.0 | + +### CardBody Parameters + +| Name | Type | Description | Required | Default | Added Version | +|:--|:--|:--|:--|:--|:--| +| ChildContent | RenderFragment | Gets or sets the content to be rendered within the component. | ✔️ | | 1.10.0 | + +### CardFooter Parameters + +| Name | Type | Description | Required | Default | Added Version | +|:--|:--|:--|:--|:--|:--| +| ChildContent | RenderFragment | Gets or sets the content to be rendered within the component. | ✔️ | | 1.10.0 | + +### CardGroup Parameters + +| Name | Type | Description | Required | Default | Added Version | +|:--|:--|:--|:--|:--|:--| +| ChildContent | RenderFragment | Gets or sets the content to be rendered within the component. | ✔️ | | 1.10.0 | + +### CardHeader Parameters + +| Name | Type | Description | Required | Default | Added Version | +|:--|:--|:--|:--|:--|:--| +| ChildContent | RenderFragment | Gets or sets the content to be rendered within the component. | ✔️ | | 1.10.0 | +| Color | `CardColor` | Gets or sets the card color. | | `CardColor.None` | 1.10.4 | + +### CardLink Parameters + +| Name | Type | Description | Required | Default | Added Version | +|:--|:--|:--|:--|:--|:--| +| ChildContent | RenderFragment | Gets or sets the content to be rendered within the component. | ✔️ | | 1.10.0 | +| Disabled | bool | When set to 'true', disables the component's functionality and places it in a disabled state. | | | 1.10.0 | +| To | `string?` | Gets or sets the target route. | ✔️ | | 1.10.0 | +| Target | `Target` | The target attribute specifies where to open the linked document. | | `Target.None` | 1.10.0 | +| TabIndex | `int?` | If defined, indicates that its element can be focused and can participates in sequential keyboard navigation. | | | 1.10.0 | + +### CardSubTitle Parameters + +| Name | Type | Description | Required | Default | Added Version | +|:--|:--|:--|:--|:--|:--| +| ChildContent | RenderFragment | Gets or sets the content to be rendered within the component. | ✔️ | | 1.10.0 | +| Size | `HeadingSize` | Gets or sets the heading size. | | `HeadingSize.H6` | 1.10.0 | + +### CardText Parameters + +| Name | Type | Description | Required | Default | Added Version | +|:--|:--|:--|:--|:--|:--| +| ChildContent | RenderFragment | Gets or sets the content to be rendered within the component. | ✔️ | | 1.10.0 | + +### CardTitle Parameters + +| Name | Type | Description | Required | Default | Added Version | +|:--|:--|:--|:--|:--|:--| +| ChildContent | RenderFragment | Gets or sets the content to be rendered within the component. | ✔️ | | 1.10.0 | +| Size | `HeadingSize` | Gets or sets the heading size. | | `HeadingSize.H5` | 1.10.0 | + +## Examples + +### Card + +Below is an example of a basic card with mixed content and a fixed width. Cards have no fixed width to start, so they'll naturally fill the full width of its parent element. + +Blazor Bootstrap: Card Component - Examples + +```cshtml {} showLineNumbers + + + Card title + Some quick example text to build on the card title and make up the bulk of the card's content. + + + +``` + +[See the demo here.](https://demos.blazorbootstrap.com/card#examples) + +### Content types + +Cards support a wide variety of content, including images, text, list groups, links, and more. Below are examples of what’s supported. + +### Body + +The building block of a card is the CardBody. Use it whenever you need a padded section within a card. + +Blazor Bootstrap: Card Component - Body + +```cshtml {} showLineNumbers + + + This is some text within a card body. + + +``` + +[See the demo here.](https://demos.blazorbootstrap.com/card#body) + +### Titles, text, and links + +Blazor Bootstrap: Card Component - Titles, text, and links + +```cshtml {} showLineNumbers + + + Card title + Card subtitle + Some quick example text to build on the card title and make up the bulk of the card's content. + Card link + Another link + + +``` + +[See the demo here.](https://demos.blazorbootstrap.com/card#titles-text-and-links) + +### Images + +Blazor Bootstrap: Card Component - Images + +```cshtml {} showLineNumbers + + placeholder + + Card title + Card subtitle + Some quick example text to build on the card title and make up the bulk of the card's content. + + + + + + + Card title + Card subtitle + Some quick example text to build on the card title and make up the bulk of the card's content. + + + placeholder + +``` + +[See the demo here.](https://demos.blazorbootstrap.com/card#images) + +### List groups + +Create lists of content in a card with a flush list group. + +Blazor Bootstrap: Card Component - List groups + +```cshtml {} showLineNumbers + +
      +
    • An item
    • +
    • A second item
    • +
    • A third item
    • +
    +
    +``` + +[See the demo here.](https://demos.blazorbootstrap.com/card#list-groups) + +### Kitchen sink + +Mix and match multiple content types to create the card you need, or throw everything in there. +Shown below are image styles, blocks, text styles, and a list group—all wrapped in a fixed-width card. + +Blazor Bootstrap: Card Component - Kitchen sink + +```cshtml {} showLineNumbers + + placeholder + + Card title + Some quick example text to build on the card title and make up the bulk of the card's content. + +
      +
    • An item
    • +
    • A second item
    • +
    • A third item
    • +
    + + Card link + Another link + +
    +``` + +[See the demo here.](https://demos.blazorbootstrap.com/card#kitchen-sink) + +### Header and footer + +Add an optional header and/or footer within a card. + +Blazor Bootstrap: Card Component - Header and footer + +```cshtml {} showLineNumbers + + + Featured + + + Special title treatment + With supporting text below as a natural lead-in to additional content. + + + +``` + +[See the demo here.](https://demos.blazorbootstrap.com/card#header-and-footer) + +### Sizing + +Cards assume no specific width to start, so they’ll be 100% wide unless otherwise stated. +You can change this as needed with custom CSS, grid classes, grid Sass mixins, or utilities. + +Blazor Bootstrap: Card Component - Sizing + +```cshtml {} showLineNumbers +
    +
    + + + Special title treatment + With supporting text below as a natural lead-in to additional content. + + + +
    +
    + + + Special title treatment + With supporting text below as a natural lead-in to additional content. + + + +
    +
    +``` + +[See the demo here.](https://demos.blazorbootstrap.com/card#sizing) + +### Text alignment + +You can quickly change the text alignment of any card—in its entirety or specific parts—with our TextAlignment parameter. + +Blazor Bootstrap: Card Component - Text alignment + +```cshtml {} showLineNumbers + + + Special title treatment + With supporting text below as a natural lead-in to additional content. + + + + + + + Special title treatment + With supporting text below as a natural lead-in to additional content. + + + + + + + Special title treatment + With supporting text below as a natural lead-in to additional content. + + + +``` + +[See the demo here.](https://demos.blazorbootstrap.com/card#text-alignment) + +### Background and color + +Blazor Bootstrap: Card Component - Background and color - Primary, Secondary, Success + +Blazor Bootstrap: Card Component - Background and color - Danger, Warning, Info + +Blazor Bootstrap: Card Component - Background and color - Light, Dark + +```cshtml {} showLineNumbers + + Header + + Primary card title + Some quick example text to build on the card title and make up the bulk of the card's content. + + + + + Header + + Secondary card title + Some quick example text to build on the card title and make up the bulk of the card's content. + + + + + Header + + Success card title + Some quick example text to build on the card title and make up the bulk of the card's content. + + + + + Header + + Danger card title + Some quick example text to build on the card title and make up the bulk of the card's content. + + + + + Header + + Warning card title + Some quick example text to build on the card title and make up the bulk of the card's content. + + + + + Header + + Info card title + Some quick example text to build on the card title and make up the bulk of the card's content. + + + + + Header + + Light card title + Some quick example text to build on the card title and make up the bulk of the card's content. + + + + + Header + + Dark card title + Some quick example text to build on the card title and make up the bulk of the card's content. + + +``` +[See the demo here.](https://demos.blazorbootstrap.com/card#background-and-color) + +### Card groups + +Use card groups to render cards as a single, attached element with equal width and height columns. +Card groups start off stacked and use display: flex; to become attached with uniform dimensions starting at the sm breakpoint. + +Blazor Bootstrap: Card Component - Card groups + +```cshtml {} showLineNumbers + + + placeholder + + Card title + This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer. + Last updated 3 mins ago + + + + placeholder + + Card title + This card has supporting text below as a natural lead-in to additional content. + Last updated 3 mins ago + + + + placeholder + + Card title + This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action. + Last updated 3 mins ago + + + +``` + +[See the demo here.](https://demos.blazorbootstrap.com/card#card-groups) + +### Card groups with footer + +When using card groups with footers, their content will automatically line up. + +Blazor Bootstrap: Card Component - Card groups with footer + +```cshtml {} showLineNumbers + + + placeholder + + Card title + This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer. + + + Last updated 3 mins ago + + + + placeholder + + Card title + This card has supporting text below as a natural lead-in to additional content. + + + Last updated 3 mins ago + + + + placeholder + + Card title + This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action. + + + Last updated 3 mins ago + + + +``` + +[See the demo here.](https://demos.blazorbootstrap.com/card#card-groups-with-footer) diff --git a/docs/docs/05-components/charts.mdx b/docs/docs/05-components/charts.mdx new file mode 100644 index 000000000..9bd1d97d2 --- /dev/null +++ b/docs/docs/05-components/charts.mdx @@ -0,0 +1,68 @@ +--- +title: Blazor Chart Components +description: Blazor Bootstrap charts are well-designed chart components on top of Chart.js to visualize data. It contains a rich UI gallery of charts that cater to all charting scenarios. Its high performance helps render large amounts of data quickly. +image: https://i.imgur.com/ATtFiUZ.png + +sidebar_label: Charts +sidebar_position: 8 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Charts + +Blazor Bootstrap charts are well-designed chart components on top of Chart.js to visualize data. It contains a rich UI gallery of charts that cater to all charting scenarios. Its high performance helps render large amounts of data quickly. + + + +## Example + +Blazor Chart Component - Blazor Bar Chart Example +
    +Blazor Chart Component - Blazor Line Chart Example +
    +See blazor chart demo here. + +## Chart Types + +At this moment we are supporting four blazor chart types. +1. Bar Chart +1. Doughnut Chart +1. Line Chart +1. Pie Chart + +:::info +We will add **Bubble Chart**, **Polar Area Chart**, **Radar Chart**, **Scatter Chart**, and **Mixed Chart** support in the subsequent versions. +::: + +## Bar Chart + +Blazor Chart Component - Blazor Bar Chart +
    +See blazor bar chart demo here. +
    +See blazor bar chart full documentation here. + +## Doughnut Chart + +Blazor Chart Component - Blazor Doughnut Chart +
    +See blazor doughnut chart demo here. +
    +See blazor doughnut chart full documentation here. + +## Line Chart + +Blazor Chart Component - Blazor Line Chart +
    +See blazor line chart demo here. +
    +See blazor line chart full documentation here. + +## Pie Chart + +Blazor Chart Component - Blazor Pie Chart +
    +See blazor pie chart demo here. +
    +See blazor pie chart full documentation here. diff --git a/docs/docs/05-components/collapse.mdx b/docs/docs/05-components/collapse.mdx new file mode 100644 index 000000000..6df0aae95 --- /dev/null +++ b/docs/docs/05-components/collapse.mdx @@ -0,0 +1,172 @@ +--- +title: Blazor Collapse Component +description: Toggle the visibility of content across your project with the Blazor Bootstrap Collapse component. +image: https://i.imgur.com/8A0emQe.png + +sidebar_label: Collapse +sidebar_position: 9 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Collapse + +Toggle the visibility of content across your project with the Blazor Bootstrap `Collapse` component. + + + +Blazor Bootstrap: Collapse Component + +## Parameters + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| ChildContent | RenderFragment | null | ✔️ | Gets or sets the content to be rendered within the component. | 1.7.0 | +| Horizontal | bool | false | | Gets or sets the horizontal. | 1.7.0 | +| Parent | string | null | | Gets or sets the parent. | 1.7.0 | +| Toggle | bool | false | | Toggles the collapsible element on invocation. | 1.7.0 | + +## Methods + +| Name | Description | Added Version | +|:--|:--|:--| +| ShowAsync | Shows a collapsible element. | 1.7.0 | +| HideAsync | Hides a collapsible element. | 1.7.0 | +| ToggleAsync | Toggles a collapsible element to shown or hidden. | 1.7.0 | + +## Events + +| Name | Description | Added Version | +|:--|:--|:--| +| OnShowing | This event fires immediately when the show instance method is called. | 1.7.0 | +| OnShown | This event is fired when a collapse element has been made visible to the user (will wait for CSS transitions to complete). | 1.7.0 | +| OnHiding | This event is fired immediately when the hide method has been called. | 1.7.0 | +| OnHidden | This event is fired when a collapse element has been hidden from the user (will wait for CSS transitions to complete). | 1.7.0 | + +## How it works + +The `Collapse` component is used to show and hide content. Use `ShowAsync`, `HideAsync`, and `ToggleAsync` methods to toggle the content. +Collapsing an element will animate the height from its current value to `0`. + +:::info +The animation effect of this component is dependent on the prefers-reduced-motion media query. +See the [reduced motion section of our accessibility documentation](https://getbootstrap.com/docs/5.3/getting-started/accessibility/#reduced-motion). +::: + +## Examples + +Click the buttons below to show and hide the content. + +Blazor Bootstrap: Collapse Component - Examples + +```cshtml {1-3,5} showLineNumbers + + + + + + + + Some placeholder content for the collapse component. This panel is hidden by default but revealed when the user activates the relevant trigger. + + + +``` +```cshtml {2,4-6} showLineNumbers +@code { + Collapse collapse1 = default!; + + private async Task ShowContentAsync() => await collapse1.ShowAsync(); + private async Task HideContentAsync() => await collapse1.HideAsync(); + private async Task ToggleContentAsync() => await collapse1.ToggleAsync(); +} +``` + +[See demo here](https://demos.blazorbootstrap.com/collapse#examples) + +## Horizontal + +The `Collapse` component supports horizontal collapsing. +Set the `Horizontal` parameter to `true` to enable horizontal collapsing. + +Blazor Bootstrap: Collapse Component - Horizontal + +```cshtml {1-3,5} showLineNumbers + + + + + + + + This is some placeholder content for a horizontal collapse. It's hidden by default and shown when triggered. + + + +``` +```cshtml {2,4-6} showLineNumbers +@code { + Collapse collapse1 = default!; + + private async Task ShowContentAsync() => await collapse1.ShowAsync(); + private async Task HideContentAsync() => await collapse1.HideAsync(); + private async Task ToggleContentAsync() => await collapse1.ToggleAsync(); +} +``` + +[See demo here](https://demos.blazorbootstrap.com/collapse#horizontal) + +### Events Example + +Blazor Bootstrap Collapse component exposes a few events for hooking into collapse functionality. + +Blazor Bootstrap: Collapse Component - Events + +```cshtml {} showLineNumbers + + + + + + + + + Some placeholder content for the collapse component. This panel is hidden by default but revealed when the user activates the relevant trigger. + + + + +
    + @foreach (var item in messages) + { +

    @item

    + } +
    +``` + +```cshtml {} showLineNumbers +@code { + Collapse collapse1 = default!; + + List messages = new List(); + + private async Task ShowContentAsync() => await collapse1.ShowAsync(); + private async Task HideContentAsync() => await collapse1.HideAsync(); + private async Task ToggleContentAsync() => await collapse1.ToggleAsync(); + + private void OnCollapseShowingAsync() => messages.Add($"Event: OnShowing called {DateTime.Now.ToLocalTime()}"); + + private void OnCollapseShownAsync() => messages.Add($"Event: OnShown called {DateTime.Now.ToLocalTime()}"); + + private void OnCollapseHidingAsync() => messages.Add($"Event: OnHiding called {DateTime.Now.ToLocalTime()}"); + + private void OnCollapseHiddenAsync() => messages.Add($"Event: OnHidden called {DateTime.Now.ToLocalTime()}"); + + private void ClearMessage() => messages = new List(); +} +``` diff --git a/docs/docs/05-components/confirm-dialog.mdx b/docs/docs/05-components/confirm-dialog.mdx new file mode 100644 index 000000000..0dbbfdc2c --- /dev/null +++ b/docs/docs/05-components/confirm-dialog.mdx @@ -0,0 +1,422 @@ +--- +title: Blazor Confirm Dialog Component +description: Use Blazor Bootstrap confirm dialog component if you want the user to verify or accept something. +image: https://i.imgur.com/B5Hf85u.png + +sidebar_label: Confirm Dialog +sidebar_position: 10 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Confirm Dialog + +Use Blazor Bootstrap confirm dialog component if you want the user to verify or accept something. + + + +Blazor Bootstrap: Confirm Dialog component + +## Methods + +| Name | Return Type | Description | Added Version | +|:--|:--|:--|:--| +| ShowAsync(string title, string message1, ConfirmDialogOptions confirmDialogOptions = null) | Task | Shows confirm dialog. | 1.1.0 | +| ShowAsync(string title, string message1, string message2, ConfirmDialogOptions confirmDialogOptions = null) | Task | Shows confirm dialog. | 1.1.0 | +| ShowAsync(string title, Dictionary parametres = null, ConfirmDialogOptions confirmDialogOptions = null) | Task | Shows confirm dialog. T is component. | 1.1.0 | + +## ConfirmDialogOptions Properties + +| Name | Type | Default | Description | Added Version | +|:--|:--|:--|:--|:--| +| DialogCssClass | string | | Additional CSS class for the dialog (div.modal-dialog element). | 1.1.0 | +| Dismissable | bool | | Adds a dismissable close button to the confirm dialog. | 1.1.0 | +| HeaderCssClass | string | | Additional header CSS class (div.modal-header element). | 1.1.0 | +| IsScrollable | bool | | Allows confirm dialog body to be scrollable. | 1.1.0 | +| IsVerticallyCentered | bool | | Shows the confirm dialog vertically in the center of the page. | 1.1.0 | +| NoButtonColor | ButtonColor | | Gets or sets the 'No' button color. | 1.1.0 | +| NoButtonText | string | No | Gets or sets the 'No' button text. | 1.1.0 | +| Size | DialogSize | ModalSize.Regular | Size of the modal. | 1.1.0 | +| YesButtonColor | ButtonColor | ButtonColor.Primary | Gets or sets the 'Yes' button color. | 1.1.0 | +| YesButtonText | string | Yes | Gets or sets the 'Yes' button text. | 1.1.0 | + +## Examples + +### Confirm Dialog + +Blazor Bootstrap: Confirm Dialog Component - Examples + +```cshtml {1} showLineNumbers + + + +``` + +```cs {2,6-9,11} showLineNumbers +@code { + private ConfirmDialog dialog; + + private async Task ShowConfirmationAsync() + { + var confirmation = await dialog.ShowAsync( + title: "Are you sure you want to delete this?", + message1: "This will delete the record. Once deleted can not be rolled back.", + message2: "Do you want to proceed?"); + + if (confirmation) + { + // do whatever + } + else + { + // do whatever + } + } +} +``` + +[See Confirm Dialog demo here.](https://demos.blazorbootstrap.com/confirm-dialog#examples) + +### Dynamic component as confirm dialog + +Render different components dynamically within the confirm dialog without iterating through possible types or using conditional logic. + +If dynamically-rendered components have component parameters, pass them as an `IDictionary`. The `string` is the parameter's name, and the `object` is the parameter's value. + +In the below example, we used `Toast Service` to show the user confirmation. + +Blazor Bootstrap: Confirm Dialog Component - Dynamic component as confirm dialog + +```cshtml {1} showLineNumbers + + + +``` + +```cs {2,11,13} showLineNumbers +@code { + private ConfirmDialog dialog; + + [Inject] ToastService ToastService { get; set; } + + private async Task DeleteEmployeeAsync() + { + var parameters = new Dictionary(); + parameters.Add("EmployeeId", 321); + + var confirmation = await dialog.ShowAsync("Are you sure you want to delete this employee?", parameters); + + if (confirmation) + { + // call API to delete the employee + // show acknowledgment to the user + ToastService.Notify(new ToastMessage(ToastType.Success, $"Employee deleted successfully.")); + } + else + ToastService.Notify(new ToastMessage(ToastType.Secondary, $"Delete action canceled.")); + } +} +``` + +**EmployeeDemoComponent.razor** + +```cshtml showLineNumbers +
    +
    Employee Id :
    +
    @EmployeeId
    +
    +
    +
    First Name :
    +
    @employee.FirstName
    +
    +
    +
    Last Name :
    +
    @employee.LastName
    +
    + +@code { + private Employee employee; + + [Parameter] public int EmployeeId { get; set; } + + protected override void OnInitialized() + { + // get employee with {EmployeeId} from DB + + employee = new Employee { FirstName = "Vikram", LastName = "Reddy" }; + + base.OnInitialized(); + } +} +``` + +[See Confirm Dialog demo here.](https://demos.blazorbootstrap.com/confirm-dialog#dynamic-component-as-confirm-dialog) + +### Change buttons text and color + +Use `ConfirmDialogOptions` to change the text and color of the button. + +Blazor Bootstrap: Confirm Dialog Component - Change buttons text and color + +```cshtml showLineNumbers + + + +``` + +```cs showLineNumbers +@code { + private ConfirmDialog dialog; + + private async Task ShowSaveConfirmationAsync() + { + var options = new ConfirmDialogOptions + { + YesButtonText = "OK", + YesButtonColor = ButtonColor.Success, + NoButtonText = "CANCEL", + NoButtonColor = ButtonColor.Danger + }; + + var confirmation = await dialog.ShowAsync( + title: "Simple Confirm Dialog", + message1: "Do you want to proceed?", + confirmDialogOptions: options); + + if (confirmation) + { + // do whatever + } + else + { + // do whatever + } + } +} +``` + +[See Confirm Dialog demo here.](https://demos.blazorbootstrap.com/confirm-dialog#change-buttons-text-and-color) + +### Optional sizes + +Confirm dialog have three optional sizes. These sizes kick in at certain breakpoints to avoid horizontal scrollbars on narrower viewports. + +**Confirm Dialog Component - Small Size** +Blazor Bootstrap: Confirm Dialog Component - Optional sizes - Small + +**Confirm Dialog Component - Large Size** +Blazor Bootstrap: Confirm Dialog Component - Optional sizes - Large + +**Confirm Dialog Component - Extra Large Size** +Blazor Bootstrap: Confirm Dialog Component - Optional sizes - Extra Large + +```cshtml showLineNumbers + + + + + +``` + +```cs showLineNumbers +@code { + private ConfirmDialog dialog; + + private async Task ShowConfirmationAsync(DialogSize size) + { + var options = new ConfirmDialogOptions { Size = size }; + + var confirmation = await dialog.ShowAsync( + title: "Simple Confirm Dialog", + message1: "Do you want to proceed?", + confirmDialogOptions: options); + + if (confirmation) + { + // do whatever + } + else + { + // do whatever + } + } +} +``` + +[See Confirm Dialog demo here.](https://demos.blazorbootstrap.com/confirm-dialog#optional-sizes) + +### Scrolling long content + +When dialogs become too long for the user's viewport or device, they scroll independent of the page itself. Try the demo below to see what we mean. + +Blazor Bootstrap: Confirm Dialog Component - Scrolling long content + +```cshtml showLineNumbers + + + +``` + +```cs showLineNumbers +@code { + private ConfirmDialog dialog; + + private async Task ShowDialogAsync() + { + var confirmation = await dialog.ShowAsync(title: "Confirm dialog title"); + + if (confirmation) + { + // do whatever + } + else + { + // do whatever + } + } +} +``` + +You can also create a scrollable dialog that allows scroll the dialog body by updating `DialogOptions.IsScrollable="true"`. + +Blazor Bootstrap: Confirm Dialog Component - Scrolling long content within the body + +```cshtml showLineNumbers + + + +``` + +```cs showLineNumbers +@code { + private ConfirmDialog dialog; + + private async Task ShowDialogAsync() + { + var options = new ConfirmDialogOptions { IsScrollable = true }; + var confirmation = await dialog.ShowAsync( + title: "Confirm dialog title", + confirmDialogOptions: options); + + if (confirmation) + { + // do whatever + } + else + { + // do whatever + } + } +} +``` + +[See Confirm Dialog demo here.](https://demos.blazorbootstrap.com/confirm-dialog#scrolling-long-content) + +### Vertically centered + +Add `DialogOptions.IsVerticallyCentered="true"` to vertically center the confirm dialog. + +Blazor Bootstrap: Confirm Dialog Component - Vertically centered + +```cshtml showLineNumbers + + + +``` + +```cs showLineNumbers +@code { + private ConfirmDialog dialog; + + private async Task ShowDialogAsync() + { + var options = new ConfirmDialogOptions { IsVerticallyCentered = true }; + var confirmation = await dialog.ShowAsync( + title: "Simple Confirm Dialog", + message1: "Do you want to proceed?", + confirmDialogOptions: options); + + if (confirmation) + { + // do whatever + } + else + { + // do whatever + } + } +} +``` + +You can also create a scrollable dialog that allows scroll the dialog body by updating DialogOptions.IsScrollable="true". + +```cshtml showLineNumbers + + + + +``` + +```cs showLineNumbers +@code { + private ConfirmDialog dialog; + + private async Task ShowDialogAsync() + { + var options = new ConfirmDialogOptions { IsScrollable = true, IsVerticallyCentered = true }; + var confirmation = await dialog.ShowAsync(title: "Confirm dialog title", + confirmDialogOptions: options); + + if (confirmation) + { + // do whatever + } + else + { + // do whatever + } + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/confirm-dialog#vertically-centered) + +### Disable auto focus on the yes button + +:::info +By default, auto focus on the **"Yes"** button is enabled. +::: + +To disabe the autofocus, set `AutoFocusYesButton = false` on the ConfirmDialogOptions. + + +```cshtml {} showLineNumbers + + + +``` + +```cshtml {} showLineNumbers +@code { + private ConfirmDialog dialog = default!; + + private async Task ShowDialogAsync() + { + var confirmation = await dialog.ShowAsync( + title: "Confirm dialog title", + confirmDialogOptions: new ConfirmDialogOptions { AutoFocusYesButton = false } + ); + + if (confirmation) + { + // do something + } + else + { + // do something + } + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/confirm-dialog#disable-auto-focus-on-the-yes-button) diff --git a/docs/docs/05-components/dropdown.mdx b/docs/docs/05-components/dropdown.mdx new file mode 100644 index 000000000..da0e8d0c8 --- /dev/null +++ b/docs/docs/05-components/dropdown.mdx @@ -0,0 +1,776 @@ +--- +title: Blazor Dropdown Component +description: Dropdowns are toggleable, contextual overlays for displaying lists of links and more. They are toggled by clicking, not by hovering; this is an intentional design decision'by bootstrap. +image: https://i.imgur.com/beAr31J.png + +sidebar_label: Dropdown +sidebar_position: 11 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Dropdown + +Dropdowns are toggleable, contextual overlays for displaying lists of links and more. +They are toggled by clicking, not by hovering; this is an intentional design decision'by bootstrap. + + + +Blazor Bootstrap: Dropdown component + +## Dropdown Parameters + +| Name | Type | Description | Required | Default | Added Version | +|:--|:--|:--|:--|:--|:--| +| AutoClose | bool | Enables or disables the auto close. | | true | 1.10.0 | +| AutoCloseBehavior | `DropdownAutoCloseBehavior` | Gets or sets the auto close behavior of the dropdown. | | `DropdownAutoCloseBehavior.Both` | 1.10.0 | +| ChildContent | RenderFragment | Gets or sets the content to be rendered within the component. | | | 1.10.0 | +| Direction | `DropdownDirection` | Gets or sets the direction of the dropdown menu. | | `DropdownDirection.Dropdown` | 1.10.0 | +| Disabled | bool | Gets or sets whether the dropdown menu is disabled. | | false | 1.10.3 | +| Size | `Size` | Gets or sets the size of the dropdown. | | `Size.None` | 1.10.3 | +| Split | bool | Gets or sets the toggle button split behavior. | | false | 1.10.0 | + +## DropdownToggleButton Parameters + +| Name | Type | Description | Required | Default | Added Version | +|:--|:--|:--|:--|:--|:--| +| ChildContent | RenderFragment | Gets or sets the content to be rendered within the component. | | | 1.10.0 | +| Color | `ButtonColor` | Gets or sets the button color. | | | 1.10.0 | +| TabIndex | `int?` | If defined, indicates that its element can be focused and can participates in sequential keyboard navigation. | | | 1.10.0 | + +## DropdownActionButton Parameters + +| Name | Type | Description | Required | Default | Added Version | +|:--|:--|:--|:--|:--|:--| +| ChildContent | RenderFragment | Gets or sets the content to be rendered within the component. | | | 1.10.0 | +| Color | `ButtonColor` | Gets or sets the button color. | | | 1.10.0 | +| TabIndex | `int?` | If defined, indicates that its element can be focused and can participates in sequential keyboard navigation. | | | 1.10.0 | + +## DropdownMenu Parameters + +| Name | Type | Description | Required | Default | Added Version | +|:--|:--|:--|:--|:--|:--| +| ChildContent | RenderFragment | Gets or sets the content to be rendered within the component. | | | 1.10.0 | +| Position | `DropdownMenuPosition` | Gets or sets the dropdown menu position. | | | 1.10.0 | + +## DropdownHeader Parameters + +| Name | Type | Description | Required | Default | Added Version | +|:--|:--|:--|:--|:--|:--| +| ChildContent | RenderFragment | Gets or sets the content to be rendered within the component. | | | 1.10.0 | + +## DropdownItem Parameters + +| Name | Type | Description | Required | Default | Added Version | +|:--|:--|:--|:--|:--|:--| +| Active | bool | When set to 'true', places the component in the active state with active styling. | | | 1.10.0 | +| ChildContent | RenderFragment | Gets or sets the content to be rendered within the component. | | | 1.10.0 | +| Disabled | bool | When set to 'true', disables the component's functionality and places it in a disabled state. | | | 1.10.0 | +| TabIndex | `int?` | If defined, indicates that its element can be focused and can participates in sequential keyboard navigation. | | | 1.10.0 | +| Target | `Target` | The target attribute specifies where to open the linked document. | | `Target.None` | 1.10.0 | +| To | `string?` | Denotes the target route of the link button. | | | 1.10.0 | +| Type | `ButtonType` | Defines the button type. | | `ButtonType.Button` | 1.10.0 | + +## Dropdown Methods + +| Name | Description | Added Version | +|:--|:--|:--| +| HideAsync | Hides the dropdown menu of a given navbar or tabbed navigation. | 1.10.0 | +| ShowAsync | Shows the dropdown menu of a given navbar or tabbed navigation. | 1.10.0 | +| ToggleAsync | Toggles the dropdown menu of a given navbar or tabbed navigation. | 1.10.0 | +| UpdateAsync | Updates the position of an element’s dropdown. | 1.10.0 | + +## Dropdown Events + +| Event Type | Description | Added Version | +|:--|:--|:--| +| OnHiding | This event is fired immediately when the hide method has been called. | 1.10.0 | +| OnHidden | This event is fired when an dropdown element has been hidden from the user (will wait for CSS transitions to complete). | 1.10.0 | +| OnShowing | This event fires immediately when the show instance method is called. | 1.10.0 | +| OnShown | This event is fired when an dropdown element has been made visible to the user (will wait for CSS transitions to complete). | 1.10.0 | + +## Examples + +### Single button + +Blazor Bootstrap: Dropdown Component - Single button + +```cshtml {} showLineNumbers + + Dropdown button + + Action + Another action + Something else here + + +``` + +[See the demo here.](https://demos.blazorbootstrap.com/dropdown#single-button) + +### Color + +Blazor Bootstrap: Dropdown Component - Color + +```cshtml {3,11,19,27,35,43} showLineNumbers +
    + + Primary + + Action + Another action + Something else here + + + + Secondary + + Action + Another action + Something else here + + + + Success + + Action + Another action + Something else here + + + + Info + + Action + Another action + Something else here + + + + Warning + + Action + Another action + Something else here + + + + Danger + + Action + Another action + Something else here + + +
    +``` + +[See the demo here.](https://demos.blazorbootstrap.com/dropdown#color) + +### Split button + +Blazor Bootstrap: Dropdown Component - Split button + +```cshtml {3-4,12-13,21-22,30-31,39-40,48-49} showLineNumbers +
    + + Primary + + + Action + Another action + Something else here + + + + Secondary + + + Action + Another action + Something else here + + + + Success + + + Action + Another action + Something else here + + + + Info + + + Action + Another action + Something else here + + + + Warning + + + Action + Another action + Something else here + + + + Danger + + + Action + Another action + Something else here + + +
    +``` + +[See the demo here.](https://demos.blazorbootstrap.com/dropdown#split-button) + +### Sizing + +Blazor Bootstrap: Dropdown Component - Sizing - Large + +```cshtml {2,10} showLineNumbers +
    + + Large button + + Action + Another action + Something else here + + + + Large split button + + + Action + Another action + Something else here + + +
    +``` + +Blazor Bootstrap: Dropdown Component - Sizing - Small + +```cshtml {2,10} showLineNumbers +
    + + Small button + + Action + Another action + Something else here + + + + Small split button + + + Action + Another action + Something else here + + +
    +``` + +[See the demo here.](https://demos.blazorbootstrap.com/dropdown#sizing) + +### Directions + +### Dropup + +To trigger **DropdownMenu** above elements, add the `Direction="DropdownDirection.Dropup"` to the **Dropdown** component. + +Blazor Bootstrap: Dropdown Component - Dropup + +```cshtml {2,10} showLineNumbers +
    + + Dropup button with text + + Action + Another action + Something else here + + + + Dropup split button + + + Action + Another action + Something else here + + +
    +``` + +[See the demo here.](https://demos.blazorbootstrap.com/dropdown#dropup) + +### Dropup centered + +To center the DropdownMenu above the toggle, add the Direction="DropdownDirection.DropupCentered" to the Dropdown component. + +Blazor Bootstrap: Dropdown Component - Dropup centered + +```cshtml {2} showLineNumbers +
    + + Centered dropup + + Action + Another action + Something else here + + +
    +``` + +[See the demo here.](https://demos.blazorbootstrap.com/dropdown#dropup-centered) + +### Dropend + +To trigger DropdownMenu at the right of elements, add the Direction="DropdownDirection.Dropend" to the Dropdown component. + +Blazor Bootstrap: Dropdown Component - Dropend + +```cshtml {2,10} showLineNumbers +
    + + Dropend + + Action + Another action + Something else here + + + + Split dropend + + + Action + Another action + Something else here + + +
    +``` + +[See the demo here.](https://demos.blazorbootstrap.com/dropdown#dropend) + +### Dropstart + +To trigger DropdownMenu at the left of elements, you can add the Direction="DropdownDirection.Dropstart" to the Dropdown component. + +Blazor Bootstrap: Dropdown Component - Dropstart + +```cshtml {2,10} showLineNumbers +
    + + Dropstart + + Action + Another action + Something else here + + + + + + Action + Another action + Something else here + + Split dropstart + +
    +``` + +[See the demo here.](https://demos.blazorbootstrap.com/dropdown#dropstart) + +### Active + +To style DropdownItem as active, add the Active="true" parameter to the DropdownItem element in the DropdownMenu. + +Blazor Bootstrap: Dropdown Component - Active + +```cshtml {5} showLineNumbers + + Dropstart + + Action + Another action + Something else here + + +``` + +[See the demo here.](https://demos.blazorbootstrap.com/dropdown#active) + +### Disabled + +To disable the dropdown, set the Disabled parameter to true on the Dropdown component. + +Blazor Bootstrap: Dropdown Component - Disabled + +```cshtml {1} showLineNumbers + + Dropstart + + Action + Another action + Something else here + + + +
    + + +
    +@code +{ + private bool isDropdownDisabled = true; + private void EnableDropdown() => isDropdownDisabled = false; + private void DisableDropdown() => isDropdownDisabled = true; +} +``` + +To style a dropdown item as disabled, set the Disabled parameter to true on the DropdownItem element in the DropdownMenu component. + +Blazor Bootstrap: Dropdown Component - Disabled (Dropdown Item) + +```cshtml {5} showLineNumbers + + Dropstart + + Action + Another action + Something else here + + +``` + +[See the demo here.](https://demos.blazorbootstrap.com/dropdown#disabled) + +### Menu position + +By default, a DropdownMenu is automatically positioned at 100% from the top and along the left side of its parent. You can change this with the Position parameter. + +To right-align a DropdownMenu, add the Position="DropdownMenuPosition.End" parameter to the DropdownMenu component. Directions are mirrored when using Bootstrap in RTL. + +Blazor Bootstrap: Dropdown Component - Menu position + +```cshtml {3} showLineNumbers + + Right-aligned menu example + + Action + Another action + Something else here + + +``` + +[See the demo here.](https://demos.blazorbootstrap.com/dropdown#menu-position) + +### Menu content + +### Header + +Add a header to label sections of actions in any dropdown menu. + +Blazor Bootstrap: Dropdown Component - Header + +```cshtml {4} showLineNumbers + + Dropdown + + Dropdown header + Action + Another action + Something else here + + +``` + +[See the demo here.](https://demos.blazorbootstrap.com/dropdown#header) + +### Dividers + +Separate groups of related menu items with a divider. + +Blazor Bootstrap: Dropdown Component - Dividers + +```cshtml {7} showLineNumbers + + Dropdown + + Action + Another action + Something else here + Dropdown header + Separated link + + +``` + +[See the demo here.](https://demos.blazorbootstrap.com/dropdown#dividers) + +### Text + +Place any freeform text within a dropdown menu with text and use spacing utilities. Note that youll likely need additional sizing styles to constrain the menu width. + +Blazor Bootstrap: Dropdown Component - Text + +```cshtml {3-6} showLineNumbers + + Dropdown + +

    Some example text that's free-flowing within the dropdown menu.

    +

    And this is more example text.

    +
    +
    +``` + +[See the demo here.](https://demos.blazorbootstrap.com/dropdown#text) + +### Forms + +Put a form within a dropdown menu, or make it into a dropdown menu, and use margin or padding utilities to give it the negative space you require. + +Blazor Bootstrap: Dropdown Component - Forms + +```cshtml {4-14,20-47} showLineNumbers +@using System.ComponentModel.DataAnnotations + + + + + Dropdown form + + + + +
    + + + +
    + +
    + + + +
    + +
    + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +``` + +```cs {} showLineNumbers +@code { + private Invoice invoice = new(); + private EditContext editContext = default!; + + protected override void OnInitialized() + { + editContext = new EditContext(invoice); + base.OnInitialized(); + } + + protected override void OnParametersSet() + { + CalculateToatl(); + base.OnParametersSet(); + } + + private void PriceChanged(decimal? value) + { + invoice.Price = value; + CalculateToatl(); + } + + private void DiscountChanged(decimal? value) + { + invoice.Discount = value; + CalculateToatl(); + } + + private void CalculateToatl() + { + var price = invoice.Price.HasValue ? invoice.Price.Value : 0; + var discount = invoice.Discount.HasValue ? invoice.Discount.Value : 0; + invoice.Total = price - discount; + } + + public void HandleOnValidSubmit() + { + Console.WriteLine($"Price: {invoice.Price}"); + Console.WriteLine($"Discount: {invoice.Discount}"); + Console.WriteLine($"Total: {invoice.Total}"); + } + + private void ResetForm() + { + invoice = new(); + editContext = new EditContext(invoice); + } + + public class Invoice + { + [Required(ErrorMessage = "Price required.")] + [Range(60, 500, ErrorMessage = "Price should be between 60 and 500.")] + public decimal? Price { get; set; } = 232M; + + [Range(0, 50, ErrorMessage = "Discount should be between 0 and 50.")] + public decimal? Discount { get; set; } + + [Required(ErrorMessage = "Amount required.")] + [Range(10, 500, ErrorMessage = "Total should be between 60 and 500.")] + public decimal? Total { get; set; } + } +} +``` + +[See the demo here.](https://demos.blazorbootstrap.com/dropdown#forms) + +### Auto close behavior + +By default, the DropdownMenu is closed when clicking either inside or outside the DropdownMenu. You can use the AutoClose and AutoCloseBehavior parameters to change this behavior of the Dropdown. + +Blazor Bootstrap: Dropdown Component - Auto close behavior + +```cshtml {1,9,17,25} showLineNumbers + + Default dropdown + + Menu item + Menu item + Menu item + + + + Clickable outside + + Menu item + Menu item + Menu item + + + + Clickable inside + + Menu item + Menu item + Menu item + + + + Manual close + + Menu item + Menu item + Menu item + + +``` + +[See the demo here.](https://demos.blazorbootstrap.com/dropdown#auto-close-behavior) + +### Methods + +Blazor Bootstrap: Dropdown Component - Methods + +```cshtml {10-12} showLineNumbers + + Dropdown button + + Action + Another action + Something else here + + + + + + +``` + +```cs {4-6} showLineNumbers +@code{ + private Dropdown dropdown1 = default!; + + private async Task ShowAsync() => await dropdown1.ShowAsync(); + private async Task HideAsync() => await dropdown1.HideAsync(); + private async Task ToggleAsync() => await dropdown1.ToggleAsync(); +} +``` + +[See the demo here.](https://demos.blazorbootstrap.com/dropdown#methods) + +### Events + +All dropdown events are fired at the toggling element and then bubbled up. + +Blazor Bootstrap: Dropdown Component - Events + +```cshtml {1-4} showLineNumbers + + Dropdown button + + Action + Another action + Something else here + + +``` + +```cs {4-7} showLineNumbers +@code { + List messages = new List(); + + private void OnDropdownHidingAsync() => messages.Add(new("OnHiding")); + private void OnDropdownHiddenAsync() => messages.Add(new("OnHidden")); + private void OnDropdownShowingAsync() => messages.Add(new("OnShowing")); + private void OnDropdownShownAsync() => messages.Add(new("OnShown")); +} +``` + +[See the demo here.](https://demos.blazorbootstrap.com/dropdown#events) diff --git a/docs/docs/05-components/grid.mdx b/docs/docs/05-components/grid.mdx new file mode 100644 index 000000000..1a4b956a1 --- /dev/null +++ b/docs/docs/05-components/grid.mdx @@ -0,0 +1,3136 @@ +--- +title: Blazor Grid Component +description: Use Blazor Bootstrap grid component to display tabular data from the data source. And it supports client-side and server-side paging & sorting. +image: https://i.imgur.com/kKNgo2I.png + +sidebar_label: Grid +sidebar_position: 12 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Grid + +Use Blazor Bootstrap grid component to display tabular data from the data source. And it supports client-side and server-side paging & sorting. + + + +Blazor Bootstrap: Grid Component + +## Grid Parameters + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| AllowFiltering | bool | false | | Gets or sets the grid filtering. | 1.0.0 | +| AllowPaging | bool | false | | Gets or sets the grid paging. | 1.0.0 | +| AllowRowClick | bool | false | | Gets or sets the allow row click. | 1.9.5 | +| AllowSelection | bool | false | | Gets or sets the grid selection. | 1.8.0 | +| AllowSorting | bool | false | | Gets or sets the grid sorting. | 1.0.0 | +| AutoHidePaging | bool | false | | Automatically hides the paging controls when the grid item count is less than or equal to the `PageSize` and this property is set to `true`. | 1.10.5 | +| ChildContent | RenderFragment | | ✔️ | Gets or sets the content to be rendered within the component. | 1.0.0 | +| Data | `IEnumerable` | | | Gets or sets the grid data. | 1.4.3 | +| DataProvider | `GridDataProviderDelegate` | | | DataProvider is for items to render. The provider should always return an instance of `GridDataProviderResult`, and `null` is not allowed. | 1.0.0 | +| DisableAllRowsSelection | `Func, bool>?` | | | Enable or disable the header checkbox selection. | 1.8.0 | +| DisableRowSelection | `Func?` | | | Enable or disable the row level checkbox selection. | 1.8.0 | +| EmptyDataTemplate | RenderFragment | | ✔️ | Template to render when there are no rows to display. | 1.0.0 | +| EmptyText | string | No records to display | | Shows text on no records. | 1.0.0 | +| FiltersRowCssClass | string | | | Gets or sets the filters row css class. | 1.9.2 | +| FiltersTranslationProvider | `GridFiltersTranslationDelegate` | | | Filters transalation is for grid filters to render. The provider should always return a 'FilterOperatorInfo' collection, and 'null' is not allowed. | 1.10.0 | +| FixedHeader | bool | false | | Gets or sets the grid fixed header. | 1.10.3 | +| HeaderRowCssClass | string | | | Gets or sets the header row css class but not the thead tag class. | 1.9.2 | +| Height | float | 320 pixels | | Gets or sets the grid height. | 1.10.3 | +| ItemsPerPageText | string | `Items per page` | ✔️ | Gets or sets the ItemsPerPageText. | 1.9.5 | +| PageSize | int | 10 | | Gets or sets the page size of the grid. | 1.0.0 | +| PageSizeSelectorItems | int[] | `new int[] { 10, 20, 50 }` | ✔️ | Gets or sets the page size selector items. | 1.8.0 | +| PageSizeSelectorVisible | bool | false | ✔️ | Gets or sets the page size selector visible. | 1.8.0 | +| PaginationItemsTextFormat | string | `{0} - {1} of {2} items` | ✔️ | Gets or sets the pagination items text format. | 1.8.0 | +| RowClass | `Func?` | | | Gets or sets the row class. | 1.6.0 | +| Responsive | bool | false | | Gets or sets a value indicating whether Grid is responsive. | 1.0.0 | +| SelectionMode | `GridSelectionMode` | | | Gets or sets the grid selection mode. | 1.8.0 | +| SettingsProvider | `GridSettingsProviderDelegate` | | | Settings are for the grid to render. The provider should always return an instance of 'GridSettings', and 'null' is not allowed. | 1.0.0 | +| THeadCssClass | `string?` | null | | Gets or sets the thead css class. | 1.10.3 | +| Unit | `Unit` | `Unit.px` | | Gets or sets the units. | 1.10.3 | + +:::note IMPORTANT +Grid requires either `Data` or `DataProvider` parameter, but not both. +::: + +## Grid Callback Events + +| Name | Type | Description | Added Version | +|:--|:--|:--|:--| +| GridSettingsChanged | `EventCallback` | This event is fired when the grid state is changed. | 1.0.0 | +| OnRowClick | `EventCallback>` | This event is triggered when the user clicks on the row. Set AllowRowClick to true to enable row clicking. | 1.9.5 | +| OnRowDoubleClick | `EventCallback>` | This event is triggered when the user double clicks on the row. Set AllowRowClick to true to enable row double clicking. | 1.9.5 | +| SelectedItemsChanged | `EventCallback>` | This event is fired when the items selection changed. | 1.8.0 | + +## Grid Methods +| Name | Return Type | Description | Added Version | +|:--|:--|:--|:--| +| GetFilters() | `IEnumerable` | Get filters. | 1.0.0 | +| RefreshDataAsync(CancellationToken cancellationToken = default) | Task | Refresh the grid data. | 1.0.0 | +| ResetPageNumber() | ValueTask | Reset the page number to 1 and refresh the grid. | 1.4.3 | + +## GridColumn Parameters + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| ChildContent | RenderFragment | | ✔️ | Gets or sets the content to be rendered within the component. | 1.0.0 | +| ColumnClass | `Func?` | | | Gets or sets the column class. | 1.6.0 | +| Filterable | bool | true | | Enable or disable the filter on a specific column. The filter is enabled or disabled based on the grid `AllowFiltering` parameter. | 1.0.0 | +| FilterOperator | enum | Assigned based on the property type. | | Gets or sets the filter operator. | 1.0.0 | +| FilterTextboxWidth | int | | | Gets or sets the filter textbox width in pixels. | 1.0.0 | +| FilterValue | string | | | Gets or sets the filter value. | 1.0.0 | +| Freeze | bool | false | | Indicates whether the column is frozen. | 1.10.4 | +| FreezeDirection | `FreezeDirection` | `FreezeDirection.Left` | | Gets or sets the freeze direction of the column. | 1.10.4 | +| FreezeLeftPosition | double | 0 | | Gets or sets the horizontal position of the column from left. It has no effect on non-positioned columns. | 1.10.4 | +| FreezeRightPosition | double | 0 | | Gets or sets the horizontal position of the column from right. It has no effect on non-positioned columns. | 1.10.4 | +| HeaderContent | RenderFragment | | | Specifies the content to be rendered inside the grid column header. | 1.7.3 | +| HeaderText | string | | ✔️ | Gets or sets the table column header. | 1.0.0 | +| HeaderTextAlignment | enum | `Alignment.Start` | | Gets or sets the header text alignment. Use `Alignment.Start` or `Alignment.Center` or `Alignment.End`. | 1.0.0 | +| IsDefaultSortColumn | bool | false | | Gets or sets the default sort column. | 1.0.0 | +| PropertyName | string | | | Gets or sets the property name. This is required when `AllowFiltering` is true. | 1.0.0 | +| Sortable | bool | false | | Enable or disable the sorting on a specific column. The sorting is enabled or disabled based on the grid `AllowSorting` parameter. | 1.0.0 | +| SortDirection | enum | `SortDirection.None` | | Gets or sets the default sort direction of a column. Use `SortDirection.Ascending` or `SortDirection.Descending` | 1.0.0 | +| SortKeySelector | `Expression>` | | | Expression used for sorting. | 1.0.0 | +| SortString | string | | | Gets or sets the column sort string. This string is passed to the backend/API for sorting. And it is ignored for client-side sorting. | 1.0.0 | +| StringComparison | enum | `StringComparison.OrdinalIgnoreCase` | | Gets or sets the StringComparison. Use `StringComparison.CurrentCulture` or `StringComparison.CurrentCultureIgnoreCase` or `StringComparison.InvariantCulture` or `StringComparison.InvariantCultureIgnoreCase` or `StringComparison.Ordinal` or `StringComparison.OrdinalIgnoreCase`. | 1.0.0 | +| TextAlignment | `Alignment` | `Alignment.Start` | | Gets or sets the text alignment. Use `Alignment.Start` or `Alignment.Center` or `Alignment.End`. | 1.0.0 | +| TextNoWrap | bool | false | | Gets or sets text nowrap. | 1.0.0 | + +## GridSettings Properties + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| PageNumber | int | | | Page number. | 1.0.0 | +| PageSize | int | | | Size of the page. | 1.0.0 | +| Filters | `IEnumerable` | | | Current filters. | 1.0.0 | + +## Examples + +### Client side filtering + +For filtering, `AllowFiltering` and `PropertyName` parameters are required. +Add `AllowFiltering="true"` parameter to Grid and `PropertyName` parameter to all the GridColumns. + +Blazor Bootstrap: Grid Component - Client side filtering + +```cshtml {1,2,5,8,11,14} showLineNumbers + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + +``` + +```cs showLineNumbers +@code { + private IEnumerable employees; + + protected override void OnInitialized() + { + employees = new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + }; + } + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + return await Task.FromResult(request.ApplyTo(employees)); + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#client-side-filtering) + +### Client side filtering with string comparision + +In the below example, `StringComparision.Ordinal` is used on the **Employee Name** column to make the filter case-sensitive. + +Blazor Bootstrap: Grid Component - Client side filtering with string comparision + +```cshtml {5} showLineNumbers + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + +``` + +```cs showLineNumbers +@code { + private IEnumerable employees; + + protected override void OnInitialized() + { + employees = new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + }; + } + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + return await Task.FromResult(request.ApplyTo(employees)); + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#client-side-filtering-with-string-comparision) + +:::info +By default, StringComparison.OrdinalIgnoreCase is used to compare culture-agnostic and case-insensitive string matching. +::: + +### Client side paging + +For paging, `AllowPaging` and `PageSize` parameters are required. +Add `AllowPaging="true"` and `PageSize="20"` parameters to the Grid. `PageSize` parameter is optional. + +Blazor Bootstrap: Grid Component - Client side paging + +:::info INFO +The default page size is 10. +::: + +```cshtml {1} showLineNumbers + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + +``` + +```cs showLineNumbers +@code { + private IEnumerable employees; + + protected override void OnInitialized() + { + employees = new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 113, Name = "Merlin", Designation = "Senior Consultant", DOJ = new DateOnly(1989, 10, 2), IsActive = true }, + new Employee1 { Id = 117, Name = "Sharna", Designation = "Data Analyst", DOJ = new DateOnly(1994, 5, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + new Employee1 { Id = 111, Name = "Glenda", Designation = "Data Engineer", DOJ = new DateOnly(1994, 1, 12), IsActive = true }, + }; + } + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + return await Task.FromResult(request.ApplyTo(employees)); + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#client-side-paging) + +### Client side sorting + +For sorting, `AllowSorting` and `SortKeySelector` parameters are required. +Add `AllowSorting="true"` parameter to Grid and `SortKeySelector` to all the GridColumns. + +Blazor Bootstrap: Grid Component - Client side sorting + +```cshtml {1,2,5,8,11,14} showLineNumbers + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + +``` + +```cs showLineNumbers +@code { + private IEnumerable employees; + + protected override void OnInitialized() + { + employees = new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + }; + } + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + return await Task.FromResult(request.ApplyTo(employees)); + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#client-side-sorting) + +### Client side filtering, paging, and sorting + +Blazor Bootstrap: Grid Component - Client side filtering, paging, and sorting + +```cshtml {1,2,5,8,11,14} showLineNumbers + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + +``` + +```cs showLineNumbers +@code { + private IEnumerable employees; + + protected override void OnInitialized() + { + employees = new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 113, Name = "Merlin", Designation = "Senior Consultant", DOJ = new DateOnly(1989, 10, 2), IsActive = true }, + new Employee1 { Id = 117, Name = "Sharna", Designation = "Data Analyst", DOJ = new DateOnly(1994, 5, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + new Employee1 { Id = 111, Name = "Glenda", Designation = "Data Engineer", DOJ = new DateOnly(1994, 1, 12), IsActive = true }, + }; + } + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + return await Task.FromResult(request.ApplyTo(employees)); + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#client-side-filtering-paging-sorting) + +### Set default filter + +`FilterOperator` and `FilterValue` parameters are required to set the default filter. + +Blazor Bootstrap: Grid Component - Set default filter + +:::tip TIP +You can set the default filter on more than one GridColumn. +::: + +```cshtml {2} showLineNumbers + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + +``` + +```cs showLineNumbers +@code { + private IEnumerable employees; + + protected override void OnInitialized() + { + employees = new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + }; + } + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + return await Task.FromResult(request.ApplyTo(employees)); + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#set-default-filter) + +### Disable specific column filter + +`Filterable` parameter is required to disable the filter on a specific column. +Add `Filterable="false"` parameter to GridColumn. + +Blazor Bootstrap: Grid Component - Disable specific column filter + +:::info INFO +By default, `Filterable="true"` on all the columns if the `AllowFiltering` parameter is set to `true` on the grid. +::: +```cshtml {14} showLineNumbers + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + +``` + +```cs showLineNumbers +@code { + private IEnumerable employees; + + protected override void OnInitialized() + { + employees = new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + }; + } + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + return await Task.FromResult(request.ApplyTo(employees)); + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#disable-specific-column-filter) + +### Increase filter textbox width + +Add `FilterTextboxWidth` parameter to the GridColumn to increase or decrease the filter textbox width, `FilterTextboxWidth` parameter is optional. + +Blazor Bootstrap: Grid Component - Increase filter textbox width + +:::note NOTE +Filter textbox width measured in pixels. +::: + +```cshtml {2,5,8} showLineNumbers + + + @context.Id + + + @context.FirstName + + + @context.LastName + + + @context.Email + + + @context.Company + + + @context.Designation + + + @context.DOJ + + + @context.Salary.ToString("N2") + + + @context.IsActive + + +``` + +```cs showLineNumbers +@code { + private IEnumerable employees; + + protected override void OnInitialized() + { + employees = new List + { + new Employee3 { Id = 107, FirstName = "Alice", LastName = "Reddy", Email = "alice@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), Salary = 7700, IsActive = true }, + new Employee3 { Id = 103, FirstName = "Bob", LastName = "Roy", Email = "bob@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), Salary = 19000, IsActive = true }, + new Employee3 { Id = 106, FirstName = "John", LastName = "Papa", Email = "john@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), Salary = 12000, IsActive = true }, + new Employee3 { Id = 104, FirstName = "Pop", LastName = "Two", Email = "pop@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), Salary = 19000, IsActive = false }, + new Employee3 { Id = 105, FirstName = "Ronald", LastName = "Dire", Email = "ronald@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), Salary = 16500.50M, IsActive = true }, + new Employee3 { Id = 102, FirstName = "Line", LastName = "K", Email = "line@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), Salary = 24000, IsActive = true }, + new Employee3 { Id = 101, FirstName = "Daniel", LastName = "Potter", Email = "daniel@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), Salary = 21000, IsActive = true }, + new Employee3 { Id = 108, FirstName = "Zayne", LastName = "Simmons", Email = "zayne@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), Salary = 17850, IsActive = true }, + new Employee3 { Id = 109, FirstName = "Isha", LastName = "Davison", Email = "isha@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), Salary = 8000, IsActive = true }, + }; + } + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + return await Task.FromResult(request.ApplyTo(employees)); + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#increase-filter-textbox-width) + +### Server side filtering, paging and sorting + +Blazor Bootstrap: Grid Component - Server side filtering, paging and sorting + +:::note NOTE +For server-side sorting, we need the `SortString` parameter on GridColumn along with the `SortKeySelector` parameter. +::: + +```cshtml showLineNumbers + + + @context.Id + + + @context.FirstName + + + @context.LastName + + + @context.Designation + + + @context.Salary + + + @context.DOJ + + + @context.IsActive + + +``` + +```cs {11} showLineNumbers +@code { + [Inject] public IEmployeeService _employeeService { get; set; } + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + string sortString = ""; + SortDirection sortDirection = SortDirection.None; + + if (request.Sorting is not null && request.Sorting.Any()) + { + // Note: Multi column sorting is not supported at this moment + sortString = request.Sorting[0].SortString; + sortDirection = request.Sorting[0].SortDirection; + } + var result = _employeeService.GetEmployees(request.Filters, request.PageNumber, request.PageSize, sortString, sortDirection); + return await Task.FromResult(new GridDataProviderResult { Data = result.Item1, TotalCount = result.Item2 }); + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#server-side-filtering-paging-sorting) + +### Set default sorting + +`IsDefaultSortColumn` parameter is required to set the default sorting. Add `IsDefaultSortColumn="true"` parameter to the GridColumn. +The default sort direction will be **ascending**. To change the default sorting of a column, add `SortDirection="SortDirection.Descending"` to the GridColumn. + +Blazor Bootstrap: Grid Component - Set default sorting + +:::info INFO +If more than one GridColumn has the `IsDefaultSortColumn` paramter, it will pick the first column as the default sorting column. +::: + +```cshtml {5} showLineNumbers + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + +``` + +```cs showLineNumbers +@code { + private IEnumerable employees; + + protected override void OnInitialized() + { + employees = new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + }; + } + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + return await Task.FromResult(request.ApplyTo(employees)); + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#set-default-sorting) + +### Disable specific column sorting + +Add `Sortable="false"` parameter the GridColumn to disable the sorting. + +:::info INFO +If sorting is disabled, then the `SortKeySelector` parameter is not required. +::: + +```cshtml {8} showLineNumbers + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + +``` + +```cs showLineNumbers +@code { + private IEnumerable employees; + + protected override void OnInitialized() + { + employees = new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + }; + } + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + return await Task.FromResult(request.ApplyTo(employees)); + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#disable-specific-column-sorting) + +### Header text alignment + +Use the `HeaderTextAlignment` parameter to change the header column alignment. +By default, `HeaderTextAlignment` is set to Alignment.Start. Other options you can use are `Alignment.Center` and `Alignment.End`. + +Blazor Bootstrap: Grid Component - Header text alignment + +```cshtml {8,11,14} showLineNumbers + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + +``` + +```cs showLineNumbers +@code { + private IEnumerable employees; + + protected override void OnInitialized() + { + employees = new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + }; + } + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + return await Task.FromResult(request.ApplyTo(employees)); + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#header-text-alignment) + +### Cell alignment + +Use the `TextAlignment` parameter to change the cell data alignment. +By default, `TextAlignment` is set to `Alignment.Start`. Other options you can use are `Alignment.Center` and `Alignment.End`. + +Blazor Bootstrap: Grid Component - Cell alignment + +```cshtml {11,14} showLineNumbers + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.Salary + + + @context.IsActive + + +``` + +```cs showLineNumbers +@code { + private IEnumerable employees; + + protected override void OnInitialized() + { + employees = new List + { + new Employee2 { Id = 107, Name = "Alice", Designation = "AI Engineer", Salary = 7700, IsActive = true }, + new Employee2 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", Salary = 19000, IsActive = true }, + new Employee2 { Id = 106, Name = "John", Designation = "Data Engineer", Salary = 12000, IsActive = true }, + new Employee2 { Id = 104, Name = "Pop", Designation = "Associate Architect", Salary = 19000, IsActive = false }, + new Employee2 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", Salary = 16500.50M, IsActive = true }, + new Employee2 { Id = 102, Name = "Line", Designation = "Architect", Salary = 24000, IsActive = true }, + new Employee2 { Id = 101, Name = "Daniel", Designation = "Architect", Salary = 21000, IsActive = true }, + new Employee2 { Id = 108, Name = "Zayne", Designation = "Data Analyst", Salary = 17850, IsActive = true }, + new Employee2 { Id = 109, Name = "Isha", Designation = "App Maker", Salary = 8000, IsActive = true }, + }; + } + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + return await Task.FromResult(request.ApplyTo(employees)); + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#cell-alignment) + +### Cell formating +To format the cell data, use `ToString` method and format strings. Refer: [How to format numbers, dates, enums, and other types in .NET](https://docs.microsoft.com/en-us/dotnet/standard/base-types/formatting-types) + +Blazor Bootstrap: Grid Component - Cell formating + +:::tip EXAMPLE +@context.Salary.ToString("N2") +::: + +```cshtml {12} showLineNumbers + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.Salary.ToString("N2") + + + @context.IsActive + + +``` + +```cs showLineNumbers +@code { + private IEnumerable employees; + + protected override void OnInitialized() + { + employees = new List + { + new Employee2 { Id = 107, Name = "Alice", Designation = "AI Engineer", Salary = 7700, IsActive = true }, + new Employee2 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", Salary = 19000, IsActive = true }, + new Employee2 { Id = 106, Name = "John", Designation = "Data Engineer", Salary = 12000, IsActive = true }, + new Employee2 { Id = 104, Name = "Pop", Designation = "Associate Architect", Salary = 19000, IsActive = false }, + new Employee2 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", Salary = 16500.50M, IsActive = true }, + new Employee2 { Id = 102, Name = "Line", Designation = "Architect", Salary = 24000, IsActive = true }, + new Employee2 { Id = 101, Name = "Daniel", Designation = "Architect", Salary = 21000, IsActive = true }, + new Employee2 { Id = 108, Name = "Zayne", Designation = "Data Analyst", Salary = 17850, IsActive = true }, + new Employee2 { Id = 109, Name = "Isha", Designation = "App Maker", Salary = 8000, IsActive = true }, + }; + } + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + return await Task.FromResult(request.ApplyTo(employees)); + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#cell-formating) + +### Cell nowrap + +To prevent text from wrapping, add `TextNoWrap="true"` parameter to the GridColumn. + +Blazor Bootstrap: Grid Component - Cell nowrap + +:::tip TIP +Add `Responsive="true"` parameter to the grid to enable horizontal scrolling. +::: + +```cshtml {14,17} showLineNumbers + + + @context.Id + + + @context.FirstName + + + @context.LastName + + + @context.Email + + + @context.Company + + + @context.Designation + + + @context.DOJ + + + @context.Salary.ToString("N2") + + + @context.IsActive + + +``` + +```cs showLineNumbers +@code { + private IEnumerable employees; + + protected override void OnInitialized() + { + employees = new List + { + new Employee3 { Id = 107, FirstName = "Alice", LastName = "Reddy", Email = "alice@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), Salary = 7700, IsActive = true }, + new Employee3 { Id = 103, FirstName = "Bob", LastName = "Roy", Email = "bob@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), Salary = 19000, IsActive = true }, + new Employee3 { Id = 106, FirstName = "John", LastName = "Papa", Email = "john@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), Salary = 12000, IsActive = true }, + new Employee3 { Id = 104, FirstName = "Pop", LastName = "Two", Email = "pop@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), Salary = 19000, IsActive = false }, + new Employee3 { Id = 105, FirstName = "Ronald", LastName = "Dire", Email = "ronald@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), Salary = 16500.50M, IsActive = true }, + new Employee3 { Id = 102, FirstName = "Line", LastName = "K", Email = "line@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), Salary = 24000, IsActive = true }, + new Employee3 { Id = 101, FirstName = "Daniel", LastName = "Potter", Email = "daniel@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), Salary = 21000, IsActive = true }, + new Employee3 { Id = 108, FirstName = "Zayne", LastName = "Simmons", Email = "zayne@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), Salary = 17850, IsActive = true }, + new Employee3 { Id = 109, FirstName = "Isha", LastName = "Davison", Email = "isha@blazorbootstrap.com", Company = "BlazorBootstrap Company", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), Salary = 8000, IsActive = true }, + }; + } + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + return await Task.FromResult(request.ApplyTo(employees)); + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#cell-nowrap) + +### Pagination alignment + +Change the alignment of pagination by adding the `PaginationAlignment` parameter to the Grid. +By default, `PaginationAlignment` is set to `Alignment.Start`. Other options you can use are `Alignment.Center` and `Alignment.End`. + +Blazor Bootstrap: Grid Component - Pagination alignment + +```cshtml {1} showLineNumbers + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + +``` + +```cs showLineNumbers +@code { + private IEnumerable employees; + + protected override void OnInitialized() + { + employees = new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 113, Name = "Merlin", Designation = "Senior Consultant", DOJ = new DateOnly(1989, 10, 2), IsActive = true }, + new Employee1 { Id = 117, Name = "Sharna", Designation = "Data Analyst", DOJ = new DateOnly(1994, 5, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + new Employee1 { Id = 111, Name = "Glenda", Designation = "Data Engineer", DOJ = new DateOnly(1994, 1, 12), IsActive = true }, + }; + } + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + return await Task.FromResult(request.ApplyTo(employees)); + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#pagination-alignment) + +### Empty data + +If there are no records to display in the Grid, by default, it will display the **No records to display** message. +You can change this message by adding the `EmptyText` parameter to the Grid. + +Blazor Bootstrap: Grid Component - Empty data + +```cshtml {1} showLineNumbers + + + @context.Id + + + @context.FirstName + + + @context.LastName + + + @context.Designation + + +``` + +```cs showLineNumbers +@code { + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + await Task.Delay(3000); + + return (new GridDataProviderResult { Data = new List(), TotalCount = 0 }); + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#empty-data) + +:::tip TIP +Add `Responsive="true"` parameter to the grid to enable horizontal scrolling. +::: + +### Save and Load Grid Settings + +This example shows how to save/load the Grid state. The state includes the page number, page size, and filters. + +:::danger IMPORTANT +Saving the Grid's sorting state as part of GridSettings is not yet supported. This functionality will be included in future releases. +::: + +:::note NOTE +Browser local storage is used to persist the Grid state. Common locations exist for persisting state are **Server-side storage**, **URL**, **Browser storage**, and **In-memory state container service**. +::: + +Blazor Bootstrap: Grid Component - Save and Load Grid Settings + +```cshtml {1,6,7} showLineNumbers +@using System.Text.Json + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + +``` + +```cshtml {1,6,7} showLineNumbers + +@code { + BlazorBootstrap.Grid grid; + private IEnumerable employees; + + [Inject] public IJSRuntime JS { get; set; } + public GridSettings Settings { get; set; } + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private async Task OnGridSettingsChanged(GridSettings settings) + { + if (settings is null) + return; + + // NOTE: enable below two lines, if you want to set default values for PageNumber and PageSize all the time. + //settings.PageNumber = 1; + //settings.PageSize = 10; + + await JS.InvokeVoidAsync("window.localStorage.setItem", "grid-settings", JsonSerializer.Serialize(settings)); + } + + private async Task GridSettingsProvider() + { + var settingsJson = await JS.InvokeAsync("window.localStorage.getItem", "grid-settings"); + if (string.IsNullOrWhiteSpace(settingsJson)) + return null; + + var settings = JsonSerializer.Deserialize(settingsJson); + if (settings is null) + return null; + + return settings; + } + + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 113, Name = "Merlin", Designation = "Senior Consultant", DOJ = new DateOnly(1989, 10, 2), IsActive = true }, + new Employee1 { Id = 117, Name = "Sharna", Designation = "Data Analyst", DOJ = new DateOnly(1994, 5, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + new Employee1 { Id = 111, Name = "Glenda", Designation = "Data Engineer", DOJ = new DateOnly(1994, 1, 12), IsActive = true }, + }; + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#save-and-load-grid-settings) + +### Data parameter - Assign collection + +Assign a collection to the `Data` parameter to render the grid dynamically. The example below will render different department employees in the individual grid. + +```cshtml {} showLineNumbers +@using BlazorBootstrap.Demo.Models; + +@foreach (var department in departments) +{ +

    @department.Name Employees:

    + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + +} +``` + +```cs {} showLineNumbers +@code { + Grid grid; + + private List departments = new List() + { + new Department("Product 1 - Research & Development", new List { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true } + }), + new Department("Product 2 - Research & Development", new List { + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true } + }) + }; +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#data-parameter-assign-collection) + +### Data parameter - Update collection + +Assign a collection to the `Data` parameter to render the grid dynamically. The example below will render different department employees in the individual grid. + +```cshtml {} showLineNumbers +@using BlazorBootstrap.Demo.Models; + + + + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + +``` + +```cs {} showLineNumbers +@code { + Grid grid; + + private List employees; + + protected override void OnInitialized() + { + employees = new List { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true } + }; + } + + private async Task AddEmployee() + { + // for the same employees collection, we are adding an object + // explicit grid refresh required + employees.Add(CreateEmployee()); + await grid.RefreshDataAsync(); + } + + private void AddEmployee2() + { + // creates a shallow copy + var emps = employees.GetRange(0, employees.Count); + emps.Add(CreateEmployee()); + // now employees variable has a new reference. So no need to refresh the grid explicitly + // explicit grid refresh is not required + employees = emps; + } + + private Employee1 CreateEmployee() + { + var emp = new Employee1(); + emp.Id = employees.Max(x => x.Id) + 1; + emp.Name = $"Employee {emp.Id}"; + emp.Designation = $"QA Engineer {emp.Id}"; + emp.DOJ = new DateOnly(new Random().Next(1970, 2000), new Random().Next(1, 12), new Random().Next(1, 25)); + emp.IsActive = true; + return emp; + } +} +``` + +:::note +The **Add Employee** button click adds a new employee to the existing **employees** collection—so explicit grid refresh is required. + +The **Add Employee 2** button click creates a shallow copy of the **employees** collection and adds a new employee. This new collection is assigned to the **employees** variable. Now, the **employees** variable has a new reference. So the grid will refresh automatically. An explicit grid refresh call is not required. +::: + +[See demo here](https://demos.blazorbootstrap.com/grid#data-parameter-update-collection) + +### Conditional css class for grid row + +In the below example, we applied `table-danger` CSS class to the row where the employee is inactive and the `table-success` CSS class to the row where the employee designation is Architect. + +Blazor Bootstrap: Grid Component - Conditional css class for grid row + +```cshtml {9} showLineNumbers + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + +``` + +```cs {12-20} showLineNumbers +@code { + private IEnumerable employees; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private string GetRowClass(Employee1 emp) + { + if (!emp.IsActive) + return "table-danger"; + else if (emp.Designation == "Architect") + return "table-success"; + + return string.Empty; + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 113, Name = "Merlin", Designation = "Senior Consultant", DOJ = new DateOnly(1989, 10, 2), IsActive = true }, + new Employee1 { Id = 117, Name = "Sharna", Designation = "Data Analyst", DOJ = new DateOnly(1994, 5, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + new Employee1 { Id = 111, Name = "Glenda", Designation = "Data Engineer", DOJ = new DateOnly(1994, 1, 12), IsActive = true }, + }; + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#conditional-css-class-for-grid-row) + +### Conditional css class for grid column + +In the below example, we applied `table-danger` CSS class to the Active column where the employee is inactive and the `table-success` CSS class to the Active column where the employee is active. + +Blazor Bootstrap: Grid Component - Conditional css class for grid column + +```cshtml {26} showLineNumbers + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + +``` +```cs {} showLineNumbers +@code { + private IEnumerable employees; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 113, Name = "Merlin", Designation = "Senior Consultant", DOJ = new DateOnly(1989, 10, 2), IsActive = true }, + new Employee1 { Id = 117, Name = "Sharna", Designation = "Data Analyst", DOJ = new DateOnly(1994, 5, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + new Employee1 { Id = 111, Name = "Glenda", Designation = "Data Engineer", DOJ = new DateOnly(1994, 1, 12), IsActive = true }, + }; + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#conditional-css-class-for-grid-column) + +### Column class + +In the following example, the `Class` parameter is used to apply the CSS class to an entire grid column, including the header. + +Blazor Bootstrap: Grid Component - Column class + +```cshtml {13} showLineNumbers + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + +``` + +```cshtml {} showLineNumbers +@code { + private IEnumerable? employees; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 113, Name = "Merlin", Designation = "Senior Consultant", DOJ = new DateOnly(1989, 10, 2), IsActive = true }, + new Employee1 { Id = 117, Name = "Sharna", Designation = "Data Analyst", DOJ = new DateOnly(1994, 5, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + new Employee1 { Id = 111, Name = "Glenda", Designation = "Data Engineer", DOJ = new DateOnly(1994, 1, 12), IsActive = true }, + }; + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#colum-class) + +### Custom column headers + +In the below example, we use `` and `` tags to define custom column header and cell content. When defining header content, filters and sorting are removed from column. + +Blazor Bootstrap: Grid Component - Custom column headers + +```cshtml {23-29} showLineNumbers + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + + + + + + + + + +``` +```cs {4-8} showLineNumbers +@code { + private IEnumerable employees; + + private bool IsAllChecked + { + get => employees.All(e => e.IsActive); + set => Array.ForEach(employees.ToArray(), e => e.IsActive = value); + } + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 113, Name = "Merlin", Designation = "Senior Consultant", DOJ = new DateOnly(1989, 10, 2), IsActive = true }, + new Employee1 { Id = 117, Name = "Sharna", Designation = "Data Analyst", DOJ = new DateOnly(1994, 5, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + new Employee1 { Id = 111, Name = "Glenda", Designation = "Data Engineer", DOJ = new DateOnly(1994, 1, 12), IsActive = true }, + }; + } +} +``` + +### Selection + +Set `AllowSelection="true"` to enable the selection on the Grid. By default, SelectionMode is **Single**. + +Blazor Bootstrap: Grid Component - Selection + +```cshtml {4-5} showLineNumbers + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + + +
    + Selected Items Count: @selectedEmployees.Count +
    + +
    + Selected Employees: +
      + @foreach (var emp in selectedEmployees) + { +
    • @emp.Name
    • + } +
    +
    +``` + +```cs {32-36} showLineNumbers +@code { + private IEnumerable employees = default!; + + private HashSet selectedEmployees = new(); + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + Console.WriteLine("EmployeesDataProvider called..."); + + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + }; + } + + private Task OnSelectedItemsChanged(HashSet employees) + { + selectedEmployees = employees is not null && employees.Any() ? employees : new(); + return Task.CompletedTask; + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#selection) + +### Multiple selection + +To select multiple rows, set `SelectionMode="GridSelectionMode.Multiple"`. + +Blazor Bootstrap: Grid Component - Multiple selection + +```cshtml {4-6} showLineNumbers + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + + +
    + Selected Items Count: @selectedEmployees.Count +
    + +
    + Selected Employees: +
      + @foreach (var emp in selectedEmployees) + { +
    • @emp.Name
    • + } +
    +
    +``` + +```cs {32-36} showLineNumbers +@code { + private IEnumerable employees = default!; + + private HashSet selectedEmployees = new(); + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + Console.WriteLine("EmployeesDataProvider called..."); + + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + }; + } + + private Task OnSelectedItemsChanged(HashSet employees) + { + selectedEmployees = employees is not null && employees.Any() ? employees : new(); + return Task.CompletedTask; + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#multiple-selection) + +### Disable selection + +We can disable the header checkbox or row level checkbox based on a condition. +For this, we have `DisableAllRowsSelection` and `DisableRowSelection` delegate parameters. +In the below example, we disabled the header checkbox if any of the employee Id is less than 105. +Also, disable check the row level checkbox if the employee Id is less than 105. + +Blazor Bootstrap: Grid Component - Disable selection + +```cshtml {4-8} showLineNumbers + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + + +
    + Selected Items Count: @selectedEmployees.Count +
    + +
    + Selected Employees: +
      + @foreach (var emp in selectedEmployees) + { +
    • @emp.Name
    • + } +
    +
    +``` + +```cs {30-33,35-38,40-44} showLineNumbers +@code { + private IEnumerable employees = default!; + + private HashSet selectedEmployees = new(); + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + }; + } + + private bool DisableAllRowsSelectionHandler(IEnumerable employees) + { + return employees.Any(x => x.Id < 105); // disable selection if EmployeeId < 105 + } + + private bool DisableRowSelectionHandler(Employee1 emp) + { + return emp.Id < 105; // disable selection if EmployeeId < 105 + } + + private Task OnSelectedItemsChanged(HashSet employees) + { + selectedEmployees = employees is not null && employees.Any() ? employees : new(); + return Task.CompletedTask; + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#disable-selection) + +### Dynamic page size + +Blazor Bootstrap: Grid Component - Dynamic page size + +```cshtml {5,26-28} showLineNumbers + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + + + + + +``` + +```cs {2,32} showLineNumbers +@code { + private int pageSize = 5; + private IEnumerable employees = default!; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 113, Name = "Merlin", Designation = "Senior Consultant", DOJ = new DateOnly(1989, 10, 2), IsActive = true }, + new Employee1 { Id = 117, Name = "Sharna", Designation = "Data Analyst", DOJ = new DateOnly(1994, 5, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + new Employee1 { Id = 111, Name = "Glenda", Designation = "Data Engineer", DOJ = new DateOnly(1994, 1, 12), IsActive = true }, + }; + } + + private void ChangeSize(int size) => pageSize = size; +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#dynamic-page-size) + +### Page size selection + +Blazor Bootstrap: Grid Component - Page size selection + +```cshtml {5-7} showLineNumbers + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + +``` + +```cs {} showLineNumbers +@code { + private IEnumerable employees = default!; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 113, Name = "Merlin", Designation = "Senior Consultant", DOJ = new DateOnly(1989, 10, 2), IsActive = true }, + new Employee1 { Id = 117, Name = "Sharna", Designation = "Data Analyst", DOJ = new DateOnly(1994, 5, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + new Employee1 { Id = 111, Name = "Glenda", Designation = "Data Engineer", DOJ = new DateOnly(1994, 1, 12), IsActive = true }, + }; + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#page-size-selection) + +### Header row css class + +Blazor Bootstrap: Grid Component - Header row css class + +```cshtml {5,34,63,92} showLineNumbers + + + + @context.Id + + + + @context.Name + + + + @context.Designation + + + + @context.DOJ + + + + @context.IsActive + + + + + + + + @context.Id + + + + @context.Name + + + + @context.Designation + + + + @context.DOJ + + + + @context.IsActive + + + + + + + + @context.Id + + + + @context.Name + + + + @context.Designation + + + + @context.DOJ + + + + @context.IsActive + + + + + + + + @context.Id + + + + @context.Name + + + + @context.Designation + + + + @context.DOJ + + + + @context.IsActive + + + +``` + +```cs {} showLineNumbers +@code { + private IEnumerable employees = default!; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + }; + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#header-row-css-class) + +### Filters row css class + +Blazor Bootstrap: Grid Component - Filters row css class + +```cshtml {7,38,69,100,131,162,193} showLineNumbers + + + + @context.Id + + + + @context.Name + + + + @context.Designation + + + + @context.DOJ + + + + @context.IsActive + + + + + + + + @context.Id + + + + @context.Name + + + + @context.Designation + + + + @context.DOJ + + + + @context.IsActive + + + + + + + + @context.Id + + + + @context.Name + + + + @context.Designation + + + + @context.DOJ + + + + @context.IsActive + + + + + + + + @context.Id + + + + @context.Name + + + + @context.Designation + + + + @context.DOJ + + + + @context.IsActive + + + + + + + + @context.Id + + + + @context.Name + + + + @context.Designation + + + + @context.DOJ + + + + @context.IsActive + + + + + + + + @context.Id + + + + @context.Name + + + + @context.Designation + + + + @context.DOJ + + + + @context.IsActive + + + + + + + + @context.Id + + + + @context.Name + + + + @context.Designation + + + + @context.DOJ + + + + @context.IsActive + + + +``` + +```cs {} showLineNumbers +@code { + private IEnumerable employees = default!; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + }; + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#filters-row-css-class) + +### Row click event + +```cshtml {2,7} showLineNumbers + + + + @context.Id + + + + @context.Name + + + + @context.Designation + + + + @context.DOJ + + + + @context.IsActive + + + +``` + +```cs {27-30} showLineNumbers +@code { + [Inject] ModalService ModalService { get; set; } = default!; + + private IEnumerable employees = default!; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + }; + } + + private async Task OnRowClick(GridRowEventArgs args) + { + await ModalService.ShowAsync(new ModalOption { Type = ModalType.Primary, Title = "Event: Row Click", Message = $"Id: {args.Item.Id}, Name: {args.Item.Name}" }); + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#row-click-event) + +### Row double click event + +```cshtml {2,7} showLineNumbers + + + + @context.Id + + + + @context.Name + + + + @context.Designation + + + + @context.DOJ + + + + @context.IsActive + + + +``` + +```cs {27-30} showLineNumbers +@code { + [Inject] ModalService ModalService { get; set; } = default!; + + private IEnumerable employees = default!; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + }; + } + + private async Task OnRowDoubleClick(GridRowEventArgs args) + { + await ModalService.ShowAsync(new ModalOption { Type = ModalType.Primary, Title = "Event: Row Double Click", Message = $"Id: {args.Item.Id}, Name: {args.Item.Name}" }); + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#row-double-click-event) + +### Translations + +In the example below, you will see translations related to pagination and filters in **Dutch**. + +Blazor Bootstrap: Grid Component - Translations + +```cshtml {8,13-14} showLineNumbers + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + +``` + +```cs {4-25} showLineNumbers +@code { + private IEnumerable employees = default!; + + private async Task> GridFiltersTranslationProvider() + { + var filtersTranslation = new List(); + + // number/date/boolean + filtersTranslation.Add(new("=", "gelijk aan", FilterOperator.Equals)); + filtersTranslation.Add(new("!=", "Niet gelijk", FilterOperator.NotEquals)); + // number/date + filtersTranslation.Add(new("<", "Minder dan", FilterOperator.LessThan)); + filtersTranslation.Add(new("<=", "Kleiner dan of gelijk aan", FilterOperator.LessThanOrEquals)); + filtersTranslation.Add(new(">", "Groter dan", FilterOperator.GreaterThan)); + filtersTranslation.Add(new(">=", "Groter dan of gelijk aan", FilterOperator.GreaterThanOrEquals)); + // string + filtersTranslation.Add(new("*a*", "Bevat", FilterOperator.Contains)); + filtersTranslation.Add(new("a**", "Begint met", FilterOperator.StartsWith)); + filtersTranslation.Add(new("**a", "Eindigt met", FilterOperator.EndsWith)); + filtersTranslation.Add(new("=", "gelijk aan", FilterOperator.Equals)); + // common + filtersTranslation.Add(new("x", "Duidelijk", FilterOperator.Clear)); + + return await Task.FromResult(filtersTranslation); + } + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 113, Name = "Merlin", Designation = "Senior Consultant", DOJ = new DateOnly(1989, 10, 2), IsActive = true }, + new Employee1 { Id = 117, Name = "Sharna", Designation = "Data Analyst", DOJ = new DateOnly(1994, 5, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + new Employee1 { Id = 111, Name = "Glenda", Designation = "Data Engineer", DOJ = new DateOnly(1994, 1, 12), IsActive = true }, + }; + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#translations) + +### Fixed header + +To set the fixed header, set the **FixedHeader** parameter to **true**. The minimum height of the grid is **320 pixels**. You can change the units to em, pt, px, or etc. by setting the **Unit** parameter. + +Blazor Bootstrap: Grid Component - Fixed header + +```cshtml {5,6,8} showLineNumbers + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.Designation + + + @context.Designation + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + @context.IsActive + + + @context.IsActive + + + @context.IsActive + + + @context.IsActive + + + +``` + +```cs {} showLineNumbers +@code { + BlazorBootstrap.Grid grid = default!; + private IEnumerable employees = default!; + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + await base.OnAfterRenderAsync(firstRender); + } + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee4 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee4 { Id = null, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee4 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee4 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee4 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee4 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee4 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee4 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee4 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = null, IsActive = true }, + new Employee4 { Id = 110, Name = "Vijay", Designation = null, DOJ = new DateOnly(1990, 7, 1), IsActive = true }, + }; + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#fixed-header) + +### Fixed header with filters + +Blazor Bootstrap: Grid Component - Fixed header with filters + +```cshtml {4,7,9} showLineNumbers + + + + @context.CustomerId + + + @context.CustomerName + + + @context.Phone + + + @context.Email + + + @context.Address + + + @context.PostalZip + + + @context.Country + + + +``` + +```cs {} showLineNumbers +@code { + [Inject] public ICustomerService _customerService { get; set; } = default!; + + private async Task> CustomersDataProvider(GridDataProviderRequest request) + { + string sortString = ""; + SortDirection sortDirection = SortDirection.None; + + if (request.Sorting is not null && request.Sorting.Any()) + { + // Note: Multi column sorting is not supported at this moment + sortString = request.Sorting.FirstOrDefault().SortString; + sortDirection = request.Sorting.FirstOrDefault().SortDirection; + } + var result = await _customerService.GetCustomersAsync(request.Filters, request.PageNumber, request.PageSize, sortString, sortDirection, request.CancellationToken); + return await Task.FromResult(new GridDataProviderResult { Data = result.Item1, TotalCount = result.Item2 }); + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#fixed-header-with-filters) + +### Freeze columns + +Blazor Bootstrap: Grid Component - Freeze columns + +```cshtml {7,9,12,27} showLineNumbers + + + + @context.CustomerId + + + @context.CustomerName + + + @context.Phone + + + @context.Email + + + @context.Address + + + @context.PostalZip + + + @context.Country + + + +``` + +```cs {} showLineNumbers +@code { + [Inject] public ICustomerService _customerService { get; set; } = default!; + + private async Task> CustomersDataProvider(GridDataProviderRequest request) + { + string sortString = ""; + SortDirection sortDirection = SortDirection.None; + + if (request.Sorting is not null && request.Sorting.Any()) + { + // Note: Multi column sorting is not supported at this moment + sortString = request.Sorting.FirstOrDefault().SortString; + sortDirection = request.Sorting.FirstOrDefault().SortDirection; + } + var result = await _customerService.GetCustomersAsync(request.Filters, request.PageNumber, request.PageSize, sortString, sortDirection, request.CancellationToken); + return await Task.FromResult(new GridDataProviderResult { Data = result.Item1, TotalCount = result.Item2 }); + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#freeze-columns) + +### Freeze columns with fixed header + +Blazor Bootstrap: Grid Component - Freeze columns with fixed header + +```cshtml {6,8,10,13,28} showLineNumbers + + + + @context.CustomerId + + + @context.CustomerName + + + @context.Phone + + + @context.Email + + + @context.Address + + + @context.PostalZip + + + @context.Country + + + +``` + +```cs {} showLineNumbers +@code { + [Inject] public ICustomerService _customerService { get; set; } = default!; + + private async Task> CustomersDataProvider(GridDataProviderRequest request) + { + string sortString = ""; + SortDirection sortDirection = SortDirection.None; + + if (request.Sorting is not null && request.Sorting.Any()) + { + // Note: Multi column sorting is not supported at this moment + sortString = request.Sorting.FirstOrDefault().SortString; + sortDirection = request.Sorting.FirstOrDefault().SortDirection; + } + var result = await _customerService.GetCustomersAsync(request.Filters, request.PageNumber, request.PageSize, sortString, sortDirection, request.CancellationToken); + return await Task.FromResult(new GridDataProviderResult { Data = result.Item1, TotalCount = result.Item2 }); + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#freeze-columns-with-fixed-header) + +### Freeze columns with fixed header and filters + +Blazor Bootstrap: Grid Component - Freeze columns with fixed header and filters + +```cshtml {4,7,9,11,14,26,29} showLineNumbers + + + + @context.CustomerId + + + @context.CustomerName + + + @context.Phone + + + @context.Email + + + @context.Address + + + @context.PostalZip + + + @context.Country + + + +``` + +```cs {} showLineNumbers +@code { + [Inject] public ICustomerService _customerService { get; set; } = default!; + + private async Task> CustomersDataProvider(GridDataProviderRequest request) + { + string sortString = ""; + SortDirection sortDirection = SortDirection.None; + + if (request.Sorting is not null && request.Sorting.Any()) + { + // Note: Multi column sorting is not supported at this moment + sortString = request.Sorting.FirstOrDefault().SortString; + sortDirection = request.Sorting.FirstOrDefault().SortDirection; + } + var result = await _customerService.GetCustomersAsync(request.Filters, request.PageNumber, request.PageSize, sortString, sortDirection, request.CancellationToken); + return await Task.FromResult(new GridDataProviderResult { Data = result.Item1, TotalCount = result.Item2 }); + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#freeze-columns-with-fixed-header-and-filters) + +### Auto hide paging + +Automatically hides the paging controls when the grid item count is less than or equal to the `PageSize` and this property is set to `true`. + +Blazor Bootstrap: Grid Component - Auto hide paging + +```cshtml {5} showLineNumbers + + + + @context.Id + + + @context.Name + + + @context.Designation + + + @context.DOJ + + + @context.IsActive + + + +``` + +```cshtml {} showLineNumbers +@code { + private IEnumerable employees = default!; + + private async Task> EmployeesDataProvider(GridDataProviderRequest request) + { + if (employees is null) // pull employees only one time for client-side filtering, sorting, and paging + employees = GetEmployees(); // call a service or an API to pull the employees + + return await Task.FromResult(request.ApplyTo(employees)); + } + + private IEnumerable GetEmployees() + { + return new List + { + new Employee1 { Id = 107, Name = "Alice", Designation = "AI Engineer", DOJ = new DateOnly(1998, 11, 17), IsActive = true }, + new Employee1 { Id = 103, Name = "Bob", Designation = "Senior DevOps Engineer", DOJ = new DateOnly(1985, 1, 5), IsActive = true }, + new Employee1 { Id = 106, Name = "John", Designation = "Data Engineer", DOJ = new DateOnly(1995, 4, 17), IsActive = true }, + new Employee1 { Id = 104, Name = "Pop", Designation = "Associate Architect", DOJ = new DateOnly(1985, 6, 8), IsActive = false }, + new Employee1 { Id = 105, Name = "Ronald", Designation = "Senior Data Engineer", DOJ = new DateOnly(1991, 8, 23), IsActive = true }, + new Employee1 { Id = 102, Name = "Line", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 101, Name = "Daniel", Designation = "Architect", DOJ = new DateOnly(1977, 1, 12), IsActive = true }, + new Employee1 { Id = 113, Name = "Merlin", Designation = "Senior Consultant", DOJ = new DateOnly(1989, 10, 2), IsActive = true }, + new Employee1 { Id = 117, Name = "Sharna", Designation = "Data Analyst", DOJ = new DateOnly(1994, 5, 12), IsActive = true }, + new Employee1 { Id = 108, Name = "Zayne", Designation = "Data Analyst", DOJ = new DateOnly(1991, 1, 1), IsActive = true }, + new Employee1 { Id = 109, Name = "Isha", Designation = "App Maker", DOJ = new DateOnly(1996, 7, 1), IsActive = true }, + new Employee1 { Id = 111, Name = "Glenda", Designation = "Data Engineer", DOJ = new DateOnly(1994, 1, 12), IsActive = true }, + }; + } +} +``` + +[See demo here](https://demos.blazorbootstrap.com/grid#auto-hide-paging) diff --git a/docs/docs/05-components/modal.mdx b/docs/docs/05-components/modal.mdx new file mode 100644 index 000000000..572887017 --- /dev/null +++ b/docs/docs/05-components/modal.mdx @@ -0,0 +1,534 @@ +--- +title: Blazor Modal Component +description: Use Blazor Bootstrap modal component to add dialogs to your site for lightboxes, user notifications, or completely custom content. +image: https://i.imgur.com/tLiaEs6.jpg + +sidebar_label: Modal +sidebar_position: 13 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Modal + +Use Blazor Bootstrap modal component to add dialogs to your site for lightboxes, user notifications, or completely custom content. + + + +## Parameters + +| Name | Type | Description | Required | Default | Added Version | +|--|--|--|--|--|--| +| BodyCssClass | string | Additional body CSS class. | | | 1.0.0 | +| BodyTemplate | RenderFragment | Body template. | ✔️ | | 1.0.0 | +| ChildContent | RenderFragment | Gets or sets the content to be rendered within the component. | | | 1.0.0 | +| CloseOnEscape | bool | Indicates whether the modal closes when escape key is pressed. | | true | 1.0.0 | +| DialogCssClass | string | Additional CSS class for the dialog (div.modal-dialog element). | | | 1.0.0 | +| FooterCssClass | string | Footer css class. | | | 1.0.0 | +| FooterTemplate | RenderFragment | Footer template. | ✔️ | | 1.0.0 | +| Fullscreen | `ModalFullscreen` | Fullscreen behavior of the modal. | | `ModalFullscreen.Disabled` | 1.0.0 | +| HeaderTemplate | RenderFragment | Header template. | ✔️ | | 1.0.0 | +| HeaderCssClass | string | Additional header CSS class. | | | 1.0.0 | +| IsScrollable | bool | Allows modal body scroll. | | false | 1.0.0 | +| IsServiceModal | bool | Indicates whether the modal is related to a modal service or not. | | false | 1.9.4 | +| IsVerticallyCentered | bool | Shows the modal vertically in the center. | | false | 1.0.0 | +| ModalType | `ModalType` | Gets or sets the modal type. | | `ModalType.Light` | 1.9.5 | +| Size | `ModalSize` | Size of the modal. | | `ModalSize.Regular` | 1.0.0 | +| ShowCloseButton | bool | Indicates whether the modal shows close button in header. | | true | 1.0.0 | +| TabIndex | int | Gets or sets the tab index. | | -1 | 1.6.0 | +| Title | string | | ✔️ | | 1.0.0 | +| UseStaticBackdrop | bool | Indicates whether the modal uses a static backdrop. | | false | 1.0.0 | + +## Methods + +| Name | Description | Added Version | +|--|--|--| +| ShowAsync | Opens a modal. | 1.0.0 | +| ShowAsync(string title, Dictionary parameters = null) | Opens a modal. T is component. | 1.4.1 | +| HideAsync | Hides a modal. | 1.0.0 | + +:::danger Asynchronous methods and transitions + +All API methods are **asynchronous** and start a **transition**. They return to the caller as soon as the transition is started but **before it ends**. In addition, a method call on a **transitioning component will be ignored**. + +::: + +## Callback Events + +| Event | Description | +|--|--| +| OnShowing | This event fires immediately when the show instance method is called. | +| OnShown | This event is fired when an offcanvas element has been made visible to the user (will wait for CSS transitions to complete). | +| OnHiding | This event is fired immediately when the hide method has been called. | +| OnHidden | This event is fired when an offcanvas element has been hidden from the user (will wait for CSS transitions to complete). | +| OnHidePrevented | This event is fired when the modal is shown, its backdrop is static and a click outside the modal or an escape key press is performed with the keyboard option or data-bs-keyboard set to false. | + +## How it works + +Before getting started with BlazorBootstrap's modal component, be sure to read the following as our menu options have recently changed. + +- Modals are built with HTML, CSS, and JavaScript. They're positioned over everything else in the document and remove scroll from the `` so that modal content scrolls instead. +- Clicking on the modal "backdrop" will automatically close the modal. +- BlazorBootstrap only supports one modal window at a time. Nested modals aren't supported as we believe them to be poor user experiences. + +## Examples + +### Modal + +Clicking the **Show Modal** button below, the modal will slide down and fade in from the top of the page. + +Blazor Modal Component + +```cshtml showLineNumbers + + + Modal body text goes here. + + + + + + + + +``` + +```cs {2,6,11} showLineNumbers +@code { + private Modal modal; + + private async Task OnShowModalClick() + { + await modal?.ShowAsync(); + } + + private async Task OnHideModalClick() + { + await modal?.HideAsync(); + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/modals#examples) + +### Dynamic component as modal + +Render different components dynamically within the modal without iterating through possible types or using conditional logic. +If dynamically-rendered components have component parameters, pass them as an `IDictionary`. The `string` is the parameter's name, and the `object` is the parameter's value. + +Blazor Modal Component - Dynamic component as modal + +```cshtml {1,11-13} showLineNumbers + + + + +@code { + private Modal modal = default!; + private string? message; + + private async Task OnShowModalClick() + { + var parameters = new Dictionary(); + parameters.Add("EmployeeId", 321); + await modal.ShowAsync(title: "Employee Details", parameters: parameters); + } +} +``` + +**EmployeeDemoComponent1.razor** + +```cshtml {} showLineNumbers +
    +
    Employee Id :
    +
    @EmployeeId
    +
    +
    +
    First Name :
    +
    @employee.FirstName
    +
    +
    +
    Last Name :
    +
    @employee.LastName
    +
    + +@code { + private Employee employee; + + [Parameter] public int EmployeeId { get; set; } + + protected override void OnInitialized() + { + // get employee with {EmployeeId} from DB + + employee = new Employee { FirstName = "Vikram", LastName = "Reddy" }; + + base.OnInitialized(); + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/modals#dynamic-component-as-modal) + +### Pass event callbacks to a dynamic component + +Event callbacks `(EventCallback)` can be passed in its parameter dictionary. +In the following parent component example, the `ShowDTMessage` method assigns a string with the current time to `message`, and the value of `message` is rendered. The parent component passes the callback method, `ShowDTMessage` in the parameter dictionary: +- The `string` key is the callback method's name, `OnClickCallback`. +- The `object` value is created by `EventCallbackFactory.Create` for the parent callback method, `ShowDTMessage`. + +Blazor Modal Component - Pass event callbacks to a dynamic component + +```cshtml {} showLineNumbers + + + + +
    + @message +
    + +@code { + private Modal modal = default!; + private string? message; + + private async Task OnShowModalClick() + { + var parameters = new Dictionary(); + parameters.Add("EmployeeId", 322); + parameters.Add("OnclickCallback", EventCallback.Factory.Create(this, ShowDTMessage)); + await modal.ShowAsync(title: "Employee Details", parameters: parameters); + } + + private void ShowDTMessage(MouseEventArgs e) => message = $"The current DT is: {DateTime.Now}."; +} +``` + +**EmployeeDemoComponent2.razor** + +```cshtml {} showLineNumbers +
    +
    Employee Id :
    +
    @EmployeeId
    +
    +
    +
    First Name :
    +
    @employee.FirstName
    +
    +
    +
    Last Name :
    +
    @employee.LastName
    +
    + + + +@code { + private Employee employee; + + [Parameter] public int EmployeeId { get; set; } + + [Parameter] public EventCallback OnClickCallback { get; set; } + + protected override void OnInitialized() + { + // get employee with {EmployeeId} from DB + + employee = new Employee { FirstName = "Sagar", LastName = "Reddy" }; + + base.OnInitialized(); + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/modals#pass-event-callbacks-to-a-dynamic-component) + +### Static backdrop + +When `UseStaticBackdrop` is set to `true`, the modal will not close when clicking outside it. `CloseOnEscape` should also be set to `false` to ignore the effect of pressing the Esc key and mimic the original behaviour of Bootstrap modal. Click the button below to try it. + +Blazor Modal Component - Static backdrop + +```cshtml {1} showLineNumbers + + + I will not close if you click outside me. Don't even try to press escape key. + + + + + + + + +``` + +```cs showLineNumbers +@code { + private Modal modal; + + private async Task OnShowModalClick() + { + await modal?.ShowAsync(); + } + + private async Task OnHideModalClick() + { + await modal?.HideAsync(); + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/modals#static-backdrop) + +### Scrolling long content + +When modals become too long for the user’s viewport or device, they scroll independent of the page itself. Try the demo below to see what we mean. + +Blazor Modal Component - Scrolling long content + +```cshtml {1} showLineNumbers + + +

    This is some placeholder content to show the scrolling behavior for modals. Instead of repeating the text the modal, we use an inline style set a minimum height, thereby extending the length of the overall modal and demonstrating the overflow scrolling. When content becomes longer than the height of the viewport, scrolling will move the modal as needed.

    +

    This content should appear at the bottom after you scroll.

    +
    + + + + +
    + + +``` + +```cs showLineNumbers +@code { + private Modal modal; + + private async Task OnShowModalClick() + { + await modal?.ShowAsync(); + } + + private async Task OnHideModalClick() + { + await modal?.HideAsync(); + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/modals#scrolling-long-content) + +### Vertically centered + +Add `IsVerticallyCentered="true"` to vertically center the modal. + +Blazor Modal Component - Vertically centered + +```cshtml {1} showLineNumbers + + + This is a vertically centered modal. + + + + + + + + +``` + +```cs showLineNumbers +@code { + private Modal modal; + + private async Task OnShowModalClick() + { + await modal?.ShowAsync(); + } + + private async Task OnHideModalClick() + { + await modal?.HideAsync(); + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/modals#vertically-centered) + +### Vertically centered and scrollable + +Blazor Modal Component - Vertically centered and scrollable + +```cshtml {1} showLineNumbers + + +

    This is some placeholder content to show the scrolling behavior for modals. Instead of repeating the text the modal, we use an inline style set a minimum height, thereby extending the length of the overall modal and demonstrating the overflow scrolling. When content becomes longer than the height of the viewport, scrolling will move the modal as needed.

    +

    This content should appear at the bottom after you scroll.

    +
    + + + + +
    + + +``` + +```cs showLineNumbers +@code { + private Modal modal; + + private async Task OnShowModalClick() + { + await modal?.ShowAsync(); + } + + private async Task OnHideModalClick() + { + await modal?.HideAsync(); + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/modals#vertically-centered) + +### Optional sizes + +Modals have three optional sizes. These sizes kick in at certain breakpoints to avoid horizontal scrollbars on narrower viewports. + +Blazor Modal Component - Optional sizes + +```cshtml {1,4,7} showLineNumbers + + ... + + + ... + + + ... + + + + + +``` + +```cs showLineNumbers +@code { + private Modal xlModal; + private Modal lgModal; + private Modal smModal; +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/modals#optional-sizes) + +### Fullscreen Modal + +Blazor Modal Component - Fullscreen Modal + +```cshtml {1,4,7,10,13,16} showLineNumbers + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + + + + + + + +``` + +```cs showLineNumbers +@code { + private Modal modal; + private Modal smModal; + private Modal mdModal; + private Modal lgModal; + private Modal xlModal; + private Modal xxlModal; +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/modals#fullscreen-modal) + +### Callback Events + +BlazorBootstrap's modal class exposes a few events for hooking into modal functionality. + +```cshtml {3-7} showLineNumbers + + + + Modal body text goes here. + + + + + + + + + + +``` + +```cs showLineNumbers +@code { + private Modal modal; + + private async Task OnModalShowingAsync() + { + await Task.Run(() => { Console.WriteLine("Event: Showing"); }); + } + + private async Task OnModalShownAsync() + { + await Task.Run(() => { Console.WriteLine("Event: Show"); }); + } + + private async Task OnModalHidingAsync() + { + await Task.Run(() => { Console.WriteLine("Event: Hiding"); }); + } + + private async Task OnModalHiddenAsync() + { + await Task.Run(() => { Console.WriteLine("Event: Hide"); }); + } + + private async Task OnModalHidePreventedAsync() + { + await Task.Run(() => { Console.WriteLine("Event: Hide Prevented"); }); + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/modals#events) diff --git a/docs/docs/05-components/offcanvas.mdx b/docs/docs/05-components/offcanvas.mdx new file mode 100644 index 000000000..317a3feb9 --- /dev/null +++ b/docs/docs/05-components/offcanvas.mdx @@ -0,0 +1,428 @@ +--- +title: Blazor Offcanvas Component +description: Build hidden sidebars into your project for navigation, shopping carts, and more with Blazor Bootstrap offcanvas component. +image: https://i.imgur.com/ev2Q8ON.jpg + +sidebar_label: Offcanvas +sidebar_position: 14 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Offcanvas + +Build hidden sidebars into your project for navigation, shopping carts, and more with Blazor Bootstrap offcanvas component. + + + +## Parameters + +| Name | Type | Description | Required | Default | Added Version | +|--|--|--|--|--|--| +| BodyCssClass | string | Additional body CSS class. | | | 1.0.0 | +| BodyTemplate | RenderFragment | Body content. | ✔️ | | 1.0.0 | +| CloseOnEscape | bool | Indicates whether the offcanvas closes when escape key is pressed. | | true | 1.0.0 | +| FooterCssClass | string | Additional footer CSS class. | | | 1.0.0 | +| FooterTemplate | RenderFragment | Footer content. | | | 1.0.0 | +| HeaderCssClass | string | Additional header CSS class. | | | 1.0.0 | +| HeaderTemplate | RenderFragment | Content for the header. | | | 1.0.0 | +| IsScrollable | bool | Indicates whether body (page) scrolling is allowed while offcanvas is open. | | false | 1.0.0 | +| Placement | `Placement` | Gets or sets the offcanvas placement. By default, offcanvas is placed on the right of the viewport. | | `Placement.End` | 1.0.0 | +| ShowCloseButton | bool | Indicates whether the modal shows close button in header. | | true | 1.0.0 | +| Size | `OffcanvasSize` | Size of the offcanvas. | | `OffcanvasSize.Regular` | 1.0.0 | +| TabIndex | int | Gets or sets the tab index. | | -1 | 1.6.0 | +| Title | string | Text for the title in header. | ✔️ | | 1.0.0 | +| UseStaticBackdrop | bool | When `UseStaticBackdrop` is set to true, the offcanvas will not close when clicking outside of it. | | false | 1.8.0 | + +## Methods + +| Method | Description | Added Version | +|--|--|--| +| ShowAsync | Shows an offcanvas element. Returns to the caller before the offcanvas element has actually been shown (i.e. before the `OnShown` event occurs). | 1.0.0 | +| HideAsync | Hides an offcanvas element. Returns to the caller before the offcanvas element has actually been hidden (i.e. before the `OnHidden` event occurs). | 1.0.0 | + +:::danger Asynchronous methods and transitions + +All API methods are **asynchronous** and start a **transition**. They return to the caller as soon as the transition is started but **before it ends**. In addition, a method call on a **transitioning component will be ignored**. + +::: + +## Callback Events + +| Event | Description | +|--|--| +| OnShowing | This event fires immediately when the show instance method is called. | +| OnShown | This event is fired when an offcanvas element has been made visible to the user (will wait for CSS transitions to complete). | +| OnHiding | This event is fired immediately when the hide method has been called. | +| OnHidden | This event is fired when an offcanvas element has been hidden from the user (will wait for CSS transitions to complete). | + +## How it works + +Offcanvas is a sidebar component that can be toggled to appear from the left, right, or bottom edge of the viewport. + +- Conceptually, they are quite similar to the Modal component, but they are separate components. +- When shown, offcanvas includes a default backdrop that can be clicked to hide the offcanvas. +- Similar to modals, only one offcanvas can be shown at a time. + +## Examples + +### Offcanvas + +Below is an offcanvas example that is shown by default. + +Offcanvas - Example + +```cshtml showLineNumbers + + + + ... design your header and body + +``` + +```cs {2,6,11} showLineNumbers +@code { + private Offcanvas offcanvas; + + private async Task ShowOffcanvasAsync() + { + await offcanvas?.ShowAsync(); + } + + private async Task HideOffcanvasAsync() + { + await offcanvas?.HideAsync(); + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/offcanvas#examples) + +:::info +Default placement for the offcanvas component is right. +::: + +### Dynamic component as offcanvas + +Render different components dynamically within the offcanvas without iterating through possible types or using conditional logic. +If dynamically-rendered components have component parameters, pass them as an `IDictionary`. The `string` is the parameter's name, and the `object` is the parameter's value. + +```cshtml showLineNumbers + + + + +@code { + private Offcanvas offcanvas = default!; + private string? message; + + private async Task ShowEmployeeComponent() + { + var parameters = new Dictionary(); + parameters.Add("EmployeeId", 321); + await offcanvas.ShowAsync(title: "Employee Details", parameters: parameters); + } +} +``` + +**EmployeeDemoComponent1.razor** + +```cshtml showLineNumbers +
    +
    Employee Id :
    +
    @EmployeeId
    +
    +
    +
    First Name :
    +
    @employee.FirstName
    +
    +
    +
    Last Name :
    +
    @employee.LastName
    +
    + +@code { + private Employee employee = default!; + + [Parameter] public int EmployeeId { get; set; } + + protected override void OnInitialized() + { + // get employee with {EmployeeId} from DB + + employee = new Employee { FirstName = "Vikram", LastName = "Reddy" }; + + base.OnInitialized(); + } +} +``` +[See demo here.](https://demos.blazorbootstrap.com/offcanvas#dynamic-component-as-offcanvas) + +### Pass event callbacks to a dynamic component + +Event callbacks can be passed in its parameter dictionary. + +In the following parent component example, the `ShowDTMessage` method assigns a string with the current time to `message`, and the value of `message` is rendered. The parent component passes the callback method, ShowDTMessage in the parameter dictionary: + - The `string` key is the callback method's name, `OnClickCallback`. + - The `object` value is created by `EventCallbackFactory.Create` for the parent callback method, `ShowDTMessage`. + +```cshtml showLineNumbers + + + + +
    + @message +
    + +@code { + private Offcanvas offcanvas = default!; + private string? message; + + private async Task ShowEmployeeComponent() + { + var parameters = new Dictionary(); + parameters.Add("EmployeeId", 322); + parameters.Add("OnclickCallback", EventCallback.Factory.Create(this, ShowDTMessage)); + await offcanvas.ShowAsync(title: "Employee Details", parameters: parameters); + } + + private void ShowDTMessage(MouseEventArgs e) => message = $"The current date time is: {DateTime.Now}."; +} +``` + +**EmployeeDemoComponent2.razor** + +```cshtml showLineNumbers +
    +
    Employee Id :
    +
    @EmployeeId
    +
    +
    +
    First Name :
    +
    @employee.FirstName
    +
    +
    +
    Last Name :
    +
    @employee.LastName
    +
    + + + +@code { + private Employee employee = default!; + + [Parameter] public int EmployeeId { get; set; } + + [Parameter] public EventCallback OnClickCallback { get; set; } + + protected override void OnInitialized() + { + // get employee with {EmployeeId} from DB + + employee = new Employee { FirstName = "Sagar", LastName = "Reddy" }; + + base.OnInitialized(); + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/offcanvas#pass-event-callbacks-to-a-dynamic-component) + +### Placement + +Try the top, bottom, and left examples out below. + +Offcanvas - Top Placement + +```cshtml showLineNumbers + + ... + + + +``` + +```cs showLineNumbers +@code { + private Offcanvas offcanvas; + + private async Task OnShowOffcanvasClick() + { + await offcanvas?.ShowAsync(); + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/offcanvas#placement) + +### Static backdrop + +When **UseStaticBackdrop** is set to **true**, the offcanvas will not close when clicking outside of it. + +Offcanvas - Static backdrop + +```cshtml {1} showLineNumbers + + +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec tincidunt blandit mauris. Aliquam sit amet lorem laoreet, laoreet elit ut, placerat tellus. In mollis ultricies elit, volutpat maximus ipsum sodales interdum. Suspendisse eget tellus mollis, rutrum mauris ac, vulputate enim. Cras porta neque vitae lacinia elementum. Nunc sit amet pulvinar nibh. Curabitur interdum eget odio in tempor. Nulla dictum orci quis ligula auctor fermentum. Pellentesque finibus tellus ac massa convallis malesuada. Nam id pharetra velit, sed eleifend mi. Sed sed justo lorem. Quisque et nulla ut dolor feugiat vestibulum. Nunc at porttitor orci, at dignissim metus. Donec vitae metus vitae felis semper placerat.

    +

    Proin quis congue enim, ut ultricies erat. Nulla facilisi. Fusce pretium, metus eget tempor vehicula, nisl lorem tincidunt metus, consectetur molestie lorem leo vel lectus. Vivamus pellentesque pharetra mattis. Aenean dignissim quam non velit ultrices rutrum. Aliquam lacinia faucibus sapien vel pretium. Nullam libero massa, ultricies id lacinia nec, scelerisque ut felis. Vivamus ac egestas urna, sit amet condimentum odio. Suspendisse ultrices, libero sed interdum pulvinar, lectus felis pellentesque enim, eu finibus magna massa id augue. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis eget tempor libero. Cras ut interdum purus. Donec eu pulvinar urna, ut porttitor purus. Suspendisse sed sodales nunc. Quisque posuere augue sed luctus placerat.

    +

    Morbi ullamcorper risus turpis, et ullamcorper nulla semper vitae. Proin pharetra dolor dui, non condimentum ex fermentum in. Vestibulum pharetra, risus et pulvinar eleifend, nulla tortor blandit risus, ac imperdiet elit massa quis leo. Vivamus urna lacus, luctus eget felis id, eleifend tristique nisl. Sed dignissim mollis ligula vitae laoreet. Vestibulum eget magna nisi. Aenean auctor elit et turpis blandit, eget porttitor felis suscipit. Duis placerat, sapien a sodales tempus, odio orci malesuada neque, ac molestie ipsum nisi vel eros. Integer sem lectus, luctus vitae sapien ut, efficitur aliquam sem. Praesent placerat est eros, vulputate rutrum nunc imperdiet vitae. Fusce sed felis eget purus aliquet convallis eu eget lacus. Sed finibus nec magna et accumsan. Donec vitae tellus eros. Nullam et ex vitae est sagittis malesuada. Vivamus molestie malesuada libero, a consequat magna dapibus pellentesque. Cras molestie tortor vitae congue pretium.

    +

    Pellentesque nec iaculis justo, sed pretium sem. Mauris finibus lacus at mollis fringilla. Etiam auctor in justo ac bibendum. Vestibulum at lorem accumsan, maximus erat suscipit, suscipit ex. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris dignissim id quam sit amet varius. Etiam pretium ultrices dignissim. Cras at tortor hendrerit metus ultrices lobortis at ac est. Suspendisse consectetur pellentesque nunc sit amet scelerisque. Maecenas feugiat nunc laoreet, auctor erat eget, ultricies ex. Aliquam nisi nulla, cursus et ante ut, interdum volutpat leo. Phasellus laoreet aliquam maximus. Vestibulum eu neque porta, consectetur ipsum non, euismod enim. Vestibulum euismod purus elit, ultrices imperdiet nisl porttitor eget. Vivamus eros turpis, tincidunt a vulputate vel, malesuada tristique nulla.

    +

    Vestibulum sed aliquam urna. Ut ullamcorper erat vitae velit mattis commodo. Phasellus dignissim rhoncus dapibus. Quisque congue egestas tellus id finibus. Suspendisse nibh felis, mattis et finibus vel, tempor in lectus. Nullam eget eros dui. Mauris eget vestibulum nibh. Nullam mattis malesuada lorem vel condimentum. Mauris id odio ac est feugiat condimentum.

    +
    + + + +
    + + +``` + +```cs {} showLineNumbers +@code { + private Offcanvas offcanvas; + + private async Task OnShowOffcanvasClick() + { + await offcanvas?.ShowAsync(); + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/offcanvas#static-backdrop) + +### Sizes + +Set the size of the `Offcanvas` with the Size parameter. The default value is `OffcanvasSize.Regular`. + +#### Small Offcanvas + +Offcanvas - Small Size + +```cshtml showLineNumbers + + +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec tincidunt blandit mauris. Aliquam sit amet lorem laoreet, laoreet elit ut, placerat tellus. In mollis ultricies elit, volutpat maximus ipsum sodales interdum. Suspendisse eget tellus mollis, rutrum mauris ac, vulputate enim. Cras porta neque vitae lacinia elementum. Nunc sit amet pulvinar nibh. Curabitur interdum eget odio in tempor. Nulla dictum orci quis ligula auctor fermentum. Pellentesque finibus tellus ac massa convallis malesuada. Nam id pharetra velit, sed eleifend mi. Sed sed justo lorem. Quisque et nulla ut dolor feugiat vestibulum. Nunc at porttitor orci, at dignissim metus. Donec vitae metus vitae felis semper placerat.

    +

    Proin quis congue enim, ut ultricies erat. Nulla facilisi. Fusce pretium, metus eget tempor vehicula, nisl lorem tincidunt metus, consectetur molestie lorem leo vel lectus. Vivamus pellentesque pharetra mattis. Aenean dignissim quam non velit ultrices rutrum. Aliquam lacinia faucibus sapien vel pretium. Nullam libero massa, ultricies id lacinia nec, scelerisque ut felis. Vivamus ac egestas urna, sit amet condimentum odio. Suspendisse ultrices, libero sed interdum pulvinar, lectus felis pellentesque enim, eu finibus magna massa id augue. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis eget tempor libero. Cras ut interdum purus. Donec eu pulvinar urna, ut porttitor purus. Suspendisse sed sodales nunc. Quisque posuere augue sed luctus placerat.

    +

    Morbi ullamcorper risus turpis, et ullamcorper nulla semper vitae. Proin pharetra dolor dui, non condimentum ex fermentum in. Vestibulum pharetra, risus et pulvinar eleifend, nulla tortor blandit risus, ac imperdiet elit massa quis leo. Vivamus urna lacus, luctus eget felis id, eleifend tristique nisl. Sed dignissim mollis ligula vitae laoreet. Vestibulum eget magna nisi. Aenean auctor elit et turpis blandit, eget porttitor felis suscipit. Duis placerat, sapien a sodales tempus, odio orci malesuada neque, ac molestie ipsum nisi vel eros. Integer sem lectus, luctus vitae sapien ut, efficitur aliquam sem. Praesent placerat est eros, vulputate rutrum nunc imperdiet vitae. Fusce sed felis eget purus aliquet convallis eu eget lacus. Sed finibus nec magna et accumsan. Donec vitae tellus eros. Nullam et ex vitae est sagittis malesuada. Vivamus molestie malesuada libero, a consequat magna dapibus pellentesque. Cras molestie tortor vitae congue pretium.

    +

    Pellentesque nec iaculis justo, sed pretium sem. Mauris finibus lacus at mollis fringilla. Etiam auctor in justo ac bibendum. Vestibulum at lorem accumsan, maximus erat suscipit, suscipit ex. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris dignissim id quam sit amet varius. Etiam pretium ultrices dignissim. Cras at tortor hendrerit metus ultrices lobortis at ac est. Suspendisse consectetur pellentesque nunc sit amet scelerisque. Maecenas feugiat nunc laoreet, auctor erat eget, ultricies ex. Aliquam nisi nulla, cursus et ante ut, interdum volutpat leo. Phasellus laoreet aliquam maximus. Vestibulum eu neque porta, consectetur ipsum non, euismod enim. Vestibulum euismod purus elit, ultrices imperdiet nisl porttitor eget. Vivamus eros turpis, tincidunt a vulputate vel, malesuada tristique nulla.

    +

    Vestibulum sed aliquam urna. Ut ullamcorper erat vitae velit mattis commodo. Phasellus dignissim rhoncus dapibus. Quisque congue egestas tellus id finibus. Suspendisse nibh felis, mattis et finibus vel, tempor in lectus. Nullam eget eros dui. Mauris eget vestibulum nibh. Nullam mattis malesuada lorem vel condimentum. Mauris id odio ac est feugiat condimentum.

    +
    + + + +
    + + +``` + +```cs showLineNumbers +@code { + private Offcanvas offcanvas; + + private async Task OnShowOffcanvasClick() + { + await offcanvas?.ShowAsync(); + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/offcanvas#sizes) + +#### Large Offcanvas + +Large Offcanvas + +```cshtml showLineNumbers + + +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec tincidunt blandit mauris. Aliquam sit amet lorem laoreet, laoreet elit ut, placerat tellus. In mollis ultricies elit, volutpat maximus ipsum sodales interdum. Suspendisse eget tellus mollis, rutrum mauris ac, vulputate enim. Cras porta neque vitae lacinia elementum. Nunc sit amet pulvinar nibh. Curabitur interdum eget odio in tempor. Nulla dictum orci quis ligula auctor fermentum. Pellentesque finibus tellus ac massa convallis malesuada. Nam id pharetra velit, sed eleifend mi. Sed sed justo lorem. Quisque et nulla ut dolor feugiat vestibulum. Nunc at porttitor orci, at dignissim metus. Donec vitae metus vitae felis semper placerat.

    +

    Proin quis congue enim, ut ultricies erat. Nulla facilisi. Fusce pretium, metus eget tempor vehicula, nisl lorem tincidunt metus, consectetur molestie lorem leo vel lectus. Vivamus pellentesque pharetra mattis. Aenean dignissim quam non velit ultrices rutrum. Aliquam lacinia faucibus sapien vel pretium. Nullam libero massa, ultricies id lacinia nec, scelerisque ut felis. Vivamus ac egestas urna, sit amet condimentum odio. Suspendisse ultrices, libero sed interdum pulvinar, lectus felis pellentesque enim, eu finibus magna massa id augue. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis eget tempor libero. Cras ut interdum purus. Donec eu pulvinar urna, ut porttitor purus. Suspendisse sed sodales nunc. Quisque posuere augue sed luctus placerat.

    +

    Morbi ullamcorper risus turpis, et ullamcorper nulla semper vitae. Proin pharetra dolor dui, non condimentum ex fermentum in. Vestibulum pharetra, risus et pulvinar eleifend, nulla tortor blandit risus, ac imperdiet elit massa quis leo. Vivamus urna lacus, luctus eget felis id, eleifend tristique nisl. Sed dignissim mollis ligula vitae laoreet. Vestibulum eget magna nisi. Aenean auctor elit et turpis blandit, eget porttitor felis suscipit. Duis placerat, sapien a sodales tempus, odio orci malesuada neque, ac molestie ipsum nisi vel eros. Integer sem lectus, luctus vitae sapien ut, efficitur aliquam sem. Praesent placerat est eros, vulputate rutrum nunc imperdiet vitae. Fusce sed felis eget purus aliquet convallis eu eget lacus. Sed finibus nec magna et accumsan. Donec vitae tellus eros. Nullam et ex vitae est sagittis malesuada. Vivamus molestie malesuada libero, a consequat magna dapibus pellentesque. Cras molestie tortor vitae congue pretium.

    +

    Pellentesque nec iaculis justo, sed pretium sem. Mauris finibus lacus at mollis fringilla. Etiam auctor in justo ac bibendum. Vestibulum at lorem accumsan, maximus erat suscipit, suscipit ex. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris dignissim id quam sit amet varius. Etiam pretium ultrices dignissim. Cras at tortor hendrerit metus ultrices lobortis at ac est. Suspendisse consectetur pellentesque nunc sit amet scelerisque. Maecenas feugiat nunc laoreet, auctor erat eget, ultricies ex. Aliquam nisi nulla, cursus et ante ut, interdum volutpat leo. Phasellus laoreet aliquam maximus. Vestibulum eu neque porta, consectetur ipsum non, euismod enim. Vestibulum euismod purus elit, ultrices imperdiet nisl porttitor eget. Vivamus eros turpis, tincidunt a vulputate vel, malesuada tristique nulla.

    +

    Vestibulum sed aliquam urna. Ut ullamcorper erat vitae velit mattis commodo. Phasellus dignissim rhoncus dapibus. Quisque congue egestas tellus id finibus. Suspendisse nibh felis, mattis et finibus vel, tempor in lectus. Nullam eget eros dui. Mauris eget vestibulum nibh. Nullam mattis malesuada lorem vel condimentum. Mauris id odio ac est feugiat condimentum.

    +
    + + + +
    + + +``` + +```cs showLineNumbers +@code { + private Offcanvas offcanvas; + + private async Task OnShowOffcanvasClick() + { + await offcanvas?.ShowAsync(); + } +} +``` + +### Callback Events + +BlazorBootstrap's offcanvas component exposes a few events for hooking into offcanvas functionality. + +```cshtml showLineNumbers + + + +
    Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc.
    +
    + + + + + +
    + + +``` + +```cs showLineNumbers +@code { + private Offcanvas offcanvas; + + private async Task OnShowOffcanvasClick() + { + await offcanvas?.ShowAsync(); + } + + private async Task OnHideOffcanvasClick() + { + await offcanvas?.HideAsync(); + } + + private async Task OnOffcanvasShowingAsync() + { + await Task.Run(() => { Console.WriteLine("Event: Showing"); }); + } + + private async Task OnOffcanvasShownAsync() + { + await Task.Run(() => { Console.WriteLine("Event: Shown"); }); + } + + private async Task OnOffcanvasHidingAsync() + { + await Task.Run(() => { Console.WriteLine("Event: Hiding"); }); + } + + private async Task OnOffcanvasHiddenAsync() + { + await Task.Run(() => { Console.WriteLine("Event: Hidden"); }); + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/offcanvas#events) \ No newline at end of file diff --git a/docs/docs/05-components/pagination.mdx b/docs/docs/05-components/pagination.mdx new file mode 100644 index 000000000..d26dc9b73 --- /dev/null +++ b/docs/docs/05-components/pagination.mdx @@ -0,0 +1,138 @@ +--- +title: Blazor Pagination Component +description: Use Blazor Bootstrap pagination component to indicate a series of related content exists across multiple pages. +image: https://i.imgur.com/SCbZVd4.jpg + +sidebar_label: Pagination +sidebar_position: 15 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Pagination + +Use Blazor Bootstrap pagination component to indicate a series of related content exists across multiple pages. + + + +## Parameters + +| Name | Type | Description | Required | Default | +|--|--|--|--|--| +| ActivePageNumber | int | Active page number. Starts with 1. | | 1 | +| Alignment | `Alignment` | Gets or sets the pagination alignment. | | `Alignment.None` | +| DisplayPages | int | Gets or sets the maximum page links to be displayed. | | 5 | +| FirstLinkIcon | `IconName` | Gets or sets first link icon. | | | +| FirstLinkText | string | Gets or sets first link text. `FirstLinkText` is ignored if `FirstLinkIcon` is specified. | | First | +| LastLinkIcon | `IconName` | Gets or sets last link icon. | | | +| LastLinkText | string | Gets or sets last link text. `LastLinkText` is ignored if `LastLinkIcon` is specified. | | Last | +| NextLinkIcon | `IconName` | Gets or sets next link icon. | | | +| NextLinkText | string | Gets or sets next link text. `NextLinkText` is ignored if `NextLinkIcon` is specified. | | Next | +| PreviousLinkIcon | `IconName` | Gets or sets previous link icon. | | | +| PreviousLinkText | string | Gets or sets previous link text. `PreviousLinkText` is ignored if `PreviousLinkIcon` is specified. | | Previous | +| Size | `PaginationSize` | Gets or sets the pagination size. | | | +| TotalPages | int | Total pages of data items. | | | + +## Callback Events + +| Event | Description | +|--|--| +| PageChanged | This event fires immediately when the page number is changed. | + + +## Examples + +### Pagination + +We use a large block of connected links for our pagination, making links hard to miss and easily scalable - all while providing large hit areas. Pagination is built with list HTML elements so screen readers can announce the number of available links. + +Pagination - Examples + +```cshtml showLineNumbers + + + + + +``` + +[See demo here.](https://demos.blazorbootstrap.com/pagination#examples) + +### Working with icons + +Pagination - Working with icons + +```cshtml showLineNumbers + +``` + +[See demo here.](https://demos.blazorbootstrap.com/pagination#working-with-icons) + +### Disabled and active states + +Pagination - Disabled and active states + +```cshtml showLineNumbers + + + +``` + +[See demo here.](https://demos.blazorbootstrap.com/pagination#disabled-and-active-states) + +### Sizing + +Fancy larger or smaller pagination? Add `Size="PaginationSize.Small"` or `Size="PaginationSize.Large"` for additional sizes. + +Pagination - Sizing + +```cshtml showLineNumbers + + + +``` + +[See demo here.](https://demos.blazorbootstrap.com/pagination#sizing) + +### Alignment + +Pagination - Alignment + +```cshtml showLineNumbers + + + +``` + +[See demo here.](https://demos.blazorbootstrap.com/pagination#alignment) + +### Callback Events + +Pagination - Callback Events + +```cshtml showLineNumbers + + +Current Page Number: @currentPageNumber +``` + +```cs showLineNumbers +@code { + int currentPageNumber = 2; + + private async Task OnPageChangedAsync(int newPageNumber) + { + await Task.Run(() => { currentPageNumber = newPageNumber; }); + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/pagination#events) \ No newline at end of file diff --git a/docs/docs/05-components/pdf-viewer.mdx b/docs/docs/05-components/pdf-viewer.mdx new file mode 100644 index 000000000..09d29e5be --- /dev/null +++ b/docs/docs/05-components/pdf-viewer.mdx @@ -0,0 +1,123 @@ +--- +title: Blazor PDF Viewer Component +description: The Blazor PDF Viewer component allows users to view PDF files directly in the browser, without relying on third-party browser tools or extensions. +image: https://i.imgur.com/7Vz9Efi.png + +sidebar_label: PDF Viewer +sidebar_position: 16 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor PDF Viewer + +The Blazor PDF Viewer component allows users to view PDF files directly in the browser, without relying on third-party browser tools or extensions. + + + +## Parameters + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| Orientation | `Orientation` | `Orientation.Portrait` | | Gets or sets the preferred orientation for the PDF viewer. | 2.1.0 | +| Url | string | null | ✔️ | Gets or sets the PDF URL. | 1.11.0 | + +## Callback Events + +| Event | Description | Added Version | +|:--|:--|:--| +| OnDocumentLoaded | This event fires immediately after the PDF document is loaded. | 1.11.0 | +| OnPageChanged | This event fires immediately after the page is changed. | 1.11.0 | + +## Examples + +### Basic usage + +Blazor Bootstrap: Blazor PDF Viewer Component - Basic usage + +```cshtml {3-6} showLineNumbers +

    @eventLog

    + + +``` + +```cshtml {2,4-5,7-8} showLineNumbers +@code { + private string eventLog { get; set; } = $"Last event: ..., CurrentPage: 0, TotalPages: 0"; + + private async Task OnDocumentLoaded(PdfViewerEventArgs args) + => eventLog = $"Last event: OnDocumentLoaded, CurrentPage: {args.CurrentPage}, TotalPages: {args.TotalPages}"; + + private async Task OnPageChanged(PdfViewerEventArgs args) + => eventLog = $"Last event: OnPageChanged, CurrentPage: {args.CurrentPage}, TotalPages: {args.TotalPages}"; +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/pagination#examples) + +### Orientation + +Set the `Orientation` parameter to `Orientation.Landscape` to change the default orientation from **Portrait** to **Landscape**. + +Blazor Bootstrap: Blazor PDF Viewer Component - Orientation + +```cshtml {5} showLineNumbers +

    @eventLog

    + + +``` +```cshtml {} showLineNumbers +@code { + private string eventLog { get; set; } = $"Last event: ..., CurrentPage: 0, TotalPages: 0"; + + private void OnDocumentLoaded(PdfViewerEventArgs args) + => eventLog = $"Last event: OnDocumentLoaded, CurrentPage: {args.CurrentPage}, TotalPages: {args.TotalPages}"; + + private void OnPageChanged(PdfViewerEventArgs args) + => eventLog = $"Last event: OnPageChanged, CurrentPage: {args.CurrentPage}, TotalPages: {args.TotalPages}"; +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/pagination#orientation) + +### Base64String + +Pdf Viewer component supports **base64** string as a URL. + +Blazor Bootstrap: Blazor PDF Viewer Component - Base64String + +```cshtml {4} showLineNumbers +

    @eventLog

    + + +``` +```cshtml {8} showLineNumbers +@code { + private string eventLog { get; set; } = $"Last event: ..., CurrentPage: 0, TotalPages: 0"; + private string pdfBase64String; + + protected override void OnInitialized() + { + // get pdf as base64 string + pdfBase64String = @"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yc3wEAIvPjTX1ZuoA/EJb4b150BykvrznGgWgz9mYZ9WP/+j+niSJ5Bf1n8nSLfX8RimDQuML+cJl0JJUvLljxnwTvpjhm9/ufv+/lD/ab+KJr7+PyUG1RtlbmRzdHJlYW0KZW5kb2JqCjQ1IDAgb2JqCjw8Ci9BdXRob3IgKERhdmlkIE1hbmRlbGluKQovQ3JlYXRpb25EYXRlIChEOjIwMDkwMzE3MjIxMTAwWikKL0NyZWF0b3IgKE9tbmlHcmFmZmxlIDQuMi4zKQovTW9kRGF0ZSAoRDoyMDA5MDMxODAwMjMwMFopCi9Qcm9kdWNlciAoTWFjIE9TIFggMTAuNS42IFF1YXJ0eiBQREZDb250ZXh0KQovVGl0bGUgKHN0YXRlcykKPj4KZW5kb2JqCjQ2IDAgb2JqClsvSUNDQmFzZWQgNjEgMCBSXQplbmRvYmoKNDcgMCBvYmoKWy9JQ0NCYXNlZCA2MiAwIFJdCmVuZG9iago0OCAwIG9iago8PAovVHlwZSAvRm9udAovU3VidHlwZSAvVHJ1ZVR5cGUKL0Jhc2VGb250IC9SQkZZR0MjMkJIZWx2ZXRpY2EKL0ZvbnREZXNjcmlwdG9yIDYzIDAgUgovV2lkdGhzIDY0IDAgUgovRmlyc3RDaGFyIDMyCi9MYXN0Q2hhciAyMjIKL0VuY29kaW5nIC9NYWNSb21hbkVuY29kaW5nCj4+CmVuZG9iago0OSAwIG9iago8PAovVHlwZSAvRm9udAovU3VidHlwZSAvVHJ1ZVR5cGUKL0Jhc2VGb250IC9USVZSVUsjMkJIZWx2ZXRpY2EtQm9sZAovRm9udERlc2NyaXB0b3IgNjUgMCBSCi9XaWR0aHMgNjYgMCBSCi9GaXJzdENoYXIgMzIKL0xhc3RDaGFyIDEyMQovRW5jb2RpbmcgL01hY1JvbWFuRW5jb2RpbmcKPj4KZW5kb2JqCjUwIDAgb2JqCjw8Ci9MZW5ndGggNjcgMCBSCi9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQovV2lkdGggMTM5Ci9IZWlnaHQgNTcKL0NvbG9yU3BhY2UgNDYgMCBSCi9TTWFzayA2OCAwIFIKL0JpdHNQZXJDb21wb25lbnQgOAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0K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Ci9Bc2NlbnQgNzcwCi9DYXBIZWlnaHQgNzI3Ci9EZXNjZW50IC0yMzAKL0ZsYWdzIDMyCi9Gb250QkJveCBbIC05NTEgLTQ4MSAxNDQ1IDExMjJdCi9Gb250TmFtZSAvUkJGWUdDIzJCSGVsdmV0aWNhCi9JdGFsaWNBbmdsZSAwCi9TdGVtViA5OAovTWF4V2lkdGggMTUwMAovU3RlbUggODUKL1hIZWlnaHQgNTMxCi9Gb250RmlsZTIgODkgMCBSCj4+CmVuZG9iago2NCAwIG9iagpbIDI3OCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMjc4IDAgMCAyNzggMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNjY3IDcyMiAwIDAgMCAwIDAgMjc4IDAgMCA1NTYgMCA3MjIgNzc4IDAgMCA3MjIgMCA2MTEgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNTU2IDU1NiA1MDAgNTU2IDU1NiAwIDU1NiA1NTYgMjIyIDAgNTAwIDIyMiA4MzMgNTU2IDU1NiA1NTYgMCAzMzMgNTAwIDI3OCAwIDUwMCA3MjIgNTAwIDUwMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDUwMF0KZW5kb2JqCjY1IDAgb2JqCjw8Ci9UeXBlIC9Gb250RGVzY3JpcHRvcgovQXNjZW50IDc3MAovQ2FwSGVpZ2h0IDczMQovRGVzY2VudCAtMjMwCi9GbGFncyAzMgovRm9udEJCb3ggWyAtMTAxOCAtNDgxIDE0MzYgMTE1OV0KL0ZvbnROYW1lIC9USVZSVUsjMkJIZWx2ZXRpY2EtQm9sZAovSXRhbGljQW5nbGUgMAovU3RlbVYgMTQ5Ci9NYXhXaWR0aCAxNTAwCi9TdGVtSCAxMjQKL1hIZWlnaHQgNTQwCi9Gb250Rmls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UFRFWC5JbmZvRGljdCAyMTkgMCBSIAovTWF0cml4IFsxLjAwMDAwMDAwIDAuMDAwMDAwMDAgMC4wMDAwMDAwMCAxLjAwMDAwMDAwIDAuMDAwMDAwMDAgMC4wMDAwMDAwMF0KL0JCb3ggWzQuNzQzMTY5MDAgNDk4LjAxMDkwMDAwIDU0OS4wMDU0MDAwMCA3ODEuMDcxMDAwMDBdCi9SZXNvdXJjZXMgPDwKL1Byb2NTZXQgWyAvUERGIC9UZXh0IC9JbWFnZUIgL0ltYWdlQyAvSW1hZ2VJIF0KL0NvbG9yU3BhY2UgPDwKL0NzMSAyMjAgMCBSCj4+L0ZvbnQgPDwgL0YxLjEgMjIxIDAgUj4+Ci9YT2JqZWN0IDw8Ci9JbTQ4IDIyMiAwIFIKL0ltMTcgMjIzIDAgUgovSW0zMyAyMjQgMCBSCi9JbTUyIDIyNSAwIFIKL0ltMjEgMjI2IDAgUgovSW0xMyAyMjcgMCBSCi9JbTIzIDIyOCAwIFIKL0ltOSAyMjkgMCBSCi9JbTE2IDIzMCAwIFIKL0ltNDMgMjMxIDAgUgovSW00NCAyMzIgMCBSCi9JbTY1IDIzMyAwIFIKL0ltNiAyMzQgMCBSCi9JbTI3IDIzNSAwIFIKL0ltMTIgMjM2IDAgUgovSW0zNSAyMzcgMCBSCi9JbTUwIDIzOCAwIFIKL0ltNjggMjM5IDAgUgovSW00MSAyNDAgMCBSCi9JbTc1IDI0MSAwIFIKL0ltNzcgMjQyIDAgUgovSW02NCAyNDMgMCBSCi9JbTUgMjQ0IDAgUgovSW00NSAyNDUgMCBSCi9JbTIwIDI0NiAwIFIKL0ltNjkgMjQ3IDAgUgovSW0zOCAyNDggMCBSCi9JbTEgMjQ5IDAgUgovSW00MiAyNTAgMCBSCi9JbTcyIDI1MSAwIFIKL0ltMTQgMjUyIDAgUgovSW01NSAyNTMgMCBSCi9JbTI0IDI1NCAwIFIKL0ltMzcgMjU1IDAgUgovSW00NiAyNTYgMCBSCi9JbTggMjU3IDAgUgovSW0zNiAyNTggMCBSCi9JbTYxIDI1OSAwIFIKL0ltNTQgMjYwIDAgUgovSW0yMiAyNjEgMCBSCi9JbTQwIDI2MiAwIFIKL0ltNjcgMjYzIDAgUgovSW03MSAyNjQgMCBSCi9JbTc4IDI2NSAwIFIKL0ltMzkgMjY2IDAgUgovSW0yOSAyNjcgMCBSCi9JbTI2IDI2OCAwIFIKL0ltNjYgMjY5IDAgUgovSW03MCAyNzAgMCBSCi9JbTc0IDI3MSAwIFIKL0ltNjMgMjcyIDAgUgovSW01MSAyNzMgMCBSCi9JbTMgMjc0IDAgUgovSW03IDI3NSAwIFIKL0ltNTcgMjc2IDAgUgovSW0yIDI3NyAwIFIKL0ltMzEgMjc4IDAgUgovSW03MyAyNzkgMCBSCi9JbTEwIDI4MCAwIFIKL0ltMjUgMjgxIDAgUgovSW0yOCAyODIgMCBSCi9JbTUzIDI4MyAwIFIKL0ltNTkgMjg0IDAgUgovSW0xMSAyODUgMCBSCi9JbTQgMjg2IDAgUgovSW0xOCAyODcgMCBSCi9JbTU2IDI4OCAwIFIKL0ltMTUgMjg5IDAgUgovSW0xOSAyOTAgMCBSCi9JbTMyIDI5MSAwIFIKL0ltNDkgMjkyIDAgUgovSW0zMCAyOTMgMCBSCi9JbTc2IDI5NCAwIFIKL0ltNTggMjk1IDAgUgovSW00NyAyOTYgMCBSCi9JbTYyIDI5NyAwIFIKL0ltMzQgMjk4IDAgUgovSW02MCAyOTkgMCBSCj4+L1NoYWRpbmcgPDwKL1NoMjMgMzAwIDAgUgovU2gxOCAzMDEgMCBSCi9TaDMyIDMwMiAwIFIKL1NoNzkgMzAzIDAgUgovU2g1NiAzMDQgMCBSCi9TaDUxIDMwNSAwIFIKL1NoNjkgMzA2IDAgUgovU2gxNCAzMDcgMCBSCi9TaDQxIDMwOCAwIFIKL1NoNzcgMzA5IDAgUgovU2g3OCAzMTAgMCBSCi9TaDM4IDMxMSAwIFIKL1NoNjEgMzEyIDAgUgovU2gyOCAzMTMgMCBSCi9TaDYwIDMxNCAwIFIKL1NoNTUgMzE1IDAgUgovU2g5IDMxNiAwIFIKL1NoOCAzMTcgMCBSCi9TaDgwIDMxOCAwIFIKL1NoMjcgMzE5IDAgUgovU2g0NSAzMjAgMCBSCi9TaDM3IDMyMSAwIFIKL1NoNDggMzIyIDAgUgovU2gxMiAzMjMgMCBSCi9TaDI2IDMyNCAwIFIKL1NoMjIgMzI1IDAgUgovU2g3MCAzMjYgMCBSCi9TaDI0IDMyNyAwIFIKL1NoMjUgMzI4IDAgUgovU2gyOSAzMjkgMCBSCi9TaDU4IDMzMCAwIFIKL1NoMzEgMzMxIDAgUgovU2gzIDMzMiAwIFIKL1NoNDQgMzMzIDAgUgovU2g3NCAzMzQgMCBSCi9TaDY2IDMzNSAwIFIKL1NoNDAgMzM2IDAgUgovU2gxIDMzNyAwIFIKL1NoMTEgMzM4IDAgUgovU2g1MiAzMzkgMCBSCi9TaDcyIDM0MCAwIFIKL1NoNTcgMzQxIDAgUgovU2gyIDM0MiAwIFIKL1NoMzQgMzQzIDAgUgovU2g0MyAzNDQgMCBSCi9TaDQ5IDM0NSAwIFIKL1NoNjcgMzQ2IDAgUgovU2g0IDM0NyAwIFIKL1NoMTkgMzQ4IDAgUgovU2g2NSAzNDkgMCBSCi9TaDY4IDM1MCAwIFIKL1NoNzUgMzUxIDAgUgovU2gyMCAzNTIgMCBSCi9TaDcxIDM1MyAwIFIKL1NoMzkgMzU0IDAgUgovU2g3NiAzNTUgMCBSCi9TaDQ3IDM1NiAwIFIKL1NoMTUgMzU3IDAgUgovU2g1NCAzNTggMCBSCi9TaDMwIDM1OSAwIFIKL1NoNjMgMzYwIDAgUgovU2g2IDM2MSAwIFIKL1NoNyAzNjIgMCBSCi9TaDE2IDM2MyAwIFIKL1NoMzYgMzY0IDAgUgovU2g2NCAzNjUgMCBSCi9TaDEwIDM2NiAwIFIKL1NoODEgMzY3IDAgUgovU2g1OSAzNjggMCBSCi9TaDMzIDM2OSAwIFIKL1NoMjEgMzcwIDAgUgovU2gxMyAzNzEgMCBSCi9TaDUzIDM3MiAwIFIKL1NoNTAgMzczIDAgUgovU2gzNSAzNzQgMCBSCi9TaDQyIDM3NSAwIFIKL1NoNDYgMzc2IDAgUgovU2g2MiAzNzcgMCBSCi9TaDczIDM3OCAwIFIKL1NoMTcgMzc5IDAgUgovU2g1IDM4MCAwIFIKPj4+PgovTGVuZ3RoIDM4MSAwIFIKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCngB3P1Jr67LlqZp9devWBQpQUrsmHXRJQCJHshDijY6ipCTck+IcBB/n+t+7J3FKk7GPjunhIR746z5bCuHDRu1vd9/+f5//f5fvt++/vF69/3x5uaPl5eb2++Pd3d/PLx8v3u+++P26ft//U/f/+P3//H7v/v3/3b7/W//9v12//9vf3vv9PLHy0Od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MTYwNTQ2NCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTQ0IDAgUgo+PgplbmRvYmoKMzAzIDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDU1OTQ5NjAgMjc0Mjg0IDU1OTQ5NjAgMzQ0MDM2XQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTQ1IDAgUgo+PgplbmRvYmoKMzA0IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDExOTA4NDYgMTQ1MTc0MyAxMTkwODQ2IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1NDYgMCBSCj4+CmVuZG9iagozMDUgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgNjAzNjY5NCAxOTkyMjcxIDYwMzY2OTQgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU0NyAwIFIKPj4KZW5kb2JqCjMwNiAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA0MjIyNzQwIDE5ODU2NzMgNDIyMjc0MCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTQ4IDAgUgo+PgplbmRvYmoKMzA3IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDM0MTk0MTggMjAxNzU5NiAzNDE5NDE4IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1NDkgMCBSCj4+CmVuZG9iagozMDggMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgMzcwNDQ2OCAxOTgwNjQ1IDM3MDQ0NjggMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU1MCAwIFIKPj4KZW5kb2JqCjMwOSAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA2MDg4NTIyIDIwNzE4MzUgNjA4ODUyMiAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTUxIDAgUgo+PgplbmRvYmoKMzEwIDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDYzMjE3NDQgMjA2NTk5OCA2MzIxNzQ0IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1NTIgMCBSCj4+CmVuZG9iagozMTEgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgMzAwNDgwMCAxNTc1NTIzIDMwMDQ4MDAgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU1MyAwIFIKPj4KZW5kb2JqCjMxMiAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAyMzU2OTU4IDE0ODkyMzggMjM1Njk1OCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTU0IDAgUgo+PgplbmRvYmoKMzEzIDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDY3MjU3MyAyMDYwMTg0IDY3MjU3MyAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTU1IDAgUgo+PgplbmRvYmoKMzE0IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDIxMjM3MzYgMTMxNDQ2OCAyMTIzNzM2IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1NTYgMCBSCj4+CmVuZG9iagozMTUgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgOTU3NjIzIDE5ODgwMzkgOTU3NjIzIDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1NTcgMCBSCj4+CmVuZG9iagozMTYgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgMjI1MzMwNCAxNDczMTI1IDIyNTMzMDQgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU1OCAwIFIKPj4KZW5kb2JqCjMxNyAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAyMDIwMDgyIDM1Njg4IDIwMjAwODIgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU1OSAwIFIKPj4KZW5kb2JqCjMxOCAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA1NTk0OTYwIDUwMzI0MyA1NTk0OTYwIDU3Mjk5NV0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU2MCAwIFIKPj4KZW5kb2JqCjMxOSAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA0MzkzNTAuNSAyMDU0NDEyIDQzOTM1MC41IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1NjEgMCBSCj4+CmVuZG9iagozMjAgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgNDYzNzM1OCAyMDQwMDE1IDQ2MzczNTggMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU2MiAwIFIKPj4KZW5kb2JqCjMyMSAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAyNzcxNTc2IDE4Mzk0NjEgMjc3MTU3NiAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTYzIDAgUgo+PgplbmRvYmoKMzIyIDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDUzMzcwMjYgMjA0MDQyMyA1MzM3MDI2IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1NjQgMCBSCj4+CmVuZG9iagozMjMgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgMjk1Mjk3MiAyMTMwODc3IDI5NTI5NzIgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU2NSAwIFIKPj4KZW5kb2JqCjMyNCAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA2MjE4MDkwIDIwNTUzNDAgNjIxODA5MCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTY2IDAgUgo+PgplbmRvYmoKMzI1IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDUyODUxOTggMTk5NzYyNCA1Mjg1MTk4IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1NjcgMCBSCj4+CmVuZG9iagozMjYgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgNDQ1NTk2MiAxNzkxNDUwIDQ0NTU5NjIgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU2OCAwIFIKPj4KZW5kb2JqCjMyNyAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA1NzUxNjQ0IDIxMjA4NDUgNTc1MTY0NCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTY5IDAgUgo+PgplbmRvYmoKMzI4IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDU5ODQ4NjYgMjExMjAyMSA1OTg0ODY2IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1NzAgMCBSCj4+CmVuZG9iagozMjkgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgOTA1Nzk1LjUgMTk3OTIxMyA5MDU3OTUuNSAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTcxIDAgUgo+PgplbmRvYmoKMzMwIDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDE2NTcyOTAgMTc3ODk0NSAxNjU3MjkwIDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1NzIgMCBSCj4+CmVuZG9iagozMzEgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgMTM3MjI0MSAxNDY3OTkwIDEzNzIyNDEgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU3MyAwIFIKPj4KZW5kb2JqCjMzMiAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA4NTM5NjguNSAyMTEzNDk3IDg1Mzk2OC41IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1NzQgMCBSCj4+CmVuZG9iagozMzMgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgNDQwNDEzNiAxOTYwMTQxIDQ0MDQxMzYgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU3NSAwIFIKPj4KZW5kb2JqCjMzNCAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA1Mzg4ODU0IDIwNjA0NjcgNTM4ODg1NCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTc2IDAgUgo+PgplbmRvYmoKMzM1IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDM1MjMwNzIgMjAyNDQ4MiAzNTIzMDcyIDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1NzcgMCBSCj4+CmVuZG9iagozMzYgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgMzQ3MTI0NCAyMDExMjgzIDM0NzEyNDQgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU3OCAwIFIKPj4KZW5kb2JqCjMzNyAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAzODc1MjMgMjAyNjQ1OCAzODc1MjMgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU3OSAwIFIKPj4KZW5kb2JqCjMzOCAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAyNzE5NzUwIDE5NzkyMjggMjcxOTc1MCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTgwIDAgUgo+PgplbmRvYmoKMzM5IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDYyNjk5MTYgMjA5ODM0MyA2MjY5OTE2IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1ODEgMCBSCj4+CmVuZG9iagozNDAgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgNDkyMjQwOCAxNzkwNzkzIDQ5MjI0MDggMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU4MiAwIFIKPj4KZW5kb2JqCjM0MSAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAxNDI0MDY4IDE2OTQxNTkgMTQyNDA2OCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTgzIDAgUgo+PgplbmRvYmoKMzQyIDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDYyMDc0NS41IDE5Njk5MTkgNjIwNzQ1LjUgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU4NCAwIFIKPj4KZW5kb2JqCjM0MyAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAyMDcxOTA5IDEwOTU1NzcgMjA3MTkwOSAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTg1IDAgUgo+PgplbmRvYmoKMzQ0IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDQxNzA5MTIgMTk5NzY4NCA0MTcwOTEyIDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1ODYgMCBSCj4+CmVuZG9iagozNDUgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgNTU3MDI0OCAxOTI5MDMzIDU1NzAyNDggMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU4NyAwIFIKPj4KZW5kb2JqCjM0NiAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAzNzU2Mjk0IDE5NjYyMTkgMzc1NjI5NCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTg4IDAgUgo+PgplbmRvYmoKMzQ3IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDEwODcxOTEgMjEzNDYwMCAxMDg3MTkxIDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1ODkgMCBSCj4+CmVuZG9iagozNDggMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgNDU4NTUzMCAxNzA5Njk3IDQ1ODU1MzAgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU5MCAwIFIKPj4KZW5kb2JqCjM0OSAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAzMjg5ODUwIDIwMjQ4ODYgMzI4OTg1MCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTkxIDAgUgo+PgplbmRvYmoKMzUwIDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDM5ODk1MTggMjA5OTE1OCAzOTg5NTE4IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1OTIgMCBSCj4+CmVuZG9iagozNTEgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgNTYyMjA3NiAxOTI5MDMzIDU2MjIwNzYgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU5MyAwIFIKPj4KZW5kb2JqCjM1MiAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA0ODE4NzU0IDE2MDUxMjQgNDgxODc1NCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTk0IDAgUgo+PgplbmRvYmoKMzUzIDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDQ2ODkxODYgMTk0MzgzMCA0Njg5MTg2IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1OTUgMCBSCj4+CmVuZG9iagozNTQgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgMzIzODAyMiAxOTA0MzE4IDMyMzgwMjIgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU5NiAwIFIKPj4KZW5kb2JqCjM1NSAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA1ODU1Mjk4IDIxMDQxNzkgNTg1NTI5OCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNTk3IDAgUgo+PgplbmRvYmoKMzU2IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDUxMDM4MDQgMTczMzk3MiA1MTAzODA0IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA1OTggMCBSCj4+CmVuZG9iagozNTcgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgMzY1MjY0MCAxNzA1NTI0IDM2NTI2NDAgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDU5OSAwIFIKPj4KZW5kb2JqCjM1OCAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA3MjQ0MDAuNSAyMDI1MjcyIDcyNDQwMC41IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA2MDAgMCBSCj4+CmVuZG9iagozNTkgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgMTEzOTAxOCAxODQwODI4IDExMzkwMTggMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDYwMSAwIFIKPj4KZW5kb2JqCjM2MCAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAyODIzNDA0IDE4NTkxOTIgMjgyMzQwNCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNjAyIDAgUgo+PgplbmRvYmoKMzYxIDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDE1NTM2MzYgMTg1NTk1NSAxNTUzNjM2IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA2MDMgMCBSCj4+CmVuZG9iagozNjIgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgMTc4Njg1OSAxOTUzODg0IDE3ODY4NTkgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDYwNCAwIFIKPj4KZW5kb2JqCjM2MyAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAzODg1ODYzIDIxMjI0NzYgMzg4NTg2MyAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNjA1IDAgUgo+PgplbmRvYmoKMzY0IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDI1MzgzNTQgMTYzNDk4MCAyNTM4MzU0IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA2MDYgMCBSCj4+CmVuZG9iagozNjUgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgMzA1NjYyNiAxMzY4MzM2IDMwNTY2MjYgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDYwNyAwIFIKPj4KZW5kb2JqCjM2NiAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAyNDg2NTI3IDU5MDk1IDI0ODY1MjcgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDYwOCAwIFIKPj4KZW5kb2JqCjM2NyAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA1NTk0OTYwIDczMjIwMiA1NTk0OTYwIDgwMTk1NF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDYwOSAwIFIKPj4KZW5kb2JqCjM2OCAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAxODkwNTE0IDE4MDUwNDcgMTg5MDUxNCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNjEwIDAgUgo+PgplbmRvYmoKMzY5IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDE4Mzg2ODYgMTc1ODUzNSAxODM4Njg2IDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA2MTEgMCBSCj4+CmVuZG9iagozNzAgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgNTA1MTk3NiAxODU0NTIzIDUwNTE5NzYgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDYxMiAwIFIKPj4KZW5kb2JqCjM3MSAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyAzMTg2MTk1IDIwNzM3MTcgMzE4NjE5NSAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNjEzIDAgUgo+PgplbmRvYmoKMzcyIDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDQ5MTE3Ny41IDE5NjMwODYgNDkxMTc3LjUgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDYxNCAwIFIKPj4KZW5kb2JqCjM3MyAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA1ODAzNDcyIDIxMTQ4MDMgNTgwMzQ3MiAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNjE1IDAgUgo+PgplbmRvYmoKMzc0IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDIzMDUxMzIgMTQwMDgxMCAyMzA1MTMyIDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA2MTYgMCBSCj4+CmVuZG9iagozNzUgMCBvYmoKPDwKL0NvbG9yU3BhY2UgMjIwIDAgUgovU2hhZGluZ1R5cGUgMgovQ29vcmRzIFsgMzkzNzY5MCAyMDEzNTI4IDM5Mzc2OTAgMjIxNDM1MF0KL0RvbWFpbiBbIDAgMV0KL0V4dGVuZCBbIHRydWUgdHJ1ZV0KL0Z1bmN0aW9uIDYxNyAwIFIKPj4KZW5kb2JqCjM3NiAwIG9iago8PAovQ29sb3JTcGFjZSAyMjAgMCBSCi9TaGFkaW5nVHlwZSAyCi9Db29yZHMgWyA0ODcwNTgwIDE5MjkyNjMgNDg3MDU4MCAyMjE0MzUwXQovRG9tYWluIFsgMCAxXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlXQovRnVuY3Rpb24gNjE4IDAgUgo+PgplbmRvYmoKMzc3IDAgb2JqCjw8Ci9Db2xvclNwYWNlIDIyMCAwIFIKL1NoYWRpbmdUeXBlIDIKL0Nvb3JkcyBbIDI1OTAxODIgMTc5MDA4NyAyNTkwMTgyIDIyMTQzNTBdCi9Eb21haW4gWyAwIDFdCi9FeHRlbmQgWyB0cnVlIHRydWVdCi9GdW5jdGlvbiA2MTkgMCBSCj4+CmVuZG9i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CjYzMSAwIG9iago4MTEKZW5kb2JqCjYzMiAwIG9iago5MzMKZW5kb2JqCjYzMyAwIG9iagoxMDAzCmVuZG9iago2MzQgMCBvYmoKODU1CmVuZG9iago2MzUgMCBvYmoKNjY5CmVuZG9iago2MzYgMCBvYmoKOTczCmVuZG9iago2MzcgMCBvYmoKODQyCmVuZG9iago2MzggMCBvYmoKMTAyNgplbmRvYmoKNjM5IDAgb2JqCjk1MQplbmRvYmoKNjQwIDAgb2JqCjkzOQplbmRvYmoKNjQxIDAgb2JqCjEwNTQKZW5kb2JqCjY0MiAwIG9iago5NDYKZW5kb2JqCjY0MyAwIG9iago5MzYKZW5kb2JqCjY0NCAwIG9iago5ODMKZW5kb2JqCjY0NSAwIG9iagoxMDI2CmVuZG9iago2NDYgMCBvYmoKOTY5CmVuZG9iago2NDcgMCBvYmoKMTEwNQplbmRvYmoKNjQ4IDAgb2JqCjk2MAplbmRvYmoKNjQ5IDAgb2JqCjkyMAplbmRvYmoKNjUwIDAgb2JqCjEwNDQKZW5kb2JqCjY1MSAwIG9iago4NDIKZW5kb2JqCjY1MiAwIG9iagoxMDc2CmVuZG9iago2NTMgMCBvYmoKOTcwCmVuZG9iago2NTQgMCBvYmoKOTQ5CmVuZG9iago2NTUgMCBvYmoKOTYzCmVuZG9iago2NTYgMCBvYmoKOTU3CmVuZG9iago2NTcgMCBvYmoKOTU0CmVuZG9iago2NTggMCBvYmoKOTUxCmVuZG9iago2NTkgMCBvYmoKOTI2CmVuZG9iago2NjAgMCBvYmoKOTg1CmVuZG9iago2NjEgMCBvYmoKMTMwMAplbmRvYmoKNjYyIDAgb2JqCjc0MwplbmRvYmoKNjYzIDAgb2JqCjEwMzMKZW5kb2JqCjY2NCAwIG9iago4NDIKZW5kb2JqCjY2NSAwIG9iago3ODQKZW5kb2JqCjY2NiAwIG9iago5ODcKZW5kb2JqCjY2NyAwIG9iago5ODAKZW5kb2JqCjY2OCAwIG9iagoxMDE4CmVuZG9iago2NjkgMCBvYmoKOTUxCmVuZG9iago2NzAgMCBvYmoKOTgyCmVuZG9iago2NzEgMCBvYmoKODkwCmVuZG9iago2NzIgMCBvYmoKODgxCmVuZG9iago2NzMgMCBvYmoKOTQ1CmVuZG9iago2NzQgMCBvYmoKMTAxMwplbmRvYmoKNjc1IDAgb2JqCjk2MQplbmRvYmoKNjc2IDAgb2JqCjEwMDQKZW5kb2JqCjY3NyAwIG9iago5NzgKZW5kb2JqCjY3OCAwIG9iago3MjkKZW5kb2JqCjY3OSAwIG9iago5ODEKZW5kb2JqCjY4MCAwIG9iagoxMDM5CmVuZG9iago2ODEgMCBvYmoKOTE0CmVuZG9iago2ODIgMCBvYmoKMTA0MwplbmRvYmoKNjgzIDAgb2JqCjEwMjgKZW5kb2JqCjY4NCAwIG9iagoxMjYzCmVuZG9iago2ODUgMCBvYmoKOTc5CmVuZG9iago2ODYgMCBvYmoKOTYwCmVuZG9iago2ODcgMCBvYmoKOTc5CmVuZG9iago2ODggMCBvYmoKMTAwMwplbmRvYmoKNjg5IDAgb2JqCjgzOQplbmRvYmoKNjkwIDAgb2JqCjgzMgplbmRvYmoKNjkxIDAgb2JqCjgyNAplbmRvYmoKNjkyIDAgb2JqCjEwMjMKZW5kb2JqCjY5MyAwIG9iago5ODMKZW5kb2JqCjY5NCAwIG9iagoxMDYyCmVuZG9iago2OTUgMCBvYmoKOTk5CmVuZG9iago2OTYgMCBvYmoKMTAyNwplbmRvYmoKNjk3IDAgb2JqCjEwMTMKZW5kb2JqCjY5OCAwIG9iago4MzIKZW5kb2JqCjY5OSAwIG9iago5OTcKZW5kb2JqCjcwMCAwIG9iagoxMDY3CmVuZG9iago3MDEgMCBvYmoKOTg0CmVuZG9iago3MDIgMCBvYmoKOTc3CmVuZG9iago3MDMgMCBvYmoKMTA2MQplbmRvYmoKNzA0IDAgb2JqCjc4MAplbmRvYmoKNzA1IDAgb2JqCjc4MAplbmRvYmoKNzA2IDAgb2JqCjgwNQplbmRvYmoKNzA3IDAgb2JqCjc4MAplbmRvYmoKNzA4IDAgb2JqCjczMAplbmRvYmoKNzA5IDAgb2JqCjgwNQplbmRvYmoKNzEwIDAgb2JqCjczMAplbmRvYmoKNzExIDAgb2JqCjc4MAplbmRvYmoKNzEyIDAgb2JqCjgwNQplbmRvYmoKNzEzIDAgb2JqCjczMAplbmRvYmoKNzE0IDAgb2JqCjczMAplbmRvYmoKNzE1IDAgb2JqCjgwNQplbmRvYmoKNzE2IDAgb2JqCjczMAplbmRvYmoKNzE3IDAgb2JqCjgwNQplbmRvYmoKNzE4IDAgb2JqCjczMAplbmRvYmoKNzE5IDAgb2JqCjczMAplbmRvYmoKNzIwIDAgb2JqCjc4MAplbmRvYmoKNzIxIDAgb2JqCjc4MAplbmRvYmoKNzIyIDAgb2JqCjgwNQplbmRvYmoKNzIzIDAgb2JqCjgwNQplbmRvYmoKNzI0IDAgb2JqCjgwNQplbmRvYmoKNzI1IDAgb2JqCjgwNQplbmRvYmoKNzI2IDAgb2JqCjgwNQplbmRvYmoKNzI3IDAgb2JqCjc4MAplbmRvYmoKNzI4IDAgb2JqCjc4MAplbmRvYmoKNzI5IDAgb2JqCjc4MAplbmRvYmoKNzMwIDAgb2JqCjczMAplbmRvYmoKNzMxIDAgb2JqCjc4MAplbmRvYmoKNzMyIDAgb2JqCjc4MAplbmRvYmoKNzMzIDAgb2JqCjgwNQplbmRvYmoKNzM0IDAgb2JqCjczMAplbmRvYmoKNzM1IDAgb2JqCjgwNQplbmRvYmoKNzM2IDAgb2JqCjc4MAplbmRvYmoKNzM3IDAgb2JqCjgwNQplbmRvYmoKNzM4IDAgb2JqCjczMAplbmRvYmoKNzM5IDAgb2JqCjczMAplbmRvYmoKNzQwIDAgb2JqCjgwNQplbmRvYmoKNzQxIDAgb2JqCjc4MAplbmRvYmoKNzQyIDAgb2JqCjc4MAplbmRvYmoKNzQzIDAgb2JqCjgwNQplbmRvYmoKNzQ0IDAgb2JqCjczMAplbmRvYmoKNzQ1IDAgb2JqCjczMAplbmRvYmoKNzQ2IDAgb2JqCjc4MAplbmRvYmoKNzQ3IDAgb2JqCjgwNQplbmRvYmoKNzQ4IDAgb2JqCjgwNQplbmRvYmoKNzQ5IDAgb2JqCjgwNQplbmRvYmoKNzUwIDAgb2JqCjczMAplbmRvYmoKNzUxIDAgb2JqCjc4MAplbmRvYmoKNzUyIDAgb2JqCjc4MAplbmRvYmoKNzUzIDAgb2JqCjczMAplbmRvYmoKNzU0IDAgb2JqCjczMAplbmRvYmoKNzU1IDAgb2JqCjczMAplbmRvYmoKNzU2IDAgb2JqCjc4MAplbmRvYmoKNzU3IDAgb2JqCjczMAplbmRvYmoKNzU4IDAgb2JqCjgwNQplbmRvYmoKNzU5IDAgb2JqCjczMAplbmRvYmoKNzYwIDAgb2JqCjgwNQplbmRvYmoKNzYxIDAgb2JqCjc4MAplbmRvYmoKNzYyIDAgb2JqCjczMAplbmRvYmoKNzYzIDAgb2JqCjgwNQplbmRvYmoKNzY0IDAgb2JqCjczMAplbmRvYmoKNzY1IDAgb2JqCjc4MAplbmRvYmoKNzY2IDAgb2JqCjc4MAplbmRvYmoKNzY3IDAgb2JqCjc4MAplbmRvYmoKNzY4IDAgb2JqCjgwNQplbmRvYmoKNzY5IDAgb2JqCjczMAplbmRvYmoKNzcwIDAgb2JqCjc4MAplbmRvYmoKNzcxIDAgb2JqCjczMAplbmRvYmoKNzcyIDAgb2JqCjczMAplbmRvYmoKNzczIDAgb2JqCjgwNQplbmRvYmoKNzc0IDAgb2JqCjc4MAplbmRvYmoKNzc1IDAgb2JqCjc4MAplbmRvYmoKNzc2IDAgb2JqCjczMAplbmRvYmoKNzc3IDAgb2JqCjgwNQplbmRvYmoKNzc4IDAgb2JqCjgwNQplbmRvYmoKNzc5IDAgb2JqCjgwNQplbmRvYmoKNzgwIDAgb2JqCjgwNQplbmRvYmoKNzgxIDAgb2JqCjczMAplbmRvYmoKNzgyIDAgb2JqCjczMAplbmRvYmoKNzgzIDAgb2JqCjc4MAplbmRvYmoKNzg0IDAgb2JqCjc4MAplbmRvYmoKNzg1IDAgb2JqCjk4MzMKZW5kb2JqCjIxNiAwIG9iaiA8PAovRm9udCA8PCAvRjQxIDYgMCBSIC9GNDIgOSAwIFIgL0YzMyAyNCAwIFIgL0YyNiAxMiAwIFIgPj4KL1hPYmplY3QgPDwgL0ltNiAxOTggMCBSID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9iago3ODggMCBvYmogPDwKL0xlbmd0aCA0MjY1ICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42q062ZLjxpHv/RV82TA6ogmhqlA4HqWQpZVCsrSatuwI2Q8gAJLwgACNwz3cr3deBQIk2BpvbEz0oCrryMqsvItfvT598U2oN4mfRlG4ed1vVBT5NjJmEyvjBzrSm9fiN++Htj33z1tljPFen431urLkfij9LC/dhC93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lJsc+8uveoQKGf/mucKHkR2+5IKWitLNiXZYTolUEs1NLeow4Qr/BUAqMh5QkyB1myf0mko6OLCruhBlG/wCmFZw8/3jzX8AKyTyhmVuZHN0cmVhbQplbmRvYmoKNzkwIDAgb2JqIDw8Ci9UeXBlIC9QYWdlCi9Db250ZW50cyA3OTEgMCBSCi9SZXNvdXJjZXMgNzg5IDAgUgovTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQovUGFyZW50IDc5MiAwIFIKPj4gZW5kb2JqCjIwMCAwIG9iaiA8PAovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvRm9ybQovRm9ybVR5cGUgMQovUFRFWC5GaWxlTmFtZSAoLi9JbnRlcm5hbFRpbWVDb3N0cy5wZGYpCi9QVEVYLlBhZ2VOdW1iZXIgMQovUFRFWC5JbmZvRGljdCA3OTMgMCBSIAovTWF0cml4IFsxLjAwMDAwMDAwIDAuMDAwMDAwMDAgMC4wMDAwMDAwMCAxLjAwMDAwMDAwIDAuMDAwMDAwMDAgMC4wMDAwMDAwMF0KL0JCb3ggWzU1LjExNzA4MDAwIDMzMS4zNDc0MDAwMCA1MDAuNDE0NjAwMDAgNzE5LjA2MzQwMDAwXQovUmVzb3VyY2VzIDw8Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSSBdCi9Db2xvclNwYWNlIDw8Ci9DczEgNzk0IDAgUgo+Pi9FeHRHU3RhdGUgPDwKL0dzMSA3OTUgMCBSCi9HczIgNzk2IDAgUgo+Pi9Gb250IDw8IC9GMS4xIDc5NyAwIFI+PgovWE9iamVjdCA8PAovSW0yIDc5OCAwIFIKL0ltMSA3OTkgMCBSCj4+L1BhdHRlcm4gPDwKL1AxMyA4MDAgMCBSCi9QMjggODAxIDAgUgovUDE0IDgwMiAwIFIKL1AzMSA4MDMgMCBSCi9QMSA4MDQgMCBSCi9QMjQgODA1IDAgUgovUDQyIDgwNiAwIFIKL1AyMyA4MDcgMCBSCi9QNDYgODA4IDAgUgovUDI3IDgwOSAwIFIKL1AyMCA4MTAgMCBSCi9QNyA4MTEgMCBSCi9QMzkgODEyIDAgUgovUDI2IDgxMyAwIFIKL1AyNSA4MTQgMCBSCi9QMzQgODE1IDAgUgovUDgg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CmVuZG9iago4NzAgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKODcxIDAgb2JqCjU0CmVuZG9iago4NzIgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKODczIDAgb2JqCjU0CmVuZG9iago4NzQgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKODc1IDAgb2JqCjU0CmVuZG9iago4NzYgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKODc3IDAgb2JqCjU0CmVuZG9iago4NzggMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKODc5IDAgb2JqCjU0CmVuZG9iago4ODAgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKODgxIDAgb2JqCjU0CmVuZG9iago4ODIgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKODgzIDAgb2JqCjU0CmVuZG9iago4ODQgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKODg1IDAgb2JqCjU0CmVuZG9iago4ODYgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKODg3IDAgb2JqCjU0CmVuZG9iago4ODggMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKODg5IDAgb2JqCjU0CmVuZG9iago4OTAgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKODkxIDAgb2JqCjU0CmVuZG9iago4OTIgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKODkzIDAgb2JqCjU0CmVuZG9iago4OTQgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKODk1IDAgb2JqCjU0CmVuZG9iago4OTYgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKODk3IDAgb2JqCjU0CmVuZG9iago4OTggMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKODk5IDAgb2JqCjU0CmVuZG9iago5MDAgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTAxIDAgb2JqCjU0CmVuZG9iago5MDIgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKOTAzIDAgb2JqCjU0CmVuZG9iago5MDQgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTA1IDAgb2JqCjU0CmVuZG9iago5MDYgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKOTA3IDAgb2JqCjU0CmVuZG9iago5MDggMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTA5IDAgb2JqCjU0CmVuZG9iago5MTAgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKOTExIDAgb2JqCjU0CmVuZG9iago5MTIgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKOTEzIDAgb2JqCjU0CmVuZG9iago5MTQgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKOTE1IDAgb2JqCjU0CmVuZG9iago5MTYgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTE3IDAgb2JqCjU0CmVuZG9iago5MTggMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTE5IDAgb2JqCjU0CmVuZG9iago5MjAgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTIxIDAgb2JqCjU0CmVuZG9iago5MjIgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKOTIzIDAgb2JqCjU0CmVuZG9iago5MjQgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTI1IDAgb2JqCjU0CmVuZG9iago5MjYgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTI3IDAgb2JqCjU0CmVuZG9iago5MjggMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTI5IDAgb2JqCjU0CmVuZG9iago5MzAgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKOTMxIDAgb2JqCjU0CmVuZG9iago5MzIgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTMzIDAgb2JqCjU0CmVuZG9iago5MzQgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKOTM1IDAgb2JqCjU0CmVuZG9iago5MzYgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTM3IDAgb2JqCjU0CmVuZG9iago5MzggMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKOTM5IDAgb2JqCjU0CmVuZG9iago5NDAgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTQxIDAgb2JqCjU0CmVuZG9iago5NDIgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKOTQzIDAgb2JqCjU0CmVuZG9iago5NDQgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKOTQ1IDAgb2JqCjU0CmVuZG9iago5NDYgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTQ3IDAgb2JqCjU0CmVuZG9iago5NDggMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTQ5IDAgb2JqCjU0CmVuZG9iago5NTAgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKOTUxIDAgb2JqCjU0CmVuZG9iago5NTIgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKOTUzIDAgb2JqCjU0CmVuZG9iago5NTQgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKOTU1IDAgb2JqCjU0CmVuZG9iago5NTYgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTEgNzk5IDAgUgo+Pgo+PgplbmRvYmoKOTU3IDAgb2JqCjU0CmVuZG9iago5NTggMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYvSW1hZ2VCL0ltYWdlQy9JbWFnZUldCi9YT2JqZWN0IDw8Ci9JbTIgNzk4IDAgUgo+Pgo+PgplbmRvYmoKOTU5IDAgb2JqCjc5MgplbmRvYmoKOTYwIDAgb2JqCjw8Ci9MZW5ndGggOTY0IDAgUgovTGVuZ3RoMSAyNzk4NAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeAHVfWdgXMW59sw523vflVbS7mqlleRV78WW1urVtizLlmzLlmzLDfeCjTsdDIQOcUKAEAJJTPB6bbBMCSYxSUhiQggBkgCBm0JJnAApVEvfM2d2ZJmE+30/vh/3Cj/7PDNnztkz77zzTjlHglBCiJEcIDIpXr5+ZJPUI2ci5wlg2/KLtwWP3HriY0JoMSFqw8pNq9b/6189JkI00wnRp65ad8nKjXJcIsQ6QEi1bvXoyIr39r8xRkjbMM6vXI0M8zWaPyP9ZaSzVq/ftvPZhKMfaXb9V9ZtXD5yyz+v2kdI+21Ib1g/snNT+MXsOwjpUCEd3DCyfvQt3bItSGex9KYto5sm3v3TG0g343JG5FH8x35MRENWg0OkiOSRCuRGSQF0CZlG8omBZBE9SSc61DSbhEmQRIiLeIiPeImNlBItzkslKcRO3LiSg2SQQlJMAsRJzMRC/MQK66iImkj4FqK9m5DxW5VvFR9zyFqylRzAf1eRG8it5CnyW7KMXA51iNxLHiDfJnHyNHmWvCxO+P/B45eo1xOTfAL35CRk4pOJs+MPAGNqy5ScW5FyqoLncyZsE3/9XN5fx2+dsI2PaRzEoJxrll7A1f5Oz018IjXgTPNEJUtLV0NblW96X3v3+JHxBy+oxRzSSxaSRWQxGSLDZAT1X4EWWQPLXETWkfVkg5LagGOroFcitRSllqMU0+dLbSSbyEayhWwj28nF+G8T9NZkih3brKS3kx34bye5hOwiu8kesjf5uUPJ2YMju5TcnTiyj+xHy1xKLlOUYJ5zObmCXIlWu5pcQ65Fi31x6trJUgfJdeR6tPOXyI3ki/QNFxy5idxEbia3wB9uI7eTO8iX4RdfJXd9LvdOJf8r5G5yD3yGnXE7cu5R1B3kTvTJH5JHyMPkCHlUseVyWI1bRNhlpWLpTbDBHtT58il3zK25Y9Ja+2ANVu+DyXrvhP0um3LGxUk7MutdjpLMOgeT7cCusjeZIyxxE2rG9fl6MhuxOtx4QT3FGf+3XFZjZqe7YC9hGWazO5D3lX/LnVpiqr6DfA098Ov4ZFZl6j5oru5R9NT8uyfL3qsc+wa5n3wTbfEgYUowz3kAeQ+Sb6Fvf4ccJg/hv/N6quJHHybfVVouTo6SBDlGjqMlHyUnyJiS/98dO4LY8flzjiWvlZi8yknyGHkcHvI9cgqR5vv4T+Q8ibynkrmnlVI8/X3yA3JaKcWOfh++9SNEqJ+Qn5KfkZ+TZ5B6Tvn8MVLPkxfIL8nL1Az1C/IOPs8BJNa2YumSocWLFg4O9M/rm9s7Z/asnu6uzo72ttaW5qbGmbGG+hnT62prqqsqK4oKC/JzI9lZ4cyAz2W3Wc1Gg16n1ahVskRJfku4dTgYjwzHVZFwe3sBS4dHkDEyJWM4HkRW64Vl4kF23ggOXVAyhpIrP1cyxkvGJktSW3A6mV6QH2wJB+NnmsPBMbqwdwD6hubwYDB+VtE9ilZFlIQZiVAIZwRbfKubg3E6HGyJt168+mDLcHNBPj1qNDSFm0YNBfnkqMEIaYSK54Y3HaW59VQRUm5L7VGJ6Mzsa+NydsvIivic3oGWZn8oNKjkkSblWnFNU1yrXCu4Jo57JtcFj+afOnj9mI0sG46aVoRXjCweiMsjOOmg3HLw4NVxezSeF26O5+36gw8GHI3nh5tb4tEwbqxr7uQX0Lg62xYOHvwnwc2Hz/4Fdz0lZySZo8m2/ZOwg6yKk2aK0xGhCe4Nd4j6hULsXq4bi5FlSMQP9A7wdJAs8ydIrCg6GJeG2ZFT4oi7nx05II5Mnj4chmVbwi3DyX8Xr/bFDywLFuSjZZV/2XFVNo4H43JkeNny1YxHRg+Gm1FD2JLMG4jHmiFiI0ljthwtLkL5kWFUYg0zQ+9AvCi8Ke4KN3JrIwMXyW5Z0zegnMJzW+KupjgZXp48K17UgnPhIi0HWcOwG2TXCvcOnCRlE28cLQ/6j5WRcjLI7iPuaUKjRFoODqxYGQ8M+1fAP1cGB/yheGwQ5hsMD4wOslYK2+J5b+Dr8IMGVM5C3T5XWhRGtePabF1wQPLLg6y1kBFsxUe4cToO2OIanmQt2jg9OED9RBTDtyRLMHXBdZCQs5vacTIYpza1+0NwbuXnv7klP68AbiOum7wnFW5Cff6e+Pd84a3x0uyG8oIto81TbvCCiyKh3GDyav/5PiVmi6QxcAs61pztrA4F+RJ0EId1cQn1VLJYK/qCcTInOBAeDQ+G4UOxOQOscZitlfbt6gt39S4cUFo76SXzLkjx49X8WJyEuuYNiITUBB9sjSrtyppVSbcp6clk++cOd4jDwYO6cFffQfbl4eQFSRA9CI2jiXSMXFftKEdnbUWgDLeOhIO2YOvBkbGJA8sOHo3FDm5qGV5di25wMNyx4mC4b2A62lLp93v9u9hXO0gX7ZrXWJCP2NN4NEyv6T0ao9f0LRw4acO8+pp5AwmJSk3DjYNHs3Bs4GQQwV3JlVguy2RFgizBrjQXCZ1S3n8yRsgB5ahKyVDSy8coUfJ4IeRRsnxM4nk2UU5CnornxZS8Qfygh/lWowkQh1uCK1jz7BlcfXB4kHUu4kFT4h+N03A9iUvh+qNU0pjihvBoY9wYbmT5DSy/gedrWL423BinHgrjjCEmHRwOI07B5QaInw7CO2zM+6Xs4NjExLyB0Bn/2cEQusRiYOFAXB/FOKDO7kS5NoZhZLfFDywfYfdB+tHVWc/sWD6IviAuiCIdcT2uoE9eASValXOYO+Kk5WgbNKBy/gEk4gcG44NR9qUDa9gdBYO2OGkP16LZ+TXVEfZFRYMHHeFS5tgoGjdkX81Ij3sjfQM8x48kvgwBl9VIa8KdLw/j0PLhIFpARZb3wdV5LDWwdkPOKEKiKjKqwOBPHiSsWnK20WyI6wtxQfxj2liIC+KfdhBGYZVXUlcnC+C7bXEj7igyxZTJE2AdHOpg94J/V+PmWdGn2WV6x8jc8E6ERnbTyldpcThuzu4YQfDn5xuRE64WJ+NaumyWxa5xmudqWc1NsLucPW9s4sHwJSwCiJ+C/DAbHJhjEv9JODYZPPj5jPiiaEG+7vO5ZiX74EGd+T+fwO2lM08yu0qwBWMNvkqNVeJW+QWsqGSsL2tID5lFFj1BzHQuFp619JFH3M3NugLt92gTkUiQzsPilNKmmFUlmU+kpjaET1RobpDtHWO04HiD9gZJIg3nXj/3XNG51886aorO0qLX3nz9Tdv7z9lrisrefPHNkmJqD9kVuCySVuvShDMLpYqcSGVZWWm9VFEeCWdaJCWvvLKqXi4rzZBklOQ59RJLU/mFzxbKs89ppH3hhvll6oxUq8usUUtpPkfB9Gxb36Ls6YXpWlmrkdU6bW5VY2bXupbM32jt6W5PukOnc6R73Ol27bnfqi2ffKC2fNqkWvfpbbKmbnFDlvxlg05SaTRjGb6UaXWhjvlWp01ldNrsHp3WYTflNi8+d5U7jV0jze3m1zrXAxtSMjLxnsqkzoD9lh1LI3XRsYm3j9loD/i9Y1aF/3LMrPBfj5kUfvuYEfw9qQwrdx8twso+QvMTzj7V43QaNgaKaeFR/XwY88WzDLTozSj7sb10uqQ422XhZitXDKJxJw3ETOd2ZcBI3FAqk6TWuWJLd3fs++mNPX13/GJ/9dqFrX6dWlbpjDpL6ezNs+ffsKKqYvlNi3q29pZbtQaNfMLmc1hceTn+efe//7Wvf3ZksTs4zW9xpjpcaU59TlFOy1VP79n95P6ZkaKIxp6h1P2hiU/ogNqFPYk5Jxq8s71HvDJJ1h+s1F9h1B/8L1Z/5TjqTx6T7MQwceqEm/YYbHPV/aShgRZFeV1LiodQU970dl5VyU0HdK5Qii/TpdO7Q96UkEuXqjNp1WqtSaf6jVC4LbQJ7ksThV9PJw/FbMP1m+olc3Gxt6jIUOjzpSZvEKzcoMK4QbByg8px3GDqmGSPZWSVmEwGH9rTYENjGmwoaDCgGgYfihhYHcjEqVgKq1BWZa/R5zUX+UoKNYHc3kC/o1+pVUODw1tjL0PtXkxWr9ReZuMVhbLXzCgqK7OXXVDnMLXIzPFzaNh+3hCsp2RIXlpG0T2YdGuiOlcgxRty6qTxMtnoTne5M1xGabyN6lzBFF/Qqc33rw4WZ/n0dIeaXmVMDURS1lv9TtN506369DatQSur4ALoDoeEIVUPTMsypeb6P1sgP5AxLcWod6a7YVuJ2VZlhG0rSTO5OZZhK7RX6VD9KmafKpvJTLurmL2qmIGqxqSyE3kxJPMa7MzeUAqjrMIwJ1ixO1jpGHbYPZFWaBujukc3xWgs5p0xRo2PhHq9SXOy6DJ0tkb0i1JhVUdNjdJBFLfJkQvl8IW2C5V6vBky6zHaDNnr9HhoeSQnEkEp1mtURo0rKyM15DKqdrgL6ufVbdU7QynMy/K81FkyM7Vr66yccOPimmB5Qa5rm0U3fq55TkpD2c3fal7eGIA5dSqV3maiJeULGsLnfj1pxodzAmrZXD1/Y9PMVbNrXZbo9Fkl47/PSpev7F7j1WrGu0N1cxSftU58Ir8Mu2aS0RO+GAzjs6OvnDoORTRJnwUrPqswDoAV2ynHYW8Nc0j7xKlHmF01jjGaeyy918S61tlSdK73lUDyTNR2OopozPwqdN67Qiwas74WYoH3ZZXerBu/TfQ4KLNOrcaHfIXOrFepTjvT7LpP756s5jKdPc3p5IGR9UGJLJ44KzfIPyFlGM7isaC1MdBY1Cgb9d5yE/pPOetJ5cxHym1WG+0uH6MfxiwkJ8dKqIkwXyK1rLIoCn6bRVCFcQLj4+yc2jFJF3PZvc+Qclu5VHeqnJJyWl5eOHPaGPXHrM9n0sxMVfq7hZ0zXjX1qEhRw9kG7jt25kGblwyJ2Ho6umSopoh3yVI40RJEHw3ibCRSUcE4aZiyivJCONfkkKRSuqCWx15PWWllldxgS/OnBix1N/e2be0tqN/2rTV7PCWzamaMdJSYdCa9SutvnL+yfOSaeZH7b2he0RgYnDNz4wyfyaTRmEwLG1qzW1fO7N7Umd1aPqfCnx5O19lSrCnpqeF0Z37/vnmnvQUNea19jdhZhn0Pwb6/Um/G7vEMcuUjCJ6GUGXSHcDvMYuBlS7F0orFKsfoRzG/O+qAWaNBlIiyFoiy/hplNo+OSYaYnrgNlRUhlbp4jKofjXT6W23dNZBH1T0EJoQvIZ4hmCWHJYWY1YYUj2JBS4xKFZOx287Hc23SgFq7B/aql+RflS2/aSja0dqao3P43a40h0brDPpSgg5dbld7e+6y6xbkPuwunx8L1sdacpr3NNUPVKXQt7Y/fkWrPVKbtwHup1Ih/qurlf6Hj3N/zKsO22ZdHt/ectmKGY5pjaXjh/oWTF++W+ljC2GzoPwsBtlrj6ax3sUCEvgNZi02Mh2HOUgOMxsOgJXeBlaGbiUfBcDvshNyxiRjzFxkoZaUtwIxg7k9kDVGpePOTvnPJazn6s3tJfljVHNUD8OdezHKhvMofG6IW+40emPpfxrSFY8LZ2JwPz+gy0FJrU2Z3jVQNHLHaMXMzYcGo73NFT69RnKYrTnT+2t37A/FhqbXzG+Imlg4v8+eYjenZKc7YruPbb/yqV11ttRMn8Xpc+QEQrmhEw8vuHwgmhUN65zpzJeGYZe7sFcfwSzmuligoY4a/TWsh9awsa7GBmPUMP+oYe5S8zjF8xZSxK1WlDQWWDGWwjhJyUfpIuZSBmeo1ViT41dZ0DXVCV8nurvqmKVH3c1Ck+JQGB65WZJ+pXjU5CRgajdEGJ/0Kxnxe8rUp0q+S2tPc7GJWtuhRcuvX5BbuuzmpbMvj2ldAeZV+gea9jY3wIfgUzNDM2KtOSnChXb0zO+5/OiybY9f0dbSJBm1ZjazMGvPtcB7lu2JNV82Cm9qKkHFYa8h2OsQYlsUuyoPx6YVVTZUbqyUnaxHOYOwk9MZysdY0JPP7JXPDJmvRDl4w8ePNEfvj0psevgI63HlqqT7gRUvU9I4DczDnIpZMBTK/9EB1U0q6ZSKPq+iKlVa0auRTt+7w5ZNFsmifzdNcbGhZITbvEWEttLXotzdEPKiiPropJpwaIpjoa+ej3BsSpFTqZhUKx/KSTmXyGjd1Btb0VFk0ho1siRrjZXzN8c2Prildvrme5evvX244AH5kh0zFtdnSpKUE+raOb/QnerWWlIcZqfVZEzxOet3je3advLSluatXx1wXnZbYfdoFbMhJdl4dnOVeifmaCsSHhvrhErn8zM/gsEYKzELQhnjwEow88OGieJp2WMTz8ccNjvtzjacrWxLjZwtbg9229rhUBjsGlD/6OkyZcA7HS3DzFkEJ8Vd3ErkhiWmzBAQ7pXhD1FemUOrpKtUap1G687I82eXBy3P6ox6tcP6rA4BChMr3X6bTYWAsz/cvr4z3Jhl0slqq9NrUeuNel9Zb+0yrT3VmRX87M+Yb6vYpFt2B7OcqXbt0JKr5+eZrSanf9IO8v2wwxxSfzwQCLcaWP3mpIRBMVdNWVFXq/NsQ1u46GxNe153SrvSZXgV0WXOlL1Z+uKbpVhinZ/6VNj5mPX/XlMvj85u+X5ROUmnNRZXFHvq5xTaT7KBy247KY6Jik9bcNVQanVFjtciU609mMqMkiJqq3pGllHxlPK5VV9oieGhq/rzVFqt1qAzmAwwkgkLTPjF31QPwR6jZPBorJMNWKbRcJiUj46aWgfKCMxyzGMzzUIAibmX9sTay9praz0FZ9PaOonprKddo4SUUngAPJ75QtJIp5EsA2xvIubS89Oef2t2MXhx84WS3iC5p/qMMnhxH7KolPmBna79vH3CbesxkmeYtLKs0WE1xvyoDNHhDp2DTc0duj+xOZXD+lZluyc7za1FIcwgM/KKPG0rYuly4Re4jtUM13FO9bSXtGggld6kfYn73LhhaKneoFdbfI70TJtFr8nG3FViq/yK8Vvla+Ufk3qs9JeS52NuR0Ebi+ttOgSrtqDNSbvbyhrGJj5i8y6wEtHBbzzKDjVoZ0PGzFYH7Z7tV1mL5TKtlkUvDA/onadiZoiCMq3fry0rULEeHStHICMD7CsGgjacNjAtO2YEZ1uLtXJ1529MfW+73cPV8jvT26cFG39d3bno18HZbJaB1ms4y+ZpZ1/i041o2Zlo9HTUW1OEn2jUjjmI7UwU/7Ay5h+sj6NHezy8BSM5GoygHm9yzi9mcVWY1GF/gX2ybu7xYlmAhQAfRZR2dWJZkGPBQoFPUa51Wi8Np5UOHZhVtdzv8M6s/HPTprmF5Rc9sHn9oWX5tlBJsKSoNDuQVb740u68tgC12e3j46NDxW1F3tFFJe1F3r6lve8E83z6Ky7uGq33y9vCgawFRbN29uWnexyFGeFCySCFZgzW1W/qL8mODZaH6qvLUlK682cMR7KHGnt2zSvQ60Lj7y9eFazuyB1cGahqP7ektkHSpRTk5bpnNqUX1/M4cgjrh3sxHywllxxvKKfTnMl4CeaBFEIJpCyDRVgn61veDCMb4o1sjDKy0cqoDFRGdsxAYjhEsPrDYkxzoqAzqzWlW8QfB6aAyeU6nzizGeDkeG1XJnoa7fl+Jlbx9spKpePI96IbKDM9X2FHcf2eZt4rnFoxAWy7qWPh7u7QZESRrD1LmrMG+s9dJ2LM1FlfV8eMldeOsLH5SuxJ9KqLsCcRItefaAjPDm8Myx5mDFQRrNhASTuVtOK+SCu+ruTDCp7Hpc0kjbi5pdzJs8DKEATmJnXDTI8aAjH4d2CM1h9PsXUo9nnpbDQ5nUnOZtjIO8U4ygAjuZ1sD4y5I/yQ1n/eAM78utoow6QJ5CvYXgfipJYW107LqwHOt/0etH05uT1maqikeSW0JOagPZiGPq8MohDKHBf8LuvbShr1LHlcysGK05SsjynpGmDFTGClwibmDqmeggLCqsrdwpNpVOd2pLXahUtg/U2LMKlFjFXG3dI3lOUmaj5Z9ZwpgXfSIdhmBpt4uDRaSj0eeY/OmZnqD/usmvErPm8TOk/nSMn0pWS69Wbr+GN0g9moLL1lrVlPPxg3/7trfPYCvdhg1suYuuhNPtv4Y+PZdmxkUKyfPqH1sJmbxJS9q43K3pXSMxC6lOqzFQHbqwPz9sbo89Fxg61VaeRkC//Hlv331pxsxPNeO9l26ucxl5xD3o35HTZ8nZP1w4jNaKLdOT72uWkubZ3Se5V7Unox4q3CaBSwsihRenVGhgfOnpFRyveqWOfmG1ZK52YzjBNzYnbaM6ceaxmlqlPWNsouDdJi7aOYJOdx+hFCi41qEl2dWOZoYuaZnfWtBdUdBd2TQQEewEK3mMnXJHdmMDtJbnyxGEGYV0zpC2xJfUGg+LeMZG9x88ghJivq53kAcepc+c2FNVtb2PiLnTCtJ7+psGbbZDzRONK8nnSbtvvGjurB5mJbQW9XW9aCizsCky0ihWs+F1n+PQfbHkY4kd6o29E/O7VoZm5J8zQnQk43GlHxJfletGEpuS1m5W3IGjIZhhWDTmmnZPTlhkd+sj3RxfwZRrbW4tGYjZo8OCtxGa53IhmQWTiOGQo6p6VkdQjjs/FyMiJHk9uLSXv/d9a+0LjuLwzLk2a8s+f/EpYvMBVMNMz8XCJs7f06bOQkOeRbsbSGPJrroHl2GjHTiIlGdDSipdNkmifRDGYSmAGs+CBYCV5gZYWkHId5M9jCKKPIQA0utoPhYgZzsTWYi+1vuJjVXI9JBrZDe8JKejahoVLGKE1YOzG5lpLbGTDaUNI7xcKcRazkj1g1iFmg2MAQS3P59dqt392y8ZsbKmu2PrQVXPWwv37t7I41zSF/w9rZ7Wubg/SPG05e1dW47/gWcCd4T8dly2rKl17W03nZSE35kstgm0Pjt8m/gm3YXs4BtpcTqjQkQzFY6aAsrYRyCMVh0IsxfLv5No6yoeNjm2J8R+c/7uN02GZ/4T7O+c2v89s4/z54u794G+eWJbnNM2NZImDDXVxuv0Ob193TW7DsINvGKVO2cVpzmnc11Q9WpdJ3Ln7i8jZbZnl4vF7s3qjeQQeTZXS1S6bV57m7rziyveXSFdOdeU0l41/BM+MVe5gvKf1NehD2KiPLj2+qoBFr0khgxTZgbiwm2LhvZcZykBiGfMICH2FuQlJhw+yYPtoZsbqDHW62clBCmDKMcaeYuq/F5oj/YUbDjaKRHpQ0ep3Om57lTimuqA1PsYQSf7Jn1takm0NZ6SaVTOVlngy7Xq/XuQq7q87FxbB1vutcXtmcY5V1BoPeklwn9k6clZ5DnTvIczFTUVdD1+yu/V1HutQzk1UEK46ipNETwKeOob5KGt1DYXSJmWP01VggqzSr1ORnA4Ofzf/8LOz4Wczys17kf4z+S3mwYUCCmGLIx1TgVCyC6zWYjpgkU+FrVYY/2+fYh+2b7HKVvcrumf7bmX51Xqfnbb5NCEOetddgtj5kO2tTOll0ykZ9UXKzh+9IKDuqKtHH+NPAQk0y/flnXBrpubIll80qXtBS7DGoNEatMdowv3pac6k/JzanvzeWkzd399ys9to8NxZeMp5q6DMrO4qmxfLcubG5/X2xHGppWYcW96a4sgLOVJvWH/Q7wpXZkfLcQGa0fv70ipGOfJPDbTNZPTZ7ik3rSfE4w8VpORW5wcxp0+cx/wtN/E1ar/ouqSWLj+cRe7iAtQFMpTBsClbaAqxEMoVhxALmhiavueBsuD3dfNbbXoJl7FGtsq969gwL4GV8E6z0zGm+NZhcXX5+lfoFy1Fpvc4WzCv0tmIBuc/qYPv1e8V8+i22jMdqs6rNm5Xm0qn1atWiqctDvjvxxWtJMjHB6i3/TV0kRTA3xmvGJFPCm8bcHvKrsMdMMiNRNBPD00fHoxkZUfS6j2MmuSI6s90WPVtX0e5i237ZPXq+7XcG+zS0qPS1N/myHFsYtNTjPh918HBCWYJduND+D6aQv5XhwejvTcEOxHjRlAp+sTXkE/7Uz+6c7HfuqWvmkH1yzfx5o6Cut7G9UvkJjPW3YKe0nBpzWC/KYb0ohz0Iy1HmWDmsL+Wg/o/yeBNI9lKw4hngj5RwzgSbY7ICIuM9ngHj6Z0FHTlGdUoHplzq8xumLEqJWdZkt7pgASY2TCd3Su3Knl9l1WQGtkod6W5vul3Tc4cypGtdfGPLW9ReXL+7BVumbJdCPzlN2tE/a/qqa5dJmWImdO4fs5c2ZQ/0S9tFDvOFTKxDd8M++eT3J0l4AmMUm8IGdOwzO0AzuMigypILFWeLKVZfVzJ2iwmRI5m243isCgWqMFew0xwbzVXTzFxkzMikWZk0xGRDiGaFaFDJDdKsIM2x0otDNMQ2CfV2d3soiMiF1NsxPQJdCLswSoothZD7XsyEa4RyO0LG1A4jHwZgX2X5QqJDynwgOjTE/lE2MVAORJGORtkEQTv5sDb5oAirGa/TW+Xko6W8m0qyNH5GZU7NzcjITbGoxp9TqanOGfCmh5161bhK/lTCDrnfm2HXyveo9AaT9rNvGy06PKu3GOQFJodexpJPwof+XKrJJP1Jj81GScd+uQD2rpj4RH0F7N1CXj9J2hCkZ6ByeB6CZ67VtIpxdiGNhGgkSCMBGsmgkXSak0ZzVTRPprV1tK6W1hXQ6fl4cRKP4m3J/RzGeKSBjCCuYMM4qqyTGcfwjLfHyrKtMzuUcsycDbbZto22/TaVLebwtNvKOrI7am/Kp/nsWD4bO2xOT/uq/B35Ugtyvd1KDPgVs+XQ6YaGM7Alt7hi9ZJiwuysGJuJpKmxQEw+FpdztLJ4Qi62ci4w+hT7q69Qqcc/lM3e3IzAtBST/KQkHZHNqXkZgRykxj9Wq1jsSMt06ORfS9KPJL0Djh9w6KSXJfqShKfAqT68NCLfo3VZzzeLdINef27r+UayurR6I9oI69BzqXo92siM4QfL9XM+kZJ0mIpSkof+0YX2KiKXxuzBElrEgkYhCxd1hdQHZ3wUstxHvcnAwPqJkuWheuaq03CYsHOmE1odppVGagzCp42sQYzGkuK8jrDRnt4hluUsVNgdlO/+w6qUWZz9Yx/ZHuU5Jx7ZyYo5I5HKKkrxqezReJ2KB3s8sLvcpHPmBDLCbqPqlZdVRndmWnq2neqpb/xDHXXmBNPDLoPqzPMqgz3gT892SPrxj/MtTpMay24tHR3/KkhWm5wWeoI+aHGaVbLGoB0/SmeDZJXRZR1fosQOzIP3wDZZZO5J4kdlK1DPKj/N81Ofsij20Yil0iLl6Gkqm5TUptKUanBdCg10pBicHYYu1WzSxZ4BYCbXgI6LajIvYl03JPN98SpnJJJDI+XJStIyp7IR6HFppbKdmpLS1KBd0uzR2+Txp3S2rIyMTJdeTan8kcaeGUzLsmvGH7HZ1SaXhdaoHAZ5sdtnUcs6q/lcofSS06hmu67ol/iNI/mEsg9lxO/ruPBSl7T5uEYvm/CA4vUziN18t3Jy94f2it2e8SOqM8nNnfGj8Jc7Jz6kG8gb+L0g71H2IsCpR9HQuBLCFK4TfZpt/E/ZRtpQVD+9kGF9W1FhC8Ds2kKPS4XSDPxujOU40RrP4mE45hpn+D2E+E2wx/5SocM+vsSBH3ofHvOr6cc5GYFIJENjT1VizZXjD9K/q6/D7ydlxtwy81mZTRdl5bUP2R0wXkkaijCJQYDEtTXY03F44T64PbhYocxmdFU8KNK/LR1aukhNLekpjlSnSa6cW50WqJlbRvW2NI83zSaplz07PvjSy+MLf2qyG9USNsdX/uKV1zZvfvXXL6zCe1rwH7wXyuq2C/f0Fu4pRMpOEgcfSzB2KPMxxo+wV1Ic2MI5xXoR5vz8HqOl/CZZ/GaRhLl+paOiXMqJ8CWx1+Ogb6VV91bKJrwDlZpupurFS5YsUUm2NK8bLz9Iq7ZLKZtfe+UXK/GUSFIb7aaf0Adffok++KzehrepNBrVmfHZ8IOLMF94Uh3E3lw7OXSSdCIUeq1Sz3AnjW5voCsbaFMDLW+gWQ20YUxqirlMaWmmXRV0bQXtqqC1FTRaQStw4FEsX4OoLgvEMDnbmjqBy5BiE8XU/JOYAQlT7URxsTqCV1sTzsHmMeo+ql6a3Exn7R0dehF9fuhNJaIqcy5FYaKJTsLeBsksZJNw9lrDBZNu7edWfcmnh/KT5ese2Ny7Z/GMbJujcPaOBzZkd8fyLVqVRLHXZoxU9pSxBzxy6sye+SVrbhqMPOytXNiY3dnSkBpqWNIQW1KfTr/Rf88lHbmd6w7ev6TvO3dft2q63uowmq1OiyPVprPYLd0Hvr3YmuGz1oxeO1y7tDHL7A04Ln14TUFx7yg6GJkL2z6mDmFHoYq00ctOkko2icIzwUo0/HHW8BVMsBxFsJxykaMIllOGnGNYFCoM23YwX2FN1EGLxXUUwdbXU3PeYPOW4jEpJZbiylX6QK4y+UvqII7mjkm+WGqGNZyBWrBNCfaR4cowVCvlq9kExZ2OAVs5MZnJTqx+TGrCEuzFY6yRzzf6qWMupfHFmwun2OqWObfy8LQRtxszsDo1FuOiLKnMKRWhZLMr4eqNzNXsBhZDDRUz1AXnUgZbzk06C/Zxk1sicBj2wxclGErYoxcQ3y3gn8x7lD09VnDqfkkV7/DJ2Tt76UrmTwXY5om3stKJlHjOUik/Nn3zAxetuHtDbW7Xhpbpi2OhkuWHVi67cSifvdbQtrEr55X06r6KdRv9NQumj66bltmyqrlh6YzAlVccuJx2z7t8YeG0uTt7Zqyc35UZaOldXNm8Y6CsqHdDQ9mSeR3BcGf/UmnptObilGX9OU3TawLl+87dV9g1c0YoUN/YkT+y9iL003b40o/gS0481X83lvK5zalssTmFpdypWDbzjgI6ZduJ7be62BrAxRrP5WPqcYm9ZRvkS8AgczI0PljZpwUrCwHw2yyiY84aHJMKYnpDEL/YGSMy2/CJ6XFGkWG2QSLKTBYpvIeoOMQppcfj90bxuzx4JG5IWPuyQUfVeHMUe7BsyFdai430tjcx2OMnuSvIFt2IA/xnaouxpsIOF9ack2+TquQfFa2PX7rrwZXR4nXxA7vBcYs/Or2nuH/tDE/GzNH26v4ZuT69dPD2fx0dWfDtD++97UOFHxr5ysX9VSlzrn9i3c0/PVCb1bRky5WwBiUPo+Peo/bi91f/GMvKyqBZ6TQrjYb9NCuVZqXQCIZ4L81TtgYdbGKDDocni8zgxZQw45I8tjLAEbBiUoVhf7BiUrCypMpjb3BaMnzsJJ+RfRqxmFDCJ1jpWWClJ03JP8UWBUjD+DjjXryx7MSLdA3HwnPzsLDVHtXMg4FLG85h8OVWjZ7Bc0n+qkH0GcW2hC8TuIGVzdfzL9fZtRoNn7FWZfO46sb7h3jj7h6NAa+bLNaajBoN3r2jlk/YM15ZY9TTaSqTw+fAYkzzrs6iVzezXQutLdXpSLXr5VduN6jMGV67z2bSPCWr8G4IXtX49Ea9MmTD3vjdZLzbE8Iz39ti5rxKGs2geelsHRBjhlWGohj1sA1UPFZH5PAwQ3ngio+WZeM/UpO0ds1j0n5ihLlgHiPMGDPCG4326ppgsAYOWPhomUdT2GfDDmOusBEiBfaAikBsMfVm9AxzScUJlaChzO8vMA9bMn3uJTvNZPzQKi8m3qXWW/XnKixuq1Y2WE2fLlhT40irmFOuvGKHWaYKLz776gYvqltyw1Chp+2qjWekMp3VqO504C1mrS3D48rwes3UsPiWncui0Z7azMzcTJ0jw43NHos7K+yrWLyrpX73jUe2vKR3YOeNklWIC7fAfgNUfRKb2KdiacwXF9ISHUxWwqY/JYrdSpjdSsakiphhVl9k1iwfVpww8duxCIpE2DIohtxITLb42Zl8n00508/OxAN0xWn9sPwjyvweXR4vAKGzW5JOC1b8HXwq5kQzWOpiuGwdW5B1F9VRxZmRwZiPAnX2OrsHL/0ZY4aOvvy/B4Pqjj4PkskowR6v19j4Np2yKmDNhP0EEe+Vh+3IwXP487E+GTCwPacsEpK7dVJYPGDHi8nsbX72FEeZUrCXSs83ohujwC31275z0czNA7VWnUa2mPUVfRubG1c0Z0b7LunZjbbSaowW/ebGNR05qeW9FbUj3aUGtnzAHNBZ278xtvCaRQXB+oV1TRvnFNAtgzeurHKnBywWV7o7Ky2YHcys7y+tGohlooO4nSlWbWZssCq3ozIQzg2rrX6P1Wu3ONHOhfO2t81Y01tjlLQVc1j8L8a67Jd4l30aItOnsVq2aC6gOfk0K4dmRWh2Go34aVgJUdk+mu2lEQ+NuGnERSM2bEDTLDXNUtGon00ZTsUcPF4VeHwQHhbGsIxTIg/jE2g7T1oh3nGe+CyWjhI21v1szJdsbDPJxgYSG5te2x7HC705RMWjFV4Je551P/aKWMyAwypVcVGOv1BpYFU0ZLMZQnMN7HVftKyjpuxsaWly6RdN7itG8cI5e1uCvXiIYXvKCluMB8oLYlNeixKRq0o8pkW08tAwDcm/dDluEW+Zn3vXZDNjlm7Q0hfUzoz8jFBJhu0Wu3v869L4Ivog3RSKjL8ndtuoTWPL8DkzUrxm2YGtf/yyhln/2Q/D0jvnajFEoM+Nos/dgXeh68nTMXNOFc2pVB4QyUrMUqZmMVqVjEvg944b0QOq2MvPuTB+LoyZy3pGrmV26cbS/aVyaTozcDozcLrS5dJZl0t/DL+CQTCWsE6GVmPv4+ERAdQJNtNzOn3oOvkxU37tP4LsXWJ1fq/vgs4zhJ1t9nCT2l5K9pnTQy/y7sPNy+x7vr/wdcX57qGs2uzoRiyw4fE33sbma1L5jtYDR9dNXzev0opfbsHjEK1hWtua9qZNvYU5vXvmzxiIpPkC6dIMndWgdjnG08MdxRsf2FhD711938Zae4rPYrKnOux+uw7vDgebV3XWL20ImFKzJWsoqEcYzModv10tVYwcROUnxPpE0sDPmO2Xox8cge0D5OWTeJf87ZjBHqLddhsMiMACY/HRkc07lTT8EYy3RWDRbcoWHdw6eZaNncWS7Cyw8ixGOWxk24Hb0XPwRJnl42RsxPFpd4itcsQE9xVlYotNQmXgASsPeBTGNcFvPILmc6vt+DWkY6m9xsmX3eHk8HTWDmzxz36SNGXPTtnvUNa/aBtleDkiq/Wa8UK11ZuVmhnBRgB999ytTqfaYNFLH1jcRo3qtCPdn2L59DmTVS9rzNjK6MzNcmJswRMvxZ7JNQnsmQt7Ssoa5QGMH8WkkTwZc+YV0mlqmqfsvk2L0IiBNqNueD8eg0ozBhWYlY8n6btKaE1JR8maEjmK1znGpHy8mW2xBPEHJthsEMGELwyOM6+tY6MHTgW/F3Ow8WB7Ha2sa61bWSdnYY9vTIrGLEXZeNr1QTCorfzHtD54su6olk8W2TjAXktGDGDvWEWVl+GRwBL5vB8rnsweR1zwoKZqyvvxpRmqC5+PVsoPuIp7d397U7R3Zr4L5jLqjLkz5paNXDeQL1XcNrzu1sGc0rX3b+nduziWYz+S2TjcMHNxXVpK9cLGruulx+Y9dM91q+uMNocjkOpJtaitDmvXvgcWB4rrVl7fN/+rF7fm9aw/+PXWA0fWFRfNXlFRt6w5m024YZ7qifelUekO5VlzZszhIhkGWwpNOWLdHwjT8BH1ZZjCbcY/WvT0i9hA+Q9zYGX0Ek95pdHM1ovaO1Y3BkLNF3XMviiWer0tVJkdLg/ZnOGKzNyygJm29ewbLC1csHdOx56F5ZWLdnVUL6hNT6vuq25eVOHOqOtjfWuia+JVeYO6Au+c5J0kTizalDiD9mdO7tRBPIIOo7OpSRG2UaIYjUuKJ3cnlADMNuMy1RZXmsvjN8r4bQy1xe13u/0mWafT67WyzoxNN70OL+tqLS4j69/tE6+qN+E7c/C01Ia/kAKW2daxFr8soTxORZ9X9quKF8U+XGqd/k+SokMGIc+c/enrgie6xrfiN6quQ1oP+/IfnKe9+9xvCDHM+qxk/Hr9o8qVkgcVqlRZUO2fE6JqJiOSijykeZk8pBogD8l/Ilb5V2SxqpwckpeRheBh+VMyhLeuslXTgbMkWz5NKthx+hK5Uv6Gwoc0K8ghlqeqVs45JP0E54dIr/QwCam2J1FObpO/RjLVY6RC3kHy5HtIJq5BJDW5U9pKWqT15EpgF+7tImAu0A48DGwBVgHFwCjAji8HWJm50tdItXR0ogvXbUft7iP30SBdJ6VKP8TvGr2u2qlWqe/S1Gu+r+3UfqT7k36t/g+GfYbvG+83VZpOmxebX7LcZfVZs6xfsU2z/Zf9MUe742HHC45/OH3OZc6Ea9h9lafW84H3Ft9VKd2pUqoh9TupCf86/5j/gzQVvo21USX+Eocaf8VDixawYf8YWyBhH/7GkEo5SvFXgVgp/OkjAqs3ts7t7G6LNo2sW7Nsy5qEXsbq8orjeh/thLhciMuEuFSIA0LsF2KfEHuF2CPEbiF2CXGJEDuF2CHExUJsF2KbEFuF2CzEJiE2CrFBiPVCrBPiIiHWCrFGiNVCrBJipRCjQqwQYrkQy4QYEWJYiKVCLBFiSIjFQiwSYqEQg0IMCLFAiPlC9AsxT4g+IeYK0SvEHCFmCzFLiB4huoXoEqJTiA4h2oVoE6JViBYhmoVoEqJRiJlCxIRoEKJeiBlCTBeiTohaIWqEqBaiSohKISqEKBeiTIhSIUqEKBaiSIhCIQqEyBciKsQ0IfKEyBUiR4iIENlCZAkRFiJTiJAQQSECQmQIkS5EmhB+IVKFSBHCJ4RXCI8QbiFcQjiFcAhhF8ImhFUIixBmIUxCGIUwCKEXQieEVgiNEGohVELIQkhCUCFIUtAJIcaFOCfEZ0J8KsQnQnwsxEdCfCjEv4T4pxD/EOLvQnwgxPtCvCfE34T4qxBnhfiLEH8W4l0h3hHibSHeEuJPQvxRiD8I8Xsh/kuIN4V4Q4jfCfG6EK8J8aoQvxXiN0L8WohXhHhZiJeE+JUQLwrxSyFeEOIXQjwvxM+FeE6IM0L8TIifCvETIZ4V4sdC/EiIHwrxjBCnhfiBEN8X4mkhTgnxlBDfE+JJIZ4Q4nEhHhPipBBjQpwQ4lEhHhHiuBDHhEgIcVSIuBBHhHhYiO8K8ZAQh4X4jhDfFuJbQjwoxANCfFOI+4X4hhD3CfF1Ie4V4h4h7hbia0LcJcRXhfiKEIeE+LIQdwpxhxC3C3GbELcKcYsQNwtxkxA3CvElIW4Q4nohrhPioBDXCnGNEFcLcZUQVwpxhRCXC3GZEJcKcUCI/ULsE2KvEHuE2C3ELiEuEWKnEDuEuFiI7UJsE2KrEFuE2CzEJiE2CrFBiPVCrBPiIiHWCrFGiNVCrBJipRCjQqwQYrkQy4QYEWJYiKVCLBFiSIjFQiwSYqEQg0IMCLFAiPlC9AsxT4g+IeYKMUeI2ULMEqJbiC4hOoXoEKJdiDYhWoVoEaJZiKZjbLaMWXMioz6AOXMiww26jKcuTWTUInWAp/Zz2pfIMCFzL0/t4bSb0y5OlyTSZ6LIzkR6E2gHp4s5befHtvHUVk5beObmRHojTtjEaSOnDbzIek7rOF2USGtBybWc1nBazWkVp5WJtGYUGeWpFZyWc1rGaYTTMKelnJbw84Z4ajGnRZwWchrkNMBpAaf5nPo5zePUx2kup15OczjN5jSLUw+nbk5dnDoT/g7UoYNTe8LfiVQbp9aEvwuploS/G9TMqYlTIz82k58X49TAz6vnNIPTdF6yjlMtP72GUzWnKk6VnCr4xco5lfGrlHIq4VTML1bEqZCfV8Apn1OU0zROeZxyOeXwS0c4ZfNrZnEKc8rklw5xCvLzApwyOKVzSuPk55SaSJ0FY6Vw8iVSZyPl5eThmW5OLp7p5OTgZOfHbJysPNPCyczJxI8ZORk46fkxHSctJ00iZQ6+XZ1I6QWpOMk8U+IpyokoRCc4jStF6Dme+ozTp5w+4cc+5qmPOH3I6V+c/pnwzcOvcf0j4esD/Z2nPuD0Pqf3+LG/8dRfOZ3l9Bd+7M+c3uWZ73B6m9NbnP7Ei/yRp/7AU7/nqf/i9CanN/ix33F6nWe+xulVTr/l9Bte5Nc89QqnlxPeBajKSwnvfNCvOL3IM3/J6QVOv+D0PC/yc07P8cwznH7G6aecfsKLPMvpxzzzR5x+yOkZTqc5/YCX/D5PPc3pFKen+LHvcXqSZz7B6XFOj3E6yWmMlzzBU49yeoTTcU7HEp4GVDqR8CwCHeUU53SE08OcvsvpIU6HOX0n4UHUp9/mV/kWpwf5sQc4fZPT/Zy+wek+Tl/ndC+ne/jF7uZX+Rqnu/ixr3L6CqdDnL7MT7iTp+7gdDun2/ixW/lVbuF0Mz92E6cbOX2J0w2cruclr+Opg5yu5XQNp6s5XZVwj6DuVybcy0BXcLo84V6J1GWcLk24+5E6kHBjsKH7E+5K0D5Oe/npe/h5uzntSrhXoMgl/PSdnHZwupjTdk7bOG3ll97CT9/MaVPCvRxX2cgvtoGXXM9pHaeLOK3ltIaft5rTKn5nK/npo5xW8JLLOS3jNMJpmNNSTkt4pYf4nS3mtIhXeiG/9CD/ogFOC/jtzudf1M+vMo9TH6e5nHoTrhgqNifhYmadnXCxDjsr4boc1JNwFYC6eZEuTp0JFyYStIOn2jm18czWhGsfjrUkXFeDmhOu/aCmhOsAqDHhaAXN5BTj1MCpPuHAvIDO4KnpCfsgUnWcahN21o9qOFUn7G1IVSXsA6DKhH0hqIIfK+dUlrDnI7OUlyxJ2FnFihN2FpCKOBXy0wv4N+RzivKLTeOUxy+WyymHU4RTdsLOrJTFKcyvmcmvGeIXC/KrBDhl8PPSOaVx8nNK5ZSSsA3hmr6EbQnIm7AtBXk4uTm5ODk5OfgJdn6CjWdaOVk4mTmZeEkjL2ngmXpOOk5aThpeUs1LqnimzEniRDmR2IR1WYBh3Lo8cM66IvAZ9KfAJ8DHyPsIeR8C/wL+CfwD+X8HPsCx95F+D/gb8FfgLPL/AvwZx95F+h3gbeAt4E+WVYE/WlYH/gD8Hvgv4E3kvQH+HfA68BrSr4J/C/wG+DXwivmiwMvmksBL4F+Z1wVeNEcCvwRegP6FORp4Hvg58ByOn0Hez8zrAz+F/gn0s9A/Nq8N/Mi8JvBD8+rAM+ZVgdM49we43veBp4HYxCl8PgV8D3jStDnwhGlL4HHT1sBjpm2Bk8AYcAL5jwKP4NhxHDuGvARwFIgDR4yXBB427gp817gn8JBxb+CwcV/gO8C3gW8BDwIPAN80FgTuB38DuA/nfB18r/GiwD3Qd0N/DbgL+qu41ldwrUO41peRdydwB3A7cBtwK3ALzrsZ17vJMCtwo2F24EuGVYEbDN8MXG94MHClnB24Qq4OXE6rA5f1H+i/9PCB/v39e/v3Hd7bb9xLjXv9e7v27t57eO9v98Z6NIY9/bv6dx/e1X9J/47+nYd39F98eHu/artr+7bt8j+208PbafN2WrydSmS7bXtwu2za1r+lf+vhLf1ky5wtB7bEt6jq4lve2CKRLRRvnZ06tsWf0coeSu7ZYra1bu7f2L/p8Mb+DSvX96/Fba2pXtW/+vCq/pXVK/pHD6/oX169rH+kerh/afVQ/5LDQ/2Lqxf2Lzq8sH+weqB/AcrPr57X3394Xn9fdW//3MO9/bOrZ/XPQn5PdVd/9+Gu/s7q9v6Ow+39bdWt/S2oMkmzpQXTZDwlPhWblYY7wZ9BbSz2x/xv+N/zq4g/7j/llx3W1ECqlGdNoU2zU+jGlP0pN6bIVt/PfVLMl5ffavX+3Ps779+8KmfMm1fYSjw2T9AjKw+RPT3zWN2OeRqaOZdUKHXt8YQjrVY3tboDbqkl4KbE/ob9Pbvsfsr2c5tktVKrdcIqxawobrUELBL7mLDIMUtJVavVHDBL7GPCLHtiZuSwm88xzZnXajUGjFJ/g3G2UYoZG5paY8aC4lYi48kRJdQGktlTv+PUHWiVn0AW+6uclN50dF5fNNo1piNzu+K6OYvi9Jp4dh/7jPUujGuuwR83Xbho4CilXxrE35Ftmhd3sT/Kq6SvvOEGkt7YFU/vG0jI996b3jjYFT/AdCym6AmmCYoMRpds3b41Gt22BB9Ltm6LKv+QottZCj84gH9btyHN/gMhPfmqJyvx7z+8GMot3Yof5TJIcP730v9Lcuj/kvv8H3ybRwn7U9MzJ6QryArpcuAy4FLgALAf2AfsBfYAu4FdwCXATmAHcDGwHdgGbAU2A5uAjcAGYD2wDrgIWAusAVYDq4CVwCiwAsD/zkPC//hDGgGGgaXAEmAIWAwsAhYCg8AAsACYD/QD84A+YC7QC8wBZgOzgB6gG+gCOoEOoB1oA1qBFqAZaAIagZlADGgA6oEZAP4UllQH1AI1QDVQBVQCFUA5UAaUAiVAMVAEFAIFQD4QBaYBeUAukANEgGwgCwgDmUAICAIBIANIB9IAP5AKpAA+wAt4ADfgApyAA7ADNsAKWAAzYAKMgAHQAzpAC2gANaCaOYFPGZAAChCygiKPjgPngM+AT4FPgI+Bj4APgX8B/wT+Afwd+AB4H3gP+BvwV+As8Bfgz8C7wDvA28BbwJ+APwJ/AH4P/BfwJvAG8DvgdeA14FXgt8BvgF8DrwAvAy8BvwJeBH4JvAD8Ange+DnwHHAG+BnwU+AnwLPAj4EfAT8EngFOAz8Avg88DZwCngK+BzwJPAE8DjwGnATGgBPAo8AjwHHgGJAAjgJx4AjwMPBd4CHgMPAd4NvAt4AHgQeAbwL3A98A7gO+DtwL3APcDXwNuAv4KvAV4BDwZeBO4A7gduA24FbgFuBm4CbgRuBLwA3A9cB1wEHgWuAa4GrgKuBKsmLmAXoF1OXAZcClwAFgP7AP2AvsAXYDu4BLgJ3ADuBiYDuwDdgKbAE2A5uAjcAGYD2wDrgIWAusAVYDq4CVwCiwAlgOLANGgGFgKbAEGAIWA4uAhcAgMAAsAOYD/cA8oA+YC8wBZgOzgG6gC+gEOoB2oA1oBVqAZqCJrPgfHKL/N9za4P+Gm/wffI++pUvI/wHsx6mrZW5kc3RyZWFtCmVuZG9iago5NjEgMCBvYmoKMjA3CmVuZG9iago5NjIgMCBvYmoKNTEKZW5kb2JqCjk2MyAwIG9iago1MQplbmRvYmoKOTY0IDAgb2JqCjE1ODAxCmVuZG9iago3ODkgMCBvYmogPDwKL0ZvbnQgPDwgL0Y0MSA2IDAgUiAvRjQyIDkgMCBSIC9GMzMgMjQgMCBSID4+Ci9YT2JqZWN0IDw8IC9JbTggMjAwIDAgUiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQgXQo+PiBlbmRvYmoKOTY3IDAgb2JqIDw8Ci9MZW5ndGggMjkyNyAgICAgIAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeNrVWN1z2zgOf+9fkbeVZyJF1Lfy5jhJN2ndZmK3N3vbfaBl2mYrS15JTpv+9QcQoCMndro3cy/3IpEAP0AQ+AHgxfTN2XUUnGReniTRyXRxEkcnqQg8P8jzk+n8T6equ4EbidCZKfrrqlPNplGdmiMhcmRLjEoVqm1lo8tHIjQKhrWq6nS1JEq34kXqxSCInS++HxRalrTOg1ZI/N6eDv6a3p74J24OUgWpEWNTl7rQCrYKo8CpG/wLR1XzumnVGvaAWYalNGzScHsgYucHCtGisP2Zer0ptZrzJBDH/I182Pgg3T0hEiNEp+sKpQ38wJmANFWhqLOot9VcIpv6X/zY/zC5hp84RUroyApleSR2TSJiUy5hlT5rQX8jCTY+eROPlnhb47iHQ4KppkId4F6xb86I/6c9kbigPy0MjaJeb2RlVIpdnA/yo57M3Bnthh/l4ZZgJ+JE+F4eZzkaCkgQQC8QJMK9WsCZROagVlqeEJykXp76AseHXp7F4sQF48pjEZlJf4q/4O7D1Hm/lbc30wEwYe+mlvO13HAv8P2Mmy7/V123OT87K7fS3baqab3a7Lw8K3XbtYZenuE80hXsmGYnrrVx2NcPztbt0vfhfrxVty7NAY1oOFAIL/UTQRIGLOG4/qnLUg7cOMidL0GQUutaN2pR/6DOdzWjxqypyZTxmpEgqzk1piuwFNXMdGMIoK611CXxCrDIqqP2Mcn56N+/fx8kseOtSSoPLvOVM4R8hsnd1ej28zjP6I5d+j1bst2oYqfQrw/rPDvzrMntrRrZVTcaTjSuq28D4ZPPIQCEUWj84FYOAh8MCfQhJ0WjN507QsfAIWHuXFVLXSke/1+eeidle9YaIdZ7Qpy9opLYCr9tEIWq38DvU+FM5ALnA4hR36XfRVkvqTVsipXGs5Bn7I0aVhXgQGHQziz291Y3jSqvdbsiytWPrgG0srNeP6yafdPd7owzEOEsENEZ4G9Tz7e4jdvyDniEduUS3pktXjt7wmcfArBEfuQMV/UptkLn3qP/RHUrzbRbHvWpLNeyYqKxZ2yMecZ7CQbogoM7I8AVXYJXnhPnrtGgk02pGNdfHrhTxarSf29xBAMXo1BX16Ulgj8nrxwq5UN9HgjwKiOV71zIUp5S84pJl7ANBLDv5prLOXP5PL4z2c2sVPNVSzxUBLMeK7muz4k3pF/XyKrdyAZ99vDB5jhLFyB/ljn1ptNr/dNGiSx32keQZD0QRtosdG4qhs2kB5vCz70gTiNwP1zyrhlEsVMXSs3BAFpeekELErYDYTgIfWc0ps7k5u3d++EHVp1dri/nqK4QvEF7FNLCIHJQSPzzhqiuZYP2JddrsvAAb71abqXhkduZKZeq1UuebhSLjRsIuCZQkwJexocAokkYxRkflIzF3VFJ3pCSAYiaHLYEQHECmqfecBDxuaFzh3H/yXj8V4wnsyCP62SBcwEBdV6ecoeJnweJ7+hOlooZdvS/gdR+00wl482EcS8zn4NBhdecBKjtjj2VBkxXjZJ4nedH7AiiThjGznVJ0/SsVEQh7YaJc9XLp0wMQe6lBvPsihX1poMUbog9jUgLkw1Bg47WdFvMbpAwlgBzlaLFb6pdzrHntZQFQviFkJWmh803ir0sgRTBZ0Ob45oAaG9VpcicyB+QRqeBxseeq5wSCS4w9rCZOqO3H/s0c6l2m76AN5ioVnKXtIEZTB7Xm7rV2zXnRIfsMAeDC6JkZ4ZmZN/iYjS5IHmyLCuE8ENP+DB137hyNq4R3j+ceLSS6xmojXqEPJD+XjL7EzgXkJtBHCMwZFnijLZtV1uFnNMw1hGn1tEOdo+Y0O72a4gjJj8P6PojAYHq6v31IPPxsEiX9Lsk9JJl+ehOkf24oZRfOB9pxOyrKjr3Y4MmR6wAvK4+ZC3LxuJG5GeMG0uF50uOWE6WeEGYZcdwD5dB3It8xj0k7HAPOxb3TEfkWU63ZNftA8r/DwBGLwAwSgwEJv4hDPxAJRV1/hgIgdXBNzbdD0CAVJN7nyZDbqGuyKTBD7wgypKTIBde7schZ+2+MWnUtwle6JVvZekd9n8f6gU6EqAUuG0fpUTiXDxC/GdcSDB8g32pRptRO3BILDgkbOg7TgoFKY+wK6SRxTLSYAYOHeZ7Fw74hlfJGBcZrIRk/ejdJFBsBWnA54Ajw0LO3eqSJoP9tZoKUPTfXn7YtLp7RHrkfFwQfyRLDZ5XackTbpoHEIOv227Uv+1+5pN4aWKqKLiPOA74PkQvowvjAC8DF8dszKP/vwZ54DAXXHTWdjyA9AqNMY+8hrTmJ54wi5zf6w4iyOrz+JxmDisao0y4WYD37+fCwMIyzkCQlbR3kMJiFMRBjj5REjkQp+ttUyi3qKsWsiptqlAcMjfm+6ChogSJAFuPYIWIcy/2M3EULGAtAxawG4IF6dJO6hvGs6ARZsFLcIDYbmzP5ARPxmYYVz9UsWXbBP5Vhd74oEkgU6Qfqo1FnnsiTqKnoIOTyctJVjugr04RRcb14/AfpD+/sKCgF6Qw5r+VUFd0xkigd+txRqFMBYCkSzuw6T0UnD5LS0Y8z4Y8NKswcsZKttvGgCGNwwnHjGa42ZTaIkH/JeNyl11D514Vqu93RB2VsmWcBAfvGj3DWtTcD8oSJgh2eXRYNRy+ha2eUQkBeNHv6LjYMPlfLkzVRIzlSi9XsmP+hPlgQEsmUXIIjXfMm/DccfFOVyUXz4mJ/FEeYqmBXHCMYts8VRoH1AR+Ax40k/TSlefOV0gaXF25kCYoKlie3A/55H5A/tor0FtToGNYBnS/VNCkGOsb2N12nF/sx3Z+CrPGNrUvTIeQsH+BlJOYlFbyLcmOLRmE15Vd8N71c9fvZVz568ZsXyYu2C/Gxais2/7zBGkY7/8OJHtKEEFF623F5tZ/9ujZg306uMHVQ4BTyCclhA7sMZ5iw2RUHrXvdVHIZq5NrMz3cjdkz3UDUErtzhQDihehwIit2SP9W1Wqwj1uBnuAHOSATlWpK9gKs3Q/OIyfgCBpEgZHa0xYxlxaHnONCYSnGhM6u1wLh4BLZUQu9qHT3Jndqy+1gUuwyeO5FjDLl7kWUOc218r5lQ0b+le5lkhzL8sT0QNcmMZpFTbBNxFb2czs6L7Mof+/zLjy7HUQ6r/ZhKDZe72s0U0DhD5+ZjeHdS8sBETOLULAjYUApEw2Ch/cd88QYR5arT1FxkN2ddc+FrUNLHVXd1AMUHdhn5vvHrsVOo1xqyNvGcILs3QXpq/uxofyYIE5Z7hfgIHT72A6zD1ApPi516eclI7tiwqUAHDUGd4OZg8CdDXpZPNNlwCC5zQC33KyFOkdhhIk2VqHODdowWi9DXGpXoPGCLZ5ymeAgIp4qT5KK36tmzCBRBkO5XN+io9Uv6Ho7Q5VIcc8oK4Y6oM0i4+rC6rSIIhegKR985hiCoOS+WAeW1N7VgBop0Tpc8F48ams3SpmkuU8G/VBfpOdrBDr4tBEMKTeG+Bd9g3Ut0WrfA3OqAzLXz5fsOUhb5cJYGf3/nioHBFh5MVZbhOtHYbRDlBxE+pUrSxMkkAcI0PoW3hyrR3yWvt1bh+28Cqel4jtszfOiXkFZCo+mE+xSPoIcDoxz+QHwAuqMhGK4NmVZzhZ4JxzEM1khml0KAEMEMzC5wiT997AIijKn161sDdk6iX/d49ahs/lGTLe8YBJV9fz/YRG+DEY0dX05pzmDGnkspFzyJ/LP45awdWPTlUtPXtFYGlTzHWwGVK+Tu9Q/GAi/GNvUUKEXhz46dEqIaUwh396UrAb7AoC0qBd59U31CQju0nyZ1UCELBKAPiwhQJS/mGhANEzCUXP23GyjVuwZRbixeehRxwbmrjg4cl7wL5fJqTGSt5cTd/8B0KgzeZlbmRzdHJlYW0KZW5kb2JqCjk2NiAwIG9iaiA8PAovVHlwZSAvUGFnZQovQ29udGVudHMgOTY3IDAgUgovUmVzb3VyY2VzIDk2NSAwIFIKL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1BhcmVudCA3OTIgMCBSCj4+IGVuZG9iago5NjUgMCBvYmogPDwKL0ZvbnQgPDwgL0Y0MiA5IDAgUiAvRjQxIDYgMCBSIC9GNDYgMzMgMCBSID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9iagoxNTkgMCBvYmogPDwKL0xlbmd0aDEgODUxCi9MZW5ndGgyIDE4ODIKL0xlbmd0aDMgNTMyCi9MZW5ndGggMjQ4OSAgICAgIAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeNrtU3k8VHsbJ+oyKtmyhSONshv70kuT0h2upZGQ5nLMHAwzc8ZsZhApCaWEtrGkuEo1IVkmk2vrZrnaqOxKpW0IScjwjrrd+77dP9/3r/fznvPPeb7P9/n+vud5nh9S19vHBE2AQyBXmMIwQZmiHAAXD6w9gDI1RyCRLjQIZBBhyjaQATkAKHt7FIBmhgEW5gDKxsHS3sHaHoEEXGAqh0YMC2cAm1wMlki2AJoM0Yh4kAJ4gIxwiCzWwIMkwAfGEyEGxxRAk0gAdqmCDmAhOkRjQQRTBAoFEIh4BhAChREpCLMlPxhKKAzYfoUJTOq3FAui0cWmgE1ikwaA2CIBppA4AAEKRZh5wuKzILGT/4ap78VdmSSSJ0hekhf36G9ZkEwkcf7Iw2QqkwHRAA+YANEo31P9oK/WPCACkUn+PothgCQiHk0JI0GA+VeISHclsiGCN5GBDwdCQRId+oJDFML3JsRt+2LBDBuwy3fPTqMv0/yS8gaJFMYuDvVP0SXulxj1VyzuDY3IBgLNTc3NUWKi+P32hfvuqO0UPEwgUsTrYG0DgDQayEGI90IcWQOxKIBIIUBsAGKL/ZqZUmCGuAQQt2QfEArTEEvDtDIHzKggDaKQoFDGUuorivoD/Tq8P2E7wCwGosF/AfaAGUyB/oytxXWMcBr0L4i4BA+TxHvyDbERc6AopnjoS8jf+7Z1K8yONbG0B0wsrMV/Ym5pA9ham+/7NyKeSRObY3xZSXH3v8WhRPGsIIgN4RE9j2G8Y1LE6arkkvjthfcvLzeU3BpWneFZUd95S+5g9wlJUnGbe5Th4HX/uStcpdUjy0d0ouc16WmCuJ0dru8TozLOPFoYYQWPcGP4mv6TXA/OS+r6TwffyddWdU0JrSW9Hg62l2QHFN3OG//t3XnvTdt2vfqhX1eiIZB1oyEnycbW35VL8j186Lq+pS52zZmokhSrwwPRa7IzpQfuHYyPOCxTY9Q3AQuYinOFMgVZC3s/qRxXwAt0LLHDhsrYV87CS0WH18iXLza3lG7JAcJ8aMDI8l4ZbBvmYL5ScmlejMb2oAfjqne3p3iw3hvzBf66IqQNbrD4RZClUVB4kVv3L+bjmYUwr4pzz/+mqPOllqhTma8R7KvyxGAMaEYuF3nKWG/OswlUrpcSkDux4+vTjq7VUTVB7uxYF9Yhp6k7+MhCShounS1XPBGWqdVtHECYHRh6+jA8nHnrh6AWNVQJenL17Y4MaYSsqe85spbj6pxqVcuAPU/fBmfNJtvGnFohN2F4vhLZce4iemG51iM3i7oO30vhA3gFrgt1xsK4XZiS03hRr32LyrxbCeI1/a3yoJKdccm9VemfofEroyIuodbZg65tuo6rmrr++BR6rR6C2mTfmniKtcywQnNvrj/3jay7bAqwk+dq2xC1Kuv1gEKsZ+yOpCy+drE53Odc/MTucjnm83UNiauGZ3N1t+GeqybodlddrrAjthwAnYorhbt3RO62UtNuH3dc6PMb57y962jpBdu5D+VRr90KMD52T9f2yK5LlX2f2jMPPIv4RfXZjy4ZWfaVr24HSh35UItxdkxxW9cYlH+cr9g+jDrLyzN28rPdSNUslMSSQpvA2JPKjyd0FLLktE43sNe2BGqKck47qGta/u5or6bCU55of2OdbSjskvCMfG+bESqiAXkt6aZ4T46gkX+URbqVeRucpDqnrcknkYSxybDZHd60668YU6yU+gc+5gou6dpZOUsrty32UR/TRTPdjxMKaiYLupNm6rl7aErqfIW+gsIAqcN0l6bYJtLPFXo+G020KY/mixXqUNx47STjaj8KS3pUWnaCd3HqxycDziW6dlFeqnszN1+4P/4uvEEFndjy9OGABN5GYj0RZP6AjK57H/hwrUvXfcO7W6PdMSpmZZKYwCdTtySKGV0mgzY4taL4MupbIy4/LgXTMN1AacV0XuyQTS0JtlitTmTV71evI18p7AlyUByDaxTiPauzG/pdDkXe1kv2b1T08+2tWsQLRYqxqdQTwoH0I7KBY7MxBZtUlE5yhR8YE0RctVSpToNKOO7Zj/mONdqhiQsDVhGI+/IbrvZKgj6oBZ+0tlydMeePxq1Ogma+bPOARMoFDfaNlAdn5wi7ErXPanrbrYVy/Pkr5+VeKk09nQ3hlLWTY1qiizVDQb5oKM55I87aXp81FFA739j4IHLudujm1uDX3t3qRKv0lwIr88VRZ+aKlrT6PL1pRKFFao96mdBM41QBk+dap4E/q9YfZyRp9Kv3090um+E512Munhjmb8lu+VzFlSE/DY2KeudxcTceXUPxhk+vS64c2tnc1KbCEQzEFczoOQupxu6DJdFv1aK9jB2Tqw/MRXKrrMtAtwNIjKGAnyNZ7Wnw+aInr3R3v1yda9DKxTe2/1gpP/UzeZ+FottHvSL2DqncI24h+xtwwZ0By1bqL6ocybD1+vQxYVVwmdz0tucYpdFpzcXWrq4VOQF33xxUmM4oe3CA17S3dEyQ6p2Jpuc7OWczFcOS1fcXhidXxLsHPbO/suH89Mrd6FrPtwv5Ghd88JFXmz4LObGfFs1cBhnbYK8N1z/0jvTY6UHB837gwv37SOWJ4WsHJmUWj0enJbM5yeCyUx9Pl1vb/G7moOMkvoV3DEprjOlyzZM5CXcytpIzz03pxDSL9r1Iid0iX7rzERKMHsOytnIynHg1faFB6s1Gt3B7Ns/MhFJ7q3t3YYZYrf9Iu1S9Vy5JyYkVN9x/AtvgHEKGhVoIpsAkOjxx+9FyjTOGPb7DJdduqrl2V20o46VL71NnShsMV9YhBRVT5ZyTXqkGLzbxQHwUPYujEmglem5ETbQgPZsUBm+b1a/7xKzYe8KzSbU+QmtABxdRx+5bnaN3STK8XhlZfo6mfMxN76YRunej6g19aABH76l9mNg6tx8Ln2xQJuv/FESxixp+oVNc2n+3rrF/omv3G4VZ6bSZnum1C7jReG8rmY1VB19Vd35wlbkx+KwpSxCfzbG6sKpLE1e+Zn3uw8rXmQTczYoi68S2B9cdm3+7WgSm6F/W9fat6y3KPhJzBchNRI51nnCXa/fw6paP2F/S2saaFcSmskldTWu6Bkdz04MS09BWNxOiT55yH5a4eE19qh3VcpQx7THmfWhuB/rylgw+cJeNme3wuD7fQmu7Uxr0fpnfjQIeWzPSC+9lK59AsRk55pJysibPB2R8HC83POQYop3gHiLCnl9hVpeOPXNGUZVeu6DSUQoLecKqO735rrqT8UPPJx97vPM5bf4fPoj/C/xPCOBJEEhjwGSQFon4J8CYJORlbmRzdHJlYW0KZW5kb2JqCjE2MCAwIG9iaiA8PAovVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTEKL0VuY29kaW5nIDk2OCAwIFIKL0ZpcnN0Q2hhciA0MAovTGFzdENoYXIgNjEKL1dpZHRocyA5NjkgMCBSCi9CYXNlRm9udCAvUllUVVpRK0NNUjkKL0ZvbnREZXNjcmlwdG9yIDE1OCAwIFIKPj4gZW5kb2JqCjE1OCAwIG9iaiA8PAovQXNjZW50IDY5NAovQ2FwSGVpZ2h0IDY4MwovRGVzY2VudCAtMTk0Ci9Gb250TmFtZSAvUllUVVpRK0NNUjkKL0l0YWxpY0FuZ2xlIDAKL1N0ZW1WIDc0Ci9YSGVpZ2h0IDQzMQovRm9udEJCb3ggWy0zOSAtMjUwIDEwMzYgNzUwXQovRmxhZ3MgNAovQ2hhclNldCAoL3BhcmVubGVmdC9wYXJlbnJpZ2h0L3plcm8vb25lL3RocmVlL2NvbG9uL2VxdWFsKQovRm9udEZpbGUgMTU5IDAgUgo+PiBlbmRvYmoKOTY5IDAgb2JqCls0MDAgNDAwIDAgMCAwIDAgMCAwIDUxNCA1MTQgMCA1MTQgMCAwIDAgMCAwIDAgMjg1IDAgMCA3OTkgXQplbmRvYmoKOTY4IDAgb2JqIDw8Ci9UeXBlIC9FbmNvZGluZwovRGlmZmVyZW5jZXMgWyAwIC8ubm90ZGVmIDQwL3BhcmVubGVmdC9wYXJlbnJpZ2h0IDQyLy5ub3RkZWYgNDgvemVyby9vbmUgNTAvLm5vdGRlZiA1MS90aHJlZSA1Mi8ubm90ZGVmIDU4L2NvbG9uIDU5Ly5ub3RkZWYgNjEvZXF1YWwgNjIvLm5vdGRlZl0KPj4gZW5kb2JqCjExMyAwIG9iaiA8PAovTGVuZ3RoMSA4MjEKL0xlbmd0aDIgMjMwNgovTGVuZ3RoMyA1MzIKL0xlbmd0aCAyODk4ICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42u1SeTzU6x62FY2yJkT6aayFmbGGHBljX1KWCqmfmR9GszDGZAvHkspeYz+akH1PtNiiSZQiWaOU6mTfSZbcSfecc2/nz3v/up/7+/3zPs/3eZ/3+TzvKyttY6tsgCO7QsZkElUZpYLSAQytrMw0AdYSiYTJyhpSIJCKJ5MwIBXSAVDa2pqAuS8BUFUDkFo6Gmo6GqowWcCQ7OVPwbt7UAEFQ8XvIi3AgAhR8FiQBFiBVA+IyPLAggTAlozFQ1R/FcCAQABOfN/hA5yAfCAKDcKpwFAoAIfHUgFXyB1PgiG+RzIjuZEBrR80ztfrjxENoviwQgEKWzEVAVZIHJlE8AdwkBsMYU1mnQaxsvw3Yv1sbuxLIFiDxO/234v62xgk4gn+/xSQiV6+VIgCWJFxEIX0s/Qk9CObFYTD+xJ/nppRQQIea0ByJ0CAMkpdBan+g8f7GOP9IJwNnor1ANxAgg+0xUMk3M9JWPVt5UBYWmMsMSaHflzs1swGxJOodv5eEID8S7yFUX9hVkUUvB/ghFRBIlEsIev/Y3Xmp7OMSFgyDk9yB1Q1NAGQQgH9YUiWlaqGBhCIAvAkHOQHQH6swAgVEpnK2gKwirkIuJEpsO+3qqENILBkIhH8Tm8xWizm2J/osCqAOPEnQiG1AMT5f4EsLfEviNIAED5b8O99oNFkv0DWM1NW1WDlU1VHAVoayIv/psP6UigQibr14lil/oHd8Kx7gCA/CAsb6CVjdSM8U2ouFQYb5XQWbVP0kUzLj2hviLyTpqsy8VZXqJtyt8MOkpoXjBT0xBcLJE9ZlCJwbhrvxGsMgp4E2iIi+wWf7NqtmJVuyz2DnXB24WhltDTzEzOvfB7Y/9Hr7qGZ1/ClYVrDtnLLMZRWtvjUVa7Cvt6NheDzIc/fDfCm4uCfkmFnGLWWSZDD6HDCs9VJE3IOeSC3VdQ5fUn424B485uu80O70rSjGVacvQWzTiblSTMKhY/BwaFUZtDSCRv2feJjmqSaDRE9HYGdRa5CH3oGtBN8QmJVieqBwUOGiW3DGI7Ie+simXyp3bLxj/2uvZlVV8ri4Ta8SeNJCvfsXVNmNulzh4j60WkfIzj8SR7HucvP5elXvOVw63Gei4X1Ol1HP/MgOZicagNxm/mClZKSo0/kFp7UCmBqu8LTb7mfNBkG3yNzXRSDcmfFDuoLfeVxnF/iNBXwphy9UHg4WD4qPdms9KwYWc2GvyQ+JNtNvf6FkPQkX+eH05/GXUC3E+SJhEe7kDsY9U11iAzXmWlmuNEeHq6i1JXOIru7t0I/i6Ddjl9yjsNYD/rHBAtywZY/5U+JXYaOEBtdQLxX3cBDbI2ug9Qc1Kgztz/uOEOrZSM7jBbpkznCjHZ8Ox0x697H1X18X+OtG3uIdkc2bjynim47czUs5Pi7qOeK8g/Wgwlrfbz8Y/iVhCxBs1fdVmglNS+zM4VJe6cptrcYOnRM6/PEU/0GooqMELjqt4qv1qT+uoD8KznSGc3z8q90nZ6crda17zu4mJdfC+pna1RKVF3cxuj3ln/xRc9Jv5GRWFzqV3/taH2S7ER+aNI476Dsy6wbUWRFhbDxHjDTuIv9QaZ5e64On/XsgavaHzELvdT7DRUPM1a+vbx26H7ArNIougCEJbU8+PL66ZDqSN+zqq9d2HLOjxWJlh3puc504Z0B5ptxHFMWC2M7zryUfV8lIpts6N7tl/0mX61El3g8S52Tc+FaP0cHvD9TEsG/WmkzyEamV+1lolekIurHymMGpcoWmbcRkMAx4s5FicsfVRXsytQyr4l1CY0IqcudBi7I1VH1nJl6OIaRw/LFp0cUoqsPSdVd6+LZVz/i32SEfyx68MyMcuvMUyG67/qO/uUPdJk04TcE7g9X2ENDB2sUV91o9/k2ydn2nlnHU8Xnl4yFrvGHSChZWkqk4rWY0r3Dz78UcNFLxA+3d5kI0o41wi95i97b12va35z0VCk7kwjvuL1Sg7JtgtM7lOocpLANlsaLWiJG8S2PslwQPvNep3gbvKE9VITUr+1+YLYJiK5WciQ6v26990uDku1ivFFD5VIhcxwTr1XfTlBImTjcI5jSnHQ51ro/pseds1Z3W/rZvcwqjGnq9SS4UiXb2HnhEDiiuFyJK5oTF/I4zNXGR+hO4ZhtzKroY015fZ7MvmfOTSvDy/hTF/eqClArEJPzS+efeXairbZdsL9xdqqYclHmgGo9PGKagCw46lrs5aiyM8ei6ybl7jnFV28CchM5spTtyQ7YEl+saysz3SM45Qj0aRxMy6JgNKeNPSOw+/f67j7NlrMzjaKRZMB7a8PxnG6FSb04uKgSfvG1HzbgZiC7v+xEzW0TqdWQcAMK+5c22d5Ot+joNYPHKhlRSZlqWU/Xdhjvq67sT+mMZSyDJskfxfpt29crjEUvKMdP8m/A9SzSmDJuJbf0jqaMRzo3lRgNtFWBnvmLMPNdLgLqd7dbORm3fnCKQg5bWVGxMt4rcn7+VZE7BvPi+9uCbn8To0mRRM7KZjSp1NSpn3wz2WJFS4uzMbAgrSteeet6mhRr/Cwhg32//VV1cLVeTdr7aiKS5FA5pCe/SIW3h++y7lwfLeFb4srUy/Roc1//ZYdRpCTffFRU9RDYUMgolPDQoTwPOJBUvvvFnrm0JOezNUdKaZXhJ26g1l6ryKu5vEdQc9rZi6u+nI3e3nYvalN7hV2yZYXAMcWRjG4otTuQqjW42XnzdwgmTUcgr+/Opm1+LZbvXW6VLC8eTTK1Xq2gOYGSvY+mZhKceHFwySu0brtl8bGCVbSunGatMIOGV/jKpM/cqU3Bow6iPNccxR5Y3UeMqKm6oNE0kUyzXacvEQMk3sqcuyCk+eTlCF/UxuEY95b8bzBN/ws57zI7E4IZCcyeKyP9xvjkCsnAzaa5h/Kjb5EquSPWzXdA8I3iZur+CGW7lfDJjxHMsAReTPVgcRFPhcJMq6uCO/24bHRlaXl7bkj7uPlBJy6wg8IjpLxt20ZyPf9yygS8C1luy8AKxcp3ob+9uyd56IGAg7qpNT5oCYqTiw1wqQ7zB8R29txaYn5p1Ps8V5YKn6xucpsu/RwvXilSzQk2U7IdW7vtOI7GsplvmFeHGHQ4RGnqgMIZfBibiCGUU/5v92tXbg/1PX+6/anMGdMx7It0yaDZOOtSy6vRvuiI0VBk2DFUTMF66EnViZtj47zdLcTYLFrkb6E7ytCybInmmp/C7B1+960dPBY+vWF75FmWk6UJI9axaeF9o4FHNJfBSq2rRNUc/Xn4+iO4LcNMa3TxXeGVOHSZ97BUUIX9iJgv0+18nuInKe5G6Elhm/TADX7ZLOqr/M8VMmNO9ESj3UIaIY3DOw3M9VtRZyz3v2pJj5Lh6x5zOCQuTmtMDaKnS9C6RkZGvXcrlrm76797xx1apMrfBnach2+XvHAw+KVmMvfsV1P1BTEvEddp4Q8Ca8CvRwtwmyAbAtNvBuUVGg+0HwgpMS2ytZ4PXMu5WWCxuDuVcmnXpXrX339TxokvTQm/itF7qacRw3ayLD98petZLbzNosfbBFmdmzekT1YZO2B/+mrVi50GghsC/dpOsofoatvJE3WReUXxLpeXPTccL8oZYl4bJ7j7Fhg+Kc85+ru07exi3ksFmZ7IGrFIJ7tPe03DMBY5IWMkINPl/eWDtpxWbpMfPE7f7zC3I+nDqb0Lzkk8moZoV7t+XFfVrw+FBcxSVp3rb/X12QQe2E8XBSFlzutgXEbzHH7jwSUdbsN6OKfMpBb9G3si/iiE8TcRX2L74nPYWk6t+Gxm8N2YPuFRqzKfEnoV8j/9YP83+J8wwBIgkEIlE0HKedg/AMNQ5AFlbmRzdHJlYW0KZW5kb2JqCjExNCAwIG9iaiA8PAovVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTEKL0VuY29kaW5nIDk3MCAwIFIKL0ZpcnN0Q2hhciA1OQovTGFzdENoYXIgMTE1Ci9XaWR0aHMgOTcxIDAgUgovQmFzZUZvbnQgL0xORExERytDTU1JNgovRm9udERlc2NyaXB0b3IgMTEyIDAgUgo+PiBlbmRvYmoKMTEyIDAgb2JqIDw8Ci9Bc2NlbnQgNjk0Ci9DYXBIZWlnaHQgNjgzCi9EZXNjZW50IC0xOTQKL0ZvbnROYW1lIC9MTkRMREcrQ01NSTYKL0l0YWxpY0FuZ2xlIC0xNC4wNAovU3RlbVYgODUKL1hIZWlnaHQgNDMxCi9Gb250QkJveCBbMTEgLTI1MCAxMjQxIDc1MF0KL0ZsYWdzIDQKL0NoYXJTZXQgKC9jb21tYS9PL1Ivay9tL3MpCi9Gb250RmlsZSAxMTMgMCBSCj4+IGVuZG9iago5NzEgMCBvYmoKWzM4MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDkzNCAwIDAgOTIyIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDY2MSAwIDEwOTQgMCAwIDAgMCAwIDU4NCBdCmVuZG9iago5NzAgMCBvYmogPDwKL1R5cGUgL0VuY29kaW5nCi9EaWZmZXJlbmNlcyBbIDAgLy5ub3RkZWYgNTkvY29tbWEgNjAvLm5vdGRlZiA3OS9PIDgwLy5ub3RkZWYgODIvUiA4My8ubm90ZGVmIDEwNy9rIDEwOC8ubm90ZGVmIDEwOS9tIDExMC8ubm90ZGVmIDExNS9zIDExNi8ubm90ZGVmXQo+PiBlbmRvYmoKMTA3IDAgb2JqIDw8Ci9MZW5ndGgxIDk3MwovTGVuZ3RoMiA0MzczCi9MZW5ndGgzIDUzMgovTGVuZ3RoIDUwNDggICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnja7ZNnPFx9m8dJiB5E9HYYvY02RO/dRG+DKDODwcwwjEQNCSkiSvSIEDUhoiaCECV6770HQZQoESWs5N7nyb33vtx9tZ895835XuV3/T7/6394uYzNRNUQWGekNhbjKyohJiEPaEChenLA+ae4ODkvrwYO6eSLwmI0nXyR8oCEnJwMoI/3BCSlAHFZeYiUPARCzgtoYL38cShXN19AQEPwV5EsoIZG4lBwJwwAdfJ1Q6LPNeBOnoAZFo5C+vqLAWqenoDprw4fwBTpg8T5IRFi5BISAAIF9wWcka4oDDn4lyU9jAsWkP0rjMB7/Svlh8T5nJsCBH7bFATOTSKwGE9/AIF0IQdfx55PQ557+d+w9U9xbbyn53Un9C/5Xwf139JOaJSn/38WYNFeeF8kDoBiEUgc5p+lVsi/vEGRCBQe/c+snq+TJwquhnH1RAKiEtJi4tJ/xVE+2qhbSIQxyhfuBrg4efogf8eRGMQ/nZwf328fYDWYoRFUX/ivxf7OGTuhML7m/l5IQPxP8W+W+MPnR4RD3QJsxcXExSXOC8/ff33Z/2OWFgaORaAwroAkRAZwwuGc/MnFz6UkIRAgUAJAYRDIWwDy1rlhsBgG63veApwfTDDggsWR/9rq+eLBTp5ebk6/wr8jUuIA2MsN9W+GyAFgOBaN/lMhKwOADf/Qed7o33RNEgCb/iFpAGz+bzq/BOA/Kue3BwAj/oYQAIz6G54Xe/wNrwFgz7/h+VD0H5Q4l8L8Dc978X/D816/3/jf16Sujr0VKCopB4hKQsR/TYUAshDx4P9SCMfjcEiM7+8/4XzZ/2IX1Pn9QCJvIeHk4yNYuEK4e/K7e69CtLL7CogFfdhS88O76iIqUhXE1mcUrgzhKnvNkRw7tBG07qhCmqQNgyIwwgUyx/xOLag10AwcMUbbSnVV8MVTM5It+LrdjQttGS2N1Oj0hyvjnJ+9KoW3JkD7s351xMWGqxKyWcwbkUSvRkd+7oZ43O6eG6dIQYCWksjtM2oME5GWX2ZjO4++6mCzseO5bYx2T/fpTseZG6cHPKaoUuUeZUAvDqcqnZCJC95yme8ml0jz4By3fi6nbyZPyiYzst/hsGH0tL3oMwfR4YnpinX7HuxJ3Tjk3mHvpJUPoBUnj+AuUr+kdo+mjf2B2Of4mURQF+spPfE0XWxpWkNCAGGVQotbXZrQZdQrNwt1ufdRBMUZtdvPul0Hy8gMaTN1nE+jGlbZL5ALlDdwDxisvf4BottzNAJvYRjRPuT30z7b9w2lYrZ5AtbZMgtJz2ShqdtonXJsovnReNZgjxbrzbgmr/RI9umt2nBKVvXCO1AY1dllavqSSu436/dv7z20Zs87epynp2lhQrjOcFBI4R1y9VFgytjkTx9K0/gQbqRW7+OmuSDbbBK56pO+nQp1fN7wxf079cdGmqnwviJw8YxUtdLND6/6Z+8/njjJWhD5VN1tLizAhWhNbqxdZCpON2bL4sS4iAUU4nN3oCJMYjaPGe01v0SWPl3ptrE2Six/yKS8wGpquy+kAqo/NbubawljlmH3xhpHFVSG03bAoPwWIg2fIH5UsIfDkEo2G2W8nZOLk4wU6UTe3f3rfY0qZY28maRywhTeGS7fWBLcySiCCN45Z7ckplZ8LenyarMzqNkhmbuA9Qxg3nl9HOAYatQeaXA2+vFMOFFYvYdfgZbpQJmJbCCOmSeHqUtrgerpswvOhHwq+vT8uot+N6FBXGGSFYNuxLGFQlmNa77sIUmfMgyyV4gXRiIHHny1JGTrt+7jZnjAGqIlAU34bB/S4XPTI0f09acrujn9aclH8UME/tW9C25m27MZeIDNpvV2kXosjFWu8Gt1Wf0TK5uPZARzc7Rfio6GIzJamXZJ2mykRg6P1MdAbrIXH+0aubi8sYutEDJo3tkr9aqYBs3a2QrZJ9rrWlHl3iOMI4ocMPC/KyahRm7dV9XpmGMMsVu7Ty01P/D+4nrbYUWaV/3d4LQSEi39gtpj+YuJmpIp1yhjxtbSR079sPGgcloyLYrKNx357wnogjAhkrlJzyIlmElCSWdkGTXCQ7e0voaHfQeh0DRx8OXb3F8P8ljWfVSv/qTmgNiRWUCcKtxoutaqx79SbH/ArbU+9jERCUaHrAffA4ixeLkJ+sCtaXprr9JG2PWekP6aNuJZvQfF7lZ3K5i+hi6qTDuXJh2uvs6yfXvdFG0gMrH3ZPzVc9LjLjre6ISra701zS5qXst011c3wLB7VSrrL5ebn4sckQ+bH1fpyhKUJ3PXPumKDIYE+VVRT5Ec8IwuvxIVHEpakX/ecKlfT2R9PqlPq4k/PVbVkj7oebKPqA7543p0sPedTIJIiUsfkIa41gBMEI3o1DqeIyfPF4pQhmeRJD3z2oL7UN72JR96gxDuVPPpcYTSR/3sF+SdvgdxnmsRdd+NXmOsGne/4rIbO31gzEDL6nyKI4Wz3F9tFoZ+vvNF4ExEcjAXOrM9/6xGRMGkBW3SzK1BEh48NS4WVmwje0OefOTywlVQZCXn6s3bw8v6NVIrFNc4UsYD21JH2TS/TqUj2fQ2sLh50wX9rL6ffERVrrnDp1Edl0z5ki9J3HgTmM9rn7V0WmIHs1Lr9tycGPKhppCCJb2t+m5DsEkzuCA/b5dnXfgW8VA/Vexl+51X7JE3nTs675j2UrcbFjjae7ACswmbV6Yu1MAlDHxJ9wOgcnOXCVbjZpwFV9q9lsaiAjPEBw5O1OI9uqMEL7yuhhmxFrsKnHV0TrHk+XAdN57VreWHJq0mPKTzZr43WQm5/fJ5jBY1Kxn3G/bYHXrXD/y+h83bmhoMgLT6ynLYO7Rn9y5RnPl0x2cjJf+rfV8XSwMU00MGIOX4Q3nVmBbFJfPYCoNjyJ1PLsEOtDnFHyHsLYmBoF5WJVRRUB9lipB1q87HaQO+DYarFVU1tPmagGTBLHvQ4qXJieWzO3BFMovkzVKulL7nPMGIPs4Rt+ukYU5MXBRc0GcdNdKW72tLqSNvrIL0lRgtawm/aE4vOazzvbuHM296aT5p+pGXJVyRqNZu1ovsW0LB5YwXj/WQAqSqXia3dQYPiQ4JEVAHFvQIg06iGfo904UzUTyzkA/mHZGNkdQxwQ+hS0/xb3T9EQtFj3uAeg5Moj35DUHzJWb+a5tqbuM8vWI1yCv3edMNpEr4fIgfmIqHLhJXxwQRWVrve0f0UYp65fmc2C7bFqbsYDMEXEbNS8weXCGQzg4xx12f1zwYLL36gAwWybN9ipbIrhtOvQAaRJmSyT4jSdrZEInRoR5TR2VShYVbdTr77io/X6/e7iq3brq+uEF7M3rS8aSxJ024Eivi1aXHghLr3vGq+B6l+q4XP0TaA4pTXjLRl17gz7YcMAh5ED2UA4HfvVtL0rnkpWui1uLSEHq0LcKT+klAFiI8kcsnbCsvDXrJ2u4dy6iQvnAUKE0tc8AD3dy99UQ5PqKhtLWEYjqt2HyA+W6xJ01H3fSk4IyoietouAa5dmXd04omEWh+fyhllvTNxLTqS7ZU17fLGid6Di0aTSdudMhx/6CgIAvBpXBPoPEGWVcY4/1ViRi2I4+i2I11kXw0q4SydMtlkkNGV1TeuFwT4tpr3W2rkPtCV/lC2EAn0mBIhfCnOj54sacYe0msJZqbi9WNPlLoLXGQyCmrCVuBflw5pGCBoRXwkKwv9RpdHCah34zEN6Q3MM2lxYHfS3l0CxJEP8cmaV3A7spSfcAaozJfH83HX6WseJx9rFgifbRH+sFh0WPqhyNh8xgzp/UT3I88Z7gScRJs6HliXvlSO+KRuyX/S++nFE52lNijVEN/fcuUwr5bvMzjpMDgWcSlm3ce6+QEOpdszohw3hR3mg842n6/KAAajd+efNPGEMUZLG0JUmCcacxDgvYNoo3uFwIbwXCzjZfrJkNWIqkzbOWtzXcMLl6pvPa6+kXaPR9BB7q8tX55vZWwy588z7S4zgCTS9qYksaA6QprVRHe6DBH9O6usLSNM16h07vb+3QH1d/sWHbYq1GAU51Qj69LVqwCuXZrfZPdoZaO3nT93sPIHiPEyHdWrDrXX78jWQlPrQhrnv8+9kOP573a9nZRnLYUhr/6zZmrqn138FmybAonZU8mbe+ei9h8Vzj7tP2sh2uZXVOY23LXCz5mUvqucDRP82jWoVF5rPoz+tp36vfjSIoz4+2pj5Mr76vvgdH960ekzmbk+w0Zwqmaya3pmtLjPPU4ruJAHjTacAWqOBBKuK5ZBtsffGib6ZrjqREAV1aa83vpOht9MkopMrla26LaUJDZlt8rBHb7vqfD+N59kKCQJkQJHOb/3Z4D0R+mmrlVUaTxvKHwwU09gm+Hnp8WJOlPrQyPhStyMkazM19c4aXi1pCAzLK49W/QPyFZbnyc6RNnkzGiOcL1M86p/0QyGwS7IQwtzeiyf/mowG5wwpfp8UkkHWDKgU/XDfPhF4WhotYsZNLhjaOnCX4s79XGFVJkt3yse/YGqLL2KH68xN0ukGvXZ63ymrMfp56Ra7Sa7hipKpHnKQlQYLld8vLsZRSRJ7er8dJxlTWHg34lJPfh2QU0ydjQVO+F7mfitOTt7nrMFLKZUezQvG3vnQAUo9/1HzkUasfkqfQYxEFF1h4y4sb9LoP6xKfCTnkcWSPhHVUwxRah8BBQz07v2E7Nu/zdxFXa62yDgq62h7yMoZssMt6mjzIiP5rBEwv9iF9eGByxiHhGOm6Mqh7h+ZDTLy/Ef9DPn/3TsA3EEI8zTlXJ3IvsRvQSpicchVh3HWi0B7YaDFeASWZDvHKzkicb1lUxEF0trbQqxQ2PVVM7rdRdlhVtQnliK7JSi9ClsWe83QWrvnwnsGagLsov1TwZJG9BcMrStTghdNaR5PZxN1crPc3YvlXpw90Icbwd2yWh8jnq1VWzQ+j+VnPPmKy0ztlWFKukkQNMf3aKCfpDkVs4yFiRW8BU7co94yFDpquwty/e831VE5cb6VwKH5XoTiAKQde3XGP7VCPZ46ZsQlC3mpzZpGH40OR5B2rKDtqwvjb00/3Afz8f+XF9PISzxXYJUTOMr/PzWMZqjdtP6YMcHIloRFWPevR6NnHKMnoVXyoeNAjy1191kbSUOhEHF8E+54s9o1PvJZXGYhdoQBx9mS5f+C6KId3LPsIZvi8HZAu0jPxYfA0zcumvezfVhFgJAm2xGTEpOTYvBLCciYYoxEXVUHFZyXLXV9lLyo1HqXwnX3S1VSTsuTzrp1f0hWHE15AorGHjXqb4rtV9XTUiNh/tROWd6kYjbzvBp4arizGkngzKgloN8MywB3kcmwQtqGhKaYq3kx25YHrhOMngT4I/mEII6bpKqPEg7dgsJ4NSxYQyRxbWi3TMqTI30nm4vonGjG18HMZ2SkBqbAZtqRcx4M5QFweZiVeM66dab7pK3AOaFFhkOrT3WAYJd1gFZWfflrY8uEVykvce71Ci/tFCpsUr+CuB6FdZdmZN4IdzeW/Qq1oJHaOtIC5GEwKq428t+sl00qM7JCWaJz89vvPJDFo5U3BqtFDbiyl8j2p1LQrciJIz/wLDVexF8uFT4wMOAxLcou++qX02TzYW036qIto73MZPmBMfAg1eKWuhPBYjTcZ7vOvjnQYsMk0/Pjqc8wgDGGjoVo5f7TDZFqd96JZIMCjsaIrTLLmc7/HkEVOY50/pucCZsrt+NJQm2sefKV8Y013WDcnxllgzTMkeJeuYHid7q27g4P/9mz/mYsF4MoP9B2K25xfds9VWF5pmi8CVNumF4McSt2Y8D2yyrXQGDhxUxapHHupms4xRY0qDQg1bDNue1xKU0Lb2mRmm8Il6Y1SYmTT7DHHTMQ/jDvZVjG3JJX2NQZhDquHJYuX8kX32aFLM4JHYO/LOYQcRfp9YmNvDxfkEPduIhIdHg0JFiGvGWE0D70VG/DNDYb6pbqebZp4/PE0/XVeRjgkuyZJMPbv5/dgjLSUobHO8uPJbS/YQW/4qFbGLUkK2B5ItsX2qLHMqV5EqYpm/66iJ+aahz4Q/ZkzYHjz8c0+xHG+zF+5B4p/uaPjhDSJi/WuYlcWXHHvNxltysXlGR6TtrCN6/o23cCluojTKdzlZlblhiVe5H13nZUp9Ks3/1Azn8Yg8VduYcsAyXa3+cCPFc5uyBVRUdTxcGzQeIjWAMrybhZJoCNny1fKloYNuNJd1eafkHrIvVYvCyCr5fFoVTbZoEq/Sl4Zq07wkMlaNfLsMzfryzeGgqjyavfqVqtuMgmyC2ntjJJ9uUETM5WtpvB53Crelrvrnx34e3XzwOUZ0Mqs9LPOzC//lrO+JmZum3Aryoloi72UaBPSYH7q16S+qwNIH55SqKPERGWoZjyYdleQELDioHSws9XKd+i4zzcsUuRNqd3Fsp2aq3U7DHOgnhTfbRqQw9v0UUPAni+VM6RLUNY/fa3dODPRYIpWH4ASbBHLLy9MES6iFbXT5aHoUESmn+0GFjXWNYrVkjbpSK/sbVMlTfE/KYea14lLsFZc2UQjWR/Uf24Lq6DWEKxU1frLc+LF1lMwB6kw4UeOoxhvxCRYf25R942J7GlOGXPOHTgZlBOcvhNbLeKw07SuZ9z3w0kxKkaLgo6KrQfG/WvQd5PS9SHZIqe11nCoI5sweydFRzWrI71S6NX3WbR6BIukS/x8+5P8v8H9CAO6JdML5YtFOOA/y/wCzgwp+ZW5kc3RyZWFtCmVuZG9iagoxMDggMCBvYmogPDwKL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9FbmNvZGluZyA5NzIgMCBSCi9GaXJzdENoYXIgMTEKL0xhc3RDaGFyIDExOAovV2lkdGhzIDk3MyAwIFIKL0Jhc2VGb250IC9BWkxPTUorQ01NSTkKL0ZvbnREZXNjcmlwdG9yIDEwNiAwIFIKPj4gZW5kb2JqCjEwNiAwIG9iaiA8PAovQXNjZW50IDY5NAovQ2FwSGVpZ2h0IDY4MwovRGVzY2VudCAtMTk0Ci9Gb250TmFtZSAvQVpMT01KK0NNTUk5Ci9JdGFsaWNBbmdsZSAtMTQuMDQKL1N0ZW1WIDc0Ci9YSGVpZ2h0IDQzMQovRm9udEJCb3ggWy0yOSAtMjUwIDEwNzUgNzUwXQovRmxhZ3MgNAovQ2hhclNldCAoL2FscGhhL3BoaS9jb21tYS9ML08vUi9UL2EvZC9pL2svbC9tL24vdS92KQovRm9udEZpbGUgMTA3IDAgUgo+PiBlbmRvYmoKOTczIDAgb2JqCls2NTkgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNjEyIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMjg1IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNjk5IDAgMCA3ODIgMCAwIDc3OCAwIDYwMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1NDQgMCAwIDUzMyAwIDAgMCAwIDM1MiAwIDUzNSAzMDcgOTA1IDYyMCAwIDAgMCAwIDAgMCA1OTEgNDk5IF0KZW5kb2JqCjk3MiAwIG9iaiA8PAovVHlwZSAvRW5jb2RpbmcKL0RpZmZlcmVuY2VzIFsgMCAvLm5vdGRlZiAxMS9hbHBoYSAxMi8ubm90ZGVmIDMwL3BoaSAzMS8ubm90ZGVmIDU5L2NvbW1hIDYwLy5ub3RkZWYgNzYvTCA3Ny8ubm90ZGVmIDc5L08gODAvLm5vdGRlZiA4Mi9SIDgzLy5ub3RkZWYgODQvVCA4NS8ubm90ZGVmIDk3L2EgOTgvLm5vdGRlZiAxMDAvZCAxMDEvLm5vdGRlZiAxMDUvaSAxMDYvLm5vdGRlZiAxMDcvay9sL20vbiAxMTEvLm5vdGRlZiAxMTcvdS92IDExOS8ubm90ZGVmXQo+PiBlbmRvYmoKMzggMCBvYmogPDwKL0xlbmd0aDEgNzUzCi9MZW5ndGgyIDY1MAovTGVuZ3RoMyA1MzIKL0xlbmd0aCAxMTkzICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42lNVDAjWdUzJT0p1y88r0TXUM7RScPYNjjRXMNQz4FJVdS5KTSzJzM9zSSxJtVIwtLQ0VHAsTVcwNFUwMLcyMrQyNeJSVXDOL6gsykzPKFHQcNYEKTJXcMxNLcpMTsxT8E0syUjNBZqRnJijEJyfnJlaUqmn4JiToxAE0lGsEJRanFpUlpqix2VoqJCSmVyikJSanpnHpQ9ykGdeWr6COUQ4pbQAJlWWWlQMdJSCBtCRmgpAJ6bk5+VUKqSkpnHp++UD7UoFuoQajkI33K00J8cvMRdkPCiQMKQTczNzKqEK8nMLSktSixR881NSi/LQlYanQtzmm5qSWZqLLutZkpiTmeyYl56TqqBraKJnYGwKkcgsdsusSE0JyCxJzlBIS8wpTgWLp+aloDsFGHpgh+hHBYUGB/lrQ2IVLBeQmJlXElJZkKpggFAM5hsi+MAwKsqsUIg20DMwMAQqBEIYKxbNLte85PyUzLx0BSNTM4XEoqLESi4DoFFGpqYK1YYKmXkpqRUKqRVAB+vr5eWXALUoAEOmViEtv4gLFKmGxgr6yZlFyTmpyaA4KwHJcmH6xskpv6JaF5jydC1NDRUMjUyNFMwtjGpRFCaXFhWl5pWA0wswTGD8tExgOKamVqQmc928lp9s3ZI1fVvbyjrXxRdWsepz/jyx9uVN9gMRO+pmZ6bUBpvOC1RML1nyauGjrX2HxbMvSnglW08VLtoi2evXE/dlkfCarV0LlkVMaDDdr3cjWLyyuWsa7z9t9VeehwvDZsxpfSRttb/o8axOZZ2bX5TrT/DMS3nhFLV43/d717iFtIImaSlJmd9cwX6XUUy88u7zS4GecvtTV/bMf7TxfG9RVIGGpGe/1/9nFruXbVRuO/5Ze3HANb1FElc3+T0TOnSI3/ms9V/eD9oS0Zm61er7jmvyvb/zU3/q3dcBBRn3uLmZAx+/2fHE+ZngPi7HhT9OzLE+mG2qY+K8Oj8tbk0czxGluW/+RDwMT3XymThH3a5+kcO+ar2pUts7L6onRe/ZzmzHEBDwWk9o44mnn9fKuyyXDF+rc9R2YvVfTuUwRtGItndmFw7fzata9H7OEabj9R9D5iXMKpQ/fEjwmV+/mm3C0rr52u6PPbind61Pbut6pXrLNkTYrbrs0gf9humXWuRupZUXS2Wdf8O9+iNjFsdsXZVfDS/mWciJL30yLXkbi+n1OSzrT6uvNzRwvRb2JXGy44zpHXOF7ghaHfv8vOCHg8HqbQ9eeCix6Ss12Yke7Hv2VEXQf092/GPjR8c803nqXm161z/j3Onj2gqJK9oErc+2mezp3Cy27qaNkXG+6Cfm9um/shZvs/vCvO/IF95z3FoynZP29Cftb910xbHJ7EpltNiuDXc6ObuD1H5PC3EJD+V6MtVs7UbLmRb/EwQqb5++Eimy9fFr3qxjd9OjOK2bq62c9pgH9Xz73/T34v5X+XdmHbx+aJPJ5UenI1V7gnkei3zhPMjNk5+19ahRC/sqKSsO0xuiKopzA6R1Fvs3T2c2czFcMtOI+5PkpapH3Sc5hZ4bUAi4Rg0YFgYAy73EopL83MSibC4AUF2Tb2VuZHN0cmVhbQplbmRvYmoKMzkgMCBvYmogPDwKL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9FbmNvZGluZyA5NzQgMCBSCi9GaXJzdENoYXIgMTMKL0xhc3RDaGFyIDEzCi9XaWR0aHMgOTc1IDAgUgovQmFzZUZvbnQgL1pSVVNSTytDTVNZNwovRm9udERlc2NyaXB0b3IgMzcgMCBSCj4+IGVuZG9iagozNyAwIG9iaiA8PAovQXNjZW50IDc1MAovQ2FwSGVpZ2h0IDY4MwovRGVzY2VudCAtMTk0Ci9Gb250TmFtZSAvWlJVU1JPK0NNU1k3Ci9JdGFsaWNBbmdsZSAtMTQuMDM1Ci9TdGVtViA5MwovWEhlaWdodCA0MzEKL0ZvbnRCQm94IFstMTUgLTk1MSAxMjUyIDc4Ml0KL0ZsYWdzIDQKL0NoYXJTZXQgKC9jaXJjbGVjb3B5cnQpCi9Gb250RmlsZSAzOCAwIFIKPj4gZW5kb2JqCjk3NSAwIG9iagpbMTEzOSBdCmVuZG9iago5NzQgMCBvYmogPDwKL1R5cGUgL0VuY29kaW5nCi9EaWZmZXJlbmNlcyBbIDAgLy5ub3RkZWYgMTMvY2lyY2xlY29weXJ0IDE0Ly5ub3RkZWZdCj4+IGVuZG9iago5NzYgMCBvYmogPDwKL1R5cGUgL0VuY29kaW5nCi9EaWZmZXJlbmNlcyBbIDAgLy5ub3RkZWYgMS9kb3RhY2NlbnQvZmkvZmwvZnJhY3Rpb24vaHVuZ2FydW1sYXV0L0xzbGFzaC9sc2xhc2gvb2dvbmVrL3JpbmcgMTAvLm5vdGRlZiAxMS9icmV2ZS9taW51cyAxMy8ubm90ZGVmIDE0L1pjYXJvbi96Y2Fyb24vY2Fyb24vZG90bGVzc2kvZG90bGVzc2ovZmYvZmZpL2ZmbC9ub3RlcXVhbC9pbmZpbml0eS9sZXNzZXF1YWwvZ3JlYXRlcmVxdWFsL3BhcnRpYWxkaWZmL3N1bW1hdGlvbi9wcm9kdWN0L3BpL2dyYXZlL3F1b3Rlc2luZ2xlL3NwYWNlL2V4Y2xhbS9xdW90ZWRibC9udW1iZXJzaWduL2RvbGxhci9wZXJjZW50L2FtcGVyc2FuZC9xdW90ZXJpZ2h0L3BhcmVubGVmdC9wYXJlbnJpZ2h0L2FzdGVyaXNrL3BsdXMvY29tbWEvaHlwaGVuL3BlcmlvZC9zbGFzaC96ZXJvL29uZS90d28vdGhyZWUvZm91ci9maXZlL3NpeC9zZXZlbi9laWdodC9uaW5lL2NvbG9uL3NlbWljb2xvbi9sZXNzL2VxdWFsL2dyZWF0ZXIvcXVlc3Rpb24vYXQvQS9CL0MvRC9FL0YvRy9IL0kvSi9LL0wvTS9OL08vUC9RL1IvUy9UL1UvVi9XL1gvWS9aL2JyYWNrZXRsZWZ0L2JhY2tzbGFzaC9icmFja2V0cmlnaHQvYXNjaWljaXJjdW0vdW5kZXJzY29yZS9xdW90ZWxlZnQvYS9iL2MvZC9lL2YvZy9oL2kvai9rL2wvbS9uL28vcC9xL3Ivcy90L3Uvdi93L3gveS96L2JyYWNlbGVmdC9iYXIvYnJhY2VyaWdodC9hc2NpaXRpbGRlIDEyNy8ubm90ZGVmIDEyOC9FdXJvL2ludGVncmFsL3F1b3Rlc2luZ2xiYXNlL2Zsb3Jpbi9xdW90ZWRibGJhc2UvZWxsaXBzaXMvZGFnZ2VyL2RhZ2dlcmRibC9jaXJjdW1mbGV4L3BlcnRob3VzYW5kL1NjYXJvbi9ndWlsc2luZ2xsZWZ0L09FL09tZWdhL3JhZGljYWwvYXBwcm94ZXF1YWwgMTQ0Ly5ub3RkZWYgMTQ3L3F1b3RlZGJsbGVmdC9xdW90ZWRibHJpZ2h0L2J1bGxldC9lbmRhc2gvZW1kYXNoL3RpbGRlL3RyYWRlbWFyay9zY2Fyb24vZ3VpbHNpbmdscmlnaHQvb2UvRGVsdGEvbG96ZW5nZS9ZZGllcmVzaXMgMTYwLy5ub3RkZWYgMTYxL2V4Y2xhbWRvd24vY2VudC9zdGVybGluZy9jdXJyZW5jeS95ZW4vYnJva2VuYmFyL3NlY3Rpb24vZGllcmVzaXMvY29weXJpZ2h0L29yZGZlbWluaW5lL2d1aWxsZW1vdGxlZnQvbG9naWNhbG5vdC9oeXBoZW4vcmVnaXN0ZXJlZC9tYWNyb24vZGVncmVlL3BsdXNtaW51cy90d29zdXBlcmlvci90aHJlZXN1cGVyaW9yL2FjdXRlL211L3BhcmFncmFwaC9wZXJpb2RjZW50ZXJlZC9jZWRpbGxhL29uZXN1cGVyaW9yL29yZG1hc2N1bGluZS9ndWlsbGVtb3RyaWdodC9vbmVxdWFydGVyL29uZWhhbGYvdGhyZWVxdWFydGVycy9xdWVzdGlvbmRvd24vQWdyYXZlL0FhY3V0ZS9BY2lyY3VtZmxleC9BdGlsZGUvQWRpZXJlc2lzL0FyaW5nL0FFL0NjZWRpbGxhL0VncmF2ZS9FYWN1dGUvRWNpcmN1bWZsZXgvRWRpZXJlc2lzL0lncmF2ZS9JYWN1dGUvSWNpcmN1bWZsZXgvSWRpZXJlc2lzL0V0aC9OdGlsZGUvT2dyYXZlL09hY3V0ZS9PY2lyY3VtZmxleC9PdGlsZGUvT2RpZXJlc2lzL211bHRpcGx5L09zbGFzaC9VZ3JhdmUvVWFjdXRlL1VjaXJjdW1mbGV4L1VkaWVyZXNpcy9ZYWN1dGUvVGhvcm4vZ2VybWFuZGJscy9hZ3JhdmUvYWFjdXRlL2FjaXJjdW1mbGV4L2F0aWxkZS9hZGllcmVzaXMvYXJpbmcvYWUvY2NlZGlsbGEvZWdyYXZlL2VhY3V0ZS9lY2lyY3VtZmxleC9lZGllcmVzaXMvaWdyYXZlL2lhY3V0ZS9pY2lyY3VtZmxleC9pZGllcmVzaXMvZXRoL250aWxkZS9vZ3JhdmUvb2FjdXRlL29jaXJjdW1mbGV4L290aWxkZS9vZGllcmVzaXMvZGl2aWRlL29zbGFzaC91Z3JhdmUvdWFjdXRlL3VjaXJjdW1mbGV4L3VkaWVyZXNpcy95YWN1dGUvdGhvcm4veWRpZXJlc2lzXQo+PiBlbmRvYmoKMzUgMCBvYmogPDwKL0xlbmd0aDEgMTY0NAovTGVuZ3RoMiA3MTY5Ci9MZW5ndGgzIDUzMgovTGVuZ3RoIDgwMDEgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnja7XdnPJzf1na0EL2XRGT0Fozeu+i9d8YYDGNGxhCi995rEFEToovookUXhBAtMXonOkG8kv97znl+5znPl+ecT+/vnS9z77X2ula51l77vlkZdQ145O0RdhBlBBzFw88LlABoQ13tPNz1Ea7aCHFNHn2IowfgVi6Mz8qqiISAUFAEXAmEgkgATCD2ACUIGCAgAOAXFxfHZwUoIty8kVBHJxSAw0jfhJOb+/E/JL+3AOy8/6a5tXSHOsIBbLcPnhAYws0VAkfdQvyvDQ0gEADKCQJwgMIgAEUdXTM1bRUAh4q2EUAFAocgQTCArocdDAoGaELBELg7hBPggEACYH8tAGAE3B76OzV33lsseXcACODuBgFDb80gXmCI22/VY4AbBOkKdXe/fQZA3QGOSBAcdVsDFAIAhYNhHva/A7iVOyD+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IC9UeXBlMQovRW5jb2RpbmcgOTgyIDAgUgovRmlyc3RDaGFyIDMzCi9MYXN0Q2hhciAxMjUKL1dpZHRocyA5ODMgMCBSCi9CYXNlRm9udCAvUlJMRExCK0NNVFQ5Ci9Gb250RGVzY3JpcHRvciAyMiAwIFIKPj4gZW5kb2JqCjIyIDAgb2JqIDw8Ci9Bc2NlbnQgNjExCi9DYXBIZWlnaHQgNjExCi9EZXNjZW50IC0yMjIKL0ZvbnROYW1lIC9SUkxETEIrQ01UVDkKL0l0YWxpY0FuZ2xlIDAKL1N0ZW1WIDc0Ci9YSGVpZ2h0IDQzMQovRm9udEJCb3ggWy02IC0yMzMgNTQyIDY5OF0KL0ZsYWdzIDQKL0NoYXJTZXQgKC9leGNsYW0vcGFyZW5sZWZ0L3BhcmVucmlnaHQvYXN0ZXJpc2svcGx1cy9jb21tYS9oeXBoZW4vcGVyaW9kL3NsYXNoL3plcm8vb25lL3R3by90aHJlZS9mb3VyL2ZpdmUvc2l4L3NldmVuL2VpZ2h0L2NvbG9uL3NlbWljb2xvbi9sZXNzL2VxdWFsL2F0L0EvQy9GL0kvTC9OL1MvVC9icmFja2V0bGVmdC9icmFja2V0cmlnaHQvdW5kZXJzY29yZS9hL2IvYy9kL2UvZi9nL2gvaS9qL2svbC9tL24vby9wL3Evci9zL3QvdS92L3cveC95L3ovYnJhY2VsZWZ0L2JyYWNlcmlnaHQpCi9Gb250RmlsZSAyMyAwIFIKPj4gZW5kb2JqCjk4MyAwIG9iagpbNTI1IDAgMCAwIDAgMCAwIDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgMCA1MjUgNTI1IDUyNSA1MjUgMCAwIDUyNSA1MjUgMCA1MjUgMCAwIDUyNSAwIDAgNTI1IDAgMCA1MjUgMCA1MjUgMCAwIDAgMCA1MjUgNTI1IDAgMCAwIDAgMCAwIDUyNSAwIDUyNSAwIDUyNSAwIDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1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02sZzRHPleaHaJ9UZzUqzHkLCSmTHu2nuLNXF9XkH9xUvTNnNldaB1T51ycmxkD/2eYJ9WVYiucVHi2BF/agUkE1KuzJSQ44hosNByr8P2P8H/BfAbg/9XANCvb3dQ3yYfwPJOzaYmVuZHN0cmVhbQplbmRvYmoKOSAwIG9iaiA8PAovVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTEKL0VuY29kaW5nIDk3NiAwIFIKL0ZpcnN0Q2hhciAyCi9MYXN0Q2hhciAxNjgKL1dpZHRocyA5OTIgMCBSCi9CYXNlRm9udCAvS1VZR1VQK05pbWJ1c1JvbU5vOUwtUmVndQovRm9udERlc2NyaXB0b3IgNyAwIFIKPj4gZW5kb2JqCjcgMCBvYmogPDwKL0FzY2VudCA2NzgKL0NhcEhlaWdodCA2NTEKL0Rlc2NlbnQgLTIxNgovRm9udE5hbWUgL0tVWUdVUCtOaW1idXNSb21ObzlMLVJlZ3UKL0l0YWxpY0FuZ2xlIDAKL1N0ZW1WIDg1Ci9YSGVpZ2h0IDQ1MAovRm9udEJCb3ggWy0xNjggLTI4MSAxMDAwIDkyNF0KL0ZsYWdzIDQKL0NoYXJTZXQgKC9maS9mbC9kb3RsZXNzaS9kb2xsYXIvcGVyY2VudC9xdW90ZXJpZ2h0L3BhcmVubGVmdC9wYXJlbnJpZ2h0L3BsdXMvY29tbWEvaHlwaGVuL3BlcmlvZC9zbGFzaC96ZXJvL29uZS90d28vdGhyZWUvZm91ci9maXZlL3NpeC9zZXZlbi9laWdodC9uaW5lL2NvbG9uL3NlbWljb2xvbi9BL0IvQy9EL0UvRi9HL0gvSS9KL0svTC9NL04vTy9QL1EvUi9TL1QvVS9WL1cvWC9ZL1ovYnJhY2tldGxlZnQvYnJhY2tldHJpZ2h0L2EvYi9jL2QvZS9mL2cvaC9pL2ovay9sL20vbi9vL3AvcS9yL3MvdC91L3Yvdy94L3kvei9xdW90ZWRibGxlZnQvcXVvdGVkYmxyaWdodC9lbmRhc2gvZW1kYXNoL2RpZXJlc2lzKQovRm9udEZpbGUgOCAwIFIKPj4gZW5kb2JqCjk5MiAwIG9iagpbNTU2IDU1NiAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDI3OCAwIDAgMCAwIDAgMCAwIDAgMCAw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MiA3NzggNjExIDAgNzIyIDU1NiA2NjcgMCA3MjIgMTAwMCAwIDAgMCAwIDAgMCAwIDAgMCA1MDAgNTU2IDQ0NCA1NTYgNDQ0IDMzMyA1MDAgNTU2IDI3OCAzMzMgNTU2IDI3OCA4MzMgNTU2IDUwMCA1NTYgMCA0NDQgMzg5IDMzMyA1NTYgNTAwIDcyMiA1MDAgNTAwIDQ0NCBdCmVuZG9iago0MCAwIG9iaiA8PAovVHlwZSAvUGFnZXMKL0NvdW50IDYKL1BhcmVudCA5OTQgMCBSCi9LaWRzIFsyIDAgUiA0MyAwIFIgMTA0IDAgUiAxMTAgMCBSIDExNiAwIFIgMTIyIDAgUl0KPj4gZW5kb2JqCjE2MSAwIG9iaiA8PAovVHlwZSAvUGFnZXMKL0NvdW50IDYKL1BhcmVudCA5OTQgMCBSCi9LaWRzIFsxNTYgMCBSIDE5MyAwIFIgMTk2IDAgUiAyMDIgMCBSIDIxNyAwIFIgNzg3IDAgUl0KPj4gZW5kb2JqCjc5MiAwIG9iaiA8PAovVHlwZSAvUGFnZXMKL0NvdW50IDIKL1BhcmVudCA5OTQgMCBSCi9LaWRzIFs3OTAgMCBSIDk2NiAwIFJdCj4+IGVuZG9iago5OTQgMCBvYmogPDwKL1R5cGUgL1BhZ2VzCi9Db3VudCAxNAovS2lkcyBbNDAgMCBSIDE2MSAwIFIgNzkyIDAgUl0KPj4gZW5kb2JqCjk5NSAwIG9iaiA8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgOTk0IDAgUgo+PiBlbmRvYmoKOTk2IDAgb2JqIDw8Ci9Qcm9kdWNlciAocGRmZVRlWC0xLjIxYSkKL0NyZWF0b3IgKFRlWCkKL0NyZWF0aW9uRGF0ZSAoRDoyMDA5MDQwMTE2MzkyNS0wNycwMCcpCi9QVEVYLkZ1bGxiYW5uZXIgKFRoaXMgaXMgcGRmZVRlWCwgVmVyc2lvbiAzLjE0MTU5Mi0xLjIxYS0yLjIgKFdlYjJDIDcuNS40KSBrcGF0aHNlYSB2ZXJzaW9uIDMuNS42KQo+PiBlbmRvYmoKeHJlZgowIDk5NwowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDQ4MTQgMDAwMDAgbiAKMDAwMDAwNDcwOSAwMDAwMCBuIAowMDAwMDAwMDA5IDAwMDAwIG4gCjAwMDA5OTQ5MDEgMDAwMDAgbiAKMDAwMDk3OTY1NSAwMDAwMCBuIAowMDAwOTk0NzMxIDAwMDAwIG4gCjAwMDA5Nzg1ODkgMDAwMDAgbiAKMDAwMDk1ODIyNCAwMDAwMCBuIAowMDAwOTc4NDIwIDAwMDAwIG4gCjAwMDA5NTc4NDMgMDAwMDAgbiAKMDAwMDk1NjIyNCAwMDAwMCBuIAowMDAwOTU3Njg2IDAwMDAwIG4gCjAwMDA5NTU4NDggMDAwMDAgbiAKMDAwMDk1MzQzNiAwMDAwMCBuIAowMDAwOTU1NjkxIDAwMDAwIG4gCjAwMDA5NTMxMTAgMDAwMDAgbiAKMDAwMDk1MTU1OCAwMDAwMCBuIAowMDAwOTUyOTU0IDAwMDAwIG4gCjAwMDA5NTA5ODcgMDAwMDAgbiAKMDAwMDk0OTE2MyAwMDAwMCBuIAowMDAwOTUwODI5IDAwMDAwIG4gCjAwMDA5NDc4MjcgMDAwMDAgbiAKMDAwMDkzNzIwOCAwMDAwMCBuIAowMDAwOTQ3NjY4IDAwMDAwIG4gCjAwMDA5MzY3MTEgMDAwMDAgbiAKMDAwMDkzMzA4NiAwMDAwMCBuIAowMDAwOTM2NTU0IDAwMDAwIG4gCjAwMDA5MzI2NDEgMDAwMDAgbiAKMDAwMDkyMjczMCAwMDAwMCBuIAowMDAwOTMyNDY1IDAwMDAwIG4gCjAwMDA5MjE5ODMgMDAwMDAgbiAKMDAwMDkwNzM0OSAwMDAwMCBuIAowMDAwOTIxODA4IDAwMDAwIG4gCjAwMDA5MDY5NzYgMDAwMDAgbiAKMDAwMDg5ODY3NCAwMDAwMCBuIAowMDAwOTA2Nzk1IDAwMDAwIG4gCjAwMDA4OTY0NTYgMDAwMDAgbiAKMDAwMDg5NDk4NyAwMDAwMCBuIAowMDAwODk2Mjk4IDAwMDAwIG4gCjAwMDA5OTU1NjQgMDAwMDAgbiAKMDAwMDAxMDI2NiAwMDAwMCBuIAowMDAwMDU0MjAwIDAwMDAwIG4gCjAwMDAwMTAxNTggMDAwMDAgbiAKMDAwMDAwNTAxMyAwMDAwMCBuIAowMDAwMDE1NDA2IDAwMDAwIG4gCjAwMDAwMTU2MDcgMDAwMDAgbiAKMDAwMDAxNTY0MiAwMDAwMCBuIAowMDAwMDE1Njc3IDAwMDAwIG4gCjAwMDAwMTU4NTQgMDAwMDAgbiAKMDAwMDAxNjAzNiAwMDAwMCBuIAowMDAwMDE2MzQ0IDAwMDAwIG4gCjAwMDAwMTY2MzcgMDAwMDAgbiAKMDAwMDAxNjkzMCAwMDAwMCBuIAowMDAwMDE3MTkwIDAwMDAwIG4gCjAwMDAwMTc0NTcgMDAwMDAgbiAKMDAwMDAxNzc2NSAwMDAwMCBuIAowMDAwMDE4MDY5IDAwMDAwIG4gCjAwMDAwMTgzMzUgMDAwMDAgbiAKMDAwMDAxODY1MiAwMDAwMCBuIAowMDAwMDE4OTQ1IDAwMDAwIG4gCjAwMDAwMTg5NjYgMDAwMDAgbiAKMDAwMDAxOTg2MCAwMDAwMCBuIAowMDAwMDIwNjY3IDAwMDAwIG4gCjAwMDAwMjA5MDYgMDAwMDAgbiAKMDAwMDAyMTM3MyAwMDAwMCBuIAowMDAwMDIxNjIwIDAwMDAwIG4gCjAwMDAwMjE4NzEgMDAwMDAgbiAKMDAwMDAyMTg5MSAwMDAwMCBuIAowMDAwMDIzODMwIDAwMDAwIG4gCjAwMDAwMjM4NTAgMDAwMDAgbiAKMDAwMDAyNTcyMCAwMDAwMCBuIAowMDAwMDI1NzQwIDAwMDAwIG4gCjAwMDAwMjcyNzAgMDAwMDAgbiAKMDAwMDAyNzI4OSAwMDAwMCBuIAowMDAwMDI4Nzc3IDAwMDAwIG4gCjAwMDAwMjg3OTYgMDAwMDAgbiAKMDAwMDAzMDAyMiAwMDAwMCBuIAowMDAwMDMwMDQyIDAwMDAwIG4gCjAwMDAwMzE5ODEgMDAwMDAgbiAKMDAwMDAzMjAwMSAwMDAwMCBuIAowMDAwMDMzOTc2IDAwMDAwIG4gCjAwMDAwMzM5OTUgMDAwMDAgbiAKMDAwMDAzNTExNyAwMDAwMCBuIAowMDAwMDM1MTM3IDAwMDAwIG4gCjAwMDAwMzY3MTAgMDAwMDAgbiAKMDAwMDAzNjczMCAwMDAwMCBuIAowMDAwMDM4MjYxIDAwMDAwIG4gCjAwMDAwMzgyODEgMDAwMDAgbiAKMDAwMDAzODMwMSAwMDAwMCBuIAowMDAwMDQ2ODQyIDAwMDAwIG4gCjAwMDAwNTM5NDYgMDAwMDAgbiAKMDAwMDA1Mzk2NyAwMDAwMCBuIAowMDAwMDUzOTg4IDAwMDAwIG4gCjAwMDAwNTQwMDkgMDAwMDAgbiAKMDAwMDA1NDAzMCAwMDAwMCBuIAowMDAwMDU0MDUxIDAwMDAwIG4gCjAwMDAwNTQwNzIgMDAwMDAgbiAKMDAwMDA1NDA5MyAwMDAwMCBuIAowMDAwMDU0MTEzIDAwMDAwIG4gCjAwMDAwNTQxMzQgMDAwMDAgbiAKMDAwMDA1NDE1NiAwMDAwMCBuIAowMDAwMDU0MTc4IDAwMDAwIG4gCjAwMDAwNTgwMzcgMDAwMDAgbiAKMDAwMDA1NzkyNiAwMDAwMCBuIAowMDAwMDU0MzQzIDAwMDAwIG4gCjAwMDA4OTQxOTMgMDAwMDAgbiAKMDAwMDg4ODg2NCAwMDAwMCBuIAowMDAwODk0MDMyIDAwMDAwIG4gCjAwMDAwNjQ2NDkgMDAwMDAgbiAKMDAwMDA2NDUzOCAwMDAwMCBuIAowMDAwMDU4MTY3IDAwMDAwIG4gCjAwMDA4ODgzMzAgMDAwMDAgbiAKMDAwMDg4NTE1MSAwMDAwMCBuIAowMDAwODg4MTY5IDAwMDAwIG4gCjAwMDAwNzE0MTIgMDAwMDAgbiAKMDAwMDA3MTMwMSAwMDAwMCBuIAowMDAwMDY0NzkyIDAwMDAwIG4gCjAwMDAwNzY1NzAgMDAwMDAgbiAKMDAwMDA5MjQzNyAwMDAwMCBuIAowMDAwMTE3NjY2IDAwMDAwIG4gCjAwMDAxMTIyMjkgMDAwMDAgbiAKMDAwMDA3NjQ1OSAwMDAwMCBuIAowMDAwMDcxNTE3IDAwMDAwIG4gCjAwMDAwODA3ODcgMDAwMDAgbiAKMDAwMDA4MDk5OCAwMDAwMCBuIAowMDAwMDgxMDM1IDAwMDAwIG4gCjAwMDAwODEwNzIgMDAwMDAgbiAKMDAwMDA4MTI0NSAwMDAwMCBuIAowMDAwMDgxMjY3IDAwMDAwIG4gCjAwMDAwODIxNjMgMDAwMDAgbiAKMDAwMDA4Mjk3MiAwMDAwMCBuIAowMDAwMDgzMjAzIDAwMDAwIG4gCjAwMDAwODMzMDMgMDAwMDAgbiAKMDAwMDA4MzcyOSAwMDAwMCBuIAowMDAwMDgzNzUwIDAwMDAwIG4gCjAwMDAwODM3NzEgMDAwMDAgbiAKMDAwMDA5MjM5NCAwMDAwMCBuIAowMDAwMDkyNDE1IDAwMDAwIG4gCjAwMDAwOTg4MTAgMDAwMDAgbiAKMDAwMDA5OTAyMSAwMDAwMCBuIAowMDAwMDk5MDU4IDAwMDAwIG4gCjAwMDAwOTkwOTUgMDAwMDAgbiAKMDAwMDA5OTI2OCAwMDAwMCBuIAowMDAwMDk5MjkwIDAwMDAwIG4gCjAwMDAxMDAwOTkgMDAwMDAgbiAKMDAwMDEwMDk5NSAwMDAwMCBuIAowMDAwMTAxMjI2IDAwMDAwIG4gCjAwMDAxMDEzNTggMDAwMDAgbiAKMDAwMDEwMTgyNyAwMDAwMCBuIAowMDAwMTAxODQ4IDAwMDAwIG4gCjAwMDAxMDE4NjkgMDAwMDAgbiAKMDAwMDExMjE4NSAwMDAwMCBuIAowMDAwMTEyMjA2IDAwMDAwIG4gCjAwMDAxMzk0MzQgMDAwMDAgbiAKMDAwMDE1ODY2OSAwMDAwMCBuIAowMDAwMTE3NTU0IDAwMDAwIG4gCjAwMDAxMTI0MTIgMDAwMDAgbiAKMDAwMDg4NDY0NyAwMDAwMCBuIAowMDAwODgxODc5IDAwMDAwIG4gCjAwMDA4ODQ0ODggMDAwMDAgbiAKMDAwMDk5NTY3NyAwMDAwMCBuIAowMDAwMTI2MDYwIDAwMDAwIG4gCjAwMDAxMjYyNzEgMDAwMDAgbiAKMDAwMDEyNjMwOCAwMDAwMCBuIAowMDAwMTI2MzQ1IDAwMDAwIG4gCjAwMDAxMjY1MTggMDAwMDAgbiAKMDAwMDEyNjU0MCAwMDAwMCBuIAowMDAwMTI3NDM2IDAwMDAwIG4gCjAwMDAxMjgyNDUgMDAwMDAgbiAKMDAwMDEyODQ3NiAwMDAwMCBuIAowMDAwMTI4NjA0IDAwMDAwIG4gCjAwMDAxMjkwNDQgMDAwMDAgbiAKMDAwMDEyOTA2NSAwMDAwMCBuIAowMDAwMTI5MDg2IDAwMDAwIG4gCjAwMDAxMzkzOTAgMDAwMDAgbiAKMDAwMDEzOTQxMSAwMDAwMCBuIAowMDAwMTQ2MzQ3IDAwMDAwIG4gCjAwMDAxNDY1NTggMDAwMDAgbiAKMDAwMDE0NjU5NSAwMDAwMCBuIAowMDAwMTQ2NjMyIDAwMDAwIG4gCjAwMDAxNDY4MDUgMDAwMDAgbiAKMDAwMDE0NjgyNyAwMDAwMCBuIAowMDAwMTQ3NzIzIDAwMDAwIG4gCjAwMDAxNDg1MzIgMDAwMDAgbiAKMDAwMDE0ODc2MyAwMDAwMCBuIAowMDAwMTQ4ODYzIDAwMDAwIG4gCjAwMDAxNDkyNzcgMDAwMDAgbiAKMDAwMDE0OTI5OCAwMDAwMCBuIAowMDAwMTQ5MzE5IDAwMDAwIG4gCjAwMDAxNTg2MjYgMDAwMDAgbiAKMDAwMDE1ODY0NyAwMDAwMCBuIAowMDAwMTY1MzQ1IDAwMDAwIG4gCjAwMDAxNjUyMzMgMDAwMDAgbiAKMDAwMDE1ODg1NCAwMDAwMCBuIAowMDAwMTcxNTg4IDAwMDAwIG4gCjAwMDAxNzE0NzYgMDAwMDAgbiAKMDAwMDE2NTUyNSAwMDAwMCBuIAowMDAwMjA0MTkyIDAwMDAwIG4gCjAwMDAxNzcyODMgMDAwMDAgbiAKMDAwMDgyNjQwNSAwMDAwMCBuIAowMDAwMjAwMzE2IDAwMDAwIG4gCjAwMDAxNzcxNzEgMDAwMDAgbiAKMDAwMDE3MTY5MyAwMDAwMCBuIAowMDAwMTgyOTE2IDAwMDAwIG4gCjAwMDAxODMxNDAgMDAwMDAgbiAKMDAwMDE4MzE3NyAwMDAwMCBuIAowMDAwMTgzMzQ1IDAwMDAwIG4gCjAwMDAxODMzNjcgMDAwMDAgbiAKMDAwMDE4NDI2MyAwMDAwMCBuIAowMDAwMTg0NDg3IDAwMDAwIG4gCjAwMDAxODQ2ODMgMDAwMDAgbiAKMDAwMDE4NDk2NyAwMDAwMCBuIAowMDAwMTg0OTg4IDAwMDAwIG4gCjAwMDAyMDAyNzIgMDAwMDAgbiAKMDAwMDIwMDI5MyAwMDAwMCBuIAowMDAwODE2ODgwIDAwMDAwIG4gCjAwMDAyMDQwODAgMDAwMDAgbiAKMDAwMDIwMDQzNyAwMDAwMCBuIAowMDAwNTkzNDYwIDAwMDAwIG4gCjAwMDA1OTM2NTYgMDAwMDAgbiAKMDAwMDU5MzY5MyAwMDAwMCBuIAowMDAwNTkzODYxIDAwMDAwIG4gCjAwMDA1OTQxNDAgMDAwMDAgbiAKMDAwMDU5NDQwMSAwMDAwMCBuIAowMDAwNTk0NzM4IDAwMDAwIG4gCjAwMDA1OTUwMDYgMDAwMDAgbiAKMDAwMDU5NTMyMyAwMDAwMCBuIAowMDAwNTk1NTk1IDAwMDAwIG4gCjAwMDA1OTU4NjUgMDAwMDAgbiAKMDAwMDU5NjI2MCAwMDAwMCBuIAowMDAwNTk2NTIyIDAwMDAwIG4gCjAwMDA1OTY4MTEgMDAwMDAgbiAKMDAwMDU5NzEwNyAwMDAwMCBuIAowMDAwNTk3Mzg5IDAwMDAwIG4gCjAwMDA1OTc3MDYgMDAwMDAgbiAKMDAwMDU5Nzk4MSAwMDAwMCBuIAowMDAwNTk4MjQyIDAwMDAwIG4gCjAwMDA1OTg2NTEgMDAwMDAgbiAKMDAwMDU5ODkxNSAwMDAwMCBuIAowMDAwNTk5MTgzIDAwMDAwIG4gCjAwMDA1OTk0NzUgMDAwMDAgbiAKMDAwMDU5OTc3NyAwMDAwMCBuIAowMDAwNjAwMDUwIDAwMDAwIG4gCjAwMDA2MDA0NjYgMDAwMDAgbiAKMDAwMDYwMDc0OCAwMDAwMCBuIAowMDAwNjAxMDI3IDAwMDAwIG4gCjAwMDA2MDEzOTUgMDAwMDAgbiAKMDAwMDYwMTY4NiAwMDAwMCBuIAowMDAwNjAyMDYwIDAwMDAwIG4gCjAwMDA2MDIzNDIgMDAwMDAgbiAKMDAwMDYwMjYyNyAwMDAwMCBuIAowMDAwNjAyOTU4IDAwMDAwIG4gCjAwMDA2MDMyNDEgMDAwMDAgbiAKMDAwMDYwMzUzMSAwMDAwMCBuIAowMDAwNjAzNzk0IDAwMDAwIG4gCjAwMDA2MDQxMTUgMDAwMDAgbiAKMDAwMDYwNDQxNyAwMDAwMCBuIAowMDAwNjA1MTAyIDAwMDAwIG4gCjAwMDA2MDU0NjQgMDAwMDAgbiAKMDAwMDYwNTg1NSAwMDAwMCBuIAowMDAwNjA2MTM3IDAwMDAwIG4gCjAwMDA2MDY0MjYgMDAwMDAgbiAKMDAwMDYwNjcwOCAwMDAwMCBuIAowMDAwNjA3MDAzIDAwMDAwIG4gCjAwMDA2MDczMDMgMDAwMDAgbiAKMDAwMDYwNzU3NyAwMDAwMCBuIAowMDAwNjA3ODg1IDAwMDAwIG4gCjAwMDA2MDgxNzcgMDAwMDAgbiAKMDAwMDYwODQ1MiAwMDAwMCBuIAowMDAwNjA4NzM0IDAwMDAwIG4gCjAwMDA2MDkwNjUgMDAwMDAgbiAKMDAwMDYwOTM0MCAwMDAwMCBuIAowMDAwNjA5NjU2IDAwMDAwIG4gCjAwMDA2MDk5NDYgMDAwMDAgbiAKMDAwMDYxMDIxMCAwMDAwMCBuIAowMDAwNjEwNTA3IDAwMDAwIG4gCjAwMDA2MTA4NTYgMDAwMDAgbiAKMDAwMDYxMTE1MCAwMDAwMCBuIAowMDAwNjExNTQ2IDAwMDAwIG4gCjAwMDA2MTE5MDkgMDAwMDAgbiAKMDAwMDYxMjU4OCAwMDAwMCBuIAowMDAwNjEyODUxIDAwMDAwIG4gCjAwMDA2MTMxMjcgMDAwMDAgbiAKMDAwMDYxMzQyMyAwMDAwMCBuIAowMDAwNjEzNzUwIDAwMDAwIG4gCjAwMDA2MTQwNDIgMDAwMDAgbiAKMDAwMDYxNDMwMiAwMDAwMCBuIAowMDAwNjE0NjMxIDAwMDAwIG4gCjAwMDA2MTUwMjkgMDAwMDAgbiAKMDAwMDYxNTM3NyAwMDAwMCBuIAowMDAwNjE1NzI0IDAwMDAwIG4gCjAwMDA2MTYwMjYgMDAwMDAgbiAKMDAwMDYxNjMyOCAwMDAwMCBuIAowMDAwNjE2NjQ5IDAwMDAwIG4gCjAwMDA2MTY5MTUgMDAwMDAgbiAKMDAwMDYxNzI0OCAwMDAwMCBuIAowMDAwNjE3NTkwIDAwMDAwIG4gCjAwMDA2MTc5MjEgMDAwMDAgbiAKMDAwMDYxODM5MCAwMDAwMCBuIAowMDAwNjE4ODE2IDAwMDAwIG4gCjAwMDA2MTg5NzEgMDAwMDAgbiAKMDAwMDYxOTEyNiAwMDAwMCBuIAowMDAwNjE5MjgxIDAwMDAwIG4gCjAwMDA2MTk0MzQgMDAwMDAgbiAKMDAwMDYxOTU4OSAwMDAwMCBuIAowMDAwNjE5NzQ0IDAwMDAwIG4gCjAwMDA2MTk4OTkgMDAwMDAgbiAKMDAwMDYyMDA1NCAwMDAwMCBuIAowMDAwNjIwMjA5IDAwMDAwIG4gCjAwMDA2MjAzNjQgMDAwMDAgbiAKMDAwMDYyMDUxOSAwMDAwMCBuIAowMDAwNjIwNjc0IDAwMDAwIG4gCjAwMDA2MjA4MjkgMDAwMDAgbiAKMDAwMDYyMDk4MiAwMDAwMCBuIAowMDAwNjIxMTM3IDAwMDAwIG4gCjAwMDA2MjEyOTAgMDAwMDAgbiAKMDAwMDYyMTQ0NSAwMDAwMCBuIAowMDAwNjIxNTk4IDAwMDAwIG4gCjAwMDA2MjE3NTEgMDAwMDAgbiAKMDAwMDYyMTkwOCAwMDAwMCBuIAowMDAwNjIyMDYzIDAwMDAwIG4gCjAwMDA2MjIyMTggMDAwMDAgbiAKMDAwMDYyMjM3MyAwMDAwMCBuIAowMDAwNjIyNTI4IDAwMDAwIG4gCjAwMDA2MjI2ODMgMDAwMDAgbiAKMDAwMDYyMjgzOCAwMDAwMCBuIAowMDAwNjIyOTkzIDAwMDAwIG4gCjAwMDA2MjMxNDggMDAwMDAgbiAKMDAwMDYyMzMwMyAwMDAwMCBuIAowMDAwNjIzNDYwIDAwMDAwIG4gCjAwMDA2MjM2MTUgMDAwMDAgbiAKMDAwMDYyMzc3MCAwMDAwMCBuIAowMDAwNjIzOTI3IDAwMDAwIG4gCjAwMDA2MjQwODIgMDAwMDAgbiAKMDAwMDYyNDIzNyAwMDAwMCBuIAowMDAwNjI0MzkyIDAwMDAwIG4gCjAwMDA2MjQ1NDcgMDAwMDAgbiAKMDAwMDYyNDcwMCAwMDAwMCBuIAowMDAwNjI0ODU1IDAwMDAwIG4gCjAwMDA2MjUwMTAgMDAwMDAgbiAKMDAwMDYyNTE2NSAwMDAwMCBuIAowMDAwNjI1MzIwIDAwMDAwIG4gCjAwMDA2MjU0NzcgMDAwMDAgbiAKMDAwMDYyNTYzMiAwMDAwMCBuIAowMDAwNjI1Nzg3IDAwMDAwIG4gCjAwMDA2MjU5NDIgMDAwMDAgbiAKMDAwMDYyNjA5NyAwMDAwMCBuIAowMDAwNjI2MjUyIDAwMDAwIG4gCjAwMDA2MjY0MDcgMDAwMDAgbiAKMDAwMDYyNjU2MiAwMDAwMCBuIAowMDAwNjI2NzE3IDAwMDAwIG4gCjAwMDA2MjY4NzIgMDAwMDAgbiAKMDAwMDYyNzAyNyAwMDAwMCBuIAowMDAwNjI3MTgyIDAwMDAwIG4gCjAwMDA2MjczMzcgMDAwMDAgbiAKMDAwMDYyNzQ5MiAwMDAwMCBuIAowMDAwNjI3NjQ3IDAwMDAwIG4gCjAwMDA2Mjc4MDIgMDAwMDAgbiAKMDAwMDYyNzk1OSAwMDAwMCBuIAowMDAwNjI4MTE0IDAwMDAwIG4gCjAwMDA2MjgyNjkgMDAwMDAgbiAKMDAwMDYyODQyNCAwMDAwMCBuIAowMDAwNjI4NTc5IDAwMDAwIG4gCjAwMDA2Mjg3MzQgMDAwMDAgbiAKMDAwMDYyODg4OSAwMDAwMCBuIAowMDAwNjI5MDQ0IDAwMDAwIG4gCjAwMDA2MjkxOTcgMDAwMDAgbiAKMDAwMDYyOTM1MCAwMDAwMCBuIAowMDAwNjI5NTA1IDAwMDAwIG4gCjAwMDA2Mjk2NjAgMDAwMDAgbiAKMDAwMDYyOTgxNSAwMDAwMCBuIAowMDAwNjI5OTcwIDAwMDAwIG4gCjAwMDA2MzAxMjcgMDAwMDAgbiAKMDAwMDYzMDI4MiAwMDAwMCBuIAowMDAwNjMwNDM3IDAwMDAwIG4gCjAwMDA2MzA1OTIgMDAwMDAgbiAKMDAwMDYzMDc0NyAwMDAwMCBuIAowMDAwNjMwOTAyIDAwMDAwIG4gCjAwMDA2MzEwNTcgMDAwMDAgbiAKMDAwMDYzMTIxMiAwMDAwMCBuIAowMDAwNjMxMzY3IDAwMDAwIG4gCjAwMDA2MzEzOTEgMDAwMDAgbiAKMDAwMDYzMjI4NyAwMDAwMCBuIAowMDAwNjMyNTA5IDAwMDAwIG4gCjAwMDA2MzI1OTcgMDAwMDAgbiAKMDAwMDYzMjg4MSAwMDAwMCBuIAowMDAwNjMyOTAxIDAwMDAwIG4gCjAwMDA2MzM4MzYgMDAwMDAgbiAKMDAwMDYzMzg1NiAwMDAwMCBuIAowMDAwNjM1MDA4IDAwMDAwIG4gCjAwMDA2MzUwMjkgMDAwMDAgbiAKMDAwMDYzNjI0OCAwMDAwMCBuIAowMDAwNjM2MjY4IDAwMDAwIG4gCjAwMDA2MzcyMDAgMDAwMDAgbiAKMDAwMDYzNzIyMSAwMDAwMCBuIAowMDAwNjM4MjA1IDAwMDAwIG4gCjAwMDA2MzgyMjUgMDAwMDAgbiAKMDAwMDYzOTIyNyAwMDAwMCBuIAowMDAwNjM5MjQ3IDAwMDAwIG4gCjAwMDA2NDAzNzEgMDAwMDAgbiAKMDAwMDY0MDM5MiAwMDAwMCBuIAowMDAwNjQxNTg3IDAwMDAwIG4gCjAwMDA2NDE2MDcgMDAwMDAgbiAKMDAwMDY0MjY1MyAwMDAwMCBuIAowMDAwNjQyNjczIDAwMDAwIG4gCjAwMDA2NDM1MzQgMDAwMDAgbiAKMDAwMDY0MzU1NCAwMDAwMCBuIAowMDAwNjQ0NzE5IDAwMDAwIG4gCjAwMDA2NDQ3MzkgMDAwMDAgbiAKMDAwMDY0NTc3MiAwMDAwMCBuIAowMDAwNjQ1NzkzIDAwMDAwIG4gCjAwMDA2NDcwMTEgMDAwMDAgbiAKMDAwMDY0NzAzMSAwMDAwMCBuIAowMDAwNjQ4MTczIDAwMDAwIG4gCjAwMDA2NDgxOTMgMDAwMDAgbiAKMDAwMDY0OTMyMyAwMDAwMCBuIAowMDAwNjQ5MzQ0IDAwMDAwIG4gCjAwMDA2NTA1OTAgMDAwMDAgbiAKMDAwMDY1MDYxMCAwMDAwMCBuIAowMDAwNjUxNzQ3IDAwMDAwIG4gCjAwMDA2NTE3NjcgMDAwMDAgbiAKMDAwMDY1Mjg5NCAwMDAwMCBuIAowMDAwNjUyOTE0IDAwMDAwIG4gCjAwMDA2NTQwODkgMDAwMDAgbiAKMDAwMDY1NDEwOSAwMDAwMCBuIAowMDAwNjU1MzI3IDAwMDAwIG4gCjAwMDA2NTUzNDcgMDAwMDAgbiAKMDAwMDY1NjUwNyAwMDAwMCBuIAowMDAwNjU2NTI4IDAwMDAwIG4gCjAwMDA2NTc4MjUgMDAwMDAgbiAKMDAwMDY1Nzg0NSAwMDAwMCBuIAowMDAwNjU4OTk2IDAwMDAwIG4gCjAwMDA2NTkwMTYgMDAwMDAgbiAKMDAwMDY2MDEyNyAwMDAwMCBuIAowMDAwNjYwMTQ4IDAwMDAwIG4gCjAwMDA2NjEzODQgMDAwMDAgbiAKMDAwMDY2MTQwNCAwMDAwMCBuIAowMDAwNjYyNDM4IDAwMDAwIG4gCjAwMDA2NjI0NTkgMDAwMDAgbiAKMDAwMDY2MzcyNyAwMDAwMCBuIAowMDAwNjYzNzQ3IDAwMDAwIG4gCjAwMDA2NjQ5MDggMDAwMDAgbiAKMDAwMDY2NDkyOCAwMDAwMCBuIAowMDAwNjY2MDY4IDAwMDAwIG4gCjAwMDA2NjYwODkgMDAwMDAgbiAKMDAwMDY2NzI0NCAwMDAwMCBuIAowMDAwNjY3MjY0IDAwMDAwIG4gCjAwMDA2Njg0MTIgMDAwMDAgbiAKMDAwMDY2ODQzMiAwMDAwMCBuIAowMDAwNjY5NTc4IDAwMDAwIG4gCjAwMDA2Njk1OTggMDAwMDAgbiAKMDAwMDY3MDc0MCAwMDAwMCBuIAowMDAwNjcwNzYxIDAwMDAwIG4gCjAwMDA2NzE4NzkgMDAwMDAgbiAKMDAwMDY3MTg5OSAwMDAwMCBuIAowMDAwNjczMDc2IDAwMDAwIG4gCjAwMDA2NzMwOTcgMDAwMDAgbiAKMDAwMDY3NDU4OSAwMDAwMCBuIAowMDAwNjc0NjEwIDAwMDAwIG4gCjAwMDA2NzU1NDUgMDAwMDAgbiAKMDAwMDY3NTU2NiAwMDAwMCBuIAowMDAwNjc2NzkxIDAwMDAwIG4gCjAwMDA2NzY4MTEgMDAwMDAgbiAKMDAwMDY3Nzg0NCAwMDAwMCBuIAowMDAwNjc3ODY0IDAwMDAwIG4gCjAwMDA2Nzg4NDAgMDAwMDAgbiAKMDAwMDY3ODg2MCAwMDAwMCBuIAowMDAwNjgwMDM4IDAwMDAwIG4gCjAwMDA2ODAwNTggMDAwMDAgbiAKMDAwMDY4MTIzMCAwMDAwMCBuIAowMDAwNjgxMjUwIDAwMDAwIG4gCjAwMDA2ODI0NjAgMDAwMDAgbiAKMDAwMDY4MjQ4MCAwMDAwMCBuIAowMDAwNjgzNjIyIDAwMDAwIG4gCjAwMDA2ODM2NDMgMDAwMDAgbiAKMDAwMDY4NDgxNyAwMDAwMCBuIAowMDAwNjg0ODM3IDAwMDAwIG4gCjAwMDA2ODU5MTkgMDAwMDAgbiAKMDAwMDY4NTkzOSAwMDAwMCBuIAowMDAwNjg3MDExIDAwMDAwIG4gCjAwMDA2ODcwMzEgMDAwMDAgbiAKMDAwMDY4ODE2NyAwMDAwMCBuIAowMDAwNjg4MTg4IDAwMDAwIG4gCjAwMDA2ODkzOTMgMDAwMDAgbiAKMDAwMDY4OTQxMyAwMDAwMCBuIAowMDAwNjkwNTY1IDAwMDAwIG4gCjAwMDA2OTA1ODYgMDAwMDAgbiAKMDAwMDY5MTc4MiAwMDAwMCBuIAowMDAwNjkxODAyIDAwMDAwIG4gCjAwMDA2OTI5NzIgMDAwMDAgbiAKMDAwMDY5Mjk5MiAwMDAwMCBuIAowMDAwNjkzOTEyIDAwMDAwIG4gCjAwMDA2OTM5MzIgMDAwMDAgbiAKMDAwMDY5NTEwNSAwMDAwMCBuIAowMDAwNjk1MTI2IDAwMDAwIG4gCjAwMDA2OTYzNTcgMDAwMDAgbiAKMDAwMDY5NjM3NyAwMDAwMCBuIAowMDAwNjk3NDgzIDAwMDAwIG4gCjAwMDA2OTc1MDQgMDAwMDAgbiAKMDAwMDY5ODczOSAwMDAwMCBuIAowMDAwNjk4NzYwIDAwMDAwIG4gCjAwMDA2OTk5ODAgMDAwMDAgbiAKMDAwMDcwMDAwMSAwMDAwMCBuIAowMDAwNzAxNDU2IDAwMDAwIG4gCjAwMDA3MDE0NzYgMDAwMDAgbiAKMDAwMDcwMjY0NiAwMDAwMCBuIAowMDAwNzAyNjY2IDAwMDAwIG4gCjAwMDA3MDM4MTcgMDAwMDAgbiAKMDAwMDcwMzgzNyAwMDAwMCBuIAowMDAwNzA1MDA4IDAwMDAwIG4gCjAwMDA3MDUwMjkgMDAwMDAgbiAKMDAwMDcwNjIyNCAwMDAwMCBuIAowMDAwNzA2MjQ0IDAwMDAwIG4gCjAwMDA3MDcyNzUgMDAwMDAgbiAKMDAwMDcwNzI5NSAwMDAwMCBuIAowMDAwNzA4MzE4IDAwMDAwIG4gCjAwMDA3MDgzMzkgMDAwMDAgbiAKMDAwMDcwOTM1NSAwMDAwMCBuIAowMDAwNzA5Mzc2IDAwMDAwIG4gCjAwMDA3MTA1OTEgMDAwMDAgbiAKMDAwMDcxMDYxMiAwMDAwMCBuIAowMDAwNzExNzg3IDAwMDAwIG4gCjAwMDA3MTE4MDggMDAwMDAgbiAKMDAwMDcxMzA2MiAwMDAwMCBuIAowMDAwNzEzMDgyIDAwMDAwIG4gCjAwMDA3MTQyNzMgMDAwMDAgbiAKMDAwMDcxNDI5MyAwMDAwMCBuIAowMDAwNzE1NTEyIDAwMDAwIG4gCjAwMDA3MTU1MzMgMDAwMDAgbiAKMDAwMDcxNjczOCAwMDAwMCBuIAowMDAwNzE2NzU4IDAwMDAwIG4gCjAwMDA3MTc3ODEgMDAwMDAgbiAKMDAwMDcxNzgwMiAwMDAwMCBuIAowMDAwNzE4OTkxIDAwMDAwIG4gCjAwMDA3MTkwMTIgMDAwMDAgbiAKMDAwMDcyMDI3MSAwMDAwMCBuIAowMDAwNzIwMjkyIDAwMDAwIG4gCjAwMDA3MjE0NjggMDAwMDAgbiAKMDAwMDcyMTQ4OSAwMDAwMCBuIAowMDAwNzIyNjU4IDAwMDAwIG4gCjAwMDA3MjI2NzkgMDAwMDAgbiAKMDAwMDcyMzkzMiAwMDAwMCBuIAowMDAwNzI0OTIzIDAwMDAwIG4gCjAwMDA3MjU5MTQgMDAwMDAgbiAKMDAwMDcyNjkzMCAwMDAwMCBuIAowMDAwNzI3OTIxIDAwMDAwIG4gCjAwMDA3Mjg4NjIgMDAwMDAgbiAKMDAwMDcyOTg3OCAwMDAwMCBuIAowMDAwNzMwODE5IDAwMDAwIG4gCjAwMDA3MzE4MTAgMDAwMDAgbiAKMDAwMDczMjgyNiAwMDAwMCBuIAowMDAwNzMzNzY3IDAwMDAwIG4gCjAwMDA3MzQ3MDggMDAwMDAgbiAKMDAwMDczNTcyNCAwMDAwMCBuIAowMDAwNzM2NjY1IDAwMDAwIG4gCjAwMDA3Mzc2ODEgMDAwMDAgbiAKMDAwMDczODYyMiAwMDAwMCBuIAowMDAwNzM5NTYzIDAwMDAwIG4gCjAwMDA3NDA1NTQgMDAwMDAgbiAKMDAwMDc0MTU0NSAwMDAwMCBuIAowMDAwNzQyNTYxIDAwMDAwIG4gCjAwMDA3NDM1NzcgMDAwMDAgbiAKMDAwMDc0NDU5MyAwMDAwMCBuIAowMDAwNzQ1NjA5IDAwMDAwIG4gCjAwMDA3NDY2MjUgMDAwMDAgbiAKMDAwMDc0NzYxNiAwMDAwMCBuIAowMDAwNzQ4NjA3IDAwMDAwIG4gCjAwMDA3NDk1OTggMDAwMDAgbiAKMDAwMDc1MDUzOSAwMDAwMCBuIAowMDAwNzUxNTMwIDAwMDAwIG4gCjAwMDA3NTI1MjEgMDAwMDAgbiAKMDAwMDc1MzUzNyAwMDAwMCBuIAowMDAwNzU0NDc4IDAwMDAwIG4gCjAwMDA3NTU0OTQgMDAwMDAgbiAKMDAwMDc1NjQ4NSAwMDAwMCBuIAowMDAwNzU3NTAxIDAwMDAwIG4gCjAwMDA3NTg0NDIgMDAwMDAgbiAKMDAwMDc1OTM4MyAwMDAwMCBuIAowMDAwNzYwMzk5IDAwMDAwIG4gCjAwMDA3NjEzOTAgMDAwMDAgbiAKMDAwMDc2MjM4MSAwMDAwMCBuIAowMDAwNzYzMzk3IDAwMDAwIG4gCjAwMDA3NjQzMzggMDAwMDAgbiAKMDAwMDc2NTI3OSAwMDAwMCBuIAowMDAwNzY2MjcwIDAwMDAwIG4gCjAwMDA3NjcyODYgMDAwMDAgbiAKMDAwMDc2ODMwMiAwMDAwMCBuIAowMDAwNzY5MzE4IDAwMDAwIG4gCjAwMDA3NzAyNTkgMDAwMDAgbiAKMDAwMDc3MTI1MCAwMDAwMCBuIAowMDAwNzcyMjQxIDAwMDAwIG4gCjAwMDA3NzMxODIgMDAwMDAgbiAKMDAwMDc3NDEyMyAwMDAwMCBuIAowMDAwNzc1MDY0IDAwMDAwIG4gCjAwMDA3NzYwNTUgMDAwMDAgbiAKMDAwMDc3Njk5NiAwMDAwMCBuIAowMDAwNzc4MDEyIDAwMDAwIG4gCjAwMDA3Nzg5NTMgMDAwMDAgbiAKMDAwMDc3OTk2OSAwMDAwMCBuIAowMDAwNzgwOTYwIDAwMDAwIG4gCjAwMDA3ODE5MDEgMDAwMDAgbiAKMDAwMDc4MjkxNyAwMDAwMCBuIAowMDAwNzgzODU4IDAwMDAwIG4gCjAwMDA3ODQ4NDkgMDAwMDAgbiAKMDAwMDc4NTg0MCAwMDAwMCBuIAowMDAwNzg2ODMxIDAwMDAwIG4gCjAwMDA3ODc4NDcgMDAwMDAgbiAKMDAwMDc4ODc4OCAwMDAwMCBuIAowMDAwNzg5Nzc5IDAwMDAwIG4gCjAwMDA3OTA3MjAgMDAwMDAgbiAKMDAwMDc5MTY2MSAwMDAwMCBuIAowMDAwNzkyNjc3IDAwMDAwIG4gCjAwMDA3OTM2NjggMDAwMDAgbiAKMDAwMDc5NDY1OSAwMDAwMCBuIAowMDAwNzk1NjAwIDAwMDAwIG4gCjAwMDA3OTY2MTYgMDAwMDAgbiAKMDAwMDc5NzYzMiAwMDAwMCBuIAowMDAwNzk4NjQ4IDAwMDAwIG4gCjAwMDA3OTk2NjQgMDAwMDAgbiAKMDAwMDgwMDYwNSAwMDAwMCBuIAowMDAwODAxNTQ2IDAwMDAwIG4gCjAwMDA4MDI1MzcgMDAwMDAgbiAKMDAwMDgwMzUyOCAwMDAwMCBuIAowMDAwODAzNTQ5IDAwMDAwIG4gCjAwMDA4MTM0NzQgMDAwMDAgbiAKMDAwMDgxMzQ5NSAwMDAwMCBuIAowMDAwODEzNTE2IDAwMDAwIG4gCjAwMDA4MTM1MzcgMDAwMDAgbiAKMDAwMDgxMzU1OSAwMDAwMCBuIAowMDAwODEzNTgwIDAwMDAwIG4gCjAwMDA4MTM2MDEgMDAwMDAgbiAKMDAwMDgxMzYyMiAwMDAwMCBuIAowMDAwODEzNjQzIDAwMDAwIG4gCjAwMDA4MTM2NjUgMDAwMDAgbiAKMDAwMDgxMzY4NiAwMDAwMCBuIAowMDAwODEzNzA3IDAwMDAwIG4gCjAwMDA4MTM3MjggMDAwMDAgbiAKMDAwMDgxMzc0OSAwMDAwMCBuIAowMDAwODEzNzcxIDAwMDAwIG4gCjAwMDA4MTM3OTIgMDAwMDAgbiAKMDAwMDgxMzgxMyAwMDAwMCBuIAowMDAwODEzODM1IDAwMDAwIG4gCjAwMDA4MTM4NTYgMDAwMDAgbiAKMDAwMDgxMzg3NyAwMDAwMCBuIAowMDAwODEzODk4IDAwMDAwIG4gCjAwMDA4MTM5MjAgMDAwMDAgbiAKMDAwMDgxMzk0MSAwMDAwMCBuIAowMDAwODEzOTYzIDAwMDAwIG4gCjAwMDA4MTM5ODQgMDAwMDAgbiAKMDAwMDgxNDAwNSAwMDAwMCBuIAowMDAwODE0MDI3IDAwMDAwIG4gCjAwMDA4MTQwNDggMDAwMDAgbiAKMDAwMDgxNDA3MCAwMDAwMCBuIAowMDAwODE0MDkxIDAwMDAwIG4gCjAwMDA4MTQxMTIgMDAwMDAgbiAKMDAwMDgxNDEzMyAwMDAwMCBuIAowMDAwODE0MTU0IDAwMDAwIG4gCjAwMDA4MTQxNzUgMDAwMDAgbiAKMDAwMDgxNDE5NiAwMDAwMCBuIAowMDAwODE0MjE3IDAwMDAwIG4gCjAwMDA4MTQyMzggMDAwMDAgbiAKMDAwMDgxNDI2MCAwMDAwMCBuIAowMDAwODE0MjgxIDAwMDAwIG4gCjAwMDA4MTQzMDMgMDAwMDAgbiAKMDAwMDgxNDMyNCAwMDAwMCBuIAowMDAwODE0MzQ1IDAwMDAwIG4gCjAwMDA4MTQzNjYgMDAwMDAgbiAKMDAwMDgxNDM4NyAwMDAwMCBuIAowMDAwODE0NDA5IDAwMDAwIG4gCjAwMDA4MTQ0MzAgMDAwMDAgbiAKMDAwMDgxNDQ1MSAwMDAwMCBuIAowMDAwODE0NDcyIDAwMDAwIG4gCjAwMDA4MTQ0OTMgMDAwMDAgbiAKMDAwMDgxNDUxNCAwMDAwMCBuIAowMDAwODE0NTM2IDAwMDAwIG4gCjAwMDA4MTQ1NTcgMDAwMDAgbiAKMDAwMDgxNDU3OSAwMDAwMCBuIAowMDAwODE0NjAwIDAwMDAwIG4gCjAwMDA4MTQ2MjEgMDAwMDAgbiAKMDAwMDgxNDY0MiAwMDAwMCBuIAowMDAwODE0NjY0IDAwMDAwIG4gCjAwMDA4MTQ2ODUgMDAwMDAgbiAKMDAwMDgxNDcwNyAwMDAwMCBuIAowMDAwODE0NzI5IDAwMDAwIG4gCjAwMDA4MTQ3NTEgMDAwMDAgbiAKMDAwMDgxNDc3MiAwMDAwMCBuIAowMDAwODE0NzkzIDAwMDAwIG4gCjAwMDA4MTQ4MTQgMDAwMDAgbiAKMDAwMDgxNDgzNiAwMDAwMCBuIAowMDAwODE0ODU3IDAwMDAwIG4gCjAwMDA4MTQ4NzggMDAwMDAgbiAKMDAwMDgxNDg5OSAwMDAwMCBuIAowMDAwODE0OTIxIDAwMDAwIG4gCjAwMDA4MTQ5NDIgMDAwMDAgbiAKMDAwMDgxNDk2NCAwMDAwMCBuIAowMDAwODE0OTg1IDAwMDAwIG4gCjAwMDA4MTUwMDcgMDAwMDAgbiAKMDAwMDgxNTAyOSAwMDAwMCBuIAowMDAwODE1MDUwIDAwMDAwIG4gCjAwMDA4MTUwNzEgMDAwMDAgbiAKMDAwMDgxNTA5MyAwMDAwMCBuIAowMDAwODE1MTE0IDAwMDAwIG4gCjAwMDA4MTUxMzUgMDAwMDAgbiAKMDAwMDgxNTE1NyAwMDAwMCBuIAowMDAwODE1MTc4IDAwMDAwIG4gCjAwMDA4MTUxOTkgMDAwMDAgbiAKMDAwMDgxNTIyMCAwMDAwMCBuIAowMDAwODE1MjQxIDAwMDAwIG4gCjAwMDA4MTUyNjIgMDAwMDAgbiAKMDAwMDgxNTI4MyAwMDAwMCBuIAowMDAwODE1MzA0IDAwMDAwIG4gCjAwMDA4MTUzMjUgMDAwMDAgbiAKMDAwMDgxNTM0NiAwMDAwMCBuIAowMDAwODE1MzY3IDAwMDAwIG4gCjAwMDA4MTUzODggMDAwMDAgbiAKMDAwMDgxNTQwOSAwMDAwMCBuIAowMDAwODE1NDMwIDAwMDAwIG4gCjAwMDA4MTU0NTEgMDAwMDAgbiAKMDAwMDgxNTQ3MiAwMDAwMCBuIAowMDAwODE1NDkzIDAwMDAwIG4gCjAwMDA4MTU1MTQgMDAwMDAgbiAKMDAwMDgxNTUzNSAwMDAwMCBuIAowMDAwODE1NTU2IDAwMDAwIG4gCjAwMDA4MTU1NzcgMDAwMDAgbiAKMDAwMDgxNTU5OCAwMDAwMCBuIAowMDAwODE1NjE5IDAwMDAwIG4gCjAwMDA4MTU2NDAgMDAwMDAgbiAKMDAwMDgxNTY2MSAwMDAwMCBuIAowMDAwODE1NjgyIDAwMDAwIG4gCjAwMDA4MTU3MDMgMDAwMDAgbiAKMDAwMDgxNTcyNCAwMDAwMCBuIAowMDAwODE1NzQ1IDAwMDAwIG4gCjAwMDA4MTU3NjYgMDAwMDAgbiAKMDAwMDgxNTc4NyAwMDAwMCBuIAowMDAwODE1ODA4IDAwMDAwIG4gCjAwMDA4MTU4MjkgMDAwMDAgbiAKMDAwMDgxNTg1MCAwMDAwMCBuIAowMDAwODE1ODcxIDAwMDAwIG4gCjAwMDA4MTU4OTIgMDAwMDAgbiAKMDAwMDgxNTkxMyAwMDAwMCBuIAowMDAwODE1OTM0IDAwMDAwIG4gCjAwMDA4MTU5NTUgMDAwMDAgbiAKMDAwMDgxNTk3NiAwMDAwMCBuIAowMDAwODE1OTk3IDAwMDAwIG4gCjAwMDA4MTYwMTggMDAwMDAgbiAKMDAwMDgxNjAzOSAwMDAwMCBuIAowMDAwODE2MDYwIDAwMDAwIG4gCjAwMDA4MTYwODEgMDAwMDAgbiAKMDAwMDgxNjEwMiAwMDAwMCBuIAowMDAwODE2MTIzIDAwMDAwIG4gCjAwMDA4MTYxNDQgMDAwMDAgbiAKMDAwMDgxNjE2NSAwMDAwMCBuIAowMDAwODE2MTg2IDAwMDAwIG4gCjAwMDA4MTYyMDcgMDAwMDAgbiAKMDAwMDgxNjIyOCAwMDAwMCBuIAowMDAwODE2MjQ5IDAwMDAwIG4gCjAwMDA4MTYyNzAgMDAwMDAgbiAKMDAwMDgxNjI5MSAwMDAwMCBuIAowMDAwODE2MzEyIDAwMDAwIG4gCjAwMDA4MTYzMzMgMDAwMDAgbiAKMDAwMDgxNjM1NCAwMDAwMCBuIAowMDAwODE2Mzc1IDAwMDAwIG4gCjAwMDA4MTYzOTYgMDAwMDAgbiAKMDAwMDgxNjQxNyAwMDAwMCBuIAowMDAwODE2NDM4IDAwMDAwIG4gCjAwMDA4MTY0NTkgMDAwMDAgbiAKMDAwMDgxNjQ4MCAwMDAwMCBuIAowMDAwODE2NTAxIDAwMDAwIG4gCjAwMDA4MTY1MjIgMDAwMDAgbiAKMDAwMDgxNjU0MyAwMDAwMCBuIAowMDAwODE2NTY0IDAwMDAwIG4gCjAwMDA4MTY1ODUgMDAwMDAgbiAKMDAwMDgxNjYwNiAwMDAwMCBuIAowMDAwODE2NjI3IDAwMDAwIG4gCjAwMDA4MTY2NDggMDAwMDAgbiAKMDAwMDgxNjY2OSAwMDAwMCBuIAowMDAwODE2NjkwIDAwMDAwIG4gCjAwMDA4MTY3MTEgMDAwMDAgbiAKMDAwMDgxNjczMiAwMDAwMCBuIAowMDAwODE2NzUzIDAwMDAwIG4gCjAwMDA4MTY3NzQgMDAwMDAgbiAKMDAwMDgxNjc5NSAwMDAwMCBuIAowMDAwODE2ODE2IDAwMDAwIG4gCjAwMDA4MTY4MzcgMDAwMDAgbiAKMDAwMDgxNjg1OCAwMDAwMCBuIAowMDAwODIxNDcwIDAwMDAwIG4gCjAwMDA4MjEzNTggMDAwMDAgbiAKMDAwMDgxNzAxMyAwMDAwMCBuIAowMDAwODc4NTQ2IDAwMDAwIG4gCjAwMDA4MjYyOTMgMDAwMDAgbiAKMDAwMDgyMTU2MyAwMDAwMCBuIAowMDAwOTk1Nzk0IDAwMDAwIG4gCjAwMDA4Mzc1NTQgMDAwMDAgbiAKMDAwMDgzNzc3OCAwMDAwMCBuIAowMDAwODM3ODE1IDAwMDAwIG4gCjAwMDA4Mzc4NzIgMDAwMDAgbiAKMDAwMDgzNzkyOCAwMDAwMCBuIAowMDAwODM4MDk2IDAwMDAwIG4gCjAwMDA4Mzg3MjIgMDAwMDAgbiAKMDAwMDgzOTE0OCAwMDAwMCBuIAowMDAwODM5NDY1IDAwMDAwIG4gCjAwMDA4Mzk3ODIgMDAwMDAgbiAKMDAwMDg0MDA5OSAwMDAwMCBuIAowMDAwODQwNDE1IDAwMDAwIG4gCjAwMDA4NDA3MzIgMDAwMDAgbiAKMDAwMDg0MTA0OSAwMDAwMCBuIAowMDAwODQxMzY2IDAwMDAwIG4gCjAwMDA4NDE2ODIgMDAwMDAgbiAKMDAwMDg0MTk5OSAwMDAwMCBuIAowMDAwODQyMzE2IDAwMDAwIG4gCjAwMDA4NDI2MzMgMDAwMDAgbiAKMDAwMDg0Mjk1MCAwMDAwMCBuIAowMDAwODQzMjY3IDAwMDAwIG4gCjAwMDA4NDM1ODQgMDAwMDAgbiAKMDAwMDg0MzkwMSAwMDAwMCBuIAowMDAwODQ0MjE4IDAwMDAwIG4gCjAwMDA4NDQ1MzMgMDAwMDAgbiAKMDAwMDg0NDg0OSAwMDAwMCBuIAowMDAwODQ1MTY2IDAwMDAwIG4gCjAwMDA4NDU0ODMgMDAwMDAgbiAKMDAwMDg0NTgwMCAwMDAwMCBuIAowMDAwODQ2MTE3IDAwMDAwIG4gCjAwMDA4NDY0MzQgMDAwMDAgbiAKMDAwMDg0Njc1MSAwMDAwMCBuIAowMDAwODQ3MDY4IDAwMDAwIG4gCjAwMDA4NDczODUgMDAwMDAgbiAKMDAwMDg0NzcwMiAwMDAwMCBuIAowMDAwODQ4MDE5IDAwMDAwIG4gCjAwMDA4NDgzMzYgMDAwMDAgbiAKMDAwMDg0ODY1MyAwMDAwMCBuIAowMDAwODQ4OTcwIDAwMDAwIG4gCjAwMDA4NDkyODcgMDAwMDAgbiAKMDAwMDg0OTYwNCAwMDAwMCBuIAowMDAwODQ5OTE5IDAwMDAwIG4gCjAwMDA4NTAyMzYgMDAwMDAgbiAKMDAwMDg1MDU1MyAwMDAwMCBuIAowMDAwODUwODcwIDAwMDAwIG4gCjAwMDA4NTExODcgMDAwMDAgbiAKMDAwMDg1MTUwMyAwMDAwMCBuIAowMDAwODUxODIwIDAwMDAwIG4gCjAwMDA4NTIxMzcgMDAwMDAgbiAKMDAwMDg1MjQ1NCAwMDAwMCBuIAowMDAwODUyNzY5IDAwMDAwIG4gCjAwMDA4NTMwODYgMDAwMDAgbiAKMDAwMDg1MzQwMyAwMDAwMCBuIAowMDAwODUzNzIwIDAwMDAwIG4gCjAwMDA4NTQwMzcgMDAwMDAgbiAKMDAwMDg1NDM1NCAwMDAwMCBuIAowMDAwODU0NjcxIDAwMDAwIG4gCjAwMDA4NTQ5ODggMDAwMDAgbiAKMDAwMDg1NTAxMCAwMDAwMCBuIAowMDAwODU1OTA2IDAwMDAwIG4gCjAwMDA4NTYxMzAgMDAwMDAgbiAKMDAwMDg1NjMzOCAwMDAwMCBuIAowMDAwODU2NjIyIDAwMDAwIG4gCjAwMDA4NTY2NDMgMDAwMDAgbiAKMDAwMDg1Njg4NSAwMDAwMCBuIAowMDAwODU2OTA2IDAwMDAwIG4gCjAwMDA4NTcxNDggMDAwMDAgbiAKMDAwMDg1NzE2OCAwMDAwMCBuIAowMDAwODU3MjU2IDAwMDAwIG4gCjAwMDA4NTcyNzYgMDAwMDAgbiAKMDAwMDg1NzM2NCAwMDAwMCBuIAowMDAwODU3Mzg0IDAwMDAwIG4gCjAwMDA4NTc0NzIgMDAwMDAgbiAKMDAwMDg1NzQ5MiAwMDAwMCBuIAowMDAwODU3NTgwIDAwMDAwIG4gCjAwMDA4NTc2MDAgMDAwMDAgbiAKMDAwMDg1NzY4OCAwMDAwMCBuIAowMDAwODU3NzA4IDAwMDAwIG4gCjAwMDA4NTc3OTYgMDAwMDAgbiAKMDAwMDg1NzgxNiAwMDAwMCBuIAowMDAwODU3OTA0IDAwMDAwIG4gCjAwMDA4NTc5MjQgMDAwMDAgbiAKMDAwMDg1ODAxMiAwMDAwMCBuIAowMDAwODU4MDMyIDAwMDAwIG4gCjAwMDA4NTgxMjAgMDAwMDAgbiAKMDAwMDg1ODE0MCAwMDAwMCBuIAowMDAwODU4MjI4IDAwMDAwIG4gCjAwMDA4NTgyNDggMDAwMDAgbiAKMDAwMDg1ODMzNiAwMDAwMCBuIAowMDAwODU4MzU2IDAwMDAwIG4gCjAwMDA4NTg0NDQgMDAwMDAgbiAKMDAwMDg1ODQ2NCAwMDAwMCBuIAowMDAwODU4NTUyIDAwMDAwIG4gCjAwMDA4NTg1NzIgMDAwMDAgbiAKMDAwMDg1ODY2MCAwMDAwMCBuIAowMDAwODU4NjgwIDAwMDAwIG4gCjAwMDA4NTg3NjggMDAwMDAgbiAKMDAwMDg1ODc4OCAwMDAwMCBuIAowMDAwODU4ODc2IDAwMDAwIG4gCjAwMDA4NTg4OTYgMDAwMDAgbiAKMDAwMDg1ODk4NCAwMDAwMCBuIAowMDAwODU5MDA0IDAwMDAwIG4gCjAwMDA4NTkwOTIgMDAwMDAgbiAKMDAwMDg1OTExMiAwMDAwMCBuIAowMDAwODU5MjAwIDAwMDAwIG4gCjAwMDA4NTkyMjAgMDAwMDAgbiAKMDAwMDg1OTMwOCAwMDAwMCBuIAowMDAwODU5MzI4IDAwMDAwIG4gCjAwMDA4NTk0MTYgMDAwMDAgbiAKMDAwMDg1OTQzNiAwMDAwMCBuIAowMDAwODU5NTI0IDAwMDAwIG4gCjAwMDA4NTk1NDQgMDAwMDAgbiAKMDAwMDg1OTYzMiAwMDAwMCBuIAowMDAwODU5NjUyIDAwMDAwIG4gCjAwMDA4NTk3NDAgMDAwMDAgbiAKMDAwMDg1OTc2MCAwMDAwMCBuIAowMDAwODU5ODQ4IDAwMDAwIG4gCjAwMDA4NTk4NjggMDAwMDAgbiAKMDAwMDg1OTk1NiAwMDAwMCBuIAowMDAwODU5OTc2IDAwMDAwIG4gCjAwMDA4NjAwNjQgMDAwMDAgbiAKMDAwMDg2MDA4NCAwMDAwMCBuIAowMDAwODYwMTcyIDAwMDAwIG4gCjAwMDA4NjAxOTIgMDAwMDAgbiAKMDAwMDg2MDI4MCAwMDAwMCBuIAowMDAwODYwMzAwIDAwMDAwIG4gCjAwMDA4NjAzODggMDAwMDAgbiAKMDAwMDg2MDQwOCAwMDAwMCBuIAowMDAwODYwNDk2IDAwMDAwIG4gCjAwMDA4NjA1MTYgMDAwMDAgbiAKMDAwMDg2MDYwNCAwMDAwMCBuIAowMDAwODYwNjI0IDAwMDAwIG4gCjAwMDA4NjA3MTIgMDAwMDAgbiAKMDAwMDg2MDczMiAwMDAwMCBuIAowMDAwODYwODIwIDAwMDAwIG4gCjAwMDA4NjA4NDAgMDAwMDAgbiAKMDAwMDg2MDkyOCAwMDAwMCBuIAowMDAwODYwOTQ4IDAwMDAwIG4gCjAwMDA4NjEwMzYgMDAwMDAgbiAKMDAwMDg2MTA1NiAwMDAwMCBuIAowMDAwODYxMTQ0IDAwMDAwIG4gCjAwMDA4NjExNjQgMDAwMDAgbiAKMDAwMDg2MTI1MiAwMDAwMCBuIAowMDAwODYxMjcyIDAwMDAwIG4gCjAwMDA4NjEzNjAgMDAwMDAgbiAKMDAwMDg2MTM4MCAwMDAwMCBuIAowMDAwODYxNDY4IDAwMDAwIG4gCjAwMDA4NjE0ODggMDAwMDAgbiAKMDAwMDg2MTU3NiAwMDAwMCBuIAowMDAwODYxNTk2IDAwMDAwIG4gCjAwMDA4NjE2ODQgMDAwMDAgbiAKMDAwMDg2MTcwNCAwMDAwMCBuIAowMDAwODYxNzkyIDAwMDAwIG4gCjAwMDA4NjE4MTIgMDAwMDAgbiAKMDAwMDg2MTkwMCAwMDAwMCBuIAowMDAwODYxOTIwIDAwMDAwIG4gCjAwMDA4NjIwMDggMDAwMDAgbiAKMDAwMDg2MjAyOCAwMDAwMCBuIAowMDAwODYyMTE2IDAwMDAwIG4gCjAwMDA4NjIxMzYgMDAwMDAgbiAKMDAwMDg2MjIyNCAwMDAwMCBuIAowMDAwODYyMjQ0IDAwMDAwIG4gCjAwMDA4NjIzMzIgMDAwMDAgbiAKMDAwMDg2MjM1MiAwMDAwMCBuIAowMDAwODYyNDQwIDAwMDAwIG4gCjAwMDA4NjI0NjAgMDAwMDAgbiAKMDAwMDg2MjU0OCAwMDAwMCBuIAowMDAwODYyNTY5IDAwMDAwIG4gCjAwMDA4Nzg0NjIgMDAwMDAgbiAKMDAwMDg3ODQ4MyAwMDAwMCBuIAowMDAwODc4NTAzIDAwMDAwIG4gCjAwMDA4Nzg1MjMgMDAwMDAgbiAKMDAwMDg4MTc4NiAwMDAwMCBuIAowMDAwODgxNjc0IDAwMDAwIG4gCjAwMDA4Nzg2NjcgMDAwMDAgbiAKMDAwMDg4NDk2NyAwMDAwMCBuIAowMDAwODg0ODg5IDAwMDAwIG4gCjAwMDA4ODg2OTIgMDAwMDAgbiAKMDAwMDg4ODU0NSAwMDAwMCBuIAowMDAwODk0NzAzIDAwMDAwIG4gCjAwMDA4OTQ0MzUgMDAwMDAgbiAKMDAwMDg5NjY5MyAwMDAwMCBuIAowMDAwODk2NjY4IDAwMDAwIG4gCjAwMDA4OTY3ODYgMDAwMDAgbiAKMDAwMDkwNzIyOSAwMDAwMCBuIAowMDAwOTIyMzYyIDAwMDAwIG4gCjAwMDA5MzI5MDYgMDAwMDAgbiAKMDAwMDkzNzA0MyAwMDAwMCBuIAowMDAwOTM2OTYwIDAwMDAwIG4gCjAwMDA5NDg2MTYgMDAwMDAgbiAKMDAwMDk0ODI4NiAwMDAwMCBuIAowMDAwOTUxNDQ3IDAwMDAwIG4gCjAwMDA5NTEyMTMgMDAwMDAgbiAKMDAwMDk1MzM0NSAwMDAwMCBuIAowMDAwOTUzMzIxIDAwMDAwIG4gCjAwMDA5NTYxMDcgMDAwMDAgbiAKMDAwMDk1NjA2MyAwMDAwMCBuIAowMDAwOTU4MTEyIDAwMDAwIG4gCjAwMDA5NTgwNjIgMDAwMDAgbiAKMDAwMDk3OTEzMiAwMDAwMCBuIAowMDAwOTk1MjcxIDAwMDAwIG4gCjAwMDA5OTU4NzkgMDAwMDAgbiAKMDAwMDk5NTk1NiAwMDAwMCBuIAowMDAwOTk2MDA5IDAwMDAwIG4gCnRyYWlsZXIKPDwKL1NpemUgOTk3Ci9Sb290IDk5NSAwIFIKL0luZm8gOTk2IDAgUgovSUQgWzwxMTBERDYxRkQ1NzQ0NDAxMEIxQUI1RkYzODc4MkYwRj4gPDExMERENjFGRDU3NDQ0MDEwQjFBQjVGRjM4NzgyRjBGPl0KPj4Kc3RhcnR4cmVmCjk5NjIxMwolJUVPRgo="; + } + + private void OnDocumentLoaded(PdfViewerEventArgs args) + => eventLog = $"Last event: OnDocumentLoaded, CurrentPage: {args.CurrentPage}, TotalPages: {args.TotalPages}"; + + private void OnPageChanged(PdfViewerEventArgs args) + => eventLog = $"Last event: OnPageChanged, CurrentPage: {args.CurrentPage}, TotalPages: {args.TotalPages}"; +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/pagination#base64-string) diff --git a/docs/docs/05-components/placeholders.mdx b/docs/docs/05-components/placeholders.mdx new file mode 100644 index 000000000..1e6bc4260 --- /dev/null +++ b/docs/docs/05-components/placeholders.mdx @@ -0,0 +1,124 @@ +--- +title: Blazor Placeholder Component +description: Use Blazor Bootstrap loading placeholders for your components or pages to indicate something may still be loading. +image: https://i.imgur.com/Mw13qfX.png + +sidebar_label: Placeholders +sidebar_position: 17 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Placeholders + +Use Blazor Bootstrap loading placeholders for your components or pages to indicate something may still be loading. + + + +## PlaceholderContainer Parameters + +| Name | Type | Description | Required | Default | +|--|--|--|--|--| +| Animation | `PlaceholderAnimation` | Gets or sets the placeholder animation. | | `PlaceholderAnimation.Glow` | +| ChildContent | `RenderFragment` | Gets or sets the content to be rendered within the component. | | | + +## Placeholder Parameters + +| Name | Type | Description | Required | Default | +|--|--|--|--|--| +| Width | `PlaceholderWidth` | Gets or sets the placeholder width. | | PlaceholderWidth.Col1 | +| Color | `PlaceholderColor` | Gets or sets the placeholder color. | | PlaceholderColor.None | +| Size | `PlaceholderSize` | Gets or sets the placeholder size. | | PlaceholderSize.None | + +## Examples + +### Placeholders + +Placeholders - Example + +```cshtml showLineNumbers + + + + + + +``` + +[See demo here.](https://demos.blazorbootstrap.com/placeholders#examples) + +### Width + +You can change the width through `PlaceholderWidth`, width utilities, or inline styles. + +Placeholders - Width Example + +```cshtml showLineNumbers + + + +``` + +[See demo here.](https://demos.blazorbootstrap.com/placeholders#width) + +### Color + +By default, the placeholder uses currentColor. This can be overridden with the `Color` property of type enum. + +Placeholders - Color Example + +```cshtml showLineNumbers + + + + + + + + + +``` + +[See demo here.](https://demos.blazorbootstrap.com/placeholders#color) + +### Sizing + +The size of placeholders are based on the typographic style of the parent element. Customize them with `Size` property of type enum. + +Placeholders - Sizing Example + +```cshtml showLineNumbers + + + + +``` + +[See demo here.](https://demos.blazorbootstrap.com/placeholders#sizing) + +### Animation + +Animate placeholders with `PlaceholderAnimation.Glow` or `PlaceholderAnimation.Wave` to better convey the perception of something being actively loaded. + +Placeholders - Animation Example + +```cshtml showLineNumbers + + + + + + + +
    +
    + + + + + + + +``` + +[See demo here.](https://demos.blazorbootstrap.com/placeholders#animation) \ No newline at end of file diff --git a/docs/docs/05-components/preload.mdx b/docs/docs/05-components/preload.mdx new file mode 100644 index 000000000..a59c520a6 --- /dev/null +++ b/docs/docs/05-components/preload.mdx @@ -0,0 +1,152 @@ +--- +title: Blazor Preload Component +description: Indicate the loading state of a page with Blazor Bootstrap preload component. +image: https://i.imgur.com/2cPuqFa.png + +sidebar_label: Preload +sidebar_position: 18 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Preload + +Indicate the loading state of a page with Blazor Bootstrap preload component. + + + +**Things to know when using the `Preload` component:** + +- Add the `Preload` component to your **current page** or your **layout page**. +- Inject `PreloadService` +- Call `PreloadService.Show()` before you make any call to the API. +- Call `PreloadService.Hide()` after you get the response from the API. + +Blazor Bootstrap: Blazor Preload Component - Default + +## Parameters + +| Name | Type | Default | Description | Required | Version Added | +|--|--|--|--|--|--| +| ChildContent | RenderFragment | null | Gets or sets the content to be rendered within the component. | | 1.1.0 | +| LoadingText | string? | null | Gets or sets the loading text. | | 1.10.4 | + +## Preload Service + +### Methods + +| Name | Return Type | Description | Added Version | +|--|--|--|--| +| Show(SpinnerColor spinnerColor = SpinnerColor.Light) | void | Shows the preload. | 1.1.0 | +| Show(SpinnerColor spinnerColor = SpinnerColor.Light, string? loadingText = null) | void | Shows the preload. | 1.10.4 | +| Hide() | void | Hides the preload. | 1.1.0 | + +## Global preload service for the application + +1. Add the `Preload` component in **MainLayout.razor** page as shown below. + +```cshtml {} showLineNumbers +@using BlazorBootstrap +. +. + +... MainLayout.razor code goes here ... + +. +. + +``` + +2. Inject `PreloadService`, then call the `Show()` and `Hide()` methods before and after the Service/API call, respectively, as shown below. + +```cs {} showLineNumbers +@code { + + [Inject] protected PreloadService PreloadService { get; set; } + + private void GetEmployees() + { + try + { + PreloadService.Show(); + + // call the service/api to get the employees + } + catch + { + // handle exception + } + finally + { + PreloadService.Hide(); + } + } +} +``` + +[See Preload demo here.](https://demos.blazorbootstrap.com/preload#global-preload-service-for-the-application) + +## Change loading text + +Blazor Bootstrap: Blazor Preload Component - Change loading text + +```cshtml {} showLineNUmbers + + +``` + +```cs {} showLineNumbers +@code { + [Inject] protected PreloadService PreloadService { get; set; } + + private async Task ShowLoadingDataAsync() + { + PreloadService.Show(SpinnerColor.Light, "Loading data..."); + await Task.Delay(3000); // call the service/api + PreloadService.Hide(); + } + + private async Task ShowSavingDataAsync() + { + PreloadService.Show(SpinnerColor.Light, "Saving data..."); + await Task.Delay(3000); // call the service/api + PreloadService.Hide(); + } +} +``` + +[See Preload demo here.](https://demos.blazorbootstrap.com/preload#change-loading-text) + +## Change spinner color + +Change the default spinner color by passing the `SpinnerColor` enum to the `Show(...)` method. In the below example, we are using a [global preload service](/components/preload#global-preload-service-for-the-application), as shown in the above section. + +Blazor Bootstrap: Blazor Preload Component - Change spinner color + +```cshml {} showLineNumbers + + + + + + + + +``` + +```cs {} showLineNumbers +@code { + [Inject] protected PreloadService PreloadService { get; set; } + + private async Task ShowSpinnerAsync(SpinnerColor spinnerColor) + { + PreloadService.Show(spinnerColor); + + await Task.Delay(3000); // call the service/api + + PreloadService.Hide(); + } +} +``` + +[See Preload demo here.](https://demos.blazorbootstrap.com/preload#change-spinner-color) \ No newline at end of file diff --git a/docs/docs/05-components/progress.mdx b/docs/docs/05-components/progress.mdx new file mode 100644 index 000000000..a9f6cc6f1 --- /dev/null +++ b/docs/docs/05-components/progress.mdx @@ -0,0 +1,306 @@ +--- +title: Blazor Progress Component +description: Documentation and examples for using the Blazor Bootstrap progress component featuring support for stacked bars, animated backgrounds, and text labels. +image: https://i.imgur.com/MK142lQ.png + +sidebar_label: Progress +sidebar_position: 19 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Progress + +Documentation and examples for using the Blazor Bootstrap progress component featuring support for stacked bars, animated backgrounds, and text labels. + + + +Blazor Progress + +## Progress Parameters + +| Name | Type | Default | Required | Description | +|:--|:--|:--|:--|:--| +| ChildContent | RenderFragment | | ✔️ | Gets or sets the content to be rendered within the component. | +| Height | double | 16 | | Gets or sets the height of the Progress. Height is measured in pixels, and the default height is 16 pixels. | + +## ProgressBar Parameters + +| Name | Type | Default | Required | Description | +|:--|:--|:--|:--|:--| +| Color| `ProgressColor` | | | Gets or sets the progress color. | +| Label | string | | | Gets or sets the progress bar label. | +| Type | `ProgressType` | | | Gets or sets the progress bar type. | +| Width | double | | | Get or sets the progress bar width. | + + +## ProgressBar Methods + +| Name | Description | +|:--|:--| +| DecreaseWidth | Decrease the progress bar width. | +| GetWidth | Get the progress bar width. | +| IncreaseWidth | Increase the progress bar width. | +| SetColor | Set the progress bar color. | +| SetLabel | Set the progress bar label. | +| SetWidth | Set the progress bar width. | + +## Examples + +### How it works + +Blazor Progress - How it works + +```cshtml showLineNumbers + + + + + + + + + + + + + + + + + + + + + + + + +``` + +[See demo here.](https://demos.blazorbootstrap.com/progress#how-it-works) + +### Labels + +Add labels to your Blazor ProgressBar component using the Label parameter or by calling the `SetLabel(...)` method. + +Blazor Progress - Labels + +```cshtml showLineNumbers + + + +``` + +[See demo here.](https://demos.blazorbootstrap.com/progress#labels) + +### Set width programmatically + +Use `IncreaseWidth()` or `DecreaseProgressBar()` methods to increase or decrease the Blazor ProgressBar width. + +Blazor Progress - Set width programmatically + +```cshtml showLineNumbers + + + + +
    + + + +
    +``` + +```cs showLineNumbers +@code { + ProgressBar progressBar; + + private void IncreaseProgressBar() + { + progressBar.IncreaseWidth(10); + progressBar.SetLabel($"{progressBar.GetWidth()}%"); + } + + private void DecreaseProgressBar() + { + progressBar.DecreaseProgressBar(10); + progressBar.SetLabel($"{progressBar.GetWidth()}%"); + } + + private void ResetProgressBar() + { + progressBar.SetWidth(0); + progressBar.SetLabel($"{progressBar.GetWidth()}%"); + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/progress#set-width-programmatically) + +### Height + +Set the height of the Blazor Progress by using the `Height` parameter. Height is measured in pixels. + +Blazor Progress - Height + +```cshtml showLineNumbers + + + + + + + + + + + + +``` + +[See demo here.](https://demos.blazorbootstrap.com/progress#height) + +### Backgrounds + +Use the `Color` parameter or the `SetColor(ProgressColor color)` method to change the appearance of individual Blazor ProgressBar components. + +Blazor Progress - Backgrounds + +```cshtml showLineNumbers + + + + + + + + + + + + + + + + + + + + + +``` + +[See demo here.](https://demos.blazorbootstrap.com/progress#backgrounds) + +### Set background programmatically + +You can dynamically set the Blazor ProgressBar color by calling the `SetColor()` method. + +Blazor Progress - Set background programmatically + +```cshtml showLineNumbers + + + + +
    + + + + + + + +
    +``` + +```cs showLineNumbers +@code { + ProgressBar progressBar; + private void SetColor(ProgressColor color) => progressBar.SetColor(color); +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/progress#set-background-programmatically) + +### Multiple bars + +Include multiple Blazor ProgressBar components in a Blazor Progress component if needed. + +Blazor Progress - Multiple bars + +```cshtml showLineNumbers + + + + + + +``` + +[See demo here.](https://demos.blazorbootstrap.com/progress#multiple-bars) + +### Striped + +Add `Type="ProgressType.Striped"` to any Blazor ProgressBar component to apply a stripe. + +Blazor Progress - Striped + +```cshtml showLineNumbers + + + + + + + + + + + + + + + + + + + + + +``` + +[See demo here.](https://demos.blazorbootstrap.com/progress#striped) + +### Animated stripes + +The stripes can also be animated. Add `Type="ProgressType.StripedAndAnimated"` to the Blazor ProgressBar component to animate the stripes right to the left. + +Blazor Progress - Animated stripes + +```cshtml showLineNumbers + + + + + + + + + + + + + + + + + + + + + +``` + +[See demo here.](https://demos.blazorbootstrap.com/progress#animated-stripes) \ No newline at end of file diff --git a/docs/docs/05-components/ribbon.mdx b/docs/docs/05-components/ribbon.mdx new file mode 100644 index 000000000..750ec7f71 --- /dev/null +++ b/docs/docs/05-components/ribbon.mdx @@ -0,0 +1,244 @@ +--- +title: Blazor Ribbon Component +description: Documentation and examples for using the Blazor Bootstrap Ribbon component. +image: https://i.imgur.com/LpZVLbF.png + +sidebar_label: Ribbon +sidebar_position: 20 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Progress + +Documentation and examples for using the Blazor Bootstrap Ribbon component. + + + +Blazor Ribbon + +## Ribbon Parameters + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| ChildContent | `RenderFragment` | null | ✔️ | Gets or sets the content to be rendered within the component. | 2.2.0 | +| EnableFadeEffect | bool | false | | Gets or sets the tabs fade effect. | 2.2.0 | + +## RibbonTab Parameters + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| Content | `RenderFragment` | null | ✔️ | Specifies the content to be rendered inside the tab. | 2.2.0 | +| Disabled | bool | false | | Gets or sets the disabled state. | 2.2.0 | +| IsActive | bool | false | | Gets or sets the active tab. | 2.2.0 | +| Name | string | null | | Gets or sets the tab name. | 2.2.0 | +| Title | string | null | | Gets or sets the tab title. | 2.2.0 | +| TitleTemplate | `RenderFragment` | null | | Gets or sets the tab title template. | 2.2.0 | + +## RibbonGroup Parameters + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| ChildContent | `RenderFragment` | | ✔️ | Gets or sets the content to be rendered within the component. | 2.2.0 | + +## RibbonItemGroup Parameters + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| ChildContent | `RenderFragment?` | null | ✔️ | Gets or sets the content to be rendered within the component. | 2.2.0 | +| Title | `string?` | null | | Gets or sets the text content of the component. | 2.2.0 | + +## RibbonItem Parameters + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| ChildContent | `RenderFragment?` | null | ✔️ | Gets or sets the content to be rendered within the component. | 2.2.0 | +| CustomIconName | `string?` | null | | The name of a custom icon to be displayed. | 2.2.0 | +| IconColor | `IconColor` | `IconColor.None` | | The color of the icon. | 2.2.0 | +| IconCssClass | `string?` | null | | CSS class(es) to be applied to the icon element. | 2.2.0 | +| IconName | `IconName` | `IconName.None` | | The built-in icon to be displayed. | 2.2.0 | +| IconSize | `IconSize` | `IconSize.x3` | | The size of the icon. Defaults to x3. | 2.2.0 | +| ImgHeight | double | 28 | | The height of the image in pixels. | 2.2.0 | +| ImgSrc | `string?` | null | | The source URL of the image. | 2.2.0 | +| ImgWidth | double | 28 | | The width of the image in pixels. | 2.2.0 | +| IsFirstItem | bool | false | | True if this is the first item in the RibbonItemGroup. | 2.2.0 | +| IsLastItem | bool | false | | True if this is the last item in the RibbonItemGroup. | 2.2.0 | +| Name | `string?` | null | | The name associated with the RibbonItem. | 2.2.0 | +| Text | `string?` | null | | The text content to be displayed inside the RibbonItem. | 2.2.0 | + +## Ribbon Methods + +| Name | Description | Added Version | +|:--|:--|:--| +| RemoveTabByIndex(int tabIndex) | Removes the tab by index. | 2.2.0 | +| RemoveTabByName(string tabName) | Removes the tab by name. | 2.2.0 | +| ShowFirstTabAsync() | Selects the first tab and show its associated pane. | 2.2.0 | +| ShowLastTabAsync() | Selects the last tab and show its associated pane. | 2.2.0 | +| ShowRecentTab() | Shows the recently added tab. | 2.2.0 | +| ShowTabByIndexAsync(int tabIndex) | Selects the tab by index and show its associated pane. | 2.2.0 | +| ShowTabByNameAsync(string tabName) | Selects the tab by name and show its associated pane. | 2.2.0 | + +## Ribbon Events + +| Name | Description | Added Version | +|:--|:--|:--| +| OnClick | This event fires when the user clicks the corresponding `RibbonItem`. | 2.2.0 | +| OnHidden | This event fires after a new tab is shown (and thus the previous active tab is hidden). | 2.2.0 | +| OnHiding | This event fires when a new tab is to be shown (and thus the previous active tab is to be hidden). | 2.2.0 | +| OnShowing | This event fires on tab show, but before the new tab has been shown. | 2.2.0 | +| OnShown | This event fires on tab show after a tab has been shown. | 2.2.0 | + +## RibbonTab Callback Events + +| Event | Description | Added Version | +|:--|:--|:--| +| OnClick | This event fires when the user clicks the corresponding tab button and the tab is displayed. | 2.2.0 | + +## Examples + +### How it works + +In the following example, you will see a ribbon similar to the one found in Outlook. + +Blazor Ribbon - How it works + +```cshtml showLineNumbers + + + + + + New
    Email
    + +
    + + + + + +
    +
    + + + + + Send/Receive
    All Folders
    + Update
    Folder
    +
    + + + Show
    Progress
    + Cancel
    All
    +
    +
    +
    + + + + + New
    Folder
    + New
    Search Folder
    +
    + + + Rename
    Folder
    + Copy
    Folder
    + Move
    Folder
    + Delete
    Folder
    +
    +
    +
    +
    + +
    + Selected ribbon item: @selectedRibbonItem +
    +``` + +```cshtml showLineNumbers +@code { + string? selectedRibbonItem; + + private void OnRibbonItemClick(RibbonItemEventArgs args) + { + selectedRibbonItem = args.Name; + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/ribbon#how-it-works) + +### Other icons + +In the following example, instead of icons like Bootstrap, Font Awesome, etc., we used PNG icons. + +Blazor Ribbon - Other icons + +```cshtml {} showLineNumbers + + + + + + New
    Email
    + +
    + + + + + +
    +
    + + + + + Send/Receive
    All Folders
    + Update
    Folder
    +
    + + + Show
    Progress
    + Cancel
    All
    +
    +
    +
    + + + + + New
    Folder
    + New
    Search Folder
    +
    + + + Rename
    Folder
    + Copy
    Folder
    + Move
    Folder
    + Delete
    Folder
    +
    +
    +
    +
    + +
    + Selected ribbon item: @selectedRibbonItem +
    +``` +```cshtml {} showLineNumbers +@code { + string? selectedRibbonItem; + + private void OnRibbonItemClick(RibbonItemEventArgs args) + { + selectedRibbonItem = args.Name; + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/ribbon#other-icons) + +:::note NOTE +All the PNG icons used on this page are from Flaticon with a premium license only. +::: diff --git a/docs/docs/05-components/script-loader.mdx b/docs/docs/05-components/script-loader.mdx new file mode 100644 index 000000000..712db96bd --- /dev/null +++ b/docs/docs/05-components/script-loader.mdx @@ -0,0 +1,76 @@ +--- +title: Blazor Script Loader Component +description: Documentation and examples for using the Blazor Bootstrap Script Loader component. +image: https://i.imgur.com/sBiYPeQ.png + +sidebar_label: Script Loader +sidebar_position: 21 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Script Loader + +Documentation and examples for using the Blazor Bootstrap Script Loader component. + + + +Blazor Progress - How it works + +## Script Loader Parameters + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| Async | bool | false | | Gets or sets the async. | 1.11.0 | +| ScriptId | `string?` | null | | Gets or set the script id. | 1.11.0 | +| Source | `string?` | null | ✔️ | This parameter specifies the URI of an external script; this can be used as an alternative to embedding a script directly within a document. | 1.11.0 | + +## Script Loader Events + +| Name | Description | Added Version | +|:--|:--|:--| +| OnError | An event that is fired when a script loading error occurs. | 1.11.0 | +| OnLoad | An event that is fired when a script has been successfully loaded. | 1.11.0 | + +## How it works + +In the following example, the jQuery script is loaded using the Script Loader component. + +```cshtml {1-4} showLineNumbers + +``` + +:::info Test +To test whether the jQuery script has been loaded successfully, run $('#script1')[0] in the browser console. +::: + +Blazor Script Loader - Test whether the jQuery script has been loaded successfully + +[See demo here.](https://demos.blazorbootstrap.com/script-loader#how-it-works) + +## Events + +In the following example, an incorrect script source is specified. +This is why the `OnError` callback event is called, and the message is updated with the error message. + +```cshtml {3,4,6} showLineNumbers + + +
    @message
    +``` + +```cs {4,6} showLineNumbers +@code { + string? message; + private void OnScriptLoad() => message = "Script loaded successfully."; + private void OnScriptError(string errorMessage) => message = errorMessage; +} +``` diff --git a/docs/docs/05-components/sidebar.mdx b/docs/docs/05-components/sidebar.mdx new file mode 100644 index 000000000..54647857c --- /dev/null +++ b/docs/docs/05-components/sidebar.mdx @@ -0,0 +1,699 @@ +--- +title: Blazor Sidebar Component +description: Use the Blazor Bootstrap Sidebar component to show consistent cross-browser, responsive and cross-device navigation links, additional information, or other content. +image: https://i.imgur.com/d91Q9Zt.png + +sidebar_label: Sidebar +sidebar_position: 22 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Sidebar + +Use the Blazor Bootstrap Sidebar component to show consistent cross-browser, responsive and cross-device navigation links, additional information, or other content. + + + +Blazor Sidebar + +## Parameters + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| BadgeText | string | | | Gets or sets the badge text. | 1.4.0 | +| CustomIconName | string | | | Gets or sets the custom icon name. | 1.4.0 | +| DataProvider | delegate | | ✔️ | DataProvider is for items to render. The provider should always return an instance of 'SidebarDataProviderResult', and 'null' is not allowed. | 1.4.0 | +| IconName | enum | | | Gets or sets the IconName. | 1.4.0 | +| ImageSrc | string | | | Gets or sets the logo. | 1.4.0 | +| Title | string | | ✔️ | Gets or sets the title. | 1.4.0 | + +## Methods + +| Name | Description | Added Version | +|:--|:--|:--| +| RefreshDataAsync | Refresh the sidebar data. | 1.4.0 | +| ToggleSidebar | Toggles sidebar. | 1.4.0 | + +## NavItem Properties + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| Class | `string?` | null | | Gets or sets an additional CSS class. | 1.10.3 | +| CustomIconName | `string?` | null | | Gets or sets the custom icon name. | 1.4.0 | +| Href | `string?` | | ✔️ | Gets or sets the href. | 1.4.0 | +| IconColor | `IconColor` | `IconColor.None` | | Gets or sets the icon color. | 1.4.0 | +| IconName | `IconName` | `IconName.None` | | Gets or sets the icon name. | 1.4.0 | +| Id | `string?` | null | | Gets or sets the Id. | 1.4.0 | +| Match | `NavLinkMatch` | `NavLinkMatch.Prefix` | | Gets or sets the URL matching behavior. | 1.4.0 | +| ParentId | `string?` | null | | Gets or sets the parent Id. | 1.4.0 | +| Sequence | int | | | Gets or sets the sequence. | 1.4.0 | +| Target | `Target` | `Target.None` | | Gets or sets the target. | 1.4.0 | +| Text | `string?` | | ✔️ | Gets or sets the navigation link text. | 1.4.0 | + +## Examples + +### Basic usage + +Blazor Sidebar - Basic usage + +```cshtml {} showLineNumbers + + +@code { + Sidebar sidebar; + IEnumerable navItems; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + new NavItem { Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts"}, + new NavItem { Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete"}, + new NavItem { Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb"}, + new NavItem { Href = "/sidebar", IconName = IconName.LayoutSidebarInset, Text = "Sidebar"}, + }; + return navItems; + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/sidebar#basic-usage) + +### Two level navigation + +Use NavItem's `Id` and `ParentId` to set the parent-child relation. + +Blazor Sidebar - Two level navigation + +:::note NOTE +At this moment, two levels of navigation are supported. +::: + +```cshtml {} showLineNumbers + + +@code { + Sidebar sidebar; + IEnumerable navItems; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content" }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components" }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + new NavItem { Id = "7", Href = "/sidebar", IconName = IconName.LayoutSidebarInset, Text = "Sidebar", ParentId="4"}, + + new NavItem { Id = "8", IconName = IconName.WindowPlus, Text = "Forms" }, + new NavItem { Id = "9", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="8"}, + new NavItem { Id = "10", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="8"}, + new NavItem { Id = "11", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="8"}, + new NavItem { Id = "12", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="8"}, + }; + + return navItems; + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/sidebar#two-level-navigation) + +### Change icons color + +Set `IconColor` property to change the color. + +Blazor Sidebar - Change icons color + +```cshtml {} showLineNumbers + + +@code { + Sidebar sidebar; + IEnumerable navItems; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content", IconColor = IconColor.Primary }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components", IconColor = IconColor.Success }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + new NavItem { Id = "7", Href = "/sidebar", IconName = IconName.LayoutSidebarInset, Text = "Sidebar", ParentId="4"}, + + new NavItem { Id = "8", IconName = IconName.WindowPlus, Text = "Forms", IconColor = IconColor.Danger }, + new NavItem { Id = "9", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="8"}, + new NavItem { Id = "10", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="8"}, + new NavItem { Id = "11", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="8"}, + new NavItem { Id = "12", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="8"}, + }; + + return navItems; + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/sidebar#change-icons-color) + +### Full layout with sidebar + +Replace your **MainLayout.razor** page code with the below example to have a complete layout with a sidebar. + +Blazor Sidebar - Full layout with sidebar + +```cshtml {} showLineNumbers +
    + + + +
    +
    + About +
    + +
    +
    Page content goes here
    +
    +
    + +
    + +@code { + Sidebar sidebar; + IEnumerable navItems; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content", IconColor = IconColor.Primary }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components", IconColor = IconColor.Success }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + new NavItem { Id = "7", Href = "/sidebar", IconName = IconName.LayoutSidebarInset, Text = "Sidebar", ParentId="4"}, + + new NavItem { Id = "8", IconName = IconName.WindowPlus, Text = "Forms", IconColor = IconColor.Danger }, + new NavItem { Id = "9", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="8"}, + new NavItem { Id = "10", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="8"}, + new NavItem { Id = "11", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="8"}, + new NavItem { Id = "12", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="8"}, + }; + + return navItems; + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/sidebar#full-layout-with-sidebar) + +### Toggle sidebar to show icons only + +Call `ToggleSidebar()` method to toggle the Sidebar to show the icons only. + +Blazor Sidebar - Toggle sidebar to show icons only + +```cshtml {} showLineNumbers +
    + + + +
    +
    + + About +
    + +
    +
    Page content goes here
    +
    +
    + +
    + +@code { + Sidebar sidebar; + IEnumerable navItems; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content", IconColor = IconColor.Primary }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components", IconColor = IconColor.Success }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + new NavItem { Id = "7", Href = "/sidebar", IconName = IconName.LayoutSidebarInset, Text = "Sidebar", ParentId="4"}, + + new NavItem { Id = "8", IconName = IconName.WindowPlus, Text = "Forms", IconColor = IconColor.Danger }, + new NavItem { Id = "9", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="8"}, + new NavItem { Id = "10", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="8"}, + new NavItem { Id = "11", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="8"}, + new NavItem { Id = "12", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="8"}, + }; + + return navItems; + } + + private void ToggleSidebar() => sidebar.ToggleSidebar(); +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/sidebar#toggle-sidebar-to-show-icons-only) + +### Show badge + +A badge is useful when displaying the application version, environment, or other information. Use the `BadgeText` parameter to show the badge. + +Blazor Sidebar - Show badge + +```cshtml {} showLineNumbers +
    + + + +
    +
    + + About +
    + +
    +
    Page content goes here
    +
    +
    + +
    + +@code { + Sidebar sidebar; + IEnumerable navItems; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content", IconColor = IconColor.Primary }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components", IconColor = IconColor.Success }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + new NavItem { Id = "7", Href = "/sidebar", IconName = IconName.LayoutSidebarInset, Text = "Sidebar", ParentId="4"}, + + new NavItem { Id = "8", IconName = IconName.WindowPlus, Text = "Forms", IconColor = IconColor.Danger }, + new NavItem { Id = "9", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="8"}, + new NavItem { Id = "10", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="8"}, + new NavItem { Id = "11", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="8"}, + new NavItem { Id = "12", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="8"}, + }; + + return navItems; + } + + private void ToggleSidebar() => sidebar.ToggleSidebar(); +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/sidebar#show-badge) + +### Custom brand icon + +Use the `CustomIconName` parameter to set the custom logo icon using font awesome or other icons. + +Blazor Sidebar - Custom brand icon + +```cshtml {} showLineNumbers +
    + + + +
    +
    + + About +
    + +
    +
    Page content goes here
    +
    +
    + +
    + +@code { + Sidebar sidebar; + IEnumerable navItems; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content", IconColor = IconColor.Primary }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components", IconColor = IconColor.Success }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + new NavItem { Id = "7", Href = "/sidebar", IconName = IconName.LayoutSidebarInset, Text = "Sidebar", ParentId="4"}, + + new NavItem { Id = "8", IconName = IconName.WindowPlus, Text = "Forms", IconColor = IconColor.Danger }, + new NavItem { Id = "9", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="8"}, + new NavItem { Id = "10", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="8"}, + new NavItem { Id = "11", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="8"}, + new NavItem { Id = "12", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="8"}, + }; + + return navItems; + } + + private void ToggleSidebar() => sidebar.ToggleSidebar(); +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/sidebar#custom-brand-icon) + +### Show image as brand logo + +Use the `ImageSrc` parameter to set the brand logo. + +Blazor Sidebar - Show image as brand logo + +```cshtml {} showLineNumbers +
    + + + +
    +
    + + About +
    + +
    +
    Page content goes here
    +
    +
    + +
    + +@code { + Sidebar sidebar; + IEnumerable navItems; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content", IconColor = IconColor.Primary }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components", IconColor = IconColor.Success }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + new NavItem { Id = "7", Href = "/sidebar", IconName = IconName.LayoutSidebarInset, Text = "Sidebar", ParentId="4"}, + + new NavItem { Id = "8", IconName = IconName.WindowPlus, Text = "Forms", IconColor = IconColor.Danger }, + new NavItem { Id = "9", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="8"}, + new NavItem { Id = "10", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="8"}, + new NavItem { Id = "11", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="8"}, + new NavItem { Id = "12", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="8"}, + }; + + return navItems; + } + + private void ToggleSidebar() => sidebar.ToggleSidebar(); +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/sidebar#show-image-as-brand-logo) + +### Customize sidebar + +Developers can customize the sidebar color by changing the CSS variables, as mentioned in the below example. + +Blazor Sidebar - Customize sidebar + +```cshtml {} showLineNumbers +
    + + + +
    +
    + About +
    + +
    +
    + +
    +
    +
    + +
    + +@code { + Sidebar sidebar; + bool applyPurpleStyle = false; + IEnumerable navItems; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content", IconColor = IconColor.Primary }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components", IconColor = IconColor.Success }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + new NavItem { Id = "7", Href = "/sidebar", IconName = IconName.LayoutSidebarInset, Text = "Sidebar", ParentId="4"}, + + new NavItem { Id = "8", IconName = IconName.WindowPlus, Text = "Forms", IconColor = IconColor.Danger }, + new NavItem { Id = "9", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="8"}, + new NavItem { Id = "10", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="8"}, + new NavItem { Id = "11", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="8"}, + new NavItem { Id = "12", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="8"}, + }; + + return navItems; + } + + private void ToggleSidebarStyles() => applyPurpleStyle = !applyPurpleStyle; +} + +@if (applyPurpleStyle) +{ + +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/sidebar#customize-sidebar) + +### Apply custom CSS class to NavItem + +Set the Class property of a NavItem to apply a custom CSS class. + +Blazor Sidebar - Apply custom CSS class to NavItem + +```cshtml {} showLineNumbers + +``` + +```cshtml {} showLineNumbers +@code { + Sidebar sidebar; + IEnumerable navItems; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content" }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components" }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4", Class="px-3"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4", Class="px-3"}, + new NavItem { Id = "7", Href = "/sidebar", IconName = IconName.LayoutSidebarInset, Text = "Sidebar", ParentId="4", Class="px-3"}, + + new NavItem { Id = "8", IconName = IconName.WindowPlus, Text = "Forms" }, + new NavItem { Id = "9", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="8"}, + new NavItem { Id = "10", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="8"}, + new NavItem { Id = "11", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="8"}, + new NavItem { Id = "12", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="8"}, + }; + + return navItems; + } +} +``` +[See demo here.](https://demos.blazorbootstrap.com/sidebar#apply-custom-css-class-to-navitem) diff --git a/docs/docs/05-components/sidebar2.mdx b/docs/docs/05-components/sidebar2.mdx new file mode 100644 index 000000000..cc02b21f9 --- /dev/null +++ b/docs/docs/05-components/sidebar2.mdx @@ -0,0 +1,413 @@ +--- +title: Blazor Sidebar2 Component +description: Use the Blazor Bootstrap Sidebar2 component to display consistent, cross-browser, and responsive navigation links that support more than two nested levels. +image: https://i.imgur.com/vs8kl7G.png + +sidebar_label: Sidebar2 +sidebar_position: 23 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Sidebar + +Use the Blazor Bootstrap Sidebar2 component to display consistent, cross-browser, and responsive navigation links that support more than two nested levels. + + + +Blazor Sidebar + +## Parameters + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| BadgeText | `string?` | | | Gets or sets the badge text. | 2.1.0 | +| CustomIconName | `string?` | | | Gets or sets the custom icon name. | 2.1.0 | +| DataProvider | `Sidebar2DataProviderDelegate?` | | ✔️ | DataProvider is for items to render. The provider should always return an instance of 'Sidebar2DataProviderResult', and 'null' is not allowed. | 2.1.0 | +| IconName | enum | | | Gets or sets the IconName. | 2.1.0 | +| ImageSrc | `string?` | | | Gets or sets the logo. | 2.1.0 | +| Title | string | | ✔️ | Gets or sets the title. | 2.1.0 | + +## Methods + +| Name | Description | Added Version | +|:--|:--|:--| +| RefreshDataAsync() | Refresh the sidebar data. | 2.1.0 | +| ToggleSidebar() | Toggles sidebar. | 2.1.0 | + +## NavItem Properties + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| Class | `string?` | null | | Gets or sets an additional CSS class. | 1.10.3 | +| CustomIconName | `string?` | null | | Gets or sets the custom icon name. | 1.4.0 | +| Href | `string?` | | ✔️ | Gets or sets the href. | 1.4.0 | +| IconColor | `IconColor` | `IconColor.None` | | Gets or sets the icon color. | 1.4.0 | +| IconName | `IconName` | `IconName.None` | | Gets or sets the icon name. | 1.4.0 | +| Id | `string?` | null | | Gets or sets the Id. | 1.4.0 | +| Level | `int` | 0 | | Gets or sets the item level. | 2.1.0 | +| Match | `NavLinkMatch` | `NavLinkMatch.Prefix` | | Gets or sets the URL matching behavior. | 1.4.0 | +| ParentId | `string?` | null | | Gets or sets the parent Id. | 1.4.0 | +| Sequence | int | | | Gets or sets the sequence. | 1.4.0 | +| Target | `Target` | `Target.None` | | Gets or sets the target. | 1.4.0 | +| Text | `string?` | | ✔️ | Gets or sets the navigation link text. | 1.4.0 | + +## Examples + +### Basic usage + +Blazor Sidebar2 - Basic usage + +```cshtml {} showLineNumbers + +``` + +```cs {} showLineNumbers +@code { + IEnumerable? navItems; + + private async Task Sidebar2DataProvider(Sidebar2DataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + await Task.Delay(2000); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content" }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components" }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + + new NavItem { Id = "7", IconName = IconName.ListNested, Text = "Sidebar 2", ParentId="4"}, + new NavItem { Id = "701", Href = "/sidebar2", IconName = IconName.Dash, Text = "How to use", ParentId="7"}, + new NavItem { Id = "702", Href = "/sidebar2-examples", IconName = IconName.Dash, Text = "Examples", ParentId="7"}, + + new NavItem { Id = "8", IconName = IconName.WindowPlus, Text = "Forms" }, + new NavItem { Id = "9", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="8"}, + new NavItem { Id = "10", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="8"}, + new NavItem { Id = "11", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="8"}, + new NavItem { Id = "12", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="8"}, + }; + + return navItems; + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/sidebar2#basic-usage) + +### More nested levels + +Use NavItem's `Id` and `ParentId` to set the parent-child relation. + +Blazor Sidebar2 - More nested levels + +```cshtml {} showLineNumbers + +``` + +```cs {} showLineNumbers +@code { + IEnumerable? navItems; + + private async Task Sidebar2DataProvider(Sidebar2DataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + await Task.Delay(2000); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content" }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components" }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + + new NavItem { Id = "7", IconName = IconName.ListNested, Text = "Sidebar 2", ParentId="4"}, + new NavItem { Id = "701", Href = "/sidebar2/how-to-use", IconName = IconName.Dash, Text = "How to use", ParentId="7"}, + + new NavItem { Id = "702", IconName = IconName.Dash, Text = "Examples", ParentId="7"}, + new NavItem { Id = "70201", Href = "/sidebar2", IconName = IconName.Dash, Text = "Nested levels", ParentId="702"}, + + new NavItem { Id = "8", IconName = IconName.Grid, Text = "Grid", ParentId="4"}, + new NavItem { Id = "801", Href = "/grid/#", IconName = IconName.Dash, Text = "How to use", ParentId="8"}, + new NavItem { Id = "802", IconName = IconName.Dash, Text = "Examples", ParentId="8"}, + new NavItem { Id = "80201", Href = "/grid/#", IconName = IconName.Dash, Text = "Filters", ParentId="802"}, + + new NavItem { Id = "9", IconName = IconName.WindowPlus, Text = "Forms" }, + new NavItem { Id = "10", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="9"}, + new NavItem { Id = "11", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="9"}, + new NavItem { Id = "12", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="9"}, + new NavItem { Id = "13", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="9"}, + }; + + return navItems; + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/sidebar2#more-nested-levels) + +### Full layout with sidebar + +Replace your **MainLayout.razor** page code with the below example to have a complete layout with a sidebar. + +Blazor Sidebar2 - Full layout with sidebar + +```cshtml {} showLineNumbers +
    + + + +
    +
    + About +
    + +
    +
    Page content goes here
    +
    +
    + +
    +``` + +```cs {} showLineNumbers +@code { + IEnumerable? navItems; + + private async Task Sidebar2DataProvider(Sidebar2DataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + await Task.Delay(2000); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content", IconColor = IconColor.Primary }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components", IconColor = IconColor.Success }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + + new NavItem { Id = "7", IconName = IconName.ListNested, Text = "Sidebar 2", ParentId="4"}, + new NavItem { Id = "701", Href = "/sidebar2/how-to-use", IconName = IconName.Dash, Text = "How to use", ParentId="7"}, + + new NavItem { Id = "702", IconName = IconName.Dash, Text = "Examples", ParentId="7"}, + new NavItem { Id = "70201", Href = "/sidebar2", IconName = IconName.Dash, Text = "Nested levels", ParentId="702"}, + + new NavItem { Id = "8", IconName = IconName.Grid, Text = "Grid", ParentId="4", IconColor = IconColor.Danger }, + new NavItem { Id = "801", Href = "/grid/#", IconName = IconName.Dash, Text = "How to use", ParentId="8"}, + new NavItem { Id = "802", IconName = IconName.Dash, Text = "Examples", ParentId="8"}, + new NavItem { Id = "80201", Href = "/grid/#", IconName = IconName.Dash, Text = "Filters", ParentId="802"}, + + new NavItem { Id = "9", IconName = IconName.WindowPlus, Text = "Forms", IconColor = IconColor.Warning }, + new NavItem { Id = "10", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="9"}, + new NavItem { Id = "11", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="9"}, + new NavItem { Id = "12", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="9"}, + new NavItem { Id = "13", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="9"}, + }; + + return navItems; + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/sidebar2#full-layout-with-sidebar) + +### Custom brand icon + +Use the `CustomIconName` parameter to set the custom logo icon using font awesome or other icons. + +Blazor Sidebar2 - Custom brand icon + +```cshtml {} showLineNumbers +
    + + + +
    +
    + About +
    + +
    +
    Page content goes here
    +
    +
    + +
    +``` + +```cs {} showLineNumbers +@code { + IEnumerable? navItems; + + private async Task Sidebar2DataProvider(Sidebar2DataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + await Task.Delay(2000); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content", IconColor = IconColor.Primary }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components", IconColor = IconColor.Success }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + + new NavItem { Id = "7", IconName = IconName.ListNested, Text = "Sidebar 2", ParentId="4"}, + new NavItem { Id = "701", Href = "/sidebar2/how-to-use", IconName = IconName.Dash, Text = "How to use", ParentId="7"}, + + new NavItem { Id = "702", IconName = IconName.Dash, Text = "Examples", ParentId="7"}, + new NavItem { Id = "70201", Href = "/sidebar2", IconName = IconName.Dash, Text = "Nested levels", ParentId="702"}, + + new NavItem { Id = "8", IconName = IconName.Grid, Text = "Grid", ParentId="4", IconColor = IconColor.Danger }, + new NavItem { Id = "801", Href = "/grid/#", IconName = IconName.Dash, Text = "How to use", ParentId="8"}, + new NavItem { Id = "802", IconName = IconName.Dash, Text = "Examples", ParentId="8"}, + new NavItem { Id = "80201", Href = "/grid/#", IconName = IconName.Dash, Text = "Filters", ParentId="802"}, + + new NavItem { Id = "9", IconName = IconName.WindowPlus, Text = "Forms", IconColor = IconColor.Warning }, + new NavItem { Id = "10", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="9"}, + new NavItem { Id = "11", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="9"}, + new NavItem { Id = "12", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="9"}, + new NavItem { Id = "13", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="9"}, + }; + + return navItems; + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/sidebar2#custom-brand-icon) + +### Show image as brand logo + +Use the `ImageSrc` parameter to set the brand logo. + +Blazor Sidebar2 - Show image as brand logo + +```cshtml {} showLineNumbers +
    + + + +
    +
    + About +
    + +
    +
    Page content goes here
    +
    +
    + +
    +``` + +```cs {} showLineNumbers +@code { + IEnumerable? navItems; + + private async Task Sidebar2DataProvider(Sidebar2DataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + await Task.Delay(2000); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content", IconColor = IconColor.Primary }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components", IconColor = IconColor.Success }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + + new NavItem { Id = "7", IconName = IconName.ListNested, Text = "Sidebar 2", ParentId="4"}, + new NavItem { Id = "701", Href = "/sidebar2/how-to-use", IconName = IconName.Dash, Text = "How to use", ParentId="7"}, + + new NavItem { Id = "702", IconName = IconName.Dash, Text = "Examples", ParentId="7"}, + new NavItem { Id = "70201", Href = "/sidebar2", IconName = IconName.Dash, Text = "Nested levels", ParentId="702"}, + + new NavItem { Id = "8", IconName = IconName.Grid, Text = "Grid", ParentId="4", IconColor = IconColor.Danger }, + new NavItem { Id = "801", Href = "/grid/#", IconName = IconName.Dash, Text = "How to use", ParentId="8"}, + new NavItem { Id = "802", IconName = IconName.Dash, Text = "Examples", ParentId="8"}, + new NavItem { Id = "80201", Href = "/grid/#", IconName = IconName.Dash, Text = "Filters", ParentId="802"}, + + new NavItem { Id = "9", IconName = IconName.WindowPlus, Text = "Forms", IconColor = IconColor.Warning }, + new NavItem { Id = "10", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="9"}, + new NavItem { Id = "11", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="9"}, + new NavItem { Id = "12", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="9"}, + new NavItem { Id = "13", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="9"}, + }; + + return navItems; + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/sidebar2#show-image-as-brand-logo) diff --git a/docs/docs/05-components/sortable-list.mdx b/docs/docs/05-components/sortable-list.mdx new file mode 100644 index 000000000..94dd6289c --- /dev/null +++ b/docs/docs/05-components/sortable-list.mdx @@ -0,0 +1,616 @@ +--- +title: Blazor Sortable List Component +description: The Blazor Bootstrap Sortable List component, built on top of SortableJS, enables drag-and-drop reordering of lists. +image: https://i.imgur.com/bfzP8Yi.png + +sidebar_label: Sortable List +sidebar_position: 24 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Sortable List (Preview) + +The Blazor Bootstrap Sortable List component, built on top of SortableJS, enables drag-and-drop reordering of lists. + + + +Blazor Sortable List + +## Setup + +Before using the **SortableList** component, include the **SortableJS** script reference in your `index.html/_Host.cshtml` file. + +```html + +``` +## Parameters + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| AllowSorting | bool | true | | Gets or sets a value indicating whether sorting is allowed for the list. | 2.2.0 | +| ChildContent | `RenderFragment` | | | Gets or sets the content to be rendered within the component. | 2.2.0 | +| Data | `List` | | | Gets or sets the items. | 2.2.0 | +| DisableItem | `Func` | | | Gets or sets a delegate that determines whether an item should be disabled. | 2.2.0 | +| DisabledItemCssClass | `string?` | | | Gets or sets the CSS class applied to disabled items. | 2.2.0 | +| EmptyDataTemplate | `RenderFragment` | | | Specifies the template to render when there are no items to display in the list. | 2.2.0 | +| EmptyText | string | `No records to display` | | Gets or sets the text to display when there are no records in the list. | 2.2.0 | +| Group | `string?` | | | Gets or sets the group name associated with the list. | 2.2.0 | +| Handle | `string?` | | | Gets or sets the CSS selector for the drag handle element. | 2.2.0 | +| IsLoading | bool | | | Gets or sets a value indicating whether the list is currently loading. | 2.2.0 | +| ItemTemplate | `RenderFragment?` | | | Specifies the template used to render individual items in the list. | 2.2.0 | +| LoadingTemplate | `RenderFragment` | | | Specifies the template to render while the list data is loading. | 2.2.0 | +| Name | `string?` | | Gets or sets the name of the `SortableList` component. | 2.2.0 | +| Pull | `SortableListPullMode` | | | Gets or sets the pull mode for the sortable list. | 2.2.0 | +| Put | `SortableListPutMode` | | | Gets or sets the put mode for the sortable list. | 2.2.0 | + +## Methods + +There are no public methods available. + +## Callback Events + +| Event | Description | Added Version | +|--|--|--| +| OnAdd | Gets or sets an event callback that fires when an item is added to the list. | 2.2.0 | +| OnRemove | Gets or sets an event callback that fires when an item is removed from the list. | 2.2.0 | +| OnUpdate | Gets or sets an event callback that fires when an item is updated in the list. | 2.2.0 | + +## Examples + +### Basic usage + +Blazor Sortable List - Basic usage + +```cshtml {} showLineNumbers + + + @item.Name + + +``` + +```cs {} showLineNumbers +@code { + public List employees = Enumerable.Range(1, 5).Select(i => new Employee(i, $"Employee {i}")).ToList(); + + private void OnEmployeeListUpdate(SortableListEventArgs args) + { + var itemToMove = employees[args.OldIndex]; + + employees.RemoveAt(args.OldIndex); + + if (args.NewIndex < employees.Count) + employees.Insert(args.NewIndex, itemToMove); + else + employees.Add(itemToMove); + } + + public record Employee(int Id, string? Name); +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/sortable-list#examples) + +### Shared lists + +To drag-and-drop an item from one list to the other and vice versa, set the **Group** parameter for all the lists. +Providing the same **Group** name for the lists is what links them together. + +In the below example, both lists use the same **Group**. + +Blazor Sortable List - Shared lists + +```cshtml {} showLineNumbers +
    +
    + + + @item.Name + + +
    +
    + + + @item.Name + + +
    +
    +``` + +```cs {} showLineNumbers +@code { + public List employeeList1 = Enumerable.Range(1, 5).Select(i => new Employee(i, $"Employee {i}")).ToList(); + + public List employeeList2 = Enumerable.Range(6, 5).Select(i => new Employee(i, $"Employee {i}")).ToList(); + + private void OnEmployeeList1Update(SortableListEventArgs args) + { + var itemToMove = employeeList1[args.OldIndex]; + + employeeList1.RemoveAt(args.OldIndex); + + if (args.NewIndex < employeeList1.Count) + employeeList1.Insert(args.NewIndex, itemToMove); + else + employeeList1.Add(itemToMove); + } + + private void OnEmployeeList2Update(SortableListEventArgs args) + { + var itemToMove = employeeList2[args.OldIndex]; + + employeeList2.RemoveAt(args.OldIndex); + + if (args.NewIndex < employeeList2.Count) + employeeList2.Insert(args.NewIndex, itemToMove); + else + employeeList2.Add(itemToMove); + } + + private void OnEmployeeList1Remove(SortableListEventArgs args) + { + // get the item at the old index in list 1 + var item = employeeList1[args.OldIndex]; + + // add it to the new index in list 2 + employeeList2.Insert(args.NewIndex, item); + + // remove the item from the old index in list 1 + employeeList1.Remove(employeeList1[args.OldIndex]); + } + + private void OnEmployeeList2Remove(SortableListEventArgs args) + { + // get the item at the old index in list 2 + var item = employeeList2[args.OldIndex]; + + // add it to the new index in list 1 + employeeList1.Insert(args.NewIndex, item); + + // remove the item from the old index in list 2 + employeeList2.Remove(employeeList2[args.OldIndex]); + } + + public record Employee(int Id, string? Name); +} +``` + +In the following example, all three lists use the same group. + +Blazor Sortable List - Shared lists - More than two lists + +```cshtml {} showLineNumbers +
    +
    + + + @item.Name + + +
    +
    + + + @item.Name + + +
    +
    + + + @item.Name + + +
    +
    +``` + +```cs {} showLineNumbers +@code { + public List employeeList1 = Enumerable.Range(10, 5).Select(i => new Employee(i, $"Employee {i}")).ToList(); + + public List employeeList2 = Enumerable.Range(20, 5).Select(i => new Employee(i, $"Employee {i}")).ToList(); + + public List employeeList3 = Enumerable.Range(30, 5).Select(i => new Employee(i, $"Employee {i}")).ToList(); + + private void OnEmployeeList1Update(SortableListEventArgs args) + { + var itemToMove = employeeList1[args.OldIndex]; + + employeeList1.RemoveAt(args.OldIndex); + + if (args.NewIndex < employeeList1.Count) + employeeList1.Insert(args.NewIndex, itemToMove); + else + employeeList1.Add(itemToMove); + } + + private void OnEmployeeList2Update(SortableListEventArgs args) + { + var itemToMove = employeeList2[args.OldIndex]; + + employeeList2.RemoveAt(args.OldIndex); + + if (args.NewIndex < employeeList2.Count) + employeeList2.Insert(args.NewIndex, itemToMove); + else + employeeList2.Add(itemToMove); + } + + private void OnEmployeeList3Update(SortableListEventArgs args) + { + var itemToMove = employeeList3[args.OldIndex]; + + employeeList3.RemoveAt(args.OldIndex); + + if (args.NewIndex < employeeList3.Count) + employeeList3.Insert(args.NewIndex, itemToMove); + else + employeeList3.Add(itemToMove); + } + + private void OnEmployeeListRemove(SortableListEventArgs args) + { + Employee? item = default!; + + // get the item at the old index + if (args.FromListName == "empList1") + item = employeeList1[args.OldIndex]; + else if (args.FromListName == "empList2") + item = employeeList2[args.OldIndex]; + else + item = employeeList3[args.OldIndex]; + + // add it to the new index + if (args.ToListName == "empList1") + employeeList1.Insert(args.NewIndex, item); + else if (args.ToListName == "empList2") + employeeList2.Insert(args.NewIndex, item); + else + employeeList3.Insert(args.NewIndex, item); + + // remove the item from the old index + if (args.FromListName == "empList1") + employeeList1.Remove(employeeList1[args.OldIndex]); + else if (args.FromListName == "empList2") + employeeList2.Remove(employeeList2[args.OldIndex]); + else + employeeList3.Remove(employeeList3[args.OldIndex]); + } + + public record Employee(int Id, string? Name); +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/sortable-list#shared-lists) + +### Cloning + +By setting `Pull="SortableListPullMode.Clone"`, you can enable item cloning. +Drag an item from one list to another to create a copy that stays in the original list. + +Blazor Sortable List - Cloning + +```cshtml {} showLineNumbers +
    +
    + + + @item.Name + + +
    +
    + + + @item.Name + + +
    +
    +``` + +```cs {} showLineNumbers +@code { + public List employeeList1 = Enumerable.Range(10, 5).Select(i => new Employee(i, $"Employee {i}")).ToList(); + + public List employeeList2 = Enumerable.Range(20, 5).Select(i => new Employee(i, $"Employee {i}")).ToList(); + + private void OnEmployeeList1Update(SortableListEventArgs args) + { + var itemToMove = employeeList1[args.OldIndex]; + + employeeList1.RemoveAt(args.OldIndex); + + if (args.NewIndex < employeeList1.Count) + employeeList1.Insert(args.NewIndex, itemToMove); + else + employeeList1.Add(itemToMove); + } + + private void OnEmployeeList2Update(SortableListEventArgs args) + { + var itemToMove = employeeList2[args.OldIndex]; + + employeeList2.RemoveAt(args.OldIndex); + + if (args.NewIndex < employeeList2.Count) + employeeList2.Insert(args.NewIndex, itemToMove); + else + employeeList2.Add(itemToMove); + } + + private void OnEmployeeList1Remove(SortableListEventArgs args) + { + // get the item at the old index in list 1 + var item = employeeList1[args.OldIndex]; + + var clone = item with {}; + + // add it to the new index in list 2 + employeeList2.Insert(args.NewIndex, clone); + } + + private void OnEmployeeList2Remove(SortableListEventArgs args) + { + // get the item at the old index in list 2 + var item = employeeList2[args.OldIndex]; + + var clone = item with { }; + + // add it to the new index in list 1 + employeeList1.Insert(args.NewIndex, clone); + } + + public record Employee(int Id, string? Name); +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/sortable-list#cloning) + +### Disable sorting + +You can disable list sorting by setting `AllowSorting="false"`. In the example below, the list cannot be sorted. + +Blazor Sortable List - Disable sorting + +```cshtml {} showLineNumbers + + + @item.Name + + +``` + +```cs {} showLineNumbers +@code { + public List items = Enumerable.Range(1, 5).Select(i => new Employee { Id = i, Name = $"Item {i}" }).ToList(); + + public class Employee + { + public int Id { get; set; } + public string? Name { get; set; } + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/sortable-list#disable-sorting) + +### Handle + +The **Handle** parameter specifies the CSS class that denotes the drag handle. In the example below, items can only be sorted by dragging the handle itself. + +Blazor Sortable List - Handle + +```cshtml {} showLineNumbers + + + +
    +
    +
    @item.Name
    +
    +
    + +
    +``` + +```cs {} showLineNumbers +@code { + public List employees = Enumerable.Range(1, 5).Select(i => new Employee(i, $"Employee {i}")).ToList(); + + private void OnEmployeeListUpdate(SortableListEventArgs args) + { + var itemToMove = employees[args.OldIndex]; + + employees.RemoveAt(args.OldIndex); + + if (args.NewIndex < employees.Count) + employees.Insert(args.NewIndex, itemToMove); + else + employees.Add(itemToMove); + } + + public record Employee(int Id, string? Name); +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/sortable-list#handle) + +### Disable item + +Try dragging the red-backgrounded item. You won't be able to, as it's disabled using the **DisableItem** parameter. + +Blazor Sortable List - Disable item + +```cshtml {} showLineNumbers + + + @item.Name + + +``` + +```cs {} showLineNumbers +@code { + public List employees = Enumerable.Range(1, 5).Select(i => new Employee(i, $"Employee {i}")).ToList(); + + private void OnEmployeeListUpdate(SortableListEventArgs args) + { + var itemToMove = employees[args.OldIndex]; + + employees.RemoveAt(args.OldIndex); + + if (args.NewIndex < employees.Count) + employees.Insert(args.NewIndex, itemToMove); + else + employees.Add(itemToMove); + } + + public record Employee(int Id, string? Name); +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/sortable-list#disable-item) + +### Nested sortables + +:::note +Nested list sorting is not currently supported. We will add this feature in upcoming releases. +::: + +### Dynamic data + +Blazor Sortable List - Dynamic data + +```cshtml {} showLineNumbers + + + @item.Name + + + + +``` + +```cs {} showLineNumbers +@code { + public bool isLoading = false; + public List employees = null!; + + private async Task LoadDataAsync() + { + isLoading = true; + await Task.Delay(3000); + employees = Enumerable.Range(1, 5).Select(i => new Employee(i, $"Employee {i}")).ToList(); + isLoading = false; + await base.OnInitializedAsync(); + } + + private void OnEmployeeListUpdate(SortableListEventArgs args) + { + var itemToMove = employees[args.OldIndex]; + + employees.RemoveAt(args.OldIndex); + + if (args.NewIndex < employees.Count) + employees.Insert(args.NewIndex, itemToMove); + else + employees.Add(itemToMove); + } + + public record Employee(int Id, string? Name); +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/sortable-list#dynamic-data) + +### Empty data + +Blazor Sortable List - Empty data + +```cshtml {} showLineNumbers + + + @item.Name + + +``` + +```cs {} showLineNumbers +@code { + public List items = null!; + + public record Employee(int Id, string? Name); +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/sortable-list#empty-data) diff --git a/docs/docs/05-components/spinners.mdx b/docs/docs/05-components/spinners.mdx new file mode 100644 index 000000000..88969f5df --- /dev/null +++ b/docs/docs/05-components/spinners.mdx @@ -0,0 +1,215 @@ +--- +title: Blazor Spinner Component +description: Visualize the loading state of a component or page using the Blazor Bootstrap Spinner component. +image: https://i.imgur.com/G4wyEd6.png + +sidebar_label: Spinners +sidebar_position: 25 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Sidebar + +Visualize the loading state of a component or page using the Blazor Bootstrap Spinner component. + + + +Blazor Spinner Component + +## Parameters + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| Color | `SpinnerColor` | `SpinnerColor.None` | | Gets or sets the color of the spinner. | 2.0.0 | +| Size | `SpinnerSize` | `SpinnerSize.Medium` | | Gets or sets the size of the spinner. | 2.0.0 | +| Title | `string?` | null | | Gets or sets the title text used as an accessibility attribute. | 2.0.0 | +| Type | `SpinnerType` | `SpinnerType.Border` | | Gets or sets the type of the spinner. | 2.0.0 | +| Visible | bool | true | | Gets or sets whether the spinner is visible or not. | 2.0.0 | +| VisuallyHiddenText | `string?` | `Loading...` | | Gets or sets the visually hidden text. | 2.0.0 | + +## Examples + +### Border spinner + +Use the border spinners for a lightweight loading indicator. + +Blazor Spinner Component - Border spinner + +```razor {} showLineNumbers + +``` + +[See demo here.](https://demos.blazorbootstrap.com/spinners#border-spinner) + +### Colors + +The border spinner's border color inherits the element's color (`currentColor`). This means you can easily customize the spinner's color by changing the `Color` parameter on the standard spinner. + +Blazor Spinner Component - Colors + +```razor {} showLineNumbers + + + + + + + + +``` + +[See demo here.](https://demos.blazorbootstrap.com/spinners#colors) + +### Grow spinner + +If you don't fancy a border spinner, switch to the grow spinner, while it doesn't technically spin, it does repeatedly grow! + +Blazor Spinner Component - Grow spinner + +```razor {} showLineNumbers + + + + + + + + +``` + +[See demo here.](https://demos.blazorbootstrap.com/spinners#grow-spinner) + +### Loading dots spinner + +The loading dots are a special indicator for a lightweight loading indicator. + +Blazor Spinner Component - Loading dots spinner + +```razor {} showLineNumbers + + + + + + + + +``` + +[See demo here.](https://demos.blazorbootstrap.com/spinners#loading-dots-spinner) + +### Alignment + +### Margin + +Blazor Spinner Component - Margin + +```razor {} showLineNumbers + +``` + +[See demo here.](https://demos.blazorbootstrap.com/spinners#margin) + +### Placement + +### Flex + +Blazor Spinner Component - Flex - Example 1 + +```razor {} showLineNumbers +
    + +
    +``` + +Blazor Spinner Component - Flex - Example 2 + +```razor {} showLineNumbers +
    + Loading... + +
    +``` + +[See demo here.](https://demos.blazorbootstrap.com/spinners#flex) + +### Floats + +Blazor Spinner Component - Floats + +```razor {} showLineNumbers +
    + +
    +``` + +[See demo here.](https://demos.blazorbootstrap.com/spinners#floats) + +### Text align + +Blazor Spinner Component - Text align + +```razor {} showLineNumbers +
    + +
    +``` + +[See demo here.](https://demos.blazorbootstrap.com/spinners#text-align) + +### Size + +Blazor Spinner Component - Size - Example 1 + +```razor {} showLineNumbers + + + + +``` + +Blazor Spinner Component - Size - Example 2 + +```razor {} showLineNumbers + + + + +``` + +Blazor Spinner Component - Size - Example 3 + +```razor {} showLineNumbers + + + + +``` + +[See demo here.](https://demos.blazorbootstrap.com/spinners#size) + +### Visible + +Blazor Spinner Component - Visible + +```razor {} showLineNumbers + + +
    + + +
    +``` + +```razor {} showLineNumbers +@code { + private bool visible = true; + + private void Hide() => visible = false; + + private void Show() => visible = true; +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/spinners#visible) diff --git a/docs/docs/05-components/tabs.mdx b/docs/docs/05-components/tabs.mdx new file mode 100644 index 000000000..e4e29aa6a --- /dev/null +++ b/docs/docs/05-components/tabs.mdx @@ -0,0 +1,682 @@ +--- +title: Blazor Tabs Component +description: Documentation and examples for using Blazor Bootstrap Tabs components. +image: https://i.imgur.com/KelXx6Z.png + +sidebar_label: Tabs +sidebar_position: 26 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Tabs + +Documentation and examples for using Blazor Bootstrap Tabs components. + + + +## Tabs Parameters + +| Name | Type | Description | Required | Default | Added Version | +|:--|:--|:--|:--|:--|:--| +| ChildContent | RenderFragment | Gets or sets the content to be rendered within the component. | | | 1.0.0 | +| EnableFadeEffect | bool | Gets or sets the tabs fade effect. | | false | 1.0.0 | +| NavStyle | `NavStyle` | Get or sets the nav style. | | `NavStyle.Tabs` | 1.0.0 | + +## Tabs Methods + +| Name | Description | Added Version | +|:--|:--|:--| +| InitializeRecentTab(bool showTab) | Initializes the most recently added tab, optionally displaying it. | 1.11.0 | +| RemoveTabByIndex(int tabIndex) | Removes the tab by index. | 2.2.0 | +| RemoveTabByName(string tabName) | Removes the tab by name. | 2.2.0 | +| ShowFirstTabAsync() | Selects the first tab and show its associated pane. | 1.0.0 | +| ShowLastTabAsync() | Selects the last tab and show its associated pane. | 1.0.0 | +| ShowRecentTab() | Shows the recently added tab. | 2.2.0 | +| ShowTabByIndexAsync(int tabIndex) | Selects the tab by index and show its associated pane. | 1.0.0 | +| ShowTabByNameAsync(string tabName) | Selects the tab by name and show its associated pane. | 1.0.0 | + +## Tabs Callback Events + +| Event | Description | Added Version | +|:--|:--|:--| +| OnHidden | This event fires after a new tab is shown (and thus the previous active tab is hidden). | 1.0.0 | +| OnHiding | This event fires when a new tab is to be shown (and thus the previous active tab is to be hidden). | 1.0.0 | +| OnShowing | This event fires on tab show, but before the new tab has been shown. | 1.0.0 | +| OnShown | This event fires on tab show after a tab has been shown. | 1.0.0 | + +## Tab Parameters + +| Name | Type | Description | Required | Default | Added Version | +|:--|:--|:--|-:-|:--|:--| +| Content | RenderFragment | Specifies the content to be rendered inside the tab. | ✔️ | | 1.0.0 | +| Disabled | bool | Gets or sets the disabled. | | false | 1.0.0 | +| IsActive | bool | Gets or sets the active tab. | | false | 1.0.0 | +| Name | string | Gets or sets the tab name. | | | 1.0.0 | +| Title | string | Gets or sets the tab title. | | | 1.0.0 | +| TitleTemplate | RenderFragment | Gets or sets the tab title template. | | | 1.0.0 | + +:::info Note +Either **Title** or **TitleTemplate** is required. +::: + +## Tab Callback Events + +| Event | Description | Added Version | +|:--|:--|:--| +| OnClick | This event fires when the user clicks the corresponding tab button and the tab is displayed. | 1.11.0 | + +## Examples + +### Tabs + +Blazor Tabs Component - Examples + +```cshtml showLineNumbers + + + +

    + This is some placeholder content the Home tab's associated content. Clicking another tab will toggle the visibility of this one for the next. +

    +
    +
    + + +

    + This is some placeholder content the Profile tab's associated content. Clicking another tab will toggle the visibility of this one for the next. +

    +
    +
    + + +

    + This is some placeholder content the Contact tab's associated content. Clicking another tab will toggle the visibility of this one for the next. +

    +
    +
    +
    +``` + +[See demo here.](https://demos.blazorbootstrap.com/tabs#examples) + +### Fade effect + +To create a fade-in effect for tabs, add the `EnableFadeEffect="true"` parameter. Additionally, set the `IsActive="true"` parameter on the first tab pane to display its content initially. + +Blazor Tabs Component - Fade effect + +```cshtml {1, 2} showLineNumbers + + + +

    + This is some placeholder content the Home tab's associated content. Clicking another tab will toggle the visibility of this one for the next. +

    +
    +
    + + +

    + This is some placeholder content the Profile tab's associated content. Clicking another tab will toggle the visibility of this one for the next. +

    +
    +
    + + +

    + This is some placeholder content the Contact tab's associated content. Clicking another tab will toggle the visibility of this one for the next. +

    +
    +
    +
    +``` + +[See demo here.](https://demos.blazorbootstrap.com/tabs#fade-effect) + +### Title with icon + +To customize the tab title, use the **TitleTemplate** parameter, as demonstrated in the following example. + +Blazor Tabs Component - Title with icon + +```cshtml {3-5,13-15,23-25} showLineNumbers + + + + Home + + +

    + This is some placeholder content the Home tab's associated content. Clicking another tab will toggle the visibility of this one for the next. +

    +
    +
    + + + Profile + + +

    + This is some placeholder content the Profile tab's associated content. Clicking another tab will toggle the visibility of this one for the next. +

    +
    +
    + + + Contact + + +

    + This is some placeholder content the Contact tab's associated content. Clicking another tab will toggle the visibility of this one for the next. +

    +
    +
    +
    +``` + +[See demo here.](https://demos.blazorbootstrap.com/tabs#title-with-icon) + +### Disable Tab + +Disable specific tabs by adding `Disabled="true"` parameter. + +Blazor Tabs Component - Disable Tab + +```cshtml {16} showLineNumbers + + + +

    + This is some placeholder content the Home tab's associated content. Clicking another tab will toggle the visibility of this one for the next. +

    +
    +
    + + +

    + This is some placeholder content the Profile tab's associated content. Clicking another tab will toggle the visibility of this one for the next. +

    +
    +
    + + +

    + This is some placeholder content the Projects tab's associated content. Clicking another tab will toggle the visibility of this one for the next. +

    +
    +
    + + +

    + This is some placeholder content the Contact tab's associated content. Clicking another tab will toggle the visibility of this one for the next. +

    +
    +
    +
    +``` + +[See demo here.](https://demos.blazorbootstrap.com/tabs#disable-tab) + +### Pills + +To transform the tabs into pills, use the parameter `NavStyle="NavStyle.Pills"`. + +Blazor Tabs Component - Pills + +```cshtml {1} showLineNumbers + + + +

    + This is some placeholder content the Home tab's associated content. Clicking another tab will toggle the visibility of this one for the next. +

    +
    +
    + + +

    + This is some placeholder content the Profile tab's associated content. Clicking another tab will toggle the visibility of this one for the next. +

    +
    +
    + + +

    + This is some placeholder content the Contact tab's associated content. Clicking another tab will toggle the visibility of this one for the next. +

    +
    +
    +
    +``` + +[See demo here.](https://demos.blazorbootstrap.com/tabs#pills) + +### Underline + +Use the `NavStyle="NavStyle.Underline"` parameter to change the tabs to an underlined style. + +Blazor Tabs Component - Underline + +```cshtml {1} showLineNumbers + + + +

    This is the placeholder content for the Home tab.

    +
    +
    + + +

    This is the placeholder content for the Profile tab.

    +
    +
    + + +

    This is the placeholder content for the Contact tab.

    +
    +
    +
    +``` + +[See demo here.](https://demos.blazorbootstrap.com/tabs#underline) + +### Vertical + +Display your tabs vertically by setting the **NavStyle** parameter to **NavStyle.Vertical**. + +Blazor Tabs Component - Vertical + +```cshtml {1} showLineNumbers + + + +

    This is the placeholder content for the Home tab.

    +
    +
    + + +

    This is the placeholder content for the Profile tab.

    +
    +
    + + +

    This is the placeholder content for the Contact tab.

    +
    +
    + + +

    This is the placeholder content for the About tab.

    +
    +
    +
    +``` + +[See demo here.](https://demos.blazorbootstrap.com/tabs#vertical) + +### Vertical pills + +Blazor Tabs Component - Vertical pills + +```cshtml {1} showLineNumbers + + + +

    This is the placeholder content for the Home tab.

    +
    +
    + + +

    This is the placeholder content for the Profile tab.

    +
    +
    + + +

    This is the placeholder content for the Contact tab.

    +
    +
    + + +

    This is the placeholder content for the About tab.

    +
    +
    +
    +``` + +[See demo here.](https://demos.blazorbootstrap.com/tabs#vertical-pills) + +### Vertical underline + +Blazor Tabs Component - Vertical underline + +```cshtml {1} showLineNumbers + + + +

    This is the placeholder content for the Home tab.

    +
    +
    + + +

    This is the placeholder content for the Profile tab.

    +
    +
    + + +

    This is the placeholder content for the Contact tab.

    +
    +
    + + +

    This is the placeholder content for the About tab.

    +
    +
    +
    +``` + +[See demo here.](https://demos.blazorbootstrap.com/tabs#vertical-underline) + +### Activate individual tabs + +You can activate individual tabs in several ways. Use predefined methods such as `ShowFirstTabAsync`, `ShowLastTabAsync`, `ShowTabByIndexAsync`, and `ShowTabByNameAsync`, as shown below. + +Blazor Tabs Component - Activate individual tabs + +```cshtml showLineNumbers + + + +

    This is the placeholder content for the Home tab.

    +
    +
    + + +

    This is the placeholder content for the Profile tab.

    +
    +
    + + +

    This is the placeholder content for the Contact tab.

    +
    +
    + + +

    This is the placeholder content for the Products tab.

    +
    +
    + + +

    This is the placeholder content for the FAQs tab.

    +
    +
    + + +

    This is the placeholder content for the About tab.

    +
    +
    +
    + + + + + + + +``` + +```cs showLineNumbers +@code{ + Tabs tabs; + + private async Task ShowFirstTabAsync() => await tabs.ShowFirstTabAsync(); + private async Task ShowSecondTabAsync() => await tabs.ShowTabByIndexAsync(1); + private async Task ShowThirdTabAsync() => await tabs.ShowTabByIndexAsync(2); + private async Task ShowProductsTabAsync() => await tabs.ShowTabByNameAsync("Products"); + private async Task ShowFaqsAsync() => await tabs.ShowTabByNameAsync("FAQ"); + private async Task ShowLastTabAsync() => await tabs.ShowLastTabAsync(); +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/tabs#activate-individual-tabs) + +### Events + +When displaying a new tab, the events fire in the following sequence: + +1. `OnHiding` (on the currently active tab) +1. `OnShowing` (on the tab that is about to be displayed) +1. `OnHidden` (on the previously active tab, which is the same one that triggered the `OnHiding` event) +1. `OnShown` (on the newly activated tab that has just been displayed, which is the same one that triggered the `OnShowing` event) + +:::info Note +If no tab was already active, then the `OnHiding` and `OnHidden` events will not be fired. +::: + +[See demo here.](https://demos.blazorbootstrap.com/tabs#events) + +### Methods: Set active tab OnAfterRender + +Blazor Tabs Component - Activate individual tabs + +```cshtml showLineNumbers + + + +

    This is the placeholder content for the Home tab.

    +
    +
    + + +

    This is the placeholder content for the Profile tab.

    +
    +
    + + +

    This is the placeholder content for the Contact tab.

    +
    +
    + + +

    This is the placeholder content for the About tab.

    +
    +
    +
    +``` + +```cs showLineNumbers +@code { + Tabs tabs = default!; + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + string userDefaultPreferredTab = "Profile"; // Get the value from Service / API + + switch (userDefaultPreferredTab) + { + case "Home": + await tabs.ShowTabByIndexAsync(0); + break; + case "Profile": + await tabs.ShowTabByIndexAsync(1); + break; + case "Contact": + await tabs.ShowTabByIndexAsync(2); + break; + case "About": + await tabs.ShowTabByIndexAsync(3); + break; + default: + await tabs.ShowTabByIndexAsync(0); + break; + } + } + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/tabs#methods-set-active-tab-onafterrender) + +### Tab: OnClick + +Blazor Tabs Component - Return object on tab switch + +```cshtml {6} showLineNumbers + + @foreach (var customer in customers) + { + + +
    + This is the placeholder content for the @customer.CustomerName tab. +
    +
    +
    + } +
    + +@if (selectedCustomer is not null) +{ +
    Selected customer: @selectedCustomer.CustomerName
    +} +``` + +```cs {8} showLineNumbers +@code { + private List customers = new() { new(1, "Marvin Klein"), new(2, "Vikram Reddy"), new(3, "Bandita PA"), new(4, "Daina JJ") }; + + private Customer selectedCustomer = default!; + + protected override void OnInitialized() => selectedCustomer = customers.First(); + + private void OnTabClick(TabEventArgs args, Customer customer) => selectedCustomer = customer; +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/tabs#tab-on-tab-clicked) + +### Dynamic tabs + +Blazor Tabs Component - Dynamic tabs + +```cshtml {} showLineNumbers +
    +
    + +
    + + + + @foreach (var customer in customers) + { + + +
    + This is the placeholder content for the @customer.CustomerName tab. +
    +
    +
    + } +
    +
    +
    +
    +``` + +```cs {17} showLineNumbers +@code { + Tabs tabsRef = default!; + + private List customers = default!; + + protected override void OnInitialized() + { + customers = new() { new(1, "Marvin Klein"), new(2, "Vikram Reddy"), new(3, "Bandita PA"), new(4, "Daina JJ") }; + } + + private void AddCustomer() + { + var count = customers.Count; + var customer = new Customer(count + 1, $"Customer {count + 1}"); + customers.Add(customer); + + tabsRef.ShowRecentTab(); + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/tabs#dynamic-tabs) + +### Remove dynamic tabs + +:::danger +In the following example, we are deleting tabs dynamically. Ensure that the **@key** parameter is added with unique value. +::: + +Blazor Tabs Component - Remove dynamic tabs + +```cshtml {10} showLineNumbers +
    +
    + +
    + + + + @foreach (var customer in customers) + { + + +
    +
    + This is the placeholder content for the @customer.CustomerName tab. +
    +
    + +
    +
    +
    +
    + } +
    +
    +
    +
    +``` + +```cs {19,26} showLineNumbers +@code { + Tabs tabsRef = default!; + + int count = 1; + private List customers = default!; + + protected override void OnInitialized() + { + customers = new() { new(1, "Marvin Klein"), new(2, "Vikram Reddy"), new(3, "Bandita PA"), new(4, "Daina JJ") }; + var count = customers.Count; + } + + private void AddCustomer() + { + count++; + var customer = new Customer(count, $"Customer {count}"); + customers.Add(customer); + + tabsRef.ShowRecentTab(); + } + + private void RemoveCustomer(Customer customer) + { + customers.Remove(customer); + + tabsRef.RemoveTabByName(customer.CustomerId.ToString()); + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/tabs#remove-dynamic-tabs) \ No newline at end of file diff --git a/docs/docs/05-components/toasts.mdx b/docs/docs/05-components/toasts.mdx new file mode 100644 index 000000000..078aab6c1 --- /dev/null +++ b/docs/docs/05-components/toasts.mdx @@ -0,0 +1,338 @@ +--- +title: Blazor Toasts Component +description: Push notifications to your visitors with a toast, a lightweight and easily customizable Blazor Bootstrap toast message. +image: https://i.imgur.com/W1YkmJH.png + +sidebar_label: Toasts +sidebar_position: 27 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Toasts + +Push notifications to your visitors with a toast, a lightweight and easily customizable Blazor Bootstrap toast message. + +Blazor Toasts are lightweight notifications designed to mimic the push notifications that mobile and desktop operating systems have popularized. They're built with a flexbox, making it easy to align and position. + + + +Blazor Bootstrap: Blazor Toasts Component - Example 1 +Blazor Bootstrap: Blazor Toasts Component - Example 2 + +**Things to know when using the blazor toasts component:** + +- Toasts will not hide automatically if you do not specify `AutoHide="true"`. +- Use [global toasts service](/components/toasts#global-toasts-service-for-the-application) for the application instead of page level toasts. + +## Toasts Parameters + +| Name | Type | Description | Required | Default | Added Version | +|:--|:--|:--|:--|:--|:--| +| AutoHide | bool | Auto hide the toast. | | `false` | 1.0.0 | +| Delay | int | Delay hiding the toast (milli seconds). | | 5000 | 1.0.0 | +| Messages | `List` | List of all the toasts. | ✔️ | | 1.0.0 | +| Placement | `ToastsPlacement` | Specifies the toasts placement. | | `ToastsPlacement.TopRight` | 1.0.0 | +| ShowCloseButton | bool | Show close button. | | `true` | 1.0.0 | +| StackLength | int | Specifies the toast container maximum capacity. | | 5 | 1.0.0 | + +## ToastMessage Properties + +| Name | Type | Description | Required | Default | Added Version | +|:--|:--|:--|:--|:--|:--| +| AutoHide | bool | Gets or sets the auto hide behavior to a message. | | false | 1.9.0 | +| CustomIconName | string | Gets or sets the custom icon name. | | | 1.0.0 | +| HelpText | string | Gets or sets the help text. | | | 1.0.0 | +| IconName | `IconName` | Gets or sets the bootstarp icon name. | | | 1.0.0 | +| Id | Guid | Gets the toast id. | | | 1.0.0 | +| Message | string | Gets or sets the toast message. | ✔️ | | 1.0.0 | +| Title | string | Gets or sets the toast''s message title. | | | 1.0.0 | +| Type | `ToastType` | Gets or sets the type of the toast. | ✔️ | | 1.0.0 | + +## Examples: + +### Toast + +To encourage extensible and predictable toasts, we recommend a header and body. + +Toasts are as flexible as you need and have very little required markup. At a minimum, we require a single element to contain your "toasted" content and strongly encourage a dismiss button. + +Blazor Bootstrap: Blazor Toasts Component - Example + +```cshtml {1} showLineNumbers + + + + + + + + + +``` + +```cs {7-13} showLineNumbers +@code { + List messages = new List(); + + private void ShowMessage(ToastType toastType) => messages.Add(CreateToastMessage(toastType)); + + private ToastMessage CreateToastMessage(ToastType toastType) + => new ToastMessage + { + Type = toastType, + Title = "Blazor Bootstrap", + HelpText = $"{DateTime.Now}", + Message = $"Hello, world! This is a toast message. DateTime: {DateTime.Now}", + }; +} +``` + +[See toasts demo here.](https://demos.blazorbootstrap.com/toasts#examples) + +### Toast without title + +Customize your toasts by removing sub-components, tweaking them with utilities. + +Here we've created a simple toast. You can create different toast color schemes with the `Color` parameter. + +
    +Blazor Bootstrap: Toasts Component - Example +
    + +
    +Blazor Bootstrap: Toasts Component - Example +
    + +```cshtml {1} showLineNumbers + + + + + + + + + + +``` + +```cs {7-11} showLineNumbers +@code { + List messages = new List(); + + private void ShowMessage(ToastType toastType) => messages.Add(CreateToastMessage(toastType)); + + private ToastMessage CreateToastMessage(ToastType toastType) + => new ToastMessage + { + Type = toastType, + Message = $"Hello, world! This is a simple toast message. DateTime: {DateTime.Now}", + }; +} +``` + +[See toasts without title demo here.](https://demos.blazorbootstrap.com/toasts#toast-without-title) + +### Auto hide + +Add `AutoHide="true"` parameter to hide the Blazor Toasts after the delay. The default delay is 5000 milliseconds, be sure to update the delay timeout so that users have enough time to read the toast. + +Blazor Bootstrap: Blazor Toasts Component - Auto hide + +```cshtml {1} showLineNumbers + + + + + + + + + +``` + +```cs showLineNumbers +@code { + List messages = new List(); + + private void ShowMessage(ToastType toastType) => messages.Add(CreateToastMessage(toastType)); + + private ToastMessage CreateToastMessage(ToastType toastType) + => new ToastMessage + { + Type = toastType, + Title = "Blazor Bootstrap", + HelpText = $"{DateTime.Now}", + Message = $"Hello, world! This is a toast message. DateTime: {DateTime.Now}", + }; +} +``` + +[See auto hide toasts demo here.](https://demos.blazorbootstrap.com/toasts#auto-hide) + +### Auto hide individual messages + +Set `AutoHide="true"` property on **ToastMessage** to hide individual Blazor Toast message after the delay. The default delay is 5000 milliseconds, be sure to update the delay timeout so that users have enough time to read the toast. + +In the below example, `AutoHide="false"` for **Danger** and **Warning** messages. + +```cshtml {1} showLineNumbers + + + + + + + + + +``` + +```cs {15} showLineNumbers +@code { + List messages = new List(); + + private void ShowMessage(ToastType toastType) => messages.Add(CreateToastMessage(toastType)); + + private ToastMessage CreateToastMessage(ToastType toastType) + { + var toastMessage = new ToastMessage(); + + toastMessage.Type = toastType; + toastMessage.Title = "Blazor Bootstrap"; + toastMessage.HelpText = $"{DateTime.Now}"; + toastMessage.Message = $"Hello, world! This is a toast message. DateTime: {DateTime.Now}"; + // disable auto hide for `danger` and `warning` messages. + toastMessage.AutoHide = !(toastType == ToastType.Danger || toastType == ToastType.Warning); + + return toastMessage; + } +} +``` + +[See auto hide individual toasts demo here.](https://demos.blazorbootstrap.com/toasts#auto-hide-individual-messages) + +### Placement + +Change the Blazor Toasts placement according to your need. The default placement will be top right corner. Use the `ToastsPlacement` parameter to update the Blazor Toasts placement. + +```cshtml {1} showLineNumbers + + + + + + + + + + + +``` + +```cs showLineNumbers +@code { + ToastsPlacement toastsPlacement = ToastsPlacement.TopRight; + List messages = new(); + + private void ChangePlacement(ToastsPlacement placement) + { + if (!messages.Any()) + { + messages.Add( + new ToastMessage() + { + Type = ToastType.Success, + Title = "Blazor Bootstrap", + HelpText = $"{DateTime.Now}", + Message = $"Hello, world! This is a toast message. DateTime: {DateTime.Now}", + }); + } + toastsPlacement = placement; + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/toasts#placement) + +### Stack Length + +Blazor Toasts component shows a maximum of 5 toasts by default. If you add a new toast to the existing list, the first toast gets deleted like FIFO (First In First Out). Change the maximum capacity according to your need by using the **StackLength** parameter. + +In the below example, StackLength is set to 3. It shows a maximum of 3 toast messages at any time. + +```cshtml {1} showLineNumbers + + + + + + + + + +``` + +```cs showLineNumbers +@code { + List messages = new List(); + + private void ShowMessage(ToastType toastType) => messages.Add(CreateToastMessage(toastType)); + + private ToastMessage CreateToastMessage(ToastType toastType) + => new ToastMessage + { + Type = toastType, + Title = "Blazor Bootstrap", + HelpText = $"{DateTime.Now}", + Message = $"Hello, world! This is a toast message. DateTime: {DateTime.Now}", + }; +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/toasts#stack-length) + +### Global toasts service for the application + +1. Add the `Toasts` component in MainLayout.razor page as shown below. + +```cshtml {9} showLineNumbers +@inherits LayoutComponentBase + +... + +... MainLayour.razor code goes here ... + +... + + +``` +:::tip +Set the `Toasts` component parameters as per your requirement. +::: + +2. Inject `ToastService`, then call the `Notify(...)` method as shown below. + +```cshtml {} showLineNumbers +@code { + + [Inject] protected ToastService ToastService { get; set; } + + private void SaveEmployee() + { + try + { + // TODO: call the service/api to save the employee details + + ToastService.Notify(new(ToastType.Success, $"Employee details saved successfully.")); + } + catch(Exception ex) + { + // handle exception + + ToastService.Notify(new(ToastType.Danger, $"Error: {ex.Message}.")); + } + } +} +``` \ No newline at end of file diff --git a/docs/docs/05-components/tooltips.mdx b/docs/docs/05-components/tooltips.mdx new file mode 100644 index 000000000..953f2519e --- /dev/null +++ b/docs/docs/05-components/tooltips.mdx @@ -0,0 +1,119 @@ +--- +title: Blazor Tooltip Component +description: Use Blazor Bootstrap tooltip component to add custom tooltips to your web pages. +image: https://i.imgur.com/uqvqb2i.jpg + +sidebar_label: Tooltips +sidebar_position: 28 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Tooltips + +Use Blazor Bootstrap tooltip component to add custom tooltips to your web pages. + + + +## Parameters + +| Name | Type | Description | Required | Default | Added Version | +|--|--|--|--|--|--| +| ChildContent | RenderFragment | Gets or sets the content to be rendered within the component. | | | 1.0.0 | +| Color | `TooltipColor` | Gets or sets the tooltip color. | | `TooltipColor.None` | 1.10.0 | +| IsHtml | bool | Gets or sets a value indicating whether to display the content as HTML instead of text. | | `false` | 2.1.0 | +| Placement | `TooltipPlacement` | Specifies the tooltip placement. Default is top right. | | `TooltipPlacement.Top` | 1.0.0 | +| Title | string | Displays informative text when users hover, focus, or tap an element. | ✔️ | | 1.0.0 | + +## Examples + +### Tooltips + +
    + Blazor Bootstrap: Tooltip Component +
    + +
    + Blazor Bootstrap: Tooltip Component +
    + +
    + Blazor Bootstrap: Tooltip Component +
    + +
    + Blazor Bootstrap: Tooltip Component +
    + +```cshtml showLineNumbers +
    + Tooltip Left +
    +
    + Tooltip Top +
    +
    + Tooltip Right +
    +
    + Tooltip Bottom +
    +``` + +[See tooltips demo here.](https://demos.blazorbootstrap.com/tooltips#examples) + +### Disabled button with tooltip + +Blazor Bootstrap: Tooltip Component + +```cshtml showLineNumbers + + + +``` +[See disabled button with tooltip demo here.](https://demos.blazorbootstrap.com/tooltips#disabled-button-with-tootip) + +### Tooltip icon with click event + +Blazor Bootstrap: Tooltip Component + +```cshtml showLineNumbers + + + +``` + +```cs showLineNumbers +@code { + private void OnClick() + { + Console.WriteLine($"clicked"); + } +} +``` +[See icon with tooltip demo here.](https://demos.blazorbootstrap.com/tooltips#icon-with-click-event) + +### Dynamically update the tooltip text + +```cshtml showLineNumbers +
    + Tooltip Bottom +
    + + +@code { + private string text = "Tooltip text"; + + private void ChangeTooltip() => text = $"Updated {DateTime.Now.ToLongTimeString()}"; +} +``` +[see demo here](https://demos.blazorbootstrap.com/tooltips#dynamically-update-the-tooltip-text) + +### Tooltip with HTML + +Blazor Bootstrap: Tooltip with HTML + +```cshtml {} showLineNumbers +Tooltip with HTML +``` +[see demo here](https://demos.blazorbootstrap.com/tooltips#tooltip-with-html) diff --git a/docs/docs/06-data-visualization/_category_.json b/docs/docs/06-data-visualization/_category_.json new file mode 100644 index 000000000..b0178d52a --- /dev/null +++ b/docs/docs/06-data-visualization/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Data Visualization", + "position": 6 +} diff --git a/docs/docs/06-data-visualization/bar-chart.mdx b/docs/docs/06-data-visualization/bar-chart.mdx new file mode 100644 index 000000000..b1a96a5e5 --- /dev/null +++ b/docs/docs/06-data-visualization/bar-chart.mdx @@ -0,0 +1,607 @@ +--- +title: Blazor Bar Chart +description: A Blazor Bootstrap bar chart component is used to represent data values as vertical bars. It is sometimes used to show trend data and to compare multiple data sets side by side. +image: https://i.imgur.com/IX3bajc.png + +sidebar_label: Bar Chart +sidebar_position: 1 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Bar Chart + +A Blazor Bootstrap bar chart component is used to represent data values as vertical bars. +It is sometimes used to show trend data and to compare multiple data sets side by side. + + + +Blazor Chart Component - Blazor Bar Chart + +## Parameters + +| Name | Type | Description | Required | Default | Added Version | +|:--|:--|:--|:--|:--|:--| +| Height | int | Gets or sets chart height. | | | 1.0.0 | +| Width | int | Gets or sets chart width. | | | 1.0.0 | + +## Methods + +| Name | Return type | Description | Added Version | +|:--|:--|:--|:--| +| AddDataAsync | `ChartData` | Adds data to bar chart. | 1.10.0 | +| AddDatasetAsync | `ChartData` | Adds dataset to bar chart. | 1.10.0 | +| InitializeAsync | Task | Initialize Bar Chart. | 1.0.0 | +| UpdateAsync | Task | Update Bar Chart. | 1.0.0 | + +## ChartData Members + +| Property Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| Datasets | `List` | null | ✔️ | Gets or sets the Datasets. | 1.0.0 | +| Labels | `List` | null | ✔️ | Gets or sets the Labels. | 1.0.0 | + +## BarChartDataset Members + +:::info +**BarChartDataset** implements **IChartDataset**. +::: + +| Property Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| BackgroundColor | `List` | null | | Get or sets the BackgroundColor. | 1.0.0 | +| BarPercentage | double | 0.8 | | Percent (0-1) of the available width each bar should be within the category width. 1.0 will take the whole category width and put the bars right next to each other. | 1.0.0 | +| BorderColor | `List` | null | | Get or sets the BorderColor. | 1.0.0 | +| BorderRadius | int | 0 | | Border radius. | 1.0.0 | +| BorderWidth | `List` | null | | Get or sets the BorderWidth. | 1.0.0 | +| CategoryPercentage | double | 0.8 | | Percent (0-1) of the available width each category should be within the sample width. | 1.0.0 | +| Clip | string | null | | How to clip relative to chartArea. Positive value allows overflow, negative value clips that many pixels inside chartArea. 0 = clip at chartArea. Clipping can also be configured per side: clip: {left: 5, top: false, right: -2, bottom: 0} | 1.0.0 | +| Datalabels | `BarChartDatasetDataLabels` | | | Get or sets the data labels | | 1.10.2 | +| Data | `List` | null | | Get or sets the Data. | 1.0.0 | +| Hidden | bool | false | | Configures the visibility state of the dataset. Set it to true, to hide the dataset from the chart. | 1.0.0 | +| HoverBackgroundColor | `List` | null | ✔️ | Get or sets the HoverBackgroundColor. | 1.0.0 | +| HoverBorderColor | `List` | null | ✔️ | Get or sets the HoverBorderColor. | 1.0.0 | +| HoverBorderWidth | `List` | null | ✔️ | Get or sets the HoverBorderWidth. | 1.0.0 | +| Label | string | null | | The label for the dataset which appears in the legend and tooltips. | 1.0.0 | +| Type | string | null | ✔️ | Get or sets the chart type. | 1.0.0 | +| XAxisID | string | null | | The ID of the x axis to plot this dataset on. | 1.0.0 | +| YAxisID | string | null | | The ID of the y axis to plot this dataset on. | 1.0.0 | + +## BarChartDatasetDataLabels Members + +| Property Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| Align | `string?` | `center` | | Gets or sets the align. | 1.10.2 | +| Anchor | `string?` | `center` | | Gets or sets the anchor. | 1.10.2 | + +## BarChartOptions Members + +:::info +**BarChartOptions** implements **ChartOptions**. +::: + +| Property Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| IndexAxis | string | x | | The base axis of the chart. 'x' for vertical charts and 'y' for horizontal charts. | 1.0.0 | +| Interaction | `Interaction` | | | Gets or sets the Interaction. | 1.0.0 | +| Layout | `ChartLayout` | | | Gets or sets the ChartLayout. | 1.0.0 | +| Locale | `string?` | | | Gets or sets the locale. By default, the chart is using the default locale of the platform which is running on. | 1.10.0 | +| Plugins | `BarChartPlugins` | | | Gets or sets the Plugins. | 1.10.2 | +| Responsive | bool | false | | Gets or sets the Responsive. | 1.0.0 | +| Scales | `Scales` | | | Gets or sets the Scales. | 1.0.0 | + +## Examples + +### Prerequisites + +Refer to the [getting started guide](/getting-started/blazor-webassembly) for setting up charts. + +### How it works + +In the following example, a categorical 12-color palette is used. + +:::tip +For data visualization, you can use the predefined palettes `ColorBuilder.CategoricalTwelveColors` for a 12-color palette and `ColorBuilder.CategoricalSixColors` for a 6-color palette. +These palettes offer a range of distinct and visually appealing colors that can be applied to represent different categories or data elements in your visualizations. +::: + +Blazor Bootstrap: Bar Chart Component - How it works + +```cshtml {} showLineNumbers + + + + + + + +``` + +```cs {} showLineNumbers +@code { + private BarChart barChart = default!; + private BarChartOptions barChartOptions = default!; + private ChartData chartData = default!; + + private int datasetsCount = 0; + private int labelsCount = 0; + private string[] months = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; + private Random random = new(); + + protected override void OnInitialized() + { + chartData = new ChartData { Labels = GetDefaultDataLabels(6), Datasets = GetDefaultDataSets(3) }; + barChartOptions = new BarChartOptions { Responsive = true, Interaction = new Interaction { Mode = InteractionMode.Index } }; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await barChart.InitializeAsync(chartData, barChartOptions); + } + await base.OnAfterRenderAsync(firstRender); + } + + private async Task RandomizeAsync() + { + if (chartData is null || chartData.Datasets is null || !chartData.Datasets.Any()) return; + + var newDatasets = new List(); + + foreach (var dataset in chartData.Datasets) + { + if (dataset is BarChartDataset barChartDataset + && barChartDataset is not null + && barChartDataset.Data is not null) + { + var count = barChartDataset.Data.Count; + + var newData = new List(); + for (var i = 0; i < count; i++) + { + newData.Add(random.Next(200)); + } + + barChartDataset.Data = newData; + newDatasets.Add(barChartDataset); + } + } + + chartData.Datasets = newDatasets; + + await barChart.UpdateAsync(chartData, barChartOptions); + } + + private async Task AddDatasetAsync() + { + if (chartData is null || chartData.Datasets is null) return; + + if (datasetsCount >= 12) + return; + + var chartDataset = GetRandomBarChartDataset(); + chartData = await barChart.AddDatasetAsync(chartData, chartDataset, barChartOptions); + } + + private async Task AddDataAsync() + { + if (chartData is null || chartData.Datasets is null) + return; + + if (labelsCount >= 12) + return; + + var data = new List(); + foreach (var dataset in chartData.Datasets) + { + if (dataset is BarChartDataset barChartDataset) + data.Add(new BarChartDatasetData(barChartDataset.Label, random.Next(200))); + } + + chartData = await barChart.AddDataAsync(chartData, GetNextDataLabel(), data); + } + + private async Task ShowHorizontalBarChartAsync() + { + barChartOptions.IndexAxis = "y"; + await barChart.UpdateAsync(chartData, barChartOptions); + } + + private async Task ShowVerticalBarChartAsync() + { + barChartOptions.IndexAxis = "x"; + await barChart.UpdateAsync(chartData, barChartOptions); + } + + #region Data Preparation + + private List GetDefaultDataSets(int numberOfDatasets) + { + var datasets = new List(); + + for (var index = 0; index < numberOfDatasets; index++) + { + datasets.Add(GetRandomBarChartDataset()); + } + + return datasets; + } + + private BarChartDataset GetRandomBarChartDataset() + { + var c = ColorBuilder.CategoricalTwelveColors[datasetsCount].ToColor(); + + datasetsCount += 1; + + return new BarChartDataset() + { + Label = $"Product {datasetsCount}", + Data = GetRandomData(), + BackgroundColor = new List { c.ToRgbString() }, + BorderColor = new List { c.ToRgbString() }, + BorderWidth = new List { 0 }, + }; + } + + private List GetRandomData() + { + var data = new List(); + for (var index = 0; index < labelsCount; index++) + { + data.Add(random.Next(200)); + } + + return data; + } + + private List GetDefaultDataLabels(int numberOfLabels) + { + var labels = new List(); + for (var index = 0; index < numberOfLabels; index++) + { + labels.Add(GetNextDataLabel()); + } + + return labels; + } + + private string GetNextDataLabel() + { + labelsCount += 1; + return months[labelsCount - 1]; + } + + #endregion Data Preparation +} +``` + +[See the demo here.](https://demos.blazorbootstrap.com/charts/bar-chart#how-it-works) + +### Horizontal bar chart + +Blazor Bootstrap: Bar Chart Component - Horizontal bar chart + +```cshtml {} showLineNumbers + +``` + +```cs {} showLineNumbers +@code { + private BarChart barChart = default!; + private BarChartOptions barChartOptions = default!; + private ChartData chartData = default!; + + protected override void OnInitialized() + { + var labels = new List { "Chrome", "Firefox", "Safari", "Edge" }; + var datasets = new List(); + + var dataset1 = new BarChartDataset() + { + Data = new List { 55000, 15000, 18000, 21000 }, + BackgroundColor = new List { ColorBuilder.CategoricalTwelveColors[0] }, + BorderColor = new List { ColorBuilder.CategoricalTwelveColors[0] }, + BorderWidth = new List { 0 }, + }; + datasets.Add(dataset1); + + chartData = new ChartData { + Labels = labels, + Datasets = datasets }; + + barChartOptions = new BarChartOptions(); + barChartOptions.Responsive = true; + barChartOptions.Interaction = new Interaction { Mode = InteractionMode.Y }; + barChartOptions.IndexAxis = "y"; + + barChartOptions.Scales.X.Title.Text = "Visitors"; + barChartOptions.Scales.X.Title.Display = true; + + barChartOptions.Scales.Y.Title.Text = "Browser"; + barChartOptions.Scales.Y.Title.Display = true; + + barChartOptions.Plugins.Legend.Display = false; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await barChart.InitializeAsync(chartData, barChartOptions); + } + await base.OnAfterRenderAsync(firstRender); + } +} +``` + +[See the demo here.](https://demos.blazorbootstrap.com/charts/bar-chart#horizontal-bar-chart) + +### Stacked bar chart + +Blazor Bootstrap: Bar Chart Component - Stacked bar chart + +```cshtml {} showLineNumbers + +``` + +```cs {} showLineNumbers +@code { + private BarChart barChart = default!; + private BarChartOptions barChartOptions = default!; + private ChartData chartData = default!; + + protected override void OnInitialized() + { + var colors = ColorBuilder.CategoricalTwelveColors; + + var labels = new List { "Chrome", "Firefox", "Safari", "Edge" }; + var datasets = new List(); + + var dataset1 = new BarChartDataset() + { + Label = "Windows", + Data = new List { 28000, 8000, 2000, 17000 }, + BackgroundColor = new List { colors[0] }, + BorderColor = new List { colors[0] }, + BorderWidth = new List { 0 }, + }; + datasets.Add(dataset1); + + var dataset2 = new BarChartDataset() + { + Label = "macOS", + Data = new List { 8000, 10000, 14000, 8000 }, + BackgroundColor = new List { colors[1] }, + BorderColor = new List { colors[1] }, + BorderWidth = new List { 0 }, + }; + datasets.Add(dataset2); + + var dataset3 = new BarChartDataset() + { + Label = "Other", + Data = new List { 28000, 10000, 14000, 8000 }, + BackgroundColor = new List { colors[2] }, + BorderColor = new List { colors[2] }, + BorderWidth = new List { 0 }, + }; + datasets.Add(dataset3); + + chartData = new ChartData + { + Labels = labels, + Datasets = datasets + }; + + barChartOptions = new(); + barChartOptions.Responsive = true; + barChartOptions.Interaction = new Interaction { Mode = InteractionMode.Y }; + barChartOptions.IndexAxis = "y"; + + barChartOptions.Scales.X.Title.Text = "Visitors"; + barChartOptions.Scales.X.Title.Display = true; + + barChartOptions.Scales.Y.Title.Text = "Browser"; + barChartOptions.Scales.Y.Title.Display = true; + + barChartOptions.Scales.X.Stacked = true; + barChartOptions.Scales.Y.Stacked = true; + + barChartOptions.Plugins.Title.Text = "Operating system"; + barChartOptions.Plugins.Title.Display = true; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await barChart.InitializeAsync(chartData, barChartOptions); + } + await base.OnAfterRenderAsync(firstRender); + } +} +``` + +[See the demo here.](https://demos.blazorbootstrap.com/charts/bar-chart#stacked-bar-chart) + +### Locale + +By default, the chart is using the default locale of the platform on which it is running. +In the following example, you will see the chart in the **German** locale (**de_DE**). + +Blazor Bootstrap: Bar Chart Component - Locale + +```cshtml {} showLineNumbers + +``` + +```cs {} showLineNumbers +@code { + private BarChart barChart = default!; + private BarChartOptions barChartOptions = default!; + private ChartData chartData = default!; + + protected override void OnInitialized() + { + var colors = ColorBuilder.CategoricalTwelveColors; + + var labels = new List { "Chrome", "Firefox", "Safari", "Edge" }; + var datasets = new List(); + + var dataset1 = new BarChartDataset() + { + Label = "Windows", + Data = new List { 28000, 8000, 2000, 17000 }, + BackgroundColor = new List { colors[0] }, + BorderColor = new List { colors[0] }, + BorderWidth = new List { 0 }, + }; + datasets.Add(dataset1); + + var dataset2 = new BarChartDataset() + { + Label = "macOS", + Data = new List { 8000, 10000, 14000, 8000 }, + BackgroundColor = new List { colors[1] }, + BorderColor = new List { colors[1] }, + BorderWidth = new List { 0 }, + }; + datasets.Add(dataset2); + + var dataset3 = new BarChartDataset() + { + Label = "Other", + Data = new List { 28000, 10000, 14000, 8000 }, + BackgroundColor = new List { colors[2] }, + BorderColor = new List { colors[2] }, + BorderWidth = new List { 0 }, + }; + datasets.Add(dataset3); + + chartData = new ChartData + { + Labels = labels, + Datasets = datasets + }; + + barChartOptions = new(); + barChartOptions.Locale = "de-DE"; + barChartOptions.Responsive = true; + barChartOptions.Interaction = new Interaction { Mode = InteractionMode.Y }; + barChartOptions.IndexAxis = "y"; + + barChartOptions.Scales.X.Title.Text = "Visitors"; + barChartOptions.Scales.X.Title.Display = true; + + barChartOptions.Scales.Y.Title.Text = "Browser"; + barChartOptions.Scales.Y.Title.Display = true; + + barChartOptions.Scales.X.Stacked = true; + barChartOptions.Scales.Y.Stacked = true; + + barChartOptions.Plugins.Title.Text = "Operating system"; + barChartOptions.Plugins.Title.Display = true; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await barChart.InitializeAsync(chartData, barChartOptions); + } + await base.OnAfterRenderAsync(firstRender); + } +} +``` + +[See the demo here.](https://demos.blazorbootstrap.com/charts/bar-chart#locale) + +### Data labels + +Blazor Bootstrap: Bar Chart Component - Data labels + +```cshtml {} showLineNumbers + +``` + +```cs {72} showLineNumbers +@code { + private BarChart barChart = default!; + private BarChartOptions barChartOptions = default!; + private ChartData chartData = default!; + + protected override void OnInitialized() + { + var colors = ColorBuilder.CategoricalTwelveColors; + + var labels = new List { "Chrome", "Firefox", "Safari", "Edge" }; + var datasets = new List(); + + var dataset1 = new BarChartDataset() + { + Label = "Windows", + Data = new List { 28000, 8000, 2000, 17000 }, + BackgroundColor = new List { colors[0] }, + BorderColor = new List { colors[0] }, + BorderWidth = new List { 0 }, + }; + datasets.Add(dataset1); + + var dataset2 = new BarChartDataset() + { + Label = "macOS", + Data = new List { 8000, 10000, 14000, 8000 }, + BackgroundColor = new List { colors[1] }, + BorderColor = new List { colors[1] }, + BorderWidth = new List { 0 }, + }; + datasets.Add(dataset2); + + var dataset3 = new BarChartDataset() + { + Label = "Other", + Data = new List { 28000, 10000, 14000, 8000 }, + BackgroundColor = new List { colors[2] }, + BorderColor = new List { colors[2] }, + BorderWidth = new List { 0 }, + }; + datasets.Add(dataset3); + + chartData = new ChartData + { + Labels = labels, + Datasets = datasets + }; + + barChartOptions = new(); + barChartOptions.Responsive = true; + barChartOptions.Interaction = new Interaction { Mode = InteractionMode.Y }; + barChartOptions.IndexAxis = "y"; + + barChartOptions.Scales.X.Title.Text = "Visitors"; + barChartOptions.Scales.X.Title.Display = true; + + barChartOptions.Scales.Y.Title.Text = "Browser"; + barChartOptions.Scales.Y.Title.Display = true; + + barChartOptions.Scales.X.Stacked = true; + barChartOptions.Scales.Y.Stacked = true; + + barChartOptions.Plugins.Title.Text = "Operating system"; + barChartOptions.Plugins.Title.Display = true; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + // pass the plugin name to enable the data labels + await barChart.InitializeAsync(chartData: chartData, chartOptions: barChartOptions, plugins: new string[] { "ChartDataLabels" }); + } + await base.OnAfterRenderAsync(firstRender); + } +} +``` + +[See the demo here.](https://demos.blazorbootstrap.com/charts/bar-chart#data-labels) diff --git a/docs/docs/06-data-visualization/doughnut-chart.mdx b/docs/docs/06-data-visualization/doughnut-chart.mdx new file mode 100644 index 000000000..76dc0e8e5 --- /dev/null +++ b/docs/docs/06-data-visualization/doughnut-chart.mdx @@ -0,0 +1,537 @@ +--- +title: Blazor Doughnut Chart +description: A Blazor Bootstrap donut chart component is a circular chart that shows the proportional values of different categories. It is similar to a pie chart, but the center of the donut chart is hollow. This makes it easier to see the individual values of each category. +image: https://i.imgur.com/xEPhAsW.png + +sidebar_label: Doughnut Chart +sidebar_position: 2 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Doughnut Chart + +A Blazor Bootstrap donut chart component is a circular chart that shows the proportional values of different categories. +It is similar to a pie chart, but the center of the donut chart is hollow. This makes it easier to see the individual values of each category. + + + +Blazor Chart Component - Blazor Doughnut Chart + +## Parameters + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| Height | int | | | Gets or sets chart height. | 1.0.0 | +| Width | int | | | Get or sets chart width. | 1.0.0 | + +## Methods + +| Name | Return type | Description | Added Version | +|:--|:--|:--|:--| +| AddDataAsync | `ChartData` | Adds data to bar chart. | 1.10.0 | +| AddDatasetAsync | `ChartData` | Adds dataset to bar chart. | 1.10.0 | +| InitializeAsync | Task | Initialize Bar Chart. | 1.0.0 | +| UpdateAsync | Task | Update Bar Chart. | 1.0.0 | + +## ChartData Members + +| Property Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| Datasets | `List` | null | ✔️ | Gets or sets the Datasets. | 1.0.0 | +| Labels | `List` | null | ✔️ | Gets or sets the Labels. | 1.0.0 | + +## DoughnutChartDataset Members + +:::info +**DoughnutChartDataset** implements **IChartDataset**. +::: + +| Property Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| BackgroundColor | `List` | null | | Get or sets the BackgroundColor. | 1.0.0 | +| BorderColor | `List` | null | | Get or sets the BorderColor. | 1.0.0 | +| BorderWidth | `List` | null | | Get or sets the BorderWidth. | 1.0.0 | +| Clip | string | null | | How to clip relative to chartArea. Positive value allows overflow, negative value clips that many pixels inside chartArea. 0 = clip at chartArea. Clipping can also be configured per side: clip: {left: 5, top: false, right: -2, bottom: 0} | 1.0.0 | +| Data | `List` | null | | Get or sets the Data. | 1.0.0 | +| Datalabels | `DoughnutChartDatasetDataLabels` | | | Get or sets the data labels | | 1.10.2 | +| Hidden | bool | false | | Configures the visibility state of the dataset. Set it to true, to hide the dataset from the chart. | 1.0.0 | +| HoverBackgroundColor | `List` | null | ✔️ | Get or sets the HoverBackgroundColor. | 1.0.0 | +| HoverBorderColor | `List` | null | ✔️ | Get or sets the HoverBorderColor. | 1.0.0 | +| HoverBorderWidth | `List` | null | ✔️ | Get or sets the HoverBorderWidth. | 1.0.0 | +| Label | string | null | | The label for the dataset which appears in the legend and tooltips. | 1.0.0 | +| Type | string | null | ✔️ | Get or sets the chart type. | 1.0.0 | + +## DoughnutChartDatasetDataLabels Members + +| Property Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| Anchor | `string?` | `center` | | Gets or sets the anchor. | 1.10.2 | +| BorderWidth | `double?` | `2` | | Gets or sets the border width. | 1.10.2 | + +## DoughnutChartOptions Members + +:::info +**DoughnutChartOptions** implements **ChartOptions**. +::: + +| Property Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| Locale | `string?` | | | Gets or sets the locale. By default, the chart is using the default locale of the platform which is running on. | 1.10.0 | +| Plugins | `DoughnutChartPlugins` | | | Gets or sets the Plugins. | 1.10.2 | +| Responsive | bool | false | | Gets or sets the Responsive. | 1.0.0 | + +## Examples + +### Prerequisites + +Refer to the [getting started guide](/getting-started/blazor-webassembly) for setting up charts. + +### How it works + +In the following example, a categorical 12-color palette is used. + +:::tip +For data visualization, you can use the predefined palettes `ColorBuilder.CategoricalTwelveColors` for a 12-color palette and `ColorBuilder.CategoricalSixColors` for a 6-color palette. +These palettes offer a range of distinct and visually appealing colors that can be applied to represent different categories or data elements in your visualizations. +::: + +Blazor Bootstrap: Doughnut Chart Component - How it works + +```cshtml {} showLineNumbers + + + + + +``` + +```cs {} showLineNumbers +@code { + private DoughnutChart doughnutChart = default!; + private DoughnutChartOptions doughnutChartOptions = default!; + private ChartData chartData = default!; + private string[]? backgroundColors; + + private int datasetsCount = 0; + private int dataLabelsCount = 0; + + private Random random = new(); + + protected override void OnInitialized() + { + backgroundColors = ColorBuilder.CategoricalTwelveColors; + chartData = new ChartData { Labels = GetDefaultDataLabels(4), Datasets = GetDefaultDataSets(1) }; + + doughnutChartOptions = new(); + doughnutChartOptions.Responsive = true; + doughnutChartOptions.Plugins.Title.Text = "2022 - Sales"; + doughnutChartOptions.Plugins.Title.Display = true; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await doughnutChart.InitializeAsync(chartData, doughnutChartOptions); + } + await base.OnAfterRenderAsync(firstRender); + } + + private async Task RandomizeAsync() + { + if (chartData is null || chartData.Datasets is null || !chartData.Datasets.Any()) return; + + var newDatasets = new List(); + + foreach (var dataset in chartData.Datasets) + { + if (dataset is DoughnutChartDataset doughnutChartDataset + && doughnutChartDataset is not null + && doughnutChartDataset.Data is not null) + { + var count = doughnutChartDataset.Data.Count; + + var newData = new List(); + for (var i = 0; i < count; i++) + { + newData.Add(random.Next(0, 100)); + } + + doughnutChartDataset.Data = newData; + newDatasets.Add(doughnutChartDataset); + } + } + + chartData.Datasets = newDatasets; + + await doughnutChart.UpdateAsync(chartData, doughnutChartOptions); + } + + private async Task AddDatasetAsync() + { + if (chartData is null || chartData.Datasets is null) return; + + var chartDataset = GetRandomDoughnutChartDataset(); + chartData = await doughnutChart.AddDatasetAsync(chartData, chartDataset, doughnutChartOptions); + } + + private async Task AddDataAsync() + { + if (dataLabelsCount >= 12) + return; + + if (chartData is null || chartData.Datasets is null) + return; + + var data = new List(); + foreach (var dataset in chartData.Datasets) + { + if (dataset is DoughnutChartDataset doughnutChartDataset) + { + data.Add(new DoughnutChartDatasetData(doughnutChartDataset.Label, random.Next(0, 100), backgroundColors![dataLabelsCount])); + } + } + + chartData = await doughnutChart.AddDataAsync(chartData, GetNextDataLabel(), data); + + dataLabelsCount += 1; + } + + #region Data Preparation + + private List GetDefaultDataSets(int numberOfDatasets) + { + var datasets = new List(); + + for (var index = 0; index < numberOfDatasets; index++) + { + datasets.Add(GetRandomDoughnutChartDataset()); + } + + return datasets; + } + + private DoughnutChartDataset GetRandomDoughnutChartDataset() + { + datasetsCount += 1; + return new() { Label = $"Team {datasetsCount}", Data = GetRandomData(), BackgroundColor = GetRandomBackgroundColors() }; + } + + private List GetRandomData() + { + var data = new List(); + for (var index = 0; index < dataLabelsCount; index++) + { + data.Add(random.Next(0, 100)); + } + + return data; + } + + private List GetRandomBackgroundColors() + { + var colors = new List(); + for (var index = 0; index < dataLabelsCount; index++) + { + colors.Add(backgroundColors![index]); + } + + return colors; + } + + private List GetDefaultDataLabels(int numberOfLabels) + { + var labels = new List(); + for (var index = 0; index < numberOfLabels; index++) + { + labels.Add(GetNextDataLabel()); + dataLabelsCount += 1; + } + + return labels; + } + + private string GetNextDataLabel() => $"Product {dataLabelsCount + 1}"; + + private string GetNextDataBackgrounfColor() => backgroundColors![dataLabelsCount]; + + #endregion Data Preparation +} +``` + +[See the demo here.](https://demos.blazorbootstrap.com/charts/doughnut-chart#how-it-works) + +### Locale + +By default, the chart is using the default locale of the platform on which it is running. +In the following example, you will see the chart in the **German** locale (**de_DE**). + +Blazor Bootstrap: Doughnut Chart Component - Locale + +```cshtml {} showLineNumbers +@using BlazorBootstrap.Extensions +@using Color = System.Drawing.Color + + +``` + +```cs {} showLineNumbers +@code { + private LineChart lineChart = default!; + private LineChartOptions lineChartOptions = default!; + private ChartData chartData = default!; + + protected override void OnInitialized() + { + var colors = ColorBuilder.CategoricalTwelveColors; + + var labels = new List { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; + var datasets = new List(); + + var dataset1 = new LineChartDataset() + { + Label = "Windows", + Data = new List { 7265791, 5899643, 6317759, 6315641, 5338211, 8496306, 7568556, 8538933, 8274297, 8657298, 7548388, 7764845 }, + BackgroundColor = new List { colors[0] }, + BorderColor = new List { colors[0] }, + BorderWidth = new List { 2 }, + HoverBorderWidth = new List { 4 }, + PointBackgroundColor = new List { colors[0] }, + PointRadius = new List { 0 }, // hide points + PointHoverRadius = new List { 4 }, + }; + datasets.Add(dataset1); + + var dataset2 = new LineChartDataset() + { + Label = "macOS", + Data = new List { 1809499, 1816642, 2122410, 1809499, 1850793, 1846743, 1954797, 2391313, 1983430, 2469918, 2633303, 2821149 }, + BackgroundColor = new List { colors[1] }, + BorderColor = new List { colors[1] }, + BorderWidth = new List { 2 }, + HoverBorderWidth = new List { 4 }, + PointBackgroundColor = new List { colors[1] }, + PointRadius = new List { 0 }, // hide points + PointHoverRadius = new List { 4 }, + }; + datasets.Add(dataset2); + + var dataset3 = new LineChartDataset() + { + Label = "Other", + Data = new List { 1081241, 1100363, 1118136, 1073255, 1120315, 1395736, 1488788, 1489466, 1489947, 1414739, 1735811, 1820171 }, + BackgroundColor = new List { colors[2] }, + BorderColor = new List { colors[2] }, + BorderWidth = new List { 2 }, + HoverBorderWidth = new List { 4 }, + PointBackgroundColor = new List { colors[2] }, + PointRadius = new List { 0 }, // hide points + PointHoverRadius = new List { 4 }, + }; + datasets.Add(dataset3); + + chartData = new ChartData + { + Labels = labels, + Datasets = datasets + }; + + lineChartOptions = new(); + lineChartOptions.Locale = "de-DE"; + lineChartOptions.Responsive = true; + lineChartOptions.Interaction = new Interaction { Mode = InteractionMode.Index }; + + lineChartOptions.Scales.X.Title.Text = "2019"; + lineChartOptions.Scales.X.Title.Display = true; + + lineChartOptions.Scales.Y.Title.Text = "Visitors"; + lineChartOptions.Scales.Y.Title.Display = true; + + lineChartOptions.Plugins.Title.Text = "Operating system"; + lineChartOptions.Plugins.Title.Display = true; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await lineChart.InitializeAsync(chartData, lineChartOptions); + } + await base.OnAfterRenderAsync(firstRender); + } +} +``` + +[See the demo here.](https://demos.blazorbootstrap.com/charts/doughnut-chart#locale) + +### Data labels + +Blazor Bootstrap: Doughnut Chart Component - Data labels + +```cshtml {} showLineNumbers + + + + + +``` + +```cs {28,97,99,101} showLineNumbers +@code { + private DoughnutChart doughnutChart = default!; + private DoughnutChartOptions doughnutChartOptions = default!; + private ChartData chartData = default!; + private string[]? backgroundColors; + + private int datasetsCount = 0; + private int dataLabelsCount = 0; + + private Random random = new(); + + protected override void OnInitialized() + { + backgroundColors = ColorBuilder.CategoricalTwelveColors; + chartData = new ChartData { Labels = GetDefaultDataLabels(4), Datasets = GetDefaultDataSets(3) }; + + doughnutChartOptions = new(); + doughnutChartOptions.Responsive = true; + doughnutChartOptions.Plugins.Title.Text = "2022 - Sales"; + doughnutChartOptions.Plugins.Title.Display = true; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + // pass the plugin name to enable the data labels + await doughnutChart.InitializeAsync(chartData: chartData, chartOptions: doughnutChartOptions, plugins: new string[] { "ChartDataLabels" }); + } + await base.OnAfterRenderAsync(firstRender); + } + + private async Task RandomizeAsync() + { + if (chartData is null || chartData.Datasets is null || !chartData.Datasets.Any()) return; + + var newDatasets = new List(); + + var datasetIndex = 0; + foreach (var dataset in chartData.Datasets) + { + if (dataset is DoughnutChartDataset doughnutChartDataset + && doughnutChartDataset is not null + && doughnutChartDataset.Data is not null) + { + var count = doughnutChartDataset.Data.Count; + + var newData = new List(); + for (var i = 0; i < count; i++) + { + newData.Add(random.Next(0, 100)); + } + + doughnutChartDataset.Data = newData; + newDatasets.Add(doughnutChartDataset); + } + } + + chartData.Datasets = newDatasets; + + await doughnutChart.UpdateAsync(chartData: chartData, chartOptions: doughnutChartOptions); + } + + private async Task AddDataAsync() + { + if (dataLabelsCount >= 12) + return; + + if (chartData is null || chartData.Datasets is null) + return; + + var data = new List(); + foreach (var dataset in chartData.Datasets) + { + if (dataset is DoughnutChartDataset doughnutChartDataset) + { + data.Add(new DoughnutChartDatasetData(doughnutChartDataset.Label, random.Next(0, 100), backgroundColors![dataLabelsCount])); + } + } + + chartData = await doughnutChart.AddDataAsync(chartData, GetNextDataLabel(), data); + + dataLabelsCount += 1; + } + + #region Data Preparation + + private List GetDefaultDataSets(int numberOfDatasets) + { + var datasets = new List(); + + for (var index = 0; index < numberOfDatasets; index++) + { + var dataset = GetRandomDoughnutChartDataset(); + + if (index == 0) + dataset.Datalabels.Anchor = "end"; + else if (index == numberOfDatasets - 1) + dataset.Datalabels.Anchor = "start"; + else + dataset.Datalabels.Anchor = "center"; + + datasets.Add(dataset); + } + + return datasets; + } + + private DoughnutChartDataset GetRandomDoughnutChartDataset() + { + datasetsCount += 1; + return new() { Label = $"Team {datasetsCount}", Data = GetRandomData(), BackgroundColor = GetRandomBackgroundColors() }; + } + + private List GetRandomData() + { + var data = new List(); + for (var index = 0; index < dataLabelsCount; index++) + { + data.Add(random.Next(0, 100)); + } + + return data; + } + + private List GetRandomBackgroundColors() + { + var colors = new List(); + for (var index = 0; index < dataLabelsCount; index++) + { + colors.Add(backgroundColors![index]); + } + + return colors; + } + + private List GetDefaultDataLabels(int numberOfLabels) + { + var labels = new List(); + for (var index = 0; index < numberOfLabels; index++) + { + labels.Add(GetNextDataLabel()); + dataLabelsCount += 1; + } + + return labels; + } + + private string GetNextDataLabel() => $"Product {dataLabelsCount + 1}"; + + private string GetNextDataBackgrounfColor() => backgroundColors![dataLabelsCount]; + + #endregion Data Preparation +} +``` + +[See the demo here.](https://demos.blazorbootstrap.com/charts/doughnut-chart#data-labels) diff --git a/docs/docs/06-data-visualization/line-chart.mdx b/docs/docs/06-data-visualization/line-chart.mdx new file mode 100644 index 000000000..0b14700e7 --- /dev/null +++ b/docs/docs/06-data-visualization/line-chart.mdx @@ -0,0 +1,502 @@ +--- +title: Blazor Line Chart +description: A Blazor Bootstrap line chart component is a graphical representation of data that uses a series of connected points to show how the data changes over time. It is a type of x-y chart, where the x-axis represents the independent variable, such as time, and the y-axis represents the dependent variable, such as the value. +image: https://i.imgur.com/8b7jH0D.png + +sidebar_label: Line Chart +sidebar_position: 3 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Line Chart + +A Blazor Bootstrap line chart component is a graphical representation of data that uses a series of connected points to show how the data changes over time. It is a type of x-y chart, where the x-axis represents the independent variable, such as time, and the y-axis represents the dependent variable, such as the value. + + + +Blazor Chart Component - Blazor Line Chart + +## Parameters + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| Height | int | | | Gets or sets chart height. | 1.0.0 | +| Width | int | | | Get or sets chart width. | 1.0.0 | + +## Methods + +| Name | Return type | Description | Added Version | +|:--|:--|:--|:--| +| AddDataAsync | `ChartData` | Adds data to bar chart. | 1.10.0 | +| AddDatasetAsync | `ChartData` | Adds dataset to bar chart. | 1.10.0 | +| InitializeAsync | Task | Initialize Bar Chart. | 1.0.0 | +| UpdateAsync | Task | Update Bar Chart. | 1.0.0 | + +## ChartData Members + +| Property Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| Labels | `List` | null | ✔️ | Gets or sets the Labels. | 1.0.0 | +| Datasets | `List` | null | ✔️ | Gets or sets the Datasets. | 1.0.0 | + +## LineChartDataset Members + +:::info +**LineChartDataset** implements **IChartDataset**. +::: + +| Property Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| BackgroundColor | `List` | null | | Get or sets the BackgroundColor. | 1.0.0 | +| BorderColor | `List` | null | | Get or sets the BorderColor. | 1.0.0 | +| BorderDash | `List` | null | | Line dash. | 1.0.0 | +| BorderDashOffset | double | 0.0 | | Line dash offset. | 1.0.0 | +| BorderWidth | `List` | null | | Get or sets the BorderWidth. | 1.0.0 | +| Clip | string | null | | How to clip relative to chartArea. Positive value allows overflow, negative value clips that many pixels inside chartArea. 0 = clip at chartArea. Clipping can also be configured per side: clip: {left: 5, top: false, right: -2, bottom: 0} | 1.0.0 | +| Data | `List` | null | | Get or sets the Data. | 1.0.0 | +| Datalabels | `LineChartDatasetDataLabels` | | | Get or sets the data labels | | 1.10.2 | +| Fill | bool | false | | Both line and radar charts support a fill option on the dataset object which can be used to create area between two datasets or a dataset and a boundary, i.e. the scale origin, start or end. | 1.0.0 | +| Hidden | bool | false | | Configures the visibility state of the dataset. Set it to true, to hide the dataset from the chart. | 1.0.0 | +| HoverBackgroundColor | `List` | null | ✔️ | Get or sets the HoverBackgroundColor. | 1.0.0 | +| HoverBorderColor | `List` | null | ✔️ | Get or sets the HoverBorderColor. | 1.0.0 | +| HoverBorderDash | `List` | null | | Hover line dash. | 1.0.0 | +| HoverBorderWidth | `List` | null | ✔️ | Get or sets the HoverBorderWidth. | 1.0.0 | +| Label | string | null | | The label for the dataset which appears in the legend and tooltips. | 1.0.0 | +| PointBackgroundColor | `List` | `new List { "rgba(0, 0, 0, 0.1)" }` | | The fill color for points. | 1.0.0 | +| PointBorderColor | `List` | `new List { "rgba(0, 0, 0, 0.1)" }` | | The border color for points. | 1.0.0 | +| PointBorderWidth | `List` | `new List { 1 }` | | The width of the point border in pixels. | 1.0.0 | +| PointHitRadius | `List` | `new List { 1 }` | | The pixel size of the non-displayed point that reacts to mouse events. | 1.0.0 | +| PointHoverBackgroundColor | `List` | null | | Point background color when hovered. | 1.0.0 | +| PointHoverBorderColor | `List` | null | | Point border color when hovered. | 1.0.0 | +| PointHoverBorderWidth | `List` | `new List { 1 }` | | Border width of point when hovered. | 1.0.0 | +| PointHoverRadius | `new List` | `new List { 1 }` | | The radius of the point when hovered. | 1.0.0 | +| PointRadius | `List` | `new List { 1 }` | | The radius of the point shape. If set to 0, the point is not rendered. | 1.0.0 | +| PointRotation | `List` | `new List { 0 }` | | The rotation of the point in degrees. | 1.0.0 | +| PointStyle | `List` | `new List { "circle" }` | | Style of the point. Use 'circle', 'cross', 'crossRot', 'dash', 'line', 'rect', 'rectRounded', 'rectRot', 'star', and 'triangle' to style the point. | 1.0.0 | +| ShowLine | bool | true | | If false, the lines between points are not drawn. | 1.0.0 | +| SpanGaps | bool | false | | If true, lines will be drawn between points with no or null data. If false, points with null data will create a break in the line. Can also be a number specifying the maximum gap length to span. The unit of the value depends on the scale used. | 1.0.0 | +| Stepped | bool | false | | true to show the line as a stepped line (tension will be ignored). | 1.0.0 | +| Tension | double | 0.2 | | Bezier curve tension of the line. Set to 0 to draw straightlines. This option is ignored if monotone cubic interpolation is used. | 1.0.0 | +| Type | string | null | ✔️ | Get or sets the chart type. | 1.0.0 | +| XAxisID | string | null | | The ID of the x axis to plot this dataset on. | 1.0.0 | +| YAxisID | string | null | | The ID of the y axis to plot this dataset on. | 1.0.0 | + +## LineChartDatasetDataLabels Members + +| Property Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| Align | `string?` | `start` | | Gets or sets the align. | 1.10.2 | +| Anchor | `string?` | `start` | | Gets or sets the anchor. | 1.10.2 | + +## LineChartOptions Members + +:::info +**LineChartOptions** implements **ChartOptions**. +::: + +| Property Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| IndexAxis | string | x | | The base axis of the chart. 'x' for vertical charts and 'y' for horizontal charts. | 1.0.0 | +| Interaction | Interaction | | | Gets or sets the Interaction. | 1.0.0 | +| Layout | ChartLayout | | | Gets or sets the ChartLayout. | 1.0.0 | +| Locale | `string?` | | | Gets or sets the locale. By default, the chart is using the default locale of the platform which is running on. | 1.10.0 | +| Plugins | `LineChartPlugins` | | | Gets or sets the Plugins. | 1.10.2 | +| Responsive | bool | false | | Gets or sets the Responsive. | 1.0.0 | +| Scales | Scales | | | Gets or sets the Scales. | 1.0.0 | + +## Examples + +### Prerequisites + +Refer to the [getting started guide](/getting-started/blazor-webassembly) for setting up charts. + +### How it works + +In the following example, a categorical 12-color palette is used. + +:::tip +For data visualization, you can use the predefined palettes `ColorBuilder.CategoricalTwelveColors` for a 12-color palette and `ColorBuilder.CategoricalSixColors` for a 6-color palette. +These palettes offer a range of distinct and visually appealing colors that can be applied to represent different categories or data elements in your visualizations. +::: + +Blazor Bootstrap: Line Chart Component - How it works + +```cshtml {} showLineNumbers +@using BlazorBootstrap.Extensions +@using Color = System.Drawing.Color + + + + + + + + +``` + +```cs {} showLineNumbers +@code { + private LineChart lineChart = default!; + private LineChartOptions lineChartOptions = default!; + private ChartData chartData = default!; + + private int datasetsCount = 0; + private int labelsCount = 0; + + private Random random = new(); + + protected override void OnInitialized() + { + chartData = new ChartData { Labels = GetDefaultDataLabels(6), Datasets = GetDefaultDataSets(3) }; + lineChartOptions = new() { Responsive = true, Interaction = new Interaction { Mode = InteractionMode.Index } }; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await lineChart.InitializeAsync(chartData, lineChartOptions); + } + await base.OnAfterRenderAsync(firstRender); + } + + private async Task RandomizeAsync() + { + if (chartData is null || chartData.Datasets is null || !chartData.Datasets.Any()) return; + + var newDatasets = new List(); + + foreach (var dataset in chartData.Datasets) + { + if (dataset is LineChartDataset lineChartDataset + && lineChartDataset is not null + && lineChartDataset.Data is not null) + { + var count = lineChartDataset.Data.Count; + + var newData = new List(); + for (var i = 0; i < count; i++) + { + newData.Add(random.Next(200)); + } + + lineChartDataset.Data = newData; + newDatasets.Add(lineChartDataset); + } + } + + chartData.Datasets = newDatasets; + + await lineChart.UpdateAsync(chartData, lineChartOptions); + } + + private async Task AddDatasetAsync() + { + if (chartData is null || chartData.Datasets is null) return; + + var chartDataset = GetRandomLineChartDataset(); + chartData = await lineChart.AddDatasetAsync(chartData, chartDataset, lineChartOptions); + } + + private async Task AddDataAsync() + { + if (chartData is null || chartData.Datasets is null) + return; + + var data = new List(); + foreach (var dataset in chartData.Datasets) + { + if (dataset is LineChartDataset lineChartDataset) + data.Add(new LineChartDatasetData(lineChartDataset.Label, random.Next(200))); + } + + chartData = await lineChart.AddDataAsync(chartData, GetNextDataLabel(), data); + } + + private async Task ShowHorizontalLineChartAsync() + { + lineChartOptions.IndexAxis = "y"; + await lineChart.UpdateAsync(chartData, lineChartOptions); + } + + private async Task ShowVerticalLineChartAsync() + { + lineChartOptions.IndexAxis = "x"; + await lineChart.UpdateAsync(chartData, lineChartOptions); + } + + #region Data Preparation + + private List GetDefaultDataSets(int numberOfDatasets) + { + var datasets = new List(); + + for (var index = 0; index < numberOfDatasets; index++) + { + datasets.Add(GetRandomLineChartDataset()); + } + + return datasets; + } + + private LineChartDataset GetRandomLineChartDataset() + { + var c = ColorBuilder.CategoricalTwelveColors[datasetsCount].ToColor(); + + datasetsCount += 1; + + return new LineChartDataset() + { + Label = $"Team {datasetsCount}", + Data = GetRandomData(), + BackgroundColor = new List { c.ToRgbString() }, + BorderColor = new List { c.ToRgbString() }, + BorderWidth = new List { 2 }, + HoverBorderWidth = new List { 4 }, + PointBackgroundColor = new List { c.ToRgbString() }, + PointRadius = new List { 0 }, // hide points + PointHoverRadius = new List { 4 }, + }; + } + + private List GetRandomData() + { + var data = new List(); + for (var index = 0; index < labelsCount; index++) + { + data.Add(random.Next(200)); + } + + return data; + } + + private List GetDefaultDataLabels(int numberOfLabels) + { + var labels = new List(); + for (var index = 0; index < numberOfLabels; index++) + { + labels.Add(GetNextDataLabel()); + } + + return labels; + } + + private string GetNextDataLabel() + { + labelsCount += 1; + return $"Day {labelsCount}"; + } + + #endregion Data Preparation +} +``` + +### Another example + +Blazor Bootstrap: Line Chart Component - Another example + +```cshtml {} showLineNumbers +@using BlazorBootstrap.Extensions +@using Color = System.Drawing.Color + + +``` + +```cs {} showLineNumbers +@code { + private LineChart lineChart = default!; + private LineChartOptions lineChartOptions = default!; + private ChartData chartData = default!; + + protected override void OnInitialized() + { + var colors = ColorBuilder.CategoricalTwelveColors; + + var labels = new List { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; + var datasets = new List(); + + var dataset1 = new LineChartDataset() + { + Label = "Windows", + Data = new List { 7265791, 5899643, 6317759, 6315641, 5338211, 8496306, 7568556, 8538933, 8274297, 8657298, 7548388, 7764845 }, + BackgroundColor = new List { colors[0] }, + BorderColor = new List { colors[0] }, + BorderWidth = new List { 2 }, + HoverBorderWidth = new List { 4 }, + PointBackgroundColor = new List { colors[0] }, + PointRadius = new List { 0 }, // hide points + PointHoverRadius = new List { 4 }, + }; + datasets.Add(dataset1); + + var dataset2 = new LineChartDataset() + { + Label = "macOS", + Data = new List { 1809499, 1816642, 2122410, 1809499, 1850793, 1846743, 1954797, 2391313, 1983430, 2469918, 2633303, 2821149 }, + BackgroundColor = new List { colors[1] }, + BorderColor = new List { colors[1] }, + BorderWidth = new List { 2 }, + HoverBorderWidth = new List { 4 }, + PointBackgroundColor = new List { colors[1] }, + PointRadius = new List { 0 }, // hide points + PointHoverRadius = new List { 4 }, + }; + datasets.Add(dataset2); + + var dataset3 = new LineChartDataset() + { + Label = "Other", + Data = new List { 1081241, 1100363, 1118136, 1073255, 1120315, 1395736, 1488788, 1489466, 1489947, 1414739, 1735811, 1820171 }, + BackgroundColor = new List { colors[2] }, + BorderColor = new List { colors[2] }, + BorderWidth = new List { 2 }, + HoverBorderWidth = new List { 4 }, + PointBackgroundColor = new List { colors[2] }, + PointRadius = new List { 0 }, // hide points + PointHoverRadius = new List { 4 }, + }; + datasets.Add(dataset3); + + chartData = new ChartData + { + Labels = labels, + Datasets = datasets + }; + + lineChartOptions = new(); + lineChartOptions.Responsive = true; + lineChartOptions.Interaction = new Interaction { Mode = InteractionMode.Index }; + + lineChartOptions.Scales.X.Title.Text = "2019"; + lineChartOptions.Scales.X.Title.Display = true; + + lineChartOptions.Scales.Y.Title.Text = "Visitors"; + lineChartOptions.Scales.Y.Title.Display = true; + + lineChartOptions.Plugins.Title.Text = "Operating system"; + lineChartOptions.Plugins.Title.Display = true; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await lineChart.InitializeAsync(chartData, lineChartOptions); + } + await base.OnAfterRenderAsync(firstRender); + } +} +``` + +[See the demo here.](https://demos.blazorbootstrap.com/charts/line-chart#how-it-works) + +### Data labels + +Blazor Bootstrap: Line Chart Component - Data labels + +```cshtml {} showLineNumbers + +``` + +```cs {26,43,60,84,92} showLineNumbers +@code { + private LineChart lineChart = default!; + private LineChartOptions lineChartOptions = default!; + private ChartData chartData = default!; + + protected override void OnInitialized() + { + var colors = ColorBuilder.CategoricalTwelveColors; + + var labels = new List { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; + var datasets = new List(); + + var dataset1 = new LineChartDataset + { + Label = "Windows", + Data = new List { 7265791, 5899643, 6317759, 6315641, 5338211, 8496306, 7568556, 8538933, 8274297, 8657298, 7548388, 7764845 }, + BackgroundColor = new List { colors[0] }, + BorderColor = new List { colors[0] }, + BorderWidth = new List { 2 }, + HoverBorderWidth = new List { 4 }, + PointBackgroundColor = new List { colors[0] }, + PointRadius = new List { 3 }, // show points + PointHoverRadius = new List { 4 }, + + // datalabels + Datalabels = new() { Align = "end", Anchor = "end" } + }; + datasets.Add(dataset1); + + var dataset2 = new LineChartDataset + { + Label = "macOS", + Data = new List { 1809499, 1816642, 2122410, 1809499, 1850793, 1846743, 1954797, 2391313, 1983430, 2469918, 2633303, 2821149 }, + BackgroundColor = new List { colors[1] }, + BorderColor = new List { colors[1] }, + BorderWidth = new List { 2 }, + HoverBorderWidth = new List { 4 }, + PointBackgroundColor = new List { colors[1] }, + PointRadius = new List { 3 }, // show points + PointHoverRadius = new List { 4 }, + + // datalabels + Datalabels = new() { Align = "end", Anchor = "end" } + }; + datasets.Add(dataset2); + + var dataset3 = new LineChartDataset + { + Label = "Other", + Data = new List { 1081241, 1100363, 1118136, 1073255, 1120315, 1395736, 1488788, 1489466, 1489947, 1414739, 1735811, 1820171 }, + BackgroundColor = new List { colors[2] }, + BorderColor = new List { colors[2] }, + BorderWidth = new List { 2 }, + HoverBorderWidth = new List { 4 }, + PointBackgroundColor = new List { colors[2] }, + PointRadius = new List { 3 }, // show points + PointHoverRadius = new List { 4 }, + + // datalabels + Datalabels = new() { Align = "start", Anchor = "start" } + }; + datasets.Add(dataset3); + + chartData = new ChartData + { + Labels = labels, + Datasets = datasets + }; + + lineChartOptions = new(); + lineChartOptions.Responsive = true; + lineChartOptions.Interaction = new Interaction { Mode = InteractionMode.Index }; + + lineChartOptions.Scales.X.Title.Text = "2019"; + lineChartOptions.Scales.X.Title.Display = true; + + lineChartOptions.Scales.Y.Title.Text = "Visitors"; + lineChartOptions.Scales.Y.Title.Display = true; + + lineChartOptions.Plugins.Title.Text = "Operating system"; + lineChartOptions.Plugins.Title.Display = true; + + // datalabels + lineChartOptions.Plugins.Datalabels.Color = "white"; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + // pass the plugin name to enable the data labels + await lineChart.InitializeAsync(chartData: chartData, chartOptions: lineChartOptions, plugins: new string[] { "ChartDataLabels" }); + } + await base.OnAfterRenderAsync(firstRender); + } + +} +``` + +[See the demo here.](https://demos.blazorbootstrap.com/charts/line-chart#data-labels) diff --git a/docs/docs/06-data-visualization/pie-chart.mdx b/docs/docs/06-data-visualization/pie-chart.mdx new file mode 100644 index 000000000..81c3f3e8c --- /dev/null +++ b/docs/docs/06-data-visualization/pie-chart.mdx @@ -0,0 +1,550 @@ +--- +title: Blazor Pie Chart Components +description: A Blazor Bootstrap pie chart component is a circular chart that shows the proportional values of different categories. +image: https://i.imgur.com/dDpIuzk.png + +sidebar_label: Pie Chart +sidebar_position: 4 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Pie Chart + +A Blazor Bootstrap pie chart component is a circular chart that shows the proportional values of different categories. + + + +Blazor Chart Component - Blazor Pie Chart + +## Parameters + +| Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| Height | int | | | Gets or sets chart height. | 1.0.0 | +| Width | int | | | Get or sets chart width. | 1.0.0 | + +## Methods + +| Name | Return type | Description | Added Version | +|:--|:--|:--|:--| +| AddDataAsync | `ChartData` | Adds data to bar chart. | 1.10.0 | +| AddDatasetAsync | `ChartData` | Adds dataset to bar chart. | 1.10.0 | +| InitializeAsync | Task | Initialize Bar Chart. | 1.0.0 | +| UpdateAsync | Task | Update Bar Chart. | 1.0.0 | + +## ChartData Members + +| Property Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| Labels | `List` | null | ✔️ | Gets or sets the Labels. | 1.0.0 | +| Datasets | `List` | null | ✔️ | Gets or sets the Datasets. | 1.0.0 | + +## PieChartDataset Members + +:::info +**PieChartDataset** implements **IChartDataset**. +::: + +| Property Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:-| +| BackgroundColor | `List` | null | | Get or sets the BackgroundColor. | 1.0.0 | +| BorderColor | `List` | null | | Get or sets the BorderColor. | 1.0.0 | +| BorderWidth | `List` | null | | Get or sets the BorderWidth. | 1.0.0 | +| Clip | string | null | | How to clip relative to chartArea. Positive value allows overflow, negative value clips that many pixels inside chartArea. 0 = clip at chartArea. Clipping can also be configured per side: clip: {left: 5, top: false, right: -2, bottom: 0} | 1.0.0 | +| Data | `List` | null | | Get or sets the Data. | 1.0.0 | +| Datalabels | `PieChartDatasetDataLabels` | | | Get or sets the data labels | | 1.10.2 | +| Hidden | bool | false | | Configures the visibility state of the dataset. Set it to true, to hide the dataset from the chart. | 1.0.0 | +| HoverBackgroundColor | `List` | null | ✔️ | Get or sets the HoverBackgroundColor. | 1.0.0 | +| HoverBorderColor | `List` | null | ✔️ | Get or sets the HoverBorderColor. | 1.0.0 | +| HoverBorderWidth | `List` | null | ✔️ | Get or sets the HoverBorderWidth. | 1.0.0 | +| Type | string | null | ✔️ | Get or sets the chart type. | 1.0.0 | + +## PieChartDatasetDataLabels Members + +| Property Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| Anchor | `string?` | `center` | | Gets or sets the anchor. | 1.10.2 | +| BorderWidth | `double?` | `2` | | Gets or sets the border width. | 1.10.2 | + +## PieChartOptions Members + +:::info +**PieChartOptions** implements **ChartOptions**. +::: + +| Property Name | Type | Default | Required | Description | Added Version | +|:--|:--|:--|:--|:--|:--| +| Locale | `string?` | | | Gets or sets the locale. By default, the chart is using the default locale of the platform which is running on. | 1.10.0 | +| Plugins | `PieChartPlugins` | | | Gets or sets the Plugins. | 1.10.2 | +| Responsive | bool | false | | Gets or sets the Responsive. | 1.0.0 | + +## Examples + +### Prerequisites + +Refer to the [getting started guide](/getting-started/blazor-webassembly) for setting up charts. + +### How it works + +In the following example, a categorical 12-color palette is used. + +:::tip +For data visualization, you can use the predefined palettes `ColorBuilder.CategoricalTwelveColors` for a 12-color palette and `ColorBuilder.CategoricalSixColors` for a 6-color palette. +These palettes offer a range of distinct and visually appealing colors that can be applied to represent different categories or data elements in your visualizations. +::: + +Blazor Bootstrap: Pie Chart Component - How it works + +```cshtml {} showLineNumbers + + + + + +``` + +```cs {} showLineNumbers +@code { + private PieChart pieChart = default!; + private PieChartOptions pieChartOptions = default!; + private ChartData chartData = default!; + private string[]? backgroundColors; + + private int datasetsCount = 0; + private int dataLabelsCount = 0; + + private Random random = new(); + + protected override void OnInitialized() + { + backgroundColors = ColorBuilder.CategoricalTwelveColors; + chartData = new ChartData { Labels = GetDefaultDataLabels(4), Datasets = GetDefaultDataSets(1) }; + + pieChartOptions = new(); + pieChartOptions.Responsive = true; + pieChartOptions.Plugins.Title.Text = "2022 - Sales"; + pieChartOptions.Plugins.Title.Display = true; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await pieChart.InitializeAsync(chartData, pieChartOptions); + } + await base.OnAfterRenderAsync(firstRender); + } + + private async Task RandomizeAsync() + { + if (chartData is null || chartData.Datasets is null || !chartData.Datasets.Any()) return; + + var newDatasets = new List(); + + foreach (var dataset in chartData.Datasets) + { + if (dataset is PieChartDataset pieChartDataset + && pieChartDataset is not null + && pieChartDataset.Data is not null) + { + var count = pieChartDataset.Data.Count; + + var newData = new List(); + for (var i = 0; i < count; i++) + { + newData.Add(random.Next(0, 100)); + } + + pieChartDataset.Data = newData; + newDatasets.Add(pieChartDataset); + } + } + + chartData.Datasets = newDatasets; + + await pieChart.UpdateAsync(chartData, pieChartOptions); + } + + private async Task AddDatasetAsync() + { + if (chartData is null || chartData.Datasets is null) return; + + var chartDataset = GetRandomPieChartDataset(); + chartData = await pieChart.AddDatasetAsync(chartData, chartDataset, pieChartOptions); + } + + private async Task AddDataAsync() + { + if (dataLabelsCount >= 12) + return; + + if (chartData is null || chartData.Datasets is null) + return; + + var data = new List(); + foreach (var dataset in chartData.Datasets) + { + if (dataset is PieChartDataset pieChartDataset) + data.Add(new PieChartDatasetData(pieChartDataset.Label, random.Next(0, 100), backgroundColors![dataLabelsCount])); + } + + chartData = await pieChart.AddDataAsync(chartData, GetNextDataLabel(), data); + + dataLabelsCount += 1; + } + + #region Data Preparation + + private List GetDefaultDataSets(int numberOfDatasets) + { + var datasets = new List(); + + for (var index = 0; index < numberOfDatasets; index++) + { + datasets.Add(GetRandomPieChartDataset()); + } + + return datasets; + } + + private PieChartDataset GetRandomPieChartDataset() + { + datasetsCount += 1; + return new() { Label = $"Team {datasetsCount}", Data = GetRandomData(), BackgroundColor = GetRandomBackgroundColors() }; + } + + private List GetRandomData() + { + var data = new List(); + for (var index = 0; index < dataLabelsCount; index++) + { + data.Add(random.Next(0, 100)); + } + + return data; + } + + private List GetRandomBackgroundColors() + { + var colors = new List(); + for (var index = 0; index < dataLabelsCount; index++) + { + colors.Add(backgroundColors![index]); + } + + return colors; + } + + private List GetDefaultDataLabels(int numberOfLabels) + { + var labels = new List(); + for (var index = 0; index < numberOfLabels; index++) + { + labels.Add(GetNextDataLabel()); + dataLabelsCount += 1; + } + + return labels; + } + + private string GetNextDataLabel() => $"Product {dataLabelsCount + 1}"; + + private string GetNextDataBackgrounfColor() => backgroundColors![dataLabelsCount]; + + #endregion Data Preparation +} +``` + +[See the demo here.](https://demos.blazorbootstrap.com/charts/pie-chart#how-it-works) + +### Data labels + +Blazor Bootstrap: Pie Chart Component - Data labels + +```cshtml {} showLineNumbers + + + + +``` + +```cs {28,94,96,98} showLineNumbers +@code { + private PieChart pieChart = default!; + private PieChartOptions pieChartOptions = default!; + private ChartData chartData = default!; + private string[]? backgroundColors; + + private int datasetsCount = 0; + private int dataLabelsCount = 0; + + private Random random = new(); + + protected override void OnInitialized() + { + backgroundColors = ColorBuilder.CategoricalTwelveColors; + chartData = new ChartData { Labels = GetDefaultDataLabels(4), Datasets = GetDefaultDataSets(3) }; + + pieChartOptions = new(); + pieChartOptions.Responsive = true; + pieChartOptions.Plugins.Title.Text = "2022 - Sales"; + pieChartOptions.Plugins.Title.Display = true; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + // pass the plugin name to enable the data labels + await pieChart.InitializeAsync(chartData: chartData, chartOptions: pieChartOptions, plugins: new string[] { "ChartDataLabels" }); + } + await base.OnAfterRenderAsync(firstRender); + } + + private async Task RandomizeAsync() + { + if (chartData is null || chartData.Datasets is null || !chartData.Datasets.Any()) return; + + var newDatasets = new List(); + + foreach (var dataset in chartData.Datasets) + { + if (dataset is PieChartDataset pieChartDataset + && pieChartDataset is not null + && pieChartDataset.Data is not null) + { + var count = pieChartDataset.Data.Count; + + var newData = new List(); + for (var i = 0; i < count; i++) + { + newData.Add(random.Next(0, 100)); + } + + pieChartDataset.Data = newData; + newDatasets.Add(pieChartDataset); + } + } + + chartData.Datasets = newDatasets; + + await pieChart.UpdateAsync(chartData, pieChartOptions); + } + + private async Task AddDataAsync() + { + if (dataLabelsCount >= 12) + return; + + if (chartData is null || chartData.Datasets is null) + return; + + var data = new List(); + foreach (var dataset in chartData.Datasets) + { + if (dataset is PieChartDataset pieChartDataset) + data.Add(new PieChartDatasetData(pieChartDataset.Label, random.Next(0, 100), backgroundColors![dataLabelsCount])); + } + + chartData = await pieChart.AddDataAsync(chartData, GetNextDataLabel(), data); + + dataLabelsCount += 1; + } + + #region Data Preparation + + private List GetDefaultDataSets(int numberOfDatasets) + { + var datasets = new List(); + + for (var index = 0; index < numberOfDatasets; index++) + { + var dataset = GetRandomPieChartDataset(); + + if (index == 0) + dataset.Datalabels.Anchor = "end"; + else if (index == numberOfDatasets - 1) + dataset.Datalabels.Anchor = "end"; + else + dataset.Datalabels.Anchor = "center"; + + datasets.Add(dataset); + } + + return datasets; + } + + private PieChartDataset GetRandomPieChartDataset() + { + datasetsCount += 1; + return new() { Label = $"Team {datasetsCount}", Data = GetRandomData(), BackgroundColor = GetRandomBackgroundColors() }; + } + + private List GetRandomData() + { + var data = new List(); + for (var index = 0; index < dataLabelsCount; index++) + { + data.Add(random.Next(0, 100)); + } + + return data; + } + + private List GetRandomBackgroundColors() + { + var colors = new List(); + for (var index = 0; index < dataLabelsCount; index++) + { + colors.Add(backgroundColors![index]); + } + + return colors; + } + + private List GetDefaultDataLabels(int numberOfLabels) + { + var labels = new List(); + for (var index = 0; index < numberOfLabels; index++) + { + labels.Add(GetNextDataLabel()); + dataLabelsCount += 1; + } + + return labels; + } + + private string GetNextDataLabel() => $"Product {dataLabelsCount + 1}"; + + private string GetNextDataBackgrounfColor() => backgroundColors![dataLabelsCount]; + + #endregion Data Preparation +} +``` + +[See the demo here.](https://demos.blazorbootstrap.com/charts/pie-chart#data-labels) + +### Change legend position + +This sample demonstrates how to change the position of the chart legend. + +Blazor Bootstrap: Pie Chart Component - Change legend position + +```cshtml {3-6} showLineNumbers + + + + + + +``` + +```cshtml {22,34-37,39-43} showLineNumbers +@code { + private PieChart pieChart = default!; + private PieChartOptions pieChartOptions = default!; + private ChartData chartData = default!; + private string[]? backgroundColors; + + private int datasetsCount = 0; + private int dataLabelsCount = 0; + + private Random random = new(); + + protected override void OnInitialized() + { + backgroundColors = ColorBuilder.CategoricalTwelveColors; + chartData = new ChartData { Labels = GetDefaultDataLabels(4), Datasets = GetDefaultDataSets(1) }; + + pieChartOptions = new(); + pieChartOptions.Responsive = true; + pieChartOptions.Plugins.Title.Text = "2022 - Sales"; + pieChartOptions.Plugins.Title.Display = true; + + pieChartOptions.Plugins.Legend.Position = "right"; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await pieChart.InitializeAsync(chartData, pieChartOptions); + } + await base.OnAfterRenderAsync(firstRender); + } + + private async Task PositionTopAsync() => await UpdatePositionAsync("top"); + private async Task PositionRightAsync() => await UpdatePositionAsync("right"); + private async Task PositionBottomAsync() => await UpdatePositionAsync("bottom"); + private async Task PositionLeftAsync() => await UpdatePositionAsync("left"); + + private async Task UpdatePositionAsync(string position) + { + pieChartOptions.Plugins.Legend.Position = position; + await pieChart.UpdateAsync(chartData, pieChartOptions); + } + + #region Data Preparation + + private List GetDefaultDataSets(int numberOfDatasets) + { + var datasets = new List(); + + for (var index = 0; index < numberOfDatasets; index++) + { + datasets.Add(GetRandomPieChartDataset()); + } + + return datasets; + } + + private PieChartDataset GetRandomPieChartDataset() + { + datasetsCount += 1; + return new() { Label = $"Team {datasetsCount}", Data = GetRandomData(), BackgroundColor = GetRandomBackgroundColors() }; + } + + private List GetRandomData() + { + var data = new List(); + for (var index = 0; index < dataLabelsCount; index++) + { + data.Add(random.Next(0, 100)); + } + + return data; + } + + private List GetRandomBackgroundColors() + { + var colors = new List(); + for (var index = 0; index < dataLabelsCount; index++) + { + colors.Add(backgroundColors![index]); + } + + return colors; + } + + private List GetDefaultDataLabels(int numberOfLabels) + { + var labels = new List(); + for (var index = 0; index < numberOfLabels; index++) + { + labels.Add(GetNextDataLabel()); + dataLabelsCount += 1; + } + + return labels; + } + + private string GetNextDataLabel() => $"Product {dataLabelsCount + 1}"; + + private string GetNextDataBackgrounfColor() => backgroundColors![dataLabelsCount]; + + #endregion Data Preparation +} +``` + +[See the demo here.](https://demos.blazorbootstrap.com/charts/pie-chart#change-legend-position) diff --git a/docs/docs/07-services/_category_.json b/docs/docs/07-services/_category_.json new file mode 100644 index 000000000..48e92f47c --- /dev/null +++ b/docs/docs/07-services/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Services", + "position": 7 +} diff --git a/docs/docs/07-services/modal.mdx b/docs/docs/07-services/modal.mdx new file mode 100644 index 000000000..d4cf18588 --- /dev/null +++ b/docs/docs/07-services/modal.mdx @@ -0,0 +1,256 @@ +--- +title: Blazor Modal Service +description: Use Blazor Bootstrap modal service to show quick dialogs to your site for lightboxes, user notifications, or completely custom content. +image: https://i.imgur.com/Tze7msN.png + +sidebar_label: Modal Service +sidebar_position: 1 +--- + +import CarbonAd from '/carbon-ad.mdx' + +# Blazor Modal Service + +Use Blazor Bootstrap modal service to show quick dialogs to your site for lightboxes, user notifications, or completely custom content. + + + +Blazor Modal Service +
    +See blazor modal service demo here. + +## Methods + +| Name | Return Type | Description | Added Version | +|:--|:--| +| ShowAsync(**ModalOption** modalOption) | Task | Show the modal. | 1.9.0 | + +## ModalOption Members + +| Property Name | Type | Description | Required | Default | Added Version | +|:--|:--|:--|:--|:--| +| FooterButtonColor | `ButtonColor` | Gets or sets the footer button color. | | `ButtonColor.Secondary` | 1.9.0 | +| FooterButtonCSSClass | string | Gets or sets the footer button custom CSS class. | | null | 1.9.0 | +| FooterButtonText | string | Gets or sets the footer button text. | | OK | 1.9.0 | +| IsVerticallyCentered | bool | Gets or sets the IsVerticallyCentered. | | false | 1.9.0 | +| Message | string | Gets or sets the modal message. | ✔️ | null | 1.9.0 | +| ShowFooterButton | string | Shows or hides the footer button. | | true | 1.9.0 | +| Size | `ModalSize` | Gets or sets the modal size. | | `ModalSize.Regular` | 1.9.0 | +| Title | string | Gets or sets the modal title. | ✔️ | null | 1.9.0 | +| Type | `ModalType` | Gets or sets the modal type. | | `ModalType.Light` | 1.9.0 | + +## Examples + +### How it works + +Blazor Modal Service: How it works + +```cshtml {} showLineNumbers + + + + + + + + +``` + +```cs {} showLineNumbers +@code { + [Inject] ModalService ModalService { get; set; } = default!; + + private async Task ShowModal(ModalType modalType) + { + var modalOption = new ModalOption + { + Title = "Modal title", + Message = "Modal body text goes here.", + Type = modalType, + }; + + await ModalService.ShowAsync(modalOption); + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/modal-service#how-it-works) + +### Vertically Centered + +Blazor Modal Service: Vertically Centered + +```cshtml {} showLineNumbers + + + + + + + + +``` + +```cs {} showLineNumbers +@code { + [Inject] ModalService ModalService { get; set; } = default!; + + private async Task ShowModal(ModalType modalType) + { + var modalOption = new ModalOption + { + Title = "Modal title", + Message = "Modal body text goes here.", + Type = modalType, + IsVerticallyCentered = true + }; + + await ModalService.ShowAsync(modalOption); + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/modal-service#vertically-centered) + +### Size + +Blazor Modal Service: Size + +```cshtml {} showLineNumbers + + + + +``` + +```cs {} showLineNumbers +@code { + [Inject] ModalService ModalService { get; set; } = default!; + + private async Task ShowModal(ModalSize modalSize) + { + var modalOption = new ModalOption + { + Title = "Modal title", + Message = "Modal body text goes here.", + Size = modalSize + }; + + await ModalService.ShowAsync(modalOption); + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/modal-service#size) + +### Change footer button color and text + +Blazor Modal Service: Change footer button color and text + +```cshtml {} showLineNumbers + +``` + +```cs {} showLineNumbers +@code { + [Inject] ModalService ModalService { get; set; } = default!; + + private async Task ShowModal() + { + var modalOption = new ModalOption + { + Title = "Modal title", + Message = "Modal body text goes here.", + FooterButtonColor = ButtonColor.Primary, + FooterButtonText = "Got it!" + }; + + await ModalService.ShowAsync(modalOption); + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/modal-service#change-footer-button-color-and-text) + +### Hide footer button + +Blazor Modal Service: Hide footer button + +```cshtml {} showLineNumbers + +``` + +```cs {} showLineNumbers +@code { + [Inject] ModalService ModalService { get; set; } = default!; + + private async Task ShowModal() + { + var modalOption = new ModalOption + { + Title = "Modal title", + Message = "Modal body text goes here.", + ShowFooterButton = false + }; + + await ModalService.ShowAsync(modalOption); + } +} +``` + +[See demo here.](https://demos.blazorbootstrap.com/modal-service#hide-footer-button) + +### How to setup + +1. Add the **Modal** component in **MainLayout.razor** page as shown below. + +```cshtml {9} showLineNumbers +@inherits LayoutComponentBase + +... + +... MainLayour.razor code goes here ... + +... + + +``` + +1. Inject **ModalService**, then call the `ShowAsync(...)` method as shown below. +1. `ShowAsync` method accepts **ModalOption** object as a parameter. + +```cs {2,10-15,17,23-28,30} showLineNumbers +@code { + [Inject] ModalService ModalService { get; set; } = default!; + + private async Task SaveEmployeeAsync() + { + try + { + // call the service/api to save the employee details + + var modalOption = new ModalOption + { + Title = "Save Employee", + Message = "Employee details saved.", + Type = ModalType.Success + }; + + await ModalService.ShowAsync(modalOption); + } + catch(Exception ex) + { + // handle exception + + var modalOption = new ModalOption + { + Title = "Save Employee", + Message = $"Error: {ex.Message}.", + Type = ModalType.Danger + }; + + await ModalService.ShowAsync(modalOption); + } + } +} +``` diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js new file mode 100644 index 000000000..ac784b8cf --- /dev/null +++ b/docs/docusaurus.config.js @@ -0,0 +1,293 @@ +const lightCodeTheme = require('prism-react-renderer/themes/vsDark'); +const darkCodeTheme = require('prism-react-renderer/themes/dracula'); + +/** @type {import('@docusaurus/types').Config} */ +const config = { + title: 'Blazor Bootstrap Docs', + tagline: 'High-performance, lightweight, and responsive blazor bootstrap components in a single package from the developers for the developers.', + url: 'https://docs.blazorbootstrap.com', + baseUrl: '/', + onBrokenLinks: 'throw', + onBrokenMarkdownLinks: 'warn', + favicon: 'img/logo/logo-color.svg', + organizationName: 'vikramlearning', + projectName: 'blazorbootstrap', + trailingSlash: false, + deploymentBranch: 'gh-pages', + presets: [ + [ + '@docusaurus/preset-classic', + /** @type {import('@docusaurus/preset-classic').Options} */ + ({ + docs: { + routeBasePath: '/', // Serve the docs at the site's root + sidebarPath: require.resolve('./sidebars.js'), + editUrl: 'https://github.com/vikramlearning/blazorbootstrap/edit/master/docs/', + }, + blog: { + showReadingTime: true, + editUrl: 'https://github.com/vikramlearning/blazorbootstrap/edit/master/docs/blog/', + }, + theme: { + customCss: require.resolve('./src/css/custom.css'), + }, + // googleAnalytics: { + // trackingID: 'UA-214301343-1', + // // Optional fields. + // anonymizeIP: true, // Should IPs be anonymized? + // }, + gtag: { + trackingID: 'G-60QGZHW8TG', + anonymizeIP: true, + }, + }), + ], + ], + themeConfig: + /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ + ({ + announcementBar: { + id: 'support_us', + content: '⭐️ If you like Blazor Bootstrap, give it a star on GitHub! ⭐️', + //backgroundColor: '#fafbfc', + //textColor: '#091E42', + isCloseable: true, + }, + navbar: { + title: 'Blazor Bootstrap', + logo: { + alt: 'Blazor Bootstrap', + src: 'img/logo.svg', + }, + items: [ + { type: 'doc', docId: 'getting-started/blazor-webassembly-net-8', label: 'Docs', position: 'left' }, + { href: 'https://demos.blazorbootstrap.com', label: 'Demos', position: 'left' }, + { to: '/blog', label: 'Blog', position: 'left' }, + { href: 'https://github.com/vikramlearning/blazorbootstrap', label: 'GitHub', position: 'right', }, + { href: 'https://twitter.com/blazorbootstrap', label: 'Twitter', position: 'right', }, + ], + }, + footer: { + style: 'dark', + links: [ + { + title: 'Links', + items: [ + { label: 'Home', to: '/', }, + { label: 'Demos', href: 'https://demos.blazorbootstrap.com/', }, + { label: 'Blog', to: '/blog', }, + ], + }, + { + title: 'Guides', + items: [ + { label: 'Getting started', to: '/getting-started/blazor-webassembly-net-8', }, + { label: 'Install Nuget', to: '/getting-started/blazor-webassembly-net-8#install-nuget-package', }, + { label: 'Starter templates', to: 'https://github.com/vikramlearning/blazorbootstrap-starter-templates', }, + ], + }, + { + title: 'Community', + items: [ + { label: 'Issues', href: 'https://github.com/vikramlearning/blazorbootstrap/issues', }, + { label: 'Discussions', href: 'https://github.com/vikramlearning/blazorbootstrap/discussions', }, + { label: 'Stack Overflow', href: 'https://stackoverflow.com/questions/tagged/blazor-bootstrap', }, + { label: 'Twitter', href: 'https://twitter.com/blazorbootstrap', }, + ], + }, + ], + copyright: `Copyright © ${new Date().getFullYear()} Blazor Bootstrap.`, + }, + prism: { + theme: lightCodeTheme, + darkTheme: darkCodeTheme, + additionalLanguages: ['csharp', 'cshtml'], + }, + }), + customFields: { + version: '0.0.4', + logo_white: '/img/logo/logo-white.svg', + logo_color: '/img/logo/logo-color.svg' + }, + plugins: [ + [ + require.resolve('@easyops-cn/docusaurus-search-local'), + { + indexDocs: true, + indexPages: true, + indexBlog: false, + docsDir: 'docs', + docsRouteBasePath: '/docs' + } + ], + [ + '@docusaurus/plugin-client-redirects', + { + redirects: [ + { + from: '/getting-started/blazor-webassembly', + to: '/getting-started/blazor-webassembly-net-8', + }, + { + from: '/getting-started/blazor-server', + to: '/getting-started/blazor-webapp-server-global-net-8', + }, + { + from: '/docs/getting-started/maui-blazor', + to: '/getting-started/maui-blazor-net-8', + }, + { + from: '/getting-started/maui-blazor', + to: '/getting-started/maui-blazor-net-8', + }, + { + from: '/docs/layout/blazor-webassembly', + to: '/layout/blazor-webassembly', + }, + { + from: '/docs/layout/blazor-server', + to: '/layout/blazor-server', + }, + { + from: '/docs/content/icons', + to: '/content/icons', + }, + { + from: '/docs/forms/autocomplete', + to: '/forms/autocomplete', + }, + { + from: '/docs/forms/currency-input', + to: '/forms/currency-input', + }, + { + from: '/docs/forms/date-input', + to: '/forms/date-input', + }, + { + from: '/docs/forms/number-input', + to: '/forms/number-input', + }, + { + from: '/docs/forms/switch', + to: '/forms/switch', + }, + { + from: '/docs/forms/time-input', + to: '/forms/time-input', + }, + { + from: '/docs/components/accordion', + to: '/components/accordion', + }, + { + from: '/docs/components/alerts', + to: '/components/alerts', + }, + { + from: '/docs/components/badge', + to: '/components/badge', + }, + { + from: '/docs/components/breadcrumb', + to: '/components/breadcrumb', + }, + { + from: '/docs/components/buttons', + to: '/components/buttons', + }, + { + from: '/docs/components/callout', + to: '/components/callout', + }, + { + from: '/docs/components/card', + to: '/components/card', + }, + { + from: '/docs/components/charts', + to: '/components/charts', + }, + { + from: '/docs/components/collapse', + to: '/components/collapse', + }, + { + from: '/docs/components/confirm-dialog', + to: '/components/confirm-dialog', + }, + { + from: '/docs/components/dropdown', + to: '/components/dropdown', + }, + { + from: '/docs/components/grid', + to: '/components/grid', + }, + { + from: '/docs/components/modal', + to: '/components/modal', + }, + { + from: '/docs/components/offcanvas', + to: '/components/offcanvas', + }, + { + from: '/docs/components/pagination', + to: '/components/pagination', + }, + { + from: '/docs/components/placeholders', + to: '/components/placeholders', + }, + { + from: '/docs/components/preload', + to: '/components/preload', + }, + { + from: '/docs/components/progress', + to: '/components/progress', + }, + { + from: '/docs/components/sidebar', + to: '/components/sidebar', + }, + { + from: '/docs/components/tabs', + to: '/components/tabs', + }, + { + from: '/docs/components/toasts', + to: '/components/toasts', + }, + { + from: '/docs/components/tooltips', + to: '/components/tooltips', + }, + { + from: '/docs/data-visualization/bar-chart', + to: '/data-visualization/bar-chart', + }, + { + from: '/docs/data-visualization/doughnut-chart', + to: '/data-visualization/doughnut-chart', + }, + { + from: '/docs/data-visualization/line-chart', + to: '/data-visualization/line-chart', + }, + { + from: '/docs/data-visualization/pie-chart', + to: '/data-visualization/pie-chart', + }, + { + from: '/docs/services/modal', + to: '/services/modal', + }, + ] + } + ] + ], +}; + +module.exports = config; diff --git a/docs/package-lock.json b/docs/package-lock.json new file mode 100644 index 000000000..12c0caa20 --- /dev/null +++ b/docs/package-lock.json @@ -0,0 +1,22364 @@ +{ + "name": "blazorbootstrap", + "version": "1.10.4", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "blazorbootstrap", + "version": "1.10.4", + "dependencies": { + "@docusaurus/core": "^2.4.3", + "@docusaurus/plugin-client-redirects": "^2.4.3", + "@docusaurus/plugin-google-gtag": "2.4.3", + "@docusaurus/preset-classic": "^2.4.3", + "@easyops-cn/docusaurus-search-local": "^0.29.0", + "@mdx-js/react": "1.6.22", + "@svgr/webpack": "6.3.1", + "acorn": "^8.7.1", + "clsx": "1.2.1", + "file-loader": "6.2.0", + "prism-react-renderer": "1.3.5", + "react": "17.0.2", + "react-dom": "17.0.2", + "url-loader": "4.1.1" + } + }, + "node_modules/@algolia/autocomplete-core": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz", + "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==", + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.9.3", + "@algolia/autocomplete-shared": "1.9.3" + } + }, + "node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz", + "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==", + "dependencies": { + "@algolia/autocomplete-shared": "1.9.3" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" + } + }, + "node_modules/@algolia/autocomplete-preset-algolia": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz", + "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==", + "dependencies": { + "@algolia/autocomplete-shared": "1.9.3" + }, + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/autocomplete-shared": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz", + "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==", + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/cache-browser-local-storage": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.20.0.tgz", + "integrity": "sha512-uujahcBt4DxduBTvYdwO3sBfHuJvJokiC3BP1+O70fglmE1ShkH8lpXqZBac1rrU3FnNYSUs4pL9lBdTKeRPOQ==", + "dependencies": { + "@algolia/cache-common": "4.20.0" + } + }, + "node_modules/@algolia/cache-common": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.20.0.tgz", + "integrity": "sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ==" + }, + "node_modules/@algolia/cache-in-memory": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.20.0.tgz", + "integrity": "sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg==", + "dependencies": { + "@algolia/cache-common": "4.20.0" + } + }, + "node_modules/@algolia/client-account": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.20.0.tgz", + "integrity": "sha512-GGToLQvrwo7am4zVkZTnKa72pheQeez/16sURDWm7Seyz+HUxKi3BM6fthVVPUEBhtJ0reyVtuK9ArmnaKl10Q==", + "dependencies": { + "@algolia/client-common": "4.20.0", + "@algolia/client-search": "4.20.0", + "@algolia/transporter": "4.20.0" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.20.0.tgz", + "integrity": "sha512-EIr+PdFMOallRdBTHHdKI3CstslgLORQG7844Mq84ib5oVFRVASuuPmG4bXBgiDbcsMLUeOC6zRVJhv1KWI0ug==", + "dependencies": { + "@algolia/client-common": "4.20.0", + "@algolia/client-search": "4.20.0", + "@algolia/requester-common": "4.20.0", + "@algolia/transporter": "4.20.0" + } + }, + "node_modules/@algolia/client-common": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.20.0.tgz", + "integrity": "sha512-P3WgMdEss915p+knMMSd/fwiHRHKvDu4DYRrCRaBrsfFw7EQHon+EbRSm4QisS9NYdxbS04kcvNoavVGthyfqQ==", + "dependencies": { + "@algolia/requester-common": "4.20.0", + "@algolia/transporter": "4.20.0" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.20.0.tgz", + "integrity": "sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ==", + "dependencies": { + "@algolia/client-common": "4.20.0", + "@algolia/requester-common": "4.20.0", + "@algolia/transporter": "4.20.0" + } + }, + "node_modules/@algolia/client-search": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.20.0.tgz", + "integrity": "sha512-zgwqnMvhWLdpzKTpd3sGmMlr4c+iS7eyyLGiaO51zDZWGMkpgoNVmltkzdBwxOVXz0RsFMznIxB9zuarUv4TZg==", + "dependencies": { + "@algolia/client-common": "4.20.0", + "@algolia/requester-common": "4.20.0", + "@algolia/transporter": "4.20.0" + } + }, + "node_modules/@algolia/events": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@algolia/events/-/events-4.0.1.tgz", + "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==" + }, + "node_modules/@algolia/logger-common": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.20.0.tgz", + "integrity": "sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ==" + }, + "node_modules/@algolia/logger-console": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.20.0.tgz", + "integrity": "sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA==", + "dependencies": { + "@algolia/logger-common": "4.20.0" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.20.0.tgz", + "integrity": "sha512-HbzoSjcjuUmYOkcHECkVTwAelmvTlgs48N6Owt4FnTOQdwn0b8pdht9eMgishvk8+F8bal354nhx/xOoTfwiAw==", + "dependencies": { + "@algolia/requester-common": "4.20.0" + } + }, + "node_modules/@algolia/requester-common": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.20.0.tgz", + "integrity": "sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng==" + }, + "node_modules/@algolia/requester-node-http": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.20.0.tgz", + "integrity": "sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng==", + "dependencies": { + "@algolia/requester-common": "4.20.0" + } + }, + "node_modules/@algolia/transporter": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.20.0.tgz", + "integrity": "sha512-Lsii1pGWOAISbzeyuf+r/GPhvHMPHSPrTDWNcIzOE1SG1inlJHICaVe2ikuoRjcpgxZNU54Jl+if15SUCsaTUg==", + "dependencies": { + "@algolia/cache-common": "4.20.0", + "@algolia/logger-common": "4.20.0", + "@algolia/requester-common": "4.20.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "dependencies": { + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", + "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.20.tgz", + "integrity": "sha512-Y6jd1ahLubuYweD/zJH+vvOY141v4f9igNQAQ+MBgq9JlHS2iTsZKn1aMsb3vGccZsXI16VzTBw52Xx0DWmtnA==", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.22.15", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.22.20", + "@babel/helpers": "^7.22.15", + "@babel/parser": "^7.22.16", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.22.20", + "@babel/types": "^7.22.19", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.15.tgz", + "integrity": "sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==", + "dependencies": { + "@babel/types": "^7.22.15", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", + "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", + "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", + "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "dependencies": { + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.15.tgz", + "integrity": "sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.20.tgz", + "integrity": "sha512-dLT7JVWIUUxKOs1UnJUBR3S70YK+pKX6AbJgB2vMIvEkZkrfJDbYDJesnPshtKV4LhDOR3Oc5YULeDizRek+5A==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.15.tgz", + "integrity": "sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==", + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.22.16", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz", + "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz", + "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", + "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", + "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", + "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", + "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz", + "integrity": "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", + "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", + "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.15.tgz", + "integrity": "sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", + "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", + "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", + "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", + "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.15.tgz", + "integrity": "sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", + "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", + "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", + "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", + "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", + "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", + "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", + "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", + "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", + "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", + "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", + "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", + "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", + "dependencies": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.15.tgz", + "integrity": "sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg==", + "dependencies": { + "@babel/helper-module-transforms": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz", + "integrity": "sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==", + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", + "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "dependencies": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", + "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", + "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", + "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", + "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", + "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", + "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.15.tgz", + "integrity": "sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", + "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", + "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", + "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", + "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.22.5.tgz", + "integrity": "sha512-BF5SXoO+nX3h5OhlN78XbbDrBOffv+AxPP2ENaJOVqjWCgBDeOY3WcaUcddutGSfoap+5NEQ/q/4I3WZIvgkXA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz", + "integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz", + "integrity": "sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz", + "integrity": "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", + "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", + "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.15.tgz", + "integrity": "sha512-tEVLhk8NRZSmwQ0DJtxxhTrCht1HVo8VaMzYT4w6lwyKBuHsgoioAUA7/6eT2fRfc5/23fuGdlwIxXhRVgWr4g==", + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.5", + "babel-plugin-polyfill-corejs3": "^0.8.3", + "babel-plugin-polyfill-regenerator": "^0.5.2", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", + "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", + "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", + "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", + "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", + "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz", + "integrity": "sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", + "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", + "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", + "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", + "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.20.tgz", + "integrity": "sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==", + "dependencies": { + "@babel/compat-data": "^7.22.20", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.15", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.22.15", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.11", + "@babel/plugin-transform-classes": "^7.22.15", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.22.15", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.11", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-for-of": "^7.22.15", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.11", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.15", + "@babel/plugin-transform-modules-systemjs": "^7.22.11", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-numeric-separator": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.22.15", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.22.15", + "@babel/plugin-transform-parameters": "^7.22.15", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.10", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.10", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "@babel/types": "^7.22.19", + "babel-plugin-polyfill-corejs2": "^0.4.5", + "babel-plugin-polyfill-corejs3": "^0.8.3", + "babel-plugin-polyfill-regenerator": "^0.5.2", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.15.tgz", + "integrity": "sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-react-display-name": "^7.22.5", + "@babel/plugin-transform-react-jsx": "^7.22.15", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.22.15.tgz", + "integrity": "sha512-HblhNmh6yM+cU4VwbBRpxFhxsTdfS1zsvH9W+gEjD0ARV9+8B4sNfpI6GuhePti84nuvhiwKS539jKPFHskA9A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.15", + "@babel/plugin-transform-typescript": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" + }, + "node_modules/@babel/runtime": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", + "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.22.15.tgz", + "integrity": "sha512-SAj8oKi8UogVi6eXQXKNPu8qZ78Yzy7zawrlTr0M+IuW/g8Qe9gVDhGcF9h1S69OyACpYoLxEzpjs1M15sI5wQ==", + "dependencies": { + "core-js-pure": "^3.30.2", + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.20.tgz", + "integrity": "sha512-eU260mPZbU7mZ0N+X10pxXhQFMGTeLb9eFS0mxehS8HZp9o1uSnFeWQuG1UPrlxgA7QoUzFhOnilHDp0AXCyHw==", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.22.16", + "@babel/types": "^7.22.19", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.22.19", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.19.tgz", + "integrity": "sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==", + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.19", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@docsearch/css": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.5.2.tgz", + "integrity": "sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==" + }, + "node_modules/@docsearch/react": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.5.2.tgz", + "integrity": "sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==", + "dependencies": { + "@algolia/autocomplete-core": "1.9.3", + "@algolia/autocomplete-preset-algolia": "1.9.3", + "@docsearch/css": "3.5.2", + "algoliasearch": "^4.19.1" + }, + "peerDependencies": { + "@types/react": ">= 16.8.0 < 19.0.0", + "react": ">= 16.8.0 < 19.0.0", + "react-dom": ">= 16.8.0 < 19.0.0", + "search-insights": ">= 1 < 3" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "search-insights": { + "optional": true + } + } + }, + "node_modules/@docusaurus/core": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-2.4.3.tgz", + "integrity": "sha512-dWH5P7cgeNSIg9ufReX6gaCl/TmrGKD38Orbwuz05WPhAQtFXHd5B8Qym1TiXfvUNvwoYKkAJOJuGe8ou0Z7PA==", + "dependencies": { + "@babel/core": "^7.18.6", + "@babel/generator": "^7.18.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.18.6", + "@babel/preset-env": "^7.18.6", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.18.6", + "@babel/runtime": "^7.18.6", + "@babel/runtime-corejs3": "^7.18.6", + "@babel/traverse": "^7.18.8", + "@docusaurus/cssnano-preset": "2.4.3", + "@docusaurus/logger": "2.4.3", + "@docusaurus/mdx-loader": "2.4.3", + "@docusaurus/react-loadable": "5.5.2", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-common": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "@slorber/static-site-generator-webpack-plugin": "^4.0.7", + "@svgr/webpack": "^6.2.1", + "autoprefixer": "^10.4.7", + "babel-loader": "^8.2.5", + "babel-plugin-dynamic-import-node": "^2.3.3", + "boxen": "^6.2.1", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "clean-css": "^5.3.0", + "cli-table3": "^0.6.2", + "combine-promises": "^1.1.0", + "commander": "^5.1.0", + "copy-webpack-plugin": "^11.0.0", + "core-js": "^3.23.3", + "css-loader": "^6.7.1", + "css-minimizer-webpack-plugin": "^4.0.0", + "cssnano": "^5.1.12", + "del": "^6.1.1", + "detect-port": "^1.3.0", + "escape-html": "^1.0.3", + "eta": "^2.0.0", + "file-loader": "^6.2.0", + "fs-extra": "^10.1.0", + "html-minifier-terser": "^6.1.0", + "html-tags": "^3.2.0", + "html-webpack-plugin": "^5.5.0", + "import-fresh": "^3.3.0", + "leven": "^3.1.0", + "lodash": "^4.17.21", + "mini-css-extract-plugin": "^2.6.1", + "postcss": "^8.4.14", + "postcss-loader": "^7.0.0", + "prompts": "^2.4.2", + "react-dev-utils": "^12.0.1", + "react-helmet-async": "^1.3.0", + "react-loadable": "npm:@docusaurus/react-loadable@5.5.2", + "react-loadable-ssr-addon-v5-slorber": "^1.0.1", + "react-router": "^5.3.3", + "react-router-config": "^5.1.1", + "react-router-dom": "^5.3.3", + "rtl-detect": "^1.0.4", + "semver": "^7.3.7", + "serve-handler": "^6.1.3", + "shelljs": "^0.8.5", + "terser-webpack-plugin": "^5.3.3", + "tslib": "^2.4.0", + "update-notifier": "^5.1.0", + "url-loader": "^4.1.1", + "wait-on": "^6.0.1", + "webpack": "^5.73.0", + "webpack-bundle-analyzer": "^4.5.0", + "webpack-dev-server": "^4.9.3", + "webpack-merge": "^5.8.0", + "webpackbar": "^5.0.2" + }, + "bin": { + "docusaurus": "bin/docusaurus.mjs" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/cssnano-preset": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-2.4.3.tgz", + "integrity": "sha512-ZvGSRCi7z9wLnZrXNPG6DmVPHdKGd8dIn9pYbEOFiYihfv4uDR3UtxogmKf+rT8ZlKFf5Lqne8E8nt08zNM8CA==", + "dependencies": { + "cssnano-preset-advanced": "^5.3.8", + "postcss": "^8.4.14", + "postcss-sort-media-queries": "^4.2.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@docusaurus/logger": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-2.4.3.tgz", + "integrity": "sha512-Zxws7r3yLufk9xM1zq9ged0YHs65mlRmtsobnFkdZTxWXdTYlWWLWdKyNKAsVC+D7zg+pv2fGbyabdOnyZOM3w==", + "dependencies": { + "chalk": "^4.1.2", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@docusaurus/mdx-loader": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.4.3.tgz", + "integrity": "sha512-b1+fDnWtl3GiqkL0BRjYtc94FZrcDDBV1j8446+4tptB9BAOlePwG2p/pK6vGvfL53lkOsszXMghr2g67M0vCw==", + "dependencies": { + "@babel/parser": "^7.18.8", + "@babel/traverse": "^7.18.8", + "@docusaurus/logger": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@mdx-js/mdx": "^1.6.22", + "escape-html": "^1.0.3", + "file-loader": "^6.2.0", + "fs-extra": "^10.1.0", + "image-size": "^1.0.1", + "mdast-util-to-string": "^2.0.0", + "remark-emoji": "^2.2.0", + "stringify-object": "^3.3.0", + "tslib": "^2.4.0", + "unified": "^9.2.2", + "unist-util-visit": "^2.0.3", + "url-loader": "^4.1.1", + "webpack": "^5.73.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/module-type-aliases": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-2.4.3.tgz", + "integrity": "sha512-cwkBkt1UCiduuvEAo7XZY01dJfRn7UR/75mBgOdb1hKknhrabJZ8YH+7savd/y9kLExPyrhe0QwdS9GuzsRRIA==", + "dependencies": { + "@docusaurus/react-loadable": "5.5.2", + "@docusaurus/types": "2.4.3", + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router-config": "*", + "@types/react-router-dom": "*", + "react-helmet-async": "*", + "react-loadable": "npm:@docusaurus/react-loadable@5.5.2" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/@docusaurus/plugin-client-redirects": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-2.4.3.tgz", + "integrity": "sha512-iCwc/zH8X6eNtLYdyUJFY6+GbsbRgMgvAC/TmSmCYTmwnoN5Y1Bc5OwUkdtoch0XKizotJMRAmGIAhP8sAetdQ==", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/logger": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-common": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "eta": "^2.0.0", + "fs-extra": "^10.1.0", + "lodash": "^4.17.21", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-blog": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.4.3.tgz", + "integrity": "sha512-PVhypqaA0t98zVDpOeTqWUTvRqCEjJubtfFUQ7zJNYdbYTbS/E/ytq6zbLVsN/dImvemtO/5JQgjLxsh8XLo8Q==", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/logger": "2.4.3", + "@docusaurus/mdx-loader": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-common": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "cheerio": "^1.0.0-rc.12", + "feed": "^4.2.2", + "fs-extra": "^10.1.0", + "lodash": "^4.17.21", + "reading-time": "^1.5.0", + "tslib": "^2.4.0", + "unist-util-visit": "^2.0.3", + "utility-types": "^3.10.0", + "webpack": "^5.73.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-docs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.4.3.tgz", + "integrity": "sha512-N7Po2LSH6UejQhzTCsvuX5NOzlC+HiXOVvofnEPj0WhMu1etpLEXE6a4aTxrtg95lQ5kf0xUIdjX9sh3d3G76A==", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/logger": "2.4.3", + "@docusaurus/mdx-loader": "2.4.3", + "@docusaurus/module-type-aliases": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "@types/react-router-config": "^5.0.6", + "combine-promises": "^1.1.0", + "fs-extra": "^10.1.0", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "tslib": "^2.4.0", + "utility-types": "^3.10.0", + "webpack": "^5.73.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-pages": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.4.3.tgz", + "integrity": "sha512-txtDVz7y3zGk67q0HjG0gRttVPodkHqE0bpJ+7dOaTH40CQFLSh7+aBeGnPOTl+oCPG+hxkim4SndqPqXjQ8Bg==", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/mdx-loader": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "fs-extra": "^10.1.0", + "tslib": "^2.4.0", + "webpack": "^5.73.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-debug": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-2.4.3.tgz", + "integrity": "sha512-LkUbuq3zCmINlFb+gAd4ZvYr+bPAzMC0hwND4F7V9bZ852dCX8YoWyovVUBKq4er1XsOwSQaHmNGtObtn8Av8Q==", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils": "2.4.3", + "fs-extra": "^10.1.0", + "react-json-view": "^1.21.3", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-analytics": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.4.3.tgz", + "integrity": "sha512-KzBV3k8lDkWOhg/oYGxlK5o9bOwX7KpPc/FTWoB+SfKhlHfhq7qcQdMi1elAaVEIop8tgK6gD1E58Q+XC6otSQ==", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-gtag": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.4.3.tgz", + "integrity": "sha512-5FMg0rT7sDy4i9AGsvJC71MQrqQZwgLNdDetLEGDHLfSHLvJhQbTCUGbGXknUgWXQJckcV/AILYeJy+HhxeIFA==", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-tag-manager": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-2.4.3.tgz", + "integrity": "sha512-1jTzp71yDGuQiX9Bi0pVp3alArV0LSnHXempvQTxwCGAEzUWWaBg4d8pocAlTpbP9aULQQqhgzrs8hgTRPOM0A==", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-sitemap": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.4.3.tgz", + "integrity": "sha512-LRQYrK1oH1rNfr4YvWBmRzTL0LN9UAPxBbghgeFRBm5yloF6P+zv1tm2pe2hQTX/QP5bSKdnajCvfnScgKXMZQ==", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/logger": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-common": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "fs-extra": "^10.1.0", + "sitemap": "^7.1.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/preset-classic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-2.4.3.tgz", + "integrity": "sha512-tRyMliepY11Ym6hB1rAFSNGwQDpmszvWYJvlK1E+md4SW8i6ylNHtpZjaYFff9Mdk3i/Pg8ItQq9P0daOJAvQw==", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/plugin-content-blog": "2.4.3", + "@docusaurus/plugin-content-docs": "2.4.3", + "@docusaurus/plugin-content-pages": "2.4.3", + "@docusaurus/plugin-debug": "2.4.3", + "@docusaurus/plugin-google-analytics": "2.4.3", + "@docusaurus/plugin-google-gtag": "2.4.3", + "@docusaurus/plugin-google-tag-manager": "2.4.3", + "@docusaurus/plugin-sitemap": "2.4.3", + "@docusaurus/theme-classic": "2.4.3", + "@docusaurus/theme-common": "2.4.3", + "@docusaurus/theme-search-algolia": "2.4.3", + "@docusaurus/types": "2.4.3" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/react-loadable": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", + "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", + "dependencies": { + "@types/react": "*", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/@docusaurus/theme-classic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-2.4.3.tgz", + "integrity": "sha512-QKRAJPSGPfDY2yCiPMIVyr+MqwZCIV2lxNzqbyUW0YkrlmdzzP3WuQJPMGLCjWgQp/5c9kpWMvMxjhpZx1R32Q==", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/mdx-loader": "2.4.3", + "@docusaurus/module-type-aliases": "2.4.3", + "@docusaurus/plugin-content-blog": "2.4.3", + "@docusaurus/plugin-content-docs": "2.4.3", + "@docusaurus/plugin-content-pages": "2.4.3", + "@docusaurus/theme-common": "2.4.3", + "@docusaurus/theme-translations": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-common": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "@mdx-js/react": "^1.6.22", + "clsx": "^1.2.1", + "copy-text-to-clipboard": "^3.0.1", + "infima": "0.2.0-alpha.43", + "lodash": "^4.17.21", + "nprogress": "^0.2.0", + "postcss": "^8.4.14", + "prism-react-renderer": "^1.3.5", + "prismjs": "^1.28.0", + "react-router-dom": "^5.3.3", + "rtlcss": "^3.5.0", + "tslib": "^2.4.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/theme-common": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-2.4.3.tgz", + "integrity": "sha512-7KaDJBXKBVGXw5WOVt84FtN8czGWhM0lbyWEZXGp8AFfL6sZQfRTluFp4QriR97qwzSyOfQb+nzcDZZU4tezUw==", + "dependencies": { + "@docusaurus/mdx-loader": "2.4.3", + "@docusaurus/module-type-aliases": "2.4.3", + "@docusaurus/plugin-content-blog": "2.4.3", + "@docusaurus/plugin-content-docs": "2.4.3", + "@docusaurus/plugin-content-pages": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-common": "2.4.3", + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router-config": "*", + "clsx": "^1.2.1", + "parse-numeric-range": "^1.3.0", + "prism-react-renderer": "^1.3.5", + "tslib": "^2.4.0", + "use-sync-external-store": "^1.2.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/theme-search-algolia": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.4.3.tgz", + "integrity": "sha512-jziq4f6YVUB5hZOB85ELATwnxBz/RmSLD3ksGQOLDPKVzat4pmI8tddNWtriPpxR04BNT+ZfpPUMFkNFetSW1Q==", + "dependencies": { + "@docsearch/react": "^3.1.1", + "@docusaurus/core": "2.4.3", + "@docusaurus/logger": "2.4.3", + "@docusaurus/plugin-content-docs": "2.4.3", + "@docusaurus/theme-common": "2.4.3", + "@docusaurus/theme-translations": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "algoliasearch": "^4.13.1", + "algoliasearch-helper": "^3.10.0", + "clsx": "^1.2.1", + "eta": "^2.0.0", + "fs-extra": "^10.1.0", + "lodash": "^4.17.21", + "tslib": "^2.4.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/theme-translations": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-2.4.3.tgz", + "integrity": "sha512-H4D+lbZbjbKNS/Zw1Lel64PioUAIT3cLYYJLUf3KkuO/oc9e0QCVhIYVtUI2SfBCF2NNdlyhBDQEEMygsCedIg==", + "dependencies": { + "fs-extra": "^10.1.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@docusaurus/types": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-2.4.3.tgz", + "integrity": "sha512-W6zNLGQqfrp/EoPD0bhb9n7OobP+RHpmvVzpA+Z/IuU3Q63njJM24hmT0GYboovWcDtFmnIJC9wcyx4RVPQscw==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.6.0", + "react-helmet-async": "^1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.73.0", + "webpack-merge": "^5.8.0" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/utils": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-2.4.3.tgz", + "integrity": "sha512-fKcXsjrD86Smxv8Pt0TBFqYieZZCPh4cbf9oszUq/AMhZn3ujwpKaVYZACPX8mmjtYx0JOgNx52CREBfiGQB4A==", + "dependencies": { + "@docusaurus/logger": "2.4.3", + "@svgr/webpack": "^6.2.1", + "escape-string-regexp": "^4.0.0", + "file-loader": "^6.2.0", + "fs-extra": "^10.1.0", + "github-slugger": "^1.4.0", + "globby": "^11.1.0", + "gray-matter": "^4.0.3", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "micromatch": "^4.0.5", + "resolve-pathname": "^3.0.0", + "shelljs": "^0.8.5", + "tslib": "^2.4.0", + "url-loader": "^4.1.1", + "webpack": "^5.73.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "@docusaurus/types": "*" + }, + "peerDependenciesMeta": { + "@docusaurus/types": { + "optional": true + } + } + }, + "node_modules/@docusaurus/utils-common": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-2.4.3.tgz", + "integrity": "sha512-/jascp4GbLQCPVmcGkPzEQjNaAk3ADVfMtudk49Ggb+131B1WDD6HqlSmDf8MxGdy7Dja2gc+StHf01kiWoTDQ==", + "dependencies": { + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "@docusaurus/types": "*" + }, + "peerDependenciesMeta": { + "@docusaurus/types": { + "optional": true + } + } + }, + "node_modules/@docusaurus/utils-validation": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-2.4.3.tgz", + "integrity": "sha512-G2+Vt3WR5E/9drAobP+hhZQMaswRwDlp6qOMi7o7ZypB+VO7N//DZWhZEwhcRGepMDJGQEwtPv7UxtYwPL9PBw==", + "dependencies": { + "@docusaurus/logger": "2.4.3", + "@docusaurus/utils": "2.4.3", + "joi": "^17.6.0", + "js-yaml": "^4.1.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@easyops-cn/autocomplete.js": { + "version": "0.38.1", + "resolved": "https://registry.npmjs.org/@easyops-cn/autocomplete.js/-/autocomplete.js-0.38.1.tgz", + "integrity": "sha512-drg76jS6syilOUmVNkyo1c7ZEBPcPuK+aJA7AksM5ZIIbV57DMHCywiCr+uHyv8BE5jUTU98j/H7gVrkHrWW3Q==", + "dependencies": { + "cssesc": "^3.0.0", + "immediate": "^3.2.3" + } + }, + "node_modules/@easyops-cn/docusaurus-search-local": { + "version": "0.29.4", + "resolved": "https://registry.npmjs.org/@easyops-cn/docusaurus-search-local/-/docusaurus-search-local-0.29.4.tgz", + "integrity": "sha512-QbYjEXSZEyO/d1R/MZE+1R14ZysjcrYjNH2EPJqq12UocXPj6BXXfl0A24SvbLNJ4uaLV+dMUQsvqbvwFjwRKg==", + "dependencies": { + "@docusaurus/plugin-content-docs": "^2.0.0-rc.1", + "@docusaurus/theme-translations": "^2.0.0-rc.1", + "@docusaurus/utils": "^2.0.0-rc.1", + "@docusaurus/utils-common": "^2.0.0-rc.1", + "@docusaurus/utils-validation": "^2.0.0-rc.1", + "@easyops-cn/autocomplete.js": "^0.38.1", + "@node-rs/jieba": "^1.6.0", + "cheerio": "^1.0.0-rc.3", + "clsx": "^1.1.1", + "debug": "^4.2.0", + "fs-extra": "^10.0.0", + "klaw-sync": "^6.0.0", + "lunr": "^2.3.9", + "lunr-languages": "^1.4.0", + "mark.js": "^8.11.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "@docusaurus/theme-common": "^2.0.0-rc.1", + "react": "^16.14.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.14.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" + }, + "node_modules/@mdx-js/mdx": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz", + "integrity": "sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==", + "dependencies": { + "@babel/core": "7.12.9", + "@babel/plugin-syntax-jsx": "7.12.1", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@mdx-js/util": "1.6.22", + "babel-plugin-apply-mdx-type-prop": "1.6.22", + "babel-plugin-extract-import-names": "1.6.22", + "camelcase-css": "2.0.1", + "detab": "2.0.4", + "hast-util-raw": "6.0.1", + "lodash.uniq": "4.5.0", + "mdast-util-to-hast": "10.0.1", + "remark-footnotes": "2.0.0", + "remark-mdx": "1.6.22", + "remark-parse": "8.0.3", + "remark-squeeze-paragraphs": "4.0.0", + "style-to-object": "0.3.0", + "unified": "9.2.0", + "unist-builder": "2.0.3", + "unist-util-visit": "2.0.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/mdx/node_modules/@babel/core": { + "version": "7.12.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", + "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.7", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.9", + "@babel/types": "^7.12.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@mdx-js/mdx/node_modules/@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@mdx-js/mdx/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@mdx-js/mdx/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@mdx-js/mdx/node_modules/unified": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", + "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/react": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", + "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0" + } + }, + "node_modules/@mdx-js/util": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz", + "integrity": "sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@node-rs/jieba": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba/-/jieba-1.7.2.tgz", + "integrity": "sha512-zGto08NDU+KWm670qVHYGTb0YTEJ0A97dwH3WCnnhyRYMqTbOXKC6OwTc/cjzfSJP1UDBSar9Ug9BlmWmEThWg==", + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@node-rs/jieba-android-arm-eabi": "1.7.2", + "@node-rs/jieba-android-arm64": "1.7.2", + "@node-rs/jieba-darwin-arm64": "1.7.2", + "@node-rs/jieba-darwin-x64": "1.7.2", + "@node-rs/jieba-freebsd-x64": "1.7.2", + "@node-rs/jieba-linux-arm-gnueabihf": "1.7.2", + "@node-rs/jieba-linux-arm64-gnu": "1.7.2", + "@node-rs/jieba-linux-arm64-musl": "1.7.2", + "@node-rs/jieba-linux-x64-gnu": "1.7.2", + "@node-rs/jieba-linux-x64-musl": "1.7.2", + "@node-rs/jieba-win32-arm64-msvc": "1.7.2", + "@node-rs/jieba-win32-ia32-msvc": "1.7.2", + "@node-rs/jieba-win32-x64-msvc": "1.7.2" + } + }, + "node_modules/@node-rs/jieba-android-arm-eabi": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-android-arm-eabi/-/jieba-android-arm-eabi-1.7.2.tgz", + "integrity": "sha512-FyDHRNSRIHOQO7S6Q4RwuGffnnnuNwaXPH7K8WqSzifEY+zFIaSPcNqrZHrnqyeXc4JiYpBIHeP+0Mkf1kIGRA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-android-arm64": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-android-arm64/-/jieba-android-arm64-1.7.2.tgz", + "integrity": "sha512-z0UEZCGrAX/IiarhuDMsEIDZBS77UZv4SQyL/J48yrsbWKbb2lJ1vCrYxXIWqwp6auXHEu4r1O/pMriDAcEnPg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-darwin-arm64": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-darwin-arm64/-/jieba-darwin-arm64-1.7.2.tgz", + "integrity": "sha512-M2cHIWRaaOmXGKy446SH2+Y2PzREaI2oYznPbg55wYEdioUp01YS/2WRG8CaoCKEj0aUocA7MFM2vVcoIAsbQw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-darwin-x64": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-darwin-x64/-/jieba-darwin-x64-1.7.2.tgz", + "integrity": "sha512-euDawBU2FxB0CGTR803BA6WABsiicIrqa61z2AFFDPkJCDrauEM0jbMg3GDKLAvbaLbZ1Etu3QNN5xyroqp4Qw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-freebsd-x64": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-freebsd-x64/-/jieba-freebsd-x64-1.7.2.tgz", + "integrity": "sha512-vXCaYxPb90d/xTBVG+ZZXrFLXsO2719pZSyiZCL2tey+UY28U7MOoK6394Wwmf0FCB/eRTQMCKjVIUDi+IRMUg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-arm-gnueabihf": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-arm-gnueabihf/-/jieba-linux-arm-gnueabihf-1.7.2.tgz", + "integrity": "sha512-HTep79XlJYO3KRYZ2kJChG9HnYr1DKSQTB+HEYWKLK0ifphqybcxGNLAdH0S4dViG2ciD0+iN/refgtqZEidpw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-arm64-gnu": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-arm64-gnu/-/jieba-linux-arm64-gnu-1.7.2.tgz", + "integrity": "sha512-P8QJdQydOVewL1MIqYiRpI7LOfrRQag+p4/hwExe+YXH8C7DOrR8rWJD/7XNRTbpOimlHq1UN/e+ZzhxQF/cLw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-arm64-musl": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-arm64-musl/-/jieba-linux-arm64-musl-1.7.2.tgz", + "integrity": "sha512-WjnN0hmDvTXb2h3hMW5VnUGkK1xaqhs+WHfMMilau55+YN+YOYALKZ0TeBY4BapClLuBx54wqwmBX+B4hAXunQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-x64-gnu": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-x64-gnu/-/jieba-linux-x64-gnu-1.7.2.tgz", + "integrity": "sha512-gBXds/DwNSA6lNUxJjL6WIaNT6pnlM5juUgV/krLLkBJ8vXpOrQ07p0rrK1tnigz9b20xhsHaFRSwED1Y8zeXw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-x64-musl": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-x64-musl/-/jieba-linux-x64-musl-1.7.2.tgz", + "integrity": "sha512-tNVD3SMuG5zAj7+bLS2Enio3zR7BPxi3PhQtpQ+Hv83jajIcN46QQ0EdoMFz/aB+hkQ9PlLAstu+VREFegs5EA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-win32-arm64-msvc": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-win32-arm64-msvc/-/jieba-win32-arm64-msvc-1.7.2.tgz", + "integrity": "sha512-/e1iQ0Dh02lGPNCYTU/H3cfIsWydaGRzZ3TDj6GfWrxkWqXORL98x/VJ/C/uKLpc7GSLLd9ygyZG7SOAfKe2tA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-win32-ia32-msvc": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-win32-ia32-msvc/-/jieba-win32-ia32-msvc-1.7.2.tgz", + "integrity": "sha512-cYjA6YUiOwtuEzWErvwMMt/RETNWQDLcmAaiHA8ohsa6c0eB0kRJlQCc683tlaczZxqroY/7C9mxgJNGvoGRbw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-win32-x64-msvc": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-win32-x64-msvc/-/jieba-win32-x64-msvc-1.7.2.tgz", + "integrity": "sha512-2M+Um3woFF17sa8VBYQQ6E5PNMe9Kf9fdzmeDh/GzuNHXlxW4LyK9VTV8zchIv/bDNAR5Z85kfW4wASULUxvFQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.23", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.23.tgz", + "integrity": "sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==" + }, + "node_modules/@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + }, + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@slorber/static-site-generator-webpack-plugin": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.7.tgz", + "integrity": "sha512-Ug7x6z5lwrz0WqdnNFOMYrDQNTPAprvHLSh6+/fmml3qUiz6l5eq+2MzLKWtn/q5K5NpSiFsZTP/fck/3vjSxA==", + "dependencies": { + "eval": "^0.1.8", + "p-map": "^4.0.0", + "webpack-sources": "^3.2.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz", + "integrity": "sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz", + "integrity": "sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz", + "integrity": "sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz", + "integrity": "sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz", + "integrity": "sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz", + "integrity": "sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.5.1.tgz", + "integrity": "sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "^6.5.1", + "@svgr/babel-plugin-remove-jsx-attribute": "*", + "@svgr/babel-plugin-remove-jsx-empty-expression": "*", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.5.1", + "@svgr/babel-plugin-svg-dynamic-title": "^6.5.1", + "@svgr/babel-plugin-svg-em-dimensions": "^6.5.1", + "@svgr/babel-plugin-transform-react-native-svg": "^6.5.1", + "@svgr/babel-plugin-transform-svg-component": "^6.5.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/core": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz", + "integrity": "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==", + "dependencies": { + "@babel/core": "^7.19.6", + "@svgr/babel-preset": "^6.5.1", + "@svgr/plugin-jsx": "^6.5.1", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz", + "integrity": "sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==", + "dependencies": { + "@babel/types": "^7.20.0", + "entities": "^4.4.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz", + "integrity": "sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==", + "dependencies": { + "@babel/core": "^7.19.6", + "@svgr/babel-preset": "^6.5.1", + "@svgr/hast-util-to-babel-ast": "^6.5.1", + "svg-parser": "^2.0.4" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "^6.0.0" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz", + "integrity": "sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==", + "dependencies": { + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "svgo": "^2.8.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/webpack": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.3.1.tgz", + "integrity": "sha512-eODxwIUShLxSMaRjzJtrj9wg89D75JLczvWg9SaB5W+OtVTkiC1vdGd8+t+pf5fTlBOy4RRXAq7x1E3DUl3D0A==", + "dependencies": { + "@babel/core": "^7.18.5", + "@babel/plugin-transform-react-constant-elements": "^7.17.12", + "@babel/preset-env": "^7.18.2", + "@babel/preset-react": "^7.17.12", + "@babel/preset-typescript": "^7.17.12", + "@svgr/core": "^6.3.1", + "@svgr/plugin-jsx": "^6.3.1", + "@svgr/plugin-svgo": "^6.3.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.3.tgz", + "integrity": "sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.11", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.11.tgz", + "integrity": "sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.36", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", + "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz", + "integrity": "sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.44.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz", + "integrity": "sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" + }, + "node_modules/@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.36", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz", + "integrity": "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/hast": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.6.tgz", + "integrity": "sha512-47rJE80oqPmFdVDCD7IheXBrVdwuBgsYwoczFvKmwfo2Mzsnt+V9OONsYauFmICb6lQPpCuXYJWejBNs4pDJRg==", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/@types/history": { + "version": "4.7.11", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", + "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==" + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" + }, + "node_modules/@types/http-errors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.2.tgz", + "integrity": "sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.12", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.12.tgz", + "integrity": "sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", + "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==" + }, + "node_modules/@types/mdast": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.12.tgz", + "integrity": "sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" + }, + "node_modules/@types/node": { + "version": "20.6.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.3.tgz", + "integrity": "sha512-HksnYH4Ljr4VQgEy2lTStbCKv/P590tmPe5HqOnv9Gprffgv5WXAY+Y5Gqniu0GGqeTCUdBnzC3QSrzPkBkAMA==" + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "node_modules/@types/parse5": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", + "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.6", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.6.tgz", + "integrity": "sha512-RK/kBbYOQQHLYj9Z95eh7S6t7gq4Ojt/NT8HTk8bWVhA5DaF+5SMnxHKkP4gPNN3wAZkKP+VjAf0ebtYzf+fxg==" + }, + "node_modules/@types/qs": { + "version": "6.9.8", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz", + "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + }, + "node_modules/@types/react": { + "version": "18.2.22", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.22.tgz", + "integrity": "sha512-60fLTOLqzarLED2O3UQImc/lsNRgG0jE/a1mPW9KjMemY0LMITWEsbS4VvZ4p6rorEHd5YKxxmMKSDK505GHpA==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-router": { + "version": "5.1.20", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", + "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*" + } + }, + "node_modules/@types/react-router-config": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.7.tgz", + "integrity": "sha512-pFFVXUIydHlcJP6wJm7sDii5mD/bCmmAY0wQzq+M+uX7bqS95AQqHZWP1iNMKrWVQSuHIzj5qi9BvrtLX2/T4w==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "^5.1.0" + } + }, + "node_modules/@types/react-router-dom": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", + "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "*" + } + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + }, + "node_modules/@types/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" + }, + "node_modules/@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", + "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/unist": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.8.tgz", + "integrity": "sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==" + }, + "node_modules/@types/ws": { + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", + "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/algoliasearch": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.20.0.tgz", + "integrity": "sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g==", + "dependencies": { + "@algolia/cache-browser-local-storage": "4.20.0", + "@algolia/cache-common": "4.20.0", + "@algolia/cache-in-memory": "4.20.0", + "@algolia/client-account": "4.20.0", + "@algolia/client-analytics": "4.20.0", + "@algolia/client-common": "4.20.0", + "@algolia/client-personalization": "4.20.0", + "@algolia/client-search": "4.20.0", + "@algolia/logger-common": "4.20.0", + "@algolia/logger-console": "4.20.0", + "@algolia/requester-browser-xhr": "4.20.0", + "@algolia/requester-common": "4.20.0", + "@algolia/requester-node-http": "4.20.0", + "@algolia/transporter": "4.20.0" + } + }, + "node_modules/algoliasearch-helper": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.14.2.tgz", + "integrity": "sha512-FjDSrjvQvJT/SKMW74nPgFpsoPUwZCzGbCqbp8HhBFfSk/OvNFxzCaCmuO0p7AWeLy1gD+muFwQEkBwcl5H4pg==", + "dependencies": { + "@algolia/events": "^4.0.1" + }, + "peerDependencies": { + "algoliasearch": ">= 3.1 < 6" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.15", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.15.tgz", + "integrity": "sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.21.10", + "caniuse-lite": "^1.0.30001520", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axios": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "dependencies": { + "follow-redirects": "^1.14.7" + } + }, + "node_modules/babel-loader": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", + "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-plugin-apply-mdx-type-prop": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz", + "integrity": "sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4", + "@mdx-js/util": "1.6.22" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@babel/core": "^7.11.6" + } + }, + "node_modules/babel-plugin-apply-mdx-type-prop/node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-extract-import-names": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz", + "integrity": "sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/babel-plugin-extract-import-names/node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", + "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", + "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.2", + "core-js-compat": "^3.31.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", + "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base16": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz", + "integrity": "sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==" + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/bonjour-service": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", + "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "node_modules/boxen": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz", + "integrity": "sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^6.2.0", + "chalk": "^4.1.2", + "cli-boxes": "^3.0.0", + "string-width": "^5.0.1", + "type-fest": "^2.5.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.11" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001538", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001538.tgz", + "integrity": "sha512-HWJnhnID+0YMtGlzcp3T9drmBJUVDchPJ08tpUGFLs9CYlwWPH2uLgpHn8fND5pCgXVtnGS3H4QR9XLMHVNkHw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/ccount": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", + "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/clean-css": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", + "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-table3/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/cli-table3/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/collapse-white-space": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", + "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + }, + "node_modules/combine-promises": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/combine-promises/-/combine-promises-1.2.0.tgz", + "integrity": "sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/comma-separated-tokens": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", + "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compressible/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dependencies": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" + }, + "node_modules/content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/copy-text-to-clipboard": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz", + "integrity": "sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "dependencies": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/copy-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/copy-webpack-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/core-js": { + "version": "3.32.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.32.2.tgz", + "integrity": "sha512-pxXSw1mYZPDGvTQqEc5vgIb83jGQKFGYWY76z4a7weZXUolw3G+OvpZqSRcfYOoOVUQJYEPsWeQK8pKEnUtWxQ==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.32.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.2.tgz", + "integrity": "sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ==", + "dependencies": { + "browserslist": "^4.21.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-pure": { + "version": "3.32.2", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.32.2.tgz", + "integrity": "sha512-Y2rxThOuNywTjnX/PgA5vWM6CZ9QB9sz9oGeCixV8MqXZO70z/5SHzf9EeBrEBK0PN36DnEBBu9O/aGWzKuMZQ==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-fetch": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", + "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-loader": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", + "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.21", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.3", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.2.tgz", + "integrity": "sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==", + "dependencies": { + "cssnano": "^5.1.8", + "jest-worker": "^29.1.2", + "postcss": "^8.4.17", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "@swc/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "lightningcss": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "5.1.15", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", + "dependencies": { + "cssnano-preset-default": "^5.2.14", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-advanced": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.10.tgz", + "integrity": "sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ==", + "dependencies": { + "autoprefixer": "^10.4.12", + "cssnano-preset-default": "^5.2.14", + "postcss-discard-unused": "^5.1.0", + "postcss-merge-idents": "^5.1.1", + "postcss-reduce-idents": "^5.2.0", + "postcss-zindex": "^5.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", + "dependencies": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.1", + "postcss-convert-values": "^5.1.3", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.4", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.4", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.2", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, + "node_modules/define-data-property": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", + "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/del": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detab": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.4.tgz", + "integrity": "sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==", + "dependencies": { + "repeat-string": "^1.5.4" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + }, + "node_modules/detect-port": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz", + "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==", + "dependencies": { + "address": "^1.0.1", + "debug": "4" + }, + "bin": { + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" + } + }, + "node_modules/detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "dependencies": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "bin": { + "detect": "bin/detect-port", + "detect-port": "bin/detect-port" + }, + "engines": { + "node": ">= 4.2.1" + } + }, + "node_modules/detect-port-alt/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/detect-port-alt/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dot-prop/node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + }, + "node_modules/duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.525", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.525.tgz", + "integrity": "sha512-GIZ620hDK4YmIqAWkscG4W6RwY6gOx1y5J6f4JUQwctiJrqH2oxZYU4mXHi35oV32tr630UcepBzSBGJ/WYcZA==" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/emoticon": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-3.2.0.tgz", + "integrity": "sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", + "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==" + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eta": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eta/-/eta-2.2.0.tgz", + "integrity": "sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==", + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "url": "https://github.com/eta-dev/eta?sponsor=1" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eval": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.8.tgz", + "integrity": "sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==", + "dependencies": { + "@types/node": "*", + "require-like": ">= 0.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/express/node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/express/node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/express/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", + "dependencies": { + "punycode": "^1.3.2" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fbemitter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", + "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", + "dependencies": { + "fbjs": "^3.0.0" + } + }, + "node_modules/fbjs": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", + "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", + "dependencies": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^1.0.35" + } + }, + "node_modules/fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" + }, + "node_modules/feed": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", + "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==", + "dependencies": { + "xml-js": "^1.6.11" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/filesize": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", + "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flux": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/flux/-/flux-4.0.4.tgz", + "integrity": "sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==", + "dependencies": { + "fbemitter": "^3.0.0", + "fbjs": "^3.0.1" + }, + "peerDependencies": { + "react": "^15.0.2 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", + "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", + "dependencies": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=10", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "eslint": ">= 6", + "typescript": ">= 2.7", + "vue-template-compiler": "*", + "webpack": ">= 4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dependencies": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.6.tgz", + "integrity": "sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz", + "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/github-slugger": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz", + "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==" + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-dirs/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/gray-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/gray-matter/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/hast-to-hyperscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", + "integrity": "sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==", + "dependencies": { + "@types/unist": "^2.0.3", + "comma-separated-tokens": "^1.0.0", + "property-information": "^5.3.0", + "space-separated-tokens": "^1.0.0", + "style-to-object": "^0.3.0", + "unist-util-is": "^4.0.0", + "web-namespaces": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz", + "integrity": "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==", + "dependencies": { + "@types/parse5": "^5.0.0", + "hastscript": "^6.0.0", + "property-information": "^5.0.0", + "vfile": "^4.0.0", + "vfile-location": "^3.2.0", + "web-namespaces": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", + "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.0.1.tgz", + "integrity": "sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==", + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-from-parse5": "^6.0.0", + "hast-util-to-parse5": "^6.0.0", + "html-void-elements": "^1.0.0", + "parse5": "^6.0.0", + "unist-util-position": "^3.0.0", + "vfile": "^4.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.0", + "zwitch": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/hast-util-to-parse5": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz", + "integrity": "sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==", + "dependencies": { + "hast-to-hyperscript": "^9.0.0", + "property-information": "^5.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.0", + "zwitch": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", + "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", + "dependencies": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^1.0.0", + "hast-util-parse-selector": "^2.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" + } + }, + "node_modules/history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "dependencies": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/html-void-elements": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz", + "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", + "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", + "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", + "dependencies": { + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/immediate": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==" + }, + "node_modules/immer": { + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/infima": { + "version": "0.2.0-alpha.43", + "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.43.tgz", + "integrity": "sha512-2uw57LvUqW0rK/SWYnd/2rRfxNA5DDNOh33jxF7fy46VWoNhGxiUQyVZHbBMjQ33mQem0cjdDVwgWVAmlRfgyQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-ci/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/is-whitespace-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", + "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-word-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", + "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" + }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz", + "integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/joi": { + "version": "17.10.2", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.10.2.tgz", + "integrity": "sha512-hcVhjBxRNW/is3nNLdGLIjkgXetkeGc2wyhydhz8KumG23Aerk4HPjU5zaPAMRqXQFc0xNqXTC7+zQjxr0GlKA==", + "dependencies": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "engines": { + "node": ">=6" + } + }, + "node_modules/latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dependencies": { + "package-json": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/launch-editor": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.curry": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", + "integrity": "sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "node_modules/lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==" + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" + }, + "node_modules/lodash.flow": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz", + "integrity": "sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==" + }, + "node_modules/lodash.invokemap": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz", + "integrity": "sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w==" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" + }, + "node_modules/lodash.pullall": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.pullall/-/lodash.pullall-4.2.0.tgz", + "integrity": "sha512-VhqxBKH0ZxPpLhiu68YD1KnHmbhQJQctcipvmFnqIBDYzcIHzf3Zpu0tpeOKtR4x76p9yohc506eGdOjTmyIBg==" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + }, + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" + }, + "node_modules/lunr-languages": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/lunr-languages/-/lunr-languages-1.13.0.tgz", + "integrity": "sha512-qgTOarcnAtVFKr0aJ2GuiqbBdhKF61jpF8OgFbnlSAb1t6kOiQW67q0hv0UQzzB+5+OwPpnZyFT/L0L9SQG1/A==" + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/mark.js": { + "version": "8.11.1", + "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", + "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==" + }, + "node_modules/markdown-escapes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", + "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-squeeze-paragraphs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz", + "integrity": "sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==", + "dependencies": { + "unist-util-remove": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", + "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", + "dependencies": { + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz", + "integrity": "sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "mdast-util-definitions": "^4.0.0", + "mdurl": "^1.0.0", + "unist-builder": "^2.0.0", + "unist-util-generated": "^1.0.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dependencies": { + "mime-db": "~1.33.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.7.6", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", + "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==" + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dependencies": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-numeric-range": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", + "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==" + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dependencies": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss": { + "version": "8.4.30", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.30.tgz", + "integrity": "sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", + "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-unused": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-5.1.0.tgz", + "integrity": "sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-loader": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.3.tgz", + "integrity": "sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==", + "dependencies": { + "cosmiconfig": "^8.2.0", + "jiti": "^1.18.2", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-loader/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/postcss-merge-idents": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-5.1.1.tgz", + "integrity": "sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw==", + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", + "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", + "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "dependencies": { + "browserslist": "^4.21.4", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", + "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-idents": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz", + "integrity": "sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-sort-media-queries": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-4.4.1.tgz", + "integrity": "sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw==", + "dependencies": { + "sort-css-media-queries": "2.1.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.4.16" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/postcss-zindex": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-5.1.0.tgz", + "integrity": "sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", + "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/prism-react-renderer": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz", + "integrity": "sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==", + "peerDependencies": { + "react": ">=0.14.9" + } + }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/property-information": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", + "dependencies": { + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + }, + "node_modules/pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "dependencies": { + "escape-goat": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pure-color": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz", + "integrity": "sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==" + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "dependencies": { + "inherits": "~2.0.3" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-base16-styling": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz", + "integrity": "sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==", + "dependencies": { + "base16": "^1.0.0", + "lodash.curry": "^4.0.1", + "lodash.flow": "^3.3.0", + "pure-color": "^1.2.0" + } + }, + "node_modules/react-dev-utils": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", + "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", + "dependencies": { + "@babel/code-frame": "^7.16.0", + "address": "^1.1.2", + "browserslist": "^4.18.1", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "detect-port-alt": "^1.1.6", + "escape-string-regexp": "^4.0.0", + "filesize": "^8.0.6", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.5.0", + "global-modules": "^2.0.0", + "globby": "^11.0.4", + "gzip-size": "^6.0.0", + "immer": "^9.0.7", + "is-root": "^2.1.0", + "loader-utils": "^3.2.0", + "open": "^8.4.0", + "pkg-up": "^3.1.0", + "prompts": "^2.4.2", + "react-error-overlay": "^6.0.11", + "recursive-readdir": "^2.2.2", + "shell-quote": "^1.7.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/react-dev-utils/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/loader-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/react-dev-utils/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, + "node_modules/react-error-overlay": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", + "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" + }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" + }, + "node_modules/react-helmet-async": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.3.0.tgz", + "integrity": "sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "invariant": "^2.2.4", + "prop-types": "^15.7.2", + "react-fast-compare": "^3.2.0", + "shallowequal": "^1.1.0" + }, + "peerDependencies": { + "react": "^16.6.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.6.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-json-view": { + "version": "1.21.3", + "resolved": "https://registry.npmjs.org/react-json-view/-/react-json-view-1.21.3.tgz", + "integrity": "sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==", + "dependencies": { + "flux": "^4.0.1", + "react-base16-styling": "^0.6.0", + "react-lifecycles-compat": "^3.0.4", + "react-textarea-autosize": "^8.3.2" + }, + "peerDependencies": { + "react": "^17.0.0 || ^16.3.0 || ^15.5.4", + "react-dom": "^17.0.0 || ^16.3.0 || ^15.5.4" + } + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "node_modules/react-loadable": { + "name": "@docusaurus/react-loadable", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", + "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", + "dependencies": { + "@types/react": "*", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/react-loadable-ssr-addon-v5-slorber": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz", + "integrity": "sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==", + "dependencies": { + "@babel/runtime": "^7.10.3" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "react-loadable": "*", + "webpack": ">=4.41.1 || 5.x" + } + }, + "node_modules/react-router": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", + "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-router-config": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz", + "integrity": "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==", + "dependencies": { + "@babel/runtime": "^7.1.2" + }, + "peerDependencies": { + "react": ">=15", + "react-router": ">=5" + } + }, + "node_modules/react-router-dom": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz", + "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.3.4", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-textarea-autosize": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.3.tgz", + "integrity": "sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==", + "dependencies": { + "@babel/runtime": "^7.20.13", + "use-composed-ref": "^1.3.0", + "use-latest": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reading-time": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz", + "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==" + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/recursive-readdir": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "dependencies": { + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/registry-auth-token": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", + "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", + "dependencies": { + "rc": "1.2.8" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remark-emoji": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-2.2.0.tgz", + "integrity": "sha512-P3cj9s5ggsUvWw5fS2uzCHJMGuXYRb0NnZqYlNecewXt8QBU9n5vW3DUUKOhepS8F9CwdMx9B8a3i7pqFWAI5w==", + "dependencies": { + "emoticon": "^3.2.0", + "node-emoji": "^1.10.0", + "unist-util-visit": "^2.0.3" + } + }, + "node_modules/remark-footnotes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz", + "integrity": "sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz", + "integrity": "sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==", + "dependencies": { + "@babel/core": "7.12.9", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-proposal-object-rest-spread": "7.12.1", + "@babel/plugin-syntax-jsx": "7.12.1", + "@mdx-js/util": "1.6.22", + "is-alphabetical": "1.0.4", + "remark-parse": "8.0.3", + "unified": "9.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx/node_modules/@babel/core": { + "version": "7.12.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", + "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.7", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.9", + "@babel/types": "^7.12.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/remark-mdx/node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + }, + "node_modules/remark-mdx/node_modules/@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/remark-mdx/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/remark-mdx/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remark-mdx/node_modules/unified": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", + "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", + "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", + "dependencies": { + "ccount": "^1.0.0", + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^2.0.0", + "vfile-location": "^3.0.0", + "xtend": "^4.0.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-squeeze-paragraphs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz", + "integrity": "sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==", + "dependencies": { + "mdast-squeeze-paragraphs": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/renderkid/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/renderkid/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-like": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", + "integrity": "sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==", + "engines": { + "node": "*" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "node_modules/resolve": { + "version": "1.22.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", + "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" + }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rtl-detect": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.0.4.tgz", + "integrity": "sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ==" + }, + "node_modules/rtlcss": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-3.5.0.tgz", + "integrity": "sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A==", + "dependencies": { + "find-up": "^5.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.3.11", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "rtlcss": "bin/rtlcss.js" + } + }, + "node_modules/rtlcss/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rtlcss/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rtlcss/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rtlcss/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/search-insights": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.8.2.tgz", + "integrity": "sha512-PxA9M5Q2bpBelVvJ3oDZR8nuY00Z6qwOxL53wNpgzV28M/D6u9WUbImDckjLSILBF8F1hn/mgyuUaOPtjow4Qw==", + "peer": true + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" + }, + "node_modules/selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dependencies": { + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semver-diff/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/send/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-handler": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.5.tgz", + "integrity": "sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==", + "dependencies": { + "bytes": "3.0.0", + "content-disposition": "0.5.2", + "fast-url-parser": "1.1.3", + "mime-types": "2.1.18", + "minimatch": "3.1.2", + "path-is-inside": "1.0.2", + "path-to-regexp": "2.2.1", + "range-parser": "1.2.0" + } + }, + "node_modules/serve-handler/node_modules/path-to-regexp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", + "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==" + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/sirv": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz", + "integrity": "sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==", + "dependencies": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "node_modules/sitemap": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.1.tgz", + "integrity": "sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==", + "dependencies": { + "@types/node": "^17.0.5", + "@types/sax": "^1.2.1", + "arg": "^5.0.0", + "sax": "^1.2.4" + }, + "bin": { + "sitemap": "dist/cli.js" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.6.0" + } + }, + "node_modules/sitemap/node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sort-css-media-queries": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.1.0.tgz", + "integrity": "sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA==", + "engines": { + "node": ">= 6.3.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility" + }, + "node_modules/state-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", + "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/std-env": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.4.3.tgz", + "integrity": "sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-to-object": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", + "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", + "dependencies": { + "inline-style-parser": "0.1.1" + } + }, + "node_modules/stylehacks": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", + "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" + }, + "node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/svgo/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/svgo/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/svgo/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/svgo/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/svgo/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.20.0.tgz", + "integrity": "sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ==", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "node_modules/tiny-invariant": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", + "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" + }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==", + "deprecated": "Use String.prototype.trim() instead" + }, + "node_modules/trim-trailing-lines": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", + "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ua-parser-js": { + "version": "1.0.36", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.36.tgz", + "integrity": "sha512-znuyCIXzl8ciS3+y3fHJI/2OhQIXbXw9MWC/o3qwyR+RGppjZHrM27CGFSKCJXi2Kctiz537iOu2KnXs1lMQhw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/unherit": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", + "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", + "dependencies": { + "inherits": "^2.0.0", + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unified": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", + "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/unist-builder": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", + "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-generated": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", + "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", + "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz", + "integrity": "sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==", + "dependencies": { + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", + "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", + "dependencies": { + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/update-notifier": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "dependencies": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/update-notifier/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-notifier/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-notifier/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "dependencies": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } + } + }, + "node_modules/url-loader/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/url-loader/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/url-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/use-composed-ref": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz", + "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-latest": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz", + "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==", + "dependencies": { + "use-isomorphic-layout-effect": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" + }, + "node_modules/utility-types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", + "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", + "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/wait-on": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz", + "integrity": "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==", + "dependencies": { + "axios": "^0.25.0", + "joi": "^17.6.0", + "lodash": "^4.17.21", + "minimist": "^1.2.5", + "rxjs": "^7.5.4" + }, + "bin": { + "wait-on": "bin/wait-on" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/web-namespaces": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz", + "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/webpack": { + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.1.tgz", + "integrity": "sha512-jnd6EoYrf9yMxCyYDPj8eutJvtjQNp8PHmni/e/ulydHBWhT5J3menXt3HEkScsu9YqMAcG4CfFjs3rj5pVU1w==", + "dependencies": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "commander": "^7.2.0", + "escape-string-regexp": "^4.0.0", + "gzip-size": "^6.0.0", + "is-plain-object": "^5.0.0", + "lodash.debounce": "^4.0.8", + "lodash.escape": "^4.0.1", + "lodash.flatten": "^4.4.0", + "lodash.invokemap": "^4.6.0", + "lodash.pullall": "^4.2.0", + "lodash.uniqby": "^4.7.0", + "opener": "^1.5.2", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/webpack-dev-middleware/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-middleware/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-middleware/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", + "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-merge": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", + "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpackbar": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz", + "integrity": "sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==", + "dependencies": { + "chalk": "^4.1.0", + "consola": "^2.15.3", + "pretty-time": "^1.1.0", + "std-env": "^3.0.1" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "webpack": "3 || 4 || 5" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "dependencies": { + "string-width": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "dependencies": { + "sax": "^1.2.4" + }, + "bin": { + "xml-js": "bin/cli.js" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + }, + "dependencies": { + "@algolia/autocomplete-core": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz", + "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==", + "requires": { + "@algolia/autocomplete-plugin-algolia-insights": "1.9.3", + "@algolia/autocomplete-shared": "1.9.3" + } + }, + "@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz", + "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==", + "requires": { + "@algolia/autocomplete-shared": "1.9.3" + } + }, + "@algolia/autocomplete-preset-algolia": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz", + "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==", + "requires": { + "@algolia/autocomplete-shared": "1.9.3" + } + }, + "@algolia/autocomplete-shared": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz", + "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==", + "requires": {} + }, + "@algolia/cache-browser-local-storage": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.20.0.tgz", + "integrity": "sha512-uujahcBt4DxduBTvYdwO3sBfHuJvJokiC3BP1+O70fglmE1ShkH8lpXqZBac1rrU3FnNYSUs4pL9lBdTKeRPOQ==", + "requires": { + "@algolia/cache-common": "4.20.0" + } + }, + "@algolia/cache-common": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.20.0.tgz", + "integrity": "sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ==" + }, + "@algolia/cache-in-memory": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.20.0.tgz", + "integrity": "sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg==", + "requires": { + "@algolia/cache-common": "4.20.0" + } + }, + "@algolia/client-account": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.20.0.tgz", + "integrity": "sha512-GGToLQvrwo7am4zVkZTnKa72pheQeez/16sURDWm7Seyz+HUxKi3BM6fthVVPUEBhtJ0reyVtuK9ArmnaKl10Q==", + "requires": { + "@algolia/client-common": "4.20.0", + "@algolia/client-search": "4.20.0", + "@algolia/transporter": "4.20.0" + } + }, + "@algolia/client-analytics": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.20.0.tgz", + "integrity": "sha512-EIr+PdFMOallRdBTHHdKI3CstslgLORQG7844Mq84ib5oVFRVASuuPmG4bXBgiDbcsMLUeOC6zRVJhv1KWI0ug==", + "requires": { + "@algolia/client-common": "4.20.0", + "@algolia/client-search": "4.20.0", + "@algolia/requester-common": "4.20.0", + "@algolia/transporter": "4.20.0" + } + }, + "@algolia/client-common": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.20.0.tgz", + "integrity": "sha512-P3WgMdEss915p+knMMSd/fwiHRHKvDu4DYRrCRaBrsfFw7EQHon+EbRSm4QisS9NYdxbS04kcvNoavVGthyfqQ==", + "requires": { + "@algolia/requester-common": "4.20.0", + "@algolia/transporter": "4.20.0" + } + }, + "@algolia/client-personalization": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.20.0.tgz", + "integrity": "sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ==", + "requires": { + "@algolia/client-common": "4.20.0", + "@algolia/requester-common": "4.20.0", + "@algolia/transporter": "4.20.0" + } + }, + "@algolia/client-search": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.20.0.tgz", + "integrity": "sha512-zgwqnMvhWLdpzKTpd3sGmMlr4c+iS7eyyLGiaO51zDZWGMkpgoNVmltkzdBwxOVXz0RsFMznIxB9zuarUv4TZg==", + "requires": { + "@algolia/client-common": "4.20.0", + "@algolia/requester-common": "4.20.0", + "@algolia/transporter": "4.20.0" + } + }, + "@algolia/events": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@algolia/events/-/events-4.0.1.tgz", + "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==" + }, + "@algolia/logger-common": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.20.0.tgz", + "integrity": "sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ==" + }, + "@algolia/logger-console": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.20.0.tgz", + "integrity": "sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA==", + "requires": { + "@algolia/logger-common": "4.20.0" + } + }, + "@algolia/requester-browser-xhr": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.20.0.tgz", + "integrity": "sha512-HbzoSjcjuUmYOkcHECkVTwAelmvTlgs48N6Owt4FnTOQdwn0b8pdht9eMgishvk8+F8bal354nhx/xOoTfwiAw==", + "requires": { + "@algolia/requester-common": "4.20.0" + } + }, + "@algolia/requester-common": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.20.0.tgz", + "integrity": "sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng==" + }, + "@algolia/requester-node-http": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.20.0.tgz", + "integrity": "sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng==", + "requires": { + "@algolia/requester-common": "4.20.0" + } + }, + "@algolia/transporter": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.20.0.tgz", + "integrity": "sha512-Lsii1pGWOAISbzeyuf+r/GPhvHMPHSPrTDWNcIzOE1SG1inlJHICaVe2ikuoRjcpgxZNU54Jl+if15SUCsaTUg==", + "requires": { + "@algolia/cache-common": "4.20.0", + "@algolia/logger-common": "4.20.0", + "@algolia/requester-common": "4.20.0" + } + }, + "@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "requires": { + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/compat-data": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", + "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==" + }, + "@babel/core": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.20.tgz", + "integrity": "sha512-Y6jd1ahLubuYweD/zJH+vvOY141v4f9igNQAQ+MBgq9JlHS2iTsZKn1aMsb3vGccZsXI16VzTBw52Xx0DWmtnA==", + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.22.15", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.22.20", + "@babel/helpers": "^7.22.15", + "@babel/parser": "^7.22.16", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.22.20", + "@babel/types": "^7.22.19", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + } + }, + "@babel/generator": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.15.tgz", + "integrity": "sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==", + "requires": { + "@babel/types": "^7.22.15", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "requires": { + "@babel/types": "^7.22.15" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "requires": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", + "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", + "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", + "requires": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==" + }, + "@babel/helper-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", + "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "requires": { + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.15.tgz", + "integrity": "sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==", + "requires": { + "@babel/types": "^7.22.15" + } + }, + "@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "requires": { + "@babel/types": "^7.22.15" + } + }, + "@babel/helper-module-transforms": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.20.tgz", + "integrity": "sha512-dLT7JVWIUUxKOs1UnJUBR3S70YK+pKX6AbJgB2vMIvEkZkrfJDbYDJesnPshtKV4LhDOR3Oc5YULeDizRek+5A==", + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==" + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + } + }, + "@babel/helper-replace-supers": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" + } + }, + "@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==" + }, + "@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" + }, + "@babel/helper-validator-option": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==" + }, + "@babel/helper-wrap-function": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "requires": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" + } + }, + "@babel/helpers": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.15.tgz", + "integrity": "sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==", + "requires": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.22.15", + "@babel/types": "^7.22.15" + } + }, + "@babel/highlight": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "requires": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.22.16", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz", + "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==" + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz", + "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", + "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.15" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "requires": {} + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", + "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-import-attributes": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", + "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", + "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-async-generator-functions": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz", + "integrity": "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==", + "requires": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", + "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "requires": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", + "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.15.tgz", + "integrity": "sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-class-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", + "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-class-static-block": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", + "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", + "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", + "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.15.tgz", + "integrity": "sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", + "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", + "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-dynamic-import": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", + "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", + "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-export-namespace-from": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", + "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", + "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", + "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "requires": { + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-json-strings": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", + "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", + "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-logical-assignment-operators": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", + "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", + "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", + "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", + "requires": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.15.tgz", + "integrity": "sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg==", + "requires": { + "@babel/helper-module-transforms": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz", + "integrity": "sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==", + "requires": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", + "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "requires": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", + "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", + "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-transform-numeric-separator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", + "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-transform-object-rest-spread": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", + "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", + "requires": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.22.15" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", + "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" + } + }, + "@babel/plugin-transform-optional-catch-binding": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", + "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-transform-optional-chaining": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.15.tgz", + "integrity": "sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", + "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-private-methods": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", + "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-private-property-in-object": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", + "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", + "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-react-constant-elements": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.22.5.tgz", + "integrity": "sha512-BF5SXoO+nX3h5OhlN78XbbDrBOffv+AxPP2ENaJOVqjWCgBDeOY3WcaUcddutGSfoap+5NEQ/q/4I3WZIvgkXA==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz", + "integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz", + "integrity": "sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/types": "^7.22.15" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "requires": { + "@babel/plugin-transform-react-jsx": "^7.22.5" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz", + "integrity": "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", + "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", + "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.15.tgz", + "integrity": "sha512-tEVLhk8NRZSmwQ0DJtxxhTrCht1HVo8VaMzYT4w6lwyKBuHsgoioAUA7/6eT2fRfc5/23fuGdlwIxXhRVgWr4g==", + "requires": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.5", + "babel-plugin-polyfill-corejs3": "^0.8.3", + "babel-plugin-polyfill-regenerator": "^0.5.2", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", + "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", + "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", + "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", + "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", + "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz", + "integrity": "sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", + "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-property-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", + "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", + "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-sets-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", + "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/preset-env": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.20.tgz", + "integrity": "sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==", + "requires": { + "@babel/compat-data": "^7.22.20", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.15", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.22.15", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.11", + "@babel/plugin-transform-classes": "^7.22.15", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.22.15", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.11", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-for-of": "^7.22.15", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.11", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.15", + "@babel/plugin-transform-modules-systemjs": "^7.22.11", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-numeric-separator": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.22.15", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.22.15", + "@babel/plugin-transform-parameters": "^7.22.15", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.10", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.10", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "@babel/types": "^7.22.19", + "babel-plugin-polyfill-corejs2": "^0.4.5", + "babel-plugin-polyfill-corejs3": "^0.8.3", + "babel-plugin-polyfill-regenerator": "^0.5.2", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + } + }, + "@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-react": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.15.tgz", + "integrity": "sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-react-display-name": "^7.22.5", + "@babel/plugin-transform-react-jsx": "^7.22.15", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.22.5" + } + }, + "@babel/preset-typescript": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.22.15.tgz", + "integrity": "sha512-HblhNmh6yM+cU4VwbBRpxFhxsTdfS1zsvH9W+gEjD0ARV9+8B4sNfpI6GuhePti84nuvhiwKS539jKPFHskA9A==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.15", + "@babel/plugin-transform-typescript": "^7.22.15" + } + }, + "@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" + }, + "@babel/runtime": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", + "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "@babel/runtime-corejs3": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.22.15.tgz", + "integrity": "sha512-SAj8oKi8UogVi6eXQXKNPu8qZ78Yzy7zawrlTr0M+IuW/g8Qe9gVDhGcF9h1S69OyACpYoLxEzpjs1M15sI5wQ==", + "requires": { + "core-js-pure": "^3.30.2", + "regenerator-runtime": "^0.14.0" + } + }, + "@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "requires": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + } + }, + "@babel/traverse": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.20.tgz", + "integrity": "sha512-eU260mPZbU7mZ0N+X10pxXhQFMGTeLb9eFS0mxehS8HZp9o1uSnFeWQuG1UPrlxgA7QoUzFhOnilHDp0AXCyHw==", + "requires": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.22.16", + "@babel/types": "^7.22.19", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.22.19", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.19.tgz", + "integrity": "sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==", + "requires": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.19", + "to-fast-properties": "^2.0.0" + } + }, + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "optional": true + }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==" + }, + "@docsearch/css": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.5.2.tgz", + "integrity": "sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==" + }, + "@docsearch/react": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.5.2.tgz", + "integrity": "sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==", + "requires": { + "@algolia/autocomplete-core": "1.9.3", + "@algolia/autocomplete-preset-algolia": "1.9.3", + "@docsearch/css": "3.5.2", + "algoliasearch": "^4.19.1" + } + }, + "@docusaurus/core": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-2.4.3.tgz", + "integrity": "sha512-dWH5P7cgeNSIg9ufReX6gaCl/TmrGKD38Orbwuz05WPhAQtFXHd5B8Qym1TiXfvUNvwoYKkAJOJuGe8ou0Z7PA==", + "requires": { + "@babel/core": "^7.18.6", + "@babel/generator": "^7.18.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.18.6", + "@babel/preset-env": "^7.18.6", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.18.6", + "@babel/runtime": "^7.18.6", + "@babel/runtime-corejs3": "^7.18.6", + "@babel/traverse": "^7.18.8", + "@docusaurus/cssnano-preset": "2.4.3", + "@docusaurus/logger": "2.4.3", + "@docusaurus/mdx-loader": "2.4.3", + "@docusaurus/react-loadable": "5.5.2", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-common": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "@slorber/static-site-generator-webpack-plugin": "^4.0.7", + "@svgr/webpack": "^6.2.1", + "autoprefixer": "^10.4.7", + "babel-loader": "^8.2.5", + "babel-plugin-dynamic-import-node": "^2.3.3", + "boxen": "^6.2.1", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "clean-css": "^5.3.0", + "cli-table3": "^0.6.2", + "combine-promises": "^1.1.0", + "commander": "^5.1.0", + "copy-webpack-plugin": "^11.0.0", + "core-js": "^3.23.3", + "css-loader": "^6.7.1", + "css-minimizer-webpack-plugin": "^4.0.0", + "cssnano": "^5.1.12", + "del": "^6.1.1", + "detect-port": "^1.3.0", + "escape-html": "^1.0.3", + "eta": "^2.0.0", + "file-loader": "^6.2.0", + "fs-extra": "^10.1.0", + "html-minifier-terser": "^6.1.0", + "html-tags": "^3.2.0", + "html-webpack-plugin": "^5.5.0", + "import-fresh": "^3.3.0", + "leven": "^3.1.0", + "lodash": "^4.17.21", + "mini-css-extract-plugin": "^2.6.1", + "postcss": "^8.4.14", + "postcss-loader": "^7.0.0", + "prompts": "^2.4.2", + "react-dev-utils": "^12.0.1", + "react-helmet-async": "^1.3.0", + "react-loadable": "npm:@docusaurus/react-loadable@5.5.2", + "react-loadable-ssr-addon-v5-slorber": "^1.0.1", + "react-router": "^5.3.3", + "react-router-config": "^5.1.1", + "react-router-dom": "^5.3.3", + "rtl-detect": "^1.0.4", + "semver": "^7.3.7", + "serve-handler": "^6.1.3", + "shelljs": "^0.8.5", + "terser-webpack-plugin": "^5.3.3", + "tslib": "^2.4.0", + "update-notifier": "^5.1.0", + "url-loader": "^4.1.1", + "wait-on": "^6.0.1", + "webpack": "^5.73.0", + "webpack-bundle-analyzer": "^4.5.0", + "webpack-dev-server": "^4.9.3", + "webpack-merge": "^5.8.0", + "webpackbar": "^5.0.2" + } + }, + "@docusaurus/cssnano-preset": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-2.4.3.tgz", + "integrity": "sha512-ZvGSRCi7z9wLnZrXNPG6DmVPHdKGd8dIn9pYbEOFiYihfv4uDR3UtxogmKf+rT8ZlKFf5Lqne8E8nt08zNM8CA==", + "requires": { + "cssnano-preset-advanced": "^5.3.8", + "postcss": "^8.4.14", + "postcss-sort-media-queries": "^4.2.1", + "tslib": "^2.4.0" + } + }, + "@docusaurus/logger": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-2.4.3.tgz", + "integrity": "sha512-Zxws7r3yLufk9xM1zq9ged0YHs65mlRmtsobnFkdZTxWXdTYlWWLWdKyNKAsVC+D7zg+pv2fGbyabdOnyZOM3w==", + "requires": { + "chalk": "^4.1.2", + "tslib": "^2.4.0" + } + }, + "@docusaurus/mdx-loader": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.4.3.tgz", + "integrity": "sha512-b1+fDnWtl3GiqkL0BRjYtc94FZrcDDBV1j8446+4tptB9BAOlePwG2p/pK6vGvfL53lkOsszXMghr2g67M0vCw==", + "requires": { + "@babel/parser": "^7.18.8", + "@babel/traverse": "^7.18.8", + "@docusaurus/logger": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@mdx-js/mdx": "^1.6.22", + "escape-html": "^1.0.3", + "file-loader": "^6.2.0", + "fs-extra": "^10.1.0", + "image-size": "^1.0.1", + "mdast-util-to-string": "^2.0.0", + "remark-emoji": "^2.2.0", + "stringify-object": "^3.3.0", + "tslib": "^2.4.0", + "unified": "^9.2.2", + "unist-util-visit": "^2.0.3", + "url-loader": "^4.1.1", + "webpack": "^5.73.0" + } + }, + "@docusaurus/module-type-aliases": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-2.4.3.tgz", + "integrity": "sha512-cwkBkt1UCiduuvEAo7XZY01dJfRn7UR/75mBgOdb1hKknhrabJZ8YH+7savd/y9kLExPyrhe0QwdS9GuzsRRIA==", + "requires": { + "@docusaurus/react-loadable": "5.5.2", + "@docusaurus/types": "2.4.3", + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router-config": "*", + "@types/react-router-dom": "*", + "react-helmet-async": "*", + "react-loadable": "npm:@docusaurus/react-loadable@5.5.2" + } + }, + "@docusaurus/plugin-client-redirects": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-2.4.3.tgz", + "integrity": "sha512-iCwc/zH8X6eNtLYdyUJFY6+GbsbRgMgvAC/TmSmCYTmwnoN5Y1Bc5OwUkdtoch0XKizotJMRAmGIAhP8sAetdQ==", + "requires": { + "@docusaurus/core": "2.4.3", + "@docusaurus/logger": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-common": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "eta": "^2.0.0", + "fs-extra": "^10.1.0", + "lodash": "^4.17.21", + "tslib": "^2.4.0" + } + }, + "@docusaurus/plugin-content-blog": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.4.3.tgz", + "integrity": "sha512-PVhypqaA0t98zVDpOeTqWUTvRqCEjJubtfFUQ7zJNYdbYTbS/E/ytq6zbLVsN/dImvemtO/5JQgjLxsh8XLo8Q==", + "requires": { + "@docusaurus/core": "2.4.3", + "@docusaurus/logger": "2.4.3", + "@docusaurus/mdx-loader": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-common": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "cheerio": "^1.0.0-rc.12", + "feed": "^4.2.2", + "fs-extra": "^10.1.0", + "lodash": "^4.17.21", + "reading-time": "^1.5.0", + "tslib": "^2.4.0", + "unist-util-visit": "^2.0.3", + "utility-types": "^3.10.0", + "webpack": "^5.73.0" + } + }, + "@docusaurus/plugin-content-docs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.4.3.tgz", + "integrity": "sha512-N7Po2LSH6UejQhzTCsvuX5NOzlC+HiXOVvofnEPj0WhMu1etpLEXE6a4aTxrtg95lQ5kf0xUIdjX9sh3d3G76A==", + "requires": { + "@docusaurus/core": "2.4.3", + "@docusaurus/logger": "2.4.3", + "@docusaurus/mdx-loader": "2.4.3", + "@docusaurus/module-type-aliases": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "@types/react-router-config": "^5.0.6", + "combine-promises": "^1.1.0", + "fs-extra": "^10.1.0", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "tslib": "^2.4.0", + "utility-types": "^3.10.0", + "webpack": "^5.73.0" + } + }, + "@docusaurus/plugin-content-pages": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.4.3.tgz", + "integrity": "sha512-txtDVz7y3zGk67q0HjG0gRttVPodkHqE0bpJ+7dOaTH40CQFLSh7+aBeGnPOTl+oCPG+hxkim4SndqPqXjQ8Bg==", + "requires": { + "@docusaurus/core": "2.4.3", + "@docusaurus/mdx-loader": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "fs-extra": "^10.1.0", + "tslib": "^2.4.0", + "webpack": "^5.73.0" + } + }, + "@docusaurus/plugin-debug": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-2.4.3.tgz", + "integrity": "sha512-LkUbuq3zCmINlFb+gAd4ZvYr+bPAzMC0hwND4F7V9bZ852dCX8YoWyovVUBKq4er1XsOwSQaHmNGtObtn8Av8Q==", + "requires": { + "@docusaurus/core": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils": "2.4.3", + "fs-extra": "^10.1.0", + "react-json-view": "^1.21.3", + "tslib": "^2.4.0" + } + }, + "@docusaurus/plugin-google-analytics": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.4.3.tgz", + "integrity": "sha512-KzBV3k8lDkWOhg/oYGxlK5o9bOwX7KpPc/FTWoB+SfKhlHfhq7qcQdMi1elAaVEIop8tgK6gD1E58Q+XC6otSQ==", + "requires": { + "@docusaurus/core": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "tslib": "^2.4.0" + } + }, + "@docusaurus/plugin-google-gtag": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.4.3.tgz", + "integrity": "sha512-5FMg0rT7sDy4i9AGsvJC71MQrqQZwgLNdDetLEGDHLfSHLvJhQbTCUGbGXknUgWXQJckcV/AILYeJy+HhxeIFA==", + "requires": { + "@docusaurus/core": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "tslib": "^2.4.0" + } + }, + "@docusaurus/plugin-google-tag-manager": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-2.4.3.tgz", + "integrity": "sha512-1jTzp71yDGuQiX9Bi0pVp3alArV0LSnHXempvQTxwCGAEzUWWaBg4d8pocAlTpbP9aULQQqhgzrs8hgTRPOM0A==", + "requires": { + "@docusaurus/core": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "tslib": "^2.4.0" + } + }, + "@docusaurus/plugin-sitemap": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.4.3.tgz", + "integrity": "sha512-LRQYrK1oH1rNfr4YvWBmRzTL0LN9UAPxBbghgeFRBm5yloF6P+zv1tm2pe2hQTX/QP5bSKdnajCvfnScgKXMZQ==", + "requires": { + "@docusaurus/core": "2.4.3", + "@docusaurus/logger": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-common": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "fs-extra": "^10.1.0", + "sitemap": "^7.1.1", + "tslib": "^2.4.0" + } + }, + "@docusaurus/preset-classic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-2.4.3.tgz", + "integrity": "sha512-tRyMliepY11Ym6hB1rAFSNGwQDpmszvWYJvlK1E+md4SW8i6ylNHtpZjaYFff9Mdk3i/Pg8ItQq9P0daOJAvQw==", + "requires": { + "@docusaurus/core": "2.4.3", + "@docusaurus/plugin-content-blog": "2.4.3", + "@docusaurus/plugin-content-docs": "2.4.3", + "@docusaurus/plugin-content-pages": "2.4.3", + "@docusaurus/plugin-debug": "2.4.3", + "@docusaurus/plugin-google-analytics": "2.4.3", + "@docusaurus/plugin-google-gtag": "2.4.3", + "@docusaurus/plugin-google-tag-manager": "2.4.3", + "@docusaurus/plugin-sitemap": "2.4.3", + "@docusaurus/theme-classic": "2.4.3", + "@docusaurus/theme-common": "2.4.3", + "@docusaurus/theme-search-algolia": "2.4.3", + "@docusaurus/types": "2.4.3" + } + }, + "@docusaurus/react-loadable": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", + "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", + "requires": { + "@types/react": "*", + "prop-types": "^15.6.2" + } + }, + "@docusaurus/theme-classic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-2.4.3.tgz", + "integrity": "sha512-QKRAJPSGPfDY2yCiPMIVyr+MqwZCIV2lxNzqbyUW0YkrlmdzzP3WuQJPMGLCjWgQp/5c9kpWMvMxjhpZx1R32Q==", + "requires": { + "@docusaurus/core": "2.4.3", + "@docusaurus/mdx-loader": "2.4.3", + "@docusaurus/module-type-aliases": "2.4.3", + "@docusaurus/plugin-content-blog": "2.4.3", + "@docusaurus/plugin-content-docs": "2.4.3", + "@docusaurus/plugin-content-pages": "2.4.3", + "@docusaurus/theme-common": "2.4.3", + "@docusaurus/theme-translations": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-common": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "@mdx-js/react": "^1.6.22", + "clsx": "^1.2.1", + "copy-text-to-clipboard": "^3.0.1", + "infima": "0.2.0-alpha.43", + "lodash": "^4.17.21", + "nprogress": "^0.2.0", + "postcss": "^8.4.14", + "prism-react-renderer": "^1.3.5", + "prismjs": "^1.28.0", + "react-router-dom": "^5.3.3", + "rtlcss": "^3.5.0", + "tslib": "^2.4.0", + "utility-types": "^3.10.0" + } + }, + "@docusaurus/theme-common": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-2.4.3.tgz", + "integrity": "sha512-7KaDJBXKBVGXw5WOVt84FtN8czGWhM0lbyWEZXGp8AFfL6sZQfRTluFp4QriR97qwzSyOfQb+nzcDZZU4tezUw==", + "requires": { + "@docusaurus/mdx-loader": "2.4.3", + "@docusaurus/module-type-aliases": "2.4.3", + "@docusaurus/plugin-content-blog": "2.4.3", + "@docusaurus/plugin-content-docs": "2.4.3", + "@docusaurus/plugin-content-pages": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-common": "2.4.3", + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router-config": "*", + "clsx": "^1.2.1", + "parse-numeric-range": "^1.3.0", + "prism-react-renderer": "^1.3.5", + "tslib": "^2.4.0", + "use-sync-external-store": "^1.2.0", + "utility-types": "^3.10.0" + } + }, + "@docusaurus/theme-search-algolia": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.4.3.tgz", + "integrity": "sha512-jziq4f6YVUB5hZOB85ELATwnxBz/RmSLD3ksGQOLDPKVzat4pmI8tddNWtriPpxR04BNT+ZfpPUMFkNFetSW1Q==", + "requires": { + "@docsearch/react": "^3.1.1", + "@docusaurus/core": "2.4.3", + "@docusaurus/logger": "2.4.3", + "@docusaurus/plugin-content-docs": "2.4.3", + "@docusaurus/theme-common": "2.4.3", + "@docusaurus/theme-translations": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", + "algoliasearch": "^4.13.1", + "algoliasearch-helper": "^3.10.0", + "clsx": "^1.2.1", + "eta": "^2.0.0", + "fs-extra": "^10.1.0", + "lodash": "^4.17.21", + "tslib": "^2.4.0", + "utility-types": "^3.10.0" + } + }, + "@docusaurus/theme-translations": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-2.4.3.tgz", + "integrity": "sha512-H4D+lbZbjbKNS/Zw1Lel64PioUAIT3cLYYJLUf3KkuO/oc9e0QCVhIYVtUI2SfBCF2NNdlyhBDQEEMygsCedIg==", + "requires": { + "fs-extra": "^10.1.0", + "tslib": "^2.4.0" + } + }, + "@docusaurus/types": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-2.4.3.tgz", + "integrity": "sha512-W6zNLGQqfrp/EoPD0bhb9n7OobP+RHpmvVzpA+Z/IuU3Q63njJM24hmT0GYboovWcDtFmnIJC9wcyx4RVPQscw==", + "requires": { + "@types/history": "^4.7.11", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.6.0", + "react-helmet-async": "^1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.73.0", + "webpack-merge": "^5.8.0" + } + }, + "@docusaurus/utils": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-2.4.3.tgz", + "integrity": "sha512-fKcXsjrD86Smxv8Pt0TBFqYieZZCPh4cbf9oszUq/AMhZn3ujwpKaVYZACPX8mmjtYx0JOgNx52CREBfiGQB4A==", + "requires": { + "@docusaurus/logger": "2.4.3", + "@svgr/webpack": "^6.2.1", + "escape-string-regexp": "^4.0.0", + "file-loader": "^6.2.0", + "fs-extra": "^10.1.0", + "github-slugger": "^1.4.0", + "globby": "^11.1.0", + "gray-matter": "^4.0.3", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "micromatch": "^4.0.5", + "resolve-pathname": "^3.0.0", + "shelljs": "^0.8.5", + "tslib": "^2.4.0", + "url-loader": "^4.1.1", + "webpack": "^5.73.0" + } + }, + "@docusaurus/utils-common": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-2.4.3.tgz", + "integrity": "sha512-/jascp4GbLQCPVmcGkPzEQjNaAk3ADVfMtudk49Ggb+131B1WDD6HqlSmDf8MxGdy7Dja2gc+StHf01kiWoTDQ==", + "requires": { + "tslib": "^2.4.0" + } + }, + "@docusaurus/utils-validation": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-2.4.3.tgz", + "integrity": "sha512-G2+Vt3WR5E/9drAobP+hhZQMaswRwDlp6qOMi7o7ZypB+VO7N//DZWhZEwhcRGepMDJGQEwtPv7UxtYwPL9PBw==", + "requires": { + "@docusaurus/logger": "2.4.3", + "@docusaurus/utils": "2.4.3", + "joi": "^17.6.0", + "js-yaml": "^4.1.0", + "tslib": "^2.4.0" + } + }, + "@easyops-cn/autocomplete.js": { + "version": "0.38.1", + "resolved": "https://registry.npmjs.org/@easyops-cn/autocomplete.js/-/autocomplete.js-0.38.1.tgz", + "integrity": "sha512-drg76jS6syilOUmVNkyo1c7ZEBPcPuK+aJA7AksM5ZIIbV57DMHCywiCr+uHyv8BE5jUTU98j/H7gVrkHrWW3Q==", + "requires": { + "cssesc": "^3.0.0", + "immediate": "^3.2.3" + } + }, + "@easyops-cn/docusaurus-search-local": { + "version": "0.29.4", + "resolved": "https://registry.npmjs.org/@easyops-cn/docusaurus-search-local/-/docusaurus-search-local-0.29.4.tgz", + "integrity": "sha512-QbYjEXSZEyO/d1R/MZE+1R14ZysjcrYjNH2EPJqq12UocXPj6BXXfl0A24SvbLNJ4uaLV+dMUQsvqbvwFjwRKg==", + "requires": { + "@docusaurus/plugin-content-docs": "^2.0.0-rc.1", + "@docusaurus/theme-translations": "^2.0.0-rc.1", + "@docusaurus/utils": "^2.0.0-rc.1", + "@docusaurus/utils-common": "^2.0.0-rc.1", + "@docusaurus/utils-validation": "^2.0.0-rc.1", + "@easyops-cn/autocomplete.js": "^0.38.1", + "@node-rs/jieba": "^1.6.0", + "cheerio": "^1.0.0-rc.3", + "clsx": "^1.1.1", + "debug": "^4.2.0", + "fs-extra": "^10.0.0", + "klaw-sync": "^6.0.0", + "lunr": "^2.3.9", + "lunr-languages": "^1.4.0", + "mark.js": "^8.11.1", + "tslib": "^2.4.0" + } + }, + "@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + }, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "requires": { + "@sinclair/typebox": "^0.27.8" + } + }, + "@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "requires": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==" + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" + }, + "@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" + }, + "@mdx-js/mdx": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz", + "integrity": "sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==", + "requires": { + "@babel/core": "7.12.9", + "@babel/plugin-syntax-jsx": "7.12.1", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@mdx-js/util": "1.6.22", + "babel-plugin-apply-mdx-type-prop": "1.6.22", + "babel-plugin-extract-import-names": "1.6.22", + "camelcase-css": "2.0.1", + "detab": "2.0.4", + "hast-util-raw": "6.0.1", + "lodash.uniq": "4.5.0", + "mdast-util-to-hast": "10.0.1", + "remark-footnotes": "2.0.0", + "remark-mdx": "1.6.22", + "remark-parse": "8.0.3", + "remark-squeeze-paragraphs": "4.0.0", + "style-to-object": "0.3.0", + "unified": "9.2.0", + "unist-builder": "2.0.3", + "unist-util-visit": "2.0.3" + }, + "dependencies": { + "@babel/core": { + "version": "7.12.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", + "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.7", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.9", + "@babel/types": "^7.12.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + }, + "unified": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", + "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", + "requires": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + } + } + } + }, + "@mdx-js/react": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", + "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==", + "requires": {} + }, + "@mdx-js/util": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz", + "integrity": "sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==" + }, + "@node-rs/jieba": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba/-/jieba-1.7.2.tgz", + "integrity": "sha512-zGto08NDU+KWm670qVHYGTb0YTEJ0A97dwH3WCnnhyRYMqTbOXKC6OwTc/cjzfSJP1UDBSar9Ug9BlmWmEThWg==", + "requires": { + "@node-rs/jieba-android-arm-eabi": "1.7.2", + "@node-rs/jieba-android-arm64": "1.7.2", + "@node-rs/jieba-darwin-arm64": "1.7.2", + "@node-rs/jieba-darwin-x64": "1.7.2", + "@node-rs/jieba-freebsd-x64": "1.7.2", + "@node-rs/jieba-linux-arm-gnueabihf": "1.7.2", + "@node-rs/jieba-linux-arm64-gnu": "1.7.2", + "@node-rs/jieba-linux-arm64-musl": "1.7.2", + "@node-rs/jieba-linux-x64-gnu": "1.7.2", + "@node-rs/jieba-linux-x64-musl": "1.7.2", + "@node-rs/jieba-win32-arm64-msvc": "1.7.2", + "@node-rs/jieba-win32-ia32-msvc": "1.7.2", + "@node-rs/jieba-win32-x64-msvc": "1.7.2" + } + }, + "@node-rs/jieba-android-arm-eabi": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-android-arm-eabi/-/jieba-android-arm-eabi-1.7.2.tgz", + "integrity": "sha512-FyDHRNSRIHOQO7S6Q4RwuGffnnnuNwaXPH7K8WqSzifEY+zFIaSPcNqrZHrnqyeXc4JiYpBIHeP+0Mkf1kIGRA==", + "optional": true + }, + "@node-rs/jieba-android-arm64": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-android-arm64/-/jieba-android-arm64-1.7.2.tgz", + "integrity": "sha512-z0UEZCGrAX/IiarhuDMsEIDZBS77UZv4SQyL/J48yrsbWKbb2lJ1vCrYxXIWqwp6auXHEu4r1O/pMriDAcEnPg==", + "optional": true + }, + "@node-rs/jieba-darwin-arm64": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-darwin-arm64/-/jieba-darwin-arm64-1.7.2.tgz", + "integrity": "sha512-M2cHIWRaaOmXGKy446SH2+Y2PzREaI2oYznPbg55wYEdioUp01YS/2WRG8CaoCKEj0aUocA7MFM2vVcoIAsbQw==", + "optional": true + }, + "@node-rs/jieba-darwin-x64": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-darwin-x64/-/jieba-darwin-x64-1.7.2.tgz", + "integrity": "sha512-euDawBU2FxB0CGTR803BA6WABsiicIrqa61z2AFFDPkJCDrauEM0jbMg3GDKLAvbaLbZ1Etu3QNN5xyroqp4Qw==", + "optional": true + }, + "@node-rs/jieba-freebsd-x64": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-freebsd-x64/-/jieba-freebsd-x64-1.7.2.tgz", + "integrity": "sha512-vXCaYxPb90d/xTBVG+ZZXrFLXsO2719pZSyiZCL2tey+UY28U7MOoK6394Wwmf0FCB/eRTQMCKjVIUDi+IRMUg==", + "optional": true + }, + "@node-rs/jieba-linux-arm-gnueabihf": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-arm-gnueabihf/-/jieba-linux-arm-gnueabihf-1.7.2.tgz", + "integrity": "sha512-HTep79XlJYO3KRYZ2kJChG9HnYr1DKSQTB+HEYWKLK0ifphqybcxGNLAdH0S4dViG2ciD0+iN/refgtqZEidpw==", + "optional": true + }, + "@node-rs/jieba-linux-arm64-gnu": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-arm64-gnu/-/jieba-linux-arm64-gnu-1.7.2.tgz", + "integrity": "sha512-P8QJdQydOVewL1MIqYiRpI7LOfrRQag+p4/hwExe+YXH8C7DOrR8rWJD/7XNRTbpOimlHq1UN/e+ZzhxQF/cLw==", + "optional": true + }, + "@node-rs/jieba-linux-arm64-musl": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-arm64-musl/-/jieba-linux-arm64-musl-1.7.2.tgz", + "integrity": "sha512-WjnN0hmDvTXb2h3hMW5VnUGkK1xaqhs+WHfMMilau55+YN+YOYALKZ0TeBY4BapClLuBx54wqwmBX+B4hAXunQ==", + "optional": true + }, + "@node-rs/jieba-linux-x64-gnu": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-x64-gnu/-/jieba-linux-x64-gnu-1.7.2.tgz", + "integrity": "sha512-gBXds/DwNSA6lNUxJjL6WIaNT6pnlM5juUgV/krLLkBJ8vXpOrQ07p0rrK1tnigz9b20xhsHaFRSwED1Y8zeXw==", + "optional": true + }, + "@node-rs/jieba-linux-x64-musl": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-x64-musl/-/jieba-linux-x64-musl-1.7.2.tgz", + "integrity": "sha512-tNVD3SMuG5zAj7+bLS2Enio3zR7BPxi3PhQtpQ+Hv83jajIcN46QQ0EdoMFz/aB+hkQ9PlLAstu+VREFegs5EA==", + "optional": true + }, + "@node-rs/jieba-win32-arm64-msvc": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-win32-arm64-msvc/-/jieba-win32-arm64-msvc-1.7.2.tgz", + "integrity": "sha512-/e1iQ0Dh02lGPNCYTU/H3cfIsWydaGRzZ3TDj6GfWrxkWqXORL98x/VJ/C/uKLpc7GSLLd9ygyZG7SOAfKe2tA==", + "optional": true + }, + "@node-rs/jieba-win32-ia32-msvc": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-win32-ia32-msvc/-/jieba-win32-ia32-msvc-1.7.2.tgz", + "integrity": "sha512-cYjA6YUiOwtuEzWErvwMMt/RETNWQDLcmAaiHA8ohsa6c0eB0kRJlQCc683tlaczZxqroY/7C9mxgJNGvoGRbw==", + "optional": true + }, + "@node-rs/jieba-win32-x64-msvc": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-win32-x64-msvc/-/jieba-win32-x64-msvc-1.7.2.tgz", + "integrity": "sha512-2M+Um3woFF17sa8VBYQQ6E5PNMe9Kf9fdzmeDh/GzuNHXlxW4LyK9VTV8zchIv/bDNAR5Z85kfW4wASULUxvFQ==", + "optional": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@polka/url": { + "version": "1.0.0-next.23", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.23.tgz", + "integrity": "sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==" + }, + "@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, + "@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + }, + "@slorber/static-site-generator-webpack-plugin": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.7.tgz", + "integrity": "sha512-Ug7x6z5lwrz0WqdnNFOMYrDQNTPAprvHLSh6+/fmml3qUiz6l5eq+2MzLKWtn/q5K5NpSiFsZTP/fck/3vjSxA==", + "requires": { + "eval": "^0.1.8", + "p-map": "^4.0.0", + "webpack-sources": "^3.2.2" + } + }, + "@svgr/babel-plugin-add-jsx-attribute": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz", + "integrity": "sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==", + "requires": {} + }, + "@svgr/babel-plugin-remove-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", + "requires": {} + }, + "@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", + "requires": {} + }, + "@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz", + "integrity": "sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==", + "requires": {} + }, + "@svgr/babel-plugin-svg-dynamic-title": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz", + "integrity": "sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==", + "requires": {} + }, + "@svgr/babel-plugin-svg-em-dimensions": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz", + "integrity": "sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==", + "requires": {} + }, + "@svgr/babel-plugin-transform-react-native-svg": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz", + "integrity": "sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==", + "requires": {} + }, + "@svgr/babel-plugin-transform-svg-component": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz", + "integrity": "sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==", + "requires": {} + }, + "@svgr/babel-preset": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.5.1.tgz", + "integrity": "sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==", + "requires": { + "@svgr/babel-plugin-add-jsx-attribute": "^6.5.1", + "@svgr/babel-plugin-remove-jsx-attribute": "*", + "@svgr/babel-plugin-remove-jsx-empty-expression": "*", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.5.1", + "@svgr/babel-plugin-svg-dynamic-title": "^6.5.1", + "@svgr/babel-plugin-svg-em-dimensions": "^6.5.1", + "@svgr/babel-plugin-transform-react-native-svg": "^6.5.1", + "@svgr/babel-plugin-transform-svg-component": "^6.5.1" + } + }, + "@svgr/core": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz", + "integrity": "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==", + "requires": { + "@babel/core": "^7.19.6", + "@svgr/babel-preset": "^6.5.1", + "@svgr/plugin-jsx": "^6.5.1", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.1" + } + }, + "@svgr/hast-util-to-babel-ast": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz", + "integrity": "sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==", + "requires": { + "@babel/types": "^7.20.0", + "entities": "^4.4.0" + } + }, + "@svgr/plugin-jsx": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz", + "integrity": "sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==", + "requires": { + "@babel/core": "^7.19.6", + "@svgr/babel-preset": "^6.5.1", + "@svgr/hast-util-to-babel-ast": "^6.5.1", + "svg-parser": "^2.0.4" + } + }, + "@svgr/plugin-svgo": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz", + "integrity": "sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==", + "requires": { + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "svgo": "^2.8.0" + } + }, + "@svgr/webpack": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.3.1.tgz", + "integrity": "sha512-eODxwIUShLxSMaRjzJtrj9wg89D75JLczvWg9SaB5W+OtVTkiC1vdGd8+t+pf5fTlBOy4RRXAq7x1E3DUl3D0A==", + "requires": { + "@babel/core": "^7.18.5", + "@babel/plugin-transform-react-constant-elements": "^7.17.12", + "@babel/preset-env": "^7.18.2", + "@babel/preset-react": "^7.17.12", + "@babel/preset-typescript": "^7.17.12", + "@svgr/core": "^6.3.1", + "@svgr/plugin-jsx": "^6.3.1", + "@svgr/plugin-svgo": "^6.3.1" + } + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" + }, + "@types/body-parser": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.3.tgz", + "integrity": "sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.11", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.11.tgz", + "integrity": "sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg==", + "requires": { + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.36", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", + "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==", + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz", + "integrity": "sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==", + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/eslint": { + "version": "8.44.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz", + "integrity": "sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==", + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" + }, + "@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.36", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz", + "integrity": "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==", + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "@types/hast": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.6.tgz", + "integrity": "sha512-47rJE80oqPmFdVDCD7IheXBrVdwuBgsYwoczFvKmwfo2Mzsnt+V9OONsYauFmICb6lQPpCuXYJWejBNs4pDJRg==", + "requires": { + "@types/unist": "^2" + } + }, + "@types/history": { + "version": "4.7.11", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", + "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==" + }, + "@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" + }, + "@types/http-errors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.2.tgz", + "integrity": "sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==" + }, + "@types/http-proxy": { + "version": "1.17.12", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.12.tgz", + "integrity": "sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==", + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/json-schema": { + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", + "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==" + }, + "@types/mdast": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.12.tgz", + "integrity": "sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==", + "requires": { + "@types/unist": "^2" + } + }, + "@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" + }, + "@types/node": { + "version": "20.6.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.3.tgz", + "integrity": "sha512-HksnYH4Ljr4VQgEy2lTStbCKv/P590tmPe5HqOnv9Gprffgv5WXAY+Y5Gqniu0GGqeTCUdBnzC3QSrzPkBkAMA==" + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "@types/parse5": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", + "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" + }, + "@types/prop-types": { + "version": "15.7.6", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.6.tgz", + "integrity": "sha512-RK/kBbYOQQHLYj9Z95eh7S6t7gq4Ojt/NT8HTk8bWVhA5DaF+5SMnxHKkP4gPNN3wAZkKP+VjAf0ebtYzf+fxg==" + }, + "@types/qs": { + "version": "6.9.8", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz", + "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==" + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + }, + "@types/react": { + "version": "18.2.22", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.22.tgz", + "integrity": "sha512-60fLTOLqzarLED2O3UQImc/lsNRgG0jE/a1mPW9KjMemY0LMITWEsbS4VvZ4p6rorEHd5YKxxmMKSDK505GHpA==", + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-router": { + "version": "5.1.20", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", + "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", + "requires": { + "@types/history": "^4.7.11", + "@types/react": "*" + } + }, + "@types/react-router-config": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.7.tgz", + "integrity": "sha512-pFFVXUIydHlcJP6wJm7sDii5mD/bCmmAY0wQzq+M+uX7bqS95AQqHZWP1iNMKrWVQSuHIzj5qi9BvrtLX2/T4w==", + "requires": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "^5.1.0" + } + }, + "@types/react-router-dom": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", + "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", + "requires": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "*" + } + }, + "@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + }, + "@types/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==", + "requires": { + "@types/node": "*" + } + }, + "@types/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" + }, + "@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "requires": { + "@types/express": "*" + } + }, + "@types/serve-static": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", + "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", + "requires": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "requires": { + "@types/node": "*" + } + }, + "@types/unist": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.8.tgz", + "integrity": "sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==" + }, + "@types/ws": { + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", + "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", + "requires": { + "@types/node": "*" + } + }, + "@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" + }, + "@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "requires": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==" + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "dependencies": { + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + } + } + }, + "acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" + }, + "acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "requires": {} + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" + }, + "address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==" + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + } + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "requires": {} + }, + "algoliasearch": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.20.0.tgz", + "integrity": "sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g==", + "requires": { + "@algolia/cache-browser-local-storage": "4.20.0", + "@algolia/cache-common": "4.20.0", + "@algolia/cache-in-memory": "4.20.0", + "@algolia/client-account": "4.20.0", + "@algolia/client-analytics": "4.20.0", + "@algolia/client-common": "4.20.0", + "@algolia/client-personalization": "4.20.0", + "@algolia/client-search": "4.20.0", + "@algolia/logger-common": "4.20.0", + "@algolia/logger-console": "4.20.0", + "@algolia/requester-browser-xhr": "4.20.0", + "@algolia/requester-common": "4.20.0", + "@algolia/requester-node-http": "4.20.0", + "@algolia/transporter": "4.20.0" + } + }, + "algoliasearch-helper": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.14.2.tgz", + "integrity": "sha512-FjDSrjvQvJT/SKMW74nPgFpsoPUwZCzGbCqbp8HhBFfSk/OvNFxzCaCmuO0p7AWeLy1gD+muFwQEkBwcl5H4pg==", + "requires": { + "@algolia/events": "^4.0.1" + } + }, + "ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "requires": { + "string-width": "^4.1.0" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } + } + }, + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==" + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" + }, + "autoprefixer": { + "version": "10.4.15", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.15.tgz", + "integrity": "sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==", + "requires": { + "browserslist": "^4.21.10", + "caniuse-lite": "^1.0.30001520", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "axios": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "requires": { + "follow-redirects": "^1.14.7" + } + }, + "babel-loader": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", + "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + } + }, + "babel-plugin-apply-mdx-type-prop": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz", + "integrity": "sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4", + "@mdx-js/util": "1.6.22" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-extract-import-names": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz", + "integrity": "sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + } + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", + "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", + "requires": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.2", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", + "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.4.2", + "core-js-compat": "^3.31.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", + "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.4.2" + } + }, + "bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==" + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base16": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz", + "integrity": "sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==" + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "bonjour-service": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", + "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "requires": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "boxen": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz", + "integrity": "sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==", + "requires": { + "ansi-align": "^3.0.1", + "camelcase": "^6.2.0", + "chalk": "^4.1.2", + "cli-boxes": "^3.0.0", + "string-width": "^5.0.1", + "type-fest": "^2.5.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.0.1" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "requires": { + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.11" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + }, + "normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" + } + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" + }, + "camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001538", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001538.tgz", + "integrity": "sha512-HWJnhnID+0YMtGlzcp3T9drmBJUVDchPJ08tpUGFLs9CYlwWPH2uLgpHn8fND5pCgXVtnGS3H4QR9XLMHVNkHw==" + }, + "ccount": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", + "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==" + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==" + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==" + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==" + }, + "cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "requires": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + } + }, + "cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "requires": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" + }, + "ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==" + }, + "clean-css": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", + "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "requires": { + "source-map": "~0.6.0" + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + }, + "cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==" + }, + "cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "requires": { + "@colors/colors": "1.5.0", + "string-width": "^4.2.0" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } + } + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==" + }, + "collapse-white-space": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", + "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==" + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + }, + "colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + }, + "combine-promises": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/combine-promises/-/combine-promises-1.2.0.tgz", + "integrity": "sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==" + }, + "comma-separated-tokens": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", + "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==" + }, + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "requires": { + "mime-db": ">= 1.43.0 < 2" + }, + "dependencies": { + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + } + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "requires": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + } + }, + "connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==" + }, + "consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==" + }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "copy-text-to-clipboard": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz", + "integrity": "sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==" + }, + "copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "requires": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "requires": { + "is-glob": "^4.0.3" + } + }, + "globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "requires": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==" + } + } + }, + "core-js": { + "version": "3.32.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.32.2.tgz", + "integrity": "sha512-pxXSw1mYZPDGvTQqEc5vgIb83jGQKFGYWY76z4a7weZXUolw3G+OvpZqSRcfYOoOVUQJYEPsWeQK8pKEnUtWxQ==" + }, + "core-js-compat": { + "version": "3.32.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.2.tgz", + "integrity": "sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ==", + "requires": { + "browserslist": "^4.21.10" + } + }, + "core-js-pure": { + "version": "3.32.2", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.32.2.tgz", + "integrity": "sha512-Y2rxThOuNywTjnX/PgA5vWM6CZ9QB9sz9oGeCixV8MqXZO70z/5SHzf9EeBrEBK0PN36DnEBBu9O/aGWzKuMZQ==" + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "cross-fetch": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", + "requires": { + "node-fetch": "^2.6.12" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" + }, + "css-declaration-sorter": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", + "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", + "requires": {} + }, + "css-loader": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", + "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.21", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.3", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + } + }, + "css-minimizer-webpack-plugin": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.2.tgz", + "integrity": "sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==", + "requires": { + "cssnano": "^5.1.8", + "jest-worker": "^29.1.2", + "postcss": "^8.4.17", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + } + } + }, + "css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + }, + "cssnano": { + "version": "5.1.15", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", + "requires": { + "cssnano-preset-default": "^5.2.14", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + } + }, + "cssnano-preset-advanced": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.10.tgz", + "integrity": "sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ==", + "requires": { + "autoprefixer": "^10.4.12", + "cssnano-preset-default": "^5.2.14", + "postcss-discard-unused": "^5.1.0", + "postcss-merge-idents": "^5.1.1", + "postcss-reduce-idents": "^5.2.0", + "postcss-zindex": "^5.1.0" + } + }, + "cssnano-preset-default": { + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", + "requires": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.1", + "postcss-convert-values": "^5.1.3", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.4", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.4", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.2", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + } + }, + "cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "requires": {} + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "requires": { + "css-tree": "^1.1.2" + } + }, + "csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" + }, + "default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "requires": { + "execa": "^5.0.0" + } + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, + "define-data-property": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", + "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "requires": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" + }, + "define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "requires": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "del": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", + "requires": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + } + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + }, + "detab": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.4.tgz", + "integrity": "sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==", + "requires": { + "repeat-string": "^1.5.4" + } + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + }, + "detect-port": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz", + "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==", + "requires": { + "address": "^1.0.1", + "debug": "4" + } + }, + "detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "requires": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "requires": { + "path-type": "^4.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" + }, + "dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "requires": { + "@leichtgewicht/ip-codec": "^2.0.1" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "requires": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" + }, + "domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "requires": { + "domelementtype": "^2.3.0" + } + }, + "domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "requires": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + } + }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "requires": { + "is-obj": "^2.0.0" + }, + "dependencies": { + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + } + } + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + }, + "duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "electron-to-chromium": { + "version": "1.4.525", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.525.tgz", + "integrity": "sha512-GIZ620hDK4YmIqAWkscG4W6RwY6gOx1y5J6f4JUQwctiJrqH2oxZYU4mXHi35oV32tr630UcepBzSBGJ/WYcZA==" + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + }, + "emoticon": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-3.2.0.tgz", + "integrity": "sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", + "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==" + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "eta": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eta/-/eta-2.2.0.tgz", + "integrity": "sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + }, + "eval": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.8.tgz", + "integrity": "sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==", + "requires": { + "@types/node": "*", + "require-like": ">= 0.1.1" + } + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "dependencies": { + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + } + } + }, + "express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "requires": { + "safe-buffer": "5.2.1" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", + "requires": { + "punycode": "^1.3.2" + } + }, + "fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fbemitter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", + "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", + "requires": { + "fbjs": "^3.0.0" + } + }, + "fbjs": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", + "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", + "requires": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^1.0.35" + } + }, + "fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" + }, + "feed": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", + "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==", + "requires": { + "xml-js": "^1.6.11" + } + }, + "file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "filesize": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", + "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==" + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flux": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/flux/-/flux-4.0.4.tgz", + "integrity": "sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==", + "requires": { + "fbemitter": "^3.0.0", + "fbjs": "^3.0.1" + } + }, + "follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==" + }, + "fork-ts-checker-webpack-plugin": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", + "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "requires": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" + } + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "fraction.js": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.6.tgz", + "integrity": "sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs-monkey": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz", + "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + }, + "get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + } + }, + "get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "github-slugger": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz", + "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==" + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "requires": { + "ini": "2.0.0" + }, + "dependencies": { + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" + } + } + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "requires": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + } + } + }, + "gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "requires": { + "duplexer": "^0.1.2" + } + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" + }, + "hast-to-hyperscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", + "integrity": "sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==", + "requires": { + "@types/unist": "^2.0.3", + "comma-separated-tokens": "^1.0.0", + "property-information": "^5.3.0", + "space-separated-tokens": "^1.0.0", + "style-to-object": "^0.3.0", + "unist-util-is": "^4.0.0", + "web-namespaces": "^1.0.0" + } + }, + "hast-util-from-parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz", + "integrity": "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==", + "requires": { + "@types/parse5": "^5.0.0", + "hastscript": "^6.0.0", + "property-information": "^5.0.0", + "vfile": "^4.0.0", + "vfile-location": "^3.2.0", + "web-namespaces": "^1.0.0" + } + }, + "hast-util-parse-selector": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", + "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==" + }, + "hast-util-raw": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.0.1.tgz", + "integrity": "sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==", + "requires": { + "@types/hast": "^2.0.0", + "hast-util-from-parse5": "^6.0.0", + "hast-util-to-parse5": "^6.0.0", + "html-void-elements": "^1.0.0", + "parse5": "^6.0.0", + "unist-util-position": "^3.0.0", + "vfile": "^4.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.0", + "zwitch": "^1.0.0" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + } + } + }, + "hast-util-to-parse5": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz", + "integrity": "sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==", + "requires": { + "hast-to-hyperscript": "^9.0.0", + "property-information": "^5.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.0", + "zwitch": "^1.0.0" + } + }, + "hastscript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", + "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", + "requires": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^1.0.0", + "hast-util-parse-selector": "^2.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "requires": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "requires": { + "react-is": "^16.7.0" + } + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "html-entities": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==" + }, + "html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "requires": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "dependencies": { + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" + } + } + }, + "html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==" + }, + "html-void-elements": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz", + "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==" + }, + "html-webpack-plugin": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", + "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", + "requires": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + } + }, + "htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "requires": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "dependencies": { + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" + } + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "requires": {} + }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" + }, + "image-size": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", + "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", + "requires": { + "queue": "6.0.2" + } + }, + "immediate": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==" + }, + "immer": { + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==" + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==" + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "infima": { + "version": "0.2.0-alpha.43", + "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.43.tgz", + "integrity": "sha512-2uw57LvUqW0rK/SWYnd/2rRfxNA5DDNOh33jxF7fy46VWoNhGxiUQyVZHbBMjQ33mQem0cjdDVwgWVAmlRfgyQ==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==" + }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==" + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + }, + "dependencies": { + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + } + } + }, + "is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "requires": { + "has": "^1.0.3" + } + }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==" + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==" + }, + "is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "requires": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + } + }, + "is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==" + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==" + }, + "is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==" + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "is-whitespace-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", + "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==" + }, + "is-word-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", + "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==" + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "requires": { + "is-docker": "^2.0.0" + } + }, + "is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" + }, + "jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "requires": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jiti": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz", + "integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==" + }, + "joi": { + "version": "17.10.2", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.10.2.tgz", + "integrity": "sha512-hcVhjBxRNW/is3nNLdGLIjkgXetkeGc2wyhydhz8KumG23Aerk4HPjU5zaPAMRqXQFc0xNqXTC7+zQjxr0GlKA==", + "requires": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "requires": { + "json-buffer": "3.0.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "requires": { + "graceful-fs": "^4.1.11" + } + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" + }, + "latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "requires": { + "package-json": "^6.3.0" + } + }, + "launch-editor": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "requires": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" + }, + "lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==" + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" + }, + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.curry": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", + "integrity": "sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==" + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==" + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" + }, + "lodash.flow": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz", + "integrity": "sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==" + }, + "lodash.invokemap": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz", + "integrity": "sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w==" + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" + }, + "lodash.pullall": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.pullall/-/lodash.pullall-4.2.0.tgz", + "integrity": "sha512-VhqxBKH0ZxPpLhiu68YD1KnHmbhQJQctcipvmFnqIBDYzcIHzf3Zpu0tpeOKtR4x76p9yohc506eGdOjTmyIBg==" + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + }, + "lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "requires": { + "tslib": "^2.0.3" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, + "lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" + }, + "lunr-languages": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/lunr-languages/-/lunr-languages-1.13.0.tgz", + "integrity": "sha512-qgTOarcnAtVFKr0aJ2GuiqbBdhKF61jpF8OgFbnlSAb1t6kOiQW67q0hv0UQzzB+5+OwPpnZyFT/L0L9SQG1/A==" + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + } + }, + "mark.js": { + "version": "8.11.1", + "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", + "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==" + }, + "markdown-escapes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", + "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==" + }, + "mdast-squeeze-paragraphs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz", + "integrity": "sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==", + "requires": { + "unist-util-remove": "^2.0.0" + } + }, + "mdast-util-definitions": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", + "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", + "requires": { + "unist-util-visit": "^2.0.0" + } + }, + "mdast-util-to-hast": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz", + "integrity": "sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==", + "requires": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "mdast-util-definitions": "^4.0.0", + "mdurl": "^1.0.0", + "unist-builder": "^2.0.0", + "unist-util-generated": "^1.0.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^2.0.0" + } + }, + "mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==" + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + }, + "memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "requires": { + "fs-monkey": "^1.0.4" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "requires": { + "mime-db": "~1.33.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "mini-css-extract-plugin": { + "version": "2.7.6", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", + "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", + "requires": { + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + }, + "mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "requires": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + } + }, + "nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "requires": { + "lodash": "^4.17.21" + } + }, + "node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" + }, + "node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==" + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "requires": { + "path-key": "^3.0.0" + } + }, + "nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==" + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "requires": { + "boolbase": "^1.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==" + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "requires": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + } + }, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse-numeric-range": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", + "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==" + }, + "parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "requires": { + "entities": "^4.4.0" + } + }, + "parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "requires": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "requires": { + "isarray": "0.0.1" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "requires": { + "find-up": "^4.0.0" + } + }, + "pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" + } + } + }, + "postcss": { + "version": "8.4.30", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.30.tgz", + "integrity": "sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==", + "requires": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "requires": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-colormin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", + "requires": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-convert-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", + "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "requires": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "requires": {} + }, + "postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "requires": {} + }, + "postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "requires": {} + }, + "postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "requires": {} + }, + "postcss-discard-unused": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-5.1.0.tgz", + "integrity": "sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==", + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-loader": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.3.tgz", + "integrity": "sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==", + "requires": { + "cosmiconfig": "^8.2.0", + "jiti": "^1.18.2", + "semver": "^7.3.8" + }, + "dependencies": { + "cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "requires": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + } + } + } + }, + "postcss-merge-idents": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-5.1.1.tgz", + "integrity": "sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw==", + "requires": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-merge-longhand": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", + "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "requires": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.1" + } + }, + "postcss-merge-rules": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", + "requires": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "requires": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-params": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", + "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "requires": { + "browserslist": "^4.21.4", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "requires": {} + }, + "postcss-modules-local-by-default": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "requires": {} + }, + "postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-positions": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-unicode": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", + "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "requires": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "requires": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-ordered-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "requires": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-reduce-idents": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz", + "integrity": "sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-reduce-initial": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", + "requires": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-sort-media-queries": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-4.4.1.tgz", + "integrity": "sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw==", + "requires": { + "sort-css-media-queries": "2.1.0" + } + }, + "postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "requires": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + } + }, + "postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "postcss-zindex": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-5.1.0.tgz", + "integrity": "sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==", + "requires": {} + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==" + }, + "pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "requires": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "pretty-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", + "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==" + }, + "prism-react-renderer": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz", + "integrity": "sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==", + "requires": {} + }, + "prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "~2.0.3" + } + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "property-information": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", + "requires": { + "xtend": "^4.0.0" + } + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + }, + "pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "requires": { + "escape-goat": "^2.0.0" + } + }, + "pure-color": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz", + "integrity": "sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==" + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "requires": { + "inherits": "~2.0.3" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==" + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + } + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" + } + } + }, + "react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "react-base16-styling": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz", + "integrity": "sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==", + "requires": { + "base16": "^1.0.0", + "lodash.curry": "^4.0.1", + "lodash.flow": "^3.3.0", + "pure-color": "^1.2.0" + } + }, + "react-dev-utils": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", + "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", + "requires": { + "@babel/code-frame": "^7.16.0", + "address": "^1.1.2", + "browserslist": "^4.18.1", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "detect-port-alt": "^1.1.6", + "escape-string-regexp": "^4.0.0", + "filesize": "^8.0.6", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.5.0", + "global-modules": "^2.0.0", + "globby": "^11.0.4", + "gzip-size": "^6.0.0", + "immer": "^9.0.7", + "is-root": "^2.1.0", + "loader-utils": "^3.2.0", + "open": "^8.4.0", + "pkg-up": "^3.1.0", + "prompts": "^2.4.2", + "react-error-overlay": "^6.0.11", + "recursive-readdir": "^2.2.2", + "shell-quote": "^1.7.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "dependencies": { + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "loader-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==" + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "requires": { + "p-limit": "^3.0.2" + } + } + } + }, + "react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + } + }, + "react-error-overlay": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", + "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" + }, + "react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" + }, + "react-helmet-async": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.3.0.tgz", + "integrity": "sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==", + "requires": { + "@babel/runtime": "^7.12.5", + "invariant": "^2.2.4", + "prop-types": "^15.7.2", + "react-fast-compare": "^3.2.0", + "shallowequal": "^1.1.0" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "react-json-view": { + "version": "1.21.3", + "resolved": "https://registry.npmjs.org/react-json-view/-/react-json-view-1.21.3.tgz", + "integrity": "sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==", + "requires": { + "flux": "^4.0.1", + "react-base16-styling": "^0.6.0", + "react-lifecycles-compat": "^3.0.4", + "react-textarea-autosize": "^8.3.2" + } + }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "react-loadable": { + "version": "npm:@docusaurus/react-loadable@5.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", + "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", + "requires": { + "@types/react": "*", + "prop-types": "^15.6.2" + } + }, + "react-loadable-ssr-addon-v5-slorber": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz", + "integrity": "sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==", + "requires": { + "@babel/runtime": "^7.10.3" + } + }, + "react-router": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", + "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", + "requires": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + } + }, + "react-router-config": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz", + "integrity": "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==", + "requires": { + "@babel/runtime": "^7.1.2" + } + }, + "react-router-dom": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz", + "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==", + "requires": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.3.4", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + } + }, + "react-textarea-autosize": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.3.tgz", + "integrity": "sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==", + "requires": { + "@babel/runtime": "^7.20.13", + "use-composed-ref": "^1.3.0", + "use-latest": "^1.2.1" + } + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "reading-time": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz", + "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==" + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "requires": { + "resolve": "^1.1.6" + } + }, + "recursive-readdir": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "requires": { + "minimatch": "^3.0.5" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, + "regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "requires": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + } + }, + "registry-auth-token": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", + "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", + "requires": { + "rc": "1.2.8" + } + }, + "registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "requires": { + "rc": "^1.2.8" + } + }, + "regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==" + }, + "remark-emoji": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-2.2.0.tgz", + "integrity": "sha512-P3cj9s5ggsUvWw5fS2uzCHJMGuXYRb0NnZqYlNecewXt8QBU9n5vW3DUUKOhepS8F9CwdMx9B8a3i7pqFWAI5w==", + "requires": { + "emoticon": "^3.2.0", + "node-emoji": "^1.10.0", + "unist-util-visit": "^2.0.3" + } + }, + "remark-footnotes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz", + "integrity": "sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==" + }, + "remark-mdx": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz", + "integrity": "sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==", + "requires": { + "@babel/core": "7.12.9", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-proposal-object-rest-spread": "7.12.1", + "@babel/plugin-syntax-jsx": "7.12.1", + "@mdx-js/util": "1.6.22", + "is-alphabetical": "1.0.4", + "remark-parse": "8.0.3", + "unified": "9.2.0" + }, + "dependencies": { + "@babel/core": { + "version": "7.12.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", + "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.7", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.9", + "@babel/types": "^7.12.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + }, + "@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + }, + "unified": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", + "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", + "requires": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + } + } + } + }, + "remark-parse": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", + "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", + "requires": { + "ccount": "^1.0.0", + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^2.0.0", + "vfile-location": "^3.0.0", + "xtend": "^4.0.1" + } + }, + "remark-squeeze-paragraphs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz", + "integrity": "sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==", + "requires": { + "mdast-squeeze-paragraphs": "^4.0.0" + } + }, + "renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + } + } + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, + "require-like": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", + "integrity": "sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==" + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "resolve": { + "version": "1.22.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", + "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + }, + "resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "rtl-detect": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.0.4.tgz", + "integrity": "sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ==" + }, + "rtlcss": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-3.5.0.tgz", + "integrity": "sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A==", + "requires": { + "find-up": "^5.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.3.11", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "requires": { + "p-limit": "^3.0.2" + } + } + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "requires": { + "tslib": "^2.1.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "search-insights": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.8.2.tgz", + "integrity": "sha512-PxA9M5Q2bpBelVvJ3oDZR8nuY00Z6qwOxL53wNpgzV28M/D6u9WUbImDckjLSILBF8F1hn/mgyuUaOPtjow4Qw==", + "peer": true + }, + "section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "requires": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" + }, + "selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "requires": { + "node-forge": "^1" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + } + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + } + } + }, + "serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-handler": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.5.tgz", + "integrity": "sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==", + "requires": { + "bytes": "3.0.0", + "content-disposition": "0.5.2", + "fast-url-parser": "1.1.3", + "mime-types": "2.1.18", + "minimatch": "3.1.2", + "path-is-inside": "1.0.2", + "path-to-regexp": "2.2.1", + "range-parser": "1.2.0" + }, + "dependencies": { + "path-to-regexp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", + "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==" + } + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "requires": { + "kind-of": "^6.0.2" + } + }, + "shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==" + }, + "shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "sirv": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz", + "integrity": "sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==", + "requires": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^3.0.0" + } + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "sitemap": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.1.tgz", + "integrity": "sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==", + "requires": { + "@types/node": "^17.0.5", + "@types/sax": "^1.2.1", + "arg": "^5.0.0", + "sax": "^1.2.4" + }, + "dependencies": { + "@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" + } + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, + "sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "sort-css-media-queries": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.1.0.tgz", + "integrity": "sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==" + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + }, + "state-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", + "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==" + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + }, + "std-env": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.4.3.tgz", + "integrity": "sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==" + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "requires": { + "ansi-regex": "^6.0.1" + } + } + } + }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==" + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + }, + "style-to-object": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", + "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", + "requires": { + "inline-style-parser": "0.1.1" + } + }, + "stylehacks": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", + "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "requires": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" + }, + "svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + } + } + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + }, + "terser": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.20.0.tgz", + "integrity": "sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ==", + "requires": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + } + } + }, + "terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "requires": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "dependencies": { + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "tiny-invariant": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", + "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" + }, + "tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==" + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==" + }, + "trim-trailing-lines": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", + "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==" + }, + "trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==" + }, + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "dependencies": { + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + } + } + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "peer": true + }, + "ua-parser-js": { + "version": "1.0.36", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.36.tgz", + "integrity": "sha512-znuyCIXzl8ciS3+y3fHJI/2OhQIXbXw9MWC/o3qwyR+RGppjZHrM27CGFSKCJXi2Kctiz537iOu2KnXs1lMQhw==" + }, + "unherit": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", + "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", + "requires": { + "inherits": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==" + }, + "unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==" + }, + "unified": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", + "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", + "requires": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + } + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "unist-builder": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", + "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==" + }, + "unist-util-generated": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", + "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==" + }, + "unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==" + }, + "unist-util-position": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", + "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==" + }, + "unist-util-remove": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz", + "integrity": "sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==", + "requires": { + "unist-util-is": "^4.0.0" + } + }, + "unist-util-remove-position": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", + "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", + "requires": { + "unist-util-visit": "^2.0.0" + } + }, + "unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "requires": { + "@types/unist": "^2.0.2" + } + }, + "unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + }, + "update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "update-notifier": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "requires": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + } + }, + "cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "requires": { + "string-width": "^4.0.0" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" + } + } + }, + "url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "requires": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "requires": { + "prepend-http": "^2.0.0" + } + }, + "use-composed-ref": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz", + "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==", + "requires": {} + }, + "use-isomorphic-layout-effect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "requires": {} + }, + "use-latest": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz", + "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==", + "requires": { + "use-isomorphic-layout-effect": "^1.1.1" + } + }, + "use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "requires": {} + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" + }, + "utility-types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", + "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, + "value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + }, + "vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + } + }, + "vfile-location": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", + "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==" + }, + "vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "wait-on": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz", + "integrity": "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==", + "requires": { + "axios": "^0.25.0", + "joi": "^17.6.0", + "lodash": "^4.17.21", + "minimist": "^1.2.5", + "rxjs": "^7.5.4" + } + }, + "watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "web-namespaces": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz", + "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==" + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "webpack": { + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.1.tgz", + "integrity": "sha512-jnd6EoYrf9yMxCyYDPj8eutJvtjQNp8PHmni/e/ulydHBWhT5J3menXt3HEkScsu9YqMAcG4CfFjs3rj5pVU1w==", + "requires": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "commander": "^7.2.0", + "escape-string-regexp": "^4.0.0", + "gzip-size": "^6.0.0", + "is-plain-object": "^5.0.0", + "lodash.debounce": "^4.0.8", + "lodash.escape": "^4.0.1", + "lodash.flatten": "^4.4.0", + "lodash.invokemap": "^4.6.0", + "lodash.pullall": "^4.2.0", + "lodash.uniqby": "^4.7.0", + "opener": "^1.5.2", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", + "ws": "^7.3.1" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + } + } + }, + "webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + } + } + }, + "webpack-dev-server": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", + "requires": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + }, + "ws": { + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", + "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", + "requires": {} + } + } + }, + "webpack-merge": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", + "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" + }, + "webpackbar": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz", + "integrity": "sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==", + "requires": { + "chalk": "^4.1.0", + "consola": "^2.15.3", + "pretty-time": "^1.1.0", + "std-env": "^3.0.1" + } + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "requires": { + "string-width": "^5.0.1" + } + }, + "wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "requires": { + "ansi-regex": "^6.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "requires": {} + }, + "xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" + }, + "xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "requires": { + "sax": "^1.2.4" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + }, + "zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==" + } + } +} diff --git a/docs/package.json b/docs/package.json new file mode 100644 index 000000000..a7f48fbbe --- /dev/null +++ b/docs/package.json @@ -0,0 +1,44 @@ +{ + "name": "blazorbootstrap", + "version": "2.2.1", + "private": true, + "scripts": { + "docusaurus": "docusaurus", + "start": "docusaurus start", + "build": "docusaurus build", + "swizzle": "docusaurus swizzle", + "deploy": "docusaurus deploy", + "clear": "docusaurus clear", + "serve": "docusaurus serve", + "write-translations": "docusaurus write-translations", + "write-heading-ids": "docusaurus write-heading-ids" + }, + "dependencies": { + "@docusaurus/core": "^2.4.3", + "@docusaurus/plugin-client-redirects": "^2.4.3", + "@docusaurus/plugin-google-gtag": "2.4.3", + "@docusaurus/preset-classic": "^2.4.3", + "@easyops-cn/docusaurus-search-local": "^0.29.0", + "@mdx-js/react": "1.6.22", + "@svgr/webpack": "6.3.1", + "acorn": "^8.7.1", + "clsx": "1.2.1", + "file-loader": "6.2.0", + "prism-react-renderer": "1.3.5", + "react": "17.0.2", + "react-dom": "17.0.2", + "url-loader": "4.1.1" + }, + "browserslist": { + "production": [ + ">0.5%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } +} diff --git a/docs/sidebars.js b/docs/sidebars.js new file mode 100644 index 000000000..fd342f2cd --- /dev/null +++ b/docs/sidebars.js @@ -0,0 +1,31 @@ +/** + * Creating a sidebar enables you to: + - create an ordered group of docs + - render a sidebar for each doc of that group + - provide next/previous navigation + + The sidebars can be generated from the filesystem, or explicitly defined here. + + Create as many sidebars as you want. + */ + +// @ts-check + +/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ +const sidebars = { + // By default, Docusaurus generates a sidebar from the docs folder structure + tutorialSidebar: [{type: 'autogenerated', dirName: '.'}], + + // But you can create a sidebar manually + /* + tutorialSidebar: [ + { + type: 'category', + label: 'Tutorial', + items: ['hello'], + }, + ], + */ +}; + +module.exports = sidebars; diff --git a/docs/src/components/HomepageFeatures.js b/docs/src/components/HomepageFeatures.js new file mode 100644 index 000000000..7dfc191c8 --- /dev/null +++ b/docs/src/components/HomepageFeatures.js @@ -0,0 +1,61 @@ +import React from 'react'; +import clsx from 'clsx'; +import styles from './HomepageFeatures.module.css'; + +const FeatureList = [ + { + title: 'Easy to Use', + emoji: '👍', + description: ( + <> + BlazorBootstrap has been built with Blazor and Bootstrap CSS framework to use Bootstrap components with ease. + + ), + }, + { + title: 'Focus on What Matters', + emoji: '🧐', + description: ( + <> + BlazorBootstrap lets you focus on your deliverables, and we'll build the Bootstrap components in Blazor. + + ), + }, + { + title: 'Open-source & free', + emoji: '🔓', + description: ( + <> + BlazorBootstrap is licensed under the Apache License 2.0. Clone it, fork it, and customize it. + + ), + }, +]; + +function Feature({ emoji, title, description }) { + return ( +
    +
    + {emoji} +
    +
    +

    {title}

    +

    {description}

    +
    +
    + ); +} + +export default function HomepageFeatures() { + return ( +
    +
    +
    + {FeatureList.map((props, idx) => ( + + ))} +
    +
    +
    + ); +} diff --git a/docs/src/components/HomepageFeatures.module.css b/docs/src/components/HomepageFeatures.module.css new file mode 100644 index 000000000..b248eb2e5 --- /dev/null +++ b/docs/src/components/HomepageFeatures.module.css @@ -0,0 +1,11 @@ +.features { + display: flex; + align-items: center; + padding: 2rem 0; + width: 100%; +} + +.featureSvg { + height: 200px; + width: 200px; +} diff --git a/docs/src/css/custom.css b/docs/src/css/custom.css new file mode 100644 index 000000000..1f6d25a85 --- /dev/null +++ b/docs/src/css/custom.css @@ -0,0 +1,121 @@ +/* stylelint-disable docusaurus/copyright-header */ +/** + * Any CSS included here will be global. The classic template + * bundles Infima by default. Infima is a CSS framework designed to + * work well for content-centric websites. + */ + +/* You can override the default Infima variables here. */ +:root { + --ifm-color-primary: #7c3aed; + --ifm-color-primary-dark: #6d28d9; + --ifm-color-primary-darker: #5b21b6; + --ifm-color-primary-darkest: #4c1d95; + --ifm-color-primary-light: #8b5cf6; + --ifm-color-primary-lighter: #a78bfa; + --ifm-color-primary-lightest: #c4b5fd; + --ifm-code-font-size: 95%; + --filter-black: invert(0%) sepia(0%) saturate(0%) hue-rotate(324deg) brightness(96%) contrast(104%); + /* See: https://codepen.io/sosuke/pen/Pjoqqp */ + --filter-white: invert(100%) sepia(0%) saturate(7478%) hue-rotate(19deg) brightness(98%) contrast(105%); + /* See: https://codepen.io/sosuke/pen/Pjoqqp */ +} + +html[data-theme='light'] .navbar__brand>img { + filter: var(--filter-black); +} + +html[data-theme='dark'] .navbar__brand>img { + filter: var(--filter-white); +} + +html[data-theme='light'] .hero--primary svg { + filter: var(--filter-white); +} + +html[data-theme='dark'] .hero--primary svg { + filter: var(--filter-black); +} + +.feature-emoji { + font-size: 50px; +} + +.hero__subsubtitle { + margin-bottom: 0; +} + +main>section.features { + padding-bottom: 8rem; +} + +main>section.features h2 { + margin-bottom: 0; +} + +main>section.features .row .col { + margin-top: 2rem; +} + +@media (max-width: 576px) { + header>.container>h1 { + font-size: 2rem; + } +} + +.docusaurus-highlight-code-line { + background-color: rgba(0, 0, 0, 0.1); + display: block; + margin: 0 calc(-1 * var(--ifm-pre-padding)); + padding: 0 var(--ifm-pre-padding); +} + +html[data-theme='dark'] .docusaurus-highlight-code-line { + background-color: rgba(0, 0, 0, 0.3); +} + +/* custom */ +.hero__title { + font-size: 2.1rem !important; +} + +/* carbon ads */ +#carbonads { + position: static; + display: block; + max-width: 400px; + padding: 15px 15px 15px 160px; + margin: 2rem 0; + overflow: hidden; + font-size: .8125rem; + line-height: 1.4; + text-align: left; + background-color: #f8f9fa; +} + +#carbonads a { + color: #212529; + text-decoration: none +} + +@media (min-width: 576px) { + #carbonads { + border-radius:.5rem + } +} + +.carbon-img { + float: left; + margin-left: -145px +} + +.carbon-poweredby { + display: block; + margin-top: .75rem; + color: #212529 !important +} + +/* webpack-dev-server-client-overlay */ +#webpack-dev-server-client-overlay { + display: none !important; +} \ No newline at end of file diff --git a/docs/src/js/carbon-ad.js b/docs/src/js/carbon-ad.js new file mode 100644 index 000000000..b2c7af199 --- /dev/null +++ b/docs/src/js/carbon-ad.js @@ -0,0 +1,47 @@ +import React, { Component } from 'react'; + +class CarbonAd extends Component { + constructor(props) { + super(props); + + this.name = this.props.name || "docsblazorbootstrapcom"; + this.serve = this.props.serve || "CWYICKJI"; + this.script = this.props.script || null; + this.placement = this.props.placement || ""; + this.fallback = this.props.fallback || null; + this.showFallback = false; + } + + adShowing = () => document.getElementById(`${this.name} #carbonads`) !== null; + + componentDidMount = () => { + let script = document.createElement("script"); + script.defer = !!this.script; + script.async = true; + script.id = this.script ? "" : "_carbonads_js"; + script.type = "text/javascript"; + script.src = + this.script || + `//cdn.carbonads.com/carbon.js?serve=${this.serve}&placement=${ + this.placement + }`; + script.onerror = () => { + this.showFallback = true; + this.forceUpdate(); + }; + script.addEventListener("load", () => { + if (!this.adShowing) _.invoke(window._carbonads, "refresh"); + }); + + document.querySelector(`#${this.name}`).appendChild(script); + }; + + render() { + if (this.showFallback && this.fallback) { + return this.fallback; + } + return
    ; + } +} + +export default CarbonAd; \ No newline at end of file diff --git a/docs/src/pages/index.js b/docs/src/pages/index.js new file mode 100644 index 000000000..9be997e6b --- /dev/null +++ b/docs/src/pages/index.js @@ -0,0 +1,43 @@ +import React from 'react'; +import clsx from 'clsx'; +import Layout from '@theme/Layout'; +import Link from '@docusaurus/Link'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; +import styles from './index.module.css'; +import HomepageFeatures from '../components/HomepageFeatures'; +import { Redirect } from 'react-router-dom'; + +function HomepageHeader() { + const { siteConfig } = useDocusaurusContext(); + return ( +
    +
    + Blazor Bootstrap +

    {siteConfig.title}

    +

    {siteConfig.tagline}

    +
    + + Get started + +
    +
    +
    + ); +} + +export default function Home() { + const { siteConfig } = useDocusaurusContext(); + // return ( + // + // + //
    + // + //
    + //
    + // ); + return ; +} diff --git a/docs/src/pages/index.module.css b/docs/src/pages/index.module.css new file mode 100644 index 000000000..1ae520028 --- /dev/null +++ b/docs/src/pages/index.module.css @@ -0,0 +1,27 @@ +/** + * CSS files with the .module.css suffix will be treated as CSS modules + * and scoped locally. + */ + +.heroBanner { + padding: 4rem 0; + text-align: center; + position: relative; + overflow: hidden; +} + +@media screen and (max-width: 966px) { + .heroBanner { + padding: 2rem; + } +} + +.buttons { + display: flex; + align-items: center; + justify-content: center; +} + +.mb_3{ + margin-bottom: 3rem; +} \ No newline at end of file diff --git a/docs/static/.nojekyll b/docs/static/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/docs/static/CNAME b/docs/static/CNAME new file mode 100644 index 000000000..76e229ea1 --- /dev/null +++ b/docs/static/CNAME @@ -0,0 +1 @@ +docs.blazorbootstrap.com \ No newline at end of file diff --git a/docs/static/img/blazorbootstrap.png b/docs/static/img/blazorbootstrap.png new file mode 100644 index 0000000000000000000000000000000000000000..c8c2b2f9988ded34a1df5cad7fa9c0db0ea730db GIT binary patch literal 10430 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 + + + + + + + + + + + + + + + + + B + + diff --git a/docs/static/img/logo/128X128.png b/docs/static/img/logo/128X128.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc404fcb6a25dcb4468c6ff787089f846b3e862 GIT binary patch literal 7074 zcmV;T8(rjyP)7%-*ey?7=diClRV-bo_gd!B72t_DD5sFZRE-sQH zRq*?zaRcT`KzKb4znnC^??}CSq9WDwyQW)_Vv$CS8#wp+2m@SHt$!Y*yY!R~&f_8s zaPhVNIG_KAjvF}Vst5yI9IZbZS+?eMRisBF3~+G}0j=rtW%_eJq(F7wv(b^d3N2;z zS{Vh+{B;2GbxuL&XWei81x--)GX|F%A`L+LBq9MS1^iVF)XE=@RKxA^pBzv?WqyEE z&t#DQXrv3M9Ps~uYzfls>Zt=kcn$UYT{!n7jT+ioH9ogLuib#k^05^c|zVSMMn}@?RU9CHiHsll}eQzIlFYl0qdD`Kp$3+;x zF6iAhL)(@~^gfP!fI&ZRM4vhUpX~XsAdPV0XS9VLP&L8;7APZSOEY9c0Qx^#!Pw!pu25t(s6!Mjs9Lp;$UX-=R;gaOO|Pu^AsL%Dbyc0aLrIB?F9VRYKK$t+&NVtR?bh0Ocy=jU-9F40&DrUjwO%x8+GP!+Ax) zrd%q^>AXj2ol?a$Ny+gJPn5shmaToLWJwzAMw%}U{t_}9PeWPll^4musOqNCVFY?p zWU1=-l!jCdtaYz;fC^g0>d~Z}`H9?@J=u5ZW%#TK_^yX7DVO#tr%7}r0!{!AMk2d3 zf#1qmiLw)gD2U|!2AT!@$n37HzRPYwHWv4HXToM(*(ndyjjjaXY5e&Z(jCn0IdRD@ z=(5dwg`OkLe+*jxd0pW96w+{Vyt#HS2aTblLj*cg#X1xkmK4;NNg@>}TLjZl#s52J zLBe)F(0i|-7JfT)lKW70d~g}o=YFXY7y#fC;5kU~_DYZiK$dMXhD-cqT=t1F*X*ob zt4N9Mg?rKE$vxC@I7bf&eitSM5qKK2PG&yN2e!bM%D5LAecAusbG~_*X0K}dOx9}r z>b;(dk%6Qc8F-&z{^hFgWj@ye?_>J+E5|bKpNach)`h{L9z9U+@32`q8#_ zSw{l+F;!u7kiaKx{yn5WR2~bL6X}9Z`4^Ov{TU7*l+79h7^{lYS{@Yvjo4Ar3+)_t>hB;G?ss# z#+430Coh=~k!DQYU9&hCKXz>V!AsCr_C-HC6#YIFGP!EGo}kyK>-5EvZ$BKM1NiF) z<$bbgpYDH7^3@B>bO3E1U(Rqk`hkfKAh`hkXr?$p*l{i)zqmJPs07gWg_85r6ZbVj zWsCp=Jd8?j9C`-uy|?0=B&76(0RyP^`dq3@8;>7DdJgF&0DrtPMPPc;?&<*b�Kc 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 M07*qoM6N<$f<@(i8UO$Q literal 0 HcmV?d00001 diff --git a/docs/static/img/logo/150X150.png b/docs/static/img/logo/150X150.png new file mode 100644 index 0000000000000000000000000000000000000000..007f6e095892e6090c7f3aa8312dca1bc5f4c84e GIT binary patch literal 7926 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 literal 0 HcmV?d00001 diff --git a/docs/static/img/logo/16X16.png b/docs/static/img/logo/16X16.png new file mode 100644 index 0000000000000000000000000000000000000000..975865786b1cbe5e30dcbfd87e5588b2a3f2f8eb GIT binary patch literal 673 zcmV;S0$%-zP){ilWvQR47z1eqgnF(38}I6sbJ~0@WU*p%-fe^&)~Gir^PktWc~~p;WZA8tAPa zT0zi*hk^k&iP`RE{J&(?SQHflzr5MqnRzq+H;?E)fBY}bCwD)Oo*iz^7`vzK(JEqX zm%k0}j!iU>O3K)$_Kif9_&$*y`Kf|^r`5G1vwnrv`1i`IXZi579 zW+|qXG(*b0B*i+sn<{UkHM~GM8^KYmH^5=A0?fc;DH|s)5*6hc3mru8Fy5>Q5|vS! zG8MFgN$?I_H>he0zP3QLIw)NY!Mae%>GIB6Dcc>Bz?44#j)IqP_|$bRGP*ypXcWOo zFo81SsgbP%3l7E{=M|H{0<&Nv7)RZvXNoMwCx+6bKH9OmcT6sa{r+43sN?vV2YWL% z>>Pk2y#U9sWAE&1e`QH!m754itI|gi&&T)LVE0S?gM03l^n{3=SUbQj@CLkP%k9Gq zu!Nl?+h4}mcBjd5Pax@Pkmw)Ue);<;fLkCLoPrVW9;$d)G3*=gKL=w7$J&N!<|>7d zi_;M!Ml48j2#$?N(pXLgls02vYLWCQh?NHISC@xIRFQFXnf`gHD)91$4IlsGPUj-Nd8dJqkXi!FT00000NkvXX Hu0mjfsn0M; literal 0 HcmV?d00001 diff --git a/docs/static/img/logo/180X180.png b/docs/static/img/logo/180X180.png new file mode 100644 index 0000000000000000000000000000000000000000..7a54949c732e318672eb41905a0a5299165a4476 GIT binary patch literal 9809 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

    pBJvlzs#?2NcFc#r+} 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 Fe*j6Hy8QqE literal 0 HcmV?d00001 diff --git a/docs/static/img/logo/310X310.png b/docs/static/img/logo/310X310.png new file mode 100644 index 0000000000000000000000000000000000000000..af0f803c13ee2c2e3d8102f52d0dc52741c9c86d GIT binary patch literal 17267 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 literal 0 HcmV?d00001 diff --git a/docs/static/img/logo/32X32.png b/docs/static/img/logo/32X32.png new file mode 100644 index 0000000000000000000000000000000000000000..86ecffdc832d0c831669d2e95ce73cd7de9e9038 GIT binary patch literal 1513 zcmVJPpX*HRF-VxYG5p=cn;plJftBB1za zw!Ul)49ZAI2Hf|ae&@XBz4ztb%ST(Te|)!x=Q+=L@B93okMo=dLT*3*!;|x5?Qzgb zE-Sanh%Nr|9NXicKI~z9`}q}Msf4hMTLxf%Tx&QX^b^oxqdt3E{TxQq?9FqL&IR5g_>vk@r>oelu}0kG1>2= zrg1{eAk#PnUqlo&5R^!m`V?FWls{>38sFNukPycOSd0{gU9N{u8-Wb#=w`58phTed zrHY*p(*z7p=l}$VaY2--E}5{kc()&3W&-$2L~;0V&nfp_5C_5znx`=QAXpjbA-Am& z&=`KaQ1gO$N6yFqQCJ>ch{i(Em0li2@nSp)tXUc#233d%FzQ>gjN3>CnUOl$kLFJE&XOzmdx_7*3P=`@#0|B0~)<<@rZ$ZzBH&*41+Vi!nhjQe&T*#FC z0z$4?^ShN?qIXe_+R}L?2-I67$1T01fFuK<7wG_xclzU-9M4FvG*Q) zs2Ab`@TeI4dGI3WQnYiMg!({S*5i$fok#{@Aw2!iEi9klPI>!rOytChzEX!Fs9eg!d`{g+N{>b+3za zPsoDpHXrgso1NU{r;y}>^LY-#yia7o@I!hWM8t|D!s9V5$63@+iZLAIbU< z&yv+*4+4>sufL5uVSk3ioQI|&N$ z(eoQPInOLe3O79S?_6i+ok{%L8-V*H|IVOW1v=`=BO}-QRbug@`tk_&1`UPPEd|pQ z`F}I7I-zD#FP4QSZYIeu8TMZW^?^n&l#YuO1cjN&(KKOmu(&0RyT$MK_W`DfdnbRl zb+YHe`{Vg%-jkN7Z|O3ut%2`A2)EJCAx19+Pbt2b{bI;|f5Oi_WIa0B*2l zUa8kA{|dCNpze_bEepy%OCL#UGx0jtL}MAfVCyc1s6 z;=OZ)jcdgiW=psffORr%zsmfYn4uW~ND%2@N92;s|8c<*?7{)CyK7^vY zh9aDF;B9fOxECB*AS);dQ5c+61Pmaak>l8WsXB!ZT|@+$F%f-hd>6xr8G8{ZzA#k# zGJuOiM3$f)a-lzjG^jJ(iFAsYFcj=9P@J;}d9f+Z0#rdJF&pqfRXc8f0l>R>w*VK? zwb@SFGfl;ON=nCvHz5MyavCxYBR>N`D~vY4>(hlzk;AwD@%*>XKLQK@{7FKZq<*~@ P00000NkvXXu0mjfeXZ0W literal 0 HcmV?d00001 diff --git a/docs/static/img/logo/48X48.png b/docs/static/img/logo/48X48.png new file mode 100644 index 0000000000000000000000000000000000000000..6b72cc6a62ee7a3ca5a3e710ec35abd98888c157 GIT binary patch literal 2493 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 literal 0 HcmV?d00001 diff --git a/docs/static/img/logo/96X96.png b/docs/static/img/logo/96X96.png new file mode 100644 index 0000000000000000000000000000000000000000..d78b76e8e7d69bf52a5e59ad4dfa4ffcee1abfda GIT binary patch literal 5130 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 sDE1 \ No newline at end of file diff --git a/docs/static/img/logo/logo-white.svg b/docs/static/img/logo/logo-white.svg new file mode 100644 index 000000000..629cd3367 --- /dev/null +++ b/docs/static/img/logo/logo-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/static/img/tutorial/docsVersionDropdown.png b/docs/static/img/tutorial/docsVersionDropdown.png new file mode 100644 index 0000000000000000000000000000000000000000..ff1cbe68893d205dc0a6821bfa74d8e7d25c09cf GIT binary patch literal 25102 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 Js!v|N^*`%a2QvTw literal 0 HcmV?d00001 diff --git a/docs/static/img/tutorial/localeDropdown.png b/docs/static/img/tutorial/localeDropdown.png new file mode 100644 index 0000000000000000000000000000000000000000..d7163f96752499e2e39e771d4d5e9e42c68677aa GIT binary patch literal 30020 zcmZU)2RIyEA2%#)^k5Ms2v(OM+Ul!qh+Y!}A<;$ey_eN{i|CyoL>IjiMDNji@11Yt zzTfA0zW3ehnw^<5r_H~g-}z6FqP*l2%x9QLNJvkl-oTZSkRD|MhdMecPy$B2zyoe1 zOvJ?%rNqUl6m2XGP0S3CkQk%%banBiUNUxn{HUwj-T#6K)5cL5fe2OB_3Ul_Mb+Kh zlisHLB~eRjfdp>>MYRabl9w%GJTDKa2R0Af7vTL z$f#rm3Q#WeG5S!R8txP29Yu|T!uX52Pb^P3+sGmv>7cF{8Q{UdYprx|7i@ z&CLm+cq+;5%~aj}%~rgHRAr3dJ)};{mmMaZ5_r&a2UOH?llyy593x%b34PrQ*W3I1 z`I-Cs`}$CC?@J<-Hg8KLmKPreifM*R0m23ws7o2j$ssWV*XT%~N6(NR16PlL1NMmQ zKi3kE7?Du^mLnq}1)3m%{;eYqoF9IX!12)LpEF8y01_H-hYuW1>B#@5_M^;nl>c0- z1J95|Rm7#FfU}C8je&uMt+AyYs8uikD8R6KqhX7LL`3&+Jd#qTJplS2H&Io$QnjKhlZuK;&_>^oUl}g(Z*$;I2x4q!XT{IP=IH3i>d47zX=B93 z&d0~c_KJgzgM$UA!D8!dVfWFA#ln{6pHBWyKX3zEJsT4%I}=L_s)v3*ezLT;6M{e< z2KvwMpLrTMnf!Mo3)_ER3wS}chbL_8tgqPq(>Ksm@S&7n(ZtEXOapFW4$ur31IEe4 zCHS}g|MTR(BmPfI_5ZfyV(0zemjCnQ|8Du#*1$&G(i|Al4)$Mm{oD9|AO71=knQ2k z|A!L)koj*ZKxY`HAlrX<2E(lH(l-X!NNxgGPzBC_kp2CA1O6F-FHT@J#m~hPaXIriw)dxA((POJ2<`2UaZkytp?5dw z_;2t*phu!2czB>-KM{XCrKrdR!^i&=AcOo6Djy|uvLJ7C5Hm9~L6SUGy!%Z@O98 zDT1g-1q@GtoX-Ylo5hITyV#Rs9;1NwFCKmmA=OuM~C1eGvBgBpD5xn+JpQerOz?rxWE{X z;`WFoUFgwAfw@OY@At;hK9v0-e(gewJ_>y(TMv%M24h^t4kU=VK+t2!kj11s8kQc@ zL8ud!K4_U}17sPN6nRsGl*nA(eSMBlMvuDdrp=^!Aj%lR3s2SNJHb5A0WF%gAV9Tr z2O6qu!u_jGdI)v86H-VeP%)MbS?rC+1dIrbfpO{0{0^Wc6*?ZWn1r97&^b_#S^$v= ze&9i~zgJ`w76lR;1RvkVm+}2yrexybag@^#O2Ng%91h?#540B{2l<8mGUf|<^QIg7 z%bUN`x?F~co=^?S=5N5j1LO- z72#9pT@`e=s(NcSSI4~{^ORA&U`>o8$HgF9$Hz+;c@_FGVZ`b4Q!vKj#eEi$jA(il zl_Cy-gE^&M7(ktrX^yaNUXb?*IKP;{v6wvHc_@>(<~KUcn-yK){ztYrrBRu)aql~2!^-dEmD7(8cr3n`Q$aFW|98uTY56HSLw zE5^`|DQ|x+IPF?@O~M4nZDoJx_K^F~0IK6LeN?=~bJC(=2C#;T4kT@#$ui~v-pQG5 zYKNLH4(;*Lt4JJZ_NvJP$DA|Vqz+eoiOl$}J{L=!5yG6q{-u+p zd^${|K=zG4yjETB<-7Vu^?0%SpNM>t7=8BXlUgfMh_X?9+HYIp3-eMd6N`@ACkGv0 z_I3YEkG=9-HYFJ^ZT@BWt`5c1jOr6!?fu$WxSd- z=llJSVeZt+we?qbH=pxvIqaEKagoRPl!)qz#kv$+UI!1AzJxH-iV|`_ku5?Z_OHM4 zF9v=4Jgg4xn#q#y2W9~1%ItlAULDC*^3}nz*iCzm(qt*{>d8hlK(4m$&wB{W5K%=cOCB{yW62-D~R+yNc zO813-XbR!X)}D$8-2Y3yH1%H2$b5j&nru()^JNDCWK^hS8V$oE{7K=aJM^nUf#kdX znHHQa3!~&t7Ua`NHH#-Uv^m#--?`L@vt!Ko-VyZ<~gIP4I7LFWEnTmrF9U0RSuN!QI zUuvGay2&)_+zIKC-ag#|Ch91CQM;er34Drhtij$6)U##79QX7SsH%}r-QUEOYPG1bdW zC{E0$QK#3Ot1CAHi(grfeKLNZ_uOovf}5+N;`2@@{wGf&3w4y^iBj*Yr}nyDTduPt zB(5pX&h1YBOc*{b^*o0D&X#xAj0sx(Ty5b~P?YfacBd$nfqv6ysq=G^UIs&3#Zul= zG&Y?tWkrc>%45%z z8&mq5V^e|4FDzsqcho4GX-{FJ=W)r@B~zCoBvVzIofa={kQ{#{VGpt-mQ)p&`mvY} z=Z=<(5^NNtCZyEQDUxKzW6NzO;--4>&9h;tqB-oMdG7uo*425Qc+4lOQ%eGUyNBA& zb{<|_-<)$Rp`Y56w3K1C*=cW;ur(4g?}1UInxsteT0;A2#_sQO@dF#{?W;3`p0~+k zlScAhxCsNk`-D-q>340a8F!ycQ}0hL#~$5P+&-5me~mo5eJW6(!P~U|q2-*3CjX^d zlQV%9_p$qh{#5mMr`_H{=%~5?)Z#JCv?a=VQ9^nYT!!zd%aYXR9sdoZXY3;gQIZ_e zkWchISW^*`a6)cxi6^ggJcSxr{><7JEg&49_a-)RY{hz!Jpb_ONlEIFA=Un$Z!Cgk z*Gi;hnvbeIg#~#DCs>C zm24y&cWaW&<9O3n!>=>tS-v{Yjtw4m<NWHis@E7Wh3crdnK)+L0xp`Lq!s4mh1{oN^6yzAhb?&Koi49N)JKBF52M%owi%T<3auesYeYCeO<+DpWS1km0&&!E1_UYr5UaRNA&ZFF%+sVZZmp z(oKLS|J-~GW3OoTo0p6OTS1WL&S>PyZ={61yUMf3D_4(YvCI;xM@D6@BC**hDwU3Nyn>Sqiv+8mi6n@W5V9uX^tH|qyHImkvH84 zlU-~kV95N#!ryvh|H7wuqxczAsf@oBv+~z@*n6V(DyGGio3y!bRq&4y@>8@9Yl7$f z<;A7(rw(Rwq|-d6m_J6#sTt&MmKUm80>y+Y2_-N}`$bJhFe?M~_NTMM>QGE^pNyvT zsF{8~O9*u$D@r?avc5Rf=(AUXSC}ok@b26Oa`ZKxjz%wgYz>e&YO&5&JcqrnLdwmD zZtUTAUFScutj!gZGo}|DF@BLoa(QudnEf=cD^!zJmGUP7LBCp)BEQu&BlXOet#4Dt zO3P7Ve{O+zW~V**SM1?l5aKaIO)|5T!Gv1d?#x%jZw!W?x1-U|6y`?ze!v{HXVLon zsUV>nZAVOnMA1D6*}Tv)?wgis?hPDG(7O#F7tbDBY+rLK3~ zOnAxx@5bYLuH1|loRRr)?#imTu5ZDQTZba?Hu!8|#PkUA;z-Nx-ATol`zE|>EXNf0gkE>XDBm|pA9c}#h; zSR6M{do(&zp-#SG;;i}G?D@2to4YxlrWW+2A@e9)Qcs%3W0*whHh(`h?`hx?UC+p# zI4zit+J_cK9_n^`8Gsz>dK>9G_9$DM!;vqcz%eBC?Y^&WIrwoW?@0q1C&6AyTllZp zsYwJvf#{9$iQ3uzRp4Nr52}zbFZfi=^EP6y#yxvIVzhm#;NwUr1#ADU{qTz?f1}ULB2yW-ba6=~1nAIi_mPnF&;w-yTR#MDeqJ{t;AUue)~h0^*lr7F;ztoql*6(MgDw&IGgd=wOr!6ocJ&X|n;aGcq0c&7tJ2_XI;4Q^3yQ>5*f-LbV37(sDuy=$<=S(@^fa&P`Xg#Fd zczL1sKNuR(DOsL4RzESXmOD`6I&b5M!ibl1d}&mG!Ycd@P3x13*`VH!RGO5N!x11} z123?%)zDy%td7k0%o=F(Tu@EQ%z0BB44`~>yFG8o4d9VX#h<+NAoM}(J$I;h&)N&S z>#7#k53Fz9OBBG^yRI`m?nJx3^BEN#2twcgWTE89US$_rhn4i!nYdgsaCZUq6fbSq zBn^felhBV_$TE7Iqc*B7PmRBauay)3%#(XFXQA#B*+o}-!;Zl!BgDmi)9hlTJ%MxX zb7562DuQ*t&RY>NKjpR63-;P!?`!esOSF)6zI^~;jney9nrHzTf>)|I3lK^=+r<~3Pc&U@LBuM6MXF55%4$tGa)cZXQf z+2(tc)n5%=AAv7r4_p|Qui7i~&X%qYpP&+E9oa|8j;T61uk>i_-~OHpy-Q%f!f#m+ zUP&|OR1}iIOjxmMbvBGhGh70(Gxx}+eUo!vC~ue=)*96xxOL*g0Lv+op|E~AF*U3W z?fMaSTGm0G8AAw`E2V`94qXL!3lDJlUKA@j#wMOA4Hn&Hq*l_&IS$^ETf7^r^2ne4 zjrWv+75q_MsHPFh&r*P&lhnP;pHu1!BwB&Y4G^Q{T7g;r-;xlHb<)5$D3?)SdIU(XW)@B7$ zw6K-FgwZ!^F*?6J;p14raA=KYc>Gwt4wv)u?D#eM!kC)P()*dfMbW}VS8*q`vL*{a&KNZKd7p=GSRwzn7IZ&$T(8()m-%#oU9rB+tFlacG+hI$d1em?#jV$=q*uYO&i z2ye$IZmKJy$aAQtlOk4d#rp7WMFb<^@~R*VS$hnpmFUT{LKXH_>p9+KA$9HA0?{Tz zB}X_RnQeu;-jtS;cEin$zY7}kY)#bd;5T2Fz>Rm6eltnttc&b!eNx?wl=w%x#MLsN z%a_;-zAEg{Hd?zaP3E$va_K34%NOh+kz>~bgXP+DMe1ILvs`roY_@BPGQH-aSoD>7 zPn@q3Z5|Xqq8QO<%d=}I(iwY?A{osuka_h8yN`lO=~nB#rZ=rM;Ho?;4*DS@cvQOMm5Q4 z9-$Sxa%H?5(Sz{@QX3)Fxt6;Ry8)ajW>$;qr7g*(WIVZUi2U+R*#HLqpCx~q>U2`D z*=2SKv;72)zq4J^-)V;hzn!Bc9HSh~<4yt$q6OvBWLH_g5%z`*lST3hF^@tKg(YN| z!A&#JefPI;IE&@rTHZc>o1>pR&rcfo-3^3NT+JqUle;h5=euYVHke`g->SNwNb3vSD`!>nC5_Arhy7V}?(F{~^nt3h1TbKP^@iRm99O#w}E zIP{4LzHMV*R`kovhgJ`c_{hsxL2(9>D3 zVFQ6%5{c@4skhDN>a1^N-d3E%E2$D4l&-xPdoP^wOT@k1cG{viv`E3&1zWSBF37mt z#mST3HE$itExM=AD}#fJCA8EK_*7I)2!#o-584gn@^3w{6{ic#)oR{07@NA7uhE}+ z^v`h$41?<}(MgzNXaG#`f~( zz~vCVwT{{__+yy^A*c#T@Li)}9TWXHfUTM9LA}8FE8d*$JI_<>~zgoj; zlZ8qR!S*yYTI+}6y2xpPQVU2c+U|9uv*jAA*7C&{xYR_Sc;l(h2_ZwMO_mHy<#{Sh z5)NCB)%NlBzQf(0^}r?kX)|cuiaj0~AWDqWHK?mauaw2&`9AKPb>N#v$CK z($yWvv3J@8f?s-ETi5tMvu_+UkZ3CQ;4M8Wz3x2SZre6<4zFHRkr=+(42&@HK(M7@ zco7V3ShzQMv@7h>u=Z=WD$KuQi=U2P`+e?a&)@87$`pd1S__3YP}R%D5FPltRIzKP z)Op1i6Q3sBAlrA6<(yX%zmMqLor%k{jOa9Y-Gz&n>N8V4CZLgMH8FcC@UB79uiV+R z?-Yai4{BA%vxG?pCn1Z~6iMP*Y9LYeiIIkgQR^c>-)GFJ*?N@B68?-=N{3iccrxm57`XY@W0G(PmJ$Ts24Pp;9Zr z8iqkrDgPdMb)<{7u@Tl$PLt?1!{913IH42KwQbTqK%MysFT^sL%PB^vQSnM^wM@uZ za?n5vmVd2z0NGOI@XdC7<-}l@!SC#>vFczxd)CiTE{l@t?>>rhRvA3`>b2ZjRit&$ zhQR69joBc!$7s>hpZ1EXl$M9MCJIxGV=<-RlbuGvNcZV~0)zS8>*J=qp$>Vsx{|x? zwkP)~E>m`4{BEQ1cdv9Uojfmp{u(avxV17Fcnx=wbpGLzYJbm@W{BfoS?Mp#XPv`e z`_(~xddJj9Fifi3=&RIp(Dt(4zMk*0)C{Y(eib;Dv1Tq3D<=NBog~1$P z&{2bwTo$QddaY5L~x-%ztA(4cSeFOtOP$v}Da+4BmbVO7v5D^F`a`|O;81ebp50yU0LhK?+|)^_Nk2h@AU(y z_9Cu|j)E+l1d9Ns_VcU==}_@6Q)q_HfNX=7C3~A zA-o}?I3mna*j;akhpt5E^71Tj<~sg(Q{^|CTST{G`DvLVbB*CJQ zfV#C2`YGkq_CPmtzK*X&cUyZU9_n(+i+Ig+qqE+2M zM=7DQG;i=Z!y_Wh3#RboVYd*?REE=KcG*?8B?)}6TzPJQ5>bxANGA``^v9!3O=FXL zS(*SL7aO^Pvlo|$8$oOF?!@Z7J`P~4x*JN zuO@Ro#z0@zq?_-z@tsO&vv`h5%KJM(vW3H97AWx14Y`x&ZAOCz*n??4b#bof%7wg^0{zbdA^3 zS}$F|r-)S2ENA>oRLTFD@;-A{Pzp6<0<<;!QSxYLeYsB*5gaobf33tPuen0w%#R+L za!LJCv7Ug(Vh%fH%vz>lOh8l8Zck58P9TMdPFfkXBn!`lE?rztOH9?Cuu_}}Q@X<% z$?NlZ|Curm^LZErUexDLa)oU;M7=!BP_(WwG>g21n5#`|S%9g~N(K&5Dh%Ytm^b#F zXS*t~+OR9J%Qb=o9pC@yBS^c6uo*fxquS7wyGAT(6p}2 zDO<%WPx@0%$saOBMHH^MaFuZM3t2*wh3Etx}nt5E0a;Qb+j-p;{;1`vht2u2KwrWzRRoa!)#XcQ4q+D{@DcY($)2( zM3 z`D(3#nMK;WTJ_!BG0z~CXXtP_RR1l5VF&k{qe|<`89ON7lF`W23Tv91-9|{yn1ylF zby7P6k8~9+vta;2D<(ybSS?&zW+X7cG(^fpt$sG37k1b^9+&sDYb;;`*iV(9GF3j@ zRrt#LAZ)A+az-)BB<6KBN3><=dYYQqjvZ@Imnnvlz2!p54lG1B_s1`G^rZH!xgjsQ zoSbwMd?mGlRGJOy|7Jeus+N%H05Sy z)83NJ*^~Lo_HuGMBQaL8gG!)xc{(PIB_dd@>|-11atYrIZ9+V`069;5AA@wDi)7#gyyTVrW_RFO*Wk$M)Ua;_ev<#7S`Q>hQRJPve z!dGZc12Fs7rygs?s;VqIn2Qcs1t*=_yzJQ+^@|SJ+pe0voUnY)$&O~~G}z^Z1i&9D zJ7}76%yMPbX^h^ZIOr}g<7f~1O zdE859O#b&yf0y2D1x zbq)y3RJAl+A;chA^cs51n1<4q7PE}539ym@LrTfiQgd?8R>2^JShmg6+3|Rbb(QK4 zOhh*n{AJ~``+F9>XY#D!=O2zeN`XC3IV%o+P-~`Mx38UbFi*sK5MiY$n@pTVRHj(;}N|Y_rK58yFYFq0w&j+AHH?vxn_&9`Y z%-d;>oo`IJauz=-r?SXn`UWK_K?OI6;12WUSgfZ!@|5jWZs6~7c$W}-28-BY8A>&y z9}zS>Q@JeSH*)OSM~oC(>{Ckt(>sH_Ra2?8+$!IKPq!!5&E}zU!I!;TqXj6ZTVq&v zUFEcYvm~TRy^A%gTi5!NeecW6zKXnHwh4%=qJZiKZ$?XQx}6xe#T4VtcIKG{$B4r( z@x%W_)!A>0`Jz4%>6Vm~*m_8BQNa^|DDP__ueor@e`6vbtTHj}qKg>5+!zXoE_NU8 z>N!={fXC8feEilKMuvhP_0PbjD9C_kMy?EwJr1mdl`W}{#7}*qkIKTOSD_RSyW}is z;FD%tE#rX4#`?*6Okzhz&OWYX_1yq+3exEzUXHJ~$BQ`~QWQ#z(%0|qO;)YINbG64YhnqI$#^V4 zH)+u(KH~;T_Mvg@onvS!vgLVNmN6?;f+Y>yIDf#_Vxr;=7SWr~@|Q-w>MIX2kPKev zv*nU^_ZiJTF-!Cw2BeHw|euhhN_V`ZN+nUtGV6Zo@>;vA=JBj-mddgL&RkNogxBZ zHS4ClW}vNxr~@p=!+4b91={j1sWYFf$ke8!;9rejp_d+WZ22MZ9zSqeF&y0r(t3Ct zl$5Z%VW+7wM>{ejP9|%;%9=)%e)ch>G>NoG1D+j&1vHXavVU1^HZ?ryh5k2TDt{OK zn^rBy=gbKPgAeNl?R2{jgRTMALUAw#hEo#4tQmwLc!IiUucCoq#55hk0uryxUjw`% zNDDPLNJuF;F1Vgf+))e&I_Hk{OM~)NXV{Qy9%TrM!|83PX_CYH{1NCZJr7A?vv^dH zR_kMosdo-jn{~AIF%ka^q!1Jlr{Cx-0{^P`J8HstDu)1amBa7sTPbhA@p| z8}by3&xKu4Q)WuxQu{`X+@76ft6&>McY;$5MZ9LEX~(j(29R$A@-7$E?FfFVK>$sQ zG&cY-6v&@*k1cnbRRKofq`fO^TkABK`}4SZwdJ~TAK3E==^KQ7yR!wQGLk$OnuS`82(hlrV7_?f?`-$B>eE1F5( zf+op4&k+}*YY?W5=zU>0n3_^c15p;ut6BZf;PSeX&gHL}Hl;)6G#dC78luo?-AB^C zmbEQwAG;aUMUx^GP*-CU+-0kYZIPAmVr?*u5>H8MX=vB=WFw<1zV5F9GVpHxrtzbk z-Wo=_t|D<@c1N#U%d+Wi;G(&rP|Jj~>9qGbVfBa8;U@;LwO)$bo4_Mh?K;J`5ATQv z>c#Yaj76l5(FSF=^7H;}jYS+882l&*o2cEVOiU{9^gY>K0UCTXm8QpRRw zrc6)rxmxc(Cgllo2oVcrXD`EIMK8%Dk<3KWmbE@qGlAS*@UYRQ7O)D>%ioqomeYO` zWnfkrFmS2Wu6JOJrv00+H%0y3Zgcoo;w9XSIaz;0m zUxAQv(3ABl$r}KIAoZ^xY=k2enpJbj*`Do=F;)>sU~qVf!f0-})Y@|1%!d7QwTX`uF%|@pM4<2OR1|}9=GH=NMswgxyzm}W z1M``xRqLFW|B#XDV9s&gfZiGQsEetqj84}aMlaM`)6m~(xL(fiZ_BP}ZX*aaHa)zZ z`mf^x%;i^v)s7o}F2^d=z0qcFKF{L8%>J2IR6gAtj*5$r>x7zKSB1E}Lf>2sM^MFS zJ&4PbN3;-Gu1nJ_kOv^q~xdD0Gh#*B=WJo30kn_YbMMPUSSWX$_0jl|r z9e7Sa>Bz|LiRuX0HBsAWmA&XVWU%>k1!*|nnfmb?mf@^$eoT46MW>J|rzLY2Gc?UA zGw(Y4t>&*&^ZNYd`aQ}dg8FKcS8d}WXX_z%p!Kir?>X-&jA#$e$;kvc zS5TTra?rdiv}aU4zh`{23YyGV%Yt)x`1L%j&v{B3PJbjS8NKbygf|34U>QcGf85-n zR(}lg6WkrGhd_1G7 z@HTo@aUmaEzW=_Z)bezU2U@EQ(hCJFD2mF$s@LNtDXJ$c4sVJ4B+p3_0)|EWS_DM7T30o{o@ zodC=~1d?^eCq1{0dvI>w^ph)#%^O%As+IuQIQ-IoA(!{E|*V*Z>8pNQ2sii6{=ToOy-j@i|NZUx- zO)g3{x4sVXWfwdijrneI%U^S~^?9K!0_NjFUqNo6_PmH|a^Ul!c#q~1Uc#N8$_?H^dN#9MDa>zvi z4N~GLQBZcc+yFFn$sLPsF;8yq=P0wCuG$9= zu)Of{%S7(a?-VD5<%L!WFRq^^Y=4^k{t<=T;UenQ&5QHh^8j*#H* z^UV>o53crZ@x}6(T6}Kpj2F4(3Z;!l94Ff|JXxLE_C~4pP}z$G-%wdLyWQc(7PYJN zBtQFDHJJab30O8gMx(SLd3js1mB7$b1Nc>|nI=o`+w=Jdcr+HWL6}z%0uS#?JCg!r z8P;epHvrhVvL40opokZ-iNaYsKqe77T5@`M>VyPjI@i_Fp5Z$v0EYro92Gafpf8~% zgsl;Dk<;dh#cH& z4fMt8l)NjuFMq)PuRT`p)IT1w&vhXu1+4O}KmM^%tTql9+@j0Nyj?4$77VxBoh-`m z@I^J$k5%ojwrXEo)W#q^6o7m++izI6nEX5_^ybMH4*r?2F7~fvVd2P>v*Wau)dcM? zL&7HqG*&J9tiMJ}oA%yc^bAQFY^m2AoO}AAJ$HLWBNKwCGW&y!g0_qOVyvW2BJ5d9 zyMpk53#b^C`5w z+Ut_ge#-#?%IEGohv^=}K@83JH#8M}B>Bkrof(qk7-{Zj8dUNj2rCS0wo0==3WM6H1d-zI-?@#e-j!Ue)Z@zI3`i0ypyX@<(+Pw$)hb{o$x5Yf27LaD50xv{Lw!F$qYW>#X*{vio_< zqCw7m;~oE3JLQ@oT`!jiqn|GEaFaC3eKZ{pKB4@(^{7DIL7~FE+-_7`c|#L0xRc_0 zTk}FVdLJ5v6P4CQJyyEo{%+Z`Bwq0CdEDXeYRfe8G}pZb+&jCWG?ZHTR=!RM;Lbsh zAP{m^!1(VKaZXt$S!z_vJVZC4_+e37Rf4^&Aqd_wMUBBSYVCki9HtaULo!5!);xEh zz>t-5f7}5ny24GkajWaT7~oWE`58S6_w)}$Vf0_WSr2yt!5aO>T%NGm^iPZ})lqM@ zJoiU(U$`*ruDV?Jn{XxXX$8X>H^v`U9=VsrRUykZ~{&62{uo_Cc$44KbhhPU!tT$~5 zWgeFPL{9U#VUkV0GdNIYIsG(aUhU67=_xzc^RD5Z4i4V{J|$@v_aXqh47V4pTiegV z=F9gifdx_q3;i=abxu!-DJO80JpUwN4Qlr!-gF^Ri zx@zbUOjniDpnc*w?mdf|-KrVg-8y^krKP4D(gFVC(9kG6B~(l%bmTGs7ixtQl%&?% z>GzpC@ktMwpO$}EFSDZjuF}s|FX9^um&5ZZe_@GHG zaM0Ka>r^iShAe>ljF9<-@Fj{T;afDY5*lm$4Q8dCqo!iV2-u=&cRm}LIun~v84vV{ zT9*cbEf(_~=m_3Z^XKijz0?*xWvo)BwbERy=lDk-)xW0p*9wA+HX~e zcy%q2J1vl03`Lv)_B_6Y%yFPfIq%Vt zGp=e*%KH|pX7t8TO0KN;?WmGy;zj+Nm37GDiHy7rVf(F7UCBShIN*BVk>lo)nBH-|LA7thkn`AjAU}v^CH#;xY<=Ft=xtgeBATA{iuCSA*XdTRP zPw+zG_M4N!sS0?m-tom7GJMqs!vn1ECV#`t`{bZNkaW(n?eLG+&9wHfoE?1Qt_6Yk zwC3iA*5WCl-w`Ol3Ox4Lm(qvD z!6pmg0l`85`ruy z9C9eoc951k=ROKbbgwe-KdkUr9uTgf?B{XyW`CXCwn2luyEq?x!}EU^u&cQa9Q?#! z@MSuCoOvxCSoGQ2h00=rmJ6S(qA>h?w|c&n==69l@e9w0B)uHFK&f^K-zujKLPUyioV>a4g1i^Prs$2 z-dCJ#)(w@GbZ{Y~#l2bn+fX?PK$LKbVjlpnuXx|V;7=k1R;m`|VgGHY2{dGgi=kX| zA=9X%eNa*F{Fm_dkN>RG36S{#kkVx7v|kRU#6c-k-NNxOR!GUrPUcE>mzE``j3gZH z=OfL0y|zIE_hWqca@E@g?u9__k|!v!+&g05tO-ph5Q_b{WdC8@9%f(BlHG-o>ChRs{9Ahar(_JH*9SSk~(Ma=?>U-O4_c~Vq++H0H?zM3^wM^D%pk| zB(pyK2^q8*1y>MBJP^m9!eNpcA<3`83IGfV56C!xHUqZkFe6C&pXjH)w{8G%gFmJ+ zwG_Ap$ZLUQJ--e36uVw$bNH4Y62YU7BC%ND&EL`wAD053O7g<}5`X)d{i9!warP+% z&m|3iysk|({>f*Pf*3E=p`674V}LIK>+U@uKtm0ocwg{QCZi(36DwAy1?{I5ZBxq4|g;QB%QH7wtP5g3uj3sYn-( z$m!+b>XIBBLY(*zF}nx&U4##^@R#=s`LhOn_CICWYkvWL2vGf`exg;ECHK`j%-eAE zAhd*4L?{4x)NKyDK_J?g{{?{o-CoWMn&5G~w4z{BF=HL+b4j^=SX>R8n{hl~W=Wqi zVN?)#sA{J`78<1+-a!&rA-gLLx16SvuZ{*V1Cq>o;f@kDvVr<=8_aNfH^Ykk#_Q-e z|3MM6;eJ#@EB~^qi-SJ6Gyx?i_q?*~GFofUnX+c!4g9NFeyF1auFy&3Y0}VSnVz#2 z6TmM3uZE(x(?LK1^sD)^`egsSkVEVHn>wZd7NVY0t$mcudrBmv`};N3;CUn@PUMF# zz<1p-Dhwp;wQns>X-}ytY3sNhWQre2QQ`SYq5HBw+A%;4Yzf~rU?aet!~lhU6eaJ5 zy!1=)!_yNeqaZLNV3T=|O7;~LDTnh z=g$A!-xG$o%BTDoEGTsMoET~VUfb|&XX-fH9JQaJr~2~*tL>cqL=uf;IG0noxW|S# z<+DjuCDhnQ2D(h_2i-IgTzx4?Nf^?+dL&1I-)Fn*nTR~N_Fintuz$~}t<~J#7z#|5 zVuGutM>?zzq^wMS^$=`7V-dRfyeTMLEI5V`ltw(0(Fe zIN{ZQI_P7CGYZylWPaib7qdHBk+R*HEL*$(ZSrf#pzt-RB5JI6Jn&_FUpx!vi+A6Q z?{FJRt46WFPNz>v2WoLuR1uLRY7#uNR=#|07gn6|lxlEB{+cIFCmTwQL}PJ}3`9t~ z4Rrxr#c-_ft(~gK9h(uw85_W&JJT7*%-$pD z)e%;Z&EAda&!xo5BDr63+sNJA=GO16 z&-e5F{qg(#X&&dC*LmGv&(~{b`$dJT0ACZ^jzDA@U)}3}8|9M3BUUHyXUF*F6mZ!$ zk>LUsx2#ZBRAklI?APtR`;d!`7i_&Kb4;v$@69hWwKb@pf4BM@N`XdJ{)}GKZ>3fE z)P6``=Zd%uhlMne6BT%_sYcBL7yz~TC3n+@o}7Q2xvu;P!SJmJSR69ScLBlXtXHC3 z#)-%sQl!ye9u-S~C;I#iR6^+fPV$eN@w|Cyu_x?Mn@gkD)QjIsF#!}S8Zm?22Y$G! z%jw7=tx#9@&%1sCc9wm@{I-~Lm6GL`tgc&-^8ax0DGYM4M@DQb)zuC-gVgf;kZrnI z2Dh}!qgJLb&c*dZb=Zr|0UeQOf6gl=r$Z5~f5as>c>M++p8amtQ8^teRE8E*PKWz% z)jMtz<}_I*wnENTYwP4r5B1motBUvF^ptD^(c4}WpEPre!`)helP2<_w2l?K+yU=I zurM6><#d`8^#Q?Hmb1Hn1mrYLA1Ar5>vFHPC|aRVpjU_L?sWbKw6}z_kO#Eq!|>LN zI>oZR%%QiBU(Wd1g=%;Y23BK_Ga>oJh(}XIQhtAnnSkKAbB5pK``GE(#fG1zP)4nE zF%X+ioFK!GN0RK=x~1k|fH{UoeQT&@@%sZHr|3wS@; zjnFdAZ+a&#-G_n1^zR?a8R}?15{2^mUa%`(?T1tn+|t&~7s8LJ3x{1M@fieItZ8`T zc*Q!S{~Qu74iK(l^KM1=!nxC})F%C~J7e3|LpBHEawJbG70~qS!~{&L#Zw)Phj9K{ zp&jlvWiY*u7JP*2^H_7xq@eN~{y3cg7SVQ2@Vx_RC9RsCDc37IbQjLtrBSG#1naQ;eScvy084 zSEHi=9U`JA`gL9gy*lWe@;O%x)7EWR-XoNfF~g?*e3Bb*cZlqQXMQDmfDaC;S=G?; ze4t>xgnzgT$mtC`yV9E|m+-NSriarO_kIT5GOyqi)(rm0Xu9q(7@MnQKc?Z}b-FW0 z{i%^w;c$vmEk+pZjJKqiNzQG@vzIxS*m$J9?$-KfnY_O_5n<*&@yLu2Bnk;`6sq`Z z7pT9-stVTKkYPe9npAME{{16)-NFIwdAEbK4;tOj+ZW2@V5=Q=F}%3hD>CZ_wcWwv{5P?GwK*X5m7WA z`dd<7#y2$3ZanM~x;paVMHClq3o%4m#*Vseiey&KxRJ6dpOp~4cm9SG7hw=*aclW$do3!ZnU%uOJQNuVU(pUxFRR?!=L= zCSEbVHRd=)CM1v8ke{Bz%K~yiBzmw~tDqKAjB}(vejF%R64ERpqjT!ixeIFw(a`mD z%$Qr~Jh43ZK^OqY6Cb4-l#7)&&uNa0noy9VEI zrH&8Au*loOcQ}t*1TEJuFL(SM-romZTb8ZD?SEaI6jdyR(8WB#xRAYFs@l>4%rRu_ zH6J#te({9%!QZl72z_{KR2(1kTniT0eNDdl>AQC+#)VfDJ()@OP}`U8))+hN;}xDx z9V9O86oe*FVxmSpKELIvwMHGeBdsa#S$0m${WnGw;`CP_Uc-yRT=DA>Na%CbC}3f1 znR#m^`kb(*?-q9hPqX$a41CDIm09rh27#<95m65b z2*S(=*4cBwNxuAqBYA>}+FrY?MqXT${j9w3s`<13(>d@CuUa&qC-IRVmk#RogrPKT;p6P>^AmEFQ#T6QRr(D>-) zb;SA`Ms(d|@bBL_q?jgA&3)YtvxgwIb7DmB%320I2bNQRAOs)brDV!V;wmldDkKxY zgmE`QD(iy1{r%K%B_+j9s7|Jmo@|m|aAw9h0m^slRe z8sG5nqh6DDp)&~z*lSdLTIl8r=M3O6g;)~0tNc+2y~rc?s{4b1f$^HPLaJ-$V!hh1 zOo_F}P3SIxtyIZtWUu!&8Dx$+m`=LZK_-rmjUo1fEnZh;1#Vn8)5hl!ju_9j`%)3o zqd7X3vuj%`@6py!a31>w+N>7PqxV8aFWtRaW{a>YjkL?bX7BazYeQF{(RcS71Hu_xYT3!#Ea57-%!! z<+;-9Tl(||yH8KRzH)k4homw1hpSmqE{1Jq;)F(`cieWR81D&1-9eznR>JC_7yow9 z!FccrFP&xgJkOBZ!nxMr#aAptbun8RYGZ4!ZdUYXaK&nH`v+wKt|FDC^0nd(sZ?;27+xTCcs$v}67n$_xYaeK0xa^3Aw7 z^q}dU(A1yV{O)QGug`X{BK13g@gO@r5cJsP8{$P}oVHJK+l{vu-AdKnJ_HNzDg-=2 zt$b?ST?p$Y4?WubPA@qbm}$Lo!g$wj;O4HF2_nsJcKROuM{Zq&w;ia_gJ3+=6;`lG z-URoHQbwuI3hR7BXi;4-`@ezX7pZoG!=5g=+svFAnuzs8#+U5fz%vWr+63Xx%b07P zX9l{wmnx7jji_0r5Q*(eyMu#{n{atpwSP5*czdqR-}yD4mwJ~?NvXLQ%-o2DsgjLr z+)odqXENcS@2<&wRba+{gEY5oro=Pf1P^0Zu5cuuu{Icr6T|78#bFkHTB3aGbyLj% z#C0h!V8r2IGI!X9*g`DjoYYoDdGe<6d^VDt#)%82*QcPJ_ej+5{;IIDR^%69I``(w>a1w7bYPwXSAdtIEwC8Ds&5taHS?9XGt*}tdw8$A+pIedNjk0(K zKNbdEX}ShP_R!f)=FL6jD(v_G*yc{)fST6VnS{R{B2{PQDmf>THgP+h&I<}vBCgxp z4H60hjFKXzFPwFxM}|G={#yGV`v-?#@0_WLcDa5xK0E{9Z%qMNoOj8=0lZ}V%QmaG ztL$jpZMauRKKY$i73bqq#dqWip^;E}{`k(cy>cDt;8IunLNxK$LHa)6c>0_dKD=1* zyo#WlvK!I)V2fJGE>;_sq^&TYRN-k3^CO+01`C2SL!7r%y>z!b$8-fm4^H7jNFOK~ z@Tfm-o4kXyK(LHhKDXIkt?(J=Q&MJJH9-?TXymPaXstN=>sE2psfc|^>uHFp#dP0r zdg;MB!MI{P=~?VxP#X+RUJ%)puea{l-;~x?*@wDmM~J+A9u5JjD+Ewonf%`Q|J+J6 z>eORXpNRmx!9bxos^LV~X8~kY9eh|zr9R}ZTK@RO%fYY&Qsb|d%!OC&XLcR#*)>J* z)O*s_A{NMhy=Pv0DD=`CBZ_=SxA1w7KlK{yP6^hCI>jON_2;A0V{U9#?`+FLQy9@O|U&89Hq-e!VVW_=}xyr$AtH1h!NY3aMM zt6MFD$qJvvPKtQ^oz)(%^g3Q&6>KN!6A^YKbK(A!!Q!teg#mIEBhH?y$nZRthsl<$ z8*jUq&C-DbKf|#<78k8z_zARc^v@b-*iWG`U5f>}`$TBuap@B%MW8Zs>7GgpO4+E3 z+02A5ESBl*^Br)7)UNDr{k5e(6W(IIL?Y*JN;lY&oinZDa>uP>XOi}+(ZN+n?&D)p zey@>%qII^=#`ph@t^~yC4T$sOuZ>p&fE)OCX8vurH$-tqEOpi6xarM_tAjSukJEfX z$3#;+$E&o4_u-qBTH7`>-Gys&kN&0_bVzKLObh{7%!SSyi$DVNs0Vqr0*)LZ`8WDl z-w8xYAf=hXFocm4{0VysVDck!`n~ckf^rHub$*gZ8@lgsSTd{w8)-uEyeb+fJwQqwYYCPJNkd z|MItksQUPCchl37{r%j({uHhATReW6Pwc-bDYgQ8xdK_$1@#t@MgnBLJ7}y=Y}gc0 zj4gmhI+aZpM4_Za>zkX7VunS(4cpga;6=#!#?sM)D$37i)(ae?$i4R#@nO)bc~?F) z@V^5RdS;^9bIa=7;gh)$*$q|EKd6=svi|mA zaVsOJX<52%^q`}PXqj4(S99fp@?rI8nC@rcz)SdI$$p4DC=EUOs?f6SPRw$m^<sr7c4Y785sR#elK6Go#|kyg{pP`; zc7!tTT-HG_UCI`>1Z9g?`CO;cEN5LbFBK|0Mt}#pN0hAQXO*G_rFHJyY-xFwi~*3! zhR8!)$r8ohE2V>|kjNHS2aUcuj4nQh(ZzJq5S@hxF1R30mpoa=Mt++b<`IwqLxd&)#vyk% zPsa+Q^G*K&v&8caw+}%-qo&`*8bjW;FPi}n=;wW1O#w>oB6?FIzKgf*CM0>O+KJ}t zee1ZRD+s#KS7Hr{9S&zY+3}KFGImPUPJp1sr)@QGxf)~mdDdOX0`}{@(I9{< z0$P~N|J*NmgtURhIoj4094g_b{8f!FybSD%%;4GF73mndcFiq8Tc4N~~eWgAbgK5lHW&vMz@t5c%J& zK0k)bG(W8Ruj(~#mee}_KrpHaUpR9RHu{b}T5}OHV*Kw05~smycbZ>o^jF&jPlUc*V?#8F z)?-D*fJAdm6`2;AIJDf|^cYjacOtie2yb}y#2nDNq5RFIGtS;F{3n^LqwbMXSO0Yu z#&wV8t(u^=NiuWA;5O-r34^j)b!lh3T%@FEIwEI8eomPPJ+A1nElxns10ZgEq2WK> zb$#;u5YaWLacZhDT_{waL}QZN*d|)Zg(|#T@aurdJ&)zm^Na|ch~k4DauTq+R;9!7 zF^;|tAQI>uGdJLv@%>*(7O(mzQzSE?$BRlE60-|9K16-jEgL$t)-vTA|Ku+}*kBlY zJu;4AqqXCL80qT~L2jDdg=vzLAW}MtCS{;j4@mYWz%?ZPa}BZV)xff8rR?2r!ppns zoShrF7!tgacaYjda`-M9M^o=;{PKiOcB;pEGL>S_)ZBdCjmv3*E z^W$TIO#2YhPUUa-#kv1Za{Rg5-0z@M*{3MVdg!@6vRQz)sD$fU8PjTB{%^`TlAzm*yoeTmjqiAF^Y-B)wx*t zs8cTsCM$tf5p~oEap6CmElXMUf|2AVE5_Tb4>6Pfb&<4z|5`xgjPJ^MuJeVB$LwOW zz1!0j)SPk1FT5AU?jI_@tN^n~q_@GDki6Q}wNU(-7YHSMX#s{`1#;WX6$82U*dg?{ zsbVUo-5zvIvG9l<|J~Vm<<1|&epw!e$J^gjZtx;M1|g;>zqD61AbfEU0i3a0l7}?J z4iYONjn*S33IV{oK~zg+Ez*u%#J*uG4z@3@K>8O>4?9r}_kVngIC&D|>gZ0K+gUdk z!UQ_P){~eh!bO!ki^T^fo^4#oKqR)eOPbi^KNB_EYi8^bie;_m=%INU`k=?dx>;TN_VM@k&SQ@-No4B7?w*olhzm;j zEUND2+7uH7ss-i?v_u0TPU)mO8?Sx`vCoY`j~^MAMLs)a(N3c#?IfeS&WFM@02Bn_ zlbUY8Bla5^g>p38$XYdnU-n#8<{Wyi{{WY%5WU4PTRhuYIkT=kAVBO9Qn&E@=#-*( z_6%4>l(<3KC#W~VU)!KKo7JFrOp|WP8T5Q-gaaZ#Ej^MJh1%8InmJ|5#c+@+(tlzv zz>o4U=@Bw>gsQhn4k{AeFdL3ax!XRw4sgR&rU+_hUF8>`%g1XF?4WUqmZE$uaOv~z zH4cw7Xn4^f>=GJ0WLk z{)N9|w=Nr{@YZKtKFOAym0TGyX@waAd`UU4J*x`^RpR+zdLGNmtPjTaVmXc0^uR0A zL!+UrB=iIlPxg)a1hVrS;};2q0ZBy+JHvD@RVFRQ8#2fvrmihmFweH34GGNR?`ttY zwo<7lnC1Etu*ouF@l!H7-(L?Q=!R&EtSc9ke)#`sP9e3n6ipvtrcf3uRDTngFsrs) zKI|BYQ45rV4^JsTIx{mO)7srr+D9pVI^7)`=N7mt&98Q;2p8c`OBS3bSw+n=$qP?(L2D+p95gPSq>)w+Oh7Lpz@}#= zYvwrszKmO{I=B!$@z~L9Zema^?AK*h!DQmd@fv#0uHZ(whjlB@Ou!NITj#N2z#SgC z#1<=ovbxe81Ix-FeLPLxTK#ZGgB8=ehj2yUSc(4uKfUYX6hXbOsB2-UvVEzz$(TYw zsts&lYB7vz#~pWxfaW(7FsZH6oGJ>%oRtrMCZtN9E|Ge20TZ5uzLct=X3RPk(^_U= z*$-Ysu83sjN9NLJNXgfEw6P|#k4@LS-S6YnZz_DTrT@YolqUkGk)C3G@2Oyqo5 zOBtvR@JiL01;gpd)mZ#~Z*cY09Um1t7D0NpZ=3W};7iCCvrMv#*UAc@({U*an(5OP znOA;9g=bMNfsH)z{E+D_hImM9$?+-RQG;*JXntvqY#BAJL2ac-mX@>8PG`~_#5JUJ zylXOX!|7+Mu_K{>sy!b`cRJ?>8)(?r&FX(|F||uJ1+k(PW=t}#D4u3d^#p79fZPGf ziw5)+J@0y}?n*2w(V^tr+u|o?JPn#UTLd;P|0@Mtu6eRqV%0mCBO9vO&sOYNY zEO@d*PBvl~6Z)r;t)y}kZG69)qtwA~={8CqcV30tF#CeDESE-Xq_;UqG=oY5^?vH+ zw{W-i#iHp%#eZQ+C9w1VN)-IItE02?j8?Jz#Sz0Fix-RC;x^12^p#M6hW)S_b}Yuw zo{O|Km959(+T{nYDi)E>90SHi030QY(wgmQL4dz_(W(*J_>V7pubPNQ3#NHVx?8lZXIU8~fsxy@o=2DO_Ya zD;Jr(KCH^ANxvo3iR--SHV9JnN(KAc@c9pr{h}EeglOy zd8Zi~dBOGK-LhYe(;eSpP7h9Kr%;EV-NtAPEW#D8*CCc-r6dFVoGPW5Ql8uxVmEV6 zX}3aWlopsMHlt(Bw9cZQJX!Mf^`LL>(PEV*05VJCY^6%}=7GFCd3^Ix+MMXs+^~ z1bR#14%{b_Ll07P69j$!nepp$A@$EyKC7=lI)iZZ)|xBRjGRj5%S#T*G4MZh>%Rqc zTM?#Hj@5~FYlTCf-txG!UQ)F<(+S+mk;tQ^*jrGUqM%z745S%n^)jg{g9teLzq+8n z|BDENzmX0V*WE42{dyp^aX9Hxoq6-oXVL6TwG*O^+X&#w*9^g*d>7B|_c3E@g0<^fl zTydGSy67dc{9_5hKFLAyV>(*+FiXtWqkCO%0(SIH9ZB(}2x<5>FQo(S0;KsXEn@Lv zkr!g1SZ^vBMDN*U`BQBpW=D6F;1*dcSG~w`~-;Vq^yK)2YN89qiGJnckT#T?` zhV?wlF3eHN?(PnCm`Cimf#3(H_HX*D$&~bpx59*X4C;;0HYsO(f`p)jh$El!86=lFpD_7^6`LL*eKxMH!kR0J zi|pIrwAA1t63H7>-(}GRc`5Y!mzrk>xl2z<7YG&G>p!p;ft_5GXILaMIWpb0W;!X_ z^wTpJ?@FnW6LT_BR*Ivf)D&hcirLq{-EgUxz4FLt%-sDHjm}uG%$!bfhq&WM)32#< ztn@-P;EEEKv8$~=MgTL>A)YoZH~2Cl1VZrH$?}H6i2jM=l7-d1(CPMv?edh82c8t= zP-f^~ELkgag3ExGCcxJewI>0wyPI(Rq=9={^MyV>-C(^w(!DV(J9=JD=gyzu=1WgF zDALpjQHt7D-?e8QEoRY+>z^76={T-e)V!?Aufp{dIfrie(o!;I04+@2MkpbNzdc#v zZ?0EJ*b_JNX`tClhuw)@qX=Dp*1Lqs$9S1Raiw0@NLy$wdf|3>F0Vk0VlsP+Ueuko z?q9qa+WjK}^(*|R_8mq0VfwU0Zoa1Ie>BQn>qIM9@QG^Ca`%LEpULM;BCe#CO6%~< z4)?+al>n!1a@T!q+PL*z?2M01KerGc;3gNdWF!Xzz$k9H-F-%O2oL)3UeM zXACxCsQMZ<=LLVZ6s>D(#ISND|B~fVg?B@d8fJ&-T1q_HSpBk&@sld*cMCByvRrG4 zQXDS)$E6>%KL%t&blgPEHnNNmuws3dJ2oFqZ8rdPwc1p(h2iABmvkr(!!DpeibUih za@DtgIII?9FFkaCG)9Y4@7Hohk<4&c6j_)ZG7bJ@`K}cJ^qGc9;hXtlj|STAH;2h` zOjOIhoLI$+v`g}eiL-dDL2zAs!tW)VZld)>M46l*ToK}O zU1S6dR1Lif_fbqN4^QpP7Y~HpWtER+VQ52E zxYp8lP&5K4Y7WfJhBCnEzIDV|GFnx0n%rwN9_$~35xrxaRK%b>~5jU8U8ha(d06cFp3EYgWznze(WJ)?3UDf+llT;Mr z`-(?wTpeb?%zKteLNLh-Ng$Z6D%n_Q^(iL^HCwyOHWJEJ0MD@BgKz-l7389MvG{{j zp<=9%(5J60ec#H8uPW#ur;W2?CR4+$fb8Q+@l-n17;W(FS3|RJ^Io&X^<{aL%KUGY4)r++= zN-%c^g!Yp0&5QLdM^=cZ8Et|TwPWjhn~jUvXmA1c*p%G`w7%*sDoQ^v#o8c}&+rt`HIEBHi2 zZ~?HgnBcNltifVju97f`EO#4w%Xx3Dm!fnc{l&NHN*{t72yy3aXA%t9e^j2} zLop<;D*xCJC1}xuuB-MZWy+kh3e2=ROQR;T zuyYV?Fjq?e+Tw*DwUyd#urR5DFOF9i65x}jWhsqZYQ9J=*sMH5G}Rv?QF5Z00;a=43Xyv)xU z;bD3xK!$IxTM=5IkvHMs@2(Bh&Ou$-D%!_5@=aqo9nY-ISK%$4H%cgRL2Z=u2pqF) z-)m)#$wC96F0LK}+6;A_SL_(oo%Hj0VX!u}BZge~CwC99?1$zf4vug7sMAx0Dq%(= zD)z4X8t`2H?|@7$zU>#dXoXTt`Vl>Eq;fJdGn3RN95Hz(09~XBl0KK`6EB#NvXdHq zmKo*&CO8HPSBXQ^E}g_hNZ|DyIIRVAr{1<%O^Kfq%P{Y}oe?3|IxZ3IVEgcjv)ajx zLZ}Y#2583o`Ti{bEOn;JgH^Jw07oA6nZECauvxNb2j&`n+C9CqTUh1;=RNOE=5%1a zv68p}DSsfbgL3V3l+j+wd&sZmwbPv&L6YO3bI=mT@@ngUYUdT{2I*%1+ssz8uQtjohP|@|YkCuAvZ=k(R~lB<*X#ohr*c;TTk-;DU+*13B)c#-Nmn`-vn5pfa)N+ATc z-al)7mMPR=YIejA;E+Z+6&nGKWbqpu(RVbMLVd!orjlRT(l>2UBMg|`dCNP%(&p`& zTB;mc0o^oG+uVnu?aj>E(kNts%R1AuIH`dU1TJ!;w;w1w-kg5kb+&xuaKiiX(LY*DfdnNv_I`kY4xviwFS8umerK*wz3{$a#437d}`L z2!>6+BfOoc;9UNdQLkcZ3d(B`5cEe2sfd0bVgz~OX$kpJsEVQ;Q|C8bhVgLgkSqZP zZ2FCAU&k#CGpF$>0C3FkUV3}i2mkR^%vxWkZm>atHR`Rar^I|WwvcjTT<{)WfLm9| z1EN(hDszY-<#ji~aU>6_!(CcO=+(kAt&)51n6H2fI?Ow&;V=l`QP?spRBp2a-2U=1Y~*2_Yjs7}_YCP)VbI7FVcviD=M|g_DDP$9V5+q4%dFmN z3HXfCI$MdwBcjKG1r{OlUWTcXADd?Qq5avV%4j{b;3O=Anree`xtSu*o+5$^Lg_t1 zISk+rq8j!3{b2}fxa*K*qp~nAuqW&8Glb~RpWxC3V3Z0hC;0nwM+98C6WUC^58V7c z``vcxRXO^~zVO|ty{qTMtY%esU+8rK&x!8)zcXk4qpbKUbFSm=e$<0bb@bQAFYmK* z`KZoOa8$08DQppM-oQhX`YW7I?XA=d1N*KTrzh=&{(|Z>VI1>|%3$qQ@P4TIZifr8 z<$D8kuvub>uVLOfI!x>;8`%i{H)ya{9Goo6=eklWdiOM~i2%Ia=D{Q8-5 uCX1!zG83I$cGEC0w9v<+*n9Qw(J{FOm-2u(b>O!VkLcYp(!oRRU;H0j`3DF9 literal 0 HcmV?d00001 diff --git a/docs/static/img/undraw_docusaurus_mountain.svg b/docs/static/img/undraw_docusaurus_mountain.svg new file mode 100644 index 000000000..431cef2f7 --- /dev/null +++ b/docs/static/img/undraw_docusaurus_mountain.svg @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/static/img/undraw_docusaurus_react.svg b/docs/static/img/undraw_docusaurus_react.svg new file mode 100644 index 000000000..e41705043 --- /dev/null +++ b/docs/static/img/undraw_docusaurus_react.svg @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/static/img/undraw_docusaurus_tree.svg b/docs/static/img/undraw_docusaurus_tree.svg new file mode 100644 index 000000000..a05cc03dd --- /dev/null +++ b/docs/static/img/undraw_docusaurus_tree.svg @@ -0,0 +1 @@ +docu_tree \ No newline at end of file diff --git a/docs/yarn.lock b/docs/yarn.lock new file mode 100644 index 000000000..a0f84344b --- /dev/null +++ b/docs/yarn.lock @@ -0,0 +1,7905 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@algolia/autocomplete-core@1.9.3": + "integrity" "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==" + "resolved" "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz" + "version" "1.9.3" + dependencies: + "@algolia/autocomplete-plugin-algolia-insights" "1.9.3" + "@algolia/autocomplete-shared" "1.9.3" + +"@algolia/autocomplete-plugin-algolia-insights@1.9.3": + "integrity" "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==" + "resolved" "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz" + "version" "1.9.3" + dependencies: + "@algolia/autocomplete-shared" "1.9.3" + +"@algolia/autocomplete-preset-algolia@1.9.3": + "integrity" "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==" + "resolved" "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz" + "version" "1.9.3" + dependencies: + "@algolia/autocomplete-shared" "1.9.3" + +"@algolia/autocomplete-shared@1.9.3": + "integrity" "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==" + "resolved" "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz" + "version" "1.9.3" + +"@algolia/cache-browser-local-storage@4.20.0": + "integrity" "sha512-uujahcBt4DxduBTvYdwO3sBfHuJvJokiC3BP1+O70fglmE1ShkH8lpXqZBac1rrU3FnNYSUs4pL9lBdTKeRPOQ==" + "resolved" "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.20.0.tgz" + "version" "4.20.0" + dependencies: + "@algolia/cache-common" "4.20.0" + +"@algolia/cache-common@4.20.0": + "integrity" "sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ==" + "resolved" "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.20.0.tgz" + "version" "4.20.0" + +"@algolia/cache-in-memory@4.20.0": + "integrity" "sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg==" + "resolved" "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.20.0.tgz" + "version" "4.20.0" + dependencies: + "@algolia/cache-common" "4.20.0" + +"@algolia/client-account@4.20.0": + "integrity" "sha512-GGToLQvrwo7am4zVkZTnKa72pheQeez/16sURDWm7Seyz+HUxKi3BM6fthVVPUEBhtJ0reyVtuK9ArmnaKl10Q==" + "resolved" "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.20.0.tgz" + "version" "4.20.0" + dependencies: + "@algolia/client-common" "4.20.0" + "@algolia/client-search" "4.20.0" + "@algolia/transporter" "4.20.0" + +"@algolia/client-analytics@4.20.0": + "integrity" "sha512-EIr+PdFMOallRdBTHHdKI3CstslgLORQG7844Mq84ib5oVFRVASuuPmG4bXBgiDbcsMLUeOC6zRVJhv1KWI0ug==" + "resolved" "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.20.0.tgz" + "version" "4.20.0" + dependencies: + "@algolia/client-common" "4.20.0" + "@algolia/client-search" "4.20.0" + "@algolia/requester-common" "4.20.0" + "@algolia/transporter" "4.20.0" + +"@algolia/client-common@4.20.0": + "integrity" "sha512-P3WgMdEss915p+knMMSd/fwiHRHKvDu4DYRrCRaBrsfFw7EQHon+EbRSm4QisS9NYdxbS04kcvNoavVGthyfqQ==" + "resolved" "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.20.0.tgz" + "version" "4.20.0" + dependencies: + "@algolia/requester-common" "4.20.0" + "@algolia/transporter" "4.20.0" + +"@algolia/client-personalization@4.20.0": + "integrity" "sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ==" + "resolved" "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.20.0.tgz" + "version" "4.20.0" + dependencies: + "@algolia/client-common" "4.20.0" + "@algolia/requester-common" "4.20.0" + "@algolia/transporter" "4.20.0" + +"@algolia/client-search@>= 4.9.1 < 6", "@algolia/client-search@4.20.0": + "integrity" "sha512-zgwqnMvhWLdpzKTpd3sGmMlr4c+iS7eyyLGiaO51zDZWGMkpgoNVmltkzdBwxOVXz0RsFMznIxB9zuarUv4TZg==" + "resolved" "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.20.0.tgz" + "version" "4.20.0" + dependencies: + "@algolia/client-common" "4.20.0" + "@algolia/requester-common" "4.20.0" + "@algolia/transporter" "4.20.0" + +"@algolia/events@^4.0.1": + "integrity" "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==" + "resolved" "https://registry.npmjs.org/@algolia/events/-/events-4.0.1.tgz" + "version" "4.0.1" + +"@algolia/logger-common@4.20.0": + "integrity" "sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ==" + "resolved" "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.20.0.tgz" + "version" "4.20.0" + +"@algolia/logger-console@4.20.0": + "integrity" "sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA==" + "resolved" "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.20.0.tgz" + "version" "4.20.0" + dependencies: + "@algolia/logger-common" "4.20.0" + +"@algolia/requester-browser-xhr@4.20.0": + "integrity" "sha512-HbzoSjcjuUmYOkcHECkVTwAelmvTlgs48N6Owt4FnTOQdwn0b8pdht9eMgishvk8+F8bal354nhx/xOoTfwiAw==" + "resolved" "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.20.0.tgz" + "version" "4.20.0" + dependencies: + "@algolia/requester-common" "4.20.0" + +"@algolia/requester-common@4.20.0": + "integrity" "sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng==" + "resolved" "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.20.0.tgz" + "version" "4.20.0" + +"@algolia/requester-node-http@4.20.0": + "integrity" "sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng==" + "resolved" "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.20.0.tgz" + "version" "4.20.0" + dependencies: + "@algolia/requester-common" "4.20.0" + +"@algolia/transporter@4.20.0": + "integrity" "sha512-Lsii1pGWOAISbzeyuf+r/GPhvHMPHSPrTDWNcIzOE1SG1inlJHICaVe2ikuoRjcpgxZNU54Jl+if15SUCsaTUg==" + "resolved" "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.20.0.tgz" + "version" "4.20.0" + dependencies: + "@algolia/cache-common" "4.20.0" + "@algolia/logger-common" "4.20.0" + "@algolia/requester-common" "4.20.0" + +"@ampproject/remapping@^2.2.0": + "integrity" "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==" + "resolved" "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz" + "version" "2.2.1" + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.8.3": + "integrity" "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==" + "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz" + "version" "7.22.13" + dependencies: + "@babel/highlight" "^7.22.13" + "chalk" "^2.4.2" + +"@babel/compat-data@^7.22.20", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9": + "integrity" "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==" + "resolved" "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz" + "version" "7.22.20" + +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.11.6", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.18.5", "@babel/core@^7.18.6", "@babel/core@^7.19.6", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0": + "integrity" "sha512-Y6jd1ahLubuYweD/zJH+vvOY141v4f9igNQAQ+MBgq9JlHS2iTsZKn1aMsb3vGccZsXI16VzTBw52Xx0DWmtnA==" + "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.22.20.tgz" + "version" "7.22.20" + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.22.15" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-module-transforms" "^7.22.20" + "@babel/helpers" "^7.22.15" + "@babel/parser" "^7.22.16" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.22.20" + "@babel/types" "^7.22.19" + "convert-source-map" "^1.7.0" + "debug" "^4.1.0" + "gensync" "^1.0.0-beta.2" + "json5" "^2.2.3" + "semver" "^6.3.1" + +"@babel/core@7.12.9": + "integrity" "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==" + "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz" + "version" "7.12.9" + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.5" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.5" + "@babel/parser" "^7.12.7" + "@babel/template" "^7.12.7" + "@babel/traverse" "^7.12.9" + "@babel/types" "^7.12.7" + "convert-source-map" "^1.7.0" + "debug" "^4.1.0" + "gensync" "^1.0.0-beta.1" + "json5" "^2.1.2" + "lodash" "^4.17.19" + "resolve" "^1.3.2" + "semver" "^5.4.1" + "source-map" "^0.5.0" + +"@babel/generator@^7.12.5", "@babel/generator@^7.18.7", "@babel/generator@^7.22.15": + "integrity" "sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==" + "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/types" "^7.22.15" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + "jsesc" "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.22.5": + "integrity" "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==" + "resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": + "integrity" "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==" + "resolved" "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6": + "integrity" "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==" + "resolved" "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.15" + "browserslist" "^4.21.9" + "lru-cache" "^5.1.1" + "semver" "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.22.5": + "integrity" "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==" + "resolved" "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "semver" "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5": + "integrity" "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==" + "resolved" "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "regexpu-core" "^5.3.1" + "semver" "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.4.2": + "integrity" "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==" + "resolved" "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz" + "version" "0.4.2" + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + "debug" "^4.1.1" + "lodash.debounce" "^4.0.8" + "resolve" "^1.14.2" + +"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": + "integrity" "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==" + "resolved" "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz" + "version" "7.22.20" + +"@babel/helper-function-name@^7.22.5": + "integrity" "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==" + "resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/template" "^7.22.5" + "@babel/types" "^7.22.5" + +"@babel/helper-hoist-variables@^7.22.5": + "integrity" "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==" + "resolved" "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-member-expression-to-functions@^7.22.15": + "integrity" "sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==" + "resolved" "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.22.5": + "integrity" "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==" + "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.22.15", "@babel/helper-module-transforms@^7.22.20", "@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9": + "integrity" "sha512-dLT7JVWIUUxKOs1UnJUBR3S70YK+pKX6AbJgB2vMIvEkZkrfJDbYDJesnPshtKV4LhDOR3Oc5YULeDizRek+5A==" + "resolved" "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.20.tgz" + "version" "7.22.20" + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-optimise-call-expression@^7.22.5": + "integrity" "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==" + "resolved" "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + "integrity" "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==" + "resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz" + "version" "7.22.5" + +"@babel/helper-plugin-utils@7.10.4": + "integrity" "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + "resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz" + "version" "7.10.4" + +"@babel/helper-remap-async-to-generator@^7.22.5", "@babel/helper-remap-async-to-generator@^7.22.9": + "integrity" "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==" + "resolved" "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz" + "version" "7.22.20" + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-wrap-function" "^7.22.20" + +"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": + "integrity" "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==" + "resolved" "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz" + "version" "7.22.20" + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + +"@babel/helper-simple-access@^7.22.5": + "integrity" "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==" + "resolved" "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + "integrity" "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==" + "resolved" "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.22.6": + "integrity" "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==" + "resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz" + "version" "7.22.6" + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.22.5": + "integrity" "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==" + "resolved" "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz" + "version" "7.22.5" + +"@babel/helper-validator-identifier@^7.22.19", "@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.22.5": + "integrity" "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" + "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz" + "version" "7.22.20" + +"@babel/helper-validator-option@^7.22.15": + "integrity" "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==" + "resolved" "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz" + "version" "7.22.15" + +"@babel/helper-wrap-function@^7.22.20": + "integrity" "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==" + "resolved" "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz" + "version" "7.22.20" + dependencies: + "@babel/helper-function-name" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/types" "^7.22.19" + +"@babel/helpers@^7.12.5", "@babel/helpers@^7.22.15": + "integrity" "sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==" + "resolved" "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.22.15" + "@babel/types" "^7.22.15" + +"@babel/highlight@^7.22.13": + "integrity" "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==" + "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz" + "version" "7.22.20" + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + "chalk" "^2.4.2" + "js-tokens" "^4.0.0" + +"@babel/parser@^7.12.7", "@babel/parser@^7.18.8", "@babel/parser@^7.22.15", "@babel/parser@^7.22.16": + "integrity" "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==" + "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz" + "version" "7.22.16" + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15": + "integrity" "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.15": + "integrity" "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.22.15" + +"@babel/plugin-proposal-object-rest-spread@7.12.1": + "integrity" "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz" + "version" "7.12.1" + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.12.1" + +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + "integrity" "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz" + "version" "7.21.0-placeholder-for-preset-env.2" + +"@babel/plugin-syntax-async-generators@^7.8.4": + "integrity" "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" + "version" "7.8.4" + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + "integrity" "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" + "version" "7.12.13" + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + "integrity" "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" + "version" "7.14.5" + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + "integrity" "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" + "version" "7.8.3" + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + "integrity" "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" + "version" "7.8.3" + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-import-assertions@^7.22.5": + "integrity" "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-attributes@^7.22.5": + "integrity" "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-meta@^7.10.4": + "integrity" "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" + "version" "7.10.4" + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + "integrity" "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" + "version" "7.8.3" + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.22.5": + "integrity" "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-jsx@7.12.1": + "integrity" "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz" + "version" "7.12.1" + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + "integrity" "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" + "version" "7.10.4" + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + "integrity" "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" + "version" "7.8.3" + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + "integrity" "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" + "version" "7.10.4" + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3", "@babel/plugin-syntax-object-rest-spread@7.8.3": + "integrity" "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + "version" "7.8.3" + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + "integrity" "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" + "version" "7.8.3" + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + "integrity" "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" + "version" "7.8.3" + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + "integrity" "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" + "version" "7.14.5" + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + "integrity" "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" + "version" "7.14.5" + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.22.5": + "integrity" "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + "integrity" "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.22.5": + "integrity" "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-async-generator-functions@^7.22.15": + "integrity" "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.9" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-transform-async-to-generator@^7.22.5": + "integrity" "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.5" + +"@babel/plugin-transform-block-scoped-functions@^7.22.5": + "integrity" "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-block-scoping@^7.22.15": + "integrity" "sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-properties@^7.22.5": + "integrity" "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-static-block@^7.22.11": + "integrity" "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz" + "version" "7.22.11" + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.11" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-transform-classes@^7.22.15": + "integrity" "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-split-export-declaration" "^7.22.6" + "globals" "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.22.5": + "integrity" "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/template" "^7.22.5" + +"@babel/plugin-transform-destructuring@^7.22.15": + "integrity" "sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-dotall-regex@^7.22.5": + "integrity" "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-duplicate-keys@^7.22.5": + "integrity" "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-dynamic-import@^7.22.11": + "integrity" "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz" + "version" "7.22.11" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.22.5": + "integrity" "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-export-namespace-from@^7.22.11": + "integrity" "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz" + "version" "7.22.11" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-transform-for-of@^7.22.15": + "integrity" "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-function-name@^7.22.5": + "integrity" "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-compilation-targets" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-json-strings@^7.22.11": + "integrity" "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz" + "version" "7.22.11" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-transform-literals@^7.22.5": + "integrity" "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-logical-assignment-operators@^7.22.11": + "integrity" "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz" + "version" "7.22.11" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.22.5": + "integrity" "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-modules-amd@^7.22.5": + "integrity" "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-modules-commonjs@^7.22.15": + "integrity" "sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-module-transforms" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" + +"@babel/plugin-transform-modules-systemjs@^7.22.11": + "integrity" "sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz" + "version" "7.22.11" + dependencies: + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-module-transforms" "^7.22.9" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.5" + +"@babel/plugin-transform-modules-umd@^7.22.5": + "integrity" "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": + "integrity" "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-new-target@^7.22.5": + "integrity" "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11": + "integrity" "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz" + "version" "7.22.11" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-transform-numeric-separator@^7.22.11": + "integrity" "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz" + "version" "7.22.11" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-transform-object-rest-spread@^7.22.15": + "integrity" "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.22.15" + +"@babel/plugin-transform-object-super@^7.22.5": + "integrity" "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.5" + +"@babel/plugin-transform-optional-catch-binding@^7.22.11": + "integrity" "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz" + "version" "7.22.11" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-transform-optional-chaining@^7.22.15": + "integrity" "sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.22.15": + "integrity" "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-methods@^7.22.5": + "integrity" "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-property-in-object@^7.22.11": + "integrity" "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz" + "version" "7.22.11" + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.11" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-transform-property-literals@^7.22.5": + "integrity" "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-constant-elements@^7.17.12": + "integrity" "sha512-BF5SXoO+nX3h5OhlN78XbbDrBOffv+AxPP2ENaJOVqjWCgBDeOY3WcaUcddutGSfoap+5NEQ/q/4I3WZIvgkXA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-display-name@^7.22.5": + "integrity" "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-jsx-development@^7.22.5": + "integrity" "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/plugin-transform-react-jsx" "^7.22.5" + +"@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5": + "integrity" "sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.22.5" + "@babel/types" "^7.22.15" + +"@babel/plugin-transform-react-pure-annotations@^7.22.5": + "integrity" "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-regenerator@^7.22.10": + "integrity" "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz" + "version" "7.22.10" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "regenerator-transform" "^0.15.2" + +"@babel/plugin-transform-reserved-words@^7.22.5": + "integrity" "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-runtime@^7.18.6": + "integrity" "sha512-tEVLhk8NRZSmwQ0DJtxxhTrCht1HVo8VaMzYT4w6lwyKBuHsgoioAUA7/6eT2fRfc5/23fuGdlwIxXhRVgWr4g==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "babel-plugin-polyfill-corejs2" "^0.4.5" + "babel-plugin-polyfill-corejs3" "^0.8.3" + "babel-plugin-polyfill-regenerator" "^0.5.2" + "semver" "^6.3.1" + +"@babel/plugin-transform-shorthand-properties@^7.22.5": + "integrity" "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-spread@^7.22.5": + "integrity" "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-sticky-regex@^7.22.5": + "integrity" "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-template-literals@^7.22.5": + "integrity" "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typeof-symbol@^7.22.5": + "integrity" "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typescript@^7.22.15": + "integrity" "sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-typescript" "^7.22.5" + +"@babel/plugin-transform-unicode-escapes@^7.22.10": + "integrity" "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz" + "version" "7.22.10" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-property-regex@^7.22.5": + "integrity" "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-regex@^7.22.5": + "integrity" "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-sets-regex@^7.22.5": + "integrity" "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/preset-env@^7.18.2", "@babel/preset-env@^7.18.6": + "integrity" "sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==" + "resolved" "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.20.tgz" + "version" "7.22.20" + dependencies: + "@babel/compat-data" "^7.22.20" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.15" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.15" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.22.5" + "@babel/plugin-syntax-import-attributes" "^7.22.5" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.22.5" + "@babel/plugin-transform-async-generator-functions" "^7.22.15" + "@babel/plugin-transform-async-to-generator" "^7.22.5" + "@babel/plugin-transform-block-scoped-functions" "^7.22.5" + "@babel/plugin-transform-block-scoping" "^7.22.15" + "@babel/plugin-transform-class-properties" "^7.22.5" + "@babel/plugin-transform-class-static-block" "^7.22.11" + "@babel/plugin-transform-classes" "^7.22.15" + "@babel/plugin-transform-computed-properties" "^7.22.5" + "@babel/plugin-transform-destructuring" "^7.22.15" + "@babel/plugin-transform-dotall-regex" "^7.22.5" + "@babel/plugin-transform-duplicate-keys" "^7.22.5" + "@babel/plugin-transform-dynamic-import" "^7.22.11" + "@babel/plugin-transform-exponentiation-operator" "^7.22.5" + "@babel/plugin-transform-export-namespace-from" "^7.22.11" + "@babel/plugin-transform-for-of" "^7.22.15" + "@babel/plugin-transform-function-name" "^7.22.5" + "@babel/plugin-transform-json-strings" "^7.22.11" + "@babel/plugin-transform-literals" "^7.22.5" + "@babel/plugin-transform-logical-assignment-operators" "^7.22.11" + "@babel/plugin-transform-member-expression-literals" "^7.22.5" + "@babel/plugin-transform-modules-amd" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.22.15" + "@babel/plugin-transform-modules-systemjs" "^7.22.11" + "@babel/plugin-transform-modules-umd" "^7.22.5" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.22.5" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.11" + "@babel/plugin-transform-numeric-separator" "^7.22.11" + "@babel/plugin-transform-object-rest-spread" "^7.22.15" + "@babel/plugin-transform-object-super" "^7.22.5" + "@babel/plugin-transform-optional-catch-binding" "^7.22.11" + "@babel/plugin-transform-optional-chaining" "^7.22.15" + "@babel/plugin-transform-parameters" "^7.22.15" + "@babel/plugin-transform-private-methods" "^7.22.5" + "@babel/plugin-transform-private-property-in-object" "^7.22.11" + "@babel/plugin-transform-property-literals" "^7.22.5" + "@babel/plugin-transform-regenerator" "^7.22.10" + "@babel/plugin-transform-reserved-words" "^7.22.5" + "@babel/plugin-transform-shorthand-properties" "^7.22.5" + "@babel/plugin-transform-spread" "^7.22.5" + "@babel/plugin-transform-sticky-regex" "^7.22.5" + "@babel/plugin-transform-template-literals" "^7.22.5" + "@babel/plugin-transform-typeof-symbol" "^7.22.5" + "@babel/plugin-transform-unicode-escapes" "^7.22.10" + "@babel/plugin-transform-unicode-property-regex" "^7.22.5" + "@babel/plugin-transform-unicode-regex" "^7.22.5" + "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" + "@babel/preset-modules" "0.1.6-no-external-plugins" + "@babel/types" "^7.22.19" + "babel-plugin-polyfill-corejs2" "^0.4.5" + "babel-plugin-polyfill-corejs3" "^0.8.3" + "babel-plugin-polyfill-regenerator" "^0.5.2" + "core-js-compat" "^3.31.0" + "semver" "^6.3.1" + +"@babel/preset-modules@0.1.6-no-external-plugins": + "integrity" "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==" + "resolved" "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz" + "version" "0.1.6-no-external-plugins" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/types" "^7.4.4" + "esutils" "^2.0.2" + +"@babel/preset-react@^7.17.12", "@babel/preset-react@^7.18.6": + "integrity" "sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w==" + "resolved" "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-transform-react-display-name" "^7.22.5" + "@babel/plugin-transform-react-jsx" "^7.22.15" + "@babel/plugin-transform-react-jsx-development" "^7.22.5" + "@babel/plugin-transform-react-pure-annotations" "^7.22.5" + +"@babel/preset-typescript@^7.17.12", "@babel/preset-typescript@^7.18.6": + "integrity" "sha512-HblhNmh6yM+cU4VwbBRpxFhxsTdfS1zsvH9W+gEjD0ARV9+8B4sNfpI6GuhePti84nuvhiwKS539jKPFHskA9A==" + "resolved" "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-syntax-jsx" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.22.15" + "@babel/plugin-transform-typescript" "^7.22.15" + +"@babel/regjsgen@^0.8.0": + "integrity" "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" + "resolved" "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" + "version" "0.8.0" + +"@babel/runtime-corejs3@^7.18.6": + "integrity" "sha512-SAj8oKi8UogVi6eXQXKNPu8qZ78Yzy7zawrlTr0M+IuW/g8Qe9gVDhGcF9h1S69OyACpYoLxEzpjs1M15sI5wQ==" + "resolved" "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "core-js-pure" "^3.30.2" + "regenerator-runtime" "^0.14.0" + +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.6", "@babel/runtime@^7.20.13", "@babel/runtime@^7.8.4": + "integrity" "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==" + "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "regenerator-runtime" "^0.14.0" + +"@babel/template@^7.12.7", "@babel/template@^7.22.15", "@babel/template@^7.22.5": + "integrity" "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==" + "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + +"@babel/traverse@^7.12.9", "@babel/traverse@^7.18.8", "@babel/traverse@^7.22.15", "@babel/traverse@^7.22.20": + "integrity" "sha512-eU260mPZbU7mZ0N+X10pxXhQFMGTeLb9eFS0mxehS8HZp9o1uSnFeWQuG1UPrlxgA7QoUzFhOnilHDp0AXCyHw==" + "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.20.tgz" + "version" "7.22.20" + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.22.15" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.22.16" + "@babel/types" "^7.22.19" + "debug" "^4.1.0" + "globals" "^11.1.0" + +"@babel/types@^7.12.7", "@babel/types@^7.20.0", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.4.4": + "integrity" "sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==" + "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.22.19.tgz" + "version" "7.22.19" + dependencies: + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.19" + "to-fast-properties" "^2.0.0" + +"@colors/colors@1.5.0": + "integrity" "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" + "resolved" "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" + "version" "1.5.0" + +"@discoveryjs/json-ext@0.5.7": + "integrity" "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==" + "resolved" "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz" + "version" "0.5.7" + +"@docsearch/css@3.5.2": + "integrity" "sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==" + "resolved" "https://registry.npmjs.org/@docsearch/css/-/css-3.5.2.tgz" + "version" "3.5.2" + +"@docsearch/react@^3.1.1": + "integrity" "sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==" + "resolved" "https://registry.npmjs.org/@docsearch/react/-/react-3.5.2.tgz" + "version" "3.5.2" + dependencies: + "@algolia/autocomplete-core" "1.9.3" + "@algolia/autocomplete-preset-algolia" "1.9.3" + "@docsearch/css" "3.5.2" + "algoliasearch" "^4.19.1" + +"@docusaurus/core@^2.4.3", "@docusaurus/core@2.4.3": + "integrity" "sha512-dWH5P7cgeNSIg9ufReX6gaCl/TmrGKD38Orbwuz05WPhAQtFXHd5B8Qym1TiXfvUNvwoYKkAJOJuGe8ou0Z7PA==" + "resolved" "https://registry.npmjs.org/@docusaurus/core/-/core-2.4.3.tgz" + "version" "2.4.3" + dependencies: + "@babel/core" "^7.18.6" + "@babel/generator" "^7.18.7" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-runtime" "^7.18.6" + "@babel/preset-env" "^7.18.6" + "@babel/preset-react" "^7.18.6" + "@babel/preset-typescript" "^7.18.6" + "@babel/runtime" "^7.18.6" + "@babel/runtime-corejs3" "^7.18.6" + "@babel/traverse" "^7.18.8" + "@docusaurus/cssnano-preset" "2.4.3" + "@docusaurus/logger" "2.4.3" + "@docusaurus/mdx-loader" "2.4.3" + "@docusaurus/react-loadable" "5.5.2" + "@docusaurus/utils" "2.4.3" + "@docusaurus/utils-common" "2.4.3" + "@docusaurus/utils-validation" "2.4.3" + "@slorber/static-site-generator-webpack-plugin" "^4.0.7" + "@svgr/webpack" "^6.2.1" + "autoprefixer" "^10.4.7" + "babel-loader" "^8.2.5" + "babel-plugin-dynamic-import-node" "^2.3.3" + "boxen" "^6.2.1" + "chalk" "^4.1.2" + "chokidar" "^3.5.3" + "clean-css" "^5.3.0" + "cli-table3" "^0.6.2" + "combine-promises" "^1.1.0" + "commander" "^5.1.0" + "copy-webpack-plugin" "^11.0.0" + "core-js" "^3.23.3" + "css-loader" "^6.7.1" + "css-minimizer-webpack-plugin" "^4.0.0" + "cssnano" "^5.1.12" + "del" "^6.1.1" + "detect-port" "^1.3.0" + "escape-html" "^1.0.3" + "eta" "^2.0.0" + "file-loader" "^6.2.0" + "fs-extra" "^10.1.0" + "html-minifier-terser" "^6.1.0" + "html-tags" "^3.2.0" + "html-webpack-plugin" "^5.5.0" + "import-fresh" "^3.3.0" + "leven" "^3.1.0" + "lodash" "^4.17.21" + "mini-css-extract-plugin" "^2.6.1" + "postcss" "^8.4.14" + "postcss-loader" "^7.0.0" + "prompts" "^2.4.2" + "react-dev-utils" "^12.0.1" + "react-helmet-async" "^1.3.0" + "react-loadable" "npm:@docusaurus/react-loadable@5.5.2" + "react-loadable-ssr-addon-v5-slorber" "^1.0.1" + "react-router" "^5.3.3" + "react-router-config" "^5.1.1" + "react-router-dom" "^5.3.3" + "rtl-detect" "^1.0.4" + "semver" "^7.3.7" + "serve-handler" "^6.1.3" + "shelljs" "^0.8.5" + "terser-webpack-plugin" "^5.3.3" + "tslib" "^2.4.0" + "update-notifier" "^5.1.0" + "url-loader" "^4.1.1" + "wait-on" "^6.0.1" + "webpack" "^5.73.0" + "webpack-bundle-analyzer" "^4.5.0" + "webpack-dev-server" "^4.9.3" + "webpack-merge" "^5.8.0" + "webpackbar" "^5.0.2" + +"@docusaurus/cssnano-preset@2.4.3": + "integrity" "sha512-ZvGSRCi7z9wLnZrXNPG6DmVPHdKGd8dIn9pYbEOFiYihfv4uDR3UtxogmKf+rT8ZlKFf5Lqne8E8nt08zNM8CA==" + "resolved" "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-2.4.3.tgz" + "version" "2.4.3" + dependencies: + "cssnano-preset-advanced" "^5.3.8" + "postcss" "^8.4.14" + "postcss-sort-media-queries" "^4.2.1" + "tslib" "^2.4.0" + +"@docusaurus/logger@2.4.3": + "integrity" "sha512-Zxws7r3yLufk9xM1zq9ged0YHs65mlRmtsobnFkdZTxWXdTYlWWLWdKyNKAsVC+D7zg+pv2fGbyabdOnyZOM3w==" + "resolved" "https://registry.npmjs.org/@docusaurus/logger/-/logger-2.4.3.tgz" + "version" "2.4.3" + dependencies: + "chalk" "^4.1.2" + "tslib" "^2.4.0" + +"@docusaurus/mdx-loader@2.4.3": + "integrity" "sha512-b1+fDnWtl3GiqkL0BRjYtc94FZrcDDBV1j8446+4tptB9BAOlePwG2p/pK6vGvfL53lkOsszXMghr2g67M0vCw==" + "resolved" "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.4.3.tgz" + "version" "2.4.3" + dependencies: + "@babel/parser" "^7.18.8" + "@babel/traverse" "^7.18.8" + "@docusaurus/logger" "2.4.3" + "@docusaurus/utils" "2.4.3" + "@mdx-js/mdx" "^1.6.22" + "escape-html" "^1.0.3" + "file-loader" "^6.2.0" + "fs-extra" "^10.1.0" + "image-size" "^1.0.1" + "mdast-util-to-string" "^2.0.0" + "remark-emoji" "^2.2.0" + "stringify-object" "^3.3.0" + "tslib" "^2.4.0" + "unified" "^9.2.2" + "unist-util-visit" "^2.0.3" + "url-loader" "^4.1.1" + "webpack" "^5.73.0" + +"@docusaurus/module-type-aliases@2.4.3": + "integrity" "sha512-cwkBkt1UCiduuvEAo7XZY01dJfRn7UR/75mBgOdb1hKknhrabJZ8YH+7savd/y9kLExPyrhe0QwdS9GuzsRRIA==" + "resolved" "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-2.4.3.tgz" + "version" "2.4.3" + dependencies: + "@docusaurus/react-loadable" "5.5.2" + "@docusaurus/types" "2.4.3" + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router-config" "*" + "@types/react-router-dom" "*" + "react-helmet-async" "*" + "react-loadable" "npm:@docusaurus/react-loadable@5.5.2" + +"@docusaurus/plugin-client-redirects@^2.4.3": + "integrity" "sha512-iCwc/zH8X6eNtLYdyUJFY6+GbsbRgMgvAC/TmSmCYTmwnoN5Y1Bc5OwUkdtoch0XKizotJMRAmGIAhP8sAetdQ==" + "resolved" "https://registry.npmjs.org/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-2.4.3.tgz" + "version" "2.4.3" + dependencies: + "@docusaurus/core" "2.4.3" + "@docusaurus/logger" "2.4.3" + "@docusaurus/utils" "2.4.3" + "@docusaurus/utils-common" "2.4.3" + "@docusaurus/utils-validation" "2.4.3" + "eta" "^2.0.0" + "fs-extra" "^10.1.0" + "lodash" "^4.17.21" + "tslib" "^2.4.0" + +"@docusaurus/plugin-content-blog@2.4.3": + "integrity" "sha512-PVhypqaA0t98zVDpOeTqWUTvRqCEjJubtfFUQ7zJNYdbYTbS/E/ytq6zbLVsN/dImvemtO/5JQgjLxsh8XLo8Q==" + "resolved" "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.4.3.tgz" + "version" "2.4.3" + dependencies: + "@docusaurus/core" "2.4.3" + "@docusaurus/logger" "2.4.3" + "@docusaurus/mdx-loader" "2.4.3" + "@docusaurus/types" "2.4.3" + "@docusaurus/utils" "2.4.3" + "@docusaurus/utils-common" "2.4.3" + "@docusaurus/utils-validation" "2.4.3" + "cheerio" "^1.0.0-rc.12" + "feed" "^4.2.2" + "fs-extra" "^10.1.0" + "lodash" "^4.17.21" + "reading-time" "^1.5.0" + "tslib" "^2.4.0" + "unist-util-visit" "^2.0.3" + "utility-types" "^3.10.0" + "webpack" "^5.73.0" + +"@docusaurus/plugin-content-docs@^2.0.0-rc.1", "@docusaurus/plugin-content-docs@2.4.3": + "integrity" "sha512-N7Po2LSH6UejQhzTCsvuX5NOzlC+HiXOVvofnEPj0WhMu1etpLEXE6a4aTxrtg95lQ5kf0xUIdjX9sh3d3G76A==" + "resolved" "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.4.3.tgz" + "version" "2.4.3" + dependencies: + "@docusaurus/core" "2.4.3" + "@docusaurus/logger" "2.4.3" + "@docusaurus/mdx-loader" "2.4.3" + "@docusaurus/module-type-aliases" "2.4.3" + "@docusaurus/types" "2.4.3" + "@docusaurus/utils" "2.4.3" + "@docusaurus/utils-validation" "2.4.3" + "@types/react-router-config" "^5.0.6" + "combine-promises" "^1.1.0" + "fs-extra" "^10.1.0" + "import-fresh" "^3.3.0" + "js-yaml" "^4.1.0" + "lodash" "^4.17.21" + "tslib" "^2.4.0" + "utility-types" "^3.10.0" + "webpack" "^5.73.0" + +"@docusaurus/plugin-content-pages@2.4.3": + "integrity" "sha512-txtDVz7y3zGk67q0HjG0gRttVPodkHqE0bpJ+7dOaTH40CQFLSh7+aBeGnPOTl+oCPG+hxkim4SndqPqXjQ8Bg==" + "resolved" "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.4.3.tgz" + "version" "2.4.3" + dependencies: + "@docusaurus/core" "2.4.3" + "@docusaurus/mdx-loader" "2.4.3" + "@docusaurus/types" "2.4.3" + "@docusaurus/utils" "2.4.3" + "@docusaurus/utils-validation" "2.4.3" + "fs-extra" "^10.1.0" + "tslib" "^2.4.0" + "webpack" "^5.73.0" + +"@docusaurus/plugin-debug@2.4.3": + "integrity" "sha512-LkUbuq3zCmINlFb+gAd4ZvYr+bPAzMC0hwND4F7V9bZ852dCX8YoWyovVUBKq4er1XsOwSQaHmNGtObtn8Av8Q==" + "resolved" "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-2.4.3.tgz" + "version" "2.4.3" + dependencies: + "@docusaurus/core" "2.4.3" + "@docusaurus/types" "2.4.3" + "@docusaurus/utils" "2.4.3" + "fs-extra" "^10.1.0" + "react-json-view" "^1.21.3" + "tslib" "^2.4.0" + +"@docusaurus/plugin-google-analytics@2.4.3": + "integrity" "sha512-KzBV3k8lDkWOhg/oYGxlK5o9bOwX7KpPc/FTWoB+SfKhlHfhq7qcQdMi1elAaVEIop8tgK6gD1E58Q+XC6otSQ==" + "resolved" "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.4.3.tgz" + "version" "2.4.3" + dependencies: + "@docusaurus/core" "2.4.3" + "@docusaurus/types" "2.4.3" + "@docusaurus/utils-validation" "2.4.3" + "tslib" "^2.4.0" + +"@docusaurus/plugin-google-gtag@2.4.3": + "integrity" "sha512-5FMg0rT7sDy4i9AGsvJC71MQrqQZwgLNdDetLEGDHLfSHLvJhQbTCUGbGXknUgWXQJckcV/AILYeJy+HhxeIFA==" + "resolved" "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.4.3.tgz" + "version" "2.4.3" + dependencies: + "@docusaurus/core" "2.4.3" + "@docusaurus/types" "2.4.3" + "@docusaurus/utils-validation" "2.4.3" + "tslib" "^2.4.0" + +"@docusaurus/plugin-google-tag-manager@2.4.3": + "integrity" "sha512-1jTzp71yDGuQiX9Bi0pVp3alArV0LSnHXempvQTxwCGAEzUWWaBg4d8pocAlTpbP9aULQQqhgzrs8hgTRPOM0A==" + "resolved" "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-2.4.3.tgz" + "version" "2.4.3" + dependencies: + "@docusaurus/core" "2.4.3" + "@docusaurus/types" "2.4.3" + "@docusaurus/utils-validation" "2.4.3" + "tslib" "^2.4.0" + +"@docusaurus/plugin-sitemap@2.4.3": + "integrity" "sha512-LRQYrK1oH1rNfr4YvWBmRzTL0LN9UAPxBbghgeFRBm5yloF6P+zv1tm2pe2hQTX/QP5bSKdnajCvfnScgKXMZQ==" + "resolved" "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.4.3.tgz" + "version" "2.4.3" + dependencies: + "@docusaurus/core" "2.4.3" + "@docusaurus/logger" "2.4.3" + "@docusaurus/types" "2.4.3" + "@docusaurus/utils" "2.4.3" + "@docusaurus/utils-common" "2.4.3" + "@docusaurus/utils-validation" "2.4.3" + "fs-extra" "^10.1.0" + "sitemap" "^7.1.1" + "tslib" "^2.4.0" + +"@docusaurus/preset-classic@^2.4.3": + "integrity" "sha512-tRyMliepY11Ym6hB1rAFSNGwQDpmszvWYJvlK1E+md4SW8i6ylNHtpZjaYFff9Mdk3i/Pg8ItQq9P0daOJAvQw==" + "resolved" "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-2.4.3.tgz" + "version" "2.4.3" + dependencies: + "@docusaurus/core" "2.4.3" + "@docusaurus/plugin-content-blog" "2.4.3" + "@docusaurus/plugin-content-docs" "2.4.3" + "@docusaurus/plugin-content-pages" "2.4.3" + "@docusaurus/plugin-debug" "2.4.3" + "@docusaurus/plugin-google-analytics" "2.4.3" + "@docusaurus/plugin-google-gtag" "2.4.3" + "@docusaurus/plugin-google-tag-manager" "2.4.3" + "@docusaurus/plugin-sitemap" "2.4.3" + "@docusaurus/theme-classic" "2.4.3" + "@docusaurus/theme-common" "2.4.3" + "@docusaurus/theme-search-algolia" "2.4.3" + "@docusaurus/types" "2.4.3" + +"@docusaurus/react-loadable@5.5.2": + "integrity" "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==" + "resolved" "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz" + "version" "5.5.2" + dependencies: + "@types/react" "*" + "prop-types" "^15.6.2" + +"@docusaurus/theme-classic@2.4.3": + "integrity" "sha512-QKRAJPSGPfDY2yCiPMIVyr+MqwZCIV2lxNzqbyUW0YkrlmdzzP3WuQJPMGLCjWgQp/5c9kpWMvMxjhpZx1R32Q==" + "resolved" "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-2.4.3.tgz" + "version" "2.4.3" + dependencies: + "@docusaurus/core" "2.4.3" + "@docusaurus/mdx-loader" "2.4.3" + "@docusaurus/module-type-aliases" "2.4.3" + "@docusaurus/plugin-content-blog" "2.4.3" + "@docusaurus/plugin-content-docs" "2.4.3" + "@docusaurus/plugin-content-pages" "2.4.3" + "@docusaurus/theme-common" "2.4.3" + "@docusaurus/theme-translations" "2.4.3" + "@docusaurus/types" "2.4.3" + "@docusaurus/utils" "2.4.3" + "@docusaurus/utils-common" "2.4.3" + "@docusaurus/utils-validation" "2.4.3" + "@mdx-js/react" "^1.6.22" + "clsx" "^1.2.1" + "copy-text-to-clipboard" "^3.0.1" + "infima" "0.2.0-alpha.43" + "lodash" "^4.17.21" + "nprogress" "^0.2.0" + "postcss" "^8.4.14" + "prism-react-renderer" "^1.3.5" + "prismjs" "^1.28.0" + "react-router-dom" "^5.3.3" + "rtlcss" "^3.5.0" + "tslib" "^2.4.0" + "utility-types" "^3.10.0" + +"@docusaurus/theme-common@^2.0.0-rc.1", "@docusaurus/theme-common@2.4.3": + "integrity" "sha512-7KaDJBXKBVGXw5WOVt84FtN8czGWhM0lbyWEZXGp8AFfL6sZQfRTluFp4QriR97qwzSyOfQb+nzcDZZU4tezUw==" + "resolved" "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-2.4.3.tgz" + "version" "2.4.3" + dependencies: + "@docusaurus/mdx-loader" "2.4.3" + "@docusaurus/module-type-aliases" "2.4.3" + "@docusaurus/plugin-content-blog" "2.4.3" + "@docusaurus/plugin-content-docs" "2.4.3" + "@docusaurus/plugin-content-pages" "2.4.3" + "@docusaurus/utils" "2.4.3" + "@docusaurus/utils-common" "2.4.3" + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router-config" "*" + "clsx" "^1.2.1" + "parse-numeric-range" "^1.3.0" + "prism-react-renderer" "^1.3.5" + "tslib" "^2.4.0" + "use-sync-external-store" "^1.2.0" + "utility-types" "^3.10.0" + +"@docusaurus/theme-search-algolia@2.4.3": + "integrity" "sha512-jziq4f6YVUB5hZOB85ELATwnxBz/RmSLD3ksGQOLDPKVzat4pmI8tddNWtriPpxR04BNT+ZfpPUMFkNFetSW1Q==" + "resolved" "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.4.3.tgz" + "version" "2.4.3" + dependencies: + "@docsearch/react" "^3.1.1" + "@docusaurus/core" "2.4.3" + "@docusaurus/logger" "2.4.3" + "@docusaurus/plugin-content-docs" "2.4.3" + "@docusaurus/theme-common" "2.4.3" + "@docusaurus/theme-translations" "2.4.3" + "@docusaurus/utils" "2.4.3" + "@docusaurus/utils-validation" "2.4.3" + "algoliasearch" "^4.13.1" + "algoliasearch-helper" "^3.10.0" + "clsx" "^1.2.1" + "eta" "^2.0.0" + "fs-extra" "^10.1.0" + "lodash" "^4.17.21" + "tslib" "^2.4.0" + "utility-types" "^3.10.0" + +"@docusaurus/theme-translations@^2.0.0-rc.1", "@docusaurus/theme-translations@2.4.3": + "integrity" "sha512-H4D+lbZbjbKNS/Zw1Lel64PioUAIT3cLYYJLUf3KkuO/oc9e0QCVhIYVtUI2SfBCF2NNdlyhBDQEEMygsCedIg==" + "resolved" "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-2.4.3.tgz" + "version" "2.4.3" + dependencies: + "fs-extra" "^10.1.0" + "tslib" "^2.4.0" + +"@docusaurus/types@*", "@docusaurus/types@2.4.3": + "integrity" "sha512-W6zNLGQqfrp/EoPD0bhb9n7OobP+RHpmvVzpA+Z/IuU3Q63njJM24hmT0GYboovWcDtFmnIJC9wcyx4RVPQscw==" + "resolved" "https://registry.npmjs.org/@docusaurus/types/-/types-2.4.3.tgz" + "version" "2.4.3" + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + "commander" "^5.1.0" + "joi" "^17.6.0" + "react-helmet-async" "^1.3.0" + "utility-types" "^3.10.0" + "webpack" "^5.73.0" + "webpack-merge" "^5.8.0" + +"@docusaurus/utils-common@^2.0.0-rc.1", "@docusaurus/utils-common@2.4.3": + "integrity" "sha512-/jascp4GbLQCPVmcGkPzEQjNaAk3ADVfMtudk49Ggb+131B1WDD6HqlSmDf8MxGdy7Dja2gc+StHf01kiWoTDQ==" + "resolved" "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-2.4.3.tgz" + "version" "2.4.3" + dependencies: + "tslib" "^2.4.0" + +"@docusaurus/utils-validation@^2.0.0-rc.1", "@docusaurus/utils-validation@2.4.3": + "integrity" "sha512-G2+Vt3WR5E/9drAobP+hhZQMaswRwDlp6qOMi7o7ZypB+VO7N//DZWhZEwhcRGepMDJGQEwtPv7UxtYwPL9PBw==" + "resolved" "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-2.4.3.tgz" + "version" "2.4.3" + dependencies: + "@docusaurus/logger" "2.4.3" + "@docusaurus/utils" "2.4.3" + "joi" "^17.6.0" + "js-yaml" "^4.1.0" + "tslib" "^2.4.0" + +"@docusaurus/utils@^2.0.0-rc.1", "@docusaurus/utils@2.4.3": + "integrity" "sha512-fKcXsjrD86Smxv8Pt0TBFqYieZZCPh4cbf9oszUq/AMhZn3ujwpKaVYZACPX8mmjtYx0JOgNx52CREBfiGQB4A==" + "resolved" "https://registry.npmjs.org/@docusaurus/utils/-/utils-2.4.3.tgz" + "version" "2.4.3" + dependencies: + "@docusaurus/logger" "2.4.3" + "@svgr/webpack" "^6.2.1" + "escape-string-regexp" "^4.0.0" + "file-loader" "^6.2.0" + "fs-extra" "^10.1.0" + "github-slugger" "^1.4.0" + "globby" "^11.1.0" + "gray-matter" "^4.0.3" + "js-yaml" "^4.1.0" + "lodash" "^4.17.21" + "micromatch" "^4.0.5" + "resolve-pathname" "^3.0.0" + "shelljs" "^0.8.5" + "tslib" "^2.4.0" + "url-loader" "^4.1.1" + "webpack" "^5.73.0" + +"@easyops-cn/autocomplete.js@^0.38.1": + "integrity" "sha512-drg76jS6syilOUmVNkyo1c7ZEBPcPuK+aJA7AksM5ZIIbV57DMHCywiCr+uHyv8BE5jUTU98j/H7gVrkHrWW3Q==" + "resolved" "https://registry.npmjs.org/@easyops-cn/autocomplete.js/-/autocomplete.js-0.38.1.tgz" + "version" "0.38.1" + dependencies: + "cssesc" "^3.0.0" + "immediate" "^3.2.3" + +"@easyops-cn/docusaurus-search-local@^0.29.0": + "integrity" "sha512-QbYjEXSZEyO/d1R/MZE+1R14ZysjcrYjNH2EPJqq12UocXPj6BXXfl0A24SvbLNJ4uaLV+dMUQsvqbvwFjwRKg==" + "resolved" "https://registry.npmjs.org/@easyops-cn/docusaurus-search-local/-/docusaurus-search-local-0.29.4.tgz" + "version" "0.29.4" + dependencies: + "@docusaurus/plugin-content-docs" "^2.0.0-rc.1" + "@docusaurus/theme-translations" "^2.0.0-rc.1" + "@docusaurus/utils" "^2.0.0-rc.1" + "@docusaurus/utils-common" "^2.0.0-rc.1" + "@docusaurus/utils-validation" "^2.0.0-rc.1" + "@easyops-cn/autocomplete.js" "^0.38.1" + "@node-rs/jieba" "^1.6.0" + "cheerio" "^1.0.0-rc.3" + "clsx" "^1.1.1" + "debug" "^4.2.0" + "fs-extra" "^10.0.0" + "klaw-sync" "^6.0.0" + "lunr" "^2.3.9" + "lunr-languages" "^1.4.0" + "mark.js" "^8.11.1" + "tslib" "^2.4.0" + +"@hapi/hoek@^9.0.0": + "integrity" "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + "resolved" "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz" + "version" "9.3.0" + +"@hapi/topo@^5.0.0": + "integrity" "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==" + "resolved" "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "@hapi/hoek" "^9.0.0" + +"@jest/schemas@^29.6.3": + "integrity" "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==" + "resolved" "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" + "version" "29.6.3" + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/types@^29.6.3": + "integrity" "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==" + "resolved" "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" + "version" "29.6.3" + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + "chalk" "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + "integrity" "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==" + "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz" + "version" "0.3.3" + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.1.0": + "integrity" "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==" + "resolved" "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz" + "version" "3.1.1" + +"@jridgewell/set-array@^1.0.1": + "integrity" "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" + "resolved" "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" + "version" "1.1.2" + +"@jridgewell/source-map@^0.3.3": + "integrity" "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==" + "resolved" "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz" + "version" "0.3.5" + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + "integrity" "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + "resolved" "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" + "version" "1.4.15" + +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": + "integrity" "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==" + "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz" + "version" "0.3.19" + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@leichtgewicht/ip-codec@^2.0.1": + "integrity" "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" + "resolved" "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz" + "version" "2.0.4" + +"@mdx-js/mdx@^1.6.22": + "integrity" "sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==" + "resolved" "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz" + "version" "1.6.22" + dependencies: + "@babel/core" "7.12.9" + "@babel/plugin-syntax-jsx" "7.12.1" + "@babel/plugin-syntax-object-rest-spread" "7.8.3" + "@mdx-js/util" "1.6.22" + "babel-plugin-apply-mdx-type-prop" "1.6.22" + "babel-plugin-extract-import-names" "1.6.22" + "camelcase-css" "2.0.1" + "detab" "2.0.4" + "hast-util-raw" "6.0.1" + "lodash.uniq" "4.5.0" + "mdast-util-to-hast" "10.0.1" + "remark-footnotes" "2.0.0" + "remark-mdx" "1.6.22" + "remark-parse" "8.0.3" + "remark-squeeze-paragraphs" "4.0.0" + "style-to-object" "0.3.0" + "unified" "9.2.0" + "unist-builder" "2.0.3" + "unist-util-visit" "2.0.3" + +"@mdx-js/react@^1.6.22", "@mdx-js/react@1.6.22": + "integrity" "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==" + "resolved" "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz" + "version" "1.6.22" + +"@mdx-js/util@1.6.22": + "integrity" "sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==" + "resolved" "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz" + "version" "1.6.22" + +"@node-rs/jieba-win32-x64-msvc@1.7.2": + "integrity" "sha512-2M+Um3woFF17sa8VBYQQ6E5PNMe9Kf9fdzmeDh/GzuNHXlxW4LyK9VTV8zchIv/bDNAR5Z85kfW4wASULUxvFQ==" + "resolved" "https://registry.npmjs.org/@node-rs/jieba-win32-x64-msvc/-/jieba-win32-x64-msvc-1.7.2.tgz" + "version" "1.7.2" + +"@node-rs/jieba@^1.6.0": + "integrity" "sha512-zGto08NDU+KWm670qVHYGTb0YTEJ0A97dwH3WCnnhyRYMqTbOXKC6OwTc/cjzfSJP1UDBSar9Ug9BlmWmEThWg==" + "resolved" "https://registry.npmjs.org/@node-rs/jieba/-/jieba-1.7.2.tgz" + "version" "1.7.2" + optionalDependencies: + "@node-rs/jieba-android-arm-eabi" "1.7.2" + "@node-rs/jieba-android-arm64" "1.7.2" + "@node-rs/jieba-darwin-arm64" "1.7.2" + "@node-rs/jieba-darwin-x64" "1.7.2" + "@node-rs/jieba-freebsd-x64" "1.7.2" + "@node-rs/jieba-linux-arm-gnueabihf" "1.7.2" + "@node-rs/jieba-linux-arm64-gnu" "1.7.2" + "@node-rs/jieba-linux-arm64-musl" "1.7.2" + "@node-rs/jieba-linux-x64-gnu" "1.7.2" + "@node-rs/jieba-linux-x64-musl" "1.7.2" + "@node-rs/jieba-win32-arm64-msvc" "1.7.2" + "@node-rs/jieba-win32-ia32-msvc" "1.7.2" + "@node-rs/jieba-win32-x64-msvc" "1.7.2" + +"@nodelib/fs.scandir@2.1.5": + "integrity" "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + "version" "2.1.5" + dependencies: + "@nodelib/fs.stat" "2.0.5" + "run-parallel" "^1.1.9" + +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": + "integrity" "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + "version" "2.0.5" + +"@nodelib/fs.walk@^1.2.3": + "integrity" "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + "version" "1.2.8" + dependencies: + "@nodelib/fs.scandir" "2.1.5" + "fastq" "^1.6.0" + +"@polka/url@^1.0.0-next.20": + "integrity" "sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==" + "resolved" "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.23.tgz" + "version" "1.0.0-next.23" + +"@sideway/address@^4.1.3": + "integrity" "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==" + "resolved" "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz" + "version" "4.1.4" + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.1": + "integrity" "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" + "resolved" "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz" + "version" "3.0.1" + +"@sideway/pinpoint@^2.0.0": + "integrity" "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + "resolved" "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz" + "version" "2.0.0" + +"@sinclair/typebox@^0.27.8": + "integrity" "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + "resolved" "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" + "version" "0.27.8" + +"@sindresorhus/is@^0.14.0": + "integrity" "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + "resolved" "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" + "version" "0.14.0" + +"@slorber/static-site-generator-webpack-plugin@^4.0.7": + "integrity" "sha512-Ug7x6z5lwrz0WqdnNFOMYrDQNTPAprvHLSh6+/fmml3qUiz6l5eq+2MzLKWtn/q5K5NpSiFsZTP/fck/3vjSxA==" + "resolved" "https://registry.npmjs.org/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.7.tgz" + "version" "4.0.7" + dependencies: + "eval" "^0.1.8" + "p-map" "^4.0.0" + "webpack-sources" "^3.2.2" + +"@svgr/babel-plugin-add-jsx-attribute@^6.5.1": + "integrity" "sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==" + "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz" + "version" "6.5.1" + +"@svgr/babel-plugin-remove-jsx-attribute@*": + "integrity" "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==" + "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz" + "version" "8.0.0" + +"@svgr/babel-plugin-remove-jsx-empty-expression@*": + "integrity" "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==" + "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz" + "version" "8.0.0" + +"@svgr/babel-plugin-replace-jsx-attribute-value@^6.5.1": + "integrity" "sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==" + "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz" + "version" "6.5.1" + +"@svgr/babel-plugin-svg-dynamic-title@^6.5.1": + "integrity" "sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==" + "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz" + "version" "6.5.1" + +"@svgr/babel-plugin-svg-em-dimensions@^6.5.1": + "integrity" "sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==" + "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz" + "version" "6.5.1" + +"@svgr/babel-plugin-transform-react-native-svg@^6.5.1": + "integrity" "sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==" + "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz" + "version" "6.5.1" + +"@svgr/babel-plugin-transform-svg-component@^6.5.1": + "integrity" "sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==" + "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz" + "version" "6.5.1" + +"@svgr/babel-preset@^6.5.1": + "integrity" "sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==" + "resolved" "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.5.1.tgz" + "version" "6.5.1" + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^6.5.1" + "@svgr/babel-plugin-remove-jsx-attribute" "*" + "@svgr/babel-plugin-remove-jsx-empty-expression" "*" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^6.5.1" + "@svgr/babel-plugin-svg-dynamic-title" "^6.5.1" + "@svgr/babel-plugin-svg-em-dimensions" "^6.5.1" + "@svgr/babel-plugin-transform-react-native-svg" "^6.5.1" + "@svgr/babel-plugin-transform-svg-component" "^6.5.1" + +"@svgr/core@*", "@svgr/core@^6.0.0", "@svgr/core@^6.3.1": + "integrity" "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==" + "resolved" "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz" + "version" "6.5.1" + dependencies: + "@babel/core" "^7.19.6" + "@svgr/babel-preset" "^6.5.1" + "@svgr/plugin-jsx" "^6.5.1" + "camelcase" "^6.2.0" + "cosmiconfig" "^7.0.1" + +"@svgr/hast-util-to-babel-ast@^6.5.1": + "integrity" "sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==" + "resolved" "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz" + "version" "6.5.1" + dependencies: + "@babel/types" "^7.20.0" + "entities" "^4.4.0" + +"@svgr/plugin-jsx@^6.3.1", "@svgr/plugin-jsx@^6.5.1": + "integrity" "sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==" + "resolved" "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz" + "version" "6.5.1" + dependencies: + "@babel/core" "^7.19.6" + "@svgr/babel-preset" "^6.5.1" + "@svgr/hast-util-to-babel-ast" "^6.5.1" + "svg-parser" "^2.0.4" + +"@svgr/plugin-svgo@^6.3.1": + "integrity" "sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==" + "resolved" "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz" + "version" "6.5.1" + dependencies: + "cosmiconfig" "^7.0.1" + "deepmerge" "^4.2.2" + "svgo" "^2.8.0" + +"@svgr/webpack@^6.2.1", "@svgr/webpack@6.3.1": + "integrity" "sha512-eODxwIUShLxSMaRjzJtrj9wg89D75JLczvWg9SaB5W+OtVTkiC1vdGd8+t+pf5fTlBOy4RRXAq7x1E3DUl3D0A==" + "resolved" "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.3.1.tgz" + "version" "6.3.1" + dependencies: + "@babel/core" "^7.18.5" + "@babel/plugin-transform-react-constant-elements" "^7.17.12" + "@babel/preset-env" "^7.18.2" + "@babel/preset-react" "^7.17.12" + "@babel/preset-typescript" "^7.17.12" + "@svgr/core" "^6.3.1" + "@svgr/plugin-jsx" "^6.3.1" + "@svgr/plugin-svgo" "^6.3.1" + +"@szmarczak/http-timer@^1.1.2": + "integrity" "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==" + "resolved" "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" + "version" "1.1.2" + dependencies: + "defer-to-connect" "^1.0.1" + +"@trysound/sax@0.2.0": + "integrity" "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" + "resolved" "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" + "version" "0.2.0" + +"@types/body-parser@*": + "integrity" "sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==" + "resolved" "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.3.tgz" + "version" "1.19.3" + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bonjour@^3.5.9": + "integrity" "sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg==" + "resolved" "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.11.tgz" + "version" "3.5.11" + dependencies: + "@types/node" "*" + +"@types/connect-history-api-fallback@^1.3.5": + "integrity" "sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==" + "resolved" "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz" + "version" "1.5.1" + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + "integrity" "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==" + "resolved" "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz" + "version" "3.4.36" + dependencies: + "@types/node" "*" + +"@types/eslint-scope@^3.7.3": + "integrity" "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==" + "resolved" "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz" + "version" "3.7.4" + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + "integrity" "sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==" + "resolved" "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz" + "version" "8.44.2" + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^1.0.0": + "integrity" "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" + "resolved" "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz" + "version" "1.0.1" + +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": + "integrity" "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==" + "resolved" "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz" + "version" "4.17.36" + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@*", "@types/express@^4.17.13": + "integrity" "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==" + "resolved" "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz" + "version" "4.17.17" + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/hast@^2.0.0": + "integrity" "sha512-47rJE80oqPmFdVDCD7IheXBrVdwuBgsYwoczFvKmwfo2Mzsnt+V9OONsYauFmICb6lQPpCuXYJWejBNs4pDJRg==" + "resolved" "https://registry.npmjs.org/@types/hast/-/hast-2.3.6.tgz" + "version" "2.3.6" + dependencies: + "@types/unist" "^2" + +"@types/history@^4.7.11": + "integrity" "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==" + "resolved" "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz" + "version" "4.7.11" + +"@types/html-minifier-terser@^6.0.0": + "integrity" "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" + "resolved" "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" + "version" "6.1.0" + +"@types/http-errors@*": + "integrity" "sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==" + "resolved" "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.2.tgz" + "version" "2.0.2" + +"@types/http-proxy@^1.17.8": + "integrity" "sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==" + "resolved" "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.12.tgz" + "version" "1.17.12" + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + "integrity" "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" + "resolved" "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" + "version" "2.0.4" + +"@types/istanbul-lib-report@*": + "integrity" "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==" + "resolved" "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + "integrity" "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==" + "resolved" "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + "integrity" "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==" + "resolved" "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz" + "version" "7.0.13" + +"@types/mdast@^3.0.0": + "integrity" "sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==" + "resolved" "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.12.tgz" + "version" "3.0.12" + dependencies: + "@types/unist" "^2" + +"@types/mime@*", "@types/mime@^1": + "integrity" "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" + "resolved" "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz" + "version" "1.3.2" + +"@types/node@*": + "integrity" "sha512-HksnYH4Ljr4VQgEy2lTStbCKv/P590tmPe5HqOnv9Gprffgv5WXAY+Y5Gqniu0GGqeTCUdBnzC3QSrzPkBkAMA==" + "resolved" "https://registry.npmjs.org/@types/node/-/node-20.6.3.tgz" + "version" "20.6.3" + +"@types/node@^17.0.5": + "integrity" "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" + "resolved" "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz" + "version" "17.0.45" + +"@types/parse-json@^4.0.0": + "integrity" "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + "resolved" "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" + "version" "4.0.0" + +"@types/parse5@^5.0.0": + "integrity" "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" + "resolved" "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz" + "version" "5.0.3" + +"@types/prop-types@*": + "integrity" "sha512-RK/kBbYOQQHLYj9Z95eh7S6t7gq4Ojt/NT8HTk8bWVhA5DaF+5SMnxHKkP4gPNN3wAZkKP+VjAf0ebtYzf+fxg==" + "resolved" "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.6.tgz" + "version" "15.7.6" + +"@types/qs@*": + "integrity" "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==" + "resolved" "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz" + "version" "6.9.8" + +"@types/range-parser@*": + "integrity" "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + "resolved" "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" + "version" "1.2.4" + +"@types/react-router-config@*", "@types/react-router-config@^5.0.6": + "integrity" "sha512-pFFVXUIydHlcJP6wJm7sDii5mD/bCmmAY0wQzq+M+uX7bqS95AQqHZWP1iNMKrWVQSuHIzj5qi9BvrtLX2/T4w==" + "resolved" "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.7.tgz" + "version" "5.0.7" + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router" "^5.1.0" + +"@types/react-router-dom@*": + "integrity" "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==" + "resolved" "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz" + "version" "5.3.3" + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router" "*" + +"@types/react-router@*", "@types/react-router@^5.1.0": + "integrity" "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==" + "resolved" "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz" + "version" "5.1.20" + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + +"@types/react@*", "@types/react@>= 16.8.0 < 19.0.0": + "integrity" "sha512-60fLTOLqzarLED2O3UQImc/lsNRgG0jE/a1mPW9KjMemY0LMITWEsbS4VvZ4p6rorEHd5YKxxmMKSDK505GHpA==" + "resolved" "https://registry.npmjs.org/@types/react/-/react-18.2.22.tgz" + "version" "18.2.22" + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + "csstype" "^3.0.2" + +"@types/retry@0.12.0": + "integrity" "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + "resolved" "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz" + "version" "0.12.0" + +"@types/sax@^1.2.1": + "integrity" "sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==" + "resolved" "https://registry.npmjs.org/@types/sax/-/sax-1.2.4.tgz" + "version" "1.2.4" + dependencies: + "@types/node" "*" + +"@types/scheduler@*": + "integrity" "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" + "resolved" "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz" + "version" "0.16.3" + +"@types/send@*": + "integrity" "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==" + "resolved" "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz" + "version" "0.17.1" + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-index@^1.9.1": + "integrity" "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==" + "resolved" "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz" + "version" "1.9.1" + dependencies: + "@types/express" "*" + +"@types/serve-static@*", "@types/serve-static@^1.13.10": + "integrity" "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==" + "resolved" "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz" + "version" "1.15.2" + dependencies: + "@types/http-errors" "*" + "@types/mime" "*" + "@types/node" "*" + +"@types/sockjs@^0.3.33": + "integrity" "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==" + "resolved" "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz" + "version" "0.3.33" + dependencies: + "@types/node" "*" + +"@types/unist@^2", "@types/unist@^2.0.0", "@types/unist@^2.0.2", "@types/unist@^2.0.3": + "integrity" "sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==" + "resolved" "https://registry.npmjs.org/@types/unist/-/unist-2.0.8.tgz" + "version" "2.0.8" + +"@types/ws@^8.5.5": + "integrity" "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==" + "resolved" "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz" + "version" "8.5.5" + dependencies: + "@types/node" "*" + +"@types/yargs-parser@*": + "integrity" "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" + "resolved" "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" + "version" "21.0.0" + +"@types/yargs@^17.0.8": + "integrity" "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==" + "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz" + "version" "17.0.24" + dependencies: + "@types/yargs-parser" "*" + +"@webassemblyjs/ast@^1.11.5", "@webassemblyjs/ast@1.11.6": + "integrity" "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz" + "version" "1.11.6" + dependencies: + "@webassemblyjs/helper-numbers" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + +"@webassemblyjs/floating-point-hex-parser@1.11.6": + "integrity" "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz" + "version" "1.11.6" + +"@webassemblyjs/helper-api-error@1.11.6": + "integrity" "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz" + "version" "1.11.6" + +"@webassemblyjs/helper-buffer@1.11.6": + "integrity" "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz" + "version" "1.11.6" + +"@webassemblyjs/helper-numbers@1.11.6": + "integrity" "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz" + "version" "1.11.6" + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.6": + "integrity" "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz" + "version" "1.11.6" + +"@webassemblyjs/helper-wasm-section@1.11.6": + "integrity" "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz" + "version" "1.11.6" + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + +"@webassemblyjs/ieee754@1.11.6": + "integrity" "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz" + "version" "1.11.6" + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.6": + "integrity" "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz" + "version" "1.11.6" + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.6": + "integrity" "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz" + "version" "1.11.6" + +"@webassemblyjs/wasm-edit@^1.11.5": + "integrity" "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz" + "version" "1.11.6" + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-opt" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + "@webassemblyjs/wast-printer" "1.11.6" + +"@webassemblyjs/wasm-gen@1.11.6": + "integrity" "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz" + "version" "1.11.6" + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wasm-opt@1.11.6": + "integrity" "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz" + "version" "1.11.6" + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + +"@webassemblyjs/wasm-parser@^1.11.5", "@webassemblyjs/wasm-parser@1.11.6": + "integrity" "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz" + "version" "1.11.6" + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wast-printer@1.11.6": + "integrity" "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz" + "version" "1.11.6" + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + "integrity" "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + "resolved" "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" + "version" "1.2.0" + +"@xtuc/long@4.2.2": + "integrity" "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + "resolved" "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" + "version" "4.2.2" + +"accepts@~1.3.4", "accepts@~1.3.5", "accepts@~1.3.8": + "integrity" "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==" + "resolved" "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" + "version" "1.3.8" + dependencies: + "mime-types" "~2.1.34" + "negotiator" "0.6.3" + +"acorn-import-assertions@^1.9.0": + "integrity" "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==" + "resolved" "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz" + "version" "1.9.0" + +"acorn-walk@^8.0.0": + "integrity" "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" + "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" + "version" "8.2.0" + +"acorn@^8", "acorn@^8.0.4", "acorn@^8.7.1", "acorn@^8.8.2": + "integrity" "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" + "version" "8.10.0" + +"address@^1.0.1", "address@^1.1.2": + "integrity" "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==" + "resolved" "https://registry.npmjs.org/address/-/address-1.2.2.tgz" + "version" "1.2.2" + +"aggregate-error@^3.0.0": + "integrity" "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==" + "resolved" "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "clean-stack" "^2.0.0" + "indent-string" "^4.0.0" + +"ajv-formats@^2.1.1": + "integrity" "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==" + "resolved" "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "ajv" "^8.0.0" + +"ajv-keywords@^3.4.1", "ajv-keywords@^3.5.2": + "integrity" "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" + "version" "3.5.2" + +"ajv-keywords@^5.1.0": + "integrity" "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==" + "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "fast-deep-equal" "^3.1.3" + +"ajv@^6.12.2", "ajv@^6.12.4", "ajv@^6.12.5", "ajv@^6.9.1": + "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + "version" "6.12.6" + dependencies: + "fast-deep-equal" "^3.1.1" + "fast-json-stable-stringify" "^2.0.0" + "json-schema-traverse" "^0.4.1" + "uri-js" "^4.2.2" + +"ajv@^8.0.0": + "integrity" "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" + "version" "8.12.0" + dependencies: + "fast-deep-equal" "^3.1.1" + "json-schema-traverse" "^1.0.0" + "require-from-string" "^2.0.2" + "uri-js" "^4.2.2" + +"ajv@^8.8.2", "ajv@^8.9.0": + "integrity" "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" + "version" "8.12.0" + dependencies: + "fast-deep-equal" "^3.1.1" + "json-schema-traverse" "^1.0.0" + "require-from-string" "^2.0.2" + "uri-js" "^4.2.2" + +"algoliasearch-helper@^3.10.0": + "integrity" "sha512-FjDSrjvQvJT/SKMW74nPgFpsoPUwZCzGbCqbp8HhBFfSk/OvNFxzCaCmuO0p7AWeLy1gD+muFwQEkBwcl5H4pg==" + "resolved" "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.14.2.tgz" + "version" "3.14.2" + dependencies: + "@algolia/events" "^4.0.1" + +"algoliasearch@^4.13.1", "algoliasearch@^4.19.1", "algoliasearch@>= 3.1 < 6", "algoliasearch@>= 4.9.1 < 6": + "integrity" "sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g==" + "resolved" "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.20.0.tgz" + "version" "4.20.0" + dependencies: + "@algolia/cache-browser-local-storage" "4.20.0" + "@algolia/cache-common" "4.20.0" + "@algolia/cache-in-memory" "4.20.0" + "@algolia/client-account" "4.20.0" + "@algolia/client-analytics" "4.20.0" + "@algolia/client-common" "4.20.0" + "@algolia/client-personalization" "4.20.0" + "@algolia/client-search" "4.20.0" + "@algolia/logger-common" "4.20.0" + "@algolia/logger-console" "4.20.0" + "@algolia/requester-browser-xhr" "4.20.0" + "@algolia/requester-common" "4.20.0" + "@algolia/requester-node-http" "4.20.0" + "@algolia/transporter" "4.20.0" + +"ansi-align@^3.0.0", "ansi-align@^3.0.1": + "integrity" "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==" + "resolved" "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "string-width" "^4.1.0" + +"ansi-html-community@^0.0.8": + "integrity" "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==" + "resolved" "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" + "version" "0.0.8" + +"ansi-regex@^5.0.1": + "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + "version" "5.0.1" + +"ansi-regex@^6.0.1": + "integrity" "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" + "version" "6.0.1" + +"ansi-styles@^3.2.1": + "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + "version" "3.2.1" + dependencies: + "color-convert" "^1.9.0" + +"ansi-styles@^4.0.0", "ansi-styles@^4.1.0": + "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "color-convert" "^2.0.1" + +"ansi-styles@^6.1.0": + "integrity" "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" + "version" "6.2.1" + +"anymatch@~3.1.2": + "integrity" "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==" + "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + "version" "3.1.3" + dependencies: + "normalize-path" "^3.0.0" + "picomatch" "^2.0.4" + +"arg@^5.0.0": + "integrity" "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + "resolved" "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz" + "version" "5.0.2" + +"argparse@^1.0.7": + "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" + "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + "version" "1.0.10" + dependencies: + "sprintf-js" "~1.0.2" + +"argparse@^2.0.1": + "integrity" "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "resolved" "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + "version" "2.0.1" + +"array-flatten@^2.1.2": + "integrity" "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" + "version" "2.1.2" + +"array-flatten@1.1.1": + "integrity" "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + "version" "1.1.1" + +"array-union@^2.1.0": + "integrity" "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + "resolved" "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + "version" "2.1.0" + +"asap@~2.0.3": + "integrity" "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + "resolved" "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" + "version" "2.0.6" + +"at-least-node@^1.0.0": + "integrity" "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" + "resolved" "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" + "version" "1.0.0" + +"autoprefixer@^10.4.12", "autoprefixer@^10.4.7": + "integrity" "sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==" + "resolved" "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.15.tgz" + "version" "10.4.15" + dependencies: + "browserslist" "^4.21.10" + "caniuse-lite" "^1.0.30001520" + "fraction.js" "^4.2.0" + "normalize-range" "^0.1.2" + "picocolors" "^1.0.0" + "postcss-value-parser" "^4.2.0" + +"axios@^0.25.0": + "integrity" "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==" + "resolved" "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz" + "version" "0.25.0" + dependencies: + "follow-redirects" "^1.14.7" + +"babel-loader@^8.2.5": + "integrity" "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==" + "resolved" "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz" + "version" "8.3.0" + dependencies: + "find-cache-dir" "^3.3.1" + "loader-utils" "^2.0.0" + "make-dir" "^3.1.0" + "schema-utils" "^2.6.5" + +"babel-plugin-apply-mdx-type-prop@1.6.22": + "integrity" "sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==" + "resolved" "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz" + "version" "1.6.22" + dependencies: + "@babel/helper-plugin-utils" "7.10.4" + "@mdx-js/util" "1.6.22" + +"babel-plugin-dynamic-import-node@^2.3.3": + "integrity" "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==" + "resolved" "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz" + "version" "2.3.3" + dependencies: + "object.assign" "^4.1.0" + +"babel-plugin-extract-import-names@1.6.22": + "integrity" "sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==" + "resolved" "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz" + "version" "1.6.22" + dependencies: + "@babel/helper-plugin-utils" "7.10.4" + +"babel-plugin-polyfill-corejs2@^0.4.5": + "integrity" "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==" + "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz" + "version" "0.4.5" + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.4.2" + "semver" "^6.3.1" + +"babel-plugin-polyfill-corejs3@^0.8.3": + "integrity" "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==" + "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz" + "version" "0.8.3" + dependencies: + "@babel/helper-define-polyfill-provider" "^0.4.2" + "core-js-compat" "^3.31.0" + +"babel-plugin-polyfill-regenerator@^0.5.2": + "integrity" "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==" + "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz" + "version" "0.5.2" + dependencies: + "@babel/helper-define-polyfill-provider" "^0.4.2" + +"bail@^1.0.0": + "integrity" "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==" + "resolved" "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz" + "version" "1.0.5" + +"balanced-match@^1.0.0": + "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + "version" "1.0.2" + +"base16@^1.0.0": + "integrity" "sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==" + "resolved" "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz" + "version" "1.0.0" + +"batch@0.6.1": + "integrity" "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" + "resolved" "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" + "version" "0.6.1" + +"big.js@^5.2.2": + "integrity" "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + "resolved" "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" + "version" "5.2.2" + +"binary-extensions@^2.0.0": + "integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + "version" "2.2.0" + +"body-parser@1.20.1": + "integrity" "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==" + "resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" + "version" "1.20.1" + dependencies: + "bytes" "3.1.2" + "content-type" "~1.0.4" + "debug" "2.6.9" + "depd" "2.0.0" + "destroy" "1.2.0" + "http-errors" "2.0.0" + "iconv-lite" "0.4.24" + "on-finished" "2.4.1" + "qs" "6.11.0" + "raw-body" "2.5.1" + "type-is" "~1.6.18" + "unpipe" "1.0.0" + +"bonjour-service@^1.0.11": + "integrity" "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==" + "resolved" "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "array-flatten" "^2.1.2" + "dns-equal" "^1.0.0" + "fast-deep-equal" "^3.1.3" + "multicast-dns" "^7.2.5" + +"boolbase@^1.0.0": + "integrity" "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + "resolved" "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" + "version" "1.0.0" + +"boxen@^5.0.0": + "integrity" "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==" + "resolved" "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "ansi-align" "^3.0.0" + "camelcase" "^6.2.0" + "chalk" "^4.1.0" + "cli-boxes" "^2.2.1" + "string-width" "^4.2.2" + "type-fest" "^0.20.2" + "widest-line" "^3.1.0" + "wrap-ansi" "^7.0.0" + +"boxen@^6.2.1": + "integrity" "sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==" + "resolved" "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz" + "version" "6.2.1" + dependencies: + "ansi-align" "^3.0.1" + "camelcase" "^6.2.0" + "chalk" "^4.1.2" + "cli-boxes" "^3.0.0" + "string-width" "^5.0.1" + "type-fest" "^2.5.0" + "widest-line" "^4.0.1" + "wrap-ansi" "^8.0.1" + +"brace-expansion@^1.1.7": + "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" + "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + "version" "1.1.11" + dependencies: + "balanced-match" "^1.0.0" + "concat-map" "0.0.1" + +"braces@^3.0.2", "braces@~3.0.2": + "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" + "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "fill-range" "^7.0.1" + +"browserslist@^4.0.0", "browserslist@^4.14.5", "browserslist@^4.18.1", "browserslist@^4.21.10", "browserslist@^4.21.4", "browserslist@^4.21.9", "browserslist@>= 4.21.0": + "integrity" "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==" + "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz" + "version" "4.21.10" + dependencies: + "caniuse-lite" "^1.0.30001517" + "electron-to-chromium" "^1.4.477" + "node-releases" "^2.0.13" + "update-browserslist-db" "^1.0.11" + +"buffer-from@^1.0.0": + "integrity" "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + "version" "1.1.2" + +"bytes@3.0.0": + "integrity" "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" + "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" + "version" "3.0.0" + +"bytes@3.1.2": + "integrity" "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" + "version" "3.1.2" + +"cacheable-request@^6.0.0": + "integrity" "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==" + "resolved" "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "clone-response" "^1.0.2" + "get-stream" "^5.1.0" + "http-cache-semantics" "^4.0.0" + "keyv" "^3.0.0" + "lowercase-keys" "^2.0.0" + "normalize-url" "^4.1.0" + "responselike" "^1.0.2" + +"call-bind@^1.0.0", "call-bind@^1.0.2": + "integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==" + "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "function-bind" "^1.1.1" + "get-intrinsic" "^1.0.2" + +"callsites@^3.0.0": + "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + "version" "3.1.0" + +"camel-case@^4.1.2": + "integrity" "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==" + "resolved" "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz" + "version" "4.1.2" + dependencies: + "pascal-case" "^3.1.2" + "tslib" "^2.0.3" + +"camelcase-css@2.0.1": + "integrity" "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" + "resolved" "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz" + "version" "2.0.1" + +"camelcase@^6.2.0": + "integrity" "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" + "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + "version" "6.3.0" + +"caniuse-api@^3.0.0": + "integrity" "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==" + "resolved" "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "browserslist" "^4.0.0" + "caniuse-lite" "^1.0.0" + "lodash.memoize" "^4.1.2" + "lodash.uniq" "^4.5.0" + +"caniuse-lite@^1.0.0", "caniuse-lite@^1.0.30001517", "caniuse-lite@^1.0.30001520": + "integrity" "sha512-HWJnhnID+0YMtGlzcp3T9drmBJUVDchPJ08tpUGFLs9CYlwWPH2uLgpHn8fND5pCgXVtnGS3H4QR9XLMHVNkHw==" + "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001538.tgz" + "version" "1.0.30001538" + +"ccount@^1.0.0": + "integrity" "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==" + "resolved" "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz" + "version" "1.1.0" + +"chalk@^2.4.2": + "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + "version" "2.4.2" + dependencies: + "ansi-styles" "^3.2.1" + "escape-string-regexp" "^1.0.5" + "supports-color" "^5.3.0" + +"chalk@^4.0.0", "chalk@^4.1.0", "chalk@^4.1.2": + "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + "version" "4.1.2" + dependencies: + "ansi-styles" "^4.1.0" + "supports-color" "^7.1.0" + +"character-entities-legacy@^1.0.0": + "integrity" "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==" + "resolved" "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz" + "version" "1.1.4" + +"character-entities@^1.0.0": + "integrity" "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==" + "resolved" "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz" + "version" "1.2.4" + +"character-reference-invalid@^1.0.0": + "integrity" "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==" + "resolved" "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz" + "version" "1.1.4" + +"cheerio-select@^2.1.0": + "integrity" "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==" + "resolved" "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "boolbase" "^1.0.0" + "css-select" "^5.1.0" + "css-what" "^6.1.0" + "domelementtype" "^2.3.0" + "domhandler" "^5.0.3" + "domutils" "^3.0.1" + +"cheerio@^1.0.0-rc.12", "cheerio@^1.0.0-rc.3": + "integrity" "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==" + "resolved" "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz" + "version" "1.0.0-rc.12" + dependencies: + "cheerio-select" "^2.1.0" + "dom-serializer" "^2.0.0" + "domhandler" "^5.0.3" + "domutils" "^3.0.1" + "htmlparser2" "^8.0.1" + "parse5" "^7.0.0" + "parse5-htmlparser2-tree-adapter" "^7.0.0" + +"chokidar@^3.4.2", "chokidar@^3.5.3": + "integrity" "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==" + "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" + "version" "3.5.3" + dependencies: + "anymatch" "~3.1.2" + "braces" "~3.0.2" + "glob-parent" "~5.1.2" + "is-binary-path" "~2.1.0" + "is-glob" "~4.0.1" + "normalize-path" "~3.0.0" + "readdirp" "~3.6.0" + optionalDependencies: + "fsevents" "~2.3.2" + +"chrome-trace-event@^1.0.2": + "integrity" "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" + "resolved" "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" + "version" "1.0.3" + +"ci-info@^2.0.0": + "integrity" "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" + "version" "2.0.0" + +"ci-info@^3.2.0": + "integrity" "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==" + "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz" + "version" "3.8.0" + +"clean-css@^5.2.2", "clean-css@^5.3.0": + "integrity" "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==" + "resolved" "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz" + "version" "5.3.2" + dependencies: + "source-map" "~0.6.0" + +"clean-stack@^2.0.0": + "integrity" "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + "resolved" "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" + "version" "2.2.0" + +"cli-boxes@^2.2.1": + "integrity" "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" + "resolved" "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz" + "version" "2.2.1" + +"cli-boxes@^3.0.0": + "integrity" "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==" + "resolved" "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz" + "version" "3.0.0" + +"cli-table3@^0.6.2": + "integrity" "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==" + "resolved" "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz" + "version" "0.6.3" + dependencies: + "string-width" "^4.2.0" + optionalDependencies: + "@colors/colors" "1.5.0" + +"clone-deep@^4.0.1": + "integrity" "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==" + "resolved" "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "is-plain-object" "^2.0.4" + "kind-of" "^6.0.2" + "shallow-clone" "^3.0.0" + +"clone-response@^1.0.2": + "integrity" "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==" + "resolved" "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "mimic-response" "^1.0.0" + +"clsx@^1.1.1", "clsx@^1.2.1", "clsx@1.2.1": + "integrity" "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==" + "resolved" "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" + "version" "1.2.1" + +"collapse-white-space@^1.0.2": + "integrity" "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==" + "resolved" "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz" + "version" "1.0.6" + +"color-convert@^1.9.0": + "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" + "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + "version" "1.9.3" + dependencies: + "color-name" "1.1.3" + +"color-convert@^2.0.1": + "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" + "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "color-name" "~1.1.4" + +"color-name@~1.1.4": + "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + "version" "1.1.4" + +"color-name@1.1.3": + "integrity" "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + "version" "1.1.3" + +"colord@^2.9.1": + "integrity" "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + "resolved" "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" + "version" "2.9.3" + +"colorette@^2.0.10": + "integrity" "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + "resolved" "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" + "version" "2.0.20" + +"combine-promises@^1.1.0": + "integrity" "sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==" + "resolved" "https://registry.npmjs.org/combine-promises/-/combine-promises-1.2.0.tgz" + "version" "1.2.0" + +"comma-separated-tokens@^1.0.0": + "integrity" "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==" + "resolved" "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz" + "version" "1.0.8" + +"commander@^2.20.0": + "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "resolved" "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + "version" "2.20.3" + +"commander@^5.1.0": + "integrity" "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" + "resolved" "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz" + "version" "5.1.0" + +"commander@^7.2.0": + "integrity" "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + "resolved" "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" + "version" "7.2.0" + +"commander@^8.3.0": + "integrity" "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" + "resolved" "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" + "version" "8.3.0" + +"commondir@^1.0.1": + "integrity" "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + "resolved" "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" + "version" "1.0.1" + +"compressible@~2.0.16": + "integrity" "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==" + "resolved" "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" + "version" "2.0.18" + dependencies: + "mime-db" ">= 1.43.0 < 2" + +"compression@^1.7.4": + "integrity" "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==" + "resolved" "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" + "version" "1.7.4" + dependencies: + "accepts" "~1.3.5" + "bytes" "3.0.0" + "compressible" "~2.0.16" + "debug" "2.6.9" + "on-headers" "~1.0.2" + "safe-buffer" "5.1.2" + "vary" "~1.1.2" + +"concat-map@0.0.1": + "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "version" "0.0.1" + +"configstore@^5.0.1": + "integrity" "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==" + "resolved" "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "dot-prop" "^5.2.0" + "graceful-fs" "^4.1.2" + "make-dir" "^3.0.0" + "unique-string" "^2.0.0" + "write-file-atomic" "^3.0.0" + "xdg-basedir" "^4.0.0" + +"connect-history-api-fallback@^2.0.0": + "integrity" "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==" + "resolved" "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz" + "version" "2.0.0" + +"consola@^2.15.3": + "integrity" "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" + "resolved" "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz" + "version" "2.15.3" + +"content-disposition@0.5.2": + "integrity" "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==" + "resolved" "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz" + "version" "0.5.2" + +"content-disposition@0.5.4": + "integrity" "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==" + "resolved" "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" + "version" "0.5.4" + dependencies: + "safe-buffer" "5.2.1" + +"content-type@~1.0.4": + "integrity" "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" + "resolved" "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" + "version" "1.0.5" + +"convert-source-map@^1.7.0": + "integrity" "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" + "version" "1.9.0" + +"cookie-signature@1.0.6": + "integrity" "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + "resolved" "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + "version" "1.0.6" + +"cookie@0.5.0": + "integrity" "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" + "version" "0.5.0" + +"copy-text-to-clipboard@^3.0.1": + "integrity" "sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==" + "resolved" "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz" + "version" "3.2.0" + +"copy-webpack-plugin@^11.0.0": + "integrity" "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==" + "resolved" "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz" + "version" "11.0.0" + dependencies: + "fast-glob" "^3.2.11" + "glob-parent" "^6.0.1" + "globby" "^13.1.1" + "normalize-path" "^3.0.0" + "schema-utils" "^4.0.0" + "serialize-javascript" "^6.0.0" + +"core-js-compat@^3.31.0": + "integrity" "sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ==" + "resolved" "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.2.tgz" + "version" "3.32.2" + dependencies: + "browserslist" "^4.21.10" + +"core-js-pure@^3.30.2": + "integrity" "sha512-Y2rxThOuNywTjnX/PgA5vWM6CZ9QB9sz9oGeCixV8MqXZO70z/5SHzf9EeBrEBK0PN36DnEBBu9O/aGWzKuMZQ==" + "resolved" "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.32.2.tgz" + "version" "3.32.2" + +"core-js@^3.23.3": + "integrity" "sha512-pxXSw1mYZPDGvTQqEc5vgIb83jGQKFGYWY76z4a7weZXUolw3G+OvpZqSRcfYOoOVUQJYEPsWeQK8pKEnUtWxQ==" + "resolved" "https://registry.npmjs.org/core-js/-/core-js-3.32.2.tgz" + "version" "3.32.2" + +"core-util-is@~1.0.0": + "integrity" "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + "version" "1.0.3" + +"cosmiconfig@^6.0.0": + "integrity" "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==" + "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "@types/parse-json" "^4.0.0" + "import-fresh" "^3.1.0" + "parse-json" "^5.0.0" + "path-type" "^4.0.0" + "yaml" "^1.7.2" + +"cosmiconfig@^7.0.1": + "integrity" "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==" + "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz" + "version" "7.1.0" + dependencies: + "@types/parse-json" "^4.0.0" + "import-fresh" "^3.2.1" + "parse-json" "^5.0.0" + "path-type" "^4.0.0" + "yaml" "^1.10.0" + +"cosmiconfig@^8.2.0": + "integrity" "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==" + "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz" + "version" "8.3.6" + dependencies: + "import-fresh" "^3.3.0" + "js-yaml" "^4.1.0" + "parse-json" "^5.2.0" + "path-type" "^4.0.0" + +"cross-fetch@^3.1.5": + "integrity" "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==" + "resolved" "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz" + "version" "3.1.8" + dependencies: + "node-fetch" "^2.6.12" + +"cross-spawn@^7.0.3": + "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" + "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + "version" "7.0.3" + dependencies: + "path-key" "^3.1.0" + "shebang-command" "^2.0.0" + "which" "^2.0.1" + +"crypto-random-string@^2.0.0": + "integrity" "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" + "resolved" "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz" + "version" "2.0.0" + +"css-declaration-sorter@^6.3.1": + "integrity" "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==" + "resolved" "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz" + "version" "6.4.1" + +"css-loader@^6.7.1": + "integrity" "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==" + "resolved" "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz" + "version" "6.8.1" + dependencies: + "icss-utils" "^5.1.0" + "postcss" "^8.4.21" + "postcss-modules-extract-imports" "^3.0.0" + "postcss-modules-local-by-default" "^4.0.3" + "postcss-modules-scope" "^3.0.0" + "postcss-modules-values" "^4.0.0" + "postcss-value-parser" "^4.2.0" + "semver" "^7.3.8" + +"css-minimizer-webpack-plugin@^4.0.0": + "integrity" "sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==" + "resolved" "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.2.tgz" + "version" "4.2.2" + dependencies: + "cssnano" "^5.1.8" + "jest-worker" "^29.1.2" + "postcss" "^8.4.17" + "schema-utils" "^4.0.0" + "serialize-javascript" "^6.0.0" + "source-map" "^0.6.1" + +"css-select@^4.1.3": + "integrity" "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==" + "resolved" "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "boolbase" "^1.0.0" + "css-what" "^6.0.1" + "domhandler" "^4.3.1" + "domutils" "^2.8.0" + "nth-check" "^2.0.1" + +"css-select@^5.1.0": + "integrity" "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==" + "resolved" "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "boolbase" "^1.0.0" + "css-what" "^6.1.0" + "domhandler" "^5.0.2" + "domutils" "^3.0.1" + "nth-check" "^2.0.1" + +"css-tree@^1.1.2", "css-tree@^1.1.3": + "integrity" "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==" + "resolved" "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" + "version" "1.1.3" + dependencies: + "mdn-data" "2.0.14" + "source-map" "^0.6.1" + +"css-what@^6.0.1", "css-what@^6.1.0": + "integrity" "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" + "resolved" "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" + "version" "6.1.0" + +"cssesc@^3.0.0": + "integrity" "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + "resolved" "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" + "version" "3.0.0" + +"cssnano-preset-advanced@^5.3.8": + "integrity" "sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ==" + "resolved" "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.10.tgz" + "version" "5.3.10" + dependencies: + "autoprefixer" "^10.4.12" + "cssnano-preset-default" "^5.2.14" + "postcss-discard-unused" "^5.1.0" + "postcss-merge-idents" "^5.1.1" + "postcss-reduce-idents" "^5.2.0" + "postcss-zindex" "^5.1.0" + +"cssnano-preset-default@^5.2.14": + "integrity" "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==" + "resolved" "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz" + "version" "5.2.14" + dependencies: + "css-declaration-sorter" "^6.3.1" + "cssnano-utils" "^3.1.0" + "postcss-calc" "^8.2.3" + "postcss-colormin" "^5.3.1" + "postcss-convert-values" "^5.1.3" + "postcss-discard-comments" "^5.1.2" + "postcss-discard-duplicates" "^5.1.0" + "postcss-discard-empty" "^5.1.1" + "postcss-discard-overridden" "^5.1.0" + "postcss-merge-longhand" "^5.1.7" + "postcss-merge-rules" "^5.1.4" + "postcss-minify-font-values" "^5.1.0" + "postcss-minify-gradients" "^5.1.1" + "postcss-minify-params" "^5.1.4" + "postcss-minify-selectors" "^5.2.1" + "postcss-normalize-charset" "^5.1.0" + "postcss-normalize-display-values" "^5.1.0" + "postcss-normalize-positions" "^5.1.1" + "postcss-normalize-repeat-style" "^5.1.1" + "postcss-normalize-string" "^5.1.0" + "postcss-normalize-timing-functions" "^5.1.0" + "postcss-normalize-unicode" "^5.1.1" + "postcss-normalize-url" "^5.1.0" + "postcss-normalize-whitespace" "^5.1.1" + "postcss-ordered-values" "^5.1.3" + "postcss-reduce-initial" "^5.1.2" + "postcss-reduce-transforms" "^5.1.0" + "postcss-svgo" "^5.1.0" + "postcss-unique-selectors" "^5.1.1" + +"cssnano-utils@^3.1.0": + "integrity" "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==" + "resolved" "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz" + "version" "3.1.0" + +"cssnano@^5.1.12", "cssnano@^5.1.8": + "integrity" "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==" + "resolved" "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz" + "version" "5.1.15" + dependencies: + "cssnano-preset-default" "^5.2.14" + "lilconfig" "^2.0.3" + "yaml" "^1.10.2" + +"csso@^4.2.0": + "integrity" "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==" + "resolved" "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz" + "version" "4.2.0" + dependencies: + "css-tree" "^1.1.2" + +"csstype@^3.0.2": + "integrity" "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + "resolved" "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz" + "version" "3.1.2" + +"debug@^2.6.0": + "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" + "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + "version" "2.6.9" + dependencies: + "ms" "2.0.0" + +"debug@^4.1.0", "debug@^4.1.1", "debug@^4.2.0", "debug@4": + "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + "version" "4.3.4" + dependencies: + "ms" "2.1.2" + +"debug@2.6.9": + "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" + "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + "version" "2.6.9" + dependencies: + "ms" "2.0.0" + +"decompress-response@^3.3.0": + "integrity" "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==" + "resolved" "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "mimic-response" "^1.0.0" + +"deep-extend@^0.6.0": + "integrity" "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + "resolved" "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" + "version" "0.6.0" + +"deepmerge@^4.2.2": + "integrity" "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" + "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" + "version" "4.3.1" + +"default-gateway@^6.0.3": + "integrity" "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==" + "resolved" "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz" + "version" "6.0.3" + dependencies: + "execa" "^5.0.0" + +"defer-to-connect@^1.0.1": + "integrity" "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + "resolved" "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" + "version" "1.1.3" + +"define-data-property@^1.0.1": + "integrity" "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==" + "resolved" "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "get-intrinsic" "^1.2.1" + "gopd" "^1.0.1" + "has-property-descriptors" "^1.0.0" + +"define-lazy-prop@^2.0.0": + "integrity" "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" + "resolved" "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" + "version" "2.0.0" + +"define-properties@^1.1.4": + "integrity" "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==" + "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz" + "version" "1.2.1" + dependencies: + "define-data-property" "^1.0.1" + "has-property-descriptors" "^1.0.0" + "object-keys" "^1.1.1" + +"del@^6.1.1": + "integrity" "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==" + "resolved" "https://registry.npmjs.org/del/-/del-6.1.1.tgz" + "version" "6.1.1" + dependencies: + "globby" "^11.0.1" + "graceful-fs" "^4.2.4" + "is-glob" "^4.0.1" + "is-path-cwd" "^2.2.0" + "is-path-inside" "^3.0.2" + "p-map" "^4.0.0" + "rimraf" "^3.0.2" + "slash" "^3.0.0" + +"depd@~1.1.2": + "integrity" "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" + "resolved" "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" + "version" "1.1.2" + +"depd@2.0.0": + "integrity" "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + "resolved" "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + "version" "2.0.0" + +"destroy@1.2.0": + "integrity" "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + "resolved" "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" + "version" "1.2.0" + +"detab@2.0.4": + "integrity" "sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==" + "resolved" "https://registry.npmjs.org/detab/-/detab-2.0.4.tgz" + "version" "2.0.4" + dependencies: + "repeat-string" "^1.5.4" + +"detect-node@^2.0.4": + "integrity" "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + "resolved" "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" + "version" "2.1.0" + +"detect-port-alt@^1.1.6": + "integrity" "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==" + "resolved" "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz" + "version" "1.1.6" + dependencies: + "address" "^1.0.1" + "debug" "^2.6.0" + +"detect-port@^1.3.0": + "integrity" "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==" + "resolved" "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz" + "version" "1.5.1" + dependencies: + "address" "^1.0.1" + "debug" "4" + +"dir-glob@^3.0.1": + "integrity" "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==" + "resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "path-type" "^4.0.0" + +"dns-equal@^1.0.0": + "integrity" "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" + "resolved" "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" + "version" "1.0.0" + +"dns-packet@^5.2.2": + "integrity" "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==" + "resolved" "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz" + "version" "5.6.1" + dependencies: + "@leichtgewicht/ip-codec" "^2.0.1" + +"dom-converter@^0.2.0": + "integrity" "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==" + "resolved" "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz" + "version" "0.2.0" + dependencies: + "utila" "~0.4" + +"dom-serializer@^1.0.1": + "integrity" "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==" + "resolved" "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" + "version" "1.4.1" + dependencies: + "domelementtype" "^2.0.1" + "domhandler" "^4.2.0" + "entities" "^2.0.0" + +"dom-serializer@^2.0.0": + "integrity" "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==" + "resolved" "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "domelementtype" "^2.3.0" + "domhandler" "^5.0.2" + "entities" "^4.2.0" + +"domelementtype@^2.0.1", "domelementtype@^2.2.0", "domelementtype@^2.3.0": + "integrity" "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" + "resolved" "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" + "version" "2.3.0" + +"domhandler@^4.0.0", "domhandler@^4.2.0", "domhandler@^4.3.1": + "integrity" "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==" + "resolved" "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" + "version" "4.3.1" + dependencies: + "domelementtype" "^2.2.0" + +"domhandler@^5.0.2", "domhandler@^5.0.3": + "integrity" "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==" + "resolved" "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" + "version" "5.0.3" + dependencies: + "domelementtype" "^2.3.0" + +"domutils@^2.5.2", "domutils@^2.8.0": + "integrity" "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==" + "resolved" "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" + "version" "2.8.0" + dependencies: + "dom-serializer" "^1.0.1" + "domelementtype" "^2.2.0" + "domhandler" "^4.2.0" + +"domutils@^3.0.1": + "integrity" "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==" + "resolved" "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "dom-serializer" "^2.0.0" + "domelementtype" "^2.3.0" + "domhandler" "^5.0.3" + +"dot-case@^3.0.4": + "integrity" "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==" + "resolved" "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "no-case" "^3.0.4" + "tslib" "^2.0.3" + +"dot-prop@^5.2.0": + "integrity" "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==" + "resolved" "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" + "version" "5.3.0" + dependencies: + "is-obj" "^2.0.0" + +"duplexer@^0.1.2": + "integrity" "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + "resolved" "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" + "version" "0.1.2" + +"duplexer3@^0.1.4": + "integrity" "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" + "resolved" "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz" + "version" "0.1.5" + +"eastasianwidth@^0.2.0": + "integrity" "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + "resolved" "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" + "version" "0.2.0" + +"ee-first@1.1.1": + "integrity" "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + "resolved" "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + "version" "1.1.1" + +"electron-to-chromium@^1.4.477": + "integrity" "sha512-GIZ620hDK4YmIqAWkscG4W6RwY6gOx1y5J6f4JUQwctiJrqH2oxZYU4mXHi35oV32tr630UcepBzSBGJ/WYcZA==" + "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.525.tgz" + "version" "1.4.525" + +"emoji-regex@^8.0.0": + "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + "version" "8.0.0" + +"emoji-regex@^9.2.2": + "integrity" "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" + "version" "9.2.2" + +"emojis-list@^3.0.0": + "integrity" "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + "resolved" "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" + "version" "3.0.0" + +"emoticon@^3.2.0": + "integrity" "sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg==" + "resolved" "https://registry.npmjs.org/emoticon/-/emoticon-3.2.0.tgz" + "version" "3.2.0" + +"encodeurl@~1.0.2": + "integrity" "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + "resolved" "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + "version" "1.0.2" + +"end-of-stream@^1.1.0": + "integrity" "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==" + "resolved" "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" + "version" "1.4.4" + dependencies: + "once" "^1.4.0" + +"enhanced-resolve@^5.15.0": + "integrity" "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==" + "resolved" "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz" + "version" "5.15.0" + dependencies: + "graceful-fs" "^4.2.4" + "tapable" "^2.2.0" + +"entities@^2.0.0": + "integrity" "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + "resolved" "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" + "version" "2.2.0" + +"entities@^4.2.0", "entities@^4.4.0": + "integrity" "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" + "resolved" "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" + "version" "4.5.0" + +"error-ex@^1.3.1": + "integrity" "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==" + "resolved" "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + "version" "1.3.2" + dependencies: + "is-arrayish" "^0.2.1" + +"es-module-lexer@^1.2.1": + "integrity" "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==" + "resolved" "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz" + "version" "1.3.1" + +"escalade@^3.1.1": + "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + "version" "3.1.1" + +"escape-goat@^2.0.0": + "integrity" "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" + "resolved" "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz" + "version" "2.1.1" + +"escape-html@^1.0.3", "escape-html@~1.0.3": + "integrity" "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "resolved" "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + "version" "1.0.3" + +"escape-string-regexp@^1.0.5": + "integrity" "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + "version" "1.0.5" + +"escape-string-regexp@^4.0.0": + "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + "version" "4.0.0" + +"eslint-scope@5.1.1": + "integrity" "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==" + "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "esrecurse" "^4.3.0" + "estraverse" "^4.1.1" + +"esprima@^4.0.0": + "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + "version" "4.0.1" + +"esrecurse@^4.3.0": + "integrity" "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" + "resolved" "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "estraverse" "^5.2.0" + +"estraverse@^4.1.1": + "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + "version" "4.3.0" + +"estraverse@^5.2.0": + "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + "version" "5.3.0" + +"esutils@^2.0.2": + "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + "version" "2.0.3" + +"eta@^2.0.0": + "integrity" "sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==" + "resolved" "https://registry.npmjs.org/eta/-/eta-2.2.0.tgz" + "version" "2.2.0" + +"etag@~1.8.1": + "integrity" "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + "resolved" "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + "version" "1.8.1" + +"eval@^0.1.8": + "integrity" "sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==" + "resolved" "https://registry.npmjs.org/eval/-/eval-0.1.8.tgz" + "version" "0.1.8" + dependencies: + "@types/node" "*" + "require-like" ">= 0.1.1" + +"eventemitter3@^4.0.0": + "integrity" "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" + "version" "4.0.7" + +"events@^3.2.0": + "integrity" "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + "resolved" "https://registry.npmjs.org/events/-/events-3.3.0.tgz" + "version" "3.3.0" + +"execa@^5.0.0": + "integrity" "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==" + "resolved" "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "cross-spawn" "^7.0.3" + "get-stream" "^6.0.0" + "human-signals" "^2.1.0" + "is-stream" "^2.0.0" + "merge-stream" "^2.0.0" + "npm-run-path" "^4.0.1" + "onetime" "^5.1.2" + "signal-exit" "^3.0.3" + "strip-final-newline" "^2.0.0" + +"express@^4.17.3": + "integrity" "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==" + "resolved" "https://registry.npmjs.org/express/-/express-4.18.2.tgz" + "version" "4.18.2" + dependencies: + "accepts" "~1.3.8" + "array-flatten" "1.1.1" + "body-parser" "1.20.1" + "content-disposition" "0.5.4" + "content-type" "~1.0.4" + "cookie" "0.5.0" + "cookie-signature" "1.0.6" + "debug" "2.6.9" + "depd" "2.0.0" + "encodeurl" "~1.0.2" + "escape-html" "~1.0.3" + "etag" "~1.8.1" + "finalhandler" "1.2.0" + "fresh" "0.5.2" + "http-errors" "2.0.0" + "merge-descriptors" "1.0.1" + "methods" "~1.1.2" + "on-finished" "2.4.1" + "parseurl" "~1.3.3" + "path-to-regexp" "0.1.7" + "proxy-addr" "~2.0.7" + "qs" "6.11.0" + "range-parser" "~1.2.1" + "safe-buffer" "5.2.1" + "send" "0.18.0" + "serve-static" "1.15.0" + "setprototypeof" "1.2.0" + "statuses" "2.0.1" + "type-is" "~1.6.18" + "utils-merge" "1.0.1" + "vary" "~1.1.2" + +"extend-shallow@^2.0.1": + "integrity" "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==" + "resolved" "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "is-extendable" "^0.1.0" + +"extend@^3.0.0": + "integrity" "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "resolved" "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" + "version" "3.0.2" + +"fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3": + "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + "version" "3.1.3" + +"fast-glob@^3.2.11", "fast-glob@^3.2.9", "fast-glob@^3.3.0": + "integrity" "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==" + "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz" + "version" "3.3.1" + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + "glob-parent" "^5.1.2" + "merge2" "^1.3.0" + "micromatch" "^4.0.4" + +"fast-json-stable-stringify@^2.0.0": + "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + "version" "2.1.0" + +"fast-url-parser@1.1.3": + "integrity" "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==" + "resolved" "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz" + "version" "1.1.3" + dependencies: + "punycode" "^1.3.2" + +"fastq@^1.6.0": + "integrity" "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==" + "resolved" "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" + "version" "1.15.0" + dependencies: + "reusify" "^1.0.4" + +"faye-websocket@^0.11.3": + "integrity" "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==" + "resolved" "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" + "version" "0.11.4" + dependencies: + "websocket-driver" ">=0.5.1" + +"fbemitter@^3.0.0": + "integrity" "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==" + "resolved" "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "fbjs" "^3.0.0" + +"fbjs-css-vars@^1.0.0": + "integrity" "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" + "resolved" "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz" + "version" "1.0.2" + +"fbjs@^3.0.0", "fbjs@^3.0.1": + "integrity" "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==" + "resolved" "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz" + "version" "3.0.5" + dependencies: + "cross-fetch" "^3.1.5" + "fbjs-css-vars" "^1.0.0" + "loose-envify" "^1.0.0" + "object-assign" "^4.1.0" + "promise" "^7.1.1" + "setimmediate" "^1.0.5" + "ua-parser-js" "^1.0.35" + +"feed@^4.2.2": + "integrity" "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==" + "resolved" "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz" + "version" "4.2.2" + dependencies: + "xml-js" "^1.6.11" + +"file-loader@*", "file-loader@^6.2.0", "file-loader@6.2.0": + "integrity" "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==" + "resolved" "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz" + "version" "6.2.0" + dependencies: + "loader-utils" "^2.0.0" + "schema-utils" "^3.0.0" + +"filesize@^8.0.6": + "integrity" "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==" + "resolved" "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz" + "version" "8.0.7" + +"fill-range@^7.0.1": + "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" + "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + "version" "7.0.1" + dependencies: + "to-regex-range" "^5.0.1" + +"finalhandler@1.2.0": + "integrity" "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==" + "resolved" "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "debug" "2.6.9" + "encodeurl" "~1.0.2" + "escape-html" "~1.0.3" + "on-finished" "2.4.1" + "parseurl" "~1.3.3" + "statuses" "2.0.1" + "unpipe" "~1.0.0" + +"find-cache-dir@^3.3.1": + "integrity" "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==" + "resolved" "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz" + "version" "3.3.2" + dependencies: + "commondir" "^1.0.1" + "make-dir" "^3.0.2" + "pkg-dir" "^4.1.0" + +"find-up@^3.0.0": + "integrity" "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "locate-path" "^3.0.0" + +"find-up@^4.0.0": + "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "locate-path" "^5.0.0" + "path-exists" "^4.0.0" + +"find-up@^5.0.0": + "integrity" "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "locate-path" "^6.0.0" + "path-exists" "^4.0.0" + +"flux@^4.0.1": + "integrity" "sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==" + "resolved" "https://registry.npmjs.org/flux/-/flux-4.0.4.tgz" + "version" "4.0.4" + dependencies: + "fbemitter" "^3.0.0" + "fbjs" "^3.0.1" + +"follow-redirects@^1.0.0", "follow-redirects@^1.14.7": + "integrity" "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==" + "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz" + "version" "1.15.3" + +"fork-ts-checker-webpack-plugin@^6.5.0": + "integrity" "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==" + "resolved" "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz" + "version" "6.5.3" + dependencies: + "@babel/code-frame" "^7.8.3" + "@types/json-schema" "^7.0.5" + "chalk" "^4.1.0" + "chokidar" "^3.4.2" + "cosmiconfig" "^6.0.0" + "deepmerge" "^4.2.2" + "fs-extra" "^9.0.0" + "glob" "^7.1.6" + "memfs" "^3.1.2" + "minimatch" "^3.0.4" + "schema-utils" "2.7.0" + "semver" "^7.3.2" + "tapable" "^1.0.0" + +"forwarded@0.2.0": + "integrity" "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + "resolved" "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" + "version" "0.2.0" + +"fraction.js@^4.2.0": + "integrity" "sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==" + "resolved" "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.6.tgz" + "version" "4.3.6" + +"fresh@0.5.2": + "integrity" "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + "resolved" "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + "version" "0.5.2" + +"fs-extra@^10.0.0", "fs-extra@^10.1.0": + "integrity" "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==" + "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" + "version" "10.1.0" + dependencies: + "graceful-fs" "^4.2.0" + "jsonfile" "^6.0.1" + "universalify" "^2.0.0" + +"fs-extra@^9.0.0": + "integrity" "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==" + "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" + "version" "9.1.0" + dependencies: + "at-least-node" "^1.0.0" + "graceful-fs" "^4.2.0" + "jsonfile" "^6.0.1" + "universalify" "^2.0.0" + +"fs-monkey@^1.0.4": + "integrity" "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==" + "resolved" "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz" + "version" "1.0.4" + +"fs.realpath@^1.0.0": + "integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + "version" "1.0.0" + +"function-bind@^1.1.1": + "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + "version" "1.1.1" + +"gensync@^1.0.0-beta.1", "gensync@^1.0.0-beta.2": + "integrity" "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + "resolved" "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + "version" "1.0.0-beta.2" + +"get-intrinsic@^1.0.2", "get-intrinsic@^1.1.1", "get-intrinsic@^1.1.3", "get-intrinsic@^1.2.1": + "integrity" "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==" + "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz" + "version" "1.2.1" + dependencies: + "function-bind" "^1.1.1" + "has" "^1.0.3" + "has-proto" "^1.0.1" + "has-symbols" "^1.0.3" + +"get-own-enumerable-property-symbols@^3.0.0": + "integrity" "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + "resolved" "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz" + "version" "3.0.2" + +"get-stream@^4.1.0": + "integrity" "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==" + "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "pump" "^3.0.0" + +"get-stream@^5.1.0": + "integrity" "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==" + "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" + "version" "5.2.0" + dependencies: + "pump" "^3.0.0" + +"get-stream@^6.0.0": + "integrity" "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + "version" "6.0.1" + +"github-slugger@^1.4.0": + "integrity" "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==" + "resolved" "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz" + "version" "1.5.0" + +"glob-parent@^5.1.2", "glob-parent@~5.1.2": + "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "is-glob" "^4.0.1" + +"glob-parent@^6.0.1": + "integrity" "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + "version" "6.0.2" + dependencies: + "is-glob" "^4.0.3" + +"glob-to-regexp@^0.4.1": + "integrity" "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + "resolved" "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" + "version" "0.4.1" + +"glob@^7.0.0", "glob@^7.1.3", "glob@^7.1.6": + "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" + "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + "version" "7.2.3" + dependencies: + "fs.realpath" "^1.0.0" + "inflight" "^1.0.4" + "inherits" "2" + "minimatch" "^3.1.1" + "once" "^1.3.0" + "path-is-absolute" "^1.0.0" + +"global-dirs@^3.0.0": + "integrity" "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==" + "resolved" "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "ini" "2.0.0" + +"global-modules@^2.0.0": + "integrity" "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==" + "resolved" "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "global-prefix" "^3.0.0" + +"global-prefix@^3.0.0": + "integrity" "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==" + "resolved" "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "ini" "^1.3.5" + "kind-of" "^6.0.2" + "which" "^1.3.1" + +"globals@^11.1.0": + "integrity" "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + "resolved" "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + "version" "11.12.0" + +"globby@^11.0.1", "globby@^11.0.4", "globby@^11.1.0": + "integrity" "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==" + "resolved" "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + "version" "11.1.0" + dependencies: + "array-union" "^2.1.0" + "dir-glob" "^3.0.1" + "fast-glob" "^3.2.9" + "ignore" "^5.2.0" + "merge2" "^1.4.1" + "slash" "^3.0.0" + +"globby@^13.1.1": + "integrity" "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==" + "resolved" "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz" + "version" "13.2.2" + dependencies: + "dir-glob" "^3.0.1" + "fast-glob" "^3.3.0" + "ignore" "^5.2.4" + "merge2" "^1.4.1" + "slash" "^4.0.0" + +"gopd@^1.0.1": + "integrity" "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==" + "resolved" "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "get-intrinsic" "^1.1.3" + +"got@^9.6.0": + "integrity" "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==" + "resolved" "https://registry.npmjs.org/got/-/got-9.6.0.tgz" + "version" "9.6.0" + dependencies: + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + "cacheable-request" "^6.0.0" + "decompress-response" "^3.3.0" + "duplexer3" "^0.1.4" + "get-stream" "^4.1.0" + "lowercase-keys" "^1.0.1" + "mimic-response" "^1.0.1" + "p-cancelable" "^1.0.0" + "to-readable-stream" "^1.0.0" + "url-parse-lax" "^3.0.0" + +"graceful-fs@^4.1.11", "graceful-fs@^4.1.2", "graceful-fs@^4.1.6", "graceful-fs@^4.2.0", "graceful-fs@^4.2.4", "graceful-fs@^4.2.6", "graceful-fs@^4.2.9": + "integrity" "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + "version" "4.2.11" + +"gray-matter@^4.0.3": + "integrity" "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==" + "resolved" "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "js-yaml" "^3.13.1" + "kind-of" "^6.0.2" + "section-matter" "^1.0.0" + "strip-bom-string" "^1.0.0" + +"gzip-size@^6.0.0": + "integrity" "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==" + "resolved" "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "duplexer" "^0.1.2" + +"handle-thing@^2.0.0": + "integrity" "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + "resolved" "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" + "version" "2.0.1" + +"has-flag@^3.0.0": + "integrity" "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + "version" "3.0.0" + +"has-flag@^4.0.0": + "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + "version" "4.0.0" + +"has-property-descriptors@^1.0.0": + "integrity" "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==" + "resolved" "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "get-intrinsic" "^1.1.1" + +"has-proto@^1.0.1": + "integrity" "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + "resolved" "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" + "version" "1.0.1" + +"has-symbols@^1.0.3": + "integrity" "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" + "version" "1.0.3" + +"has-yarn@^2.1.0": + "integrity" "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" + "resolved" "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz" + "version" "2.1.0" + +"has@^1.0.3": + "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" + "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "function-bind" "^1.1.1" + +"hast-to-hyperscript@^9.0.0": + "integrity" "sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==" + "resolved" "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz" + "version" "9.0.1" + dependencies: + "@types/unist" "^2.0.3" + "comma-separated-tokens" "^1.0.0" + "property-information" "^5.3.0" + "space-separated-tokens" "^1.0.0" + "style-to-object" "^0.3.0" + "unist-util-is" "^4.0.0" + "web-namespaces" "^1.0.0" + +"hast-util-from-parse5@^6.0.0": + "integrity" "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==" + "resolved" "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "@types/parse5" "^5.0.0" + "hastscript" "^6.0.0" + "property-information" "^5.0.0" + "vfile" "^4.0.0" + "vfile-location" "^3.2.0" + "web-namespaces" "^1.0.0" + +"hast-util-parse-selector@^2.0.0": + "integrity" "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==" + "resolved" "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz" + "version" "2.2.5" + +"hast-util-raw@6.0.1": + "integrity" "sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==" + "resolved" "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "@types/hast" "^2.0.0" + "hast-util-from-parse5" "^6.0.0" + "hast-util-to-parse5" "^6.0.0" + "html-void-elements" "^1.0.0" + "parse5" "^6.0.0" + "unist-util-position" "^3.0.0" + "vfile" "^4.0.0" + "web-namespaces" "^1.0.0" + "xtend" "^4.0.0" + "zwitch" "^1.0.0" + +"hast-util-to-parse5@^6.0.0": + "integrity" "sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==" + "resolved" "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "hast-to-hyperscript" "^9.0.0" + "property-information" "^5.0.0" + "web-namespaces" "^1.0.0" + "xtend" "^4.0.0" + "zwitch" "^1.0.0" + +"hastscript@^6.0.0": + "integrity" "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==" + "resolved" "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "@types/hast" "^2.0.0" + "comma-separated-tokens" "^1.0.0" + "hast-util-parse-selector" "^2.0.0" + "property-information" "^5.0.0" + "space-separated-tokens" "^1.0.0" + +"he@^1.2.0": + "integrity" "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + "resolved" "https://registry.npmjs.org/he/-/he-1.2.0.tgz" + "version" "1.2.0" + +"history@^4.9.0": + "integrity" "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==" + "resolved" "https://registry.npmjs.org/history/-/history-4.10.1.tgz" + "version" "4.10.1" + dependencies: + "@babel/runtime" "^7.1.2" + "loose-envify" "^1.2.0" + "resolve-pathname" "^3.0.0" + "tiny-invariant" "^1.0.2" + "tiny-warning" "^1.0.0" + "value-equal" "^1.0.1" + +"hoist-non-react-statics@^3.1.0": + "integrity" "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==" + "resolved" "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" + "version" "3.3.2" + dependencies: + "react-is" "^16.7.0" + +"hpack.js@^2.1.6": + "integrity" "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==" + "resolved" "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" + "version" "2.1.6" + dependencies: + "inherits" "^2.0.1" + "obuf" "^1.0.0" + "readable-stream" "^2.0.1" + "wbuf" "^1.1.0" + +"html-entities@^2.3.2": + "integrity" "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==" + "resolved" "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz" + "version" "2.4.0" + +"html-minifier-terser@^6.0.2", "html-minifier-terser@^6.1.0": + "integrity" "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==" + "resolved" "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "camel-case" "^4.1.2" + "clean-css" "^5.2.2" + "commander" "^8.3.0" + "he" "^1.2.0" + "param-case" "^3.0.4" + "relateurl" "^0.2.7" + "terser" "^5.10.0" + +"html-tags@^3.2.0": + "integrity" "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==" + "resolved" "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz" + "version" "3.3.1" + +"html-void-elements@^1.0.0": + "integrity" "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==" + "resolved" "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz" + "version" "1.0.5" + +"html-webpack-plugin@^5.5.0": + "integrity" "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==" + "resolved" "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz" + "version" "5.5.3" + dependencies: + "@types/html-minifier-terser" "^6.0.0" + "html-minifier-terser" "^6.0.2" + "lodash" "^4.17.21" + "pretty-error" "^4.0.0" + "tapable" "^2.0.0" + +"htmlparser2@^6.1.0": + "integrity" "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==" + "resolved" "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "domelementtype" "^2.0.1" + "domhandler" "^4.0.0" + "domutils" "^2.5.2" + "entities" "^2.0.0" + +"htmlparser2@^8.0.1": + "integrity" "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==" + "resolved" "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz" + "version" "8.0.2" + dependencies: + "domelementtype" "^2.3.0" + "domhandler" "^5.0.3" + "domutils" "^3.0.1" + "entities" "^4.4.0" + +"http-cache-semantics@^4.0.0": + "integrity" "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + "resolved" "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz" + "version" "4.1.1" + +"http-deceiver@^1.2.7": + "integrity" "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" + "resolved" "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" + "version" "1.2.7" + +"http-errors@~1.6.2": + "integrity" "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==" + "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + "version" "1.6.3" + dependencies: + "depd" "~1.1.2" + "inherits" "2.0.3" + "setprototypeof" "1.1.0" + "statuses" ">= 1.4.0 < 2" + +"http-errors@2.0.0": + "integrity" "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==" + "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "depd" "2.0.0" + "inherits" "2.0.4" + "setprototypeof" "1.2.0" + "statuses" "2.0.1" + "toidentifier" "1.0.1" + +"http-parser-js@>=0.5.1": + "integrity" "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + "resolved" "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" + "version" "0.5.8" + +"http-proxy-middleware@^2.0.3": + "integrity" "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==" + "resolved" "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz" + "version" "2.0.6" + dependencies: + "@types/http-proxy" "^1.17.8" + "http-proxy" "^1.18.1" + "is-glob" "^4.0.1" + "is-plain-obj" "^3.0.0" + "micromatch" "^4.0.2" + +"http-proxy@^1.18.1": + "integrity" "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==" + "resolved" "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" + "version" "1.18.1" + dependencies: + "eventemitter3" "^4.0.0" + "follow-redirects" "^1.0.0" + "requires-port" "^1.0.0" + +"human-signals@^2.1.0": + "integrity" "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + "version" "2.1.0" + +"iconv-lite@0.4.24": + "integrity" "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" + "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + "version" "0.4.24" + dependencies: + "safer-buffer" ">= 2.1.2 < 3" + +"icss-utils@^5.0.0", "icss-utils@^5.1.0": + "integrity" "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==" + "resolved" "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" + "version" "5.1.0" + +"ignore@^5.2.0", "ignore@^5.2.4": + "integrity" "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" + "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" + "version" "5.2.4" + +"image-size@^1.0.1": + "integrity" "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==" + "resolved" "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "queue" "6.0.2" + +"immediate@^3.2.3": + "integrity" "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==" + "resolved" "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz" + "version" "3.3.0" + +"immer@^9.0.7": + "integrity" "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==" + "resolved" "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz" + "version" "9.0.21" + +"import-fresh@^3.1.0", "import-fresh@^3.2.1", "import-fresh@^3.3.0": + "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==" + "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "parent-module" "^1.0.0" + "resolve-from" "^4.0.0" + +"import-lazy@^2.1.0": + "integrity" "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==" + "resolved" "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz" + "version" "2.1.0" + +"imurmurhash@^0.1.4": + "integrity" "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" + "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + "version" "0.1.4" + +"indent-string@^4.0.0": + "integrity" "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + "resolved" "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" + "version" "4.0.0" + +"infima@0.2.0-alpha.43": + "integrity" "sha512-2uw57LvUqW0rK/SWYnd/2rRfxNA5DDNOh33jxF7fy46VWoNhGxiUQyVZHbBMjQ33mQem0cjdDVwgWVAmlRfgyQ==" + "resolved" "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.43.tgz" + "version" "0.2.0-alpha.43" + +"inflight@^1.0.4": + "integrity" "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==" + "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + "version" "1.0.6" + dependencies: + "once" "^1.3.0" + "wrappy" "1" + +"inherits@^2.0.0", "inherits@^2.0.1", "inherits@^2.0.3", "inherits@~2.0.3", "inherits@2", "inherits@2.0.4": + "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + "version" "2.0.4" + +"inherits@2.0.3": + "integrity" "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + "version" "2.0.3" + +"ini@^1.3.5", "ini@~1.3.0": + "integrity" "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + "resolved" "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + "version" "1.3.8" + +"ini@2.0.0": + "integrity" "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" + "resolved" "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" + "version" "2.0.0" + +"inline-style-parser@0.1.1": + "integrity" "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + "resolved" "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz" + "version" "0.1.1" + +"interpret@^1.0.0": + "integrity" "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + "resolved" "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" + "version" "1.4.0" + +"invariant@^2.2.4": + "integrity" "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==" + "resolved" "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" + "version" "2.2.4" + dependencies: + "loose-envify" "^1.0.0" + +"ipaddr.js@^2.0.1": + "integrity" "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==" + "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz" + "version" "2.1.0" + +"ipaddr.js@1.9.1": + "integrity" "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" + "version" "1.9.1" + +"is-alphabetical@^1.0.0", "is-alphabetical@1.0.4": + "integrity" "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==" + "resolved" "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz" + "version" "1.0.4" + +"is-alphanumerical@^1.0.0": + "integrity" "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==" + "resolved" "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "is-alphabetical" "^1.0.0" + "is-decimal" "^1.0.0" + +"is-arrayish@^0.2.1": + "integrity" "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + "version" "0.2.1" + +"is-binary-path@~2.1.0": + "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" + "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "binary-extensions" "^2.0.0" + +"is-buffer@^2.0.0": + "integrity" "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" + "resolved" "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz" + "version" "2.0.5" + +"is-ci@^2.0.0": + "integrity" "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==" + "resolved" "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "ci-info" "^2.0.0" + +"is-core-module@^2.13.0": + "integrity" "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==" + "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz" + "version" "2.13.0" + dependencies: + "has" "^1.0.3" + +"is-decimal@^1.0.0": + "integrity" "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==" + "resolved" "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz" + "version" "1.0.4" + +"is-docker@^2.0.0", "is-docker@^2.1.1": + "integrity" "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" + "resolved" "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + "version" "2.2.1" + +"is-extendable@^0.1.0": + "integrity" "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" + "resolved" "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" + "version" "0.1.1" + +"is-extglob@^2.1.1": + "integrity" "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + "version" "2.1.1" + +"is-fullwidth-code-point@^3.0.0": + "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + "version" "3.0.0" + +"is-glob@^4.0.1", "is-glob@^4.0.3", "is-glob@~4.0.1": + "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" + "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "is-extglob" "^2.1.1" + +"is-hexadecimal@^1.0.0": + "integrity" "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==" + "resolved" "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz" + "version" "1.0.4" + +"is-installed-globally@^0.4.0": + "integrity" "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==" + "resolved" "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz" + "version" "0.4.0" + dependencies: + "global-dirs" "^3.0.0" + "is-path-inside" "^3.0.2" + +"is-npm@^5.0.0": + "integrity" "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==" + "resolved" "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz" + "version" "5.0.0" + +"is-number@^7.0.0": + "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + "version" "7.0.0" + +"is-obj@^1.0.1": + "integrity" "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==" + "resolved" "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz" + "version" "1.0.1" + +"is-obj@^2.0.0": + "integrity" "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + "resolved" "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" + "version" "2.0.0" + +"is-path-cwd@^2.2.0": + "integrity" "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" + "resolved" "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz" + "version" "2.2.0" + +"is-path-inside@^3.0.2": + "integrity" "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + "resolved" "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" + "version" "3.0.3" + +"is-plain-obj@^2.0.0": + "integrity" "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" + "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" + "version" "2.1.0" + +"is-plain-obj@^3.0.0": + "integrity" "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" + "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz" + "version" "3.0.0" + +"is-plain-object@^2.0.4": + "integrity" "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==" + "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" + "version" "2.0.4" + dependencies: + "isobject" "^3.0.1" + +"is-plain-object@^5.0.0": + "integrity" "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz" + "version" "5.0.0" + +"is-regexp@^1.0.0": + "integrity" "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==" + "resolved" "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz" + "version" "1.0.0" + +"is-root@^2.1.0": + "integrity" "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==" + "resolved" "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz" + "version" "2.1.0" + +"is-stream@^2.0.0": + "integrity" "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + "version" "2.0.1" + +"is-typedarray@^1.0.0": + "integrity" "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + "resolved" "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + "version" "1.0.0" + +"is-whitespace-character@^1.0.0": + "integrity" "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==" + "resolved" "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz" + "version" "1.0.4" + +"is-word-character@^1.0.0": + "integrity" "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==" + "resolved" "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz" + "version" "1.0.4" + +"is-wsl@^2.2.0": + "integrity" "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==" + "resolved" "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + "version" "2.2.0" + dependencies: + "is-docker" "^2.0.0" + +"is-yarn-global@^0.3.0": + "integrity" "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" + "resolved" "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz" + "version" "0.3.0" + +"isarray@~1.0.0": + "integrity" "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "version" "1.0.0" + +"isarray@0.0.1": + "integrity" "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + "resolved" "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + "version" "0.0.1" + +"isexe@^2.0.0": + "integrity" "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + "version" "2.0.0" + +"isobject@^3.0.1": + "integrity" "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" + "resolved" "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + "version" "3.0.1" + +"jest-util@^29.7.0": + "integrity" "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==" + "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + "chalk" "^4.0.0" + "ci-info" "^3.2.0" + "graceful-fs" "^4.2.9" + "picomatch" "^2.2.3" + +"jest-worker@^27.4.5": + "integrity" "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==" + "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@types/node" "*" + "merge-stream" "^2.0.0" + "supports-color" "^8.0.0" + +"jest-worker@^29.1.2": + "integrity" "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==" + "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@types/node" "*" + "jest-util" "^29.7.0" + "merge-stream" "^2.0.0" + "supports-color" "^8.0.0" + +"jiti@^1.18.2": + "integrity" "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==" + "resolved" "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz" + "version" "1.20.0" + +"joi@^17.6.0": + "integrity" "sha512-hcVhjBxRNW/is3nNLdGLIjkgXetkeGc2wyhydhz8KumG23Aerk4HPjU5zaPAMRqXQFc0xNqXTC7+zQjxr0GlKA==" + "resolved" "https://registry.npmjs.org/joi/-/joi-17.10.2.tgz" + "version" "17.10.2" + dependencies: + "@hapi/hoek" "^9.0.0" + "@hapi/topo" "^5.0.0" + "@sideway/address" "^4.1.3" + "@sideway/formula" "^3.0.1" + "@sideway/pinpoint" "^2.0.0" + +"js-tokens@^3.0.0 || ^4.0.0", "js-tokens@^4.0.0": + "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + "version" "4.0.0" + +"js-yaml@^3.13.1": + "integrity" "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==" + "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + "version" "3.14.1" + dependencies: + "argparse" "^1.0.7" + "esprima" "^4.0.0" + +"js-yaml@^4.1.0": + "integrity" "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==" + "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "argparse" "^2.0.1" + +"jsesc@^2.5.1": + "integrity" "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + "version" "2.5.2" + +"jsesc@~0.5.0": + "integrity" "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" + "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + "version" "0.5.0" + +"json-buffer@3.0.0": + "integrity" "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" + "resolved" "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" + "version" "3.0.0" + +"json-parse-even-better-errors@^2.3.0", "json-parse-even-better-errors@^2.3.1": + "integrity" "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "resolved" "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + "version" "2.3.1" + +"json-schema-traverse@^0.4.1": + "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + "version" "0.4.1" + +"json-schema-traverse@^1.0.0": + "integrity" "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" + "version" "1.0.0" + +"json5@^2.1.2", "json5@^2.2.3": + "integrity" "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + "version" "2.2.3" + +"jsonfile@^6.0.1": + "integrity" "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==" + "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "universalify" "^2.0.0" + optionalDependencies: + "graceful-fs" "^4.1.6" + +"keyv@^3.0.0": + "integrity" "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==" + "resolved" "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "json-buffer" "3.0.0" + +"kind-of@^6.0.0", "kind-of@^6.0.2": + "integrity" "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" + "version" "6.0.3" + +"klaw-sync@^6.0.0": + "integrity" "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==" + "resolved" "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "graceful-fs" "^4.1.11" + +"kleur@^3.0.3": + "integrity" "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" + "resolved" "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" + "version" "3.0.3" + +"latest-version@^5.1.0": + "integrity" "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==" + "resolved" "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "package-json" "^6.3.0" + +"launch-editor@^2.6.0": + "integrity" "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==" + "resolved" "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz" + "version" "2.6.0" + dependencies: + "picocolors" "^1.0.0" + "shell-quote" "^1.7.3" + +"leven@^3.1.0": + "integrity" "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" + "resolved" "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" + "version" "3.1.0" + +"lilconfig@^2.0.3": + "integrity" "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==" + "resolved" "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz" + "version" "2.1.0" + +"lines-and-columns@^1.1.6": + "integrity" "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + "resolved" "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + "version" "1.2.4" + +"loader-runner@^4.2.0": + "integrity" "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" + "resolved" "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" + "version" "4.3.0" + +"loader-utils@^2.0.0": + "integrity" "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==" + "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz" + "version" "2.0.4" + dependencies: + "big.js" "^5.2.2" + "emojis-list" "^3.0.0" + "json5" "^2.1.2" + +"loader-utils@^3.2.0": + "integrity" "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==" + "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz" + "version" "3.2.1" + +"locate-path@^3.0.0": + "integrity" "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==" + "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "p-locate" "^3.0.0" + "path-exists" "^3.0.0" + +"locate-path@^5.0.0": + "integrity" "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==" + "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "p-locate" "^4.1.0" + +"locate-path@^6.0.0": + "integrity" "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" + "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "p-locate" "^5.0.0" + +"lodash.curry@^4.0.1": + "integrity" "sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==" + "resolved" "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz" + "version" "4.1.1" + +"lodash.debounce@^4.0.8": + "integrity" "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + "resolved" "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" + "version" "4.0.8" + +"lodash.escape@^4.0.1": + "integrity" "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==" + "resolved" "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz" + "version" "4.0.1" + +"lodash.flatten@^4.4.0": + "integrity" "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" + "resolved" "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz" + "version" "4.4.0" + +"lodash.flow@^3.3.0": + "integrity" "sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==" + "resolved" "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz" + "version" "3.5.0" + +"lodash.invokemap@^4.6.0": + "integrity" "sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w==" + "resolved" "https://registry.npmjs.org/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz" + "version" "4.6.0" + +"lodash.memoize@^4.1.2": + "integrity" "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" + "resolved" "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" + "version" "4.1.2" + +"lodash.pullall@^4.2.0": + "integrity" "sha512-VhqxBKH0ZxPpLhiu68YD1KnHmbhQJQctcipvmFnqIBDYzcIHzf3Zpu0tpeOKtR4x76p9yohc506eGdOjTmyIBg==" + "resolved" "https://registry.npmjs.org/lodash.pullall/-/lodash.pullall-4.2.0.tgz" + "version" "4.2.0" + +"lodash.uniq@^4.5.0", "lodash.uniq@4.5.0": + "integrity" "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + "resolved" "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" + "version" "4.5.0" + +"lodash.uniqby@^4.7.0": + "integrity" "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==" + "resolved" "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz" + "version" "4.7.0" + +"lodash@^4.17.19", "lodash@^4.17.20", "lodash@^4.17.21": + "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + "version" "4.17.21" + +"loose-envify@^1.0.0", "loose-envify@^1.1.0", "loose-envify@^1.2.0", "loose-envify@^1.3.1", "loose-envify@^1.4.0": + "integrity" "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==" + "resolved" "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "js-tokens" "^3.0.0 || ^4.0.0" + +"lower-case@^2.0.2": + "integrity" "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==" + "resolved" "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "tslib" "^2.0.3" + +"lowercase-keys@^1.0.0", "lowercase-keys@^1.0.1": + "integrity" "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" + "version" "1.0.1" + +"lowercase-keys@^2.0.0": + "integrity" "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" + "version" "2.0.0" + +"lru-cache@^5.1.1": + "integrity" "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "yallist" "^3.0.2" + +"lru-cache@^6.0.0": + "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "yallist" "^4.0.0" + +"lunr-languages@^1.4.0": + "integrity" "sha512-qgTOarcnAtVFKr0aJ2GuiqbBdhKF61jpF8OgFbnlSAb1t6kOiQW67q0hv0UQzzB+5+OwPpnZyFT/L0L9SQG1/A==" + "resolved" "https://registry.npmjs.org/lunr-languages/-/lunr-languages-1.13.0.tgz" + "version" "1.13.0" + +"lunr@^2.3.9": + "integrity" "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" + "resolved" "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz" + "version" "2.3.9" + +"make-dir@^3.0.0", "make-dir@^3.0.2", "make-dir@^3.1.0": + "integrity" "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==" + "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "semver" "^6.0.0" + +"mark.js@^8.11.1": + "integrity" "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==" + "resolved" "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz" + "version" "8.11.1" + +"markdown-escapes@^1.0.0": + "integrity" "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==" + "resolved" "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz" + "version" "1.0.4" + +"mdast-squeeze-paragraphs@^4.0.0": + "integrity" "sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==" + "resolved" "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "unist-util-remove" "^2.0.0" + +"mdast-util-definitions@^4.0.0": + "integrity" "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==" + "resolved" "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "unist-util-visit" "^2.0.0" + +"mdast-util-to-hast@10.0.1": + "integrity" "sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==" + "resolved" "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz" + "version" "10.0.1" + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + "mdast-util-definitions" "^4.0.0" + "mdurl" "^1.0.0" + "unist-builder" "^2.0.0" + "unist-util-generated" "^1.0.0" + "unist-util-position" "^3.0.0" + "unist-util-visit" "^2.0.0" + +"mdast-util-to-string@^2.0.0": + "integrity" "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==" + "resolved" "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz" + "version" "2.0.0" + +"mdn-data@2.0.14": + "integrity" "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + "resolved" "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" + "version" "2.0.14" + +"mdurl@^1.0.0": + "integrity" "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" + "resolved" "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz" + "version" "1.0.1" + +"media-typer@0.3.0": + "integrity" "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + "resolved" "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + "version" "0.3.0" + +"memfs@^3.1.2", "memfs@^3.4.3": + "integrity" "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==" + "resolved" "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz" + "version" "3.5.3" + dependencies: + "fs-monkey" "^1.0.4" + +"merge-descriptors@1.0.1": + "integrity" "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + "resolved" "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" + "version" "1.0.1" + +"merge-stream@^2.0.0": + "integrity" "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "resolved" "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + "version" "2.0.0" + +"merge2@^1.3.0", "merge2@^1.4.1": + "integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + "resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + "version" "1.4.1" + +"methods@~1.1.2": + "integrity" "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" + "resolved" "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + "version" "1.1.2" + +"micromatch@^4.0.2", "micromatch@^4.0.4", "micromatch@^4.0.5": + "integrity" "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==" + "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + "version" "4.0.5" + dependencies: + "braces" "^3.0.2" + "picomatch" "^2.3.1" + +"mime-db@>= 1.43.0 < 2": + "integrity" "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + "version" "1.52.0" + +"mime-db@~1.33.0": + "integrity" "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz" + "version" "1.33.0" + +"mime-db@1.52.0": + "integrity" "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + "version" "1.52.0" + +"mime-types@^2.1.27": + "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" + "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + "version" "2.1.35" + dependencies: + "mime-db" "1.52.0" + +"mime-types@^2.1.31": + "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" + "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + "version" "2.1.35" + dependencies: + "mime-db" "1.52.0" + +"mime-types@~2.1.17", "mime-types@2.1.18": + "integrity" "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==" + "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz" + "version" "2.1.18" + dependencies: + "mime-db" "~1.33.0" + +"mime-types@~2.1.24": + "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" + "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + "version" "2.1.35" + dependencies: + "mime-db" "1.52.0" + +"mime-types@~2.1.34": + "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" + "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + "version" "2.1.35" + dependencies: + "mime-db" "1.52.0" + +"mime@1.6.0": + "integrity" "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + "resolved" "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + "version" "1.6.0" + +"mimic-fn@^2.1.0": + "integrity" "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + "version" "2.1.0" + +"mimic-response@^1.0.0", "mimic-response@^1.0.1": + "integrity" "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + "resolved" "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" + "version" "1.0.1" + +"mini-css-extract-plugin@^2.6.1": + "integrity" "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==" + "resolved" "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz" + "version" "2.7.6" + dependencies: + "schema-utils" "^4.0.0" + +"minimalistic-assert@^1.0.0": + "integrity" "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + "resolved" "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" + "version" "1.0.1" + +"minimatch@^3.0.4", "minimatch@^3.0.5", "minimatch@^3.1.1", "minimatch@3.1.2": + "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "brace-expansion" "^1.1.7" + +"minimist@^1.2.0", "minimist@^1.2.5": + "integrity" "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" + "version" "1.2.8" + +"mrmime@^1.0.0": + "integrity" "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==" + "resolved" "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz" + "version" "1.0.1" + +"ms@2.0.0": + "integrity" "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + "version" "2.0.0" + +"ms@2.1.2": + "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + "version" "2.1.2" + +"ms@2.1.3": + "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + "version" "2.1.3" + +"multicast-dns@^7.2.5": + "integrity" "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==" + "resolved" "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" + "version" "7.2.5" + dependencies: + "dns-packet" "^5.2.2" + "thunky" "^1.0.2" + +"nanoid@^3.3.6": + "integrity" "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" + "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" + "version" "3.3.6" + +"negotiator@0.6.3": + "integrity" "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + "resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" + "version" "0.6.3" + +"neo-async@^2.6.2": + "integrity" "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + "resolved" "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" + "version" "2.6.2" + +"no-case@^3.0.4": + "integrity" "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==" + "resolved" "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "lower-case" "^2.0.2" + "tslib" "^2.0.3" + +"node-emoji@^1.10.0": + "integrity" "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==" + "resolved" "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz" + "version" "1.11.0" + dependencies: + "lodash" "^4.17.21" + +"node-fetch@^2.6.12": + "integrity" "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==" + "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" + "version" "2.7.0" + dependencies: + "whatwg-url" "^5.0.0" + +"node-forge@^1": + "integrity" "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" + "resolved" "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" + "version" "1.3.1" + +"node-releases@^2.0.13": + "integrity" "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" + "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz" + "version" "2.0.13" + +"normalize-path@^3.0.0", "normalize-path@~3.0.0": + "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + "version" "3.0.0" + +"normalize-range@^0.1.2": + "integrity" "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==" + "resolved" "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" + "version" "0.1.2" + +"normalize-url@^4.1.0": + "integrity" "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" + "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz" + "version" "4.5.1" + +"normalize-url@^6.0.1": + "integrity" "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" + "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" + "version" "6.1.0" + +"npm-run-path@^4.0.1": + "integrity" "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==" + "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "path-key" "^3.0.0" + +"nprogress@^0.2.0": + "integrity" "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==" + "resolved" "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz" + "version" "0.2.0" + +"nth-check@^2.0.1": + "integrity" "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==" + "resolved" "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "boolbase" "^1.0.0" + +"object-assign@^4.1.0", "object-assign@^4.1.1": + "integrity" "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + "version" "4.1.1" + +"object-inspect@^1.9.0": + "integrity" "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" + "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz" + "version" "1.12.3" + +"object-keys@^1.1.1": + "integrity" "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "resolved" "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + "version" "1.1.1" + +"object.assign@^4.1.0": + "integrity" "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==" + "resolved" "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" + "version" "4.1.4" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.4" + "has-symbols" "^1.0.3" + "object-keys" "^1.1.1" + +"obuf@^1.0.0", "obuf@^1.1.2": + "integrity" "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + "resolved" "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" + "version" "1.1.2" + +"on-finished@2.4.1": + "integrity" "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==" + "resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" + "version" "2.4.1" + dependencies: + "ee-first" "1.1.1" + +"on-headers@~1.0.2": + "integrity" "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + "resolved" "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" + "version" "1.0.2" + +"once@^1.3.0", "once@^1.3.1", "once@^1.4.0": + "integrity" "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==" + "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "wrappy" "1" + +"onetime@^5.1.2": + "integrity" "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==" + "resolved" "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "mimic-fn" "^2.1.0" + +"open@^8.0.9", "open@^8.4.0": + "integrity" "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==" + "resolved" "https://registry.npmjs.org/open/-/open-8.4.2.tgz" + "version" "8.4.2" + dependencies: + "define-lazy-prop" "^2.0.0" + "is-docker" "^2.1.1" + "is-wsl" "^2.2.0" + +"opener@^1.5.2": + "integrity" "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==" + "resolved" "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz" + "version" "1.5.2" + +"p-cancelable@^1.0.0": + "integrity" "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + "resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" + "version" "1.1.0" + +"p-limit@^2.0.0", "p-limit@^2.2.0": + "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" + "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "p-try" "^2.0.0" + +"p-limit@^3.0.2": + "integrity" "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" + "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "yocto-queue" "^0.1.0" + +"p-locate@^3.0.0": + "integrity" "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==" + "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "p-limit" "^2.0.0" + +"p-locate@^4.1.0": + "integrity" "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==" + "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "p-limit" "^2.2.0" + +"p-locate@^5.0.0": + "integrity" "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" + "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "p-limit" "^3.0.2" + +"p-map@^4.0.0": + "integrity" "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==" + "resolved" "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "aggregate-error" "^3.0.0" + +"p-retry@^4.5.0": + "integrity" "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==" + "resolved" "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz" + "version" "4.6.2" + dependencies: + "@types/retry" "0.12.0" + "retry" "^0.13.1" + +"p-try@^2.0.0": + "integrity" "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "resolved" "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + "version" "2.2.0" + +"package-json@^6.3.0": + "integrity" "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==" + "resolved" "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz" + "version" "6.5.0" + dependencies: + "got" "^9.6.0" + "registry-auth-token" "^4.0.0" + "registry-url" "^5.0.0" + "semver" "^6.2.0" + +"param-case@^3.0.4": + "integrity" "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==" + "resolved" "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "dot-case" "^3.0.4" + "tslib" "^2.0.3" + +"parent-module@^1.0.0": + "integrity" "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" + "resolved" "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "callsites" "^3.0.0" + +"parse-entities@^2.0.0": + "integrity" "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==" + "resolved" "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "character-entities" "^1.0.0" + "character-entities-legacy" "^1.0.0" + "character-reference-invalid" "^1.0.0" + "is-alphanumerical" "^1.0.0" + "is-decimal" "^1.0.0" + "is-hexadecimal" "^1.0.0" + +"parse-json@^5.0.0", "parse-json@^5.2.0": + "integrity" "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==" + "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + "version" "5.2.0" + dependencies: + "@babel/code-frame" "^7.0.0" + "error-ex" "^1.3.1" + "json-parse-even-better-errors" "^2.3.0" + "lines-and-columns" "^1.1.6" + +"parse-numeric-range@^1.3.0": + "integrity" "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==" + "resolved" "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz" + "version" "1.3.0" + +"parse5-htmlparser2-tree-adapter@^7.0.0": + "integrity" "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==" + "resolved" "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz" + "version" "7.0.0" + dependencies: + "domhandler" "^5.0.2" + "parse5" "^7.0.0" + +"parse5@^6.0.0": + "integrity" "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + "resolved" "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz" + "version" "6.0.1" + +"parse5@^7.0.0": + "integrity" "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==" + "resolved" "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz" + "version" "7.1.2" + dependencies: + "entities" "^4.4.0" + +"parseurl@~1.3.2", "parseurl@~1.3.3": + "integrity" "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + "resolved" "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + "version" "1.3.3" + +"pascal-case@^3.1.2": + "integrity" "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==" + "resolved" "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "no-case" "^3.0.4" + "tslib" "^2.0.3" + +"path-exists@^3.0.0": + "integrity" "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" + "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" + "version" "3.0.0" + +"path-exists@^4.0.0": + "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + "version" "4.0.0" + +"path-is-absolute@^1.0.0": + "integrity" "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + "version" "1.0.1" + +"path-is-inside@1.0.2": + "integrity" "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" + "resolved" "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" + "version" "1.0.2" + +"path-key@^3.0.0", "path-key@^3.1.0": + "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + "version" "3.1.1" + +"path-parse@^1.0.7": + "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + "version" "1.0.7" + +"path-to-regexp@^1.7.0": + "integrity" "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==" + "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz" + "version" "1.8.0" + dependencies: + "isarray" "0.0.1" + +"path-to-regexp@0.1.7": + "integrity" "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" + "version" "0.1.7" + +"path-to-regexp@2.2.1": + "integrity" "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==" + "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz" + "version" "2.2.1" + +"path-type@^4.0.0": + "integrity" "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + "resolved" "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + "version" "4.0.0" + +"picocolors@^1.0.0": + "integrity" "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + "version" "1.0.0" + +"picomatch@^2.0.4", "picomatch@^2.2.1", "picomatch@^2.2.3", "picomatch@^2.3.1": + "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + "version" "2.3.1" + +"pkg-dir@^4.1.0": + "integrity" "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==" + "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" + "version" "4.2.0" + dependencies: + "find-up" "^4.0.0" + +"pkg-up@^3.1.0": + "integrity" "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==" + "resolved" "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "find-up" "^3.0.0" + +"postcss-calc@^8.2.3": + "integrity" "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==" + "resolved" "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz" + "version" "8.2.4" + dependencies: + "postcss-selector-parser" "^6.0.9" + "postcss-value-parser" "^4.2.0" + +"postcss-colormin@^5.3.1": + "integrity" "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==" + "resolved" "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz" + "version" "5.3.1" + dependencies: + "browserslist" "^4.21.4" + "caniuse-api" "^3.0.0" + "colord" "^2.9.1" + "postcss-value-parser" "^4.2.0" + +"postcss-convert-values@^5.1.3": + "integrity" "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==" + "resolved" "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz" + "version" "5.1.3" + dependencies: + "browserslist" "^4.21.4" + "postcss-value-parser" "^4.2.0" + +"postcss-discard-comments@^5.1.2": + "integrity" "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==" + "resolved" "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz" + "version" "5.1.2" + +"postcss-discard-duplicates@^5.1.0": + "integrity" "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==" + "resolved" "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz" + "version" "5.1.0" + +"postcss-discard-empty@^5.1.1": + "integrity" "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==" + "resolved" "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz" + "version" "5.1.1" + +"postcss-discard-overridden@^5.1.0": + "integrity" "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==" + "resolved" "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz" + "version" "5.1.0" + +"postcss-discard-unused@^5.1.0": + "integrity" "sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==" + "resolved" "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "postcss-selector-parser" "^6.0.5" + +"postcss-loader@^7.0.0": + "integrity" "sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==" + "resolved" "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.3.tgz" + "version" "7.3.3" + dependencies: + "cosmiconfig" "^8.2.0" + "jiti" "^1.18.2" + "semver" "^7.3.8" + +"postcss-merge-idents@^5.1.1": + "integrity" "sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw==" + "resolved" "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "cssnano-utils" "^3.1.0" + "postcss-value-parser" "^4.2.0" + +"postcss-merge-longhand@^5.1.7": + "integrity" "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==" + "resolved" "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz" + "version" "5.1.7" + dependencies: + "postcss-value-parser" "^4.2.0" + "stylehacks" "^5.1.1" + +"postcss-merge-rules@^5.1.4": + "integrity" "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==" + "resolved" "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz" + "version" "5.1.4" + dependencies: + "browserslist" "^4.21.4" + "caniuse-api" "^3.0.0" + "cssnano-utils" "^3.1.0" + "postcss-selector-parser" "^6.0.5" + +"postcss-minify-font-values@^5.1.0": + "integrity" "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==" + "resolved" "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "postcss-value-parser" "^4.2.0" + +"postcss-minify-gradients@^5.1.1": + "integrity" "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==" + "resolved" "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "colord" "^2.9.1" + "cssnano-utils" "^3.1.0" + "postcss-value-parser" "^4.2.0" + +"postcss-minify-params@^5.1.4": + "integrity" "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==" + "resolved" "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz" + "version" "5.1.4" + dependencies: + "browserslist" "^4.21.4" + "cssnano-utils" "^3.1.0" + "postcss-value-parser" "^4.2.0" + +"postcss-minify-selectors@^5.2.1": + "integrity" "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==" + "resolved" "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz" + "version" "5.2.1" + dependencies: + "postcss-selector-parser" "^6.0.5" + +"postcss-modules-extract-imports@^3.0.0": + "integrity" "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==" + "resolved" "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz" + "version" "3.0.0" + +"postcss-modules-local-by-default@^4.0.3": + "integrity" "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==" + "resolved" "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "icss-utils" "^5.0.0" + "postcss-selector-parser" "^6.0.2" + "postcss-value-parser" "^4.1.0" + +"postcss-modules-scope@^3.0.0": + "integrity" "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==" + "resolved" "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "postcss-selector-parser" "^6.0.4" + +"postcss-modules-values@^4.0.0": + "integrity" "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==" + "resolved" "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "icss-utils" "^5.0.0" + +"postcss-normalize-charset@^5.1.0": + "integrity" "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==" + "resolved" "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz" + "version" "5.1.0" + +"postcss-normalize-display-values@^5.1.0": + "integrity" "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==" + "resolved" "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "postcss-value-parser" "^4.2.0" + +"postcss-normalize-positions@^5.1.1": + "integrity" "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==" + "resolved" "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "postcss-value-parser" "^4.2.0" + +"postcss-normalize-repeat-style@^5.1.1": + "integrity" "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==" + "resolved" "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "postcss-value-parser" "^4.2.0" + +"postcss-normalize-string@^5.1.0": + "integrity" "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==" + "resolved" "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "postcss-value-parser" "^4.2.0" + +"postcss-normalize-timing-functions@^5.1.0": + "integrity" "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==" + "resolved" "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "postcss-value-parser" "^4.2.0" + +"postcss-normalize-unicode@^5.1.1": + "integrity" "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==" + "resolved" "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "browserslist" "^4.21.4" + "postcss-value-parser" "^4.2.0" + +"postcss-normalize-url@^5.1.0": + "integrity" "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==" + "resolved" "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "normalize-url" "^6.0.1" + "postcss-value-parser" "^4.2.0" + +"postcss-normalize-whitespace@^5.1.1": + "integrity" "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==" + "resolved" "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "postcss-value-parser" "^4.2.0" + +"postcss-ordered-values@^5.1.3": + "integrity" "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==" + "resolved" "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz" + "version" "5.1.3" + dependencies: + "cssnano-utils" "^3.1.0" + "postcss-value-parser" "^4.2.0" + +"postcss-reduce-idents@^5.2.0": + "integrity" "sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg==" + "resolved" "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz" + "version" "5.2.0" + dependencies: + "postcss-value-parser" "^4.2.0" + +"postcss-reduce-initial@^5.1.2": + "integrity" "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==" + "resolved" "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "browserslist" "^4.21.4" + "caniuse-api" "^3.0.0" + +"postcss-reduce-transforms@^5.1.0": + "integrity" "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==" + "resolved" "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "postcss-value-parser" "^4.2.0" + +"postcss-selector-parser@^6.0.2", "postcss-selector-parser@^6.0.4", "postcss-selector-parser@^6.0.5", "postcss-selector-parser@^6.0.9": + "integrity" "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==" + "resolved" "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz" + "version" "6.0.13" + dependencies: + "cssesc" "^3.0.0" + "util-deprecate" "^1.0.2" + +"postcss-sort-media-queries@^4.2.1": + "integrity" "sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw==" + "resolved" "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-4.4.1.tgz" + "version" "4.4.1" + dependencies: + "sort-css-media-queries" "2.1.0" + +"postcss-svgo@^5.1.0": + "integrity" "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==" + "resolved" "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "postcss-value-parser" "^4.2.0" + "svgo" "^2.7.0" + +"postcss-unique-selectors@^5.1.1": + "integrity" "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==" + "resolved" "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "postcss-selector-parser" "^6.0.5" + +"postcss-value-parser@^4.1.0", "postcss-value-parser@^4.2.0": + "integrity" "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" + "version" "4.2.0" + +"postcss-zindex@^5.1.0": + "integrity" "sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==" + "resolved" "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-5.1.0.tgz" + "version" "5.1.0" + +"postcss@^7.0.0 || ^8.0.1", "postcss@^8.0.9", "postcss@^8.1.0", "postcss@^8.2.15", "postcss@^8.2.2", "postcss@^8.3.11", "postcss@^8.4.14", "postcss@^8.4.16", "postcss@^8.4.17", "postcss@^8.4.21": + "integrity" "sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==" + "resolved" "https://registry.npmjs.org/postcss/-/postcss-8.4.30.tgz" + "version" "8.4.30" + dependencies: + "nanoid" "^3.3.6" + "picocolors" "^1.0.0" + "source-map-js" "^1.0.2" + +"prepend-http@^2.0.0": + "integrity" "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==" + "resolved" "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" + "version" "2.0.0" + +"pretty-error@^4.0.0": + "integrity" "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==" + "resolved" "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "lodash" "^4.17.20" + "renderkid" "^3.0.0" + +"pretty-time@^1.1.0": + "integrity" "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==" + "resolved" "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz" + "version" "1.1.0" + +"prism-react-renderer@^1.3.5", "prism-react-renderer@1.3.5": + "integrity" "sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==" + "resolved" "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz" + "version" "1.3.5" + +"prismjs@^1.28.0": + "integrity" "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==" + "resolved" "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz" + "version" "1.29.0" + +"process-nextick-args@~2.0.0": + "integrity" "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "resolved" "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + "version" "2.0.1" + +"promise@^7.1.1": + "integrity" "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==" + "resolved" "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz" + "version" "7.3.1" + dependencies: + "asap" "~2.0.3" + +"prompts@^2.4.2": + "integrity" "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==" + "resolved" "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" + "version" "2.4.2" + dependencies: + "kleur" "^3.0.3" + "sisteransi" "^1.0.5" + +"prop-types@^15.6.2", "prop-types@^15.7.2": + "integrity" "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==" + "resolved" "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" + "version" "15.8.1" + dependencies: + "loose-envify" "^1.4.0" + "object-assign" "^4.1.1" + "react-is" "^16.13.1" + +"property-information@^5.0.0", "property-information@^5.3.0": + "integrity" "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==" + "resolved" "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz" + "version" "5.6.0" + dependencies: + "xtend" "^4.0.0" + +"proxy-addr@~2.0.7": + "integrity" "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==" + "resolved" "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" + "version" "2.0.7" + dependencies: + "forwarded" "0.2.0" + "ipaddr.js" "1.9.1" + +"pump@^3.0.0": + "integrity" "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==" + "resolved" "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "end-of-stream" "^1.1.0" + "once" "^1.3.1" + +"punycode@^1.3.2": + "integrity" "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + "resolved" "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" + "version" "1.4.1" + +"punycode@^2.1.0": + "integrity" "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" + "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz" + "version" "2.3.0" + +"pupa@^2.1.1": + "integrity" "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==" + "resolved" "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "escape-goat" "^2.0.0" + +"pure-color@^1.2.0": + "integrity" "sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==" + "resolved" "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz" + "version" "1.3.0" + +"qs@6.11.0": + "integrity" "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==" + "resolved" "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" + "version" "6.11.0" + dependencies: + "side-channel" "^1.0.4" + +"queue-microtask@^1.2.2": + "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + "version" "1.2.3" + +"queue@6.0.2": + "integrity" "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==" + "resolved" "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz" + "version" "6.0.2" + dependencies: + "inherits" "~2.0.3" + +"randombytes@^2.1.0": + "integrity" "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==" + "resolved" "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "safe-buffer" "^5.1.0" + +"range-parser@^1.2.1": + "integrity" "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + "resolved" "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + "version" "1.2.1" + +"range-parser@~1.2.1": + "integrity" "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + "resolved" "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + "version" "1.2.1" + +"range-parser@1.2.0": + "integrity" "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==" + "resolved" "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz" + "version" "1.2.0" + +"raw-body@2.5.1": + "integrity" "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==" + "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" + "version" "2.5.1" + dependencies: + "bytes" "3.1.2" + "http-errors" "2.0.0" + "iconv-lite" "0.4.24" + "unpipe" "1.0.0" + +"rc@^1.2.8", "rc@1.2.8": + "integrity" "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==" + "resolved" "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" + "version" "1.2.8" + dependencies: + "deep-extend" "^0.6.0" + "ini" "~1.3.0" + "minimist" "^1.2.0" + "strip-json-comments" "~2.0.1" + +"react-base16-styling@^0.6.0": + "integrity" "sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==" + "resolved" "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz" + "version" "0.6.0" + dependencies: + "base16" "^1.0.0" + "lodash.curry" "^4.0.1" + "lodash.flow" "^3.3.0" + "pure-color" "^1.2.0" + +"react-dev-utils@^12.0.1": + "integrity" "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==" + "resolved" "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz" + "version" "12.0.1" + dependencies: + "@babel/code-frame" "^7.16.0" + "address" "^1.1.2" + "browserslist" "^4.18.1" + "chalk" "^4.1.2" + "cross-spawn" "^7.0.3" + "detect-port-alt" "^1.1.6" + "escape-string-regexp" "^4.0.0" + "filesize" "^8.0.6" + "find-up" "^5.0.0" + "fork-ts-checker-webpack-plugin" "^6.5.0" + "global-modules" "^2.0.0" + "globby" "^11.0.4" + "gzip-size" "^6.0.0" + "immer" "^9.0.7" + "is-root" "^2.1.0" + "loader-utils" "^3.2.0" + "open" "^8.4.0" + "pkg-up" "^3.1.0" + "prompts" "^2.4.2" + "react-error-overlay" "^6.0.11" + "recursive-readdir" "^2.2.2" + "shell-quote" "^1.7.3" + "strip-ansi" "^6.0.1" + "text-table" "^0.2.0" + +"react-dom@*", "react-dom@^16.14.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.6.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.8.4 || ^17.0.0", "react-dom@^17.0.0 || ^16.3.0 || ^15.5.4", "react-dom@>= 16.8.0 < 19.0.0", "react-dom@17.0.2": + "integrity" "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==" + "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" + "version" "17.0.2" + dependencies: + "loose-envify" "^1.1.0" + "object-assign" "^4.1.1" + "scheduler" "^0.20.2" + +"react-error-overlay@^6.0.11": + "integrity" "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" + "resolved" "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz" + "version" "6.0.11" + +"react-fast-compare@^3.2.0": + "integrity" "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" + "resolved" "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz" + "version" "3.2.2" + +"react-helmet-async@*", "react-helmet-async@^1.3.0": + "integrity" "sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==" + "resolved" "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.3.0.tgz" + "version" "1.3.0" + dependencies: + "@babel/runtime" "^7.12.5" + "invariant" "^2.2.4" + "prop-types" "^15.7.2" + "react-fast-compare" "^3.2.0" + "shallowequal" "^1.1.0" + +"react-is@^16.13.1", "react-is@^16.6.0", "react-is@^16.7.0": + "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + "version" "16.13.1" + +"react-json-view@^1.21.3": + "integrity" "sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==" + "resolved" "https://registry.npmjs.org/react-json-view/-/react-json-view-1.21.3.tgz" + "version" "1.21.3" + dependencies: + "flux" "^4.0.1" + "react-base16-styling" "^0.6.0" + "react-lifecycles-compat" "^3.0.4" + "react-textarea-autosize" "^8.3.2" + +"react-lifecycles-compat@^3.0.4": + "integrity" "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + "resolved" "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz" + "version" "3.0.4" + +"react-loadable-ssr-addon-v5-slorber@^1.0.1": + "integrity" "sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==" + "resolved" "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "@babel/runtime" "^7.10.3" + +"react-loadable@*", "react-loadable@npm:@docusaurus/react-loadable@5.5.2": + "integrity" "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==" + "resolved" "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz" + "version" "5.5.2" + dependencies: + "@types/react" "*" + "prop-types" "^15.6.2" + +"react-router-config@^5.1.1": + "integrity" "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==" + "resolved" "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "@babel/runtime" "^7.1.2" + +"react-router-dom@^5.3.3": + "integrity" "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==" + "resolved" "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz" + "version" "5.3.4" + dependencies: + "@babel/runtime" "^7.12.13" + "history" "^4.9.0" + "loose-envify" "^1.3.1" + "prop-types" "^15.6.2" + "react-router" "5.3.4" + "tiny-invariant" "^1.0.2" + "tiny-warning" "^1.0.0" + +"react-router@^5.3.3", "react-router@>=5", "react-router@5.3.4": + "integrity" "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==" + "resolved" "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz" + "version" "5.3.4" + dependencies: + "@babel/runtime" "^7.12.13" + "history" "^4.9.0" + "hoist-non-react-statics" "^3.1.0" + "loose-envify" "^1.3.1" + "path-to-regexp" "^1.7.0" + "prop-types" "^15.6.2" + "react-is" "^16.6.0" + "tiny-invariant" "^1.0.2" + "tiny-warning" "^1.0.0" + +"react-textarea-autosize@^8.3.2": + "integrity" "sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==" + "resolved" "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.3.tgz" + "version" "8.5.3" + dependencies: + "@babel/runtime" "^7.20.13" + "use-composed-ref" "^1.3.0" + "use-latest" "^1.2.1" + +"react@*", "react@^15.0.2 || ^16.0.0 || ^17.0.0", "react@^16.13.1 || ^17.0.0", "react@^16.14.0 || ^17.0.0 || ^18.0.0", "react@^16.6.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.4 || ^17.0.0", "react@^17.0.0 || ^16.3.0 || ^15.5.4", "react@>= 16.8.0 < 19.0.0", "react@>=0.14.9", "react@>=15", "react@17.0.2": + "integrity" "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==" + "resolved" "https://registry.npmjs.org/react/-/react-17.0.2.tgz" + "version" "17.0.2" + dependencies: + "loose-envify" "^1.1.0" + "object-assign" "^4.1.1" + +"readable-stream@^2.0.1": + "integrity" "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + "version" "2.3.8" + dependencies: + "core-util-is" "~1.0.0" + "inherits" "~2.0.3" + "isarray" "~1.0.0" + "process-nextick-args" "~2.0.0" + "safe-buffer" "~5.1.1" + "string_decoder" "~1.1.1" + "util-deprecate" "~1.0.1" + +"readable-stream@^3.0.6": + "integrity" "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + "version" "3.6.2" + dependencies: + "inherits" "^2.0.3" + "string_decoder" "^1.1.1" + "util-deprecate" "^1.0.1" + +"readdirp@~3.6.0": + "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" + "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + "version" "3.6.0" + dependencies: + "picomatch" "^2.2.1" + +"reading-time@^1.5.0": + "integrity" "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==" + "resolved" "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz" + "version" "1.5.0" + +"rechoir@^0.6.2": + "integrity" "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==" + "resolved" "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" + "version" "0.6.2" + dependencies: + "resolve" "^1.1.6" + +"recursive-readdir@^2.2.2": + "integrity" "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==" + "resolved" "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz" + "version" "2.2.3" + dependencies: + "minimatch" "^3.0.5" + +"regenerate-unicode-properties@^10.1.0": + "integrity" "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==" + "resolved" "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz" + "version" "10.1.1" + dependencies: + "regenerate" "^1.4.2" + +"regenerate@^1.4.2": + "integrity" "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + "resolved" "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" + "version" "1.4.2" + +"regenerator-runtime@^0.14.0": + "integrity" "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz" + "version" "0.14.0" + +"regenerator-transform@^0.15.2": + "integrity" "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==" + "resolved" "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz" + "version" "0.15.2" + dependencies: + "@babel/runtime" "^7.8.4" + +"regexpu-core@^5.3.1": + "integrity" "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==" + "resolved" "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz" + "version" "5.3.2" + dependencies: + "@babel/regjsgen" "^0.8.0" + "regenerate" "^1.4.2" + "regenerate-unicode-properties" "^10.1.0" + "regjsparser" "^0.9.1" + "unicode-match-property-ecmascript" "^2.0.0" + "unicode-match-property-value-ecmascript" "^2.1.0" + +"registry-auth-token@^4.0.0": + "integrity" "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==" + "resolved" "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz" + "version" "4.2.2" + dependencies: + "rc" "1.2.8" + +"registry-url@^5.0.0": + "integrity" "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==" + "resolved" "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "rc" "^1.2.8" + +"regjsparser@^0.9.1": + "integrity" "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==" + "resolved" "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" + "version" "0.9.1" + dependencies: + "jsesc" "~0.5.0" + +"relateurl@^0.2.7": + "integrity" "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==" + "resolved" "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" + "version" "0.2.7" + +"remark-emoji@^2.2.0": + "integrity" "sha512-P3cj9s5ggsUvWw5fS2uzCHJMGuXYRb0NnZqYlNecewXt8QBU9n5vW3DUUKOhepS8F9CwdMx9B8a3i7pqFWAI5w==" + "resolved" "https://registry.npmjs.org/remark-emoji/-/remark-emoji-2.2.0.tgz" + "version" "2.2.0" + dependencies: + "emoticon" "^3.2.0" + "node-emoji" "^1.10.0" + "unist-util-visit" "^2.0.3" + +"remark-footnotes@2.0.0": + "integrity" "sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==" + "resolved" "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz" + "version" "2.0.0" + +"remark-mdx@1.6.22": + "integrity" "sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==" + "resolved" "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz" + "version" "1.6.22" + dependencies: + "@babel/core" "7.12.9" + "@babel/helper-plugin-utils" "7.10.4" + "@babel/plugin-proposal-object-rest-spread" "7.12.1" + "@babel/plugin-syntax-jsx" "7.12.1" + "@mdx-js/util" "1.6.22" + "is-alphabetical" "1.0.4" + "remark-parse" "8.0.3" + "unified" "9.2.0" + +"remark-parse@8.0.3": + "integrity" "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==" + "resolved" "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz" + "version" "8.0.3" + dependencies: + "ccount" "^1.0.0" + "collapse-white-space" "^1.0.2" + "is-alphabetical" "^1.0.0" + "is-decimal" "^1.0.0" + "is-whitespace-character" "^1.0.0" + "is-word-character" "^1.0.0" + "markdown-escapes" "^1.0.0" + "parse-entities" "^2.0.0" + "repeat-string" "^1.5.4" + "state-toggle" "^1.0.0" + "trim" "0.0.1" + "trim-trailing-lines" "^1.0.0" + "unherit" "^1.0.4" + "unist-util-remove-position" "^2.0.0" + "vfile-location" "^3.0.0" + "xtend" "^4.0.1" + +"remark-squeeze-paragraphs@4.0.0": + "integrity" "sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==" + "resolved" "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "mdast-squeeze-paragraphs" "^4.0.0" + +"renderkid@^3.0.0": + "integrity" "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==" + "resolved" "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "css-select" "^4.1.3" + "dom-converter" "^0.2.0" + "htmlparser2" "^6.1.0" + "lodash" "^4.17.21" + "strip-ansi" "^6.0.1" + +"repeat-string@^1.5.4": + "integrity" "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" + "resolved" "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" + "version" "1.6.1" + +"require-from-string@^2.0.2": + "integrity" "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + "resolved" "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" + "version" "2.0.2" + +"require-like@>= 0.1.1": + "integrity" "sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==" + "resolved" "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz" + "version" "0.1.2" + +"requires-port@^1.0.0": + "integrity" "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + "resolved" "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + "version" "1.0.0" + +"resolve-from@^4.0.0": + "integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + "version" "4.0.0" + +"resolve-pathname@^3.0.0": + "integrity" "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" + "resolved" "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz" + "version" "3.0.0" + +"resolve@^1.1.6", "resolve@^1.14.2", "resolve@^1.3.2": + "integrity" "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==" + "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz" + "version" "1.22.6" + dependencies: + "is-core-module" "^2.13.0" + "path-parse" "^1.0.7" + "supports-preserve-symlinks-flag" "^1.0.0" + +"responselike@^1.0.2": + "integrity" "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==" + "resolved" "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "lowercase-keys" "^1.0.0" + +"retry@^0.13.1": + "integrity" "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" + "resolved" "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" + "version" "0.13.1" + +"reusify@^1.0.4": + "integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + "version" "1.0.4" + +"rimraf@^3.0.2": + "integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==" + "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "glob" "^7.1.3" + +"rtl-detect@^1.0.4": + "integrity" "sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ==" + "resolved" "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.0.4.tgz" + "version" "1.0.4" + +"rtlcss@^3.5.0": + "integrity" "sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A==" + "resolved" "https://registry.npmjs.org/rtlcss/-/rtlcss-3.5.0.tgz" + "version" "3.5.0" + dependencies: + "find-up" "^5.0.0" + "picocolors" "^1.0.0" + "postcss" "^8.3.11" + "strip-json-comments" "^3.1.1" + +"run-parallel@^1.1.9": + "integrity" "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" + "resolved" "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "queue-microtask" "^1.2.2" + +"rxjs@^7.5.4": + "integrity" "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==" + "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz" + "version" "7.8.1" + dependencies: + "tslib" "^2.1.0" + +"safe-buffer@^5.1.0", "safe-buffer@>=5.1.0", "safe-buffer@~5.2.0", "safe-buffer@5.2.1": + "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + "version" "5.2.1" + +"safe-buffer@~5.1.0", "safe-buffer@~5.1.1": + "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + "version" "5.1.2" + +"safe-buffer@5.1.2": + "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + "version" "5.1.2" + +"safer-buffer@>= 2.1.2 < 3": + "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + "version" "2.1.2" + +"sax@^1.2.4": + "integrity" "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + "resolved" "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" + "version" "1.2.4" + +"scheduler@^0.20.2": + "integrity" "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==" + "resolved" "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz" + "version" "0.20.2" + dependencies: + "loose-envify" "^1.1.0" + "object-assign" "^4.1.1" + +"schema-utils@^2.6.5": + "integrity" "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==" + "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" + "version" "2.7.1" + dependencies: + "@types/json-schema" "^7.0.5" + "ajv" "^6.12.4" + "ajv-keywords" "^3.5.2" + +"schema-utils@^3.0.0": + "integrity" "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==" + "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "@types/json-schema" "^7.0.8" + "ajv" "^6.12.5" + "ajv-keywords" "^3.5.2" + +"schema-utils@^3.1.1": + "integrity" "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==" + "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "@types/json-schema" "^7.0.8" + "ajv" "^6.12.5" + "ajv-keywords" "^3.5.2" + +"schema-utils@^3.2.0": + "integrity" "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==" + "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "@types/json-schema" "^7.0.8" + "ajv" "^6.12.5" + "ajv-keywords" "^3.5.2" + +"schema-utils@^4.0.0": + "integrity" "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==" + "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz" + "version" "4.2.0" + dependencies: + "@types/json-schema" "^7.0.9" + "ajv" "^8.9.0" + "ajv-formats" "^2.1.1" + "ajv-keywords" "^5.1.0" + +"schema-utils@2.7.0": + "integrity" "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==" + "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" + "version" "2.7.0" + dependencies: + "@types/json-schema" "^7.0.4" + "ajv" "^6.12.2" + "ajv-keywords" "^3.4.1" + +"search-insights@>= 1 < 3": + "integrity" "sha512-PxA9M5Q2bpBelVvJ3oDZR8nuY00Z6qwOxL53wNpgzV28M/D6u9WUbImDckjLSILBF8F1hn/mgyuUaOPtjow4Qw==" + "resolved" "https://registry.npmjs.org/search-insights/-/search-insights-2.8.2.tgz" + "version" "2.8.2" + +"section-matter@^1.0.0": + "integrity" "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==" + "resolved" "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "extend-shallow" "^2.0.1" + "kind-of" "^6.0.0" + +"select-hose@^2.0.0": + "integrity" "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" + "resolved" "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" + "version" "2.0.0" + +"selfsigned@^2.1.1": + "integrity" "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==" + "resolved" "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "node-forge" "^1" + +"semver-diff@^3.1.1": + "integrity" "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==" + "resolved" "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz" + "version" "3.1.1" + dependencies: + "semver" "^6.3.0" + +"semver@^5.4.1": + "integrity" "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" + "version" "5.7.2" + +"semver@^6.0.0": + "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + "version" "6.3.1" + +"semver@^6.2.0": + "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + "version" "6.3.1" + +"semver@^6.3.0": + "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + "version" "6.3.1" + +"semver@^6.3.1": + "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + "version" "6.3.1" + +"semver@^7.3.2", "semver@^7.3.4", "semver@^7.3.7", "semver@^7.3.8": + "integrity" "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==" + "resolved" "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" + "version" "7.5.4" + dependencies: + "lru-cache" "^6.0.0" + +"send@0.18.0": + "integrity" "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==" + "resolved" "https://registry.npmjs.org/send/-/send-0.18.0.tgz" + "version" "0.18.0" + dependencies: + "debug" "2.6.9" + "depd" "2.0.0" + "destroy" "1.2.0" + "encodeurl" "~1.0.2" + "escape-html" "~1.0.3" + "etag" "~1.8.1" + "fresh" "0.5.2" + "http-errors" "2.0.0" + "mime" "1.6.0" + "ms" "2.1.3" + "on-finished" "2.4.1" + "range-parser" "~1.2.1" + "statuses" "2.0.1" + +"serialize-javascript@^6.0.0", "serialize-javascript@^6.0.1": + "integrity" "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==" + "resolved" "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "randombytes" "^2.1.0" + +"serve-handler@^6.1.3": + "integrity" "sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==" + "resolved" "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.5.tgz" + "version" "6.1.5" + dependencies: + "bytes" "3.0.0" + "content-disposition" "0.5.2" + "fast-url-parser" "1.1.3" + "mime-types" "2.1.18" + "minimatch" "3.1.2" + "path-is-inside" "1.0.2" + "path-to-regexp" "2.2.1" + "range-parser" "1.2.0" + +"serve-index@^1.9.1": + "integrity" "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==" + "resolved" "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" + "version" "1.9.1" + dependencies: + "accepts" "~1.3.4" + "batch" "0.6.1" + "debug" "2.6.9" + "escape-html" "~1.0.3" + "http-errors" "~1.6.2" + "mime-types" "~2.1.17" + "parseurl" "~1.3.2" + +"serve-static@1.15.0": + "integrity" "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==" + "resolved" "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" + "version" "1.15.0" + dependencies: + "encodeurl" "~1.0.2" + "escape-html" "~1.0.3" + "parseurl" "~1.3.3" + "send" "0.18.0" + +"setimmediate@^1.0.5": + "integrity" "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + "resolved" "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" + "version" "1.0.5" + +"setprototypeof@1.1.0": + "integrity" "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" + "version" "1.1.0" + +"setprototypeof@1.2.0": + "integrity" "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" + "version" "1.2.0" + +"shallow-clone@^3.0.0": + "integrity" "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==" + "resolved" "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "kind-of" "^6.0.2" + +"shallowequal@^1.1.0": + "integrity" "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + "resolved" "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz" + "version" "1.1.0" + +"shebang-command@^2.0.0": + "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" + "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "shebang-regex" "^3.0.0" + +"shebang-regex@^3.0.0": + "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + "version" "3.0.0" + +"shell-quote@^1.7.3": + "integrity" "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==" + "resolved" "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" + "version" "1.8.1" + +"shelljs@^0.8.5": + "integrity" "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==" + "resolved" "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz" + "version" "0.8.5" + dependencies: + "glob" "^7.0.0" + "interpret" "^1.0.0" + "rechoir" "^0.6.2" + +"side-channel@^1.0.4": + "integrity" "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==" + "resolved" "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "call-bind" "^1.0.0" + "get-intrinsic" "^1.0.2" + "object-inspect" "^1.9.0" + +"signal-exit@^3.0.2", "signal-exit@^3.0.3": + "integrity" "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + "version" "3.0.7" + +"sirv@^2.0.3": + "integrity" "sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==" + "resolved" "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz" + "version" "2.0.3" + dependencies: + "@polka/url" "^1.0.0-next.20" + "mrmime" "^1.0.0" + "totalist" "^3.0.0" + +"sisteransi@^1.0.5": + "integrity" "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + "resolved" "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" + "version" "1.0.5" + +"sitemap@^7.1.1": + "integrity" "sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==" + "resolved" "https://registry.npmjs.org/sitemap/-/sitemap-7.1.1.tgz" + "version" "7.1.1" + dependencies: + "@types/node" "^17.0.5" + "@types/sax" "^1.2.1" + "arg" "^5.0.0" + "sax" "^1.2.4" + +"slash@^3.0.0": + "integrity" "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + "resolved" "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + "version" "3.0.0" + +"slash@^4.0.0": + "integrity" "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==" + "resolved" "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz" + "version" "4.0.0" + +"sockjs@^0.3.24": + "integrity" "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==" + "resolved" "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" + "version" "0.3.24" + dependencies: + "faye-websocket" "^0.11.3" + "uuid" "^8.3.2" + "websocket-driver" "^0.7.4" + +"sort-css-media-queries@2.1.0": + "integrity" "sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA==" + "resolved" "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.1.0.tgz" + "version" "2.1.0" + +"source-map-js@^1.0.2": + "integrity" "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + "resolved" "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" + "version" "1.0.2" + +"source-map-support@~0.5.20": + "integrity" "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==" + "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" + "version" "0.5.21" + dependencies: + "buffer-from" "^1.0.0" + "source-map" "^0.6.0" + +"source-map@^0.5.0": + "integrity" "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + "version" "0.5.7" + +"source-map@^0.6.0", "source-map@^0.6.1", "source-map@~0.6.0": + "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + "version" "0.6.1" + +"space-separated-tokens@^1.0.0": + "integrity" "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==" + "resolved" "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz" + "version" "1.1.5" + +"spdy-transport@^3.0.0": + "integrity" "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==" + "resolved" "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "debug" "^4.1.0" + "detect-node" "^2.0.4" + "hpack.js" "^2.1.6" + "obuf" "^1.1.2" + "readable-stream" "^3.0.6" + "wbuf" "^1.7.3" + +"spdy@^4.0.2": + "integrity" "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==" + "resolved" "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" + "version" "4.0.2" + dependencies: + "debug" "^4.1.0" + "handle-thing" "^2.0.0" + "http-deceiver" "^1.2.7" + "select-hose" "^2.0.0" + "spdy-transport" "^3.0.0" + +"sprintf-js@~1.0.2": + "integrity" "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + "version" "1.0.3" + +"stable@^0.1.8": + "integrity" "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + "resolved" "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" + "version" "0.1.8" + +"state-toggle@^1.0.0": + "integrity" "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==" + "resolved" "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz" + "version" "1.0.3" + +"statuses@>= 1.4.0 < 2": + "integrity" "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" + "resolved" "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + "version" "1.5.0" + +"statuses@2.0.1": + "integrity" "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + "resolved" "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + "version" "2.0.1" + +"std-env@^3.0.1": + "integrity" "sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==" + "resolved" "https://registry.npmjs.org/std-env/-/std-env-3.4.3.tgz" + "version" "3.4.3" + +"string_decoder@^1.1.1": + "integrity" "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==" + "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + "version" "1.3.0" + dependencies: + "safe-buffer" "~5.2.0" + +"string_decoder@~1.1.1": + "integrity" "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==" + "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "safe-buffer" "~5.1.0" + +"string-width@^4.0.0", "string-width@^4.1.0", "string-width@^4.2.2": + "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + "version" "4.2.3" + dependencies: + "emoji-regex" "^8.0.0" + "is-fullwidth-code-point" "^3.0.0" + "strip-ansi" "^6.0.1" + +"string-width@^4.2.0": + "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + "version" "4.2.3" + dependencies: + "emoji-regex" "^8.0.0" + "is-fullwidth-code-point" "^3.0.0" + "strip-ansi" "^6.0.1" + +"string-width@^5.0.1": + "integrity" "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "eastasianwidth" "^0.2.0" + "emoji-regex" "^9.2.2" + "strip-ansi" "^7.0.1" + +"stringify-object@^3.3.0": + "integrity" "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==" + "resolved" "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "get-own-enumerable-property-symbols" "^3.0.0" + "is-obj" "^1.0.1" + "is-regexp" "^1.0.0" + +"strip-ansi@^6.0.0", "strip-ansi@^6.0.1": + "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "ansi-regex" "^5.0.1" + +"strip-ansi@^7.0.1": + "integrity" "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" + "version" "7.1.0" + dependencies: + "ansi-regex" "^6.0.1" + +"strip-bom-string@^1.0.0": + "integrity" "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==" + "resolved" "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz" + "version" "1.0.0" + +"strip-final-newline@^2.0.0": + "integrity" "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + "resolved" "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + "version" "2.0.0" + +"strip-json-comments@^3.1.1": + "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + "version" "3.1.1" + +"strip-json-comments@~2.0.1": + "integrity" "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" + "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" + "version" "2.0.1" + +"style-to-object@^0.3.0", "style-to-object@0.3.0": + "integrity" "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==" + "resolved" "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz" + "version" "0.3.0" + dependencies: + "inline-style-parser" "0.1.1" + +"stylehacks@^5.1.1": + "integrity" "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==" + "resolved" "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "browserslist" "^4.21.4" + "postcss-selector-parser" "^6.0.4" + +"supports-color@^5.3.0": + "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + "version" "5.5.0" + dependencies: + "has-flag" "^3.0.0" + +"supports-color@^7.1.0": + "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + "version" "7.2.0" + dependencies: + "has-flag" "^4.0.0" + +"supports-color@^8.0.0": + "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + "version" "8.1.1" + dependencies: + "has-flag" "^4.0.0" + +"supports-preserve-symlinks-flag@^1.0.0": + "integrity" "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + "resolved" "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + "version" "1.0.0" + +"svg-parser@^2.0.4": + "integrity" "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" + "resolved" "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz" + "version" "2.0.4" + +"svgo@^2.7.0", "svgo@^2.8.0": + "integrity" "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==" + "resolved" "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz" + "version" "2.8.0" + dependencies: + "@trysound/sax" "0.2.0" + "commander" "^7.2.0" + "css-select" "^4.1.3" + "css-tree" "^1.1.3" + "csso" "^4.2.0" + "picocolors" "^1.0.0" + "stable" "^0.1.8" + +"tapable@^1.0.0": + "integrity" "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" + "resolved" "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz" + "version" "1.1.3" + +"tapable@^2.0.0", "tapable@^2.1.1", "tapable@^2.2.0": + "integrity" "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + "resolved" "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" + "version" "2.2.1" + +"terser-webpack-plugin@^5.3.3", "terser-webpack-plugin@^5.3.7": + "integrity" "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==" + "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz" + "version" "5.3.9" + dependencies: + "@jridgewell/trace-mapping" "^0.3.17" + "jest-worker" "^27.4.5" + "schema-utils" "^3.1.1" + "serialize-javascript" "^6.0.1" + "terser" "^5.16.8" + +"terser@^5.10.0", "terser@^5.16.8": + "integrity" "sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ==" + "resolved" "https://registry.npmjs.org/terser/-/terser-5.20.0.tgz" + "version" "5.20.0" + dependencies: + "@jridgewell/source-map" "^0.3.3" + "acorn" "^8.8.2" + "commander" "^2.20.0" + "source-map-support" "~0.5.20" + +"text-table@^0.2.0": + "integrity" "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + "resolved" "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + "version" "0.2.0" + +"thunky@^1.0.2": + "integrity" "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + "resolved" "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" + "version" "1.1.0" + +"tiny-invariant@^1.0.2": + "integrity" "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" + "resolved" "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz" + "version" "1.3.1" + +"tiny-warning@^1.0.0": + "integrity" "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + "resolved" "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz" + "version" "1.0.3" + +"to-fast-properties@^2.0.0": + "integrity" "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" + "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + "version" "2.0.0" + +"to-readable-stream@^1.0.0": + "integrity" "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + "resolved" "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz" + "version" "1.0.0" + +"to-regex-range@^5.0.1": + "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" + "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "is-number" "^7.0.0" + +"toidentifier@1.0.1": + "integrity" "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + "resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" + "version" "1.0.1" + +"totalist@^3.0.0": + "integrity" "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==" + "resolved" "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz" + "version" "3.0.1" + +"tr46@~0.0.3": + "integrity" "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + "resolved" "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + "version" "0.0.3" + +"trim-trailing-lines@^1.0.0": + "integrity" "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==" + "resolved" "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz" + "version" "1.1.4" + +"trim@0.0.1": + "integrity" "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==" + "resolved" "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz" + "version" "0.0.1" + +"trough@^1.0.0": + "integrity" "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==" + "resolved" "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz" + "version" "1.0.5" + +"tslib@^2.0.3", "tslib@^2.1.0", "tslib@^2.4.0": + "integrity" "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + "version" "2.6.2" + +"type-fest@^0.20.2": + "integrity" "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + "version" "0.20.2" + +"type-fest@^2.5.0": + "integrity" "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz" + "version" "2.19.0" + +"type-is@~1.6.18": + "integrity" "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==" + "resolved" "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" + "version" "1.6.18" + dependencies: + "media-typer" "0.3.0" + "mime-types" "~2.1.24" + +"typedarray-to-buffer@^3.1.5": + "integrity" "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==" + "resolved" "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" + "version" "3.1.5" + dependencies: + "is-typedarray" "^1.0.0" + +"typescript@>= 2.7", "typescript@>=4.9.5": + "integrity" "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==" + "resolved" "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz" + "version" "5.2.2" + +"ua-parser-js@^1.0.35": + "integrity" "sha512-znuyCIXzl8ciS3+y3fHJI/2OhQIXbXw9MWC/o3qwyR+RGppjZHrM27CGFSKCJXi2Kctiz537iOu2KnXs1lMQhw==" + "resolved" "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.36.tgz" + "version" "1.0.36" + +"unherit@^1.0.4": + "integrity" "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==" + "resolved" "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz" + "version" "1.1.3" + dependencies: + "inherits" "^2.0.0" + "xtend" "^4.0.0" + +"unicode-canonical-property-names-ecmascript@^2.0.0": + "integrity" "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" + "resolved" "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" + "version" "2.0.0" + +"unicode-match-property-ecmascript@^2.0.0": + "integrity" "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==" + "resolved" "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "unicode-canonical-property-names-ecmascript" "^2.0.0" + "unicode-property-aliases-ecmascript" "^2.0.0" + +"unicode-match-property-value-ecmascript@^2.1.0": + "integrity" "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==" + "resolved" "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz" + "version" "2.1.0" + +"unicode-property-aliases-ecmascript@^2.0.0": + "integrity" "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==" + "resolved" "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" + "version" "2.1.0" + +"unified@^9.2.2": + "integrity" "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==" + "resolved" "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz" + "version" "9.2.2" + dependencies: + "bail" "^1.0.0" + "extend" "^3.0.0" + "is-buffer" "^2.0.0" + "is-plain-obj" "^2.0.0" + "trough" "^1.0.0" + "vfile" "^4.0.0" + +"unified@9.2.0": + "integrity" "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==" + "resolved" "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz" + "version" "9.2.0" + dependencies: + "bail" "^1.0.0" + "extend" "^3.0.0" + "is-buffer" "^2.0.0" + "is-plain-obj" "^2.0.0" + "trough" "^1.0.0" + "vfile" "^4.0.0" + +"unique-string@^2.0.0": + "integrity" "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==" + "resolved" "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "crypto-random-string" "^2.0.0" + +"unist-builder@^2.0.0", "unist-builder@2.0.3": + "integrity" "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==" + "resolved" "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz" + "version" "2.0.3" + +"unist-util-generated@^1.0.0": + "integrity" "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==" + "resolved" "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz" + "version" "1.1.6" + +"unist-util-is@^4.0.0": + "integrity" "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==" + "resolved" "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz" + "version" "4.1.0" + +"unist-util-position@^3.0.0": + "integrity" "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==" + "resolved" "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz" + "version" "3.1.0" + +"unist-util-remove-position@^2.0.0": + "integrity" "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==" + "resolved" "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "unist-util-visit" "^2.0.0" + +"unist-util-remove@^2.0.0": + "integrity" "sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==" + "resolved" "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "unist-util-is" "^4.0.0" + +"unist-util-stringify-position@^2.0.0": + "integrity" "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==" + "resolved" "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz" + "version" "2.0.3" + dependencies: + "@types/unist" "^2.0.2" + +"unist-util-visit-parents@^3.0.0": + "integrity" "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==" + "resolved" "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz" + "version" "3.1.1" + dependencies: + "@types/unist" "^2.0.0" + "unist-util-is" "^4.0.0" + +"unist-util-visit@^2.0.0", "unist-util-visit@^2.0.3", "unist-util-visit@2.0.3": + "integrity" "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==" + "resolved" "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz" + "version" "2.0.3" + dependencies: + "@types/unist" "^2.0.0" + "unist-util-is" "^4.0.0" + "unist-util-visit-parents" "^3.0.0" + +"universalify@^2.0.0": + "integrity" "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + "resolved" "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" + "version" "2.0.0" + +"unpipe@~1.0.0", "unpipe@1.0.0": + "integrity" "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + "resolved" "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + "version" "1.0.0" + +"update-browserslist-db@^1.0.11": + "integrity" "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==" + "resolved" "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz" + "version" "1.0.11" + dependencies: + "escalade" "^3.1.1" + "picocolors" "^1.0.0" + +"update-notifier@^5.1.0": + "integrity" "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==" + "resolved" "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "boxen" "^5.0.0" + "chalk" "^4.1.0" + "configstore" "^5.0.1" + "has-yarn" "^2.1.0" + "import-lazy" "^2.1.0" + "is-ci" "^2.0.0" + "is-installed-globally" "^0.4.0" + "is-npm" "^5.0.0" + "is-yarn-global" "^0.3.0" + "latest-version" "^5.1.0" + "pupa" "^2.1.1" + "semver" "^7.3.4" + "semver-diff" "^3.1.1" + "xdg-basedir" "^4.0.0" + +"uri-js@^4.2.2": + "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" + "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + "version" "4.4.1" + dependencies: + "punycode" "^2.1.0" + +"url-loader@^4.1.1", "url-loader@4.1.1": + "integrity" "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==" + "resolved" "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz" + "version" "4.1.1" + dependencies: + "loader-utils" "^2.0.0" + "mime-types" "^2.1.27" + "schema-utils" "^3.0.0" + +"url-parse-lax@^3.0.0": + "integrity" "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==" + "resolved" "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "prepend-http" "^2.0.0" + +"use-composed-ref@^1.3.0": + "integrity" "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==" + "resolved" "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz" + "version" "1.3.0" + +"use-isomorphic-layout-effect@^1.1.1": + "integrity" "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==" + "resolved" "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz" + "version" "1.1.2" + +"use-latest@^1.2.1": + "integrity" "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==" + "resolved" "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz" + "version" "1.2.1" + dependencies: + "use-isomorphic-layout-effect" "^1.1.1" + +"use-sync-external-store@^1.2.0": + "integrity" "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==" + "resolved" "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz" + "version" "1.2.0" + +"util-deprecate@^1.0.1", "util-deprecate@^1.0.2", "util-deprecate@~1.0.1": + "integrity" "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "version" "1.0.2" + +"utila@~0.4": + "integrity" "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" + "resolved" "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" + "version" "0.4.0" + +"utility-types@^3.10.0": + "integrity" "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==" + "resolved" "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz" + "version" "3.10.0" + +"utils-merge@1.0.1": + "integrity" "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + "resolved" "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" + "version" "1.0.1" + +"uuid@^8.3.2": + "integrity" "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + "resolved" "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" + "version" "8.3.2" + +"value-equal@^1.0.1": + "integrity" "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" + "resolved" "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz" + "version" "1.0.1" + +"vary@~1.1.2": + "integrity" "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + "resolved" "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + "version" "1.1.2" + +"vfile-location@^3.0.0", "vfile-location@^3.2.0": + "integrity" "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==" + "resolved" "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz" + "version" "3.2.0" + +"vfile-message@^2.0.0": + "integrity" "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==" + "resolved" "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz" + "version" "2.0.4" + dependencies: + "@types/unist" "^2.0.0" + "unist-util-stringify-position" "^2.0.0" + +"vfile@^4.0.0": + "integrity" "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==" + "resolved" "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz" + "version" "4.2.1" + dependencies: + "@types/unist" "^2.0.0" + "is-buffer" "^2.0.0" + "unist-util-stringify-position" "^2.0.0" + "vfile-message" "^2.0.0" + +"wait-on@^6.0.1": + "integrity" "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==" + "resolved" "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "axios" "^0.25.0" + "joi" "^17.6.0" + "lodash" "^4.17.21" + "minimist" "^1.2.5" + "rxjs" "^7.5.4" + +"watchpack@^2.4.0": + "integrity" "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==" + "resolved" "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz" + "version" "2.4.0" + dependencies: + "glob-to-regexp" "^0.4.1" + "graceful-fs" "^4.1.2" + +"wbuf@^1.1.0", "wbuf@^1.7.3": + "integrity" "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==" + "resolved" "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" + "version" "1.7.3" + dependencies: + "minimalistic-assert" "^1.0.0" + +"web-namespaces@^1.0.0": + "integrity" "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==" + "resolved" "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz" + "version" "1.1.4" + +"webidl-conversions@^3.0.0": + "integrity" "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + "version" "3.0.1" + +"webpack-bundle-analyzer@^4.5.0": + "integrity" "sha512-jnd6EoYrf9yMxCyYDPj8eutJvtjQNp8PHmni/e/ulydHBWhT5J3menXt3HEkScsu9YqMAcG4CfFjs3rj5pVU1w==" + "resolved" "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.1.tgz" + "version" "4.9.1" + dependencies: + "@discoveryjs/json-ext" "0.5.7" + "acorn" "^8.0.4" + "acorn-walk" "^8.0.0" + "commander" "^7.2.0" + "escape-string-regexp" "^4.0.0" + "gzip-size" "^6.0.0" + "is-plain-object" "^5.0.0" + "lodash.debounce" "^4.0.8" + "lodash.escape" "^4.0.1" + "lodash.flatten" "^4.4.0" + "lodash.invokemap" "^4.6.0" + "lodash.pullall" "^4.2.0" + "lodash.uniqby" "^4.7.0" + "opener" "^1.5.2" + "picocolors" "^1.0.0" + "sirv" "^2.0.3" + "ws" "^7.3.1" + +"webpack-dev-middleware@^5.3.1": + "integrity" "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==" + "resolved" "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz" + "version" "5.3.3" + dependencies: + "colorette" "^2.0.10" + "memfs" "^3.4.3" + "mime-types" "^2.1.31" + "range-parser" "^1.2.1" + "schema-utils" "^4.0.0" + +"webpack-dev-server@^4.9.3": + "integrity" "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==" + "resolved" "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz" + "version" "4.15.1" + dependencies: + "@types/bonjour" "^3.5.9" + "@types/connect-history-api-fallback" "^1.3.5" + "@types/express" "^4.17.13" + "@types/serve-index" "^1.9.1" + "@types/serve-static" "^1.13.10" + "@types/sockjs" "^0.3.33" + "@types/ws" "^8.5.5" + "ansi-html-community" "^0.0.8" + "bonjour-service" "^1.0.11" + "chokidar" "^3.5.3" + "colorette" "^2.0.10" + "compression" "^1.7.4" + "connect-history-api-fallback" "^2.0.0" + "default-gateway" "^6.0.3" + "express" "^4.17.3" + "graceful-fs" "^4.2.6" + "html-entities" "^2.3.2" + "http-proxy-middleware" "^2.0.3" + "ipaddr.js" "^2.0.1" + "launch-editor" "^2.6.0" + "open" "^8.0.9" + "p-retry" "^4.5.0" + "rimraf" "^3.0.2" + "schema-utils" "^4.0.0" + "selfsigned" "^2.1.1" + "serve-index" "^1.9.1" + "sockjs" "^0.3.24" + "spdy" "^4.0.2" + "webpack-dev-middleware" "^5.3.1" + "ws" "^8.13.0" + +"webpack-merge@^5.8.0": + "integrity" "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==" + "resolved" "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz" + "version" "5.9.0" + dependencies: + "clone-deep" "^4.0.1" + "wildcard" "^2.0.0" + +"webpack-sources@^3.2.2", "webpack-sources@^3.2.3": + "integrity" "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" + "resolved" "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" + "version" "3.2.3" + +"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", "webpack@^5.0.0", "webpack@^5.1.0", "webpack@^5.20.0", "webpack@^5.73.0", "webpack@>= 4", "webpack@>=2", "webpack@>=4.41.1 || 5.x", "webpack@3 || 4 || 5": + "integrity" "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==" + "resolved" "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz" + "version" "5.88.2" + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^1.0.0" + "@webassemblyjs/ast" "^1.11.5" + "@webassemblyjs/wasm-edit" "^1.11.5" + "@webassemblyjs/wasm-parser" "^1.11.5" + "acorn" "^8.7.1" + "acorn-import-assertions" "^1.9.0" + "browserslist" "^4.14.5" + "chrome-trace-event" "^1.0.2" + "enhanced-resolve" "^5.15.0" + "es-module-lexer" "^1.2.1" + "eslint-scope" "5.1.1" + "events" "^3.2.0" + "glob-to-regexp" "^0.4.1" + "graceful-fs" "^4.2.9" + "json-parse-even-better-errors" "^2.3.1" + "loader-runner" "^4.2.0" + "mime-types" "^2.1.27" + "neo-async" "^2.6.2" + "schema-utils" "^3.2.0" + "tapable" "^2.1.1" + "terser-webpack-plugin" "^5.3.7" + "watchpack" "^2.4.0" + "webpack-sources" "^3.2.3" + +"webpackbar@^5.0.2": + "integrity" "sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==" + "resolved" "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz" + "version" "5.0.2" + dependencies: + "chalk" "^4.1.0" + "consola" "^2.15.3" + "pretty-time" "^1.1.0" + "std-env" "^3.0.1" + +"websocket-driver@^0.7.4", "websocket-driver@>=0.5.1": + "integrity" "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==" + "resolved" "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" + "version" "0.7.4" + dependencies: + "http-parser-js" ">=0.5.1" + "safe-buffer" ">=5.1.0" + "websocket-extensions" ">=0.1.1" + +"websocket-extensions@>=0.1.1": + "integrity" "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" + "resolved" "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" + "version" "0.1.4" + +"whatwg-url@^5.0.0": + "integrity" "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==" + "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "tr46" "~0.0.3" + "webidl-conversions" "^3.0.0" + +"which@^1.3.1": + "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" + "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + "version" "1.3.1" + dependencies: + "isexe" "^2.0.0" + +"which@^2.0.1": + "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" + "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "isexe" "^2.0.0" + +"widest-line@^3.1.0": + "integrity" "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==" + "resolved" "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "string-width" "^4.0.0" + +"widest-line@^4.0.1": + "integrity" "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==" + "resolved" "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "string-width" "^5.0.1" + +"wildcard@^2.0.0": + "integrity" "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" + "resolved" "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz" + "version" "2.0.1" + +"wrap-ansi@^7.0.0": + "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" + "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + "version" "7.0.0" + dependencies: + "ansi-styles" "^4.0.0" + "string-width" "^4.1.0" + "strip-ansi" "^6.0.0" + +"wrap-ansi@^8.0.1": + "integrity" "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==" + "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" + "version" "8.1.0" + dependencies: + "ansi-styles" "^6.1.0" + "string-width" "^5.0.1" + "strip-ansi" "^7.0.1" + +"wrappy@1": + "integrity" "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "version" "1.0.2" + +"write-file-atomic@^3.0.0": + "integrity" "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==" + "resolved" "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" + "version" "3.0.3" + dependencies: + "imurmurhash" "^0.1.4" + "is-typedarray" "^1.0.0" + "signal-exit" "^3.0.2" + "typedarray-to-buffer" "^3.1.5" + +"ws@^7.3.1": + "integrity" "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==" + "resolved" "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" + "version" "7.5.9" + +"ws@^8.13.0": + "integrity" "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==" + "resolved" "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz" + "version" "8.14.2" + +"xdg-basedir@^4.0.0": + "integrity" "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" + "resolved" "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz" + "version" "4.0.0" + +"xml-js@^1.6.11": + "integrity" "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==" + "resolved" "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz" + "version" "1.6.11" + dependencies: + "sax" "^1.2.4" + +"xtend@^4.0.0", "xtend@^4.0.1": + "integrity" "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + "resolved" "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" + "version" "4.0.2" + +"yallist@^3.0.2": + "integrity" "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "resolved" "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + "version" "3.1.1" + +"yallist@^4.0.0": + "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + "version" "4.0.0" + +"yaml@^1.10.0", "yaml@^1.10.2", "yaml@^1.7.2": + "integrity" "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + "resolved" "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + "version" "1.10.2" + +"yocto-queue@^0.1.0": + "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + "version" "0.1.0" + +"zwitch@^1.0.0": + "integrity" "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==" + "resolved" "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz" + "version" "1.0.5" diff --git a/nuget/README.md b/nuget/README.md new file mode 100644 index 000000000..172c989cd --- /dev/null +++ b/nuget/README.md @@ -0,0 +1,89 @@ +# Blazor Bootstrap Component Library + +### An Enterprise-class Blazor Bootstrap Component library built on the Blazor and Bootstrap CSS frameworks. + +**NOTE:** We strongly recommend all BlazorBootstrap users migrate to version 2.x.x. [Read more...](https://docs.blazorbootstrap.com/blog/2024/02/25/upgrade-to-v2.0.0) + +## Table of contents + +- [Quick start](#quick-start) +- [Online Demos](#online-demos) +- [Components](#blazor-bootstrap-components) +- [Documentation](#documentation) +- [Creators](#creators) +- [Copyright and license](#copyright-and-license) + +## Quick start + +Get started any way you want + +- Clone the repo: `git clone https://github.com/vikramlearning/blazorbootstrap.git` +- Install with [NuGet](https://www.nuget.org/): `Install-Package Blazor.Bootstrap -Version 2.2.1` +- Install [Blazor Bootstrap templates](https://github.com/vikramlearning/blazorbootstrap-project-templates) with **.NET CLI**: `dotnet new install Blazor.Bootstrap.Templates::1.10.0` + + ![image](https://user-images.githubusercontent.com/2337067/233800604-43986ae7-27dd-4f17-9af6-c2f1a6f07097.png) + +- Read the [Getting started page](https://docs.blazorbootstrap.com/getting-started/blazor-webassembly-net-8) for information on the framework installation, contents, examples, and more. + +## Online Demos + +- [Demo Website - Blazor Server](https://demos.blazorbootstrap.com/) +- [Demo Website - Blazor WebAssembly](https://demos.getblazorbootstrap.com/) + +## Blazor Bootstrap Components + +| Component Name | Docs | Demos | +|:--|:--|:--| +| Accordion | [Docs](https://docs.blazorbootstrap.com/components/accordion) | [Demos](https://demos.blazorbootstrap.com/accordion) | +| Alerts | [Docs](https://docs.blazorbootstrap.com/components/alerts) | [Demos](https://demos.blazorbootstrap.com/alerts) | +| AutoComplete | [Docs](https://docs.blazorbootstrap.com/forms/autocomplete) | [Demos](https://demos.blazorbootstrap.com/autocomplete) | +| Badge | [Docs](https://docs.blazorbootstrap.com/components/badge) | [Demos](https://demos.blazorbootstrap.com/badge) | +| Breadcrumb | [Docs](https://docs.blazorbootstrap.com/components/breadcrumb) | [Demos](https://demos.blazorbootstrap.com/breadcrumb) | +| Buttons | [Docs](https://docs.blazorbootstrap.com/components/buttons) | [Demos](https://demos.blazorbootstrap.com/buttons) | +| Callout | [Docs](https://docs.blazorbootstrap.com/components/callout) | [Demos](https://demos.blazorbootstrap.com/callout) | +| Card | [Docs](https://docs.blazorbootstrap.com/components/card) | [Demos](https://demos.blazorbootstrap.com/card) | +| Charts: Bar chart | [Docs](https://docs.blazorbootstrap.com/data-visualization/bar-chart) | [Demos](https://demos.blazorbootstrap.com/charts/bar-chart) | +| Charts: Doughnut chart | [Docs](https://docs.blazorbootstrap.com/data-visualization/doughnut-chart) | [Demos](https://demos.blazorbootstrap.com/charts/doughnut-chart) | +| Charts: Line chart | [Docs](https://docs.blazorbootstrap.com/data-visualization/line-chart) | [Demos](https://demos.blazorbootstrap.com/charts/line-chart) | +| Charts: Pie chart | [Docs](https://docs.blazorbootstrap.com/data-visualization/pie-chart) | [Demos](https://demos.blazorbootstrap.com/charts/pie-chart) | +| Collapse | [Docs](https://docs.blazorbootstrap.com/components/collapse) | [Demos](https://demos.blazorbootstrap.com/collapse) | +| Confirm Dialog | [Docs](https://docs.blazorbootstrap.com/components/confirm-dialog) | [Demos](https://demos.blazorbootstrap.com/confirm-dialog) | +| Currency Input | [Docs](https://docs.blazorbootstrap.com/forms/currency-input) | [Demos](https://demos.blazorbootstrap.com/form/currency-input) | +| Date Input | [Docs](https://docs.blazorbootstrap.com/forms/date-input) | [Demos](https://demos.blazorbootstrap.com/form/date-input) | +| Dropdown | [Docs](https://docs.blazorbootstrap.com/components/dropdown) | [Demos](https://demos.blazorbootstrap.com/dropdown) | +| Grid | [Docs](https://docs.blazorbootstrap.com/components/grid) | [Demos](https://demos.blazorbootstrap.com/grid) | +| Icons | [Docs](https://docs.blazorbootstrap.com/content/icons) | [Demos](https://demos.blazorbootstrap.com/icons) | +| Modals | [Docs](https://docs.blazorbootstrap.com/components/modal) | [Demos](https://demos.blazorbootstrap.com/modals) | +| Number Input | [Docs](https://docs.blazorbootstrap.com/forms/number-input) | [Demos](https://demos.blazorbootstrap.com/form/number-input) | +| Offcanvas | [Docs](https://docs.blazorbootstrap.com/components/offcanvas) | [Demos](https://demos.blazorbootstrap.com/offcanvas) | +| Pagination | [Docs](https://docs.blazorbootstrap.com/components/pagination) | [Demos](https://demos.blazorbootstrap.com/pagination) | +| PDF Viewer | [Docs](https://docs.blazorbootstrap.com/components/pdf-viewer) | [Demos](https://demos.blazorbootstrap.com/pdf-viewer) | +| Placeholders | [Docs](https://docs.blazorbootstrap.com/components/placeholders) | [Demos](https://demos.blazorbootstrap.com/placeholders) | +| Preload | [Docs](https://docs.blazorbootstrap.com/components/preload) | [Demos](https://demos.blazorbootstrap.com/preload) | +| Progress | [Docs](https://docs.blazorbootstrap.com/components/progress) | [Demos](https://demos.blazorbootstrap.com/progress) | +| RangeInput | [Docs](https://docs.blazorbootstrap.com/forms/range-input) | [Demos](https://demos.blazorbootstrap.com/form/range-input) | +| Ribbon | [Docs](https://docs.blazorbootstrap.com/components/ribbon) | [Demos](https://demos.blazorbootstrap.com/ribbon) | +| Script Loader | [Docs](https://docs.blazorbootstrap.com/components/script-loader) | [Demos](https://demos.blazorbootstrap.com/script-loader) | +| Sidebar | [Docs](https://docs.blazorbootstrap.com/components/sidebar) | [Demos](https://demos.blazorbootstrap.com/sidebar) | +| Sidebar2 | [Docs](https://docs.blazorbootstrap.com/components/sidebar2) | [Demos](https://demos.blazorbootstrap.com/sidebar2) | +| Sortable List | [Docs](https://docs.blazorbootstrap.com/components/sortable-list) | [Demos](https://demos.blazorbootstrap.com/sortable-list) | +| Spinners | [Docs](https://docs.blazorbootstrap.com/components/spinners) | [Demos](https://demos.blazorbootstrap.com/spinners) | +| Switch | [Docs](https://docs.blazorbootstrap.com/forms/switch) | [Demos](https://demos.blazorbootstrap.com/form/switch) | +| Tabs | [Docs](https://docs.blazorbootstrap.com/components/tabs) | [Demos](https://demos.blazorbootstrap.com/tabs) | +| Time Input | [Docs](https://docs.blazorbootstrap.com/forms/time-input) | [Demos](https://demos.blazorbootstrap.com/form/time-input) | +| Toasts | [Docs](https://docs.blazorbootstrap.com/components/toasts) | [Demos](https://demos.blazorbootstrap.com/toasts) | +| Tooltips | [Docs](https://docs.blazorbootstrap.com/components/tooltips) | [Demos](https://demos.blazorbootstrap.com/tooltips) | + +More components coming... + +## Documentation + +Blazor Bootstrap's documentation, included in this repo in the root directory, is built with [Docusaurus](https://docusaurus.io/) and publicly hosted on GitHub Pages at . The docs may also be run locally. + +## Creators + +**Vikram Reddy** + +## Copyright and license + +Code and documentation copyright 2024 [Blazor Bootstrap](https://docs.blazorbootstrap.com/) Code released under the [Apache-2.0 License](https://github.com/vikramlearning/blazorbootstrap/blob/master/LICENSE.txt).