From 3d9e48b84e4d41c7ee5042ad718108bd49bdc07a Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Fri, 25 Feb 2022 15:46:18 +0100 Subject: [PATCH 1/2] [simple] checkboxes can get the focusable Do note that checkboxes in the engine tab are displayed reversed. See: https://github.com/searxng/searxng/blob/3408d061aab9abc6168fec9bbc6deab71b236dac/searx/templates/simple/preferences.html#L313 A checkbox for an engine is checked when the engine is disabled. --- .../themes/simple/src/less/animations.less | 4 + .../themes/simple/src/less/definitions.less | 22 ++- .../themes/simple/src/less/preferences.less | 86 +++++---- .../themes/simple/src/less/toolkit.less | 172 +++++++++++------- searx/templates/simple/macros.html | 20 +- searx/templates/simple/preferences.html | 84 ++++----- 6 files changed, 220 insertions(+), 168 deletions(-) diff --git a/searx/static/themes/simple/src/less/animations.less b/searx/static/themes/simple/src/less/animations.less index 750b7d255..75c98308f 100644 --- a/searx/static/themes/simple/src/less/animations.less +++ b/searx/static/themes/simple/src/less/animations.less @@ -13,3 +13,7 @@ } } } + +input.checkbox-onoff[type="checkbox"]::before { + transition: left 0.25s; +} diff --git a/searx/static/themes/simple/src/less/definitions.less b/searx/static/themes/simple/src/less/definitions.less index 7de0d7ef9..804d4423e 100644 --- a/searx/static/themes/simple/src/less/definitions.less +++ b/searx/static/themes/simple/src/less/definitions.less @@ -96,10 +96,13 @@ --color-toolkit-select-border: #ddd; --color-toolkit-select-background-hover: #bbb; --color-toolkit-input-text-font: #222; - --color-toolkit-checkbox-onoff-background: #ddd; - --color-toolkit-checkbox-onoff-label-background: #3050ff; - --color-toolkit-checkbox-onoff-checked-background: #aaa; - --color-toolkit-checkbox-label-background: #fff; + --color-toolkit-checkbox-onoff-off-background: #ddd; + --color-toolkit-checkbox-onoff-on-background: #ddd; + --color-toolkit-checkbox-onoff-on-mark-background: #3050ff; + --color-toolkit-checkbox-onoff-on-mark-color: #fff; + --color-toolkit-checkbox-onoff-off-mark-background: #aaa; + --color-toolkit-checkbox-onoff-off-mark-color: #fff; + --color-toolkit-checkbox-label-background: #ddd; --color-toolkit-checkbox-label-border: #ddd; --color-toolkit-checkbox-input-border: #3050ff; --color-toolkit-engine-tooltip-border: #ddd; @@ -199,10 +202,13 @@ --color-toolkit-select-border: #555; --color-toolkit-select-background-hover: #333; --color-toolkit-input-text-font: #fff; - --color-toolkit-checkbox-onoff-background: #3c3b31; - --color-toolkit-checkbox-onoff-label-background: #58f; - --color-toolkit-checkbox-onoff-checked-background: #ddd; - --color-toolkit-checkbox-label-background: #fff; + --color-toolkit-checkbox-onoff-off-background: #3c3b31; + --color-toolkit-checkbox-onoff-on-background: #3c3b31; + --color-toolkit-checkbox-onoff-on-mark-background: #58f; + --color-toolkit-checkbox-onoff-on-mark-color: #222; + --color-toolkit-checkbox-onoff-off-mark-background: #ddd; + --color-toolkit-checkbox-onoff-off-mark-color: #222; + --color-toolkit-checkbox-label-background: #222; --color-toolkit-checkbox-label-border: #333; --color-toolkit-checkbox-input-border: #58f; --color-toolkit-engine-tooltip-border: #333; diff --git a/searx/static/themes/simple/src/less/preferences.less b/searx/static/themes/simple/src/less/preferences.less index a08b89cf5..9620828b4 100644 --- a/searx/static/themes/simple/src/less/preferences.less +++ b/searx/static/themes/simple/src/less/preferences.less @@ -80,6 +80,55 @@ text-align: center; } + .category { + .ltr-margin-right(0.5rem); + + label { + border: 2px solid transparent; + padding: 0.2rem 0.4rem; + .rounded-corners-tiny; + } + } + + .category input[type="checkbox"]:checked + label { + border: 2px solid var(--color-categories-item-border-selected); + } + + table.table_engines { + td { + height: 3.75rem; + } + + th.name { + /* stylelint-disable */ + label { + cursor: pointer; + } + /* stylelint-enable */ + + .engine-tooltip { + margin-top: 1.8rem; + .ltr-left(calc((100% - 85em) / 2 + 10em)); + max-width: 40rem; + + .engine-description { + margin-top: 0.5rem; + } + } + } + + .engine-group { + .ltr-text-align-left(); + font-weight: normal; + background: var(--color-settings-engine-group-background); + } + + .name, + .shortcut { + .ltr-text-align-left(); + } + } + table.cookies { width: 100%; direction: ltr; @@ -109,25 +158,6 @@ } } - .category { - .ltr-margin-right(0.5rem); - - label { - border: 2px solid transparent; - padding: 0.2rem 0.4rem; - .rounded-corners-tiny; - } - } - - .category input[type="checkbox"]:checked + label { - border: 2px solid var(--color-categories-item-border-selected); - } - - .name, - .shortcut { - .ltr-text-align-left(); - } - .preferences_back { background: none repeat scroll 0 0 var(--color-btn-background); color: var(--color-btn-font); @@ -153,24 +183,6 @@ width: 100%; } } - - th.name { - .engine-tooltip { - margin-top: 1.8rem; - .ltr-left(calc((100% - 85em) / 2 + 10em)); - max-width: 40rem; - - .engine-description { - margin-top: 0.5rem; - } - } - } - - .engine-group { - .ltr-text-align-left(); - font-weight: normal; - background: var(--color-settings-engine-group-background); - } } @media screen and (max-width: @tablet) { diff --git a/searx/static/themes/simple/src/less/toolkit.less b/searx/static/themes/simple/src/less/toolkit.less index 17fe56801..93fa5e04c 100644 --- a/searx/static/themes/simple/src/less/toolkit.less +++ b/searx/static/themes/simple/src/less/toolkit.less @@ -378,92 +378,126 @@ select { } /* -- checkbox-onoff -- */ -@supports (border-radius: 50px) { - .checkbox-onoff { - display: inline-block; - width: 40px; - height: 10px; - background: var(--color-toolkit-checkbox-onoff-background); - margin: 8px 1rem; - position: relative; - border-radius: 50px; +input.checkbox-onoff[type="checkbox"] { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + cursor: pointer; + display: inline-block; + width: 2.5em; + height: 0.7em; + box-shadow: none !important; + margin: 0 16px; + border-radius: 10px; + position: relative; - label { - display: block; - width: 20px; - height: 20px; - position: absolute; - top: -5px; - cursor: pointer; - border-radius: 50px; - transition: all 0.4s ease; - left: 27px; - background-color: var(--color-toolkit-checkbox-onoff-label-background); - } + /* focus & hover */ + &:focus, + &:hover { + outline: none; + } - input[type=checkbox] { - visibility: hidden; + &:focus::after { + content: ""; + position: absolute; + width: 3.5em; + height: 1.65em; + border: 1px solid var(--color-btn-background); + border-radius: 12px; + box-shadow: var(--color-btn-background) 0 0 3px; + z-index: 10000; + top: -0.55em; + left: -0.6em; + } - &:checked + label { - left: -5px; - background: var(--color-toolkit-checkbox-onoff-checked-background); - } - } + &::before { + position: absolute; + top: -0.5em; + display: flex; + justify-content: center; + align-items: center; + font-size: 0.75em; + width: 1.875em; + height: 1.875em; + border-radius: 50%; + } +} + +/* check mark +reversed-checkbox displays unchecked checkedboxes as checked, and vice versa. +see https://github.com/searxng/searxng/blob/3408d061aab9abc6168fec9bbc6deab71b236dac/searx/templates/simple/preferences.html#L313 +*/ +input.checkbox-onoff[type="checkbox"], +.reversed-checkbox input.checkbox-onoff[type="checkbox"]:checked { + background: var(--color-toolkit-checkbox-onoff-off-background); + + &::before { + left: -0.5em; + content: "\2715"; + color: var(--color-toolkit-checkbox-onoff-off-mark-color); + background: var(--color-toolkit-checkbox-onoff-off-mark-background); + } +} + +input.checkbox-onoff[type="checkbox"]:checked, +.reversed-checkbox input.checkbox-onoff[type="checkbox"] { + background: var(--color-toolkit-checkbox-onoff-on-background); + + &::before { + left: calc(100% - 1.5em); + content: "\2713"; + color: var(--color-toolkit-checkbox-onoff-on-mark-color); + background: var(--color-toolkit-checkbox-onoff-on-mark-background); } } /* -- checkbox -- */ @supports (transform: rotate(-45deg)) { - .checkbox { + input[type=checkbox]:not(.checkbox-onoff) { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + width: 20px; + height: 20px; + cursor: pointer; position: relative; - margin: 20px auto; + top: 0; + left: 0; + border: 2px solid var(--color-toolkit-checkbox-input-border); + .rounded-corners(0.3em); - label { - width: 20px; - height: 20px; - cursor: pointer; + &::after { + content: ''; + width: 9px; + height: 5px; position: absolute; - top: 0; - left: 0; - background: var(--color-toolkit-checkbox-label-background); - .rounded-corners; - - &::after { - content: ''; - width: 9px; - height: 5px; - position: absolute; - top: 4px; - left: 4px; - border: 3px solid var(--color-toolkit-checkbox-label-border); - border-top: none; - border-right: none; - background: transparent; - opacity: 0; - transform: rotate(-45deg); - } + top: 3px; + left: 2px; + border: 3px solid var(--color-toolkit-checkbox-label-border); + border-top: none; + border-right: none; + background: transparent; + opacity: 0; + transform: rotate(-45deg); } - input[type=checkbox] { - visibility: hidden; - - &:checked + label::after { - border-color: var(--color-toolkit-checkbox-input-border); - opacity: 1; - } + &:checked::after { + border-color: var(--color-toolkit-checkbox-input-border); + opacity: 1; } + } - // disabled : can''t be focused, show only the check mark - input[disabled] + label { - background-color: transparent !important; - cursor: inherit; - } + // disabled : can't be focused, show only the check mark + input[type=checkbox][disabled]:not(.checkbox-onoff) { + border: inherit; + background-color: transparent !important; + cursor: inherit; + } - // if not checked and possible to checked then display a "light" check mark on hover - input:not(:checked):not([readonly]):not([disabled]) + label:hover::after { - opacity: 0.5; - } + // if not checked and possible to checked then display a "light" check mark on hover + input.checkbox[type=checkbox]:not(:checked):not([disabled]):not(.checkbox-onoff):hover::after { + opacity: 0.5; } } diff --git a/searx/templates/simple/macros.html b/searx/templates/simple/macros.html index 6c64c23ea..a751ce187 100644 --- a/searx/templates/simple/macros.html +++ b/searx/templates/simple/macros.html @@ -72,19 +72,13 @@ {%- endmacro -%} {%- macro checkbox_onoff(name, checked) -%} -
{{- '' -}} - {{- '' -}} - {{- '' -}} -
+ {%- endmacro -%} -{%- macro checkbox(name, checked, readonly, disabled) -%} -
{{- '' -}} - {%- if checked == '?' -%} - {{ icon_small('warning') }} - {%- else -%} - {{- '' -}} - {{- '' -}} - {%- endif -%} -
+{%- macro checkbox(name, checked, disabled) -%} +{%- if checked == '?' -%} + {{- icon_small('warning') -}} +{%- else -%} + +{%- endif -%} {%- endmacro -%} diff --git a/searx/templates/simple/preferences.html b/searx/templates/simple/preferences.html index 275a53bf7..659e93f9a 100644 --- a/searx/templates/simple/preferences.html +++ b/searx/templates/simple/preferences.html @@ -23,13 +23,13 @@ {% if search_engine.about is defined %} {% set about = search_engine.about %} {{- "" -}} {%- else -%} -{{ r }} +{% if r %}{{ r }}{% endif %} {%- endif -%} {%- endmacro -%} @@ -98,7 +98,7 @@ {% block content %}

{{ _('Preferences') }}

-
+ {{ tabs_open() }} @@ -182,9 +182,9 @@ {{ _('Interface language') }}

{{ _('Change the language of the layout') }}
@@ -290,17 +290,17 @@

{{_('This tab does not show up for search results, but you can search the engines listed here via bangs.')}}

{% endif %}
- - - - - - - - - - - +
{{ _("Allow") }}{{ _("Engine name") }}{{ _("Shortcut") }}{{ _("Supports selected language") }}{{ _("SafeSearch") }}{{ _("Time range") }}{{ _("Response time") }}{{ _("Max time") }}{{ _("Reliability") }}
+ {{- "" -}} + {{- "" -}} + {{- "" -}} + {{- "" -}} + {{- "" -}} + {{- "" -}} + {{- "" -}} + {{- "" -}} + {{- "" -}} + {{- "" -}} {% for group, engines in engines_by_category[categ] | group_engines_in_tab %} {% if loop.length > 1 %} @@ -309,22 +309,24 @@ {% for search_engine in engines %} {% if not search_engine.private %} {% set engine_id = 'engine_' + search_engine.name|replace(' ', '_') + '__' + categ|replace(' ', '_') %} - - - {{- "" -}} + {{- "" -}} + - - - - - {{ engine_time(search_engine.name) }} - - {{ engine_reliability(search_engine.name) }} + {%- endif -%} + + {{- engine_about(search_engine) -}} + {{- "" -}} + {{- "" -}} + {{- "" -}} + {{- "" -}} + {{- "" -}} + {{- engine_time(search_engine.name) -}} + {{- "" -}} + {{ engine_reliability(search_engine.name) -}} {% endif %} {% endfor %} @@ -377,20 +379,20 @@ {{ tab_footer() }} {{ tab_header('maintab', 'cookies', _('Cookies')) }} -

- {{ _('This is the list of cookies and their values SearXNG is storing on your computer.') }}
- {{ _('With that list, you can assess SearXNG transparency.') }}
+

{{- "" -}} + {{- _('This is the list of cookies and their values SearXNG is storing on your computer.') }}
{{- "" -}} + {{- _('With that list, you can assess SearXNG transparency.') }}
{{- "" -}}

{% if cookies %}
{{ _("Allow") }}{{ _("Engine name") }}{{ _("Shortcut") }}{{ _("Supports selected language") }}{{ _("SafeSearch") }}{{ _("Time range") }}{{ _("Response time") }}{{ _("Max time") }}{{ _("Reliability") }}
{{ checkbox_onoff(engine_id, (search_engine.name, categ) in disabled_engines) }}{% if search_engine.enable_http %}{{ icon_big('warning', 'No HTTPS') }}{% endif %} - {{ search_engine.name }} - {%- if search_engine.about and search_engine.about.language %} +
{{ checkbox_onoff(engine_id, (search_engine.name, categ) in disabled_engines) }}{% if search_engine.enable_http %}{{ icon_big('warning', 'No HTTPS') }}{% endif -%} + {{ shortcuts[search_engine.name] }}{{ checkbox(engine_id + '_supported_languages', supports[search_engine.name]['supports_selected_language'], true, true) }}{{ checkbox(engine_id + '_safesearch', supports[search_engine.name]['safesearch'], true, true) }}{{ checkbox(engine_id + '_time_range_support', supports[search_engine.name]['time_range_support'], true, true) }}{{ search_engine.timeout }}{{ shortcuts[search_engine.name] }}{{ checkbox(None, supports[search_engine.name]['supports_selected_language'], true) }}{{ checkbox(None, supports[search_engine.name]['safesearch'], true) }}{{ checkbox(None, supports[search_engine.name]['time_range_support'], true) }}{{ search_engine.timeout }}
- - - + {{- "" -}} + {{- "" -}} + {{- "" -}} {% for cookie in cookies %} - - - + {{- "" -}} + {{- "" -}} + {{- "" -}} {% endfor %}
{{ _('Cookie name') }}{{ _('Value') }}
{{ _('Cookie name') }}{{ _('Value') }}
{{ cookie }}{{ cookies[cookie] }}
{{ cookie }}{{ cookies[cookie] }}
From 28bccda78a7ab84f9dffad0b9fcc5f4a7bd6f695 Mon Sep 17 00:00:00 2001 From: Alexandre FLAMENT Date: Wed, 2 Mar 2022 18:56:37 +0000 Subject: [PATCH 2/2] [build] /static --- .../themes/oscar/css/pointhi.min.css.map | Bin 8291 -> 8291 bytes searx/static/themes/oscar/js/searxng.min.js | Bin 11017 -> 11019 bytes .../static/themes/oscar/js/searxng.min.js.map | Bin 10816 -> 10796 bytes .../themes/simple/css/searxng-rtl.min.css | Bin 59973 -> 61828 bytes .../themes/simple/css/searxng-rtl.min.css.map | Bin 98887 -> 101093 bytes .../static/themes/simple/css/searxng.min.css | Bin 58877 -> 60732 bytes .../themes/simple/css/searxng.min.css.map | Bin 97164 -> 99370 bytes searx/static/themes/simple/js/searxng.min.js | Bin 24878 -> 24878 bytes 8 files changed, 0 insertions(+), 0 deletions(-) diff --git a/searx/static/themes/oscar/css/pointhi.min.css.map b/searx/static/themes/oscar/css/pointhi.min.css.map index 3a1619ec7723da1f782000d1935b8825884aff93..9dac2eb0a9ebb183a9b899bc513f3b7ebce242fe 100644 GIT binary patch delta 61 zcmV-D0K)&{K;uA=catgt6Ols`v7m|plTHFWk^%^kcNUTU3A2goYW N{v0?10cDdnAS_{36Ttug diff --git a/searx/static/themes/oscar/js/searxng.min.js b/searx/static/themes/oscar/js/searxng.min.js index a3ccbf574064eb88b860f7d3ce3e52a8f0b93518..a632dc2d11272c312a7d61d7996eccced67e8cc0 100644 GIT binary patch delta 380 zcmYk2!AiqG5Qf>JQmhx<9;{x{w2g_zSV2LPZaoPeT0{!mYPg zKp<+!knAHO`HGe$KhQdYWHyyaZv!dnd`VTRihsgr2UNr41T4xq)76N%s^RoQzonG( zgm6vEuMTP)|4*2Zc#~`Cy?~S}IwkxdJT$C;@*bn@eZR#$O)FREpVc~x=8iJX;3e`B z&ySL+`I|Iy#C_pudZ-zxSsmKd!7xEIi*It5Exk*AmhOsD)+{#+I1AfWo1O!U^b2*j TQCI4;8~A6c4VTHIc0Be2_G)_z delta 321 zcmYk$O-lkn7zc31HWBlZTSPC=y6QHQ(_&Fj+IZ`x6bN2|WY{KL(pedwqL=LhM9^jE z*rB_JVlUDM@=}++LDQ|v?|Jz1@aK8zJa*n~v=nJj13Lo6AbMtVA5Oo>gM%dgJ}D)mpkFv|%s+mh`esT=lz@y6aae%LkR zx7|Q8sVszPi*knb%Zf@<=!GMa$o; diff --git a/searx/static/themes/oscar/js/searxng.min.js.map b/searx/static/themes/oscar/js/searxng.min.js.map index bbc984bd69268c2ac4754b35312a0c37dcfc81d2..3328fb2cdc62cbdc61d53a3ad3d95ff4cf609e20 100644 GIT binary patch delta 875 zcmah{O;1x%5Dk$Ew29G}NR^n9M)|PUC@lo4aWVJ4M|s>nUOy@Ag7^xh6l^K|ByQNc zGBNi@xN%|Z!mU5RrHMN?{s%X@aAwd1S8m?DGjq<|GiTnX!n?xzALG$RvtDZK_YR{X z+NpK>FM3-i`!x(2O}}32rfaSGC>%H%H?O94uQdI(`9Af`JPbZC`@x$*FYnH}e!JB; zHof4NiKG$^fHT?*#Y3605;mx=qyv%{M{S1!?`&OoV0Yy5I)x5>QovV_zIz#LlUkA* z1FI`V3am4kF`sWWC(~F_9hEUK{d2M*3GL^M6}~r7p?j$`IthQh8c01-F==v<=QoG| z&e8@|-8Cun=wswtz_(ZAV~2VvTND9UE7%HUfwxK6Iz0;xtHL`XUs{@>toeUX*ZjKw zG`>PaaM%GiM{VsaXAZEru3%qGl{r)3YSHY@#jk0LQ`JAIw{tKXvqTBSk|W@_q@%cl z86+!EJ()LC^LHo8T=k4UKRwgo-g%3r$lLg}6Y5g^{GYneV7CcsZ|rf8yvQRhhZ(PW zq3l?SEI^hVN_+HZRS6$gwS!WfQdziYZTR~i?$N3=6`)9=f_xI3Va)M}bA zsZ&K+udiupJuov1vFi<{BU|GpdNOIY7oxY8L{|a~ hWu2ov(Uc)jI3*gBkZtp1F)}tZmBqwZ$Gl$r@Eh)e_uT*h delta 838 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 K4-(&O9RC-)nHg~a delta 956 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 JhS7zm{tMKIuyz0d delta 2176 zcmb7^du&rx9LICY27`{ZTlefXc1DCfde(Mhk6Khbz3sZLZUb?^V94&;yS1$A?fL)) zAtYkdKk%=ko|q|u#zY5X#*!>ig8vy4F!+d3e1OITHcUkRFlu6q=iEmNLH_Wco8EJN zkI(P>{oT&Lu=2zoh3}1*kt0^)+DR|Q7;VD>MpIsLy0V-slwos+e@Z~p0v38aDC)rn z-nTrmqS`6sLe;F`Jz1q>%xWf|m6ehc)?(w72k-Rr+#Y}Si^|RaE87HO+1IRpl^N3> zWbEQ7`R&@g`t=m8B3QRh@pv{VK=$zjQL$D>wlNMXMi@o3X{Wif~{9)g|EjRtlo z+T<~!9wal42_#}1LLIDanEA@u_;7FpO)Bqv3RMuSDz^;>Y+e-Y#e&1DMh9?kGP|z5 z#Za<|vFMGXk?ioMXAOqKvFvwU9~Bh{yY>s&^N%gB0Ddwjyld|C45s~|gggVG3$A}d=%w$l^2o7|!pE4Jayoe!* zde^OO@9Wi=hPwO6OWvoC^&+;IOkE{qXt1Zh9|Z?o{UPLH1$QvzITB`tT&%qoHh_bJ zOp?KPU#`_mpAU`j*Z{{+#CHieknt$rK~g|$qw^m6dzn*%@h33KT6{5y9G~wjjEUn? zjQl?DS`~^&p(!a$VrLxW%QF^o?rb$l%&#W%OU2~*lNNGnzLZ?JS)3KlzFI;WKWJu` zCN2H!!a8#8og#jcD|7k7`^)THuxN3sl~QkAu&wWWJe5f#FiX;!q1bG8%`_uF#FkhuY-0JTXBVeZW@L$?iAvTL>dkbTX25!*+H=?=%1l8T+P~ zT=}_*8tkCVJS`?Cqj5KMB@V&%q%=)tEhFyhjEqeVsq@fRYb0TU!GT+0z0tKsw60(Cm#YUO}a9BRi)?~4WOo5RRzM0Zp~I` zgNoH^5SI)>wN;KELh|`nbzC&vM77n@Fes&4te}wWx`FF*PUw~HQjE)5s%y>Ff?_5u zEBbD@D=asw?pj`0E+HK^f!brFC*uDl~UX)%{a34GB=oJlW`WixX)nsp65p zZ(2$DQbl>*Mcpn46&p8jB@`n&bK8^`M?WK(r69SuR7>YvpoaXmR6xR)Yv{R6U==Yh zSCI|N>nW3|nEr^tN(z&p@WI}+KG2(c$T=gI@t72bZWt2dP2}pbtp>tqJdsK7(eL)^Yd{)*s3UW6BRP7xj68Fz zlHNWJ3JW+HdHvStn3m^`%jsr)gIbigJxNIn%kkLkUhO?sx<#+;j>re3v znD}ivqD1mLdZh)_(_dRaEj6}+4my$mM%v#B%yhIBG|;21>|*m8u!dgT%^v4lK{+*f rKt0*_wUz$a0E(4;I`zqFx}^!MqHQ)%Nw(f7qW@F?w0O}0Vo&`G!=kRA diff --git a/searx/static/themes/simple/js/searxng.min.js b/searx/static/themes/simple/js/searxng.min.js index 1ef55951dceb0828bb880b2e0a2f11ab1146f6f3..ebf718f301b3b80efd7423b5d283dfd9bda1b87e 100644 GIT binary patch delta 348 zcmZ2?h;iK^#tlz|7&9k774l*%m~0^Iz*suDP&g1s9u^J)vqdI1h{#NK6Hx>5az(crQ%&MRWG+bT54(P8m1vkcw&1)4{85wgoZ&u7_RL-$2wzaj**UL%GOE1aLHMA~E zEK(@7Emk!G3LAjkH`!G=5@^DFWeJhwSiS7jN^K<@{p_R^I|U`}#OUP7rk5az(5{;6{>lF+qx5~=#Bx`6^7p0bz7Ud}b1!Zk{3XlXg|B!vj$egK>I$2vm zaWbodB4hDnbp<=1ztR-k7;`tTRbXXgOx(O#F`rR6*|yl$);3=+Cp9mWLM=#pcCdRONf-l>Sd=^YAf03XD6lDDJW?tMwd=Lt*pV4Q&W>X V`MdHB?nI4LO=}3T`IbtE4FJf-aKQio