about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTheArcaneBrony <myrainbowdash949@gmail.com>2023-12-07 07:27:37 +0100
committerTheArcaneBrony <myrainbowdash949@gmail.com>2023-12-07 07:27:37 +0100
commit98e89232ff50b9c48a11fcae27869806490b1187 (patch)
tree433405d39ed533842c9d684a79b4216efe834893
parentReformat (diff)
downloadMatrixUtils-98e89232ff50b9c48a11fcae27869806490b1187.tar.xz
Temp state
-rw-r--r--.editorconfig26
-rw-r--r--.editorconfig2.editorconfig606
-rw-r--r--.editorconfig3.editorconfig606
m---------LibMatrix0
-rw-r--r--MatrixRoomUtils.Web/MatrixRoomUtils.Web.csproj45
-rw-r--r--MatrixRoomUtils.Web/Pages/Index.razor16
-rw-r--r--MatrixRoomUtils.Web/Pages/Rooms/Index.razor88
-rw-r--r--MatrixRoomUtils.Web/Program.cs8
-rw-r--r--MatrixRoomUtils.Web/Shared/RoomListItem.razor2
-rw-r--r--MatrixRoomUtils.Web/appsettings.Development.json9
-rw-r--r--MatrixRoomUtils.Web/appsettings.json9
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/jetbrains-mono.css15
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-Bold.ttfbin277828 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-BoldItalic.ttfbin279832 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-ExtraBold.ttfbin279404 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-ExtraBoldItalic.ttfbin281616 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-ExtraLight.ttfbin274144 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-ExtraLightItalic.ttfbin274240 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-Italic.ttfbin276840 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-Light.ttfbin276452 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-LightItalic.ttfbin277104 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-Medium.ttfbin273860 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-MediumItalic.ttfbin276804 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-Regular.ttfbin273900 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-SemiBold.ttfbin277092 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-SemiBoldItalic.ttfbin279828 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-Thin.ttfbin270112 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-ThinItalic.ttfbin272984 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-Bold.ttfbin210988 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-BoldItalic.ttfbin214132 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-ExtraBold.ttfbin213372 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-ExtraBoldItalic.ttfbin215456 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-ExtraLight.ttfbin209072 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-ExtraLightItalic.ttfbin209884 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-Italic.ttfbin211624 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-Light.ttfbin210840 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-LightItalic.ttfbin212320 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-Medium.ttfbin208276 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-MediumItalic.ttfbin211604 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-Regular.ttfbin208576 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-SemiBold.ttfbin209864 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-SemiBoldItalic.ttfbin214032 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-Thin.ttfbin206004 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-ThinItalic.ttfbin209124 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/variable/JetBrainsMono-Italic[wght].ttfbin308888 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/variable/JetBrainsMono[wght].ttfbin303144 -> 0 bytes
-rw-r--r--MatrixRoomUtils.Web/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css949
-rw-r--r--MatrixRoomUtils.Web/wwwroot/index.html2
-rwxr-xr-xdeploy-chroot.sh28
-rwxr-xr-xdeploy-local.sh15
-rwxr-xr-xdeploy.sh4
-rw-r--r--mirrorlist30
-rw-r--r--pacman.conf104
53 files changed, 2481 insertions, 81 deletions
diff --git a/.editorconfig b/.editorconfig
index 0cb7ebe..e8dd2db 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -1,11 +1,10 @@
-
 [*]
 charset = utf-8
 end_of_line = lf
+indent_size = 4
+indent_style = space
 trim_trailing_whitespace = true
 insert_final_newline = true
-indent_style = space
-indent_size = 4
 tab_width = 4
 
 # Microsoft .NET properties
@@ -320,7 +319,7 @@ dotnet_naming_style.lower_camel_case_style_1.capitalization = camel_case
 dotnet_naming_style.t_upper_camel_case_style.capitalization = pascal_case
 dotnet_naming_style.t_upper_camel_case_style.required_prefix = T
 dotnet_naming_style.upper_camel_case_style.capitalization = pascal_case
-dotnet_naming_symbols.constants_symbols.applicable_accessibilities = public,internal,protected,protected_internal,private_protected
+dotnet_naming_symbols.constants_symbols.applicable_accessibilities = public, internal, protected, protected_internal, private_protected
 dotnet_naming_symbols.constants_symbols.applicable_kinds = field
 dotnet_naming_symbols.constants_symbols.required_modifiers = const
 dotnet_naming_symbols.event_symbols.applicable_accessibilities = *
@@ -348,16 +347,16 @@ dotnet_naming_symbols.private_static_fields_symbols.applicable_kinds = field
 dotnet_naming_symbols.private_static_fields_symbols.required_modifiers = static
 dotnet_naming_symbols.private_static_readonly_symbols.applicable_accessibilities = private
 dotnet_naming_symbols.private_static_readonly_symbols.applicable_kinds = field
-dotnet_naming_symbols.private_static_readonly_symbols.required_modifiers = static,readonly
+dotnet_naming_symbols.private_static_readonly_symbols.required_modifiers = static, readonly
 dotnet_naming_symbols.property_symbols.applicable_accessibilities = *
 dotnet_naming_symbols.property_symbols.applicable_kinds = property
-dotnet_naming_symbols.public_fields_symbols.applicable_accessibilities = public,internal,protected,protected_internal,private_protected
+dotnet_naming_symbols.public_fields_symbols.applicable_accessibilities = public, internal, protected, protected_internal, private_protected
 dotnet_naming_symbols.public_fields_symbols.applicable_kinds = field
-dotnet_naming_symbols.static_readonly_symbols.applicable_accessibilities = public,internal,protected,protected_internal,private_protected
+dotnet_naming_symbols.static_readonly_symbols.applicable_accessibilities = public, internal, protected, protected_internal, private_protected
 dotnet_naming_symbols.static_readonly_symbols.applicable_kinds = field
-dotnet_naming_symbols.static_readonly_symbols.required_modifiers = static,readonly
+dotnet_naming_symbols.static_readonly_symbols.required_modifiers = static, readonly
 dotnet_naming_symbols.types_and_namespaces_symbols.applicable_accessibilities = *
-dotnet_naming_symbols.types_and_namespaces_symbols.applicable_kinds = namespace,class,struct,enum,delegate
+dotnet_naming_symbols.types_and_namespaces_symbols.applicable_kinds = namespace, class, struct, enum, delegate
 dotnet_naming_symbols.type_parameters_symbols.applicable_accessibilities = *
 dotnet_naming_symbols.type_parameters_symbols.applicable_kinds = type_parameter
 dotnet_separate_import_directive_groups = false
@@ -372,9 +371,8 @@ dotnet_style_qualification_for_field = false:suggestion
 dotnet_style_qualification_for_method = false:suggestion
 dotnet_style_qualification_for_property = false:suggestion
 dotnet_style_require_accessibility_modifiers = for_non_interface_members:error
-file_header_template =
+file_header_template = # ReSharper properties
 
-# ReSharper properties
 resharper_alignment_tab_fill_style = use_spaces
 resharper_align_first_arg_by_paren = false
 resharper_align_linq_query = false
@@ -535,7 +533,7 @@ resharper_generator_mode = false
 resharper_html_allow_far_alignment = true
 resharper_html_attribute_indent = align_by_first_attribute
 resharper_html_insert_final_newline = false
-resharper_html_linebreak_before_elements = body,div,p,form,h1,h2,h3
+resharper_html_linebreak_before_elements = body, div, p, form, h1, h2, h3
 resharper_html_max_blank_lines_between_tags = 2
 resharper_html_max_line_length = 180
 resharper_html_pi_attribute_style = on_single_line
@@ -665,7 +663,7 @@ resharper_place_type_attribute_on_same_line = false
 resharper_place_type_constraints_on_same_line = true
 resharper_prefer_explicit_discard_declaration = false
 resharper_prefer_separate_deconstructed_variables_declaration = false
-resharper_preserve_spaces_inside_tags = pre,textarea
+resharper_preserve_spaces_inside_tags = pre, textarea
 resharper_qualified_using_at_nested_scope = false
 resharper_quote_style = doublequoted
 resharper_razor_prefer_qualified_reference = true
@@ -893,7 +891,7 @@ resharper_wrap_verbatim_interpolated_strings = no_wrap
 resharper_xmldoc_allow_far_alignment = false
 resharper_xmldoc_attribute_indent = single_indent
 resharper_xmldoc_insert_final_newline = false
-resharper_xmldoc_linebreak_before_elements = summary,remarks,example,returns,param,typeparam,value,para
+resharper_xmldoc_linebreak_before_elements = summary, remarks, example, returns, param, typeparam, value, para
 resharper_xmldoc_max_blank_lines_between_tags = 0
 resharper_xmldoc_max_line_length = 180
 resharper_xmldoc_pi_attribute_style = do_not_touch
diff --git a/.editorconfig2.editorconfig b/.editorconfig2.editorconfig
new file mode 100644
index 0000000..8884e9d
--- /dev/null
+++ b/.editorconfig2.editorconfig
@@ -0,0 +1,606 @@
+[*]
+charset = utf-8
+end_of_line = lf
+indent_size = 2
+indent_style = space
+insert_final_newline = false
+max_line_length = 120
+tab_width = 2
+trim_trailing_whitespace = false
+ij_continuation_indent_size = 8
+ij_formatter_off_tag = @formatter:off
+ij_formatter_on_tag = @formatter:on
+ij_formatter_tags_enabled = true
+ij_smart_tabs = false
+ij_visual_guides = 
+ij_wrap_on_typing = false
+
+[*.cs]
+indent_size = 4
+tab_width = 4
+
+[*.cshtml]
+indent_size = 4
+tab_width = 4
+
+[*.css]
+indent_size = 4
+tab_width = 4
+ij_css_align_closing_brace_with_properties = false
+ij_css_blank_lines_around_nested_selector = 1
+ij_css_blank_lines_between_blocks = 1
+ij_css_block_comment_add_space = false
+ij_css_brace_placement = end_of_line
+ij_css_enforce_quotes_on_format = false
+ij_css_hex_color_long_format = false
+ij_css_hex_color_lower_case = false
+ij_css_hex_color_short_format = false
+ij_css_hex_color_upper_case = false
+ij_css_keep_blank_lines_in_code = 2
+ij_css_keep_indents_on_empty_lines = false
+ij_css_keep_single_line_blocks = false
+ij_css_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow
+ij_css_space_after_colon = true
+ij_css_space_before_opening_brace = true
+ij_css_use_double_quotes = true
+ij_css_value_alignment = do_not_align
+
+[*.less]
+tab_width = 4
+ij_less_align_closing_brace_with_properties = false
+ij_less_blank_lines_around_nested_selector = 1
+ij_less_blank_lines_between_blocks = 1
+ij_less_block_comment_add_space = false
+ij_less_brace_placement = 0
+ij_less_enforce_quotes_on_format = false
+ij_less_hex_color_long_format = false
+ij_less_hex_color_lower_case = false
+ij_less_hex_color_short_format = false
+ij_less_hex_color_upper_case = false
+ij_less_keep_blank_lines_in_code = 2
+ij_less_keep_indents_on_empty_lines = false
+ij_less_keep_single_line_blocks = false
+ij_less_line_comment_add_space = false
+ij_less_line_comment_at_first_column = false
+ij_less_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow
+ij_less_space_after_colon = true
+ij_less_space_before_opening_brace = true
+ij_less_use_double_quotes = true
+ij_less_value_alignment = 0
+
+[*.properties]
+ij_properties_align_group_field_declarations = false
+ij_properties_keep_blank_lines = false
+ij_properties_key_value_delimiter = equals
+ij_properties_spaces_around_key_value_delimiter = false
+
+[*.sass]
+tab_width = 4
+ij_sass_align_closing_brace_with_properties = false
+ij_sass_blank_lines_around_nested_selector = 1
+ij_sass_blank_lines_between_blocks = 1
+ij_sass_brace_placement = 0
+ij_sass_enforce_quotes_on_format = false
+ij_sass_hex_color_long_format = false
+ij_sass_hex_color_lower_case = false
+ij_sass_hex_color_short_format = false
+ij_sass_hex_color_upper_case = false
+ij_sass_keep_blank_lines_in_code = 2
+ij_sass_keep_indents_on_empty_lines = false
+ij_sass_keep_single_line_blocks = false
+ij_sass_line_comment_add_space = false
+ij_sass_line_comment_at_first_column = false
+ij_sass_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow
+ij_sass_space_after_colon = true
+ij_sass_space_before_opening_brace = true
+ij_sass_use_double_quotes = true
+ij_sass_value_alignment = 0
+
+[*.scss]
+tab_width = 4
+ij_scss_align_closing_brace_with_properties = false
+ij_scss_blank_lines_around_nested_selector = 1
+ij_scss_blank_lines_between_blocks = 1
+ij_scss_block_comment_add_space = false
+ij_scss_brace_placement = 0
+ij_scss_enforce_quotes_on_format = false
+ij_scss_hex_color_long_format = false
+ij_scss_hex_color_lower_case = false
+ij_scss_hex_color_short_format = false
+ij_scss_hex_color_upper_case = false
+ij_scss_keep_blank_lines_in_code = 2
+ij_scss_keep_indents_on_empty_lines = false
+ij_scss_keep_single_line_blocks = false
+ij_scss_line_comment_add_space = false
+ij_scss_line_comment_at_first_column = false
+ij_scss_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow
+ij_scss_space_after_colon = true
+ij_scss_space_before_opening_brace = true
+ij_scss_use_double_quotes = true
+ij_scss_value_alignment = 0
+
+[*.vb]
+indent_size = 4
+tab_width = 4
+
+[.editorconfig]
+ij_editorconfig_align_group_field_declarations = false
+ij_editorconfig_space_after_colon = false
+ij_editorconfig_space_after_comma = true
+ij_editorconfig_space_before_colon = false
+ij_editorconfig_space_before_comma = false
+ij_editorconfig_spaces_around_assignment_operators = true
+
+[{*.ant,*.appxmanifest,*.axml,*.cscfg,*.csdef,*.disco,*.dotsettings,*.filelayout,*.fxml,*.jhm,*.jnlp,*.jrxml,*.manifest,*.myapp,*.nuspec,*.rng,*.stylecop,*.svcmap,*.tld,*.wadcfgx,*.webref,*.wsdl,*.xml,*.xsd,*.xsl,*.xslt,*.xul,StyleCop.Cache}]
+indent_size = 4
+tab_width = 4
+ij_xml_align_attributes = true
+ij_xml_align_text = false
+ij_xml_attribute_wrap = normal
+ij_xml_block_comment_add_space = false
+ij_xml_block_comment_at_first_column = true
+ij_xml_keep_blank_lines = 2
+ij_xml_keep_indents_on_empty_lines = false
+ij_xml_keep_line_breaks = true
+ij_xml_keep_line_breaks_in_text = true
+ij_xml_keep_whitespaces = false
+ij_xml_keep_whitespaces_around_cdata = preserve
+ij_xml_keep_whitespaces_inside_cdata = false
+ij_xml_line_comment_at_first_column = true
+ij_xml_space_after_tag_name = false
+ij_xml_space_around_equals_in_attribute = false
+ij_xml_space_inside_empty_tag = false
+ij_xml_text_wrap = normal
+
+[{*.ats,*.cts,*.mts,*.ts}]
+indent_size = 4
+tab_width = 4
+ij_continuation_indent_size = 4
+ij_typescript_align_imports = false
+ij_typescript_align_multiline_array_initializer_expression = false
+ij_typescript_align_multiline_binary_operation = false
+ij_typescript_align_multiline_chained_methods = false
+ij_typescript_align_multiline_extends_list = false
+ij_typescript_align_multiline_for = true
+ij_typescript_align_multiline_parameters = true
+ij_typescript_align_multiline_parameters_in_calls = false
+ij_typescript_align_multiline_ternary_operation = false
+ij_typescript_align_object_properties = 0
+ij_typescript_align_union_types = false
+ij_typescript_align_var_statements = 0
+ij_typescript_array_initializer_new_line_after_left_brace = false
+ij_typescript_array_initializer_right_brace_on_new_line = false
+ij_typescript_array_initializer_wrap = off
+ij_typescript_assignment_wrap = off
+ij_typescript_binary_operation_sign_on_next_line = false
+ij_typescript_binary_operation_wrap = off
+ij_typescript_blacklist_imports = rxjs/Rx,node_modules/**,**/node_modules/**,@angular/material,@angular/material/typings/**
+ij_typescript_blank_lines_after_imports = 1
+ij_typescript_blank_lines_around_class = 1
+ij_typescript_blank_lines_around_field = 0
+ij_typescript_blank_lines_around_field_in_interface = 0
+ij_typescript_blank_lines_around_function = 1
+ij_typescript_blank_lines_around_method = 1
+ij_typescript_blank_lines_around_method_in_interface = 1
+ij_typescript_block_brace_style = end_of_line
+ij_typescript_block_comment_add_space = false
+ij_typescript_block_comment_at_first_column = true
+ij_typescript_call_parameters_new_line_after_left_paren = false
+ij_typescript_call_parameters_right_paren_on_new_line = false
+ij_typescript_call_parameters_wrap = off
+ij_typescript_catch_on_new_line = false
+ij_typescript_chained_call_dot_on_new_line = true
+ij_typescript_class_brace_style = end_of_line
+ij_typescript_comma_on_new_line = false
+ij_typescript_do_while_brace_force = never
+ij_typescript_else_on_new_line = false
+ij_typescript_enforce_trailing_comma = keep
+ij_typescript_enum_constants_wrap = on_every_item
+ij_typescript_extends_keyword_wrap = off
+ij_typescript_extends_list_wrap = off
+ij_typescript_field_prefix = _
+ij_typescript_file_name_style = relaxed
+ij_typescript_finally_on_new_line = false
+ij_typescript_for_brace_force = never
+ij_typescript_for_statement_new_line_after_left_paren = false
+ij_typescript_for_statement_right_paren_on_new_line = false
+ij_typescript_for_statement_wrap = off
+ij_typescript_force_quote_style = false
+ij_typescript_force_semicolon_style = false
+ij_typescript_function_expression_brace_style = end_of_line
+ij_typescript_if_brace_force = never
+ij_typescript_import_merge_members = global
+ij_typescript_import_prefer_absolute_path = global
+ij_typescript_import_sort_members = true
+ij_typescript_import_sort_module_name = false
+ij_typescript_import_use_node_resolution = true
+ij_typescript_imports_wrap = on_every_item
+ij_typescript_indent_case_from_switch = true
+ij_typescript_indent_chained_calls = true
+ij_typescript_indent_package_children = 0
+ij_typescript_jsdoc_include_types = false
+ij_typescript_jsx_attribute_value = braces
+ij_typescript_keep_blank_lines_in_code = 2
+ij_typescript_keep_first_column_comment = true
+ij_typescript_keep_indents_on_empty_lines = false
+ij_typescript_keep_line_breaks = true
+ij_typescript_keep_simple_blocks_in_one_line = false
+ij_typescript_keep_simple_methods_in_one_line = false
+ij_typescript_line_comment_add_space = true
+ij_typescript_line_comment_at_first_column = false
+ij_typescript_method_brace_style = end_of_line
+ij_typescript_method_call_chain_wrap = off
+ij_typescript_method_parameters_new_line_after_left_paren = false
+ij_typescript_method_parameters_right_paren_on_new_line = false
+ij_typescript_method_parameters_wrap = off
+ij_typescript_object_literal_wrap = on_every_item
+ij_typescript_object_types_wrap = on_every_item
+ij_typescript_parentheses_expression_new_line_after_left_paren = false
+ij_typescript_parentheses_expression_right_paren_on_new_line = false
+ij_typescript_place_assignment_sign_on_next_line = false
+ij_typescript_prefer_as_type_cast = false
+ij_typescript_prefer_explicit_types_function_expression_returns = false
+ij_typescript_prefer_explicit_types_function_returns = false
+ij_typescript_prefer_explicit_types_vars_fields = false
+ij_typescript_prefer_parameters_wrap = false
+ij_typescript_property_prefix = 
+ij_typescript_reformat_c_style_comments = false
+ij_typescript_space_after_colon = true
+ij_typescript_space_after_comma = true
+ij_typescript_space_after_dots_in_rest_parameter = false
+ij_typescript_space_after_generator_mult = true
+ij_typescript_space_after_property_colon = true
+ij_typescript_space_after_quest = true
+ij_typescript_space_after_type_colon = true
+ij_typescript_space_after_unary_not = false
+ij_typescript_space_before_async_arrow_lparen = true
+ij_typescript_space_before_catch_keyword = true
+ij_typescript_space_before_catch_left_brace = true
+ij_typescript_space_before_catch_parentheses = true
+ij_typescript_space_before_class_lbrace = true
+ij_typescript_space_before_class_left_brace = true
+ij_typescript_space_before_colon = true
+ij_typescript_space_before_comma = false
+ij_typescript_space_before_do_left_brace = true
+ij_typescript_space_before_else_keyword = true
+ij_typescript_space_before_else_left_brace = true
+ij_typescript_space_before_finally_keyword = true
+ij_typescript_space_before_finally_left_brace = true
+ij_typescript_space_before_for_left_brace = true
+ij_typescript_space_before_for_parentheses = true
+ij_typescript_space_before_for_semicolon = false
+ij_typescript_space_before_function_left_parenth = true
+ij_typescript_space_before_generator_mult = false
+ij_typescript_space_before_if_left_brace = true
+ij_typescript_space_before_if_parentheses = true
+ij_typescript_space_before_method_call_parentheses = false
+ij_typescript_space_before_method_left_brace = true
+ij_typescript_space_before_method_parentheses = false
+ij_typescript_space_before_property_colon = false
+ij_typescript_space_before_quest = true
+ij_typescript_space_before_switch_left_brace = true
+ij_typescript_space_before_switch_parentheses = true
+ij_typescript_space_before_try_left_brace = true
+ij_typescript_space_before_type_colon = false
+ij_typescript_space_before_unary_not = false
+ij_typescript_space_before_while_keyword = true
+ij_typescript_space_before_while_left_brace = true
+ij_typescript_space_before_while_parentheses = true
+ij_typescript_spaces_around_additive_operators = true
+ij_typescript_spaces_around_arrow_function_operator = true
+ij_typescript_spaces_around_assignment_operators = true
+ij_typescript_spaces_around_bitwise_operators = true
+ij_typescript_spaces_around_equality_operators = true
+ij_typescript_spaces_around_logical_operators = true
+ij_typescript_spaces_around_multiplicative_operators = true
+ij_typescript_spaces_around_relational_operators = true
+ij_typescript_spaces_around_shift_operators = true
+ij_typescript_spaces_around_unary_operator = false
+ij_typescript_spaces_within_array_initializer_brackets = false
+ij_typescript_spaces_within_brackets = false
+ij_typescript_spaces_within_catch_parentheses = false
+ij_typescript_spaces_within_for_parentheses = false
+ij_typescript_spaces_within_if_parentheses = false
+ij_typescript_spaces_within_imports = false
+ij_typescript_spaces_within_interpolation_expressions = false
+ij_typescript_spaces_within_method_call_parentheses = false
+ij_typescript_spaces_within_method_parentheses = false
+ij_typescript_spaces_within_object_literal_braces = false
+ij_typescript_spaces_within_object_type_braces = true
+ij_typescript_spaces_within_parentheses = false
+ij_typescript_spaces_within_switch_parentheses = false
+ij_typescript_spaces_within_type_assertion = false
+ij_typescript_spaces_within_union_types = true
+ij_typescript_spaces_within_while_parentheses = false
+ij_typescript_special_else_if_treatment = true
+ij_typescript_ternary_operation_signs_on_next_line = false
+ij_typescript_ternary_operation_wrap = off
+ij_typescript_union_types_wrap = on_every_item
+ij_typescript_use_chained_calls_group_indents = false
+ij_typescript_use_double_quotes = true
+ij_typescript_use_explicit_js_extension = auto
+ij_typescript_use_path_mapping = always
+ij_typescript_use_public_modifier = false
+ij_typescript_use_semicolon_after_statement = true
+ij_typescript_var_declaration_wrap = normal
+ij_typescript_while_brace_force = never
+ij_typescript_while_on_new_line = false
+ij_typescript_wrap_comments = false
+
+[{*.axaml,*.paml,*.xaml}]
+indent_size = 4
+tab_width = 4
+
+[{*.bash,*.sh,*.zsh}]
+ij_shell_binary_ops_start_line = false
+ij_shell_keep_column_alignment_padding = false
+ij_shell_minify_program = false
+ij_shell_redirect_followed_by_space = false
+ij_shell_switch_cases_indented = false
+ij_shell_use_unix_line_separator = true
+
+[{*.c,*.c++,*.cc,*.cp,*.cpp,*.cppm,*.cu,*.cxx,*.ino,*.ixx,*.usf}]
+indent_size = 4
+tab_width = 4
+
+[{*.cjs,*.js}]
+indent_size = 4
+tab_width = 4
+ij_continuation_indent_size = 4
+ij_javascript_align_imports = false
+ij_javascript_align_multiline_array_initializer_expression = false
+ij_javascript_align_multiline_binary_operation = false
+ij_javascript_align_multiline_chained_methods = false
+ij_javascript_align_multiline_extends_list = false
+ij_javascript_align_multiline_for = true
+ij_javascript_align_multiline_parameters = true
+ij_javascript_align_multiline_parameters_in_calls = false
+ij_javascript_align_multiline_ternary_operation = false
+ij_javascript_align_object_properties = 0
+ij_javascript_align_union_types = false
+ij_javascript_align_var_statements = 0
+ij_javascript_array_initializer_new_line_after_left_brace = false
+ij_javascript_array_initializer_right_brace_on_new_line = false
+ij_javascript_array_initializer_wrap = off
+ij_javascript_assignment_wrap = off
+ij_javascript_binary_operation_sign_on_next_line = false
+ij_javascript_binary_operation_wrap = off
+ij_javascript_blacklist_imports = rxjs/Rx,node_modules/**,**/node_modules/**,@angular/material,@angular/material/typings/**
+ij_javascript_blank_lines_after_imports = 1
+ij_javascript_blank_lines_around_class = 1
+ij_javascript_blank_lines_around_field = 0
+ij_javascript_blank_lines_around_function = 1
+ij_javascript_blank_lines_around_method = 1
+ij_javascript_block_brace_style = end_of_line
+ij_javascript_block_comment_add_space = false
+ij_javascript_block_comment_at_first_column = true
+ij_javascript_call_parameters_new_line_after_left_paren = false
+ij_javascript_call_parameters_right_paren_on_new_line = false
+ij_javascript_call_parameters_wrap = off
+ij_javascript_catch_on_new_line = false
+ij_javascript_chained_call_dot_on_new_line = true
+ij_javascript_class_brace_style = end_of_line
+ij_javascript_comma_on_new_line = false
+ij_javascript_do_while_brace_force = never
+ij_javascript_else_on_new_line = false
+ij_javascript_enforce_trailing_comma = keep
+ij_javascript_extends_keyword_wrap = off
+ij_javascript_extends_list_wrap = off
+ij_javascript_field_prefix = _
+ij_javascript_file_name_style = relaxed
+ij_javascript_finally_on_new_line = false
+ij_javascript_for_brace_force = never
+ij_javascript_for_statement_new_line_after_left_paren = false
+ij_javascript_for_statement_right_paren_on_new_line = false
+ij_javascript_for_statement_wrap = off
+ij_javascript_force_quote_style = false
+ij_javascript_force_semicolon_style = false
+ij_javascript_function_expression_brace_style = end_of_line
+ij_javascript_if_brace_force = never
+ij_javascript_import_merge_members = global
+ij_javascript_import_prefer_absolute_path = global
+ij_javascript_import_sort_members = true
+ij_javascript_import_sort_module_name = false
+ij_javascript_import_use_node_resolution = true
+ij_javascript_imports_wrap = on_every_item
+ij_javascript_indent_case_from_switch = true
+ij_javascript_indent_chained_calls = true
+ij_javascript_indent_package_children = 0
+ij_javascript_jsx_attribute_value = braces
+ij_javascript_keep_blank_lines_in_code = 2
+ij_javascript_keep_first_column_comment = true
+ij_javascript_keep_indents_on_empty_lines = false
+ij_javascript_keep_line_breaks = true
+ij_javascript_keep_simple_blocks_in_one_line = false
+ij_javascript_keep_simple_methods_in_one_line = false
+ij_javascript_line_comment_add_space = true
+ij_javascript_line_comment_at_first_column = false
+ij_javascript_method_brace_style = end_of_line
+ij_javascript_method_call_chain_wrap = off
+ij_javascript_method_parameters_new_line_after_left_paren = false
+ij_javascript_method_parameters_right_paren_on_new_line = false
+ij_javascript_method_parameters_wrap = off
+ij_javascript_object_literal_wrap = on_every_item
+ij_javascript_object_types_wrap = on_every_item
+ij_javascript_parentheses_expression_new_line_after_left_paren = false
+ij_javascript_parentheses_expression_right_paren_on_new_line = false
+ij_javascript_place_assignment_sign_on_next_line = false
+ij_javascript_prefer_as_type_cast = false
+ij_javascript_prefer_explicit_types_function_expression_returns = false
+ij_javascript_prefer_explicit_types_function_returns = false
+ij_javascript_prefer_explicit_types_vars_fields = false
+ij_javascript_prefer_parameters_wrap = false
+ij_javascript_property_prefix = 
+ij_javascript_reformat_c_style_comments = false
+ij_javascript_space_after_colon = true
+ij_javascript_space_after_comma = true
+ij_javascript_space_after_dots_in_rest_parameter = false
+ij_javascript_space_after_generator_mult = true
+ij_javascript_space_after_property_colon = true
+ij_javascript_space_after_quest = true
+ij_javascript_space_after_type_colon = true
+ij_javascript_space_after_unary_not = false
+ij_javascript_space_before_async_arrow_lparen = true
+ij_javascript_space_before_catch_keyword = true
+ij_javascript_space_before_catch_left_brace = true
+ij_javascript_space_before_catch_parentheses = true
+ij_javascript_space_before_class_lbrace = true
+ij_javascript_space_before_class_left_brace = true
+ij_javascript_space_before_colon = true
+ij_javascript_space_before_comma = false
+ij_javascript_space_before_do_left_brace = true
+ij_javascript_space_before_else_keyword = true
+ij_javascript_space_before_else_left_brace = true
+ij_javascript_space_before_finally_keyword = true
+ij_javascript_space_before_finally_left_brace = true
+ij_javascript_space_before_for_left_brace = true
+ij_javascript_space_before_for_parentheses = true
+ij_javascript_space_before_for_semicolon = false
+ij_javascript_space_before_function_left_parenth = true
+ij_javascript_space_before_generator_mult = false
+ij_javascript_space_before_if_left_brace = true
+ij_javascript_space_before_if_parentheses = true
+ij_javascript_space_before_method_call_parentheses = false
+ij_javascript_space_before_method_left_brace = true
+ij_javascript_space_before_method_parentheses = false
+ij_javascript_space_before_property_colon = false
+ij_javascript_space_before_quest = true
+ij_javascript_space_before_switch_left_brace = true
+ij_javascript_space_before_switch_parentheses = true
+ij_javascript_space_before_try_left_brace = true
+ij_javascript_space_before_type_colon = false
+ij_javascript_space_before_unary_not = false
+ij_javascript_space_before_while_keyword = true
+ij_javascript_space_before_while_left_brace = true
+ij_javascript_space_before_while_parentheses = true
+ij_javascript_spaces_around_additive_operators = true
+ij_javascript_spaces_around_arrow_function_operator = true
+ij_javascript_spaces_around_assignment_operators = true
+ij_javascript_spaces_around_bitwise_operators = true
+ij_javascript_spaces_around_equality_operators = true
+ij_javascript_spaces_around_logical_operators = true
+ij_javascript_spaces_around_multiplicative_operators = true
+ij_javascript_spaces_around_relational_operators = true
+ij_javascript_spaces_around_shift_operators = true
+ij_javascript_spaces_around_unary_operator = false
+ij_javascript_spaces_within_array_initializer_brackets = false
+ij_javascript_spaces_within_brackets = false
+ij_javascript_spaces_within_catch_parentheses = false
+ij_javascript_spaces_within_for_parentheses = false
+ij_javascript_spaces_within_if_parentheses = false
+ij_javascript_spaces_within_imports = false
+ij_javascript_spaces_within_interpolation_expressions = false
+ij_javascript_spaces_within_method_call_parentheses = false
+ij_javascript_spaces_within_method_parentheses = false
+ij_javascript_spaces_within_object_literal_braces = false
+ij_javascript_spaces_within_object_type_braces = true
+ij_javascript_spaces_within_parentheses = false
+ij_javascript_spaces_within_switch_parentheses = false
+ij_javascript_spaces_within_type_assertion = false
+ij_javascript_spaces_within_union_types = true
+ij_javascript_spaces_within_while_parentheses = false
+ij_javascript_special_else_if_treatment = true
+ij_javascript_ternary_operation_signs_on_next_line = false
+ij_javascript_ternary_operation_wrap = off
+ij_javascript_union_types_wrap = on_every_item
+ij_javascript_use_chained_calls_group_indents = false
+ij_javascript_use_double_quotes = true
+ij_javascript_use_explicit_js_extension = auto
+ij_javascript_use_path_mapping = always
+ij_javascript_use_public_modifier = false
+ij_javascript_use_semicolon_after_statement = true
+ij_javascript_var_declaration_wrap = normal
+ij_javascript_while_brace_force = never
+ij_javascript_while_on_new_line = false
+ij_javascript_wrap_comments = false
+
+[{*.har,*.jsb2,*.jsb3,*.json,.babelrc,.eslintrc,.stylelintrc,bowerrc,jest.config}]
+tab_width = 4
+ij_json_array_wrapping = split_into_lines
+ij_json_keep_blank_lines_in_code = 0
+ij_json_keep_indents_on_empty_lines = false
+ij_json_keep_line_breaks = true
+ij_json_keep_trailing_comma = false
+ij_json_object_wrapping = split_into_lines
+ij_json_property_alignment = do_not_align
+ij_json_space_after_colon = true
+ij_json_space_after_comma = true
+ij_json_space_before_colon = false
+ij_json_space_before_comma = false
+ij_json_spaces_within_braces = false
+ij_json_spaces_within_brackets = false
+ij_json_wrap_long_lines = false
+
+[{*.htm,*.html,*.sht,*.shtm,*.shtml}]
+indent_size = 4
+tab_width = 4
+ij_html_add_new_line_before_tags = body,div,p,form,h1,h2,h3
+ij_html_align_attributes = true
+ij_html_align_text = false
+ij_html_attribute_wrap = normal
+ij_html_block_comment_add_space = false
+ij_html_block_comment_at_first_column = true
+ij_html_do_not_align_children_of_min_lines = 0
+ij_html_do_not_break_if_inline_tags = title,h1,h2,h3,h4,h5,h6,p
+ij_html_do_not_indent_children_of_tags = html,body,thead,tbody,tfoot
+ij_html_enforce_quotes = false
+ij_html_inline_tags = a,abbr,acronym,b,basefont,bdo,big,br,cite,cite,code,dfn,em,font,i,img,input,kbd,label,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var
+ij_html_keep_blank_lines = 2
+ij_html_keep_indents_on_empty_lines = false
+ij_html_keep_line_breaks = true
+ij_html_keep_line_breaks_in_text = true
+ij_html_keep_whitespaces = false
+ij_html_keep_whitespaces_inside = span,pre,textarea
+ij_html_line_comment_at_first_column = true
+ij_html_new_line_after_last_attribute = never
+ij_html_new_line_before_first_attribute = never
+ij_html_quote_style = double
+ij_html_remove_new_line_before_tags = br
+ij_html_space_after_tag_name = false
+ij_html_space_around_equality_in_attribute = false
+ij_html_space_inside_empty_tag = false
+ij_html_text_wrap = normal
+
+[{*.http,*.rest}]
+indent_size = 0
+ij_continuation_indent_size = 4
+ij_http-request_call_parameters_wrap = normal
+ij_http-request_method_parameters_wrap = split_into_lines
+ij_http-request_space_before_comma = true
+ij_http-request_spaces_around_assignment_operators = true
+
+[{*.jade,*.pug}]
+indent_size = 4
+tab_width = 4
+
+[{*.markdown,*.md}]
+indent_size = 4
+tab_width = 4
+ij_markdown_force_one_space_after_blockquote_symbol = true
+ij_markdown_force_one_space_after_header_symbol = true
+ij_markdown_force_one_space_after_list_bullet = true
+ij_markdown_force_one_space_between_words = true
+ij_markdown_format_tables = true
+ij_markdown_insert_quote_arrows_on_wrap = true
+ij_markdown_keep_indents_on_empty_lines = false
+ij_markdown_keep_line_breaks_inside_text_blocks = true
+ij_markdown_max_lines_around_block_elements = 1
+ij_markdown_max_lines_around_header = 1
+ij_markdown_max_lines_between_paragraphs = 1
+ij_markdown_min_lines_around_block_elements = 1
+ij_markdown_min_lines_around_header = 1
+ij_markdown_min_lines_between_paragraphs = 1
+ij_markdown_wrap_text_if_long = true
+ij_markdown_wrap_text_inside_blockquotes = true
+
+[{*.yaml,*.yml}]
+ij_yaml_align_values_properties = do_not_align
+ij_yaml_autoinsert_sequence_marker = true
+ij_yaml_block_mapping_on_new_line = false
+ij_yaml_indent_sequence_value = true
+ij_yaml_keep_indents_on_empty_lines = false
+ij_yaml_keep_line_breaks = true
+ij_yaml_sequence_on_new_line = false
+ij_yaml_space_before_colon = false
+ij_yaml_spaces_within_braces = true
+ij_yaml_spaces_within_brackets = true
diff --git a/.editorconfig3.editorconfig b/.editorconfig3.editorconfig
new file mode 100644
index 0000000..8884e9d
--- /dev/null
+++ b/.editorconfig3.editorconfig
@@ -0,0 +1,606 @@
+[*]
+charset = utf-8
+end_of_line = lf
+indent_size = 2
+indent_style = space
+insert_final_newline = false
+max_line_length = 120
+tab_width = 2
+trim_trailing_whitespace = false
+ij_continuation_indent_size = 8
+ij_formatter_off_tag = @formatter:off
+ij_formatter_on_tag = @formatter:on
+ij_formatter_tags_enabled = true
+ij_smart_tabs = false
+ij_visual_guides = 
+ij_wrap_on_typing = false
+
+[*.cs]
+indent_size = 4
+tab_width = 4
+
+[*.cshtml]
+indent_size = 4
+tab_width = 4
+
+[*.css]
+indent_size = 4
+tab_width = 4
+ij_css_align_closing_brace_with_properties = false
+ij_css_blank_lines_around_nested_selector = 1
+ij_css_blank_lines_between_blocks = 1
+ij_css_block_comment_add_space = false
+ij_css_brace_placement = end_of_line
+ij_css_enforce_quotes_on_format = false
+ij_css_hex_color_long_format = false
+ij_css_hex_color_lower_case = false
+ij_css_hex_color_short_format = false
+ij_css_hex_color_upper_case = false
+ij_css_keep_blank_lines_in_code = 2
+ij_css_keep_indents_on_empty_lines = false
+ij_css_keep_single_line_blocks = false
+ij_css_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow
+ij_css_space_after_colon = true
+ij_css_space_before_opening_brace = true
+ij_css_use_double_quotes = true
+ij_css_value_alignment = do_not_align
+
+[*.less]
+tab_width = 4
+ij_less_align_closing_brace_with_properties = false
+ij_less_blank_lines_around_nested_selector = 1
+ij_less_blank_lines_between_blocks = 1
+ij_less_block_comment_add_space = false
+ij_less_brace_placement = 0
+ij_less_enforce_quotes_on_format = false
+ij_less_hex_color_long_format = false
+ij_less_hex_color_lower_case = false
+ij_less_hex_color_short_format = false
+ij_less_hex_color_upper_case = false
+ij_less_keep_blank_lines_in_code = 2
+ij_less_keep_indents_on_empty_lines = false
+ij_less_keep_single_line_blocks = false
+ij_less_line_comment_add_space = false
+ij_less_line_comment_at_first_column = false
+ij_less_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow
+ij_less_space_after_colon = true
+ij_less_space_before_opening_brace = true
+ij_less_use_double_quotes = true
+ij_less_value_alignment = 0
+
+[*.properties]
+ij_properties_align_group_field_declarations = false
+ij_properties_keep_blank_lines = false
+ij_properties_key_value_delimiter = equals
+ij_properties_spaces_around_key_value_delimiter = false
+
+[*.sass]
+tab_width = 4
+ij_sass_align_closing_brace_with_properties = false
+ij_sass_blank_lines_around_nested_selector = 1
+ij_sass_blank_lines_between_blocks = 1
+ij_sass_brace_placement = 0
+ij_sass_enforce_quotes_on_format = false
+ij_sass_hex_color_long_format = false
+ij_sass_hex_color_lower_case = false
+ij_sass_hex_color_short_format = false
+ij_sass_hex_color_upper_case = false
+ij_sass_keep_blank_lines_in_code = 2
+ij_sass_keep_indents_on_empty_lines = false
+ij_sass_keep_single_line_blocks = false
+ij_sass_line_comment_add_space = false
+ij_sass_line_comment_at_first_column = false
+ij_sass_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow
+ij_sass_space_after_colon = true
+ij_sass_space_before_opening_brace = true
+ij_sass_use_double_quotes = true
+ij_sass_value_alignment = 0
+
+[*.scss]
+tab_width = 4
+ij_scss_align_closing_brace_with_properties = false
+ij_scss_blank_lines_around_nested_selector = 1
+ij_scss_blank_lines_between_blocks = 1
+ij_scss_block_comment_add_space = false
+ij_scss_brace_placement = 0
+ij_scss_enforce_quotes_on_format = false
+ij_scss_hex_color_long_format = false
+ij_scss_hex_color_lower_case = false
+ij_scss_hex_color_short_format = false
+ij_scss_hex_color_upper_case = false
+ij_scss_keep_blank_lines_in_code = 2
+ij_scss_keep_indents_on_empty_lines = false
+ij_scss_keep_single_line_blocks = false
+ij_scss_line_comment_add_space = false
+ij_scss_line_comment_at_first_column = false
+ij_scss_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow
+ij_scss_space_after_colon = true
+ij_scss_space_before_opening_brace = true
+ij_scss_use_double_quotes = true
+ij_scss_value_alignment = 0
+
+[*.vb]
+indent_size = 4
+tab_width = 4
+
+[.editorconfig]
+ij_editorconfig_align_group_field_declarations = false
+ij_editorconfig_space_after_colon = false
+ij_editorconfig_space_after_comma = true
+ij_editorconfig_space_before_colon = false
+ij_editorconfig_space_before_comma = false
+ij_editorconfig_spaces_around_assignment_operators = true
+
+[{*.ant,*.appxmanifest,*.axml,*.cscfg,*.csdef,*.disco,*.dotsettings,*.filelayout,*.fxml,*.jhm,*.jnlp,*.jrxml,*.manifest,*.myapp,*.nuspec,*.rng,*.stylecop,*.svcmap,*.tld,*.wadcfgx,*.webref,*.wsdl,*.xml,*.xsd,*.xsl,*.xslt,*.xul,StyleCop.Cache}]
+indent_size = 4
+tab_width = 4
+ij_xml_align_attributes = true
+ij_xml_align_text = false
+ij_xml_attribute_wrap = normal
+ij_xml_block_comment_add_space = false
+ij_xml_block_comment_at_first_column = true
+ij_xml_keep_blank_lines = 2
+ij_xml_keep_indents_on_empty_lines = false
+ij_xml_keep_line_breaks = true
+ij_xml_keep_line_breaks_in_text = true
+ij_xml_keep_whitespaces = false
+ij_xml_keep_whitespaces_around_cdata = preserve
+ij_xml_keep_whitespaces_inside_cdata = false
+ij_xml_line_comment_at_first_column = true
+ij_xml_space_after_tag_name = false
+ij_xml_space_around_equals_in_attribute = false
+ij_xml_space_inside_empty_tag = false
+ij_xml_text_wrap = normal
+
+[{*.ats,*.cts,*.mts,*.ts}]
+indent_size = 4
+tab_width = 4
+ij_continuation_indent_size = 4
+ij_typescript_align_imports = false
+ij_typescript_align_multiline_array_initializer_expression = false
+ij_typescript_align_multiline_binary_operation = false
+ij_typescript_align_multiline_chained_methods = false
+ij_typescript_align_multiline_extends_list = false
+ij_typescript_align_multiline_for = true
+ij_typescript_align_multiline_parameters = true
+ij_typescript_align_multiline_parameters_in_calls = false
+ij_typescript_align_multiline_ternary_operation = false
+ij_typescript_align_object_properties = 0
+ij_typescript_align_union_types = false
+ij_typescript_align_var_statements = 0
+ij_typescript_array_initializer_new_line_after_left_brace = false
+ij_typescript_array_initializer_right_brace_on_new_line = false
+ij_typescript_array_initializer_wrap = off
+ij_typescript_assignment_wrap = off
+ij_typescript_binary_operation_sign_on_next_line = false
+ij_typescript_binary_operation_wrap = off
+ij_typescript_blacklist_imports = rxjs/Rx,node_modules/**,**/node_modules/**,@angular/material,@angular/material/typings/**
+ij_typescript_blank_lines_after_imports = 1
+ij_typescript_blank_lines_around_class = 1
+ij_typescript_blank_lines_around_field = 0
+ij_typescript_blank_lines_around_field_in_interface = 0
+ij_typescript_blank_lines_around_function = 1
+ij_typescript_blank_lines_around_method = 1
+ij_typescript_blank_lines_around_method_in_interface = 1
+ij_typescript_block_brace_style = end_of_line
+ij_typescript_block_comment_add_space = false
+ij_typescript_block_comment_at_first_column = true
+ij_typescript_call_parameters_new_line_after_left_paren = false
+ij_typescript_call_parameters_right_paren_on_new_line = false
+ij_typescript_call_parameters_wrap = off
+ij_typescript_catch_on_new_line = false
+ij_typescript_chained_call_dot_on_new_line = true
+ij_typescript_class_brace_style = end_of_line
+ij_typescript_comma_on_new_line = false
+ij_typescript_do_while_brace_force = never
+ij_typescript_else_on_new_line = false
+ij_typescript_enforce_trailing_comma = keep
+ij_typescript_enum_constants_wrap = on_every_item
+ij_typescript_extends_keyword_wrap = off
+ij_typescript_extends_list_wrap = off
+ij_typescript_field_prefix = _
+ij_typescript_file_name_style = relaxed
+ij_typescript_finally_on_new_line = false
+ij_typescript_for_brace_force = never
+ij_typescript_for_statement_new_line_after_left_paren = false
+ij_typescript_for_statement_right_paren_on_new_line = false
+ij_typescript_for_statement_wrap = off
+ij_typescript_force_quote_style = false
+ij_typescript_force_semicolon_style = false
+ij_typescript_function_expression_brace_style = end_of_line
+ij_typescript_if_brace_force = never
+ij_typescript_import_merge_members = global
+ij_typescript_import_prefer_absolute_path = global
+ij_typescript_import_sort_members = true
+ij_typescript_import_sort_module_name = false
+ij_typescript_import_use_node_resolution = true
+ij_typescript_imports_wrap = on_every_item
+ij_typescript_indent_case_from_switch = true
+ij_typescript_indent_chained_calls = true
+ij_typescript_indent_package_children = 0
+ij_typescript_jsdoc_include_types = false
+ij_typescript_jsx_attribute_value = braces
+ij_typescript_keep_blank_lines_in_code = 2
+ij_typescript_keep_first_column_comment = true
+ij_typescript_keep_indents_on_empty_lines = false
+ij_typescript_keep_line_breaks = true
+ij_typescript_keep_simple_blocks_in_one_line = false
+ij_typescript_keep_simple_methods_in_one_line = false
+ij_typescript_line_comment_add_space = true
+ij_typescript_line_comment_at_first_column = false
+ij_typescript_method_brace_style = end_of_line
+ij_typescript_method_call_chain_wrap = off
+ij_typescript_method_parameters_new_line_after_left_paren = false
+ij_typescript_method_parameters_right_paren_on_new_line = false
+ij_typescript_method_parameters_wrap = off
+ij_typescript_object_literal_wrap = on_every_item
+ij_typescript_object_types_wrap = on_every_item
+ij_typescript_parentheses_expression_new_line_after_left_paren = false
+ij_typescript_parentheses_expression_right_paren_on_new_line = false
+ij_typescript_place_assignment_sign_on_next_line = false
+ij_typescript_prefer_as_type_cast = false
+ij_typescript_prefer_explicit_types_function_expression_returns = false
+ij_typescript_prefer_explicit_types_function_returns = false
+ij_typescript_prefer_explicit_types_vars_fields = false
+ij_typescript_prefer_parameters_wrap = false
+ij_typescript_property_prefix = 
+ij_typescript_reformat_c_style_comments = false
+ij_typescript_space_after_colon = true
+ij_typescript_space_after_comma = true
+ij_typescript_space_after_dots_in_rest_parameter = false
+ij_typescript_space_after_generator_mult = true
+ij_typescript_space_after_property_colon = true
+ij_typescript_space_after_quest = true
+ij_typescript_space_after_type_colon = true
+ij_typescript_space_after_unary_not = false
+ij_typescript_space_before_async_arrow_lparen = true
+ij_typescript_space_before_catch_keyword = true
+ij_typescript_space_before_catch_left_brace = true
+ij_typescript_space_before_catch_parentheses = true
+ij_typescript_space_before_class_lbrace = true
+ij_typescript_space_before_class_left_brace = true
+ij_typescript_space_before_colon = true
+ij_typescript_space_before_comma = false
+ij_typescript_space_before_do_left_brace = true
+ij_typescript_space_before_else_keyword = true
+ij_typescript_space_before_else_left_brace = true
+ij_typescript_space_before_finally_keyword = true
+ij_typescript_space_before_finally_left_brace = true
+ij_typescript_space_before_for_left_brace = true
+ij_typescript_space_before_for_parentheses = true
+ij_typescript_space_before_for_semicolon = false
+ij_typescript_space_before_function_left_parenth = true
+ij_typescript_space_before_generator_mult = false
+ij_typescript_space_before_if_left_brace = true
+ij_typescript_space_before_if_parentheses = true
+ij_typescript_space_before_method_call_parentheses = false
+ij_typescript_space_before_method_left_brace = true
+ij_typescript_space_before_method_parentheses = false
+ij_typescript_space_before_property_colon = false
+ij_typescript_space_before_quest = true
+ij_typescript_space_before_switch_left_brace = true
+ij_typescript_space_before_switch_parentheses = true
+ij_typescript_space_before_try_left_brace = true
+ij_typescript_space_before_type_colon = false
+ij_typescript_space_before_unary_not = false
+ij_typescript_space_before_while_keyword = true
+ij_typescript_space_before_while_left_brace = true
+ij_typescript_space_before_while_parentheses = true
+ij_typescript_spaces_around_additive_operators = true
+ij_typescript_spaces_around_arrow_function_operator = true
+ij_typescript_spaces_around_assignment_operators = true
+ij_typescript_spaces_around_bitwise_operators = true
+ij_typescript_spaces_around_equality_operators = true
+ij_typescript_spaces_around_logical_operators = true
+ij_typescript_spaces_around_multiplicative_operators = true
+ij_typescript_spaces_around_relational_operators = true
+ij_typescript_spaces_around_shift_operators = true
+ij_typescript_spaces_around_unary_operator = false
+ij_typescript_spaces_within_array_initializer_brackets = false
+ij_typescript_spaces_within_brackets = false
+ij_typescript_spaces_within_catch_parentheses = false
+ij_typescript_spaces_within_for_parentheses = false
+ij_typescript_spaces_within_if_parentheses = false
+ij_typescript_spaces_within_imports = false
+ij_typescript_spaces_within_interpolation_expressions = false
+ij_typescript_spaces_within_method_call_parentheses = false
+ij_typescript_spaces_within_method_parentheses = false
+ij_typescript_spaces_within_object_literal_braces = false
+ij_typescript_spaces_within_object_type_braces = true
+ij_typescript_spaces_within_parentheses = false
+ij_typescript_spaces_within_switch_parentheses = false
+ij_typescript_spaces_within_type_assertion = false
+ij_typescript_spaces_within_union_types = true
+ij_typescript_spaces_within_while_parentheses = false
+ij_typescript_special_else_if_treatment = true
+ij_typescript_ternary_operation_signs_on_next_line = false
+ij_typescript_ternary_operation_wrap = off
+ij_typescript_union_types_wrap = on_every_item
+ij_typescript_use_chained_calls_group_indents = false
+ij_typescript_use_double_quotes = true
+ij_typescript_use_explicit_js_extension = auto
+ij_typescript_use_path_mapping = always
+ij_typescript_use_public_modifier = false
+ij_typescript_use_semicolon_after_statement = true
+ij_typescript_var_declaration_wrap = normal
+ij_typescript_while_brace_force = never
+ij_typescript_while_on_new_line = false
+ij_typescript_wrap_comments = false
+
+[{*.axaml,*.paml,*.xaml}]
+indent_size = 4
+tab_width = 4
+
+[{*.bash,*.sh,*.zsh}]
+ij_shell_binary_ops_start_line = false
+ij_shell_keep_column_alignment_padding = false
+ij_shell_minify_program = false
+ij_shell_redirect_followed_by_space = false
+ij_shell_switch_cases_indented = false
+ij_shell_use_unix_line_separator = true
+
+[{*.c,*.c++,*.cc,*.cp,*.cpp,*.cppm,*.cu,*.cxx,*.ino,*.ixx,*.usf}]
+indent_size = 4
+tab_width = 4
+
+[{*.cjs,*.js}]
+indent_size = 4
+tab_width = 4
+ij_continuation_indent_size = 4
+ij_javascript_align_imports = false
+ij_javascript_align_multiline_array_initializer_expression = false
+ij_javascript_align_multiline_binary_operation = false
+ij_javascript_align_multiline_chained_methods = false
+ij_javascript_align_multiline_extends_list = false
+ij_javascript_align_multiline_for = true
+ij_javascript_align_multiline_parameters = true
+ij_javascript_align_multiline_parameters_in_calls = false
+ij_javascript_align_multiline_ternary_operation = false
+ij_javascript_align_object_properties = 0
+ij_javascript_align_union_types = false
+ij_javascript_align_var_statements = 0
+ij_javascript_array_initializer_new_line_after_left_brace = false
+ij_javascript_array_initializer_right_brace_on_new_line = false
+ij_javascript_array_initializer_wrap = off
+ij_javascript_assignment_wrap = off
+ij_javascript_binary_operation_sign_on_next_line = false
+ij_javascript_binary_operation_wrap = off
+ij_javascript_blacklist_imports = rxjs/Rx,node_modules/**,**/node_modules/**,@angular/material,@angular/material/typings/**
+ij_javascript_blank_lines_after_imports = 1
+ij_javascript_blank_lines_around_class = 1
+ij_javascript_blank_lines_around_field = 0
+ij_javascript_blank_lines_around_function = 1
+ij_javascript_blank_lines_around_method = 1
+ij_javascript_block_brace_style = end_of_line
+ij_javascript_block_comment_add_space = false
+ij_javascript_block_comment_at_first_column = true
+ij_javascript_call_parameters_new_line_after_left_paren = false
+ij_javascript_call_parameters_right_paren_on_new_line = false
+ij_javascript_call_parameters_wrap = off
+ij_javascript_catch_on_new_line = false
+ij_javascript_chained_call_dot_on_new_line = true
+ij_javascript_class_brace_style = end_of_line
+ij_javascript_comma_on_new_line = false
+ij_javascript_do_while_brace_force = never
+ij_javascript_else_on_new_line = false
+ij_javascript_enforce_trailing_comma = keep
+ij_javascript_extends_keyword_wrap = off
+ij_javascript_extends_list_wrap = off
+ij_javascript_field_prefix = _
+ij_javascript_file_name_style = relaxed
+ij_javascript_finally_on_new_line = false
+ij_javascript_for_brace_force = never
+ij_javascript_for_statement_new_line_after_left_paren = false
+ij_javascript_for_statement_right_paren_on_new_line = false
+ij_javascript_for_statement_wrap = off
+ij_javascript_force_quote_style = false
+ij_javascript_force_semicolon_style = false
+ij_javascript_function_expression_brace_style = end_of_line
+ij_javascript_if_brace_force = never
+ij_javascript_import_merge_members = global
+ij_javascript_import_prefer_absolute_path = global
+ij_javascript_import_sort_members = true
+ij_javascript_import_sort_module_name = false
+ij_javascript_import_use_node_resolution = true
+ij_javascript_imports_wrap = on_every_item
+ij_javascript_indent_case_from_switch = true
+ij_javascript_indent_chained_calls = true
+ij_javascript_indent_package_children = 0
+ij_javascript_jsx_attribute_value = braces
+ij_javascript_keep_blank_lines_in_code = 2
+ij_javascript_keep_first_column_comment = true
+ij_javascript_keep_indents_on_empty_lines = false
+ij_javascript_keep_line_breaks = true
+ij_javascript_keep_simple_blocks_in_one_line = false
+ij_javascript_keep_simple_methods_in_one_line = false
+ij_javascript_line_comment_add_space = true
+ij_javascript_line_comment_at_first_column = false
+ij_javascript_method_brace_style = end_of_line
+ij_javascript_method_call_chain_wrap = off
+ij_javascript_method_parameters_new_line_after_left_paren = false
+ij_javascript_method_parameters_right_paren_on_new_line = false
+ij_javascript_method_parameters_wrap = off
+ij_javascript_object_literal_wrap = on_every_item
+ij_javascript_object_types_wrap = on_every_item
+ij_javascript_parentheses_expression_new_line_after_left_paren = false
+ij_javascript_parentheses_expression_right_paren_on_new_line = false
+ij_javascript_place_assignment_sign_on_next_line = false
+ij_javascript_prefer_as_type_cast = false
+ij_javascript_prefer_explicit_types_function_expression_returns = false
+ij_javascript_prefer_explicit_types_function_returns = false
+ij_javascript_prefer_explicit_types_vars_fields = false
+ij_javascript_prefer_parameters_wrap = false
+ij_javascript_property_prefix = 
+ij_javascript_reformat_c_style_comments = false
+ij_javascript_space_after_colon = true
+ij_javascript_space_after_comma = true
+ij_javascript_space_after_dots_in_rest_parameter = false
+ij_javascript_space_after_generator_mult = true
+ij_javascript_space_after_property_colon = true
+ij_javascript_space_after_quest = true
+ij_javascript_space_after_type_colon = true
+ij_javascript_space_after_unary_not = false
+ij_javascript_space_before_async_arrow_lparen = true
+ij_javascript_space_before_catch_keyword = true
+ij_javascript_space_before_catch_left_brace = true
+ij_javascript_space_before_catch_parentheses = true
+ij_javascript_space_before_class_lbrace = true
+ij_javascript_space_before_class_left_brace = true
+ij_javascript_space_before_colon = true
+ij_javascript_space_before_comma = false
+ij_javascript_space_before_do_left_brace = true
+ij_javascript_space_before_else_keyword = true
+ij_javascript_space_before_else_left_brace = true
+ij_javascript_space_before_finally_keyword = true
+ij_javascript_space_before_finally_left_brace = true
+ij_javascript_space_before_for_left_brace = true
+ij_javascript_space_before_for_parentheses = true
+ij_javascript_space_before_for_semicolon = false
+ij_javascript_space_before_function_left_parenth = true
+ij_javascript_space_before_generator_mult = false
+ij_javascript_space_before_if_left_brace = true
+ij_javascript_space_before_if_parentheses = true
+ij_javascript_space_before_method_call_parentheses = false
+ij_javascript_space_before_method_left_brace = true
+ij_javascript_space_before_method_parentheses = false
+ij_javascript_space_before_property_colon = false
+ij_javascript_space_before_quest = true
+ij_javascript_space_before_switch_left_brace = true
+ij_javascript_space_before_switch_parentheses = true
+ij_javascript_space_before_try_left_brace = true
+ij_javascript_space_before_type_colon = false
+ij_javascript_space_before_unary_not = false
+ij_javascript_space_before_while_keyword = true
+ij_javascript_space_before_while_left_brace = true
+ij_javascript_space_before_while_parentheses = true
+ij_javascript_spaces_around_additive_operators = true
+ij_javascript_spaces_around_arrow_function_operator = true
+ij_javascript_spaces_around_assignment_operators = true
+ij_javascript_spaces_around_bitwise_operators = true
+ij_javascript_spaces_around_equality_operators = true
+ij_javascript_spaces_around_logical_operators = true
+ij_javascript_spaces_around_multiplicative_operators = true
+ij_javascript_spaces_around_relational_operators = true
+ij_javascript_spaces_around_shift_operators = true
+ij_javascript_spaces_around_unary_operator = false
+ij_javascript_spaces_within_array_initializer_brackets = false
+ij_javascript_spaces_within_brackets = false
+ij_javascript_spaces_within_catch_parentheses = false
+ij_javascript_spaces_within_for_parentheses = false
+ij_javascript_spaces_within_if_parentheses = false
+ij_javascript_spaces_within_imports = false
+ij_javascript_spaces_within_interpolation_expressions = false
+ij_javascript_spaces_within_method_call_parentheses = false
+ij_javascript_spaces_within_method_parentheses = false
+ij_javascript_spaces_within_object_literal_braces = false
+ij_javascript_spaces_within_object_type_braces = true
+ij_javascript_spaces_within_parentheses = false
+ij_javascript_spaces_within_switch_parentheses = false
+ij_javascript_spaces_within_type_assertion = false
+ij_javascript_spaces_within_union_types = true
+ij_javascript_spaces_within_while_parentheses = false
+ij_javascript_special_else_if_treatment = true
+ij_javascript_ternary_operation_signs_on_next_line = false
+ij_javascript_ternary_operation_wrap = off
+ij_javascript_union_types_wrap = on_every_item
+ij_javascript_use_chained_calls_group_indents = false
+ij_javascript_use_double_quotes = true
+ij_javascript_use_explicit_js_extension = auto
+ij_javascript_use_path_mapping = always
+ij_javascript_use_public_modifier = false
+ij_javascript_use_semicolon_after_statement = true
+ij_javascript_var_declaration_wrap = normal
+ij_javascript_while_brace_force = never
+ij_javascript_while_on_new_line = false
+ij_javascript_wrap_comments = false
+
+[{*.har,*.jsb2,*.jsb3,*.json,.babelrc,.eslintrc,.stylelintrc,bowerrc,jest.config}]
+tab_width = 4
+ij_json_array_wrapping = split_into_lines
+ij_json_keep_blank_lines_in_code = 0
+ij_json_keep_indents_on_empty_lines = false
+ij_json_keep_line_breaks = true
+ij_json_keep_trailing_comma = false
+ij_json_object_wrapping = split_into_lines
+ij_json_property_alignment = do_not_align
+ij_json_space_after_colon = true
+ij_json_space_after_comma = true
+ij_json_space_before_colon = false
+ij_json_space_before_comma = false
+ij_json_spaces_within_braces = false
+ij_json_spaces_within_brackets = false
+ij_json_wrap_long_lines = false
+
+[{*.htm,*.html,*.sht,*.shtm,*.shtml}]
+indent_size = 4
+tab_width = 4
+ij_html_add_new_line_before_tags = body,div,p,form,h1,h2,h3
+ij_html_align_attributes = true
+ij_html_align_text = false
+ij_html_attribute_wrap = normal
+ij_html_block_comment_add_space = false
+ij_html_block_comment_at_first_column = true
+ij_html_do_not_align_children_of_min_lines = 0
+ij_html_do_not_break_if_inline_tags = title,h1,h2,h3,h4,h5,h6,p
+ij_html_do_not_indent_children_of_tags = html,body,thead,tbody,tfoot
+ij_html_enforce_quotes = false
+ij_html_inline_tags = a,abbr,acronym,b,basefont,bdo,big,br,cite,cite,code,dfn,em,font,i,img,input,kbd,label,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var
+ij_html_keep_blank_lines = 2
+ij_html_keep_indents_on_empty_lines = false
+ij_html_keep_line_breaks = true
+ij_html_keep_line_breaks_in_text = true
+ij_html_keep_whitespaces = false
+ij_html_keep_whitespaces_inside = span,pre,textarea
+ij_html_line_comment_at_first_column = true
+ij_html_new_line_after_last_attribute = never
+ij_html_new_line_before_first_attribute = never
+ij_html_quote_style = double
+ij_html_remove_new_line_before_tags = br
+ij_html_space_after_tag_name = false
+ij_html_space_around_equality_in_attribute = false
+ij_html_space_inside_empty_tag = false
+ij_html_text_wrap = normal
+
+[{*.http,*.rest}]
+indent_size = 0
+ij_continuation_indent_size = 4
+ij_http-request_call_parameters_wrap = normal
+ij_http-request_method_parameters_wrap = split_into_lines
+ij_http-request_space_before_comma = true
+ij_http-request_spaces_around_assignment_operators = true
+
+[{*.jade,*.pug}]
+indent_size = 4
+tab_width = 4
+
+[{*.markdown,*.md}]
+indent_size = 4
+tab_width = 4
+ij_markdown_force_one_space_after_blockquote_symbol = true
+ij_markdown_force_one_space_after_header_symbol = true
+ij_markdown_force_one_space_after_list_bullet = true
+ij_markdown_force_one_space_between_words = true
+ij_markdown_format_tables = true
+ij_markdown_insert_quote_arrows_on_wrap = true
+ij_markdown_keep_indents_on_empty_lines = false
+ij_markdown_keep_line_breaks_inside_text_blocks = true
+ij_markdown_max_lines_around_block_elements = 1
+ij_markdown_max_lines_around_header = 1
+ij_markdown_max_lines_between_paragraphs = 1
+ij_markdown_min_lines_around_block_elements = 1
+ij_markdown_min_lines_around_header = 1
+ij_markdown_min_lines_between_paragraphs = 1
+ij_markdown_wrap_text_if_long = true
+ij_markdown_wrap_text_inside_blockquotes = true
+
+[{*.yaml,*.yml}]
+ij_yaml_align_values_properties = do_not_align
+ij_yaml_autoinsert_sequence_marker = true
+ij_yaml_block_mapping_on_new_line = false
+ij_yaml_indent_sequence_value = true
+ij_yaml_keep_indents_on_empty_lines = false
+ij_yaml_keep_line_breaks = true
+ij_yaml_sequence_on_new_line = false
+ij_yaml_space_before_colon = false
+ij_yaml_spaces_within_braces = true
+ij_yaml_spaces_within_brackets = true
diff --git a/LibMatrix b/LibMatrix
-Subproject 71d115dc8e915a620dd935955ba980fcbe421da
+Subproject 83f9a4df147ef58c884f43092527f5cb6fa2f0a
diff --git a/MatrixRoomUtils.Web/MatrixRoomUtils.Web.csproj b/MatrixRoomUtils.Web/MatrixRoomUtils.Web.csproj
index 68fb9c7..c6678ce 100644
--- a/MatrixRoomUtils.Web/MatrixRoomUtils.Web.csproj
+++ b/MatrixRoomUtils.Web/MatrixRoomUtils.Web.csproj
@@ -9,6 +9,7 @@
         <EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
 
         <UseBlazorWebAssembly>true</UseBlazorWebAssembly>
+<!--        <RunAOTCompilation>true</RunAOTCompilation>-->
     </PropertyGroup>
 
     <ItemGroup>
@@ -25,4 +26,48 @@
         <ProjectReference Include="..\MatrixRoomUtils.LibDMSpace\MatrixRoomUtils.LibDMSpace.csproj" />
     </ItemGroup>
 
+    <ItemGroup>
+      <Content Update="appsettings.Development.json">
+        <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+      </Content>
+      <Content Update="appsettings.json">
+        <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+      </Content>
+    </ItemGroup>
+
+    <ItemGroup>
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMono-Bold.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMono-BoldItalic.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMono-ExtraBold.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMono-ExtraBoldItalic.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMono-ExtraLight.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMono-ExtraLightItalic.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMono-Italic.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMono-Light.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMono-LightItalic.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMono-Medium.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMono-MediumItalic.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMono-Regular.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMono-SemiBold.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMono-SemiBoldItalic.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMono-Thin.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMono-ThinItalic.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMonoNL-Bold.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMonoNL-BoldItalic.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMonoNL-ExtraBold.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMonoNL-ExtraBoldItalic.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMonoNL-ExtraLight.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMonoNL-ExtraLightItalic.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMonoNL-Italic.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMonoNL-Light.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMonoNL-LightItalic.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMonoNL-Medium.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMonoNL-MediumItalic.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMonoNL-Regular.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMonoNL-SemiBold.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMonoNL-SemiBoldItalic.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMonoNL-Thin.ttf" />
+      <_ContentIncludedByDefault Remove="wwwroot\css\jetbrains-mono\ttf\JetBrainsMonoNL-ThinItalic.ttf" />
+    </ItemGroup>
+
 </Project>
diff --git a/MatrixRoomUtils.Web/Pages/Index.razor b/MatrixRoomUtils.Web/Pages/Index.razor
index 804fde3..68a4f26 100644
--- a/MatrixRoomUtils.Web/Pages/Index.razor
+++ b/MatrixRoomUtils.Web/Pages/Index.razor
@@ -1,4 +1,5 @@
 @page "/"
+@inject ILogger<Index> logger
 @using LibMatrix.Responses
 @using LibMatrix
 @using LibMatrix.Homeservers
@@ -26,7 +27,6 @@ Small collection of tools to do not-so-everyday things.
                     <p>
                         <input type="radio" name="csa" checked="@(_currentSession.AccessToken == _auth.AccessToken)" @onclick="@(() => SwitchSession(_auth))" style="text-decoration-line: unset;"/>
                         <b>@__auth.UserInfo.DisplayName</b> on <b>@_auth.Homeserver</b><br/>
-
                     </p>
                     <span style="display: inline-block; width: 128px;">@__auth.UserInfo.RoomCount rooms</span>
                     <a style="color: #888888" href="@("/ServerInfo/"+__auth.Homeserver.ServerName+"/")">@__auth.ServerVersion.Server.Name @__auth.ServerVersion.Server.Version</a>
@@ -91,20 +91,24 @@ Small collection of tools to do not-so-everyday things.
                 }
                 throw;
             }
+            catch (HttpRequestException e) {
+                logger.LogError(e, $"Failed to instantiate AuthenticatedHomeserver for {_auth}, homeserver may be offline?", token.UserId);
+                return;
+            }
             var roomCountTask = hs.GetJoinedRooms();
             var profile = await hs.GetProfileAsync(hs.WhoAmI.UserId);
             userInfo.DisplayName = profile.DisplayName ?? hs.WhoAmI.UserId;
             Console.WriteLine(profile.ToJson());
-            userInfo.AvatarUrl = string.IsNullOrWhiteSpace(profile.AvatarUrl) ? "https://api.dicebear.com/6.x/identicon/svg?seed=" + hs.WhoAmI.UserId : hs.ResolveMediaUri(profile.AvatarUrl);
-            userInfo.RoomCount = (await roomCountTask).Count;
-    // _users.Add(token, userInfo);
             _auth.Add(new() {
-                UserInfo = userInfo,
+                UserInfo = new() {
+                    AvatarUrl = string.IsNullOrWhiteSpace(profile.AvatarUrl) ? "https://api.dicebear.com/6.x/identicon/svg?seed=" + hs.WhoAmI.UserId : hs.ResolveMediaUri(profile.AvatarUrl),
+                    RoomCount = (await roomCountTask).Count,
+                    DisplayName = profile.DisplayName ?? hs.WhoAmI.UserId
+                },
                 UserAuth = token,
                 ServerVersion = await hs.GetServerVersionAsync(),
                 Homeserver = hs
             });
-    // StateHasChanged();
         });
         await Task.WhenAll(profileTasks);
         await base.OnInitializedAsync();
diff --git a/MatrixRoomUtils.Web/Pages/Rooms/Index.razor b/MatrixRoomUtils.Web/Pages/Rooms/Index.razor
index 60f4f62..e137b6c 100644
--- a/MatrixRoomUtils.Web/Pages/Rooms/Index.razor
+++ b/MatrixRoomUtils.Web/Pages/Rooms/Index.razor
@@ -8,6 +8,7 @@
 @using LibMatrix.Extensions
 @using LibMatrix.Responses
 @using System.Collections.ObjectModel
+@using System.Diagnostics
 @inject ILogger<Index> logger
 <h3>Room list</h3>
 
@@ -60,36 +61,36 @@
         }
     };
 
-    private static SyncFilter profileUpdateFilter = new() {
-        AccountData = new SyncFilter.EventFilter {
-            NotTypes = new List<string> { "*" },
-            Limit = 1
-        },
-        Presence = new SyncFilter.EventFilter {
-            NotTypes = new List<string> { "*" },
-            Limit = 1
-        },
-        Room = new SyncFilter.RoomFilter {
-            AccountData = new SyncFilter.RoomFilter.StateFilter {
-                NotTypes = new List<string> { "*" },
-                Limit = 1
-            },
-            Ephemeral = new SyncFilter.RoomFilter.StateFilter {
-                NotTypes = new List<string> { "*" },
-                Limit = 1
-            },
-            State = new SyncFilter.RoomFilter.StateFilter {
-                Types = new List<string> {
-                    "m.room.member"
-                },
-                Senders = new()
-            },
-            Timeline = new SyncFilter.RoomFilter.StateFilter {
-                NotTypes = new List<string> { "*" },
-                Limit = 1
-            }
-        }
-    };
+    // private static SyncFilter profileUpdateFilter = new() {
+    //     AccountData = new SyncFilter.EventFilter {
+    //         NotTypes = new List<string> { "*" },
+    //         Limit = 1
+    //     },
+    //     Presence = new SyncFilter.EventFilter {
+    //         NotTypes = new List<string> { "*" },
+    //         Limit = 1
+    //     },
+    //     Room = new SyncFilter.RoomFilter {
+    //         AccountData = new SyncFilter.RoomFilter.StateFilter {
+    //             NotTypes = new List<string> { "*" },
+    //             Limit = 1
+    //         },
+    //         Ephemeral = new SyncFilter.RoomFilter.StateFilter {
+    //             NotTypes = new List<string> { "*" },
+    //             Limit = 1
+    //         },
+    //         State = new SyncFilter.RoomFilter.StateFilter {
+    //             Types = new List<string> {
+    //                 "m.room.member"
+    //             },
+    //             Senders = new()
+    //         },
+    //         Timeline = new SyncFilter.RoomFilter.StateFilter {
+    //             NotTypes = new List<string> { "*" },
+    //             Limit = 1
+    //         }
+    //     }
+    // };
 
     protected override async Task OnInitializedAsync() {
         Homeserver = await MRUStorage.GetCurrentSessionOrNavigate();
@@ -103,20 +104,23 @@
 
         var syncHelper = new SyncHelper(Homeserver, logger) {
             Timeout = 10000,
-            Filter = filter
-        };
-        profileUpdateFilter.Room.State.Senders.Add(Homeserver.WhoAmI.UserId);
-        var profileSyncHelper = new SyncHelper(Homeserver, logger) {
-            Timeout = 10000,
-            Filter = profileUpdateFilter
+            Filter = filter,
+            MinimumDelay = TimeSpan.FromMilliseconds(5000)
         };
+        // profileUpdateFilter.Room.State.Senders.Add(Homeserver.WhoAmI.UserId);
+        // var profileSyncHelper = new SyncHelper(Homeserver, logger) {
+        //     Timeout = 10000,
+        //     Filter = profileUpdateFilter,
+        //     MinimumDelay = TimeSpan.FromMilliseconds(5000)
+        // };
         RunSyncLoop(syncHelper);
-        RunSyncLoop(profileSyncHelper);
+        // RunSyncLoop(profileSyncHelper);
         RunQueueProcessor();
         await base.OnInitializedAsync();
     }
-
+    
     private async Task RunQueueProcessor() {
+        var renderTimeSw = Stopwatch.StartNew();
         while (true) {
             try {
                 if (queue.Count == 0) {
@@ -126,7 +130,7 @@
                     }
                     Console.WriteLine("Queue no longer empty!");
                 }
-                if (queue.TryDequeue(out var queueEntry)) {
+                while (queue.TryDequeue(out var queueEntry)) {
                     var (roomId, roomData) = queueEntry;
                     Console.WriteLine($"Dequeued room {roomId}");
                     RoomInfo room;
@@ -159,9 +163,9 @@
                     if (queue.Count > 10) RenderContents = false;
                     await Task.Delay(RenderContents ? 25 : 25);
                 }
-                else {
-                    Console.WriteLine("Failed to dequeue item");
-                }
+                // else {
+                    // Console.WriteLine("Failed to dequeue item");
+                // }
             }
             catch (Exception e) {
                 Console.WriteLine("QueueWorker exception: " + e);
diff --git a/MatrixRoomUtils.Web/Program.cs b/MatrixRoomUtils.Web/Program.cs
index a670378..a7a0105 100644
--- a/MatrixRoomUtils.Web/Program.cs
+++ b/MatrixRoomUtils.Web/Program.cs
@@ -12,7 +12,15 @@ var builder = WebAssemblyHostBuilder.CreateDefault(args);
 builder.RootComponents.Add<App>("#app");
 builder.RootComponents.Add<HeadOutlet>("head::after");
 
+// builder.Logging.SetMinimumLevel(LogLevel.Trace);
+
 builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
+
+builder.Configuration.AddJsonStream(await new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }.GetStreamAsync("/appsettings.json"));
+#if DEBUG
+builder.Configuration.AddJsonStream(await new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }.GetStreamAsync("/appsettings.Development.json"));
+#endif
+
 builder.Services.AddBlazoredLocalStorage(config => {
     config.JsonSerializerOptions.DictionaryKeyPolicy = JsonNamingPolicy.CamelCase;
     config.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;
diff --git a/MatrixRoomUtils.Web/Shared/RoomListItem.razor b/MatrixRoomUtils.Web/Shared/RoomListItem.razor
index 970526d..c5c3cfe 100644
--- a/MatrixRoomUtils.Web/Shared/RoomListItem.razor
+++ b/MatrixRoomUtils.Web/Shared/RoomListItem.razor
@@ -16,7 +16,7 @@
             </span>
             <span class="centerVertical noLeftPadding">-></span>
         }
-        <MxcImage Class="avatar32" MxcUri="RoomInfo.RoomIcon" Style="@(ChildContent is not null ? "vertical-align: middle;" : "")"/>
+        <MxcImage Class="avatar32" MxcUri="@RoomInfo.RoomIcon" Style="@(ChildContent is not null ? "vertical-align: middle;" : "")"/>
         <div class="inlineBlock">
             <span class="centerVertical">@RoomInfo.RoomName</span>
             @if (ChildContent is not null) {
diff --git a/MatrixRoomUtils.Web/appsettings.Development.json b/MatrixRoomUtils.Web/appsettings.Development.json
new file mode 100644
index 0000000..e203e94
--- /dev/null
+++ b/MatrixRoomUtils.Web/appsettings.Development.json
@@ -0,0 +1,9 @@
+{
+  "Logging": {
+    "LogLevel": {
+      "Default": "Debug",
+      "System": "Information",
+      "Microsoft": "Information"
+    }
+  }
+}
diff --git a/MatrixRoomUtils.Web/appsettings.json b/MatrixRoomUtils.Web/appsettings.json
new file mode 100644
index 0000000..e203e94
--- /dev/null
+++ b/MatrixRoomUtils.Web/appsettings.json
@@ -0,0 +1,9 @@
+{
+  "Logging": {
+    "LogLevel": {
+      "Default": "Debug",
+      "System": "Information",
+      "Microsoft": "Information"
+    }
+  }
+}
diff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/jetbrains-mono.css b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/jetbrains-mono.css
index aa98602..78aedd2 100644
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/jetbrains-mono.css
+++ b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/jetbrains-mono.css
@@ -14,7 +14,6 @@
     font-family: JetBrainsMono;
     font-style: normal;
     font-weight: 200;
-    src: url("./ttf/JetBrainsMono-ExtraLight.ttf") format("truetype");
     src: url("./webfonts/JetBrainsMono-ExtraLight.woff2") format("woff2");
 }
 
@@ -22,7 +21,6 @@
     font-family: JetBrainsMono;
     font-style: normal;
     font-weight: 300;
-    src: url("./ttf/JetBrainsMono-Light.ttf") format("truetype");
     src: url("./webfonts/JetBrainsMono-Light.woff2") format("woff2");
 }
 
@@ -30,7 +28,6 @@
     font-family: JetBrainsMono;
     font-style: normal;
     font-weight: 400;
-    src: url("./ttf/JetBrainsMono-Regular.ttf") format("truetype");
     src: url("./webfonts/JetBrainsMono-Regular.woff2") format("woff2");
 }
 
@@ -38,7 +35,6 @@
     font-family: JetBrainsMono;
     font-style: normal;
     font-weight: 500;
-    src: url("./ttf/JetBrainsMono-Medium.ttf") format("truetype");
     src: url("./webfonts/JetBrainsMono-Medium.woff2") format("woff2");
 }
 
@@ -46,7 +42,6 @@
     font-family: JetBrainsMono;
     font-style: normal;
     font-weight: 600;
-    src: url("./ttf/JetBrainsMono-SemiBold.ttf") format("truetype");
     src: url("./webfonts/JetBrainsMono-SemiBold.woff2") format("woff2");
 }
 
@@ -54,7 +49,6 @@
     font-family: JetBrainsMono;
     font-style: normal;
     font-weight: 700;
-    src: url("./ttf/JetBrainsMono-Bold.ttf") format("truetype");
     src: url("./webfonts/JetBrainsMono-Bold.woff2") format("woff2");
 }
 
@@ -62,7 +56,6 @@
     font-family: JetBrainsMono;
     font-style: normal;
     font-weight: 800;
-    src: url("./ttf/JetBrainsMono-ExtraBold.ttf") format("truetype");
     src: url("./webfonts/JetBrainsMono-ExtraBold.woff2") format("woff2");
 }
 
@@ -72,7 +65,6 @@
     font-family: JetBrainsMono;
     font-style: italic;
     font-weight: 100;
-    src: url("./ttf/JetBrainsMono-ThinItalic.ttf") format("truetype");
     src: url("./webfonts/JetBrainsMono-ThinItalic.woff2") format("woff2");
 }
 
@@ -80,7 +72,6 @@
     font-family: JetBrainsMono;
     font-style: italic;
     font-weight: 200;
-    src: url("./ttf/JetBrainsMono-ExtraLightItalic.ttf") format("truetype");
     src: url("./webfonts/JetBrainsMono-ExtraLightItalic.woff2") format("woff2");
 }
 
@@ -88,7 +79,6 @@
     font-family: JetBrainsMono;
     font-style: italic;
     font-weight: 300;
-    src: url("./ttf/JetBrainsMono-LightItalic.ttf") format("truetype");
     src: url("./webfonts/JetBrainsMono-LightItalic.woff2") format("woff2");
 }
 
@@ -96,7 +86,6 @@
     font-family: JetBrainsMono;
     font-style: italic;
     font-weight: 400;
-    src: url("./ttf/JetBrainsMono-Italic.ttf") format("truetype");
     src: url("./webfonts/JetBrainsMono-Italic.woff2") format("woff2");
 }
 
@@ -104,7 +93,6 @@
     font-family: JetBrainsMono;
     font-style: italic;
     font-weight: 500;
-    src: url("./ttf/JetBrainsMono-MediumItalic.ttf") format("truetype");
     src: url("./webfonts/JetBrainsMono-MediumItalic.woff2") format("woff2");
 }
 
@@ -112,7 +100,6 @@
     font-family: JetBrainsMono;
     font-style: italic;
     font-weight: 600;
-    src: url("./ttf/JetBrainsMono-SemiBoldItalic.ttf") format("truetype");
     src: url("./webfonts/JetBrainsMono-SemiBoldItalic.woff2") format("woff2");
 }
 
@@ -120,7 +107,6 @@
     font-family: JetBrainsMono;
     font-style: italic;
     font-weight: 700;
-    src: url("./ttf/JetBrainsMono-BoldItalic.ttf") format("truetype");
     src: url("./webfonts/JetBrainsMono-BoldItalic.woff2") format("woff2");
 }
 
@@ -128,6 +114,5 @@
     font-family: JetBrainsMono;
     font-style: italic;
     font-weight: 800;
-    src: url("./ttf/JetBrainsMono-ExtraBoldItalic.ttf") format("truetype");
     src: url("./webfonts/JetBrainsMono-ExtraBoldItalic.woff2") format("woff2");
 }
\ No newline at end of file
diff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-Bold.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-Bold.ttf
deleted file mode 100644
index 8c93043..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-Bold.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-BoldItalic.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-BoldItalic.ttf
deleted file mode 100644
index 1ddf216..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-BoldItalic.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-ExtraBold.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-ExtraBold.ttf
deleted file mode 100644
index 435d7a7..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-ExtraBold.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-ExtraBoldItalic.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-ExtraBoldItalic.ttf
deleted file mode 100644
index 79e616e..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-ExtraBoldItalic.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-ExtraLight.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-ExtraLight.ttf
deleted file mode 100644
index c131cbf..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-ExtraLight.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-ExtraLightItalic.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-ExtraLightItalic.ttf
deleted file mode 100644
index a768985..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-ExtraLightItalic.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-Italic.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-Italic.ttf
deleted file mode 100644
index ccc9d6a..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-Italic.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-Light.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-Light.ttf
deleted file mode 100644
index 15f15a2..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-Light.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-LightItalic.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-LightItalic.ttf
deleted file mode 100644
index 506208f..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-LightItalic.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-Medium.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-Medium.ttf
deleted file mode 100644
index 9767115..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-Medium.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-MediumItalic.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-MediumItalic.ttf
deleted file mode 100644
index 415a9e3..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-MediumItalic.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-Regular.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-Regular.ttf
deleted file mode 100644
index dff66cc..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-Regular.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-SemiBold.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-SemiBold.ttf
deleted file mode 100644
index a70e69b..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-SemiBold.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-SemiBoldItalic.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-SemiBoldItalic.ttf
deleted file mode 100644
index 968602e..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-SemiBoldItalic.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-Thin.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-Thin.ttf
deleted file mode 100644
index 7dbe2ac..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-Thin.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-ThinItalic.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-ThinItalic.ttf
deleted file mode 100644
index c6ad6c2..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMono-ThinItalic.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-Bold.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-Bold.ttf
deleted file mode 100644
index f78f84f..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-Bold.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-BoldItalic.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-BoldItalic.ttf
deleted file mode 100644
index 9fb8c83..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-BoldItalic.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-ExtraBold.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-ExtraBold.ttf
deleted file mode 100644
index fe5be6a..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-ExtraBold.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-ExtraBoldItalic.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-ExtraBoldItalic.ttf
deleted file mode 100644
index 59fc980..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-ExtraBoldItalic.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-ExtraLight.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-ExtraLight.ttf
deleted file mode 100644
index 6da7b75..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-ExtraLight.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-ExtraLightItalic.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-ExtraLightItalic.ttf
deleted file mode 100644
index 5733efc..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-ExtraLightItalic.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-Italic.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-Italic.ttf
deleted file mode 100644
index 4e9c380..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-Italic.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-Light.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-Light.ttf
deleted file mode 100644
index 0b79b0c..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-Light.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-LightItalic.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-LightItalic.ttf
deleted file mode 100644
index b5e0842..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-LightItalic.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-Medium.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-Medium.ttf
deleted file mode 100644
index 1454372..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-Medium.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-MediumItalic.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-MediumItalic.ttf
deleted file mode 100644
index 8d63c6c..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-MediumItalic.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-Regular.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-Regular.ttf
deleted file mode 100644
index 70d2ec9..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-Regular.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-SemiBold.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-SemiBold.ttf
deleted file mode 100644
index ce60a88..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-SemiBold.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-SemiBoldItalic.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-SemiBoldItalic.ttf
deleted file mode 100644
index 3b3f8f6..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-SemiBoldItalic.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-Thin.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-Thin.ttf
deleted file mode 100644
index bea837e..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-Thin.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-ThinItalic.ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-ThinItalic.ttf
deleted file mode 100644
index f0bfed7..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/ttf/JetBrainsMonoNL-ThinItalic.ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/variable/JetBrainsMono-Italic[wght].ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/variable/JetBrainsMono-Italic[wght].ttf
deleted file mode 100644
index 5414835..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/variable/JetBrainsMono-Italic[wght].ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/variable/JetBrainsMono[wght].ttf b/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/variable/JetBrainsMono[wght].ttf
deleted file mode 100644
index b60e77f..0000000
--- a/MatrixRoomUtils.Web/wwwroot/css/jetbrains-mono/variable/JetBrainsMono[wght].ttf
+++ /dev/null
Binary files differdiff --git a/MatrixRoomUtils.Web/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css b/MatrixRoomUtils.Web/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css
index 4664f2e..24fae0c 100644
--- a/MatrixRoomUtils.Web/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css
+++ b/MatrixRoomUtils.Web/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css
@@ -1 +1,948 @@
-@font-face{font-family:Icons;src:url(../fonts/open-iconic.eot);src:url(../fonts/open-iconic.eot?#iconic-sm) format('embedded-opentype'),url(../fonts/open-iconic.woff) format('woff'),url(../fonts/open-iconic.ttf) format('truetype'),url(../fonts/open-iconic.otf) format('opentype'),url(../fonts/open-iconic.svg#iconic-sm) format('svg');font-weight:400;font-style:normal}.oi{position:relative;top:1px;display:inline-block;speak:none;font-family:Icons;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.oi:empty:before{width:1em;text-align:center;box-sizing:content-box}.oi.oi-align-center:before{text-align:center}.oi.oi-align-left:before{text-align:left}.oi.oi-align-right:before{text-align:right}.oi.oi-flip-horizontal:before{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.oi.oi-flip-vertical:before{-webkit-transform:scale(1,-1);-ms-transform:scale(-1,1);transform:scale(1,-1)}.oi.oi-flip-horizontal-vertical:before{-webkit-transform:scale(-1,-1);-ms-transform:scale(-1,1);transform:scale(-1,-1)}.oi-account-login:before{content:'\e000'}.oi-account-logout:before{content:'\e001'}.oi-action-redo:before{content:'\e002'}.oi-action-undo:before{content:'\e003'}.oi-align-center:before{content:'\e004'}.oi-align-left:before{content:'\e005'}.oi-align-right:before{content:'\e006'}.oi-aperture:before{content:'\e007'}.oi-arrow-bottom:before{content:'\e008'}.oi-arrow-circle-bottom:before{content:'\e009'}.oi-arrow-circle-left:before{content:'\e00a'}.oi-arrow-circle-right:before{content:'\e00b'}.oi-arrow-circle-top:before{content:'\e00c'}.oi-arrow-left:before{content:'\e00d'}.oi-arrow-right:before{content:'\e00e'}.oi-arrow-thick-bottom:before{content:'\e00f'}.oi-arrow-thick-left:before{content:'\e010'}.oi-arrow-thick-right:before{content:'\e011'}.oi-arrow-thick-top:before{content:'\e012'}.oi-arrow-top:before{content:'\e013'}.oi-audio-spectrum:before{content:'\e014'}.oi-audio:before{content:'\e015'}.oi-badge:before{content:'\e016'}.oi-ban:before{content:'\e017'}.oi-bar-chart:before{content:'\e018'}.oi-basket:before{content:'\e019'}.oi-battery-empty:before{content:'\e01a'}.oi-battery-full:before{content:'\e01b'}.oi-beaker:before{content:'\e01c'}.oi-bell:before{content:'\e01d'}.oi-bluetooth:before{content:'\e01e'}.oi-bold:before{content:'\e01f'}.oi-bolt:before{content:'\e020'}.oi-book:before{content:'\e021'}.oi-bookmark:before{content:'\e022'}.oi-box:before{content:'\e023'}.oi-briefcase:before{content:'\e024'}.oi-british-pound:before{content:'\e025'}.oi-browser:before{content:'\e026'}.oi-brush:before{content:'\e027'}.oi-bug:before{content:'\e028'}.oi-bullhorn:before{content:'\e029'}.oi-calculator:before{content:'\e02a'}.oi-calendar:before{content:'\e02b'}.oi-camera-slr:before{content:'\e02c'}.oi-caret-bottom:before{content:'\e02d'}.oi-caret-left:before{content:'\e02e'}.oi-caret-right:before{content:'\e02f'}.oi-caret-top:before{content:'\e030'}.oi-cart:before{content:'\e031'}.oi-chat:before{content:'\e032'}.oi-check:before{content:'\e033'}.oi-chevron-bottom:before{content:'\e034'}.oi-chevron-left:before{content:'\e035'}.oi-chevron-right:before{content:'\e036'}.oi-chevron-top:before{content:'\e037'}.oi-circle-check:before{content:'\e038'}.oi-circle-x:before{content:'\e039'}.oi-clipboard:before{content:'\e03a'}.oi-clock:before{content:'\e03b'}.oi-cloud-download:before{content:'\e03c'}.oi-cloud-upload:before{content:'\e03d'}.oi-cloud:before{content:'\e03e'}.oi-cloudy:before{content:'\e03f'}.oi-code:before{content:'\e040'}.oi-cog:before{content:'\e041'}.oi-collapse-down:before{content:'\e042'}.oi-collapse-left:before{content:'\e043'}.oi-collapse-right:before{content:'\e044'}.oi-collapse-up:before{content:'\e045'}.oi-command:before{content:'\e046'}.oi-comment-square:before{content:'\e047'}.oi-compass:before{content:'\e048'}.oi-contrast:before{content:'\e049'}.oi-copywriting:before{content:'\e04a'}.oi-credit-card:before{content:'\e04b'}.oi-crop:before{content:'\e04c'}.oi-dashboard:before{content:'\e04d'}.oi-data-transfer-download:before{content:'\e04e'}.oi-data-transfer-upload:before{content:'\e04f'}.oi-delete:before{content:'\e050'}.oi-dial:before{content:'\e051'}.oi-document:before{content:'\e052'}.oi-dollar:before{content:'\e053'}.oi-double-quote-sans-left:before{content:'\e054'}.oi-double-quote-sans-right:before{content:'\e055'}.oi-double-quote-serif-left:before{content:'\e056'}.oi-double-quote-serif-right:before{content:'\e057'}.oi-droplet:before{content:'\e058'}.oi-eject:before{content:'\e059'}.oi-elevator:before{content:'\e05a'}.oi-ellipses:before{content:'\e05b'}.oi-envelope-closed:before{content:'\e05c'}.oi-envelope-open:before{content:'\e05d'}.oi-euro:before{content:'\e05e'}.oi-excerpt:before{content:'\e05f'}.oi-expand-down:before{content:'\e060'}.oi-expand-left:before{content:'\e061'}.oi-expand-right:before{content:'\e062'}.oi-expand-up:before{content:'\e063'}.oi-external-link:before{content:'\e064'}.oi-eye:before{content:'\e065'}.oi-eyedropper:before{content:'\e066'}.oi-file:before{content:'\e067'}.oi-fire:before{content:'\e068'}.oi-flag:before{content:'\e069'}.oi-flash:before{content:'\e06a'}.oi-folder:before{content:'\e06b'}.oi-fork:before{content:'\e06c'}.oi-fullscreen-enter:before{content:'\e06d'}.oi-fullscreen-exit:before{content:'\e06e'}.oi-globe:before{content:'\e06f'}.oi-graph:before{content:'\e070'}.oi-grid-four-up:before{content:'\e071'}.oi-grid-three-up:before{content:'\e072'}.oi-grid-two-up:before{content:'\e073'}.oi-hard-drive:before{content:'\e074'}.oi-header:before{content:'\e075'}.oi-headphones:before{content:'\e076'}.oi-heart:before{content:'\e077'}.oi-home:before{content:'\e078'}.oi-image:before{content:'\e079'}.oi-inbox:before{content:'\e07a'}.oi-infinity:before{content:'\e07b'}.oi-info:before{content:'\e07c'}.oi-italic:before{content:'\e07d'}.oi-justify-center:before{content:'\e07e'}.oi-justify-left:before{content:'\e07f'}.oi-justify-right:before{content:'\e080'}.oi-key:before{content:'\e081'}.oi-laptop:before{content:'\e082'}.oi-layers:before{content:'\e083'}.oi-lightbulb:before{content:'\e084'}.oi-link-broken:before{content:'\e085'}.oi-link-intact:before{content:'\e086'}.oi-list-rich:before{content:'\e087'}.oi-list:before{content:'\e088'}.oi-location:before{content:'\e089'}.oi-lock-locked:before{content:'\e08a'}.oi-lock-unlocked:before{content:'\e08b'}.oi-loop-circular:before{content:'\e08c'}.oi-loop-square:before{content:'\e08d'}.oi-loop:before{content:'\e08e'}.oi-magnifying-glass:before{content:'\e08f'}.oi-map-marker:before{content:'\e090'}.oi-map:before{content:'\e091'}.oi-media-pause:before{content:'\e092'}.oi-media-play:before{content:'\e093'}.oi-media-record:before{content:'\e094'}.oi-media-skip-backward:before{content:'\e095'}.oi-media-skip-forward:before{content:'\e096'}.oi-media-step-backward:before{content:'\e097'}.oi-media-step-forward:before{content:'\e098'}.oi-media-stop:before{content:'\e099'}.oi-medical-cross:before{content:'\e09a'}.oi-menu:before{content:'\e09b'}.oi-microphone:before{content:'\e09c'}.oi-minus:before{content:'\e09d'}.oi-monitor:before{content:'\e09e'}.oi-moon:before{content:'\e09f'}.oi-move:before{content:'\e0a0'}.oi-musical-note:before{content:'\e0a1'}.oi-paperclip:before{content:'\e0a2'}.oi-pencil:before{content:'\e0a3'}.oi-people:before{content:'\e0a4'}.oi-person:before{content:'\e0a5'}.oi-phone:before{content:'\e0a6'}.oi-pie-chart:before{content:'\e0a7'}.oi-pin:before{content:'\e0a8'}.oi-play-circle:before{content:'\e0a9'}.oi-plus:before{content:'\e0aa'}.oi-power-standby:before{content:'\e0ab'}.oi-print:before{content:'\e0ac'}.oi-project:before{content:'\e0ad'}.oi-pulse:before{content:'\e0ae'}.oi-puzzle-piece:before{content:'\e0af'}.oi-question-mark:before{content:'\e0b0'}.oi-rain:before{content:'\e0b1'}.oi-random:before{content:'\e0b2'}.oi-reload:before{content:'\e0b3'}.oi-resize-both:before{content:'\e0b4'}.oi-resize-height:before{content:'\e0b5'}.oi-resize-width:before{content:'\e0b6'}.oi-rss-alt:before{content:'\e0b7'}.oi-rss:before{content:'\e0b8'}.oi-script:before{content:'\e0b9'}.oi-share-boxed:before{content:'\e0ba'}.oi-share:before{content:'\e0bb'}.oi-shield:before{content:'\e0bc'}.oi-signal:before{content:'\e0bd'}.oi-signpost:before{content:'\e0be'}.oi-sort-ascending:before{content:'\e0bf'}.oi-sort-descending:before{content:'\e0c0'}.oi-spreadsheet:before{content:'\e0c1'}.oi-star:before{content:'\e0c2'}.oi-sun:before{content:'\e0c3'}.oi-tablet:before{content:'\e0c4'}.oi-tag:before{content:'\e0c5'}.oi-tags:before{content:'\e0c6'}.oi-target:before{content:'\e0c7'}.oi-task:before{content:'\e0c8'}.oi-terminal:before{content:'\e0c9'}.oi-text:before{content:'\e0ca'}.oi-thumb-down:before{content:'\e0cb'}.oi-thumb-up:before{content:'\e0cc'}.oi-timer:before{content:'\e0cd'}.oi-transfer:before{content:'\e0ce'}.oi-trash:before{content:'\e0cf'}.oi-underline:before{content:'\e0d0'}.oi-vertical-align-bottom:before{content:'\e0d1'}.oi-vertical-align-center:before{content:'\e0d2'}.oi-vertical-align-top:before{content:'\e0d3'}.oi-video:before{content:'\e0d4'}.oi-volume-high:before{content:'\e0d5'}.oi-volume-low:before{content:'\e0d6'}.oi-volume-off:before{content:'\e0d7'}.oi-warning:before{content:'\e0d8'}.oi-wifi:before{content:'\e0d9'}.oi-wrench:before{content:'\e0da'}.oi-x:before{content:'\e0db'}.oi-yen:before{content:'\e0dc'}.oi-zoom-in:before{content:'\e0dd'}.oi-zoom-out:before{content:'\e0de'}
\ No newline at end of file
+@font-face {
+    font-family: Icons;
+    src: url(../fonts/open-iconic.eot);
+    src: url(../fonts/open-iconic.eot?#iconic-sm) format('embedded-opentype'), url(../fonts/open-iconic.woff) format('woff'), url(../fonts/open-iconic.ttf) format('truetype'), url(../fonts/open-iconic.otf) format('opentype'), url(../fonts/open-iconic.svg#iconic-sm) format('svg');
+    font-weight: 400;
+    font-style: normal
+}
+
+.oi {
+    position: relative;
+    top: 1px;
+    display: inline-block;
+    speak: none;
+    font-family: Icons;
+    font-style: normal;
+    font-weight: 400;
+    line-height: 1;
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale
+}
+
+.oi:empty:before {
+    width: 1em;
+    text-align: center;
+    box-sizing: content-box
+}
+
+.oi.oi-align-center:before {
+    text-align: center
+}
+
+.oi.oi-align-left:before {
+    text-align: left
+}
+
+.oi.oi-align-right:before {
+    text-align: right
+}
+
+.oi.oi-flip-horizontal:before {
+    -webkit-transform: scale(-1, 1);
+    -ms-transform: scale(-1, 1);
+    transform: scale(-1, 1)
+}
+
+.oi.oi-flip-vertical:before {
+    -webkit-transform: scale(1, -1);
+    -ms-transform: scale(-1, 1);
+    transform: scale(1, -1)
+}
+
+.oi.oi-flip-horizontal-vertical:before {
+    -webkit-transform: scale(-1, -1);
+    -ms-transform: scale(-1, 1);
+    transform: scale(-1, -1)
+}
+
+.oi-account-login:before {
+    content: '\e000'
+}
+
+.oi-account-logout:before {
+    content: '\e001'
+}
+
+.oi-action-redo:before {
+    content: '\e002'
+}
+
+.oi-action-undo:before {
+    content: '\e003'
+}
+
+.oi-align-center:before {
+    content: '\e004'
+}
+
+.oi-align-left:before {
+    content: '\e005'
+}
+
+.oi-align-right:before {
+    content: '\e006'
+}
+
+.oi-aperture:before {
+    content: '\e007'
+}
+
+.oi-arrow-bottom:before {
+    content: '\e008'
+}
+
+.oi-arrow-circle-bottom:before {
+    content: '\e009'
+}
+
+.oi-arrow-circle-left:before {
+    content: '\e00a'
+}
+
+.oi-arrow-circle-right:before {
+    content: '\e00b'
+}
+
+.oi-arrow-circle-top:before {
+    content: '\e00c'
+}
+
+.oi-arrow-left:before {
+    content: '\e00d'
+}
+
+.oi-arrow-right:before {
+    content: '\e00e'
+}
+
+.oi-arrow-thick-bottom:before {
+    content: '\e00f'
+}
+
+.oi-arrow-thick-left:before {
+    content: '\e010'
+}
+
+.oi-arrow-thick-right:before {
+    content: '\e011'
+}
+
+.oi-arrow-thick-top:before {
+    content: '\e012'
+}
+
+.oi-arrow-top:before {
+    content: '\e013'
+}
+
+.oi-audio-spectrum:before {
+    content: '\e014'
+}
+
+.oi-audio:before {
+    content: '\e015'
+}
+
+.oi-badge:before {
+    content: '\e016'
+}
+
+.oi-ban:before {
+    content: '\e017'
+}
+
+.oi-bar-chart:before {
+    content: '\e018'
+}
+
+.oi-basket:before {
+    content: '\e019'
+}
+
+.oi-battery-empty:before {
+    content: '\e01a'
+}
+
+.oi-battery-full:before {
+    content: '\e01b'
+}
+
+.oi-beaker:before {
+    content: '\e01c'
+}
+
+.oi-bell:before {
+    content: '\e01d'
+}
+
+.oi-bluetooth:before {
+    content: '\e01e'
+}
+
+.oi-bold:before {
+    content: '\e01f'
+}
+
+.oi-bolt:before {
+    content: '\e020'
+}
+
+.oi-book:before {
+    content: '\e021'
+}
+
+.oi-bookmark:before {
+    content: '\e022'
+}
+
+.oi-box:before {
+    content: '\e023'
+}
+
+.oi-briefcase:before {
+    content: '\e024'
+}
+
+.oi-british-pound:before {
+    content: '\e025'
+}
+
+.oi-browser:before {
+    content: '\e026'
+}
+
+.oi-brush:before {
+    content: '\e027'
+}
+
+.oi-bug:before {
+    content: '\e028'
+}
+
+.oi-bullhorn:before {
+    content: '\e029'
+}
+
+.oi-calculator:before {
+    content: '\e02a'
+}
+
+.oi-calendar:before {
+    content: '\e02b'
+}
+
+.oi-camera-slr:before {
+    content: '\e02c'
+}
+
+.oi-caret-bottom:before {
+    content: '\e02d'
+}
+
+.oi-caret-left:before {
+    content: '\e02e'
+}
+
+.oi-caret-right:before {
+    content: '\e02f'
+}
+
+.oi-caret-top:before {
+    content: '\e030'
+}
+
+.oi-cart:before {
+    content: '\e031'
+}
+
+.oi-chat:before {
+    content: '\e032'
+}
+
+.oi-check:before {
+    content: '\e033'
+}
+
+.oi-chevron-bottom:before {
+    content: '\e034'
+}
+
+.oi-chevron-left:before {
+    content: '\e035'
+}
+
+.oi-chevron-right:before {
+    content: '\e036'
+}
+
+.oi-chevron-top:before {
+    content: '\e037'
+}
+
+.oi-circle-check:before {
+    content: '\e038'
+}
+
+.oi-circle-x:before {
+    content: '\e039'
+}
+
+.oi-clipboard:before {
+    content: '\e03a'
+}
+
+.oi-clock:before {
+    content: '\e03b'
+}
+
+.oi-cloud-download:before {
+    content: '\e03c'
+}
+
+.oi-cloud-upload:before {
+    content: '\e03d'
+}
+
+.oi-cloud:before {
+    content: '\e03e'
+}
+
+.oi-cloudy:before {
+    content: '\e03f'
+}
+
+.oi-code:before {
+    content: '\e040'
+}
+
+.oi-cog:before {
+    content: '\e041'
+}
+
+.oi-collapse-down:before {
+    content: '\e042'
+}
+
+.oi-collapse-left:before {
+    content: '\e043'
+}
+
+.oi-collapse-right:before {
+    content: '\e044'
+}
+
+.oi-collapse-up:before {
+    content: '\e045'
+}
+
+.oi-command:before {
+    content: '\e046'
+}
+
+.oi-comment-square:before {
+    content: '\e047'
+}
+
+.oi-compass:before {
+    content: '\e048'
+}
+
+.oi-contrast:before {
+    content: '\e049'
+}
+
+.oi-copywriting:before {
+    content: '\e04a'
+}
+
+.oi-credit-card:before {
+    content: '\e04b'
+}
+
+.oi-crop:before {
+    content: '\e04c'
+}
+
+.oi-dashboard:before {
+    content: '\e04d'
+}
+
+.oi-data-transfer-download:before {
+    content: '\e04e'
+}
+
+.oi-data-transfer-upload:before {
+    content: '\e04f'
+}
+
+.oi-delete:before {
+    content: '\e050'
+}
+
+.oi-dial:before {
+    content: '\e051'
+}
+
+.oi-document:before {
+    content: '\e052'
+}
+
+.oi-dollar:before {
+    content: '\e053'
+}
+
+.oi-double-quote-sans-left:before {
+    content: '\e054'
+}
+
+.oi-double-quote-sans-right:before {
+    content: '\e055'
+}
+
+.oi-double-quote-serif-left:before {
+    content: '\e056'
+}
+
+.oi-double-quote-serif-right:before {
+    content: '\e057'
+}
+
+.oi-droplet:before {
+    content: '\e058'
+}
+
+.oi-eject:before {
+    content: '\e059'
+}
+
+.oi-elevator:before {
+    content: '\e05a'
+}
+
+.oi-ellipses:before {
+    content: '\e05b'
+}
+
+.oi-envelope-closed:before {
+    content: '\e05c'
+}
+
+.oi-envelope-open:before {
+    content: '\e05d'
+}
+
+.oi-euro:before {
+    content: '\e05e'
+}
+
+.oi-excerpt:before {
+    content: '\e05f'
+}
+
+.oi-expand-down:before {
+    content: '\e060'
+}
+
+.oi-expand-left:before {
+    content: '\e061'
+}
+
+.oi-expand-right:before {
+    content: '\e062'
+}
+
+.oi-expand-up:before {
+    content: '\e063'
+}
+
+.oi-external-link:before {
+    content: '\e064'
+}
+
+.oi-eye:before {
+    content: '\e065'
+}
+
+.oi-eyedropper:before {
+    content: '\e066'
+}
+
+.oi-file:before {
+    content: '\e067'
+}
+
+.oi-fire:before {
+    content: '\e068'
+}
+
+.oi-flag:before {
+    content: '\e069'
+}
+
+.oi-flash:before {
+    content: '\e06a'
+}
+
+.oi-folder:before {
+    content: '\e06b'
+}
+
+.oi-fork:before {
+    content: '\e06c'
+}
+
+.oi-fullscreen-enter:before {
+    content: '\e06d'
+}
+
+.oi-fullscreen-exit:before {
+    content: '\e06e'
+}
+
+.oi-globe:before {
+    content: '\e06f'
+}
+
+.oi-graph:before {
+    content: '\e070'
+}
+
+.oi-grid-four-up:before {
+    content: '\e071'
+}
+
+.oi-grid-three-up:before {
+    content: '\e072'
+}
+
+.oi-grid-two-up:before {
+    content: '\e073'
+}
+
+.oi-hard-drive:before {
+    content: '\e074'
+}
+
+.oi-header:before {
+    content: '\e075'
+}
+
+.oi-headphones:before {
+    content: '\e076'
+}
+
+.oi-heart:before {
+    content: '\e077'
+}
+
+.oi-home:before {
+    content: '\e078'
+}
+
+.oi-image:before {
+    content: '\e079'
+}
+
+.oi-inbox:before {
+    content: '\e07a'
+}
+
+.oi-infinity:before {
+    content: '\e07b'
+}
+
+.oi-info:before {
+    content: '\e07c'
+}
+
+.oi-italic:before {
+    content: '\e07d'
+}
+
+.oi-justify-center:before {
+    content: '\e07e'
+}
+
+.oi-justify-left:before {
+    content: '\e07f'
+}
+
+.oi-justify-right:before {
+    content: '\e080'
+}
+
+.oi-key:before {
+    content: '\e081'
+}
+
+.oi-laptop:before {
+    content: '\e082'
+}
+
+.oi-layers:before {
+    content: '\e083'
+}
+
+.oi-lightbulb:before {
+    content: '\e084'
+}
+
+.oi-link-broken:before {
+    content: '\e085'
+}
+
+.oi-link-intact:before {
+    content: '\e086'
+}
+
+.oi-list-rich:before {
+    content: '\e087'
+}
+
+.oi-list:before {
+    content: '\e088'
+}
+
+.oi-location:before {
+    content: '\e089'
+}
+
+.oi-lock-locked:before {
+    content: '\e08a'
+}
+
+.oi-lock-unlocked:before {
+    content: '\e08b'
+}
+
+.oi-loop-circular:before {
+    content: '\e08c'
+}
+
+.oi-loop-square:before {
+    content: '\e08d'
+}
+
+.oi-loop:before {
+    content: '\e08e'
+}
+
+.oi-magnifying-glass:before {
+    content: '\e08f'
+}
+
+.oi-map-marker:before {
+    content: '\e090'
+}
+
+.oi-map:before {
+    content: '\e091'
+}
+
+.oi-media-pause:before {
+    content: '\e092'
+}
+
+.oi-media-play:before {
+    content: '\e093'
+}
+
+.oi-media-record:before {
+    content: '\e094'
+}
+
+.oi-media-skip-backward:before {
+    content: '\e095'
+}
+
+.oi-media-skip-forward:before {
+    content: '\e096'
+}
+
+.oi-media-step-backward:before {
+    content: '\e097'
+}
+
+.oi-media-step-forward:before {
+    content: '\e098'
+}
+
+.oi-media-stop:before {
+    content: '\e099'
+}
+
+.oi-medical-cross:before {
+    content: '\e09a'
+}
+
+.oi-menu:before {
+    content: '\e09b'
+}
+
+.oi-microphone:before {
+    content: '\e09c'
+}
+
+.oi-minus:before {
+    content: '\e09d'
+}
+
+.oi-monitor:before {
+    content: '\e09e'
+}
+
+.oi-moon:before {
+    content: '\e09f'
+}
+
+.oi-move:before {
+    content: '\e0a0'
+}
+
+.oi-musical-note:before {
+    content: '\e0a1'
+}
+
+.oi-paperclip:before {
+    content: '\e0a2'
+}
+
+.oi-pencil:before {
+    content: '\e0a3'
+}
+
+.oi-people:before {
+    content: '\e0a4'
+}
+
+.oi-person:before {
+    content: '\e0a5'
+}
+
+.oi-phone:before {
+    content: '\e0a6'
+}
+
+.oi-pie-chart:before {
+    content: '\e0a7'
+}
+
+.oi-pin:before {
+    content: '\e0a8'
+}
+
+.oi-play-circle:before {
+    content: '\e0a9'
+}
+
+.oi-plus:before {
+    content: '\e0aa'
+}
+
+.oi-power-standby:before {
+    content: '\e0ab'
+}
+
+.oi-print:before {
+    content: '\e0ac'
+}
+
+.oi-project:before {
+    content: '\e0ad'
+}
+
+.oi-pulse:before {
+    content: '\e0ae'
+}
+
+.oi-puzzle-piece:before {
+    content: '\e0af'
+}
+
+.oi-question-mark:before {
+    content: '\e0b0'
+}
+
+.oi-rain:before {
+    content: '\e0b1'
+}
+
+.oi-random:before {
+    content: '\e0b2'
+}
+
+.oi-reload:before {
+    content: '\e0b3'
+}
+
+.oi-resize-both:before {
+    content: '\e0b4'
+}
+
+.oi-resize-height:before {
+    content: '\e0b5'
+}
+
+.oi-resize-width:before {
+    content: '\e0b6'
+}
+
+.oi-rss-alt:before {
+    content: '\e0b7'
+}
+
+.oi-rss:before {
+    content: '\e0b8'
+}
+
+.oi-script:before {
+    content: '\e0b9'
+}
+
+.oi-share-boxed:before {
+    content: '\e0ba'
+}
+
+.oi-share:before {
+    content: '\e0bb'
+}
+
+.oi-shield:before {
+    content: '\e0bc'
+}
+
+.oi-signal:before {
+    content: '\e0bd'
+}
+
+.oi-signpost:before {
+    content: '\e0be'
+}
+
+.oi-sort-ascending:before {
+    content: '\e0bf'
+}
+
+.oi-sort-descending:before {
+    content: '\e0c0'
+}
+
+.oi-spreadsheet:before {
+    content: '\e0c1'
+}
+
+.oi-star:before {
+    content: '\e0c2'
+}
+
+.oi-sun:before {
+    content: '\e0c3'
+}
+
+.oi-tablet:before {
+    content: '\e0c4'
+}
+
+.oi-tag:before {
+    content: '\e0c5'
+}
+
+.oi-tags:before {
+    content: '\e0c6'
+}
+
+.oi-target:before {
+    content: '\e0c7'
+}
+
+.oi-task:before {
+    content: '\e0c8'
+}
+
+.oi-terminal:before {
+    content: '\e0c9'
+}
+
+.oi-text:before {
+    content: '\e0ca'
+}
+
+.oi-thumb-down:before {
+    content: '\e0cb'
+}
+
+.oi-thumb-up:before {
+    content: '\e0cc'
+}
+
+.oi-timer:before {
+    content: '\e0cd'
+}
+
+.oi-transfer:before {
+    content: '\e0ce'
+}
+
+.oi-trash:before {
+    content: '\e0cf'
+}
+
+.oi-underline:before {
+    content: '\e0d0'
+}
+
+.oi-vertical-align-bottom:before {
+    content: '\e0d1'
+}
+
+.oi-vertical-align-center:before {
+    content: '\e0d2'
+}
+
+.oi-vertical-align-top:before {
+    content: '\e0d3'
+}
+
+.oi-video:before {
+    content: '\e0d4'
+}
+
+.oi-volume-high:before {
+    content: '\e0d5'
+}
+
+.oi-volume-low:before {
+    content: '\e0d6'
+}
+
+.oi-volume-off:before {
+    content: '\e0d7'
+}
+
+.oi-warning:before {
+    content: '\e0d8'
+}
+
+.oi-wifi:before {
+    content: '\e0d9'
+}
+
+.oi-wrench:before {
+    content: '\e0da'
+}
+
+.oi-x:before {
+    content: '\e0db'
+}
+
+.oi-yen:before {
+    content: '\e0dc'
+}
+
+.oi-zoom-in:before {
+    content: '\e0dd'
+}
+
+.oi-zoom-out:before {
+    content: '\e0de'
+}
\ No newline at end of file
diff --git a/MatrixRoomUtils.Web/wwwroot/index.html b/MatrixRoomUtils.Web/wwwroot/index.html
index 0439e62..3fc740a 100644
--- a/MatrixRoomUtils.Web/wwwroot/index.html
+++ b/MatrixRoomUtils.Web/wwwroot/index.html
@@ -36,6 +36,7 @@
             console.log("Element is not an HTMLElement", element);
         }
     }
+
     function getWidth(element) {
         console.log("getWidth", element);
         if (element == null) return 0;
@@ -47,6 +48,7 @@
         }
         return 0;
     }
+
     function getWindowDimensions() {
         return {
             width: window.innerWidth,
diff --git a/deploy-chroot.sh b/deploy-chroot.sh
new file mode 100755
index 0000000..f5c7394
--- /dev/null
+++ b/deploy-chroot.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+#  if [ -f "/tmp/mru-build/dev/null" ]; then sudo umount /tmp/mru-build/dev || exit 1; fi
+#  if [ -f "/tmp/mru-build/proc/uptime" ]; then sudo umount /tmp/mru-build/proc || exit 1; fi
+#  if [ -d "/tmp/mru-build/sys/power" ]; then sudo umount /tmp/mru-build/sys || exit 1; fi
+#  sudo rm -rf /tmp/mru-build
+#  mkdir /tmp/mru-build
+#  
+#  # ARCH
+#  #sudo pacstrap -C ./pacman.conf -c -G -M -P /tmp/mru-build  dotnet-sdk aspnet-runtime busybox kitty-terminfo
+#  #sudo arch-chroot /tmp/mru-build sh -c 'for i in `busybox --list-full`; do busybox ln /bin/busybox /$i; done'
+#  
+#  # DEBIAN 
+#  sudo debootstrap stable /tmp/mru-build http://deb.debian.org/debian
+#  sudo arch-chroot /tmp/mru-build bash --login -c 'apt update; apt upgrade -y; apt install -y curl'
+#  sudo arch-chroot /tmp/mru-build bash --login -c 'curl https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -O packages-microsoft-prod.deb; echo $PATH; dpkg -i packages-microsoft-prod.deb; rm packages-microsoft-prod.deb'
+#  sudo arch-chroot /tmp/mru-build bash --login -c 'apt update; apt upgrade -y; apt install -y dotnet-sdk-8.0'
+
+
+#git clone --recursive .git /tmp/mru-build/tmp
+sudo rm -rf /tmp/mru-build/build/
+cp ./ /tmp/mru-build/build/ -r
+#sudo arch-chroot /tmp/mru-build bash --login -c 'ping nuget.org -c 4'
+sudo arch-chroot /tmp/mru-build bash --login -c 'cd /build; dotnet restore -v:n'
+sudo arch-chroot /tmp/mru-build bash --login -c 'cd /build; dotnet clean --r -v:n'
+#sudo arch-chroot /tmp/mru-build sh -c 'cd /build; dotnet build -v d'
+
+echo "-- End of script! --"
\ No newline at end of file
diff --git a/deploy-local.sh b/deploy-local.sh
new file mode 100755
index 0000000..a030a21
--- /dev/null
+++ b/deploy-local.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+ssh 192.168.0.13 "bash -xc 'sudo rm -rf /tmp/mru-build'"
+ssh 192.168.0.13 "bash -xc 'sudo mkdir /tmp/mru-build'"
+ssh 192.168.0.13 "bash -xc 'sudo chown \`basename \$PWD\`: /tmp/mru-build'"
+rsync -raP ./ 192.168.0.13:/tmp/mru-build
+ssh 192.168.0.13 "sh -c 'cd /tmp/mru-build/MatrixRoomUtils.Web; dotnet clean --r -v:n'"
+#ssh 192.168.0.13 "sh -c 'cd /tmp/mru-build/MatrixRoomUtils.Web; dotnet build -c Release'"
+ssh 192.168.0.13 "sh -c 'cd /tmp/mru-build/MatrixRoomUtils.Web; dotnet publish -c Release'"
+rsync -raP 192.168.0.13:/tmp/mru-build/MatrixRoomUtils.Web/bin/Release/net8.0/publish/wwwroot/ /tmp/mru-wwwroot --delete
+rsync -raP /tmp/mru-wwwroot/ rory.gay:/data/nginx/html_mru --delete
+ssh rory.gay chmod o+r /data/nginx/html_mru -Rc
+ssh rory.gay sudo find /data/nginx/html_mru -type d -exec chmod o+rx {} +
+
+echo "-- End of script! --"
diff --git a/deploy.sh b/deploy.sh
index ea42481..dd91c42 100755
--- a/deploy.sh
+++ b/deploy.sh
@@ -11,8 +11,8 @@ BASE_DIR=`pwd`
 rm -rf **/bin/Release
 cd MatrixRoomUtils.Web
 dotnet publish -c Release
-rsync -raP bin/Release/net7.0/publish/wwwroot/ rory.gay:/data/nginx/html_mru/
-cd bin/Release/net7.0/publish/wwwroot
+rsync -raP bin/Release/net8.0/publish/wwwroot/ rory.gay:/data/nginx/html_mru/
+cd bin/Release/net8.0/publish/wwwroot
 tar cf - ./ | xz -z -9 - > $BASE_DIR/MRU-BIN.tar.xz
 #rsync -raP $BASE_DIR/MRU-BIN.tar.xz rory.gay:/data/nginx/html_mru/MRU-BIN.tar.xz
 rm -rf $BASE_DIR/MRU-BIN.tar.xz
diff --git a/mirrorlist b/mirrorlist
new file mode 100644
index 0000000..2929fbc
--- /dev/null
+++ b/mirrorlist
@@ -0,0 +1,30 @@
+################################################################################
+################# Arch Linux mirrorlist generated by Reflector #################
+################################################################################
+
+# With:       reflector @/etc/xdg/reflector/reflector.conf
+# When:       2021-07-23 10:41:38 UTC
+# From:       https://www.archlinux.org/mirrors/status/json/
+# Retrieved:  2021-07-23 10:40:59 UTC
+# Last Check: 2021-07-23 09:53:23 UTC
+
+Server = https://mirror.osbeck.com/archlinux/$repo/os/$arch
+Server = https://archmirror.it/repos/$repo/os/$arch
+Server = https://mirror.pkgbuild.com/$repo/os/$arch
+Server = https://europe.mirror.pkgbuild.com/$repo/os/$arch
+Server = https://mirror.chaoticum.net/arch/$repo/os/$arch
+Server = https://ftp.rnl.tecnico.ulisboa.pt/pub/archlinux/$repo/os/$arch
+Server = https://mirror.pseudoform.org/$repo/os/$arch
+Server = https://mirror.f4st.host/archlinux/$repo/os/$arch
+Server = https://ftp.halifax.rwth-aachen.de/archlinux/$repo/os/$arch
+Server = https://mirror.telepoint.bg/archlinux/$repo/os/$arch
+Server = https://phinau.de/arch/$repo/os/$arch
+Server = https://arch.mirror.constant.com/$repo/os/$arch
+Server = https://archlinux.thaller.ws/$repo/os/$arch
+Server = https://arch.mirror.square-r00t.net/$repo/os/$arch
+Server = https://mirror.lty.me/archlinux/$repo/os/$arch
+Server = https://archmirror1.octyl.net/$repo/os/$arch
+Server = https://archlinux.uk.mirror.allworldit.com/archlinux/$repo/os/$arch
+Server = https://america.mirror.pkgbuild.com/$repo/os/$arch
+Server = https://archlinux.za.mirror.allworldit.com/archlinux/$repo/os/$arch
+Server = https://asia.mirror.pkgbuild.com/$repo/os/$arch
diff --git a/pacman.conf b/pacman.conf
new file mode 100644
index 0000000..8f2650c
--- /dev/null
+++ b/pacman.conf
@@ -0,0 +1,104 @@
+#
+# /etc/pacman.conf
+#
+# See the pacman.conf(5) manpage for option and repository directives
+
+#
+# GENERAL OPTIONS
+#
+[options]
+# The following paths are commented out with their default values listed.
+# If you wish to use different paths, uncomment and update the paths.
+#RootDir     = /
+#DBPath      = /var/lib/pacman/
+CacheDir    = /tmp/
+#LogFile     = /var/log/pacman.log
+#GPGDir      = ./gnupg/
+#HookDir     = ./hooks/
+#HoldPkg     = pacman glibc
+#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
+#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
+#CleanMethod = KeepInstalled
+Architecture = auto
+
+# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
+#IgnorePkg   =
+#IgnoreGroup =
+
+#NoUpgrade   =
+#NoExtract   =
+
+# Misc options
+#UseSyslog
+Color
+#NoProgressBar
+CheckSpace
+#VerbosePkgLists
+ParallelDownloads = 32
+ILoveCandy
+
+# By default, pacman accepts packages signed by keys that its local keyring
+# trusts (see pacman-key and its man page), as well as unsigned packages.
+#SigLevel    = Required DatabaseOptional
+SigLevel = Never
+LocalFileSigLevel = Never
+RemoteFileSigLevel = Never
+
+# NOTE: You must run `pacman-key --init` before first using pacman; the local
+# keyring can then be populated with the keys of all official Arch Linux
+# packagers with `pacman-key --populate archlinux`.
+
+#
+# REPOSITORIES
+#   - can be defined here or included from another file
+#   - pacman will search repositories in the order defined here
+#   - local/custom mirrors can be added here or in separate files
+#   - repositories listed first will take precedence when packages
+#     have identical names, regardless of version number
+#   - URLs will have $repo replaced by the name of the current repo
+#   - URLs will have $arch replaced by the name of the architecture
+#
+# Repository entries are of the format:
+#       [repo-name]
+#       Server = ServerName
+#       Include = IncludePath
+#
+# The header [repo-name] is crucial - it must be present and
+# uncommented to enable the repo.
+#
+
+# The testing repositories are disabled by default. To enable, uncomment the
+# repo name header and Include lines. You can add preferred servers immediately
+# after the header, and they will be used before the default mirrors.
+
+#[testing]
+#Include = ./mirrorlist
+
+[core]
+#Include = ./mirrorlist
+Server = https://mirror.pkgbuild.com/$repo/os/$arch
+
+[extra]
+#Include = ./mirrorlist
+Server = https://mirror.pkgbuild.com/$repo/os/$arch
+
+#[community-testing]
+#Include = ./mirrorlist
+
+#[community]
+#Include = ./mirrorlist
+
+# If you want to run 32 bit applications on your x86_64 system,
+# enable the multilib repositories as required here.
+
+#[multilib-testing]
+#Include = ./mirrorlist
+
+#[multilib]
+#Include = ./mirrorlist
+
+# An example of a custom package repository.  See the pacman manpage for
+# tips on creating your own repositories.
+#[custom]
+#SigLevel = Optional TrustAll
+#Server = file:///home/custompkgs