From 21a0365db7d5aba41f3a0342ccdb1b90d5736112 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Wed, 13 Feb 2019 17:41:03 +0100 Subject: [PATCH] Add patches from upstream for: Monitor hotplug support, this fixes issues with monitors on DP-MST docs sometimes not lighting up (rhbz#1652279) Adding support for using the firmware's bootsplash as theme background New bgrt theme which implements the boot-theme design from: https://wiki.gnome.org/Design/OS/BootProgress Including the new theming for offline-updates shown there Make the bgrt theme the new default and upgrade systems which are using the charge theme, which is the old default to use the new bgrt theme Cleanup the spec-file a bit: Remove unused / unnecessary %global variables Sort the sections for the various plugins and themes alphabetically Simplify theme filelists --- plymouth-updates.patch | 21990 +++++++++++++++++++++++++++++++++++++++ plymouth.spec | 364 +- 2 files changed, 22173 insertions(+), 181 deletions(-) create mode 100644 plymouth-updates.patch diff --git a/plymouth-updates.patch b/plymouth-updates.patch new file mode 100644 index 0000000..e4504f7 --- /dev/null +++ b/plymouth-updates.patch @@ -0,0 +1,21990 @@ +From f89858654353d9ab1ca9a2a2a9f758d40f868091 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Mon, 5 Nov 2018 15:45:53 -0500 +Subject: [PATCH 01/74] configure: bump to 0.9.5 + +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 0382773..66d3649 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1,4 +1,4 @@ +-AC_INIT([plymouth],[0.9.4],[https://bugs.freedesktop.org/enter_bug.cgi?product=plymouth]) ++AC_INIT([plymouth],[0.9.5],[https://bugs.freedesktop.org/enter_bug.cgi?product=plymouth]) + AC_CONFIG_SRCDIR(src/main.c) + AC_CONFIG_HEADER(config.h) + AC_CONFIG_AUX_DIR(build-tools) +-- +2.20.1 + +From 763c023caa5215070047b07c80208b9d99dc8d8b Mon Sep 17 00:00:00 2001 +From: Laurent Bigonville +Date: Thu, 8 Nov 2018 11:05:05 +0000 +Subject: [PATCH 02/74] systemd-units: Also add + "ConditionVirtualization=!container" in systemd-ask-password-plymouth.path.in + +This completes the fix for #27 +--- + systemd-units/systemd-ask-password-plymouth.path.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/systemd-units/systemd-ask-password-plymouth.path.in b/systemd-units/systemd-ask-password-plymouth.path.in +index c2ee420..826a6b3 100644 +--- a/systemd-units/systemd-ask-password-plymouth.path.in ++++ b/systemd-units/systemd-ask-password-plymouth.path.in +@@ -7,6 +7,7 @@ After=plymouth-start.service + Before=basic.target shutdown.target + ConditionKernelCommandLine=!plymouth.enable=0 + ConditionPathExists=/run/plymouth/pid ++ConditionVirtualization=!container + + [Path] + DirectoryNotEmpty=/run/systemd/ask-password +-- +2.20.1 + +From 4de54f598b66cd8d8fc55328f99f3b568cc9d4eb Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 17 Jul 2018 09:46:12 +0200 +Subject: [PATCH 03/74] logger: Add a separator between different boot logs + +Since we concatenate boot logs one after the other in /var/log/boot.log +it is hard to tell where the logs from one boot end the next boot starts. + +This commit makes plymouth write out a separator including a time + date +of the date, when the log file gets opened to add new boot messages to it. + +Note ply_logger_open_file() is only called from ply_terminal_session_open_log() +which in turn is only used for /var/log/boot.log, so this only effects +/var/log/boot.log. + +Closes #29 + +Signed-off-by: Hans de Goede +--- + src/libply/ply-logger.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +diff --git a/src/libply/ply-logger.c b/src/libply/ply-logger.c +index e9b90de..03dd347 100644 +--- a/src/libply/ply-logger.c ++++ b/src/libply/ply-logger.c +@@ -34,6 +34,7 @@ + #include + #include + #include ++#include + #include + + #include "ply-utils.h" +@@ -312,6 +313,9 @@ bool + ply_logger_open_file (ply_logger_t *logger, + const char *filename) + { ++ char header[80]; ++ struct tm* tm; ++ time_t t; + int fd; + + assert (logger != NULL); +@@ -328,6 +332,15 @@ ply_logger_open_file (ply_logger_t *logger, + + logger->filename = strdup (filename); + ++ time (&t); ++ tm = localtime (&t); ++ if (tm) { ++ /* This uses uname -v date format */ ++ strftime (header, sizeof(header), ++ "------------ %a %b %d %T %Z %Y ------------\n", tm); ++ ply_logger_write (logger, header, strlen(header), true); ++ } ++ + return true; + } + +-- +2.20.1 + +From 059390ac569798cbf40a958ea714b15f313b46a3 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Sat, 10 Nov 2018 16:04:31 +0100 +Subject: [PATCH 04/74] ply-device-manager: Fix race causing undesired creation + of non-gfx devs + +On systems with working drm/kms devices we still sometimes see: +"Creating non-graphical devices, since there's no suitable graphics hardware" +in the logs (and actually create non-gfx devices). + +This is caused by a race where the create_devices_from_udev timeout handler +runs just after the pivot-root, just at the time when the "udev trigger" +from the real root is done. + +This causes create_devices_for_subsystem() to hit the "it's not initialized" +code-path for all drm and fb devices, even though before (from the initrd) +drm-devices where already setup successfully. + +One way of solving this would be to stop the timer as soon as we successfully +enumerate the first drm device. But we need the timer to enumerate fb devices +so on machines where some outputs only have a fbdev driver (corner case) this +would break support for those outputs. + +Instead this commit moves the found_drm_device and found_fb_device to the +global manager state and sets them from create_devices_for_udev_device(). +This way they will be set when we check them from the create_devices_from_udev +timeout handler even if create_devices_for_subsystem skips over the devices +because of the udev trigger race. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-core/ply-device-manager.c | 16 +++++++++++----- + 1 file changed, 11 insertions(+), 5 deletions(-) + +diff --git a/src/libply-splash-core/ply-device-manager.c b/src/libply-splash-core/ply-device-manager.c +index 55248ac..d70e709 100644 +--- a/src/libply-splash-core/ply-device-manager.c ++++ b/src/libply-splash-core/ply-device-manager.c +@@ -81,6 +81,8 @@ struct _ply_device_manager + + uint32_t paused : 1; + uint32_t device_timeout_elapsed : 1; ++ uint32_t found_drm_device : 1; ++ uint32_t found_fb_device : 1; + }; + + static void +@@ -254,6 +256,12 @@ create_devices_for_udev_device (ply_device_manager_t *manager, + device_path, + terminal, + renderer_type); ++ if (created) { ++ if (renderer_type == PLY_RENDERER_TYPE_DRM) ++ manager->found_drm_device = 1; ++ if (renderer_type == PLY_RENDERER_TYPE_FRAME_BUFFER) ++ manager->found_fb_device = 1; ++ } + } + } + +@@ -818,8 +826,6 @@ create_non_graphical_devices (ply_device_manager_t *manager) + static void + create_devices_from_udev (ply_device_manager_t *manager) + { +- bool found_drm_device, found_fb_device; +- + manager->device_timeout_elapsed = true; + + if (manager->paused) { +@@ -829,10 +835,10 @@ create_devices_from_udev (ply_device_manager_t *manager) + + ply_trace ("Timeout elapsed, looking for devices from udev"); + +- found_drm_device = create_devices_for_subsystem (manager, SUBSYSTEM_DRM); +- found_fb_device = create_devices_for_subsystem (manager, SUBSYSTEM_FRAME_BUFFER); ++ create_devices_for_subsystem (manager, SUBSYSTEM_DRM); ++ create_devices_for_subsystem (manager, SUBSYSTEM_FRAME_BUFFER); + +- if (found_drm_device || found_fb_device) ++ if (manager->found_drm_device || manager->found_fb_device) + return; + + ply_trace ("Creating non-graphical devices, since there's no suitable graphics hardware"); +-- +2.20.1 + +From 9639ed895331924b24670ff6f814aaa952ad5b02 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Mon, 12 Nov 2018 12:50:33 +0100 +Subject: [PATCH 05/74] two-step: Fix animation not starting on later added + heads + +Fix the animation not starting on heads added after show_splash_screen +has been called. Since the core calls show_splash_screen after adding +the first head / pixel_display in practice this fixes the animation not +starting on all monitors other then the first. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index 7307e19..924207c 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -1002,10 +1002,12 @@ add_pixel_display (ply_boot_splash_plugin_t *plugin, + (ply_pixel_display_draw_handler_t) + on_draw, view); + if (plugin->is_visible) { +- if (view_load (view)) ++ if (view_load (view)) { + ply_list_append_data (plugin->views, view); +- else ++ view_start_progress_animation (view); ++ } else { + view_free (view); ++ } + } else { + ply_list_append_data (plugin->views, view); + } +-- +2.20.1 + +From 75d93c0f30e7455f817c4705af371c743d0b3913 Mon Sep 17 00:00:00 2001 +From: Jakub Steiner +Date: Wed, 21 Nov 2018 15:44:39 +0100 +Subject: [PATCH 06/74] spinner theme: update + +- update spinner & lock to current visuals + +Hans de Goede: Add extra throbber-00##.png files to Makefile.am, small tweak +to the new lock image. +--- + themes/spinner/Makefile.am | 20 ++- + themes/spinner/animation-0001.png | Bin 1001 -> 1579 bytes + themes/spinner/animation-0002.png | Bin 1008 -> 1573 bytes + themes/spinner/animation-0003.png | Bin 1004 -> 1591 bytes + themes/spinner/animation-0004.png | Bin 1012 -> 1594 bytes + themes/spinner/animation-0005.png | Bin 1023 -> 1624 bytes + themes/spinner/animation-0006.png | Bin 1037 -> 1646 bytes + themes/spinner/animation-0007.png | Bin 1006 -> 1666 bytes + themes/spinner/animation-0008.png | Bin 1003 -> 1634 bytes + themes/spinner/animation-0009.png | Bin 1007 -> 1640 bytes + themes/spinner/animation-0010.png | Bin 982 -> 1613 bytes + themes/spinner/animation-0011.png | Bin 988 -> 1621 bytes + themes/spinner/animation-0012.png | Bin 995 -> 1619 bytes + themes/spinner/animation-0013.png | Bin 968 -> 1617 bytes + themes/spinner/animation-0014.png | Bin 980 -> 1618 bytes + themes/spinner/animation-0015.png | Bin 973 -> 1615 bytes + themes/spinner/animation-0016.png | Bin 948 -> 1605 bytes + themes/spinner/animation-0017.png | Bin 950 -> 1581 bytes + themes/spinner/animation-0018.png | Bin 948 -> 1582 bytes + themes/spinner/animation-0019.png | Bin 911 -> 1578 bytes + themes/spinner/animation-0020.png | Bin 911 -> 1558 bytes + themes/spinner/animation-0021.png | Bin 879 -> 1545 bytes + themes/spinner/animation-0022.png | Bin 841 -> 1541 bytes + themes/spinner/animation-0023.png | Bin 825 -> 1481 bytes + themes/spinner/animation-0024.png | Bin 806 -> 1492 bytes + themes/spinner/animation-0025.png | Bin 784 -> 1455 bytes + themes/spinner/animation-0026.png | Bin 749 -> 1427 bytes + themes/spinner/animation-0027.png | Bin 752 -> 1407 bytes + themes/spinner/animation-0028.png | Bin 685 -> 1385 bytes + themes/spinner/animation-0029.png | Bin 668 -> 1348 bytes + themes/spinner/animation-0030.png | Bin 621 -> 1316 bytes + themes/spinner/animation-0031.png | Bin 560 -> 1245 bytes + themes/spinner/animation-0032.png | Bin 541 -> 1185 bytes + themes/spinner/animation-0033.png | Bin 443 -> 1111 bytes + themes/spinner/animation-0034.png | Bin 349 -> 1061 bytes + themes/spinner/animation-0035.png | Bin 299 -> 981 bytes + themes/spinner/animation-0036.png | Bin 83 -> 989 bytes + themes/spinner/entry.png | Bin 367 -> 1431 bytes + themes/spinner/lock.png | Bin 1896 -> 329 bytes + themes/spinner/lock.svg | 283 ++++++++++++++++++++++++++++++ + themes/spinner/spinner.blend | Bin 0 -> 737108 bytes + themes/spinner/throbber-0001.png | Bin 1001 -> 1578 bytes + themes/spinner/throbber-0002.png | Bin 1011 -> 1568 bytes + themes/spinner/throbber-0003.png | Bin 1016 -> 1561 bytes + themes/spinner/throbber-0004.png | Bin 1019 -> 1570 bytes + themes/spinner/throbber-0005.png | Bin 1034 -> 1585 bytes + themes/spinner/throbber-0006.png | Bin 1028 -> 1597 bytes + themes/spinner/throbber-0007.png | Bin 1006 -> 1629 bytes + themes/spinner/throbber-0008.png | Bin 1032 -> 1604 bytes + themes/spinner/throbber-0009.png | Bin 1015 -> 1605 bytes + themes/spinner/throbber-0010.png | Bin 1001 -> 1601 bytes + themes/spinner/throbber-0011.png | Bin 1018 -> 1595 bytes + themes/spinner/throbber-0012.png | Bin 1004 -> 1602 bytes + themes/spinner/throbber-0013.png | Bin 0 -> 1612 bytes + themes/spinner/throbber-0014.png | Bin 0 -> 1601 bytes + themes/spinner/throbber-0015.png | Bin 0 -> 1588 bytes + themes/spinner/throbber-0016.png | Bin 0 -> 1577 bytes + themes/spinner/throbber-0017.png | Bin 0 -> 1572 bytes + themes/spinner/throbber-0018.png | Bin 0 -> 1601 bytes + themes/spinner/throbber-0019.png | Bin 0 -> 1608 bytes + themes/spinner/throbber-0020.png | Bin 0 -> 1583 bytes + themes/spinner/throbber-0021.png | Bin 0 -> 1602 bytes + themes/spinner/throbber-0022.png | Bin 0 -> 1595 bytes + themes/spinner/throbber-0023.png | Bin 0 -> 1603 bytes + themes/spinner/throbber-0024.png | Bin 0 -> 1605 bytes + themes/spinner/throbber-0025.png | Bin 0 -> 1604 bytes + themes/spinner/throbber-0026.png | Bin 0 -> 1605 bytes + themes/spinner/throbber-0027.png | Bin 0 -> 1615 bytes + themes/spinner/throbber-0028.png | Bin 0 -> 1614 bytes + themes/spinner/throbber-0029.png | Bin 0 -> 1588 bytes + themes/spinner/throbber-0030.png | Bin 0 -> 1580 bytes + 71 files changed, 302 insertions(+), 1 deletion(-) + create mode 100644 themes/spinner/lock.svg + create mode 100644 themes/spinner/spinner.blend + create mode 100644 themes/spinner/throbber-0013.png + create mode 100644 themes/spinner/throbber-0014.png + create mode 100644 themes/spinner/throbber-0015.png + create mode 100644 themes/spinner/throbber-0016.png + create mode 100644 themes/spinner/throbber-0017.png + create mode 100644 themes/spinner/throbber-0018.png + create mode 100644 themes/spinner/throbber-0019.png + create mode 100644 themes/spinner/throbber-0020.png + create mode 100644 themes/spinner/throbber-0021.png + create mode 100644 themes/spinner/throbber-0022.png + create mode 100644 themes/spinner/throbber-0023.png + create mode 100644 themes/spinner/throbber-0024.png + create mode 100644 themes/spinner/throbber-0025.png + create mode 100644 themes/spinner/throbber-0026.png + create mode 100644 themes/spinner/throbber-0027.png + create mode 100644 themes/spinner/throbber-0028.png + create mode 100644 themes/spinner/throbber-0029.png + create mode 100644 themes/spinner/throbber-0030.png + +diff --git a/themes/spinner/Makefile.am b/themes/spinner/Makefile.am +index e3102b4..2a008cb 100644 +--- a/themes/spinner/Makefile.am ++++ b/themes/spinner/Makefile.am +@@ -54,7 +54,25 @@ dist_theme_DATA = \ + throbber-0009.png \ + throbber-0010.png \ + throbber-0011.png \ +- throbber-0012.png ++ throbber-0012.png \ ++ throbber-0013.png \ ++ throbber-0014.png \ ++ throbber-0015.png \ ++ throbber-0016.png \ ++ throbber-0017.png \ ++ throbber-0018.png \ ++ throbber-0019.png \ ++ throbber-0020.png \ ++ throbber-0021.png \ ++ throbber-0022.png \ ++ throbber-0023.png \ ++ throbber-0024.png \ ++ throbber-0025.png \ ++ throbber-0026.png \ ++ throbber-0027.png \ ++ throbber-0028.png \ ++ throbber-0029.png \ ++ throbber-0030.png + + MAINTAINERCLEANFILES = Makefile.in spinner.plymouth + CLEANFILES = spinner.plymouth +diff --git a/themes/spinner/animation-0001.png b/themes/spinner/animation-0001.png +index 3819624ea4e32708e4964bd9bf052850d51cac44..6bd823976167325046fb5759916e6883936461a2 100644 +GIT binary patch +delta 1563 +zcmYL}c~H`M7{-5?faDD-w51uES?+R3nn}s7VP2UgR+M52VN!r7M6i~>z$?uR?GOv2 +z_Gr7-YCBY{1WnQ1#LlV7i=s8`K+-hZv|Zd|cIJKOnR!0XJm2@P?=bwllfn-K5Q3OZ +zLI7|?%`5~srosRKKoLdJMXNbnHh|C0;j!`CIXqq_3op!L;kR)_cmY?+%h@T)#*4Dq +zJhl)o6ma-_cHV!AV{+O2txS2hy{!r}Q$@`bv4LO$F$_;6;)6-PL}GZz@^Aui0^Iuj +zNn6NmCX~YAu>k@h{NEwIX$xqzF^9iz$;+I9#29v0i_LSN@mATayiDL9!4U|gsk>n` +z8}yukG!~oB1~T~^UZ#kX!}lc-vIIh3SCiZpK+Ob_Z6~tx!2ch`5kl@V&KYbR`FFdN +z#bpb9X_-8MO#xzXSiw#ZtdXp(BcqChpj>-mT<#Qe@z%xGJMM*&}W-jv7_u +zg`T$W57g{hP~YcJFl%_1z)zE$<{;OY4YX00Ur7^U>FHF +zFe@j^P`iB0P%AV{v-y0!rPE@uxJQwzn<|K?SD+^3gXSUfMs)YOG711Shqg +z6^+&^Q_u-UtOP!Va6uist(ImDTb=4Bf6!Y1o##I=m8f;p;=21LpE@^H<4uZ?%3KDM*1aNj +z&>oraI}TN&%|o(t_kH(Mf&K!i0srcZd569{cOE=qnK}jCMFC9lW<+?dy52 +zht9f3=Pqh%7-5dn`yyDBXG6%Ry&ZuY=rGU+4(o#rh@VZS@+a#QU#LSaoBYIIRzKc) +zyx&MXS$BP-`zF#wqCJJGn2!XLB0s|?!UGYP3&FE>MSomfycz2l<1UWu#igc{p{klO +zIONTJJjbP(G5(J$Lv;_cRNnaE=ojU0Ve!Zp+WwM0yA`wbiE%jD{jy~0ZcoCL?&W66 +zFtRy6b|pA|^TJuX5-~%ci)ysGSi>H^G;5iim>Q*TyZQBJU1$ST*<*Ku<(0(fIi@KB +z+q@e~9@Kr}Ogmz@kRJIVV^UXTGDcUhY)VjPSFI6_t+eY)i)FN)n&qS0s1^S5JVC*d +z6l2lJI|rrvO#8EbCQr1+av{S-()hI0=%kK;7Mj|$3F@VInZ3v$+wTMYR^1p;>?U+l +zEi_9rT$(u$EaRFoJakcW8v7EA3)UsJM{C!4c+w( +zC@*YNJJ-oue_{LzrOH3Q>SO%x{XwnRo2mh4RK0ve)*i=X?%(4fv3NaqDb}BBTs!Jn +zncc=J&lm)IRs|(k!zFW+OK;zFI2~W`Y{c0Zy{1(yi{jdiHFmgMC=3Cu-n$xijJ0v2nrr8B%{ZTTjwR+7N#MNsfvLJ2I +z2A*Ss?5)S*IQ5I|W!<%;ja$$!9@aAw-w#M*xbVXpD#&Elbi2g83Jn>r`sx-m&Ag6& +zlIl}<`*p@bvTO9{ZyUi1+VhG{s`*R0401sl#1o(=8KO$yLv1@NsjF)J%X@(dq8Z| +KT55e{hWsydn70i8 + +delta 980 +zcmV;_11tQi4Cx1uBYy+1Nkl1W@lHcX$V4d?vpKfj>Ka>>+m+n2K|4V7Zrp+5rx@AR +zGNF8?i|5syZGYE+>4KP*T&2HZ`;_g|d3O&9E5fybP1_5SRwQA2F-)(A{S&|nFc}Bd +zazC2L?*NOETx4b%xUaDJcc%koR3pGS+bdDDVS73Fwt$wTrtND$P10H#(r%nwip((Z +zK!U5s-e6fhDpQn~C-b87d>2>(7J;FEsiCzV92kkA4S(Rl7#_^sP_layxDkHs?S!_+ +zlCH4|-+W(}w0g)cIRRXV+%PbZAm%%DG`cXqX?s05SGcv0*kLOu#(*v0$3WRW(kv)i +z@$O-x@5tl;uqtVH-(eJ%cI$GEf@Yrs>pXC#C|4Ch&r6z@?Q!6Is=!?w+ySmh+C1v0 +z2HpsSbblDH0h_?(M(}FqQazegy^jQ(2z(`nTsSiXoKWFyuR+s11_ZOfY*9@VZTgRp +zb6*AZezzXmGqxX3GdlW4RJ700qw>J^6TsVPLO%na16L*O9Jr8Vo=;_}Rm5x@VtFag +z4saUS1|AK`zp;H;(tOtpq~_0NnW$QEErVqVSbs=k*_E`>Bl2f~b>Mg4HQrQe3r-u1KR-bs_j`x*MWC|_kdqhlJz*UhXc0~ +zb$=_RS8g(Aq8MOP(zfkqa^C`;i=m%@M{@s`?RO;I0p@If3p^c&uI|~0B()?hNxEGc +zPc=*w^}Eoqw6?PoYy%$_JLHRT?7tx==}Sp-B3}Ss1@B?t%?zc! +zx8kxx-nC}+SYiP_F5rB!%tF8a3#zl+qfPwO;ly{qry-m&bo%>imaTR^L|f@Hs(THo +z4}c#ce}#K-Y`>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdIXW;g_J3rfpa1{>5OhUYbW~|= +zWdJZRIxsLgFfckWGIh##cmMzZ2y{hQbVhPvZDjy3GSO_91poj55p+dZbVFfnWpZHv +zLt$-Ya$znoFf;tnI8y)s02OpaSaefkWo~5vVQy({VRUJ4ZXh!-W^i*L595LW000wo +zMObuFWo~3;a(`55ZDjy3Fgh?WE-*GpRQq%Q000tnMObu0d1Gv4b0AY;ZE$R5a{w_i +zIDVEGD*ylly-7qtR9Fd(mrZM)RS<@gG=wUpYS17-;zuP2tpFezr;{gd(hl67IWu$S +zo|$u=H+6Dya&ls8YimMLkHnUJU2B|nV{4wo*0>rId$SoFgL(~guf)HX&$!WOG=+@R +ztK{4`+jKRmhis_3C(#Vc0$2oxz>7dx>F@_dT(O98qz1+=kNOV66yO>VI0rrkKZ2{^ +z9@qezKz}k<_xe5q+Zs!r;c7uU3aB;`&43TUPe4-1o`eg;%#R}*+T8D207(vllVA-z +ziM0A}6Mv*O65`kzu^XjsqLW}2dRtb{t4F +zEI`{AAm9DAe +zPb;t`PV%~{?^2w^vp^oNQ(|>`del@afCP4E=LXrm#O-~szF=?&Tr0Wz_=xSLvxPjw +zuEIy&VpD*dtKcTE7zOB-(={?PASsE}L?q{)YG|H+#p!K31`u1(JH$2dVDC51GRLR4qZ( +z@%Q`E{Q~AWU@mhgcJEZ3Oe?fqfe9(Xs(uE`IuWNJe3(n%eT!h-A*E}l=^eiU-UJfc +zm{*|PT&sD27MsejH~EwQ-U6xGN`Le}J|%a0&RQSD#%;EWztw9ay-}+-7`uidT9Cj#YUg +z{RB!O=WzZ4J_06^+&D>=fknLs-U1TXrKI{Lv3uh@=Omv4{<`WDd8F;#^nV5Dun0%X +zNWW)m!lT-e6cXJD*tru?W`UEDz!B?n+!lKW7{5$zuch&HUrMV|TVGZ8Anoc~a2BXr +zsH@{NiNtnjVL~$Pb6_6Wxwd`4Y22;k>{}7t`sh9+&fTOsRue6O!{80z-a>rYcI_&W +zS77)0SAd1)hwXaE!;$>*HGlRYarPw13%BEUz}vuS*r}`JLULEf?L7lHq;=7jnQ +ztD8T?pg-OuaA?!6bl1z8ugo?oj;k4HFFQ*|+3fLE47rlJ|dY>W+}!%??x100000NkvXX +Hu0mjfH5k+} + +delta 987 +zcmV<110?*V4Dbh#BYy+8Nkl_ +zkP23$e}yYIqTnAOu3Wjan{J95#fo&HOL3)0>jhh}Hw#+Z8RwRalW8-__aZ}kP(B4520FkmlA5E)DSr=9k^xgd2CPczB-_<+ +zpaM()&7OOcK&jx~&J76VhvRt+xKU(h!Mk~2HVo_nEBzE?Lk#GK0t3^wt2=-67QD=;r}lKY-hIXwkLx` +z`C5xeD1LLvet-VXwoAZV$jp*^x%{&2gSKbl>|G?x3D*T$wr@&WmxS%bV0tOoKMAY@ +z^)O%~-dDr(JHVnOCy|*04)hYU+y{v068Lt2j-;mT%RnY+BMMSGWG=^@ +zeZaj*D$`3$r6G#L^$_CNZ-=#uz&(FcLmPcKFdk9b1b+^N;!4QMA~Gw$?|F1oAY>xK +zHId^R|5qe6c334Rfd`Vi4o)me+8kJjBD8-7&N*(KT~^pOupRPSkx6U0*E{Y7Nh#jm +zsrSj<{Q*a7P%0{6X|+$8ZH(GzLhgYANB@y4+qJ+;eGF^^mnF4!seBB0WI(^^09VU_ +zRX1UNQGc;2jSzrJct4i(6ng$EIRv#n5CAmy0KqgcohVF|H-P0~0!pJ!J+^0UFW9b( +zG!Z4`v$|Uz*nSW=9`b(!z5}inWkb17Kc9&@kVUx4yW~MPWNbx$IRsp?{f(qQ3L_9X +zKOe(Hxu<+CNxEhGSUjKaEq +znGARecr20Ml5|ee#Z-PaB%Nk}*MWTztxtio1%)N&(wD$jaehDW@~|2*Y$`q$o^*g; +zf%hbB4;W$rJ`N5EcocYiF9vKym<61c^i*xZ2Z_>bl5`39BF4H>aAdSkGvG7e)gb8S +z1^cCBWKY-WAX*bR$A7VGKWF>A?VoJF!2hvqKWqENVGU={`U_(I%XE4gBIf`A002ov +JPDHLkV1lyb#9jaZ + +diff --git a/themes/spinner/animation-0003.png b/themes/spinner/animation-0003.png +index 3f1fdcdbc5a52c2f7e8d2edd783476c233994613..205380b1ca8e000f19adb89243a71cd48bfa579b 100644 +GIT binary patch +delta 1575 +zcmYLJdpOg39RAH_E~Bh=5kt5MA0c^STZaoyVzzb@f%yoQ6!aWQ7093 +zG9*bZn_~!x+;hTCgj`$2=z6Ae&T~G`_w&5Z^SCi1TdAM`IWLh*O`s35tS*uJv<=JM7_a#`A5cU$-Cm +zBH|`_!{?Egu3h=p!d(2bw>1}KNpsSeg57@7)vQaV^~;NKn7e7kqP)!TbYm~ZIn5_f +z9$)|~gvO-$kF&s4HsU02xfSbzd6wMU^KSApeCg%s+UQ>G0ceBtkoVDGNb>aj`F_ZbayEo&Ys2sXx^}?D-)H?{P^Lw&UsJA35k^lYP2KzS5}{?L`*{d +ztg*~Km4_~WG$59qvS8_v;XMuv6A-#Ukt=MQMqt`&#co+WKfegP2s>~H!W0BbOInd+ +zw{Oe96JC7Xqln=gSm%M5Dc{(5qqiM4l(Ko9FI`^MP-RqAV>Nl}hbj0>rj?&Zd+*Jq +zsrM(EW;Yx~_BXT+m$x(>5=2ks!>I)^R(sp$mwde^P9H9}OC)0Qp~Q7|{M=aW^)=a1 +z-NZQ4a9zpW(0zp$;u9V|$m@sb62xjKk!>p|86vjMm(He)HfoIp4BLqB?6E!6ggg?f +z5Oq4r9}k^#l#hJFi=@1p2IAKEFqFuJ;az}yJV@t!j16|?o5yHxc(y)dMR-s6`8%3W +zU3c*5t)OAs!;qC7YvZegdH(Z;PD^ezO92dCoYByx9#cR}+hegM=EYeFZ`v^ofd!{s +z=Sn>sMz52K;(o7!=Kx;v%|&pdT^qax8hO(dZ~Wzsbz1s%N<_v!Qi_@Doc(vCW#9rm +zSZ{Eth9%p+|H_S~`^qQ0ZqJbSd3=Si<9YlTrZgp>uKzY6?KohJXPEVS9!D|{bIk7DD60rI39qR;KDWhc7BzN( +zXJRch?VD;~Aae@bEuej+DNbs$+`<-T^7qn`&kO~4@@`2(cm9eSVLR8Qy^5|#fL3bd +zz{hzL&9cC$+^aOgYH%ho<&A`o7=PSXGy?yM8b3sdD+M55Dx@-^EV7+~e}Muc)uM8K +z+E&FlJ$+dIvSK>9$!^@dx^GsiPHfGVbR+uB?-}{$@M{5MmpHCc78?}Oa~p&p1cVYe +TD_)@b0s;4(UOU9j!AXAu;oZ(L + +delta 983 +zcmV;|11S8r4D1JxBYy+4Nkl3NG6o#)eGmZJ4d^A-QZ7JA-MX<35Mbwp` +z3+Yx@T?vY~6S{ZpFVKbJN(9lZNNEGoUr;exm3xUbxcE7@$EM&j3AODX9pqA7bwVFlL +zJ`aIfW)z7+sehxBRLj7Lv>ADCyusa1h8o&}zYiHf}EGS5E +zv)}9scSn+r#(u3Bh5jAuB}Rh|nttqtI+=X+LZb;RMnvO~&WC`r`^=jraJQ5XtsVhH +zwoiEg0DsB_@#L2QhhbcbwCH1^|CTBpYuZ2W?4fp_f8yL<$o&shMx$0H(?l>?4)YJ!^#at;k +z9s@oF-c4tZQo-&6Ujsj@uLG+QakEF}r-1ELy?>=t)FEIiWqDj(1D5t^gZiG@P}kK> +zbyfXRJ)iF{tGCq~>Y4m)PJJ$)pHV+iKUQBUY|SsIuc{Z-m(_W7rW*wlIXGItRp1NY +z$B5Wbp9elHd^b^`YD@hrtGYcu&Z&zLv8vumB%aMF`zX6>PXOO0RBOOOhxC4wb732} +z4S)OsT+Yc^2hIUM04oXgG;l$^nout%^v82f)b<1r5f78=PHNr)-c0A)z~?#tqp-A= +zBBH5Y2QDR&XMx{<#k9YZ_0<1Pm|VS|g;WN90G-_%-*2VPHNbdEl-14PZXy +z`X2CAL^KNlSd`m{0JxDzm6P|=M+so7uuu_y9}%|>6o8076N!XYxn*Cep2f%=0ZEr`3FgS7)y3x2>k#6002ovPDHLk +FV1hEx(;ol; + +diff --git a/themes/spinner/animation-0004.png b/themes/spinner/animation-0004.png +index bfd03b445634b8cc5ec7755643ccc6f7e36c226f..6038af8bd429a28118214dd308533e60107d531a 100644 +GIT binary patch +delta 1578 +zcmYL}eKga19LIm!keD!Tq~s)2i)|Lx?m~Ge#Eq3wVly*~G22wj7+Xap6cuJBbVU{= +zd1kB2&?S0MqqN9V4|L_}X1Cqx-h1x%e81;?&inN~@6YG2@2qBnPNoG1(4y@PWB`CR +zbor?PdHKcw05~(<4>LU|Q6vB!5kn=xk5i~r0uj!j6X9eE6Hbd_QDfqm5pZS%iArL? +z88k|CG>QJ7+J;7vqQgSD-C$Lf@p6?Lfk^`F5J)r}iGwl| +zmO}?9R1$zdVE(<^^UI$4sMyLMyU+>Ca65YSPK3(SU-n#87M%e6BenNA1)$3Tf7Oa4I_LkPwg^Wj+~Z*tH~7)cB1VxI +z<~RbCrcwZDhfcg^3D2M%jpz2*}sa5t1@>3Qvo6#2o1y^SWlV7F3J&F_GZ +z8O8RUl@F|zcV);u9EYFQL@R&+pBvgCy*~QxTX*sM%gfr25JisP6FCf_a`v@#?G3ZV +zw>ubPzq9x#hOkX_&I$wqbx$Y5z_GZB(_Jq_CyI{FmHWQ;`IQcyIoMa9J=fg-oWIY? +zyVtG7f4)1*=Fkmx{w3D9@exAZ2CPnclB-KfE4LaiFzHjgc>SOCwVCO$cF{|HYT +z>K-p1SyXk-Csa|@s&pO>uN~B^mGc)# +zUI4}0&##l#5rC*5P)xE94V6AVS+@YGveVsoFvk=yodQp*p>oNK%8nMvxt-Opc;1Z8 +z5*OR$Fc2xX9M2^GoPk}S${Q4yCQkg+&ph|}TzOr^eva39yil`}mmv0dcD|{k7(z2( +ztM!0L3*1r(L$20qK+Nt**8Wzu>r7?(r7818K(W$6L-BCJ?^MAwmnatVp;EOa;|y-C +zB#@@h)`%Lef7xuk)2;Z%b%{yg*O+9FwBRN!-TV2Ao#E0|%mDF-JW$T>E1UA0V9Pcb +z3Mx5VauWHt%xH}5e1@a>=5ZReI6icL;8@24$#v4yOpt%+wK3iMW-FF1&I`X_5`-_Q +z?W{gZg(L!zT~CZ?y3?eN*!)JSur0)OwpUAhljp*~&RO+ejnkh^1dNX)$VTcLt=@q8 +z*E+_r^@l9bkZqAi{hi|O`Abw5>ChJ +z5}Q^NtS|ovr`g~`jnz6Y#rlhhhZPWJ6k-@Dk8iOyN!uPab<351B*khIJMy&N7j18w +z3l#N4^3-7Th>U5*^H40FGMF{Hl`Fk_VnrCHx-16N0xP!$GA39Qs?43%%LT+bN5n$VMt@G6l#k#8Ws4MWd6d&GvQ< +zSXIAoQSK4@6+(E(Eg3JoPBmigD!&x0eS`|VAjCtTXFkqB3~o(@+a)VAu-hD(Rbk>wia-yg{tWm!%L$2g`w5`Xovtng}lm_1n7V8hz- +z0OpKKZb01e5I|F9gH@k@xnLjiyny-%?d4gbfjCAGpF(=xXE&bvH+0+E7XSbN + +delta 991 +zcmV<510ejm4D<((BYy+CNklXOcO<>Ou9tF96#O+h=W0 +zhD6m`2R4dZGk=@?`|5AI37n5jMFaJm?ea*MEO9BRBJEMF6Syr(pC)zMv~MvaDO4Fo+y0n0(XJM3LW(^GLcLt +zdiMX2)IOq0P6Ce>WOR76ENS~dAqupA2exymYj;3}-3@ZBT;oMxqsn@qUJyhWRO?fY +zCeS(PDk?9(4m?v6&}WjqI7Y)7tJ!W#+LY~=fsaD4Zch-+kna^qzYOU7Brq2ex=-SJ +zz7 +zFW7!!2K;uXQiR~-E+raa{$wKF+28h2K +z4!DwaU?csd(>H)<`MbcYakdj8E&?9|KiYmOf`4+eF7uq($?chr55?wqddgy@4J86E +zCG&fEc7e}<4 +zd0SpA&8A9sE2@`a{g3mf5G-b^nb(lR%~?3L8VnRp*C=>PhFn{uB5Izz$eL! +zLg5;cy0+(m$AaW!p7q$@?>8Mcj?h-$DCUD3$&^AlOOaUu)`CJK<6HAMQ}NTlrE0_i +zt{0uny-iILz@OP`7USE{0qlg;2ELYbt61j4L_MWk1y0BQ{?MOhzz@LtVfN2`oHuH8 +zem+FIR}yaE03_`IU)F5@20WhMD?R6S!-xOx>o_ERB>n#P!#+Uj*1tb_+%qDUIF$eZ +N002ovPDHLkV1kE);u!z{ + +diff --git a/themes/spinner/animation-0005.png b/themes/spinner/animation-0005.png +index 16cbdce0ddb19f52c551b3f852543cef55fb862b..7a967678a0fcc44fc8238e53a5de9a88d0ff5336 100644 +GIT binary patch +delta 1608 +zcmYL}dsNbA9L9ebB9yl>Ov??moNF4OWP+OaOP*HSByW`p;ZJ1>a)fja^Cxt(sT +ztu#DSb9uqk#2loel@1lP<|dSlNv7#?tkkJ!4%>G2p7%Y^InU=g&-eS+yKXXOD%cGH +zDAu7^HUMm~+ITSFYMBiH0Dhd17)~fX4Fqs0=?oC}DV@Qf(s1ky8ZMd6!Lib^8R@4v +zDL76F$Ny_=ht2gwWX +zwg@FwRv1E-8=+%#1_%Q*eHnejolTs~FO<2o?etELa +zRlXk33QXR_PkH^)uGF77sGT>QpA-s(a1Z7SSN#uB2PbEuyhj>7k92iq_Mk7zri^)noeBsfH +z`gHjcSlH1$p3MSe=J5am@|&hu_G=JJupAUtbFVA3I0N%=sE^t_^hLMpl4XtslYf7m +zC!IcNG9~vJ+s+kR;g7?x`<XOHEfe%VMerUWvK1wgM2JJW$nW +z@WV~jN?D&DN_Ca3fwzntkHC4-5T7_+3;AvLEsPIvv^Dgk7V>GXo*S_J%#Jakp|Q@@ +znippalN}EMcCtrtc-mpe!pFG&9PgxY0#77IQ$FT)J=VnO91m68D!RSkOWZU!O(+qe +zDlL5qx*aH63RlhX(y1V?gi`5wQa7XNZzy>;F?N42YIvh-b}-3O#K +z0sS(szrM^0Qq^r*C%r15y!%c5KK%`NzXTGl0GalBQ`w9I2SZHTNmNcIOx%mCh26oF +zl8Y86S<$;@l_ehMm4cqip#JJ7ja1tl6KpSO^#b(eXaUoX8&(T*9$Sh1W?6irU0v7t +z+Yb3xl)a@||GPR8IV$_Fl8Ixn^9c7`QC}J7VsCvp3{=Vk-ESfuEZYQkdisXfD1I6Z +z??Wwcq2UIvHmAdJd4nvw(a4US=9qSUt%#lW6sGHD7+ijT)M)u4fP=L*)m~r41}@)3vg7uAQ)$ +zOKo|$XBULO7n5dPdHS3-Tf(KX$RGw%dT6bB#e}#CQN=b}+Bw(juaAq44*JnQUg7KF +zSm&*|E^pg`jypSDH#aV!4^TAo&=%;Sk&8p4G9E7~)P(iv12aN~Jnv=QkG`FS>{K0` +zI+Ap2LC|tDL2h)%ER9#9dzp10XRn{;RaDt+lfpA1lDk%T$rTC-gaygmmqE^lZf$AM=jBhl5&$M>MRaw9gFKHh=dt96hd&9)X&319hnf +zTXW(v-(>!=Nt$<-ZXNovY>ey|U2Yr0XPstpJ{3sh-@3D>6w-pFI#pYtps`rKH1mmZ +zazF?{g5Jr&HNKwhx-ok!OpM5GecZA?R;@|(nixy0&P6z~LR2sruv*vaS_KyrUJpw` +zyEd$d7ZcoVS|sSFo|i+R_x6^Yj;zoktqQrdeL +zVpN>d`l~G37`wpht24E`SKhT=u~Z2zN}SL-+cq-<^_r;;k*Vhuke>~9aM$>)4)b`E +z*pl<#Us%gTnsrC*IdO6517b>U(yP1svTv$Q{UUg^Rs6)fi17fcd|ZnDqYJVrRsZ3U +z(#8YbE~QZo{lcfW&nlZ_+s|qd4<=Py=N}Z^E{*e;-N=>J6J(i#;g1BuLyiWE11bE! +E0k~D~SpWb4 + +delta 1002 +zcmVj2TH(JM0As% +zt4?4Fr~%s(o|`-X;23bij;4Vdd2!}EdjOdCIRP8P9F)cc(6xaca9mPtg4Wc4S)Y?_ +zP&9yTpzTaDU|!NV+}!7P!{?iY1Bi$ou#!~bsCzps`?}xhXMbx{|MvtSsUqo3N#`V0 +zlXn`xZD$m&LVsy+k|dRZ1=|c@%jf#`GfA_Oj{DtvK=?ZF39t)XmGnVGT#5)JtpZ1Y +zve93+@mV`;`gzrvcYw8sP*RzNWODumW}3;2|Mq~VfsZ78Ea|C;Xaj4>?;X$m@4z4a +zzvDZA^@wOmIwa|&`J$Q!%t%T!2fPcsWgvAudTYR^z<>L8UW$n35DZjY)fRBS$9T$4 +z!`0mYZuYAaIY!O^7lBuR!*)6aoR5evCS=Jv@NnW-#?op;v_?)rM0^cg0Nw$9hjR1Fr#h6X#ce&m&?<(hI;@ +zU|rH@5wR}m&_CoEJCbHx_L3?0Pdl5pdY0{P5!mUgVH!XsQL3xJm%vXE(Ur6Syljds +z0e{ny7VWSlX(=f?z?`Jbh-gc??f@3ujy-Ca2Jnp|YXUzH@b(!8*z|_94m@I!$~La$~oCT05#SWb{W$Z&b>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdIXW;hZ+~s_8UO$Q5OhUYbW~|= +zWdJZRIxsLgFfckWHgc!4VE_OC2y{hQbVhPvZDjy3Hr4@L8~^|S5p+dZbVFfnWpZHv +zLt$-Ya$znoFf;tnI8y)s02OpaSaefkWo~5vVQy({VRUJ4ZXh!-W^i*L595LW000wo +zMObuFWo~3;a(`55ZDjy3Fgh?WE-*JfQ_JE2000tnMObu0d1Gv4b0AY;ZE$R5a{w_i +zIDVEGD*ylm21!IgR9Fd>mrZM)MHGgU*BC!bD4G^sh(;~CC~ia$q=XjSbm_-d5US`# +zTnhdH5$O+b6GTcuT#4YqML}D^;!29Of{RdMWBq8=+JB^`Z@jK~=6*8olW6t8otZgv +z=A8SSInN}So}Qkb+T7fnQk+Mk%eoy~JN4SOeq!6&wKmZgoyJi(Zw*~5*>CrlkI;{^ +zr`>ow9wB4rt>oNJx{`A1Bt|QE25tw+E#Uu<_!Ikg!CO?~3gd*7On +zM=SGBBJr2Ot5kJ1na6l0iV$Gqac~$&PBLk*Rpx#LSHUOXYj7TD;}`K1H~{9sP;N!> +z8aPY5kBL>T!r08WdH{t1-T;Tdbzu1|xtUst6JQB^3v@E(O!`404}+J$^T41(IfLR^ +z&VQ{KS1A?9g0-E#AN&QB-z)5akHGub{><24S@ZC$QDOtU39Obx?4?%jWwBQRHTx-F +zv-0|J*laD~&A_tTJdS2~0xY$`;{bgT*OI};&OZu10QN^K?p=(coXLVwwvW`c8GF~l +zL&tFLSTgtEP?CuH+U=6~3h2x0vvTi&AAdpdBm +zCm|FPb-lvwi(nBf03W84kSkTmnYIV+!e9jc0PDa$kokAuYJ%oqg0VMImFT?=wpO^> +z^I#6Qqw^sl&h-Hkywy2ZN)L3?@~zu25rZppW)UYD-53T|7YU&dRiCr% +zxm3XY?}24c_uB(LKo3}f_7J+_taaG#Cum0Pm3Hl1jH(l}T?W2>ijC-%NZ=u`2mGrf +zW5*C{bso-M>!@T_nfdBT!UxD-Ab(!RO<)#0NflA( +zbf3*RCsxv@~-ngB_|ZK|fhWoEYe7;M44@r8D1eE0IsshJQT=e6S24 +zQGaVX*GAGdv7@^5)&}wVzlzXXg^obRn%yFM`+>n%fSLJFodtV=SEKv@(yX!7?kC`S +z6<94vXtyo_#v;a)Z7(YP=8-Q@8uYygvUsmgR +zQIjmXtscnTIAZ8qa1wk2EPtbc{B3ApNlVB~75A)&b`r78{fZRNXnVa4?uI1l*i8%^ +zWkbeb_Joyiu46yVWpEELfPob=b#3!07l6dBC3s@Qzwt`+Vc@LwqA{?^?gsmSck2Bb +z%GT~`v`w-xZ}{0Gsp +z_r9Dft42=koBYy+bNklZ&WMgZ6ZIzStE +zP13UmNX-;*%!cI@Q5L}0zzusc2fQh%HsYP*j#xM?o23Cn#694BpapCLSAZ9Xcs~P7 +zC*I#3mjC+zNPn7?bXC&jzSjB@_{wK9;4MkhK+j&rzptwbob_aDOA|n(jU#GRoK8dJp>Gq+93< +z;A7x1pcWC|4&jXq*aA+u8zy{LI5Mliojf`*;F62Ls}6O|XKKJ35%J9dSuzi~5-w-~ +zD~?<-5k0$RD(8VB*oXiHX>ppBwYaB296}Wo&%@?Yrs1Zu{fsjBft{{dK2!L +z-!m7-x*4q3Co=iL$r1smrbJb+U(HkSlv9wZn+)jJi1?{w3Z{Ug1>0M8eCP#}lFmwc +zq+}6Jdo~zRJ#L7WOHQ-T)d4CI70oEg;H*z46v;bTL9`|1@_jGNH +z0Q78Jzyqe@mZar~Xb+5ltM)SRq>XLca1;0$_zsu_I+p1o&wCcFIa7MpSJ11#QZCbJ +z1kRfEc02)X12=*1BjT>4(+=ypq?-}ZG3bha*S%jc<^CmU%|K@Is<&jf4dgxmnGx;+ +zi+`SkZbd{-Qo}O3ZBH_j%)C9nWiRuBo0YU`Mf}6ne$u3*wB1txza-xO84)|a91Ba% +z@ohg3C8O7r`MzUWp8!rtx^4b%N!oNIx@r4mi3oL^>;84Zvf457<%sAS*nfl-5t6jz +zNabVsjF}YYygAlP=p4@{lTXV}(aKphXK}z2qr_;`R6Of8+I4!Che@i(w-p1Hb3T0- +z0Nq5}oBcgp0HW=%SNaRC%$HHqm+Terb`*Ra-EpCINAZ0&!keCHc+gsRimEo2zSkZ0 +mIrhJN9Vg6JG0&^a9sdBIiOnoi0>*>@0000>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdIXW;hZ+~s_8UO$Q5OhUYbW~|= +zWdJZRIxsLgFfckWHwB=B_W%F@2y{hQbVhPvZDjy3H=zb>iU0rr5p+dZbVFfnWpZHv +zLt$-Ya$znoFf;tnI8y)s02OpaSaefkWo~5vVQy({VRUJ4ZXh!-W^i*L595LW000wo +zMObuFWo~3;a(`55ZDjy3Fgh?WE-*JfQ_JE2000tnMObu0d1Gv4b0AY;ZE$R5a{w_i +zIDVEGD*ylm8c9S!R9FdxmQ9P?MG%K~#?|$O7>SDpGzJNxC&@)r@Q{EYdeMV|2k{`H +z2QPjBk6t_k4*?GzL=Xf)#V??s_=cd6gBm0*YE%q~#($T%?q;3!d20GM(=$6J1;6R) +z>Z-1nuI~Q~27|%U_V)IYBp-?_^M360l&jnC6Wv~~*NJ@MLqVW%6#9)K%ZTyNb;sED +zd}Pt@=QA=li9kMNbo27jXtcumjo>zL09*&ogEL?ad<{+xhr^BD{v!O&Bj^p-a0$n& +z40nJ>z<=#v54a3m3arEk{0j`^3-C7hfCNr6?np$L)cni_5a*6y89g084h{k5I=iCr +z1~5+v<`WiP1Rqh6t?WCmOpuEMAZwjG3LXP{!8xETnO_AjRWFR$9lvLh909L^bNCwR +zPck5BVE`=dX6ybA}7jI)AG#gBR?LdCiL6sJh79{C;p3_!X#g +zIq-}vulz3HW>&?~0RNAyn#nv#RhN@_lqZ4&z`~v2fu>-y>GaPw8r)yNMmq+60IuHv +z4ueC$hMgyG&$Hkw@NW8{jnf`LU}nz&ubJ1&=tau@IsB{OI5%hM7NQL{p0#3(fS%x#Q5}wZ~;FYloX0O4djB$*toI6U&v!U~j|CZ@f;D0_~ +zf**tTTX3-Bm#r9n%+|(BY}tw5YHFX|n* +z*00M;8EY~(k4-gU>w%xp@d&)5o`1g;@mOvKi=J1+Q%XjCV7*MutWB-jL)0pu)9-*4 +zup(AR`0+VNkkzosG#SK6<{2Y*j1BwDRK>MAf?~$k#H@I}-vgV` +z4bK7}k-veD()D03Fk6qv)RJsD7~ZT41YLOCvdf^h{LL#>qeF!yh_8@quS +z8L&?4!^G(KLNYi5UIPZ5ihsbCUA+TNbl&?^u_#eFaw~NB8Tb*%TXvsngIEFD=}?)G +zJJ<1UV6{9J$!6U25gJd&jVGUk8ONC?G8emGbYQvnfh&PzKwjCafxTgHI;b;el;rdI +z_TO*`<0Jbkua#aw&CKOh2L4wtGlTIMtb$HFdxMdDx;-8%q4Rb2v1j=GOvCZ3PTOrv|g*ypa{fsgs_sh;%BXjN#|!7+3E^-p`dqUYoW3 +wBFp+@?3Iiv6obsOb}@PMw2Q8?@Yyfpf4bee>+G&nRsaA107*qoM6N<$f`KpbcK`qY + +delta 985 +zcmV;~119`}4eke!BYy+6Nklo+~HUJ9B5I +z3(sag&V9e0_dU;ZE_o +z94N2;G;qdy0)}(90JsVKYDX);N0JsQY*vBHNgcR|`4WhThrs8+K5zuQ23#&wpZ2~3 +zw36!YN5pgpNPlWbdPCBNq{ZZ!8^E{zo&g_wf8^ikkgeHg4d?;=#DBePFw-G?1-NF% +zo07hWh?^0Cr0c+|hWBOQZQvW=17I2WLDCX%+La#xI}xD-nKfXkIGAYy3&635<|*Ks +zq+7sO5%HU(uYnI;*#cNw_iGo2eW +zJV-ZyFMSjn5pin_Z#132!2HkwPB~}|cm(VMTRA#W;^cYY9pD9E(GDBHClT@Elq}gc +zigFAYxt)j@OeCU+_*v2)z)Mc#IpA-@JMGF_nVCnnfnHwqiFg&2G@QtTi1=wnt@yVc +zla68}uzz1n5{d-6-y`DBIR&fZlTo(%5z!Ax&j42o?Z^|TnaQq4#MX?#7l3ES=uNmy +zn{@~11I>ip(q0`+AzI@|E=97qG9b%aa0z&_5Ik49dl7MW&K4}2sG>x~2B!Fl4(gIt +zCAH=V-jvjqG+A#ZI9LZRd5HSJFU2!F!M0`F41ahC+z0j}VpMq{k+cF_u>2kyreQ&J +zs@5oZe#s}SC+R;#lu~g9JZ-_rhi~Z5F0kc(9*;x9m5*$*>WfJ|VZ>wm+RnKlMc}NB +z9y#zZrB6xcJg7rSwZm76Moo=h@qqt7gHm(olttmE$k)!yR*I*)Jv{elgK0A +z&lzy7>b;=qR@_R&>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdIXW;hZ+~s_8UO$Q5OhUYbW~|= +zWdJZRIxsLgFfckWIF%osW&i*H2y{hQbVhPvZDjy3I5D|#8vpg3by_Q +zEk%Vif|Xzyu~HOaEX2k_0^%hGrxBykpfQ&jCpqKu?0>W0Z`S$d#0Br{wbx#I-M@Wi +zadB~RVQXt^L6Q$emVI5To^o}oo#F04DJVafg8Xjum-*ZXNlrs9IzjpU5DS{x +zpJYJN+yFS-!`Um~DWC&OYe4d57spn}>~8|sqknY{-UDw^36q#1FSj0*$aM5Hcm$Y% +z&UI+UQk +zbbb#w1`J$&OeXLu_z|q?Q-6Kko&f|7*=t}gunju%8&Bzffd3Gj0aq|G;m%TD{R$2P +zTYvWga6hK65WI~3c>|DIN!)0N{SmMN_5-uih|xY!Aj1<@&1Li +z7PKMk8kYTTpwn}}j4py-z(*LDADqiqDu0O>h;wrS{9biB?{FVfU$g*ZpaVeX%FNnF +z#?^tlV1`|HOqnbdQ6=qK>G%!nN9hw??#&*F9t?ESw$$7by0|3*d|aj5a`V25LL +zhakCQ1-}I2HuxDo$oX`JG;A~o9kxG#&h3>Cjse)yMse(B%qKw43ctp-&5iO-I)7g8 +zKBq0{2M(TxM(hLR-T?F=tDsh)wI&s?92)g|mUVb;0|sIVJ>RRc +z=W$e>SI6iM)b;&YegmOSkAYvo``}FOVQcyzkmUm$JPRb-k!tvQeU>0ROd#Q1rS5bG +zuK@enYy+O`mA4`6B{n)0d=D&{ynl0W5bOc}OUcMJfm9hz9pv_URzvL}>Jd47Yry{N +zIDIpqL!f1z>|Mjxv$1>}jOQWG%(6vH5IX%HI0rg+`W+01@lmRDAM0GwP|Y?@$H9y* +zd)|hy9M}eb1C%=hegy_8e~2J_L{5W^9&oEdZz1A^W#pR)MnQs+m&SX7*nj?niVy-I*k&Hwxw|ZLj_78Iy(!@RtJ9rKTTWX +zqvDh8-r=-82HG66O5`x{7gE_=szISQt$=HY`fKiD@)1+umw^dwQa_J0z7i`X|nazM@0UrF0y$^G@TLh=TqW51Zta%@K6nncUG +zvp2cOszDuDZpppb*?0d-a%c^}VU0YWuR+_2%{bGpeC*3N?^S_ILzMC=_dtA%_JOpd +z2IEZle%JzS`si%34z}VnGWRV2|77D~_^ir8%tp$u$X`tRF6qoRtV`2AGjBAuQTO3z +zD&VagxJvV?Q_re?biEgyv5l(J&io^#64Twb +Q!2kdN07*qoM6N<$f+yhGH~;_u + +delta 982 +zcmV;{11bFC4C@DwBYy+3Nkl)?WJ<9%4v(L(*yfk0I%8N#97iEa~-m<5VVWvVS1yO-b)cS}sh#1S|j> +zz-xu~7A2jN^ns+txIL;90KN*G2aW(+z=gv6(4Qzg{{;95SOgA%i*scF==pO1yd~-R +zDX7^7&KcN!pglJQz)!$$4z>*JNU9aq6i@%5X{iC1fiLF<5E1u)FMuv^&%Eb+%b$Ni +zNIDC=W55DFi+_meG9alY>5Qc33a9)Y_%7jkN7917SAYx{N?HLvHt&xZ_@yL%Rnk#O +zk4nl$iSSwAJ#TVD(pM4jOGF^)5^x4s2TlRoz}LWzfn4>oZO7UJK8=XJH*Wx&1{coG +zei1-s#bOTMmvjpFHX^P|x&oZFs5%kxgQWAoN<>_h^nbF09s@3T{)oRfl57hYJRl%1 +zeg!yf!DUY6A@HM5yag;o#Lp!a@S;z81y}{vEJk^+zCr#K5gMgnB%J_W0G={{Do_VL +zkBDEVbjcOqnPg)*b2lR5V5|{E#GjJ(fTs=Qgezb$gTwZ{KC_QBfp&iCaWz~#NzIu! +zjEFyG?0*$?^WKYyQt)~GZkV(DStQ_YM#QZ-8`i3oKWcO$qFeQ%lZi?r`C9>2CG{fW +z?u?t)fa4|oCV(|b*Q@sHyI!af3kQ>^Dj8XlNtMi3B2n#9NuX{-bmydC*(E({902V} +zBFxNTzgRv~im>Jb49AMFBtUAPec)O|^k(pZCx4yh1K=ibdsG=#N4&gb&tFM|S)JnY +zQoN{S=DrR*0W>5vi-$<9xB@)pa;z5Y^OntI2^f^oVb1f5$hxh#7^?*|b8kpb)$mJc +znr`RzDQO*e92iKt77;y{TIT=jHm!=iV^31cjjiE~WTv%O)(!KFbb-HZ7ILH7Oz6n$ +zAAiSzko3EO=aj8UY8lwB0c<*h|LKM)fR@uY0PYm*^OzM)a!1_q`{7b+damy0o04`d +zytbq}1~LRX4*>9n`z6)TNT_K>#86Ts{XLwirqv(TQrk3^#-H@Npz73B9JD>*mYdJ# +z4!DtCzvj6WFDK39z6Gf((^mA1k=VJp=(R2><{907*qoM6N<$ +Ef@@9F@Bjb+ + +diff --git a/themes/spinner/animation-0009.png b/themes/spinner/animation-0009.png +index c39a878f1197acdfa1dd6faa58bf3daed5234d2c..3e79b9bcdd7c337bb0de3db1fa15ea8c05e38917 100644 +GIT binary patch +delta 1624 +zcmV-e2B-P&2j~otBYyx1a7bBm000XU000XU0RWnu7ytkOKXgS{bVg}xWdJW|Z*65S +zYH4k4VPh|Ia$_%NX>>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdIXW;hZ+~s_8UO$Q5OhUYbW~|= +zWdJZRIxsLgFfckWIpP?u@Bjb+2y{hQbVhPvZDjy3IYz!gjQ{`u5p+dZbVFfnWpZHv +zLt$-Ya$znoFf;tnI8y)s02OpaSaefkWo~5vVQy({VRUJ4ZXh!-W^i*L595LW000wo +zMObuFWo~3;a(`55ZDjy3Fgh?WE-*JfQ_JE2000tnMObu0d1Gv4b0AY;ZE$R5a{w_i +zIDVEGD*ylm07*naR9FdpmOYDIRTPGEXQIZB7~=;HG8Pe0K`>yaNI(R!62UTsAQo2s +z2rC;K(Mlmjen1Mr#-J#%5gQ9dMJEzOBk?1~WE^MA9e@n~J(24ch1c!m; +zv=Uq3WAFnoIQLfU1b7PggiOhKc@=yIKGmoG8sD7(1h=E`3eZS0GON3R0h|Z#g9~5- +zBY$)5EH!Q$R>8~QMUW?hgd@ +zt7)3K28`ax_l2@yv`w#g)|^!Z`}0?enL9(=x=fJcLmVcEhmAq!aXb?IBK2{E#q;qi%WnZm><3;NP=$Y&0!1g&)Q-AWQ +zD(Yvzj2$|;mwf*HxNNroN2QNLxky#e@7Ip{v;wO5loj;>C~)`=0f)lNV%cosK;Aod +zpEGm^YBHTqeWwNU=f8GP`4a&+qV5KlP+|$T@)i9vw$bSWdOx!P99e9zprr9n!s~O0Fk&(p~hJ24pcLM)x*b=MY2g?tPnM*pf +zN(Nh88#+#w{TiL3=(rh0tbf1@ZO|M@Gj;}~!@%U%$=3Mousu37fSLoiL2cup{-|gx&a#eu<>kFs;PP<6waUQk?6)r@ +z+n|$F&ySbi3}?eYoE2>t&|oW0BXeH?_>+x?S%)hNQC=&cBU@lFK2afQgAU7iYvEuE +zc~NgO>rn;N%7I*3RGt2;*N?9EqBFJ8>(rS)QYx{t+jX3M3{DM9<=MxkT-o$q?EVjP +WakOlGyGi)~0000`_PTC{cLyO +zN>8@*?ma)g=X<{QJa~j9X;ad9{*NW;MM7PJc?0HY8n=R33SK5hwvC +zf#*ifl_g!1^oFGBG#{m$0G|P_0cGGZ;QP@S{fw@6fwzDa;1KwFAq0Q};Gv&QN$18m +z4?kJJBABk6D~;nq@?61GkLA&?uDrKY-#t$5jE|cHPUscfb#c{ko*r +zCA}l5HjacRfO9tZP|_V>HzELj0nYl}lfVYB1zdF!TfimYviIx)pGQRB&R+rE1FpD~ +z2f$aO0fb)^T)&IJx}=?m*p>7f@B+{R9z?_~N!Ni&M1S0rwBdKB?R-np1>k+)RiI)& +zeV}=yc8;9c2M*>KU +zRDm_1>L5zMap2d8*qu=&Uj{xiPmcNbTj1k}xG`0TBBCv+1JoQy#jy3~P}sXJ$0?)n +z5%7(>>VK%eoJkE@h0d+m48KNLmG+ +zo`Oan*p7(aoX(ek3sdf!0q}bv5tvB`6->r?S23r=MW7f7RFw%EJM-2*L80Ojj9Xox +zl}Ey&xzUe^?wroc){{;|45yNCf`OXbXk}g=7=O{H40G2)){F?{4kU)H4y-yrd0%NB +z0L&d(#LfauNsZAYVx;F!TW(9quyF|72O8$dU{X1p`OtUDnq@h))d%)~Mnnuo5y+G; +zg=rtS7ZF`ab>InLC}}$)dTzC%{~tH(1)up-(!OohGS>UP={b-i0TdEM+Q45HAxT>H +z!GG|XqB(NLncq%e2RJEd&w=eEvb^Gb!*LwgPv*Ez29ejg8I7awx?I`$s`bC;nlAy5 +zOS)s?HGRLV+Ij0g0odXF3EfajO4Eplp`_7EOp+QNSh72$=EO4ldvkvm7`kloZKlJ- +znALQ4+5WY>AvSL+t|ph%p~IcfuuLfxl&Fx!*Rs)YI%Olv82ijHQ|*|ca;GgMn;IalQqC7=U%ERKl5;V^gt5{GkjbaBPvIUwt^wKjy9 +z3k5S+bO4KW{dsX%(JOm%Ez|$83ol9waafd45vTP`=e&(tix&m_6f_n~_@*QVX`%TX +z42q$%=|B{l!HN;A`Cu8 +z9J^!kT@TE(asIf_JA@5wyGk>)>pEIq?ng30?fCtu|5n?@_WXvSsvdCEzl`8~y|46L +zb#?WqN7Akk?MX~Z3R%%np|~+Btho^JvUj^6Sw^w{e4@%WZG_S$D;Vo3t#U4F?I@Ry +zoZ)dwm@jO4oore0=;%~5}D+fJl9a4$KkZcbVif%mfkp>7j2)}bL{&2U+ +zidM8pQ$KY3vc7lD+B`rJW{-iCzJd$XCMR_Q4(VGSZ`n|6YbiEH4^wV +zx7GnLUO%<3Z?zgaX=o|0^TOYuT^TDy5iE!9BT2Ug&D7wc!p`H^7e<#hN79Nuts)v3 +z>jq50mC8u3A<~8Wm;BE3Z`XY)xcZFWkdI?y8p=gMg<_ +zc)z&QIMX35B>MeE)EC&KvH01A@78rL5dA0b6R2g`8-my+35nKX-MUoP@h4KV*moW< +z0d4w<3M}}Gq(*7b_Wd_~+M$^{)Y&870ulIWjJ)A(DI|QVPhoSbf2d7plLAbP+jL3# +zd=CzXggvg@Hj}Sd_h~*AF%kOJI;AScS!!qUHxh3@>&~?$7PylOL)1H4pS!It+p;8# +z)I*iJPuonUyLl%%GUIcYJ~G=#$t)tmYV~^1sikw{yR3O~y*KR=bP+`gv7cQM5qLQ? +zmy(^_`jy|IBvS_~-^g1ol5W<0cgTkKn*aedWBdB>lg|$t^0*ny(4np5+Y?{J&~~TE +znf(Q83R7MhZW@TBHf}&v?no<-kSOsR|Kw7#Zhf@HY{`NsI7idQF{FFDDlUd8RXagv +zmGP-!Tc0x3E<NB&Ikd+- +zCBwt6gSUIL-n_b%D~ZDJaDUJKAn@rwxu&Yji@pQ$u4H%{@`cTeOkOj9g}C}v#)}U& +z$Y$63t#w>h3PXjbsf^;zZ~H2IV`Y2zI(R4}wzeN}vMB#tdIfa3#rmpN;`fDKiuw*}}P)>T%Py=+JeY>O3w%_WB|D!?&= +z__p6dKU#51_n!0?HNl%GVZDpzKVlF+FV~znbbfdW8?gqMKh>I9sH`woGft(q7(JBC +z?~4TYr;wb(47<>)awMa|mT@v6@4*5!#&Mc2H%gx!^m8SYE7~(^_bSljy@B&;nrWWU +zyo+zHZnjW5CNCa&NWKQ@3eUiTH1XHQi}6lvHmm9dDI5;ZwA$?PXv9e=c`ZRdyl=Cw +zl>du)Ve}=;xh5}*=TE0rPV{m_7*fO32deaj%VMAOr_T~;1{q_YB#qwt +z$qcYNN&bX&tPqD_z}+4MPLOJoUMHWPxqH?Du`E5-{UzT;=CpLUVN;Fg&9;$ech{*K +svUj9cZsJXVpWia61YnNiOIsz1a>Jly)nwI3tk@4MZnnnV@-3whkor2qf` + +delta 961 +zcmV;y13vuC4AuvbBYy*(Nklx5^w}2LK33v!RS~!4+$bk+pGz#m$Rtf$z`|H5_wj03D5iuJA +zCR|HWGszO*5P#?!g<*n%QX3}QuIpY0egS?>?6)NCO8QLF+Bgz6O*jFkk~$I5j|e2~ +zo9&rVxC}f6-m|mEz+1pOws{ELj);++-vqt@t^>-+6VR{Vj!t!_)mc6 +z5%G_tJ3u`mo=Ca|oH@X|5%Gtl9pFpzqDVmI)_>baQhyED1~%N^#To)#-~f0D$Rgsn +zq64lufIoq+fRBM!y40eT(iJzZvvxPvro>x>m(jcIvaj@-I+2*YLBXF +zK0^?n0)HQr2p&aABH}?vY5+S4L(2gUfxUVG(G?$x}=A +z&n?Bz%#&di63#sL=-#T3^&ZeE232_)ZkBBJJd92yZ33?VxuiW0sA4vpnI{G8orw6` +z18mcRl-b|5hgP>7K+P}Zo>m7IAxT>H!J>yVi`Q$;{E16dz`h}==OF*`eWKu#-1;wY +zpnqrQBe&it+1pOuJ@YlKojhA}i3aZbCE&88rzT$C^QCDYM=u0mhuw;9XePSwEFyAA +zBzHoLRL6uXW=PYQlS=#3z6**wLZOm<|EktuvLC>fZ7h5%ZX`qM+~m@PODxv-qI|2i +zv2XyXv+gWH)XOjOWpw1r=O`u43_40$5HhbgH(LPyF6d4OZo?=JO6Nus&iy}M +j$BFV~Kz|Z9Car$~V5_=_>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdIXW;hZ+~s_8UO$Q5OhUYbW~|= +zWdJZRIxsLgFfckXG4k2y{hQbVhPvZDjy4F;RZ_{r~^~5p+dZbVFfnWpZHv +zLt$-Ya$znoFf;tnI8y)s02OpaSaefkWo~5vVQy({VRUJ4ZXh!-W^i*L595LW000wo +zMObuFWo~3;a(`55ZDjy3Fgh?WE-*GpRQq%Q000tnMObu0d1Gv4b0AY;ZE$R5a{w_i +zIDVEGD*yll?MXyIR9Fdpmd}fpRTRf(UPrC0m`JCxgvb(uYGXkgA#l;6Wt&{~2eqzs +z;3jA(NVE%ESYS~?V3c8+8JVR0aK?GxKA-#E@8fx&d4Kc3ch0%@oO^!V^W1kE(eoIMI&1TO&B`@n9n +z3)}_XpMME{1SsqrM^NJ|qy +zsiPC%DDbYe_M}{=w%(v7CEo(sGq{ul-2Vi;M}H@7s;Fc;+Z~n6Z0k$ldGH|ckoXsv +zghQxP&sw$nCLug)GLo{%$WMTibai(sXWeKm8%coOXTfX006LR<1>3-YPW*Y`)c+0a +z)_!2Oj)5nDiMHb4lHGU*d<#A^rt#!!5nKSB9RUgMK`ZzR80;eW68s8goSkwefzGgZ +z5P!T4-U5<|gzV6}*nh{l-`q6z#J~yydIqF|e~_)(ip3Y;40cz+b{-sg$0qy|HXneG +zfC-Pu;$AhDaivKX+>g~i*LLTDy?+z%zAu1t*m?y+`#c+pL-y>}hu~A-`AQD$oBa!G +zNu+%msoVfgxlX))E58iBp*n|c2(DZyg@3q*t<|3bt<~-oI*fckd(je5fK0$3_Qv2Q +zq5KoLnX5u>2m2Y9t&*zm-S`>R*Uez@&tohP(S>&X?N8UQ!<}}?)|rfzIB;7DsPi6R +zM_}w)a&pMm&;;g}?arM1G&h_Zmu&{f#z_}`?^Z9FL`wwYc9#jPax5o7b;>=!FMllK +zPnBd~i*1w{NZZ}CYO8nPJUp{q@P*bVpj?a-(jID6&c)%cz7lt({u~>u4H{fooypv_ +z8UrLy4PFCdJ5W#h02@QFt~9AzIaif__fEaTml=?+>ny=pH_}0pQdjjoK_~ka;MG>r +z=e3+^PcaKCyp6(yeCz)J8k(&?v43`>y#es0l#0SJIs}e^dymEZvsAB{Fg)*RX5Hg@^Te+V^b`fAWXV4{`@qeqj05a5w +zjeg+oxmv{F$jniA;0o}b)cGzL{2K7L!iUPXK29QgKz+!DLF@s}Vs{!iPx|;Cybts_ +z5XsNm7EU6z{b^u8Uo&4W9i$WLO;q?xC?Ci|M!pWCH1SK|20Dkkk#^u-0#R5QvIm_5 +z2hnR$_ONhRP2>&en +zzQ$yNQsMKBWTY|&;Z~VXQB}we>?MJGw%H%fy77PAh=27hda|jCcytfgDL*Zf$qcli +zRbS61XwFw%-OD-ji!%^Kcn-5;43qBpFhcuAlw64eU +zxQO^^4n{uWZ_o`w??hckme-*7+mD?#3FcnpdRF;Ar8mFxog2k^00000NkvXXu0mjf +D4qxQ2 + +delta 967 +zcmV;&133KE4BQ8hBYy*10r7{z~QGHG5W)3m9nBvxBcK~pNIbfq97 +z)r~7ZgYK)}zz@-d-$C$YBZy1IMXe|zb)kmV8l_D_lF7tLnwjI~O!+frUNZ5*C1LLU +zKdo&c)AT}j*H*r^V2QUU4-w0|L~T|A!2?~}l3V7oY1 +z1)c(?fZrq?j1@qfFUQe3aDT)~z6iXKAOUXob5I!)KnHOC&fA_H=G^vq;OW>Fa4^Wh +zumGCCehgKC1=|`D#B)FmI0gI(+#5RpNu89wol4B5Esqk8b0zx=z>~m4Z2u@}f206x +zS8UJQt_OVGtA7FP7LLj)sB6RaB(MTZ=l&g7E$r89zij)}a&)Ul0M0% +znzru%lad;?C-Q6>xGCxH0Po$fO@9>qJo~ND}ecC|{R|ssk``)O8T>9e;*~SAZ{Ve2la23?V7ec%J&r-JO7{nW6Y5;nV9o@dM9bt0vA(yoR4wx0V^R1aV$2{<;+0B@$MUrBm6 +z(sw~JT`t~Tle812dlZ1A2YGj?sKi>g*JJI3#g5QzO(XXp73^K#Dks^B=Zd}^29O@G +z!~$&QT^H-y*a373tZa=UNO@L9s)_~yV!;r0> +pbL|1={-3Yog83?0T0D-8e*r5zwTU=bFsT3l002ovPDHLkV1mQg+sps} + +diff --git a/themes/spinner/animation-0012.png b/themes/spinner/animation-0012.png +index a0412479f0ba3442324e1cbed1e5e057eeffaeec..cdefdc78205460aac77e50eed3ac35b2f2c15456 100644 +GIT binary patch +delta 1603 +zcmV-J2E6&>2h$9YBYyx1a7bBm000XU000XU0RWnu7ytkOKXgS{bVg}xWdJW|Z*65S +zYH4k4VPh|Ia$_%NX>>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdIXW;hZ+~s_8UO$Q5OhUYbW~|= +zWdJZRIxsLgFfckXGHlUCIRF3v2y{hQbVhPvZDjy4GRSwSL;wH)5p+dZbVFfnWpZHv +zLt$-Ya$znoFf;tnI8y)s02OpaSaefkWo~5vVQy({VRUJ4ZXh!-W^i*L595LW000wo +zMObuFWo~3;a(`55ZDjy3Fgh?WE-*JfQ_JE2000tnMObu0d1Gv4b0AY;ZE$R5a{w_i +zIDVEGD*yll>q$gGR9FdxmP>DyRTPHl4N$J4l|%-DBa9^Kz&L{eGb0nH#((C(p~QiP +zkuiigGBIKxG~N;!85_Vxyx@hFp87od+wbZ6PLJtI-hb}3*IxIvzkRx}u&{7oXJ_Yt +zBp-?_`?^*=H(XDz_C-Np!IRg2r=w8ZsJ%e9FKFOJSlgVTen#fm*-8@+);_tY*+hz_`M^j1~{~`BP{2@Yv2ONtd#!?T$g}!3)}%~ +z6!wRLd4B~e?{UTnB)BVBMDHxP*jIyiVUB?(U>VqjgWxG(`<1)D3qApBbYv@j*^h|i +z<|jbaI(ZYk0#1R$;2&W7{{$z&W3UQL)Zpsm4#;nVkHIzYm{`+0V?xs01US?Z;nNoG6BpeEy-P3QzLn2tKSAbpk4tx)O0XuO-Wd{2K +zoPP#afOp5F^e1^QOzK_m4Y&_l=NAoZ5(4tucIG-Xph7!gr8mJ>=-mU`^}&$`cIYSY +zKDZ7lS&U?N-!PVOC110)p$g}<3Up-a46c^zkKi`CCe@Nn;_fB)CW4OkSHTTn<*hPS +z$xrrjk2Tmd@$knMWq!`r_WQZnt{-sj{C}sxM0ML8Sz% +ze9n{=Ui&pL4BNwj?DT2J<+gnV{T4ePXKVtt+dHALuV15H*<8K^9$HHP$Pwtvpno9) +z+wDee1f4ffs(1A=c@MUFg3WOP)m45rxo%VaFUqyitS1O*Bab? +z&d{AD--Q~(bAA67n|kQYw+kjAnSig@aX0g-OfsI;^PZsh=>o_bpc_fQ_hXZX$gFI+ +z33*F>-`i)$dW?3~86w(CsmQhSXMfOo9n^O~L+`~s8L2%)J!9u>5-K-s +z_4OHWv~6tl4k)wrDjC>M(w}0-BQ4?lh@BwV)Gn2)(35anZ-e~5=uzlfn15S&0~Gq= +zHPV=aO#;{+A0>a3bmHZd;!qpEj+U5qCL#6J_WOp+l9&4TK&_tkG?Id6svqm+XxGZC=V +zu@c?7R=zpyf2yCzt1kTiXBov9S`9de+z~|FR?qg6Rh{s8ibu|}Q9LOWp4K~xI_s#6 +z*63#)9kNNX(=rrP{?KqRnOwbD< +z!@c)?KF)KV^E?-haoKLzo;i*U9mDxNuncs8bxG}U?9`8NQhx)QKn>WI)F~d%CV@II +z2ekW~n*g?Y&J79w~Nf?fce0? +zkO11bKU>(mA<1$6Fz^iUATSjl*Lwq~6}m73EZc4YwA+kLY2v6iC=lKD!6)sHuLw}9_qGNkD@3fQgnZn+52)zPa +ztGJ;7ZL}0fRRppoX=g~4JPo{%jHeU8&%ig5em_)*0_UC7c`dw;UODQW-EVHC2=4tS?E?x3-KE<8|?Z1sOd(hsuT08Sr*Mh94x +zv^S#jMStLpw5odos6|`eug5_*d~hFxG=yaLyBgs@vry8~ZXKAbO3(=F`%St#qt?Gb +z;pw!adM2lVUx06qGEf_L>#_Z~?eo!w(Kn(DmZgw$Bp%p454;)mTLC@>zV6oz^#N+O +zSZIGWiYG<@U_Zg%O$p8dS8abJ>8HL3q~}kCwST=*ya{ZCCml(<12VsmA+-v;2D}_8 +zu8{i^_yYK#;#C>ILNN_12`-1xN#KDndR5Y%?a2(IJ=@O$mxJoNk}lbP0(cd;kaFzj +z`9(=rdKZ#f(ROWM9r!KIr-1v)azwly1s<_I9j?sB!7H}UO1cib4P4Clt>(+_plR3) +z;eXntZrff?X)2xnwOBlrWpx+$5O^xJ{}gzuB3=-FJ|(&;>EIp&By}WhW(n!`bVD;G +zF|g4yRGbmL1H2RT47>!qSlHi^^qHiuD(6S;gvE|fm8X@zLD%QNmFxsF!0Rd1*jsU< +z7*Yozqz_qQ0p809Ht<}D!Z-nx&Nc_NUq??6-vOT#glmueX%@oV2r+j?P}57m_t~hw +w{I5Pv8^A+Bab42(|N3=Y1X0V<;&E*J4UvJL%3!$b{r~^~07*qoM6N<$f|xMU5dZ)H + +diff --git a/themes/spinner/animation-0013.png b/themes/spinner/animation-0013.png +index db1f1205099e43dd5ed4fa8b6fb359bb7f57f731..de5aa6ec0cd0e46ab5e254855ce0ae1f01bbe6e8 100644 +GIT binary patch +delta 1601 +zcmYL}dpOg39LImVu!cx9_iMtjvRfBhwQegdQ%-ZT3N^OecC*dolDRyyQ*=2l6-vda +zh*-!7wb2v0kRI2LW*upCgd&$hXX-i6`99z8^M0Q9>;1expTE8>unvO@tHl7ExA(9B +z0Q60k9tg<2Vh#YnHsNlXa8DSE37|r`Y$hr^jLoJ8qXhh5R7jW*#bd>=xlzJUlrWUZ +zW(rUOUKoeNHbt +z4Xs!T`G&EX02)pBc`-PvZc(|GE&H(xpRR=%+#_DjE3Id|C{Aul&&- +z6U<@??5T7%Ppbe1>ydEL90>r>5i)6qFAXla_#)!!Zc}My-umvZ9j}e<6dYRnV8vP; +z$CwW5~3k0WvGmh#e1c1!VR3 +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 +z1N5>+SnO;7A`5c797<2d{!@ +z^TUS=vQ&;8(5cR#8a%j*T!pPPp{3xi +zIb-D~z?;BdNUO*$o>9h(^X-x}#Ds3$(}sCQ#M09)q_eJs;A?ajPx#07*qoM6N<$fk + +delta 959 +zcmV;w13>)J4AcjZBYy*%Nkl_bp%+=vCy} +zK;sm-@g0cqNAr9E*gVb8Q{FucEX6?sdvyjHBODk;fq@0vvty)YHjWq04bS?1lmk7W +zpXVm96nM`%i}|*Y?@jGMa<^4NVlKI@i@sgC-#IJ)|8l^#Y%kbuSEB3y-Q-gh6pDA) +zZUD=r&f1S$p?|+=d*1e9zCBTdMZp>9+uoAYk%aB-RC+Ui+flv{gS~XcY~%;Pwj`I3 +zSuSH1OQlvmQJ5-26ax#1 +z)VUwT+wHWX>PRO}G=T$PB}kQn900q(R)LOc+Gsg&mVfX6l++!QCELJb6|U$cE&Vfz +zC~zLc`yy|{2^sb{G7aD`ozy9!9(xv~THC;2+~_OmXaN1QT2ZCJGE+md-Dw9+Qc=gA +zT}fTpo=d(|~@wMW7w8%V)o!PutgkPk(`J+n-3fZTk^mR?;2YSAc7YepS+S +z+qZ!i(~cK{;tQDv>s1FDrBT@fc0v}m{WS1l?iYdipz$$qWc%|(-cGcy+5Sz^U$$3) +zCxMr`umb@Nm?)KZ;WWCOTY)o +zUlX_vtd_{cl~(>0xB)zrrRHthGw0cguL7?WybXL+Ln=y?06(UN1Uv;ie;x-8O1r>! +zl5URtttb5f{1O5y_JQesngKrnpQUYnJ~(Ag)D5cdfxAIsjsN17Ny84L!lY{^O002ovPDHLkV1k(E%A^1Q + +diff --git a/themes/spinner/animation-0015.png b/themes/spinner/animation-0015.png +index 207553e4efe3f2f8af3c0e4a724fa968d2a21a1e..249e1739d36456bdf3dd36c70537c928e25ee8f3 100644 +GIT binary patch +delta 1599 +zcmV-F2Eh5v2hR+UBYyx1a7bBm000XU000XU0RWnu7ytkOKXgS{bVg}xWdJW|Z*65S +zYH4k4VPh|Ia$_%NX>>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdIXW;hZ+~s_8UO$Q5OhUYbW~|= +zWdJZRIxsLgFfckXHS)F7ng9R*2y{hQbVhPvZDjy4HC7Wm=Kufz5p+dZbVFfnWpZHv +zLt$-Ya$znoFf;tnI8y)s02OpaSaefkWo~5vVQy({VRUJ4ZXh!-W^i*L595LW000wo +zMObuFWo~3;a(`55ZDjy3Fgh?WE-*GpRQq%Q000tnMObu0d1Gv4b0AY;ZE$R5a{w_i +zIDVEGD*yll=Sf6CR9FdpmfMeHQxwLlO1odij9WsCahV80A~7!$Po8-4SNPw&lJGeC +zg@go8MurxeF%g$RkD*)ZF2CQZ{hit8sIro;_TFo+y?-v>Ugw;e&*$^ma=Dx-&Lh!f +z-H*MUdTo0@vF+`8o9IiYaTLybL)S|7|8Gyb4V_*^sV8yqA +zBcS{Oc7MRv1o>S>UzF>}+5{5Z5m@1U;7M>lxCIzg7WTWf3A(4;0saA(!G~ZMMvmf_ +z^+-r=%s>pO`erO21CIiox|V9Gw_2$;3HMCEWKHe>n2b8@J^&ws17a=1hH;d&39u=p +z20jf8q@-%+p1v3O*l4RbH}KuSB*KLHPr(J4uz!G&R1+pEcL;7J&wwvr!HcWvhWHxgw<_g9rf|HIx2GLAtqLR71(H2s8jFN%Kid-z^?xjn20uB*Hge= +zk$&-8H$Tt(3i#ZZCeg+lJ%B>mo&Y+uS`#sV)Y$_+Ht6^eCv~Sf0x~CSF9I3#sW}8E +z+JDF}`x3m#xocse7|4Q6v-W_2JM&lVnb(c}R}D;6fKn6V{n=&XH=h_oi +zaSc?0@-8N3BD`N2@Q%In?{IEH!`(UWrGGC3ThDz2eg!h&m70tUKMqc5FDd~ih#6`m +z<&IWjP-#8rE6!o`CGPe6&XFr%7kC{8a8zXBGzHJKTQuX^;m2ydFGuP3MYHeywj?W1 +z&NzzfVcXA5{tIAXCZJ!h!||lo#W>sQ4r^r98pzCbVAg5E3dXu5Nw`>-gaN41?|*`U +z^eOBG6Y~ivsVk5URtDENm1~eDbY9gZ;eK>JO{fms2rLW65+<=|F;_i+LNS=sn~ZZa +zwV5i(1n8?x;Ot>LNDJVbFn6Cli`?Vv>I&30x@5rMcCJ|})j&GarVo^Pn9x|A>!y?P +z7l30g7WRG44X@&6;bxu$GfW@o#DBewl7up1_y~9&SX3{v>Jw5jG$9%J&6Wi_)hjTl +zFCh~tx{`G&ML(@tm4D5A?q3CdOQ!NIil0>Kr|ze7=wqk&@~~nP5F7vRx#xMs1PSiv +z_%-mdD$t7sZUc)f`)Pw%xo;~CD=;vpb#M+;^D;)v@_#GvS>6F| +z3<+38YeuuHl30&|d!S>>r4>u_bKop^3HU{vR*q`+2Y9QEu1kgltg0p99|!gIKTfOc +zW$vh8XRtTGv%sEN7Z`Oh`ZnVwe68+FV`7eIQlYG?Tz#KNqx?K-JKcmg1((tHz&3up +z+Tq%q4-ACbj9!NZQ%REOt$)}%-xS#MzS!OY?@oiqPbJV-Hl1_0B>IdfZCIaYn{~t_ +zYpdP?(tZ(WJM@o5D*77!5p|A76oru-${Ks7%lGl~G_VIO#+S@4xBxDJy)ZdFpEZ6~ +z&F84NG1b+^hCO=0KQd>4<7MC%&`&t7#-Hkboq0t~a1M?VaGgC5WH>#YuS+;KIpdh1 +x&LgX`S;fh)(HO}(4wKL(eeB$i?Yh7@|1X?Nlva;RVp{+J002ovPDHLkV1k0&)RF)I + +delta 952 +zcmV;p14sPN49y3SBYy*wNklI(boB!Owwi^H&5VBnm3tb@IuJT +zd+$Aeo^#G~&I@N)wij*BpGAhwpnM5f2abWiC3R+zGdDqrfPbYJdMN3**j~u{xjc7H +zdGGWFM96vsodfQUvU9|{hk@1HGjLF)pf(BV;(yup!YM+t5W@%ej>ny!WIzY#=D7~E +z0`IuBnzMuZM>89c*zLv(1B*a&LSi-x@At;V|AYayWqa9nbI8j>pq+SX1PaRi8qg{# +zt38yM^~hhz*?$L;aFB2SUE4d7+LExn7w_xI_@yXVj>4n7Z{&U-*p=icZvt!CKarSo +zLud>(8^F5lb_8{8AH>6Bpf9Oodkd&ZIarXPM +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 +ze)vXF)_#>}wS +zxif*Joc%^j@fLn(2BKi3LJ4rtDonFvw2%|Q-RHQ|@x&lM%j3jjJQt)BU +z-G7h(+G{q8LiGaA?fo@t(~W-{yPLtm{K6pzbk}3^Ng$AU@x&-fhmiR=E0(xuZ(d|A +zYi&cSL@F2HYHY`;p216X7@hN91d>pB3(^5k)j6{eK9Z2#peO}G9C&;j);^WH^Fa;X +zb@{AMvS#D6KoN=p{slHCC)vYDfUs;fTYteN;qE1It5+3yH}5aqkhm-9qbnBw +zx^UXuup2WF1!5p5Qb98wSFt3y24l1xn67pa6>%ld(Y4c&4fct2Xuj&*$Cz?R6hcToBok$_(tm+5Pyg5 +zgr=hS^c1)XS75y+Fa~cqEYKK+aI!>3<>4bh1I@wb!0fijea}~^VC(&!8wo591#88l +zGg#;)+1Ug)aBl>!2gARu0C}W84b0cDuYvU-fl&EaEPtBBTy1o9Zo&-bI^Y4~Zv_{p~IV_sL@=s+B-6*E8*MDv;) +z^lU`$uRH&A%=YBjM`e0+-{O4V}Ux^Plm{{atNxZHcsKI`nY +z&f5FJHHPhN+x6?j&@~pn0o(${z=@>(I&o?X77@@4(4M4m@qfCW=bJzS=uerq0dyzk +zEe`;wb_vi1PM6%+3&3uL2RNVg;l_eM;{-6UW4o~gHH`pw5rcIB^nqcK>fNMw-nf}> +zmH8KI1CZpTzRJXQxSh58X1=Mib~cayD;h}ZJ_35cQK9NyuAOR!wtG_+-w5x@)twOL +zM!;PWW+}oCfqw_U2zX-q8%f_w!gi;a+(;Js1*nTWZ)E2qppy(%nc2!?PzqY(|7%NqV;8;+w!hV$8DnRxSLT$3jbvDglk>>|&A2 +zYQg)BihqLp1qCGl1CJ&Bx+VpU_{+30D4lX<0NaPQZ?Ca<-F9?L**A;LP?zNoTfesSU%_ +zf&J{fBk44Y?G}AyRkDXwH7o&a71i)5@CbM+X>5BBcs&*?pq6L*z`%B^NIPlYx&d|) +z0DGb1N;ND2{2XL`;MqjcxEFx^7}FW>a^_!#vUcXzllDE^ClOxH_C}FcA +zwY%a2;Kii53;a=>Wlt&Pgq~5}&vU}109@u81Aj{DEd1B|PdnX0kY4-OEGa(<|E(!z +zGiy|W953?w>-?PVAeCUuOIZ<6F7oF!8^%00000NkvXXu0mjf +D1S8ND + +diff --git a/themes/spinner/animation-0018.png b/themes/spinner/animation-0018.png +index 902c837ef74e618bdffaaab2f1cc04e86e9e51c2..667cd7d4ad375878eb731326ad70a12f5536d389 100644 +GIT binary patch +delta 1566 +zcmV+(2I2X%2d)f|BYyx1a7bBm000XU000XU0RWnu7ytkOKXgS{bVg}xWdJW|Z*65S +zYH4k4VPh|Ia$_%NX>>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdIXW;hZ+~s_8UO$Q5OhUYbW~|= +zWdJZRIxsLgFfckXIE)0ZCjbBd2y{hQbVhPvZDjy4I4Gh(S^xk55p+dZbVFfnWpZHv +zLt$-Ya$znoFf;tnI8y)s02OpaSaefkWo~5vVQy({VRUJ4ZXh!-W^i*L595LW000wo +zMObuFWo~3;a(`55ZDjy3Fgh?WE-*GpRQq%Q000tnMObu0d1Gv4b0AY;ZE$R5a{w_i +zIDVEGD*yll#z{m$R9Fd>)=O_(MGytx*qC?1BM_8C5J5Hw5q2y;^`gIJ7!r>asj;brq;gKy)2eVuqUZ2P6y4hgmvg_gM7K_D$ksn^IpA3H} +zxF75Vf39$MdwV;_56+(;AH9P4K%AaR;O(%p!4tumz*-``GxAPwFZe0A72He#k~&fd +z9a_cNOn;!k@j#$QgNuOx4Maw&e`E#gyMfL~WH-1T+)PIn^_%qu)zOC1V%7eqBAyPk +zS~3DW7N{KP76Cu@*qLZJ7dU?-9sDYMFFp-S#AWq32S-TD1BY8R=YI$6{|dC$z4Io4 +zJAr+Hbxdb;i~MqM#k#>Gj{>cOWk!@Jfhh#n%6|s}fjAPt-gAKjBxm1XO6>7~EuD4u +zB?H%jFB9+n9COFrph@XYIUNHOZs>jw1mNiB;Mc%C16$W3;pYQMJRQ*A4s_^zAfesF +zyPjC%D#YFqn6QEhC4j3$b{q<%103!K?vvw@c)CV+BltdeA<%wZkjNi_gr5ms4HUr7 +zIDb1jFja4e1QV14$#9?=UD%xiOB#9a!}gQNZ{h4!dnwRGXC~{aJoq7Cpc?`s*Yr{n<$uIg<)D>P^|ChU$aHJpZSOM0 +zp@gXh&HC8#^J$=y5^$Zx#mHya!$^P-@_%UMj8!eDyT8|#MIHxNXDmBEL*I3{LVOkZ +zLavuA&gm4qHM%ynKl%~0L+4%vm&C>gq-SuLlbK}aCE&a{P^`|ljx(#dS~_zL*P)d;+jiG^ +z_qt|->Y)48S+8`8Gx4s#TP2n%6nUrT)}P`i2if4f29$@_OUun?6DrT{+2C>@5x*s_ +z#1NV>ulAtvA!@KW_#AZJpKU7hM1L-FR<&;g&jzZNMBfH)hCeK$FdG{c)+s*IRN1T^ +zvc2x-{dUi91+NGE_qRn-I`BoH3nSq%0~Vz^DxdV)=$Fxb-ZG%}V%JPf`nllE;7ZUt +zkGPh9iTq9HtQ+{c3$0uNWM8aoUk=_5{1@5_T*ICww7{Wz_QYmAY=oY7%9 +zXMPMm3rw{^`!8h5zY9JHzJCrz0dtYjjbuh!n+=0*3?UD?z#H&d@Je9P4c&a_4hmu@ +z1@>Ry+ra;b;k3S^8-cCG4GxCTW;e>|&}tq`y!ZTkVA}hmVzT`&EcOIG>|vaz#D*g +QhyVZp07*qoM6N<$g8VPa^8f$< + +delta 927 +zcmV;Q17Q5F473N3BYy*XNklMM^{viwG7h +zkk}%A0D`~3Ph!g&i4_YZHXs(j3Iq!TB0ORQAr9E{^4L>s>RQJ)bLVA_WO-)pIj5_; +ztE>CMIhO4Uwmav!L+3Ew11NYXOMy_pok1;B?;pMF749 +ze$MBMz*|d@Zl}0+90%3|AZY}A1oU&!%fKshyx$BTs@0#D|1$t=cWmFYeK%pO)>pvS +z$!9B3*sAB>c7H40D}TeJ@btOup6%`IeS(B90q-Pd4{U!T=^IJd{usCm>;kt#&d)=% +zD%9P0Z{P$tlvGA$r>LA$VwNfBw9*(&rC +z+Z(noMK8Luh*^ek3wRy47qnHa_mhTCQ;Ho)-#2ie6Mv^BA#Ja4QUN#s4kUS|6575A +zyawD#R9gA}zNGJ#RLM=?O1!PsFlm|06(UJL+P)9m36K|pdb)zbPUCG0I0g=YQRVg0 +zy&%S`5^s3H2QQt&Kry)ayo=?_T{)*V=C(p;_y +zFwzo4x}1Fdvjz#7gmAo>%h&(Zy)$l(%}l8U(WrLsOQWw+?a9rN^1XVAt2Kw +zhL@&6r4uP0+I~WaRAcS!lw&*Oo5uS+;8$QPb$@*{$MdQgZD)V0#;IYXcv_FZHQ>1% +zJ_>+8f!`z@7ENVj`>!;cHqgrFP7(G)N&ng&rmt)k?R+O`8Pox^gYX#m8~8n)&hczF +z&j1vWc{-l&*TTMKdl+E*0dO&*bfz1Y0QO>Fl6HHX%ZcYCI@O+DK$B8C$nTW|@7R7E +z;(v{79~D|NegZ%Y?lsJKy%=`YN(1cF>-=^Qu*#WHa!ztSSZO9qj&~EXia^5!Q}n3# +zerEhyXDZ%G-cIUcR>KfWYJOUzX7fA%rbXxn^%`yfF-erP%zMEiaTyfk8?T_G6(QYl +zZaDy9aKGX4I4M&7<)evk|Lfavp?s|-ofuzc{Rb2zuUC^T1Cjs$002ovPDHLkV1m7) +BxFi4o + +diff --git a/themes/spinner/animation-0019.png b/themes/spinner/animation-0019.png +index 7ba8e421289fa4731e94a79a57fb21539080032c..760868a01e3f03eed0b521bad6279d4a38bd5965 100644 +GIT binary patch +delta 1562 +zcmV+#2IcvW2dWH^BYyx1a7bBm000XU000XU0RWnu7ytkOKXgS{bVg}xWdJW|Z*65S +zYH4k4VPh|Ia$_%NX>>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdIXW;hZ+~s_8UO$Q5OhUYbW~|= +zWdJZRIxsLgFfckXIr{^ju>b%72y{hQbVhPvZDjy4IbWr4%m4rY5p+dZbVFfnWpZHv +zLt$-Ya$znoFf;tnI8y)s02OpaSaefkWo~5vVQy({VRUJ4ZXh!-W^i*L595LW000wo +zMObuFWo~3;a(`55ZDjy3Fgh?WE-*JfQ_JE2000tnMObu0d1Gv4b0AY;ZE$R5a{w_i +zIDVEGD*yll!bwCyR9Fd}*UOJoMHB|`nHJyRGoq1&L1N;<*TT3r{^f2(;=;s;niv#h +zAtEU97{?jEU-kW(>Slt8C;8@_I(6Pv_x7Fr{r&yDiC_Vap6CrB0KlInK#M@L6bWdG>^e?CxzvB90- +zAh^F;t&V2@|BxR&g4rPf_mWtG7lLPk7X$030);p~@~PlK@MoZyn`yxMkw)myl4rYs +zCdUIEK7SiL7wBA~Cj$j2=AS@f`om>?X5oK?Uk`rYok(;W;(Q`4;}^`RoAfBMGr=qD64Ql=xb7Yw7l|-a99DtO1&8~AQA>I+Fk0tLC&u3aJ8K0a$D_gX +z!G&PeX9nSeq +zIcqd21p|q7>C#EaP;h5^D=>}XbmW(VvjI|gle2j>csn>uzF(4S9EIGGA6~*JjE%GE +zO-Dz%Q3!rJ5bz*=Mm`EpXY9Zf-U!|dOpp$VtDxV4OYyxcFIp{CbOH<|XvdQL70~Ni +z;(z;+H$ZfIx#h=hdPKHA1rnJS(#R+_-2Hf+ue@knj4rZPmhSOhGL?I-@5OQ4hX$C7 +z5JMr+@%t{g8SqtrBSj{3E)yGfZ}<##{w!mZzyuV4TkGn9;NfFZQ^8b&T9id>`CSfh +z$sLC&YVNh*G<%@v_{q@cn6uGIoSY9|&3|={evrL+pB(b&{u)?_t0_mIm@^t?H|{_b +z=qQy-E-Bt)IEa38=1rFUk#tT>r?`bAc44T5^0Qn?%H<%wivT0lke(pOU@@71nt~<)5 +zlTTygESuz`$QObu*}op{2TBue_u0UnV%bZoXtE>mA@k+J!`8H!z&!e83V*%>{Khvq +z4`)dK!2-7%(Zfvj!=3+E!PVqhpH~)gZaKC4g?pE)`f;QI*orebxC09KHn^D4`=uO- +zakOzE%IR~^9;x_wcRD_#vtq6&|;k;zVzi4yE(G8koR^FNbt8U<^)0o$l +z!!sQ>@~ +M07*qoM6N<$g0WB70{{R3 + +delta 889 +zcmV-<1BU#n437tpBYy){NklBI1`mdWtQZ3?zLn=?h8YZ22xw0)Ll*qf9O&jU-JZZFI8S +zV&D<*H823K0pI5~dgPm21SXyrFz*!spaN=#`GKU5v(3Arb^wf$f12JY0DcGlwxS8} +zP*SCw-Ch*$zYIE1zHezXqAl19KVSv!dc?PP$YQqo;XA7x%X_h@tdP}0Dm +zEj(HyrpfohDSvGB7m~&~Fw>201CRXuM$(TF@kc};=?QQLxa9xt0Y3v@*^uWpdSLm+ +z-lvh7di_7ZObxgIoO$sY@JP}f;8{fcBk39NC2$IyM#OKDz6Hh+(HhW3!70avo=h0{`RBqE3V6>!Ujd|;27Js9>ZNyiG90gDzBJJ$l|@D{L)h`;u% +z6)oWEO-C{O^Nl2Ak-c9=#Os~~Ym^{Ar|@M&R3Yg)@R?76vds&h<);xb+jH{^!1WDe +z*8p!zqkp`zrRt#AvmGeAPpL0}qD{dSlT6O>0^UW$anBSSWYnBKHBfB>VPQ^KMMTvD +zgoSghy~8Bw(9OnyQ}il7!y9CWmTgJt1gN?UDLaJ6ZYahEO6B)H?VA$Z3~Wp#={+Kf +zEZkRdc(1#xeYsZ8mGxoR~H86 +ziRU?Brb#GQ2G+%7?!Z8+lLB@q>DYP}l9o=P(nh6Bicr(lz1q`JGBt|`Ny=(iNYaS` +z7joWg=rpd?U+lmGd7HJ^Ad;>JFx_@9*haC#b#2y~CKh9-Nsi#?JO-q3p6^0L{%4W3 +zV7+ff6>yvbXNPBIKyH;Qw|KMZT2&>zW1Y!0o33O3%k4N}zF5ceyFC8_QK+?Yst*bc +P00000NkvXXu0mjfSNo+$ + +diff --git a/themes/spinner/animation-0020.png b/themes/spinner/animation-0020.png +index 20c00389fef232ad13c1e327f5023e50b6443431..d228ed84fbddcab44ada03bb79b5c3d842e58a24 100644 +GIT binary patch +delta 1541 +zcmYL}eKga19LIl{X-P_9*X?1h)y2x5ilsa&Caq~I5+=5pwi%lZv6&SKp^kAq>*10L +zk?uS{lyZ{CuBnzwb-R?wB9DnXb?&+6d_L!W&inN~@9*cYZ<>~5UAl=7fUsS?IRK!& +zX?4|roIEH10CwDiUfe@;1_eL{hcYS15IU0?5QyZ22O?>7E|SfNVunU=gOS`|3X{S? +za@cehixU2yTAX1}SV3pvyFjWc=xUX70G9$_P-q+yjYeXyFf`hF?>=i37Ag#BOHqY3 +ztcE=4ObUQPS^pRe>edujrebTp-x406f*6#JXYOs4w{g{TQd!{vzz?xNp|DH6IFbtL +zuR>BFg+&1ZSafCpmmbQ3VNp~z2d4WjUKQB18aSppkrFQa|4|E+l`X0Bt%~b?Z;uLO +zP&hDB0F$j!0FA*3Bv1qZfXeaC4xV0+RGClO@q-&Q$yEE#2}bHh9wrWf4F|@OlWZ5J +zWBVRm>?`$%0`@?YV6e5=cZ<=pubz*hjLf}BL&paq#$Ux!X*AmCqgG*SD4vg%@+GJ%XT#NhMz{JEFMLv5aiO+6)aCCGFhG(PAlzUr<% +zNWp;k3q^t9bumgeV>8jVo{#ac%Gg4zt_ZZ6+4(KXOxa?ldTN|gF>z3;lAaL1ay*Sm_*B|SNBRM5TUpnoQeglUxDLUnwzD7yr +zRbjlS6nEkBKugJskxT5|jZM|@$;pq&+^ezjXV5oQv~NVEvL@uRTMQhM^r8P~YibdG +zY@2`ibPQD#1247_O9+Z{?Kp^GcJ^@Kdx_e?*;k|D|1wMsu*JydLo0Oj$551W_5VOyqo+&&3^tzp4gORd0 +ze0t<&gMMTwI6q`3i3q`Q(bCNwONsZtxLrZ@osFNa6Ld%t|GB#>KT}#3HaOC$%+s}7 +z_h2hVfSuo?>`b%(7q)+X4@dhswF!^imN+w(OdGd17?$SP_0(R=Yt(ZM;zq&A*o_bQ +z@!*oFxEQ^>!*R&AP^%1(A@IhpR#$yM&Y$<3G%5!-cMsO?>_uF3(52QoT#2-bG@0L# +zbXu36m3LT{UyoTSnEBPa9kyOxp+4kg<|~KR^+|9mrUu)!b}p=x4jO-O6gm?7St||@ +z!M@Lrw|HD?+!#kL?tC*0x*ewP^EyJ!&L%~!%>aX%^iWtub(bd*C3S4g^INB0S)a^hZm;g@T@agI-p?(y +o371Y3(aa~CY{RNPj#n)CXIMlD7V*axRUaIHKS*#ccO=LE3y4X;+yDRo + +delta 889 +zcmV-<1BU#T437tpBYy){Nkl09 +z#6}$8{2uTH@B;WMA|CByr`O@6FXi`|k>v?p*@lIq;Vq)xd|6 +z`WSL?G!QaO!V2&H6{c$6osw +zxC6ZFq%MK4BjSaf4}k_4Wc-;l +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 +z9`%Kp_n+lc(EwyTVVjT-jqz@fwk +z2yZRX9Z<`XRt^7SSbRBAlxEEf7s9k;u?d&bq%3MG-D5j+@D8J8_FicUYeW;e{$NRE +z7pfp*psb%ra+xn5mFcKirE1?HGcQJ{^jQ1zQ$BTCDn<5+KDi&+K!8!Ry4?w7`80cl90P?{pD6v^K$ZjsEz6 +zA0Rqy<;^r{Dk_$}kN&o;aHMphl?5|yBsVlp%+gHbT_XJPOMv01eu;=27SIL{subD< +zxRThEB)C511oCzV02361zDlj>#*sd%Ck-CmXhLiQtWA +z`|Jz;@>aoJZRJZNFOamtC$KS)HptlYDp9lRiCcn8qJ2GftXkaGPnwpOU+Miack}DE +zLG=J^#CM~|rFq<+#^EA@bS=~<<2~={0I_B|t~P~uKd?f$9DXDPejqAs{N94|`L0ig +zUl%^SEg9SESdE0hTkG?O?owW@*MV$+v*f{^rKQb&R7Kb91ebTh9tvxk$Nk8*NW +zEx2wQ`Tbh-nAR*2Dh;0w*Za%K+rhk^tM03d?$kO^!NZ&ye=*g_Hz^Bzca2@;-=pi3 +z=gG+v0Z9&z?}xv@%iP;}l9py7xioNVuV-VVU72Hu_V#YiAZUKFRBPu$G+?Zp0dlf6AI*7V6Y)9tw-x8??vJ0C_r2yz6&=kkXqeN<~q +zy<5T4Ch8JMv1LM^o}uVPP8Gv~B(LHJSACLXCegDgNCiEKC%MCsQZr7v?I7p>x&WY> +WPbGIwK!Oeb84yW~AzTjKUHmVCd$36W + +delta 819 +zcmV-31I+w|49NzNBYy)BNklvC>>5J7fR$Z~vZ!Jsx*Ibob#tHf#^)w}EG}F*dWw +zE_OO=oEXppTEN`Qmf`hK&bz=NFbU_{z>(ganb~3|05UMrzJE@15^=7`?1=-bwD>0iJ7b2lx*B2=@EH6TLq*vobHj +zRB!;5yHCxmG=DSXu&Z||3zxusQ8WSW0QUs60KTRm-2E7M13Z#X2TpPTrsd*q}VtIYHQHN_1f5(NVp$O~<*T4-OFhLsKC +z)Cc|m@6?K;pchw){8Q2tTVbRtBi-!PMV;dnHjaV!S%004fiGru-Y7(7R=WE_00x1x +zZJwFvH~@YDpGC`Zt62~`W7Fuv*$2wxxtSG>!$=BOC(Grw&I5?oz|)#QPt9y>;{4Vc +zIi8qVwZpXh5L!DIz$x&t6ZF2df@|AjY^RRu)zr`k7+9$MItmthQ1DW%xGJk>z{w^> +z*pcvTOMgLIT~+OLBT`mk8*W?&I-3NjQd^c`zSQf0hDzct0&U6IMi@eHZGkD=eU=B2 +zOYtz%>?p-kX+kX>irh6d`!%v&0MnF>d>ZyMn}zOz3ysr*Yd=2GfNE(rRN_3PeWqbm +zh{kRhc4?p$P1A4@cuNH}i2Ed72a5b6%V^)-3x5H-6o8@V@Yt4}EZUT&ykG|5_Ec&0 +z0_bkg|8|Ph-LGUP&6lJJ*&Vbcs!)*h7Z9`v8c~d=nwko+1>a@BC?|bY7{i%PrJ&8onpW +xoh$*=6;1%x3!Sm)x&QNZ96H2+qNz5Tp1+RyhMYIb1bzSj002ovPDHLkV1kICk0Ss8 + +diff --git a/themes/spinner/animation-0023.png b/themes/spinner/animation-0023.png +index 27f73d18cee5ba995a375da61b20703a986f5cbc..8e77aa140cd3f80f32987569cc3938742b68961a 100644 +GIT binary patch +delta 1464 +zcmYL}c{tR09LIkcX(GoA+Zc*nSGneD8OoV!Z0ZR)$~DGdn2Q;=F*6<=(@M-zHe`FS +zDecffh#@0lbEGAWo3xI|eP->bXP^B(-|zE&p7-nhyg#46zBT*W?`Y@eHWFmkFr%{NA2oi;YCmul<`P1?p6=X+s-M0L%*(UE-mgZ(=R!{8i%28_o +z-E56C7kO1zD4%|(Er0G)EKjf8swymFZgE?f6fZe+7K_E1Dq)Lj1190Erm>r0k&$vHbad&^b?+>gb2 +zu$K?OLnc7Q(#>&Ajjwues=_}Pdb1HS_9KSvwV>ADO$@OXVAz8?U&`*1lt@Y6rb9hW +zBtx)3%xm19Ix4eS0I|?xR8guT?3o7t4L1po<7MS;1hh@)M)kK7 +zw3vRP+d!9?o7de@j+0wM`)Nnc2~U(bWP)^y*&4JfT@1lk-DPuBfQ>8|R&X?4FA1ln +zI3>0tGfeIpjNKb+IgVQ@T<~41d#rR=E$yz8;#$uGgHUW=ze4|Ni1%XB#*KvpSm{g_ +zD|Gx$z14EKe|o8GwJx(;RD4-auxo)j2n*S89W`!VbaF<I66~twxT%k; +z7MX|N7Z3fsd7ONs{k(CO*Jl%Oq@TuwYeQ(%cYU=vA^${e=mI0o!d!4!s!|s1(#v}2 +znn`zkii%px8aejljLZ0{PBBZ0y)c!al{@M`v$F$frHwU&**0(>-BJZ=vy`jMamS6; +zh4;gtk3-k1ba@EKMofRpfXjKGRl^dQo3=(bEFn27BznsZrb!bM#D(eaXdb&LH|%tA +z8#=|&A5vsipY_-T0_j22KrS~pPqdPt*esmbF71^mdQRACw;>)(R$vFLn83jms?}TB +zhD%tMx|vU(kyJEtp{fs_7d!f4L*%XiImXm + +delta 803 +zcmV+;1Kj+{3%Lf6BYy(`NklOpZT0R& +z@F0i?34)Mh;zD#LGrgodSS>|6Jv}qghK7dzYJXMrKDfkVW~rGam(ih181DjGKnM6K +zDc?j-+G0e0MnEpf7RYvh9+21Mwt)mVlXS6>13(uT21BzI1Ap5Ct_S_!n+|r`G9A8q +zW|po{njx^`Src%v?0lO81yBaO^vtXcOIJPe1eo}{nFC()dB{Z9-=^qCz{vFq_$sMf +z34{S~07U>?UNhV`vm!Vpm+t`AJn{ti;cx7k>i?;vq7K3cxYEq#l5$Cy**tVZ;@^d% +z-+&AlxP0Pe8-G_pnAt9{4_tBC_rTGzE=Yi(gD#U)npp<)tAHdGW;Ovjl5)>rB|DaM +z?tt9)u1Et`iod|)3i=+EYMqcd7COJ7p`rl;12;4ah6gT}xSk{6pqdR@G+y12dUhsF +zh8O7A1s(^(0>;26NoPw3k*Buwe|=Z5?vn>xO@Ra8q<=O^+jl|e3|lq&AiLwTKbFZV +zv`AB=#k$6W6L)~!5NHheSkj5S=A)KzJZT#!3yg08&m4q{0?&ZgsT;7Ca%{4;d*QX( +zUXcT|tAPCUKa}7WaJwO^-+<3;3bZNfF|!+HcF*y(erjE?YQwc~U}krL=iY|Lz&qe@ +zk$l=Ph<|#u(Wy0YaN%^V^b+g=_s#6Bq%R9I;5|QZuNRHtS(piB6G`>+Dex3{TsqAfI9BjYISWj< +z%HC8`+>{TzoQI9uu%R1<;q27+|1dfrY1VXhV@?=2f9$WSzU;%)#0!m#%Ox$d=T*YO8V$xqovz +h4jhxOy0~tn;}@(|cMD0SwJ-nx002ovPDHLkV1k+Nd)xp3 + +diff --git a/themes/spinner/animation-0024.png b/themes/spinner/animation-0024.png +index 88ad349e71b683e0ce9f9cb82ac32795828f66a5..ed52d3d40d594dc4ff4c0f9b796b3d0243a9aa81 100644 +GIT binary patch +delta 1475 +zcmV;!1w8tu2Gk3XBYyx1a7bBm000XU000XU0RWnu7ytkOKXgS{bVg}xWdJW|Z*65S +zYH4k4VPh|Ia$_%NX>>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdIXW;i7=LQQi~s-t5OhUYbW~|= +zWdJZRIxsLgFfckYG_Iep&j0`b2y{hQbVhPvZDjy5GzvLivH$=85p+dZbVFfnWpZHv +zLt$-Ya$znoFf;tnI8y)s02OpaSaefkWo~5vVQy({VRUJ4ZXh!-W^i*L595LW000wo +zMObuFWo~3;a(`55ZDjy3Fgh?WE-*GpRQq%Q000tnMObu0d1Gv4b0AY;ZE$R5a{w_i +zIDVEGD*yllY)M2xR9Fdxm)mX=K@5g>)ASI+83Ym+EpWvJ@BbWq0uBNs6me)Np|oie +z{?9xAt}|W0l6O3|$G`3IZrZkO+h()bG!U}MI`8wE{eRHoo8#Cw`(+>NLx-~!$k~xS +zWP7$rmb%rlX(y9ORA75|YIu(6t&5TkFdP{YsdYLyk*;f5(;!1$uO)9t$N(7sBj3D& +ze82&uBU#vBJJ>|%rs6f5LL_oYhuDu5h#njVV;^L2)=Um29Y7cX;XE=N-PF1#o{8s* +zu`3RJ9e+>uNKA3JJAk7zu4N8M2dIGwPA32*3G_|`86x2`UCVkbo}I$e4;;swOJc4b +zV8Dn02pxe<*mlL(@2}VEsSCpa8IA%!PQ2o9*LB`M|rc488n3-P{~4$YMW +z(CEAeGwiLrO(Btwy`%zwp!;_&WD>@cD&D6FJ<h%s$o|7&~(5%(dG53ze9*18AZX>@VcM +za?D8%gr@@V>deG_ckqE~aO*1@{Ur&mhRS^n{Z%jv(nmbn5+o%kPsK-K?r1A-7{z^IFz}e1fsqRU?It#i3=yxZrhjZuLU!nO-7_3Zf>E7;@`_w1=QAakL0wE= +zY$z0fL7`nWVV_Zr0a!CQd)w;6+H!%D%ZB37*;C1>Z8Qh74c +zi5W1WxaG_OvG^MRK<@j8_{sxkQ0W5L$p~xsuwb;oD>|qo!d(N-#PjDBErytIz`2U} +z(Bz7x3(7GqZ*>4K8(1NCBRubs#Xc*s`$yHjoWsXtJvz(1trtos^4>D51J(g*z4x54 +d?-($4=ntcar~ZL!Kg$3B002ovPDHLkV1mW>hFt&v + +delta 784 +zcmV+r1MmFQ3#JB;BYy(zNklo`t=B`cPF@14gvb7le?TxOP=S#OgwvQ3Nw+raiFPUK6B +zD6AH6usJb%Zaf37+wlK~1A#aORAFQ3cab7AvvL7p`@#4u +zVsB=dS4{@|k~FWAFcPjZv#F#~5@t3FtWFqLAv2}F?}e;hNlM0tz@6a0DR9|V1wCNk +zkxnI5?nFNYB!8(ivx!4h1%js3mu6PD;akBu0doSe>M1PZdyg`uGfM_rDj@UhB*XoX +zxeB-dMhRjqIHcc@or$Efqe^ZAkAh(VW8hrURjUwrIwziqA}HP}*W8U3p1Bb)ZmI}% +zlw#`|eb~F@&R-?QHew(gx5#}A7*l`{-1$rUrLVuyFwaM}CwkQ@D?*p%ce#DH+ +ziG7%a$CkjMH9KvpDy#LDBvyGB2&z@_4_UYi>?~+XW8ka{342b$YDMF>U0KiC_G(FE +z=_dzP;enYw0N(oEAHZkev}u3dB1F9!X|$pa4E*<=tKzAd9Z9-u%s>Yzz7CqONQ$5M +z+A**TJbw?33*ZX)1{@|{MF)z|4GCQ?HKX+XFC5-t@#p)%J3sS4(!P`MrOR?JDCC}` +zfh3Mu3Ez3` +zT@IW9=U#S0;EkERceqZ>Yy>=Zh`!$#$t0PinST!ywIR}2mWZj0fwgbV5G_MCXlG~NdEa?vp3gJS_xsl?R<2hQ8}R^Gf>#I! +z0MxX%p8{~c90>pbo=XVk9*mA-0O+WACIcN4&16z&Xbzi(j*RA_6XH^t@rm3hG&hRD +zWN^@&glHCv!TwJzsc{SzoyxzXD6c|pS9wsl3;+XK;m}rAXbe{0%F5ox&K|@fc`?2D +z@{rbcC?J~206@_G+r`*CDa{O#Gw9b{*c3U$*rYqh8_T_2+n&4JVpD)`VhMuS%@G_~ +z4tH-uGL6Av02EdUc*?JJnTxzYTUX0Y1ga= +zCMplR01K-29)nt&kn3YqtW2FzLIR<1`g-7oX(Q2<-uFgZ1i!xY7? +zd~Y~*9r7pD+UxMgKF`BEdtvFo0+^<1ry68Xc7znSObBluYNeGrG>(;xrkgFF?&qp0 +z%viStDfW)fh0&ctElUtB?tw02`B!h;9wymWivzWSL=l%3L(D{mBb9=CJK7ct5{}tQ +z3j1;tNt0bFgUW!B5Zxz6IqZ@)R%XX1J5Ia9@1DtDN>Q|Gso;qu=u6s)uQ&*u-a{Rp +zePM;csb&p@{NMpPykBK9dGaO&(w&1Jcn6QX><R$`1K +z!cw%Wp!B;dgtc6K+bo(lRn6XCw*r&Fc70J~6s9B+xgz_uAtz!IN$?dJ5KucYMB7Yq +z8r1pllEQPVf|~sFut!f>detuZo`wzm65=MRwdeHkBVwzO5Lc83PIP6TB(&lzH{b47 +z->+Bj!YKx`6(gzrU7?}a%!{;-yhNCAX+}WwinXr>ftE#)fjRG{6l2W63+)zQ%MZUo +z(j1DNL?=%-W^V#5OvZzA%cc$R3mx^cWq$s5sl4_P@p|>D#FS!8JDQl1qG32udK@Nw +z+Vdn9d$|_Ch6EpG*X6%aN}%Wl_8XSZ?Vg`|Ky66eFck-9tuHl{p!2VI;|4yMXk_>q +zv1Td8&OWxMP>mX8-o6&T7#On5EX{7u2ZOz~r;<0YjwX=sYT5hiWCyMB&ei^Bnj4$5 +zyz)0qD%FMO$L;y>sv?!j7weTi{7OMM$>VXXM~9$a$bZMvO_~PSy4<_Xb&{&_)ZTxN +zkJ~D3uK9FpN{Ldhqx8X9>J)9&(V|UK&2cfyzPFMC?@o7<5#5%AU=IhQAovX3X#cx| +z;@phzu0HX!tjhQO7ir0oKi;jly@N+qsH2^Ur=_6|Aj3~W91ZD~Kbm_8=TSBpKB_2l +z0&k~Z0iNAijsir;(R9(4wFUCCxTgk`oE;Lxjb+Acpw>h28}oSwlu~kor({rk4qlj! +z;T|H%a9jjmv&k87N4USP9tycLV*KbaQK8}X5p@^;zWUyey_qn?aV*b(t8@Dh>Bdap +zmTG-j4RS`Me&n@uQG1qWml0q(@FfWh&8NN2Ste}h%-9@LP=|?pGV*dep3maOE(+hf +zwMBs82g6{JDyZdNX-!FCsCZWNDJ(S-k`f&uFjan=Hod+NpMDeH^b7UOeRpzFwpH$f +o!cI)AN(ZrC&zZllW6yy>-qY)ef<`w;xcuhOV + +delta 761 +zcmV`nGbE?I)9mi2ERf@XaJ-airyT`y5kEC2uwoMFfad-h>20#GrN!DZH6l)HN +z@6;p}%vmTR2T%|68=ipeGyg6DEC&`g1u*gNdjM6}i<|IQNPo(Q=%P`W`rcocKn-9O +zpq?1sb*Qn$fAa*)T^Xv#`)IQ;qrL3o|33``;mE>CrmAu9L{imqI0Ns=uWs1$rZ9^R +z!L1}MN!BDGskAeVTH)Xc?%My)0`Fxi!n&B+P7AYaCcp+YGfA}rtz31gP$X+fi+@b9 +z_CS*3RQAd2Q-6dr7=_6e2#ZECGMr@!&^2^?AT7KYD +z`xo0!NPiwn+5_+gz<$^f1aM4p-nR{FXPee>7B(UO<*SbXK6`b4b+Tzqzc<`>l8ykp +z0PqgLUO?lK2C86aj?YO*a79v*4m`kW00#iR1GqKkGXRH@zL~DMq#Gkq1Gsv0B_k=4 +zmH*Ut&1&dFUePN6M*-&7))0Yq`~Gy(WtE=4o3DJICmCQ?00000NkvXXu0mjfT?At@ + +diff --git a/themes/spinner/animation-0026.png b/themes/spinner/animation-0026.png +index 88ca75ebd3bbbc21cbe2d5d57d9ce4a8cabc59ef..1bfd5dcaa6cfebe4fa8fbe8a4c53a2650e039182 100644 +GIT binary patch +delta 1409 +zcmYL}do+}J9LC>q*-WfPE{%f>xvtB+W0ska8DixmRw9zi+Zc>yhMjqt%+O%9re((> +zjV#iraVjlEM=5uO6I+rs$~8jkmN3ntZAYCwd(QWJo^zhhbDrP#uiv6-q57};_y98T +zP$(M!)U~%40hE-Y0RSMuULo*zG&&W)#w9SQ*mxR)0a37Q76ltigRzP96h=Z49EXMD +zs0=C_%TA;*nN-$)YJZAOWk#RM>{C%xp|`6%A(#p{fH)!+hr>GHF*uyF<9=rlkLJg> +z=PE*|?a(nAg9?D4^OtdOBIox{DVW;lTUd|+Iyg-e+{zW6*0y(0VX+|Ki`au8e(M=A +zPyuzfVIYOdqyi9=#(-d20uzG=V-nezT~nEgfcAFasNzH_i~s+l_8`G6@X2ch-~G8g +zg+iyYF@X>xQK10Nfq3>J+6DkrYb_DWWY@Rr4cPGP-f(EuKmTIHhqE0ym{Zf;1*M +zPE*rKDd|zmKm?%2F$eTFBE`O~uisoWmZ`Lf=GR{`>ze!yyeqlJp+OmNmt^&;@t=(@ +z6>V{d;&N=GlIMcSZ{~dcTHA%@O#%R)o^?v*$(ek+LC8jhIvKpa&~R#jn{djfI2w=}o;BW#K;1@k3d^ig +z22CE2a<;NhfPK|=y%y)^wit3NjdRgq +za}!KWh%Ik{S>xe0H{#1z2H$f<*sL>EHJ^3qf`cq*IGjhte>G5OP +zxN}@drCw)gJCL%jqhZOiJ+Gyw-x*`Qteg=h{UaZN5eSYyemNbxAF;N2ddNG$J?Suc +zAA}95GKs<8ZX)s+d^^8U)>Wrvbd_P}H@bvIJJS4VK2;W5uI +zSw@yQI2MPvcuQ8tD}x;a0P%%pFDXGab3Duc=!BJOY^nB@c`16c5Uhb4&4o)vv;xAk +z*)!ci;-B+5W`Cnqjm;Ql={_>sRKtJtNa-8>ZF^>VSJrdSX8^rnD?Bu+@OkSN=dV7C +zxo~-q)DLND&3hwAqFGDVyFcbX<}ZERDB)@YckNJ@>jkDYqXOgh%k4UjKqMV>4u*xt +z!_xLwR%tCvPvmtEos|vmxi&MndaJiYi@h0{t?$yKBDO`X%^A9IWu=Z??Oh8mUgy^Y +zAjlm?6}9g}-cAI_y^2ZZnYD4_fzl6ZT#L4AGb0TM@bvfU;)tM=ddYd*K#MjH%ad-c +z@>FHbO3Xq@&f5Xl9qJZ$Pd7|UB)?!HgsW&(<=_;1ia(9;&TCf +My!7K#7=6>i)(L>z)3 +z4hbZVm+3AJc_SXp^elGzH16%auBx{f*keeVNvig_quR$ffEqx(j}u|Q2ms6g5I`iU +z4(Dlm(#Uh;9k5GkXJ|X}VF&JR0f>)5!6?3M&+M@@5FNAx5PuBbAzEqQ$x}1g0g?dF +zWR%PXgz49tKK}pFfD;Z(I39)Q)`FziVVs$!qUYY$t6Z3&Ah;x{AsICA^+Z5> +zrthw8iw+By9Dj5ObVD*u%#wLTHM#SlL;1;|&3T)Ysk85GChSh$`%*E+zP^i&zEGrt +ztn|`Y;(R0(rF#>}$O2zEoSUgmn5gFi+twlDt2a_64xe~XutSc8YDWq}PY!s9iV-kY +zCZx23@ycReli|(M=Oi6SdII3Yer^FQ?YssX5(}Rkx_@1CaA5VKO~)%qOOj0~6~pE2 +zJbgAK8%byOlHY}wAGN6#z%hVByDPagyaI4ns)nJIJ|(>c@Dad9(kGI4l4<}mlJ}D4 +z0A8D+E0R}|mgdOZMZ~eyl~rFgOtz^l$43C(JKBPzQ=5yDzSx;yPM=7+CApFG6Tnk5 +zT<0B9-hV)}kf%&AAM9`ha0}oLz#CVzo&opkPdB4Sa>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdIXW;i7=LQQi~s-t5OhUYbW~|= +zWdJZRIxsLgFfckYH#e5ybpQYW2y{hQbVhPvZDjy5HO4@a-b&K1F@e{28{#LM@oNi*ZH&5Qqdpq|5v +z#JmeXBY!ybJ^V3zohh*=Sv1o1BMDLhXdk{E8;W|QszzfN8in3QeHjKljQ%FPrJ+q@ +z&ph-HMPM4*IO>Lhwrr^9a!_})az2fphJ93uKE~I8##~5WESf^qFmjoyT$_j3eE{@3 +z1%r^p*J0$EZsV{)oe8`OEf1jQfbZ;P*ygMa@PFC>$|&|E0Zh6k3V#XjZQ7=u*D#(B +z)_*e!&{$ANKqYndTQ)F?a`>Epa3>N!hrim?0@?&OV21!lYC#qR^{=obN78oWRD~ +z$oQCa{Z{z~u<3f}$gL|VWqH#1+@8Azewi~fvB|qsE41d^l +z!K(yv6%aw4`H}jN1`pG0=FxaeO>?H^e+aG(5&-e&O#UZ4DY?go3q3_%s8Y^9O-vFEC +zVdl>3)#l#qfrJ>IBBdbv0XCFPAXq667 +z!@#u<{{TW0!0-~hcpw?4_{j%?06=CRYm&|6 +z(}MsYj`yzjc}U>HK$y)#K+3@MKY3v +zq{a1xb9V>=_$@Pl(9| +zM42Oz8rjzAe1F%{F(1jc=_~!MJvZ1hMxl|&=xt{{W{o1EwI%j0B7-iv3c}DV_v{d+ +zz+D@WBUiD`-Sw^=v2PUFnBUfAG*xKE_@x~xde9JnJxNVKU^d|Q5JvjDNb~!A4z(a{ +zMZHD~0K_2@7629ib|g2iM#2sUHvqm_0($^INIsoWd4Dlx4D%M_4*jJUis +z3(K5F5I`_}QI{G90N(*D?RgTL9e}?8){+*sM$4X-J+E8yBPVvjG^J`&!yBtSy7xVR +z-y}DZmiGNY(od2*Nx6y9!Gd3#T}iSu6)hS>%w3Wva-3cd0R8}YFeRJ=`0PbS(mMd3 +z07OZ*4u5U{cq3^~vX-=SQt##Z1c5tqQUO?z^p}n=t}P{its$0MC365PvrQUuCF#+i +zuARQfUsQ4@LKT49mcCxwB&4?7nP9!t^&?VGb~bInnN1LkeAQWZLhJF;jq3`)y2oT| +zq)j_uKJ?3JXcaF2yiI%Cs@K3JwscZl7z!6(%Tfj4AIa^|LL+%F6hh0*>g-=eYXHBj +zcaJSP(X~xChL{ouCM96^fcuWGO91cf|9y+y_SI!p(v|rrrz+-uI69885HhPO00000 +LNkvXXu0mjfFm*{f + +diff --git a/themes/spinner/animation-0028.png b/themes/spinner/animation-0028.png +index 6bd4cc9330abe5d547de97dc0deb497bed4adfc5..eda5e3f2f3ab415780c5c7fcfc273bea1920cf57 100644 +GIT binary patch +delta 1367 +zcmV-d1*rP11?dWqBYyx1a7bBm000XU000XU0RWnu7ytkOKXgS{bVg}xWdJW|Z*65S +zYH4k4VPh|Ia$_%NX>>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdIXW;i7=LQQi~s-t5OhUYbW~|= +zWdJZRIxsLgFfckYIHxK6bK>Lqu_-Tiqa7nLjKONyM +zCO>6;)k#UFzdq`erRs@=zmb^#NOVW$Zu3N>S^-@-3g=fPv5;NAXMW +z=iqDbzu?P$f4(?lVk=0)#MN5#U47d1>PBXz382cK!4E-r68;|i9DE5DkXV2pGEMAy +zdxta<(|>8R`kjx`nG%HlKKMsa9}=>O--7Rg6UPC60J>)@>r)_Cau|*2i~tHVtx3Wb +zAm7+M8so~EKhxGaRzzHFW3{uFHHbI=7es3^B +zub$%9L@dB0{{%V20%CwcDGEqeo+h@zs9hU?>3<|le@D~;RQfCUCB9YF#_^Nq(Atg< +zO)!YfP`C!e-==E=E#Sa`84$LBWK90p$*UkS7RJkj@M(mn0*ReXM7+A@AYq7^A43|r +zG(CwPI_XxN1QX^|Ltop9ysf=$aX)Ud8t6%GW4!eCU!#AS6SsfoI!%urzupFoTbPOA +z(SH>mANb=9zyxUK()zi2-WH!(VB@u6pM1ovAfebB;&#keH;^|$Kc7QKC||u5+>@1U +zn6J9wjvzfgM-c_w$P;TYeVlPi+*n6Z0cIW5=htAOhW++&Em80 +zjP0hK9uquB14(f-)t-7?{DV2`uI0NVtABu54Bn#-yZweC +zI00wAoZh>S&DY{K7D~)d!5T7@Tn@NxyN+;dz<;wiicImrEjXzYSXjC36yswJ1!;nO +z(rSd*>aLjMrSpwf#-{RoLw-yXP80D2#M=ms#^R3{{B43k$oJf|o^4I|Z;bWdE`O9j +z0zi10xKDxG6hkhcuv24;62EozHc<`q#w$Lt=f{&IzsB+@XmbQ{8_2vJNRyyX#(QI@ +z@B{}yM;za(&lel8k)DnpB>oyA3Bj|0h_w~gIe|u5HF~C2w&|zTAzuMCo${nO-ooEe +za1R6$Kr(q^nB1mZZ&U?t3&E!OgnvC{@+wYYVQau6g2s{L55dPE3Ee{20^-bq%|cLZ +z>Yt+fx)!&I&|@BtDbCwPcT@a}=9e)CMp6Qt9tr|bZOBZ`ozye&?$+qMb-Y!5HbJB^ +zJkCL;q7i--b8z#EiKaxKhQc)PMq$9B@Z?8^22X;Hs}4QTpK*?i2A~W8(og`C@?5X3 +z+al2wOj-VH19)kG0yG0m8Gex&Wc$r9{o!X0dGx?BJ4|n)v@Od+XTcxo^~1+v=;UWC +Z{C5GqWb>{UMri;5002ovPDHLkV1jT+WpMxi + +delta 662 +zcmV;H0%`r}3atf@BYy&PNkli)M@M%ML(eb|5d&9R-mn6$Bsl! +zFUw#bjxs(R3igubNeDHey_LautB8K>T#*s +zIh8CkDwf8F34i7%3wMdzT}oZt$67{kp|J2?t@m)WQjs?KD}d+9oFmEOhJsZ)T_h7F +z9RU2OOeBB-z)zBw6%hzCQ67Wk~K1a +zug-|vxPOcmYF}UAD{JsY$c&gG<<7%mp53%>=4~iAkX(D0?&=8**S&jnv1>}Oa>k@0 +z3Y)s(9e_ud%crKOyl-NC`?lHuIZw~E^eg*`xmNt1KckD~e=?FSRnyTmu4%OardsF9 +w=fU8)A(yRN^c%P7*IH7p_ru%|NNxNFW}9j5=?@GUrvLx|07*qoM6N<$fHq)$ + +diff --git a/themes/spinner/animation-0029.png b/themes/spinner/animation-0029.png +index 2999ed06001988014fa95f7c497419cb2d7e430e..33f2683016b52bf778779348c8c96cdabceed39d 100644 +GIT binary patch +delta 1330 +zcmbQkdW36&ay0Hi1+GdGpNz`zQEj4Utcohbs!ae&=Y +zln9hGvMlLP<_C%ig2bGGLPd!T5K7O$!1&Jvi(sInC`d9mIW;epAu%sAH?br$KTpBf +zAg!QSf&Xz6P=PQ=K@iZ1sYUe&OZ5!QJVSn$0Of_irdKBCq!ud#C*~FaX$C_hi@IqN +z+6)ZLcRXDjLn1h9r*#KO8}hh%F1T>%`v3aW<-t*G9G>ql{*p+&xj=G#is!YxoA%Cr +zQ?~o=)t4o^oHmHop4XY}_*bAKlTrE2na=P1 +z1WXq3UA)Em*mj$zLVYXa&xs#RnX7ewSgqV#p&Xihe6OYHf17DqP6rYqHgP=o-J@G@ +zAkKK+Tb}l$>x(;6wS(Gs2^i-6lRJLu|2z9*?j0ua +zo+EkYAGkhtc%;bfto+U9cj@`GGfpf8*2m}F{=-!1 +zY@f^XnZdKGUL+S~g}>tKIdV4NDXCsy#`^;H3)3V@w;b1d;I!uo>%2-?+eV{fGuP}^ +z=Q|zV&3oy``CUi!4K}8QPhav_zNoF(%=6H%KiR$0+YX7nm-@|Q`O0#|)wiqeau#G- +z1?PyRFn<$XP_A9TzJ66D&m~!b>aJ`nM!WSK2l$?C*A!dxJ=Uu&qTl-bt*nF>er-)# +z>zBnl)g@VX`gC)wUpAfN{<0f_RXnp^i{DPGE)p+1s +zZ@RAiO@ZabCZ)giL@p+|PMpBdb6!{KrOPXJE+Ow1e=@Ic%{a-pr~JIth84bxTN!W8 +z6RH1uXd}0X1B;7ulDyD_Cs*gVKI&fGQpG1zW-DC(X!d$jPQ{O9J2wRLESP`9Ln2Ah +z`oX>{>{?Rt(LU|>M6W&4pLCJqTd+ag!N4SamMf2aetLepACR6OxP9{7L+-9@#YyWD +zch6M*>dAjjg>~7%QyRxVIe*gUYirfAlVhmtyK%+Ad&&BZcJ*<5e{UG+8$NvFY%HX> +zVc(R=wMn;Pz3bZ^2|d~ockO{mw~Ibo^!?nX#}+@D5B+yOzul?whN*1wVn)#!j}va+ +z)V;T975lLj(G{)x*vig1O)`GbW6o?8XW@92^X%f4pU?eaF;LRjrgA|tfBJ2lF44hdhR?_qW3i$v3E)M}(plIuJclyE& +z7+PA%5@JArWsBsH!zD++hL0pl;uas=5Ig}$cAH6Rjh}ud2wadtGJ>c3u7!5X0hp7{ +z-Is-lbq+w&F3nZiKf8o)dxjG}RsoPJbF%Wz`J~HyJpkh_JAWW-*@Wyh$N#$?FyqgL +z`arUTDkMimnP}K90GMq|--OQq_GWaJ^o!(QlCXeuS2CbJ*ktyWTo-zyL<*8aJOJ2B +z+DjVjjK8ah{g%TFkjqdusJfBhx*0?^SiS@JVg|MB8NeR^Kda%?&~c|kE@%u~e04bD +zos_)QRANOrDMB!@Y~D +zer+8^y0Q-w&m2h}*KW(k+$bbPNsj=2G^$Ymypp`E2;MdP3PA2FKLM%2mfN)RTh*@= +z3?md&5NDF74HUG%mnBX3V0>LatO+L^40aTI8%DpEf`177H;-XIV*Fr3Xy=-cEBe5z +zr38SIZUzxY&ioK0RsnDXa4^6knHP-W6tsb#h+6$K|@5)`8(0KI&>T1`Vh~-id +zJEw|!SGHo=&xzO)mGo9w{+7KHsx1%-c3S;vW)tvePVO1SUdrnuUrsw$omDTVo7Sw` +ecC#-aQ=k8l5OG^l9jNvI00000Hi1+GdGpNz`zQG41uI_MWG>3jsxtL +zqC}viv4M#Hs#icUL6Dd;P^c)80Yd2+7#RP#U=a+I6a`5JC#UA6G9>0@<|dY8=I1FG +z8>AH!EAT&V0xA#&DF^~OF}0{3VX2;hxn1z-M?iTYu<4b_IjO}8!HKyAK$^kO$f9nV +zgf;^M^BzwZ$B+ol)@j{Ew;Xs}nV0(B`v3om-!G4bd&=)4xsz9HK{DO#zKZq +z|N85%tWMLe?0moH_rl}bpI_YmyHx(`(!-IgMdc~{nf3K)hyAUKmfP;#6AQ?uGL* +zO+ANJ7nl0o%6ws5-+Y$i{0YxL%CB`_3s(5J&Q~!toTaC)H}&&Uf6w_^2YAn|D +z&wlR5PUiYeYBx7>6)j(Q>sIM;>$e)VpWWw9<_(zF&|ebj@2L2s{fQW(x&5*e*VoqC +zu^yf|`^e1qcQvfoew2sx+WukNP`-?Jx=vDe^J4iwE12XK{k~f*XnUakJ!e(bGiCpn +z>Bahqx=qI>CDnfF%XMzGd0xGEdGUeQ2EC2mvJ!tS%4JG!eX^Qom-S@tJI1G$>jgRW +zHvDOn3pn1NEqXAx&3-kP0|#T?)Hh4_3!ak`^=d9XaP94h#}k?FsGa3~?xZK|Aknhe +z@0CH(<=5X9nQS<{m@(vY)77-UFY9-5Uzo9r`SG4LCA`r~o+|d;>DoKl*TZA_O(CnW +z8@ZEZOZpaBPCqBk+39=F^3&o+4m?+HNb9TG?`5z`jqI>dFPOu?Q2L=xMP+d!EqLygv8P`Z$-xQE_XZKg|4|Q)&58@Y58V +zdM0%tzv90e#bV-qz7pET8PMV)DE4WVQt*dcnbSE7^!vM*7?Kqyb5}lFdc&$oXc|A) +zyvqFA{ro-;dzB8oKe5j6!Q`Vys=m+AIkarmi?zYEk9nW-xe2&VnDf8o^o%IgPQ6u1 +z`^8spT==?jLb}d3pPbs336psg?A&# +zeU5|nk$#^4Gt#P4xEK#D3YZk-azyJ~)6*Z1m_zmYc$hvfdlaNo-dJz{j(Hy2>BXyD +zRG3?2KKMO*>d~?I!uh%!tJfCsJdd4(Tm;wn`7t{zngkz>WqNMs<6l%CNNG66d%XYmp`G6+mKW62^#2IjUH0Kd +z_kqnbPP}GY&Gu7h)1PG$4iO@T{rX0&7DW!LH{|y13s<`-W4npXVvG4)!>O6(Zt*@$(Ga!0hhn>gTe~DWM4f +DqE#_G + +delta 597 +zcmV-b0;>I_3he}tBYy%kNkl4>@%%7fDu} +z;F&xmlJ9o+J_B6wNTMWOV}sW?2axRRLQ-4o>gpounzS{4^yByJtzM;ye;kOw3ZYcK1wy3BU`0p8#GF1ho?!th}%Nb+wd +z2Z|!8Q4KQC^?yz%>E1w0?wkOAw;Zo@$&;LjYUN7i?VwG`=OZ?)w;$-@-`tL0rJMM)XJQwQJz;GN`rp>tT$c0-e0X|Xd4zHQW(5abTp +z`MW{@KpZS5gg`an9G)>$KB$l9s2TjzAK +zL3AkhTl?RZR-A$wIj}ysK9I^pD~`&D4YDTy$--4z$4(M6SJ1&2&sG7|-tK>s6mx?| +zwJ9B?WosgO0J8_+X1P~NLE_l3B8ZZBk~I5G`3!)?bza$U%YOj)t)?t4rbG%-%Pls# +zXeX?&Urwutc%CBAOSj_GTC*BUEE-9-8Gw4rL}!y8?i+akz#J22Z~@`SdwGRT&wyG^ +jR^GeKzvD{=PVe~#0SQ-xAG)mK00000NkvXXu0mjf-ZT+= + +diff --git a/themes/spinner/animation-0031.png b/themes/spinner/animation-0031.png +index 9a4974392a82aad3c7c6820ba8f9f982f9b2abfc..f6ed4b2b3cbe1611c2530eed5d67900ef2ae557a 100644 +GIT binary patch +delta 1226 +zcmdnMa+h<0ay0Hi1+GdGpNz`zQG41p-5-f=lljsxtL +zqC}viv0<{utQw%0AV|y^C{&cl0HO2@42=I=um}c9ih?AAlT-6j84~j{a}!H4^Yavp +z4blpV75E=F0Tl>?6a)dCm|9eiuvE{$%roS72~b`LYeu80U=p$;a<;`d+*fKC$$YSJqu0w&E-Y2UP>pBWsS|)qJqW|4c^BJQkNV +zIZkJ`H5NXpXZty`KI{EYz3*jJ4?O$ca+WenF=eM`^?j+o)WZ5m?azij>ys}gS(hG* +zH}_lr(v#Jl0&nu%teF?}ROa9rjs{_b$(z +zAMDBCHrF=yV=a?J>D|uaH|I|%*6F{QGlk_y(hH%bc3F?J81s|Ed%Nll{(f7gV?X)7 +z!ghzB(UWe>dY5!3w_}dVlgN9%_w{Ffm5M%7t9p1^M#86gyM*08X)b7FF&;nVEZ*%dd3!w?S2H +z-zzbdHak0?D`&1I)`|4hs(YTfzOLR-WSU0#m#vD$(;gka@$d}Wua8|b%6Nl0_)onq#!^LU~Ep;eQs9v}SLo#AsKf4hSI)>ik) +zZvC$de)#R5*Hq1@P+}=i`6F%ZKF;Hu438!TZ}6@8EHbArb}mb9c}%jP-^R4~wtXxm +z^|rHKq}MG_-;m?CaP|qWS5K@fO{-SA#>Qt|SvYg@g`9nyjA!zzUSW?c7OQImItpZqNTnI{K(x^h`)zd$vh5K8xE@^Zrr8_`@vE +zI9-%Qo&`xvme^zEyJ^GZBRkxaf^P`Fe%kce;&@lR(p!tZZ(rIUJDj;6nNv|zG+RKY +zOwQKkRL+5QH(pCkH2GgKB~S3%T$|6$Z@ta3zD=;mT_k|j5#s;;F5Hb6p!q|1I{M^?*IhgljJ^UxA550gH)#gqza_zO4Qpb6BD-MNYl$`Tjgn#?{un!(d@W0(RG@C7xwL4(3 +z(ngh;YCoI!H9gK^O4@Bz(_2jYb>SovIu4`hT5z1pfTX&*0oXt6J!YjryJ(rDTebZ| +zZy)G9Wag+ibSh?Ro~K!GG0Hi1+GdGpNz`zQG46O`|&Xx(t0_8Zs +zZYfFxN*Wveay)$uC?*IJa|Q|(B{D!LJp%*dKNl>5fs&#i$>8MFyi|t7yv*FhlFa-( +z1!IG>f?@^!$4x*5!XO1fKqsaa)gvs`GcfZE`CS5(7Xq7JnVgeatPq@-TL7dP42>-6 +zrb%csFfdzsx;TbJa4wy8yX>|B4~z2gxBvg=3+<^Wh1Trm||iO#i83K4+HNzO27{tUFjg +z*!VgWnXG0B`ZO=y`-_IjujSX`cuO`W7T#T)`AIcHl;hj>qWEX32{&$M+;cXWY4>SE +zq`$C&g`3|S6TfrP51-U;-@{a-=smwoc!%M}FaIahA7&S0+V&))HdkQ&u^((#UhXVD +z_Rq`VX7WUJzvBv1XDpax_jWbg-K$J5?%t@^I>(urFsb3-s%QN788=?_YlvF%+C)RI +zaZY%Rnm~Pc;Q7FSk}j2F#>@1-&T&v}I`ZTE692eX{gaAp5}r-Q2DMk#Jg&Esdp?iz +zWq9pfz9&s9RAaxJwaPoGKT+Q;E#bMo?)98~ulm%dcqDA`ouNH*=cHdNkJWdo_?>^W +zWaqPH?f(x&u6VieoD}x%n0=!nT{`L>H>54CQY{pGfa8 +zU_8mf)X;ig^~J1cQ?o_$Ov4++iYhOdcrHBquv+Nk)rkr#C0_ZxbhnU`WcmAOam44# +zniab?2kYB)sED)M@;hy=WzD@K@B06larKQSrNZhP_i_2l>F?h-{ZHPBcv0T<@rQ24 +zioB|SYRd`Qp0YP(^Bj>GQb=iIdy?mDDUOm1Vh0NoBb$^)uH)rx+qh_D|VRQbcJ=;EQ +zJ;U}Ut8&8T*QeM#4pe`A9Pin=Tkhhj*prqzmw0y^Y^?VcUdos%WMd`es1o&cwM6Oe +zCzT#=^A58uD=uNr+EXyAH0k>{&kB>NX1ryWwJkjhJ>FC%CC#gQRn}MUW}L44?$SiF +zt0_fGQqYQ953J)5uh``_LZ>G)vH372H;1Fy>eOK;rqpJCrO +X<8F7=?H7Oz?t}E4fD52U-OrclEoao*n}Ai&Gnn}M|H7qsTsljeaM1X +z6CV1BtRy9AGl0fWZA{p6aWXyaU7T0p_jfSlJd;e=+E}mX*dpk@jYUsU0(P`4$=EhB +zRL4)dp-{|@j(;|gEogkHT1WaL_^=mv4QF>BVtqRIn^AN8Njjf8F*8K%AxOKO~qn;m}C8O*pCHG!q^D)A*7F2V>r?1+UF!t(+ab +z=nBcPes`D%08C0SM%^%L8nQa@>SPVb*h)K|#i)~l?0rcPsTWCP)Oo<(xb0F&sw->9 +zJE{ZCy*%bgy`UtyGl8=2cqNzZe6Z8l-eINzO`i!9W4@ae935iIL0Hi1+GdGpNz`zQG41ton3KhD6avWf{ +z6eR*Bjg5QVeg^=>1VLiXK%t^U1_-5RU|{^`f<-V;QWPW^oSd4M%8;0snVVRWnV+X% +zY>-w^tib=c38+9Aq#y|B#MGjCgr#~0=61oS9|7fsz@}Fw=cE=Z1SjSe0BHt8Ba6Ce +z650$5Oz%Bi977^F*G}Wkdu+ht@;c{T{o`X-7k{0zQD^Dy140EJAB~;8HciaEy={H% +z{rv(tuJd1Cnb|)7&JjcN&qnU`KRvEB&h1(?KD+*m32`qIkxGyQT- +zy3ICq^}V6C-OG1D)7s9tYAOp9T?oH>ilj`MjmOKh>rPl4ZgGoEcp^_JLY +zxp(9D=nK{<;bG}<+jk!gzZ@CtR~)=O;n#yT@tu)(45Bu> +z?c5ONT4^Js>%@&fjm|N)iq11k-rRBGr +z_AgV*iZ*7dwC8+FeN2T$Ac+~DH1@}G0+~AnwDhX4pzrZtX~0)j3`xp~@%$nX?0@FaI|5-6z`OY0Th*OW +z|4@ijFSGaDpFt$0oSd~iMij7c?x-k<6({e!hl5_ZQSG@|FY?i{e?O`m2c9R;(FK1e`a06(4EF +zzyzcnN+iMV?Tgr$CB9;$K|2-6kQN&-s@%PznjK2jfO$m|w4AGPC%K~N0F@R}!<&;H +zXs06-9{p$3t*9fsM-rH7L|2p8X9C|GO4buteT1&qEgL__4~=g400@xrIwhi**8l(j +M07*qoM6N<$f_iAeZvX%Q + +diff --git a/themes/spinner/animation-0034.png b/themes/spinner/animation-0034.png +index 3b053defea6d5b6c5cf6408acd8d81598935db6b..2851ef3b109f69058707a6400a094ee5f2d4c16a 100644 +GIT binary patch +delta 1041 +zcmcc1w3K6lay(xpiogF1BB8uFfjge!6FzaDGHJdPEO5BWk}4+%uOuG%+FIW +zHb^TdR^Wf!1XLglQV;}mVro%6!csj0bGzWvkAU(*VACs;b5e^Hf)jHKfHZ@lkwx7! +z32g=jroEmnjv*18OQ$zZdZobQy7uw^`c1WSPAtsidKEo$C8y%f??PSg@@{Xt`>l4r +z;Ro4cbJAyj?wCBg@XXmt%i|SCJj@#A3(qu;so(B)@AJ?4J$K)i-?_X&kGlDIS%vvrup0G+=^Z0X&)qz*?QF05q`CUxb6|=u_<0xQa +z=*<1I^zD_kZi{a?vD9VobCxBuRf^8| +zxN_y&zP=|*-W`uU7SFlvqt)_l@`mpOZheZIv$pi>8>Nl4J$GlnZVG$gQ@`ufTGK*q +zo_(8{oYWTX%f6Dn|54=h&+kN*h%di(*HBWfN +zwrg#}%I7aD6Zij25dNw<#YDc<&_GbIxI9r^?a_e~TZ4Vq{@da7L)L@wmgEJUZ+iAD +z2M#`#kUilPlT+sQ=u>0TlMU;9U)$m&{Q03Vn=^n38_mAV^gRmU0 +z&c>V9`#HPyGCD2A!h4?vPv5ghRQdeZ$L|?Ky_Tq+G~~J@F6MqE>v*2xxhGfBcs6b* +u>YFBX;-p%{lUvJoRL*RPSS$Qpp7Yh?GFj7Uz`Vf4z~JfX=d#Wzp$P!7#=SQH + +delta 323 +zcmV-J0lfaD2;BmZBYy!TNkl#RKUOfuY8a@#NU$MB)qiGe!JqT6<_$9L9hFDL +zfT7lhG-g~Lopwgnw~irM5RXIW|J{p?XwT0QYg})RVnphnRplwguyX(qQS&7gcsbi{ +zDd!f#n+}%%hEaLigzh=a%=?Ks5LQx7yz{1#Iyj0$F(d<6fm*d@uJb7c>aCXQL*r~E +zc2lYk71;E2D{tT< +V!X$#D9)17-002ovPDHLkV1m`|l&=5) + +diff --git a/themes/spinner/animation-0035.png b/themes/spinner/animation-0035.png +index 6f402ff606f16fa7e385677dcecf3fd5e5e8740a..2bd3b0dcbd17f182023d4d609f1103a8b128c7e3 100644 +GIT binary patch +delta 959 +zcmZ3@bd`OAN`(_kW-nPUs{r(Uy_lUn_8@2T#%WUms$j)^^$T@^HP$U&awcFk^mXyl30?; +zU}Ruup>JrYZ)B`sXlP|>X=Py2##bM%4^$)oQWTPzo62BdUkRtBcQLaqCNavWf{ +z6eR*BjZITj<5GcQf*>(xpiogF1BB8uFfjge!6FzaDGHJdPEO5BWk}4+%uOuG%+FIW +zHb^TdR^Wf!1XLglQV;}mVro%HJ={_~19Q9J(~p4iLSWM?lXFsw6@n9U3xG6(p^-)1 +zGzo162But37srqY&b8CHixwLQxbRN>Eq^o4_Tlneex^BGtGb?Fzid0n;NvEp(~rMa +z*+%@(D?XMf>@Jt{slzuW>CAVT1mPc?Dru4Ss~fBB=J%J@#}?X8tDR}`eX?iG(N+FF +zm#-Fauxj12vC6NnXKl)9Gr9J^x+`TzvX}W{UZ3)dH|I7yiujil%gHTz{nqxnb*%gO +zoc2gNh|P}HS-3QRZLPk)fMffFdaDNBdV%wbl1t=UABlXOU3y{d^R$n>CBJ2ymptot +zpLp_()dzdIz5_My)atoj{<293Z{^%~!}gH#oqG!ZSGd=`x^&+^!O0~1#i69FUypvi +z$8zKF~OrmlC8VgLRjzH6VpWtZoBTBO}?vZ@p>U+%YlgW2b#y+O$= +zv3$4QEK`qg*!tkewOL25TwcGU=jd9i$T>f|nzy^(m#TdkF85pL`Uh{jzx7*}AK$FJ +z=DXVV^={&xMegP*w)lbF}lF|jo1oXN54nI!Y} +zOOJl#FK3R!Vsl#gf>Z>?%k9fU1Ft6q35xJk=g5HNe_%h*d+Y65e +zI{j_V&C>4~C-D`z6}aoJ&*5P(bbj*jj-nd-o+5w$19y{IZ`CXhjk)cAfI+dQ?Z7=l +zk55n3zW$az$mq7IbN7jv=HJ)0ZZEp*&FA;#hii&sk*l@FyYs(hp8YNMTp{Z7-|r5- +zQ6(G}j|>Z?+ny%acHGF`9IoxR`k6(x5T{r|^VZdSEPfrCba}e}Z+`c6bN7BpcgZiB?Qqj|Pc_~9XDnl{A7G24KYGI9>TVcqmaOi6m;Pic6MT1_iY!I4h +zG$SYcUUZ&mRDu*�r8T6%e!$%`lX$e55AQv%p8fT*;ZPWPfspvXa4-Y~c_L%oOeP +zFp`wOtrUEx2zL#ZKV2_uk-naI=T%aDx)qNEEj0~i2D>58Rxoa@8;qRNjPVgWelI$A +zj$8RvykjPKCoIUZAa{AhO2pJE5M>()+l5Fax`uZV!Kl +WtQ~;0BIp1B00{s|MNUMnLSTXgsm#qUEy>U?$wVr$A1EdW5_1L$6(ur2C_MuM<3ATHf`O8vAj#n5)Vx%N#JtSh#FEVXJOyKe +zw1Q#<{>M!~1;QW&K|m*_7KPNqE!8tHw+lY~2q-TEHoY=AC$(51I5D>XNHZ83S=3FF +z&}Lv@D)n@642j_Eoz@tn<;cV0`uBhQvy0{5F16U!MzzB?-_P9p8I!7I_1-tVTJ$-*GJii4JBPsygKXObQ_G0H +z^_AxyR#vm;SZ!H-vCdjAhJSkKbouuTtxV3F!Wjt?z#1YW5T>TuN<}K%VobiaQvg4#jTH}cLdIwX3dkb +zTK@29`uCgL#ZFf5xo3Y^s_e&p?-#ER*H1Km{nhZzGrsOvm-$iIe?BwmU$rmPeNe#8 +z^Iqv`#adVWglmHMvHVU|MiBFROOYp*l$Ufki_{`I=^`l_9F&yOZE +za{IIy@N8e+cU*4H;^%A5&A;6I%4xx$g6~Q!+091}|G9i!{gvSByP4-?@3-XzKfdy& +z@k^AjgPG~?*dyLo4}7&xblvG4Fn#;HUvu`p+Wp{{+NYB|7ZP$W#P70u_GQt@v%>!w +YGgoPHKfXE*l!h5RUHx3vIVCg!06jvn00000 + +delta 53 +zcmcc19y~!sU&_ +zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3vdk{c@wh2L4lT|!Gj5-f+`s_Y=kzX#0Nu`@F@ +z$pp&XSRe`X3Ft6>{+QuE6cXhS)stnj3nk{5xuB7*Te-dIiu<`s=hH{e@<8KsFhqj4 +z-2U2;Q-NF`3LcNVKFfo*V<#O$bT_<(=EW;(FpWiSJuwOhXr7qr +zj_Y|esldc|-cllNl)A%btkWRTsFE<<9I(dEoe +zgg7SfDVRA+mCRXiglV?yA*Y;kDR5d~xN +zL@AZ4)L6Az^_ps~r6GMZdteIhDS(6$N3){5a^nt}+9nTxcReb!+``#K>T +zJf!+2O!slwO{wCx`&jo$HGD(&Ni}>!_enK;L-$EFd_(t1HGD;viYf&7K=Hi3d(5Oa +zWSW@9NmpZC7i4vAmU@Kl5rN@9@=uUoliKY^ok@@KqbGcx&jSk)z@(0e9l;_^b>6 +z0|^X|qww2t`Tzg`24YJ`L;(K){{a7>y{D4^000SaNLh0L04^f{04^f|c%?sf00007 +zbV*G`2jUAC4mu9y$&hLQ00EmxL_t(|+U?xUO2a@D#qo0|6R8UYan<*K96|6A)Jjcl +ztsv5me2j~vlh}=!bo>7;vkV;W+`};T^!O0w^SN&C?v-V^WCHM?AeH4&t5u=paw&U# +zc@F++Cg*dRks@GpmO@Znm9nOk?e_cd{j*b5*OC}WK*CT`?law7&*Z)La?Z)>Mhqli +zJd@pqwnK>||4dTYBS@dK1625js&Cx$xJf!6UlW!B1ypb +zw&8S&^Rjk4#fe0afN?o8=`?!=I}$+x()OdlM6xzX@pwm)fbm>B+DU!c&{cT=63T|Y +z{??!74nRVXVr!@NSmy{5kQk&`HrQF&K#+j(g~PD^CP=^qJ5p@zM38_>f)vM-i5&@; +z6r@3G7Z)dT1f-P>r`GQL;wpggbwhu&Gf9CR379J0wF?Sex(E_5DM+UQ#f}6_`R8K#%}PY9EU9b@wnNEd!9QX&RMfDfhYlPPx$DM>^@RCwC$+rdi1Koo`HbH<4ap@InFBPjU(TNi?lU>6~3Q;n$j0#+CoZS75L +z)2-nDEefH#fuFfEB)+}5E?1Wqnw*{sz|y>(>25leA0O^Zbu?i`fWWd2^(mK9%FFvl +z_yhRgiX_`QJ2_Tf*CI)#4q#n_(m`GYVgdnrk*s3KF$_}(uq}|~Ln07Bah%FA4BMR2 +zfwE%_C +zX>@2HM@dakSAh-}00027Nkl&+RXA8IVqnqX6v=>l1nbR5JHIG;|dqPa4jg>4yoY)0000< +KMNUMnLSTZ!>UDtt + +delta 1891 +zcmV-p2b}oH0_YAdiBL{Q4GJ0x0000DNk~Le0000f0000i2nGNE0QjwuMF0Q*0drDE +zLIAGL9O;oE9DfTF000XU0RWnu7ytkO2XskIMF-dg7Z4XH8;4t{000K)NklTY8UYZEXeh#?k8iL_#(l{Zo%*%QryLl_}#u6xTUhn0xXURTOF5_3Xx +z;WlFCwAbCkid;Al^?|*hMI=O#2nL5l#`vc#6Py02s((4SyVDo~{$WSc(x#fgKZ6c*ar$;)SP6Ox#@J9d`7#R2~V{C$RzFRJr|LNYg4WOp$y54C&q!Y+=I-LOU +zw}%fO{$p}-5)%^>7#|-;e}BJ!PqkV_Hk-xn?k?WFdxsY*^eXlMukpePE4hlepZI0!-rR#sN< +z{Q2|mbzT3t)qa&W03UgPwryj7e;0qHH*aEQW(EM3)9JLK>-xX0Y`9aYRN{w)g|d`VT9zd@Ha6ty>Z+WdpU@0hxxKwDS5{W! +z+<)BMRw|W>wfH4tb8~ZBD=RB}HA!k4qtw$>ev5L;}%h +z6q!s0hGC#oD*n_eU=XxaD*j{`1~QopqJPmS5{U$o$>eukLkb~AhKGl7e0&T5*xTDP +zU%%e|rIV!m`t|lNdwY8(03075V|aKNLWq&BA#L0Ks<*e-uOA$|*K}Rq>jYBQ^}U0G +z_nKGl?d^qa+h27JsVE8sfKsW{cz{xLb9m2t?Ro8Y1<4pA06+-2Qb?~oul*~5{D0gD +z>k^V(*nX#w^gJcHRq{*icLYf(CAC@&08pt^Kq(>JK@w7_Q~&_AS`C!aOWXV60%LJ; +z@v%ec^2FE}rlzKRqj#&O5W+8CyLJt)UcJKZ!2z!I^?m>3$&;VkT41QEy7=ciU*pD& +zQN-hMjEs!9Daq<;xNEigsruc!cYkr?#&sA*Wf4Gokd|e|rl!6|u~n7>)`>cs3duilbO8#oAt~nWhQOIXLJ3 +zdeK`S+O~aqmEw7a5WmhC1-rm*!C@zaz_#u7*OQiIK?s3-J`c`07-OK6qJLJaK?ng= +zRiSAbG)?ot2q7SZKnMZO9WdH}c0UEA1PB2o1o@)^Ow$AajE#+T2YLJUZG^*NU$tAe +zZuu%Ss~7~;Gz~o=tuf3B17ivpWuS~fVHAIe#=toTAq1a3eL6K-Z9#I*k;~;UFfia> +z-{0SdloE=fKvmUq&j8>!9DhP}hm|MmaX9BVIy!=7S&dohdeXB(14jBCan2#7 +z^dTuhOP-8Iqn&TWIOn)?=MF-lkPj3NhjDUpa%yG=mGsV`PzaGoq<H +zQ=aq`qLhL$=7W3cIgSI<1nLTF$&;g_qunW)OeUeKsy|WU@i;8YI@gnmqWI^Yo}QLH +z*|m~y-@ZjpPmh1CRDUY@zc^Rr$?@^=-@hjrW1T}H*+1 +zw1)s72q97l05Slo8(Jt7LM#^ZeWqzD%4Gx9Y88Y4rg?&5u>i+$nqJij*Q1|b0w{`t +z{{DVY%Ajc~B9RD&hK4|CW83lO%^PT%2KP?_3xMqg0ElKKJr$L$t*sv`mCD~u(?mX> +z_xCT}UdF3?Yk$b#o`-V|+qU62jvrpV`TF(i*AWhfVVdTTZr{QUPfg!{XOwJ;kQ>3W +z;sy(}ab_#ydW*Zm=m0R?u$s!j@RZ~L1i8SI&7n3$5Rx`cx}f<*6Qtb~&N;yYippS; +zY@XdT&^Zg#={faNS;0#LO`y%g7_0~HIWxP-MR~I6d@NZR=Rh_CUslF>d9suDI^+sc +dqiiSl{tA1=D}U-QF|+^x002ovPDHLkV1kE4d!qmV + +diff --git a/themes/spinner/lock.svg b/themes/spinner/lock.svg +new file mode 100644 +index 0000000..19c3df8 +--- /dev/null ++++ b/themes/spinner/lock.svg +@@ -0,0 +1,283 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ image/svg+xml ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/themes/spinner/spinner.blend b/themes/spinner/spinner.blend +new file mode 100644 +index 0000000000000000000000000000000000000000..314aa4b9f885001f452dfb95ad4187ebcb5e029a +GIT binary patch +literal 737108 +zcmeFa3!EKAl|SB-38V?IJbVxZVGzaW3JHWqRLHy%xL_b56G-qiOlEE}1Cz|`%p?R+ +zb7fJl=mNe2ix^Qc>Z&L{BCyE-KCZjy58V}lAmWN^*7yE>fR82r^R23H-|D*E_jcbq +zlbOlf{!Gv5sygS?sdG-9s_w3?+qQJcg^QQ0IBCPv2sbrN?$no4?p$Uw_5yj!UpGo2OfA?{jBSt?gP`? +z2M#&p5Qzrf-a4E-GLWz4|=+K4887*Zco;?*FrA&u*SIYt|NlEq1?{F4y~W|A%eGx3|E)jg5`F +za7sFt<^(NH@PUu)kM~8=w&2+>{9&s4KKt^_nKJ`BA9T<`EwCHyDD8U&Z7g@fPlyi) +z9?%JVfWE`>sj4f=4L#WQpKAV1o11p1z75;JhOUiiyC?`7N9DVG=o|Da(4annQ#L+` +z>{G7)L+7+P`=V`c+7fnRxuL1p|G|fLCav_B2E-Ba6&%G!%9Z_54j-`ar^GW +zLTPJYf3y*DPNoxf=a>!~;hHvqosb7zGY^pVV;RbAIvY3cnzpv>D0~s?b3zl@|LF@t +zlM@}Pn1DRUF`0BqS$M&Fo7NE5meB0ijgN=~S +zQ_2&K{Wc$=RsKZ(5WZ#mKk9((Q77$=Jn&)Klz9`WU)GJb+V-Dl|CBfx#CqCU^f_w# +zfsr}X&xr#(=$HKuxWq>pPS}C%l(g~>K-if1xF){K3${c#VmfeGj(nk4^F-#MoOTyE +zo?%+rwiEQMZz7?{bQw?RioUV0A?z)B8-@L7H|UXmKs!3+qtL0HM?BaF`8*}R>i!QN +zup@0wUXrioA9g-uMj9usE2a0fp6&XKt^)f{gdd8YnxP}u5fCy74Ecd;W2T93+L4RO +zx67=48}xhFR_Ih3<?`vcGQR)!&L*MN4l3&&jP!8QehqMoQFdt>)XX7NfhFqY>DY{71{{=UQ +z2~vle55SjjB8_tJ0&kow0~~LCyZoU8+y48~|DaRYkG8=z`V(X_a>d32gBz3+pEj3t +z5bKExzhXJ+LH$t>IM4&^0UDgbV;ALu{eS~qf*y6D9Q@FqnFqY6G;nc(Klp$i5NYIt +z@4mEy$a@)2w9)mE@kqnw($>KCQh#Kh2aa17m4@yiJ5S(1r^q*Dfjyah+`LmBhQ19_sekRLD&9M~Brcn}x)ycUR9X0l>uxJYK_BAOq?Lzww6BzRP%`eW-7|&PujN{Wzg>`hk7zmN5-|5ubU`wVRJJ +z`vhMXtV9o~`_HWwLO#`20Hm!Rt?ZG`_tK^THJs_{NC$Rr` +z`kQTgX@3xN-D~I?av9lj_O-|wDznqz1KSw-p#LKeC+tU`03GnkLD&QMq!&2?o4dXM +zd$NDyIx213m-OICI$Sd!^uQOWd|*87BJB(84_%LkzuC4&9XzFd!5pC6HEci{T)RGk +zbejH;x@cDyO4%;f1&B2G(>6wyz!zv&!41vzL5I^WXDk42h3jV03fu`E<6#%HPudgM +ze?0uGobAy@qvOC2px>x`$x}81K4}DZi=BpzjBiBtf8e9shL8{Sx%tpJ_(2|=QcqxW +z`U2%dxou}RZR1NlYF+?Z;^7+p0R5vL!Ecpx-~*5i_8$-Xhzx=KrS389|I{t`;zWA^ +zrM)40yX7`6ui3vr3qEma;sXbIBOdFp%YhSh+PJU{_|S&Hm-67A&$c^kYp2=A!2>7C +z%3Tv5{N*~*2jB-|b)ucpp1}TN>0icwOYAJ|55|6@%aCsvnR0+p*R&`2fZk2RRzg?O +z|DjvK5BfjpSP$%Cm&4xB2l7x4dBVn$ubu^g2J|Sm?M`1oIZoh%53VVPn@`_BxzIPG +zK7k=001a$EmUa@k0{f#aW8qt{J$O;aMt`Axk8+-Nxv^geSK6&?ZR3+S@<2~IrkQ8s +zp^Usx9(O{|tP9uRO`C#7$|A>l*bXOXaN0h>GSEg{6CY5@mED1B{6ftGCBGT8V__rk +zkOR64>_1k1#rA{0eInmZoBDHrQWnGoT+?oDzR|zpi)+{JNZa)Qhj;>2|Bosc8G@J& +zJlGrhz%}Sm4mpLt>i@_GADr|JJB@PCz+Nb~@$7tD+w``*CBGSTh#vxXN?Q2^@L|8P +zu$Rag*dOhy)wf_bqp!Upb6`h15B1=*^K5(b8s$;f;2ULk@onl|0YzQ9g-u +zt*6ur8wB>R)t{t2@YhlBwNJ>6G|FsyGOt`Ya9}$?gRk^yu1ov?It4$_(B8GS3-rQI +z`2l=E(xK6I@CUbDeN{fI-#2Wo-BC$K+s +zT8mH7Mu3nHP~;s2v`@5wY5D{3cuiX1l)ENAXn}_`Aaq_!JIc|*UZ?|pfO_P5i^v&z +zmXG$KjJ^oSYviMxIDir5%HEQ%>}_b&a{$Bx$yeh5=%lRbIAHV}*uNG(f^hW23Klp+lU@h`Pk7?;e=AF`R)En3oHbH-uwg%%mu9**6 +zZG8HJTMioF!QR48*&DRLM;RdWP>tMnJB3GJf8o0q{L-ExJNz`T5%}PQO?XWhWoI{! +zxPUfa_uBZ}Xj*y45+8Ph9Dq1QW@T$!!(PmHuSJHyXK)QV<_S&6-a=c__n}*~1N;H2 +zIiX+M{L96{~t<_<(xS*vr;~)KOFa7r7zZ +zDDB3+%rxZYH6U<_BX#GPM;trP#RCq@p)<63GM%s?Vu7*YF0?)B8hDPqRh$4V+J`n- +zw6T4kIHXCd3!~4#{?8wH(x(ss*gK66g{R*GJ{%QP%a=P}5NRQHvEQ^3af49m4I_O36Cw;$n^(S&GABgDR +zAs-O^JY)NZ(3On)&; +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 +zpY@Ruj^YtgG_=@-ubXk80v+-o#PD!k@a; +ze2lP?Ft7)0LI@hzXSG1`b>kawaO9VbT|8|Pew4dXe4|`}y^MVVd!1nHW$Xx9?PFEP +z3VCLg9fHBC9RjPd*B)c9%xpdWW!id_y$Ed?qps~a^DGO2_9B1Ui}esS^Zn3x#O&0N +z^^rg8BO}UD_|H&%RZlihUz0GWo+|kV>ks_H_(R|yFEajN{DyK9uIlLM9_kxZv*#+O +z{8i15wj00j57z$i^dCmlcuGk5lE8y3B-)GoX)o48RDZ?T^=HHn@@IXlhjJ7~$JRfn +zr%L|8`UC$k{t))K0GNPPackiD3l8V3E@$Y04`lq;~8u}@&Hmze%+?C1(4_Ui5Gss3IV{L;kx{Lrgj +zgZq}b=D85zoE?v={!Hk~x%viupR@4B()%6zi5TrgzH#>A^R=;fUeYAOQtnFjqFj&@ +z_aAH*=f7+p+h6Paw?Sqxxc`{@Lj4@IaHoEb%lcU#>u0@`tJeBG&mNh{UH7Y;C0Dt5 +z?pV&h{g-Mz5K|&o%wq^n134a8<|3?B +zdoGx!f3sfy@ANoLxci&WQS&)M;>E#+gFWwXQ#jK?V*e)Jxc;3fjBPxo+?Dz_oDXmR +zW%zj!>&|@iEH!>I?f+%9dJmR)SnH4ZmEf)3srNQ~^447%FK1wp%C=`Qw|M3M=m(+a +zSucIvVQ1s~&I1p~x%BJ>3l=N_y!oc*DR{(;Chs+e*)yvmujza>Dvi(GU7UMLs@c{D +zp50*#s&vp^FLDrjB#l#hv*O)MT;w;Ivqd1zIo=WS|21kZe34uo(%I|=FfQP)6S1Jg$X$H@(zTGcy!np|&bT>~W= +zkoi;`-gE1*mE&srrR__Xbaw25o2R4ihbq%L@EL`jR5-mxtIdh|4M^DLCWV_Ft +z{|ctk!{HU@wxy?vr^uhL-}e$0UaiwE#Vfz_tX<}mxtV(QwFrL0XV;BhWAGfixT3`6 +zQcq7K4Fq#|%;jU+ZSqUw)EXI^)PN*GsY!_8bDD>aPdDFmlRR&I;B4i85)iN!26^I> +za(bwHk)(yDsa4Y!+OVFuMNY~CTHwKtHC;ja7G=@U;HtLB({drtHG>bJibEowH&bPd +z(Z80K*$%OYHzxow~ +zs=DCc9wS%pZ^Q2kT)BuxxmAr5|fM_sC?DRqg=F`D;Mosv?CT@ZW=3dT9Sk>A=eYqpZMP8+foeKcR%_wHJ_aO +zBMl254*O^3aQ$8n{Zc(oZxE^jf@kXuavYC%a;*1kRH&ZE%R8H9`vk2%>v&UDFEDN` +zhyTFh58%CMVclDlzwrqZdFHPV&*x+woP&S5{fqejE(4REBh8fg^>R$I8M26y2+k5` +zK0sD@pQ_$ap|`4|Ih@WpX|LuqE0TVJaW!Zs8^QO;{zHFL-&b1r%^1gsH%q36Ow);Lj8F +z=OsaYUzBT>u{xyn!FHEIZSVN|_3aCf4&5h`^d +ze_d6NkAWd*Hx~v7!3F)3`b*-U+k~2a1xDHra3wLy_?`c8?SK9^XMa$|&9w%;&cN#o +z%ouptO=?}8zsRINc!%15z`w_&A2R$tXW-*cT@JoH{KxKAAB? +zSgIA;pZZH;|M|j(_qX7v>~HRS{T(JQ-E81a6OUeI{KASu+k}?y`MzlQxbOS=vujhl +zbrB}c(Ye&gs4)qBZ4(}plX8?7T{RGUqQ>-&5E$QP-MJ{C#KdZEuU*-zSP!G0*LP +zOcybD#ePWrCFzIi{>R@h97-^flTJx8gg*D`kR> +znBpF_?lGkvtO(ONx9D$d7QRhG|IVCxw;ZI`>t}bq1NX{2tJo&5IrE9|Gi1tZ-&ga! +z(=X;ew`K0*8lRB(F5LXQkEpQ>dYNmAb~FgSBn{kolU{6CvxNPXuxqymE4lIL$&clVNd6Tbalf_E{8&y%exxTqmb0GBW6AmX;w)^>Lb;~zkY^M;cf|#=#v?l< +z%RT!0v)yWMv?#ps&MQ3c8*0r{=5jrUimR_FuAo9b^o_BD^_*$+RJp{9!e1*yUH1JwMc5S`=vTGyP4rM;> +zd?WUU>b?;R%g6Dpm+kaSe?3H)3B}pq@+R@6eFiin`Y>#(3VJ7h$Du#Gd}JeojpO(;Gr>QD>=E#_Aif +zNbq!}H@EfuGE#b8plkFQZ{{sC@7-8nZ`Zr=l +zpR8Zipn+fxZ@#mNVr9LonLz*Ou@9H>KOq*}S%=7Vb@6nRp+K8s!S?z$V!`)r#W~>g +z`__&9s#?fz#4>aA`*imkvBJ&a`P{VsM$EiN_8+W&BQ_S_h%wIHCk~7;f!~Pb-|)z1 +zF&!KMHGix~9_m +zAN7~i|L8YK{14xVabCAeu9d&?8?ig}b42$WvCN0U{x{y=h_Sx$^3UxbyE62fu+!Bu +zb-UC1C-s-aKetIGdE-~8uQ$Aw0~2$pP;=s>^AEh +z{onmYjP&E?_iw(U?)QNKs_=WGza)OI<^{%2P^F5q6}}PUeb0E=zhKD|sA1Y(q_;oy +zm&E?~MvV8jP_eRq72k+0mqnOdC;I|n0zQYEb+h1`19c75HBi?;T?2Iu)HP7oKwSg-od)pSdz-W>W7ZRLPX~8h;bh&5f^t%B8i?(g +ztb0*#-I{&B&u2=6T#FM0EAIX9fgP7$Bk!{+9ToYkPWC>j5})4BCfh?o^ND}Iwda)Y +zMt;v)zMbjs_cKO+N$&UYyeDJyloX%(NQ%#PC&7P_$isEJz%TVDPu7J&Cpf4Zy77net0hm%FDeZ3Px_y1$$ALZ>gD&7>m6uh)??6U()R--+=zfABXmXB|Y&; +zPd$-uK>v$qdg7Cw@{w<_7lyOe0QKhtIb-zfu4N*hvEB=#cZ0SQA?v|&FdUSN<>lm> +zh`liAXOnF&4E85?uL-SHv2)29WwRHC>3^AHoV_qiKKZen{PMe#?_IG_h)7R<|~d22Ne7>|E7e7%pGMGBhtk4*iHwW5xdmUh&lahP3;8$@RT3;&oUrscT^W)Z~ +z-D{WLPci0K{=MX_pR2UT0&AWQuy~JY-)}~>e604uIQ)lu)HgDB>^$!y*U0lE9yi{o +zpGRhfcVCM9Ju52NY5&{{qwwO3LVB5WdtrQ8KTq=w%zPvI`C9$=lIhuXm{0@ty)Y6g +zDvTEXy<|QgFZUiTOkZ1S&n5bKe8xa>bN8Ge9_4cJi+d=LLv3*GYAx6Hi^J~=T)Bux +zxmds13>sxh7&S4BE|=i}o$racuU&*naX^YL7HR>Vfk@zCUKUE0>MG +zaX33RLXl}12)Uk^Der~M`ylSovHLSGRP)@;hn=nWep?at&-}6V-*M(|FBj*e^*uVu +zxLRZp_vk3R=|Sah?j9Zf>)suDPdV-P=rHfM{m1lgC=`{NtN)I(C?oanIGZ@SjFWEdvx%=XWZ<6)28~k95{Rx +z_BZ-VVt@5J&gT9$uz$6CbeQ$K!5$qZ9WBZ0$h|Jy^^TKvj}EgglXA1!Y|mufql4?|?E8H_Qz9(?9w_d~lGecX +zi?fNIb5`10BlEYz?zVqRhWd43MLr#AQ-4YB_wl@k +zdPeB;f0(i1bG?5 +zwBDm5e^{Sdvy(B9{FqOEEGNIh4tFiK=ErhE@*_R@v7Ghf?@7*2?a^V@f={(QI=0U_ +zTJ3Eyx5DqPG*Lk*A@q&0i}i5N4YxkpkN7MnKC2}k+GlBp=lxDPtH0(R_3r5(Bp{>j +z`oma(suk$MHoWH*x1ryVovi683=HVQ;(~Kwh(&DG3Ou- +z*$459W3FAQuMPjwf+?6Y=O_Ai-U#70z0wY**BC!=o7T~_ez3o9!#X!VY5D+#h;OZU +zG_~R?@I&Kw^h09NKba=9{P5)Y^G{)RYB)Bwt@~kG#cw}CuVp5rA2PkK{cxE?iaW$f +zeY1z#N2NjV4gW9U`I_6#Wo_+U>$5{$p88+CD~^pH7Nv_G#f#+=edYJ)affoC{eO`Y +z@ma@cYNWx#+_kh^GN-`t=aqM~#EXfz!PCZK9$?(zmbq!r*?IQ0TgEzEoKig99^h5R +z)m)?T8iZcX1!C7bP3;T76M0C>Fm$J!p9CJ#f_J){FO~Fm;Qi+$>^R+lYU~gHrB_e6wI$SH8f}mUAGUCVWS9IHipV@F#b$LizQgpOk`o2KKKY4@}p$IQ4DjALex?6~_fYaBbZ +zmgqO_#Hg8nzJRqsK`5Aw#3 +zV|rywxSW(z7ykFVA8FBc{8#<7_V#Z@wK&lUIT{&;{qNV8rwxVCmZyyyKdUY@z=g%Q!~%7eUkKNx39ZtaJ2L6YtKWy;X0G& +zm5)U(*KobM6nSy^N$Fj@eV?w!@$u1laScgw{)~4)95-=0h~s8mrtkcQ8f&oP_@sKS +z#CB26$p-!3zALo10ptzOx7h-`=daJlOYP^zK{pKwJI}uMyrgsQD7<PuVh|EV6wITtUT8zbiO +zjMHp5E{9__X>1((I{DnYR5tLAlPz3_mLe`ME}ya!CdDKEzJv8RK0dl0oB8s*>ECH(k4{6vxg1zI)ht +z_O*P^^YTaApZVazuaiQq7bA~pLda*Xt@eOdn4iW;la~gU(h%mFfB*5Vuas2IK208x +z0CU89@unxv{GUT!g-_dZd-raM(3MS=>^eyt$M=%5Ua9_kJef)r*31;RL}mQs_Zy6l +z&sF-D=i?`h-@2`0tj#r}eqV%QT!4I(4c90~`xq~f$MWErkQsA6YRb5;w{Pw#Kw}?f +z4660fejta~`LopTRqy_v$vpdLZuh|mS0-d+Nj6qw?*t7M#@g0LoHR;B1 +zHw_9q&%Tx~CW~WBz`8N)}^!a)ylK9D^7iCu$60TtEvb8?HG9 +zF<#i^!5C!rcicf^jab$XOVm9Rpt|?sWB+?Z2kRaDTdCe#*T5k +z#v|X)?H~6+TfhC3`fbF_{TjmGjL%syJ6eOh2P%#I7%zA#+T7ahcaMg-gvXTdctcDZ +z$G-NwrehW_zGd6zg8Lr1z8`s{B(!9++7ptEr~<=v=z_SsxO|J9x{Su-{S7MRxv%eo +z%$_i1*9q0{gOm|d{Tq|}AQK;hF{pR^*8LV^ZSg*caRCjF8iN=w?DCEa<^D*J^UEGl +z`-&YX*P!)R=rnMnj*byjA}W?A9mVqxOVaX!fqk +zoOP{w*5$ua!*V>`-?}P?%QB4TO_HD-vy8sxzQNrChZOo3JOVm{N4o8%9pp!AVAaz2kpZ8iBI~4UwK@$pL|JAJGk`3 +zCw=Dkx_of4R2_ZJ{-Q*4%f7*Vs7IJ7nf;(ZuuB +z34-tur5j*SpMRDC8v1k(a74s0qQr1_sU}~VcB7qWH~InXIoTwSvs*Gb53=^|Ohz%; +zuxK~hiFTu$w5Lkv(BE#nk7axJZfoDWSHH)4g*b4VapIqv$tcEP97ky2vA?n0WE0@M +zP|GzEdm6l1-jNb|4it`0&cI2OB8;;e`y1ld(-CwoH#c3ZVRB!=ZU`ETyN`&tM%`rv +zujam{EW>dxoGp7n%`R!%-u0fhEuwDd1><4fjDH*tIsfN4$#Ib5D(4mM_)dR%w#4qQ +z%GoGqTf@hdJW)QFKmQiBhJi5i96fINM@5Za5e;y%*gwgK{WFqZ?t1B;IL2T+^v)Ds +zG9CsH&p`BZkg*sKZxua4pYE~0jfb=o?Z)=fo;v*{(e>OQu6iEkF|+SS*{|h%Mox)` +z-iPJH!8m%5P6p|BnsgXwyWK3hhTS}w#~`j=r_L}YQc*sQe7hffSh%C>ge9sKUnL7oS=rof-BEEcLfuS(~QfE(=2EF +z=KT`ypBS%sKSO-Ly|Q;B#(l(<1{m$YkEw4aqkP&Q(R&XP7Ut;qTsW?_I88q6@A>CP +z@Eg5;G2|`A=}{-GOXL2dojBBe%VqBsT8Yzyk@qd$fpV9Dv*d`<4Ute!T%6Y2iuWz# +zo}{mk|73t1Uuh@WEpv?V2jdr7*4MRpqb*;j+)d!pu8wHEGU& +z&ot?Lbg*#ezw#~2Lhqf8I1Ql%%GnL|pdUoVY0d3`;J$_2)7mY6#DVKYTIK``@jBm54JtkPt>zDg_ijdi +zyF*&S{O?Jl(28Te^#%BU=-7Mvku9MNN&M4+xm|L9DW^UT{{GUPxLW+%?=4#Jh41X# +zaqC5j&pB82HQ#XlIg3ts`PWqWZ7VOm=l0{X%`ZFq$wh`#fvcaq;a=RYo+I=bq4}cV +zNkQ&(;dP_XZx^cA~?K6TM9 +zkzv=N$KTexYu-;6efadRL54;D^s5iv^QpGRmfe{rcZv*3CJ1oaitAfNhSrXkd}z^E +z=FDwA_3C5p+5N0<-|@=)f}J-U`Ps7@{_k5#-ly8%ci(f5n$dRs>Zbe7`rAiF+qS=_ +zZS7~g`!ZXPZM$OTwid{sPjIbWAGNkeOELZaU;CBMDgU!uo;1(4pG}|qI@kQVMQ1iI +zyz7abzyA04?`-_lFLuJWNPpvf8(+z5LUsScgurs~$wE`_ZJ$OzHupzAkV5q1N=Fd~ +z{%Rjht=JpcOo>Ch@SHb#FJkf_wE0zc4f(W;`0vj-T(QZt!8ZE0r`{;{QE^9{9EZ!3 +zNtuvUamRsXq1_G(RT7ad`wnVR3YFbA(`LP)jfaB{L{O#r=8X_ +zzh~hYXDsNRf7&a$dwR03n7`)K?rhJQ*|n#i{)*01I!~WJf3ut?Up}~Qk_bOGVu*h( +z4bB*r=yPVADD~CLn&H7`XK)%y*|eO!n;*@{?zj8flzNv>w%0MT!+$Y>MxZ#ysn3M +zq$|8$uOni+Nbjx(A|C1Hm~|WEM>@~jtwIgvYfX|#JksrMG{5O*>Lp#n|h0MVfzt}bot-w^-knRI{8(_u$%^ubaVD-I`Si3(~K}3@kq!1$$Cl0 +zrzF%1@kmEJ@?*MbhJLyNI;_VE`n_~y^yNKY)$5^%&wk^gH$+ +z@+Cd-NxzxviHsbir(e7D#3%jJ|7ZNq$iaGDe`Ni{Cw<{DO;5h8H;$h8q~HB5tv~Xm +z-q;RTe&Pr8U)J>GOM16oQ2yNppY%Jf(CZD!m-5Ha6QA^%|J8mGcE_@v+b16@D)ay($%aO)>N>383)^-sRke;hsWNuM!s +zoqRdoxbcGaBR=W(eC&N{4=D1b-^9@qpY)q=+@hX0lP~Gw>zZ(asf8q!A|NG5K|K!X1 +zJ6_XPfnBi;kDk}?qb +z*d~>c51)r-PKe?+b=E_kBD#b=-D7`S|3N#^ZuA4%({2Amr;|P>ik5T#Sr17&(Qa%n +z?WxnUPA4}Iybspvc4n!xy&m#tItWs$`B*(vCJT%`!ah&9Qn)9-_ +z`wRNh(Q>!^u$)*?*4FT^>K-e~2mPgbJtSe_MDyN!Zq)b{G$;0g<01L5f99k3O`-LW +zJB>cwhVO6VA?-xFvAwjXPDibWJmG$nrCASo8<~e7o{#35-SvSQo +zKloR%oqM?4+_Z~7S<~omSP#kmTVD@ZtEI}Xhb)-5%s8ESN`J@2`0d{J@jl4C4~CS- +z$#{?ZmOJH~C9kQPW_%mf&v5n5RfNoc)4*X!0j`HpL3#`D!#$~UgR0~7j$E^)etUVnrCdSpfo +zQ}N*VN;}bRYzytF(xbDqopK*E_VNupuKg&{Rg{uaR{?JJ;QT(M(GAP)F&43LZ9xj-^~|| +zooF|A6Kn1-_MMGS7sKI87|H8;){q3bB_ +zx|Ngpe=uJ(cB0+r2ejv8YePA^!FK2eQTO%QVl%NyZ?ZKhl{~Z??L@ngNvPkcz9A(o +zS1+Eu@xR(X{o=1K9{j+r)|KrWO}`^mG-Q9pj~hSL +zh||W@*X8WS_!VV0mz$d|t!Z-Rz;0W`KN)xTh?q${k#n7>Rvltx@;<=Is$bSMP*DTR +zV=&;a>V3SKmvElK^_QH#a6JOoV{pFWt}j3}cy7=qC*~Ky`tr*xI(>pp=dQp1W0Jx9^|jZqyL%$@FA_adv}zv>V19_uv@Be4U>Bz0Kbo^Bt$jFZUhih4(eKu)Tz1 +z_8sTw!Dn3YjowT~L`sjb$aC9r4;o-Z-t#@~XzT;f}f(Jt1akfA9 +z%VvJZ`O`UVXB_pLH;yil?>I$<*1wbQI8T=EIKO_?G55^)Zs#d?e*fH^C*C%C_EB3O +zSKo2I>cj84@2>TKY<+A)+kJoh>qkak*l=Cj)(`xD_g;KQOWTXa@H@`qzdvv<+jHi+ +z{!n|q@U!rDsfEv!ewTXOXZl-(hv;N_9!bC1jKb5;f@{%R`R_P0Z#?N$fBsQ>^V`06 +z&(06e`{6Fsg!!#~l#5R`9_BmhJ5Dq2{ecuZtZek)x`>14-u5v$zvH}7i8%Sct}m(nKKw$_CG_bYarfaa-egbHZnP8aM!9KEmFD^qZ-cR)v0Lte(E5_C +z#X*Z~6oh}`h%VQC3@G;clA9WuX519PFUqGCbNR=9a6zQq!rY>{lhfpdup7RsT=*UR +z9TC=HMyM&s+irdjjV%H_o-Nz?q(|9iNiatICWbe85n@kF9Dk=l$$!d9xMKfn3+7dLzkYk;^HfXm7L=KoZ;Fh!bvk(4CAZBV_7 +zo@2g^-EF@8FP!=f_03!6F|&5*jrXc_Ili@g^G`YWt#aWZ{mo`+eREV6{Ju%9h)22| +z-_?DL{1meM8#pvfM?BI!ZNAwjKhk;LYvj$o{_U|Qfy5)7Z+@$R{D6yN;LtD~@krO( +z{ZXY)^3znFcl5z?Bn}k6i67x(M1$sd&rJwQ}$L%>SC-G^2 +zS5K%H^u#B9-h5k5zVw4Qdg7CQtNG0j@})nx`eyya59t3%%TKe)6GSSwHbf-+Q8t7vxL1UHg-s_@pm=6 +z`d;&mG5L}{PJZH(e(TG%{NzjjqaV5T6QA_{O#MwP`O^O6af^JZfA$ZT +zp7^9^ye41L#o0f=mjS~bGsu^6laF1$TH|WQ1>Ot!r-b)}VZGEp?cv(lbAwVHQOi)*_V@(mx(sS9mU{Ejno>8D$@KAy8! +zL#C;vXxL%qxW}S6(Ql@#oN=6JHp;wO_9%U! +zH_(W)ly5n^oh^L<@2lStL8rOl8)2Db%5jYMM8qAFDhmB8Tx@=0$iPtH1SC}ahuw@k +z`ki29L6)yrwtUHomFF$#=v=D(a_pZbe_jV`e63^G;MIeZ|*t6x| +z)c8T@mXCFseowjR_nFmN&ba#8E?&8E*@epKy9YLmWH*n*VMgcIO5a{hrH&{M$==T^ +z#g|?t`Ghu#xIo2&`lG(6zx<_If7GkXXvLBX7cW_Xm{FDbyjtm9d8$c6f9R{wAEC|1 +zUV~`o+t<_|^+o;puQUB5#t)0_@9A5g-7qX6ci84z>AF_>#Z}cBmTFMqF7$T3#5cf` +zO`Ic^-u0U)4GXW)dLg9#n5O>1RHdn6`_~S2tvfMFL3u(ch@Q%6b36V*3XNhDSOFhX%T{!^73+uR8kWQft%l +zw6%s?vC{Y-a-;MY_YBtNLj6%+)L;G$CjOazY}4SnsK0@YBZC`LjvlqsFRQB7a4X*a +zf4cvEQL>}-XMYtQrYxqYKkAG6D|DLpXZ)~8p|6Vi8y@LeKj;=$OxH?(L3X68r)#9E +zVnt;Tj;Y{(`i`Ou11X~Zs4wcz?=t<@_@T?iZhv+tJ22cmFnE=VR3=?3eaA>OwK@Vt +z=nqem8UHw6cBn#0>W})O{xWN{{;1awktB-k&t^Aevz@(NeTnXO$fs8NOv?ILuMM9x +z{TF#r{a5apD<0Gz^+o;VyG{Hve&{lC+dnLwxIg*uQKJ8}^c^YdbLB_+a-+XD$aR$d +zo)typE{s_33X;=Sg>CZ`7Uz9ApMt^cMtn>$HAJ4WE +zG1t@|^+o;pYfbz!e&~|B?H}&#>KV8)`4qZV`i_+Kx$+}@*WdK``(C+@@;`jCZFuH7!k6pDRDo^DD%^=SC4Z +zdDI{EMg8S_P5d){=#Z84-{FmGhBpqa?dr~U4tIBr$mm#Jhpzt8(su;)$xkCDsLz!j +z>1Rji&mMn|iXw9Is6Xn9`YZIA_-FjkAuH8i_fR&wp>uc;8XU^5?H6AxcTZfRzm)VH +z3cslX^~rr)#rja(mBxG +z-M+SOlL`o*ZPX<%*BImzlPl|c4?uAskTqKKS4>W})O{(MirU!YzcvJ(BR=^q$K +zGl6#XmzKUQWqq#vNcUIJ-wUFMoIL7}`l9|a4O)NHt3zh#Z>7xFs +zqd%vrTEikOub@A*9w1ColA`{oFY2$*Xx2j*KXeI~wVl7DeWmsOqjO-*llm9Oj-XBG+k8t@@f7BQCmpM@Dk9u|KitQg6>e?{8c3>z?@AbS|=~q@&Yq%A6 +z%JVC{cl(iK1Kt}h_L`hDlKuh4uMDLAm{0vhkcP5~?eEF00R*S5<3Rpw0^VJ0Xl7nWFxvFX}IIu<5_X4_#ub +z{e8oO{atC^eSlZ3^q2HyuN)j08fjWwRrRVl?G^O*BDc{IY3h&qqWYynHSJ2;y0cQLK^+$bCfBs=6{uw`XIjmf^yscHO +zAL^0^eVekKBLf5dE>f9vt@N#`)~1!|Y7GliY5h>S{msaU`lG(6zs%t#{uw_cKH;im +zD_-5PytRD^Zb8;}^;LS_M>@iq=?8|cP!DU#unKsWS$_pmK0n1Z=YO-2sBln!)ED)a +zKf=U6FjIj +zkNTqi3P+mwXZ+Bn!F8zp`W3p;V&`Dj@Nj}?R4e`RWYxH0hte&^|Ki^N`XTJ-1ocOK +zQGfokP5d){=u$6Pa>iH1$V)QGfa8 +zn)qk@&?PPPAM^UsMT|+;O5dShmd0>Tmc2vfFYvpY1f9^Pv>qwg*`aIdkNTqi3P+jv +zXZ$ckB#F}Y>o-U)UR=6Xdj0+=j(f8FTa5mI9X0+&d~Q&}nEIo>s6YRCCjJ>ebO}q_ +zKQLJKg|EY)R{CYBYI7<#$?fL-`EE%=e}MMEd5oRsUQ>V67xkAh-&attE}b2}5d3g2 +z>f)43*GfMY_rLFsSbqSSsW()_`iNkm +zPTzdz8c8IX^uf6D$(rx#bBnxI`Dlc&&1T`Wk2TIR95c|rpnSRhPO-RW +zuza6;Y{N(+&SH(cDrYy;^DQ}F8DTfg4SNRb7gq^;5 +zA9d$>NI!f((ze|`YwT0R(^s@xOnIc;KG$$;!{;LSRk9n_Xniw+PIJQ-+xqye*BgOl +z3MVn3-DoG;Epvgk8||r@(6mHi8;-#?`S%JhoK_{}{#|4~ID8e54hOIPwg5)P$rXp3 +z<>4$n;_QY#k2twkdQnt=)7)kTbAaWuPc3CW1#)ON+KG0f=(MLww=^#HT5c)EN!V>v +zr!!)c6>{QPziyju-j%4iu1E4!@uj(pTvG9)gG9e;($EQmIwLd_hTc^ +zdF$2Nzm7}J^)~cmhh!OD$^}#v1e@18us%EQ^1k)!ySnFf_h!4VknarVt=oXyuAVEq +z`bN4=>XT2ePa5gXN>;1RnkQ?|`@7ckXHVKVc+$wgNefP$C!g1iY#g3fp}Kl;T?2Iu +z>}MJ&QW^;anDokUB|un;`TJ;o@@AxK0MQD +z6u5H67uC-X6eTLkkY8?or`bS%nYl+>u3-@~*%j|0$cOh3g(!Zx+vOe|2cMDEu!o&@ +zrtm7XdI2o%y{_*e4w2s@tbPx>xMyVh-5z$vPPCi0kNBtY3!Q#kbp3woS&P^$_wD;p +z_G>wxk@HA7KP)E>?ls7JKc?Sn-=t_%`LFGEvpgd!{!a7C8SiVr86X80Q9g}AyB|c| +zv%B1W-*8a`_n?|ddx8G8TqI{d{-H>kq#=!ywnfPV^EdzFjo08_bvP>@^KR@PO!X$O +zTpfp5`V0R~GxjE7y{Czip=W%rkMnRN5A4w*1xzoHYn0EG6BPc9`gfYJP7vcke)m^z +z=RG(0*+=bZsqYV~-=y>;j8UK86RzKX)UIF3AN<>@5dPbWdtWR1+kbXtFxve5sycnc)d(k-zTQfQwe&5M*F@9YZA+)wz>F-ZQ +zpib&6+KqOi-6%Bsos78mdfqkCzrL^f*YUXn?ms>^E9h@Wh`x@N6Z6t@4Kd>)@^CQC +za^yX+cguNu_iovuf8RXQc0MwtvmGw|ZKiN^Zs&BV{ExF65X#xj<+${qs5ezXHIw!N +zc3UmMp5x{cxn}GyC$tR1Q}W=vZoGt#-q-EG#u;X?<@|{AAEGVwd0)AoZqVSpy{)0; +zLtjT4FW(lLf>)csajQwQF9@+ZzNWm=B#NL}E?cgdg}5^dabM;~?cQB8aTbwy73I?` +zLp|sRQO^-Hx8hoxh29?%7zu(O-jh$$>ycxG> +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 +zYbd*+yFy2agM;_E4`z!TVxJ3IW`*r@F +z3jJ4p5(Yo0*R`QL8(EQ)S)#v`^vly#=hUu~mq)}ulu&<3)&o#~)ED*VuQu_|#6f@g +zugZ@fYr3vTq&U-(68)v5Z%bF5sWl8Ptf0Ts!|0JI>W})O{_>s1|BN5zXFVFyU-8DR +zr%#?5;Mb>9O=fGQUtCqKVHMnL^mo2=RE!@d2OU(>=GHD|)BDQGbQY +zw4Ujg{$X+YlRXj#Hzs^)Rct^}f7Q`1tE$#w{kVEdZ2#5%7xSG(hzb3V`l9~)H75R< +zew=TL)1Pb>xqdLjGfASTzv}2O$c}XNbd7W+sVfd=O$Gf$eRtyWqW-8a>M!48;vfBR +zZoK}oL)n4h?t#GyQ@&8uw*IQ2?~r**`dULGc;`guPv8G)|9e3gJu*f8QD4+wrrY#i +z&l+*`nr9U@ab*}g-y~*6aArT%wGin-(`myl8<6`|!w=&5NHPj#VMg3)ZP5d){NWBpj+pm8J +zF6HAp>$m8uqaTasf1j`5e`-An8yo|vKkAG6%lDc1XZ+A5clDR@^+$>R($bH``;Yfk +z(BE-xqa)JPAN5836)rdZ*Z84J>gq4$fri~95X +zwf?AAmzAr(;oh#Efh&{W!qrOOk+MElexzSpL4U_b5jlC(AN583W!9VcXZ+A1EAgMc +z4LyBB+3t}}^&YMAJjT^uTKe-$eNE~`T;=*)`H^m}pg*j|sdP|()ED)a-(cdO@k5u7 +z+y3E=Ys`-kcFKPCBltPY4dp)1sg=GXs86c(?~iuJkjBR#8v +z{$3PCGk{b +zW})O{`^fQ{uw`X`MB+0(?2kfW^((jw^R1Kt9Vd<)ED*V +zUv1)_@k5tUss8i~#KntC*GjMFFLB(H?i12*)>gYVCu#f&nL`lG(6zs#FV{4;*& +zvM6o;)cY;(cgg(+^tM|XM`*Y6*>)o4n);)@sK5N1P5d){=#tyaZ;-}8 +ze}MM!96J$nP5n_{)L-E(CjJ>ebjfY~P1WD>{-(@dpf{{D1?0j0`&?#}fz%)MMg942 +zH2ZGQ4;z0RTEDS!+48nlwTqnI@ltJnS*9Mhs8;$`c|5Tx+l1{eUDk=yx0v?(jAN583<=?9HN4@4h5dQvS)v^_@?pWU1z64u`uJ4lV@X{SM)64I>sfRu3 +zstsYk%e+7OqvS$=?)M&tg|KzP-(tQq&S@Cv&*W2o8B+0!AxqQeA>8}cU +zz4EWAwWsH#v{kc7-a|%zw*TSzOPYiFqrRv=@}R!+Hstj8O4 +zSvWY-mrefWfGzVp`XAyS{Lfu)FIg22>W}@E`YT+c{geILWz^BWI(k%Ql +zjB2K@uG&yDauwnq$B__`lc4^nFY3>~R_l*?b;!J+{Tny*rCxj`%xa~-SgNhY=j?X$ +zRQUer02?{xn);)@sK3nHwEn19mpo|y71^ugO-JW&HeGXSrGK@mwy7g!wV`HYD(FwI +zA_|d|B&a{?i~1|P!}MR{hc02z{%(9on)>tAqW@J%KNjDwt}x>Ve)A0RZ>Q5py^1KD +znSZWliz +zTxa5+>Blakp#6irR}J@drw-+{(w{rjwW)6;>1sJwdYyiLg#K**R=it4D?sU+!?Zr#r*ldD(ElCZxK;{ +z)ED*VU$6B?y}J4{>qi4Mr2PEUtCfB%zF+-jg#PUQtAAm@ZFx9N{ZU`kU*-lA|BN4o +zsjT^LTE!VgRV$wKWAObi{EyGA2yOkzPjFN`s6Xn9`pe&F;-B$Dml1wTPCMu>9i&w38hjHA&C8l +zs5e48{xycMqZ80yL5jHF)*<4w<@`2y?{V=`tTY(z9~c?#jAmUiSH$02uC9s<5+I;` +zXb|_Md_-uH)JY#qP{kxcIb8O0J3MHc|Jc2kW538P>l@@Zii*eTFX;WypqCwz&HX{S +zUufpP^?sq;N0j@7a^KUq{eQW?<-0_2Tjar2qd4E)4S!VfsQp4O3-1@|zd`>VG+}<7 +z`JJ!6sQo>~es8-~{qFUg*OcEclzh1VUM7lP?lbLLBV({%sCTCDDzth5%r$%FcOm3g +ze;a3d_`SpG_Y3V3T|%GkQE9(W|6;TM-Z%8Vd%l4#pS0=x!Fu1l{4c}%%Es~8WBe_y +z9DcYB{nOZqb|XIRsnd^(uHSzj%RIHu>m~Oi{cAa&krQh+J}f5=?(53?IHvJiA*F}5 +z+s%#g7;d;T#A@zJW4Hepy#f8#H!y@$ +zMWXP;JiX7Wft6Tn-cfnq#N}c)_Fp_hlw`$2)H|h)t-sX!WfEpK|D%47Ezb`-x;OR@ +zR`c>9QUmte&U05RJW>g`D506+gPtAqW7Rl2A6yICsz&1+Ts4e+nKPNl&Q<(bDEeh>Xkm7`UP +z-lPNildcZ-?^NY)8wsax|C#z7i$MMxwLGjZzuT$r503m#{x~e}FLavp{-X~4gO0o= +zt?O^_{5#q|NBv=!=E9C6EP16o|J3#9ueyDbzWp8H@&|4Cr2Mzy@hc7Ia|NLzeUN*c>u@#U>hYxT-x^k;-=1JR*(OG$odUbvtAEdi_SE%kZkNb*f3eQ1+P#)TzmD{8<@~cLI4we7 +zD0;eVxt<4L|71N6!0#Ua**kp(PD5yey>=peje5`zE{LE5w+7T;NFMYap$n@V|8>T0 +zhg`1usc)b`uNwIOqwSUdbuzp4-cxxVpzLPsM7y#7(wbHqpvx?SN$8&GEPMn`WM&V{vx=HUr}}gw+4AaA^lk$-*W7>hj!c9qwV%f +z9oGuq((&8>xrTc_@go(V2}8m~B=Z09l6x@zWX?KB&kG;_nVN^p`H7yNxFr7k;&@?~ +zJ#Fg!|JnN%z$%KX|INd&;tRpn_#{?q(Sjn1L?gM$P0)))ak*d!5`_a4um$hf<2VZgE-Znc2`9WTgAJC9%Vt#=9$nK&mGEB*@i+GVAnO`{j +zHX*s4@;B0VN0uAU8^c!&l*NFrAq(Kl@*7RhQ2uuzkO`NQqKQAo189%XJ|S62X}4%M +z!qt{FDq3K@@3c?9eR#s^J^GD~j$Qr4y0U|=i84LETk!?jn|aMc)SM9pPgHAP-IzS~j(w}#+j7PB +zmb@QHOx7J^9de>jtwYB8WUM#F`s3uoY8^>z;%mNj6n`aK*c#hihunu2(Vta3-dRz> +zwyk!(e;sn{4`Tlgf4vGPUQ)iE;BB%Fc|g&@zIc&K*!{+Y5A1&J7Y+QX&Z<@XWj(~i +zpZddkyYiq +zvYz#AS?4XjAqkzjl{izaH%czMz^8{GCM&a8ceI?82t7e>$=^%)5Pd5Ccaxp=-D};r +zj-l{Jp0NAGbcLNi{)$55Ct{oLs)a>tcihWacUEFOV!czqKR=-pqB3oATnA7OOzT;-EK=*y!DrRe9k0(^L>WQ9`7Qyy`2ru^ +zr*61gIqZ{y{Z)8R+xfG8#BH<3#UnEwK4RU{ML(-aY*Fj+;oB?KJ}~h4-0Au`r#4Kf +zA5RD7dRTl;mt4Q55pSgDZ**zp)jJX{Y<`^+&n@BT8+SWQ0e17?ffwus)uPs>~J#sO!4CUwAdKhy4Et{M-gNK@G)jq{%r~jB +z^`ZJ!OdL&h&7laWaDS(V=yy!@jX8St^ut1beVaDx^U+)KH%B}B03{w*zLSRxe^zEu +z-|8qM=r>2uHRsEg{xgU*kBhpa!@ho>SK7_v-J+tx1u90o|JbjqehBp>`6t78!Wu(k +z0Cw0ngWrd|VHFDcyNlEtHBYpauslyBzHvOUYhizjf9Wo$ePc?FCulsOxT#i-X&)=_ +z?^nn7x`Tt>peN`p@xL;j5Phn=%&wu+5U2ZFE)=S3M_63-2E8dxBkwGON6$48ug%B#0?xq&n|=q=#6(i=(9tG8(d?_1Lh{5sMbk05VnL7yt+XcuQk&Ed@XLpxc)WX}863>uH{dl&fu?c@p6 +zPSQXl&1KRX$Mbcnx2Exg;^yvJ^H{->`lZ68$JRkk +zJIVXV?n*y)kBYxo1udL&1-;?9JQh#AcQKUTyU3^au3ZZsE99S_l0zNojqBSXq&wZ| +z+#V}9(ZF3t4|mesz)9ZFk?v`&M?<@fi_Cqzz8bUZiO7 +z`(H`VxJh)1bM@S^=#2VVG_h7j=epE)H7*nG$Y~8T>yNbPw2qnQPHj5Un%ppJ>hyDu +zv{ZCQT1S)*KGKqVbB{D}2=9dw2qmy1OMuQrRA;5nJ>nd0H+E!Mgn17o5K5qP5}+Ya +z3y*`ms45EBmQA)AMOGjFnBZ|dR&u_%$u~B9a{~!%s_<XP@K$=4Ss)oz($9`IgLyyrX>Zg&!+X-`ZB~to*ub207mVG2X;G +z1o+?`BJqC)eyvy2dm6j#U`sXeI^sohWbo78{rGIBuG>-t&5?CvOO>dTZ#RAAYyk09 +zzPtW6wpPs{Ctt{JF1aa-x#Z=fMCb{6i)~SQgFaP?Cq}LKPg3uG1r~=tbi!8eTZ9$=tuy|^&g|;Vm=UU3GzZUS%Pw0evHO+m_^?-j|4@~duYF5*o +zBV+Df_AAf$e7*s=Dcn9+sBh2{^kz%_g+5hmWb-z0sq>Dm!UwBx{OYy0(~U~2$@1-&7R=kgeyqqp89L|1Q*Sg#b_PCt-z?862wv)=rB1bg+CJiUAA4SIs!AR*`z +z;e7G^J)4^(n>5ca*PlP2T6XrLtf2 +zf8(|j?%7(5<@)vjm1o?4iSBVOl5g(L<=^L?-)UUx-YIYV=jn@oUQ~Hgb-abK3)6n@gwg&x~B65#y`-i=p0(U#V+pr4aTQv2w%nc&Za;9!$FaQ +zqeELxJ?ZW$=Fv9xZEyM={)1w_?(8&-3E9({Jt$gp!~w9L6{ObhX7+3ld)A`ia(X5}qIA7>tw +zSG{|~Q^|XZs@h_2H4_iffo1i-XGS&gsP^*Qk*+U$^w(aUIa$y4o+^jANK4K8dO6(o +zhb7flJg|TB9S^UdQdzZXc9KiZ1-9`S9LX +zHShG3|7mtx8JCjl@iwlh>q?R(hNR3lFjg&mh4lB +zp+FJ6jkp7@0&DuLxsB5s=aK#5d9%;$h-nXeK6uKc$%D@sJakh1F~>|9Jf-~DV~?IZ +z_?Y7+PnlAG+~9MDOs=0YtbXdyp~p=)YQoULgPZ8r;{-+Jb5!c5RGd~Gxox5!-}gU@ +z71KCBGMLI4mvN?XT{>Uqx$sig<4(1#QmQh^8`K$xC3MX-DAugbp0sNVoHHd|uIg&s +z*xLH3ljhB6B)i*V^oN}Yb6lNq$*0bC-n;D=l|SJ3%3t}YI*T;9UfJd*-%x%g-a-4| +zXTos%Sw;j%M=z0A-P0-^>DW?7p1^?)xK)A!Kj0g7^W#7VT&!8e2Y$d=)|t-dEyM>p +z;HIrnIPe3mVK+Yxbil1zt8m~4+79dPBpRXFf-aU7qE108T%ekbXa +zcwO8KD)BB3bil=)Q8@4eu3`Je;NPAVMuF|BepJ4F=o1RZeYf&)LG_S=PV +zZaP5+++x9jA8=%6=v*Q`&;gee9QXmZ-!6=E;{zRV+n!hX13%!N->J;GM0}tFZq<5) +z13wox#_8aI108UvpWp}F)*?-wQjdWH9rz)1L!8|y)E^x{3Vr6(4$`H<&M+K +zc+dl1_p-u+FUmQ}Gx!1zdf-#EZVW!1s*J +z*>CPk@rh+_AAvv-KOtn%YqYoZ_}K +zz5T11iT$n1F(r^5iRX^JSk9go-}C58xpdlJs&7b_`tH$jQbvzGZS;t-<42Ad#|Jad +znsom3b0;-UZss_<($J(?gvm?G=zTaP_B6l%?{tKj?$j1r>VbAx%b%QQ@I~fcuX<> +zQZ%WHpmJa7Y5z^-Ug!2oL3ZUnwnUZt*yF0dNF_urR?hjIbH+G){rUC|que81DEEn* +zR62v=J1u(hh??R?a)r_Y@|W6}jW +zK?mVn@uyF(pFg`{PGebZm!fx4H?srz9o#`4_%Y-Mc|m@OUrGIya;UR%^FOn}8L!Wt +z)HtmZ6*yP?DNd|qqdOO?KNn*O0P_pU~LQFheKG5Y81}?ZjF(zH_mrCkXv6d@sfR-ax=LS>c;$!j-vODx@(l8Wydb~C +zUDEzZIn-H=9dT;y2&eqX`d!@mw0{d|euc~5WSM6H74}p@nEmA4QZL1a{BR%g^I}Zb +zZvLmvnKZM0!kqeH~+I6<~DNgJGp-D+^)#4YxvO=EBC&gi`Act{vGtcGzHh8gZv;b$S?70 +zY5$}i>x^9aHOyyJAO=ZZh2zH!o&NsW^_j3@)adH+@Q_d%jD)nEGjm*$f9OZz82 +z +z`Juc)ezAw7{gZmE^YZ4ueolSE+{q2IJM#{lD}G#KS7P<&qFu@#-!;i^cR#r?1o=T; +zkYD0qY5$}i>tHwk_4Vi1*H4%>X?j-QtH38$e5{l4AzrWlra^xE9OZ8hFLA&%wm$DTf*?U4D~kOY&J0=FVmb&Z(c;(I=%e`E?RM&Y>?G +z$MMm7aEI~f>F01o2lA8c%uUeLJ;)F8g8X7nN&6?|Fa?kcJ^zzto-@6E7Fi)oo;+h7 +z&&KEgEu1U9TE$m(T9)x?(L2HZ9mwyiCXjXy@`Jn}zr@qh{z*C1U}@#={Dv9xX4W^( +znLb&kG>3KhbryemC*w1vqNoG;?QH^S_aHyW3-U`gOZz9~P=lq(Prf3ZGh<$M!)RT8 +zoyE)dqiDAA>FMY2U(kQhHTqv~`^VQEImi$4g8X7PDElVJRp+DUe@gxA#%U88rcRhT +zy?(|NojN_7E54TFD{Giao7QC&UwR5G>-i4k$2OB4Imi$4g8ULUiaoKEL!FPF|8r(E +zG<0S_n=3xr$@uj2bNK!a841^Fd!Q}Tmc_4wWVPo<7`ZsP@=+`2GV{E1zP +z)t`%>cObw0{N%BlQW*|56VV$ +zKHgLU=;DbE?ElDgx1?x#CA>7mc25 +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 +ze*U>J;wqEgs)#L;!i9c +z6FFqyZ!kk!K#h +zqVkrZk5?W%@bSuim$W=};epE{ZLznS411SNcS{WI>ZUPG;Uc{gdOZt`eEJ0yx!UGzyrSjX;(s=K9xrPYnO)m +zly*gmUpywAzGu!4J3vz5F=P0T&Y-_yIS+q_L1^ +zIS?P{fNK&Q_yM<|mmdc@;8qF_{D5mL^ve@;z_keu{9K%0o}dHHMm-TcaF+FRXSM?Q +z108VXf&)L`8Vmh6&;f_~34Xv?)@tVx@qrFF(19PqjfF0b_iaVJ$G(-@B%PoymvX9? +zJC2v}pa*`yfBfyqV!`X>4|vc6Unh9*1x_!Az=Iz6gy6v!@$2Ogc+dmCO7P%|c!Thu +z2Y!p-!54BvJ|I`b4|?EB|EuH&zQC7ie^fsf6)z!@)q +zFXGkPFO(n91K)Ou!h_->SZ$G`6|%73ZoKPEovHR5Zc +zLEr+}cX%%KguL&tT`+b+d@vts +z4>s|;yGC)^P_6vSv~X}d{Dk{hc545w%L&`jzQZ={In2Lw7c}1hd7eqKWO?dNadW>L +znYrtz{0l>G&=d5AasYkiTgrpE0%JO`i1X(2-h0w0l|3ASKD{kE*MeBKj!LpL3%@dBfqqLhjZu;v)XsK>-}L7$&%%%yPnn`LQl{e@(X>cu)gmw>+L9~oi*({jCOQq +zVTSMnVD9tzn?gL|-*?z9c#ul*gFZSHFqLV3;;jdTM!osDnYkMx%(Giu-$qkIiu(I1 +zr7xRym70Z~;lAK~htV#hosMl)?KIwB^!Glz|KNSfD|8-TbHCq8zh3kX(^z6EA#}tA*Il#6Lw_G +zSDQ7x4XpV-$*Pfl?Cw!s+F$6+{9Luu%%Xrs8RR>9yVohjX{_jM&h&e@&H{M^jk4H4$qEsPgYk9WB7 +z;&#^uT4-jReoh72Wwg_YyHz`laU;fs_+Ekcd(3|$xm+&Kr@3w(FYpEWW4yp+}dgIL4CI`G4P9TqWaEG+UY9&+zRzH=x>2^c51x%Vyzl4 +zif?SE3yb$9X>?}12zds**DG!qEwZdl+=FtEKld?Sgr1jt^1i)s%%>3?eu`Nw0auyenIKd5h} +z^F?}ZI`{<3y3pZA<9y~sy&=d5Ql==&ODw*W}I!PVy6&!egPx!_4Y+l=Y_bTKU{`OwSdC^o~o?$v8s2Ob(e^1>H+-Kf=A^Yb;geYG%Z)s?Ne??200TkgCz +z`oZ1SnkR2OF#4yWTP-FS#iH(zmUEPuzO+ssNpv)*{2diILAgSCCt=C#|(QYMYxXh +z%U#Eb_i(&-<2@Y34e#f$tH=8|-oIgI0($m&JhX=V>&Wlhm*2x*atgX>43+r4*a5=- +ziF)sfU14}{_C^wLjrX~P@WJ@f%x`RsVzZ%I`8m9Y!>$B=+Ix6z_9YjPELonq3wjUN +z>GC}cy+KdV8`2GZI^mRk$wbkg=q>)5&%Wf*faaCUCp+_V^<9@qy!IuJ6*Lw;X5eQk +z(++d`gL=?p)SI81nL9Y;ug`jGBDtU*|DBR*5K~$Ps9A8_?rBfVH!3SD%gj%9jJvZh +zXq?tCD>$zMY0i^><4(1#Qc?ic;bUEX^0#XJ5!UPLoV@GuvEP_ZlTA1q-Fx{YW~udO +z_TtNBwwb&Outb8w4zoyUB*%dwykjrlwg^>=n0pUDsxkjan +zE;YB8^Bg$P0av<6;lK}IUYE~&fdd_IF~NZ!aF(^+89D+7I^b3c4*Y;y(94el9dK=e +z13%z+UA{M+paagnR^<=;T%12X&;ge?eotqeB>1_wLwxxI9dO%5C>;0!x1g6F2Rh)U +zeOKYY4>-&EzN2Bt6Li2W7998iH^0P>108Uy9q2dQ$;Dgc+ +zdf;OpDm?h2K9x$lqsI?=;F|;wzNlA_qmBnX@QXiE@q;ho2Ok{|df-cc^>e5H0bkTl +zyLForQ +z@Qa^Q{Wtic{zDFW{GbOuDR}S&J}Cd72fprk6+if*T?#6Hpa(uC;}7r!KB)YG9(asj +zz!&KUA3gt|2OiJC7v;{RKgTXx#z}a8Pu}kzF9C=8i~6j$2e3zFJEw!GXIAUl_bB4d +z!St?^Sf|F7@a><p(p4qA>{!2)bsyk +zhfQTV`!w~Ob?wj-^adF~pDN7j9(p_W4yka}a3_2!H4tYwBS_jwOv*Wr0om=TywpAt +z9~$OEh(x!4C@vve`j2Q``$q=)Aia6pFW!q>cRDvctkdUfn8zLbqK0<2=dNpKn}=fO +zoz$y~4%f9y|A+oC@qp?NF`s~b5dAsE)#w)y7s}JusVqHDKebNjPA5I4GHB0~bxPvL +z7O8&AzRuKtA(mjD^}L+)3_hrzMt7tv`gGpf}_f`c&cO8k*->gJ)`; +z(r#-x+?jRlKXVy)uGD#8s_>on(75E?1F6}bf>DYs+oyPkM-WT!ShW97DPkGDHQ8Z4NLAv91n(ZTo6i%c&1;+Ol +z`w_AK6+iiNX{VRu)=q;D>U-iB27awWYgM{8R6BlrSAW=>DZ@4Alby3p33k8m)4n^h +z{qGQ3)6Tzi7gXPwlH&<#rxiEX{ukUy?A^+te}$f)x7dwJZ_ua8l*#^A?ela65nLxZ +zA0a|mDq)O&VgI|uEF^vW>)8MPwctAIuLk-|dgExh9+=wcbo*b$-4KPOK0iI^4SIs! +zY^lG{r%HYP+y8Q1L;Dr1xAc*4chwv81ihh@L7xcci=U~!L2ume=x&J92f24uIRCX~ +zKM-L5EB9glyZ69DtK8hFt0hbJNxOGbwf`KKSivdInJ7P8d}O5b?K_$;Uw}71`~fYBTYSih^7_av|9+G0Y2!_+pKJbXmzL%;3y)b%!3g6SL)Sz2IrBP@ +z@Qh(R^Q|RbH!Hj~tA1iovY?Gywyx;Xr6HMr7bs9*SFkw_)*oAhU#eaCzV5gcunOAMOQ!a +z%6`KhdbP55bFa~bm5s$MPI~vc;45pM-Kj8IpV+v%WYeZg- +z^;Y2(29qT_wqmQy$7ocWDJP=+&<}N!I)YZ?l+xtTx8taQ|*7%Zur~7{+A?d +z5+np4;AgV`-803H&IhQUI%(dF#sDro|8{8qo16V_85uoIj0`3_bGC7J=Fn4xhHTHt +z_FettCbv_*AGZh2_d|K_#(Q}3A@v@Pc~gA%#rrtE!{WPeDpI=O_4d5y)Ol3Sccn$- +z^Ghn65^owqC1#2JulUKE}QZ#m+Q?{`Zed1 +zUH1Eh%rDuOq|w>;aE@mTNs#5KJH^d?4>xnyQTZ3f`yBKHy~UQwd$^PfmGW2(&Csop +zT#&gUh2x9X2IcA*d4RnR5H2&wQ}yNXh)o!^uTvp?he}!p74R=T22+^^701K%faeo+ +zr?^oJ^1#epN9A7_dV`*zH(Tm2^qFrd57HagHMCzQy{Vd({vMuh`Rgb>&>Qpwy#WV( +zT2`OcmbK7R-y|&cZ3Ue_dq4g5ARy|~uPMxq@3BJ|&-vcw_5~x`+ZQZQ`@F=WC-Y6J +za(!rzmtx{*s%uOTq_-qJ%cM7*qaJ47-NCWm>ZmpzM>1%9hNtbk1!s>_$VRv==fd%`z(x;FfM}Km6t!4Q?{=;^&F3@5>HR?;AMI-mv-p?pOl8_j#d=fk +z>fXEDrg5vr<0I9&C5_zun0ySOpM{>FH`HHay~~4)1nCXqqs)5iLE|H7XQ4N!2Ko#f +zAIX{Jv#70~Pd|)>7|$|fhkFRCyXtS|@zH!<)@5`-dINE0y)l)VSe#$78z9}v$M^{S +zWjH>{O?~F^QAyhP2;(7)j}R-yO|aL1{RZsrFpmWKqpA3Deel|G)E2WHhk5L8KP7e? +z;wNJ=K04JfoTSKW#a19Y4#)jsxSI +z3sqC83xMZWz2|e09Y?u!Q6c|yQgfMRD%KnSvbEy?_wK4U=m~nWrT#*nN^<#c$AR%t +zX1%44kGiYgpeN`JB^>%hIA8pZ+DY^~dV0|Z;l2vzzt-$k0d^d6A9ft3ecT4F=wF5W +z!r$KexY2j+)%-r$*?rt16KboEZo03val=MRquR&q=O@N}`=0e4`-yMgvs>TVJ#gQ% +zIkb=4?`R*l-n5U~%}Z|`a?d-5G%xwj(&3l<<}tS8up&R0x8}f?+N%36+iA^l|6SHP +zX4stQ<)3U^ec_*qqURPbchaD~9WXVmqu%;b<^PWn&ilB@xOXG-LQ*sME{&f4{M^T_kCT_}VaE~f$9;RkgjO&zCY#q!%l?Vb|pKI{eoJb-}HOsuM~gFf?L(TKaa>dkl!dj +z6IW+Ct&<7h_r)?|igaMVl4+8z^!U^)HE^HVxH!-O2mOMd +zi|gmZfetv(fgi%rUj0&X;eB6FZm@4co1_!;w#Y|MH|LY_pa*`y6jlDf7kUZ8gC6)g +z!GkaKt>+){gC6*{dKEwTLQg?>&;xHzRe114x^+1se$WFyP4M80c!Thu2R?DWiXVKD +z{w7T?h(AS7^_Qz~(}fBTzL0+q9`uO6?qY=pU!*$-4|?Fy{-pRy`GFo$u8@Av1CQt6 +z3;9Eic+Pmo?oQe{%$wR;dk4Ip56A`l3aAl`(h!H|_xn-};e9)z1)mkNOik~+_A{zq +zfS)`~&6CB(8Rj_=Nd}+uvz#IWAIt|N#+djmCwmfh8>*Fms}@#wgZ@@?rpP(-rt!-O +z%jYSI@7Q9iu`Szg6W(>biIt=TaMw}!7lz)T +zC+H330Q$_gln3c8yL9%PeLJ8h=neUYKAmu!>RY_QncwDcd;9X5_V#iod>j?vs1)Ki +zsjRc(KA0W8{h+?#xq6!VtLD4O=Bt4A%BFoi$zC#A@Kz!JQZ%WHAibf!ar?E+fYZ6@ +z;Zy{9e!=yP8x6F(f28z^xHG1ln)7by^t`ptw5;WZoS;8M|A+oCDg9wg`bqSI=ud;j +z7bs7AQQQ3({dnJwXu+=>S)0mW;!tI01>gR*d^bAX)PET=pxr{d3O=ZxNfW=ceLHgK +z53OM}PJfv4xi8#){ozuPr$S?G%!jF)w2du#}%VNFtUdv(Az8z>s +zVP}Ofe{)QCN^kysJE8?wlBBOpCpM1pn9N%bZXw<2PUohFb^3e_bA204jScGWtCUc^ +z?J=d@AQBT<{@?q8_w7KtjCL9VLi=rN?@eg0@je53_S-wlG_9K8?>i9 +zBch2(qUZ<{-t+s8UH%=9#<5VTUQw9O=Ay<&arUidSGg&6*oS&PdRY!u6l!> +zpf~#_(VMT{IelOYd2I-CK +z8rmdD +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%0AI)-a@6w= +zdf?IifG^?=!h;@o@CRR{AL+nzPQSDNtF&{N?@qM%+dJTNIYKYshyCvO{WY8YU+wjB +zuC@5d$J9Jo>`Bx7G-3(%IX}y(0D%wY0}_v$_${wdoHkS|pZ2G89KtFT^cVY4I`iE) +z&lLc=neUWK2@0NSJk9-c&5%@ +zRr|k&=UTf``68~kzHvv3_VDcKDrWG$?DXdx{}+6&HQHsg(?~zwU+~_ezdzx92K4Ofb~=2n +zwR6ASOQo*uMzPZoKhdh%=fpF)wbS5(`W{!dtL +zxlpNLJDtC;MauHgPKVRR=Vu4m4fHfS9q0*qOa4~r4f<5N3hi{19KQU&sBh2{^oDj9 +z`cx^+e>RV5<(}A9#H@7=2%U6DUd41*9ub)nKJ#+?8^cH;cV-!8q(d4BWY +zoriq%X1}9n-20bSwvS*uW9a%}B9H%tcrl(a9A>`n6R&p_K7PeB6RPH~U)}nPwypF$ +z9(m@YC6T&6+}M2GxKB6@&HFubRHW?UqR88WPmfR2D=%xNG&C=} +zvU14Bv+p|ku`zE{Q5vdFU*12`ckHUl#z*@KxMTzPgum9WXe$VV#y|=+mCs%oJeja}43SWMD$NygG +z&CkROEMI;ex_3z`KP0mq(q(ItW1{17l$+4vk?RN5MkXe{+H&|A2Q`nW8QaWd3p~}i +z)=v38hVI4re$I9}^1jkD?R0h(6WJJzv*VE$)~_FKSr^K?5=&2aLHg@s_0~zV3}>>_ +zDN9WR6k4_QQzy-v(U>LIo<}x$#-s}-oHM6k{;VVFo90;M#~yq1V*qvzHN=z={)2AZmqNDc!T!F*J-_Be(xxw8%PK2Lsm(;ytL}t +zZ>Iw~;I;@3{D9Z(bU+7OX^qM^_yK2GZO&X3(g`}?VuAxd;G(_!IM4ytBslN`PPfwm +z9dIiJ2YxQDt%%=gkWSD6*Csgdb8&-wIM4w%tyake{D6!08sw7;=zv=+IPe3`vXp5y +z(g`}?k|(M7zz?`+i5~|#;7Ug-9QXleSw}jTh!1qYZ97@vz%PX>Ig+I5$`f?JrRs~s +zo5ES&bgCfY108Un13!eVl5f%wM8(H;OQooX#EluQlrZQ~PW5uY@j7--8s0udXRVFXWH%jB)`y=z(t%JoqBsAUx=S +zUnzL-Mf#BrJ$}#wZ;w{}3HYMDY?5-Q<3XRok5hQ?Mf&x6g#6n=4}4<0!hJ#I?l_*Sr>VdEPF1y#-pAbay3vBq +z3i+3!NnHf#&D(xqAB7Z%E_7~s*h`zw*IeJY(Lnp#bM4NQ7SKLICmo$Tj{Xn*VN&`- +z^pofZ(XW@vxTH-RpP)P)L2dUY`W4YHT5z}1UYp9G{Y^P{T>RJu)o(sB +z94Pj|;wS$g?ergWYp1~n^*yoCz_039`IfSw+DV|5gWXx{i^Pl19T(sEmd15n)%Rk0 +zg`;mUED4c@iV=T<>N`L8$`kY{-{I!Ix0t!7sPpy${VVhYy~Q>uy+NNU1F;%v8P>R& +zVf~%$3A<1D%304uKH6!7kM)yDNVU^8g;YCTNbU5#WJAWkbeBnQOwI4_YUbRJRT`rh +zM!(}Z)p$G8`m||w_v>$Tg9Tce9Kq1>4Dy$C+H1$=+m0XfDK$p3`F_n6W4UPev^3!L%)fKq?<_Nl`{~bE+hP$J)7d>?i +ze-Hh<9Ogv){7Z@oB~F$%&+B45gz=Fr-(@jw!n`o%xA8u!&l7Vz+`bGXrSW@gpFVV> +zu&Cf0x9g+wqLD|u +zNb$1XMiXbGV;AXX_4JIKHG5tzR&R(0d=U>ah4@dJQ$LB8qK&SfHF^3BJnV#za)@$= +zatIbEpO#ftZCS5VIouMZ+}GT8VZU{CpZ=)!s7iXtM@6(`uBxK3Rm-J +z|8X9h+GhI*`Q9OZY?O=}$K*Cn1Rt~)_NfMbt>=qAHc;EaE`R6I_9R)dJkwkcn@5A5 +zpts~{N^j7o%0JJeow-(ILDO3to`i6kh@O!%><<@(0+Xy`Y?d9>VgW}ZhYO3kBTeFoNJV0}jHW!Xnn_EXhU;a#6${$8Ua%wa>< +zVJ4Kj)36R>qS(JqQhwVd4bJ+EBRD9qE +z-24)MIzb0qo8Z9D#rfj{9dO&eqv8WU7ssc&sCj@g@<9h&+gVZ`BwnUvx1g6F2Rh)A +zXDb}|DHQ+xK9vx6-2>==+wxtBPvQk`eu*CkI^bg8Q#kMgPG6q^I^gUH3I~3`&8PJl +z?4Wnh0aq?K@B^-*=&L>)=ztp_^$h%6-0e=yL42SCE+IJZ18zv6UoM~n4s_s$@Q^~c +zyg2JQq~60GeDOI-E}%!f(90dCm+_znJ}LN>!WZRSFMq&;9{810RQ%wJcu}sAF5p2A +ze4F6G7x4z+K@a@4OH};ei}dT|8S#T2_$^bWIqfI-LViJb&;#F8ukhfDbO+%<4}AF? +z)qaC7+9%XgU4Ebke$`xs2VclfuV2VN=z-rNc<@EML3q#upPZ-S2Vb=3dObz_pa*`- +z`I3K02jUOHgC2OhN#Vg4>DKEz;s-tO<$?!al;0pc=z$+_fr=k|k?tUTir#5mX^ef5 +z!hi+!lBXNyuMkNFpYyYv$`JVAJ +zxQ}Az*ePNEW%y}!Wqj_SO{-V^9<^aedaZzu=Q +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 +z@cz2oAD%@&wXge0&SO&2_AR +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 +z=qK+t*Yar@%$xkZG>vb~Z8T +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 +zLE8~*yF#_LD`ZK@Q|8EFh>o>HDsvFcJ9(; +zT&elzg>8O2vs2$zsa1UTctipxpTch0aqj#5^GkW+7HWt4zG~B8(l3`Y4js@E(9fC; +zpM1BnP`jOcgF`uDvPuK9%@Y8G`@2^!)6_i|9R5fRm$aT)D2=WJB5N +zKAxvNIMkDYn+*44s*PPikw(+U#V6sHrmZU(dBGp-PYM0{Yge#wq{fXljyzf8NR2PE +zYqu=Ik@0Xk9c>y{m1s)St6$T729pDdBdfa&j&x)P+;WdauV2EF4q^3YaHK;ECG+mE +z*Ply2mB;)V3K$9)3izRb3rFtlJ(6Tucy^?eb53sCzHSZh1oizoS*LNN#+Tj}R4$sE4A=A-JGzS*P#hWfoxzcU1r?DY +zJGk63B!0Q)zOU{X9O$+Ge-!ka9qAWcMQmN9JNia7|>%?RV=RxvyMkp1_ew +z$XI;?osYDpcyIX)^8m_y_QG#=J00Vt>cawXAT!I470LO62w^OkDf%q$=I%qn^( +z2QJ|g_NVDt9s0mrK;uRmN3PL0QsYaN&-txfG(VhL>V*5@V;q_19B^NY;{FAm+%#~c +zr4OVG<6a1zy}We7jxKQG^2X +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 +zndP;7Ylt<6x4azP@nvF1`anonM1Jcauw +z(tY9A6!PcO0V?iG))Lo!&~-Td%a@*#@f8?vWqrRF^4Y!u{%z^Y0mcrYh&n6R*A}JYM;C51pR*e=Q#c +z-D!)>FBLC6mw9R8T26n#i63Ns^UV?L-|*qkdmo*!;ZVQjT>N|M-cx>m*E*yx-{$Si +z53jGvz+cnxbmqTrtzMGo?y*B(j({tZOPXEYhote>p{9pDzv)gW&J@)*_cRA6I +zCan7~IrLuCckn&uPy5@2|K+?7PMs8dbKJjum-EaoE)G`g^b)6^vhc3p$M4d$o*rqBEfJ__z~_ijNX +z9x?sp;IunC*}wmat)|!2hkTdwrC$!6J}Eqh+p}`Uoxy)T_e=KwVfF0b)%z&AISne@ +zp6Hy=x)nQ&WIAv4*ow?4hrh_>e7yeU%x~Ylf&G5U+4|Wn?|p6RolKM6FZfsHqT!!# +zU;c6OmiLa{S;>{3a*kQ?Qs&}qRlR5ZdRb*fv(a6A2!^UgL^!H(`v +zIPZD?{dsWol|N_yovBZPJ%60(yI+@lvc>ejJpN7Y%Uj=gCRkD19z^|beP@g5Q{O+y +zH^27(@_&Mtl&N|j`Jc7H4^wNo4SzVhJb2t+{Ev&-7oN1PeE$(lho!$rXKp$9k6g|{ +zXFikZIp-SR{W@g$uzUZu{jJQeM{a*BbLO-E;=Y8=9eVGG(Q7&051rrq##5OGufLk> +zeej9XGjIOpN%kLi_HpaJwBs<}{QCIW!-7{v-s8N}et2_mzezW<|FIq43m$!Yko|tz +zbM#k+PQNRp`0{xBt;{0m=2F!xir(W{87&P+LXsLKOOx;-{l;6!hbSTZn}~A^3E%N +z&K&vsx419chd<8DUwe~pe*Jjc$1?Aazntsc>+XikwAX&i{`a<9xNh`<|M+gtupdti +zP6)is>E9oHW3VE#iv5juycN7<*<|14Tsixrpz!5@8y*h+ZB|_n{90J^VQ_WLBH#Ra +z>4-Ojiv^DcTP*!q9-IUZqk6`priy!LW%)s+Wvy?^VvI(X|oN{77s +zj{}1@{Z3&9DWw?xS^32Lbzi$r$>HhW`9|it%za$uelM=iTr~GPzWWv5?#;~n&<~g| +zw=H}!v(@#_abG6y@wfw}|8ltH +z+_K=CbJg7U|K|QM_`<7d%2Goxb~*;1)|1UzR_0cktG)9vehIp1k?B +z;N?^2`R3R6FL*lGQ?nn}yU$K5gXMSqfcT +z6mB`;n!7Ty|L1()Il +z^X2_JH)I}ee3<+4(j$M&T>GDMIo?luUfTI*neyeGT<^NWXJyW;Q8;1c@bY!H|5afj +zKjrN5-00u|-+GA4S=ex4uxG@D?0;t5L&05sv5W71egEm-2mgJr;>)^S*905?R1rk| +z^WS|kIOq78zWMd!`Uiuz1ysFTS9JxS`_s3%4exw&=irBHmCpCmucuxwUw7L+N)B&2 +za7N~Pqi*7I*6q4F6MCu5cfVpgKbkq>xHjg?kN@|s%n$3=b6?i&{77b5eTQ#;o&V~p +z%>!AmYbhy8#1!+pWT +zC13Mh&W``?4nDNLocnU!^y`C1K742pbbb7*-NCx6rgOX>I=@+y32y)U9k|}Pe>f|+ +z^mH{AKHhJK;7&)Z^WC17w(0989sL_lKVthSnI#o!UjFNg*JkeCw$XPvvttirc3x7? +ze0gZwwV7{Ezmxm2b!ubgsy$*H@26jP-*|Oq@gYmO-sK}FW_G{fD%G}Ur>uLpY@_e? +z?Dehff~P$E3r>H|cFTiR3zo6}qNZO2A3t#$-{ow#`-b4tLls}nIq8bvP8-Js(T_)_ +zuMbWwJH$7?um+5*{R-FH^H6K><6%lBxBTbU!D+AE=DR(!@145t@Wj2GzW&1lGPj(% +zlKq#hUYXf_LXGcoF8bp=ncuBAp84|paW`d7nDR63%kzJ{JM+;cC;H}BsOkHedrvr( +z>wV!LV>5~SFJu48`U&ffJoawi?HM3BJpD`M}#U7oIbR`SQuP +zugT2)(kkxDxP#VaGApY&UV2q*J{`5sMVYyAs`>bpJD +zw;d7OamyPx{o-gic+sUw1}bj7K6uevLw%QXas4g9%lA}#nRi83@Xh6;gXqWHb8im* +zW!}NQ`8EBp9|iZSQ1!mNg!AtI&`z28 +z*C}k)IR3oMyQd%JyI=P$zbR9;dJ6O9r$7IGX8U1RabM0k@5an&_Z;GzU-$q0?9A2Y +z9l`Zp_p7gGu72-q_J3{q*mb9$rPjQD`gQ&t|D87X61CocJ#=jF-XAUIa^9Kz!{C3b +zKJ?w5J<>M>SJxfHeL4Kb&fuGe?GQx$D~8?>tULAqj`!1^#{aAguK3vpT<@yjqTmlZ +z7IJ&$9Qo0-XA+ePo1HbbGxN%&vpL>RIZvdn&wTX! +zzTBQ2pZ#uT@!eN)UtmMNa*x^EM?d9!GVkB(-g +z^|aTI`zQOC506e;apA|l%X#LSw-23mqux&;`pACDvqU%9XYtdoD%p?J`;QPF_kNG; +zQ#xfSpWcrwbvrt%E^i%v!VMpvbLrW%pD3=MJnl5rLx<%#cZB&>{+!fiKhmLv*4?sH`Jex!~!`;iXkis3D@9|<~T%eI?xW0|aIi_^#KM;51#*^ewvAG04>oIYkhvN(Oreq?d_nElA&^fCL9#p$!T?nlm_ +zZCRtXp#7qU&gJL%4$&6-!3qB|jkP-uui~&u0}E_|j>-e^&jL +zdcR3Ti~7upHh<8KE9JXhc&)gO0Pki;F{l>BI$^e4}|uW);_y4v&b +zXR!DI!j)P!$|%O4>XwK2xz>TG$4?n(i=T9b(x5+hwi|!>#?Kgv$Dj8?dD(Gt?jd*Y +z6K%X~>zu!R35q-CT8i{re_9gll^>^ZVeyyJ?sp2tqs5;;v6^P@tLiNdw$wiHcWWoSdM%3p7?2qdw2Mh4fMxx +zXWn$yNr;>H!m%5koAwos`@zax=OT{E+VHh^9;A0H(;GQ1_;@_xsLl<){>@yDYdiac +zQHZ0x?G3R#evIP~){svAwKh2x2AQt9@lzAn+_eLP;3_h+KXfx6yZ=c;-?CfdDCG(>4TC_5-s3-$5$+H7wx;3(rx*W +zqVokS6rE3?@($JfnAxiMu`kv8mgZahG{v`9seMC7DE^*xlH%{flxBvOgI(t;Ie6pm +z56)=N^78R`B`>ECT^`hO^}#45S28YS-js16Z&N^v2jdca!sCL(Ov2?<*%nasqWuaZrU6!@V!kb1^J6BmF$j@&cp?HFY97Y;^_XA=0@%{sZ;r|l-A`Cy?S&1KqhEgg1o^*8euNRfJ^dmK +zKlCrc@PCbdl|Ei&eVzOWBYsEvMHqe>kQ|18C-Nf<|IYM_F#NmFFT(KeO1}uhKbn3K +zhJQEuMHv3w=@()6aUl#p`0@n#WPXEOfbObKNR$6M?)drP=KQz%6pKC-!$S+^CYr{~ +z2}hy_9Uo1mqwRev+?815UvP=YzoMrrp~q|2?}_hg&|b&rb&I`@dFLX=6|%nZmMiO+ +zQV&)-|1#{N=-8Cl37!uglzRMjm%~ +zQ}Uy2(w}1E7U?#J>(F7j{245MfL^7RjWUYyr@P&(V?ZPK1$u3&>lo2@GGDpdJs5t` +z$Bfqq2uQe+DjQ>0Xx1@i9rM|)V`ScxaWUBI7{Mp9j*+lg$81{b7@6NT_jQcm5|RH; +zeI29ME%rL*-+CQWU|+_yj`8`XUwg92@?fss6tBRBPJRz&Ao87}@9mYgcm3shJ6)-m +z@6*VSb_=e|w~pzW_%ip$-4^6=hc_j^yFXuqbxhYGx%?R{ehdWPd*e@F%E0u;Z(AYz +zrO*rYz^;bBeB);f#pBO=q0a2M&&Pg@=xMRLiN2HhD!Weu9}<0RuVb`+HtQJ6GW#)> +zwW;jK$h;}zV$jzy8lTwf7#%k2m`!UPBlFwlzK#)GBJ%&KuVeJOMb#c%)fr9(YmOJr#@nJ-;$ +zaj5G+I*_T(WEM`{wd$~w&OXz*4-8TG%4_4q(59<%hH};KkReLb1nSiH6Xo8TuV2T{ +z$4Iz{%jJ$>sufA4Z$aNY3wrDNPA5NT(A%}(*u@Ru+Gujjf<$dJos33%%aG?jXe@Qj +z%5y(o)D>H*^GjW0M_dQ`t5%>9$M&xgo=PUSOsTqJRZCT%LD4_Zq}=MitM8t7|LGO` +zdtlObaXm$q6da)r(w0<4zRch^KTn|P_;nIov_Ek0a(n+SU%pb}oUzeaj{5&Z6$*Xh +znngd~TK;E^bNI(P?Q^)vv46{8H&K +znh}Q3zv|~l{RDak8fS5WW|_2-NJ;0{RkXasrlX??^OsQlj?zE*?-q^~x(76!h3+Ds +z!jG>1WYhilM7*W3|75pH%`ZI~X3ZRMy6-mPY~OU3cJ$R1x(l6!?oy8MBk)N!-Dky8 +z&2bX=#%NPo()PtIHNVs~#JZp9KK9REc|SfHNhkV@tsw6+MxIvH{lDsa;JwMaw4<*s +z=#J-0oO+7Yt}*?{W|IZ)Z0_XHCwe{_ +zk~JR%ex~$m;5I!k{XE;X3o76Vysh+(xTD7HS^3@(7t#3nZ04hx_f%BAyZQvGe@4}f +zr>=I5W7UC~_nc1mkIaepc2CBq&_~8+*R9#}QCCm)_@qa7yhZgXTxx!&GNl*CzUdvG +zbK;3`nyTsBAO&45>+GtoN3YlG44|@szd(09i{;d##wUb#@}zfVO~g3yRNw{858;o< +zvG6T0t`?BrM$rKd~}z)eRl_v?mgQK9WZ$#JAn%8gSLU~7y)N;V7tr`XTzed7eht+bP~M-YjDW@uHlEOS1j!%x +zxd%_&=fxA1soJ_@li{XRb2#ZA47zfRsa!m3j<+AZg@Gq7i{lAt +zM_*lAA8P$4`cTRdJsG&eqYoeP>ciQMu~aISXp)@%-2UZq%HDp=5bHY}6n!`>TOZ!3 +z_1|4uFK*0sos#_dw!iAK2Y-3Zp2U~WMju|j%WV(N`(!GO-D@fjoL=dY57qw5cljyZ +zucZ6MFIyjK`p9_e(sYvCU4iWJ)<10{rCC;~`K6?R)`y_0W&NwN;oo(iiavDe=|vxE +zeh7c0{{hXnz{qU=ET+AlrusCt5c+kMn%}8(CLxs})|$7y^A)duon$_J;Lq|M?ynr1 +zUizu<$Eip7V_8>Sd8Jza?wy`zj~}g1y!?@Fb#0Z+pHlT*srjW{13h0sCtW^zluI8C +z-h74ifUM(WJ>a#!%f6tE=SA=9b+datz~yQCy_6^GbE(HJN81~_#7?L8lf30geko7r +zF734ERlRPpak{prsCNsgb>~dVEc?sAQlRV@`olGbe-SstT0La-kihWk?EO!DE6c&& +zIWEXAUb^E>KR6sy^$phVuwlc7Z@>NayY92kK8H-5I(6~%>C=}Sc;JCmqehL|Yq07> +zxx4JL%YLVva>|v8CgM#A30YXf)ari9~v8YHE7I;V}OpOm+7p5=}kr?d|w`X~KjFN0!o##ful8 +zcg7iKP??FI+S=NllTTjKbNung_fUM#!i5WajydKS{(~QJxVL1<5^h&K9`9*uYyG&c +zuI|>Yw%Q6}?E4A?0$-*&H-fH|zvmm@_y*T=d&5XXebA{8v#?LE$Qn +zpEqw_&;0rGdloHP#CbrUrluzF=qbPQfx6q;+MY`$lT26i>xd(c;5uf^n9&mq273-U +zn6} +zmgmsFLX4m`6Ukec*T)`vEZ2=bqkpIu^&EWg!96tIdJZ_?fUG~n;U3Z;EogN3;fM9i +znl+2t@Xc?2ljQgG9*m)U^>4fFwxdYaJ_fD8?<0__Cl_t->4h?RrT)I +zv)_LE_3XRvzFB{WLz|EWX^}_T0J(r{o^;YlERPry?)pcJ7!g>pV#U9u@72|Fx!vF= +z_$+lxy`*1y^8KMrNF!}PUho3_Kz}e!L4)PXmwoIWlayyVbO!E$P8d(f1G*n{&_P^Y +z{<`sc%OM4QR|RgKQ8FdKN5Lz_JV8L6*>W +z&=uu6ecrog@4cPBefG(22ht)B@`47SBh3>m&nKL4LQg!t6m?xI^+RVjHa7A&!MH_R +zF}BBzJD6n(eJ@nEw8PzoLiIxqF|O+C>q!n8H%k2^caI70At#Vov>7r4Ub^d-`n+zw +z`Y{%S|L$=Bok|1!IjO&;rRAy9PCKm!w1K_>t&q>n``-GG_DCA(KllfI4W3q3R02XgbYEBWgMV<{CVp|Snj#UKE^S|b9Hq!%QyH8oCX{z +z{f7&k3?7_#;)%=y%stblP2+Ls*1;%SF$SRDFvrk1yVzYf +z{J;jJgFgffATQ7r?ztCj03A>^Xd&%Dol-C2W$u|YX(H=z^aFhtxnHs3jE^wadh16R +zb2H=sm<6%|KA;Uk2goz}g?6AGv_<|92EV~C=q|_)>c;p7Pl3gN=g5CnzPb^Ic@TO5 +ze860}V8MLO57~tbLzYoC+5vi?E%<{UaiBNm4F~_sWm<~N16viUTjIe7lEv4ck3k2t +z9b*#mi~gV;pod^U)CWKMi+kneGl*_gj2SVPhC<)uIiGOH|0{;Qq<*+qYmh9wMsoyX +zP{<@?0ytFR-zuKZ-53}$2AM$`U_R(_(45u|!0*5DTeq|WW0K~n+i7lK{fV-G?IA}P +z$B<{p2=oR15JrE|R>(QlBH%Y<$~)Gi4nHn*6LdB33HpNZi}?%fK|R0|_`^B~@sJ&~ +z8FPwT$M~tMP#Uy<%$PCbFm6dUUOMB9<%A>KS&u=Np>3p7fGuC6cH98|6)LOLc(et) +zLErY=bI(bn_YOhZw%&T{e2<&S13d%vUo+>^7;vE*+R$FhyE&*%GfeV^+2{?2UP7U`3H>x!=(&d+HN +z`uTo+zFhX50_Q);-(Lw_qFgjc9{<$SvL+^+Pa@9ySxzF+7g`xV}E<$*aPviM%=`TSDz3%@?= +z^Zi{HIeJIh_aXC~p#A=W^j +z?{7FJdfQ-+Pi($9^{DZQ!=zuceqN#a=bXnAeh7a=j)iZ5@!8|D)bq-v<`@2a*5~`( +z>lA5|AJ@hU`ux7oUGfS)x|*`bg`!*N3xB>})`>zdzpl_-^s<-kQcj>TAKm3{-`#Py)UTkhQcSYPq^0uINvY%r94@mOFj0wK=vK=bKGK|_m(I5r97d# +z)ML-9x_yFsWc}_v-!J>ikWEPb7+s*aur*yU;(`%@!-f~#hnBr_tb_P`zbpOVj40jE +zL2_`u!JO|m=lk7fo6PxsbG{#E8*$bUXAg1a59j^N`F?Z0A7?+!`Tj$*o^vth`_1`& +zbH3l4@ApDqR_|M1OWTt2wgIofX;dK;Ym%aJ$7_bMHL6OK7T*^-6fOJP{2^YP{2^YP{2^YP{2^YP{2^YP{2^YP{2@N6Quy`0>_Ze +zL+lWHP&opFEcZpzL}UcMH` +z6X`Mi{I->p0axmi@}<5vbbZneu5Y3{XaD?CpOi24Rqw9)C+*<+CiSllcP^<<%9r}q +zG%98($3!6 +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 +zjshskn`%rXu1u5{EIMCElPo*G|i@4*Ekb +z)ec%))54D|59Gm|M?ax95D-Y8ejreFq#=HFdvrPb1$epO&34r}-5uoDjFpZ>%82)A9B&iMUgxYAqiv|Py +zkU0r$RnQBDv)Wi|C_>7H3`DgPUAq@3+l%T5>sU;Oo=9mx@*$zd?c;VcOC&;j1 +z-=jr%2Tk^gX6g`$R86Z4m9kU=b!}-I8FEw`XbC~fQvz>^Cdv{cKtv!c)!U_4xvY_^Q%(yBJ%=%P%NmJLq$V1Huc0nVK2lZn@BFV5xS6*D8YxC1ep{RV`^)n +zlX`EdNfEMO#mxc*_ug~4yN@X=?Jiy+7E5P>zrncbTTP5fwWdDAxVOf +zgdrze(OR~-MQEx{ky%P>CoJ7)Y?sxxK?rqZBmpJX#J_00lKEDP6ksxjTii9OpDM4j +zVpeL`h>Q?MnW7#d;_H3-evG6YilkKNxYBh^RCBn!=^r61YWSVln=k`3yF_JN`l +z0p<`=L@C;#nG0x{Mg`Id?>5mw#)QB{C;wBc5u#%pG0JgNUjl)^iNJN@uS;`0V5cQqHJocFUk0%kc7^_!l~FnU2#AU +zH#AKvacUTiJNq6nqPc_FtuPE~Okv*Bc#4)}k!W?81_c2_TF}z?fKPKR9&6M-;UngA +z7hB0DLP(IL8r0QAHZ<`R(9lGX!J%Y*ve{u;Bu+L89>`>#Y{aUptS+8tV_}TbK%%im +z8jtu*wsAzB8f1; +zk0hBTsDEVKOLa67LP~aon22n{fn^0PChB0l10v}`Kwcseufw#_2nAAU%x|g)Z11r2 +zOhyaRB=w8h#JedZqq1;8C&50NDH_5t +z#U^+dw!_$u%3Kj)UNbroBtqFKB4i?GKvzZ(inI$M2Yz=-8IAdNQYQ2ZuMh{CpUgeZlu8jU&-A&Y5*ct`o+MQNn$JDN}gd)&Dx +zUbRLiU}}*cl+y&)Aq9s}8;wLvLnHuPxtc+wa;kVNN7uD9MR*Qi>k$(mRL9f1^4qgL +zW)CI_&m(H0<~Ybc_G)507_|-48@6{ZV62Zth>+UCVuuxRXw!jIJ*|nzPVJ}zRz2QG +z)=bS|y%7ZKYnleMg$X7_n-(5yNH&DG{=)5iG_~A@J4GeysAUy(Fi;rO{~f +zEZF`P7~)w%d5>=d5)8$maZ})1n08n~8i|!f +z06KWSwg?Bi^g@z0x}9kr+o04p-WA3kDuwjaVK<&5NtJ{c7ttPW6TvgWG?dhZa8!sl +z6bS05l8{LNjie6=;IYdmoF0lzkQocnp)gMru7-qaB*xXrP}tM!Pz_DCR3#)I9@=-o +zDj*b@0Q^HEpdCX&livv{0%Bg)_X!N?K}gC=nV)O}7|KgcAe|m=Y9-TM8E>4>bV>WW +zuvU{&uK|Q<&@c^)N7wvJ=mf?5Q~NdSy$BVBf;lrJRMduA~L#yoRRu55y}^sAw)}HIITPvN0W@V6krXd +zXlJ;F?KjDYT9)b?wWNRe26^}f&t6RXW|Drz1)9NW`=(Z@lNK6L818kn4XS+FuAp@e +z=j9DMOnx-Lw4e7@qm1gX*J!bqA%}`o7zaeBy^JiJM(UMxgPNLnUBJ6&YDY0d+Yw|8 +z5{)I}hIlU_(ge63Y!Nkpr+CJJ4)p6MH(n1H1HkC4t#T^*n^mvV>;$lO7>UUk!F;{hfeeX4%|?y +zMJ51tTS;m`60IueSOD+uDmk}jbu}x~&6Y;U9OWSmnj-UNGYma?8BOONXoQiKsf~`f +zu(639vM;Gfp#2s;rbC7#^0%?2fwXGJdA*pn-$w8lSnXqFW$`&!g +zTxvU=<~t^7qNV|iBVmVS0Emc}{MrkN&|WQ7Dn_kb)bv5tK-vRj-23}4|O|9XHBezL}Dpy?F!UtjaNnz +zM#GBsoXV(!wrG<5ZagZP3{h!T$0cZ4ONWeT&9zvLFwj87!Km6{-P +zAHRHl2JU_ +zX1qLf-&25(8Z?1t|9C>J!l`P#GNTxDcPiUt$;w6?qop#ePNaWvXPUC3!nT94${@0i +z&4|1(4EzYQ9UhF%2v(j +zOD0eawC7brK!9d1oUx!2fKXLf9g(N +zN|cv6sy(pdGf3gnNNSUny)-Y;!WjqhX#DcjkAp|fnhy4Qo<3X)37MI=L|Qu$a@R8$ +zCQ1T_ipu0yOJtmqRSBp!w6_ZINe3hmO|Fh;Owm~bI#6lB!z)(;0JVf`XzdB`U3>i8 +z5RKdvHwF}=dTV20McU+24MAuQjztKfuwke^5vHR#TpheBDRB+~NHx18wCnL?&)e(D(gDl-k#B8_(JC$SlW +z>443p6d5)M(Wt^{)RSn?*$w*P5daSj6Pg54H4!za!?aBWqag+$o3+s?R*F|wF}9K_;yf<`PIm7{YY5!$xG_K_+**3?WVu;>=;0>J|7Oc)v~sA-;N +zDlv`3NqQi-ahh$&WiPK*B|ufviV+Z*7Qwh(R@X=)kZihPQn@(48Vc980!7u*&I*AK +zEV^YW-QKZ`mPmXSjv^7FY|8Fc-x4Ep1JvStKn9wbN$a~~NDq^(h=$hjY=pIgoZJr0 +zmNNs8Dl`vg`W7?Nhi^8|v`eEZ28(ONaDR?gM_}q{PG)7eC`vXUI>X!)J3bn3*Dme; +zaCjM+IFh{Oa*T71xu%ATMXlr|tqUKf;5lmb%vRh5w8oFnaXzb+%nOatc}=nOv9Q2n +z{#;Cp7S%gSfHUOLV+rQrK!${mky)1Or+bTetCClMIPgIcykFzY$Mc%%&=f8oMkfka +z@IleKaB>a~d+}YyxYSQrHE>ou(wsV$426nJIsi(MccDIIORyZ9=sZm=79+Mha*;Z| +zCAO06gjumVCB(Wuk{>)5P-l14>O`Fjq9s_8P)D*JKQ-7-PY^d~%|^#rXkAQW +zh&DxGgN`ToG*lyDBpOz!G_jUlJp-obEQl2*WJ{~ea6+HLp*eXH_=fZ(gS4IAJVzaR +zCLfWXjKYx`9TTZh5p|IW^N`$XT6^JP%-XgiqaAZFPG*xbqRr+up<8WRWk))iIwqQ2 +z%sPT@Y58cI2P1hrO7!Mc>H| +z(W1_E4+rGQxI$Q*3!(06pOQzbo@`Q#7_i2yQA3@&tgSb+$RrB{(UvX#b&bu@dMq?y +z1WA%2BTEKX1wUmMzdBZ=i*0GAr6V1~A~OQyvXR1^PMXPE9jx;Slws;6CXgy2+a)b5 +zRK?&JGz@D_dQO8!60b5s@?Zkix1nW>o8hB1c^s!0$j?X?M}uuosGTqwV$>NEm*om; +zDTOomWJeXALLgfU9f^vy^UQ#gv|J7~$+1X;o5J<+j^+ksGNGA~xJpA)2OAlcQ)-%l +z?8%yhH>o*FhXJBwvf*O2pANPXb9I2utGPN%!F*uaWPsph0 +z4P`LJ%0#FYE~?|!D&*5rqb8Q-|IgTa0N7QO@Bee}mV_1}pu`>{Dkc_40I@yCT1lZCSL_JkkKjYgDymkM!)^JHgJlPd`#Y +zOAR7b7aa9)3`gz-zbqM~sFyH85mFVU{vbr^gO0a3kzHdGBJCtaVK?qWN3{=emCRmD +z;!8P~9Q2NCV}lic3CV@X&y}Dl%9`yedebf^ +z3Ret<-Q`S!Ju-yTVu@F27gp<*bd3*h&9WO-5~Q?$8Fn;FP>|u9GLibA(;!cWwnZHm1X@fLPsRRp$|%y2epv=ZvELY;(gkjx6@Qbk}P +zhZfhUYhbW{3iPMt;3dr%YiWhv&mmU$(Om3R(uig(mXlMm@5@qiBX*Tt>fbBntEQ#M +z3*k`legojo7*>b$jrE2V0Hixwa2Z}BA_(OP!ntTG)rzxCj*Np0EvIcEl*GIdW;Huu +zy`=>;?~*G=FsMr&oxQ1hz$-TDKt{*(#Mr*K%(_Ypt&xW!W|ifdX-{=$56M!5j!G4q2&4DLN@Cl!d9;h|30%E*& +z4T>zsfu=$(%hWwccFC?$7W#~h7fc9Cy~xD}IidJQCI*;B`jfIXint!9m7zO^i?gZ- +zb-Am7(IY}YPnX;`G)AUM;08(NGP_uIwrZc{pe8ROfAjlAB@fpbBa};{F9K=MC>2-v +znL+Z0hN0+d81G)MU>(bVo`A|1mb1LP%!S|s++4{p3NtK5RWg=d9Tl4zWm}Ya0Txke +zFE;v^$Ev*Gdiu~lP$zD-aKqkMv)3vIG0JZk=*B9u#id +z4iH5gD1lQ6QEI!_NEs>t8c}BVqBTSu>_l2#$Ow&R%n+EPs?3nWD6YH>{b9VpAutAr +zOtM%VR!GdC22!ned)TSrIdZ8m3)UQBNk0)M4vjr>r>Rb+oAzUg +zIYb;BMjhT<86FgkF*BujjD;`6AzH)q1t!RoMfYQzQKN055~A6P&85&y4z<~2Ai?$^ +zk;J8ljB?`8S02+qDh#&z8d7sxOs~qP;#wXV@E3b**QDlai!1m=+1sR7i|J8Nic=wOw0-xRZ6$M=fb!&_Qdu(2vJ +zB4R(qj9eQw21VsrLmxRsrlpkMFxpUdhEb6*MNJU+viNp$D9ak;Dt`CEgG032wx^LC +zGeRKowJ4ZWRYp}%)x}lbwaUtd*@go|2Kj?Eofr%9j*cojl~kSMi~w`LsKz6oJjLKD +zCRx~7M^`-VA3{yW#oV0@-zXLfd>QV_)!rT&zH*d$t|iHoSjiEP5Nphm%tf +zti3*Qi9A!Hs8*#Rzq9=zrHcph}6#OYKWW6EBgWVWhROmbTw@|o)Nb3Jjvuc9_3 +zOxiZg`$I#TL{cru2$rC&Q~lOW*T`Z*8G)kYYLDPRh^Qek>S02VbN1-%O%iaq25E>6mkgZ&GOD!3(&q<^O`U=O;QUi6+I-#W9hSs!XCBg +zm=9qhRSVWAB8M&cZJVr52m3MwWH%aCADiz7UF)JP$(RZ29FWhEx%S*w +zprsO;ikh2EE$cu;g|NnDmZp@gmdxkOg-k7lPR*Tjj%I?TnC1()o-86;3=!f8dJEJTQ`5MbGaC>WKG8w1C`8p0}Dw5jC^e<@bwuqp}Ee!*w>rDK7 +z$(wXYrx!8{nWNOL$jXS_HPzn=!wQ!zCHqlT3~`)AeITuBwzVJ>g4He|AmSE)#MPvW6SiL%$fdQDuS`_=3snG9f@$$1Kby=(0eIyTv~%fCD8W$lc793~Tn%qQ5D?K#v% +zg@-Czt2$N7P0yBuDVSZa1x21DuHDO*g}QZzbXt}4i9>71$Q{W65KJ0ky9;+lkS!D? +zfdspKh26NOf!6~wsH*6DY9Xz{3Ri$Fss&3`28i6TmA9g$<>ZtTghdvz!0{r2EWBtA +zWV9f6Gj?tj)2f(+5kdC`S?FUeI&7iD%D%T8=?q%Q0}^~syrzD$7Mz*xQ=*a16n1$P +z%qXsNnwTIvr;CAZiUPurFKo@C15~X{@K;Aa3a2x!^LbUBOQ>e;A%PaU7zLmm+{VUX +z~=UMPUGOGq^`=&a{!i +z@Yu#!L>pt97kL%}BaDl1$OeRrGTdqfOGb%20lV~Gz{9rkKs|H +zD!hJzJlQZH*!Ae08fNE09>URJJ)J@hS%wF9%zm*~o5sGxkqUd_sl)45H(?&%Uj(Xh +z%Hmc}hAf{YR*z<uoI@UN8 +zlP@omO`c3NJgkz!d-UgXh)m}qNaQS-Z*2Pd)xbfHGG$~F4EEQFL?&Af;n-iw2uj?N +zQ#0c@-lxUpEF|p5?I+F4@J5gwt +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 +zSDx0$qd?ruJYps3kgqDqlg#d +zN#3$IV3mRuF0@$36o3XgGZu=H{aPysHjI1WT7Ioe>HEDjdnH;Amp7b9Tqb~%W;;gh +zSDQn;7WN+4LquxD>!FtDSKq!Dw5l^ +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 +zPxkz|g}G^Qh6JMr@-&Db$wC +z9IEXu9E1c%Hm*U0W64~x??<8|)Fl#1h+@s#X;5DvU410M@#0>JgryKTuBduQDh#$? +z%Vi{)3Pl4C<+(>cL;hYfx*Bt<=qN&BWe$?5Ee6#eI+fg(U7WL$R(xqU9|#jNi2Us^ +z@4l$o*B<9?(gAPcbSFhGXix0)us)qg!;mU+J3!i}uMn^(AsOrOg^-Hq;=}MPz5>yU +zz1=pxd|CPX5uq_bvVfMdYHr`A0?y~|yj;cpsj+=1sl}VPYSt;j*sFOw{7E9|W5r7A +zTVRq~(EFaM(C&y#d^}v3I`0W$OpUl%Hx_IA9k4H#BFMlXm*6B!GNf$!_%GsB_m*Ao +zC7iQSn00;G@-Ez%O2R>7B0)###t}a1Eh@L4qk%fjBZq9#(JgUn8G* +z-|^Z2MW{TdRA=!ykH#9;7%WYw(7YJTo@gKT3S)W61GigBSA-xn{)&_{~6ssdn +zm&>-*yI0}@vRvTFI)0~M=$lZof6M+ +zO_fw+5&@2vLoHUXWoH%6N`-kQ(u)u>OD{7@{&Yk?=lxxh66E#e!Huegle--}nk}DQ +z&d;tY_w0k?kZBU@5t3A&J!*aHNI~TTM_?4JfjLOdlF&dh0RHwS5vNu*fZf6yigs=SDDrK(Ml^l>8*rPEc{ICEG>hFFj|U>j2@03Y1-F3Jt8za=?p^xKzB~ST({vX9&}|)4)R?@8Z&kyYgmzW<)#;!H^j8PuI5s3d0M)A +zSfZDytq?kho%4jzPRzk3rl1@VA5IiN{uB^BgdN;APzv8Zi2Z^^5h^FCS?tO)K-0_W +zqne+W%LIYaH}~1AYbC%`{)}*D7}%%1e-;#4yj6QZy|NhR)=_<{N@5gYW$E2iyZ9ut +zS7C8#5$07{vD0ZuBvlFq?s_wq*c45e-#4L*Eyyf4(Q%-Id)&pxK>! +zulTkzo_PT=NrdMm(Gn{T$~8w`s;7;WFS&SOf_T*NMO36wsk>!x%gYuc<#6`_J5Uu7 +z0nR6!GEKvrkUq0jVWQE)d^bQ!YR0Q{XXPlprRb7WpHN2JW7S|0!_XuGBNrcl4*XSf +zmL`#rc730)jr8GU(-saDYlrGn@~9{gnHq4DKvEF~@);Xd|C%ER!dZWl{Z7h1}kV3XgN(8)MLT{skLy4s4riZG#t4AK9xYdG}}a +zUeM+s$LLMfW1;FuNHo#4UgT~R<5Bg{?roKm!zJ-{SV)F@x3pc +zUnFGNLeJ0FU4`s-e(>q-?BEkA8112GDjzHmQL%LlQ&)taa-)TgN~$w_p-VL{^kwK6 +zg;pXepAVTtGW>iZTi5bR&8R%e660!-@@)(AnB~J4VMAC_1yPD}fgHkO&q6Rr0cWXA +zR@(>{fPld17S7a$6Rn%h4Qc5yskLvwV1&dI4--k;l!Cd2%8QhbjX+Rx$c!Ee3*Agm0smiDz-JpwG_072neeHuA5wXe8WrDN} +z*EkzAmIYP{qf82YUp|piO=R8Dyu!$ulbCFJ3=Cz{_Ld9K5Qj9wyhkHo^V~6SwFp9^UilDjTWoy12eii4mwQJ +z*x4g{hJ}FIsm^RLwvZ24$Vj{<`3aqmoIrG^ZkI!?F>W=Y5WfkjDunqjwc*yuT{}@@ +zaXaY*uWIbPKvADV!0-`Z$oKi^0j11U6XIeYjbylV#k*ZFs4_Z$vkxPB9Pm958u?Vh +zjuEb3A3$r0h04y*kIE%V8P&HAkScI~%ZrU4Y*{r}(Jsqa!f9iileAK4y42gT+RNm` +zNPHKzaAV^bUTz(Oq(WrC${_=;ln-q*tlhEi +zUdnPRa^?%LVg>RR<$&BB%qxAtIX*!l6*FFwr(yF!d-YXCh%A-?PK;UM^y!qC%B&P@ +z&O9;gavH`LV$^$RI3*~Q^%~1w=P7G9HJ-Qd6sc+HB2xq66avFp3(P9w>*T0T^I>() +z2!(Yg{VPiYqFi4%OOPVVsuV;r?)Xy}XQ6fdEh$6)=nBeLYm>YbkKMJtm9UFb)1b_- +z)NyX(JDcp#A%$|3Skmd{bqCXxhwfh^08EQmJp07rwE2*DR574%yV)});=3-kMN(nCK7Jjq+HYnlo8A*Gud=G*l$Slz +zWhNmYmo=M~cAFTq39-3m`&i4;C}dA&*4dfMC(-Bcku?ws?D7;fz~`bJ#?+HZzM}19 +z9rZ&<$lr3sceNc@F<}&_M3o=wkv9K+su<;rpQKSAKUu#6;i(uZg~ho9PY5T}63kP@ +zc)NEy|?)L2ZcOC|=r_Lu?-bQze*!wyONXVk81PvHh-l~lngT*fu$#bszFuNBOVtE +zFan2#GgD#UG##GYJs=rBo`^L0!gQehHW|yrOISw7R~#%iice2l7mzRC(X=pMM{S{; +zEL$#U#G~w82W&ub;tZ&uYNF~|)1ej9Kjj-IB!lL>g65BqDPIE&cProUg9?Ih4R7$L +zG^O@tt1xU*k;ZU9VY_VZB(!S_36Hh%mJFBKhrNg1W9{^sW6%De>F9O@>9AK7zsAl0 +z5t&5}+2j0-NhH+r-1kY~nER&6IF%k1lLp*E1ngA!bb2}NECnwNX%SY$9&4dPsORj= +z^0p#bADV(o&O+RL4S0zv9}cS!W08#o?qs!v21=sz;wig$NCrwyCDzT$r7#Zp+bEWS +zltN(9^8p!QTpb9OZW7rUghDOAw@gMr&M%Tcv0LIIrtqMHblIQJ(HTJ(;koxHO)Z^{ +z+bXoo06+)B>p{cq-4|?fk;`j*oQ_qB+9;gbr&)f*s>+;Nwzvv+*4#sE!%t{^voq)N +z5Ln41_QK*;qFIzq{bzolfZFXx&wCZ5% +zwYf?X!lfmAPTZ%(e7yte4{rUKM7KmXI?)9gC+27CFrS@Nt~*XnI~JxLi^wc4XYM7W +zzEbszYUI4BNd$>NOAXxoJDG}e|{IxYt@s3Oy? +zaRgT=3)ZzxGx&COyWRhMdBJxYkiyjhb?GkU_@qsAMrB|YSy0E}5ePt^-a=TZ9XiC) +z+Sf7OZEG0PVqHxe6N4_Rd8m3A-4&rov4U+Yy#yXqixNCtZAx5elgZl>n0ufttgRUnGXS2 +z8p7Iw&|0XVu*vL0#wfOMubbhr4eH2i#mm?HNFUW*;}Gt7Yp;kc{IOj)39Stx +z4SW~Zp;SA6G($2WXgA5QTqFF#ecIXLD0%piEyEJiEs$!sw3P}6>nl2Fh=y2GP(>Ik +zMi=CMccWuCv=mwt*2t7DMFqWtf>V31$61He?G*l~+)P~<`ZAw1Io&ko5WQ7-!--&G +z7>hq`AD+b-vqv!WJuy?VF|n?#cM8r02udd;5qVpn54f<&tH$`BzV>zHS-a;5QD}&7 +z!b&hdLv@?^

Mjx#W^RKl(LgH|CK=#o(is6u{amegi2zIOorQriX2c_A6 +zNSgg^X;ky}vLd9Ok3!nZijafTw3nqcrL5e>mZgghL2Gq0tBWB_W#ZBb;%in1r*iG4 +z51u9i*P*1&y0YG?>=IDDSOThYOF&zx^}s`3jS`_3*k?6rd6%sgbHpgs^f7uztDg_X +zPw}Zf(P`wQ^!3pB{IVnjHP;~<|8hOS9o!8#%vNHbHz>z +z;bx#afMPg^CktB33x6uxxbm#*lq+sHDV|OoEuw%oB^k +zNfY1a*gKV<$o_S|qb`6b4H8|SwN6z~n4aX;v0>>aN@%wL3eV7Ghoo +zE0KHv%lVVDdt2XlaVnVO@XnFo;#BaWRxnPHVGzG;^tn9}KEGp!&gs+)kgW!^QQn(ro4Eh(5?sVKXS+Mi%9r%NMl;cFM^B5eo`XFE00<8eCs0HWU +zm>w_WC0e>9ne?E^^57;k^CjFdcs=0;JsB +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 +zw$jJEdnL&i +zx+WcWm_{(t%%+^P(na{^c5b=vf#Xg*?$YKpU1t*7N$V12?B(st8keLwlz$Wc6Uk$C +zy1a8v2mSN#Eon~2c4~V$^}MWcIyKtzz&XsSs5A2wmwMzHJ*epx-rY_w=pU2V|JHRT +z&BDfPLheU7moN)&={%8{qSmU-Gnsoc8LP|EEsa}f`8YK`;MhyZ|4gTuLrv%4qrLpQ +zxtVAIwP!BxrO)?L!*R+zk+-%`AN|dw<(lJiYprbO-2?R0mUI{Y(Kbq)tx@Sbi}z1r +zcCiZ54g9M1Wpq`hX0vAa%uda1<#rsubJ8+OybCR1m2}PSI0AK7S<(txYLnA#iUB&Z6Tyq+XOye5nJ>$jf +zxrR}>nsL3Fn8YtB$m254(JLwOGOwLW=^?O8V@u<5moPV%qfwsgHM9lSUjEc0F`oK8 +zjz9Xi*@50YIYXC7x8WaBg|xupHDrnBlL92yNIV+eyQj8TzY3t +zccMPvpT-TU4`nA(-Q1X)&UfCi+ApFW7tvp;kK76s7PzQNBcEnNgoj)Hn0E@F%_KXK +z+)oFR=hMw9t#KK3=b3sotY7-HW}+@lK+i@xDs=z}Xrvl +zG}8>+GjQLI_~M>{>lo5%SLjTK0fz%eq+|J=LD&q!W)L=mu;a+%_Pl$0;_l#7M^fHV +zxMl%Ir{hU?Jasvqx~T6HB{j)CIk)3@r@VPQJ$x7-%&)y_j?*>M9SOM;aA)$n3vgFL +zIvsjP=Xp0ux;rVlNHG`pJ@R|=@ZS?Snp!5Hf%^nAJ56W04><|f-WQk;ETEqE +zBd`0D_5r-}K++$E`y@&|nfDd~iwHX<-7TF;`qRkgLBQ$MK>hS!;34=Q3Oo$=!>Q3D +zc-|NPeR%f_YS*3SG1r=DF|Y*CD5yV{Qrp`D320E$Wz=*zy|e;YSxbKw?p44efwO^Q +zfYsG_bfz`9&jHo~>nQJ0w04HuFe|MmuO8B?>+Gx1vh +z&4zP +zu*Y@1pXcjd%Gw9)2ObYR0eB*5o&-FZ(eB275pXf^6yT|ZKMh#GEa+rLJe@SppkB`e +zE@4(^4Ll2YHtl&1@Lab`eK{jN4|qN^=14$$V}qIV0%pzuX3h(lIWHpq#lTAd)#Ii4 +z-Ip<=?ppO@^wG;5Hv`NwBfSE6CGaZX)xc|j*8;BtE(2ZpUa9mH5knw*i}hw*&8>E&oT|j%Fsmla^iqybHJzcsK982Y4^=KH&Y-&aFz%1ZsU^Z|&;27Xo;5gv+z#V|&fjPh(fjc#pc8_2G?grc)n9Fn{)X_YaE#iiInN1Q`sfmN +zjiadl0BHw-UyzUXnf7@q8j^MrzYW+{^tPCbze2p^Kh$=o=@BhfCIn_Y14~% +zz8H83@KWGqz{`P4-LLBFN79Sx>y%zW`d0!A*oBWL>{ShggPTeJ8sN2*q49nl&&z<< +z6ZQt+jli3LHv?}0-U?g}ybX9e@DAYr$ae&ICw07{v6>lM=56HpF4ENd_)7fm2Hpd_ +zlsdeZ=lg*710MiB2wX*89|E>gmk$H#gV#06{L#Fbkv>A$M}dz49|t}GTn&7Z_df-E +zn)g2gd=~f|@Ok>Z&zdXMeu^j+$u +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 +zNN4s_()|qhIdCKJ3*eW)O +z2;2#{GjJE+uE5=R=kCB<-1h+H0rvz>0PY3c8@LZ}B5+?|KCl3|A8>!*0l))!|0Lk# +z?#{H3x-0@t={}}$YWH!C)4Ffpco6>6iF;y)DQD6)h2QCD50TaL^>8E(^=D7#h3+(H@TVp?M +ze>~w&0G`-=8uVGAWrY9!nw~`1le=f7i@NXLxVZa>^px(oji>Ui_UEVZ6b+}olug9k +zhG>#|G@jmlhsHBV`^@e;H7@B+jXz*@^epmtHt-zYc`oog;-3$^05|}=5O`7dru1Us +zv@gAcv@h+R(|B38_*2=x-LdiVZt+lur%SubzWa#uitc%hS9XhEnw4JFePeoc_dOf0 +z>4u7DoK|+;weh;{6B_F8%V^*0fj0ne1l|O^8F&luR^W2rZQbkA+e!b9?t3-8gM}e#8pO5kU +zIDj@heS-OSHSkH&ev0R(fzROnEbuw{SF(f8Dwbn+KTr@sCY;a>*6 +z0$dAx6}XP{Ujx1ld;|C<@Gaomz;}S_f$sv}>%MP8e39no_woM#_#u7%BjCs6a|8aL +z06ztOM%d4J-U$2x_$6=?@T>0mjfdNsY5{w|tn_Q%`wj40;CIBAKKVWVKLFYjZYHlk +z0)GPjOglabTt&=_y5^<7bRV1kN}lf^?ca!xxrN;VX>I}j0jR#;qn~BN_)p6C7w~W3 +zMrPepdG8CP`48}4;D7i@CQ~->6!?#)L=!uq?;xG9M??-W;{l+@Bhri+nqSQ{lkmfU +zMI<5ZnpQ;K40Hg1fsD+}+*X +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 +z)Ds{4E~|Fzf=qS2eQHR>4-eKGsc|p{5DWlRt +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 +zeW5FzCclj~Yg8|pw^ +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 +I`|j_501e%aVE_OC + +literal 0 +HcmV?d00001 + +diff --git a/themes/spinner/throbber-0001.png b/themes/spinner/throbber-0001.png +index 3819624ea4e32708e4964bd9bf052850d51cac44..6a64683c32c8e2258a59d2168e4d56a7b6ca86af 100644 +GIT binary patch +delta 1562 +zcmX|>c~nvf6viJWAi0AIEiR#%6l6K}0f{=;!Z2CI<%u1TSCtI|ScI +zFb_G*4kc!CK!8LF{B*L;i&2eI(1UKq7LSp_4lN3-dXP)>`j=9`md5|)3PUiaV_VC +zV>R+bY>XZ+Moy#bFo*BR7wB0$zwbMpSFi2x82@1k&k;e66HrLdGco=TT-E`ixhGU44^JZ5ykIL$ZL1Yz8x-YgOc+ +zB|7FM0aLB!qrvQh-~E`Yz35+0e0|QaTU(mF5E-&UnTYMA0z=UTRB*Pk`U&|>sncqg +z0}KY~EY<|sRBYEIPIoA3yt|(|IY7#twUj>^3Kpz_9bdCY6EI;@+?Kmd@cwnLjy^Mw +z&bm)$FKMkGWlqrhLRi#i!|12I?LM372*?eI=tB&Mo=qlkCu?Q%l>t|VJVjqs_3Sv= +zuP2|by|Kk{tN$gkC6y*~M?-O;pOGJfeNb2O&qK8Ze_mU<4R0OcC<^T*Bqf$$Dw}Ww +z^sR#&>*Z+?UOg3onn&phSK>(ci_&+9X!Hwpe^H;ss=3heaVZBa~S*?uRn(dD^aq4q+LAp;);Go!ES@J{e&?3e+34J7qqh3+^({(i7~5jJq22Ccet-#b-S>Fq+nMlG +z@(tuCt7fffA?XUk!F$h57@tkcTP*AlrMIbbk+E8*^YhjsE!f)VL%eWMjqWC)rR_KPqW@rnJ#$57_C2SkQ# +Kpw)$@=KT#mVYO%g + +delta 980 +zcmV;_11tQh4Cx1uBYy+1Nkl1W@lHcX$V4d?vpKfj>Ka>>+m+n2K|4V7Zrp+5rx@AR +zGNF8?i|5syZGYE+>4KP*T&2HZ`;_g|d3O&9E5fybP1_5SRwQA2F-)(A{S&|nFc}Bd +zazC2L?*NOETx4b%xUaDJcc%koR3pGS+bdDDVS73Fwt$wTrtND$P10H#(r%nwip((Z +zK!U5s-e6fhDpQn~C-b87d>2>(7J;FEsiCzV92kkA4S(Rl7#_^sP_layxDkHs?S!_+ +zlCH4|-+W(}w0g)cIRRXV+%PbZAm%%DG`cXqX?s05SGcv0*kLOu#(*v0$3WRW(kv)i +z@$O-x@5tl;uqtVH-(eJ%cI$GEf@Yrs>pXC#C|4Ch&r6z@?Q!6Is=!?w+ySmh+C1v0 +z2HpsSbblDH0h_?(M(}FqQazegy^jQ(2z(`nTsSiXoKWFyuR+s11_ZOfY*9@VZTgRp +zb6*AZezzXmGqxX3GdlW4RJ700qw>J^6TsVPLO%na16L*O9Jr8Vo=;_}Rm5x@VtFag +z4saUS1|AK`zp;H;(tOtpq~_0NnW$QEErVqVSbs=k*_E`>Bl2f~b>Mg4HQrQe3r-u1KR-bs_j`x*MWC|_kdqhlJz*UhXc0~ +zb$=_RS8g(Aq8MOP(zfkqa^C`;i=m%@M{@s`?RO;I0p@If3p^c&uI|~0B()?hNxEGc +zPc=*w^}Eoqw6?PoYy%$_JLHRT?7tx==}Sp-B3}Ss1@B?t%?zc! +zx8kxx-nC}+SYiP_F5rB!%tF8a3#zl+qfPwO;ly{qry-m&bo%>imaTR^L|f@Hs(THo +z4}c#ce}#K-Y`dpOg39LIllaV=_-N*B~dQhwWnAt9HjBbO*8Wz(`{o3)F}BYwsrrwBWAA-X8t +z&YE+~W7ah15joCDNLx~N)Ui$?xo7B1=kk3%-{<{2@7L#fe?NbGpU=3#)g^@+A;5?g +zc#s1CCg{bh2V5>+1pt5-*FTCIK%-LtkebM#fG21S1}P5Yu;ajZ8W&{IQyGaoE*0cb +zDGUk+LWj5|;uHaCjn!$AbhXYdqfF+1Y)Y+Y1O8 +z=BR60w%8OwV^9Db&i&sa@P18B(J{ksv#?2vkkCoLh}3z@7d>B{#U=s&h$9Y1IIA># +ztb^u@a9DovOyb!cc5;a9C6R +z@U1l`vGwQ`N)h5~mKtPX9s3Nwx2{Luc^1j*F&hrJ>vvlcXi27@wZi|H_z)5aH5r8T +zF&7nI<`n<5TpB-Eu3>n1>W)M%_q<8nHPGJh!Lqtvb=j`QS=7?pe@eggS`0kK;bnhf +zNB!rN?b+uf_ulnk`sutAxpb<`wsY-?LHFr>h519ny>eHDXFj$gH2PTu?CyC#j@o||TR8Fc2_?(IwrFX(=u&Q_x(Max>1XJR(-mX{&M)#;;VDWP9V;Wun(^#kXb$t%day#EmGFa +zydSYkeyKt<&SuBz-{(&&^r>VfyDp$-_n$*vbHvog4^ZQJM2I}Oczr0N#mV<4SH7Qb +z=d>g75SnTiHo@{5Y98slQ~a)R7R)s3_~hPSKV;?uVcpPO4eL?QFOm*BIPNtpZR${1 +zng5XtegUCax09VV>~*z*xiDo-kFoT)k8E@LqyzEIhNL5P541L7cn@$(y};diM(jtq1qa8jMP`4W6f#(@RXFMv8~y_XuX}wU?OWGRT5q +zlVShX#ds~sa|sjfx^?I0HAkI`OwQ&n88&~PK_7$MNhYCXUSykKOo8fT*8Hs)ld)P@ +z^Z@3;p|q%F8uL62fBTW@=H7|g?g)oWL=sh_|5DyOoPJfa)Rf;)EPJ}XM$T<4%#GSw +z$F@bLu#krhEaLQB`H#1^A_i@FG}OFLaZ=5o%Y|UK&Krsl=@(9mRpk`8+C>D&l2Dg2 +zq4S>)ih-$;!h0UCay4?V7wf)bR+GbmdpCX@iGz12y~EA4))LPd)IQ?HyV%<<+W7|V +zqcdrU-zcV!N3Prz(oWYo;B5S(dRB`EZ3oN+X5*NYrVY>1s<^}3P=%_Nhp_p< +z-Y4){RYcCCw&Xdfak!-92(n4>GbdfT_LGq-?`!qmiNyK +z8jf}RtaTBS^OXEH2sz8lvQl8x6){0unuM|FsCw~gtBQdVk)p;Xq^i=}zPUNRsa=67 +zUSrp0DZbsUwr9arH>*bWkf&Qxp9WbbDo66RcTF*8VSQr5UG0HhB-$_W(8NZ2OdXmC +znEvHG$QKrQ6RHR5vC~Tr>m|IKI%F9#eY1A+}ch4Uc%AId)vidy?%d=QO?5sgpZhk(sN!5@Y>4-9h|}&S9H712nh1u>nGY7oAo!e>B7|j + +delta 990 +zcmV<410npN4D$z&BYy+BNklcYLaa^+6kxG8Q_D$<26#a)rs3$|!)7PPjhxy{5}nwfcAcs_ak`pqR1 +z#21G7=6m0Bd(Lytc?b5eY}aj1>_vz6V0;=l0(5|1B(+A-Q-2*`Bm<^_3|NuWNw#b8 +zJ_9C!RzYqGsFcVJ??4zo63^qn^`ehG +zYc-HieCCq<{C}NoSAe;Mn7Lf8ziRuS?L%?)4ie^s>jIm$Z%A5`gzd#(dL`ID1*`#$ +za9};&*CO)Uz@j84$jku;io~pzpdnxaSg^eoiZ*O7M}9j%M^el7B_NZu9u27-PA-Ma +zKH%=8lqnKZDMWF&5so?b+rSdA2;B8IHMHJ?0~6uE27hok43CAbERb0Se$UZSiIT~H +zYckJod|#H-9I{JJ0rw@c4o)me+UVPe0@^<#&w1XuyX>$#0dob|j7nO~qaJz|B(1nT +zZ1joj{@j6nrKp6ZWnIodbJRf-dJmKY`j1}Ou1CJIlHRU>^OB^^T^b(;9_ll1I>41` +zu)G@%sDDSZs*C`@SVTXb%oGaWV|fbdJyHPB+CvIvfSJT#YP=cc-B&?n)LW13S=$S? +z$40slCGE4eTOQcHA2<;|e*?Y)u9Q_nwZ}Z4jj5Isv${(jbOZXWm@kKci?+X!^hYTI +zQSEqac5_m8W+z!2`C7mx`NV239TfkM|S{OeHyb=2i +zVA}Qzz-PdRwjYZ~>oKsNwSAAI>%b?#sTgK?S+>hKuoB*NqV!V2ycK!e0e%3!2i^>l +zZhr%h10Mj_fO~^Ouh@QH(hhLm_Eq3$r0DV;HzG+LNlTJeQ{%Q@23`s-+y>r_zM!PR +zWMSx|IFkWS0FNa4Hzl2wbRpHB4JfBW!0W)iKdpOg39LImwT$Wo}#0Xsur)U?%OwnXX7kAn*#mw4VX0uHu+HYHzlbonWTB!-q +zJ(rYQ#b~Ib9!YE`rYUmINYVXF=kk3%-{<{2@7L#fe?QOnkI%gBIfIj{K>)_u_8SKP +z^x+Fv3&_7<4gi1`mq6rhjZ35gC_0ltMa9Q47-R~H!=|8UaaZH(9Y( +zOSc#sA`@cg?76l^KC+9d$m1dQ-uAeqwBYSUf!=z*$mj{Au83aV>-Q7jySa8;R5qbr +zHCaD#SI(GXUgRcg&VWi4jSn_zF?%pGc4f~igndJI`Da;wBCf44az%IPO|PU~jicOp +z=&n2m>Z^^tC5XJ-M8_L&y2VFFZ0{#nEf=1scU)0)>_M7e${)&&dpr+7li7!Sp5<1g +zsI7UhtE4BvZJv>R5Kt^lRYCmtzjwHlT03<-iK#bk8!+cBkA#B4A3MM|^Bahm@YjU0 +z4C0;ZV~^g3skLhj3l8%sU3Icsm88_vB2BGj4zbNyJ6xu`7wwoff@nTdnH!1h&d7CdO;vva&8-$uoJNi2wZ0m-3SAqI +z%B7Z4{R0*m+l$B5TkjrQ*Ae=#88L6d8@RvC7(ap(Eg!ccYTfE>7M}_bR;i$8OS;s{ +zR?A%#riuz^zb+{7@~Alp3cfn4rd|Gg3tene?kkpW>Lles!=tpAqA${_4wF9oce4zF +zU=vS&umFU<2v3;|OFd{k8qz4Du?`e@cnZ?1`(tgysDnz?7WU9~KLlwu`BciDI=;4N +zC7*BC!3h6uJ@FztKCmaEW@gQaDMk6%=WPY)@cH38xU-^kX{X1Li_$}hJznXnXoijF +zC_&|?58ij)@mJS7fsWN~Vdk#zy +zjAA3IfGmsbhP}-RjuWB`{`b=el>z*0pp0*Pd{m8f%2T``*npFLZnBJ4WqU)oUur|M +z2vm}8(WZ3l)fg$Xp}8oRj|%K*g#^hegUu!xp#!I3^Gi*eZN&&Ku4$avqY+{uv-m}$T0;Z~gX +z9gtYwO@6rm_G5-tk!#+`kpMzbQ9btk*w@+EN +zmz*C#nUKGn2;n6#(gfB11w +zeH7iIE%Oq*(6m+a=T_K7pkwnWQ6M25mgsl%dEa*v3z!Wb&3us-UM;pZ>yZ0aMv{(E +zFr(`#LQvv*m{nbi;={LmZr{#X*~N3fdD`N@a?9d-7QByTU$zWo;l4)1%k4ucKGr=t +tMFGWQr-ooyBXqTIYCy(aLeJjOsFF%|BU3VDTC?N;KZ3tcnKvX_^f&&1yA%Kb + +delta 995 +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 +Eg6_DwWB>pF + +delta 998 +zcmVmu)kV|)8^ +z@IupYgN)X-kkNf;k2}81`rV$uw^d^TzQ-)gd-uYXBW8CXq-nakz+E0UHaJ>+lyL&BVJ8PJtM}KVigmsl1nH}Ix9-SyqQg^uO +zd4B!>dqnI{SS1&Mi;1kviAF?pMiwH6_Alo-&s#QSg*|eZ%RtvBX)pJBs$L*z0noIy +zUef6tz^J1b{`f86`5~abiimHH(Xi%+INFSeR!Djc_!Kx*5bBDh39b^V*O` +z;8lBm=-(0WHSlpn{3_{9;C*0Q(uWc8r%UdMh`4X#YnE$7#BE8tuBQ2XSa!eZ7Ink< +zq+?wJJ^_A+h@PbLz&j4@X`m|UDc}mwlJuonJ?|-KMbb`0bR}&Xz&Y47{os+cb`rnk)c53_S@v9_FXy3UW%*@G5Gk^md&tHJ=BVuFhUGG6E@8#3exO>64o6%3eM`rfV +z1-&Bd#9*_z=>~V0PR3IMh=>E=+acS(0Z;h7F(7wjKKy^TW0Ulv+x7am3&^nNA1wRc +UOtl}>1poj507*qoM6N<$f^@R!ssI20 + +diff --git a/themes/spinner/throbber-0005.png b/themes/spinner/throbber-0005.png +index b78133eadac9b3caa4e6d809194253b0fff35f47..3a56beb7482ff40b652972de1a4b8abf25a3cf2f 100644 +GIT binary patch +delta 1569 +zcmX|>c~FvT6vjVI7D01OEio-kyh$u>k+fK8%B{52O0sgH?-dlb6Fe?$oo%;v56pOe{A+MBYl+JT$F!|00cb96e@{AA$fQ@Q7FFN-o9R|x*)`M +zqJGGHZYZ3^1_3hJ_uuC|ELHXB8T#ifyqG!Y9fCHk(R&ti-bTH}ivj)-BAM(_@D|;! +zht_j2j0ti;KoHMMij4(%PM+l7xO`z~N3)(=&GAtEg&;2+`hO>p>_ZQq7U;R<&+s&6 +zBFJ|Ni(zy13Q#<#ndj}?0l-K>_g^0#VJtrX?7&{o`smq>ZVl(1eh+f1MxJ&%jF3>J +zi+s&L=cK3Gt1j^r9M~_@l-Pn-Z^e{9e9V#bH_c4xW +zZ~TGn|8wF>(u}%M`$VU&-sjJsi>h$>#E*(P@nLp?NV)U&0jrExEL*ZI*UOS}Lt&Enu+VJ3O4I`y~sOV#D8>3BAWe8$cMH@0;Pv!AZ2EAEr?-dfqpLVvR +zS-q|rhSQ=|IdT==fdHvol}4A_j=|P+LgLGFAB)qF7e24W*JpCliMmUhELEbWv=KR``1X5ihY +zwb*e@JraSanoU!{-dp%=?7k*-n5oifBo@XRWWajIFm +zSdQjSo}3_vUu4dI=ktB+ZpyPt?BMvtmsd*<(^4!e +zatd7nWeKsPv1Jdw2Q|XhVNqCG)Eo2hiSG^&HP5qrKxFi3x5VWOp`D}k(v?-c;Yf1S +z_+M?G?s_WC^VLQ>i(doGX4j(C9W_J8*Q7>`c6S~t>kYitw?NslS)(XPfFE}rkxn+_ +zCo6$RqhBsavk9<=l_n#}_Imbv=|TbYy4~jq^TItZwi^665EAEFsd#p1Q38j5XdL2+ +zD*N#NR1H-X7ALAWvnZpGeS&75 +zhhy4mtfv+!^Y#PSpg`>s8X~anuFkwTcEIJU|SgcurSHMp|Y}a +z#ZsYZw3Tbhazz_*+=c>4yKX7GGduQ~a)+?nyX>fn9b7wt!R?#3eGMFQ0;tQdy)K+q +zE4M8);B4LcUuGBTbcV1l*^3JRhirDzp# +zAu8fRLF&eZ8+YBhbmPC^qTou`QV=&51))g6A`}WmlV;Oqk|von(}^Z|=W)?9aQkMy +zG6TLa%*%W4x##OS&p8(ccx+GE9v|ck4WN7mSOPNOmZaT&&VL!|qND)K00m%MQkE>2 +z;(Gy@1a@T<->i@}+nm0dD7QY$NwLa59W*09)-86uKDD2qgyQZI^mTO$nF{ +znMS0Dehs(>)RSnHZFj@X$=It%ORaAMBsG9acwt~Fa@z@*Q%Te|I_3W%18k4m{>1is +zwkMK3)rf@RSAPzWk$ki5B2Z3%*_3OZKV*B>_9L5?RDR|4t9 +zK>swb1I&d1wfJ5N&-a0KNlqeD1}5^rOj9tPAp0fYqV0>eUzD^5Y{Ys7WKs8j0e{E) +z0dN?5HYL?}r8@9fl<{yl +zRfx!J0e70wQHw*)0bc-b0;8dH82C`qk3F*FH1Jd?R{U2ZE%lC7An6z2Q{Z#p_rS^h +zB)q*m2N6L5d%!BNnpfV7Clj_mw*6Kgy<*IEDMftSW@P&v;N@IO6yd)t>9+wI)EDjxyQMML^h +z(yd-cwU{HCq_iHOYjhn*Y`*}!A1NsYK8Azmdw+czA={+*MWAZC610BQ0NbO$XTZ5o +z_HU3$1^5}bVfz_iSJIsho@XIj0p=4Ov%sY7EnuzLrqc+V0p1P1{wEH(0$h@`V*3p6 +zHn3^?dr5a~pNQVD7kywUDra5NZQI+?1)K9>5qLD%aVu}YXdpiWt^q#**Cb`O%fM?v +zv3~_%#P&ictlM5r8jgTD+goASY8bE(<=m{UBN+HKJg))QbG-cqFcxbS;4W|~y5)Y9 +z+FHnu1!fj(uSVC~v0aPqn5E@6lr*9Hz~vTseLfhinU<@P_H8>MElINNHQ>pJ#7uO+ +zYHY}W&121kF`AuCQgahnNr);>v8~3p;%*>Q@oC_R$bA*~BdO&h21p`m{xH@`orc(6 +z3^+)7`*lg{UGI7iu(KU!KLogbZbmnOAEIoQ+uVv;vFTdKWZn3Fkjv>j@N|TGSyJ_X +jy&WgBpMvMz&l&##tH0D%gAyxB00000NkvXXu0mjfCVbv9 + +diff --git a/themes/spinner/throbber-0006.png b/themes/spinner/throbber-0006.png +index 1a12e8e8c44e790bc9cc6561bad7c3a6cbd12275..949cb23012469efb42c33953b5c79d5352ff77fc 100644 +GIT binary patch +delta 1581 +zcmX|>doK(35{_>VK68sXDbZG!^Op8hr5EO8|0`R +zTD3G3N@IWk8tw6Kxw3`zBrVhbc?+Ag1YH$6Q3$QKddb_Xwb&%!A8|yZodmD+A8MiL +z5)7e$Oc3D4vlGc=kZt9Rrm{Hv;3xOA9KOVZwHJcyP~QJL9nr4-q4QiVH~AT!Mxlco +zs}K@{rBwjqa5j75=`vL&FU&6dz28{?+t&=>h$l?dvP@tc*^|gAq8^CL5gH +z?`}zNeR+J_Ek<8<;`B~m*|OY&_15QlAT&Q1+8W`PpqqcY5+f$we4Q@l&B#ZT?o*$d +z95ACfcM_%=UUl4mMNr?qT2fNtE|E$zeUdCrAm?w1%9Aq_%I1!=jKPo9e?sJrkBt&K +z)4V8NZQh+FSw)?(c>z&j{{4i;B48b*((b3m49zrlG+nXUxpYK5tpnHSH$ +zS>30wzF~xu=$Gl0^SAMa4^5}&y_h8q8&7+s8e<`5T~(W&9aa}Gp1U_Gf~-5YrE2{+(_la+>%d3_)C0(7M?rxFeHzyC#VM +z)ba(xal@*E_RRx})=7}XkeI=?y%Xg8cZk?B$RYl?tg1WKk{2t!+oGE_^~LP_(EC+- +z4y^*i8N@f?LdHAlW=5L%gI*u@In2F2=#S;h9OG7Zmcb~;6bsv^ru5pl=$dKRbjhp>*Q +zO*XsLJKLO>t8T^5{m7e)6K15!Z_lkb-CQ-0uCtxL)r@G<;o%!;)IwE_@1MpNIQYC~ +ziWt(J8uMm?z(Hr$e$p=YnTw%NcHe3(&3oZ5==oVET4pw +zXV(`dMEeI^&9-&xV=A9S?(d8Oc82W8-Xd3qhLMGZb>mo-XME!gB&En9OXYl`cY9#B +z4CRp`0UuL~tGgbbri~-MwN +zJW8z}MNs?DhL$;N7G~D$ch2`1I-n96>>pZ+adEWh8NtWAan^M6D=w;hR<Xy{2T3Zg=x=FsQ^pbK-HL@psLEg +zayR%>uM7F*RJ|aZUCTTvI&cq3*0l_K^_HO3WNc&wc`}9mWxO-if~|y4Adj^))uw$3x`iAkOx^8g9vHBX6JM+&$6UDXH9sa| +dm=_}!fn5>3ns=i8I@(VN`1=L=*6fMN`5T{`)Ykw2 + +delta 1007 +zcmVFT4=)-uIm6Js;0`F6`lvv>>Uz7aOq$=Ldlkz!3N&B7Zi^*r`r%QUhKG=76sw +zVk5IX4^+Gk0GpX}6<`rafQ^V4mI46034G!AP68k1F&3PA2v{<>5zs7hP?-Rr18f03 +z;2lXX?jkkwz#)ShIYpEOa2dGjS~&u|FKK4NnI%UooR&^$01?pvE&^?!51a>Holuwy +zzP*6k_sjnd0DqEdlHQPXKG#~`0N?uEeU8F{!y8_blmN?_!fXL|GWM&I4oN!VckhY7 +z%fKhVXTT*%7aRqEPk~iO;W^+nI~X{}9e2gNZS{e*h)^ankGgG-yF=~)FqA0QFd4F$5VMZ>0@459Ja1LjH4d5%_ +zbKhbnBEBoAfx3IY3mgLuI&Jc0`)WU4NvZyAlyU?qOif6%4(0L~MqnGr&jAvvMF37vTpHabrs7`+>(ZMVP<%0JvGr +z5JpNa#;D?B~?V)l4XiK^t5j}%W{JZY`iYfOmNgE!~sXk1A2hEPnJb-;h*avO^KU?jN +zEPt~eu{;YPG0Cj><~K6~CxF9}ng({u0FIiJlxg=J0DiIa9`I*G^lcmq(v;(SUdId? +zw_3vhYySVJq+90ywxo`y<1pKP)yxpua<22wvJY+8%BrbUTb?wGCaL1X&S=|qUS<`DSlsgiM`u1Ozsdkei*f`s^J1a^ +zMArkXk}tS2Uq(&qzU{2S-3602T&TlId|#b#n-TC&!S)@eD5cx%xxu)C`(M9~Gt(|H +d&#R1$e*tr8%P;zNj8^~v002ovPDHLkV1mCq+dTjP + +diff --git a/themes/spinner/throbber-0007.png b/themes/spinner/throbber-0007.png +index 315077101e10db2593fad056ed17680dcee09e2e..14d8b45c0084ce927e17130790c7328e8018b91b 100644 +GIT binary patch +delta 1613 +zcmV-T2D16?2i**iBYyx1a7bBm000XU000XU0RWnu7ytkOKXgS{bVg}xWdJW|Z*65S +zYH4k4VPh|Ia$_%NX>>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdH99mo)_(<2E&u=k5OhUYbW~|= +zWdJZRIxsLgFfckWHwB=B_W%F@2y{hQbVhPvZDjy3H=zb>iU0rr5p+dZbVFfnWpZHv +zLt$-Ya$znoFfxnR2*m&Z02FjZSaefkWo~5vbZByKVq#@-ATuy#aC3lC%eepm026dY +zSaeclZe(S0RDWr0WdJZRIxsLUFg8h4`*Z*R01|XXSad^qV{Bz}AX8y&aBO9B05LK+ +zewG+3000E`Nkl13M6o!*alv1>m5~5^KqDT>OR5}vvplAmU#EFXJABckJ +z(2)aiAUJR$4jgEqpua%y14MC9P(h?f4Ol{3YubvHwtvJ>Z+xD0&wK7ZH)&k(-o5tP +z>*L*P@3WKn`T6;|?d|P3MLiN*=Iz+}Y1g;S6W`Xa^@+W&p&>9h4sD{?G7>y;-7&GP +z9$Wm|`M_q97}O)Oo3)R}<9)0j29JUx;6AVgu7Nf1Ggu#uMw@N?|L8l9pba459EFz{ +z9s{f3D1TT4cXzN8V{jW>1!uq~;43z;!MI~1+7#;y7PI4wI4pqU;1u`+Tmx6YP4Exc +zP5#B`+Lz!-u#kL?v$!Jx0{4TL!1v&H@GH0oByb&ANbDsNehnM|b!S3g(t~Qi@Cb0U +zH3xBc6}$j!we7tJECA13+o5jGu&3N&^*!*WcYkBna|bJmoBUbu1n^At@$yN+vsOO< +zOm?FiUAvR)XTi<9%w6(G2Y&sBpL4?L1Rk#di!1{PS;*qiy=Xsz^FaGy@Dw-+ys*2; +zpBPuE^O=j*lMLhZ2ryXmZQy5St7R|Jb_;(1&T1oeOiXo=x#S)OuY>2iIm1A{W%e9# +zmw&CRj5-$epfGL>eNIcvArX8wFuVm$gW0=bja81>3tc4AKIe +zvX#P5KDAsN$6_u)#0yrw5>d~naW|cqE$nB(FSxkL`eIt&_7Ymq^GT~b0z0v2af6gL +zI3%)G4&9Ho_!!M>_Cb!FKG+7)~>578EY~#PfR^T +z-5t1q&t1T8)ZN<=kL4k-1oo74p?@XT+6>NGo2Yiyb-<#(fh)k>+a2MhJO;_Su-R#L +zkRq99jNLIYqHDLX^33Fa2|LWP3X($E9p^O0?QrTtuLF$l{@1X +zRJ&(1)=TdDp-(S4E^C6}gQ8d0$`h#f19xWv2}szYc1B5J*Cf0KsxV`SxK{4~W8Z;v +z!sI1k<;YiI;_tvZP&b)RwSUR{DvYzBHg#d)gTQX3vtGt6A0ccdZdhr?;q&TZL&gHj +zU*Uv7)msMwdv@wNgGE$#CK-2U7pk?4l2IHz +z9!XgI7J0pdsMAfUYYQ3l=_HP`Hth;`!!D$_q$FbpgheH>j|ADUEchNtpFZRgJ8=DF~Cd*>tL +z!WRZE^WJmbbDr~@=e!sG!;pjseg?*WKPnXlHQZlENyQB +zv%os=LdmWsX+_dKlCn`})W-z)3UC3K0UiR*mtzD5K$QN!4`?~T0nnKW0pKs-7SIFU +zk+fOyPL#4=1XhyZ@~KMzTn2ve^9t~Rq?r-|<<&B>0UQ8_QwIrw6y^+V=3lYa?6U^!0o}xZy^5GA37-W% +za^1EheI5~)BLYdEdA|ib1H1}+1)KvGf$t=p^s|85z)nOcL1qm&Ste#0zzlH5n~wk= +zN_q~s7!g+_eF?npa_mOLHWX9S7bd@M5?41cp5m2h#!wRE9Q#; +zMzvxjuzx?C1QZE$S0du-lmlzo%&$sxKOzo7(qq8830cx0GL!Jrh-e@4@EPFo#BVwA +zKCo4{-X8$-iGq;?b8CX3RkgBGGFAIoQG(OJ{UwbrhRL;v_-)D(ECEYHwvSBikq+vT +z)+9BiIDA1;Q_|>pGs3|-aN6?P1%58~@Ce(6ZGQ_<+A-+{V=p9FG(= +zAbEem9kwUwdPMXp5%7e1)B~p=UvBxl3AA0${xBq*d12E6PB}>>%n;xbX^3**pd_Cg78D$P&(p5>Z^W*pRes +z{oj{#=;@fJ?N?8RQ0`h+$!RkYsCGo;lF~b27^${LcFl+F`8U-6xbK2`#Wib`cof&L +zVwS9p`z{!FD{fc^C||RNTw-z0_l?e?(Ndc_fK)g-lL(RD*|l$#d>s4Bs0(bDi8Fzc +zwoTN0oZi>RWHYEDP7>T|BDbkse}vuSH=+rrU1puvG(P?T3%S<^p?bgx00000NkvXX +Hu0mjfPRP^o + +diff --git a/themes/spinner/throbber-0008.png b/themes/spinner/throbber-0008.png +index 4772a97a9b43fafeab835f36a369012f6b7d3365..beef391370a4183ec221e131e4d06e60e1792919 100644 +GIT binary patch +delta 1588 +zcmX|>dpOg39LIl{&9rm0O(-g{5^6V$G%A;D>EfD|+lGmN&aPVC6Zb<;W1ClQW&m=lOn~_w&48pXdGg{Pis`=tP{h1_3ySa)1W_ +z%g{@$16-&y0{~zf-@wm~rL-BkZCn1%Uc$6Q9s +zOdgKMiD$E!-2W6CmB3`jLg%8nZfs4xQr#}LTF1e*Luh$&r@r08Nfe+#p8)5dkr3I +zq45$7jApW#06&hK7!}3jS~}okIlQcZr)^q}Ug81T3z^&?@c*4yJc$~#z}Irr_wdx{ +z1SZcikip_;6(A5@j-55L2LQ+*)oVu(4W4;+M_iTn^5cuS8|_*s8=cNfSYI_pB5lQ` +zqkHZeM0iPrvqDS3a*=o1#M_4zs^DqN6|09QtBjjrNH~&fcNJnA;EPz73vP4oiXCn$ +z#eu5@GMU32hfmMOTR{_TZOG5hM|-=WLf;*&|JZz|MXr2(yRotGUVoTHPFnbASRq(t +zG+;&K4JMGx`R_}{p8if~+0R8i3-x1R1O;EVaFCU-Ll5;-krMr5uvU7KGrZhLIbL&# +zEWF*n2Sa+vQ?1~@>p`JUdk!5wmXevTah*eC>|+d^@`QEQO_LRHOq(@+Zq?5Sj3u(P +zVcLJOhAz!vyiKymifqrPUo5u3V5g#Wm0uv&UmFfXnsRK~*Wkabtft-bLFvAhb737Y +zRiMPP@%$HKxGfK^A{TuMpCID18_G`K?p`llElJCqEe!`P*5=glA6XR_Rt&6M5es$D +z$l48evpwwhi>FERk?oM=pEBX6q6tG=RVN~;c3oHAbQtNF+{>C`(H{j{W@E}EtLNZf +z4Ka*KTLF?1mRUua**sbQ(J}IY>FhWF#q|eE5M*fSfddB@Ve{|l=rL4`yy~(0t~slT +z(IMcu0-Ury-b({Rb$1;pMC%c{Y+8iuqfqHzCoc6k^+dq7R$lAeP&|I98Evj|n?SlG +z4fXZ3`?{^QTX@fgA!q-?@D_tBF?E)Y27?9_Uy0sgJ09>9D%;5$@un*T`ny +zzL35dMK-lHd&Qu>bGs=dWUaU^#5Rx8nLc6;(krEcwrh>1MOlX2AIrlkg3~n?AT*_3 +z(sU%6pV1&zhxm{lw%S>5>G=8~1Nm7dKqw3)Ty&_kCUGGGwd$^oOG)`HJ?f0vdl=pw +zx-8vr@#SiwBmtk+Pu^CVwx2zXjXNUl+$&ErP}|R&{Fa>9oI=pByHfd(K?d>S25?4) +zi#?ySiNq21`e*Jg$UFh*$tGA=Y#hF-*V0jatn22t`YK(NG;jV~c>T7*!;=@vZ{f}6cV +zSVp3BENlWVVXBJ*Ijg=l)mkZ*gEvUxw33032lQ^`Uw4?i>m~!U3iICP-K~!L#q@ctv_G;3O{8UFc5a5 +zmX`8LM`5tQT39797dw{toh!KgDVLh3oTh#Q94juGg;b{QL_5Ll6+@4PISKsM9SwYQ +z!KUQcHj!GKR1~>82DBwab9P^5l2b|jPvW+t_Y9tLX?5)i_i)aJj8Vo={s(O+&6i^2 +z!TT~kpS_3W9D1k5j(d@3WtKhx%F(Gt0VKKGN70CoiXBPsi?TrC%av|5Ee0vpfA-d5 +zS3Zu3Iyd4AJ5Iy;9ey^daP>27+fH>>XVi;MQYua8#@3q6(BbMcvX`U?T4}6kq_3*& +ge&-95@bt1pKqh}8R@>M=*M5iq)qAg3qX%91H~0#}KL7v# + +delta 1011 +zcmV9Ub9sxpw0udxZNDzWV +zMMMEY7RnC@5(NcCegVILl8yqUhlYX*1wsKRLVzMf5fm(>WNZ|B#zSn!o|#3nE;_oN +z$MvM(N=I|&-gEYI?X~xX2e>4?Ch0l;k4w@8NjD^2mvnwoIe(=wN~R^fF6m84Gr8Ai +zfhk}ScqMnPCh4N2_ax1Y(oq>>;LE^e;1KXA@M-RS-z##@KLS1gYQQdVWugcG+rWMQ +zz9H#!fz-STT(n_(Kzrg80KWo%SlBGEEUB8?llT68r=<#f4P2erfQZ-uJ_kCE#EZbW +z%vrDhjF9veaDO35%_kADS;zoMRY@;MIw@%?+4G}Umg{#VP5Xb@t8cJ<2s{K#1784N +zCGsnh79<^&R2~GvXMlHnzb5IMi1;lckn|<+Ja80v7B~-F1D1g~;Cn~roTG9F_&6f= +zth^31Y+T94ujdV@ILvtSvZPbMcMb#zO}IFh`2GN0#4h2YgYQO!6+NBYa{POga#oP +zNymXRzzNrX)rMS&h~Epcwi%-ocE;aNZgNzl>_#Q!%OWa?Y7S@5@;V=75yI5sJozk|<4eXurNHo#A5^l2Qv;p^T9Q`tPNY;^^3=0nWhs5$1)9$1&~(`I +zp3f|riYp1AyQbo1#to@gbstJgW<8@%NsGW^Ku^-mh}d?im3?1x*h@ZhThfNpIG?oc +zV}EAHeciB>w8{?fH?SEIa-%wCFDgLU7&&gwZzT~6;E1Gk8@6HtmJDcF$36^f_+`(? +zP3d#Vh|cE3ZQzmQ*{oBvnVx@oSQ)IAzFPgG(cZSX}d6M`y;- +zo7jMqIM$1>q4#Vg9MXS~FQZLhB@dheOxiS1d*eP#Dr3Cq4+2hN+>wNC({tSs=Za56 +h1-o6@Jg-S){0nJ;#4_dt*)jkC002ovPDHLkV1g}P*?Ry0 + +diff --git a/themes/spinner/throbber-0009.png b/themes/spinner/throbber-0009.png +index 35bc4817c7b488dd8908b59f66c9f0d9241f4e69..b366daa8f009ccc64fa2356234e45d09e544486f 100644 +GIT binary patch +delta 1589 +zcmX|>eKga19LIlbwst)>DMA+O;BvNkETf2tMXfwVMr^H&joocgvi(?Hh4QcpMW}8` +zIUXXCJEjNcN|Ce~m6k*#OUf$4o$kZud_U)X&inN_@6YG2uM+-HC*KML5G?-)4ghEy +zF1H47q0|@v08g%OICmSJK?AUHNlY3xp3Y>(Qn4I16?>4*#j+Sjm`R7Yaae8~jY;ER +zIV^f&B8~l@Vkit+;(m(Y2~-_ryc|V{<ZjU591zY~LVC5Fs%)g1XV{0Nmn +z0|7sdCm7HPRXtjPCWv?&L{bX~e`3?R9Mwa;igHE*H{^`qBBEGD{p89o>frNPWYLE|Ac!`E8Qy*4 +zIcuE9)pm*9ty*2h+oJ(u*OKR>Ce^il?c(N4n-sDY;^dAIMS5>~)YQX+yezWBTv2Re +znQ#`^`G@cNHSrYcBa4XD>{ +zxhbB9yqnF{T8eIdM2B-{?Cd5Gao->>A!ga+=-U_2tdD0}dreYcbXRI1=lyKb^z+z+ +zfm$;ehN#j?^NDOf0AC$S&*xTn>TjLKd+yn5Rw#^GjD9Ryd#|&Tw9Pw~!S?j4lq!_D +z!fdiTrRVugIj0WNrm=_y;oCu!(rr-(KEbK +z{_EGrC%uD`$5y)gir+*J3mblamA@-3Rq(@3)>%!g%U!UqV|%XI1Db+?@q4NXmwQee +zz0|w=W^%~8MyvJ5!LIAVu_-xO3s%!qH108z^uBG}R$lTW#CnJ?nXV`@w(FvH50&eh +z*BKV9j>}nCTc^Dx%gC>Yyrus}nP|WMwJ2PKh5LN9RVUOKhLmJ9QVx362fa|pw~Jd? +zp=heTbqg%=3h^4!F#_x!+);X^VfewEwnnweIsc@29pz1wVe4Fz)wEHp%yY-pdt8sgwC-eA}FbnO{=vhzIHc^d9l;~@&Slh+{yW1DVUttV(LfPkM{?ra$vz=r=zgVrztL4vhU6iGkWAL+i!W-kQky#BSF+II% +h^ZWy@#8p&uX9<$P>1ebLmM(w60MU0Rp~gE#@Hb`h-Ae!f + +delta 994 +zcmV<810DRu4EG0+BYy+FNklCRx^XAsLaG)wrBc&HJ8f*f#(bFEna73Cz}xBE +z`O3l5`k2v?S?0Nz?soWCH*`54;6T0!M)Fx-oi3*ZIf52f!4t4}3Ki1HeDtyTB<) +zi$l2PG_Yh~EucBJ3xH+d4v+(ffY&8uJ#L>e@V?oq06zdfjtw9p_JN;(Ei-W(c(Kpz +z&jN2IN0%dFIDZBtl_VXNRF_mvK>Pt*HwyyZkW>NMzIpjSaaDm2fy2NA@GbCtqW_4b +zcO`u!X{J{YJ_;=QY**4Ua4#YNt^&{4*fHP)@C$I(m-rPp1)TObE5K(Fk=ytZa1Jyj=2)qjZiP0|U!I|^L!*>k{o;B7O5 +zvtlDP+My`3@SFoEGui;|0)LvNN<`c$h=G?Ze+~Eqcn5gO?wSB@1DAn|5wS;){KbW1 +z9+)$YIl#k5FOnnC80K_!Ris +zS@od30e?3s0W~0xh|N(O74R5vH6s2hOm%-;1FF6B0GoqyxetgLyRz3sHzJ}L{%FzZ +zq#gkGfg2IAGotZMCRGab=D^L&4{Za8f?`!3gMf0PFACn5BcZBVps0BO7fjm)z1B9c +zF(?Sj&VoE5wnsERW%`>D(e4|B1qy0T!|JGUV1GuRHO$9(gf31b1wNm@0qWdm4nK+85Bih;Fsj_Xk5wcv=x=y!m}le1~NXx9U5 +z1z3=@91#LGB>iocTWLGak|xx$uX|;~Y~q?mM6@K4oQ0Wc08g8V8nEtNsDIFZL1rIz +z+_Rpd@3GcBlynBw`E>1eYOb#!PibZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_ +zVuH;C0000ObVXQnL}7Gg05UK!I4?0VFETSAF)=zdH99mo)_(<2E&u=k5OhUYbW~|= +zWdJZRIxsLgFfckXFoNGF6#xJL2y{hQbVhPvZDjy4FeZ7(XaE2J5p+dZbVFfnWpZHv +zLt$-Ya$znoFfxnR2*m&Z02FjZSaefkWo~5vbZByKVq#@-ATuy#aC3lC%eepm026dY +zSaeclZe(S0RDWr0WdJZRIxsLUFg8h4`*Z*R01|XXSad^qV{Bz}AX8y&aBO9B05LK+ +zewG+3000EqNklYSZNFkH;0 +zudwzgIDZb_1-rolNCLKE1FV3b!DUGPr0pf;I5t&4$Zdg}9s?&ph|TyVV5wgKFVEy+nB`OCn~{{~CIlJ5tKk<7TJAfa&a6nqQ50BdlK<<%}9-Zn_L!2m64f +zd;r|Ya!Vv66;?${JXM)^Ct^NgaF(jhC-VfmhaUk<^2|>IH#!6?w?ZUPoP@uD-+?hp +z?Qt9d%is;5Z)nc_5T1($E6zd);K%1*7@>EoR5J>(Q#JmF+z;`TM1?&0X*j8-N-eJyX;A^nsyz%*x +z-j`fnZ7zd)>)*on5AbXiVXIvQzewyLYiwiL5T9bd1V4ds;k=3qgXLfJ-q6m>yFfMcg@gtItMHh~cd>v`T#FvUNHj(#0;V@p!#O`HXxrB9NpPNt<18Pds>TZ^sg+QKV~O{IMbO;=36g1uGj3Yf +zUk5o#x6p0^lPyBa9dMI+)9>KV#Zips=a$%|v=M}b)@L;;d2W~KH=h&8*OMS#Tis{r@(-MLP3^Yzei9i +zlC}6cLG8ZwGsk{mZzp7-t>$E4rnwiAOKeqQYr~6}z;JK<5m5xR1A`I{efqWf9WZmr +zb1@BVvZnjV)}dvu$*4c>#j27W=i|b}vPl(}voCIaTIOb4oQ;1trz*^EC#fnn+$6F8 +j^JiYjYJCW!ble)h$4a;7cK;KBif>MA(?iXN!poY>?A#IPUM+)k~eAM1EFo+ +zKKD8I+;h)!UzlM@x+ZCBmKZU^;m-l@IL1yy>`fD=Fy@egq<^O+ZAqHTJiY)FffZmo +zvu{DtbxAiRE$5w48UwHjTm_bZWnecw$Dd*AJ>Zu2^nq`tVgNV;dcZ%xrli`qQc8LO +zxbE)+bfzu=aO?m*2fQSykYOM)TDl3W1M|R7{!9lTBF=z2z$4(HOY%$tAe;TGz$*!; +z&m-c&L;x(fnt!B9k|jV3XuFm@;If~er7z +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 +TB1x*~00000NkvXXu0mjfApYv= + +diff --git a/themes/spinner/throbber-0012.png b/themes/spinner/throbber-0012.png +index 91fef168da709dee773b833e889c6d2e19d27de0..ca4f0172ae9d1cd41986c14896e8e7717b3e7d0d 100644 +GIT binary patch +delta 1586 +zcmX|>dpOg39LIlSh*55pE^4t{!fs46qSy>cDY-|?FO$vIHkS!Mrcy^Kq_Zx}>2j2W +z3JtmKoZ`@lj#Fe=grk_{l8Tfw^_=s0zMtp)Jnz@%d4E2CedQVw?Q^COpvm?K;sOA| +zV5woir7K1N0J!idfjsvZ1_)s2EGCFK9K&Qr&@fyM4HF&1!>}2ACM%vt$MEPN6XasJ +z?3lPXkn^9SBN<>^RHWcfxH8IUDT*Ay0|7i1N5tT87`!bKha(XPBm%YulJs^chjf>Q +z{9>3OfW?x2JRF|!%-uoBmVLj46QP7Sd|TozveMIA^4ydbCj$5(Xe<_=-LveG5*jYS +zeKar*1bB1~D>4$~AZ@XS*xdBJ9kohsu*CN&F9bP$(EmHp*sad{I^HO`{`YV`jRA6z +z`y!ZZr7AZQ(=HfU0RUX;N#5ZXsCoQCXZD5thON;jc38U&Q^--m_;1--W&<&WB|NO^r! +zF_-$Zp|db3R9U@JX~?-@w_Gs1=Wt1=bgg;K^YT8jENU$k8Lrd6^I3rLg8p<2uWwgL +z_h$N*aLcrrs5>KTQSLKWJlHA?M4hLCfQ%2?jEtiLn<#Ss#h)j$&K8q&yPoFUFUvp- +z7+1nkBb{IB%79=wp5hOxx$}oU{5%?F++c2cCuXg0w(0|6WRvNaUP9u(xIdwL?&Efr-go%>z2CP|?MSgZu%LU_$eqQ(5sU>BT +z^NU)H(!BhzS+OB{yo+^rbZAXT`cOheZbkSt*~`#Ilx(AoCh}}^pqb8^ZfdEoBP4iw +z*`mKb`Qk$j$A;!r#8YEiTtY%W-I~&TPDkBdXEpPe1BoAyO?o5FYpym++-O{Lzv`#r +zfA+BC)TvuutVT^6*Ly(g=m^7eXxRCbjoHb@)o)X$cPGk#e$-G+mPfr4*?*+XrY&S1 +zUe%csFCmVvF(G+-7D+0J8Zy;tPpD?1`ys}(I_qYDoF8&*b*tc2mcLVXU(5)hT~=VS +zaJoX!J$8tm`Sn+PHuE{*1a$4(wmqQ(Q8 +zz`U;JUZYm3X})&^9`%Q9#Wum)9~l_BHw$XQdDSxXgvktlD?c%;SVZfMZC^_jS2J32cF*kh3eN}2ln9fypfp!_!k5 +z(uFG(*REU%?$p0P#ErUe<-(miU5KE9V7qeR%8%j)YDx`iscD;LGHIe|CdbXWa2@9> +zGw2I1b9wK)&*yp0^IRBV*{<6@Hi`_5pnL{61+;))BsGVTQ-ABDqyo$U72t-XR_XO* +z&MUwa&}_Rm9r+t=_Xam0%1`C_2ynUG#xD03fO%jHxCs2wO+lrP0S8fH;JEF{0a7yw +z+#cDr$Y59lwt$^dwB~L1!_6FUTOzgv+!)#bNe2mED^aK?x4nQ_2dXjRvZVci46t3X +zJ!^Y9AS%{oJbzL4eCd60X4}=|y$X!S^Q$HKW44!UKWO`CClD5ZI{C7Yl(aPaG}2BhNsLA@{CJ(0ZsF6qyn%_v~$#Bv6JR~#3@g@Cy5*<}I1Wq{ +zDX4cz0YGzv6s!QJ+oD@Ex1WG7`U$8GJN4LJw*6SYyXw2g^4bILh~X>1GVq!0cYh@P*f9dB`GpJ<1r=8!>^g8I?6@y! +zr;F#0hi)$c&jHUwUg7yV@DcEKfvd6sv%tv`N}X0*G^07-t{{3<(yr|zKsC>&fltye +z-jwu;?fYZM*^ts+==mi{AGQx9l~O4-kQ9B2W!!v{HJl(z{a$Wx?}511ADfGOTU`=YR*oE$;)*7r=|bXXD&C +zNw)@`|1-rrls%L4yKS#zFXZfL+gEKjY+tkeR6qHZKFVwHvPjQnCZTTY1K{IKMPtAV +zwx>s#ipvbS7eKnl5DV}Ya4q!y2=K%x22hmefQ@eD*Ji|*zf0?fuC +znDo^QoekjA|LWtko+-KtT#~f;zkVH;=Eo|~=!K15>u-W=z3o(9@SFeu002ovPDHLk +FV1i^N;yVBU + +diff --git a/themes/spinner/throbber-0013.png b/themes/spinner/throbber-0013.png +new file mode 100644 +index 0000000000000000000000000000000000000000..ace8764887795c1dacd9060bbe7d0e1ea932abc5 +GIT binary patch +literal 1612 +zcmV-S2DABzP)>1eYOb#!Pi +zbZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_VuH;C0000ObVXQnL}7Gg05UK!I4?0V +zFETSAF)=zdH99pgw!+xU0000GbVXQnRB3Hx05C8*FfckWFgh_a8`gHO00008bVXQn +zMsi_oWdJcVzi^q-0000HbVXQnLt$-Ya$x{NVQpn{VJR6m&&cbW>wx +zZe;*;XmW32Vr6n5GcaawbAVFIxc~qF6LdvbbW&w*WMy(xX>DZyFfckWFfK4RK2yu$ +z0000IbVXQnLwRFtWpf}?VQp}1Wpe;AGB|#g7%Kn(1m#IYK~z`?g_c2UomCKqlS>Gp +zgiF;Jq=a%&5G|r0-MFdRg$wCMP;eo*5s>zdxsFN8-!6)oq-9W7~5Q +z+s3sq@pm#^qc0_hV|8zQCVt)l32FJh{?161? +z9sCA1N2AfS&3}M>?-jHO95_c|3qA#ogXh39Sg1f1B2%>Z0elTE)4&b%J&ov7YMnlT +z6pyC3ot^|wfK~7xI0`)63G7zw-WE6noXSt&9Qclj?BzVxJ%QwG0(IOLez|5?><{oX +zxCM@YKfzq0;yn=rHB^S}-t0)GP!&Y_Ol7-3Pnl!R-E8|PHi +z`m|4jGc>lC&RG{(h$95>J`U_$a{mHfzOn->==gsGj{gQwEaFui2TsLDD=CSqoyt4l +zD)qjiR=EmmW8ZxPIPBmh@FZ}o-lGI0BYp*!fWTd;Zp07tsbzXdQeEJ_lZnF_Kf9ijAGJxOJ8C +z6?5VJu$}-%Y;o6W$M-YvckQ8tY>2y7TuX!)ujM0fUO!^@PQvrlZ`4PAkb@&)A%mR2 +z7O-o{Y=G};hh1@eJ?V8d8cFmMAQ_7)PC`5bCdP|09u341W&GZIMlXR|ZO2K*U&Ot3 +zUmNi{E&yvdg@}zF^W7L%{?r|dUI$LW&Q0#Fnnq=AbTuyd~X= +z=dO8OF3KCIuQ(4z5+(_KB@kT-s+Ew4J&Oc;UgeO0DSlsylq;xgEF|j|Cht^&rMnbr +zwf2xu%_--XO8q}~vMd2L*q@P)$KSqVa_=S>OE3l0ZE@GxBX%eg977T|x|N*vaaimK +zxCSKSqjVZ2W>%N%b!4+gk5Tv-^)E9a?fXhPQdj#~ +z5>9~O1UB)l=dkYIDIB?bNtC;#CUb@gSWu2d(ZTr6q_xChxa1^$LH~9vX%^cuDn}e3YVQ>_zffb-{6&wN!8Fg}_*?S$_2D9WZ +zoUefH+Rf`ml%I61b(erqg%JfP +z;up+&$`yFPj>VJ6x|7EDJI=1D8sIr+!KdWgM0ai4y@dqg<4}L1j@;`QYr7vLZjj@( +zeG8O3;2-cI7$h-$HMwq&$p#MyEA0zh?7d`Y5@Bf?KgDVO3PaBKf?}(&AD7sCIFM8JA{d{d+?0kyb +zyv{Z#(%Sm6j!s;3{L%48cT;E`ZEymzpS=h96K7sx^~KJ4(fB4wQa^7o2i|!L>KTqMs8X;j7+TN0D +z^lYa*KcmHq1%3$@k0**X7Oh5TKLtaXAR7dd6L?8+aUjoSC4MJ|FAQn>%gF7fc!=>p +zkoW(SSiA=%w5`{OQ9rX&nJkd+5*iC}j0zBlq^u&Rgoo<1iIq(oi)#Ly1Tol9ZGS%bveCT_1;5qzfeo5 +zC=fMfz*J|u;dNWCHnOaB(}^BzN@;=O16>VX$*{I2oAg!;mVmA +zWul4UE;NrQXdSE8@1SOD{p=~Z+u#_b%%{4R#umEU`~&Ozt%}Oj2(Y_@vde4eF0Hbq +zS%g;IekwRwVxfUYW29m=Lou6C~*?m +z<6c$Ns}-!MXlnnu#Qui%w$-|aFJ<2uG3Y}1&BJrUZIh$VF?_o2z0R!9%RHUtnc4B= +z@Hzf>ZT+6Yt_!Uh3C|ag&tt9r@iYVVrNj&7w%6ls>YPVB%g)=5x1_!G +zJF_~eMb6k)cn7H}M!~S^N&dZBt>Fz9*SH(q* +zH=Uge)8s6ysbaP2p=-x)Yq#Yrd+wML&D-deZbJ9z)IOB1L2TH9fx8XLLS0dB-_TOFv7~L=_Z_Oq(a$|6&!QON{az*lCdQ9lnH)NlFzPi#n}?nF~#j +zhS9QbvjPTeFL)xqD5zV@pY6%5G|k>C=h>=emb_h>0$Nsvq&V;cn|B8r&KGwtiWHYF +z<~n3ftGAGMpS(ZmtbNDXOjMgLfP>cg`(zuPsfMHg+jpKr&{%`op!Dq7gg-XP$$;g5 +z?f)E;hB{y&ZJGU`Na>3~B1rdcwM4_bh1pHSf6V(I$JD2c9yZ%WaILXJp6pa3TP5C^ +zTxjfwH!{oIa8JjopD`dF;19iTk6t3#^r-sgSk4x%^mWFyHEJPft#%qQto?{hWp}Tg +z0sg2Dd_n#@?8imHoXPpp`GH>Y(u#sT%f63GU&4|Ua%p-e7!eVy8rC#;8$OkxYi3{p +z=M(2r#w|atc+!BmxUFn1q0{V=1O44@|6MpkgD#WOC>T@cz?GUFyQ=m5jJWnIB^mx_ +zqFp%yk1GSkGhV)`OjmwD-8z}tYp1DX8k!x+jH)`_t-KG~iSia*5R<%i$D1#|Q=4~G{7 +zx&J@uf_JAx{>_K6`RD8mIs@d{MkFygumS|4XYP*}CjeN{NAdTIj5W?F3qJC7)Y@-L +zF+p1cXs52p!Va5#V^_C+ALkO^wUwjiy0qtzaBZY%+NGlFqQH`H +zyOSx7b*eCbxdrK0UB=P5toF(A;0+zrtem_zIjomj_#917*KQsVkJ-f}EDpVnpOLkF +zjH(%{2+=xv$Ls;OzV~`GTd~(3`B28Ill2W^qwBP5Eo;gswM(0t^#97A)@wq!cLkK+ +z3_{1Zd`GiETo0MMwP@1QwfWZyC4FNt#LmwWqC9neO$N27DeQc;-MOeC@!8$3mVs&8 +zn;^3(jHk)_At)xm5P;FOUF|yO@f{NzQC53A5DY_P+ +zRBQ@b#efb4SVTyk8mhnKRK=Atq~yT|2z>h>dgFyR)|w+bxf64G5=G4P)wjezI&0UW +zM7`1d84z)>HzM6XO%N*dCZ67YYHo7J;_v#`*fpbY`(QzWdR2hkRX(pZxoS6II +zh!+PNA!C)}d6RgZJ4IDhZZy`0sMZS=(V+o3_HJEc*AW@>5Rz$NhF1wLznk3q>g-@B +z6k5NK2m@{h7PNgJ@aqprj@qU$RT`6Q}BglSiPZF8#(a^NZ}- +zy=az<`A9}pBbc$1h~b`=MdT4dRkK-;O^F=&Hl{+JrPWecyQRY!4UvXjikq%#a}N4e +zxJS0h)p1;$fwisI&>zNcVp;nX#O_q8l`0J@7T&j^@-LSlTVx% +z(&7}j^mn-f@gr<@^SYq#_shOz`#fIofVu|r6-l3>8j(BNVnqV(s}5m(<%G)KqOPfX +ze*g57{n(YZZOLNI^)D>50Jp)1p9;I38(K;qUqNNCs=5otiGrK0KK(D#jgSR#t_ga< +zq0Z*b=j&sV&vo|>WfRk|nxT8wo_YPS(lpv{a)-NNJ1uP;HluTm$Hi>p*e6)b8<*ai +z*I`O~k=vzJ+sEZqP6ZEgHW8$uX>EreY)C9%LH2tuGed)P9IN8v@{1^{e%~$YjAP&M +zHA{>(wI-n;UGr=E`lF8T1y`YSkkIA!m7}OX +zeUnQmKE1@>8jmkQ=NrVwte@N~+w7yXF+|#|SU*R;9N0;P6v`LsoJ28Uc&BblY=cfJ +z0n0{Yxs@vWv&s8{^BW&$>UE%USFSG)hzYAkNN2Hm-$fRcqE;0sr^dw^rWPWKyjC%3mmm(i;$`6G( +zMym>YB)m?mJmts=cF6$l>S#j;DKXsgq`11`jIYjk#kx>jm?_e{++bqX=BKlb?W +z*?IAWqYq7|t$wa=-6kK~Hji0YnQho99O&Yy@fhp3i%_yswlqGVBiJ_FI +zQwp8r(xXUj;gCv5W8tJCa$S;~pL))7zR&mbc|Xtl^?5$u_g`Q6ZolowWv0sj06_YX +zhykElEfx$4cF~CwQ=q^Fq(4LefIu(S5+GA)44PZSUV&n7RtN*YGWlEvmd)aFsdTJJ +zNXH&yiLru^<6M52n28lL8C-@4D-y7HJcjT;b)cmzqP?t#*3?nR51f^!r=*6 +zJRa-hY=y_WxwyEw;7V({n!y>p#hE=UE(5^f+ +z6Oeai198o&IA8rwz9sG(ALyOGB>VmG!$|!@=TAqgpC`y<2-SmB$C13<*W&|x53XL% +zh5LVXP8hEr+N7xrZk?Y{5k4P%*K*l;vQ;^$k}RI1;o;%l?TNLDu!0`Ke0}M0R8ReV +z{J2r><4|Tl>hNFm+ +zISUrjp`NX~;^0l@E-gD|FcBS_Yww5J&7lb&4Wt3{qqBsE)^B6>xa-KJuvT2hthn_7 +zX$ZEYGO@>ce-zy812pi?jN4aC7xZxa2@}#6q}8S(qGwq&v1L}jI9gQk?v|z((2WU( +zS`>2{Zobh;)L4{jSN52b6z=)X^w?N1EU9Tc>jm8B<-J@H&j#5RyEAMZief$1M8kYt +z8PV0+re6jx?XfiD7DJRRooX%Ixr$#cWku8~*81VKqEE8>+GbZZc5^sI<7!%vVk5f0 +zFwORoSu;P%R+(9Grt{;O-lE{ZO*Z$e3FK!q$#B<0dT57kdr;`7eXqUaruDxsAL*?* +zoS)PQ$Jd3>C2WJ*JBYo)=EP4^{Lo +zEv-Z9y@s!K)5+@|BQZ7k@1*(*T7qR<`o)%Om*5eWahz^egih~X5;vbN^-8&7ezI|I +zZf)NZOs7PPEx$cPFY^HozN|v +z2zcW9V6}mJq#YwuG7k?7RiWd9U+iyucg3`Us$ThQ2ED%O61OFZTNxl)Cmcn5Uh%#e +zZDtwsJmP7G-H~esdoPkl7dTP`Jt)gSsof_#M@UH`Wy!?oTo)p=?y!gg_ + +literal 0 +HcmV?d00001 + +diff --git a/themes/spinner/throbber-0017.png b/themes/spinner/throbber-0017.png +new file mode 100644 +index 0000000000000000000000000000000000000000..ce792def5cc6aac0b16a4ac9d029aca472c08595 +GIT binary patch +literal 1572 +zcmYL}eK^x=7{`B_%EqXz!<4reDIMFCXoN+XQ>TRTmd5yDY+kl0v|L6B%S$>5qg7H# +zr$XC7VI&=u$ysT#v{s?aTi(LTnYzw(p6j{q?{(du@AZA|zn(15eeQ7BS{MKTa1WxJ +zmr6~RN@InpGm?|1R0547`ZEAP6S-7sKuIY|HFRd~@?-9%P(c6_8A}5(Q4|_2BoxD- +zhhicqOiUa#i58o{jKnY_K^n-wFybgNF(CavwI)-+m@sl$r@AT%wG`zR!UO>uEY2Q- +z!(nW;nBZ`DTU)#>R?sSWs`9K_^7v3_Ab`cHPhQ~2dy`I*qIC6=5sTKt3 +z|37Js-R9x5z*J$xkL;vSD#$SL4xz=V6u{Zorxc>B06@Lb!;RqM2R&cd8C`a8Rr|SB +zzg5cJi4{ak!p^t@{G;!#)jdC@sb~5fZY}+4oaqoh(%NW}d8zK0c^%@j?`l4g!f*2m +z$h>kew50#*Lg$VyE+e+T5I-*69w90%juElres4meB3h8KmlYqYQ;dhMD=dg=~lA90&00gHr+_yJpV&f +zusq=|^wvCDvV0ce;iyiXi@zjQ-yk&lYQ)mEetz~%8|Y+~UpnGqP$~ToEn9P!jtqR~ +zEn9)DXYk9gm8RQI_@)k%*g7rR^%eu(&&tmrg1c*jR_3uoU2H6#8&!Md4Lao~3?3cE +z=NFL&otE>SXT7zZl4sz{bBkN{D*PRCQA4q^lEJdR6i#(Cq9$r&v=&(~d*dPm)BVz{ +zvNWlKuC+e(rHRE|n3dq09#_D3X76#aX*E5>cAwrF#|uMOG?yJm5T7)Xio~qnjiqW@ +zl}Bb)5P#_p?~t@=3U4}g;l(pvXtG?d1t~PMhf2+$oO#59hfUEN6E{*zT0Wbfoe5~M +zm5nsPn%c)KB*V`3xop9&tbWK~>Phn`M~AD_H1UAVothW>i=GAuvPTXoPC`?Je`SJs +z_<~dk`WtS1W|)_z5U#Z!4sy|h_8m$)(4MWvaza#}I4VO}dVG0Se%v9?BHUB+h>VPEs-aE!cHjZq{5If`p83rCCe +zPiIc9C-5xMPePOt@LG2YE~!Ab{tdln=caR)$AU~>>QC(yMLGE|oBC6yKD_oz1eh3*_o++>4oC^yV_01KX%x}oCo0zPMq$8_njmL&fE&a8T_ZA;%@qE*n +z(H~2bnhWE5m>-;q6$!HIy;nBxtG;9s)T0CAT8YL=X#0nCXQF$nM8&=iHNnXS-rd3#Tsuka4)}w6 +z0`VS!nka3MP22xeUt8YW48N_dyVAl?3{ssZ*upBA-Z-Xi`K=cMd=od(AXcq8E!{_| +z?%QQ{@pZ3K#zUbj9d1Fj33Kpcp;=X% +z>y<*2$-+=&9*nDl66COgS<8oozOrNA373?xlu^&cn$E{VgZi(K8fME3l2iN{>2fLV +z#`SiV+|Q8oP0rgsJ=PC +NW7j^n+dG5P{sq3l&Vm2{ + +literal 0 +HcmV?d00001 + +diff --git a/themes/spinner/throbber-0018.png b/themes/spinner/throbber-0018.png +new file mode 100644 +index 0000000000000000000000000000000000000000..6423b95104fd1fb81420f5cc0cb5b1baebc90726 +GIT binary patch +literal 1601 +zcmYL}dpOg39LIm#*j!?6hZW5wXDsX@oRLCDX@%SpQM)kLjoE%2VHr+QlpIDEN-pI* +zY9cA3wo-1V=_W;@nnXgB$&xemoacO>@8|P=p7-nXyuY8nzDIn#Jv7wTr~v?=LEi4} +zr%;oXQh_TvHznn>LR8t?gSh~puDenY;B+ZUVY+}@gTQUkOa_3Dif1wKG0`j*Eey}) +zgyAEjK|GszfEAwzM&ZFI28+SPbJ@{xaSYCXilZ|bapCmL2TF=4)Jl{)4P*ee1R@Df +zB;sv1m=K9h_V!Npgr+;sdlWNTD>DJnECxUzIQ_gtQl3(sg@UR4ScOAVKqASq!ga60 +z(_Zm@S6Cbx@KbOEf^BZU$~^_tTY>&zj5r1WMseclbOy&{10jOV<@@zCE4c0o_fss$ +z;Qaq2j^IEJkb?@W^CSB}7?Z&@@u#ua3I&L^q=UsMD*#X$AiKK-1gQ#&dvgW5Q5})E +z!knN^bIv1jc+Q`}IjU|r@O7YCrpj{mci58p-o_~Hr+2Q|>~(L9F+7=@7i#Heb{FNa +zida2f^A^0=JN9ypH{CqFN`Oooo^$R!aPZvREtzEHFyrHUx6ht`Z+1O4_Tv6Q2XAJ` +z&1aZJT=r4dF;rtlMbFVW5wCxtDGjWTAH|lrRh&Qu@1wY^IW}LvyyIFhbqIMj(`&{e +zS>+ibOI-718F_F_yHQiA)bx{4j~QWH%Q9s9sV$=vIu9O~wVRy_w~p~xH&JyuvW0K{ +zhcf0g;-Uymecbkob+sIJ32)_!6lq_9Ol8E5=Mt0*w@62~)|Ee(x>^O3mO3lf%vw>%+4}E;1qK0ZSg@wkMP=EoMQ`i +zhwu9OFP*ml^tle2zZko4e!fD_1lHBjIX9=1g0PNQ=b=n7s?DcQ?Rw-9(YI_s_3R>d +zo{4-v7A;zLWdYm@_(=p!jNdL*q;xK$M70K-GN=6<=8+=&M>~vjk=g?ex +zqKRJGzFwYInCv`|kSRZzqU1PX+Iq+cIHb2FNys!!Y9;GXo=n}hAh$?j_?z=f*Vzjz +zWp572NNR#^uxV$xTVUco4y($cKp7iZhw^keZZ>c^tR&6QI^1S613K=Ro3~MX)gagq +z3u!Pe +zHS&$sPciX@7f}7rFllLLcsG}{S|O7IX01;r(&4pK=dEQ`q-l&S@iH$#i2P{z&E$s4 +zS^jM?cV^GM_)7+&s!v0i*WK>EwL=z*pq4Il`}4+n^#-L%C1RLKHISPOzXi+wtls^r +zovLA3gJ6knnp#{U(wR}0*`%Zo_w%Q}LP;7D=x`#>ynp8V*)-_4)?GDa{DIE;@++n{ +zG$%3Ucr?s|mA$+zX_@%`)iQ36PK5c#qgj=k)NTEq8(<34HQx<}VyPY4)aPCh#PYCw +zX?}?3J3BA$SzNu4Go9CJ{*$MX^ +zR@eINUptfEjTl)wvekK2%eZ*(vj42#cRe+}o{%A|w=^MtCg1aSkJ~)JA=tE6LQCna!V)P6BwmjP~WQjhU|7f6Slks1M +sHyw}tVF8gt-stkA?cnZ`rS_ghWCxsXXObb9R{Vhgd8@a(a0@l_U;abPJOBUy + +literal 0 +HcmV?d00001 + +diff --git a/themes/spinner/throbber-0019.png b/themes/spinner/throbber-0019.png +new file mode 100644 +index 0000000000000000000000000000000000000000..45e935927623eb5ebd3bbd1f5f6aed9207a55c88 +GIT binary patch +literal 1608 +zcmYL}dsNbA7{`Bj<6^8xBxmzB4OgaI3MER>1u5mFDHf)AK}k(+a%twJK(=M6c-f{| +zG;0;QwW(QI9z@B~)-bWQ2ptP6J1lKpn&vdM{cLAv?|Gl+d(QXsobUVm^&a0H9gak} +zA^-qDG9qZPpn5JB%mM7;{QPN9;KGOmF#tF^Ef)khrE&pHs)Wvx?8xSF09=-U$H5)U +z=JC?fabi(AE;Cz#6LJsp1X4*BPLjppal|;WFq_Zki2l<6HkZTCU>D!B1EXA)qiAUo +z4nV{c$T$K4N8IE|AW%po3JKrVZPJ4?tCnY&**p$_$5Z~jge`Au>o0>0_HGqX8VCtn +zQZ5SnKo7O-Z3it;8t|_K;PJ%LN3b3cqL*P@I)~2zBv~Q>o6Qk$}NLQnw$k$j}a#SZ}No-k-(Ocwm}8g0&n +zc=WL^y*BDw8zYi3SRW%$Q>AqD56(=xL=<=9w58<=ntS!~Rc92<4wcZtLiuyiRG3%9 +zirjL7L%FMOh~e&{R-8%H6buJh&0@o>b|R{#7Ch0>(KSBLcS{mxJFdqy^E`apwEG24 +ziY#L+^k7tmA1&A=;9x40yemzaz8qqp!B_32Ls7#9B>VNENhJMlW+cGz?8W +zy4lrjcIkSh!98puRJU&R=?tV9Vw8`S>WZODsjn!{T46WA7-I@YV +z(vkp7D&Z~AaBj)a)@lA5v#@LO*#d0vP8D13WLD^sTD5_hXE! +zTN_WC1-t9$gV*d$Kb}XnTTA?Pa8~8WXVbYUXTsUs8O#CHo6R#@+LiN#e(%#8er23A +z^&4eyWX7a_3;csCIdd*%TX%=*XECDL3ELQj_p73?CJI9A9WwzS?i{f0nMfF_`khr` +z9>E6RHWVK$lc>)K5f!pKvfN)8y&|?netq(HQuF46@k~!6Ce?=OYxu=S6T0X?*5z78 +z;4=R4#E>bq_qgnmj@DZhnbgy*_1HU2YGyXGFirBiBkdUuCWivDu_!{;2}@_eD2tDw +zRG{MK`15L~eAV&qE`3P+c3U8}MKnV?cw@ht%LmC{jw1HNfAwurYL04F)^pPQtc6hV +z8iF?_Ga(3GoUKzq?uw^>L~bKwU-5IV(~e%S2<-FAETfKPIZYaQPnkAo=;7XhVz=Ko +zn%!9Acgl0+HP5FZ_Z!xos@vHRG=*(+7>@4lE!)~pJ9YpwdU!~EP>Act4Dg;aw@v@MZrgI +z#g(=GRNlGk>%Ye0^n(^Ox_?|T3{Pb@4BJn;wCS)PxdxhhBrK(`5stcZC +zrwp<3tkFF-hr;HJD4&v_=isYe5=W&%H?C0gXT}%PwbMP16W+Wk#h4zK2aM;|-IW=rU5qjZ0{*I%U +z*Dq=1RZc<+yaTad2PN*M_;IR(#uNDugS<6sq_r5Ad}!ZPK%Sz%XehIS!gzy}G7H>0 +z9QY*rNX&zySu;g$ef0&-pR_MBP+D#nIoZyjFzCvA`;6~Dcs*wORtt+&7uq{whk>(&9A0>1Ai_m`)Tyz +ylZqQ_OI6YL)DWxfZQuDH{K$lL(m@=3_Ajb$XmVakmnIzi3IPT^n%4AjYVkkv|H85W + +literal 0 +HcmV?d00001 + +diff --git a/themes/spinner/throbber-0020.png b/themes/spinner/throbber-0020.png +new file mode 100644 +index 0000000000000000000000000000000000000000..b84b04dd859b199729c63df17ebf7cbffe8f3185 +GIT binary patch +literal 1583 +zcmYL}dpOg39LIl#2}dqtTPc>?ncFTRLwGEglq8f((S~8!W^E&ua#z^| +zacx4#I31QHky~=vsZ>TR$3fvZQ_p$M_xXN4@8@~HKF|C6`RjYb!`($mVXp!J07|Y$ +z9X%zA*r{D$NoTUzD-w~XAN6AbfFfk4q=27_;S$rH<>bq9CR0cNIy{m}LSG4D;(UYgEE^eO-k?lt43#l6TQP +ziKn{b9g$cJBJfR67>rr^*seb$P<;n_1(RqbfECV&3<@GK5C<`#bY_C5pjE;lJKR&U +zAc^t+lPHX(otNOX1gm|`jt!=ems(11=f>Q +zuqBknf`!l*C3a=ZfwiZFHn8us*QeiG4a80lSasU$ocm2p7P^Ml%LNbLca*TH8@Ps# +zAK678(%s)6^DZA5^IYAqecKgtDHNa@g>{NFiz>5dC+}C|b6OWjW4QjVm6wXpuJ-xC +z@QOuLi*$;*xf^KI2FVWgiCt5Dj4aiwe^tfP6$15d^f4eP(Lwa~p3tDhK`nh^B-NUH +zLCO^+7yY2FI|NF=N7d@LIw^J85{S_I;M$}Jty8ZXryZ<%_aB2rZDz(w;n;020%=1V +zh!Ff5ckB!sTny?h6z-G#&P1oeq!KFRCr%xkpd{!;|CTwfGs)C}3S}ml7hb-2kBo7> +z5?_^<+%tD(uzKi57;4WXZGYYJKYdNinrU40BG=96(hOcp4xM!1L;zwg^gO@x<}Y4* +zdAza2L}k#EgdrtDRqY8{&LpHQY5=4q+jDWIJS*|6u-dBM=ku!Z-6!L(*FatkKiM|t}fQV7E@ +zVKZN_L+=jzO1aV?g(3)F@MWUI`~$2uJ-XOq@G+EdV6DFC?r7BcYf^^Y-3zN;boqjD +zd~tQd?j+qu3hU2&2tcvrR@xpJS`eqdA<(kLonONq`#CVH<_QYeIt{(B&P{jR5U|RHlM@kVHIW;A*}WI{;F9(7FTY%th+3VBy0p+cf;_ZlwMPU)!zb=EA(T$8QERvz`W%+p>2NZv6X}F7a|Ew`Wc9IeJKNMtOS1;fH$90-1R6P2zRlVYP^wY8WWM^~sv=^_Kh>$_kw)jLp|c-9gC&n%x}{VW7Mn6cfgN}F +z6Mk4Olf!sNFRO?jF(zoJU)c5t@KnTn5(qU2vt^heG_o5}!wYnG5!GAF?YUi-{Hkg4 +z_`0;O+#AE5Q-N)3S4w5=InS4NMJ9CQu7VX#Z(kYjkX_kU-IPIbjDxTg8re0YBNzK{MGz{e#*6bxuWK&3Mf-O=2gesRjyk* +zsMd#45M$=txj5@RWIbbH@C-e?q*~#IXpbI#y<+!io|-nP>315r+b?X%;mi0O>}=Ez +c5cH<~U;AcCT{$u^$&UxPI=MU6;t5Ir0u~;_O#lD@ + +literal 0 +HcmV?d00001 + +diff --git a/themes/spinner/throbber-0021.png b/themes/spinner/throbber-0021.png +new file mode 100644 +index 0000000000000000000000000000000000000000..a64932df50150f1ac1e29b1d181b80430f802459 +GIT binary patch +literal 1602 +zcmYL}eKga19LIm#JZ!|pT*|WumDz)bgtRcTYHq1csCn8Qn{BqX)lAq>Nm8g=vh~QV +zZc28Ft5n!+6BDj(EfOP%+x@9?&pqe+`M%G2zdq;v`F#KR=4}fn8W~s_003Y_ +z3JZw<)nTdNdf?4ZOVfga;D$x<0l*NsR1lz4wj4A!3J8&cPzH+zpy?bo4V}zjv*W2~ +zK97n{VhGS&mWa*SFQB6ZbQ+t+NAtOiloT58KlMmp(Nca+$nMYqqn0m4g~SVJ01kuo +zMPspOoTmd8>*ww5=Z&dR^tFLKCQCg#8EhJW!T5bYIPBm|2p(kcZ>#X)L5Rbq?WouQ +zdZtTWFlh1Of$!ph!Qk?H;YtviFTovDS_%yi(0QDM1RBr56O+j0OCs9tfgHKSBfte| +zy#GgfV0=hBzX(8V_AOgPWzqN!JL1_~PysB?H}lN$wE&>gPYT(zGZIm7wu5Wci3LH4ELpv{^qg6-wjl-eokTLt0Qa@}4JopqG`<0{JH57E(^g}NxhHVobL +zLD+kuTXARs!-})8*twxg+H;UoY8-HGz2|giKvJhj-5*XSlgIy5sZ?cj;&9vj7wij} +z{C>X{_Owbim)|w&d$&KNck?iNSzWI9QmEe8s>*>@XK^~MjZxJfoYNRrDtqYtVZD}B +zozz_%3AHwf-U1t`>l-0<2gX6HK5gUUp303v1USap9DulBfp84r$#Mv1q=)D%5ca;}i4#s9EZ2b_{V{Tef +z`_(4%yfClN#kIyhZ@r&*IhRM$wZ>1b*<$)y(fH +zwMLt*JdC$MTtTJ8D|538d83M=-15&^`#WZg!-m}=LS=3R~^eck{j!*B%owKdnl+{IrTp4rpRt}kSAaANUi2^f> +zh16#!Nv6zGEmDawklRvDtnzl$@7+as#B5sN-SF4mRms#vQK)STf6h65#R9;ZFb^<$ +zeQ5A{^WL=egDWjeR;#>Lf8b6Hclq6)@i$sf_m&7->&oc$dSe}y;Ik7$f|^Q-t7qx| +zxQTk7peB)%1>7~sYP0%s{-Eb{tGx}uT^1@gx@*+4Rm>VGYMQN`Z(#UBn$ZYs>@}|k +zFyGDCnUTjwiniA=0&K=7m;d9e_IHqFPkOYEkx!9L4Y#hjfmW7{5-(Iw7`Ky%o$nD_AuAPnDUA4E}l!=h7S_WRGq{QN21!Ad%pGc4KXFALfl1( +z?6N+mu9{CuiXHSqy_$PARL9B|%-!({1vTOFdzlT>UGh_dP1Obe-CvSpppT3W3mk{8wA$WXMpW9SLmpji +zlzM57#=YSOlH27MVfHZTeWuh;7olw|NQYIek}u9jEmP+XtsSyt?sTt#R%SDYk}lZ* +z#D+SD=G>@I6hboy9lWJMW#RN>=Z`#&;aV)f4j}oD|2QUoDs0S{+*17&FV?q^2yY>5{bq3sgh_8zAh!^)9nYex}R?KS6**2oI?Yip%~Nwrj*Y + +literal 0 +HcmV?d00001 + +diff --git a/themes/spinner/throbber-0022.png b/themes/spinner/throbber-0022.png +new file mode 100644 +index 0000000000000000000000000000000000000000..4b57e234270c5b3810796a93de9e85e008f446ce +GIT binary patch +literal 1595 +zcmYL}e>~H99LK-PHRIB1$}-h-N-nmU!;Hd3BZ)>?UGihiuk43yE>ze?8g~+MlpmG4 +zx+L>+QuL)&Ty>~hcE@H%NAlx{Z5DE0caMAA=ka;JUysM@`F^}U@4r5xfCJ>!hGvEU +z0Ic@$_M||HSuTTBQ0FEm&q4xcdmrHffDv-J^nlAHD9CihN +zjBpx`%c0?-Vt6=qToQwoz>CK5qUj7e7sqACFqw4De~OKWqccxL2wv(#QK;o8&u|_c +zAmHtYI6FHW!5(90M{;l=Ip7=H<bSiGZ8&^!;q>;B13qQ%jjM74NWJ6KPLer8awaT$Eb4rqAFvCv1xP%ewIzTba8$*KcgnxgfC@8Kz&T(P~4q +z;A*kEhh&ecb>H|0-r_r?iUtYdg3>oI94=A6eQ|Fn>OYTOp^& +z#F{=I%qUh2i2PEV6-gc; +zskvU%FsXfeRL>(g_Mnvcvg)4sXxiRVcfp*boBK^Lax5^|=9e65$%swIq4-Vl#R*wc +zNtbV+zsFp8Z`st)c*VymJMw0UEiena$xF@XGM-`Y(VA{ +ziFH?ZF_m(SY0-WvR8J|F^}UziyO_f2KXjKGT2e +zs?P%~wMWhnT&C@tz+y(1bwxjQ&v&GHvRHziw|V#d!>4!ptW`g-;og=%MI1a1E}Bst +zcI(IqLN5FEGgE>2oo|N<2J1i;n1IoRsPx#drZsn`Z~PMAlJ60V&M!I!7bWNU_bJG+ +z4;5gm@$ZFDybk^yU>eb=NLLo~4Yjf=kC3Tu( +zA6)ed`EUWel{<2)h_SXaosyt6MiF6HK`Q8~GkrFo(&mIxyM%QrBI?s{`bkyxD|pB` +z!LOs~RlDG2`dtEhFz2mq_Vk1LdD!fX%0+yMUt!Qlt1-|nwr8Rh@h2vtDCcLypD*;k +z0T;oqKdlJnKh~h-7ZXWj1)0@S%@934B&wd2@tt~cJ?qA#sS>1H=@+{CosZ>XMG4X7 +pj+6Ucx<}|`XAc`QUQ3;qw$zWv#>e*6g3#{=_;?-gy!UmO;BO1~<);7u + +literal 0 +HcmV?d00001 + +diff --git a/themes/spinner/throbber-0023.png b/themes/spinner/throbber-0023.png +new file mode 100644 +index 0000000000000000000000000000000000000000..b3dbeef0ed06455beaffa218655d8070cf2324d7 +GIT binary patch +literal 1603 +zcmYL}doBm|NnwcRZPeW-J?vR*@C$Rb2?0KnL6w_rep#0oNfxIq!z;8Z#dz@#wKX_&Os +z^z;NOhQp>}l2f@D7M+*QyueMta8qdMG!BNtN@Xx;?EmyQg-&B6QUp&BP?XhfRA2&^ +z1~`LQ90rTUIJ?+lv3OTkyeoM3*O6XmX7BDySZX>A073k}*VzT!bf81b;Gb342@rI4 +zDT(PZg*?+;F95RG3BbQ{90Z-O4jU*TXubjEaRI636r`w%zV +z3WlSbpAvzebZ#%mMy{Z +z7Sb=UFwrh30BM&OA}C=^twxy@H$!5N1sEq+H +zT!NGsafT6Sb=rXf<$JbEL`uW$g#$yTaVVc5svG#x!H) +zCp0m3Duz>iTXpMazN^JExK8)lyOBJ^?>5H85jPT19$zs8%%U#r)xz(E_z)BB4b3!4 +zR_mCv&jVhVci5qL-%(;;U@YSBgCLZw>zQoHvLWn;;I%gRLNPbqcwC2HvSa&R$Df)+ +zhnyN&n7L$1N3Fr412*uF#Ld8!GD3H2nlMDE07k6|QP02W=CNQihnCAL=J7v0sYEV1 +z)I~L>32vv2;rF4I)K +zk!&*pDnpU{`FGTpUmtBeXKmiY>^2+-~(ajh9}F`veNqPA7|r1|c^W()JS1G^4 +zEz5q9TXVa~T+aLjR;Bk)=QQ7EJn_-_;fQIAlMd4(I|iz>J&QRm=q0SGvDB{1+g=zu +zdEic2N1z1$d@K>2>H40$zw47fje1DFY-Q^`MdUlKK1Bbpv#S9jamc#Ejr^F97B|tI +z=YHkpbvjQQtILWukz5`5vqr3QY8I}g)mI43mEXw +z?(H3CG+*U675_nPhRY~KNzQndXwo#-f1|uV>zEQq|_nw(S|l#M$1#*3TxEz +z36e+~RV5;~t<Ydlqt;ie?wH8Rqaa5!$ymVbd +w7Va}%9+gQkg;W)49{h64Q@D6+QnPa~JmKc`YyErcp~H99LK*gV~H-4qx^27b?k@6to%%DsmVwy9Hy~h8{7N{$()LWYGLG8bp1G4 +z#nB4+adIbVbr&fMQMwyrjOd(mU)|##_j!EY@7Lq;dcGg;&+D&G&LOh5&iXCu0RYe; +z5j`oOny-}>6zsf|lzC8Kam1rM0MLf7)jFWG%n&qP`TMARFJ>$qKruKhIx3pUVueSb +zc-#n76qApNi#@^OB=8w1K7-Dp^H97vCYw#?{-<`dSUUSSEwc{-t}aRin2s)b%@EKeVjYj91+oL1nco~%52Ox*9aS9la +z&i(&MJG28SV3`kMy)U~@M8wj0=KkTVI8Xr$7N1^ZxDx;%!z54l04gl67{jPItbaym +zSmUMBNVKv1aAPkFdCZu=_tU=?Lp19;>NfpC;tXCr6a${uhp)V~a +zI4`H|^M?Gr%}_!hHuU4&Vx_eI7n$T~%#o70pI_}KXRbD6pWX;h0uKDp3JH8T>}^K0 +zff<@@b9m=^0)n&II%@v{OYJ{<(<*!pr}Q=3nxq*!WHJBTU4e9##;cJ`6>17`9ra>1 +zUS~QnFB&oM;*vzCsh|J8YWghaDmwpt;q1%*By6sLOLp#3MN +z)4ibL;=0?Hev!y2t&>wl{f;lDC#}|EDYB%LN^iui2Di-As)UoTACE)G@`9J5r4WC` +zaLMi;KRXT_T@bcsZQ5=5z;aHH;c9)U8Ut9+|wnpfxw +zP1}^{nK}{Tc7G-IFucrX)D}9DG1F0e9z`hWYZL}I?_c;$r+@*cCfLO#flEKok4P>}FN(yvEXu +z5KfW8uRlA_bd!$hZRo*%JV(3ov^R3dc0OKduEY~ +z5$7Sp>x8*&AyCtG3f-!ppqJ;O=$%NG4AztfatP68N{hB_I1w7Iix#N5DoC@XF_avauVm!Ef22z)- +z{$8sk`&<&uI_8bll;Y3RIjn77+>+VT7iYTAn{PF*=)0o;=}?hRSAGgA(M^~LTRx5X +zT<|uu@Dx$(QGZfIVIqlR=a*Z`Q#C}gBu>=HBGaBqH@!T@ZZ$_iRVPM9+ +z^Hcc+N@FO+wS$v+L=eT{))r@YBpnFGTLoH{gj|rPb#CXAM_djW=iceS%^CjIRR-0quIY_p +zU?5S|lL%qe$0@jqdOnHV27xcaKjDy^<-$FSu;h#SIKj6?8#}ziGy~%Ohvcn?Zof3l +zoh{iB_>DzQnzoCH^+wpdU;lQoLoQt$Je6cBYqAfFG +z_4YNYs&Q((%c$YG&yJjgIHMMwXX-%}jK_*@F{K1A;C3-G6wQ#HhoA4lZjRE+3q#2^>ob +xnW{0GfYu~c=SS4;6s*o!KNBIY>@RcvTcZ%$p7KGe+64ZC0BIlDQ|u9z`433t&fow5 + +literal 0 +HcmV?d00001 + +diff --git a/themes/spinner/throbber-0025.png b/themes/spinner/throbber-0025.png +new file mode 100644 +index 0000000000000000000000000000000000000000..3905e00eeb09a3546eab2dec2158fa9bc5f280f4 +GIT binary patch +literal 1604 +zcmYL}dsGs36vsiy0B0%Uqm1bmq`l;kHnoM1K%;zt6bZkrln|nmSLJL?-Hj|I$$3}BFOx}NLPmf`8BIs$)K)NW)~D)tx*E~gJH(?R$$3}7%hOn`vJ-OqTR4)B|7+(ci8SMsz0-Wu@mS +z9(E}B#v7oGQ|&_<@yEfg7Na%uiOSB-iwlumO{ClP_4T+Nc>L9ks&n%Cn!~x>oS0|% +z^0ib3ox44q;a`)gE|{-aEj%MU`A6e?Z^e~}Ja&V@Z+#j2YvRnK+S*+N+BFCGh?H>r +zHS1EhxxBsOO7-VO>e=g8cr@9=hnOEvva5FKEyWiz-{Gtkp5PD1069e|v>cri(#q5;ziiY58p?ksP +zu_V29EJ`-(anf+t+sSS{sG&t6V>-p +zGmBH4ce!bU!a5OPYtehVrrKx94c-)^bLCsLJb5)z@z+N+7if5>XMY<#uI#pc*SWG@ +z0`~~jhcyikE0|glM(K#Z2bbM3jxp!v-`Hk&kZ>#sVW&oos03a5H6to +zp`~-BM-`?bt%z&^YZaxH4BgK}wyum%C60$aSwBb^Qq5j^cr9`?^p$m5RBE%7n@*)v +znp5+Ni!SVf$&oxWd3lJ|*sRUcw!u9hx5(LnaM%B;L2slYXB{iASK=X`ucL1FRoSvcsM^y_=sOM?v#moSz?Av^`%uIs8f=J +zjsm^vhDPnYN?NT&Ef{%= +z@ps<PYq;ZF~D4IVE@+G>%VU|P~h%*?N? +zTaq|ppr$Qzkn;SuOz}0Km#f(htaP=)D^_3r$axYZ2a0BM`t{<+d&F~XQVR*Bk&Am^7d4XaWsbl~oT7)zZjixz?>dejRqAvxsS|r|qQq +ztvL=>_7)aooX>-^7G9L-I&j%Q5|j$SjF +wD~E2)ka~oIzC8+u<0Gd@SoVvtpxGs$Ch&UB0pY0y-8Tpz5q$~O9${(!0^C;FL;wH) + +literal 0 +HcmV?d00001 + +diff --git a/themes/spinner/throbber-0026.png b/themes/spinner/throbber-0026.png +new file mode 100644 +index 0000000000000000000000000000000000000000..4c02eb167941a3611d36f1b0cfab5086d77ad0ac +GIT binary patch +literal 1605 +zcmYL}eKga19LIl{Yh&g4DH6`&dT0-5hIAur6Qib7M%k>WZDt!|=3$~Jc0E-0dRlc{ +zNkTiggeB!6*F}mf<+ySdtHw*leqO*CtPYQuBamUyIprN~2N%ntP7kLb +z*enX-bQA}{q$SX!V>yusP9&91Wh2uywg=Uk{_Mr(5>D2h%6kVw}b*8#mRZ*WGzz~5J4g)5)~`nB_3 +zk;2p7^!6((RygoO;7Fvyr4ewa0_tr-B8AGJ0-Q)zG?`3gnL8p+G1;kydhaQ??j}E^ +zSdhy4|4BF!jSpJoD6r1=>;wvp$~Gs4)0qkdP!5>nt44MJ02;@8c?2DWB>mQYHuSJo +zR{{2xj%RiG`9Mzt%VT=Z=WWyAzAXoxV+UhzxOs49Mz3gSZ-BTA{ZMIIbEG~J!RZzb2ecD19+C%=b=4pH6}Fo6w_zp@pR +zg<&1-c5}k1lUqA;AAMNfB{o&Eo3xSk_`ZTB)!4}L_G^F>j+`65!Wl=uxd6ez3*!y! +z&!q@d-9>&@bw!#l&DCnmMWfVAB92UI@wcp)bh7Vi?QXe0r9aG&U)1X$O8>x28@s^~8W#GJLJZ(7xW9hML0){J)rD +zv@d8PplbIQ(+)?QMP*US*tdb4aY;PH)VP1gJJ0%LRx$O0RN#yTcpn>BA{ +z=ft;=RQC4O#>sl6P}7%clf49VFtfj9)FQ@OAgg6q5FS`IjHxwdj-kV%hCjiMBpS5d +zDa+j6n!g^eGg<&0hWNF+n^#UZfNMLeFoRzLZLZV!ya5%vTJqC2ry$mf=PNz|T)Z4t +z)W0)WsB~#`u3*%ytfCk4e8j`-j&xzRIJ-^HG$o`;(mmca^~p@B_+#Oc@2FR{VUC~b +z3(z=G-|jy2X2Xmr;rjh|!B{?W5iqF(E}^b{6_*%`aM>nfJr0>OYo)?CUS7^ET_}$) +zx;S1jsX`O#O@ZtqGEA$#l$$=ld@v)r%_pHD;$m^wN2s^fscs?3L1TGaNot0Z@q{dV +zb*i=$W^udfYt!}oi4q-O8mc;T50Sx=Tb#K)bSIuUd=lar)MFRpHki_!RQ)y=i_zBL +z<+H12M9hnixUu%p^3n7?1YPigNB-xdkOk>Ti2Jix9Zl9v_jIkf)*C9>Z=mP<#4)X! +z3F?nFEaSJ}WQim<+@ehKz#7i +z%Gb%y#@zNoE~`C|Y(G=CpTd7!A3`!~J~7yKp(1C8Bvin4%JdE_-Qa(PmTeCOx_*BQ +zpZCH25n7y1@WGurC^n&>Qc`!kAA4IUV1HBRM3!al-kJo0D_2Zoc4jfG1*)zV!5Ww4 +zR(G@PCeJ?Z)^wgtR<*Sdjt93Ss*#i{1bA3XLoO*JBVx$l`UYHXyrwMTEl&MB))-tC +z>-S{I)2i-qjky?9|^4S*FA2I)RZ_`h(WEkpwZiqXPtGcQguH21YkZ9q5 +zP1|+%wlRj$jkwq8XVGx?UZqf0=yUe)L!4=>pUZsF^pcygO!yq}ZfOI&;4(oWZPgp% +w_dN>G8A;-dz?^FSl8Pj#tYHI*=?RwN&~aO&a;Y)OHos;umu=0hFsa-Qr5+WzRJxpV +zO3{k-3gQ9)6uHzYK+y#wrRmIbr|>*jQ6PYch+%`6gDf_i#=vkn +z3=EUS!^B1_~RF`o_^vrup*}4owO1#M4-~rqa`0 +z@_tiV92)RT&{!-!r%SU@3H6ttKLd;g0bT?rhE4}LC|m4-SZcCCvU7C{pK05$jL?r~QfU3E7_hh#l)4at-srgS9j`%&nMZGj=zi!HKI8v?x% +z*5(n`c73y3MoPbOC(e4WN|-!vYs(yV;y#Nns;aE4^vTQ5x5`ek6t{e&3|5;`r!B=z +zFVD$}TjfTbk>%XA3yyQSIs0p$;*+B~Os<#G+dpm*iNMW414txw*q9N|wu<|td3Q}@ +zupH~!JRo8dic6XZkZX19flfohyDc}*xMVXoQ$m~bdMmznQoQ=8A)ceeYaQ<^oAeil +z8gv_))2*Au^@+TA0)p%l)$}J)`ZTP)2JRRKzc5;q(cq_Q*%RK{E4NixC!Cd!>(lR} +z#3rJ1HZg3b&y?L^YFG__S8eO%@QNoJ5|H0v7K`QgAi-9ZrL%<@ceV=QgnDD4I=@a` +zxU8CdkT$MAD5){bN;H-=WkSuCeY_HOc)Fw|J_UMtl?*6oy;9wg{OpgegO}R!%hy%x +z5HAFVrHlINOtZ8Hew!P9 +z&z@itHO3&*K>@`aq(sCwEMWHJn4$)m^|8-PPW8%i^|x9vGE+DR~pWP23BcEGPq|-c_u|Z@y@` +z0v-_e*i3LFXGTKsAX4^!iBC5uOe?7o>YVw~^4<_P>7vs_=vKd3NmuNZ@6kSR(Y1ZB +z!=U!f35ZXDP--3ybM6w)`3F5eYGlyR*hLkIy@A +zy~rN(*a6jhkahZA-Ur4uCxQC0lF#cc*XX)a88knue%XP}_Qpo4*j9aIWZcLUc#2^) +z?rXDt(?sZVerF_HO}L}#{Vr=db2X~_Jt$pneB|Zdd6HMRZcC(J;n$_@k1AO@yP5Mg +zaOVIIRs(D>4aQx5d$ +z(Fw>zpD)FJ)vQ)+t##GQ?q>)+joCg@-aGf@XHm3=Ncts&dDH8yDyt#!0;ynN&U?tD +zrf0XeSoeAFJN#gLDDeqXw)>t&|K++L`lgxXBMx76&V|xTRd%X!q0+dWW=^S&SWU}? +z`HW8TC)It6MsZdKg*A&O69myf+obla-gk}MZdGReBbOId?K5jmrb!o9RKsT0FnjuQ +z9RvuPr$G`VL=`QTIO0Tig=ys4>WQa2eTs)x>ZB!BL5KtAQ&rIZOnZ7{Q8)tDuYOlS +z@;K6_lCu%L`A)@H2KmR;6^u=2hrw#^D5TdX)7ZwoTxi*tOP%)_G$H}ek}4b%v=WBJ +z!IYNQ4#AccKKE7hMj{p_>mLtQABE;q%Gwqk4OC5D&PSZORzDr4LunacNpBED$7Td6 +zj^=O8>a64>s1*4L467ryg2yg;XRkBbjSazpYpB%a)C#xoy$N8E#oSWjkwf7!J2- +zu^-yA^O~uEM3&30)*`3Av!_?vLtmxcm>Ek|*>@L`y}fdU-QMuNcOEVyH_PLQA3|2i +zjJtY*-=ufj=claYce$4(D`46_u*_V@;JkD4K+93hd@()=D$m&+Y8&J@4~=&-?v6=lec?z2dlCF^(%e +zRssOvNG3%mfQno$dt312A3XRH6eyRJ!Uq5c#Bx~yCmPm(W_Ug^IsfBqHUmI2^EeE2 +zPBw=_rK9;gIyx&mAI)Wd$;sQF&qU`l85{;5&F5z4<}!HyX#kDQ$jzXMep>-XtyzwW +zrsgvM90rR=W3gylAQFoW4GIbk!fJGrd%+&qa!*n=hXG(Pq5p0izHQ^;BaqquGYXFi +zLL43!9xaOGP(Scgd05| +zM=bLMa6ks{|0e@5Az_I(CO{1TC;Lk}o54pWQaM~u0W1zLJicZV0IaZ(qa%`%p+(0v +zECUhNpXTjDs%$+9ixd;fNzNkoh$9nCZK)KE)LUDTdg0*gr?4l)xY?)iu!Ap?TH5`+ +zx4w*PVb;LPNty)O$c4l1;j*H)MRl)DBc*wng3JQ5s{8F&Z7aA2H5v_RpQqS=?lh~R +zfX+Ipy`%I%9O_={S!VK>{6hTxec>;6;7o2(J#{C|{U@ofLzSq)h(5LGAQvGP%22=FnvrO5$yR5)HqAPZ`lHm%bR&NT +zNZPj)@eQg2h1-Lm?+fX)4OXu|a8`Z;pGDY_j-0=5d%kRSoNhi*dy~Dd*o`-~StG+;E5!ZFqv1cbfv$$hU#+qE9K{yMQxCI=0}=r +z{o#imeXrF=6{U-Pi#v=&HvCVb<A8zxLV9JFa@{xEt2FcDZ4W|!7j%}-jr0ORh}*N9X2||i9^#lG8w+f< +z9rf^@X*;~Ue*C#Cn_x{@UDNnL6|s8?+oP8%nlC0>`v!JetQWlX3y*f6hv(hz=$d|% +zVy^e7P`;sbCJNYvX@5k%+FiVXX2-rlvx~e&FuujS*q-ucv(xQ!24f(d2#ZD*R4%&{A-9}(RuqvB-rJJpJ90~?>3J;y5dvfv@_ +zYBaEcEeyF(4^?P4CS5eeR0qmBr9Kmx4I$z|acyLbug}~F@mpj>(K=ls!yh57wZiP|w`Zr7a)$J)EEG(nL*lo-P^*R@YZIygM<{*v2gw +zCQxe`2+9{)@=YPs5c +zzJzk>UGT7h)t!1K%&(y*BEZ^BdcDH9LT~LBYd7BbsG!8M1bMUex%pb%2HH|JwGfX* +zR!#aP@I%-yLOa*7)OS=Yv?W;SIF&Fw?^jE2HQziShXh>*d=2gVezj?E+WEWiXG`Jj +z9ps5dt=!*~?b>_yl%V-m;GPW+F`C~`_ORfp_D{{R30 + +literal 0 +HcmV?d00001 + +diff --git a/themes/spinner/throbber-0029.png b/themes/spinner/throbber-0029.png +new file mode 100644 +index 0000000000000000000000000000000000000000..d9931e1ecbf2708841134a846f9d36d9cdbd20f8 +GIT binary patch +literal 1588 +zcmYL}eKga19LIm!qOFifi;-usn{8y~p-HWVgCuIM(q{c)?8!Dgka_A9NuAQ8sPu5v +zwXhJ$*j(za5*4kaEUARrMC^K4_ovQ1_j|sd&-vP`U&tKoX@Gy!Y(gFzpfMHM| +zIRa9fxmutPbwO(CI3x&OV6*@L7MjkL9#B+_f=qwm2C8r)lLZ3U1TGuICNkM +zW8FP$@OU3jPajXbylrp?G_!baCX&ep0UXZf*LC;qbbHK)*n*#{@aYhA_ZH^b8$+JS +zoVOmb_;lcxxZ!Z_`N{=t5Hy>ETNoe*1cV8EZd@G5xADO3<_R(*9^Hkw=^T%M76keK +zKk0@e1Vv5@A-v>g_I?Hn6xeK`vw4sLcz2@c36 +zd~XgG-|T7q6#YuQcTZFC9(me}p5csJ(hl!2=m_rJyC*owU)fNc_ICQFvaZ9l?``E| +zUX##=QrhdAdM2*d=?Ap6RPs=h +zv#oPc-ubJ8$irvl&sDDVfxSKlY{mlfLTytdE|ZZYDV|R>%2zpR9JQ8#du2*hjcBys +zfEVXo^c~v(bc+iQ-U!nHjD~{#P~3KUU#_>q$ik^>RSmHdjj9LdsQ;J<)!AdTWEQvK +zy~p_VU=K8_b8mGnr~LUQgH4oo!bbSpdDTvo9pfIC;!PRd$^4PnOP07k$)1V=$BN_2 +zx8}UhS5a{J+h?OR`ou2h;M=?rri%CtNklfjC`DNIDZMxP&cYvGX%3GC$}m;w*Jyo< +zNauUA&ArsFM2843NjLluV&76~LP(g-TEjMTtjD6QLnT5Mcf!@CnzB?_K~O--s>4@mU +zm)(jZn8{OrbiGTGB${(ZLDj^}##db@byqSLAE%=-YD0vG?Vp{)a8q_{X?l%eeo@(1 +zYmu3jFhS__o~{>uRmiZiI~%UUC-|%(ySi1ZtNgf(haWifg^ScQdFCExV>+r3K?wTj +zd!s*j(4x;vIw5Lu+av&^bwwByCfkm*;9NpR4yzwZmB5jO-LM +zIEKrO7ex0`K6O1j-=teMKK8&M{V7P|063?CgISmW@_U9++_7-1|5SEO|Rmey;+UOCm~rawU07jqNUQUUNHqj_0AzquXC4W +z_I}RL(;pt2x9@@z>mvXr8fvL3gi0O!cZ&{n_tmg$rdvEe_4oHxMi=2d2gp7ce`D** +znW3Dj+M<@w%hf^2NWZuBlCUq*X-uL~rHs1YWc2xi?vo{L-)wnH6lA3wuR6Ul14c4% +zBAmyVm#_U{R-Gm8ed(FVqBHWb;EA7L6P3k^-(rjU}V}$Z3 +z;z_1J<-oH`G5=n{w&^psOtJrwJ)NnP=o12FH^dJORAM@bZpGDvlB~it^DpWd=YTYO +zb11M*1LHmGkaXEe%wd%zWY}ggyO?cmwd4{fVX4$oN$DJP +zA<127>xn3)q%_V?=Q+>$KHtyh{XFm2=XrlWe|@v};=MH0*Q)~npo#PL +z@CVgwwbWF=&N*`AGbk{YcQ6M4;5w_N1YEkZ4m4f3o~b|>4gWE1sc4>kt>DR`K|#@c>8DY^oqsef)bOCFi8b-c)+2q +z>zvfSGOr`0AM0rJnsJS0v8>>=wceFI`&03$t0wKWm871)i8hVDLxL+brSCgma3=e8 +zg)Wx;4uMBM?Y(TCpc%SxQIn-N068rjl&c5ba~~q#-Zc9qezw^#+r)1!cxK}w{6cHx(+!rX7tyCFc&K(}wK-X_um +zbkfH>)sY2%0q#k-rQBV$>Nc)kCLUCV8x}?tn4e-Qo?Lz7B+HR!|Dogdm(?vlWps?Xb22Zys5>eJ$UBR_x{Ee^9D`$*rsQ4L*DoUo^&N +zl8b~Yd?Qy#b=Qvk_S^ZNT4Z(ex_GabSAvz6+26&J1J0JPc&hmR2R&UfI$x$|rro+E +zH;?4$Kd^#*M$Yn1YGK#n5!_OhkWQzw=;AFHXBkKq33@DZ^oCFJ8i<#SdNlaPHU~tm9;4clFB7nQKE(bBfZS?5;d&MvpbwawC2K +zv1dQx>&G{>+a#i2?IaaCB2(>?hYM^U0b#25&8B@95>rE9hVaZ!C@KGlasl%t0{e7* +zgIker4R0G6sXE-(x2b{Zr+O6lRViI*Q{*}~O09b;$*28< +z<&M2R-Zc|W=NA>bJ`{hMTOszpKa@ +X`%H>)eQ8Yx_}u|GPrOH^dqny_<-gJq + +literal 0 +HcmV?d00001 + +-- +2.20.1 + +From 50adbfd30085715940a22f1517c81584d73d767b Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 27 Nov 2018 08:24:20 +0100 +Subject: [PATCH 07/74] two-step: Fix crash asking for password with multiple + heads + +Commit 9639ed895331 ("two-step: Fix animation not starting on later +added heads") unconditionally calls view_start_progress_animation() when +adding secondary heads, to fix the animation not running on secondary +heads when not asking for a password. + +But we should not start the animation when adding a head after we've +already entered PLY_BOOT_SPLASH_DISPLAY_PASSWORD_ENTRY state, otherwise +we end up starting it a second time when the user is done entering his +password, causing plymouth to crash and the boot to hang. + +We already have the is_animating bool to indicate whether animations have +been started or not, use this to decide if we should start the animation +when adding a new head, fixing the crash. + +Fixes: 9639ed895331 ("two-step: Fix animation not starting on ... added heads") +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index 924207c..0ceda90 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -1004,7 +1004,8 @@ add_pixel_display (ply_boot_splash_plugin_t *plugin, + if (plugin->is_visible) { + if (view_load (view)) { + ply_list_append_data (plugin->views, view); +- view_start_progress_animation (view); ++ if (plugin->is_animating) ++ view_start_progress_animation (view); + } else { + view_free (view); + } +-- +2.20.1 + +From addff821e0a036f7158758e0bf0ac97688d7500e Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Mon, 5 Nov 2018 15:03:28 +0100 +Subject: [PATCH 08/74] ply-image: Do not assume all files are PNGs + +So far the image loading code has been assuming that all files are PNGs, +this commit makes the code check the file-header before assuming the file +is a PNG. + +This is a preparation patch for adding support for also being able to load +BMP files. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-graphics/ply-image.c | 45 +++++++++++++++++++------- + 1 file changed, 34 insertions(+), 11 deletions(-) + +diff --git a/src/libply-splash-graphics/ply-image.c b/src/libply-splash-graphics/ply-image.c +index 8b46978..fbf42d6 100644 +--- a/src/libply-splash-graphics/ply-image.c ++++ b/src/libply-splash-graphics/ply-image.c +@@ -55,6 +55,8 @@ struct _ply_image + ply_pixel_buffer_t *buffer; + }; + ++const uint8_t png_header[8] = { 0x89, 'P', 'N', 'G', 0x0d, 0x0a, 0x1a, 0x0a }; ++ + ply_image_t * + ply_image_new (const char *filename) + { +@@ -112,8 +114,8 @@ transform_to_argb32 (png_struct *png, + } + } + +-bool +-ply_image_load (ply_image_t *image) ++static bool ++ply_image_load_png (ply_image_t *image, FILE *fp) + { + png_struct *png; + png_info *info; +@@ -121,13 +123,9 @@ ply_image_load (ply_image_t *image) + int bits_per_pixel, color_type, interlace_method; + png_byte **rows; + uint32_t *bytes; +- FILE *fp; + + assert (image != NULL); +- +- fp = fopen (image->filename, "re"); +- if (fp == NULL) +- return false; ++ assert (fp != NULL); + + png = png_create_read_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + assert (png != NULL); +@@ -137,10 +135,8 @@ ply_image_load (ply_image_t *image) + + png_init_io (png, fp); + +- if (setjmp (png_jmpbuf (png)) != 0) { +- fclose (fp); ++ if (setjmp (png_jmpbuf (png)) != 0) + return false; +- } + + png_read_info (png, info); + png_get_IHDR (png, info, +@@ -188,12 +184,39 @@ ply_image_load (ply_image_t *image) + + free (rows); + png_read_end (png, info); +- fclose (fp); + png_destroy_read_struct (&png, &info, NULL); + + return true; + } + ++bool ++ply_image_load (ply_image_t *image) ++{ ++ uint8_t header[16]; ++ bool ret = false; ++ FILE *fp; ++ ++ assert (image != NULL); ++ ++ fp = fopen (image->filename, "re"); ++ if (fp == NULL) ++ return false; ++ ++ if (fread (header, 1, 16, fp) != 16) ++ goto out; ++ ++ /* Rewind */ ++ if (fseek (fp, 0, SEEK_SET) != 0) ++ goto out; ++ ++ if (memcmp (header, png_header, sizeof(png_header)) == 0) ++ ret = ply_image_load_png (image, fp); ++ ++out: ++ fclose (fp); ++ return ret; ++} ++ + uint32_t * + ply_image_get_data (ply_image_t *image) + { +-- +2.20.1 + +From f5915187b44dd18dd9d1956d169bb17fbd4078d4 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 6 Nov 2018 09:15:22 +0100 +Subject: [PATCH 09/74] ply-image: Add support for loading BMPs + +Add support for loading BMP files. This is needed to be able to read the +the ACPI BGRT graphics (the firmware splash shown at boot by the firmware). + +Signed-off-by: Hans de Goede +--- + src/libply-splash-graphics/ply-image.c | 88 ++++++++++++++++++++++++++ + 1 file changed, 88 insertions(+) + +diff --git a/src/libply-splash-graphics/ply-image.c b/src/libply-splash-graphics/ply-image.c +index fbf42d6..204fd2e 100644 +--- a/src/libply-splash-graphics/ply-image.c ++++ b/src/libply-splash-graphics/ply-image.c +@@ -55,6 +55,27 @@ struct _ply_image + ply_pixel_buffer_t *buffer; + }; + ++struct bmp_file_header { ++ uint16_t id; ++ uint32_t file_size; ++ uint32_t reserved; ++ uint32_t bitmap_offset; ++} __attribute__((__packed__)); ++ ++struct bmp_dib_header { ++ uint32_t dib_header_size; ++ int32_t width; ++ int32_t height; ++ uint16_t planes; ++ uint16_t bpp; ++ uint32_t compression; ++ uint32_t bitmap_size; ++ uint32_t horz_resolution; ++ uint32_t vert_resolution; ++ uint32_t colors_used; ++ uint32_t colors_important; ++} __attribute__((__packed__)); ++ + const uint8_t png_header[8] = { 0x89, 'P', 'N', 'G', 0x0d, 0x0a, 0x1a, 0x0a }; + + ply_image_t * +@@ -189,6 +210,69 @@ ply_image_load_png (ply_image_t *image, FILE *fp) + return true; + } + ++static bool ++ply_image_load_bmp (ply_image_t *image, FILE *fp) ++{ ++ uint32_t x, y, src_y, width, height, bmp_pitch, *dst; ++ struct bmp_file_header file_header; ++ struct bmp_dib_header dib_header; ++ uint8_t r, g, b, *buf, *src; ++ bool ret = false; ++ ++ assert (image != NULL); ++ assert (fp != NULL); ++ ++ if (fread (&file_header, 1, sizeof(struct bmp_file_header), fp) != sizeof(struct bmp_file_header)) ++ return false; ++ ++ if (fread (&dib_header, 1, sizeof(struct bmp_dib_header), fp) != sizeof(struct bmp_dib_header)) ++ return false; ++ ++ if (dib_header.dib_header_size != 40 || dib_header.width < 0 || ++ dib_header.planes != 1 || dib_header.bpp != 24 || ++ dib_header.compression != 0) ++ return false; ++ ++ width = dib_header.width; ++ height = abs (dib_header.height); ++ bmp_pitch = (3 * width + 3) & ~3; ++ ++ buf = malloc (bmp_pitch * height); ++ assert (buf); ++ ++ if (fseek (fp, file_header.bitmap_offset, SEEK_SET) != 0) ++ goto out; ++ ++ if (fread (buf, 1, bmp_pitch * height, fp) != bmp_pitch * height) ++ goto out; ++ ++ image->buffer = ply_pixel_buffer_new (width, height); ++ dst = ply_pixel_buffer_get_argb32_data (image->buffer); ++ ++ for (y = 0; y < height; y++) { ++ /* Positive header height means upside down row order */ ++ if (dib_header.height > 0) ++ src_y = (height - 1) - y; ++ else ++ src_y = y; ++ ++ src = buf + src_y * bmp_pitch; ++ ++ for (x = 0; x < width; x++) { ++ b = *src++; ++ g = *src++; ++ r = *src++; ++ *dst++ = (0xff << 24) | (r << 16) | (g << 8) | (b << 0); ++ } ++ } ++ ++ ply_pixel_buffer_set_opaque (image->buffer, true); ++ ret = true; ++out: ++ free (buf); ++ return ret; ++} ++ + bool + ply_image_load (ply_image_t *image) + { +@@ -212,6 +296,10 @@ ply_image_load (ply_image_t *image) + if (memcmp (header, png_header, sizeof(png_header)) == 0) + ret = ply_image_load_png (image, fp); + ++ else if (((struct bmp_file_header *)header)->id == 0x4d42 && ++ ((struct bmp_file_header *)header)->reserved == 0) ++ ret = ply_image_load_bmp (image, fp); ++ + out: + fclose (fp); + return ret; +-- +2.20.1 + +From 1723419e6c3ca89a973250ca8ca955baf8724af1 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 7 Nov 2018 12:24:12 +0100 +Subject: [PATCH 10/74] ply-renderer: Add ply_renderer_get_panel_properties + function + +For some themes we want to read the firmware-logo to use as background, +when the LCD panel of a laptop is mounted non-upright and/or if it is +using scaling because of HiDPI then the image which we get from the +firmware will be pre-rotated and scaled to match the LCD panel. + +This new function will allow renderers to let themes know about this so +that they can adjust for the logo being pre-rotated and scaled. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-core/ply-renderer-plugin.h | 5 +++++ + src/libply-splash-core/ply-renderer.c | 15 +++++++++++++++ + src/libply-splash-core/ply-renderer.h | 6 ++++++ + 3 files changed, 26 insertions(+) + +diff --git a/src/libply-splash-core/ply-renderer-plugin.h b/src/libply-splash-core/ply-renderer-plugin.h +index f1455d3..db18d19 100644 +--- a/src/libply-splash-core/ply-renderer-plugin.h ++++ b/src/libply-splash-core/ply-renderer-plugin.h +@@ -68,6 +68,11 @@ typedef struct + ply_renderer_input_source_t *input_source); + + const char * (*get_device_name)(ply_renderer_backend_t *backend); ++ bool (*get_panel_properties)(ply_renderer_backend_t *backend, ++ int *width, ++ int *height, ++ ply_pixel_buffer_rotation_t *rotation, ++ int *scale); + } ply_renderer_plugin_interface_t; + + #endif /* PLY_RENDERER_PLUGIN_H */ +diff --git a/src/libply-splash-core/ply-renderer.c b/src/libply-splash-core/ply-renderer.c +index ecf7082..5e83627 100644 +--- a/src/libply-splash-core/ply-renderer.c ++++ b/src/libply-splash-core/ply-renderer.c +@@ -410,4 +410,19 @@ ply_renderer_close_input_source (ply_renderer_t *renderer, + renderer->input_source_is_open = false; + } + ++bool ++ply_renderer_get_panel_properties (ply_renderer_t *renderer, ++ int *width, ++ int *height, ++ ply_pixel_buffer_rotation_t *rotation, ++ int *scale) ++{ ++ if (!renderer->plugin_interface->get_panel_properties) ++ return false; ++ ++ return renderer->plugin_interface->get_panel_properties (renderer->backend, ++ width, height, ++ rotation, scale); ++} ++ + /* vim: set ts=4 sw=4 expandtab autoindent cindent cino={.5s,(0: */ +diff --git a/src/libply-splash-core/ply-renderer.h b/src/libply-splash-core/ply-renderer.h +index 59391e1..c0e0ed5 100644 +--- a/src/libply-splash-core/ply-renderer.h ++++ b/src/libply-splash-core/ply-renderer.h +@@ -76,6 +76,12 @@ void ply_renderer_set_handler_for_input_source (ply_renderer_t + + void ply_renderer_close_input_source (ply_renderer_t *renderer, + ply_renderer_input_source_t *input_source); ++ ++bool ply_renderer_get_panel_properties (ply_renderer_t *renderer, ++ int *width, ++ int *height, ++ ply_pixel_buffer_rotation_t *rotation, ++ int *scale); + #endif + + #endif /* PLY_RENDERER_H */ +-- +2.20.1 + +From ed3aae9d8f79afb546cc9edeb8b051237c3e4752 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 7 Nov 2018 14:26:11 +0100 +Subject: [PATCH 11/74] drm: Implement ply_renderer_get_panel_properties + +Implement the get_panel_properties plugin interface. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 34 +++++++++++++++++++++++++++++- + 1 file changed, 33 insertions(+), 1 deletion(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index 1ff2b29..34b52d7 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -138,6 +138,11 @@ struct _ply_renderer_backend + uint32_t is_active : 1; + uint32_t requires_explicit_flushing : 1; + uint32_t use_preferred_mode : 1; ++ ++ int panel_width; ++ int panel_height; ++ ply_pixel_buffer_rotation_t panel_rotation; ++ int panel_scale; + }; + + ply_renderer_plugin_interface_t *ply_renderer_backend_get_interface (void); +@@ -542,6 +547,15 @@ ply_renderer_head_new (ply_renderer_backend_t *backend, + ply_pixel_buffer_fill_with_color (head->pixel_buffer, NULL, + 0.0, 0.0, 0.0, 1.0); + ++ if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS || ++ connector->connector_type == DRM_MODE_CONNECTOR_eDP || ++ connector->connector_type == DRM_MODE_CONNECTOR_DSI) { ++ backend->panel_width = mode->hdisplay; ++ backend->panel_height = mode->vdisplay; ++ backend->panel_rotation = rotation; ++ backend->panel_scale = ply_pixel_buffer_get_device_scale (head->pixel_buffer); ++ } ++ + return head; + } + +@@ -1488,6 +1502,23 @@ close_input_source (ply_renderer_backend_t *backend, + input_source->backend = NULL; + } + ++static bool ++get_panel_properties (ply_renderer_backend_t *backend, ++ int *width, ++ int *height, ++ ply_pixel_buffer_rotation_t *rotation, ++ int *scale) ++{ ++ if (!backend->panel_width) ++ return false; ++ ++ *width = backend->panel_width; ++ *height = backend->panel_height; ++ *rotation = backend->panel_rotation; ++ *scale = backend->panel_scale; ++ return true; ++} ++ + ply_renderer_plugin_interface_t * + ply_renderer_backend_get_interface (void) + { +@@ -1509,7 +1540,8 @@ ply_renderer_backend_get_interface (void) + .open_input_source = open_input_source, + .set_handler_for_input_source = set_handler_for_input_source, + .close_input_source = close_input_source, +- .get_device_name = get_device_name ++ .get_device_name = get_device_name, ++ .get_panel_properties = get_panel_properties, + }; + + return &plugin_interface; +-- +2.20.1 + +From 986c911e21b41464aa17006fd048dc38d5824325 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 7 Nov 2018 15:49:40 +0100 +Subject: [PATCH 12/74] ply-pixel-buffer: Fix fill_with_buffer fastpath when + device_scale != 1 + +After calling ply_pixel_buffer_crop_area_to_clip_area cropped_area.x/y +are in device coordinates. So when calculating the x/y offset in the +source-buffer due to device-clip areas possible making cropped_area.x/y +larger then just the xoffset/yoffset (in the canvas) we must multiply +the original xoffset/yoffset by device_scale before subtracting. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-core/ply-pixel-buffer.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/libply-splash-core/ply-pixel-buffer.c b/src/libply-splash-core/ply-pixel-buffer.c +index de3b107..04aa0d6 100644 +--- a/src/libply-splash-core/ply-pixel-buffer.c ++++ b/src/libply-splash-core/ply-pixel-buffer.c +@@ -868,8 +868,8 @@ ply_pixel_buffer_fill_with_buffer_at_opacity_with_clip (ply_pixel_buffer_t *canv + if (cropped_area.width == 0 || cropped_area.height == 0) + return; + +- x = cropped_area.x - x_offset; +- y = cropped_area.y - y_offset; ++ x = cropped_area.x - x_offset * canvas->device_scale; ++ y = cropped_area.y - y_offset * canvas->device_scale; + + ply_pixel_buffer_copy_area (canvas, source, x, y, &cropped_area); + +-- +2.20.1 + +From e1e9e554d2014d80ce666d85174dbea89b05e038 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Fri, 9 Nov 2018 23:05:24 +0100 +Subject: [PATCH 13/74] ply-pixel-buffer: Fix marking buffers as opaque when + doing a solid fill + +Instead of comparing fill_area addresses actually compare the contents +of the ply_rectangles. + +This allows us to use the memcpy fastpath in ply_pixel_buffer_with_buffer +more often. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-core/ply-pixel-buffer.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/libply-splash-core/ply-pixel-buffer.c b/src/libply-splash-core/ply-pixel-buffer.c +index 04aa0d6..86e8e3f 100644 +--- a/src/libply-splash-core/ply-pixel-buffer.c ++++ b/src/libply-splash-core/ply-pixel-buffer.c +@@ -315,7 +315,7 @@ ply_pixel_buffer_fill_area_with_pixel_value (ply_pixel_buffer_t *buffer, + /* If we're filling the entire buffer with a fully opaque color, + * then make note of it + */ +- if (fill_area == &buffer->area && ++ if (memcmp(fill_area, &buffer->area, sizeof(ply_rectangle_t)) == 0 && + (pixel_value >> 24) == 0xff) { + buffer->is_opaque = true; + } +-- +2.20.1 + +From 385a008c83e41d7958392bc4cf8aacb94965fe30 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 6 Nov 2018 18:55:27 +0100 +Subject: [PATCH 14/74] ply-pixel-buffer: Add + ply_pixel_buffer_get/set_device_rotation helpers + +For some themes we want to use the firmware-logo / splash as background, +when the LCD panel of a laptop is mounted non-upright then the image which +we get from the firmware will be pre-rotated to match the LCD panel mount. + +This commit adds ply_pixel_buffer_set/get_device_rotation helpers to +help deal with this. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-core/ply-pixel-buffer.c | 30 +++++++++++++++++++++++ + src/libply-splash-core/ply-pixel-buffer.h | 6 +++++ + 2 files changed, 36 insertions(+) + +diff --git a/src/libply-splash-core/ply-pixel-buffer.c b/src/libply-splash-core/ply-pixel-buffer.c +index 86e8e3f..1599bcb 100644 +--- a/src/libply-splash-core/ply-pixel-buffer.c ++++ b/src/libply-splash-core/ply-pixel-buffer.c +@@ -1079,4 +1079,34 @@ ply_pixel_buffer_set_device_scale (ply_pixel_buffer_t *buffer, + buffer->logical_area.height = buffer->area.height / scale; + } + ++ply_pixel_buffer_rotation_t ++ply_pixel_buffer_get_device_rotation (ply_pixel_buffer_t *buffer) ++{ ++ return buffer->device_rotation; ++} ++ ++void ++ply_pixel_buffer_set_device_rotation (ply_pixel_buffer_t *buffer, ++ ply_pixel_buffer_rotation_t device_rotation) ++{ ++ if (buffer->device_rotation == device_rotation) ++ return; ++ ++ buffer->device_rotation = device_rotation; ++ ++ if (device_rotation == PLY_PIXEL_BUFFER_ROTATE_CLOCKWISE || ++ device_rotation == PLY_PIXEL_BUFFER_ROTATE_COUNTER_CLOCKWISE) { ++ unsigned long tmp = buffer->area.width; ++ buffer->area.width = buffer->area.height; ++ buffer->area.height = tmp; ++ ++ ply_pixel_buffer_set_device_scale (buffer, buffer->device_scale); ++ } ++ ++ while (ply_list_get_length (buffer->clip_areas) > 0) { ++ ply_pixel_buffer_pop_clip_area (buffer); ++ } ++ ply_pixel_buffer_push_clip_area (buffer, &buffer->area); ++} ++ + /* vim: set ts=4 sw=4 et ai ci cino={.5s,^-2,+.5s,t0,g0,e-2,n-2,p2s,(0,=.5s,:.5s */ +diff --git a/src/libply-splash-core/ply-pixel-buffer.h b/src/libply-splash-core/ply-pixel-buffer.h +index ea7f833..ddec47d 100644 +--- a/src/libply-splash-core/ply-pixel-buffer.h ++++ b/src/libply-splash-core/ply-pixel-buffer.h +@@ -59,6 +59,12 @@ int ply_pixel_buffer_get_device_scale (ply_pixel_buffer_t *buffer); + void ply_pixel_buffer_set_device_scale (ply_pixel_buffer_t *buffer, + int scale); + ++ply_pixel_buffer_rotation_t ++ply_pixel_buffer_get_device_rotation (ply_pixel_buffer_t *buffer); ++/* Note calling this removes all pushed clip-areas */ ++void ply_pixel_buffer_set_device_rotation (ply_pixel_buffer_t *buffer, ++ ply_pixel_buffer_rotation_t rotation); ++ + unsigned long ply_pixel_buffer_get_width (ply_pixel_buffer_t *buffer); + unsigned long ply_pixel_buffer_get_height (ply_pixel_buffer_t *buffer); + +-- +2.20.1 + +From 3f71c28e455ea26c23ab924146dae0871b342732 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Thu, 8 Nov 2018 14:25:05 +0100 +Subject: [PATCH 15/74] ply-pixel-buffer: Add ply_pixel_buffer_rotate_upright + helper + +For some themes we want to use the firmware-logo / splash as background, +when the LCD panel of a laptop is mounted non-upright then the image which +we get from the firmware will be pre-rotated to match the LCD panel mount. + +Until now our device-rotation support was limited to using rotated +pixel_buffer-s as destination / canvas only. + +This commit adds a ply_pixel_buffer_rotate_upright helper to rotate +a nop-upright source buffer upright so that we can use it as source-buffer +to other functions which expect source-buffers to always be upright. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-core/ply-pixel-buffer.c | 25 +++++++++++++++++++++++ + src/libply-splash-core/ply-pixel-buffer.h | 6 ++++++ + 2 files changed, 31 insertions(+) + +diff --git a/src/libply-splash-core/ply-pixel-buffer.c b/src/libply-splash-core/ply-pixel-buffer.c +index 1599bcb..3ce6f78 100644 +--- a/src/libply-splash-core/ply-pixel-buffer.c ++++ b/src/libply-splash-core/ply-pixel-buffer.c +@@ -1109,4 +1109,29 @@ ply_pixel_buffer_set_device_rotation (ply_pixel_buffer_t *buffer, + ply_pixel_buffer_push_clip_area (buffer, &buffer->area); + } + ++ply_pixel_buffer_t * ++ply_pixel_buffer_rotate_upright (ply_pixel_buffer_t *old_buffer) ++{ ++ ply_pixel_buffer_t *buffer; ++ int x,y, width, height; ++ uint32_t pixel; ++ ++ width = old_buffer->area.width; ++ height = old_buffer->area.height; ++ ++ buffer = ply_pixel_buffer_new (width, height); ++ ++ for (y = 0; y < height; y++) { ++ for (x = 0; x < width; x++) { ++ pixel = ply_pixel_buffer_get_pixel (old_buffer, x, y); ++ ply_pixel_buffer_set_pixel (buffer, x, y, pixel); ++ } ++ } ++ ++ ply_pixel_buffer_set_device_scale (buffer, old_buffer->device_scale); ++ ply_pixel_buffer_set_opaque (buffer, old_buffer->is_opaque); ++ ++ return buffer; ++} ++ + /* vim: set ts=4 sw=4 et ai ci cino={.5s,^-2,+.5s,t0,g0,e-2,n-2,p2s,(0,=.5s,:.5s */ +diff --git a/src/libply-splash-core/ply-pixel-buffer.h b/src/libply-splash-core/ply-pixel-buffer.h +index ddec47d..7b5da36 100644 +--- a/src/libply-splash-core/ply-pixel-buffer.h ++++ b/src/libply-splash-core/ply-pixel-buffer.h +@@ -159,6 +159,12 @@ ply_pixel_buffer_t *ply_pixel_buffer_tile (ply_pixel_buffer_t *old_buffer, + long width, + long height); + ++/* Return the upright version of a buffer which is non upright. ++ * This is the *only* ply_pixel_buffer function which works correctly with a ++ * non upright buffer as source. ++ */ ++ply_pixel_buffer_t *ply_pixel_buffer_rotate_upright (ply_pixel_buffer_t *old_buffer); ++ + #endif + + #endif /* PLY_PIXEL_BUFFER_H */ +-- +2.20.1 + +From ae8a676c096731e6ad0868e80c53e23ba82c0695 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 7 Nov 2018 15:46:06 +0100 +Subject: [PATCH 16/74] ply-pixel-display: Add + ply_pixel_display_get_device_scale() function + +Add a function to get the device scale for a ply-pixel-display. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-core/ply-pixel-display.c | 8 ++++++++ + src/libply-splash-core/ply-pixel-display.h | 1 + + 2 files changed, 9 insertions(+) + +diff --git a/src/libply-splash-core/ply-pixel-display.c b/src/libply-splash-core/ply-pixel-display.c +index cb01a2c..dc088bb 100644 +--- a/src/libply-splash-core/ply-pixel-display.c ++++ b/src/libply-splash-core/ply-pixel-display.c +@@ -51,6 +51,7 @@ struct _ply_pixel_display + + unsigned long width; + unsigned long height; ++ int device_scale; + + ply_pixel_display_draw_handler_t draw_handler; + void *draw_handler_user_data; +@@ -77,6 +78,7 @@ ply_pixel_display_new (ply_renderer_t *renderer, + + display->width = size.width; + display->height = size.height; ++ display->device_scale = ply_pixel_buffer_get_device_scale (pixel_buffer); + + return display; + } +@@ -105,6 +107,12 @@ ply_pixel_display_get_height (ply_pixel_display_t *display) + return display->height; + } + ++int ++ply_pixel_display_get_device_scale (ply_pixel_display_t *display) ++{ ++ return display->device_scale; ++} ++ + static void + ply_pixel_display_flush (ply_pixel_display_t *display) + { +diff --git a/src/libply-splash-core/ply-pixel-display.h b/src/libply-splash-core/ply-pixel-display.h +index 675c181..a57b9a9 100644 +--- a/src/libply-splash-core/ply-pixel-display.h ++++ b/src/libply-splash-core/ply-pixel-display.h +@@ -51,6 +51,7 @@ ply_renderer_head_t *ply_pixel_display_get_renderer_head (ply_pixel_display_t *d + + unsigned long ply_pixel_display_get_width (ply_pixel_display_t *display); + unsigned long ply_pixel_display_get_height (ply_pixel_display_t *display); ++int ply_pixel_display_get_device_scale (ply_pixel_display_t *display); + + void ply_pixel_display_set_draw_handler (ply_pixel_display_t *display, + ply_pixel_display_draw_handler_t draw_handler, +-- +2.20.1 + +From 9f3aff2e7c5ad70b37c779c06509c8d1c74a6e58 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 6 Nov 2018 14:41:38 +0100 +Subject: [PATCH 17/74] two-step: Use a pixel-buffer instead of an image for + the view's background + +Use a pixel-buffer instead of an image, this gives us more flexibility. + +This is a preparation patch for adding support to (optionally) use +the firmware splash screen logo (from the ACPI BGRT extension) as +background. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index 0ceda90..efdcaa9 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -93,7 +93,7 @@ typedef struct + ply_label_t *message_label; + ply_rectangle_t box_area, lock_area, watermark_area; + ply_trigger_t *end_trigger; +- ply_image_t *background_image; ++ ply_pixel_buffer_t *background_buffer; + } view_t; + + struct _ply_boot_splash_plugin +@@ -181,8 +181,8 @@ view_free (view_t *view) + ply_label_free (view->label); + ply_label_free (view->message_label); + +- if (view->background_image != NULL) +- ply_image_free (view->background_image); ++ if (view->background_buffer != NULL) ++ ply_pixel_buffer_free (view->background_buffer); + + free (view); + } +@@ -255,7 +255,7 @@ view_load (view_t *view) + + if (plugin->background_tile_image != NULL) { + ply_trace ("tiling background to %lux%lu", screen_width, screen_height); +- view->background_image = ply_image_tile (plugin->background_tile_image, screen_width, screen_height); ++ view->background_buffer = ply_pixel_buffer_tile (ply_image_get_buffer (plugin->background_tile_image), screen_width, screen_height); + } + + if (plugin->watermark_image != NULL) { +@@ -882,9 +882,9 @@ draw_background (view_t *view, + ply_pixel_buffer_fill_with_hex_color (pixel_buffer, &area, + plugin->background_start_color); + +- if (view->background_image != NULL) { ++ if (view->background_buffer != NULL) { + uint32_t *data; +- data = ply_image_get_data (view->background_image); ++ data = ply_pixel_buffer_get_argb32_data (view->background_buffer); + + /* We must pass NULL as fill area, because the fill area + must be sized as the image we're sourcing from, otherwise +-- +2.20.1 + +From e10ed13fffb59b7a7656227c8f77b93310c160cd Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 7 Nov 2018 20:27:08 +0100 +Subject: [PATCH 18/74] two-step: Speed up background-tile drawing on HiDPI + screens + +Before this commit background drawing on HiDPI screens is quite slow +and CPU intensive, because we do the interpolating scale, which does +a whole bunch of double-precision float operations for *each* pixel +for every frame we draw. + +When using two-step with a background-tile on a Cherry Trail machine with +a HiDPI screen this results in the diskcrypt password entry being visible +laggy, I can type the password much faster then the bullets show up. + +This also means we are pegging the CPU during boot, significantly slowing +down the boot. + +This commit fixes this by creating the background_buffer at the screen's +device_scale and rotation, only doing the scaling once. + +This commit further speeds things up by also doing the solid/gradient fill +of the background + the alpha blend of the tiled background-image once, +creating a solid background which allows us to hit the +ply_pixel_buffer_fill_with_buffer memcpy fast-path and avoids the need to +re-do the solid/gradient fill + alpha-blend each frame we render. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 40 ++++++++++++++++++---------- + 1 file changed, 26 insertions(+), 14 deletions(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index efdcaa9..65586f9 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -245,17 +245,38 @@ view_load_end_animation (view_t *view) + static bool + view_load (view_t *view) + { +- unsigned long screen_width, screen_height; ++ unsigned long screen_width, screen_height, screen_scale; + ply_boot_splash_plugin_t *plugin; ++ ply_pixel_buffer_t *buffer; + + plugin = view->plugin; + + screen_width = ply_pixel_display_get_width (view->display); + screen_height = ply_pixel_display_get_height (view->display); + ++ buffer = ply_renderer_get_buffer_for_head( ++ ply_pixel_display_get_renderer (view->display), ++ ply_pixel_display_get_renderer_head (view->display)); ++ screen_scale = ply_pixel_buffer_get_device_scale (buffer); ++ + if (plugin->background_tile_image != NULL) { + ply_trace ("tiling background to %lux%lu", screen_width, screen_height); +- view->background_buffer = ply_pixel_buffer_tile (ply_image_get_buffer (plugin->background_tile_image), screen_width, screen_height); ++ ++ /* Create a buffer at screen scale so that we only do the slow interpolating scale once */ ++ view->background_buffer = ply_pixel_buffer_new (screen_width * screen_scale, screen_height * screen_scale); ++ ply_pixel_buffer_set_device_scale (view->background_buffer, screen_scale); ++ ++ if (plugin->background_start_color != plugin->background_end_color) ++ ply_pixel_buffer_fill_with_gradient (view->background_buffer, NULL, ++ plugin->background_start_color, ++ plugin->background_end_color); ++ else ++ ply_pixel_buffer_fill_with_hex_color (view->background_buffer, NULL, ++ plugin->background_start_color); ++ ++ buffer = ply_pixel_buffer_tile (ply_image_get_buffer (plugin->background_tile_image), screen_width, screen_height); ++ ply_pixel_buffer_fill_with_buffer (view->background_buffer, buffer, 0, 0); ++ ply_pixel_buffer_free (buffer); + } + + if (plugin->watermark_image != NULL) { +@@ -874,7 +895,9 @@ draw_background (view_t *view, + area.width = width; + area.height = height; + +- if (plugin->background_start_color != plugin->background_end_color) ++ if (view->background_buffer != NULL) ++ ply_pixel_buffer_fill_with_buffer (pixel_buffer, view->background_buffer, 0, 0); ++ else if (plugin->background_start_color != plugin->background_end_color) + ply_pixel_buffer_fill_with_gradient (pixel_buffer, &area, + plugin->background_start_color, + plugin->background_end_color); +@@ -882,17 +905,6 @@ draw_background (view_t *view, + ply_pixel_buffer_fill_with_hex_color (pixel_buffer, &area, + plugin->background_start_color); + +- if (view->background_buffer != NULL) { +- uint32_t *data; +- data = ply_pixel_buffer_get_argb32_data (view->background_buffer); +- +- /* We must pass NULL as fill area, because the fill area +- must be sized as the image we're sourcing from, otherwise +- sampling does not work +- */ +- ply_pixel_buffer_fill_with_argb32_data_with_clip (pixel_buffer, NULL, NULL, data); +- } +- + if (plugin->watermark_image != NULL) { + uint32_t *data; + +-- +2.20.1 + +From 856297c7a4bc8dff5b3d03951b250d9620468f9a Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 6 Nov 2018 14:55:29 +0100 +Subject: [PATCH 19/74] two-step: Add ACPI BGRT extension support + +Add support to (optionally) use the firmware splash screen logo +from the ACPI BGRT extension as background. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 86 +++++++++++++++++++++++++++- + 1 file changed, 84 insertions(+), 2 deletions(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index 65586f9..3570182 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -94,6 +94,7 @@ typedef struct + ply_rectangle_t box_area, lock_area, watermark_area; + ply_trigger_t *end_trigger; + ply_pixel_buffer_t *background_buffer; ++ bool background_is_bgrt; + } view_t; + + struct _ply_boot_splash_plugin +@@ -105,6 +106,7 @@ struct _ply_boot_splash_plugin + ply_image_t *corner_image; + ply_image_t *header_image; + ply_image_t *background_tile_image; ++ ply_image_t *background_bgrt_image; + ply_image_t *watermark_image; + ply_list_t *views; + +@@ -242,6 +244,62 @@ view_load_end_animation (view_t *view) + view->end_animation = NULL; + } + ++/* The Microsoft boot logo spec says that the logo must use a black background ++ * and have its center at 38.2% from the screen's top (golden ratio). ++ * We reproduce this exactly here so that we get a background which is an exact ++ * match of the firmware's boot splash. ++ * At the time of writing this comment this is documented in a document called ++ * "Boot screen components" which is available here: ++ * https://docs.microsoft.com/en-us/windows-hardware/drivers/bringup/boot-screen-components ++ * Note that we normally do not use the firmware reported x and y-offset as ++ * that is based on the EFI fb resolution which may not be the native ++ * resolution of the screen (esp. when using multiple heads). ++ */ ++static void ++view_set_bgrt_background (view_t *view) ++{ ++ ply_pixel_buffer_rotation_t panel_rotation = PLY_PIXEL_BUFFER_ROTATE_UPRIGHT; ++ int x_offset, y_offset, sysfs_x_offset, sysfs_y_offset, width, height; ++ int panel_width = 0, panel_height = 0, panel_scale = 1; ++ int screen_width, screen_height, screen_scale; ++ ply_pixel_buffer_t *bgrt_buffer; ++ ++ if (!view->plugin->background_bgrt_image) ++ return; ++ ++ screen_width = ply_pixel_display_get_width (view->display); ++ screen_height = ply_pixel_display_get_height (view->display); ++ screen_scale = ply_pixel_display_get_device_scale (view->display); ++ ++ bgrt_buffer = ply_image_get_buffer (view->plugin->background_bgrt_image); ++ ++ if (ply_renderer_get_panel_properties (ply_pixel_display_get_renderer (view->display), ++ &panel_width, &panel_height, ++ &panel_rotation, &panel_scale)) { ++ ply_pixel_buffer_set_device_rotation (bgrt_buffer, panel_rotation); ++ ply_pixel_buffer_set_device_scale (bgrt_buffer, panel_scale); ++ } ++ ++ width = ply_pixel_buffer_get_width (bgrt_buffer); ++ height = ply_pixel_buffer_get_height (bgrt_buffer); ++ ++ x_offset = (screen_width - width) / 2; ++ y_offset = screen_height * 382 / 1000 - height / 2; ++ ++ ply_trace ("using %dx%d bgrt image centered at %dx%d for %dx%d screen", ++ width, height, x_offset, y_offset, screen_width, screen_height); ++ ++ view->background_buffer = ply_pixel_buffer_new (screen_width * screen_scale, screen_height * screen_scale); ++ ply_pixel_buffer_set_device_scale (view->background_buffer, screen_scale); ++ ply_pixel_buffer_fill_with_hex_color (view->background_buffer, NULL, 0x000000); ++ if (x_offset >= 0 && y_offset >= 0) { ++ bgrt_buffer = ply_pixel_buffer_rotate_upright (bgrt_buffer); ++ ply_pixel_buffer_fill_with_buffer (view->background_buffer, bgrt_buffer, x_offset, y_offset); ++ ply_pixel_buffer_free (bgrt_buffer); ++ } ++ view->background_is_bgrt = true; ++} ++ + static bool + view_load (view_t *view) + { +@@ -259,7 +317,9 @@ view_load (view_t *view) + ply_pixel_display_get_renderer_head (view->display)); + screen_scale = ply_pixel_buffer_get_device_scale (buffer); + +- if (plugin->background_tile_image != NULL) { ++ view_set_bgrt_background (view); ++ ++ if (!view->background_buffer && plugin->background_tile_image != NULL) { + ply_trace ("tiling background to %lux%lu", screen_width, screen_height); + + /* Create a buffer at screen scale so that we only do the slow interpolating scale once */ +@@ -670,6 +730,10 @@ create_plugin (ply_key_file_t *key_file) + + free (color); + ++ /* Boolean option, true if the key is present */ ++ if (ply_key_file_get_value (key_file, "two-step", "UseBGRT")) ++ plugin->background_bgrt_image = ply_image_new ("/sys/firmware/acpi/bgrt/image"); ++ + progress_function = ply_key_file_get_value (key_file, "two-step", "ProgressFunction"); + + if (progress_function != NULL) { +@@ -747,6 +811,9 @@ destroy_plugin (ply_boot_splash_plugin_t *plugin) + if (plugin->background_tile_image != NULL) + ply_image_free (plugin->background_tile_image); + ++ if (plugin->background_bgrt_image != NULL) ++ ply_image_free (plugin->background_bgrt_image); ++ + if (plugin->watermark_image != NULL) + ply_image_free (plugin->watermark_image); + +@@ -895,7 +962,14 @@ draw_background (view_t *view, + area.width = width; + area.height = height; + +- if (view->background_buffer != NULL) ++ /* When using the firmware logo as background, use solid black as ++ * background for dialogs. ++ */ ++ if ((plugin->state == PLY_BOOT_SPLASH_DISPLAY_QUESTION_ENTRY || ++ plugin->state == PLY_BOOT_SPLASH_DISPLAY_PASSWORD_ENTRY) && ++ view->background_is_bgrt) ++ ply_pixel_buffer_fill_with_hex_color (pixel_buffer, &area, 0); ++ else if (view->background_buffer != NULL) + ply_pixel_buffer_fill_with_buffer (pixel_buffer, view->background_buffer, 0, 0); + else if (plugin->background_start_color != plugin->background_end_color) + ply_pixel_buffer_fill_with_gradient (pixel_buffer, &area, +@@ -1097,6 +1171,14 @@ show_splash_screen (ply_boot_splash_plugin_t *plugin, + } + } + ++ if (plugin->background_bgrt_image != NULL) { ++ ply_trace ("loading background bgrt image"); ++ if (!ply_image_load (plugin->background_bgrt_image)) { ++ ply_image_free (plugin->background_bgrt_image); ++ plugin->background_bgrt_image = NULL; ++ } ++ } ++ + if (plugin->watermark_image != NULL) { + ply_trace ("loading watermark image"); + if (!ply_image_load (plugin->watermark_image)) { +-- +2.20.1 + +From d45c477d44e9d352e9d91686237e26474ab009d7 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 13 Nov 2018 09:03:10 +0100 +Subject: [PATCH 20/74] two-step: bgrt: Deal with quirky firmwares + +On laptops / tablets the LCD panel is typically brought up in +its native resolution, so we can trust the x- and y-offset values +provided by the firmware to be correct for a screen with the panels +resolution. + +Moreover some laptop / tablet firmwares to do all kind of hacks wrt +the y-offset. This happens especially on devices where the panel is +mounted 90 degrees rotated, but also on other devices. + +So on devices with an internal LCD panel, we prefer to use the firmware +provided offsets, to make sure we match its quirky behavior. + +We check that the x-offset matches what we expect for the panel's +native resolution to make sure that the values are indeed for the +panel's native resolution and then we correct for any difference +between the (external) screen's and the panel's resolution. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 79 +++++++++++++++++++++++++++- + 1 file changed, 78 insertions(+), 1 deletion(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index 3570182..641eb70 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -124,6 +124,7 @@ struct _ply_boot_splash_plugin + + uint32_t background_start_color; + uint32_t background_end_color; ++ int background_bgrt_raw_width; + + progress_function_t progress_function; + +@@ -244,6 +245,41 @@ view_load_end_animation (view_t *view) + view->end_animation = NULL; + } + ++static bool ++get_bgrt_sysfs_offsets(int *x_offset, int *y_offset) ++{ ++ bool ret = false; ++ char buf[64]; ++ FILE *f; ++ ++ f = fopen("/sys/firmware/acpi/bgrt/xoffset", "r"); ++ if (!f) ++ return false; ++ ++ if (!fgets(buf, sizeof(buf), f)) ++ goto out; ++ ++ if (sscanf(buf, "%d", x_offset) != 1) ++ goto out; ++ ++ fclose(f); ++ ++ f = fopen("/sys/firmware/acpi/bgrt/yoffset", "r"); ++ if (!f) ++ return false; ++ ++ if (!fgets(buf, sizeof(buf), f)) ++ goto out; ++ ++ if (sscanf(buf, "%d", y_offset) != 1) ++ goto out; ++ ++ ret = true; ++out: ++ fclose(f); ++ return ret; ++} ++ + /* The Microsoft boot logo spec says that the logo must use a black background + * and have its center at 38.2% from the screen's top (golden ratio). + * We reproduce this exactly here so that we get a background which is an exact +@@ -286,6 +322,45 @@ view_set_bgrt_background (view_t *view) + x_offset = (screen_width - width) / 2; + y_offset = screen_height * 382 / 1000 - height / 2; + ++ /* ++ * On laptops / tablets the LCD panel is typically brought up in ++ * its native resolution, so we can trust the x- and y-offset values ++ * provided by the firmware to be correct for a screen with the panels ++ * resolution. ++ * ++ * Moreover some laptop / tablet firmwares to do all kind of hacks wrt ++ * the y offset. This happens especially on devices where the panel is ++ * mounted 90 degrees rotated, but also on other devices. ++ * ++ * So on devices with an internal LCD panel, we prefer to use the ++ * firmware provided offsets, to make sure we match its quirky behavior. ++ * ++ * We check that the x-offset matches what we expect for the panel's ++ * native resolution to make sure that the values are indeed for the ++ * panel's native resolution and then we correct for any difference ++ * between the (external) screen's and the panel's resolution. ++ */ ++ if (panel_width != 0 && panel_height != 0 && ++ get_bgrt_sysfs_offsets(&sysfs_x_offset, &sysfs_y_offset) && ++ (panel_width - view->plugin->background_bgrt_raw_width) / 2 == sysfs_x_offset) { ++ if (panel_rotation == PLY_PIXEL_BUFFER_ROTATE_CLOCKWISE || ++ panel_rotation == PLY_PIXEL_BUFFER_ROTATE_COUNTER_CLOCKWISE) { ++ /* 90 degrees rotated, swap x and y */ ++ x_offset = sysfs_y_offset / panel_scale; ++ y_offset = sysfs_x_offset / panel_scale; ++ ++ x_offset += (screen_width - panel_height / panel_scale) / 2; ++ y_offset += (screen_height - panel_width / panel_scale) * 382 / 1000; ++ } else { ++ /* Normal orientation */ ++ x_offset = sysfs_x_offset / panel_scale; ++ y_offset = sysfs_y_offset / panel_scale; ++ ++ x_offset += (screen_width - panel_width / panel_scale) / 2; ++ y_offset += (screen_height - panel_height / panel_scale) * 382 / 1000; ++ } ++ } ++ + ply_trace ("using %dx%d bgrt image centered at %dx%d for %dx%d screen", + width, height, x_offset, y_offset, screen_width, screen_height); + +@@ -1173,7 +1248,9 @@ show_splash_screen (ply_boot_splash_plugin_t *plugin, + + if (plugin->background_bgrt_image != NULL) { + ply_trace ("loading background bgrt image"); +- if (!ply_image_load (plugin->background_bgrt_image)) { ++ if (ply_image_load (plugin->background_bgrt_image)) { ++ plugin->background_bgrt_raw_width = ply_image_get_width (plugin->background_bgrt_image); ++ } else { + ply_image_free (plugin->background_bgrt_image); + plugin->background_bgrt_image = NULL; + } +-- +2.20.1 + +From 4925a485c56fec0bd1333ec94d99b9c0e5b769b4 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 13 Nov 2018 09:51:32 +0100 +Subject: [PATCH 21/74] themes: Add new BGRT theme, using the firmware boot + splash as background + +Add a new BGRT theme, this is a copy of the spinner theme, using the ACPI +BGRT graphics (firmware boot splash) as logo when available. + +Signed-off-by: Hans de Goede +--- + configure.ac | 1 + + themes/Makefile.am | 2 +- + themes/bgrt/Makefile.am | 84 ++++++++++++++++++++++++++++++++ + themes/bgrt/animation-0001.png | Bin 0 -> 1579 bytes + themes/bgrt/animation-0002.png | Bin 0 -> 1573 bytes + themes/bgrt/animation-0003.png | Bin 0 -> 1591 bytes + themes/bgrt/animation-0004.png | Bin 0 -> 1594 bytes + themes/bgrt/animation-0005.png | Bin 0 -> 1624 bytes + themes/bgrt/animation-0006.png | Bin 0 -> 1646 bytes + themes/bgrt/animation-0007.png | Bin 0 -> 1666 bytes + themes/bgrt/animation-0008.png | Bin 0 -> 1634 bytes + themes/bgrt/animation-0009.png | Bin 0 -> 1640 bytes + themes/bgrt/animation-0010.png | Bin 0 -> 1613 bytes + themes/bgrt/animation-0011.png | Bin 0 -> 1621 bytes + themes/bgrt/animation-0012.png | Bin 0 -> 1619 bytes + themes/bgrt/animation-0013.png | Bin 0 -> 1617 bytes + themes/bgrt/animation-0014.png | Bin 0 -> 1618 bytes + themes/bgrt/animation-0015.png | Bin 0 -> 1615 bytes + themes/bgrt/animation-0016.png | Bin 0 -> 1605 bytes + themes/bgrt/animation-0017.png | Bin 0 -> 1581 bytes + themes/bgrt/animation-0018.png | Bin 0 -> 1582 bytes + themes/bgrt/animation-0019.png | Bin 0 -> 1578 bytes + themes/bgrt/animation-0020.png | Bin 0 -> 1558 bytes + themes/bgrt/animation-0021.png | Bin 0 -> 1545 bytes + themes/bgrt/animation-0022.png | Bin 0 -> 1541 bytes + themes/bgrt/animation-0023.png | Bin 0 -> 1481 bytes + themes/bgrt/animation-0024.png | Bin 0 -> 1492 bytes + themes/bgrt/animation-0025.png | Bin 0 -> 1455 bytes + themes/bgrt/animation-0026.png | Bin 0 -> 1427 bytes + themes/bgrt/animation-0027.png | Bin 0 -> 1407 bytes + themes/bgrt/animation-0028.png | Bin 0 -> 1385 bytes + themes/bgrt/animation-0029.png | Bin 0 -> 1348 bytes + themes/bgrt/animation-0030.png | Bin 0 -> 1316 bytes + themes/bgrt/animation-0031.png | Bin 0 -> 1245 bytes + themes/bgrt/animation-0032.png | Bin 0 -> 1185 bytes + themes/bgrt/animation-0033.png | Bin 0 -> 1111 bytes + themes/bgrt/animation-0034.png | Bin 0 -> 1061 bytes + themes/bgrt/animation-0035.png | Bin 0 -> 981 bytes + themes/bgrt/animation-0036.png | Bin 0 -> 989 bytes + themes/bgrt/background-tile.png | Bin 0 -> 79464 bytes + themes/bgrt/bgrt.plymouth.in | 16 ++++++ + themes/bgrt/box.png | Bin 0 -> 870 bytes + themes/bgrt/bullet.png | Bin 0 -> 131 bytes + themes/bgrt/entry.png | Bin 0 -> 1431 bytes + themes/bgrt/lock.png | Bin 0 -> 329 bytes + themes/bgrt/throbber-0001.png | Bin 0 -> 1578 bytes + themes/bgrt/throbber-0002.png | Bin 0 -> 1568 bytes + themes/bgrt/throbber-0003.png | Bin 0 -> 1561 bytes + themes/bgrt/throbber-0004.png | Bin 0 -> 1570 bytes + themes/bgrt/throbber-0005.png | Bin 0 -> 1585 bytes + themes/bgrt/throbber-0006.png | Bin 0 -> 1597 bytes + themes/bgrt/throbber-0007.png | Bin 0 -> 1629 bytes + themes/bgrt/throbber-0008.png | Bin 0 -> 1604 bytes + themes/bgrt/throbber-0009.png | Bin 0 -> 1605 bytes + themes/bgrt/throbber-0010.png | Bin 0 -> 1601 bytes + themes/bgrt/throbber-0011.png | Bin 0 -> 1595 bytes + themes/bgrt/throbber-0012.png | Bin 0 -> 1602 bytes + themes/bgrt/throbber-0013.png | Bin 0 -> 1612 bytes + themes/bgrt/throbber-0014.png | Bin 0 -> 1601 bytes + themes/bgrt/throbber-0015.png | Bin 0 -> 1588 bytes + themes/bgrt/throbber-0016.png | Bin 0 -> 1577 bytes + themes/bgrt/throbber-0017.png | Bin 0 -> 1572 bytes + themes/bgrt/throbber-0018.png | Bin 0 -> 1601 bytes + themes/bgrt/throbber-0019.png | Bin 0 -> 1608 bytes + themes/bgrt/throbber-0020.png | Bin 0 -> 1583 bytes + themes/bgrt/throbber-0021.png | Bin 0 -> 1602 bytes + themes/bgrt/throbber-0022.png | Bin 0 -> 1595 bytes + themes/bgrt/throbber-0023.png | Bin 0 -> 1603 bytes + themes/bgrt/throbber-0024.png | Bin 0 -> 1605 bytes + themes/bgrt/throbber-0025.png | Bin 0 -> 1604 bytes + themes/bgrt/throbber-0026.png | Bin 0 -> 1605 bytes + themes/bgrt/throbber-0027.png | Bin 0 -> 1615 bytes + themes/bgrt/throbber-0028.png | Bin 0 -> 1614 bytes + themes/bgrt/throbber-0029.png | Bin 0 -> 1588 bytes + themes/bgrt/throbber-0030.png | Bin 0 -> 1580 bytes + 75 files changed, 102 insertions(+), 1 deletion(-) + create mode 100644 themes/bgrt/Makefile.am + create mode 100644 themes/bgrt/animation-0001.png + create mode 100644 themes/bgrt/animation-0002.png + create mode 100644 themes/bgrt/animation-0003.png + create mode 100644 themes/bgrt/animation-0004.png + create mode 100644 themes/bgrt/animation-0005.png + create mode 100644 themes/bgrt/animation-0006.png + create mode 100644 themes/bgrt/animation-0007.png + create mode 100644 themes/bgrt/animation-0008.png + create mode 100644 themes/bgrt/animation-0009.png + create mode 100644 themes/bgrt/animation-0010.png + create mode 100644 themes/bgrt/animation-0011.png + create mode 100644 themes/bgrt/animation-0012.png + create mode 100644 themes/bgrt/animation-0013.png + create mode 100644 themes/bgrt/animation-0014.png + create mode 100644 themes/bgrt/animation-0015.png + create mode 100644 themes/bgrt/animation-0016.png + create mode 100644 themes/bgrt/animation-0017.png + create mode 100644 themes/bgrt/animation-0018.png + create mode 100644 themes/bgrt/animation-0019.png + create mode 100644 themes/bgrt/animation-0020.png + create mode 100644 themes/bgrt/animation-0021.png + create mode 100644 themes/bgrt/animation-0022.png + create mode 100644 themes/bgrt/animation-0023.png + create mode 100644 themes/bgrt/animation-0024.png + create mode 100644 themes/bgrt/animation-0025.png + create mode 100644 themes/bgrt/animation-0026.png + create mode 100644 themes/bgrt/animation-0027.png + create mode 100644 themes/bgrt/animation-0028.png + create mode 100644 themes/bgrt/animation-0029.png + create mode 100644 themes/bgrt/animation-0030.png + create mode 100644 themes/bgrt/animation-0031.png + create mode 100644 themes/bgrt/animation-0032.png + create mode 100644 themes/bgrt/animation-0033.png + create mode 100644 themes/bgrt/animation-0034.png + create mode 100644 themes/bgrt/animation-0035.png + create mode 100644 themes/bgrt/animation-0036.png + create mode 100644 themes/bgrt/background-tile.png + create mode 100644 themes/bgrt/bgrt.plymouth.in + create mode 100644 themes/bgrt/box.png + create mode 100644 themes/bgrt/bullet.png + create mode 100644 themes/bgrt/entry.png + create mode 100644 themes/bgrt/lock.png + create mode 100644 themes/bgrt/throbber-0001.png + create mode 100644 themes/bgrt/throbber-0002.png + create mode 100644 themes/bgrt/throbber-0003.png + create mode 100644 themes/bgrt/throbber-0004.png + create mode 100644 themes/bgrt/throbber-0005.png + create mode 100644 themes/bgrt/throbber-0006.png + create mode 100644 themes/bgrt/throbber-0007.png + create mode 100644 themes/bgrt/throbber-0008.png + create mode 100644 themes/bgrt/throbber-0009.png + create mode 100644 themes/bgrt/throbber-0010.png + create mode 100644 themes/bgrt/throbber-0011.png + create mode 100644 themes/bgrt/throbber-0012.png + create mode 100644 themes/bgrt/throbber-0013.png + create mode 100644 themes/bgrt/throbber-0014.png + create mode 100644 themes/bgrt/throbber-0015.png + create mode 100644 themes/bgrt/throbber-0016.png + create mode 100644 themes/bgrt/throbber-0017.png + create mode 100644 themes/bgrt/throbber-0018.png + create mode 100644 themes/bgrt/throbber-0019.png + create mode 100644 themes/bgrt/throbber-0020.png + create mode 100644 themes/bgrt/throbber-0021.png + create mode 100644 themes/bgrt/throbber-0022.png + create mode 100644 themes/bgrt/throbber-0023.png + create mode 100644 themes/bgrt/throbber-0024.png + create mode 100644 themes/bgrt/throbber-0025.png + create mode 100644 themes/bgrt/throbber-0026.png + create mode 100644 themes/bgrt/throbber-0027.png + create mode 100644 themes/bgrt/throbber-0028.png + create mode 100644 themes/bgrt/throbber-0029.png + create mode 100644 themes/bgrt/throbber-0030.png + +diff --git a/configure.ac b/configure.ac +index 66d3649..78550d0 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -322,6 +322,7 @@ AC_CONFIG_FILES([Makefile + themes/glow/Makefile + themes/spinner/Makefile + themes/script/Makefile ++ themes/bgrt/Makefile + images/Makefile + scripts/plymouth-generate-initrd + scripts/plymouth-populate-initrd +diff --git a/themes/Makefile.am b/themes/Makefile.am +index 72e642b..8e4566e 100644 +--- a/themes/Makefile.am ++++ b/themes/Makefile.am +@@ -1,2 +1,2 @@ +-SUBDIRS = spinfinity fade-in text details solar glow script spinner tribar ++SUBDIRS = spinfinity fade-in text details solar glow script spinner tribar bgrt + MAINTAINERCLEANFILES = Makefile.in +diff --git a/themes/bgrt/Makefile.am b/themes/bgrt/Makefile.am +new file mode 100644 +index 0000000..4cb7aba +--- /dev/null ++++ b/themes/bgrt/Makefile.am +@@ -0,0 +1,84 @@ ++themedir = $(datadir)/plymouth/themes/bgrt ++nodist_theme_DATA = bgrt.plymouth ++ ++dist_theme_DATA = \ ++ background-tile.png \ ++ box.png \ ++ bullet.png \ ++ entry.png \ ++ lock.png \ ++ animation-0001.png \ ++ animation-0002.png \ ++ animation-0003.png \ ++ animation-0004.png \ ++ animation-0005.png \ ++ animation-0006.png \ ++ animation-0007.png \ ++ animation-0008.png \ ++ animation-0009.png \ ++ animation-0010.png \ ++ animation-0011.png \ ++ animation-0012.png \ ++ animation-0013.png \ ++ animation-0014.png \ ++ animation-0015.png \ ++ animation-0016.png \ ++ animation-0017.png \ ++ animation-0018.png \ ++ animation-0019.png \ ++ animation-0020.png \ ++ animation-0021.png \ ++ animation-0022.png \ ++ animation-0023.png \ ++ animation-0024.png \ ++ animation-0025.png \ ++ animation-0026.png \ ++ animation-0027.png \ ++ animation-0028.png \ ++ animation-0029.png \ ++ animation-0030.png \ ++ animation-0031.png \ ++ animation-0032.png \ ++ animation-0033.png \ ++ animation-0034.png \ ++ animation-0035.png \ ++ animation-0036.png \ ++ throbber-0001.png \ ++ throbber-0002.png \ ++ throbber-0003.png \ ++ throbber-0004.png \ ++ throbber-0005.png \ ++ throbber-0006.png \ ++ throbber-0007.png \ ++ throbber-0008.png \ ++ throbber-0009.png \ ++ throbber-0010.png \ ++ throbber-0011.png \ ++ throbber-0012.png \ ++ throbber-0013.png \ ++ throbber-0014.png \ ++ throbber-0015.png \ ++ throbber-0016.png \ ++ throbber-0017.png \ ++ throbber-0018.png \ ++ throbber-0019.png \ ++ throbber-0020.png \ ++ throbber-0021.png \ ++ throbber-0022.png \ ++ throbber-0023.png \ ++ throbber-0024.png \ ++ throbber-0025.png \ ++ throbber-0026.png \ ++ throbber-0027.png \ ++ throbber-0028.png \ ++ throbber-0029.png \ ++ throbber-0030.png ++ ++MAINTAINERCLEANFILES = Makefile.in bgrt.plymouth ++CLEANFILES = bgrt.plymouth ++ ++bgrt.plymouth: $(srcdir)/bgrt.plymouth.in ++ sed -e 's,[@]PLYMOUTH_THEME_PATH[@],$(PLYMOUTH_THEME_PATH),g' \ ++ $(srcdir)/bgrt.plymouth.in > bgrt.plymouth ++ ++EXTRA_DIST = bgrt.plymouth.in +diff --git a/themes/bgrt/animation-0001.png b/themes/bgrt/animation-0001.png +new file mode 100644 +index 0000000000000000000000000000000000000000..6bd823976167325046fb5759916e6883936461a2 +GIT binary patch +literal 1579 +zcmYL}c~lZu7{$Q^#a&RLMI$t|oMDkPlaj_Tw@eZ%N->2nDL@n=$kM{ea)enV3c{#@jVv}3fJsZ|Ffn^s98L-Y +z!_Q=3_OJvP9$U;w-!DkR2-27wCLhD+vAA4j=6^)f*-Y+ky0p*IT!omgBBcnJ0Dmkl +z2!q36{P9Q}E;wLKFcvqx`-cW|#%Vqi&*CrvSZwgW2luwqyTj~Re_bUrW!}U^Fnin0 +zn)AH2!7OE_0R90Qi^b304WgJ$*Ljn|U~-v&6fTRCB4DL+k$7w>kB@ZJOU(h;d?3!e +zAv5#;H__ODyR`FKvkm=PE@rTqd?Y1>!!r|r^AE~CiSPpeEIT7f-^EiQ`6pxd?b_;8 +zP)82+ZH%haDdJqBR-j2?d2aAI%OPLofn`mD*4Ycj4)8pcaf#Mar9q26uB?WVi*F-V +zk^Htkcv^63W^MK7VePp0u?6X=+S)af+FHJLj>+Y6jXg%A(K(Dz)mqwS%+M|#nDn}? +znUdXkELYdwHA>1(%s5WqR+qm;z}tm2xuf_4SFQFIviA~F@1b711lgYkmrDi+1VYWd +z5pqwU(#vvT_?{$>cZc&6u}cCeqzV;LHv)e3p+EZgl4UWc&!KZ1%iLo+Ks?|f +z2v=fN)RhR1rc{+usNMHImm#-SzYUsB&~Z$>(WMPTt?y5iUvu>?686yFY`P->@y>W> +z!EXTFRDTuKm{vaVCwH6^Ow`Ka;W0Xt$Z8hi04u*OTdZU7{D16qUALhJIr-CP6i1lj +zJQWi3OoaM~NI!y6J=TSr2vj|Yy@j-Ve9?$6^fhH;f~WMsKsIQJ*YIqt%2tK$8=QG+ +z-&%#yR|J%0(CC!DwUHy1(3qEKSdA(Z%FH$8S^n&ONlRw1hu@$gF{gTC?5rn+dm>csxL|Xl`!2A$p(()iK7z}!pYsk?G%N62gt4BRho}h +zQsMzRsAvhvcjDX0mm9>%4s9$TigryF9O%=Q$h-t**T;5+vg>GKd%5?gLPLylRJ#(w +z=aO3Vc-58WzNTiF8>+R7ZRf7JFm;7k>6KOaDf;D*UkB=@eAph=BpsJ@MbYUchh0QQ +zx91M|n)5B2CtS%VvkfP +z2^jgew?K)8Ez|~*NAB%6$;%0j;S+ysFQq&$-63DPvR5m$Rn>=py!g$+(bW~gfy=I! +zY`CGu%42o+19OViw}=rsfmWQ~wycPg1UBB!LQ29!?;j?x4n)ZO#`I6{?%0(M*XX#Y +zrTcP~#F@FqiIU(iJEukOPJ3RT{5?r{tPvJKC}sST1uX3I(aI{;z}qf9`r^0@COUPv +T@C3yC*#RQMHj|n{lcj$H!ojpL + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0002.png b/themes/bgrt/animation-0002.png +new file mode 100644 +index 0000000000000000000000000000000000000000..ef8ff54a5ba88688b91eeb3eba6753e9dc28a169 +GIT binary patch +literal 1573 +zcmYLJdpOg39R4+z8J28?quXRSrOcfaV{up)l}pn>4NYctX`96un@gs2LAsGVMQG)6 +zN~!bYx;ow5r8OH1549TVDOdokpXdAeywCH#@AG~?e|_@z1qVV6Ee!zxfMSFE +zL$rukY6E@kWU$#^wE&?79b^E25qzna0awZ_v?Q7t5W)P7m_z_j2~;uxl}IF$W8zQ@ +zdK~H~k%^)urIM-1%mfrOfj}lOPz)N8LLt!qLx+XKZZ#FoE@D! +zQBF=MXBUK%lb738FGr`jBR49vo)t@;Fd~@%I68X$`<#)R%1f&G)2`3>B`88SukDoY +z!4I?GfT%|Pu}b}?4rkTNJ66gpS9pSb^wC)Y**XzW>g$YCs(o~ZEq9f_OZ3}jSmO@s +z;+nMW^$mGmo?|3@b=G>dSTgfFfL)$djE8Q|zo(|cGb`O;VidyAQiM=^*5bQqdXfL +zAZnC0HSO{&Nv{hx2^^C5q}&W*tqF47>^p3Z7+t(Sfi=TmZymx4>YpIbO|+;7+VZB3 +zU!_VGJt|s@%8o%<$mx@OH0gBcjD0TNG)hNPVbGfPoXQP=531f{*JL)~yff%~vRUC` +zId1j}c*Wtl9ka$Fpt>!2`L`#wzs%XHS1RQBgm0X$GCQ#Z{=N3VgDc34lEu3+pV_AQ +zN8StDLs`xQtuYH3}@RvuoWXbt +zLItOx1y3`GvVSHEI!Dqpz)2aIe<^LBU~MvcUFqF1?Q@{9 +zOs|M70@qHrn_TYDgl+MA{aHERzX+P#ig#fA%9;tgy4(IErXSsthfwieBgqA} +z?eW%_4S~~~ZQiSC)Z0;Y!4>A+Xid(eBQs;(%Wg-Et-^oF|_au+8)%Lt>T&wrJf=sjvFXJiJp7 +z5_vdWiBQNRX=XK%HG*;1d?70#2IH(?;Ma*B-siLtC3hx1MVd<0?|qQn(n_xb@GZPf +z8B{icNq@^yY%0Xzm1-O}cQQ}Ge%4vI@WpM;>ew9exzU61<88xjL{Y6^0z=3BHG|ZE +z%y~cRCv(&gK`Hu41$qQYOBkqQjy5YTQ{KRW*hcsAedXubuwu)L!(OLii + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0003.png b/themes/bgrt/animation-0003.png +new file mode 100644 +index 0000000000000000000000000000000000000000..205380b1ca8e000f19adb89243a71cd48bfa579b +GIT binary patch +literal 1591 +zcmYLJdpOg39RAH_u~F8#teZP=lx?jtmvdHBqO1!tSu!kEcCpPAVQi%xMMA1Yom4I- +zLz3jOIfhcAa?1%j5prL}=z4xS=RD{8d_SM}dEWPZ-tYU@SF)Gvs*hNS002PWZRfWA +zAR5n)4jkOPsHl%1=yG=Y@&Evdo*xKs +zV>b|t@py+#_6|7wOmNP1&|@&~@nSIP01oHy?AdI}L}$?f8jHcC@fmEEF#&gk!!usgp8y)r^M?IkLpt~W +zH*Im7-Ml{YL3#0y@Do8{be^#%jmZHKz;7VNUc}e{0IbDr+g2}%ZdT@#WH0X}rz@p* +zyp&MY5Y11=t05<$u6k#o{peXOF_CYsr)T!&DGZA@X+@b@ +zBv8XDB<-<%GhY(Da}mze$90h@V`{ZGnW)XUWYW;ce)sFVOtHCb5SzDeIXDYIj*`i%OiWQuTrVUF< +z@Yww15@~K)NQyC;bzbKoQ~<1o6+t7Cd`CFTZDk3bDjQC^d8W$KBR}yeq3qH`U3eFw +z7uu*eth$z{^!QQ(*fh9TJ<8A|9q?ZBstWOowvVFDQWh&OVYA*UZkJ +zpZjIN4jhKCMShCX78KR>+v1aCq5g5?KsK!HK*YFrWQ^gvm$tO>S-mgqs$-PA-^m3`XK6cFdHyI}BZ;6i5GF4bKM1s!hdk!=2XT-p7K8%D28M$9mmWb{b^r +zK8nO_$Bg}Vl$GBcGr*v4(E=;3eb43VO?Na81sxuN?{kG}@ylm1!`L#(!TO$C#N;US +zFh^HBV@45cH}8Gd{d}|^J-xb^7c>q_(Lz4x-SqlbRwNKKyg*D)$ZnB@lThef#%qs+ +zoT*hX_3?uS_5x|i=ukYmOS>aJWRl&m`~J8KTdDjOeYGuJ_ueA4S%3lZxv{9gF{^8xvNFIV +zq_#e4X0y#SdN^HRvR-W3J>JMdWf!_xK)cH%PFmCaqGo66_p;K@EOp$e{L;pbyrtKJ +zw_7H^4zG-bR_SKLM+Bo!lz!tmR~W<M{<`dUMl-l%DyyivK6O{a9{eNClI5iavh~W6OKrTeI_8!hSn}(@s?hSI +zFKC44=(wX=Vc9=zsb-y-IHG!0Ig!|8H)3AXJ*`_WThEnuAbZRU41KeOb%0AWU!#ol +d5A3`Z2SJL6rEpG+2>kc}x9#L@GUtGVzX5+W%Q^r6 + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0004.png b/themes/bgrt/animation-0004.png +new file mode 100644 +index 0000000000000000000000000000000000000000..6038af8bd429a28118214dd308533e60107d531a +GIT binary patch +literal 1594 +zcmYLJdpOg39R6uTVQ%9@7wt)?7Te5a?aZZI3URO!B{nm&7_&_^Mr@TXqM}kW6FNl} +zlHA$qFzFB}HA;(e=|V?thn;q&bIx-<&-e3rpXYtw=ly>E`ke9i+Xc~DqXhr}#A~;E +zpbBBjy;4IpnMp}ADp*C|9l`_vZRm2V0oU_QRHO^bBben$jU@w!=y)0#ahOV@5lILp +zgM^?^SqOS8n--tQibk-a$uu$(!K72;;>e8u&?X|592XhE?E;Y)Ldk7p~|Db?Ac4DkpUzU`|q>MFMZ~#(pLUhg+W{v?J#;yNEK(W +z%(-H_q6dRliN?z!oK7AT?7ktP#q4%VGKu_M8E%$UBepVBw00w+-XovUs8hC8o!S63C +zZ9hN~Iet%N3Y9ajt!i(WExg^%9Q~cmM>BjE;oGtTv +z@B1qQJiV{CK6kdc|2cn;rB9E0OW<5rj`jW*j8<+nK>+K9 +z{x*lZRXz`%MUQ`W=Kc|tIn*_@T9WW}Ge$=zl`6Jxze9j>be&fSFBJniMn}6rLFG9eR*qvwUgi} +zHS{&gg0iDUa>}V1p3IxpS>ob49R_0L7GoDEKWF3SY4Qfe`SBw^^|MZWIaO9y?(cnu +zAk?hjrHDQI&NP)2L+FMawQdl3o_kBel&kd^l5)G#wHHfwoT$h;KM7j^6e}Gx6c5J( +zjulLCNn$Y{DpgxD$>!EdLg)q@jo9J(m(5mA?!`B*N=ysC#ix5_hBd9yy`R7EI7+I; +z3KEaVL*)G4(#e2vj%Wej`=b6yhJZS4;fTXCuKbIrZO6 +zviin@#zs52g=Td_e5LPU57$r|`u`8XSTLX-@B3DLpfRA$yQIU&M(q#&e +zZMc_k0*b+;Rh#X8JYZS<$vww8VQ(_Th4HfYAsd9k?tHHoir;o@i9{C+Xi_0f0XAg&g0u|2eU +zwb+7?wtcIhZf-47KO7G)^y`ymbIeobzWEo4!wR)hUzA1LKdTwiU!PYhlg)jMcFU`Y +z!754elp)ACymEW!{HT>vAISg0*1}^aVa`!Gy11v{chUCuo@!6^n&h!ocH9{g-P>s< +z3rg&6`g2YDMDazy$Px?Mcwv`58`5PNX>RI%-G|Mk-}h?Obm0}SIeVA78na3odcZuL +z`myn=B7ulhksI`6kbLi6cpRm}!hgFjTa5AgEvbHBTj!2KIU#n=)6 + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0005.png b/themes/bgrt/animation-0005.png +new file mode 100644 +index 0000000000000000000000000000000000000000..7a967678a0fcc44fc8238e53a5de9a88d0ff5336 +GIT binary patch +literal 1624 +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 +zJ{{0XKM!(vI2fE359h!9)U3tY +zm7#grc0QX%QC6u=u|$Xbe7#=$X2L8DiBf +z2St`ur?B$eL|v@T^A6N>+nd&d$Q8KtADa5%aH@1^GOi2SOY%6>vzNRvG!B{lO9+VQ +z6T5(;k{ZV-^COa?b|OK_zucFTSKsz#g&h0qyhYJ&`zq~Yqo=qpLEL1_+7w6CdOFr@ +zV#{KbHYS%skRp~AKjzV|=Z;){S&^%5gxF4I#Qb#cZ@leguDARM;Th2~)C5!aa{Bi5 +zz;_&Ub>gd2yP(JK*mxwL$PF2a{w=7rspIo&tGQ)m<%`Ud=fCc*AN4x6B2uT7N|%xv +zERTuOnoPiN^439vkFErn?ia_n?+@zs>b}UrY&YqvF-gv!)gj-&;LAkqwL{fc&w2d_ +z3CKLrw7j_wjQ&7MohnYQ_3dbO>m9{YCo;MA$HBf$A`^>2j@#3lfLxTHDX?$tTdj0_ +z&N%kS)^N&uQnS~_g&xsOUMR2Qw$Q@+=v+9qRD=u^u#DTBN*}juE}}kG&c%PG=;ZTP +z1MWOASgn*6POdsXn>L<4dp+%DVi~DB@f{ad+37vmf%q7+k)7R`oK^l7`}0nbD`wkl +zmi^oN$d8jI=)m2@P8quSd4b!ORpdS7557C$CV6@DZjMAD+;vZqbv#??z9T86cY6&u +nBWE^xSySxaK8cekt4@HAzE>A1gVN#VdkMrv?Tc*LO&0$fmG<3V + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0007.png b/themes/bgrt/animation-0007.png +new file mode 100644 +index 0000000000000000000000000000000000000000..d2ccac920882325a265fe11365dcf170461cefb7 +GIT binary patch +literal 1666 +zcmYLJc~H~m7X1-IkTqCjNnA*wPpVOVSt=nRC`dpML1cHJX(A*L$R-K3p@1Z*C|i+N +zl_Ca$by_V;Ky<1g5*0!AO$1wtkx-FENMwtE(qQ}M&3yMeGv}N+_uhYQc5u)k3sa;i +z000*Lev}YBqBd$1O#cf~Qy27L!uLBa001-VjWPf(U$NJd2ZTORLSGh}0e}fS4g*YN +zaX9o?P>>u8#QiKVhFoD5g2tWa!#pN=R|A#Io*bHvm2}u`JA7#H0MWG8B +z01kt71F={Theu(tq0u41msMap*!8kBh=%n0x^Wu9oNx)*FTp +z{e+C<|Mzsk5cY?5jOpc1K8A~8*$e?Hl+NMn5y0ZyGA`Mp0l*09Pw@(iGC6Z8Fn7eq +z>g=hO!NoK7*}1SUU?x|c+kC<_=QB~MeNu_B7IoDa%rGdRlA&+|_zsE{)ax-Qm+P|R +z=cUNcToS{~vs;Sp%ra$*qQn)#0N#D4QPbqq)UVY=)wAp7FzJK-rKP3+e&&#~XFg+Q +z@j}HPbJl-S6+_u+W8Pl!lUr8u9XrlxdsAA6m(t?;<|gnsLbm7rIN|);zJyy3SMpV^ +zd?3cSTZ*Syq*(-6o_&-*`oVFn+v&B%FyExL!u(X`A>|ty{Em5yX=U@KH8b;ZGmWb* +z6B>k{^`jI&UF(EdO?*#7cx*plX=yM)YPhO}VUC)-vbLo{9gY=N&A2O$oX<5xCCSL9 +zI}E>lK$Pz({>lgp2lJk9Z;CJ6W}pxYbjZo0I24Nx?3rc0VQH*-U)uJT+YCe7t6739 +zvwl(qD7Bl(7j@-~Uax;LvX;TO)7e}X5H)#w6>BakX2jz@V7;L7avRw{yyyqf1!oCV +z`B0`3|4gf!TA$h04wCXs;8y-_Uh@uL_|-MLm_5Ii7|zg!+Fo?4$N&Ho{ +zZ}pI}gm#~>pv5!>6RxwZz9Y}Q=Zr~jT6T^RG`1yw7+X)g_2`P*w+*>)OcS6O&_yF6 +z2klZaaJ_-b3dXw>F5F&uR&}K8WL}}&-Dipp?A1qxm)JqAL50&SxzF>hYJK?%&#otQ4v-KRxszyOumD +zkn)1DZS~kj?qcRvPtrnK$nFB=;hDa>z9BsJ&)szqrf-~+Q*IeYYi7T+$q6))L*81e +z;HrJ?kv*9aRi0O{;MDdz`ZWR&NjO45;6D1axU5&Z>E2JJO*YynE-be+vN`myZ#u2< +zNLOWG)$iUB3Y=b-)WWw(*Wp$0;;1CLs3(^2GL^i7A6u2&6w*V-h@#O}+1 +z4U)>s`J!|VxWzna04^o_l1S!hHt87_50|~1VX?nDivyF&VjwXCH|CSO6aHe7%0%IZ +z4}3}hry#YaFAPiiEP5agg-zmu{zV#yi7t4e?!V!6?KExL0}))sS&E21NOVb;oHW|z +zU3Fm@v&{Q#Yl9eps0o^W)ckt+AkNK@Y6z3%C@+24Xc#0MT@9=K{1`DAEz}`&o1a8~ +zU6v?~GWdNmxVX@LNXw<&Cfl|#M;10CkGAGJmwkt5Eq2D)HPD2#yUSvwB0HYc3-!j2y|4-_p934jVY6ud*F*2w80;^NsE3|oh>?7wW +zqdgaWs3o`GJ9ezZ&0Ngey+ztt_cd0ua4Wa^rsg@QK3)H3{q#(AScLwD0{%Whlt +F$=_zH?q>i1 + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0008.png b/themes/bgrt/animation-0008.png +new file mode 100644 +index 0000000000000000000000000000000000000000..85849c8f8bf3d6f785f39567b2e58f6af9c03102 +GIT binary patch +literal 1634 +zcmYLJc~p~k7X88pVG+WjRF)v&w3HT=ENmevBy7skQ~^;cNCG4fvnLXOyJ-EYDl!$nkdEqaisbQg34-OLfbj>&hNc@&b{~C-}~#G+)dr- +z;^gB50Dw!tpq}t$8w7Tn2!{k^X+fI)4SzsyY0*iio}@ +z67k(aUn}Rn#>H7F5gqsoLU6dyH@AuDR?%}!OwVWV7yzBe;?f}&pN9#>F$H3b>xA5D +zSifdSvu?-`{r}GpTtrgFGGvuK{tPe8=P<;WbUIgHMF3AAO6$Eg1Ay&PQamMNzhg!H +zwojY(ZaDGei;`N8aD0us3&kCu%=tL%LT%;+v#Z|0Nws3PHQ{)eypHC5HEjcZ%k_a+ +zoAE&8_wE<(DDe&6K~WPg;m$|=-xvRL-EJDbcJE;MLv;mHXe~OM&8B?enowVn)1nX+ +zw=_*=_B5|AJ@X@4CfN&NA4`nh9f3s`j0FVmlKJzaw~XN(^&+$;{RaYibZ7-2I#1aj +zk@@xpwj=)q7M>i>L$~`k=2Sg0$jb~VMC0JBR|yi0*lc1dUozSq4})No9aWCq1*4zs +zrYt5u)Nugel+$71*n32jb1xZEsoO|u&n+_NQ(&>D1f(9_8!QSxY|yz;w5~@l5APn- +z9V_oc-d^-06Uq|2x0pe)CVYBIdC78k{&oVa-W)8u8 +zn|l|FQAUuT=6L380QRR%bwkjruoBy|GHr3uKw6`sY8A{zWHQfrXsVs30$*InO(J}* +zZFTSf?B|xcTLnQah-{FVXECdhb9xLUbtNL5v!$u;z6f4$zx*`4vf`lvVT&@bY1nob +z(o5eD|EN5=>eh(Zha-$>({e3NDDc3%jUeW`Hn(4DR!YHBA0>?zRa@NKZRWtvk?K1s +zL46M<6*di%h2@g$9^Iip>alx$Kht)qPwzk};1!yqk^@`%O;}p4%dQ}wr415!YvDBs +z&o@iEsYX15TJYN6m#podSvh{~t*!vrr{2O-j);3}Lgcx8s{N$$Q{?38lWIxkRj)4st;)ZN#XEGc-N`nfE(Z`qVOMQ1NzPCW+E+tGu=yGhUz%MTbo&M<%Nm`IVIZWt(+ +z>sLND<5hCwded7bliugp>?#6ukJhoth8S98`$tcg+OCpnJ!({!gg~5KGKREmohH-1 +z5{&uaz{JJzGtZ4m&Lo$V=x?9O%WBj^wMj$f73>J@X0W7q*Vgnik#jnONsk(Hh7*a +zshN{?eT$q(U6AT+xJ#3q4wPyJEt4X}sHk6yX9P)=I;_^szC_hZK +zXMU_O*mMQ`kK~ul>AGeq)U&baYHjm~_RZUuJVqX>Cg6Mlhqgr*9g$O4JN@seN|%XY +Vb9~PAKI@GHk`k!#t+6!ue*vul*6aWP + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0009.png b/themes/bgrt/animation-0009.png +new file mode 100644 +index 0000000000000000000000000000000000000000..3e79b9bcdd7c337bb0de3db1fa15ea8c05e38917 +GIT binary patch +literal 1640 +zcmYL}dsNbA9L9eLh=N#J8eUp7yW8R?lp%RfysTy^Y8F_KA+i7ou)JZSmANu=X=aDa +zHBHOXRJxF+P^VNhGrO46)FQJ68q*ZaNyA;v&UwG@=bYzx&hvi%dULji2BDFTNB{uP +zA;AIRCSvEt!rXKVQ&K*gV95{ODFgu2g1LbJ=cO2v=p!OWivrmkCV-1i;4*PPvbkJF +zEKVqh#j)5T9G{cSO-K~Q<3#aHE>nmT^4UBdQ}7?x?d33e`}Sr&hMB4`b5#Kh5fi|J +zZbY1$8xBvvy19`yc#uGR0(acel$k%5iC}Y?00@%)Jsxi{)jE@B@%JhM#+>O9*yNXM +z(ro6m%_d2}0RF)`5G4HBMWmQayE&5*%j7Wu29M2Uh}a1{ECGz;3$gRmnWn&kxj?vS +zL#E*WH`jq1y(#T)O}6dd<;k%erVvYEaQP+zZg^t)S&S)>52=;~5+A8r!vG!3$3s)znr{6Cnr~4w6k4jh7+Bl)eh7N<;1r&*qF7+bBkZ?m5A?>XQe)6mj|zLBaF5Bc#e`mNFt +zMG8kh+PBB6PDlmb%PKEkuD=a`){gN~y;cvwl3>n|LmA8I+c!c!Iz~g6WYiPo7E6{7 +zd&|HKVi7b~V{p*T2U9<~mr}Cd2l7!MCZsn}w;^efwESCYZF_nE%%j?OVcT!r-iQ(e +z2|U-VaMLZ((Z)MgyPs~2wvQRsd-0Li)cdP_LVUXK14LQlO69L~I45J@EN*|+fmdUY +z&it9-M-Ny8x$zMF5cF?(}3}#F=^4|?4c1s{lmZ13&Cj|v9MRaO&X)YzRmg#1!R^B`3-s83f +z{-Pd6lyZiGZ?l^u!-vf7R5tYiWIxm-y_816XC|U@6FllhDBVwLJ#A)V +z-vG#v5%V`kzFN4ex2qp3ziIh^_N$ZqJfe`H&mJyZQ`i`%h@Ve_dPiAH%Y+Be%stn$ +z)MO3pL$T()V#bLxxC?5d%_ZW6MJ +zZ?J}B-*4aB%X#ZNu<6i6f(Y>={=znKWqt9c#8;|G0wQi~;xPQx=4@T1U35WtV7SES +z2@&W$b)!4JJF=x&vQ1EP>;`!Pfru-~rjD4apYJLZuXbo_P)M)zD1#Kq2HQqRlNlLS +zr>>ctW|uV`tGG8KT_bK5GAml-i&!40PiA$hP@@g~XpQWr9i`SW-!1gt&k<9niMt@U +zzLv;N=gt%Ij+9a&p)&n?=9kvA95k+u7SSAsHM{dwllEDAcmO(vR;fJc=dXKpYc7(&P9M#qz^ih?O +zM}}yC<1J(}&}N)PYAdqX+qi{?xAxJUlf_#|vhU5QG$&H%*;&U6mp+ +z#`rL}ZFGx%YQ>^AaZGsHA*bW1Z7&U@H@ryeGtNWr_;J;x#>#lt&bm|L;o*BbhQ|5I +zn<|A?dmFc`uk=jBlf0rqE7k*FsT~*7MRyH#5$=H)&g5qA%yvbE?RG77q0&L`rR*&0 +z_T>F<=&0nd1cD|E{#+%Y?TWZyyw;Oft-nOL`Bd|~*e85VZGB&&RBRQB-a6dda+%iq +cdAHU$Pk2Da5jTWPn|?|lgd7@B?N87A3!Dev#Q*>R + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0010.png b/themes/bgrt/animation-0010.png +new file mode 100644 +index 0000000000000000000000000000000000000000..1f64875a17c6ac9bea646cbfc133dfe5013ea639 +GIT binary patch +literal 1613 +zcmYLKdpOg39R9JHJ1fbxTFG?X)n&+S5lbae%w-K*tah^vEeb2QBbQSysR`9_=|VMK +zR%gdlC!;Va*AmH*R90jpIaAMh&gc1lKJW9q@B6&p&wrn+-MhT?bwZaWJ(3vY#$;Q0CbHOTMalXG*yvqJg;EhHX5A@AY)hzD)JzW!H9@Laye1R +zXc`a6rt=xBI9?2r7ei%GxkxUX#$-}C{~;ohPGwRe1+8FJl<8uWX9SN5U{Gir5{*V; +zurM^*$DnhCQkcsht1+ +zM4;>mfpa{Sy!2-{KZ;J}!U7@~Y!w1%4DMKw=|%tmj}SaP0)w^Figsp)dqLBq;TJz! +zT`(Fpky#5e%OjUV!n8kyW!*LWp^=K-4999WkVsbB6G}h;mKHazyl9ytJ1G=Pp70!3vp~YH}he`t4 +zGQeLudDFMaN6aoNxk^Wc`eDdRZTl280{qPp3!z$5<9gwD$SUg**LvF&Trnue)sUnf +zOMk2ce2;40y&rqL&v0!!LZECMy>ms&BX?syAPccUf=XX&@)U+=)O?R=nVxLhQmp55 +zX-zjV89bnIZszQ`-?O}WTfkuR?4iN+3h<1sskFfzbC+^;vJ{Rr9en`9-yShiEHCUi +ziF&Db**lz4^m!dl&p_RGR#PqycOS)9J-F<1zCSn6tAv886GR2Z?Z+tHL-Js1utakl +z-F(>r25euW#2^`PQwtpu_84T?rUpfR*b4s&nK2MPulix$;0V%s`XP>7ma`>*SrQj- +zE>v$wVVry_Hi~}l3gJ=au67mtg;&6p2%Di>o}J(fe?`vtcRwg*4k>MVR|*Q99h6zz +z9vbc7TOx~If4T(kfUGh4sezO85L`)nPl#@kL2 +zqKG60*(|IK^Sct9N6JZT|Hkc>6Uif$Z>4S3_*)G>Y;!b+3<2M|$wPyfnHNWOIqY!P#O<&$6z4y6nJjxPt6Za4`ji&CfFE?AI)h%0Rr3>GrV1Z`=o* +z6Us!58rjRIAikk}r?W_{rEz{dpqDkreBRPJ(ENJvLv(+>uMAS94Zj(9LPA`r);HGN +zLTZtiKRD1cdcZg--PNj_v)@}or@`79#}5r9xD5q7`zLQnS4Oqhu(UT(vjg_hVqPMx +z8%BYgd@5swN1G%In|(IgtuBSYLsPr-VlM6c#(!&OdHhE5vGnNrA?TT+(-+e!z-vr4 +z*RxbSD|FD?OU&JE+#F6R6wl$FI61XENvzAy<`Agl%IN`?0Eus!{YVzybX?(?_Uw5) +zMLT`+v#8nQFp-wrmmq!0$SOobX`0Rt{igBt32ze5&ELCV3tgQS?edE2C|Nbuw5`tV +zR>%1Bdz%zZIsR#t+c?w7U*6Gd?zP;^omVUXU4IBqxH=Cl-Uoo-wac>>PZs>1eYOb#!Pi +zbZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_VuH;C0000ObVXQnL}7Gg05UK!I4?0V +zFETSAF)=zdIXW;hZ*B4#0000GbVXQnRB3Hx05C8*FfckWFgh_Y_1G7K00008bVXQn +zMsi_oWdJcTQGWRT0000HbVXQnLt$-Ya$x{NVQpn{VJdbW>wx +zZe;*rZfR{{bZKvHATuy#aC0CJiliLMUe=XYJNLD%eqvkgs!jIWp2pcw +zu7<9q=zq9bUIZ@y*ZaV3unXJ;-k%A61SsqrM^NJ|qysiPC%DDbYe_M}{=w%(v7CEo(sGq{ul-2Vi; +zM<;HosAN0a9hJ;%>r3Ey@F4Jz_!pRjL#R{FTDAKoAv|j`lCsIjPk@tjb$2Rf-DoWv +zNr2sF!E3+(I+J?^+rWTM{CVKi{|)TceqgtbfhT~8w&LKD-FOFl3qCWZ@#Jd}TmYRN +z0SWFwEBFf->>~IQ{0e5AopL6D&aih7ybaz0l8J=u(7V`w$GP9!H1@>63Icitq=J8t +zt=fvk7vKzbSHX539C^nk{1P@FfRBI)kICX*HI{LuNfz9X)j!vE=YhR{6Y#z-fOFV- +z1w;Eh8;V2r?AC|iQ{eeZ4(*%$3u{TFeHy9U08Y71ynidd48EZ{hiwS1Tq%XPhppA0 +z0=P=HLpAoj-KCZYTjxS6X$ZU_4rm#vbj@7?$r)z{5n@y}x{57C8o +z{q0ZJufv^o$<~>Sl{j!)38?cPU`Jr=T5@v8*U$v!m+j7+{4_V58<%Yc$i_(*e(zQ< +znM6wj<93$`ta2u4H{fooypv_8UrLy4PFCdJ5W#h02@QFt~9AzIaif__fEaTml=?+ +z>ny=pH_}0pQdjjoK_~ka;MG>r=e3+^PcaKCyp6(yeCz)J8k(&?v38@q0q~`iio!8E +z1df4wkH!4tpRmhw5yw4S*Ct>Gq+E?pv7e`{yb{|~&fY>7To*cy{A5{2yohk!g??Hf +z1@9ShYHgXXpK~DhYL1|@1OB_UW3W=S2`U49Y=C;jEZe7f8a}+JV*~$%GN5x1GN5Z) +zxt~OK5nwoH&?TMmtGWO()QF9K;P1Iw#Nf!xQF!1A@SfE9E*Sh8@VCN;%Cj +zOW+1Nhr5w>;9dezSQ)YhodXBaYf<*Fa9B;`4hd}6pksg0VcRI{@P#YTLPc+(KSEY* +zh2Fo3Bq6^HAE==k)Po0jbx-U2jNzkPf=CK4(ug?e74yi&bsk`-H3nn +zEqb!4ig + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0012.png b/themes/bgrt/animation-0012.png +new file mode 100644 +index 0000000000000000000000000000000000000000..cdefdc78205460aac77e50eed3ac35b2f2c15456 +GIT binary patch +literal 1619 +zcmYLJdoCghqC)<+b5c0uM^X(cHsG2}MetYtU0XllZuI3l^E3$5ExE~T5K +z%ch%^FG)7jgpbBhs0?4@_F$3m5r|ZXTW}43qxd0`x3j^z5b5$p8xF`Mb~<+WV~@ptkhaDaiy-L}SFMH*g?lxX5h= +zsbm818=O%nm$`Oq2q>B^iXlWYgA5QDR62n}Wik*hs00=pVKA5l8jKeWd%z3H$^Y+k +zM!EZjv<`r>(XVhWkw#`CLI`vgh~Q>ydYQQs06@nAaGUmq>tvS&GD|~Eaz^xmZ(c6N +zX=T~w+l`8_d<_>{hRq@!~^nAwKC=n*M}dA +z^L>3bt@t&`@SGT*_sKiL>7i$Chqo=WDTTG)Gc +zY}XBo68jWiBm5?9h!;tupOQKqo4J~Onzar +z+hlq82QQ*uM-LR+i4EQG!Sy(-E~sjkrqlZRR6l0Hma~Jix@%^7{Ct<#wCDCk_+Rxq +zUsQ2wDdT*s79}&+8{+9YYgRvhUL>#|ys%RVMU@xq@ayO`KO-`IbnZ>Jdt?DZ2f;Ix +zrO0b;hr-3J36SrpqRnwzw0PEsHofByXJF_Ox1{332DQc$Kk}c+TD8hXP%@7=)0Ai1 +z75I$kS^Xmh=^9>1II@-+azP89k=k-~%7KgAF&aIo*Juzqyh4v=1oiRhG0m_HM%^*zkQAhcveAX4zO_|N16-$?2T~ +zUDL^hZZg+zlPzZC^tP^P^~3I)Hmvcvs%C}LwdLd|mNw5A +zdn?+6FPf^K)=Q|u2lBkSUhP*B>HIQlNggr(aS=roWgV#<>z@71MtI7l*HZQIV)}R$ +zX=5>_an_U;UbN{NwB|@#iD``54Yf@EJoC#GwMEguTQYCvWkaDs8suJ=Zr_T%64M>^ +z6lxtA2#5`pt%6mW@~>Oz&QohmYtWFE^)?A22~A)BkP$LJSp9xmn0wgRwYvus +zMn>O#$@{t;=(6bHwY68Q?#s4#&gLzcoljG~eV}W<>TJd>S(5vY>K&L$$&X6G%m_qm +zDX&Jc@_i)(2Qb-01NJ~^c&Ek8vH|Knre4e|XSl=d{M&eV;YCtmu%Z}{MRh{JRv +zN38zLrBKSb+C+uU1s6QY_tQj1NK&x$(d5^)(uR`)^ql3(Oy*;fs`BiyUAKkv{>@Px +zG2848v?BQrL^QQZ1!vu((^UFv?y4N&vRxe)<6CV1{Cn<11wz*8Tw2p!%!*?2=Y-1L +z%6;YgxSA$E2i!W!`8y#pYn#AR{GiS}6kw?pe|Y^{bclU=etoRHVyBV}k~S0+3w)Q>(SlJ>DH +z%JXaL4w}+)YEO17!8cuhBFssDdJA$;2*rEc6_`2boN6C;GV3*U2ut_l35<~m5awl< +zpV}doYYQT*_-DGDXAj2@9A5e;`uUrh+~RwEUWBp1&pP^SkI;%eM!|v&GZH4rgP8-n +zQo?t1F|6;rZS<)r?5W4sqtzG1HO_Mj6!=T?NImR{9z$GD*t_ZC(27ZJo`2h&-D^!M +zrCxcSW7qSgN{W@$oq#(ZFeZByYhIuz>epAQqB*76g~HkejW$xXLG30=5L< +JZu-S#{R<=3;bi~- + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0013.png b/themes/bgrt/animation-0013.png +new file mode 100644 +index 0000000000000000000000000000000000000000..de5aa6ec0cd0e46ab5e254855ce0ae1f01bbe6e8 +GIT binary patch +literal 1617 +zcmYLJc~sJA6#cQJ;hI^vFPW($C0mP7(uNs{=7dvJYN3!Dn}C?ODHk!%)#j^J@v=%`2zhY^Mr +z3c}Fgks>so9nay#iXzaW2o{GWL<{+mTrNxSA9{qcSzKml+H*Jt|JgJI3DM-HRxHg;0cW6umB8(`14`$HeKQhP+RUiZS228zoUL|Pb&%K{kONDf03$>TcWF-Q19N7I2c&|tn`*aL3J +z68!(C2WCAb@S6yfm;MNk4`Z{0jx+{`40<0Q^!oqnlK(v3lK|!nFjJeh{2J_65GOsv| +z^Nl1vFQvj-CTgFngg}f>Z0ls|E*HMp8r~9ac8Z-H#^-9jTVJ#t_>Um!{ +z5BWT5HmT3A-EtU4G7N#YsG1L#L2Klu)YPg5qx&%JFPhym<=Z+a>)O~*guOo><%KBH +z(@*KNhY%I8=~P6m!o(gb9yFLS(Czf8`TO)2qd(s1;8FF)tDVzzCZ|##s8;X|ZQ-Mo +zgw$ZUjd<9BkGue}dHA`>(WLXK>wMO6&E6OT`W#N~)arf=CYd!H(f=w(iMMUc!6Lq> +z&ncAdbPE3+4%xj5B4xjFhY_PuiAFt9b_esOT&|qNl&Ts{6Sfe?;gwUbd#+3?-KA?b +zo+v7CLda*A$pts7JJpH9_C4?q9;usCS}A&>Ks4m$6!(1Y@dR~wgRw`pQt{Be1e4E# +zp#pm(=4ZYe-s&NXn0LFC)|i>Kr%I`X4oU{!x&boz)=SQ8FL*4|gljB)yOZP``=L|N +zzqnWR@~C7>jZK;wICwv{OPZT%ch7_bIRr&tUhm>Mn|ldzeNXih3bIZ1B}a+0>ATxE +zH3v`ZCayua#&l;#o2wq(Ni=9Hli5n+wjUD@#)h`a@CJDo3U`P#Ci1A9Ps72b%WE`4 +zN8F^P54*^lVJ@_^vht($$$<%1Di>qSF-PCCplZH0R#D+8dubu4=--!N+cK@R6t7_V +zoQ~&Jqv9@)9;I+$mvZv7$U|3){nB?Kx}NsZEPC;)8#mPXa(%ygJxgw_?1NNo&5z?Q +zwO?voh7Lp(qFm*L7f0M$5D}r*4fD)8*hWXbNqe=c`YI5}mKe2gFh=l&`ss89_U@l2 +zwyvA9B24J6R-xilBy%bd@6Z=JCAZ6Imz;moc1l{V%~Ft<^6eTuj8*^bH*OXYA$cQr +znYlSZelLWsTL@#xt8P9ha{9aihf0@BG-fru>lnMbJ*l`aZ)yIs=YMIBa +zj(S|gy+iGW2pgYi(oyrQn~K^hWvFk{KvzLZQKHMNbHefL-zV7p@ONT;YKkVANdm^8 +z^)GVTXE)KGZcsiy%lMeKyZy;rba;Sier&w)_^PyLK{o>1iYDFZi^L2navDn?+i(Ed +zRzVa_AwqHDEpEK*qzKt=_{y^>dtDfS#^M>lirPY~)v8NF +zJDMj@P5ineiN)RRR^tTin&Ojwbyh7go(Z$g|2Vc++KrA((&m>n-`AUOb|R2`!UrA9 +z`pl{)kO#ZdFE_gl*pk>?Q*A#0)KJ0FENS+IU%}0wN7hpEd$~!AEf_61HReQhT +z+u7;s`tLNJA4*U^CAK6ZE~`J4gnZy+LNffU2#KCJ-3|*9Z|u8huI};dvT1F>tzS#e +zb+YX2>&J(hOH6seL(3auj4CfR>JNu$>w0cv+8%rR9nvzA(M#`>n1Lq|pm_U}%eNg) +F`xj=u(4+tW + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0014.png b/themes/bgrt/animation-0014.png +new file mode 100644 +index 0000000000000000000000000000000000000000..a0199041fce991f918eac5776b9baf7a1cf10287 +GIT binary patch +literal 1618 +zcmYL}doj2cn&PqX`r$89;?c(#WU?3XK*_La~@6 +zR2U^1#h`L%kulNXsOWGqjm$!^7!*34%>0kY5Gt7-8p3-ER#d^)s~m%)$$%9aV~fII +zP*zw327|Y@!=tStY2OSK8Ljn`hfkdORE4{W}3R7?0^dgbzWFVMMp#?`%BIyV$`YeNm(462Y0y^sfPsN60 +z=KpUZ(KZfVuRkhm?SIQTBr2JO@Cv3e6a+9JJRyJX#R(z+@& +z5_!n83qybai3)}v6?Q-Tg~rK_inZ65itaRAPjt-KaI(W(IC2HPlaSE~O-+B3JI9%x +zS$NPR!uWRW^9cwDcv|`E)0?w3L&IZZWA}=UQjs(H3+(AS*=l?J(;3=*R9=UN`NGx8 +zlG&=^BQ`lbQXgT+6Zq7JNx6;m#Fw&3urIlH2FlQ%NfIPT5Q7l*WwjLzWWpZp#vw>^ +z!o_919}q?ZL9!f_6n`j7iE;pa{gOZx%FUAN4Hj1)@Ts(L=cd)<9^@tItU&8~cp^cw +z0NJS@q(7)q)J->EgCXNJg__Z!HotsPo4P98E(^|)I7arc=N4N}%Z%la*oLU8b`9e2 +z+e6x34iE>`k@jI18&~H(3C^TJY_FLQyqb~3n;QBzDs7~jwZ{ZOT;Cw?R;x8D2Z9XM +zGW`cW8oW0uvovWC=7W#NFUK#KFSNiy`|!6*r;_U;{Y>u_&$@n^2$-yCACZwNOZD>l +zf-e|-9<_k6Yr62bBFmr+{wk{0hop|NF_44Zr>_xnl@IVxSj~*_drG=zSB!d#GVOQU +zBnx5BhZZ%619^RQqpN?+=7CX4T)T93`_P>DB5dsA=n3^ojZooVv=)f(6TLe>aq>8> +z^mesR;Q3RsBegCjt^9ch2J{Sg3H!{y&0|t$adAh$9m7$Tq^(Al*IZwu$}WfQ)L)iF +zxi_su(M$$oox+5i!tG5`>tUh}p16CyZA&7-;O-UiNJPQ~(TV3NtbLxh45`OGyDfXsodz)(A{J?T53(mcMVKvT0ZiZ_GmiTaz9i+Qsla$cJ +z!4gh>T{Rf(HyotC?5U_rJ~F~2AYIMhcjd=?c0K4l^1*aMR36S{3IuNDH@Co>&8l;} +zo_)vGW^)RUHI?>&7arF3+}E8}r$U&fXPWu%3g{0lMQZO^QRtX;TgHP~#J@ho8G``@&t^mgFSgn05iF8WBm|+1^p}~iq;to{o~?C^gThXEkmQSx +z!2ZSjPWe(@o3Qb=+c>0Z9C-6q3jV2K51LID2DE}4K!H=Sm03O|)Ap+0${)Be20Z)s +zo29f-n>S95^NtH|>0T@RoZUS^dKieL*ows+Yl9QzZe<|V%&IS(fuWpVrs=df_|(DH +zyUmP+Q+3wW(>1eYOb#!Pi +zbZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_VuH;C0000ObVXQnL}7Gg05UK!I4?0V +zFETSAF)=zdIXW;hZ*B4#0000GbVXQnRB3Hx05C8*FfckWFgh_c^0m{N00008bVXQn +zMsi_oWdJcXRuequ0000HbVXQnLt$-Ya$x{NVQpn{VJdbW>wx +zZe;*rZfR{{bZKvHATuy#aC0CJUtc+2^RT +zlCSpOYp=a7-(KgOn$PF+*>bs@Db6F&W!;axoqBD1Ke6rYdYkA=r*Ra{dqdYs_Wy5B +zyW`{I`C_qHRimOw&SmWw-Bz!3o?z3tYYyGSa3{D2oC2S>UzF>}+5{5Z5m@1U;7M>l +zxCIzg7WTWf3A(4;0saA(!G~ZMMvmf_^+-r=%s>pO`erO21CIiox|V9Gw_2$;3HMCE +zWKHe>n2b8@J^&ws17a=1hH;d&39u=p20jf8q@-%+p1v3O*l4RbH}KuSB*KLHPr(J4 +zuz-0Y)npCgC9+_&obu55eOA +zeTi$5kP+G120K6oJtLbkC>!V66IO8zRD$v@CT1eMUm5U@z4PyIZbHM|Iq#(}1Y6I2 +z1bziF;gy<<3_lJ|X)h`PCx{tpB;}4)Vo+&4=qt`)^d;`~`_7RoU>A5D25?kl;WP!$ +zwOcgf+Tq7)y)Q@U_eHbs{k9}4P|i4t>|xu_P5ujDVJ4toufy@A*Tp#7>JDpU)f&jm +zbzs(M!V1Q^BuThfmxKYR((i(S^eOBG6Y~ivsVk5URtDENm1~eDbY9gZ;eK>JO{fms +z2rLW65+<=|F;_i+LNS=sn~ZZawV5i(1n8?x;Ot>LNDJVbFn6Cli`?Vv>I&30x@5rM +zcCJ|})j&GarVo^Pn9x|A>!y?P7l30g7WRG44X@&6;bxu$GfW@o#J!D@gfe3I2zVY? +zR4=mX6H+oXAsPA2mIXW2D=?@pArmROl65LYKdoAof6aXEUj=?krt&R{pH%9n?x%C; +zW2gA?uwoMs8~^XQ=Xu2h3GV0kHSn@3(2E6b1B)#CX@gj~Zz~NeFiuC*8zf9%Gt67l +zJ&fvga1K=SGDghuEAUy~0d5QlSVe0_v#XL=kAi!kW6Px#OY?K!EO-g{MVwZSYW4?s +ztBtNph6JptCE*_j_4PkatL$a&s9>L0q;(O$4@2D +zS2mqhp5 +z5^$Y84`e-^uS+;KIpdh1&LgX`S;fh)(HO}(4wKL(eeB$i?Yh7@|1X?Nlva;RVp{+J +N002ovPDHLkV1n9E(TV^7 + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0016.png b/themes/bgrt/animation-0016.png +new file mode 100644 +index 0000000000000000000000000000000000000000..f72a577c023379bf99ea2b7fb77fba843bc9e37c +GIT binary patch +literal 1605 +zcmYL}c~FvD7{)(EL=BTPP0Es7D$`iR%mvd*NVBY@92%E_4krKcWw_!5I4Cv>rWemE~fUFO3fZ&RCoq +z28Y8q<54)A$7XjAtTUH0w^ExyEM^WcIUs<=di*{(S5|WxO6wW?yGlGwYvNpcS8~F% +z+OkD$hgOQG0l$I9V)5#yZe*=#zG#voz!(sq#V|QEK9d`R!eb+2c_@>2Y1)9Y%|J;s4Yb6wW5oqM~`h35r6d<5des}5W%mT%Azd|Fg?m=oetf1lpp{N%9I@?C)!e+d` +z5b9BN^MtI4nrI?BFT1YBpALQ^INSuE!cl!vbkb`w3sMb3^T@5tW*%%GL+vsnIusK4 +zaDbio3+fFK2v)6sL3UOITXwKyKD*nal?o$dRn*AXAkFlaw7zgTsnRyUvB)=jjjQTL +ze;DksCi9(@lPK>sWCW6|>{4ad%@g{^)b$yvR;mJUDti=pzQcHQJv;2%T!Ry{(xu-~ +zhPrvSwHa2YFlr%q(abZ7?Kf;H(32KbYE;k6UUf_2B%afKX7^tPe1~EM)8sV)KT07{ +zcUPE;%-X|?TBM&8C-YYLFU9N;C;jN#c;ds==+KCtOR_L#PumU-&ki$QSueRXGkLYF +zJ@`Qg*WQ9GNrw*=M(qtN9ymEIdQsKb0MqAZZ#?LEZy+_OYJ#zfBnVpgT+~9JxHI0< +zTXP2?8RN1;4o!=&IL*(DGnYrv-7gudTL_UC>d}VcRJUH`xPvN`(fMV9k$L0&sjkui +zlW{5QZCQA#^U`f3HVGkr1!REmfCa)Q7>Z%X;E#IMN;{{6cAlh&i%3Ffs94Pe33Kcsz_?HN-C{7Fb0!6aNS&&PAaiQ7M-z;!jza5?;<@SXd{O|@4pYK~y$CG#b1 +z#_069k=;EDw)+;0J-ozwhK`q1-#b1T`Cz}Pi8!lH-=vz}IyS6ZAWNFq&zVfeRNou2 +zw*}6XkG?+Rmt3HyQ}&GxE1^x5|FlVfQoera-v7c;<3;kG+(81?c2y8Nn&j>orfrZ? +z*w=xm!5X#=Da=0Q{47hJbL#VE-KV>V)@D8q<;flP0<&hLKwCO1i`(W%%`uu6I+T82 +zqjUKVax;Mlr>;<2Hza=@nA7==n2VdGmDN)wL +z!Y#O(09n2j(56|yA4Y7k&-VH#ZIw62oLfe$`Ky9{`!+tx3Rb=97e4{*`f=;udt3Te +vvk7-xn%>0@ZOgjY+gP$!e635U2Gu4#kk=Mgf0fpzp2i)U6giQ + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0017.png b/themes/bgrt/animation-0017.png +new file mode 100644 +index 0000000000000000000000000000000000000000..02926e7137b875d477182dacbf0a3f457bd34ac1 +GIT binary patch +literal 1581 +zcmYLJc~p{l6#Ya&DKXS6k6T1m<_1VANn>ibW@(1Gz&;09bCi)H*;(sX0V$1AQYwKPHO-;8M731}>G!X44XJ +z{PaXzG84q{SUGHN2AF~aQy6RpAIIl0IUGj%f9OnSF*y6_1yA*$DD$N#3JqicE_eb7 +zMeLtj~|cVZq;(D3DOL{uaZuKM1p&>b!-R3 +z8830$Au62)`~YV>o;cr4+5?GZOX8kH28RLAI7~JTWO6weB0h=7$E+ABfDEQfhA?PD +zM*9DMI^*2}sb4`zHu)Z&lgMK5F?(oi9)tkFg(N&@?f?LK4+1IP)JWt>MaM6DebMl# +zi#la?_SgM*zH+%D%-t_mI=wCP+6K<%-Q~-pXxM;)VO?K;$kh__q+|=s%(rns0>B@MxDx<>XxrTDn7Nt +zKw|M*wJMcI&^lX7V%ws)p=Vxw^g`{Cs6r53`Wcn-dKp)w>dPh@9~hN+!N4y#{WAUA +zCgY)7ZH=VKuz`=(Wv8C%iuN~@#N=*;aiu+iv>~Z+fZ=q;TCK}vZ6SSwe!KO~i#^DX +zHSI#u@K~+t!(BnvV0c={`9b8U?M=(~@A9XDq`6gRlYbh^Hrt7b-euL7bgImt#wkWT +zsayE4u81nY^1^X?oq-RZh!ql|=tk*+U-0xQVKU-+!VMoJuiHMjet$!;scdMp`T4uR +z(?{>(5HKlh`}hf4P#rc!>l`Wu2GiVr_W2C!QZKlsJwJKSvgMLYHZNbR4=NHhftcc) +z>HBs;M~df24(FOvxN-ZP(%9Q8DfX*XsjT*jE3zFK=9e|`dS^m&mOs-8d9kG)?Rlnn +z=&Bvu$0|GDs?YOmi^dzJ%$TbRxs^0h?`3=(wg`9IxN+cKz#%cqZJ%uYn~C)Y{)#Zm +z8L6mia-YNv6*oJ4D0f)(P0Aa5CAK7@;dG2$m^aZTqRv)=NNljaP?KqFc3^#XPvi5` +zs4vGrX3XdX5##tKk2>QctfPjjlhLw>*lm88cZ=fp?#((c-KVnAyC0h# +z3A!RG62=#Om9?{E}#uPl)>_a<5BUorNMdkn#Xf$(`U_{Cx3Ha +z_Yd7Z$Rxm9Sf!0SL1{PZJ(kJubuE9^3TkWy2K3x{T)kTTdu`P~&W&xTCkk<`=rcwX +zIv449u;hLW8_eLyyY#s5T12(SaF7BkIP0T$6KC3=sdSAy?)XT1wJ1+EvvYK|P()s% +z#ky4-b&!0WEr{Q{v&dB>`HYHIw)VHJx??)SX{6$X9(Ro=v6*Y&tB2F7kG^)*@wZD- +z>WyK)zM0EZS;l{gUci~mkEj+Jl!>0hy|X2NuLB!=PT2SQGi%3f0f*F4b`Tg~ +W=68_kkLRFs2L$@=qSW{#6#NVJGszkN + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0018.png b/themes/bgrt/animation-0018.png +new file mode 100644 +index 0000000000000000000000000000000000000000..667cd7d4ad375878eb731326ad70a12f5536d389 +GIT binary patch +literal 1582 +zcmYL}dpOg39LIlbOxRpg*~TO#WE)SK>A1DIwH%Qy$o9`x=erKj;@6;_1O#1kxkcMVc% +zdMnxvrNoK=e!>=qvsd&G0+i1iDl3+_P9e#Hb!S8Lm4nw3HU2F +z1X=&TX^V64-twDo_KCr8DBY)n7|jj1GnwZ!+n)WaF81$agphUB +zBm>2XkIi*2kaXP~H1rZ|Tr1}-6uUQ^IHw!gno)F4LrdR{l(f!WA2U@vJ@azi+<-^c +z`L3$*@$r=SL8qF!y1MwoT<)^r`l9krDSy|Xe|abVl}2q8|FIaaefqJ~_~n^$>uzcO +z7GGFR2s*Uv*|9|pDduG0AXjPdu*RsKMLXBI^OiWF6dZyD=hB0lLdB*UQMe(>m^~(`eyqtzD(@==7!bpDJtiQ{u=0@b}@zDI_1ju%*^EhaFRzkH(Kpe +zBd^OVdRv3Zdy1#g%#|7SzTT|Yk$vB9t-p$>4YE_+Zgd+pYNX;aJ8&t6u!g`jM=Pw- +zu+DHw8#qINd3tq1vV*tExUh+3&D#Fv>5V)m-Z5T0h04iQu$b+FR`au}Rhgj21xwy$ +zsOSYul}FGQ4zYRA4bW~(!2pd$<^frBl$@J +zk3{o%=OnY9^n>R*OnE2DR)xY1h1~=vA})||3Tkix@|?*xJ~&Vc*=d~o`N?cS2SYj$ +zn7X-#Otq*;6(pHCR}-z}4?NLefHhjaL`L +z$ZZS!$iL`6bKhaCgL7n<_Svre+KD^ruNDWsOvmyI^qHmY?H$yCCtk;Ozr=jZ3*2(M +zu|-r!Hi7M<+BmuF7>;jnPg}j;L*=Pl7gl@wC?vq7@RqQ%-xl^pBFO0dzzpj{B({N_+2=er +zaVZ>>+~Snk!9SCeD{N(wdnI-Jpf0RD#k%o~Ta-F#FDT@f(9tFE%MkAlLF$w6X=(0w +zpgg#zej=eePju~~^ja*c+jKAE@6Ph4%nsjkoJVnn%4k;8BwNzB3Jisc7C%*TxoK@SuR^j=w_(hg(>Fh$^OJiGGEJFiia58BwCeyeLGszdu+&# +zKN~5c>{@&%c_s1baXQ;j$jwpgl2sz-1zJ@hs?lMUabbudgksI)$tL5aI;P8ZtFK{G +z{*#fI=NnJ%OOQVi%8u>IIf~=JiTg~&&qhim?tawHM3&fxSe3;!FIe6^N&m1QKWL_Ufa_$^-&Mq*U53MYLnO)l6faRa +zs4OCvH}^z0>BL-f>zyIFjJ!W}-t&IW_w#wqd7kGy-_Ktk;b}Mg4rLu>004G46C6B1 +zgm1QzA~?C>;om^m$|juW0>Czn&6WeQaorc +z6ecPo!#Og +z^xf2WyMU3Vz9tdo$2ik*r0MU(EN#t82K$WXwOjYR@Lycdnhq2QjaI(oScVLqS^A#4 +z4p!ah=%}>=;!NLS7sV?4DL3a+cW9OCVz#cP!h}v&OsQ$gLPsRui?(sTy!`t@xQh{C +z*I3$g=pr7EKXqwi3W%~f9aqtqI|LWK@OhXVxUq3V-&)XbAh(p}EzlBB1X|FUVn{sJ +zcK-g5os?3LnN4k2O?8^=Nu$(88@59AY+%Q{x)7HlI+#j5~4hH&&G5sB*1qyQd=v$Q?_=&_SC8;`O3AJ@!Rui3!+15uXjo- +zSde5FB3-j6aSL_YhojfM;)bIgHc@~IL#Ez1x1DBFB1}<9BfPQOu~l*&{F_x_NBCCQ +zllA^-G~M{msrr6R#@Caord{#)8h52gD>W%R(#b~o6yI71r|hkRN8G^agp&=-+3i +zV}^!F9-fU}u|DaJ^py)L>~_5blgpAPLx&>@CYRfLCNisfopW+j{a=M7N8YFl%h#Qs +z{GsEWSZ0DR$VBS|VkE~kCyj5pAWQ~H*u+Tg7uSsSRG!<(Vp05oP%0ieY)CAWgRcOaZFD={QcR}OIBO8sS58n>(6W~a*0rCCUC53Y5y_nL0Bd~YCz@zT) +zUK|a1V9c$ZyoRX8Tbgw!>XfZj*qwu}4umi$gV^!@1yS8D0$mwVK$LnrJ-&i(u8N +z#x6niU=jMZ^QxWUAFFF7KfJrhXWM*w4RK`G=g9lViJ1l!Q?V&BVC4WGlc{fAN%h?p +zDY1gj2Oi5Vx9TXmd5Sb@mOXZ_O-o?f|6;FX%WoRYrT&JzfPRC%;eZ@SP!zA{1XmD&!ljBv!pG4ES)7%7#q`2UO%&QEl&2HKfVDGXRyNf +T*Shb6w+?W2baN;_aZ&IujE2>N + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0020.png b/themes/bgrt/animation-0020.png +new file mode 100644 +index 0000000000000000000000000000000000000000..d228ed84fbddcab44ada03bb79b5c3d842e58a24 +GIT binary patch +literal 1558 +zcmYL}dpOg39LIl{X(UqEak|X0I%;LNVkvhuE3IiN5+=5pwi%lZF=j<_ugB^Xq032# +zBAvNkN<7K6W2$l7PKPpCGEue1{f^))Fp +z`_J(v>LzYx4*t~##*z|k7p9}To?q(9cZ&e_KoemwZS2Tm$h+#QK1xJJ31VVmtj6oab#V!Vz!J66f!vo(p0YF_hm=T+8YtQ_ +z{1@DY{P_p<{RD6eJbb_O=RSfyfwht9Yi%h4H)~`7%V(4vwd?@i$lRa= +zQ81ve8p}ZB^DDGjLJaAr?!@A`-^*ipifycwvr0#f+2(4ZQI1y9K-Y3hJi6B5^p^aM +zAxp<#kAli)+Dq4Y$&sekkVjmi2&q}3Ri%4tMr!o6OXQhxvfMzB>aKA**{+PkKk7p2 +z+--Xk_;eWl=-Tb#Z4zR@d6)Zrx;HNDG#u-QB|9ZVUOt0Qzl%ee<(~FVU!x>{yI7<< +z+SdN8F|9W4UgX1GVs*cMr%(OY25E;f1BVv{oIoU&i6TgA7sU2>-S>hWvpzb1d6!<_ +z50i?e3eDz8%{eXy>5;IbG=v|K?7G}jfB((kWzO!J+OoK$q!$$4)oA%E=uj#B8%e1w +z4@x~81&1Vl=swnvl1mud;#)i&MH5BA^K8TtqT+lL4q|-0?CRTr(X6~&a-*}D7Qxi4 +zGQuIHIGW=N+YYS458ionBVxB#HTrBcP|^aS<1&J;1UEkg-hAolR>WO +z4g=$G?H_iXqr>0CX14KP--zkyz)}Fc$xyc<(fFRJ%$*ri0X;mqE9ddI{##x-!)vtMIJL^pHHU_#4@B)V +zs$$75yu4#)Ty3Jv3!NUkS8W)c56%wSP9{NcJhXIU%TmIVFNd$7y3WN-R|;Ds3I9CY +zm7OUq2%YvxzaCfGW8iF&`s4sSWMvP*(nF*n+(wS8eF +zzt{AGqa&%Cz2X27?)&^=liTH*^|6$^)}aAVVThquUznPmO|o2v2?o^}M9EEW4Z94F +zX(~*P89$kMR&U=noj&28@hNbww_y}g+qD=8g}iaaqGU;~d#|aB!%RsNBk3Q5LB3!+ +z@Of|vnsc|a%Ti|#A|4jg4LPjWa;`z%uwajebHkNm?a>2P;z@CixGH;oF_j5oWA145 +zllb1mc!@J8^Hr;eF~`V&C@xOxAr4$evLzPz +ySzG6V*gSPVFW)9qI+07?IazBPQu=YcWXU(fB0{)GIKHU**8svnqI0n$CGKAn?7oBm + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0021.png b/themes/bgrt/animation-0021.png +new file mode 100644 +index 0000000000000000000000000000000000000000..e7bd0f5ca29b11e6f3f14f5b14ffbfc53dc2c6f3 +GIT binary patch +literal 1545 +zcmYLJc{tR09G-+I$6#fm%(Q5Vn#-1PlE +za%@|Ol2T|R_cc4Dk(FZ_=VbS%o_+TFd_Ldz`M&S_yx-4XpQPjNPO4jVw?ZHgRiZP& +z6GX&DD=C6ECp!8I2+AyH3I_t&rnS+VAUE@2AZf#O@ZvfKhXN3E5R(p|LxSmaS^%08 +z7Jxn%%tf<8qv*_VZV;Lq1keEvn!^faFo3ZC5ak~VFarJg9r9olY$J+5;{p&I28%~y +zv1ptr0*kdcXl{Wqg@rs5fF9_Eha5}?AQ+6r_rhUEr3710Q~EYa7!4G0*l1G4VUW|< +z;EsS)7!C3rP#BD<>`y!i6ty=*QUJgJAT&lWoyHAjG7zSivn&omeVh*(v^ET$;DkWf +z|9_$|X4a%PB2d=+79JH43UCl48l43q1dGG-a$qJ9i2N-g!H(>uoY2>icESOwFqg|F +z%csZ-d@~5!9X)g$bx^LdkKT{Fu7S@MF-%)-?*evwMLNv!eH#EXHm|C9Tv6eEVyR)a +zVFWw{B_$=h?5ntyi&mYy$(2s_C(E@C>jF3@-_ovV*T9`=$>}eyvuE*xBSS-a+T5>^ +zeUp-!mClsRJilt-NMNC*mDO;v>cj`XD?yf)=s<#q$Aa0X*J +z{>iU~7EcIbw4(9dGkpjAZK!7nYEb;iwB%BCIiTl-fG_9avAY&lEhD+K}xoB7#R +zC&$3APV;`aigAcY>Uw>fNiM2hyM8;O2}N9*s1lZ?NA{xxYVTi(pqq%TCz~hM3>%f& +zwK1nC7R!u1Pz`65i$6SHH$V2muIQJ;ZF!hv!Pt7ehj5_MM{@w*n<71YeXZTcTD<)a9DP +z_4?wa*xst7C#_E(lEp9Ht9gZ~gfgGM3v1O)FZ9bFRYM_PUD?4@T&m@|lN$m>)e-bu +zQd4R1u~?lQ8T}?vuyIYbj-$Mhz~#Nm`yVu46o$;XvCJaxW*>ivZ`7w!4kZpPn!MJ+ +z1yY|qY!mc-K-vxX|C9O$H=qdajGLzT&H&yzW9o+5&&8JU%P5!)xrH(tlcJF{(nZ-X +zeqEb>176zWRD4n&j;&OHD;7r0*NoJc39kb?@AM7bAd2+PUpk|DUUG~7Hm)j5=$Uz+ +zaQo_-__a@O&DS@=I9pGrpzJLgvk5k-oF~u^iy&36Ei^)yi$5$v_obXOUvJv3YU-yJ-qu7^K7GG#BXV|50 +z*SL+RbQAIEH$FnV6X83ACGKgxFLd-zn^+*3|?C{(agAHk!}{#NDB-)^g=-0l--i!u35hHnA12ciJy46=Ow{9_0(P$WN!jMqUW_m +l#LTP=R?h|}IX$=}Q}60dsL<_peh02H2+_fvP-*YS{}=dUzTN-; + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0022.png b/themes/bgrt/animation-0022.png +new file mode 100644 +index 0000000000000000000000000000000000000000..4c7728223e991497f28174a8789626155cb762be +GIT binary patch +literal 1541 +zcmYLJc~sJA6#c0fC^;5dQU;P*l6C}9%O#f#+?p{=W)ZB2%Qgf?x%2IQ} +zGi94bR#>8^9FOJ{7E>dZCQX=DluNWAq0Y}bbLO4zy?f5R_uTLO^-3cnLM+Tzn*#t~ +z5f)0^1tMm#VN1Z7nw9kt1T%hUOez4ttrpt|I9-nf$p9gVEDUC`=>U$&_U=(sOikK**0|dOA +z7tYNMM{viux%qf{`{3P?$=&6kXW61Bn#G|5c)ZW|M<9e4R_H+u_H7kGA}A6F>R5d- +z$Sq&wwtYKXmlzc(xU?g3Ly&QggJHpD-pCST6y$s{5?2(2D{#F0uus$D9kz-^P|q9~{4kU~ +zRXqn*XIopFUw5m=;7qb|%l=y_4dX4DDG_Ri^|y@XPcwh?$@@E=`V|U=(x45h%RUR) +zKg%RG4D!F6pxN^!M`ft9ZKY;XsxNjj_ra%ehQXv2&!!AeRkhD +ze!6|QvN;*O_5`N0QN9IcrYRosS`~&W51mJD&P+dxI{FgJ?DsbALMlXo?@vfR^<7A- +zdB$+rTgJwP4|{ar(UL>Nw@Wb{(4|GqTEWNQ=yH-cX*oYc1lLg{COm3`s-U5CzxB}J +zJItopd!-5N5pB?h!$p-{=-iZnvVIcTX})|^uBWAyYP^SF9?T%w@%HCuyiVw7RQW5$ +zpFxA6mq6zayq?CAc%=j{yZ7#yJWv;S#N`OAsr0ya= +zE^{}BVI$1Dc{9)3_tWLdiXJ=S@S$@O9O!W_rc;Y`RFY>6S9sx#&IrHbb*JtR-?K8O)FZ1rv+JtAe8G+YHvq}D0b$1ON +zNxtm{i4r&JABi@_buFT{AG!79HW$U0uDew7L2T0Y^Q8fvq`~DT86^J7V +zh(qB?i==0vw245{tJgVvtGcyV<+gJ!(C*{rV(BL!#20juu^YwM7 +zi&+iK7C~`5#?4s0;JkC>_iNk7bg)>cEMz*w;H#kQ%FFJ#>bj=jPK_NcuY_CeE1?;A +z$ECfy#;Nk{(f28`6_g3TIJ?L9LtYT%uI+qjQzMB|>c6Acy*|vQ%zmrx_CEIjXimIL +zXX8k&ORyQ*m={|;6&z62g}QP75(Jx{zVzx%jo1!*exMV1#WMT1R>$KxXGym#1wxZ! +zmSPe2&Ar33y(`xgC?st_I^eHA^p`ja#@j*(79DH(Bm=^d_& +hmU7xtH{H!x)-ud3U=iGbG{oY?s{^Oni3p11%000(b +zl3x&r=*3>T1e^k~coGB{j}$HdfMtlqh5%a +z;M1@SrVz_xiP+p^VFFf|KxfkhSOJg8;n4a2p-U`_&WVf7Y=(kS$i*l>s*n!gajrzH +zt1A{yK)bqne(&LlBOnjeW`iEt%~YLHMpdBUAmt57DX|rU`m;K$$_#t?u1-%Uj2MqI=dkeT@!O(+^1A3Z^0Ze +zLCapd)S3na1caKXqOPP6DL+k^q2l_WwGW>>Cofn3Ir_2yYrMT{V^bBh;djhN +zq6Z9lwK|-=Fb>gJt@UnRnW{0Sd0 +znkW(Is-uz+S})v~yXMxq%9(4;$Ad+~QrG-z(2>2foP4578f%TsP#!=(PwBRVs2F$c +z@}J4lsbqOxkv^)i&oQZ^iRK`T(3}NYwX)*2<_fauG(G~IIIP}s(JvS3SZ>EX)+$i; +zR3CMBjq)~uAxqb%Ii-_rEeEu|ECJ@ix}Hlt^_$7#=SRb*t8ZAXvdy}%({lRx)pha2 +z_73xoskqRwbp5GO5%Th2o+Q5aT#eU6LS*)3lS*}F@(ZQp-3kXZIpKkV2`_gR7v($) +zfbY;5`8+ZUa*&4@PWFFDz1#dLV%x+?xSjZke7JPGMQHNV9qZO(hY&x`8uizojUTS4e +zM$5eOc#OnjYs=i5(K1!sHgj(hyvr%=)(z=(?n6bzstb(P=5iqe>QI?{igBiU;pljiP>-Osa|S*M!zZ^{e#gn=bS*!Ast5TEo-dsSiFKS_E= +zpesOK1XE;M<#CTZu0c#=+G;XvZ0o04DO(3gy;Ez-C6LhpkwZ~;0Y~!=^S~G(PR)e99AEILYMI&l76x +z2{AI{+Ijm82TeP79yA~Zq-)<<3M=Iez!#<22T+{_TS^D+#ZwpFB + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0024.png b/themes/bgrt/animation-0024.png +new file mode 100644 +index 0000000000000000000000000000000000000000..ed52d3d40d594dc4ff4c0f9b796b3d0243a9aa81 +GIT binary patch +literal 1492 +zcmYL}dpOg39LIlSN7EQKGMPeHa@eg4BbQ7}LO3U#6WQz+W3$CMk6|s<{;* +zHJ2h?i5!=-dJ^VV2?xn7PVIy`Q_p$M^L#(w*YmvJ@8|vf{Ph)id%CKx-?$zC0ClPx +z#YaKIwSlQ9Zhl-`P0vwkW%jQH0LUDpnkPY&2d@eI00_6QiD>@5|V9=AFLKRi$wJHit00Klj!5T*( +z;D{tc0)f24hKwhn!oD?FaG^4!{2Vd|`zzQJGw2+$&!Y?^?{i7+JLk8=5j8l%aI0BSAZqu3DS +z{r{#Fekav$S)j0y-^ycySs>rgm&WEQ2oQ+Y$8*sZ003oCDNcU=swsaAMxdP3Qe(Q8 +zG@JFHNL@>A>ko5ZF^NhDB@^w)Q1jwjOw^ZWwqGTrfTnXXcJ*zIGYb&|_3Xi;H~Y71 +z)^?ER7B8+oAH6gx+qDdCo_0>Vsngz{y_*qVPtCpCQ_IAjr}_oO$Alfrn!0i7oH`z( +zhpdPqTW3qc4|N+l2UeMK+}Z*3*DbH_Cnq#PO12!51=-3dlULvFxU|QFM@^HR(MjKg +zSr@#S!R_@xm>D>tAtQD~%<#***aFc+MvVm`(ZK7Yn@8kr+oUTb35cMsD;KJIVgXat +zB~PfH@dzp4N!*VG`OV!Lm^Se~x@1#OQ#u4@AlxsDZk5ed^-Wj6TOfK_(EE>op7`lz +z*=`u3ywcSCFCdzZyaZo(n1^_p1MN1CEb@No-c=`!Z{+cc2P_sqx~L{*+{8KidRMFP +z?fk6!d;Dd~t=CK9#_k)3yeN2QWUn$(Me>|zum4{+-2XZ +zkGADab=3{5z;p8Il|wJ1-s8p^d0kY*$ugz+cU_MYW9Efn+-VE_RZ~?-YGQ8w1 +z3s<`Vq>1TPuU1$3EZ2NkUnnO3I`z5IN%}i{BnP#cyPB1EGF|;Q-9DoeNHrH|PJ-8p +zyPEam=kH-F{?da{$dLn^qCz?g?oC)WSgJIH2lr)HAP<|*nl*0F7-w)rPBDLreGSyK +zhLUpGEd?N3&$=-;c6f16n^eR~&uT%pCerZpd17HU9GEfNnW?5#Re6==y(fAydYFXS +zmwX^!_#xvkc7kM@=M>;^gtb*W$*DMC2d(hHX^20`I)3n7%K*Q0=tKczh<;U53=pdj +zqL)jKJwwL=)IEqtu|CL>cs>E$ZUQ;5+o31YDz*C7beWn5d;gizH&LIldPAa)3$Fnw +zq+s3I%B+Ll;i#M(p;K%|t?|RqG@=(UZk +zJqLf2-^-7(yjDb?s`gdeT!no*6t^@%Ul{?X8YshF%nQ4q$}4qwy?vA&x8^U&Psuol +zri2AF`7WhYkX+AKF`y}d`kG#i +z`k9G^4C_J>N2G_p+%VpyR3q019A}r)5Q@e~#nns!j_agT{`50&U3R +z{{N>rXzfTHc?HSpU&E6b(JY=WmBxvK5U{}F)6Stx0YKJ`Omy}OM5LbkD~9THL@bj0_q{&Rh;iU}fr-be$aTgzd&1tD{L2vPSb&WD1eyDQo%@{htZRWRzk>^E|qu6=N8@FC*UYxpy +zH8XnHm6X}2yzyzz91$Clhg(F1)E*gG09e8R#+|11eO*mJfKug<$D|6vQQ=lDv6<*EXkYU=d7Fv{4MuD?dVsULl3H54SSP +z>>9_*$5KsJPWSV7%gkD~1<3YJ%!e=?g3U{jEw27f^!Md{v1Mk$sFZ;lP99odQu=}+_ +zH8>S%lPP}6jf(>_Hcz$x`>D%)vSOG-J))tW7N8IhkbLTg_JQPIVa~yDaB` +zJv^+8@H2d~{qGK%V>8l2^2^imYOnWSq@~L~1ecQb4ysHY<4i0g1$__|dJ<-@&ouwh +zl$f)Cwo3C2u{c*S;m0rLymx5}149pmAjH*hb1i92X<=~joaj?XayTrB9VRrEf15J1v7eB7lhAa6 +xe&)U_H6hC)_d#JNHcFv`T(9FOSlo4RF#YNEcwwUpEEGC80GZ@XtaAwy{0oZvaTWjo + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0026.png b/themes/bgrt/animation-0026.png +new file mode 100644 +index 0000000000000000000000000000000000000000..1bfd5dcaa6cfebe4fa8fbe8a4c53a2650e039182 +GIT binary patch +literal 1427 +zcmYL}do+}39LL{5WspWLjYWoB*Ja)@%S^}&u{enkkzC%!U^FxA%*$kk7OORu9S3P- +zkw$SUEk#EucZCyMk~PY;5n3W)nnl}=I(zn<=l6Wh`F_9W`~3cTa*p|W?pFCm1pt8E +z-d^qja$>eed8hnlbGd7BAQQbp*#MxbxjhJ=v6#2Bjesj@Ks?;G|SbxcEXz@Mt +zzVsT024%oK)vG%ve=)dJyu~4kDzME8?u$mhnd;VCFSc$H0Qk(DLo!dsEGqIo>&!0g +zvwUA}_2@9ClhY-fZjkk_He!D0BG?WqXK0O;kEpBljpBcuoPN^H;0=U^Qwv=L67P~| +zK&F4ra5DmR8__K&w@4W_dO*tE%03AW)Y|l$<;-s}WEN`i(x+X1@0>rFB&F*~KH>8! +zNa^&#;_7;Bf8No(gYKJPYC>#98_b#vx4IEu5v!G_hf?V91jTXl^~0}@MwvV+Sji=x +z*2tLiYPr|`gd#pWR(J|EhKzQKu|ZvehcVf6T4CW=cZCXp`B{A56+x?(q-G%-D-=}b +z-Yyg#N>%;w-W}ttd+QO#QWU=}>nX2irv!i&l4nqwQLKrdZWN~>!0ILP1=L)_VucTB +zXfPF4Ga;vZmmWWnjXTe+uF~l)>jYBPwbaa6);StFy4^9B%ZeFc;y(%y7(V~R@VdFc_T5G1~Spo-) +zn$nQz>6HC?scLRCXzh-4`p8FTuFKC^t}h;f)wYmIleb1rV0(W+bfMKlOxTe*ndKKSWw9f+O!LZu7`<5p +z*1^rDf~8_wAz{Yknf5U8&xKr*ztKAkO&BKW-csvS{eN^w=^KL``)2!B*7I^Qfc~%* +z9vW5jynT!F*MQl4xGYHQi!`?6z2PU(EXC`+p9&r?ecCAHY65p{P?sC|#&zR-!_Lc{ +zTJ}IB9drza1t-GN4p!A@EY3{j_l}&Cj_$iQJG^?Uzf^<08JVr?)Tbn}My<{3J8`9D +z_C1|Fi!WXm)cGUGT?Uo)A41+v`O7>?NT!+fag%}KkIG!Lj%%}HO$hMJF;!7S&?%kd +z{6Mn~H}g|2?Xpxw^(xF_Y3|!0*cIv(_0BX+_ny!*5IU|YDvuJ`)d&lIX9fONxf3&Y +zN@>02!(Ak7u8(Oar{zB!lhh=9^bGdPv*X4I4Im#;Bc-nYrRv1hkv)dF@2u#8HiuUn +V%1LTM1PC>0whMGv-57~7XZB>`}9B8>!3pwMUp +zBAmq}!oQ`k;S6djEs?_}!`WmKjl_bp7!*34#QcwTaa0ohM4WI?Ras@QS%oFANq{{9 +z=?q6A;r1vP5_!PUfE0D(C0<=CUq#giPRr}23eCP8W1ql*w< +zX(%=F$usI*dY+8jbY~yrK!JZh7d_~5D08rh5$9jf_Y4VEI=|-O0 +ze9T=2XY@Va@b9VOIC(T{#mVWj@{77E4g-zp%%o#4=)X-2PBJ7I`FZzwyENmBxHJ=D +zT2#SEjJuFiwSuAcy;GFyOuKOFSQ)&#yK?BLWx7%QVLVcHcBHOh?C=}lBo{1e7emCp +z+l$8Uf6U;wcJ0Rs`gau^sw~oy7&lu$!UK+%N&cYw={ip4k4eJ)b}G!6hk+D-FN+qa +z-_H++^gHVKR6x6XVC5PfC2JhaSEN)`bme!qZuQvfyyUilOfR>-X&LS?y1Z92ScPnQ +z-^3`7d*!+>(ZKN33t!$&HMcXLELv--1Bs7am$ZFi4W-Vrr!#-0UY%whNxsc=KU;a4 +z7nFSEY1Wqi4BhE5sIBH7$7icf4fk +zC#?l3&~NqL3>45}0pV-DrAccm#t{|JXM7Z7IP3@xW6pUW>4eB*u8IW=OI;69n{-S? +zs)~*k0fa~(bIvyBik+KX&qT0`v)NJBwGp!i?lo2q5+cf)N>~|-u*HN$9OikKn(LV$ +z|L&}XR@05F6mTMWw%dP;YPKm);*d0tOBmNKjN*aBG1r|z!)V=KARAceZO4*9*S(%R +zS13JmN+6iqr`9*UC|G#Erz^_k|2WTUS-Lu)nqg#3qAC$lAA +zryh9P_a^%myhlZjGU9L~Yj(FWnP1SAbFjPalKN8H309_g$%-PVB=_~zro!fVu4%8{ +z!1&w_9h=L;^#bu*yFhV!kF;;Kg#Gd8np)!wSKilPV?|0GU3*?}S1m&vt+Hn^yH8Zz +zjj*j`xz7QayUjgj^tVYk9rdbAeQnS3wZiptYS1Utsgaa`KvwM(U*m?BF7S^$;FG1R +zb#t$1tD8^st0i6uzW8P_Hjj}UrH>)7<5n+sruPr-u8bGPE_-yg^# +z)g{H(R>?;|o!m>eD&&*-C2hi0uvcr5qPie^Xz~hk|H?b$(E3`rs8=YA|(pG1KlMu`+A$PuoQ!-!?ooqj)JPW^iPyT#icU|^zWHt<#g +zX4N(}!qDb8=TD&QHDPLK?&;Kv`OIvCiaj;34i_J&ui +F@L%rzZB+mO + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0028.png b/themes/bgrt/animation-0028.png +new file mode 100644 +index 0000000000000000000000000000000000000000..eda5e3f2f3ab415780c5c7fcfc273bea1920cf57 +GIT binary patch +literal 1385 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpq$VUY +zHM!~1;QW&K|mL#79s4^GcdOcKK%$NEd(~a +zGC3!;SRptuw*W{p7#dmBO_R`OU|?bNba4!c;H;h2={GxEz-?pWG`-A_Dc|c4cm%S> +z1|51-lWz0;`;Sv8OA^0*?dvVyefQm~0*e^N4^382J(tT@)uhYSF2DaJFy3lT=mCHC +z6o=paIX^Pn=NEXc&$E|(sH2oS5ub0>TKOVaVDq144J>TZ$}?}z4~lQ +z>KprGUV*Rof6|?QzoGGhg8N7B56>TDf7t)vbY1;Ei{vD2kHbfUI;M%bA;h&F#N5Q>f*i-4FKwd7(|6_nY1~ +z2_I*yXV{gl{W@47yhx(=We)?F@mkMAVhZS(nY7FIGpysHwKp?2hEG%QtXZKkw0X7o7tt|5+@LFeNoOYI1pm&r{oW +za7C>wl$>q +z{JU{-wSuA8vC}OdGFz52b#KHB`D=k2n&a>6zq%$|iN +zSLap5{%N*+z3%C5mDLTAJolD)uw{k&*}PuHmce`>y!KW1irs(P6fGFj_szMtyZ`L< +zM`mJPXZ#OJ8BK}d+mXAwuOR0@{bq|UpN|K1EmjIgMC^Pk@;I57HM6PaQdY~2SLn+$2oZKz6zx1nFAn%uB+IAbCAD^tU|JWzZjAE8T=@WZoJti;kKUST*`~wTS +zgS*WARp-T}H%y$@C$I8PN{RE}=Ejb#qSq`N-6Bn^mW6G5x%`S^JfrE{PfINB9l9S_ +zz|SJ&U{skj>8w*g +z?yLEWe(w_7-gzNeu3z)qZP)VPKi$u!8?w6vG0lO +z%yEg4%{j+qiv;ULiwiz?cP?|8-*(94gInT(MIWBHx3T#*^{wW!y)eJ9uZL{`55pyf +z$)94@ue+^uQPd~$Uk-CcW&@K6vyWumM9GxjXAS;7Oy{foa=_5qCx6iv-P6wL2jyRW +iJ$yXr#glZMKjn=3Qa-N}cgqA86%3xPelF{r5}E+GgkxC% + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0029.png b/themes/bgrt/animation-0029.png +new file mode 100644 +index 0000000000000000000000000000000000000000..33f2683016b52bf778779348c8c96cdabceed39d +GIT binary patch +literal 1348 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpq$VUY +zH0f49q-3ewP5Hg}{ba +zCg-FUD+DLz7654mLnDj2X%gBD49s^tT^vIqIBTbM2T2?9xOy(QaOwL0`qbsYQEVKZ +z?=Sw6NWHm0a(#;DwY{76&VEz2`|j13CA*w9h}NFl{jT!I$+x9v-d5VW*Z=gm)_7NV +zrt&fSu8HX~yH8JxzrRmCiF?`I=Q>t${l>>7>OP-7;XJ>1Yu&XZ_x<)wf(5(_1pZDc +zoLzXL;*8Z7kyi@qL^12&6&>c{RB)F@m;*d`q*}xr$Q^^&xs#RnX7ewSgqV#p&Xihe6OYH +zf17DqP6rYqHgP=o-J@G@AkKK+Tb}l$>x(;6wS(Gs2^i-6lRJLuG`xXPAmo1$LHPt!&tENW5;xOk_=ETwZqE>sL|AS1F^;gzqXf +z2KA>b4wOCd^<{cgCUm@PpUd-^!LzGgBo}3czvAmTayH*7NnpnN0`?2jBucj&*L&c! +z=L+k*N?F@RqhmAI>{jPH9p24*>Bsq9NAwLgriD*m@>ss8t=P=-(62w)z0=zciM^Nl +z&1Ct?a>doRtL}0ZWLgF1h@~)p6JAiRUBJG6RVB|QS%K=VY%4~)^&AKIo^96@Tk}2E +zt1Y76`uwe|gcp8oOrk`TUW?yOt1dpRDl?s@U|-R` +z{S1{n-`_ROz14W&TyMIr{Y`=8#U`b{^+YZvxlWwG&~si_>ZQvob}k|B7k@IZZ_PN# +zxTpNQ)rJ+mi(46Q&J(HsduSuKhy#m@bCSH!geO<$xIXG$-BQITQ)VmtX!d$jPQ{O9 +zJ2wRLESP`9Ln2Ah`oX>{>{?Rt(LU|>M6W&4pLCJqTd+ag!N4SamMf2aetLepACR6O +zxP9{7L+-9@#YyWDch6M*>dAjjg>~7%QyRxVIe*gUYirfAlVhmtyK%+Ad&&BZcJ*<5 +ze{UG+8$NvFY%HX>Vc(R=wMn;Pz1toMJ=zg>?SVzsy|-x<`>_?#6|MW&%Fa1WGJerx&TJHC;dqtv?BbQ5&;4OBP}10@ +zazQeG`h_D~`R$GNF^9CUFc<9p<|KDF&tc`#FFVUzw@*sRS#$n&_5OEmYszJX1xnP8 +w&iL}?)`A1)tQl)xY`t%3n4QBY?Ea6L{cQB)#qG}?14{u0Pgg&ebxsLQ0Fll~+5i9m + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0030.png b/themes/bgrt/animation-0030.png +new file mode 100644 +index 0000000000000000000000000000000000000000..c5132bd9cc5ff00f5c8bc7c495d215a48cc85dc2 +GIT binary patch +literal 1316 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpq$VUY +zHDi8)K2m-n=wFqISo`Jbt@aacDX(6!T +zmB~4&#R|cRxdlL)!O+N}ZkmKP0|WCOPZ!6K2+r1N-9@(?cwCv6`ri8g|BBx)kA{27 +z?<2XBSEPw$e%&>xEVsr&hEM#wX%)2{4%zvuVDD&wlR5PUiYeYBx7>6)j(Q>sIM;>$e)VpWWw9<_(zF&|ebj +z@2L2s{fQW(x&5*e*VoqCu^yf|`^e1qcQvfoew2sx+WukNP`-?Jx=vDe^J4iwE12XK +z{k~f*XnWv2XI0fRW&fDz#rlc5O~)oB)qd*Bb#AqJUcGpE@qyO{y^Y?o5`QhqWlC;+ +zvYKa?^sUH%s>mo|6;xYA!u+?d^%j +z6PfR*o#lP*q$lhk(X!a@l|j+v*WVVIY&gA`G30a8)wI7acXD5tv5Wcfo;4-B(Mz5x +z_TA~)JK5L6WBN@YtFRlnlVwZ#7FkX|C(haFd(ZOI;ztfVS8qt`tJ?2nuu6^Wuu(6V +z!@yAbp-x3*%B|prQ%ol3YeEm~Flew|_fq1a%ci}0x@^(gcguU8(A2y>_t5${m&H+W +zYo9;N{GL;3`BCuG6dNXWA;03k8^vPce!ddg#u?D!A}IE0mQwJCTba{23-tTDm>7~3 +zCv#UmTYAH)NoX2B*SyO7+Wq`K4||mky+5(e@WJGxN2#eU5|nk$#^4Gt#P4xEK#D3YZk-azyJ~)6*Z1m_zmYc$hvfdlaNo +z-dJz{j(Hy2>BXyDRG3?2KKMO*>d~?I!uh%!tJfCsJdd4(Tm;wn`7t{zn6wRRdT!_AUsNARX*kAvy#M#1o!=*x +z7u3}B{|MS$_TfhNfz2~cyk=X?_ETunpJfsb5h8~D`bMo5MGmVs|yCFK++< + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0031.png b/themes/bgrt/animation-0031.png +new file mode 100644 +index 0000000000000000000000000000000000000000..f6ed4b2b3cbe1611c2530eed5d67900ef2ae557a +GIT binary patch +literal 1245 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpq$VUY +zH16H7Al^AwB?(h7Eaj?!Pz>kGf&!($0b`mv+>{m^UpS&K7Mtw +zdX%K9Lih0r&RP2Ldecv@|NZwLw`2I1%;)ng{v>SfyKzL-t^PN|YX^S?v!ojF!{vM9 +zq|^8G{t42Xp(hQ3j;pO?*%tHt_SazI%)^M`Sj9`h8o>jYA +zb!XzY=(XRY=8J5zU`&yH@ys}gS(hG*H}_lr(v#Jl0&n +zu%teF?}ROa9rjs{_b$(zAMDBCHrF=yV=a?J>D|uaH|I|%*6F{QGlk_y(hH%bc3F?J +z81s|Ed%Fz&ep{wvKl#7Hc88zQlWxp2Th&@}ma-Etz^R)f0QeJ3F5%XRapJiS*T~d!D(z&QN5UM){YmipA3&9l!DL +z4BM}dT{Fsfi|4Wks9KgynysI9LumK;Ie7^()ALP>RMP7cXWgA*=B)F0q5q*(ldB#d +z{Mw!2b0L4bg8tT4_sMSkuM2+o?Vs0F&8SdfDNy+%ZS6kJ%!}!B2&p2I_MV4>U=3-&(Ror +rNw8KVhI_{1_}jDI{OE~3|5yIS2B&Hd%}8rt_GIvM^>bP0l+XkK%<~xE + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0032.png b/themes/bgrt/animation-0032.png +new file mode 100644 +index 0000000000000000000000000000000000000000..097916423d6c42f03f07781a8ca380ebc91a6e36 +GIT binary patch +literal 1185 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpq$VUY +zH%kO+W?0AO%4{7p4{=?9?+b^9=c20+bd4 +z8(x{5lUl40oS0hxq!|p2Eb697XfrS{TY9=UhD2~Kop!tIwgC@|^6|I-|K|(sl$hbX +zKI3Mk#<@hsN1M2twp_}+y{-TD+i#5t+Q05BKWFpjiCW*znbR$Q-FDx^_r@osU!q=I +zIsg9m{?kvJDg|C&TKRsKU(U&}*|x5#J)B}&l$8&xlKUp@>k+W8`9*vBjq~9Nlcut2 +zy-fe9Vm@b<+P6q&4M3HmfI-TRA%$*<+t;&@9oCKldZocT#LLzLs& +z_M-S_stGr4XWVl(nQ8ZFL!`g3f`yyk8xy~C(hr|(-@{a-=smwoc!%M}FaIahA7&S0 +z+V&))HdkQ&u^((#UhXVD_Rq`VX7WUJzvBv1XDpax_jWbg-K$J5?%t@^I>(urFsb3- +zs%QN788=?_YlvF%+C)RIaZY%Rnm~Pc;Q7FSk}j2F#>@1-&T&v}I`ZTE692eX{gaAp +z5}r-Q2DMk#Jhqd2K9BQdcI_e%btFnV%zofFOLU+g7 +zGNEj5iw&QumjBIqbFzN3V*{&y?_RSh42kv~$LGJzbJ*bFQ+(RG`9w|UmodSCU$tY}lSMe|I<8^ww$FPL~PJo~U(=;YOj3M(aE +z`Mq?vkdtKj`)F~*=gXQEyEX^w+jXdjv)l4JZLVd_y(91X|Cw?1jVGnT>KpfQ`OE3= +z-#GnG-idfo-u3Z^ZpMnddTe|)f5&W}365T!>S63YvlBY6_hmi$D11oIz-qf;gO0=Q +z{&kB>NX1ryWwJkjhJ>FC%CC#gQ +zRn}MUW}L44?$SiFt0_fGQqYQ953J)5uh``_LZ>G)vH372H; +i1Fy>eOK;rqpJCrO<8F7=?H7PqjKR~@&t;ucLK6VT(*5NC + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0033.png b/themes/bgrt/animation-0033.png +new file mode 100644 +index 0000000000000000000000000000000000000000..c9ec0e5e62b10de61c6d8f00e456d2bc8b2fff1e +GIT binary patch +literal 1111 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpq$VUY +zHzT +zS0?AA7ApiN<`w{H216r@x@i*H3=B-~JzX3_A~@GhFxtU1s)%boxL_q%)PyBeeM1I0y(bpUtgKoKL5@UL-Wr@?)5)Ct~Ji>TqF2+e$tb@ +zaqHI~f81Cp`1;by_cQ%+PP)xDb@jcWw%yBjLDSmKxoRp46kP3X?(UOs^b|9S6n1+& +zQRKc)MoZK5!z+$I$z-0ixN_DX-H#pq!uRDmcO+l>d!Wiq{r}}@Hv4^TA8lH9_m#zV +z@2>gJ%h*@EiRSyb$??-aSB2AyFRWvWVYp%aPyR`1U4r+$jq7_YT79>?oH>ilj`Mjm +zOKh>rPl4ZgGoEcp^_JLYxp(9D=nK{<;bG}<+jk!gzZ@C$Q~`TMl%*}?(&u=Ir%VOYcif1_P?%mgS0^F +zzIoacA{PtHSTE;UZc#C%n0=Ap!Q4Z4t|+YW2>ZAB-s7gvPCuY0og>AfbXlneV +z?;Y*S+obw?FWhX1UHI5(U56V}=kzL-?-HvR#Y2)WyL?|;wn!~%Q!Mk>Qx8umZp{{w +zwwPP!`JvQ)r={h$oc1qM%ZfH;s~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpkKsgoBtr|c%4zN>-5`mJ&Cc;X2pMhe6ATej4P*EZSgwiuGF#dDFA{Zzs +z3X%*?PR&bYNX*O3O)SaG&r>iqNGm8-;D6i%R3Hpe5Cn8#Y7xRtJp*&Q;M0$Q(n4Uv +zE0c3lixq+sa|?hpgQ1Z{-82bp1_q|Ro-U3d5u8h>H%@w`z~j31@&EcwwR27^%;b6% +zJ#!_e;?D0vUGMU4Z@c@gcE8~V*<*9kXMgUPJiGAB*-Fdf6-PYG8s-bnG>)m??so6< +z&pmhFm*2U(L65!Hwn!j;(<|fUEBY6Qy2X`+x3D~an%w;1%beGOSCSlVHVobCxBuRf^8|xN_y&zP=|*-W`uU7SFlvqt)_l@`mpOZheZIv$pi>8>Nl4 +zJ$GlnZVG$gv+LAa(?V{ZeVdt_)E4f`zLLKGQRMW`??je}FTZx=PW%p@fWJO#>`$LG +zJn-7uKy-ma1M7J)d*;{D>2b+IzWcjkuRN0%ZZO(;;8~XON<;HQF+DFDbj>zKaoz3B +z783X#*z@4oxizNzjZs4Rzh6n6Gw?G!x!P9MSIzgtjy4_r^+~UVn35fmV!y?nUu!mP +zt?Y8MK7~22?-w;sc*M4AZNtjvFDn!G|4b16syf9)zSYn`P_Vc>QC;oPffHMUeb@fm +z;q*h+gYlN+1)Xnt_ACbuK9-O@;S`fo=Jx1QW73li>wI6^>RI^5y9ie7<-UA~`Tt^f +zTYe`I{(VynFxv + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/animation-0035.png b/themes/bgrt/animation-0035.png +new file mode 100644 +index 0000000000000000000000000000000000000000..2bd3b0dcbd17f182023d4d609f1103a8b128c7e3 +GIT binary patch +literal 981 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpkRtBcQLaqCNavWf%6eR*BjZITj<5GcQf*>(xpiogF1BB8uFfjge!6Fza +zDGHJdPEO5BWk}4+%uOuG%+FIWHb^TdR^Wf!1XLglQV;}mVQLY=PCWy2yWrE0fYL%> +z!z+_>Qi~OW6LSlIG=rg$Mcp(BZ3YIWTu&FrkO%^GtTzm@?3tV +zIb5r{o?pLgJIUbVCY{rdzgF2s{Lm{tmMQEmm-DH^Hzw)KcbNp?ADk*_k@l+_tL^6Z +zm&O*_Pph42@_n*r&Cyl*hTe{HS4zkp-=gnFw6-g<%aijqs@TOWyh +zon3li?enycy(Pb8oR>W7cb|CjjnxNxxxNE6@6@~OrmlC8VgLRjzH6VpWtZoBTBO}? +zvZ@p>U+%YlgW2b#y+O$=v3$4QEK`qg*!tkewOL25TwcGU=jd9i$T>f|nzy^(m#Tdk +zF85pL`Uh{jzgw3d->kgmz)XXtXJ5B|dHnu=dDt_tYTF5(GsNVLrtkYHVya&DO(05o +zn(zb{?~Rjs+nzlUc=q<}zGw0Aj4XVO@f;psmohm1iZ1(;l1tcKx)2pSco~ +znAg=Yu{7zN$+7F1B=h!5kACGZXO7O3GdJv14*FI6+wK( +zpWlMshd=l-;cwduj|V#aZO+Zo?-?iY6}c6->#on?VK8)l^6`$M8vC9ifByq_lUZ-o +zEDw#j?SFtlv8L_7JwuOAPt?BtmOjYnwyAUXiJ9i#*S2miy6ny8_vVLdier(hwZ^;i +zzh<8OE%sa?>hs_44!%((9FGhOrQ4n+*mm5=-W;y&xB8hywh*USLi5(udn|q(nRI!& +b|8IWxb#wQAN#$7xOqL9uu6{1-oD!M~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpkRt9FLq_2SVbAX*vln9hGHv6l?e;+6&2oiG!3KbDnW?*0{^>lFziQw#=))=Ja$iw3L_kaAei{;-gwb<51 +zw;Ip%Nh{W9-G2M+x5EAR?JWxWXO(WWE7^1QVsyOitM;}?#yDlu`sLrx-1`}ms%7=wH@#Z) +zIlMA|KNCBL!3~3K+XPd~h`#le=N?v8v*%cCS$(n2S}%rwdgyfd_YAE}&YQ!Sf0tZ+ +zC^P@hntA?y&*oe$PS7u%nKfhGt5CMkSR{dpqwZK+PtP?5FR%M4a%InBo(i?{ +z%wM18E|Wjt?z#1YW5T>TuN<}K%Vobi +zaQvg4#jTH}cLdIwX3dkbTK@29`uCgL#ZFf5xo3Y^s_e&p?-#ERPc(o1)$q+TzV29; +z`BB+_J~QcGwJ+3tP{7XfUg>GYT37vqYn7%O_iknIb#~b4{H=UpmO}9&$wiTCuQTyp +z+~M5*^}6%=s-1Svk0vv6`?MMGY+v4YTyDF?Mh-d7KNwNG^2=^ZeA`@COs_P*Nv;FsE`lROs^ +maxcX1vU~Pr(aE#I{~0q^X>vclIt`S189ZJ6T-G@yGywpOfw1BL + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/background-tile.png b/themes/bgrt/background-tile.png +new file mode 100644 +index 0000000000000000000000000000000000000000..6b70a2d40790fcbec68b2db067f4f6b0d47ec740 +GIT binary patch +literal 79464 +zcmXt<1yGdj*TxCykOf{k7b&HrJC_h71eWdw>F$n2S{g~|1r(&aL%Kn_8|eo59{w|* +zj)U$v%IRPT+ +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 +zZQI$~@9<}KU@;kXN@H7w@<Cy6DdV +zBiCzmE^Ki-)VR3ZpQ`w6hMy_q@k0@G%cZ8syQ~NcLH)8Hb^AuTXBp<0!1K;C62vc$ihrwk`I;5DvE02$lYcCzr +z|9-zXogkZrBDj`aod)6}R`8@CA0fPa7d?zkIPP`ue_6!{qk%wwGX!BBTD=0Yp5<=YU3=AE%~aTUZT8 +zkd>XiUI4p3fGu0ZhnG0P)6|qsTVKE8Eac477d?CEAFtn0ReyN?L5B +zI?r7fahoF^$g_CLx)fgD-cJ2eKws1VDfzEC`_o+tY}7&l3PXsXd$wQy_-dV5Xd3F# +zK6VlabS8SgmmlrCp51C}?=V7=W?>;HBLqr*?OWRFZrh;l3iQbTNW6-BP>-w;$DG$Xg6JPw$$Wht +z&-&5kpC_ycRiR8^_NClvO_d%M%@)z;$BQn3<|-IrhqF=It*tUcV)SG~kibL%{4KTR +z2WWn6ZLJq5GT<_wdZd}&f8{p*;G7k+bzwB9;`OD_NsF3K5pZXQKWQV8PgnYO=YT$i +zj)^_{Mo5sr9isHh$z;P8|0r=Hx+NjL?-}!>0p@g=*}v%N_#d%Of9pV>zxfv}TqtxHrP-@Bne*?>7dz +zy6;MV(WKySX$X|y5OnB2`0p6#xbUK6_rAqrck?u44NYcl~?#>a6S_39f=gl +z?Dndv1pW>hIBtTJ3~2DirG6)d{axWKS~NJFs69eNVQZ;E9HLq#848qC;|tLDu6Y(V +zHmZWLJt3bY(W_}S8k3--Bz}t3a% +zUKUtR2c2J9(lg3;u$H46`i1<8|BG4|mikQnn5s|&aCT_C2g~1368LY>otxliCW|U~ +zU&Fq`+PXiS0nOe8Sr-`^gVT-)Trblo_`=rw$;M4jC~vqYjo@$|%#(=CtJUBqEx7H8 +zuP9^!k~K%`;)z~;=7MEjG^iwpRsLr0lV}uv(#^u>pKeS6sjaQ8zQ7Pbh8qzEM`cvX +z+|yPRQh}cIL=s#O?u090euWKux07kjMg7sscGh3@7umG>j>u%zU|D>000DeT@;EXw +zk~ySl)*#RL_DdEIwmye*-;MCOys>r)aDTQOF*G!^U*C3B5n|!%%*li{03%W|XZcD>ql&ndDdjxW?#yS~#jubUdlWy6 +zS?vPa_YllV@rs58wn%x>ynT<$nD`-DAw=ao=lL$@ggQoM-HfwTBEu(MLKw3wjqO{M +zob4J`8}WA~EG!$CA8^9BBu!1BS7I*(cHHQ-Rc-gj%!p2|oqP%b=Yn%=3!<;_l`oEj53&<%>>CN=uAY*k8Kf$ +zo_&lh_!&?#RIcENSg#E{)Gc5F#CkNbs1!!pwwA$vW3PQrowcBgkcKstdM}$xmjIR)r48cf@1RkvnB5O9xoFn +z5~g;z*L_&V$n@bAnbL1YS_psj>Cd_?qNW{n9qae;va{24!O@llKtbEgII|#P^W4je +z2-otB7}yvwVz09edXOQDbOa&%GBPcF+=+x`iu&D0nb9EcUUfI6c$1?akjShz2d2~R +zo8;Q8!rmI8Sb*^tWUk=wb5`|=*R_-kFwrtT+4jeK8@UraQmEGlUggK>`|4!1A#*4I<2@5Lfqei +zx6L>uv{p>Z_HyrePAyZ1b0qSkbNsIVWZR{%gH5)X12{;M>SX*1Soewp>od2%!{L}e +zfzg_Sn%wLS7^En2xcdC>234BDt+$6QS@t6b&AH;+AQT8L=F!F-#o3?ro?dpy8!p}j +z!apc^ZcylZ#C#rc3t}Qy+c9f|!Rza5uu2RiGO1uGv3OYu95uJ6$?X{!vz;cg{lvG; +zlD?xPgFf$NFsd}GL&xx(Zon7>StZQ!hC%3zBaZAxXsXYzJgb~ +zaspmvetTnMBwSr7nWz$-T*EmI0x|I3FN{S@yK>Q<>C6|U03}$Ae+JHPgP?%Q*1 +zQ(owE^(>72v;J(IRJ$1z<;eIoj|V~^;agdRLl*BZMR*sBnUM=5VmC`JSaBlP^YM+K +z1~e#iTQ-hL|GN*~NJo+hmLVcF7eb5a6-J}CRiyY!gd&A3>T){W!px?Y*UcX9O944yFpSQ+XwQv6&Y9tLS= +z`*0iAyYp>9S70XRp^}Kjsm2T`fy+{=iOS2HYhNED^uCJiq$z}x1-td-M39Lr45OeC +z3@xPV!Vk1xZA?ZdE-&j-L<8>BT-$Z6IYlg~9>V)y@$BHzZ9luHulIySeCc);r4z!1 +zqK%X(nYhu#@Y1ldf6osA&kmjIu~EqbDJ2l~`ZvH_cZhuBaqPl2F3pPG5QF}%Q8W8* +z_#A8F)ZigmXb(DzfWXcv5$cz2q2TBj| +zs3L?ww&G1sv0EPMuWaC76SYN}gI+Tfah18%EL3U}6} +zrYSz1smE=f$G9;CS!)g8tYNf1TD4h~!6UkD^ZdNxzEVaj&VfTRc&*#HT%Di4wzLh) +zeegvvKyV*Ecb^EAB%)4$a3h=I4b21(rLzA7?A)fN1+yPW6~*k}^W>kt=A-^AoKA6* +zxE_nRw);u^rfAYPk*AY{36C#BvyUE_TK{`2AXw#$=#BJ_#Q$0$H6$oyq3IUV%20l5 +zxVq~7v$FCRe*$ZJeF=g8(ute-EG*GWYId3_g}*nA(R#VQIg`VdOP0r-%s=B-{UjPV$l28SAiU +zaLF-@H@+KvHC{QDSj^#hTQtxLQ0e4x{qGU@w%Rn_S#AjzFA39m!PyX%K;(oQtgm{a +zFI0pyp(k_g|J))vg%AG@kuHk@vWNKN`=M6vI!BzL`sHhV0p~5bkiDKIJwl<|Fl8Pu +zTfOKu3?FLIH;AbM6TF{arC%xs+$Vna6@(vv#*_1?0^)>4xT5o1h5ZwCl3RVadtTZ5 +z+yG|y9~3Kv?e4Wm#%wLx4402Sf+#Rma~f1FrP&sDj)S$sF8fXll +z|2Mxgh5z{E&JD6DSdp&@+P+9v6S3O(NMmj+Nm@vCD-wF&85i)liL&T``mi)musJ>z +zrc?F#2NrV1?a#uTpey4yDRp%=IPa7A#-V6fpK+KI;Hd6*BA`e(+$Qlo!h3odZ4)~? +zR+&R)HN%kwA29yd$Ow+1*LE`Rhkz@IiLE~Lhf@K~w_CC9#^Tu`wa99+e{q*$Ka-0FtLy2YD@6m^LGJ +zG!7bC@|!~C;(EdJgLS17arzU9cq1lB8CCBwrQg(ibu&u))X>=Yr}zRhIBm|RRuFf! +z9a3YKLu;WIkxidbrRjXW^*b7&PZH`v_l_P{bW?j(JZtt5=!#ZR0|@&>82zWj{H#$# +zpE?t2A_F*kX=(@i)uD)}A0WO_76*jJfRWvMpw*+ATv|j!bB-N9QxIe=flVP#5|!!V +zjoeQ2HGTvE^!X6oHBrkJw9Pf_Ib`9vJ{^#vgJKup0EV|2UakAocb?e*EAqtq>@*nsK>h +z&K8&l#=ueqxJ+ACVw0IXWq4cK-VbCLm@`(r_V1cHG!8uUz(VQbR9bq^eDJR@szJx| +z4{Ao1`Jb=)gU%YU()3@O(vjaJ!{Iw)Ibve2`&od_3EN8MBa2y^Xr_^BfRLN2c`3El +z{7v~~K~>brVAlBZ_WzxBzb4=MaM*2u$+8yyV3A&YFs_1+#LyKk4b2yO+E*UY-lBom +zOha-ncE?^f{)v1|I~hs+xP~@<5cQks#`-m;AdAtegz~7aws!i%{am|$Ag&7Ps3#Pv +z-`v9g(XFt9&BDH~wY{}9E4@yi1}yUVt-N%>=Lyg?jSK%JvQW=Ob*RQZ5|!gzS9YzG +ztz27qqtgdHwm{i}f_pa>RUGLzA$c|24aPI&s!)OUh}@4XV3Rj|>H(^sTVq%-(V5Sk +zhI+Se+Mk~UK*m9-p0n9%>Vx#F^e$;GxFYQeH!O}!?X5n6tyO_z%8C>qn-QAnG@hs> +zJ|KG~_6D+5Z5iw0xkFZbTC;;FrljG@1HgXoSdX8h&5@?MV$hY-Z@Jxw!jbB-oD_Jz +z33#sGR7oKKVbId`*>r=y3IiS(11K9IwMi4 +zxK4gOXa9aW^?IUT9PCL^a_2yV#^#(|27k%S5=+Ybp-@FG!Z5WT?=Dyk?0ILKCQ)Q2uk10dDP;&} +z(f~HKmD(4Olbcj|@_$TCtg0VolYI#E%(rm0HHik~41CXeWuQEL-ROlqP(}D*4z7hq~&&87t^joVI*8L9-Uw~(5K)1OL6Xwz<35`j4NH}yir=t%E +zog!}$!QiL@ueJA{HVIJHTzML{cj!{m{bC+}^?*wGwAu{DPw#Zu9~}2%f)vouRPfFh +zIdwFJJg!cwXK{hf;#1-$Nc0*U^FFv>NWQz9F}DU;ca4kOu7#XFf{c}G+rSG06A5p@ +zCZPCT{;>IprH|!r{nkSC +z?olZW=GNQT$S~K7tS1k>iZ0obLHO0!Ncsd+8@8?MOoVzx;<1p)Pp=j@ux!5eUO^yK +z{X9XwK+1oM +zb^VC^#alQZ#|O;G9bb>pZ7+fp1Vg{1+KRRR&QFy-6@j~oa=Ajl!{=HiFclN*(f5(uOC>SIxbM8~=nzP0J63cWJ)Ij+^2#YD3grm9y7>8Jg5qY#KxW@ClU +z7vaYmVa}o|1Uk@ur+^kOoQmqMt!L3Tg +zE-HVyhpL>M(6%m_-ljX_)$P=>G_6Z|lrrBj_2xGA;j-iPwRJ1IC#ba;2ZZ0sl)y#B +zdHg*~z6~zRw|cVIxb=a*`tAy?3Wx_2gA(M7Dokaqdx;Ymu6S?3VAN6R%`^VoQqBqN +z4K*m|r0 +zk&|)LyXfyz_pDs#0!+kxKmKLvUy5$01qoGr_=wygufErgUV;gll;~MqvE*^n7(CO1 +zP@TL_|2R&iZ;DUSLJQ7%IBBOQ_>#t%b&le~)QzLNnM7BeYUtm%OQOyTPJoK^#JqJX +z%?1pL(SrjUq%0{xVp6D@a7J;*m{8OXg&?zs_@~J6cC{`%RkV;pfrQ^#vmZd#c>F|o +zpisWN_aW%2f@mn~KW~7}$Nq1FxP9-U5^JsutjQ_bw9Ap_E05w_{6;On50LwcDj{BZ +ztY78Sc{VHYQ-eUhL(7u7Av*dRkggE4*Zzok@7VaZ>waUubu)x^ul~EP7lA64;BeKu +z9vVzf1v?)^3oNPE*@&GF(7ik2K?{+v9@9KQ#@S87lx+uQDHZ~DusU@0d{MBS`=fN| +zD^uw=B2F8SxR%B5aE79{_|$;K|pf|R(+KoM%{ +zXbnV3ukBKhZWJp`oWWDbUTXsfTzy7vfE{f_Q1FCKlT&y>w>yj&5(R-Y@xJc(uPIuE +ztV(f50yi6OkupY<_`3k|Pj&^I)tPo)PQ(nxpMUc`l+^x>^!EFE1)a~JnOQDDbk>6u +zB%CX}{OxKjM+((OKZHyFeNSO3yrNG-{IorM-9e80yfm!Rd}}BEH_frIN;5%hd82hJ +zxqDnN93b9x;SCy@#r{(dpTGZGd#ohazgfx8E2%S=Xw~``fKJuws$9a +z7eAcrM{_X3fL_uw{0QsRI1dPiM8o*n+r-g7tJ +z)+=GW($|-i#jJ3LAO#-d|FjPh>s@xfXbF@w*VRG2vJ(J}NC8P!# +z#UcD?&sT=eGg(3TGlw^`x(>-4;VHrAw(^j+fhX;hoX&Z13Z-h8T#(9Lew^qaz$6S# +z6)UrgK3z^xLc@kRK7XBw@CSYv1t(54y6oaE1ck~g$Xx!BgSG-jOr6KyrN-;m0k_>K +zjUrb(sA?aet^L#iEg|Pv!WreEH69$$y;u6}^0wDRfE9{!E^Jr=w~6iE1Yj3nsB3O+YRc$XNVK3O +z@zJ-e({qi3b)_y6cs;!qz0IWuvvPN=i71kbeLrne>Mvhpula)BLO=UCHoNr?fPKh_ +ze_6J{bh+#Ov}8>9&GDO=Mh^_um4HV8#ra{-x=<*SwTC8l+ldE$hk6bEh2FP$20#i+ +zHX@Y+rAjDSs;+N5YVa*S1nrq|sYi_@*so6#gQeAXm%kosYi&<5PHI{pVzKZTo=W;Jb@3+7W7QDfSLCrSR*LpP^ +zSR)jAbr`=(UI8anVM-(Z#Fa%6rvBfQBLo@(ctu4#cqr3WAPOP(@?36{m2x^%Z|>Y+ +zQ#Yp^1vb<-yq0p}J}e4_@Vn?qJ=?*y1T~>{Q)>t1dK>^#NF)Bhs-7upj*^%Z^W{L^ +z_G12Tht1)8w%-6yHO23=(et>oW08{dzW@eCaSo?C=QK_}yPflZjnpxGHA#CwmLcW+JxL7Gm=hcS7tPdu7 +zK90FW_YbeyBCX;}&BG5a>#wS~=-Y7n3^XVdah+Ut4S~b^=*G8Q=qg +zx?G2zMTqYh(~HtFa=_;*ekFrn=(^!9Cy4Ou=MQ{gPEnzAG+yH?u&=~lxA8`K#@^Ii= +zETI~iOfu`PHpy-p;!m5oFWz~j*W&4fJK8~5i?!q1RWe#*vtLy|Ihdu=UGnnc!BPhPGZQSXTeZQYwz0|?TFEjBD2FC@JzN!MpcDc +zS{q%JnYHfMVzvX6jh-pVQkvxBM|eHt6z+$YN7@b{bHL4pf2qEHk?IM=`k@Jvm-~&^=d1CMafZbtCY`pl#x&>1W06N1-6&GSr{YT%> +zaO{|^XgUsGcb;4td +zEOAfXhg|>%P=h}IvCQeMDSQQCR{dp;z*g8<7!;C;#)Z!RgH}3`M4?`B!uDABK6FDi +zsVL~~H@46$2r>o%gDEXteOT&!{wYMMXQAIYzQ4am3dylm&$`3+4LG>O$rV)bi&m6;npc}y8Z@IMV~h#O63}ox +z@L?(w0kW{x&HgxQqmdgQTj#CO0x7z9FNJIV(o&2t@ftf0^o}xA-Y@K@FCP@}A)}~i +zOIwY0({GIh{BwDq{}1QWC@%vgh>q>MFaEPAaGg$XT@k-8FE8^}NK3BM!jY^*%uga< +zsAJVeHX}k-+LWUy2kj*3f^U{?$wgT=1mlEaKQuqh2l%^yLGXg#F#i=C6xbZH} +z)Au^+_ai_9(kau?2jVFdZ9zs=wk+n~6{HhZk1xGiBRqPWD$6ElNu&8#3;+@gYg8)F +z#GWt2>}0w?DC4~z^gVR0sRAMRRr8(o?N7&T32%$GzQ3@6WH@tnG#OyY-02CxN!oHx +z)hvatM=NnY&uALzhjw}&*UqUhl%ZLU54;m?5iMui4P1Tt>+u>Nj5|4`@2qmV0M_~KmZ&L+atS#joFGD}og1?)@$KJWtx?mld_kJ~LO +z(5Kg8kCnzPA$yN^7gF(sd&9Y8(6Ip9TAi$`E4LqlMm4?w$n-Pd>GRNax}~w_n<`3@ +z#*!awpmoL~Rm-C_%lU5t>dq7kf~R3U(MB=(pg>|kLWy8xibh=iOMqRng0UmHdu?Rb +z0eyo&g=v7zGp!2QdZ9)0XKZHPib0`a4An{JGA3=A(gZ5?c26cR82a9rH8Y=qDC6AKC|eeGp$Z$21Yj`j1!C={NH28s_4f-+7|2#n&uyQ& +zXt#+-vq5@IuFQ6|I(AbRWxDyLOS{eDSJCIC!$t@U;#bx+p0=MPezmsZTr&tFd$D-# +z70@Uigp{aZ;#1i*BCsVE#GfEXyUW80;VBFZ-JA2sJ6OKJbS=VPDE(4m0lVrXU5z4A +z&iin-Vr#lo4d=qWmanMuD>^l@Bn_$db;nqy9~wW2>%YhC(Etbw|B=$GBZ2@eU~`K_>3 +zcfDY@>*qJLY1*heO^<-izbQHU$tHhd4}|tz$pMIEeUIj=x~?lyW=wF=_3Icu?}Apr +z^);;EHrbY!p?AQR%Lx<2jN?eo->!;p(PwVV0X7G2J`e+-7n}0GD@FWSUbTlmBd&g+ +z^R9v9Gnez=^+ojN%)^Hf)@&Fd1OFeiM9f#gz^n_HV3igd#!19JI6t!Te_)3bnj+8Y +z5zd$2FP-V3Akytg^wYksYyeu(zR>F3C}Ju}cf=Rxjo@sdO$C|MQfBb`KxyLQ4r!@n +zGIX{nbpcN2*YTvO;T5d9kCPxKb0RYiDVar=j$CGCi4M{Z?Mi_tZ4pE+8TD13zvXcF +z^!1`5Eg}-{OMK$GzT8I|IuPWCG$X8ZG@J*7Q#mDPX3{g2_J%++h<&BZ7 +z!MlZ4+%zq)plN}PZ`{&00w=NS5RQ5JWFnyyrCW-G@jI;MW&5e<;mr4+{h(I>0p<}O +z9k7gSyp+(TQ;OWL9jQV`IvSD{a!Zw%l>l65g3ic@g>Qo +zgbmpap3o;*uLmWd`?W|9r$PVkHBGVC$d6USui}j_gp?ffXpq|;&cH}y#K(c&m +zs)2WDh+Kc3J{tT$$mAC%zyYHL68^x?UB_6f_UeS)U_r?_$7zd;cxTJ0=6I;$kc9|D +zp|9nm{>k@ScN)9uU(=3;SM6sg!N+;>SDZT?eEla&x7N8{pyEcrPZmh1UBsl02Pwjc +zr~m-QJE2H7VmQXp+n{L5dI~4x(Zz%kT3J(~C>18#FtrD;S`h+aj*_iwfR>w-m^4xN +zUCk)zvZRPnY)s78?zAb>^(k1tM%&ka^!?mgWLxonI5q(YWfnw-KB@FHk4wt6-#jMS#w1lRm=gBk&j*^jI-r`bx +z`j4p9f+b_{LC%E`p+%+#M_f%w3ZgU1qCR<95G(Y}gy_o0%S(VhIZqIi18E9T_@}hS +z6s|lpA0R9HsL10)z9!8fAVur{h +zY=cxpz4+Iggl4|ICudDZEP}a=(=k5AM)$0%YV@|ft}}sj5q!j!XZr8-w{8Tk(QJ5e +zT3$AxCbV|IjBJ$eeR-{=fL&_0%Gv9e0@N5XEc>*!PMVqb3-oi&Ymy&iZqI?;YiOXTnH{Nx@)tVPM`) +znnS#j4UH$!zsdIb+bH0(>)w=nAJTOz;lEGP_NpGe)Htp^ +zZq6#5UWW(&AsCz$6N97CTzVk_|0auIn#mapgFUZDQ1iY_^f%PcXVg+vjo5O04f5+n +zuau@gMMQM3SLW`S%Vmo>Gmn1k%b57sW4FSbT;mH~H481A4j+TdHICTXs*=8U_e3O( +z%;u)_b^ta54#O$GOdl{E6pKAszoysZatwo+@eaRgAzY=1QpW6zrZd|~FD6NHO;Cl# +z_`d+VTy+xL8X%C@L22>MZ@GT3bH`hhc+Q_r;mTr9+z&f^?Tuit39;5d;Gkyv{Y)4f +z?)w(MAhY@-_w~F1_ZURbY8&UWSTV@NoDv`sx8N^t=Ga~uz;H+kERQ4K6sj%(o*u9l@XM)+ppHoEGw +zHi8}G*f=uEUK$o(AdnX=Ztq|j&gvp^(r-AVnJW8* +zCs{Aif{Ju&{4M%=G+V2u +z3=b`L$bSM=v8*Wzq?q1m|HFirxyT1>H8uCirjnGkkgbH0}U2&Z&!@i1@4sxt~_|ypP<$6*#Zy2_ACN +z_J_Sr{QZeB*0Vy&rq=U;U+(>049T@3OK)_2&d?w%T({a3(_lbQdKj{73pgy))9Yme7QACKSnCztt{I_zWcwdj*3WL$&fh`ewep3(C +zM8$Z_{nTl<$i#d +zX3TWVaSJCCIqg7x7n_QjP)ZAK3{y~0zu$8lwIYt|<=0pDfD6Thhcp#dbW~jq++dB{ +zj0lNqfgKA6a2R1m1K9vI*d5w+6A3;5lClkeMzAik5tou|INDdL`44~%uCIXAS40Lao>hD9&1eH4Y|0gwfwBgpcOjf#dP$U= +zv<{_as>{k(f2rh;XR{|QW9B&d^Zs+#IK`JAEZm53#P~tI9?lDF`YYa##5JfDzW6lq +zvkfc*$ +z$`$q#`Fn%Gnm-Lh#8Hc>RCQA5$!r8u-qOR#viO}$sIrS^Y?dwg6%*O1kbT7fm>^Gh +zkshJs@p4MJ8V+yb{o%W!&Bu$2Q7EJKAKtq%W0eof>`1e@Q<>Yr)>cA0t`-T1h7TU? +zaQJxg3MUX +zrBr;e{E6{%zKb!j_O1ySPmA%|pt>n(Ol}l*gf?M@MQCay+>G>27c+kvs +zCYhbkKcZhPBZ6vc8p8G?*U_t{-r$p$3=DTqBmU*D$!vB%UdWutDt09RR)#VxmbDk& +z0ZTpXVnEiI9iy|`GQ|bw@|ntpy}`o5@;gGl+yL=p3VU&W`^Z3wy$5u^!XfHNw-Dh$>n6V`2KgS^+%3wHL?1UtlnAq7co +zur)4uU{x~Cgdm}79+nrfDE=_v1NidafOjsP)3_6cKvQpA+bP14d*=gMWx8@#gX^sI +zyU6N%D|X#YwZwhaLMR8?r?gUttl~0?4lZxv6&2yMu?F28K%igHoT!NQVY1sA(?M|* +z-wqQbWD;?3u}?1pi%y7jj#r%rhraIR$Gw3$Lv5avr`Dm_f-BcUDJYZifHS;T66PgUL56fW;1!~T*k!fn2 +z4J=c~%~yWHK+p0AMkw#2Z_-$KSHU&RV9Xfeaf|4XH@C>}YaVkMf+$9CBhJj0@wlDGvHBbw3YL1=KR~w`MbEZG+Y`vn5EvG*RG5vTyy^E;A^R^UE?wz +zEi!?2sCw$8BRa4`+&Lh%KforAs9^+5%4Y?XQLiK;h6#ty@wxiC`w6Lh;ACzF_2~c4 +z0th-UvUW$IDmCOdx!_+%f3NAn3m}n%C|}JBb{p6-JdrUU_*KQ`@#O?b;bTzk7O4Vk*c(lvI(}=coQEg2V?x8E%Z=t9tH( +zfX}jIqEsNh!}-YaifhZ$>)T%EZ&3a=GO<$|gsP2h&Ff_R2@jsWTdL5lM->th5=cIY +z&kn8mG!z~_7u`qN;<@S^@OmX%266|__$L0F0-OVE!tpZfe`gPr`+%3sq|PJcexzk= +z>^X%2qRUP@zw^!aW#hge1r@viS>VXslX`#)4J)irZZ +znU%AKvCc`30GZSx-G3%tc5z;hhBn-Wp#-2H>6G8KY{ywUs{9m +z2G+5aQ-|!_@<@LDA5CW&6?ON1eY(3lhED135@{(3QM$WB5Tu5b?rxAyN$Kts1f)y4 +zB-Hyk^Ly6+4KIYXoLTdo6W8ARvvt-*ZBV;vlXvIE{H!gT7t^Yqmbs0DRq;<~z?RIs +z=1+ZKG2ztV_Ju*H9^$SN&@%le_Hf{|kNb{#ub0F0NG+XL(8U0EuURU(*O$(up49H6 +zw#^2M~PRRn-*f+jHpW2OQU!C~fTY24y%S7rsn2>;R@XB~kxd+eo~}$_d-u +zc3)@u_v|h{KBQR$y%l7>F(%zXd?dW7Tn?P@Pk+lO;bIw(#h2$8_f`|&`Xs;DH>(v% +zF{KtKXbU^fs`~i&=meJ=uy|TX!93yIh6t!R(rV5USGFk8*~Ya}f<*z~;`SdbudlVl +z96sC)_HrX*xmTOMZgE5{z +zZ?ShGP_4JzafUcucBTAVA2PYV{?ZH39Ya$*;ciST<{=b=GmQ9eqnNnGj;RUCP1XGD +zF+i^E%9duakcKGI3ExPabQL(UB3B`4mURp)xRk5(>8H_k4=C)K{6=^ywXf +zF)b?XSij!=O)@GAr&>WEpUENrf<%OxvO~l;IaaWmBidn5Hj=+F#Jl?QXXM+A41tdI +z4zDjHE8U*Q+CKzn#5^}8vu@I%$}{Zl^yCYoSy@C$+O3pkdvC|XxkK(o_7oOuG-l3D +zh*Rwj{`-%HK#jYn9wzgozp-^BTcaNUVo6>DuM_(fuj#LWu0m#?s9HlYM{ +z+&Q|bFj0?pepov)3bS-^sk^wORM4{^B+YE$#@cMZ-gZWoQ(*kx$Q0v_4Yhj7+ZIlF +zlhSAeEYRsPqsy>^=vo#C|HuqNo9$gW(ySH)loK7^7Tdu4*bL|8|i052M{qs +zuxhGe&sUMp8{pmxce(boJS1p;9|HBXL*uAu%|s+yssmODBl9QJ*m1%iFGPWx38W!9 +zopS~2WB1oHy-!v*ku@@PxZn3kG~W$bp)g4x`;GML;x;iJ%ar$G!v3AnoMcp&H#OR% +zy^Z9fK1WNmXmBV$YfoM&MhuV+T#Vc63RbS+2f4VotgJZ;wU9G;mQk<_sqSGZ9M#B +zP)$p!(EkO2>4PFhkFu@9RKBqK4MiVJKBz=5Dlp<{^Gy3)A*<9}i5|!4Tv=r^>NHSe +zWu!qdn)_(2lNeR?6w#{WZrm +zhbRqQ{X|nxc;(z%2M33S7RN|_c3R#2pM_+%v+nTd>T04pg8NDgc70hn3CfUOVuj^<<{| +zK<-~V&|)}|edR>U7yn6N5Vmi~4#=EWK{FGb#YB+#ZAtgz9lIiXsQH_DZ;`jY_689r +zA=im6f)9DFzhBOIFQH%dMihxasoqIGOzaXQ9Rl&$Y8qH!U>qnfS(Ne!2_1-7H-u+Y +zH;Xg5%B=mx4_6rDgu^~M0_Syqp+>C8*yC?e-7n>u@EAOU@LOloen>v?vW@rFW3L7y +zMA`6xY&;CbF!mRtiXtOVDp=olq~nL1hsRCAdZK59ewXThUN3@rTU;S(OZ?~6o<|7P +zOxtXUqfTS)#bzsB`yk>PB|74D4^{H?I+ipc&PvFd774%Ima?cZ +zmP>Md)o2wbm$|UNCkX>zzt>(@OUn|Y-BmE0Ev?VIFXpE1;>h1Sq^hNB4HA1-7X5)y +zlonnXal&v<2&cpkxxNc;%^J`B>&tHK-erQs*jqFPdrvzGwAEH@Y}V?L&_}TOx2L9m +z7#5ob7FtHFFu`r@9b{kr{sUK(8vb4F)PY46tkU<5IkmD%9LNMj +z8?77!j)uh7*P?p*Z(GY;P#a7&<%j7(P&DTKpB=tZyGmX(kLXVryVbv)#x-+UcKhD~ +zjS3b_k${;)RGN$+2%>f0yL^>$@HO=a`Kx&03o@w5@fL75rR%E3Swa~gJMc^_Y8H7Z +z?gQkNa?W2vRJ*Qi;MdEfx5&54;N@LN-Azvhde&(^t>NQ~g0=6jlInY0I1J6ZozMQpu0w@k|yQ=DJiZC^GZ?ZQMp|fAA#>>&` +z@l9CY)(-=8L2z7f)f0)(2&65t$X(?0;7?lH2-;PR#pj7YKX9mgeS=w4-dpLUdBviP +zZ^&61%pp36LqwB5Xlo(TctnXbJQgIx;{L{nTea@(dR5_Y@Z*@7j^DDcRk#s3BrK5x4k +z;321tDe_XnY4b+!-5=dP(EM@w>HdzS0t-!DsVAREk@w}~xZ(cy%y#<71CoYP&oTLH +zPB86XMN|uC~<(~EAZrJ!Cxy~_8%nLe^&(6u%C3|Ec +zHYVtu1%dci*y~QSR`A?&8AIK@Xna}pqQv++Kw@8gtjL}@@6THyIg@?!93h7Y=EWO*UCj)R>VU;V{w49{VLPBd^je?L0a)sw`$ +zp}*G_$2=M8WxB=wapeS!dC`U}ZV}c9Qrv@9{lH5fi-5zh;t%wB`b~V;>xDNEBWBh> +zhfrdYMnN-%O`+$C^IwRrD@v6&YICENlfT|O3)4d?V?)dX{#HUs4hganbP*K4y^O8= +z_B+9agZiD?*<*TIn*M%#7X>Bij7nJ>Y9ASH!8^uaocJ)evnBKtOjfn2Q@LB}nJ~Yr +zDCi_*^eN%!elnf4%!1Br&lsTv-Arzbax$D8FCG`9)ntzf&a-J_DNn^z*+_3G=P%{r +zL0G~$1y9&R<&t6FQPm*?4{xlLS5q%=*7Vh1=*o9ss`AbLf`F5(o%3hY11iQNRQ>wR +zq?W?4RkhbMOy|ZyK|ES{7D(FKFvU(EyjzfQ` +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 +zw3Eunzbv3krp!mq&rfL`M}~_ +zQOjGiLNrRRi|5eRLc*<$;N8gBrL>yQaqUq85b&=gsLoPa&@t`ikEi+h%+!Y`34^H* +z-&SDs<9Bg?8na9~vD0-GU=cl(X9*tvXyunz2NxANo$FCc_IV`LgWDJAL(-}*+AQgD +z?O!7;X7%mF*fJb2FSS^VspHqt?P*p}=!_D5N3a_)tEH3aE@KJQVYw$TPfhJ2+w?ok +z6&0NwLM83P;jwxdPi448l1l#}%>1oMN*IAQZT{G+p3l{_;xs1u0+P&Go8*+%yMvaaVR +z>H%yYjI(G3q@);geDu`eOmEXQ3N;M-ntr*wJFyRNuMv&aFi_l0r%#x!v>*xS>MIO$ +zuzX}E(JNB5?tGamU6y-xM2PyFdm(MP6Lvm)uqnXx#b*TpPw3urEi8@97l<}#_2on>G` +zB!-iViw|OhAjo}&mR!aTS}zCVlx7jhhUU>~!g&k+K+o~W4APH*Z-Bu$Hbl-S^zt$U +zX#nKR3?p0YPf6DH^-==K_^;1(?m} +zfU{FKz}`1MKYvoGQ%+JCZ5}NC;$ta`tuiB+5xxK4w&&^Ze!D-(Sa8kcHm&FChkO~f +zsQN>a?z*|T3|kLHV%~opwG;$Ny>IugbAoZ-rOZ7DyoYZ@{mSqu&UuiM0?)(xv +zB#=@EYg-3FlGQ3AWL^Sz1RDhm-@QApt*O!b_}k~Bu>4A5wDKhwt~^4aqcBdg#nURi +zm=@gQ;&-d@fNS9J%ir(S_=VegK4By^q${K*%5R}##6#dHfqlE#v<)a#-T7f9+)I#> +zWBUYea4GQ^^L^Z`7avcMw06{w +za^$~EL6)Md;WDKj1}(WtnQ|^;bclpzol!n%IjSOVShh}~jC<;adh%xzIMI0;MZlDh +z&nG*h`}Il;)}4t?d%99y*my*E6~y$HbgJ7rs<~l1S+@rEB;FD3)1v7TSA&Exw|>M& +z4KVY1R&m +zgbSCc#!P&g%Jm;@{(rC-!#^ou9wv$+J0_XJTJpW^pDuiqaXPF_?yhyjH=EnAtGKSV +zif=yKa0Xf2m92ov;o+g`23i!9lT9kv6YETBm_<(Xl1-U4H#{&43Vqw{?-ib~839EC +zv_&UM9j({N^R3?epPseed-zKwdemw=T1FQ%H8#$h4d@VRk*`J))Jc00OH9W0gr1(B +zPKFFYzbP6X^d><4i>ihNqa}zpgWuJ?K41j!+)=1Ghy54Sv#8Ju$ +zrSGg>F-SySydoI9#%#{rW&7-D^zy_dj~sPbo(W!89gJX`L9n&qb;(dT{!i2VPdV^n +zjshBr*eX9p3c}6FoTz`@X1|Nn@#P1E6*fbpnzRfWRvisOp##t95Dr=g&4049vUajl +zX1g3)BuV;32_xygbElY? +zJLSA%B#Q?5XIX1$?ur*O>F`Hj*sR?r_EVOQk%qeXlQD>fR@7(mjZ01?sf?4=BsIeD +z>C_CP7@B<VG1Isr%yNHJYUhtJqPmP7%eZ>}Hv +zf!Ur5+zDMXiSTecXV1}XJEBDUA{wPdQtblpkFC`X;_140@WK_1qm)bRJe7XuxVruY +z&*sKL_`)1vgBEAFY)Pyz$A>H1=)`ai0(rXrPE4@f$Sjl3i=*Z&OY_TGRWGr20C>E9C?e +zt7bd)&X*N6!!3R>muYHcLoU3fXmaVu`v{|7h!q=@9o3CDn_(A}oXgzG>lw5&M)v}d +z4}d!7`t-8eQT +z_>G~#8UEPK(SVaT#-O5AwP3%;tyNKOIs@0_4y0Tf3&s*e+os4$#ADcWau?)61I5M& +zRBwjYsNLnrhOX+s^(j$fc}R7HLSC75ub +z)b?sIWAq;p`Mb2}7|TUw>=GrsK~YjFaEl^=HjvXqUGIdH1K^a0zVg8q-Nm*{xD2kHik*?+Nq@i2NA`8&ay +zdAwi^DFnehDL%44l*ZukmjQu7STBgXEKtYJo6J^7|6QkdO=YGlqJ~D?A*N;``WH;b(^VU?}Mq3Rniea9y|ND60Bu +z*rk|;9QyT~=D=Lz$)xXmx5Eg^`m>Ul@e8G6lcXvaT2mn-Y7WPd9MJUi?90&a +zI5ml@i4Jk@Z-{)-fnSh<9~tqta&S}u +zxT+DO1&e8h6`eNAo$r7cC033xzXaHjp!Lc6r~o}-suxFN$zQbCnV-(-s{pIIF;xZ; +zR=A(akFRKt{xpAZ-RtiyIfUqz{z?wOQyg2dLg=640fe2u6X00xGiN?n<5!fHX;fDe +ztbcVYe%W-djQFEj<~0RYjt9J5k77wI!L5Hclex^$R}$A9`U6|ea*8zy*~21*fVq;y +zaA>nGX5IvC3epgm8o&aDSWtwR^k`_Fy%PVI5WG;~@U_H%1RY^nK+G;TXQA;wuu{hm +zM-GY`+3jnZk@_J_rxO-}ukxm^!G-W4MeNXh!&3gFDr}KMBiCcDR5d*d=zo$HFVe_% +z@JXEdQEHWcdNoYY{`W94ObR0JhHELrhJ`b>Jfn78ZpJOD@`f>RKCd3rmp&W3W&!@q +zgu7r~qK@;yOE?JRY%7q{og@TH&#>e;k~Rpfx}^FT;VLVe!s;8ayc1Feffop2aXOzv +zRZ}p3*9-fJtOQE_FlroBm}GTrBNHrn5yNzZ9lu*p<0k@5qm2WCxZLtG +zum?bOSAYD7(VLJKsC+*|x7(ocff!@!4)8Xsz^X;xh(pGS*UP||#138zqGVsUECZKr +zo|41t+aRkh9GiA3(4u6*$LeJNG}y#Q$)!{?((!Bw`Z&^ErxpDhhX%KH({$5A^g1-o +z-$ZuF!uS}QKtX)Qc-P;>uyc-PZ)_#|l!UH-RAQCEUbImI&t_BUG(n9dl>7>Gf^`8V +z`$+fB?-q&CT#rO+%hywj7RhF$f(PVl-0KgE}G+M7fcZcoca=X(hzJt>uRoy~34K{OR{De@G5;_*RXQMwShX +zl{Lm0hWF0F{b&o8v|I}}4I?LC$M`i$yY3__q%ZFuWp@w|9qV~8nMvQUhBH#nCa6eHDunt@0fRa&}o`W)}XQh9yOA!a_U+7;Y&63XvEPCVX6z+6)ulOf-r? +zG!4@BshaT=OE9%G&vr3}YA^F-QaI2E?X-l>It2hJXdeG}?2lhvLVgFkAZ3nBD{-rF +z10$B-1HhF-V-&`yZ$}%&X|Q_i(%@GS78I9c6^Hi9p{DL`6X4AP?_8^o>g@-_4-b(v +z{rQfqZ;}#`UD-b5u +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 +zSOq>}e?g(b%t>d@0olMYo=ACmuQ= +ze(*nS7%|EcJMa!xCJuEhzyUX#G}P3pqgr-X=3A<;b*KgYt3p!-)cXq&yX16aQ~;v~MmJ +zT*LCK6`s2odU5oL)zSD27U>as7S1L4vH~!s3KrDrd?3YkQ>&7r%@rJ2f>+ +z)PqdyP-TBj*vg1kgh%S`&r*?)iR;ttF*5&~{s%eP(zlh8{`q$Ofl)}N1VyZEIUZvz +z4l7x@Ldu;R=Z!V#=(EJH8^if_WF~gV2foX9E;php8ZYUY9F)D6#Fj&M@#doc6R>hB +z`YrI;yQu3wIfZ#(CinF6Y6)-0wN-TI8KURURMXA~VHF}q{AxGaL-Jt~3lgZMb>P&5 +zBJPox>bU?XrrBX1-ce2jtV>J0M!24K<6%P72UFr|QGviC-!Us`^TlFA?HHVKu3>f` +z|M|4(_E=`ZOp7Tyzn`3^mz&)IqDqSUGCsBCEQa9WfZU0rO+v8Ms5gWK%}^L~8{iu! +z&)HeYS7s9elmba8y(92UxkLX{hvel1d3YS?3ZIsK`+>w)W0|h}>y0IK;hL%8flc-+ +zL)#|$P_1G@qynN2jOh25Tl$j<#5f25qq0{U1h2ticGTpA+*V~N4#*EYc?bs&IudJ9hEup>i<@Qp{ +z`ich6SwTMecu0(^A>rS^7Z0Fwi0dDi@CK6H)s{&pXRdDbwaO?cLej|vLT2)yNLpRI +z5!lEHACU0WojT1G7+t&J_P#5k_2OP4XOsaQr{fU>vF<@SKKm2V%%BbA`CNKW5AM}5 +zQTG9eK34wmRt^y-PSmc8>_(4Bd1Ylw?}iSlGhZL+TBylR{Fl>8=*JKd#?&mLL;p$l +zC`Z*xyGbs4$us{?gjUT!~?_glHFWslX4+ +zP{A6$w;cC?LtT9+Ne($92jdG&+Ign~+a4 +zIy_{**9rncB>(7gxPrR}3P>ltEMcQQKAkBog6!$RMrpIJY7)t66Hsz4^ap{%Efbba!XvZXWh@bD%bcn{ +z7C08mpVZ}hn6>=W3KWHsN3E~wAZmm7BK$VWFCxFYjPo@spwjOk^Mn&iZufU2`|@Qf +zyq(V2bf|_mOY~oXU-@8aH+TG2>=41}qm?ytHy=xo?f;|cEWD!n-Y!lK-8~4>-7vra +zA~7J{AR$Og2qK|?(lvB~}}w +zZK2H=@1F!#e2eVji(x9a&tRL^e85E^JWUr7DwNpOHXq7Wft_gOo+}%3ywbT;HAS5v +zm03wZ;q;C~axkTmqg`5t`Nb7OkGIS?7!0HW?%r4az;-1H7jbc1=gV6rb%veu`koJEM`4jq0{ +zLicwfRTY*XBl`p(3AdworLF#kv91m0@ZUw{m`^+OC2Ky1TqTHkTH!k&C| +z4r5z*vEAQ=kC(F9z8s}izs}Xswe#|E>xU0d$)1}L#{1)kV!~)0TUsYDjA8%9yhZrl +zYU(qJeY=H;EAnmR5TsHL#PoA7xtklW1Bnytx+%7=z5?#?s}Ar0{rej5@2k@8vy$$k +z!o}y9?7n|{?U2AC5dyUVn!|H*6WLbRnXBZzD{rxa0 +zg!CP2_fIH`6nDjdy|%6WIFsmIpnR@qT5b7vw8@BrpIFfga2hVfN-HghbhQw>kQ_c= +zLqoqB@>REf=tfR-YR*~@Woj+{cVe?C*G~x?c9cZ_@u(*Xl^bN~e@YmV6)Tjmdk}e1 +zvwAEceAC^!bL9&thtyP_rrijJJ8C4IJu~|c*FVU={z|y-YMEYCx4u9RE~&ydDb#)Q +z8xLVuDvZ^K1x@rLLI2{eqYMfJ2u&0`K{?u&sp2Ou#v+ZKxD!r?o+xv9g|ehbCnB-f +zOidQuvFUowKz*O9HShO*?wL{1sn@4+wyP?0&%Ol8c04&`DTPt&-Duk_{w~+-w&9Lo +z$P3PT*)rLlOIL|`_Y7N=g3J+M%l;8me}{_MiigSXUAvqvhq}YnxP0Kd3d17VwwiH~ +z!w2-MS6_w!EyW+4)GvYXI1Z;F;GT(kkikCuLiRkZhJ*kF=RQ|4@C(FxtUt9^ZVh3!d!D(9tRr=Vh4d0WR)w){YQZQWF?DN^>| +ziQ-2*ZFKpPe4+B?kUYm#VI;kd*+{_t{@@CB*xg&X(26eP1@K#T?f|VPd{6ni`~${F +zqk2iUFXqPjMJMa85%cPm&dfzpOC-`ifoT{dSt4s0#Lq{C43y0C)AonA)_%=@N6LFi +zmZBYM`~Tz<%3tOAJu10N&aaPQfA6?sy7ykqKvb|nuHyFAAezL_QKw4o8>dJ%4WsZ! +z{eOe3@q9XEHo~EPo(9En60Jgseijl?trhI))o7y|XDejgeOB}0y#ceuZJ^wwQYAs`J?f7B +zXZ_fwr>vhbBun!(u*W^{N_gOagYuR?3b^~%{rz3>OFS`AT<7Tyj@4p;1Y0Ys9a|&22ugP +zw0UV0&<1BcWkCJr0`&Z!YCot)`vUX@sFON&0*QVycRHPKLbGuR#zZ{M>xy?t(Sw+m +z$E;0Lo)Q~O!w=s7bQOB+KkPKpj71+#gI2oFXobjp^8i`}c`%K8%0d=mz55K#7{AF0 +z1ZUhw&H-)*U4xz#xIYpy<}4k2@S|9%Y>$#ACvH?#td*>9-&j@fI8C`q>*(}M|A9F- +z1R{Gl^wxW#t+RjX=(;0*CiKY8p0bbw6_@iHHSq870%T8)6&884kzFN$o*ciET!Oc& +zt7`?mH1gs#kvHxn-!+g^Z%r^a3{vvgp?nE=DZ3N-f-O%UzkOIEE{rJ=3m_fhXmk6$ +z7fn>2dX!O%jZy^E4iRXj-Ef>I#;?cOxB8=R5QkLUoca-eUwvs$IJJN-7tLB?PLpoR +zyL^+!wHgR>-f)GGc#yTuY{&~(@_xy%k^4~+<+Pbn_CsOOVJ-;Qnj24)qQL@4N>A_v +zD}Rp8Vg<{lbHZpz8UrUSwU&i5lS=#A3tXYyUNXCsUpS)vVHOX+c=3Xs>ov@qQfwt} +zjj`p~@F-09!}=s4e$6?v4NWx(jjri~T;Nsv@0kZv>b~^xC;iGKH|sGGM^SMQK|Gdm +zxc+hq;&#FWO~8g)(!Qk`mo?r-Y95@Mn~PtWlK4wa?t8)U_H}oHYm^8nfkOA`q_shf}EoV6ob#Tr=A9E61XXH}VLFvBi2 +zi}apLX-pT(Gi3`C#lAx0>)wrV^z +zeL1ccN?)S(Q4T)|S@XZ#Z`Lv$jr_Y7LSky~%?Bt^DDMnAPGLqc`P{~=Up723#ZLf< +zPa>KaBWkkytSHmMx(!pdbe@JRwZokG_aB?%UlJM9yyR@OO+6%1hcW11nJWx7jBExYn6rdhlKfZ2_E`9`p +zTow7QbxLd~T3uJ(g9dc8Y!34=r>pad=kS&|o$I}!hva{`B(^o4=r5R<{zK>Lz*-YY +zB#?=?0Is%uASIjucl86^_Z32z@T(a1-Dg*T&%4B}^v0pFT#7g`5LeSW*k6%2$JIX9 +zgL&jd^c8n+Z7{O(8bje&5HOAYf+X9swCx;?>^X&xGv^e8$$~|@1HV5U{rox5EP(z% +zVzR}t#q?3jF9DaIu`h^|;*ozXwvTOo0ab +z`rh-5#|QcWEG-C*mbKTTDG`rV?nx58iMOD?Y^L|)89jJdMu3_~=Tn+)K>wlHmWwar +zY*LYAtcvOl*T!xq*p@s{Of*Jd6=kv9gmYcLRomeKoRGJUcU^NhI*6=go(|vNPMGxH +zb4dNLR7H}3>|WUQPbq{R>@A!hjrl{z+bEk3(dvJ#bY`Q@HL0sa+FvqSy*}6&tSK_a +z?-6|KfrKwPJjd-0-p(gr&gYi7U)fMI_h^Jbc2XoB?KNE7XENz$6=s*^^=EL?x--ob +zcs$NNWLzA0d%QAsQ4&+3-W)nj8l>D5jQEQ$9Qid^8-0|;b3FCun~rnTW&&(^H^7!O +zbO+A&C3VpU^W1fkkqF#W0TA^uuku;Uw@OciyzVf`&r?&0oAX6Zk{s0J%Aw-ggXOITkeA7jM0 +zwy+-_3(U;Jy$*fRzlE6?2qQ548%r+{Ra#oAfW8-srY-)jS*|*vLZcu8LQGoCf2@Q{ +z|L#BbA$Ib`cA`YTRN7gR`ugdhAUCj_P_o7&9SXd5+R7pD+L3Y}PsO4f<2|E|tU8w5 +z6;b+oyc;R;O~hFY+T`_;%jJhH;?7|@TmW&&UrJQ<`~W7dc~}>OLnNMKq3wE8H!MMV +z+o3+*W+2L0cA`aA;((BBWGNVC-Sa>T!w}f(IC`lVs8>{Oq#zZ|zcBA~r1LpImskTd +z8+SijjTmn`B6xn)OGXvbPib4S?_KhneP`z8V%cNH=_P!(H~#S*t&5%dD4ia|$ntII +zio9Arju6=)za75xOeCsgNy|$I!8YA+%q1c)#hzdJ*_V>dj2y +zDY12dd^Alj`$rD;Bzbd3BLt!xSCK3dB&W%*lyLP!gNQ6LrJ6iS<;mf=xbH9bwIuqpvagfms-5MtKld}P;fOL5 +z3DV6R0+?JFRul{tc%!GX-8kJYkOaw8BFp^tN3=gfX0DU*Jv03e3=N~i%QJq5(zJHG(~t9!_2;<0OT1^nLa0#U@HN~NvVZ2CH +zeYkD}MQQ9M+0Bq+0R%z{8mX(3QqmJd$h4`$J&6kO{ni4z3-q-S-K`JKio&RaAssqB +zZM2qrr3))6WVS-ZE +z|8^fg7ISC@yJe8-dg}<~UtV5*&>a(J!BvS;QTMsRmLaIr +zpDKR4uWG8KYiX$pN``nCa(^XkzV_J*O;DV9o2OV9#4RM>Zct|b^2OSE&|rDF2`l=k +zSP|F^8)#Z}$2l*T-;akluPk_1ZNvP6LpmNp#~^5qWL(=aujJ=!J#b}ZqOEorbcjKY +z|5Sc$H4-uvdPSJX{gr~OXQHr#klWi>~^XMH`v%`u6}M`L+DSN?^7%H3G_=&p8BMn-lMg!LV`e@j-W2BEbZmbuU&krl;S +zVZ@M8IDdV_cps|slJR1xK?sbG9yI}0EYM8P&r0$_q+Yk*l==uh*KtB?8I3%?)IAo9S5}oE=VECM_>Z8kgDT^Ly8ac%u%mqs)484j>3-56vt)vfnKI4E^;@BHik_P?rkLYi?l_y)(U^aBm{4eBA3X{GEMBMFsv`|7uKdC +zX!99WNfLMtq;dGJwe6es@u!3qNl~v2enU5|nJD5)KD=7hqP=CG99nvmXsTAVMT(da +z53=W;hSs>8oM5U~Ob!sVWXMIbFn_CRgU4njGf3^SFzi{*AY&w?zdwa6_ZO{c637PF +z8oXs~dd(s=g`a%+ngN=`CO)VabWJQ$@hzy?C^lGIWjWZM=$+8kN}bfgR^uxg@p>=L +ze24ZR;}2az@J~;ZWlRPp?f-);3VDm%C>W +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 +z+FT*BQcmuF8=Ld~SKeSorD +zdCl}tHk%oKlRK`2^V3O_=Mg*sG5z4b<` +ztg1r)%gQ#(j06$rO190mx!Bna(HBa#-oOXI(MWf||HNQ%3z(=zKx%YKpRk~q%N>Va +zU0eRxO}zq+D|vpAN78T%D$sX9GXU*u111cO<~nBmJC;n*4N$Zv0EWmm+_+vPUATH+ +z!Uvc&25h4$?`})x5BaBmV~5VZ-IjaS-0<<^$NuV`n>D5&k6N9VtZ&8#O7tE8C*5fz +zFIbOYZYVR6wh;MKBUNxkrcstC;M8q{Cb~%InI!9SvTpvVramV+m?Lx)q-K+j7;Q8l +zR&hr;v>X3|@5*p=o5Qg6SC1w@-}baBWS@}*quLV|97ewifW?)U%o0zQ?zYiM$JR$P#U*GaYUkk2H6{W`CacnfV&VJU{&83OPRjb`XHQrRW!ufv~fSA2b-Q%f0 +z(f52@NHdy`5nrs@v>=S4)MHse6_wM-yzSYHmqY|J$<-gtT}=JkxLJQrc<#6VH8GM| +zs>?KrI-H5wu0SH=^1o(PhO&s9vV;E<;@nJG&XdnCOrANmAm!7Kz^&j1~jE%K=JW%wp|`t +zTN&0O@o5EoTF`-PW7ZqxP&$xKpBv^h}U3 +z{q>JTK|RfW!S$4#$fI9SG8LL^`5ZY!=z*lnhb>U%Y|;Bp*Y11H&AO9I_%V2PxxS5c +zIrOviq-yKNnj=Z7F`6Xk#Z1*<$oj=#0HfaoKMDHx)URU{I@M``nDwq(9(p +zH{gwqyRpw{7Wwe?Q^?w+P0TqOw-=vV)Ee@m1#9@$J!z$A^j2sWeT@)dG3= +z6*L0R94dFSQv=AQYR*2a`qS&Hw_$`3?LL#|5idjr;?YE__=4ifOR(H43XW-z*Py8R +zK%<24w7PMuLuFC5ck^WBer@7liD8HISmt4vl)3B5WQH?#?qUYMEa85S$**O983b4E +zPR79o+%B_&HH!HQvrKvc-}W!ISv_7hCFU_m3;Tk33i=2A9wN%cQ@|oCPZ_GSn`XF$ +z9TLBi{0A?zrLDE!Sk|ea#iM&rW}@ZrPln-q6S_$V!cGc9C(M4{N@EPqF3FpQy-AZS +zMJyGN&g~v56Lc!^FQ^RZMapmaP0lO!e2`iNhQqQut%Ch#LkicGa*}-fzgOS(Ae3K_ +z_A2t2`ia7tz2UZD7P@JJKX6|i466G-hN5`mgO=n*MJMXOz +zF4CQnfjEL>xHRmLL6FQ}BfMp7S_nt8t_|&1Wh>X;1g38Yb +zcBV|kmzFKrsvx8M6v?d;MDH{v324qV?jr)Oa9TYN?)S9=oJ4-4YF!P&)A7V#WXy9AMm%NKk>8BeH1oj3A_=WrHjbXIuEW`ZQxb{ +zYsY_JYtLxK!I~FhO-81htH={ipCg=+6oLtXbbZ2$BN;Rn17t6)(*G1g0JiP3@w=HH +zz)9G+n?ukABAgTFwzNv)2`mii+Ay8}9Hnxhm()9F`ugFaU*dS#7`n@joXITTFtfRd +zz>LN;oOezqCj&W)6iS6}{TPn|KQQ1xYUigeBS&T6(@Vt9Y5w~&7}Twlj9Dl$h_UUE +zVt-;=fJn;7w56w~f3)!7Dx8h>)t5YE$w5?#gE(1~N;SbJ)Q>M080q~8sj}eI;=9bv +zLRF?9{qQw#!ISOZZP0vn=(aQ%i9trB%Bd*qv^6ztCOVlv*A)E}LQW}4ujo%rn04R< +z;pzCY(_D~nGiy9=r)6n6?!J|kYgNEwH;&%SThEBf`R$+r6~IBM>H&bJ2NK32$V&ch +z#GmJ?c4|e3mE?&D*s75$jI?nhDYI}AtOXN_da_J6Qu1|n(nO8&>5u7gN~BIHn87g@ +zyw~8{x$HG=_wfCR{0LX6wd*6@f!bQQFSOwjsJ2R80<+nCC(X320@F0@Cq-c9UZ_O(vIO +z650V#ozRqG=mIz?FwN)X=DNsrrgOK4vw1p9R)m{?Ha@qze?EgvVYW<|Vp3k?0|r?w +zhkM^hf6RvER(d0MUpYK2v#i%6zBus~X|i^@l;}E*g*zE4kHZO-!_)+d@b9>k(%>2HrdY}4t +zu7_LMfhgL4tQ$XW#vprvPxt<0Z(9RrD=e<`WOAa9|SWdA@Svg3PU#wzdco<*-hTndm7q +zC2WaQHS2GrfrNu|#i2{DB;nCiW!g)+%%9W@9PrZ49+0RR)-QP=WIg>{1&xv?FPLmg +zM|4E|BQvmYxL`fhd+y&2r|G&}bZ+uBZ-T9H&pjt`nF5~@rGf5tHIZl~Hqh|o#7&B8 +z+UoG3Fs09CsL(@zX*niDrk+et>SO&>T`&nR-AQ>MiUmR3>S2B47zedwtO +zu?I7+#1#jN&d~koc4?DgDJ9Q;cL?l+Zdf*w@F5s$u|aSYazwB<0I4xLl!w!1U(_~a +zyynx+n6P(R)P*hn1wHGvM+z}oV!;%UA +zPmtl9L1RQ9*Mp2q^%J}_Pk@219eg(2zd;;#pMf5Uurv<=+u(R4U!+RNmtOMEN$>)X^Lt34$-8Qe*%Jx?I +zNB_k?caB(gV~&Y5^#?oh6BJfgENp)`h>BuD>?sSm9Fvt8v{XunBEiz(B_vS_(yXGp +zR0Jz>yp8!;=RPdO7~co*q9ko`j{zPwf;Li^HsX4kH$<{H+^NdMUW1;QX}D%`Ek<%T +znCAKWh9&S}%E*4Yjw^E!<8upG=#RBBpLDn6NMV9SzRs_9c8|gNuFIA?(13XjNO@m> +zsldechY98I`11v#69VPBrv!v%i6ERbh;fgXLOu=#l{z%VvtBKB>CxbM0x? +z)q3?8I84)=C%wh(KHi&QU`w8}IpyM7qnF@%UQe@5%>6S+LwnC){=vj#xi4)iwO|U46zgS;+0s1K#fP%IDCewt?Fji*Pfat${+lorHiuP@E3n^p0 +zwQY*A`C-^V**yF|mpX2dh&=a~)>-??hxZSU#JbACt@-gw^1z)Rp$0`+neqJiD!Fz3 +zzyBkd799oDfCwoX?D==L(98^Sr*T3@cC}xbb%ksnMnkQ}qtvTkygDI!_(06%r)Z5? +z8RuUFaT)qj_)&7SN@HVVFa6>RrTf!|_frxDWJ&*i+sP_^VW|=N@2nrb`^JXBybHGz9z(Kh$TDx=<<^;yd{$pBxk@XEyaQ5e!it~!g_e(E^3Y& +zxxkj!6N*!{`3aq^*>SE@Q=>;kd*>M<3qYEO;~qY~3q-1bID?{~#Y2OC_qgwtXgUr> +z1O8nvujbu&?2Kw~h(f;?jfyck}a@h;7 +z!>#;jnb**N=76FL&^5W{%L*L1LiLd%QD-Nb#_DDRaz +z7kIfC&hlq!K1&^2vT=U2M`{=MSJ71oNsWBzdqLD#MFTtam2Qj9`D22-vyDoG81xH7 +zYP~U`N1t{nU9N9*Erj>ki}axsM9Sj?-yH+4)+4%-P{Dbe#a21axCXtFkKJ;JVN@yW +z53uID1iNg={qMA>lJ|CDFR(qd3j6J3Z9%0|Q|N0RKl?elwVN;^U9-HYtAFPc^WbDT +z1vUcFZrcd-PoOL7Y;UUg8z_dUGGg$T@&p_l!YuS=Ndq#7ln;{6)HTNBNPE*0quCjZ +zZ%0iN!ERJP+(-CvT4Dsi&UFUB@@*5;c*U{0n}rOHMEZ(OBG|>w$TdN5_>p0GAwzR;6UYUiD;Ux&Vjoan> +zUpv;ezMldMfkj`{7esL@bZyW7-j%%kxP7?ra;Iq%d_^dXl<0`$ouzW$TnzLt&W9sp +zVE{PQSAUH)8+z+)7?viDI$;YplA}JdZ9N-b91Z9Toe8IpS_#RpgohhoMmo@9X +zPAI_;X)#0ic^~Wly#QvQWf+aYh-$#Mhe)D4 +z<8Azc1HF;X{!cHaPqeYW3iRZSTq|1}^RL-H{CHyqnz1|m=FQ*6RwI>bKNxAdP0C(= +zxA`vxmS~ccsY*efNn%Y^1b^3SST}Dr&>^(8xh$nyFVj=X>7*I)`!%rAs+H?A)JVOL +zB3*$$S(vbI`uNR>XmC15P%TcY$@ACkLy@IG<#ru%MBxt7NUaS~M0lToG+J^ZJxaMK +zP|TX>E6-1L@8fuePA|7$Dx_A*2y+YM|kZdY+R_c*H0SNd%z+f*pBi1?Qgu8cAJ=C0XEX)<)DbvrO&*`Fx +zx{rH#lB5)=Dh)E^u&%&&@k>J#3_~sI6_HM(_mO9tAfaL@>pt*^QB7)@)Ym=y;+;ZK +zH{_#>fO)&Yf#&M!!omS*OFzJo#uIypL4ehTuJEv*b8&8}7Trj*>pV3Uqk>9&HBn&>{G +zcm0!KTBH+e6gc2{x_t4&sJT@^VWb$urWEk@S0nt(tJbX#(9o0y@l3UIRSYG(sdW{r +zpI-d{4o)<<4W7AFLk;fQv(U?F1AbY=4)|nH#UdUJR@CS?eN9oTc~MrNQ9c7DR#_81 +z|H%6OSKF=-B(h?eV1MW695R_*TKwVB>J^TI4IizhJm1aK?A0WE@~x8i-)7uJA7V!T(Fo7*OCi)FC%`~0r_g@;n5U& +zlwmpvufy-m>GYTXQ6N+qx#q)sF8o@y4(*DXp=?DpGM3=|1DeA0)HC(>L@4VYt9D~RP~`*l-k>|v7XL=LYw$NIZ^TOn6eqi&W;W<@OqPK$pr+h +zQLX@cMF=CXbk?NxPQOVwd>FhiKCmqn4{&<~Y5elrYMzmT2UmtpT-sGQN{MHI5yis`uN5dDJ +zKlC|b))R#I6(X=i6S>=L7#B|YtDrX;kEo=v8by>Tp%yA;CdIG-oR8u`JcOhMN){E+ +z^vPfpUXtHs_3qwZPa88N=8Gp247{+(OByeO6uQC^B~-p)p8p8}UXypR +zwCap1{i|)D+pwc7f6O6;AeLUsk|mpktiw}8k|CndyHUf{5fISqt; +zQSh+gWLQTN8~*u|*ip=7v8t*{n3D_iT)Bo^=9{}K=o|UI;b0%R9vV3~aC!yW+Vp!8 +z@0$+hSAjATUsc3qgi9N($xY;^IN5E!79xuZ*((jp9&^PweTAp%&H3T!#yfVr_vX0= +ztUf33&u4g&OIO*GYiw5^U_r|7*4l!S$wvHoe(^aL%?!xLhZqYs8V{OhkqFaP@^CWI +zB&rCG#i{ivp2vusReX$Nia3&E^~Y2d$dg7xs&a-uj!lLuKX$=V=q;gdX9$KU;)}bU +zbk<$AGvUViy#FqDqm&QH=9qdj5aG7bFF{a~r@`@d@Y9B%=lHg%6a+B&l{oI!x&AC2 +z_BF_NU2Q}!ru^_=As_8Aq@_|23ZDLE@QD5H71xYGm#Gc0Y^KHmuqcBY0>#PW82({R +z7pS)2e>yXLI4$uD({a1vZI}hBwISonq%Txg4ZiK(n +zLG4#V%k^-LeC3MMB!MLYy7FepWn{d~QViN~P9CrES|^sCLo(;_f`SU}Kxs?munU37 +zoTJ(1=1wLZ?!Esr!r8cMFVJgBA8@m@`YZ8RZgI`0I}ge{6|@jLMBWed*%IhO#@`bR +zU(gvV(&7{|wI#mdBGq0JOpBJ^3ihOpw +zFYzQM(a*f|^UwW~{r~};Ze<5KE*%{+iM5oF=WCnwA6NAYasFNEFk?$<>;-ZIhET8v +z@n0Md9F8w8mt`~9gJm_?nbr6S@2NtWJ{MxSdVo9*$%XP5l^kYJS@f|MyHmktW!x9t +z-(IIwSu)wAr_NS3HmrsppvQ0JY(x?}yT2#qD(HA2`}c?AHpDFWIP|j?;ptV$dL8H| +zAQb`h^t=82BTg1s_-mj1X7a9ow;ixCMn^}p3ap#e%oQ*f +zicye(WU>E@_?z#0_m6m7kz)%@G8EWK0$cPQ;6Y@TXjpLv!wx +z(4~!n-`{#s#?BRR(JdPNnicPm+?XTnHZJczcGFNmFSGpp`<@N{lw0C8{sr)A@ZUkndexUgCP@vlZ(^A%$v}j?Q +z;$SpW)Me~R#B%axg*WrxGu#KOyI7;x^DuYAdE?aHbc2yM2pPT!I@QZO6y$is9 +zntF<58Ta)Qk_rxzbyQ*^DySS)=>h3ezhwU;TFz5NCeouN7)`# +zIqk*I7?dtqZ+#+6_`$A=3I!GHl_2%E6x0k4tweTXCg^T+G~wqs2!$p9E5SGjzmSu` +zNSTC-=<(&L!osy%_t&Y=9ySd9A5B*o7FE}-X^`&DA*4%MnxR8lB&0hfq!FZsl3d@(2ETgtv +z=ivTE$Tz|pR&s6q&N(bUpKy>rp6l_fj_uYhSe83;)P_yhV~XB!PR<5y{J~rG*@{b) +z+1-jzNh!DKG{6*jmMKM*QCC)>JcQIK_s5>H4XO9|YXbfwEgxSp*nH^r6iFPXE^Z~P +z--+caxOUvKXxlA?ahI2^srfcCK~nWm5@hbwOK?R>kB{bb5MFBb)Qv9zUg}HWyI5bb +zVVQ%NSd8|u?0!{UNk!pxzk4mv2LuYh>`GI|2386Ertm7L(Vrx>wPW;_NLXBOtbGb2 +zaRzu1(`OV0w(;BeAk7;X}>(0{Ogf==t*iPhD&l7+Oc+nOCVFPW%Qt|qS>EmQ3zD=mSIjK +zFEG1ftyhKX3z~wX1$k#_{LWJp(+!c +z{{03X2*5!b^378N=_|r---XZ>-!orEGSLY!u&Wv9zC@eG_dpG6POEQrG2J^o4EUM5L=__h0exwvPvc;N`7jO2)F9eaOiSuS +zM@vBS-7cXr@~))^jVR5XKXc}08ArHTv*Ne09S%1>lGM9`y=bCF`JD|<`YR|?mPYxi +zy2=@HP`}4W2Z*_{$;3@Q66a}Z(s*+rf8QViP{tUi8^eJ=SUDb=0XXtjGSx6#vmo*8 +zQFpF2)z%%K2Sy0t(rsH>feiB354e@(e+jwd%yt_s-CLghzEL0Uwf<+)!-9lgR7GAV +z_}(Ib${Tb(Z4V@pa3$XZpb$DIt%Jt~U+NI4r3ECEhxI=s|22qwI1qogm#9d4Fx~&{ +zi!ul6AUsJwdUNcBi~3F31bJ=P&-^g?M%GpnXvy4?;LJ?vNF#a_V&6n^eTaReA#@nW +z{=njT{^#N%r4P2-=vmR1|4v#ROSUN<|8?oSk`M%y=yB>ut`+IZGAMMr^X0k(amV2b +zl7Uh7s^L}0R}gGy$rI?TNe7Z(f-Nah22b}to|gFgTSAVp +zRw4iwP@HxMG(QuelESH6L8tYI@z<(C1W}hfjEip?)%KQ~44&%9Ed>KB^RPOt2@b9o +zjQOXGO1U635^C-{7q1Nyx0#4#25i8Go3Sv2GU-$cxZpjx^6>EZpGxfPKQ~Op#*X0> +z_Voy*qW`xp!GuCP1b%e_n5>V|aO?)}COb$V)TGDn(SKf0d3es5ihPQPK8prrYHS^= +z)sbWUcd9=MWrGyv-K~}*a>aI>!*Hn)+NeuH-WjT(<9IxT<1(G1Bg85QZ`B_^r$c^S +z*;Jy@XxcP&1QqsDo2D+&!+VnTAA8Q#7rU31fTO}GG@A#F2! +zI-}Nnm*376b5ObMYzh<*mKm*;`irGxsl(_e#Xu6(WQ^8@LA@_gzD;Tx4w(Wj9>ez43`dv7%QPfV|uK|yGrI4 +z=;mom+HBUVOvNjm(DQR2u5;uheScxA(vLh7NMpaz`p;hm-2Bm82%bRW%@z6f^bKaU +zzIUYCB}Va1g`ea8Bk-!${51=!MJGrEi9r(gfOhsU!78+nxOp?9kBX}mHEFZG{HV1w +zwUZdw<5?*18y_pS{=kz`<{UzgCw{XYS_~hC9^o@7iv{LT?%&GtJW71AH!vk=NCH7! +ze%f(2qYO?ACDOFw?fMu{j4%&W^_&*yGx+ZpM&iPhPXBE5$f1@R7TI7#SWx@`3DPvs +z7az8$*2p=0i%X;lf+{!Q96`sbw)m9ApcC``>ZKF$AQ!YoIDpR6JnK3Fx)KXKnTpok +z9w}x-B%}}F*|_zaCm!Px&AgyD6*%h%3G_x#rr9x@k3ah1Z&#h|Q{W3aIWX(KIw2!p +z&bOAbanv|J0}L~_BS-qfxzyA7{3fx$$%P*B4hl6q`kA*gJZ#+KaHet&exVgq2-{Ei +zBJh1(FiZ8l#V$HP>nkL&V@`OJm;xIB@Y+sjtI&6(_>E{MBOM2xrA3#<#IrL5uBpTv|`Dq0ujCrK4>avU0g2 +zoCL%cHnI_-A +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 +zlq~$GGMG +zbnE|L3-B3RfmQ-_L0g^QaPrMNR)4l8!4;^u#v$NM$Q9CclhUKb<&1TKJg>NVYry^QIu8&~(h_@HhnV#p@;SP4r)|MdN`~LX4##kBXg*x28 +z=8-1peT0bk#>b{h3~cnZG)ltuaeeHZHa~D +zWi>mNPpDD1&U9$x($Sf&8l^P(wbWQbLK4)ZYPf+7hDxR2tUL}MU`1hr@=zVZt4;4Q +zYo^H9Nz1cOQ<0+23Ct_MU?u}Sw>3Bc&&tSK?WLo*n)WUvF5%#&vb3gd1Vo#IuZ;d5 +zf-RyAgs`U>H_$%Rc>a#6ccfp(^FzEq>3A7JgZkvjk**W)3n1H(R_;G5sgUR1W9a73 +zLPe;iC|v?bo8uQFndVc-%46lgTRTjeHfN7cG)U5sw_KB_w6L}E`@?5+)Zz+lAi%JS +z-Xgn8b@sDo)G*m7kZuG*qsXJOIQf!p5qpr68;0%Q)IrK&)|Cz#m#tnY +zlRwi#Y%z9CU*VfEe-$9(#81E#=GRakGP4;f2%_V^5UV3d5R6b7@QA}Fl2wm(;TtJWh{j&xh{}LVzBms;c$4D1i|`X +zZV>1G3lFif#*_aq&WT{fqOq0)1zY}HjTjINXia?@9``r@={6tPS@_{2_=9U~41dk; +zqZ?S{W{xiL7MK)bIn&FBtRXp=V)9;l(l7xg9ZYC1gX@Z1?5M>gJYdqJ& +zJQ6jI-OTldB966EaRcQUlZADATZ?0A2onV%DW1JP?UU)*!@U0i?m)KPl-VDbBPjlJ +zj35iji&^!?g0@{FN`)6^V0!indK*IbYL^r>UBr(cg30bU!BNX#fq+hVxs>hUK6^HL +z(;bf0cYD4^riM4iFLokL_x?CXF2$p&m&H`b(wr|?AbWHXI%IFO3)!5OFS!BD*#QZD +z*P>MK(#oQhs{ +z@T$}*uA|xBiU{+(EQw1w8s1&Xn>C%ycI{Z0jLVNvqKbbpL`!X_U_4^B0BSAE5Dcng +z{*#LleQu#{?I*5e@nU(Cy~+T=GLa?{&VUwGBc&_Fq6Lom4XV)ruTD`}a^9*c){7Z; +zis$bXqI<(6{xxaC2AzLt7g=f`%po)8joRd3>#i0&IrB>qcqHhu7zps*##&gmfXiA% +z9}2#<;&RF6fckX2M0^s_*{c4SpBPqerwFs(mCXjo5!%lo2fjS +zgh$TNefo)|(uG4zh9S?iUBPR?@(tsc0|#?1+xLVEB%^_f-$?K57P;I +zwd3W1pco-q-1R*ESB~T{c34da1T^0y4Ihc%O|fUu^6RnaiRa>36GjzG1oH5KgoG1wh4+~=|4piq +zAM=1<>FQlZYCj~2^;hQ3e}XP1G$3kbN)oPo_|irm6W6DL!imLlE+>J&TiedwaAQYb +zuSxpHkF6Y4J=sIy)wO>sYcvVBx^x7I8^1x*)y-6TM`Ib4npsR=VYbuMU?kDAx8&qG +z=aitAv&NpIfet{#5Mnjz;pUkW9 +z?}iZd7R~8fRlp45LoPeD$ZJu>{~}7MJKyga +zS2&|KWA%Xfxm3utrfQ>|t%QEN$`#OOq~K>^iQhbM=X5I($AVAF$$t(_XOYWZ +z%XaLh5|&yAed3HYIE?DCr^d?&D0l^0ikpd{N2I?vvP{YFxl({(6!Xih +z&{r*}pCPw9hp-|(lA&6)>0H9BK{D1mGZr}l7E*+!jPFI{TF-FN0@I{LFK^)>1LJh8 +zA;TZEheh3CG0wkk-ri($rpN7($PhaSHpOx|zX93}eI-nHpnLmDc!C2GDxDVEX`LD)(zVXWfN+fch66I|+eB0fkAD%ra +zp2ar*QyIDh=lK29hC-2b`0}CE}d21;$sQ-jH||ztmprR(mj|J +z40t4miBe#r4PT7hA0r9mYP?Jyw36?$64?*5jyk~q_b-DxG}P{uU0JRPh?g8^;%(Ff +z4iBnIA<25e6HsEhkB|eq%r&pFz>(Z4Q;yxZd!Z_%?b1(;i;`e;wUUaQrPc&3`46ZY +zD*^-ZDKghPI$wlBh60lK*tMNqxxCT1>|=-uE)o8qODLHca{XD8fEjU-CQ@%FOZ_`| +z1s?t&e;Kaoe`=J0C&1!hK%Ty@?d8X_R2sv6}-{=bOOukYCN+Wge%G2L$ +zrY{T7b;)~$f$3G)?DdtzX5fM+@J|$R4m0a%@ws+VilDV-%H~pRdEd&1W(wVISZ+k9 +zeA3WEP9VzbW>YCtFbijrHl)TzV}-$VQXGG8Qt +z)ZPpD03CqyU@9_$&(I0_9Ml=i#Aqn}q!GU8v*=ZVUZe_9(oJL39BgJ2(KmoB%6AY!LtQb575ji?;3WY~&ic7Z9Kx}hLY6Z^#{O6C__ +z#UXsK#)iR1M(AM$xKV0~|EgFf)k}nJ!SXzb%2$@SUwOHX4NinqaodH*lmAJJZ2^Y& +zU=XsO?;mqwAhckP#)8>PajNoLW*vhX-6cr?9vg)yvY1$gv9BfPowgzH>_uk1=NJH{6xXeyk9QE7M?wk9WUS +zC~`&y@sy4d%^u{P2?jW6vOcFjylf1AHdrPeT1uI1k))SH#@`OwH^Hm$rXUdH%)k9Seh)H+wD)78{#9zhfIl5ieQcF`q6f(k)k(yaGzZIq2HSQYBHMG|8*}5ykVo^ +zIfo3{Sy3_$hEA~|M-eJ!rV>@p^M5PXW+3DA!z%U$MAtM}al8?)yQA&Bdld +ze^hBHp8ZJ-Ti*-q4uR_wgBdpk<)-Jv1kd8BMeFN3I#vNI7fqk;Y0zs{8-miiYL7Fk +zR8m~J4HvoW%HvtD*$eAiNw$DY;6jNduQSW1yRT2J(w>$Nv?WZDLnyKGSK!HDUv$qM +zmUDdU+9nSE=nQ$q;DpRrSYnQ7n$8{eOtpOa;9%FFwgqBq=xhV(!wr3yw)tWS@0_94z3i_8*d~fc+;KIka_Ec8VM(@{3Bcm@I43 +zV*p!=`30o-Z@JVz`@XImb!oPVJ>a+U_KKik{mjd-L%AH4PX3a?Sw;!nSTtAT9w*od +z#W`3X6*fOKo+t5NClepnxlF{fN~i*{4<}>;{?bCc9JI(Nk}GZhxRgjI71X9(BRiv+ +z>W-Rr_CPnyPLo-`TVnB^nww8zSvHvA8-vZ|m#o607Ei{E0ZZxKiJwRWGpz0ueEjzc&GaF9;#N8~MI-xDsDh +zYVJaQI7&oF#NBvdeD2PFl6i53gY#XeM4r@9z~|$t_J^MX?CCQtEDZFvVf=VI0?2xX +ze~A^mGAc5aC)|1>8y2t?3Qd9-bT>!Uspm^JK%&^?#|#km3$P +zIhpg{V%TYx-7st^K%IR(_qExQ8LwTUHXnbpx}n}I5^f9p2x--;9>^7)dRQ5@YHIC3 +zp=gJa)WQYR%quk%1kJls8T;pvA7rGF^JLi|$P!8xM6i!iJ?DSax@1k~MfT_sHuZyt +zeb!!le$TJ~1oP`k%n;`lM!xD{QQS^XvA7C!bXIE33vYHvk6a|Kmr^MkfC+LzejE9T +z+{1q$ISai@U;Zx98gh2491^kg_9v3w3PMhNq&TU}AT5ZXE*a4;N@7?~asjl~1fO2% +zi*0H~>9^SMP1(uSwcN}epsNp{x)L2oqU|Tpaf==g4-con+lAw1Pz!HOpo$He8hu0S +zq}&f-gb4J_?@M=6A#v_05jlL-#m^={%WbNsmC2%@a92@~{jB2eo)_pn5&>u@WW>WC +zKo#N7sQ{{Ahbw2h5Yu2vHO+yh!zQu!gzZ{p*EAWEhANauM=AJA} +z6qEc?yP75r7QSxuT(|B8fD&hozh>3K1Wpg1tfK3hn2uGD>NRo!M_Y7fzHl2xc#fP +zPw=uOd;2--k1>xYnl#QurKQY`L|6S)lu*u2a_yvU738l$tdI~fTn0fF*-nhUs-EI5 +zqD)D^4oY&3L7^^XRmCiQtKGn!Ll<7+nIgX*%rStIHGCL6@z9%=l96Gj +zT009H{>3@cj{H{*~fEGNqt=&<5X|EC!XoA5kh(wSz%zRu4e)#&2M +zSMcT|fCVr$!>q{tC$Ej(kLdxo8xzP4-NKJnDqO}OwPujR`xkhYdm3OXKR^;m9%Odi +zrvN1$cuO5nk)r$U%mpYTtvTIq9OcnIa7d&i +z4>IZFs-c||Cv17XaGyBHS(d}An-Q05>&c@HVxVE7UqpmrSEy_$BOgKPTdIb~CNBH4 +zr_nQ{vMreY!oREjc$gO<=lN#BDxf8+0N9(M^BWyR3(FI`{cY +zM_Xi@i~ABGj1_08A+4|c{XS#HYU>d42)7kqTpUbe!4=LlB5r2#Q1a}g%OZ6?liVCDi}eSL)gI +zgoy|{QXwLFQJiST`L(M9h61Pl +zCgoqw^{~Cj`q;R3+FbW$V*1GT3&89sMc?OmgxAkNXOh%%J><0BoWpfyxbG-I9l9gv +z^5nW(QQb3se7rwpB;+JZ+y-``R1+qvZ-kjwCDj-n4nJe-^JQa=2aod~5AsQ~4QUA2 +zCa3oA<7X8(%u}s^p(fZUg*v)D8^<_FeBR?gi5&G++*kl4a*y%-gdiv*PiW#)G_)FYS4b)}na%fCUXuk}r`xD4y*`LJZ1u5lP@K>N1;X1^S|&5j7NA +zpXQ4AwAI$JWGTtwOc6e#^@+Z&sjl9k{%BEEvw`z~ie+K*o|r1iGjWdp^kR_#f4?>P +z2dL!pO|np#xB{2mn?)66C@qTrX4G>uxU=mH1ae|qjelXDLp32O +zpNssK6clUp>k`Hti+s2D+S>GynuD=Hy^Pdj8Z?zvFy&+n7)~*@b^rJW%A&tKhjiPI +zB5c90F~EGbOmCMJJ64pa4F2rY8JaboN*q<#R!)2)1%U+8+?D}lhbU@@!dOclYzA=4 +z29@0Ub@puhyGIp14rb*XSW0RHi7G#>JJN06Fnm4>Rv~nF)@tdXrE^Ckf%ePoo+32n +z7^I*G>)fUT;6>6!$)vZV%@q8be9G(cqs)$FPyVx;?Mh43nF5G&5F{;+m&L8+_p<)9 +zJkO}+4qOFBs{6r1Yq6vmTqHV#7Y9TD5TF>41a|mXM4cd&I?y#CS(aCCcVc}f86x(s6e_#5o4LoTnZ%|2JB;R +zc&Fvc%s6eua_5d|q^tU^U(~_EMnrDtkmw2DSY>}HL{MV_=aGh=0Td_^5c>EqX8C}; +zn$h~>va%r5L3V6y$`!B9Kw?@*;m{wlb@he4SpNswYO~#pn0h+tL1($LNGqt>>L2)2 +zbG(m98+sS(zl*vHs4XtRZ_T(I-7W=VmbkuFuFp*#5ZOo=cS3mVUhcWlHRWM8*`D;U +z&gs&-hq7|tFSsKuLbe#AaA^3rvOQ5{cN`9LVu)ebUC~QmP`j9D)HmWXsM*Tm7HVF3|AP;&;S +zBtV@SW@+aOTeK+%yrrS`ogw+w^#?@{CpDf)AnO0*l$O +zA7x1KE#bm+V5o;#*h`uu$M=mqxKZ7Ximrtf$aq84TeQnb5^q|NJIe(WGZZ-TmkHWzYM^y@@qDM_RnU{Z*-Ix>&0%<{v%!^==fk +zfuDrvpENpZ^*uyP0Lr+>{J^Yy|8b~>m&AF2w=@P?qT9y$1GHcTO{)u6PwF~8ogb-_ +zC3ndeW#=*H!WGZp0i6c>;NIbCmc704u<2t|=EuREV-O)BJ`oDBoQOjZ!{=~cDUi^I +zYCYpbVd0u8TTki$s232)virSU_;o9nn6V6(@qdrYoDC?Y2>MRG9&!6iEbHE(@up<_7W8lN>ykHYxE8< +z*gal%T({FEHi_G8=5TllkP#F+)kJ?}+lBW4@)p%7nM6dAlht3|_r;JYKG(<@*uVNc +z&2ZFy$!hUijH{#db$GzKIkD5j4O0K-i_WP1mB_39KIULiu{S$?{P~7fsz<IraijE#Om9hwIu#7dAi8u8UtX&z3Hxi@vm(dU +zU7$?R=-P+|p;F|nBKs)V{zj^ctE+bkmYM6~%*0Q*J!9pANrRt~mj*P+vK^Y_rhKo +zXygB{1&AcIi|yKK*S5`PJ3xg<92kamv(RUdLxtLX&Me9>e5TgjHlO}08m<$Y@S7#S +zJ-NPo>J#37@}2DWv;!@*vU{`it5!_if1Y!szzQ&qJTCena0=%&2V21S>iy}DHHfVV +z)0WlYiI~-zUz_eq%JEpTp{`LKUYHrNfOkAdjp_omy^HD35C2ltk0ami$V2!GG_}k- +z6XruH`a{_#<#+Tbeq%x_G?Fl +zc4Fn=sjDqrjP+n_BD~2xf_+8!=rq(Z@~7P>Rvf;-BQV4MY$_^%uxIsG`I7B3wFnVc +z5i<`6g+c!zKh}3R<%b>RaCn)ML6SbxwSId3D>}r#WGFVeE$yyhT#|#h)S1YDbSRI? +z-KKN&C};pdk8*%TRMRHV_wgl&tAwNj6Rb504uzR1N{aEll~ZFpOc$=LV83}Ntoj`> +zjyn(Db>JkPUY-DVv8=GJh0PvC+@t${A@U_((HY6({{bul1Zqg_HPSKAKGlz%b#-&> +z3pr(9mDw%_?s21=7&Rqz)!XI=e)~GJ&x}fGxrpJBnc(n-lq0qM)3@{-ZzRK`+ZW^F +zJz7?&d~fR#uh`f{t-pSpNjbbbouXXN7JJScP}|tpsFF?M$n^oh(04$_vwZ_ny^N>S)$mZjtKZ8u +z{hwu4E1x8k54E!7*oZv}7X06-|5j^FWXZbffqt*-Xd~U2;F&juP#&8vN2|JQ&!-bX +z0?Bpty&TK6Kt9~giOKYf6|9qTD!+jl`prD4aVAoEm(2TdcMHT|IHSVxU*UvP2uTAZu^G!A$eU`thFA`4L+PeLEv43O&{y;s-KHKBgixD5C2%-Bw +z5s6as<-Q@tv24}Z=1;>aBd2nNy2OoU;FwQM(*)IsDBtw;E`2- +z*qZ!h+J*Mw`>o7Jj)`mtShH+wWOkSf$w +z_--vtiFL(iCC2CSy>LNuBW_5?T_RfMH|?jN!sa?#_bYx!)##0iwERZLAU~_BG1WdX +zg1)4VaMko0NOwi;s)|HE&VV-}QMD+uv<3kA%QO_NVrGS7#3wOXSvdUKe$615oy$E< +zRzz4Px1c}>lqVpWhcDzm+lx>_AdK3EERFB}`}1S0@JEF+mI+zdr>-I6#mGkg!o7v~6G3K45zP6vl+$o-jM7^;WuO +zN6RLJe)bKzS@Y!YpNOc={nMu0w){%W-*Q|?-TFh +z`eYM>nh8Xl;xLUB4{C5SU-KL-Ocl)_~-q*C-3sA-#N~ +zt){#(w1FU|WI1=So6$_b)>v_)JC0-AYM7vd3(98N`MP=g!=pI#|$4=F+5f`66dE(|PGo%!05OD)1ilH!^-SMQ-6j@<6H{z;Z +z5&P#n!lAz(A?1JOTE1JMETfV`0%-B;|6XmQg)#NQ-RKqPtmRw;iD_3i0ipDX%pgAu +zTraajLzn}EsW22T6TDoHkiUm}Q<_vkcaS8|FVV>Mntod{D`7FXLkGG;?h=fV^0rst +zpfLRa4e_$2I)4E&YS$#P@6P0pn8C(y%7y&hW~{}4By8feTzXuq3N&4yc5@_1nI711 +zK7yRDcav&T9}hf-TpA>`mqp1wf8^axCxz#5&rqUJFG{#v`ejVaQ#gMbvPnb2EMdN +zfoEQrx^@U1SbIw%tsI?nmD+#(`n5#9_i-Hs%QM-Sm@sd4>Ir?VM}@T>muwQe)qh~S +zQ?K2v{<#c6r?vZid~C&{{*B8Yx7}kzFnTvWE^;wvgK4zvEZChr@TJ-lc)h_H_3s-O +zbnKWhK^T6Ii?N}Q*18N&;%FF%G4+#~)TB0MxWx$r%Z(I>2E)9*7SnfhWZsr~$xOE5 +zxj#`DAHP2oA*YCaUaOjnMIMNPVmSEe!^2jM7*a?AktUt#;lunE&Z71_ul~so*Sf-* +zdb-Np%0*Dd(Y3oMm@-%z-^Jg4fOPjVD2{bEF>wNI6}!@_U5j*MeqB9qvBX392e38f +z@7-pNyhM90z>rm3#t|%1B4^D_EpLP(q|-%g-5ZId25rneoGQZ&=SR=l97*jY)$tEG +zB~H3RWGa?q>P5$+HMR*QI8WZto*E~`SI`!C2X4wPZ_u7ivS<7Uj$fDRMSKnR17cB? +zg4iiZW`abyyR~XT0cp;o+~zp}BY6aLhK80rV^w&R=2GpYn}3%A^;?Ig)tm4_=&t&A +zr14BIA?gG>D~&8)P^$qo!hCvpv6hppS3eHI7Uz2S)+Lh+(`8=}Cr7;Tn2{#K{jD(d +zg4^WYI7QF3kJwEvm}W5Ifp>FHIkJOcgAg +z`u2m53!3|7r9h%N(%Nc-XjZWUWAMTUw8M8V49V&S^7z=>U&W5gHq{|>E$xZ9p^o^) +zMO+eZn0&7O@725R<9x`k`4;xcI{W2`))@$7?QX7lS7CE8&7wP1{ORFb5Xs+O&1g7J +z*Ut@EYer=221Ef7nY=}W$;|KCoU5pJ{+_OMGe8exykR!>pFkx8V5O)NnV +zwne(}ZgSKvh5(Alo5$~87gOf41}|$Q37Xjcn8I3qG-;?}{$)TZnZV@O+0zK-9k5It +zLHAlu7zI^d4D%q6{|!R1nXMWLaaLAOR +z5^mr(E0DKUJ@$$kA&C+(!3>-GzN=#XqOvPe)871J_hazGUNFHgalkMRNP43AIKs)id?`{Uh_>cbm01SU*on8lEgwdq9mEMVQS +zzSh!Jldv@@X7;lU%vzyhz`|sy*{O5hFQkO%Lz&x+#6!Dlk(0s71-e>ZTOEx`Avc&K +z*D77U=~H`t;wdIEwuo@9kLna+U*0*AJG>dZ$3lZ`@Usg>%WXiyiS!dWHA@LyE11 +zGJQGn3!_R>;F}99^9oHY`s%kDc)dc~crCzi7J_@YUN7A&w3LzVxqjK?EFv^W}3k$jryH!W|xt5lj2r{VC7sX01mxAjS +zj^k1?ANN3x$*GHz(?t^sE^Ixy(@6X2p8FgqQ?gJURm^-qMQ#_`u5ogE4!(*X}`>6@z!LNC-(32=4VZFQkI2bA7 +zGppVNeFx`f^Z&wLy|z*2`T(XARQx4iku_dW3uyf`JNKWX$jk#iTEDuG1O6;$_L*KJ +zSqd8KSn1uv;p-pWImVvb`>y@)0@GBR2fjB<1c^vk!TI@O-@-VvWY|`=r-Oh`eV(6MzXCr?fDj<2 +zxMi4wi;Ihp=VV$tC*iU%ifQkaR#2*d8PBHh%oJY-b2IDW@|UTUnGnGcb$lc{MxO?> +zgh6Vi7ICGjMgYRSLOgR +zrNZ30F2qS`b5i-SMf6D3j(aq+@Bwal{c+XwwR+NzV}#2ump$4Z&S#SZD(=!tagw~dHIl6Wmn#Xwr9`F|aqcRbbKAII&z +zuD#>hWOGGjUi*?ADtl+|y~nl6C0n@mjzY-Z*<_1khm3DX62If;AAh;`^KkDu=Y8Jq +z*X#M(QASh0gv~aka~L<(%ei6E+5&LU-1(;|k%62q5wnO)fC1j`c3j}Zp^5$bBG-%w +z3y3~AQ-LaP^7eXC9*&prW-xG6MZ&fE@4p)&!7av{PzkGQIAT=gCHFm=e|pqt2;>verZ2H!ZB}7V&KHgpF~?% +zoiPlc9Oo0!vm;Iwyq+~uh8l4t1Ger0D*x|Cke8;I=I3^o%<_wPP7Ig>^fcN2BU#LP +z0qBbmv+O_ZiNOIW4~C82h-SYk8Hv7c7JNDo$<3N{^eoR25*o~Wg_avFq3X7;Zc_ai +zm(*oZ7`#pIyF?xnUx8bLP-d#{r;GdQ3?sH=sN>|?kv8U+y`;zRDF*JPkM<;f9#dD( +zCx=*rYHY{}l6^OIzxyD}P$8Ka1Q0!Nti`w@iEyZY6-C43tynE4*JhT}@a69p1RY7g +zTu+Ht3k0gyW|aB}xR|xsxshFAXsFU+CYvd*D=CMJWw_V#!1+GfB%2?`7~O4PxXBn}h_5f?$bFY4f#k +zfsg%yIGCuxECo;*FQ&fhGUJCwI?P{zOw#}zNg_T`++2*wR}MGbcMWFupYg0e&&lpg +zcHQms2~0^9{~Q=>*pz4~i@yE7ge{yC3y3GJtOOE7w#@lW%z;XYF~>>DPA?PR(%>&? +zoN3}KVz`vS{t}A$Qy2G04N--?wW$l?)EI_QdVW&n+D$EZ$j`s73)eJ^>n&IU1OK~Q +z*`=F<7DJA15*EoFuCXbyUQSuBv!PcAy^RN4a!eq2q2(e%+01q_K>)9MN}4X+wpESn +zy}D9AEzIQp`|=&E-!I-;Uq@gyB!<4meIWsfD`kw#&^fnxR(;3e5c_HQ;cnuX^3j*@ +zEtw-HcLJQp^eRJUKM8Ct6GuS9;b!zt$-#>!ps(^gS4w1CFPj{Xs|SAeNi3K5FfXy@ +zH!J3c)4N0&f8oZ%-T&(}d`K%?wBCAQX60rIn@^N~ajYt^U(X{BJuALP+8}qB$ +zg4X0~nf|qYG1o{LI*u9CCjnBUwuf=M+m?X|=NrKO+)3E?%2~nJ3$pmk!rtcxX2X{n +zo_`e-xZX=ivc}T6 +z6$=^SC!M+*aziN<$E);H-Ynxi$(iwC9_@6R6Zew*++tx=X9fH5oMs9G+7uw`HfWk> +zzGI&`(nkg+92^<^{}JnO>uGIJbBp_jbl8>r@fZWT@~U{OO@@E+bn-Z5R8xL)9L5ke +zHYsv+K& +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 +zVzq4ASV6K^qGVws02HEiE +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 +MD{I5+6fGkE2SYF}a{vGU + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/bgrt.plymouth.in b/themes/bgrt/bgrt.plymouth.in +new file mode 100644 +index 0000000..b5cc843 +--- /dev/null ++++ b/themes/bgrt/bgrt.plymouth.in +@@ -0,0 +1,16 @@ ++[Plymouth Theme] ++Name=BGRT ++Description=Jimmac's spinner theme using the ACPI BGRT graphics as background ++ModuleName=two-step ++ ++[two-step] ++ImageDir=@PLYMOUTH_THEME_PATH@/bgrt ++HorizontalAlignment=.5 ++VerticalAlignment=.75 ++WatermarkHorizontalAlignment=.5 ++WatermarkVerticalAlignment=.96 ++Transition=none ++TransitionDuration=0.0 ++BackgroundStartColor=0x202020 ++BackgroundEndColor=0x202020 ++UseBGRT=true +diff --git a/themes/bgrt/box.png b/themes/bgrt/box.png +new file mode 100644 +index 0000000000000000000000000000000000000000..54876e68097e45b215f6f4c4ab2f1c06c5bd1e4e +GIT binary patch +literal 870 +zcmeAS@N?(olHy`uVBq!ia0y~yU{nIK{W#cwWXpePWgsP4;u=vBoS#-wo>-L1;Fyx1 +zl&avFo0y&&l$w}QS$HzlhJk^Z!_&nvq~g|_Tl@W`(W@UmTf#;@V6`wU#Lhm4Z}sF0SlKS+*^aA-R3`>*{yeueW-)S*X4G@YAFJoyCWu +z!{O)Wo_xLQ+`LKbFZ(4ABrTh`(q3?m&E9!O)NP+RvD74Xyi)P_S~F#t;;ilfL3MHE +z1W&=NWnIR?iwip@ariP_*|lfSpSt|~_sjj3f8KO8Ywhm&2b4~2+9S``ULO}9zu(%z +z;>Y5hQ&=)(7Mr-7-7@Rt_uuQw%gS~={Np^M{fA?Nt4VAm@8-(l;>)-1-mMj$9dwNE +zs;kh#k7^}_g&z-p`}S>h!9D(Bb*BT<^;|cq{#~Z~{Q2|yM=gBg{-4?NKQi;#zkmOx +zZ{4~z@lFfFw9H%si9HeV@&8Td*dJTj{p0k@#gWS|-{d(y@i(hYb7IDsusa>g;+xL4 +zYv^}9authLV$_Kgm7aXQU1M*+4*vt;2AAiV*!&CU_z{&>mCVfaPyDrDg8-uwi-HS~ +z;t*7DVQ^yMpuf;Xm%BcZ)8tvXD%2`NL!T}&&+K@Wvg%+$fplN)ckT+d)#c^o^`>h* +zZwD{A9bmkC`SSeNyZ$ZHoL~R;T$Q`K`}^lgA+5SAv%;3@@F(>|6^2dHd{hy_YQT^U|C$4w;ifVF9Iaeb7Owv@}e9~w#FT2z?jTJ8>EaGR@9qdy5ApbKm +dPUG{u`zzfzHqH8W$O>o>gQu&X%Q~loCIIScDqsKr + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/entry.png b/themes/bgrt/entry.png +new file mode 100644 +index 0000000000000000000000000000000000000000..65810dea3ff2a03f620f13cdb9f680aa116c033d +GIT binary patch +literal 1431 +zcmV;I1!($-P) +zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3vdk{c@wh2L4lT|!Gj5-f+`s_Y=kzX#0Nu`@F@ +z$pp&XSRe`X3Ft6>{+QuE6cXhS)stnj3nk{5xuB7*Te-dIiu<`s=hH{e@<8KsFhqj4 +z-2U2;Q-NF`3LcNVKFfo*V<#O$bT_<(=EW;(FpWiSJuwOhXr7qr +zj_Y|esldc|-cllNl)A%btkWRTsFE<<9I(dEoe +zgg7SfDVRA+mCRXiglV?yA*Y;kDR5d~xN +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 +z~-Wh$@phq!Q?`IDPU`GePO +zubHp{v}I>%ANgb!D((`4)jX9jw{2|!Gajmal@hX|%*!6P!QvJT +zAL@7{TSlB;s-G$H`yBI8@a}?h)9kPD{4@0kZ$dHsr*v?BpPNctx*6Ga_33BJwFp7Y +U$^7#${bvUX3EV|$3`ofO8=tzejsO4v + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0002.png b/themes/bgrt/throbber-0002.png +new file mode 100644 +index 0000000000000000000000000000000000000000..8e9a85d8be80e430f136327c98db0185a36fe7c8 +GIT binary patch +literal 1568 +zcmYL}e>~H99LK-*Ln368NvEA#)g)L +z000;hg8U-2YON~+eeKEq_SBaGn;RH}=WB{Zj(aGR( +zDxFSD0NJbrFp(na=aoS}Y>)k2qp5xU&j_yIN?jgL@Om3^Kr>u#!k5GRxWtbBxK(j_i|YIa0?X +zwF8n_|6l2daUn!$I9iPOnw^$FBeSjd66s8>0$3bAvto?{0Kg;!KcA?W<>lu?PSixN +z%oCL4?b|b;>?Qbm`hLx3e +z&CbH^uHjSqJ(uI4aSl(1llt2}r0&c;CvJNE95qbi9?z#yq_zX=kDG1FMNe)C&xDSt +zApSRFx=@kOSLXxMO^Jr#%V0%v2bI$#at`@i?+e6#d`RXh_bf#BhsQpsfixETu~q() +z=#uF#_sBUGwxz}y!uPQNp(r~=zJ1b~m8(LEOIP+N&ctounpMF*sxl@`Q^P-3K(E?R +z+eV5RDXU1i_)}|UEK)bjy_v8}d8&kU%;(1I-{j58^(iCWna +z`$oj$3&cYXj-dt>o&9nv^FLC+&tSaU$pIVIh8F%pgra%SP;$&ix;10Q0snGS^5NE7 +z8XFOO*D?kEF(P61VC=~-?B!(AKu7V$1;474tzLse`vm-+1HtplCdHa|&r@c!a+8>e +zvhl=V{+zw$B7;Ek*r=ui4W_v5k7M{w4A6jOSpy$fFyR!#2YRjb}7JbT+n@3&Fhqw(~m4`__ +zv%9ToKY?pqgn%>|aWT92!vPWSsl24g<5|91=JjO5H;e{SM99$QcM}QFeua0Wsm5CD +zIfvMbztD)j?xI<2=iE7y4*QL4a(CiVqkww4)d6GUA2YaCG-^9y&NuytO6}bAAia(= +zzC-q^rxQ`4?7j_I938p`ZBa($-RVtPkQhda%MZhgrkq8v&IXF01zQQLEi@=tFPR;m +zrpd+4tQ(iS!Rp~fe*4k>pEWKbQh|ckn+2a|nEd5E$`h1&;~GZV(6h#e^iI6~bkH(vw!UTS%uF=b^r3JUWEh|u +zMSFw_f@t|mF0s`|=L6&Ql#*TjZiUavtGNzW9xWab$eac*hj0w5fiOT}G3Ak3_Xv>& +zPkz7TE_$$vx#5tJB&{#nRobkM;Nwr2s84I=Y9`|M_hiqTh=AU~qG1Al>OJqve)jG~ +zzIZR+^4(ICGtaj+vtH9JQ^=(i-VdWy8A(2Gzqh<0*>utSg)|YuO~4nnKhf{d^Oyv; +zW<~V);%3X|JXfbD=F48bvDH23jr;PJ=Plhl@eVaoan5TA+EQ86&n~%oN&CeC1piP! +J;qLgHzXAS3zy$yR + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0003.png b/themes/bgrt/throbber-0003.png +new file mode 100644 +index 0000000000000000000000000000000000000000..9fe95aa2734b499cd3df6e65de24b90aeadd2716 +GIT binary patch +literal 1561 +zcmYL}dpOg39LIlVE^|$b7@^DIDD8rnDVny>#bqw-m||vaVm8}kF3q+sCpnQvTG52) +z9!j}YjD|YuQ7PMrX-bL6l%o6j>74VN@ALh9-_P@YeV+IC^L+pK=7t6bm>MCB001xz +z3M7y~b(}9leemREX3l^D;{^W30{~tvRG6a +zipQm)7>RroCpm+~PUACCd?uYm=b?C<#FP{|_di9(C(~0B;wAT?V3hTI6oJa818!&x +z7KOo}+}s^87~GmQI1lfBy)Y!$vtYg_B9TQ0&}iJh+Z}R0;4R1ue~!YX&O`SzN#}|{ +z&tl%&09srs@Q)zTXtzA2VJ8R|&BJgSJ%tYNnOt^!Je}+4j^4@PiAX)oAcxO$5;!28 +z`~Q_lw3lyq&vOtj{F$9WOQ!Q2!>KF|r~t+dD?Dbs3IL#2g9!KtGE64joFt1}bfAc1 +zNb-k8`nz=E4VDOQ<1LoB=onOD!xduetTW%yjG#EBi8&PR?C*?Q$RKU12=zDoMZrv> +z^hFN{p1+@XJKKYc%_p{KCR--1D_K+QQ~XqL4Qn)Uc#>JC)vb5qXSY8?IJZ8j{j3;D +z#&ws+EO}CW$uDJV+ZewEy0v%}{n^@qDnxNnvg<`S)8?ZqcHk4Ni4RXUJfx~Pcq=0) +z?GN?Z?Y^1NRPJ8FgQB`Lt-Sztj&hIG?He-)k;>CGkRajjy&l!}ZoT*7Tg+b5*;H7hP(S$<>ph#50sB&n{qJwP7j +z2V2*9hKlMmF-5o%uR$uCL@!cR8Co4{h+~1vXpQDo`$ +zcDgjTF|#?HuO^;i&$a_fxvktd(jzi%M%?Z|%vlJAZw8v98tCz=KJB9AN>7!gst!72kR$T*X*`l6`s%Kk_W1J^)X1SWK&o8#kWvhd +ziq&CDzR2r)Ee7%5t+I)tbpqp&GU(%|w8_ZyJ@#YaZ4w42v%<$$l+`el;2=fqQEN7E +zUv3IQP-apK)3!GY^?a`gg-*S!sPFa@kMnnh_D46qTXA?wRXhGUuq+EcH+l_sT#_Y! +z=(GQnd~b5UU)C~)Y1;`}Snbh0H{Cb?)%RAUZ?{dHyR~HM*>o)9>(c{@_ajjLYHqP9A2!old$rgS;iqM$AkB2IR=7+|#Shr%;W1>UO +zE;FX|owaMpx&_sXoTskJzBDu`&z!7F<+Uxa*aA1)mC0pT`HfIuV?E{-PW61C&5-&5%SeLCq8>{ +zAWmwieRb-1LYRXEJZr}L{7U$1OGStX@A{w~9^8f8-5#km)^7RmP`PX}I`*5VnAq%; +zp%@rxqL(drH#|ESF!sv4og&vnu|x0ftFfKi78j=Pnd>X=K3g!@W;rte@fk@PEy$iR +zbnSZRwx3P*`jqE*+CBFjD{j5=$?7}hPf4YKP;ch@MRTIBCAzgNTE;T8)^GRO=5XUqnAi#>(N(d +zJ=MN@l(Ky&c=T>qODxl-JNGoa+_DRNaXYN8YsVN_B%|z;8TStQ-}I7-*sUL}0+2R- +zosJGGkvo^hP!7^CV=L>zQPLKeU2~`E!?zOt;FcN1sS`jc!zi@Yw(^FJ;A72~4KMR> +zU!!*^og-)j`+oh3kjnAGmoTgux*;GvB>OtCf5%vC)fI0uODbd<{M&#aVlbh`KTh&D +DSwXl> + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0004.png b/themes/bgrt/throbber-0004.png +new file mode 100644 +index 0000000000000000000000000000000000000000..687aa8bba7e7c470034487c5818c825a6a6e2407 +GIT binary patch +literal 1570 +zcmYL}dpOg39LImdHp`3*5#{oDB4Try5IPRVT$Yff8ymmOVXSTBI&(Q)c$9}sGR@^U +zDB0?`6e=qz>Y$D__jV-9rAQ@0=S=6E=X{^<=ktD^_v`b#zn{Op=L3jds#~^i0RTXi +z;O!A8SHsOxhRHiKCFPS`5OnWQCIG0QHwyw>;pxcD{VdPJEPQk<2wt}% +zz%UsRn5bwLh8~+ti%(!tF)S)b1DO~mJvuH9Wc;UAlvpq>l9Khik~~UhGs=U^0s$MW +zwFAc58e?N?Xl?C;!#UYGzJwmMlFz7b&ICu(Kmdz%`uE!L>RYcPCr}4$;u)V<>zEZMg~3*w2-^vTjlm=$ +zCqist*ZZc5`BsJeAQ~!6G)3mQ_6?In$#m@og(Cj-q3pk)iJcN@5dCMvql<0_8{NBg +zV}JchM{0}aq`r&rmA#+#;xiQbk16DRFy(i-qovXlH;d$DOCh$@qYaCLp!DGe +zfW_+lPiPdc)LmQ_totCcc563kq)dvF6r4_N@P25pa6A%~E2t!d-dJp>Ak(&a8pN}6 +zm%s)q#q3#DYp+m)j%GvC6fgNtA{L#K5G%!(gQ<$-rw)Xw5;&=|+h#>)OsUnJot>&R +zAzPE~!G6&2IB^QehIPQ>IQyhWrRoN=7kZkAgU?tj$U1=hW;@XHF1Phh-`y5xUz_Qd +zK^KupTZi)T8@k1fvJKI|XX7MDlB{JMjvv;}P?~tO?Ap<6gA&g?#0^0uZOx-WgtB|M +z$2XmzM~a`oG!2&8RI{q}3PdqRp8RHKyE}q=CIR{SCSkWVl;5i#*^q_1Xc?9Gys2~` +z4h$`en%_wrU*CP)k5JmL+tYbpK_E33-VmO;&cs{YlCd%E?{~`vA2mMXWIP%ePI<)u +z(Tgs0ZF}ndIk&vjC^g?Ii5E)3j}#W%B2mP>UpSJRB=nw8(~nmz<{UH~QzR8#xmGP3 +z>aIVOu91ig-*5R60_tf^!&Ay+ElhkrtjNyGDB^rrAJ-E>0a$aLv&AmdQUA#N>B+dF_>!M!V9wSKL{gAZdYTmqy3abO6zw;E@S%IetqHV()dkx<^9+*w{xAaI> +zxy)f0MYOC1R6huqvkznyR0gN73Pc)r+AsjSW01#prQQykkKiDT3=h&wX}7r38c8EFUNa|5G><} +zbC9tbiN>ePO{P#Y2~w@5UUc=Buqr+8*}b_{vjeFYYcq>zQZT%D;_mT6-(9Z{(XtZO +zFYHRMjxSGC(??d8rE?t{PE_fIoTL{WhEBvgkx9r7uXg`ytAX6f_7eDxw|jTBKNk?X +zW_JuNdF8r<4TjLxpVVl+FvU)g1&C(!hSRN%15&f}`6fqmdfK`ov`wI!Qdhq!|KtFI +MC()zv$MCGb0Sel;hyVZp + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0005.png b/themes/bgrt/throbber-0005.png +new file mode 100644 +index 0000000000000000000000000000000000000000..3a56beb7482ff40b652972de1a4b8abf25a3cf2f +GIT binary patch +literal 1585 +zcmYL}c~H`67{`B_975!oT4Gw7xJevdk#wgiTViR4Xyrk_RZ@_Eyz;=S%QQQzR8W^u +z+tH1*($osEvID!E${4SHi*|VoXeyRyi|y|0JMZ&+XTG0jzVGwbduk`$4})5Y0ssI* +z^Y;nTtHXRD;rh-`Ntw`#G1s5L2LQCid>H^GA{)KAQQ#XQ*v5(j0b)!%8zdfPvDuMK +zBA>@3MzaJ&Zd@`u{-_{^D2M^sAfL$RvN#-&_n#7?;y})!sI2Ek`Y4MdR*@Q)BkB)7bG$aX!noQJ_okOKmO7+!o-6v%UMC;i6d3xhhE_1t2f2k93C +zdH+92AbHVt&j|F`{AYGDGY;fC1V^&DdIiXCl=MqBt^i=9p!sax9bzoL^!)Gv(DL|& +ztuFPK9DetAse+$#Nr6cy(xu*}ITDrp)B^P;pSwU?=FZI;L(wXVOIG(T+$6%sQb!A0 +zUDZ&Z)A%STFtv<0)5kcbz4ZsW|If*5@w4g%?Ngop^uBoULR5)8P57j!6{oOcMasQ* +z4qK$XW?^%Ao)h>FbDYHPfUB>KJ@!Z~TNy36HM{9I>PLzSr$zX)c@;12d +z{)&^M3|h0=)*~>QKjUaawRlrG3?)aXvgInA9bV%`I(bUSa)H75o;Xt|u-n3Af{bOqeG+`BDNUtS21YcnQk2)Yb +zE=-x<*Hb)wy;6;U=8kB~;%iY4d~1#wU|~J-Yg6A8rD>hXYB80I>wet69a{X}TxBw1 +zC8;YZD9dR@?!Pe$g`NvYFiSO(8CVN_*CUr90y7sEZZWf6GR)!{#udL#9nVEBlbgex +z!{K{nuo3#~T8(j%NvcWpG<}SAL)*!C5(|NlYv|K$@C!qwdq1PrZj%$`CJ>IhOayBc +zzRS$@IL%Le&|na6sKpJgut!`|4u#<&+5-h+b`6V%A-eLLF;?t<+73@@>tWaq-X_m1 +zT8AF_&gAlRMI)&R<**ZuHuumv1#OKmFIu?o$eb5#Fvy#Qm^(9x7r#tj^xo_H*uBK( +z73jh7E3d8>r%)5k%d_*H{A96Fqfw;~zxy{pmcij@YWQ2z@yYLYlw9|+0g=(?P>Iu5 +zd^<<$p)0L?%aLTOalcwW+xJYG>#dD&6u$wO&CUhuI;w|Gu1^Xd?e08L+Us|tZ?Upv +zyGBtI3q9#PCY@@=O;rGoN55W{X5k?>3r$+Q_06mg(j|h7H|<_enV0W-u+`wFfxu|z +z3dQrIOJh0wqvJeLML#aGX)0*FYhGgxGGWG%f)M%0Lg^~4^Hq*0A?E%e +z)yE7JeiP4J(YhEVXsH>!yC3Pvi2u!`^w!~rDb +z_*aATNt}xXolBG%QHze$qq?X6N>>$q@cNP=eZ^Hld>*!f>lWZMc#KN>GruMd9w?x=Pl{A?CNp3EiI4Ry$)Ta0&1x%!*& +zw2vgKw9Bb5zuJ2`)553$rwRL!GjOk-u>)-ncU9ZG +z+%aIbFb#{y%*+u>g_sBn=fqWtHu$&|S=!a4@J#PGh~W;QcXioN6nnTfc!N8)?|2*7 +zXZuoCqI;bt47_2(_ScoMv7w3JQ=F$`;6*yDruzpUBW>Wc}V%q4fT7h8EI7+ +YfW*HhUqW(Np#Sp#nlIf)x+Nm(Z}Py(ga7~l + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0006.png b/themes/bgrt/throbber-0006.png +new file mode 100644 +index 0000000000000000000000000000000000000000..949cb23012469efb42c33953b5c79d5352ff77fc +GIT binary patch +literal 1597 +zcmYL}dsNbQ7{-4F;-%6iW>z@SG`k_7XkkC^|3B%BaVLf@3-#FI@9Z=N8x$ZzXdIqi0j!Hh)(z{u0031H@rOdgO|BOmPl*27 +z@?6O=<2zm3s?H+KE+~T$1fGLE!SOqfq__Apq8+=<77h@ME|u;!_2Rwts~|!1f}tG| +z{t1S8_o}fn>Ydl=vU%mW+H>|}ixYMt=YGO$)2r@>uPEAkw~C94J>_j}nSMz&=TXad +zrRB+)31v&)v`@lMH-1FqPEAfwdeVFtKApZj#aV?tv1bFL!iYnZ=H%aQI*?8q2906H +zwK*Wqa>(SGt-??ab4Oz9=9gv5Z@w5**;SemQq>P6zQxG~M~ovp*Gc1e)ckeHFqBh&P}cZk?B$O+Mu +zqNXp_Hdgka-7sr*!RpV^_nVBII>a015r0TlGTt$Fanh_G4fye|Vt*Wjem3Rin0I*c +zOeO@DIM|m)y19l+gcXoimTr4es>>j2f(KKyGKwKJTcFV1*NuwmI}*kYA?H;-r}A?r +zHqXK4iWe;eBRixx|0zGa`Au=W&= +zqS|+R;Umr3nVPA9Ib6Pz-)pXv({?~--AWNV87%Icam;<@wn3tJh}^>RUHMi0k{uc7 +z9d-K{q@ZC6 +zr}2(&u0$~kow78p=LhzY`V?rd6gl{mSybEm^b%`4vA2ap=R}a@;#*azLOQDYi7NYd +z?VjT4m!y>6U6ZbcXnU}9(q*3H?bf1Dii +z##PrRs=A@^+t{h%B3vF-&0L>o-Z~9`7Zwd)!&~Qk&~2uYa$c+$43+6?_A4 +zDmfLXdm9Z+R+Lw^L(89-4^#?i&b1+m%nR@LZ96kwqjTjw@BHW2c@`ZJkkGm*0S!6@`Y;rCe#liMZXA^ +z@}}q#RQiS=+AjKE2J&B^tKSye*H|_bBzrdxvKZZ;)Gn?%Ue|5qbNjfCBG@|kpIffw +zIillf1?V>i!&taCwu4NIf$8ias*JRVP>U3dGbMi3fQ-7u%ek8!zSOU+?N? +z7Id;xy~$Jw#bSg)P_80hFV?g^%9N=uq_7vJdSY$(YWOtjbbCvE+CtD>)D&g*!4UV@ +qaGdN$13l(?h0pS&lw)0lSOpG74CvlT0}S;4A3*dc;p+~^!k&JeGvtj+xbK?e>XFk4uFX%EIN3E +z$zoAxAdgD}8B9LNNls^_2>6L0KatL&^FSVl$!62J|0#x=OlN;i6+h60qEPEm1PY%H +zxMFc$APxt*y4mA!cz1XFr`}3f1P1E)V7(`b$)W>TEdJl^39FJULrnkuC|t@q^sLrP +zE`U6fb#E7BaVfw*g27^4PYvpKL(ps;?xoS$bbz18O`%fhTzfa{VGi$j +ze8=S=Bl6C;q~U_nw!7genH7S8qc8nEnepl|`O@(0~XmXbfAb#s1x-ka!$jQf55 +z$qIAu#skxFWz%B5ys6p&>t)QUdE$!n<&NT-8*Jm&M*dVBK7)Gfc&)s(xOei{RXe?6 +zv7^dg3Tw=9SG$qzzT92TT6;I`Q(R?aKY`9IL)q%ot3D#@ibPUV8pk>w#!zfgxp+uB +zWi-cOvspunmdQe|t;Z)-W^Z)jbz&4D>WxoA{_36{E>n@Dr!$LMWR6Sw#e?5>%PdMbxz6XUcsu=Chk$YEbuL_jEb6z2m8IIb->4$3pk~BidQc|oTcPeB +zUqbGGxIn7+)%IylOqHDV@N&8qZ9H1s_GZ&Y_GHS-ijEAEhgze;1h}=r^I-Xjb8`U& +zIFM-|Q#RJSSS7i-g$4T&Mr~xr2ND!1k4HyLihpyE>Mot-S34_*4g2?(*9w&aMa}IT +z7scp^&BV99dVN1ghnT|CA6{S-j^c1rR{ZW(yf|`mBc%_?O2{KyOTvctTPWGx(!v?Xr%Dp^XT7QX||=q7FKB +z=zWi+os>nt0%+qo{H`fy%5V2#D9>Ig@Zp{p!dm;*J}GRe@(@raBntMoEeCqG**PRT +zv&qb!iG>;Jt{(0ChhViX$k!#U=S91?7N_Gk)Wwv2#CPnzHaj(V;MX{~_EF&sUP6o# +zZMG6IEWd9pJQIQTvn7$&EYjsCYJUl-OER$1yl^UN@tEHrx`VkayX-`RpCCFnPj)ny +zUal>P26tPSf7UbI!V~)~j5S@lk*C<`8W)c=jok7S&*H1_E44NYxBvZ*&4 +YV^$rUwEBC7p#Kpd5km=$I}eHf27_eUh5!Hn + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0008.png b/themes/bgrt/throbber-0008.png +new file mode 100644 +index 0000000000000000000000000000000000000000..beef391370a4183ec221e131e4d06e60e1792919 +GIT binary patch +literal 1604 +zcmYL}e>~H99LK+y&7`YsLg*4Jq1!KvH2Q&T>4zW5c?v$LDi_C9@oly+wA%FN+-It{>J-2T0;WgBZ^wann#DlF;>bj5Zg +zTWCGlisz}dSXAI2L18esGyMjSwa|D421e5uG=LMwN{Wi2v8)_1u}pSWz|#&bN38Gw +z?SeGc|4*VYc+%k|juykeWv4|a(%4pkR60|u02b$Z^1PV?0DwkFUb_#Ip_%7*$JKbR +zJ++*>)xM3m)%o1C%~fL<%uZA~ap0~&gqK(_FRZyx +zpfHyGRghhPuhFL5ogO{0V=bj<{syj8>UhWTi`&B;qYN?@A`0{*G-s!h$~w^`j%X1)sMwVbzdh +z5A~FhV*Qhlc1p4fv|^27s_qg&aC`6o691B|T*rhq3Vb?qDA38&%zU-mf>FjH>hM`l +zNN%D}eGH$*VX~Xbe!ShgS+YUQ%bYI_ +zx7?W1z+|StKa73iRFGhBPQhv&Wo{h$i?oghNB-!^|dEK=} +z$K+ntES>Tw$SNCICf=|B{bGou&e(Bb#IVd7;@l52jUSvMADGTh0bulCkl2U-E)5Ae +zx(r!-M?p-&V`MdtJ@zeFPfv^j&*d{Vr~1kKP~CkAg$O-tk8PWPaRMy)>-42Q=e`KY +zj_PaOTZ*TSwIVE(?$a>WOQ$I)c%!Hx*e;LQojz_ssg`g%t~Hw$ +zWf`)*s|c$KN>^L*!KsbnmV{_dMw3Vt?1O*UZf~=_>&yEL*e5C1NNy-*Awnf}NlOuM +z^SidLB^9^yNONZIAQ%tus&vEUmm6^6L=10`u(OnRgrPyjC5XBY%6JAUheea$Qj%Iz +zv1&$78V58&#a-Mor^7;3=4`_=1^xb+`wKEpgZi?uHdR~4uIjaQ)t>CR`L(e|7cR+L +zEDvwoS$KTrLdC5d&8M&19thQkl%6LL8M=6>knFQYH^`%KJgAmy`CbNI?B8_R(d)_% +zd-wOya6NU=Ac}jle-uScl1zq8W5hI7aUj$DOG~}AeC-Xqh*vWFAw=(1{&mNhyY5nc +zR$<UC)oDkg*z(qCj|@GY9Ad6@tFT)I(&%$M_?Fdl~WYr>P{F|w*p +z>57|Nqp#pNmyYm~`bB->LIKxy&h2$y$;sRbTi=0s&%K^ct~-oxM^0t#QGr5fBeR{6 +zyU@kRnJy$OSuatC-(9^;YGcm6Tz#FYDzMC>S~o&f+9N`HMQWzgm&vq5r+m +zYjb7&E6l8Ez;M`&dUEP39l600eaT#GA#y75D=)bHF_)C5(2%|YPE{Apf~(W^BAlTP +z^3g|Q%tTK6?k0`}cUwwqhfpO-E{fbAV~34q?!QbUq~Qmj#O*>H7&+_O?$#5&$0Zvy +zNt}fHAGIa6UW$1jW{_(0XMa6v{o|OZ@^N3tDKg6M__GPQo1baNE|QBXqfvNkVvBL3znvVP3FHFMI%a#GD?1@Na>+oFr4FV+ZgI>*hD1yHM>hQpk + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0009.png b/themes/bgrt/throbber-0009.png +new file mode 100644 +index 0000000000000000000000000000000000000000..b366daa8f009ccc64fa2356234e45d09e544486f +GIT binary patch +literal 1605 +zcmYL}eKZq#7{|wEYcVeqdA%0v(B*9NT1KHJhFZ-_WW?5DZ0v4}k`1e?P+}E|=;fA_ +z<2{l)rWfZ*NZO1_BN54xvdVC`?!D*!&hL4?=X^iU`Tm~2emQ$~`@z5#a*Jc7p0ofSI>md7*qfTgZ=lqkDJtdQn58ZS7F7fq5IBupED}Y +zK<({NS*%#VKZ3$wobra&JXXPVY8XtRCQ$*Lcvdo*Ol2XQF^8D!Okz)~iW{mqQMDkI +z_5YJ7j2k{=iKD{spV>z#bSfJW9Lr#;6yWHzg;!)^4*-Bh@i?E5a45H^KCwJ>UDr8% +zoNw;=J$c#s#n#pu#kxs+sqcCN9I4F1Zd@iqjwAW}j4WMU6wx9VYed4~0t@Yk{B=;@ +zYegoBItP@?eW?{K3hvSXkTBOeRer3G-M3XfghH#1rIi(W(@deXK|VA}Xlv(|eOu%S +z3A5BecktKI0ij^QWdd_m?LquD*1OmX;&maz56=trMgU%=9lpc~km@GA?>q(QKB}&RCH(qfk +zkH;hlKl}lNwnHtj9-A-NVmxnji0vC{Ve+@f0!416FD6W@YX>?+E!lRdBpc|dUE}i1 +z{>-S^$8p>olGsvSVrQLoGV>{Hd{`a>Nyi<&J|W!+Cz{QFg-iow%T?hM_gAj1xrL~_ +zR2gdSy|{ZtPv+g+TPt~A77AHfkeunU_&yoz*nctIU^#9Ku=eqUfcbzs^bqNCB#;?N +zR)Ph$Qa%S_xZsx^_~Iwg&It3<+p;Py04tRcq)arNvtizPD`;zQGBiah8KlW4vfeN2 +zgx7yuHCF^;-=X~<}_Nh&>(jOtVBRuik +zm0}b7Zc5Kc1$r&T1mZ +zdDjzP%4GqfR%R%Y;$Yhfj=YY)33rO<8QxWPy>ax>qP9l0(xu>(WgU4e%CK#**=A0> +zDuCxLz}a8izRtAeK0jx-qtR4ftY}VH9ccK>>DRcs+?Rb~R*-{qZStz8Xqzf0#R}w2 +zH}s~aA>9%?LX5!kc-qGPWM4rHdRj5yXZg$?QWHRMSX!x8oUP@}cVCvKRbUs+3T{ue +qMdmaTM6}GRtxJzMVmD#&y;Wc$yR*qQSfc)S0eIitxSH)T{J#My<=QO( + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0010.png b/themes/bgrt/throbber-0010.png +new file mode 100644 +index 0000000000000000000000000000000000000000..0312f62688976e840bdd3cbd28a0dbab0913913f +GIT binary patch +literal 1601 +zcmYL}dpOg39LIlincE?RNnzDAxox8f-B`rZ1-XT=%`ap(n~F@CTP|JK2}z;LoLWw# +zr4BM8_L$MBBT`zq)!A{2J@e(E{T`99yz=lwkI*XMbEKYxAm{Pub4YMW^T0H90s +z@eF_zxm=oXsIyO;n1w`(>2r_`06Hs|3kH;wnnLD|B(Kn9z{D|VAm&IsjYgti +z*enVrHa-c%q^8gqN0Z_(NpT(Fuvex#96{n_PR<{T-kg{pFd!cp3;`v2H&u4x8~FZ45EZ@2jv#5X50Oq;$kV +zp24!W6S7z&;DeTjAii>$2S5vg +ztpA^Mz&aBH6-f{_{GOdcp@MAW0TPV~DS&fyIaz3G3jk_wh@KvSp<3C6-35g~M(wdV +zIMmJ?a0By*VIzC(uv>kEVz1Sk>8J>`wMz9}f?)gg8RdHgCWcivoxf>@RFvBiHC7QK +zQ3TIDfjMUU57)MrDF!E<=2J%h(Bq5^rb-*<72C!J6%9^Xpi?Up;&1k!Z!1b1cr-J+ +zrS2V?J&-b9x=_$9PV8f#-FgjAMM_eJrjzwn4>0WI{Ke7mO63Jz#ku~DMGeuqP?gl? +zHOXodnFi}7){@iAHcmTur2JWW%^Mpb;oq;Gvv$!NRIhJV@lkn1R=t;A)(rZ5yESe# +z;^G|S-a+GDwNOR7=XNbvMc;`6FulS41Se;eD6VB$h=J#vtv)QqUQ9$Tc8a=|;JzZ> +zq(=Tl$zwjUf;nx((Rm6aFwc&>9Dc#qM#hP|)9aeAiq0BU>uqXtHQ_Nb0^3q6a*Nwp +zdYs)>y&v}^z(>xQf%M;gique~-{t^sJ6OIblyR_^@7ACz$!PL+GPCfm6g{I>f7%kZ +z=Zj>&>Si}JyE+2OuQaQP`<{#Q9Zy^X>y+u1GvcI5{p$trVL^Ling+ADzg>pyIQY9g +zcq}tq=J;60xi3aymVJb0v#^p053Q_4f{A_j>TtzTdEFN(fE}cGFWUb6e4hYk% +zHb~5Vh-qo8BH)M=_$GuVF)d6U6n%eo?L*^k{UXmkel03|O%*_FjJt9HQ9Z!Q7Co{$ +zUK;A{QJEiEE>AeJ*Z=$jKBopHYN&adhW>=m4nrP$P3c(2F^_L;Ey~9_Uz~UUfQ{^G +zod6F#$vR3YyBai=@X6@`LoPR^X9ySuvEd5sDe{W0Z6QN;mN)J`*FoR8?3YE!o6qp- +zc?Z+t#pgQF!(K;exbCj&p{rc7Cv=)KFP(TfDeG?YKQlH~)OEbxa!*y3d_788@@mCB +zrNshiCiye|63#`)}lPLQS*h^*lG&;}@!<;aXZ%>6m6a +z)PdX@by=A2=am6j(^A4)*OGl?RtXr}*4*^UC78P^pVNjq;P;Pf&YGZ*uQ8ubhP`n# +zJ+lSo4~BPl%s8gzS>Y(Q+6%#kos*3hUfuh9 +zBf+EaP?NWx4Nth><}vp-KcDyWykDQ^{r&v)J+R)-3uRzx0001rzLv&- +z)MC2edQcZ7B#c6W5UkxK0sy4(bm;(vMJA9*6?<$Hdq#3V0MF)gL3~ssmm3<67YW1h +zJ0rz-0Vkfzj}f!+Vm8PHMR<`QlE(vu|EXOV2juMtlReUfqD-cvXrW>duqO~Hcp?#R +zzrun@baHTTav)s0rG5a-7){RvL~=oZKydnfiNrDWyflcxf2|@6g&>i*L86_4yxG&9 +zJ7ft%f!|_BAlM&L!J8q7o`%eDkOu-{wvZnd1_~`!5F!L3DdRyM#Eqvp16mLi{{N&M +zfkY3O5JPy*uk8464k)rzOth)6!VE;^Wn-k0lR(}c;M +zLwjnu#{TIt)`I?W_+x|Jr_$kmW(TRRlRAb)lqVNt>EUgL2W6PKMJ${1Z1@s1Vok60 +z!aZ2|&X+%m2NM%M%E-|l#~M1iH4*X98PICu=nO-Te33GdIyU|_zPD>)%%v^gPh*pp +z=%r)~e!DtAKIv!uB%rSJj_uP+quy`P*ayY*QD6|KW>a8tX>uj(T4XP|kg_!ZJwZ4X +zQ>bhRA{bf?m|jszcQ)lJzNGb_1?lb~i%4;1Nq;n+Z?Q|_*(gu%MV-68pkUH*cut(b +z^=>qyqxh2gj=QTwmnX|out>rqH;OdrRvNOASIM^KFZOY>3)F7<8PUw0#;rW}6G4_i +z*3~KSZvBa8g`54WGOH_f4qGM6UxgyMTIC~y_!~~-ILC-F$DT^Zm5MG-n7_M!#nn$` +zA8^s%D!6wnKI5Of@?tZ`$_@ZNp;7^mY+Ze~DbT2bC$XOlHs^k&9&i9u?Qf8R+2l##HwEen5 +zYr65pMA4kw8RJ|jxe2Q%33tbh7vH>W6syuZNB>|cZ?&rT9iCOi93m&de-f;{sD +z@was*F)l;0SyEKifaSq?I9_mM4(wtqn3cafP`k1UMfu0S$F#BH=63nLGmG!sW8Ktu +z(ZBnxucooHu`=q+_H576*q13f=I!P^LBosMzpMB4wyp+^Vzf>T^6p^eqLGYCAMk(a +z{L!L^3xi>55umC*|Ds!k0`umI)xbwCc1uA;{_RQmen(!_-ukKW_Q7a@d1l{x&Ru$v +zVE}J1>w&@i^qbuJnhiZ#1ktm4$ldo`x-Z6!AXS +z=Zav|;ey6vM|;1jX?^+k?WNoI;&9v?4b4NQa2_>KNetgaz +z>{hn3c+IsA8Snc(g)e_Qs07t#Upn@p_L$9jcj1$FK{BSRzrmn%ZX?pUvBjahHt{XR +z|1OfADbJ9@-V8kYhA889j;foUcS%*VM@)sQNv~^AyR7byV)#|WsU*z?Yt_0v(I1U% +zUmj@*nW@LoDeZVSBx@d$u27gSQ;owj%Ijypal`QAIXynZM1hUy1uz7N3~3K>HbuJK +zKf@I=7g|c4ZwRAqH+JrnYm0tW>V^uW33n2sZjN|t`9nd65h?SlQoE0%;%r;>kmltX +zTD-Ol@AP;cw$a0J{}wjEhRu!@pE%2OJ}n{T?3=WoOf@Zey~?)&cRbpcWD}EAvewJg +z7#{15+)`;xuJneDIC_`2{_OHhsty_xw_|fyW&)UGGbxw6J}WTMTz=-j5Vyf@ms<16 +zb>?eCPHk;=#8#?LL7Z((4f+c%Lo}*s5n=nAaCT>t=( +zbWh5DNKvb$tqHySq@=fy=x{v)`2c`0S}hoGsn`TET?Nztfk!k81h7mF8^j)qX0yW? +zSU!(|jfxgvxhx@@6DMF|1x%0)^09nwbZjih`%f_uEHE}QLi7h5iZWS^qJ#@TfPll3 +zuy{O{V28rv$wVTVh^v^c~rbF!!>r|6JzN7SiZ +zHtu6oN~HLtv_=dXvnvltnFW_aG@o|0wjY|x_xrIMC3>~yG|oh(?G^NpK#9!XM4_Su +zCZ`gXl2y;&*i8s0Y}X{eIH6ihdDPrf5*PxV0l7T*{Fr+l7}kHRJVb74S^uPJkfMk* +zrJ=%*L%SdQn=Kp8MGFS^l=p36ZVj_eosYaVZi@DpFZSfBHItB!ME)6X^;j7vhBr}_ +zek(uBWSuJ`>-Rp&y;GTi7&fbcqsMzbHdX>bTCM4F`*+{PiOZ6&mqvx`%x_XNYKCDl +z`ZMSoX5q?o^I>L3Oy%T-ZE|3H8{6V`fmBJOVlqSE9CeyXx&n(zFDX%rZ&kDT +zYiv;JHPh!2KdY>e93Kv=(Mn*0F$ +z?Jv2WneiSzZkrnzsR$AeA=K4l^6)Tu+qJc$_TEW`;)i0@mQO?Shn7CXk~q?4oGi1$u^dztbPcoBMhOlW0^7vxdiu#Vr!i8@};cJF*(w!fr9}$mZ8y +zqd4g=+RbKw#L{VR>p{$(MqO{7LBNGsbUEmrmcC|I4zD>=?w_~!{%@rXFta8i$1 +zDwN0BH1KLgLzt?05U@(V&2q{f)3Ud}HQqw9jxN8_vWs>7}-o`tla6&r1J +zQ0LkLERgH^XcfLrqDPmlhMJNt-qUhwZd*&rp4{ph9P<9=tj-fA`selA=Kpjg3;lD* +zFQxfybruO5&Fb&eeqZ+YK8}($d((^4qGRiJ8|auAXVFK;T(WH~PPcsXDrIhOf&v&q +zkJe{-HaS!L#yf30gO}j7J-Kl*($u=mWN&(@tcIkeP_LucPxsx!n%8CB@K*|hzx$>` +z^gPSYxo{!JaiY8pj!?N*iX(w;ujT +zb)4%SX5gGs*Dq_@g`A8f1oU{sX9SvMUwkIio +zLidv?x^naYMYV&Zq4#q9f?@A$P{@>oEYJLK*Q`_#K>W5nQzjf@+k_YlsPzDO~WnZ8H%4UW=u*%X?ty! +z^+yth1BA9Z5eE4Qvd5O4U%~7`7u2r<8V~qkqaJHhxA_9k5VF1 +tk8O410sgeR09(-E(>kyfAxR8e(Re1SE_W!PK7>9&fKK(HRJk1y{R6MZ$w~kK + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0013.png b/themes/bgrt/throbber-0013.png +new file mode 100644 +index 0000000000000000000000000000000000000000..ace8764887795c1dacd9060bbe7d0e1ea932abc5 +GIT binary patch +literal 1612 +zcmV-S2DABzP)>1eYOb#!Pi +zbZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_VuH;C0000ObVXQnL}7Gg05UK!I4?0V +zFETSAF)=zdH99pgw!+xU0000GbVXQnRB3Hx05C8*FfckWFgh_a8`gHO00008bVXQn +zMsi_oWdJcVzi^q-0000HbVXQnLt$-Ya$x{NVQpn{VJR6m&&cbW>wx +zZe;*;XmW32Vr6n5GcaawbAVFIxc~qF6LdvbbW&w*WMy(xX>DZyFfckWFfK4RK2yu$ +z0000IbVXQnLwRFtWpf}?VQp}1Wpe;AGB|#g7%Kn(1m#IYK~z`?g_c2UomCKqlS>Gp +zgiF;Jq=a%&5G|r0-MFdRg$wCMP;eo*5s>zdxsFN8-!6)oq-9W7~5Q +z+s3sq@pm#^qc0_hV|8zQCVt)l32FJh{?161? +z9sCA1N2AfS&3}M>?-jHO95_c|3qA#ogXh39Sg1f1B2%>Z0elTE)4&b%J&ov7YMnlT +z6pyC3ot^|wfK~7xI0`)63G7zw-WE6noXSt&9Qclj?BzVxJ%QwG0(IOLez|5?><{oX +zxCM@YKfzq0;yn=rHB^S}-t0)GP!&Y_Ol7-3Pnl!R-E8|PHi +z`m|4jGc>lC&RG{(h$95>J`U_$a{mHfzOn->==gsGj{gQwEaFui2TsLDD=CSqoyt4l +zD)qjiR=EmmW8ZxPIPBmh@FZ}o-lGI0BYp*!fWTd;Zp07tsbzXdQeEJ_lZnF_Kf9ijAGJxOJ8C +z6?5VJu$}-%Y;o6W$M-YvckQ8tY>2y7TuX!)ujM0fUO!^@PQvrlZ`4PAkb@&)A%mR2 +z7O-o{Y=G};hh1@eJ?V8d8cFmMAQ_7)PC`5bCdP|09u341W&GZIMlXR|ZO2K*U&Ot3 +zUmNi{E&yvdg@}zF^W7L%{?r|dUI$LW&Q0#Fnnq=AbTuyd~X= +z=dO8OF3KCIuQ(4z5+(_KB@kT-s+Ew4J&Oc;UgeO0DSlsylq;xgEF|j|Cht^&rMnbr +zwf2xu%_--XO8q}~vMd2L*q@P)$KSqVa_=S>OE3l0ZE@GxBX%eg977T|x|N*vaaimK +zxCSKSqjVZ2W>%N%b!4+gk5Tv-^)E9a?fXhPQdj#~ +z5>9~O1UB)l=dkYIDIB?bNtC;#CUb@gSWu2d(ZTr6q_xChxa1^$LH~9vX%^cuDn}e3YVQ>_zffb-{6&wN!8Fg}_*?S$_2D9WZ +zoUefH+Rf`ml%I61b(erqg%JfP +z;up+&$`yFPj>VJ6x|7EDJI=1D8sIr+!KdWgM0ai4y@dqg<4}L1j@;`QYr7vLZjj@( +zeG8O3;2-cI7$h-$HMwq&$p#MyEA0zh?7d`Y5@Bf?KgDVO3PaBKf?}(&AD7sCIFM8JA{d{d+?0kyb +zyv{Z#(%Sm6j!s;3{L%48cT;E`ZEymzpS=h96K7sx^~KJ4(fB4wQa^7o2i|!L>KTqMs8X;j7+TN0D +z^lYa*KcmHq1%3$@k0**X7Oh5TKLtaXAR7dd6L?8+aUjoSC4MJ|FAQn>%gF7fc!=>p +zkoW(SSiA=%w5`{OQ9rX&nJkd+5*iC}j0zBlq^u&Rgoo<1iIq(oi)#Ly1Tol9ZGS%bveCT_1;5qzfeo5 +zC=fMfz*J|u;dNWCHnOaB(}^BzN@;=O16>VX$*{I2oAg!;mVmA +zWul4UE;NrQXdSE8@1SOD{p=~Z+u#_b%%{4R#umEU`~&Ozt%}Oj2(Y_@vde4eF0Hbq +zS%g;IekwRwVxfUYW29m=Lou6C~*?m +z<6c$Ns}-!MXlnnu#Qui%w$-|aFJ<2uG3Y}1&BJrUZIh$VF?_o2z0R!9%RHUtnc4B= +z@Hzf>ZT+6Yt_!Uh3C|ag&tt9r@iYVVrNj&7w%6ls>YPVB%g)=5x1_!G +zJF_~eMb6k)cn7H}M!~S^N&dZBt>Fz9*SH(q* +zH=Uge)8s6ysbaP2p=-x)Yq#Yrd+wML&D-deZbJ9z)IOB1L2TH9fx8XLLS0dB-_TOFv7~L=_Z_Oq(a$|6&!QON{az*lCdQ9lnH)NlFzPi#n}?nF~#j +zhS9QbvjPTeFL)xqD5zV@pY6%5G|k>C=h>=emb_h>0$Nsvq&V;cn|B8r&KGwtiWHYF +z<~n3ftGAGMpS(ZmtbNDXOjMgLfP>cg`(zuPsfMHg+jpKr&{%`op!Dq7gg-XP$$;g5 +z?f)E;hB{y&ZJGU`Na>3~B1rdcwM4_bh1pHSf6V(I$JD2c9yZ%WaILXJp6pa3TP5C^ +zTxjfwH!{oIa8JjopD`dF;19iTk6t3#^r-sgSk4x%^mWFyHEJPft#%qQto?{hWp}Tg +z0sg2Dd_n#@?8imHoXPpp`GH>Y(u#sT%f63GU&4|Ua%p-e7!eVy8rC#;8$OkxYi3{p +z=M(2r#w|atc+!BmxUFn1q0{V=1O44@|6MpkgD#WOC>T@cz?GUFyQ=m5jJWnIB^mx_ +zqFp%yk1GSkGhV)`OjmwD-8z}tYp1DX8k!x+jH)`_t-KG~iSia*5R<%i$D1#|Q=4~G{7 +zx&J@uf_JAx{>_K6`RD8mIs@d{MkFygumS|4XYP*}CjeN{NAdTIj5W?F3qJC7)Y@-L +zF+p1cXs52p!Va5#V^_C+ALkO^wUwjiy0qtzaBZY%+NGlFqQH`H +zyOSx7b*eCbxdrK0UB=P5toF(A;0+zrtem_zIjomj_#917*KQsVkJ-f}EDpVnpOLkF +zjH(%{2+=xv$Ls;OzV~`GTd~(3`B28Ill2W^qwBP5Eo;gswM(0t^#97A)@wq!cLkK+ +z3_{1Zd`GiETo0MMwP@1QwfWZyC4FNt#LmwWqC9neO$N27DeQc;-MOeC@!8$3mVs&8 +zn;^3(jHk)_At)xm5P;FOUF|yO@f{NzQC53A5DY_P+ +zRBQ@b#efb4SVTyk8mhnKRK=Atq~yT|2z>h>dgFyR)|w+bxf64G5=G4P)wjezI&0UW +zM7`1d84z)>HzM6XO%N*dCZ67YYHo7J;_v#`*fpbY`(QzWdR2hkRX(pZxoS6II +zh!+PNA!C)}d6RgZJ4IDhZZy`0sMZS=(V+o3_HJEc*AW@>5Rz$NhF1wLznk3q>g-@B +z6k5NK2m@{h7PNgJ@aqprj@qU$RT`6Q}BglSiPZF8#(a^NZ}- +zy=az<`A9}pBbc$1h~b`=MdT4dRkK-;O^F=&Hl{+JrPWecyQRY!4UvXjikq%#a}N4e +zxJS0h)p1;$fwisI&>zNcVp;nX#O_q8l`0J@7T&j^@-LSlTVx% +z(&7}j^mn-f@gr<@^SYq#_shOz`#fIofVu|r6-l3>8j(BNVnqV(s}5m(<%G)KqOPfX +ze*g57{n(YZZOLNI^)D>50Jp)1p9;I38(K;qUqNNCs=5otiGrK0KK(D#jgSR#t_ga< +zq0Z*b=j&sV&vo|>WfRk|nxT8wo_YPS(lpv{a)-NNJ1uP;HluTm$Hi>p*e6)b8<*ai +z*I`O~k=vzJ+sEZqP6ZEgHW8$uX>EreY)C9%LH2tuGed)P9IN8v@{1^{e%~$YjAP&M +zHA{>(wI-n;UGr=E`lF8T1y`YSkkIA!m7}OX +zeUnQmKE1@>8jmkQ=NrVwte@N~+w7yXF+|#|SU*R;9N0;P6v`LsoJ28Uc&BblY=cfJ +z0n0{Yxs@vWv&s8{^BW&$>UE%USFSG)hzYAkNN2Hm-$fRcqE;0sr^dw^rWPWKyjC%3mmm(i;$`6G( +zMym>YB)m?mJmts=cF6$l>S#j;DKXsgq`11`jIYjk#kx>jm?_e{++bqX=BKlb?W +z*?IAWqYq7|t$wa=-6kK~Hji0YnQho99O&Yy@fhp3i%_yswlqGVBiJ_FI +zQwp8r(xXUj;gCv5W8tJCa$S;~pL))7zR&mbc|Xtl^?5$u_g`Q6ZolowWv0sj06_YX +zhykElEfx$4cF~CwQ=q^Fq(4LefIu(S5+GA)44PZSUV&n7RtN*YGWlEvmd)aFsdTJJ +zNXH&yiLru^<6M52n28lL8C-@4D-y7HJcjT;b)cmzqP?t#*3?nR51f^!r=*6 +zJRa-hY=y_WxwyEw;7V({n!y>p#hE=UE(5^f+ +z6Oeai198o&IA8rwz9sG(ALyOGB>VmG!$|!@=TAqgpC`y<2-SmB$C13<*W&|x53XL% +zh5LVXP8hEr+N7xrZk?Y{5k4P%*K*l;vQ;^$k}RI1;o;%l?TNLDu!0`Ke0}M0R8ReV +z{J2r><4|Tl>hNFm+ +zISUrjp`NX~;^0l@E-gD|FcBS_Yww5J&7lb&4Wt3{qqBsE)^B6>xa-KJuvT2hthn_7 +zX$ZEYGO@>ce-zy812pi?jN4aC7xZxa2@}#6q}8S(qGwq&v1L}jI9gQk?v|z((2WU( +zS`>2{Zobh;)L4{jSN52b6z=)X^w?N1EU9Tc>jm8B<-J@H&j#5RyEAMZief$1M8kYt +z8PV0+re6jx?XfiD7DJRRooX%Ixr$#cWku8~*81VKqEE8>+GbZZc5^sI<7!%vVk5f0 +zFwORoSu;P%R+(9Grt{;O-lE{ZO*Z$e3FK!q$#B<0dT57kdr;`7eXqUaruDxsAL*?* +zoS)PQ$Jd3>C2WJ*JBYo)=EP4^{Lo +zEv-Z9y@s!K)5+@|BQZ7k@1*(*T7qR<`o)%Om*5eWahz^egih~X5;vbN^-8&7ezI|I +zZf)NZOs7PPEx$cPFY^HozN|v +z2zcW9V6}mJq#YwuG7k?7RiWd9U+iyucg3`Us$ThQ2ED%O61OFZTNxl)Cmcn5Uh%#e +zZDtwsJmP7G-H~esdoPkl7dTP`Jt)gSsof_#M@UH`Wy!?oTo)p=?y!gg_ + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0017.png b/themes/bgrt/throbber-0017.png +new file mode 100644 +index 0000000000000000000000000000000000000000..ce792def5cc6aac0b16a4ac9d029aca472c08595 +GIT binary patch +literal 1572 +zcmYL}eK^x=7{`B_%EqXz!<4reDIMFCXoN+XQ>TRTmd5yDY+kl0v|L6B%S$>5qg7H# +zr$XC7VI&=u$ysT#v{s?aTi(LTnYzw(p6j{q?{(du@AZA|zn(15eeQ7BS{MKTa1WxJ +zmr6~RN@InpGm?|1R0547`ZEAP6S-7sKuIY|HFRd~@?-9%P(c6_8A}5(Q4|_2BoxD- +zhhicqOiUa#i58o{jKnY_K^n-wFybgNF(CavwI)-+m@sl$r@AT%wG`zR!UO>uEY2Q- +z!(nW;nBZ`DTU)#>R?sSWs`9K_^7v3_Ab`cHPhQ~2dy`I*qIC6=5sTKt3 +z|37Js-R9x5z*J$xkL;vSD#$SL4xz=V6u{Zorxc>B06@Lb!;RqM2R&cd8C`a8Rr|SB +zzg5cJi4{ak!p^t@{G;!#)jdC@sb~5fZY}+4oaqoh(%NW}d8zK0c^%@j?`l4g!f*2m +z$h>kew50#*Lg$VyE+e+T5I-*69w90%juElres4meB3h8KmlYqYQ;dhMD=dg=~lA90&00gHr+_yJpV&f +zusq=|^wvCDvV0ce;iyiXi@zjQ-yk&lYQ)mEetz~%8|Y+~UpnGqP$~ToEn9P!jtqR~ +zEn9)DXYk9gm8RQI_@)k%*g7rR^%eu(&&tmrg1c*jR_3uoU2H6#8&!Md4Lao~3?3cE +z=NFL&otE>SXT7zZl4sz{bBkN{D*PRCQA4q^lEJdR6i#(Cq9$r&v=&(~d*dPm)BVz{ +zvNWlKuC+e(rHRE|n3dq09#_D3X76#aX*E5>cAwrF#|uMOG?yJm5T7)Xio~qnjiqW@ +zl}Bb)5P#_p?~t@=3U4}g;l(pvXtG?d1t~PMhf2+$oO#59hfUEN6E{*zT0Wbfoe5~M +zm5nsPn%c)KB*V`3xop9&tbWK~>Phn`M~AD_H1UAVothW>i=GAuvPTXoPC`?Je`SJs +z_<~dk`WtS1W|)_z5U#Z!4sy|h_8m$)(4MWvaza#}I4VO}dVG0Se%v9?BHUB+h>VPEs-aE!cHjZq{5If`p83rCCe +zPiIc9C-5xMPePOt@LG2YE~!Ab{tdln=caR)$AU~>>QC(yMLGE|oBC6yKD_oz1eh3*_o++>4oC^yV_01KX%x}oCo0zPMq$8_njmL&fE&a8T_ZA;%@qE*n +z(H~2bnhWE5m>-;q6$!HIy;nBxtG;9s)T0CAT8YL=X#0nCXQF$nM8&=iHNnXS-rd3#Tsuka4)}w6 +z0`VS!nka3MP22xeUt8YW48N_dyVAl?3{ssZ*upBA-Z-Xi`K=cMd=od(AXcq8E!{_| +z?%QQ{@pZ3K#zUbj9d1Fj33Kpcp;=X% +z>y<*2$-+=&9*nDl66COgS<8oozOrNA373?xlu^&cn$E{VgZi(K8fME3l2iN{>2fLV +z#`SiV+|Q8oP0rgsJ=PC +NW7j^n+dG5P{sq3l&Vm2{ + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0018.png b/themes/bgrt/throbber-0018.png +new file mode 100644 +index 0000000000000000000000000000000000000000..6423b95104fd1fb81420f5cc0cb5b1baebc90726 +GIT binary patch +literal 1601 +zcmYL}dpOg39LIm#*j!?6hZW5wXDsX@oRLCDX@%SpQM)kLjoE%2VHr+QlpIDEN-pI* +zY9cA3wo-1V=_W;@nnXgB$&xemoacO>@8|P=p7-nXyuY8nzDIn#Jv7wTr~v?=LEi4} +zr%;oXQh_TvHznn>LR8t?gSh~puDenY;B+ZUVY+}@gTQUkOa_3Dif1wKG0`j*Eey}) +zgyAEjK|GszfEAwzM&ZFI28+SPbJ@{xaSYCXilZ|bapCmL2TF=4)Jl{)4P*ee1R@Df +zB;sv1m=K9h_V!Npgr+;sdlWNTD>DJnECxUzIQ_gtQl3(sg@UR4ScOAVKqASq!ga60 +z(_Zm@S6Cbx@KbOEf^BZU$~^_tTY>&zj5r1WMseclbOy&{10jOV<@@zCE4c0o_fss$ +z;Qaq2j^IEJkb?@W^CSB}7?Z&@@u#ua3I&L^q=UsMD*#X$AiKK-1gQ#&dvgW5Q5})E +z!knN^bIv1jc+Q`}IjU|r@O7YCrpj{mci58p-o_~Hr+2Q|>~(L9F+7=@7i#Heb{FNa +zida2f^A^0=JN9ypH{CqFN`Oooo^$R!aPZvREtzEHFyrHUx6ht`Z+1O4_Tv6Q2XAJ` +z&1aZJT=r4dF;rtlMbFVW5wCxtDGjWTAH|lrRh&Qu@1wY^IW}LvyyIFhbqIMj(`&{e +zS>+ibOI-718F_F_yHQiA)bx{4j~QWH%Q9s9sV$=vIu9O~wVRy_w~p~xH&JyuvW0K{ +zhcf0g;-Uymecbkob+sIJ32)_!6lq_9Ol8E5=Mt0*w@62~)|Ee(x>^O3mO3lf%vw>%+4}E;1qK0ZSg@wkMP=EoMQ`i +zhwu9OFP*ml^tle2zZko4e!fD_1lHBjIX9=1g0PNQ=b=n7s?DcQ?Rw-9(YI_s_3R>d +zo{4-v7A;zLWdYm@_(=p!jNdL*q;xK$M70K-GN=6<=8+=&M>~vjk=g?ex +zqKRJGzFwYInCv`|kSRZzqU1PX+Iq+cIHb2FNys!!Y9;GXo=n}hAh$?j_?z=f*Vzjz +zWp572NNR#^uxV$xTVUco4y($cKp7iZhw^keZZ>c^tR&6QI^1S613K=Ro3~MX)gagq +z3u!Pe +zHS&$sPciX@7f}7rFllLLcsG}{S|O7IX01;r(&4pK=dEQ`q-l&S@iH$#i2P{z&E$s4 +zS^jM?cV^GM_)7+&s!v0i*WK>EwL=z*pq4Il`}4+n^#-L%C1RLKHISPOzXi+wtls^r +zovLA3gJ6knnp#{U(wR}0*`%Zo_w%Q}LP;7D=x`#>ynp8V*)-_4)?GDa{DIE;@++n{ +zG$%3Ucr?s|mA$+zX_@%`)iQ36PK5c#qgj=k)NTEq8(<34HQx<}VyPY4)aPCh#PYCw +zX?}?3J3BA$SzNu4Go9CJ{*$MX^ +zR@eINUptfEjTl)wvekK2%eZ*(vj42#cRe+}o{%A|w=^MtCg1aSkJ~)JA=tE6LQCna!V)P6BwmjP~WQjhU|7f6Slks1M +sHyw}tVF8gt-stkA?cnZ`rS_ghWCxsXXObb9R{Vhgd8@a(a0@l_U;abPJOBUy + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0019.png b/themes/bgrt/throbber-0019.png +new file mode 100644 +index 0000000000000000000000000000000000000000..45e935927623eb5ebd3bbd1f5f6aed9207a55c88 +GIT binary patch +literal 1608 +zcmYL}dsNbA7{`Bj<6^8xBxmzB4OgaI3MER>1u5mFDHf)AK}k(+a%twJK(=M6c-f{| +zG;0;QwW(QI9z@B~)-bWQ2ptP6J1lKpn&vdM{cLAv?|Gl+d(QXsobUVm^&a0H9gak} +zA^-qDG9qZPpn5JB%mM7;{QPN9;KGOmF#tF^Ef)khrE&pHs)Wvx?8xSF09=-U$H5)U +z=JC?fabi(AE;Cz#6LJsp1X4*BPLjppal|;WFq_Zki2l<6HkZTCU>D!B1EXA)qiAUo +z4nV{c$T$K4N8IE|AW%po3JKrVZPJ4?tCnY&**p$_$5Z~jge`Au>o0>0_HGqX8VCtn +zQZ5SnKo7O-Z3it;8t|_K;PJ%LN3b3cqL*P@I)~2zBv~Q>o6Qk$}NLQnw$k$j}a#SZ}No-k-(Ocwm}8g0&n +zc=WL^y*BDw8zYi3SRW%$Q>AqD56(=xL=<=9w58<=ntS!~Rc92<4wcZtLiuyiRG3%9 +zirjL7L%FMOh~e&{R-8%H6buJh&0@o>b|R{#7Ch0>(KSBLcS{mxJFdqy^E`apwEG24 +ziY#L+^k7tmA1&A=;9x40yemzaz8qqp!B_32Ls7#9B>VNENhJMlW+cGz?8W +zy4lrjcIkSh!98puRJU&R=?tV9Vw8`S>WZODsjn!{T46WA7-I@YV +z(vkp7D&Z~AaBj)a)@lA5v#@LO*#d0vP8D13WLD^sTD5_hXE! +zTN_WC1-t9$gV*d$Kb}XnTTA?Pa8~8WXVbYUXTsUs8O#CHo6R#@+LiN#e(%#8er23A +z^&4eyWX7a_3;csCIdd*%TX%=*XECDL3ELQj_p73?CJI9A9WwzS?i{f0nMfF_`khr` +z9>E6RHWVK$lc>)K5f!pKvfN)8y&|?netq(HQuF46@k~!6Ce?=OYxu=S6T0X?*5z78 +z;4=R4#E>bq_qgnmj@DZhnbgy*_1HU2YGyXGFirBiBkdUuCWivDu_!{;2}@_eD2tDw +zRG{MK`15L~eAV&qE`3P+c3U8}MKnV?cw@ht%LmC{jw1HNfAwurYL04F)^pPQtc6hV +z8iF?_Ga(3GoUKzq?uw^>L~bKwU-5IV(~e%S2<-FAETfKPIZYaQPnkAo=;7XhVz=Ko +zn%!9Acgl0+HP5FZ_Z!xos@vHRG=*(+7>@4lE!)~pJ9YpwdU!~EP>Act4Dg;aw@v@MZrgI +z#g(=GRNlGk>%Ye0^n(^Ox_?|T3{Pb@4BJn;wCS)PxdxhhBrK(`5stcZC +zrwp<3tkFF-hr;HJD4&v_=isYe5=W&%H?C0gXT}%PwbMP16W+Wk#h4zK2aM;|-IW=rU5qjZ0{*I%U +z*Dq=1RZc<+yaTad2PN*M_;IR(#uNDugS<6sq_r5Ad}!ZPK%Sz%XehIS!gzy}G7H>0 +z9QY*rNX&zySu;g$ef0&-pR_MBP+D#nIoZyjFzCvA`;6~Dcs*wORtt+&7uq{whk>(&9A0>1Ai_m`)Tyz +ylZqQ_OI6YL)DWxfZQuDH{K$lL(m@=3_Ajb$XmVakmnIzi3IPT^n%4AjYVkkv|H85W + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0020.png b/themes/bgrt/throbber-0020.png +new file mode 100644 +index 0000000000000000000000000000000000000000..b84b04dd859b199729c63df17ebf7cbffe8f3185 +GIT binary patch +literal 1583 +zcmYL}dpOg39LIl#2}dqtTPc>?ncFTRLwGEglq8f((S~8!W^E&ua#z^| +zacx4#I31QHky~=vsZ>TR$3fvZQ_p$M_xXN4@8@~HKF|C6`RjYb!`($mVXp!J07|Y$ +z9X%zA*r{D$NoTUzD-w~XAN6AbfFfk4q=27_;S$rH<>bq9CR0cNIy{m}LSG4D;(UYgEE^eO-k?lt43#l6TQP +ziKn{b9g$cJBJfR67>rr^*seb$P<;n_1(RqbfECV&3<@GK5C<`#bY_C5pjE;lJKR&U +zAc^t+lPHX(otNOX1gm|`jt!=ems(11=f>Q +zuqBknf`!l*C3a=ZfwiZFHn8us*QeiG4a80lSasU$ocm2p7P^Ml%LNbLca*TH8@Ps# +zAK678(%s)6^DZA5^IYAqecKgtDHNa@g>{NFiz>5dC+}C|b6OWjW4QjVm6wXpuJ-xC +z@QOuLi*$;*xf^KI2FVWgiCt5Dj4aiwe^tfP6$15d^f4eP(Lwa~p3tDhK`nh^B-NUH +zLCO^+7yY2FI|NF=N7d@LIw^J85{S_I;M$}Jty8ZXryZ<%_aB2rZDz(w;n;020%=1V +zh!Ff5ckB!sTny?h6z-G#&P1oeq!KFRCr%xkpd{!;|CTwfGs)C}3S}ml7hb-2kBo7> +z5?_^<+%tD(uzKi57;4WXZGYYJKYdNinrU40BG=96(hOcp4xM!1L;zwg^gO@x<}Y4* +zdAza2L}k#EgdrtDRqY8{&LpHQY5=4q+jDWIJS*|6u-dBM=ku!Z-6!L(*FatkKiM|t}fQV7E@ +zVKZN_L+=jzO1aV?g(3)F@MWUI`~$2uJ-XOq@G+EdV6DFC?r7BcYf^^Y-3zN;boqjD +zd~tQd?j+qu3hU2&2tcvrR@xpJS`eqdA<(kLonONq`#CVH<_QYeIt{(B&P{jR5U|RHlM@kVHIW;A*}WI{;F9(7FTY%th+3VBy0p+cf;_ZlwMPU)!zb=EA(T$8QERvz`W%+p>2NZv6X}F7a|Ew`Wc9IeJKNMtOS1;fH$90-1R6P2zRlVYP^wY8WWM^~sv=^_Kh>$_kw)jLp|c-9gC&n%x}{VW7Mn6cfgN}F +z6Mk4Olf!sNFRO?jF(zoJU)c5t@KnTn5(qU2vt^heG_o5}!wYnG5!GAF?YUi-{Hkg4 +z_`0;O+#AE5Q-N)3S4w5=InS4NMJ9CQu7VX#Z(kYjkX_kU-IPIbjDxTg8re0YBNzK{MGz{e#*6bxuWK&3Mf-O=2gesRjyk* +zsMd#45M$=txj5@RWIbbH@C-e?q*~#IXpbI#y<+!io|-nP>315r+b?X%;mi0O>}=Ez +c5cH<~U;AcCT{$u^$&UxPI=MU6;t5Ir0u~;_O#lD@ + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0021.png b/themes/bgrt/throbber-0021.png +new file mode 100644 +index 0000000000000000000000000000000000000000..a64932df50150f1ac1e29b1d181b80430f802459 +GIT binary patch +literal 1602 +zcmYL}eKga19LIm#JZ!|pT*|WumDz)bgtRcTYHq1csCn8Qn{BqX)lAq>Nm8g=vh~QV +zZc28Ft5n!+6BDj(EfOP%+x@9?&pqe+`M%G2zdq;v`F#KR=4}fn8W~s_003Y_ +z3JZw<)nTdNdf?4ZOVfga;D$x<0l*NsR1lz4wj4A!3J8&cPzH+zpy?bo4V}zjv*W2~ +zK97n{VhGS&mWa*SFQB6ZbQ+t+NAtOiloT58KlMmp(Nca+$nMYqqn0m4g~SVJ01kuo +zMPspOoTmd8>*ww5=Z&dR^tFLKCQCg#8EhJW!T5bYIPBm|2p(kcZ>#X)L5Rbq?WouQ +zdZtTWFlh1Of$!ph!Qk?H;YtviFTovDS_%yi(0QDM1RBr56O+j0OCs9tfgHKSBfte| +zy#GgfV0=hBzX(8V_AOgPWzqN!JL1_~PysB?H}lN$wE&>gPYT(zGZIm7wu5Wci3LH4ELpv{^qg6-wjl-eokTLt0Qa@}4JopqG`<0{JH57E(^g}NxhHVobL +zLD+kuTXARs!-})8*twxg+H;UoY8-HGz2|giKvJhj-5*XSlgIy5sZ?cj;&9vj7wij} +z{C>X{_Owbim)|w&d$&KNck?iNSzWI9QmEe8s>*>@XK^~MjZxJfoYNRrDtqYtVZD}B +zozz_%3AHwf-U1t`>l-0<2gX6HK5gUUp303v1USap9DulBfp84r$#Mv1q=)D%5ca;}i4#s9EZ2b_{V{Tef +z`_(4%yfClN#kIyhZ@r&*IhRM$wZ>1b*<$)y(fH +zwMLt*JdC$MTtTJ8D|538d83M=-15&^`#WZg!-m}=LS=3R~^eck{j!*B%owKdnl+{IrTp4rpRt}kSAaANUi2^f> +zh16#!Nv6zGEmDawklRvDtnzl$@7+as#B5sN-SF4mRms#vQK)STf6h65#R9;ZFb^<$ +zeQ5A{^WL=egDWjeR;#>Lf8b6Hclq6)@i$sf_m&7->&oc$dSe}y;Ik7$f|^Q-t7qx| +zxQTk7peB)%1>7~sYP0%s{-Eb{tGx}uT^1@gx@*+4Rm>VGYMQN`Z(#UBn$ZYs>@}|k +zFyGDCnUTjwiniA=0&K=7m;d9e_IHqFPkOYEkx!9L4Y#hjfmW7{5-(Iw7`Ky%o$nD_AuAPnDUA4E}l!=h7S_WRGq{QN21!Ad%pGc4KXFALfl1( +z?6N+mu9{CuiXHSqy_$PARL9B|%-!({1vTOFdzlT>UGh_dP1Obe-CvSpppT3W3mk{8wA$WXMpW9SLmpji +zlzM57#=YSOlH27MVfHZTeWuh;7olw|NQYIek}u9jEmP+XtsSyt?sTt#R%SDYk}lZ* +z#D+SD=G>@I6hboy9lWJMW#RN>=Z`#&;aV)f4j}oD|2QUoDs0S{+*17&FV?q^2yY>5{bq3sgh_8zAh!^)9nYex}R?KS6**2oI?Yip%~Nwrj*Y + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0022.png b/themes/bgrt/throbber-0022.png +new file mode 100644 +index 0000000000000000000000000000000000000000..4b57e234270c5b3810796a93de9e85e008f446ce +GIT binary patch +literal 1595 +zcmYL}e>~H99LK-PHRIB1$}-h-N-nmU!;Hd3BZ)>?UGihiuk43yE>ze?8g~+MlpmG4 +zx+L>+QuL)&Ty>~hcE@H%NAlx{Z5DE0caMAA=ka;JUysM@`F^}U@4r5xfCJ>!hGvEU +z0Ic@$_M||HSuTTBQ0FEm&q4xcdmrHffDv-J^nlAHD9CihN +zjBpx`%c0?-Vt6=qToQwoz>CK5qUj7e7sqACFqw4De~OKWqccxL2wv(#QK;o8&u|_c +zAmHtYI6FHW!5(90M{;l=Ip7=H<bSiGZ8&^!;q>;B13qQ%jjM74NWJ6KPLer8awaT$Eb4rqAFvCv1xP%ewIzTba8$*KcgnxgfC@8Kz&T(P~4q +z;A*kEhh&ecb>H|0-r_r?iUtYdg3>oI94=A6eQ|Fn>OYTOp^& +z#F{=I%qUh2i2PEV6-gc; +zskvU%FsXfeRL>(g_Mnvcvg)4sXxiRVcfp*boBK^Lax5^|=9e65$%swIq4-Vl#R*wc +zNtbV+zsFp8Z`st)c*VymJMw0UEiena$xF@XGM-`Y(VA{ +ziFH?ZF_m(SY0-WvR8J|F^}UziyO_f2KXjKGT2e +zs?P%~wMWhnT&C@tz+y(1bwxjQ&v&GHvRHziw|V#d!>4!ptW`g-;og=%MI1a1E}Bst +zcI(IqLN5FEGgE>2oo|N<2J1i;n1IoRsPx#drZsn`Z~PMAlJ60V&M!I!7bWNU_bJG+ +z4;5gm@$ZFDybk^yU>eb=NLLo~4Yjf=kC3Tu( +zA6)ed`EUWel{<2)h_SXaosyt6MiF6HK`Q8~GkrFo(&mIxyM%QrBI?s{`bkyxD|pB` +z!LOs~RlDG2`dtEhFz2mq_Vk1LdD!fX%0+yMUt!Qlt1-|nwr8Rh@h2vtDCcLypD*;k +z0T;oqKdlJnKh~h-7ZXWj1)0@S%@934B&wd2@tt~cJ?qA#sS>1H=@+{CosZ>XMG4X7 +pj+6Ucx<}|`XAc`QUQ3;qw$zWv#>e*6g3#{=_;?-gy!UmO;BO1~<);7u + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0023.png b/themes/bgrt/throbber-0023.png +new file mode 100644 +index 0000000000000000000000000000000000000000..b3dbeef0ed06455beaffa218655d8070cf2324d7 +GIT binary patch +literal 1603 +zcmYL}doBm|NnwcRZPeW-J?vR*@C$Rb2?0KnL6w_rep#0oNfxIq!z;8Z#dz@#wKX_&Os +z^z;NOhQp>}l2f@D7M+*QyueMta8qdMG!BNtN@Xx;?EmyQg-&B6QUp&BP?XhfRA2&^ +z1~`LQ90rTUIJ?+lv3OTkyeoM3*O6XmX7BDySZX>A073k}*VzT!bf81b;Gb342@rI4 +zDT(PZg*?+;F95RG3BbQ{90Z-O4jU*TXubjEaRI636r`w%zV +z3WlSbpAvzebZ#%mMy{Z +z7Sb=UFwrh30BM&OA}C=^twxy@H$!5N1sEq+H +zT!NGsafT6Sb=rXf<$JbEL`uW$g#$yTaVVc5svG#x!H) +zCp0m3Duz>iTXpMazN^JExK8)lyOBJ^?>5H85jPT19$zs8%%U#r)xz(E_z)BB4b3!4 +zR_mCv&jVhVci5qL-%(;;U@YSBgCLZw>zQoHvLWn;;I%gRLNPbqcwC2HvSa&R$Df)+ +zhnyN&n7L$1N3Fr412*uF#Ld8!GD3H2nlMDE07k6|QP02W=CNQihnCAL=J7v0sYEV1 +z)I~L>32vv2;rF4I)K +zk!&*pDnpU{`FGTpUmtBeXKmiY>^2+-~(ajh9}F`veNqPA7|r1|c^W()JS1G^4 +zEz5q9TXVa~T+aLjR;Bk)=QQ7EJn_-_;fQIAlMd4(I|iz>J&QRm=q0SGvDB{1+g=zu +zdEic2N1z1$d@K>2>H40$zw47fje1DFY-Q^`MdUlKK1Bbpv#S9jamc#Ejr^F97B|tI +z=YHkpbvjQQtILWukz5`5vqr3QY8I}g)mI43mEXw +z?(H3CG+*U675_nPhRY~KNzQndXwo#-f1|uV>zEQq|_nw(S|l#M$1#*3TxEz +z36e+~RV5;~t<Ydlqt;ie?wH8Rqaa5!$ymVbd +w7Va}%9+gQkg;W)49{h64Q@D6+QnPa~JmKc`YyErcp~H99LK*gV~H-4qx^27b?k@6to%%DsmVwy9Hy~h8{7N{$()LWYGLG8bp1G4 +z#nB4+adIbVbr&fMQMwyrjOd(mU)|##_j!EY@7Lq;dcGg;&+D&G&LOh5&iXCu0RYe; +z5j`oOny-}>6zsf|lzC8Kam1rM0MLf7)jFWG%n&qP`TMARFJ>$qKruKhIx3pUVueSb +zc-#n76qApNi#@^OB=8w1K7-Dp^H97vCYw#?{-<`dSUUSSEwc{-t}aRin2s)b%@EKeVjYj91+oL1nco~%52Ox*9aS9la +z&i(&MJG28SV3`kMy)U~@M8wj0=KkTVI8Xr$7N1^ZxDx;%!z54l04gl67{jPItbaym +zSmUMBNVKv1aAPkFdCZu=_tU=?Lp19;>NfpC;tXCr6a${uhp)V~a +zI4`H|^M?Gr%}_!hHuU4&Vx_eI7n$T~%#o70pI_}KXRbD6pWX;h0uKDp3JH8T>}^K0 +zff<@@b9m=^0)n&II%@v{OYJ{<(<*!pr}Q=3nxq*!WHJBTU4e9##;cJ`6>17`9ra>1 +zUS~QnFB&oM;*vzCsh|J8YWghaDmwpt;q1%*By6sLOLp#3MN +z)4ibL;=0?Hev!y2t&>wl{f;lDC#}|EDYB%LN^iui2Di-As)UoTACE)G@`9J5r4WC` +zaLMi;KRXT_T@bcsZQ5=5z;aHH;c9)U8Ut9+|wnpfxw +zP1}^{nK}{Tc7G-IFucrX)D}9DG1F0e9z`hWYZL}I?_c;$r+@*cCfLO#flEKok4P>}FN(yvEXu +z5KfW8uRlA_bd!$hZRo*%JV(3ov^R3dc0OKduEY~ +z5$7Sp>x8*&AyCtG3f-!ppqJ;O=$%NG4AztfatP68N{hB_I1w7Iix#N5DoC@XF_avauVm!Ef22z)- +z{$8sk`&<&uI_8bll;Y3RIjn77+>+VT7iYTAn{PF*=)0o;=}?hRSAGgA(M^~LTRx5X +zT<|uu@Dx$(QGZfIVIqlR=a*Z`Q#C}gBu>=HBGaBqH@!T@ZZ$_iRVPM9+ +z^Hcc+N@FO+wS$v+L=eT{))r@YBpnFGTLoH{gj|rPb#CXAM_djW=iceS%^CjIRR-0quIY_p +zU?5S|lL%qe$0@jqdOnHV27xcaKjDy^<-$FSu;h#SIKj6?8#}ziGy~%Ohvcn?Zof3l +zoh{iB_>DzQnzoCH^+wpdU;lQoLoQt$Je6cBYqAfFG +z_4YNYs&Q((%c$YG&yJjgIHMMwXX-%}jK_*@F{K1A;C3-G6wQ#HhoA4lZjRE+3q#2^>ob +xnW{0GfYu~c=SS4;6s*o!KNBIY>@RcvTcZ%$p7KGe+64ZC0BIlDQ|u9z`433t&fow5 + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0025.png b/themes/bgrt/throbber-0025.png +new file mode 100644 +index 0000000000000000000000000000000000000000..3905e00eeb09a3546eab2dec2158fa9bc5f280f4 +GIT binary patch +literal 1604 +zcmYL}dsGs36vsiy0B0%Uqm1bmq`l;kHnoM1K%;zt6bZkrln|nmSLJL?-Hj|I$$3}BFOx}NLPmf`8BIs$)K)NW)~D)tx*E~gJH(?R$$3}7%hOn`vJ-OqTR4)B|7+(ci8SMsz0-Wu@mS +z9(E}B#v7oGQ|&_<@yEfg7Na%uiOSB-iwlumO{ClP_4T+Nc>L9ks&n%Cn!~x>oS0|% +z^0ib3ox44q;a`)gE|{-aEj%MU`A6e?Z^e~}Ja&V@Z+#j2YvRnK+S*+N+BFCGh?H>r +zHS1EhxxBsOO7-VO>e=g8cr@9=hnOEvva5FKEyWiz-{Gtkp5PD1069e|v>cri(#q5;ziiY58p?ksP +zu_V29EJ`-(anf+t+sSS{sG&t6V>-p +zGmBH4ce!bU!a5OPYtehVrrKx94c-)^bLCsLJb5)z@z+N+7if5>XMY<#uI#pc*SWG@ +z0`~~jhcyikE0|glM(K#Z2bbM3jxp!v-`Hk&kZ>#sVW&oos03a5H6to +zp`~-BM-`?bt%z&^YZaxH4BgK}wyum%C60$aSwBb^Qq5j^cr9`?^p$m5RBE%7n@*)v +znp5+Ni!SVf$&oxWd3lJ|*sRUcw!u9hx5(LnaM%B;L2slYXB{iASK=X`ucL1FRoSvcsM^y_=sOM?v#moSz?Av^`%uIs8f=J +zjsm^vhDPnYN?NT&Ef{%= +z@ps<PYq;ZF~D4IVE@+G>%VU|P~h%*?N? +zTaq|ppr$Qzkn;SuOz}0Km#f(htaP=)D^_3r$axYZ2a0BM`t{<+d&F~XQVR*Bk&Am^7d4XaWsbl~oT7)zZjixz?>dejRqAvxsS|r|qQq +ztvL=>_7)aooX>-^7G9L-I&j%Q5|j$SjF +wD~E2)ka~oIzC8+u<0Gd@SoVvtpxGs$Ch&UB0pY0y-8Tpz5q$~O9${(!0^C;FL;wH) + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0026.png b/themes/bgrt/throbber-0026.png +new file mode 100644 +index 0000000000000000000000000000000000000000..4c02eb167941a3611d36f1b0cfab5086d77ad0ac +GIT binary patch +literal 1605 +zcmYL}eKga19LIl{Yh&g4DH6`&dT0-5hIAur6Qib7M%k>WZDt!|=3$~Jc0E-0dRlc{ +zNkTiggeB!6*F}mf<+ySdtHw*leqO*CtPYQuBamUyIprN~2N%ntP7kLb +z*enX-bQA}{q$SX!V>yusP9&91Wh2uywg=Uk{_Mr(5>D2h%6kVw}b*8#mRZ*WGzz~5J4g)5)~`nB_3 +zk;2p7^!6((RygoO;7Fvyr4ewa0_tr-B8AGJ0-Q)zG?`3gnL8p+G1;kydhaQ??j}E^ +zSdhy4|4BF!jSpJoD6r1=>;wvp$~Gs4)0qkdP!5>nt44MJ02;@8c?2DWB>mQYHuSJo +zR{{2xj%RiG`9Mzt%VT=Z=WWyAzAXoxV+UhzxOs49Mz3gSZ-BTA{ZMIIbEG~J!RZzb2ecD19+C%=b=4pH6}Fo6w_zp@pR +zg<&1-c5}k1lUqA;AAMNfB{o&Eo3xSk_`ZTB)!4}L_G^F>j+`65!Wl=uxd6ez3*!y! +z&!q@d-9>&@bw!#l&DCnmMWfVAB92UI@wcp)bh7Vi?QXe0r9aG&U)1X$O8>x28@s^~8W#GJLJZ(7xW9hML0){J)rD +zv@d8PplbIQ(+)?QMP*US*tdb4aY;PH)VP1gJJ0%LRx$O0RN#yTcpn>BA{ +z=ft;=RQC4O#>sl6P}7%clf49VFtfj9)FQ@OAgg6q5FS`IjHxwdj-kV%hCjiMBpS5d +zDa+j6n!g^eGg<&0hWNF+n^#UZfNMLeFoRzLZLZV!ya5%vTJqC2ry$mf=PNz|T)Z4t +z)W0)WsB~#`u3*%ytfCk4e8j`-j&xzRIJ-^HG$o`;(mmca^~p@B_+#Oc@2FR{VUC~b +z3(z=G-|jy2X2Xmr;rjh|!B{?W5iqF(E}^b{6_*%`aM>nfJr0>OYo)?CUS7^ET_}$) +zx;S1jsX`O#O@ZtqGEA$#l$$=ld@v)r%_pHD;$m^wN2s^fscs?3L1TGaNot0Z@q{dV +zb*i=$W^udfYt!}oi4q-O8mc;T50Sx=Tb#K)bSIuUd=lar)MFRpHki_!RQ)y=i_zBL +z<+H12M9hnixUu%p^3n7?1YPigNB-xdkOk>Ti2Jix9Zl9v_jIkf)*C9>Z=mP<#4)X! +z3F?nFEaSJ}WQim<+@ehKz#7i +z%Gb%y#@zNoE~`C|Y(G=CpTd7!A3`!~J~7yKp(1C8Bvin4%JdE_-Qa(PmTeCOx_*BQ +zpZCH25n7y1@WGurC^n&>Qc`!kAA4IUV1HBRM3!al-kJo0D_2Zoc4jfG1*)zV!5Ww4 +zR(G@PCeJ?Z)^wgtR<*Sdjt93Ss*#i{1bA3XLoO*JBVx$l`UYHXyrwMTEl&MB))-tC +z>-S{I)2i-qjky?9|^4S*FA2I)RZ_`h(WEkpwZiqXPtGcQguH21YkZ9q5 +zP1|+%wlRj$jkwq8XVGx?UZqf0=yUe)L!4=>pUZsF^pcygO!yq}ZfOI&;4(oWZPgp% +w_dN>G8A;-dz?^FSl8Pj#tYHI*=?RwN&~aO&a;Y)OHos;umu=0hFsa-Qr5+WzRJxpV +zO3{k-3gQ9)6uHzYK+y#wrRmIbr|>*jQ6PYch+%`6gDf_i#=vkn +z3=EUS!^B1_~RF`o_^vrup*}4owO1#M4-~rqa`0 +z@_tiV92)RT&{!-!r%SU@3H6ttKLd;g0bT?rhE4}LC|m4-SZcCCvU7C{pK05$jL?r~QfU3E7_hh#l)4at-srgS9j`%&nMZGj=zi!HKI8v?x% +z*5(n`c73y3MoPbOC(e4WN|-!vYs(yV;y#Nns;aE4^vTQ5x5`ek6t{e&3|5;`r!B=z +zFVD$}TjfTbk>%XA3yyQSIs0p$;*+B~Os<#G+dpm*iNMW414txw*q9N|wu<|td3Q}@ +zupH~!JRo8dic6XZkZX19flfohyDc}*xMVXoQ$m~bdMmznQoQ=8A)ceeYaQ<^oAeil +z8gv_))2*Au^@+TA0)p%l)$}J)`ZTP)2JRRKzc5;q(cq_Q*%RK{E4NixC!Cd!>(lR} +z#3rJ1HZg3b&y?L^YFG__S8eO%@QNoJ5|H0v7K`QgAi-9ZrL%<@ceV=QgnDD4I=@a` +zxU8CdkT$MAD5){bN;H-=WkSuCeY_HOc)Fw|J_UMtl?*6oy;9wg{OpgegO}R!%hy%x +z5HAFVrHlINOtZ8Hew!P9 +z&z@itHO3&*K>@`aq(sCwEMWHJn4$)m^|8-PPW8%i^|x9vGE+DR~pWP23BcEGPq|-c_u|Z@y@` +z0v-_e*i3LFXGTKsAX4^!iBC5uOe?7o>YVw~^4<_P>7vs_=vKd3NmuNZ@6kSR(Y1ZB +z!=U!f35ZXDP--3ybM6w)`3F5eYGlyR*hLkIy@A +zy~rN(*a6jhkahZA-Ur4uCxQC0lF#cc*XX)a88knue%XP}_Qpo4*j9aIWZcLUc#2^) +z?rXDt(?sZVerF_HO}L}#{Vr=db2X~_Jt$pneB|Zdd6HMRZcC(J;n$_@k1AO@yP5Mg +zaOVIIRs(D>4aQx5d$ +z(Fw>zpD)FJ)vQ)+t##GQ?q>)+joCg@-aGf@XHm3=Ncts&dDH8yDyt#!0;ynN&U?tD +zrf0XeSoeAFJN#gLDDeqXw)>t&|K++L`lgxXBMx76&V|xTRd%X!q0+dWW=^S&SWU}? +z`HW8TC)It6MsZdKg*A&O69myf+obla-gk}MZdGReBbOId?K5jmrb!o9RKsT0FnjuQ +z9RvuPr$G`VL=`QTIO0Tig=ys4>WQa2eTs)x>ZB!BL5KtAQ&rIZOnZ7{Q8)tDuYOlS +z@;K6_lCu%L`A)@H2KmR;6^u=2hrw#^D5TdX)7ZwoTxi*tOP%)_G$H}ek}4b%v=WBJ +z!IYNQ4#AccKKE7hMj{p_>mLtQABE;q%Gwqk4OC5D&PSZORzDr4LunacNpBED$7Td6 +zj^=O8>a64>s1*4L467ryg2yg;XRkBbjSazpYpB%a)C#xoy$N8E#oSWjkwf7!J2- +zu^-yA^O~uEM3&30)*`3Av!_?vLtmxcm>Ek|*>@L`y}fdU-QMuNcOEVyH_PLQA3|2i +zjJtY*-=ufj=claYce$4(D`46_u*_V@;JkD4K+93hd@()=D$m&+Y8&J@4~=&-?v6=lec?z2dlCF^(%e +zRssOvNG3%mfQno$dt312A3XRH6eyRJ!Uq5c#Bx~yCmPm(W_Ug^IsfBqHUmI2^EeE2 +zPBw=_rK9;gIyx&mAI)Wd$;sQF&qU`l85{;5&F5z4<}!HyX#kDQ$jzXMep>-XtyzwW +zrsgvM90rR=W3gylAQFoW4GIbk!fJGrd%+&qa!*n=hXG(Pq5p0izHQ^;BaqquGYXFi +zLL43!9xaOGP(Scgd05| +zM=bLMa6ks{|0e@5Az_I(CO{1TC;Lk}o54pWQaM~u0W1zLJicZV0IaZ(qa%`%p+(0v +zECUhNpXTjDs%$+9ixd;fNzNkoh$9nCZK)KE)LUDTdg0*gr?4l)xY?)iu!Ap?TH5`+ +zx4w*PVb;LPNty)O$c4l1;j*H)MRl)DBc*wng3JQ5s{8F&Z7aA2H5v_RpQqS=?lh~R +zfX+Ipy`%I%9O_={S!VK>{6hTxec>;6;7o2(J#{C|{U@ofLzSq)h(5LGAQvGP%22=FnvrO5$yR5)HqAPZ`lHm%bR&NT +zNZPj)@eQg2h1-Lm?+fX)4OXu|a8`Z;pGDY_j-0=5d%kRSoNhi*dy~Dd*o`-~StG+;E5!ZFqv1cbfv$$hU#+qE9K{yMQxCI=0}=r +z{o#imeXrF=6{U-Pi#v=&HvCVb<A8zxLV9JFa@{xEt2FcDZ4W|!7j%}-jr0ORh}*N9X2||i9^#lG8w+f< +z9rf^@X*;~Ue*C#Cn_x{@UDNnL6|s8?+oP8%nlC0>`v!JetQWlX3y*f6hv(hz=$d|% +zVy^e7P`;sbCJNYvX@5k%+FiVXX2-rlvx~e&FuujS*q-ucv(xQ!24f(d2#ZD*R4%&{A-9}(RuqvB-rJJpJ90~?>3J;y5dvfv@_ +zYBaEcEeyF(4^?P4CS5eeR0qmBr9Kmx4I$z|acyLbug}~F@mpj>(K=ls!yh57wZiP|w`Zr7a)$J)EEG(nL*lo-P^*R@YZIygM<{*v2gw +zCQxe`2+9{)@=YPs5c +zzJzk>UGT7h)t!1K%&(y*BEZ^BdcDH9LT~LBYd7BbsG!8M1bMUex%pb%2HH|JwGfX* +zR!#aP@I%-yLOa*7)OS=Yv?W;SIF&Fw?^jE2HQziShXh>*d=2gVezj?E+WEWiXG`Jj +z9ps5dt=!*~?b>_yl%V-m;GPW+F`C~`_ORfp_D{{R30 + +literal 0 +HcmV?d00001 + +diff --git a/themes/bgrt/throbber-0029.png b/themes/bgrt/throbber-0029.png +new file mode 100644 +index 0000000000000000000000000000000000000000..d9931e1ecbf2708841134a846f9d36d9cdbd20f8 +GIT binary patch +literal 1588 +zcmYL}eKga19LIm!qOFifi;-usn{8y~p-HWVgCuIM(q{c)?8!Dgka_A9NuAQ8sPu5v +zwXhJ$*j(za5*4kaEUARrMC^K4_ovQ1_j|sd&-vP`U&tKoX@Gy!Y(gFzpfMHM| +zIRa9fxmutPbwO(CI3x&OV6*@L7MjkL9#B+_f=qwm2C8r)lLZ3U1TGuICNkM +zW8FP$@OU3jPajXbylrp?G_!baCX&ep0UXZf*LC;qbbHK)*n*#{@aYhA_ZH^b8$+JS +zoVOmb_;lcxxZ!Z_`N{=t5Hy>ETNoe*1cV8EZd@G5xADO3<_R(*9^Hkw=^T%M76keK +zKk0@e1Vv5@A-v>g_I?Hn6xeK`vw4sLcz2@c36 +zd~XgG-|T7q6#YuQcTZFC9(me}p5csJ(hl!2=m_rJyC*owU)fNc_ICQFvaZ9l?``E| +zUX##=QrhdAdM2*d=?Ap6RPs=h +zv#oPc-ubJ8$irvl&sDDVfxSKlY{mlfLTytdE|ZZYDV|R>%2zpR9JQ8#du2*hjcBys +zfEVXo^c~v(bc+iQ-U!nHjD~{#P~3KUU#_>q$ik^>RSmHdjj9LdsQ;J<)!AdTWEQvK +zy~p_VU=K8_b8mGnr~LUQgH4oo!bbSpdDTvo9pfIC;!PRd$^4PnOP07k$)1V=$BN_2 +zx8}UhS5a{J+h?OR`ou2h;M=?rri%CtNklfjC`DNIDZMxP&cYvGX%3GC$}m;w*Jyo< +zNauUA&ArsFM2843NjLluV&76~LP(g-TEjMTtjD6QLnT5Mcf!@CnzB?_K~O--s>4@mU +zm)(jZn8{OrbiGTGB${(ZLDj^}##db@byqSLAE%=-YD0vG?Vp{)a8q_{X?l%eeo@(1 +zYmu3jFhS__o~{>uRmiZiI~%UUC-|%(ySi1ZtNgf(haWifg^ScQdFCExV>+r3K?wTj +zd!s*j(4x;vIw5Lu+av&^bwwByCfkm*;9NpR4yzwZmB5jO-LM +zIEKrO7ex0`K6O1j-=teMKK8&M{V7P|063?CgISmW@_U9++_7-1|5SEO|Rmey;+UOCm~rawU07jqNUQUUNHqj_0AzquXC4W +z_I}RL(;pt2x9@@z>mvXr8fvL3gi0O!cZ&{n_tmg$rdvEe_4oHxMi=2d2gp7ce`D** +znW3Dj+M<@w%hf^2NWZuBlCUq*X-uL~rHs1YWc2xi?vo{L-)wnH6lA3wuR6Ul14c4% +zBAmyVm#_U{R-Gm8ed(FVqBHWb;EA7L6P3k^-(rjU}V}$Z3 +z;z_1J<-oH`G5=n{w&^psOtJrwJ)NnP=o12FH^dJORAM@bZpGDvlB~it^DpWd=YTYO +zb11M*1LHmGkaXEe%wd%zWY}ggyO?cmwd4{fVX4$oN$DJP +zA<127>xn3)q%_V?=Q+>$KHtyh{XFm2=XrlWe|@v};=MH0*Q)~npo#PL +z@CVgwwbWF=&N*`AGbk{YcQ6M4;5w_N1YEkZ4m4f3o~b|>4gWE1sc4>kt>DR`K|#@c>8DY^oqsef)bOCFi8b-c)+2q +z>zvfSGOr`0AM0rJnsJS0v8>>=wceFI`&03$t0wKWm871)i8hVDLxL+brSCgma3=e8 +zg)Wx;4uMBM?Y(TCpc%SxQIn-N068rjl&c5ba~~q#-Zc9qezw^#+r)1!cxK}w{6cHx(+!rX7tyCFc&K(}wK-X_um +zbkfH>)sY2%0q#k-rQBV$>Nc)kCLUCV8x}?tn4e-Qo?Lz7B+HR!|Dogdm(?vlWps?Xb22Zys5>eJ$UBR_x{Ee^9D`$*rsQ4L*DoUo^&N +zl8b~Yd?Qy#b=Qvk_S^ZNT4Z(ex_GabSAvz6+26&J1J0JPc&hmR2R&UfI$x$|rro+E +zH;?4$Kd^#*M$Yn1YGK#n5!_OhkWQzw=;AFHXBkKq33@DZ^oCFJ8i<#SdNlaPHU~tm9;4clFB7nQKE(bBfZS?5;d&MvpbwawC2K +zv1dQx>&G{>+a#i2?IaaCB2(>?hYM^U0b#25&8B@95>rE9hVaZ!C@KGlasl%t0{e7* +zgIker4R0G6sXE-(x2b{Zr+O6lRViI*Q{*}~O09b;$*28< +z<&M2R-Zc|W=NA>bJ`{hMTOszpKa@ +X`%H>)eQ8Yx_}u|GPrOH^dqny_<-gJq + +literal 0 +HcmV?d00001 + +-- +2.20.1 + +From 10fddacd1e9a45c8f7345067d61974ef249a1deb Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Mon, 3 Dec 2018 16:20:59 +0100 +Subject: [PATCH 22/74] two-step: Do not rotate bgrt background image for + upside-down panels + +Upside-down LCD panels are fixed up in HW by the GOP, so the bgrt image is +not rotated in this case and we should not rotate it to compensate. + +While at it also fixup the wrong indentation of the +ply_pixel_buffer_set_device_scale() call. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index 641eb70..16b8fc8 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -312,8 +312,12 @@ view_set_bgrt_background (view_t *view) + if (ply_renderer_get_panel_properties (ply_pixel_display_get_renderer (view->display), + &panel_width, &panel_height, + &panel_rotation, &panel_scale)) { +- ply_pixel_buffer_set_device_rotation (bgrt_buffer, panel_rotation); +- ply_pixel_buffer_set_device_scale (bgrt_buffer, panel_scale); ++ /* Upside-down panels are fixed up in HW by the GOP, so the ++ * bgrt image is not rotated in this case. ++ */ ++ if (panel_rotation != PLY_PIXEL_BUFFER_ROTATE_UPSIDE_DOWN) ++ ply_pixel_buffer_set_device_rotation (bgrt_buffer, panel_rotation); ++ ply_pixel_buffer_set_device_scale (bgrt_buffer, panel_scale); + } + + width = ply_pixel_buffer_get_width (bgrt_buffer); +-- +2.20.1 + +From 534aa0cfd591c5f9abc70551c4fc736001e51c5e Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 27 Nov 2018 19:21:33 +0100 +Subject: [PATCH 23/74] drm: Drop unused encoder_id + +We cache the encoder-id, but we never use it, so stop caching it. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 9 ++------- + 1 file changed, 2 insertions(+), 7 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index 34b52d7..9453a87 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -81,7 +81,6 @@ struct _ply_renderer_head + int connector0_mode_index; + + uint32_t controller_id; +- uint32_t encoder_id; + uint32_t console_buffer_id; + uint32_t scan_out_buffer_id; + +@@ -492,7 +491,6 @@ static ply_renderer_head_t * + ply_renderer_head_new (ply_renderer_backend_t *backend, + drmModeConnector *connector, + int connector_mode_index, +- uint32_t encoder_id, + uint32_t controller_id, + uint32_t console_buffer_id, + int gamma_size, +@@ -505,7 +503,6 @@ ply_renderer_head_new (ply_renderer_backend_t *backend, + head = calloc (1, sizeof(ply_renderer_head_t)); + + head->backend = backend; +- head->encoder_id = encoder_id; + head->connector_ids = ply_array_new (PLY_ARRAY_ELEMENT_TYPE_UINT32); + head->controller_id = controller_id; + head->console_buffer_id = console_buffer_id; +@@ -1114,7 +1111,6 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + for (i = 0; i < backend->resources->count_connectors; i++) { + ply_renderer_head_t *head; + drmModeEncoder *encoder; +- uint32_t encoder_id; + drmModeCrtc *controller; + uint32_t controller_id; + uint32_t console_buffer_id; +@@ -1146,7 +1142,6 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + continue; + } + +- encoder_id = encoder->encoder_id; + controller = find_controller_for_encoder (backend, encoder); + drmModeFreeEncoder (encoder); + +@@ -1181,8 +1176,8 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + + if (head == NULL) { + head = ply_renderer_head_new (backend, connector, connector_mode_index, +- encoder_id, controller_id, +- console_buffer_id, gamma_size, rotation); ++ controller_id, console_buffer_id, ++ gamma_size, rotation); + + ply_list_append_data (backend->heads, head); + +-- +2.20.1 + +From 42bbee8c3883507e51c722f75a80f19757ec5406 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Mon, 3 Dec 2018 12:25:25 +0100 +Subject: [PATCH 24/74] drm: Directly store the mode instead of the mode_index + +The only way we use mode_index is to get the mode, so its easier to +directly store the mode when we create a head. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 70 +++++++++++++----------------- + 1 file changed, 30 insertions(+), 40 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index 9453a87..52f948e 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -78,7 +78,7 @@ struct _ply_renderer_head + + ply_array_t *connector_ids; + drmModeConnector *connector0; +- int connector0_mode_index; ++ drmModeModeInfo *connector0_mode; + + uint32_t controller_id; + uint32_t console_buffer_id; +@@ -465,12 +465,8 @@ ply_renderer_connector_get_rotation_and_tiled (ply_renderer_backend_t *back + static bool + ply_renderer_head_add_connector (ply_renderer_head_t *head, + drmModeConnector *connector, +- int connector_mode_index) ++ drmModeModeInfo *mode) + { +- drmModeModeInfo *mode; +- +- mode = &connector->modes[connector_mode_index]; +- + if (mode->hdisplay != head->area.width || mode->vdisplay != head->area.height) { + ply_trace ("Tried to add connector with resolution %dx%d to %dx%d head", + (int) mode->hdisplay, (int) mode->vdisplay, +@@ -490,14 +486,13 @@ ply_renderer_head_add_connector (ply_renderer_head_t *head, + static ply_renderer_head_t * + ply_renderer_head_new (ply_renderer_backend_t *backend, + drmModeConnector *connector, +- int connector_mode_index, ++ drmModeModeInfo *mode, + uint32_t controller_id, + uint32_t console_buffer_id, + int gamma_size, + ply_pixel_buffer_rotation_t rotation) + { + ply_renderer_head_t *head; +- drmModeModeInfo *mode; + int i, step; + + head = calloc (1, sizeof(ply_renderer_head_t)); +@@ -507,11 +502,8 @@ ply_renderer_head_new (ply_renderer_backend_t *backend, + head->controller_id = controller_id; + head->console_buffer_id = console_buffer_id; + +- assert (connector_mode_index < connector->count_modes); +- mode = &connector->modes[connector_mode_index]; +- + head->connector0 = connector; +- head->connector0_mode_index = connector_mode_index; ++ head->connector0_mode = mode; + + head->area.x = 0; + head->area.y = 0; +@@ -530,7 +522,7 @@ ply_renderer_head_new (ply_renderer_backend_t *backend, + } + } + +- ply_renderer_head_add_connector (head, connector, connector_mode_index); ++ ply_renderer_head_add_connector (head, connector, mode); + assert (ply_array_get_size (head->connector_ids) > 0); + + head->pixel_buffer = ply_pixel_buffer_new_with_device_rotation (head->area.width, head->area.height, rotation); +@@ -652,15 +644,13 @@ ply_renderer_head_set_scan_out_buffer (ply_renderer_backend_t *backend, + ply_renderer_head_t *head, + uint32_t buffer_id) + { +- drmModeModeInfo *mode; ++ drmModeModeInfo *mode = head->connector0_mode; + uint32_t *connector_ids; + int number_of_connectors; + + connector_ids = (uint32_t *) ply_array_get_uint32_elements (head->connector_ids); + number_of_connectors = ply_array_get_size (head->connector_ids); + +- mode = &head->connector0->modes[head->connector0_mode_index]; +- + ply_trace ("Setting scan out buffer of %ldx%ld head to our buffer", + head->area.width, head->area.height); + +@@ -1048,10 +1038,10 @@ modes_are_equal (drmModeModeInfo *a, + a->type == b->type; + } + +-static int +-find_index_of_mode (ply_renderer_backend_t *backend, +- drmModeConnector *connector, +- drmModeModeInfo *mode) ++static drmModeModeInfo * ++find_matching_connector_mode (ply_renderer_backend_t *backend, ++ drmModeConnector *connector, ++ drmModeModeInfo *mode) + { + int i; + +@@ -1060,15 +1050,15 @@ find_index_of_mode (ply_renderer_backend_t *backend, + ply_trace ("Found connector mode index %d for mode %dx%d", + i, mode->hdisplay, mode->vdisplay); + +- return i; ++ return &connector->modes[i]; + } + } + +- return -1; ++ return NULL; + } + +-static int +-get_index_of_preferred_mode (drmModeConnector *connector) ++static drmModeModeInfo * ++get_preferred_mode (drmModeConnector *connector) + { + int i; + +@@ -1077,26 +1067,26 @@ get_index_of_preferred_mode (drmModeConnector *connector) + ply_trace ("Found preferred mode %dx%d at index %d\n", + connector->modes[i].hdisplay, + connector->modes[i].vdisplay, i); +- return i; ++ return &connector->modes[i]; + } + +- return -1; ++ return NULL; + } + +-static int +-get_index_of_active_mode (ply_renderer_backend_t *backend, +- drmModeCrtc *controller, +- drmModeConnector *connector) ++static drmModeModeInfo * ++get_active_mode (ply_renderer_backend_t *backend, ++ drmModeCrtc *controller, ++ drmModeConnector *connector) + { + if (!controller->mode_valid) { + ply_trace ("No valid mode currently active on monitor"); +- return -1; ++ return NULL; + } + + ply_trace ("Looking for connector mode index of active mode %dx%d", + controller->mode.hdisplay, controller->mode.vdisplay); + +- return find_index_of_mode (backend, connector, &controller->mode); ++ return find_matching_connector_mode (backend, connector, &controller->mode); + } + + static bool +@@ -1109,12 +1099,12 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + heads_by_controller_id = ply_hashtable_new (NULL, NULL); + + for (i = 0; i < backend->resources->count_connectors; i++) { ++ drmModeModeInfo *mode = NULL; + ply_renderer_head_t *head; + drmModeEncoder *encoder; + drmModeCrtc *controller; + uint32_t controller_id; + uint32_t console_buffer_id; +- int connector_mode_index = -1; + int gamma_size; + ply_pixel_buffer_rotation_t rotation; + bool tiled; +@@ -1155,16 +1145,16 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + ply_renderer_connector_get_rotation_and_tiled (backend, connector, &rotation, &tiled); + + if (!tiled && backend->use_preferred_mode) +- connector_mode_index = get_index_of_preferred_mode (connector); ++ mode = get_preferred_mode (connector); + +- if (connector_mode_index < 0) +- connector_mode_index = get_index_of_active_mode (backend, controller, connector); ++ if (!mode) ++ mode = get_active_mode (backend, controller, connector); + + /* If we couldn't find the current active mode, fall back to the first available. + */ +- if (connector_mode_index < 0) { ++ if (!mode) { + ply_trace ("falling back to first available mode"); +- connector_mode_index = 0; ++ mode = &connector->modes[0]; + } + + console_buffer_id = controller->buffer_id; +@@ -1175,7 +1165,7 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + (void *) (intptr_t) controller_id); + + if (head == NULL) { +- head = ply_renderer_head_new (backend, connector, connector_mode_index, ++ head = ply_renderer_head_new (backend, connector, mode, + controller_id, console_buffer_id, + gamma_size, rotation); + +@@ -1185,7 +1175,7 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + (void *) (intptr_t) controller_id, + head); + } else { +- if (!ply_renderer_head_add_connector (head, connector, connector_mode_index)) ++ if (!ply_renderer_head_add_connector (head, connector, mode)) + ply_trace ("couldn't connect monitor to existing head"); + + drmModeFreeConnector (connector); +-- +2.20.1 + +From bf8a2e893eb99b373f6e6de72954aa171e766d88 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 27 Nov 2018 19:50:33 +0100 +Subject: [PATCH 25/74] drm: Refactor create_heads_for_active_connectors + +Refactor create_heads_for_active_connectors to prepare it for adding a +step where we assign controllers to connected outputs which do not have +a controller assigned yet. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 99 ++++++++++++++++++++---------- + 1 file changed, 66 insertions(+), 33 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index 52f948e..f88d445 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -115,6 +115,13 @@ typedef struct + uint32_t added_fb : 1; + } ply_renderer_buffer_t; + ++typedef struct ++{ ++ drmModeConnector *connector; ++ drmModeModeInfo *mode; ++ drmModeCrtc *controller; ++} ply_output_t; ++ + struct _ply_renderer_backend + { + ply_event_loop_t *loop; +@@ -1092,26 +1099,26 @@ get_active_mode (ply_renderer_backend_t *backend, + static bool + create_heads_for_active_connectors (ply_renderer_backend_t *backend) + { +- int i; +- drmModeConnector *connector; + ply_hashtable_t *heads_by_controller_id; ++ ply_output_t *outputs; ++ int i, found, outputs_len; + + heads_by_controller_id = ply_hashtable_new (NULL, NULL); + ++ outputs = calloc (backend->resources->count_connectors, sizeof(*outputs)); ++ ++ /* Step 1: ++ * Build a list of connected outputs and get pre-configured controllers. ++ */ ++ found = 0; + for (i = 0; i < backend->resources->count_connectors; i++) { +- drmModeModeInfo *mode = NULL; +- ply_renderer_head_t *head; ++ drmModeConnector *connector; + drmModeEncoder *encoder; +- drmModeCrtc *controller; +- uint32_t controller_id; +- uint32_t console_buffer_id; +- int gamma_size; + ply_pixel_buffer_rotation_t rotation; + bool tiled; + + connector = drmModeGetConnector (backend->device_fd, + backend->resources->connectors[i]); +- + if (connector == NULL) + continue; + +@@ -1125,47 +1132,72 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + continue; + } + +- encoder = find_encoder_for_connector (backend, connector); ++ outputs[found].connector = connector; + +- if (encoder == NULL) { +- drmModeFreeConnector (connector); +- continue; +- } +- +- controller = find_controller_for_encoder (backend, encoder); +- drmModeFreeEncoder (encoder); +- +- if (controller == NULL) { +- drmModeFreeConnector (connector); +- continue; ++ encoder = find_encoder_for_connector (backend, connector); ++ if (encoder) { ++ outputs[found].controller = ++ find_controller_for_encoder (backend, encoder); ++ drmModeFreeEncoder (encoder); + } + +- controller_id = controller->crtc_id; +- + ply_renderer_connector_get_rotation_and_tiled (backend, connector, &rotation, &tiled); + + if (!tiled && backend->use_preferred_mode) +- mode = get_preferred_mode (connector); ++ outputs[found].mode = get_preferred_mode (connector); + +- if (!mode) +- mode = get_active_mode (backend, controller, connector); ++ if (!outputs[found].mode && outputs[found].controller) ++ outputs[found].mode = get_active_mode (backend, outputs[found].controller, connector); + + /* If we couldn't find the current active mode, fall back to the first available. + */ +- if (!mode) { ++ if (!outputs[found].mode) { + ply_trace ("falling back to first available mode"); +- mode = &connector->modes[0]; ++ outputs[found].mode = &connector->modes[0]; ++ } ++ ++ found++; ++ } ++ outputs_len = found; /* outputs now contains found valid entries */ ++ ++ /* Step 2: TODO ++ * Drop controllers for clones for which we've picked different modes. ++ */ ++ ++ /* Step 3: TODO ++ * Assign controllers to outputs without a controller ++ */ ++ ++ /* Step 4: ++ * Create heads for all valid outputs ++ */ ++ for (i = 0; i < outputs_len; i++) { ++ drmModeConnector *connector = outputs[i].connector; ++ ply_renderer_head_t *head; ++ uint32_t controller_id; ++ uint32_t console_buffer_id; ++ int gamma_size; ++ ply_pixel_buffer_rotation_t rotation; ++ bool tiled; ++ ++ /* Skip outputs for which we failed to get a controller */ ++ if (!outputs[i].controller) { ++ drmModeFreeConnector (connector); ++ continue; + } + +- console_buffer_id = controller->buffer_id; +- gamma_size = controller->gamma_size; +- drmModeFreeCrtc (controller); ++ ply_renderer_connector_get_rotation_and_tiled (backend, connector, &rotation, &tiled); ++ ++ controller_id = outputs[i].controller->crtc_id; ++ console_buffer_id = outputs[i].controller->buffer_id; ++ gamma_size = outputs[i].controller->gamma_size; ++ drmModeFreeCrtc (outputs[i].controller); + + head = ply_hashtable_lookup (heads_by_controller_id, + (void *) (intptr_t) controller_id); + + if (head == NULL) { +- head = ply_renderer_head_new (backend, connector, mode, ++ head = ply_renderer_head_new (backend, connector, outputs[i].mode, + controller_id, console_buffer_id, + gamma_size, rotation); + +@@ -1175,7 +1207,7 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + (void *) (intptr_t) controller_id, + head); + } else { +- if (!ply_renderer_head_add_connector (head, connector, mode)) ++ if (!ply_renderer_head_add_connector (head, connector, outputs[i].mode)) + ply_trace ("couldn't connect monitor to existing head"); + + drmModeFreeConnector (connector); +@@ -1183,6 +1215,7 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + } + + ply_hashtable_free (heads_by_controller_id); ++ free (outputs); + + return ply_list_get_length (backend->heads) > 0; + } +-- +2.20.1 + +From 52bf6e3e950729e39b838c119284ced1aecc39a0 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 27 Nov 2018 23:09:27 +0100 +Subject: [PATCH 26/74] drm: Store tiled and rotation in ply_output_t + +This avoids the need to call ply_renderer_connector_get_rotation_and_tiled +twice and thus also the need to call drmModeGetProperty twice for all +properties. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 30 ++++++++++++------------------ + 1 file changed, 12 insertions(+), 18 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index f88d445..b68265b 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -120,6 +120,8 @@ typedef struct + drmModeConnector *connector; + drmModeModeInfo *mode; + drmModeCrtc *controller; ++ ply_pixel_buffer_rotation_t rotation; ++ bool tiled; + } ply_output_t; + + struct _ply_renderer_backend +@@ -442,28 +444,26 @@ connector_orientation_prop_to_rotation (drmModePropertyPtr prop, + + static void + ply_renderer_connector_get_rotation_and_tiled (ply_renderer_backend_t *backend, +- drmModeConnector *connector, +- ply_pixel_buffer_rotation_t *rotation, +- bool *tiled) ++ ply_output_t *output) + { + drmModePropertyPtr prop; + int i; + +- *rotation = PLY_PIXEL_BUFFER_ROTATE_UPRIGHT; +- *tiled = false; ++ output->rotation = PLY_PIXEL_BUFFER_ROTATE_UPRIGHT; ++ output->tiled = false; + +- for (i = 0; i < connector->count_props; i++) { +- prop = drmModeGetProperty (backend->device_fd, connector->props[i]); ++ for (i = 0; i < output->connector->count_props; i++) { ++ prop = drmModeGetProperty (backend->device_fd, output->connector->props[i]); + if (!prop) + continue; + + if ((prop->flags & DRM_MODE_PROP_ENUM) && + strcmp (prop->name, "panel orientation") == 0) +- *rotation = connector_orientation_prop_to_rotation (prop, connector->prop_values[i]); ++ output->rotation = connector_orientation_prop_to_rotation (prop, output->connector->prop_values[i]); + + if ((prop->flags & DRM_MODE_PROP_BLOB) && + strcmp (prop->name, "TILE") == 0) +- *tiled = true; ++ output->tiled = true; + + drmModeFreeProperty (prop); + } +@@ -1114,8 +1114,6 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + for (i = 0; i < backend->resources->count_connectors; i++) { + drmModeConnector *connector; + drmModeEncoder *encoder; +- ply_pixel_buffer_rotation_t rotation; +- bool tiled; + + connector = drmModeGetConnector (backend->device_fd, + backend->resources->connectors[i]); +@@ -1141,9 +1139,9 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + drmModeFreeEncoder (encoder); + } + +- ply_renderer_connector_get_rotation_and_tiled (backend, connector, &rotation, &tiled); ++ ply_renderer_connector_get_rotation_and_tiled (backend, &outputs[found]); + +- if (!tiled && backend->use_preferred_mode) ++ if (!outputs[found].tiled && backend->use_preferred_mode) + outputs[found].mode = get_preferred_mode (connector); + + if (!outputs[found].mode && outputs[found].controller) +@@ -1177,8 +1175,6 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + uint32_t controller_id; + uint32_t console_buffer_id; + int gamma_size; +- ply_pixel_buffer_rotation_t rotation; +- bool tiled; + + /* Skip outputs for which we failed to get a controller */ + if (!outputs[i].controller) { +@@ -1186,8 +1182,6 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + continue; + } + +- ply_renderer_connector_get_rotation_and_tiled (backend, connector, &rotation, &tiled); +- + controller_id = outputs[i].controller->crtc_id; + console_buffer_id = outputs[i].controller->buffer_id; + gamma_size = outputs[i].controller->gamma_size; +@@ -1199,7 +1193,7 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + if (head == NULL) { + head = ply_renderer_head_new (backend, connector, outputs[i].mode, + controller_id, console_buffer_id, +- gamma_size, rotation); ++ gamma_size, outputs[i].rotation); + + ply_list_append_data (backend->heads, head); + +-- +2.20.1 + +From ef55ed99e74d15ae7b9a53b89450b6a7b4c297ca Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 27 Nov 2018 23:58:26 +0100 +Subject: [PATCH 27/74] drm: More connector enumeration refactoring + +Some further refactoring to prepare for adding code to picking crtcs +for unconfigured connectors. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 94 +++++++++++++----------------- + 1 file changed, 42 insertions(+), 52 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index b68265b..586df62 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -119,7 +119,8 @@ typedef struct + { + drmModeConnector *connector; + drmModeModeInfo *mode; +- drmModeCrtc *controller; ++ uint32_t controller_id; ++ uint32_t possible_controllers; + ply_pixel_buffer_rotation_t rotation; + bool tiled; + } ply_output_t; +@@ -978,51 +979,39 @@ close_device (ply_renderer_backend_t *backend) + unload_backend (backend); + } + +-static drmModeCrtc * +-find_controller_for_encoder (ply_renderer_backend_t *backend, +- drmModeEncoder *encoder) +-{ +- drmModeCrtc *controller; +- +- controller = NULL; +- +- /* Monitor is already lit. We'll use the same controller. +- */ +- if (encoder->crtc_id != 0) { +- controller = drmModeGetCrtc (backend->device_fd, encoder->crtc_id); +- +- if (controller != NULL) { +- ply_trace ("Found already lit monitor"); +- return controller; +- } +- } +- +- return NULL; +-} +- +-static drmModeEncoder * +-find_encoder_for_connector (ply_renderer_backend_t *backend, +- drmModeConnector *connector) ++static void ++find_controller_for_output (ply_renderer_backend_t *backend, ++ ply_output_t *output) + { + int i; + drmModeEncoder *encoder; + + assert (backend != NULL); + +- for (i = 0; i < connector->count_encoders; i++) { ++ output->possible_controllers = 0xffffffff; ++ ++ for (i = 0; i < output->connector->count_encoders; i++) { + encoder = drmModeGetEncoder (backend->device_fd, +- connector->encoders[i]); ++ output->connector->encoders[i]); + + if (encoder == NULL) + continue; + +- if (encoder->encoder_id == connector->encoder_id) +- return encoder; ++ if (encoder->encoder_id == output->connector->encoder_id && encoder->crtc_id) { ++ ply_trace ("Found already lit monitor on connector %u using controller %u", ++ output->connector->connector_id, encoder->crtc_id); ++ output->controller_id = encoder->crtc_id; ++ } + ++ /* Like mutter and xf86-drv-modesetting only select controllers ++ * which are supported by all the connector's encoders. ++ */ ++ output->possible_controllers &= encoder->possible_crtcs; ++ ply_trace ("connector %u encoder %u possible controllers 0x%08x/0x%08x", ++ output->connector->connector_id, encoder->encoder_id, ++ encoder->possible_crtcs, output->possible_controllers); + drmModeFreeEncoder (encoder); + } +- +- return NULL; + } + + static bool +@@ -1082,10 +1071,13 @@ get_preferred_mode (drmModeConnector *connector) + + static drmModeModeInfo * + get_active_mode (ply_renderer_backend_t *backend, +- drmModeCrtc *controller, +- drmModeConnector *connector) ++ ply_output_t *output) + { +- if (!controller->mode_valid) { ++ drmModeCrtc *controller; ++ drmModeModeInfo *mode; ++ ++ controller = drmModeGetCrtc (backend->device_fd, output->controller_id); ++ if (!controller || !controller->mode_valid) { + ply_trace ("No valid mode currently active on monitor"); + return NULL; + } +@@ -1093,7 +1085,11 @@ get_active_mode (ply_renderer_backend_t *backend, + ply_trace ("Looking for connector mode index of active mode %dx%d", + controller->mode.hdisplay, controller->mode.vdisplay); + +- return find_matching_connector_mode (backend, connector, &controller->mode); ++ mode = find_matching_connector_mode (backend, output->connector, &controller->mode); ++ ++ drmModeFreeCrtc (controller); ++ ++ return mode; + } + + static bool +@@ -1113,7 +1109,6 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + found = 0; + for (i = 0; i < backend->resources->count_connectors; i++) { + drmModeConnector *connector; +- drmModeEncoder *encoder; + + connector = drmModeGetConnector (backend->device_fd, + backend->resources->connectors[i]); +@@ -1132,20 +1127,14 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + + outputs[found].connector = connector; + +- encoder = find_encoder_for_connector (backend, connector); +- if (encoder) { +- outputs[found].controller = +- find_controller_for_encoder (backend, encoder); +- drmModeFreeEncoder (encoder); +- } +- ++ find_controller_for_output (backend, &outputs[found]); + ply_renderer_connector_get_rotation_and_tiled (backend, &outputs[found]); + + if (!outputs[found].tiled && backend->use_preferred_mode) + outputs[found].mode = get_preferred_mode (connector); + +- if (!outputs[found].mode && outputs[found].controller) +- outputs[found].mode = get_active_mode (backend, outputs[found].controller, connector); ++ if (!outputs[found].mode && outputs[found].controller_id) ++ outputs[found].mode = get_active_mode (backend, &outputs[found]); + + /* If we couldn't find the current active mode, fall back to the first available. + */ +@@ -1171,21 +1160,22 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + */ + for (i = 0; i < outputs_len; i++) { + drmModeConnector *connector = outputs[i].connector; ++ drmModeCrtc *controller; + ply_renderer_head_t *head; + uint32_t controller_id; + uint32_t console_buffer_id; + int gamma_size; + +- /* Skip outputs for which we failed to get a controller */ +- if (!outputs[i].controller) { ++ controller = drmModeGetCrtc (backend->device_fd, outputs[i].controller_id); ++ if (!controller) { + drmModeFreeConnector (connector); + continue; + } + +- controller_id = outputs[i].controller->crtc_id; +- console_buffer_id = outputs[i].controller->buffer_id; +- gamma_size = outputs[i].controller->gamma_size; +- drmModeFreeCrtc (outputs[i].controller); ++ controller_id = controller->crtc_id; ++ console_buffer_id = controller->buffer_id; ++ gamma_size = controller->gamma_size; ++ drmModeFreeCrtc (controller); + + head = ply_hashtable_lookup (heads_by_controller_id, + (void *) (intptr_t) controller_id); +-- +2.20.1 + +From 76b37d50720b6c07c976789943fb2b02069b168d Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 27 Nov 2018 22:51:58 +0100 +Subject: [PATCH 28/74] drm: Drop crtcs for clones for which we've picked + different modes + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 22 ++++++++++++++++++++-- + 1 file changed, 20 insertions(+), 2 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index 586df62..87ecbfd 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -1097,7 +1097,7 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + { + ply_hashtable_t *heads_by_controller_id; + ply_output_t *outputs; +- int i, found, outputs_len; ++ int i, j, found, outputs_len; + + heads_by_controller_id = ply_hashtable_new (NULL, NULL); + +@@ -1147,9 +1147,27 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + } + outputs_len = found; /* outputs now contains found valid entries */ + +- /* Step 2: TODO ++ /* Step 2: + * Drop controllers for clones for which we've picked different modes. + */ ++ for (i = 0; i < outputs_len; i++) { ++ if (!outputs[i].controller_id) ++ continue; ++ ++ for (j = i + 1; j < outputs_len; j++) { ++ if (!outputs[j].controller_id) ++ continue; ++ ++ if (outputs[i].controller_id == outputs[j].controller_id && ++ (outputs[i].mode->hdisplay != outputs[j].mode->hdisplay || ++ outputs[i].mode->vdisplay != outputs[j].mode->vdisplay)) { ++ ply_trace ("connector %u uses same controller as %u and modes differ, unlinking controller", ++ outputs[j].connector->connector_id, ++ outputs[i].connector->connector_id); ++ outputs[j].controller_id = 0; ++ } ++ } ++ } + + /* Step 3: TODO + * Assign controllers to outputs without a controller +-- +2.20.1 + +From d67e729739f7cc3cb138bcad8182496c818bfd41 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 28 Nov 2018 00:53:46 +0100 +Subject: [PATCH 29/74] drm: Pick a controller for unconfigured connectors + +So far we've been relying on the kernel fbcon code to set up all outputs, +now that distros have started using deferred fbcon takeover for flickerfree +booting, we can no longer rely on this and in some cases we must pick +our own controllers. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 132 ++++++++++++++++++++++++++++- + 1 file changed, 128 insertions(+), 4 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index 87ecbfd..20543ea 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -980,7 +980,7 @@ close_device (ply_renderer_backend_t *backend) + } + + static void +-find_controller_for_output (ply_renderer_backend_t *backend, ++output_get_controller_info (ply_renderer_backend_t *backend, + ply_output_t *output) + { + int i; +@@ -1092,12 +1092,119 @@ get_active_mode (ply_renderer_backend_t *backend, + return mode; + } + ++/* Some controllers can only drive some outputs, we want to find a combination ++ * where all (connected) outputs get a controller. To do this setup_outputs ++ * picks which output to assign a controller for first (trying all outputs), so ++ * that that one will get the first (free) controller and then recurses into ++ * itself to assign the remaining outputs. This tries assigning all remainig ++ * unassigned outputs first and returns the best result of all possible ++ * assignment orders for the remaining unassigned outputs. ++ * This repeats until we find an assignment order which results in a controller ++ * for all outputs, or we've tried all possible assignment orders. ++ */ ++ ++static uint32_t ++find_controller_for_output (ply_renderer_backend_t *backend, ++ const ply_output_t *outputs, ++ int outputs_len, ++ int output_idx) ++{ ++ uint32_t possible_controllers = outputs[output_idx].possible_controllers; ++ int i, j; ++ ++ for (i = 0; i < backend->resources->count_crtcs; i++) { ++ uint32_t controller_id = backend->resources->crtcs[i]; ++ ++ if (!(possible_controllers & (1 << i))) ++ continue; /* controller not usable for this connector */ ++ ++ for (j = 0; j < outputs_len; j++) { ++ if (outputs[j].controller_id == controller_id) ++ break; ++ } ++ if (j < outputs_len) ++ continue; /* controller already in use */ ++ ++ return controller_id; ++ } ++ ++ return 0; ++} ++ ++static int ++count_setup_controllers (const ply_output_t *outputs, ++ int outputs_len) ++{ ++ int i, count = 0; ++ ++ for (i = 0; i < outputs_len; i++) { ++ if (outputs[i].controller_id) ++ count++; ++ } ++ ++ return count; ++} ++ ++static ply_output_t * ++setup_outputs (ply_renderer_backend_t *backend, ++ const ply_output_t *outputs, ++ int outputs_len) ++{ ++ const ply_output_t *best_outputs; ++ ply_output_t *new_outputs; ++ int i, count, best_count; ++ uint32_t controller_id; ++ ++ best_count = count_setup_controllers (outputs, outputs_len); ++ best_outputs = outputs; ++ ++ for (i = 0; i < outputs_len && best_count < outputs_len; i++) { ++ /* Already assigned? */ ++ if (outputs[i].controller_id) ++ continue; ++ ++ /* Assign controller for connector i */ ++ controller_id = find_controller_for_output (backend, outputs, outputs_len, i); ++ if (!controller_id) ++ continue; ++ ++ /* Add the new controller to a copy of the passed in connector ++ * template, we want to try all possible permutations of ++ * unassigned outputs without modifying the template. ++ */ ++ new_outputs = calloc (outputs_len, sizeof(*new_outputs)); ++ memcpy (new_outputs, outputs, outputs_len * sizeof(ply_output_t)); ++ new_outputs[i].controller_id = controller_id; ++ ++ /* Recurse into ourselves to assign remaining controllers, ++ * trying all possible assignment orders. ++ */ ++ new_outputs = setup_outputs (backend, new_outputs, outputs_len); ++ ++ count = count_setup_controllers (new_outputs, outputs_len); ++ if (count > best_count) { ++ if (best_outputs != outputs) ++ free ((void *)best_outputs); ++ best_outputs = new_outputs; ++ best_count = count; ++ } else { ++ free (new_outputs); ++ } ++ } ++ ++ if (best_outputs != outputs) ++ free ((void *)outputs); ++ ++ /* Our caller is allowed to modify outputs, cast-away the const */ ++ return (ply_output_t *)best_outputs; ++} ++ + static bool + create_heads_for_active_connectors (ply_renderer_backend_t *backend) + { + ply_hashtable_t *heads_by_controller_id; + ply_output_t *outputs; +- int i, j, found, outputs_len; ++ int i, j, found, number_of_setup_outputs, outputs_len; + + heads_by_controller_id = ply_hashtable_new (NULL, NULL); + +@@ -1127,7 +1234,7 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + + outputs[found].connector = connector; + +- find_controller_for_output (backend, &outputs[found]); ++ output_get_controller_info (backend, &outputs[found]); + ply_renderer_connector_get_rotation_and_tiled (backend, &outputs[found]); + + if (!outputs[found].tiled && backend->use_preferred_mode) +@@ -1169,9 +1276,26 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + } + } + +- /* Step 3: TODO ++ /* Step 3: + * Assign controllers to outputs without a controller + */ ++ number_of_setup_outputs = count_setup_controllers (outputs, outputs_len); ++ if (number_of_setup_outputs != outputs_len) { ++ /* First try, try to assign controllers to outputs without one */ ++ ply_trace ("Some outputs don't have controllers, picking controllers"); ++ outputs = setup_outputs (backend, outputs, outputs_len); ++ number_of_setup_outputs = count_setup_controllers (outputs, outputs_len); ++ } ++ if (number_of_setup_outputs != outputs_len) { ++ /* Second try, re-assing controller for all outputs */ ++ ply_trace ("Some outputs still don't have controllers, re-assigning controllers for all outputs"); ++ for (i = 0; i < outputs_len; i++) ++ outputs[i].controller_id = 0; ++ outputs = setup_outputs (backend, outputs, outputs_len); ++ } ++ for (i = 0; i < outputs_len; i++) ++ ply_trace ("Using controller %u for connector %u", ++ outputs[i].controller_id, outputs[i].connector->connector_id); + + /* Step 4: + * Create heads for all valid outputs +-- +2.20.1 + +From b082f42494e8423f08f40addc833d7e9b0192cb6 Mon Sep 17 00:00:00 2001 +From: Mathieu Trudel-Lapierre +Date: Tue, 4 Dec 2018 14:31:13 -0500 +Subject: [PATCH 30/74] keyboard: add helper to get the keyboard's renderer, if + applicable + +Based on an original patch from Gert van de Kraats on Ubuntu's Launchpad: +https://bugs.launchpad.net/ubuntu/+source/plymouth/+bug/1794292 + +Signed-off-by: Mathieu Trudel-Lapierre +--- + src/libply-splash-core/ply-keyboard.c | 16 ++++++++++++++++ + src/libply-splash-core/ply-keyboard.h | 1 + + 2 files changed, 17 insertions(+) + +diff --git a/src/libply-splash-core/ply-keyboard.c b/src/libply-splash-core/ply-keyboard.c +index 80f7694..e11c093 100644 +--- a/src/libply-splash-core/ply-keyboard.c ++++ b/src/libply-splash-core/ply-keyboard.c +@@ -587,4 +587,20 @@ ply_keyboard_remove_enter_handler (ply_keyboard_t *keyboard, + } + } + ++ply_renderer_t * ++ply_keyboard_get_renderer (ply_keyboard_t *keyboard) ++{ ++ assert (keyboard != NULL); ++ ++ switch (keyboard->provider_type) { ++ case PLY_KEYBOARD_PROVIDER_TYPE_RENDERER: ++ return keyboard->provider.if_renderer->renderer; ++ ++ default: ++ break; ++ } ++ ++ return NULL; ++} ++ + /* vim: set ts=4 sw=4 et ai ci cino={.5s,^-2,+.5s,t0,g0,e-2,n-2,p2s,(0,=.5s,:.5s */ +diff --git a/src/libply-splash-core/ply-keyboard.h b/src/libply-splash-core/ply-keyboard.h +index 6147cc7..dd428c0 100644 +--- a/src/libply-splash-core/ply-keyboard.h ++++ b/src/libply-splash-core/ply-keyboard.h +@@ -72,6 +72,7 @@ void ply_keyboard_remove_enter_handler (ply_keyboard_t *keyboard, + bool ply_keyboard_watch_for_input (ply_keyboard_t *keyboard); + void ply_keyboard_stop_watching_for_input (ply_keyboard_t *keyboard); + bool ply_keyboard_is_active (ply_keyboard_t *keyboard); ++ply_renderer_t *ply_keyboard_get_renderer (ply_keyboard_t *keyboard); + + #endif + +-- +2.20.1 + +From c46f446fe44457f599805b685547c2258bb3fa96 Mon Sep 17 00:00:00 2001 +From: Mathieu Trudel-Lapierre +Date: Tue, 4 Dec 2018 14:41:35 -0500 +Subject: [PATCH 31/74] device-manager: free keyboards when deactivating a + renderer + +Based on an original patch by Gert van de Kraats, on Ubuntu Launchpad bug: +https://bugs.launchpad.net/ubuntu/+source/plymouth/+bug/1794292 + +Signed-off-by: Mathieu Trudel-Lapierre +--- + src/libply-splash-core/ply-device-manager.c | 29 +++++++++++++++++++++ + 1 file changed, 29 insertions(+) + +diff --git a/src/libply-splash-core/ply-device-manager.c b/src/libply-splash-core/ply-device-manager.c +index d70e709..8ceee10 100644 +--- a/src/libply-splash-core/ply-device-manager.c ++++ b/src/libply-splash-core/ply-device-manager.c +@@ -136,6 +136,34 @@ free_displays_for_renderer (ply_device_manager_t *manager, + } + } + ++static void ++free_keyboards_for_renderer (ply_device_manager_t *manager, ++ ply_renderer_t *renderer) ++{ ++ ply_list_node_t *node; ++ ++ node = ply_list_get_first_node (manager->keyboards); ++ while (node != NULL) { ++ ply_list_node_t *next_node; ++ ply_keyboard_t *keyboard; ++ ply_renderer_t *keyboard_renderer; ++ ++ keyboard = ply_list_node_get_data (node); ++ next_node = ply_list_get_next_node (manager->keyboards, node); ++ keyboard_renderer = ply_keyboard_get_renderer (keyboard); ++ ++ if (keyboard_renderer == renderer) { ++ ply_keyboard_free (keyboard); ++ ply_list_remove_node (manager->keyboards, node); ++ } ++ ++ node = next_node; ++ } ++ if (ply_list_get_first_node (manager->keyboards) == NULL) { ++ manager->local_console_managed = false; ++ } ++} ++ + static void + free_devices_from_device_path (ply_device_manager_t *manager, + const char *device_path) +@@ -152,6 +180,7 @@ free_devices_from_device_path (ply_device_manager_t *manager, + return; + + free_displays_for_renderer (manager, renderer); ++ free_keyboards_for_renderer (manager, renderer); + + ply_hashtable_remove (manager->renderers, (void *) device_path); + free (key); +-- +2.20.1 + +From bac628cd05783499d5e4dc005fb566c51ace2df8 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Sun, 9 Dec 2018 15:22:48 +0100 +Subject: [PATCH 32/74] ply-keyboard: Fix compiler warning +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fix: "warning: enumeration value ‘PLY_KEYBOARD_PROVIDER_TYPE_TERMINAL’ +not handled in switch [-Wswitch-enum]" compiler warning. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-core/ply-keyboard.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/libply-splash-core/ply-keyboard.c b/src/libply-splash-core/ply-keyboard.c +index e11c093..27395e0 100644 +--- a/src/libply-splash-core/ply-keyboard.c ++++ b/src/libply-splash-core/ply-keyboard.c +@@ -596,8 +596,8 @@ ply_keyboard_get_renderer (ply_keyboard_t *keyboard) + case PLY_KEYBOARD_PROVIDER_TYPE_RENDERER: + return keyboard->provider.if_renderer->renderer; + +- default: +- break; ++ case PLY_KEYBOARD_PROVIDER_TYPE_TERMINAL: ++ return NULL; + } + + return NULL; +-- +2.20.1 + +From 2dc81adb0f1a5469b15c62d3dacf53dfbc37c17a Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 19 Dec 2018 10:43:09 +0100 +Subject: [PATCH 33/74] libply: Add ply_strtod helper + +Add a ply_strtod helper which always uses "." as decimal separator +independent of the locale. + +Using this fixes e.g. HorizontalAlignment in the two-step plugin +not working with some locales. + +Signed-off-by: Hans de Goede +--- + src/libply/ply-utils.c | 14 ++++++++++++++ + src/libply/ply-utils.h | 2 ++ + 2 files changed, 16 insertions(+) + +diff --git a/src/libply/ply-utils.c b/src/libply/ply-utils.c +index c17e0c8..4ff7b1b 100644 +--- a/src/libply/ply-utils.c ++++ b/src/libply/ply-utils.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -1109,4 +1110,17 @@ ply_kernel_command_line_override (const char *command_line) + kernel_command_line_is_set = true; + } + ++double ply_strtod(const char *str) ++{ ++ char *old_locale; ++ double ret; ++ ++ /* Ensure strtod uses '.' as decimal separator, as we use this in our cfg files. */ ++ old_locale = setlocale(LC_NUMERIC, "C"); ++ ret = strtod(str, NULL); ++ setlocale(LC_NUMERIC, old_locale); ++ ++ return ret; ++} ++ + /* vim: set ts=4 sw=4 expandtab autoindent cindent cino={.5s,(0: */ +diff --git a/src/libply/ply-utils.h b/src/libply/ply-utils.h +index ae4776e..4dd9c09 100644 +--- a/src/libply/ply-utils.h ++++ b/src/libply/ply-utils.h +@@ -132,6 +132,8 @@ const char *ply_kernel_command_line_get_string_after_prefix (const char *prefix) + bool ply_kernel_command_line_has_argument (const char *argument); + void ply_kernel_command_line_override (const char *command_line); + ++double ply_strtod(const char *str); ++ + #endif + + #endif /* PLY_UTILS_H */ +-- +2.20.1 + +From fb6d4b4983de70296ee84d0029e5e7b91202d526 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 19 Dec 2018 10:45:51 +0100 +Subject: [PATCH 34/74] two-step: Use plymouth_strtod + +Use the locale agnostic plymouth_strtod helper which always uses a "." +as decimal seperator. This fixes the various Alignment options not working +with some locales. + +While at it also add a ply_trace to log the size and chosen centering for +the watermark image. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 14 +++++++++----- + 1 file changed, 9 insertions(+), 5 deletions(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index 16b8fc8..c1e75a8 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -423,6 +423,10 @@ view_load (view_t *view) + view->watermark_area.height = ply_image_get_height (plugin->watermark_image); + view->watermark_area.x = screen_width * plugin->watermark_horizontal_alignment - ply_image_get_width (plugin->watermark_image) * plugin->watermark_horizontal_alignment; + view->watermark_area.y = screen_height * plugin->watermark_vertical_alignment - ply_image_get_height (plugin->watermark_image) * plugin->watermark_vertical_alignment; ++ ply_trace ("using %ldx%ld watermark centered at %ldx%ld for %ldx%ld screen", ++ view->watermark_area.width, view->watermark_area.height, ++ view->watermark_area.x, view->watermark_area.y, ++ screen_width, screen_height); + } + + ply_trace ("loading entry"); +@@ -746,28 +750,28 @@ create_plugin (ply_key_file_t *key_file) + + alignment = ply_key_file_get_value (key_file, "two-step", "HorizontalAlignment"); + if (alignment != NULL) +- plugin->animation_horizontal_alignment = strtod (alignment, NULL); ++ plugin->animation_horizontal_alignment = ply_strtod (alignment); + else + plugin->animation_horizontal_alignment = .5; + free (alignment); + + alignment = ply_key_file_get_value (key_file, "two-step", "VerticalAlignment"); + if (alignment != NULL) +- plugin->animation_vertical_alignment = strtod (alignment, NULL); ++ plugin->animation_vertical_alignment = ply_strtod (alignment); + else + plugin->animation_vertical_alignment = .5; + free (alignment); + + alignment = ply_key_file_get_value (key_file, "two-step", "WatermarkHorizontalAlignment"); + if (alignment != NULL) +- plugin->watermark_horizontal_alignment = strtod (alignment, NULL); ++ plugin->watermark_horizontal_alignment = ply_strtod (alignment); + else + plugin->watermark_horizontal_alignment = 1.0; + free (alignment); + + alignment = ply_key_file_get_value (key_file, "two-step", "WatermarkVerticalAlignment"); + if (alignment != NULL) +- plugin->watermark_vertical_alignment = strtod (alignment, NULL); ++ plugin->watermark_vertical_alignment = ply_strtod (alignment); + else + plugin->watermark_vertical_alignment = .5; + free (alignment); +@@ -786,7 +790,7 @@ create_plugin (ply_key_file_t *key_file) + + transition_duration = ply_key_file_get_value (key_file, "two-step", "TransitionDuration"); + if (transition_duration != NULL) +- plugin->transition_duration = strtod (transition_duration, NULL); ++ plugin->transition_duration = ply_strtod (transition_duration); + else + plugin->transition_duration = 0.0; + free (transition_duration); +-- +2.20.1 + +From e111ba8bafaa41fced0824e6fbccc20372917a3d Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 9 Jan 2019 11:31:06 +0100 +Subject: [PATCH 35/74] libply: Add ply_key_file_get_bool function + +Add a function to read a boolean value from a ply-key-file. + +This function will return true if the key exists and it has a value of "1", +"y", "yes" or "true" (case-insensitive). In all other cases it returns +false. + +Signed-off-by: Hans de Goede +--- + src/libply/ply-key-file.c | 33 +++++++++++++++++++++++++++++++++ + src/libply/ply-key-file.h | 4 ++++ + 2 files changed, 37 insertions(+) + +diff --git a/src/libply/ply-key-file.c b/src/libply/ply-key-file.c +index 862d6d5..1c05766 100644 +--- a/src/libply/ply-key-file.c ++++ b/src/libply/ply-key-file.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -356,6 +357,38 @@ ply_key_file_get_value (ply_key_file_t *key_file, + return strdup (entry->value); + } + ++bool ++ply_key_file_get_bool (ply_key_file_t *key_file, ++ const char *group_name, ++ const char *key) ++{ ++ ply_key_file_group_t *group; ++ ply_key_file_entry_t *entry; ++ ++ group = ply_key_file_find_group (key_file, group_name); ++ ++ if (group == NULL) { ++ ply_trace ("key file does not have group '%s'", group_name); ++ return false; ++ } ++ ++ entry = ply_key_file_find_entry (key_file, group, key); ++ ++ if (entry == NULL) { ++ ply_trace ("key file does not have entry for key '%s'", key); ++ return false; ++ } ++ ++ /* We treat "1", "y" and "yes" and "true" as true, all else is false */ ++ if (strcasecmp (entry->value, "1") == 0 || ++ strcasecmp (entry->value, "y") == 0 || ++ strcasecmp (entry->value, "yes") == 0 || ++ strcasecmp (entry->value, "true") == 0) ++ return true; ++ ++ return false; ++} ++ + static void + ply_key_file_foreach_entry_entries (void *key, + void *data, +diff --git a/src/libply/ply-key-file.h b/src/libply/ply-key-file.h +index e69d14a..ef7124b 100644 +--- a/src/libply/ply-key-file.h ++++ b/src/libply/ply-key-file.h +@@ -42,6 +42,10 @@ bool ply_key_file_has_key (ply_key_file_t *key_file, + char *ply_key_file_get_value (ply_key_file_t *key_file, + const char *group_name, + const char *key); ++/* Note this returns false for non existing keys */ ++bool ply_key_file_get_bool (ply_key_file_t *key_file, ++ const char *group_name, ++ const char *key); + void ply_key_file_foreach_entry (ply_key_file_t *key_file, + ply_key_file_foreach_func_t func, + void *user_data); +-- +2.20.1 + +From 6cf1bb3e37df6b69d3b0e17eee394ad8c6e57e75 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Thu, 20 Dec 2018 12:47:39 +0100 +Subject: [PATCH 36/74] two-step: Rename UseBGRT to UseFirmwareBackground + +Rename the UseBGRT theme configfile option to UseFirmwareBackground, +to make it clear what this does using language which most users will be +able to understand, rather then using the cryptic BGRT ACPI table reference. + +While at it also switch to using the new ply_key_file_get_bool function, so +that users can edit an existing configfile with "UseFirmwareBackground=true" +in there and change it to "=false" and actually have that work as expected. + +The switch to ply_key_file_get_bool also fixes a memleak as +ply_key_file_get_value returns a strdup-ed value which we were not free-ing. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 3 +-- + themes/bgrt/bgrt.plymouth.in | 2 +- + 2 files changed, 2 insertions(+), 3 deletions(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index c1e75a8..8f1ad58 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -813,8 +813,7 @@ create_plugin (ply_key_file_t *key_file) + + free (color); + +- /* Boolean option, true if the key is present */ +- if (ply_key_file_get_value (key_file, "two-step", "UseBGRT")) ++ if (ply_key_file_get_bool (key_file, "two-step", "UseFirmwareBackground")) + plugin->background_bgrt_image = ply_image_new ("/sys/firmware/acpi/bgrt/image"); + + progress_function = ply_key_file_get_value (key_file, "two-step", "ProgressFunction"); +diff --git a/themes/bgrt/bgrt.plymouth.in b/themes/bgrt/bgrt.plymouth.in +index b5cc843..dc5eaf5 100644 +--- a/themes/bgrt/bgrt.plymouth.in ++++ b/themes/bgrt/bgrt.plymouth.in +@@ -13,4 +13,4 @@ Transition=none + TransitionDuration=0.0 + BackgroundStartColor=0x202020 + BackgroundEndColor=0x202020 +-UseBGRT=true ++UseFirmwareBackground=true +-- +2.20.1 + +From 410ba63c81f49b08ab674d359239869b23bdd80e Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 19 Dec 2018 11:52:03 +0100 +Subject: [PATCH 37/74] two-step: Make the box image surrounding the unlock + dialog optional + +In some themes we want a simple style text entry without a dialog like +box around it. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 50 ++++++++++++++++++---------- + 1 file changed, 33 insertions(+), 17 deletions(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index 8f1ad58..c6e9be4 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -91,7 +91,7 @@ typedef struct + ply_throbber_t *throbber; + ply_label_t *label; + ply_label_t *message_label; +- ply_rectangle_t box_area, lock_area, watermark_area; ++ ply_rectangle_t box_area, lock_area, watermark_area, dialog_area; + ply_trigger_t *end_trigger; + ply_pixel_buffer_t *background_buffer; + bool background_is_bgrt; +@@ -648,9 +648,8 @@ view_show_prompt (view_t *view, + const char *prompt) + { + ply_boot_splash_plugin_t *plugin; ++ unsigned long screen_width, screen_height, entry_width, entry_height; + int x, y; +- int entry_width, entry_height; +- unsigned long screen_width, screen_height; + + assert (view != NULL); + +@@ -660,17 +659,25 @@ view_show_prompt (view_t *view, + screen_height = ply_pixel_display_get_height (view->display); + + if (ply_entry_is_hidden (view->entry)) { +- view->box_area.width = ply_image_get_width (plugin->box_image); +- view->box_area.height = ply_image_get_height (plugin->box_image); +- view->box_area.x = screen_width / 2.0 - view->box_area.width / 2.0; +- view->box_area.y = screen_height / 2.0 - view->box_area.height / 2.0; +- + view->lock_area.width = ply_image_get_width (plugin->lock_image); + view->lock_area.height = ply_image_get_height (plugin->lock_image); + + entry_width = ply_entry_get_width (view->entry); + entry_height = ply_entry_get_height (view->entry); + ++ if (plugin->box_image) { ++ view->box_area.width = ply_image_get_width (plugin->box_image); ++ view->box_area.height = ply_image_get_height (plugin->box_image); ++ view->box_area.x = (screen_width - view->box_area.width) * 0.5; ++ view->box_area.y = (screen_height - view->box_area.height) * 0.5; ++ view->dialog_area = view->box_area; ++ } else { ++ view->dialog_area.width = view->lock_area.width + entry_width; ++ view->dialog_area.height = MAX(view->lock_area.height, entry_height); ++ view->dialog_area.x = (screen_width - view->dialog_area.width) * 0.5; ++ view->dialog_area.y = (screen_height - view->dialog_area.height) * 0.5; ++ } ++ + x = screen_width / 2.0 - (view->lock_area.width + entry_width) / 2.0 + view->lock_area.width; + y = screen_height / 2.0 - entry_height / 2.0; + +@@ -689,7 +696,7 @@ view_show_prompt (view_t *view, + ply_label_set_width (view->label, label_width); + + x = (screen_width - label_width) / 2; +- y = view->box_area.y + view->box_area.height; ++ y = view->dialog_area.y + view->dialog_area.height; + + ply_label_show (view->label, view->display, x, y); + } +@@ -881,9 +888,11 @@ destroy_plugin (ply_boot_splash_plugin_t *plugin) + detach_from_event_loop (plugin); + } + +- ply_image_free (plugin->box_image); + ply_image_free (plugin->lock_image); + ++ if (plugin->box_image != NULL) ++ ply_image_free (plugin->box_image); ++ + if (plugin->corner_image != NULL) + ply_image_free (plugin->corner_image); + +@@ -1091,10 +1100,12 @@ on_draw (view_t *view, + plugin->state == PLY_BOOT_SPLASH_DISPLAY_PASSWORD_ENTRY) { + uint32_t *box_data, *lock_data; + +- box_data = ply_image_get_data (plugin->box_image); +- ply_pixel_buffer_fill_with_argb32_data (pixel_buffer, +- &view->box_area, +- box_data); ++ if (plugin->box_image) { ++ box_data = ply_image_get_data (plugin->box_image); ++ ply_pixel_buffer_fill_with_argb32_data (pixel_buffer, ++ &view->box_area, ++ box_data); ++ } + + ply_entry_draw_area (view->entry, + pixel_buffer, +@@ -1223,9 +1234,14 @@ show_splash_screen (ply_boot_splash_plugin_t *plugin, + if (!ply_image_load (plugin->lock_image)) + return false; + +- ply_trace ("loading box image"); +- if (!ply_image_load (plugin->box_image)) +- return false; ++ if (plugin->box_image != NULL) { ++ ply_trace ("loading box image"); ++ ++ if (!ply_image_load (plugin->box_image)) { ++ ply_image_free (plugin->box_image); ++ plugin->box_image = NULL; ++ } ++ } + + if (plugin->corner_image != NULL) { + ply_trace ("loading corner image"); +-- +2.20.1 + +From 27e671bff7df6310e32e640b7db91642ab31e84b Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 19 Dec 2018 13:28:28 +0100 +Subject: [PATCH 38/74] two-step: Add support for non center alignment of the + (diskcrypt) dialog + +Add DialogHorizontalAlignment and DialogVerticalAlignment options which +allow placing the (diskcrypt) dialog aligned at another place then the +center of the screen. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 39 ++++++++++++++++++++++------ + 1 file changed, 31 insertions(+), 8 deletions(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index c6e9be4..0f79795 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -112,6 +112,9 @@ struct _ply_boot_splash_plugin + + ply_boot_splash_display_type_t state; + ++ double dialog_horizontal_alignment; ++ double dialog_vertical_alignment; ++ + double watermark_horizontal_alignment; + double watermark_vertical_alignment; + +@@ -668,21 +671,27 @@ view_show_prompt (view_t *view, + if (plugin->box_image) { + view->box_area.width = ply_image_get_width (plugin->box_image); + view->box_area.height = ply_image_get_height (plugin->box_image); +- view->box_area.x = (screen_width - view->box_area.width) * 0.5; +- view->box_area.y = (screen_height - view->box_area.height) * 0.5; ++ view->box_area.x = (screen_width - view->box_area.width) * plugin->dialog_horizontal_alignment; ++ view->box_area.y = (screen_height - view->box_area.height) * plugin->dialog_vertical_alignment; + view->dialog_area = view->box_area; + } else { + view->dialog_area.width = view->lock_area.width + entry_width; + view->dialog_area.height = MAX(view->lock_area.height, entry_height); +- view->dialog_area.x = (screen_width - view->dialog_area.width) * 0.5; +- view->dialog_area.y = (screen_height - view->dialog_area.height) * 0.5; ++ view->dialog_area.x = (screen_width - view->dialog_area.width) * plugin->dialog_horizontal_alignment; ++ view->dialog_area.y = (screen_height - view->dialog_area.height) * plugin->dialog_vertical_alignment; + } + +- x = screen_width / 2.0 - (view->lock_area.width + entry_width) / 2.0 + view->lock_area.width; +- y = screen_height / 2.0 - entry_height / 2.0; ++ view->lock_area.x = ++ view->dialog_area.x + ++ (view->dialog_area.width - ++ (view->lock_area.width + entry_width)) / 2.0; ++ view->lock_area.y = ++ view->dialog_area.y + ++ (view->dialog_area.height - view->lock_area.height) / 2.0; + +- view->lock_area.x = screen_width / 2.0 - (view->lock_area.width + entry_width) / 2.0; +- view->lock_area.y = screen_height / 2.0 - view->lock_area.height / 2.0; ++ x = view->lock_area.x + view->lock_area.width; ++ y = view->dialog_area.y + ++ (view->dialog_area.height - entry_height) / 2.0; + + ply_entry_show (view->entry, plugin->loop, view->display, x, y); + } +@@ -783,6 +792,20 @@ create_plugin (ply_key_file_t *key_file) + plugin->watermark_vertical_alignment = .5; + free (alignment); + ++ alignment = ply_key_file_get_value (key_file, "two-step", "DialogHorizontalAlignment"); ++ if (alignment != NULL) ++ plugin->dialog_horizontal_alignment = ply_strtod (alignment); ++ else ++ plugin->dialog_horizontal_alignment = .5; ++ free (alignment); ++ ++ alignment = ply_key_file_get_value (key_file, "two-step", "DialogVerticalAlignment"); ++ if (alignment != NULL) ++ plugin->dialog_vertical_alignment = ply_strtod (alignment); ++ else ++ plugin->dialog_vertical_alignment = .5; ++ free (alignment); ++ + plugin->transition = PLY_PROGRESS_ANIMATION_TRANSITION_NONE; + transition = ply_key_file_get_value (key_file, "two-step", "Transition"); + if (transition != NULL) { +-- +2.20.1 + +From d62be07815fc4830c5630c9b52a5b7ec08c62637 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 19 Dec 2018 13:33:08 +0100 +Subject: [PATCH 39/74] two-step: Make clearing the dialog-background when + using the firmware background optional + +Since the ask-for-password or ask-question dialog and the firmware background +may intersect so far we've been clearing the screen to black when showing a +dialog and using the firmware background. + +This is not always desirable, this commit adds a new +"DialogClearsFirmwareBackground" option to the two-step based theme config +file, which enables this behavior when set. + +The new default is to keep using the initial (firmware) background when +showing a dialog, which matches the non firmware-background paths. + +Also update the bgrt theme to use the "DialogClearsFirmwareBackground" +option, keeping the current behavior for that theme. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 10 +++++++--- + themes/bgrt/bgrt.plymouth.in | 1 + + 2 files changed, 8 insertions(+), 3 deletions(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index 0f79795..53f19ee 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -1,6 +1,6 @@ + /* + * +- * Copyright (C) 2009 Red Hat, Inc. ++ * Copyright (C) 2009-2019 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by +@@ -17,7 +17,7 @@ + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * +- * Written by: William Jon McCann ++ * Written by: William Jon McCann, Hans de Goede + * + */ + #include "config.h" +@@ -138,6 +138,7 @@ struct _ply_boot_splash_plugin + uint32_t is_visible : 1; + uint32_t is_animating : 1; + uint32_t is_idle : 1; ++ uint32_t dialog_clears_firmware_background : 1; + }; + + ply_boot_splash_plugin_interface_t *ply_boot_splash_plugin_get_interface (void); +@@ -846,6 +847,9 @@ create_plugin (ply_key_file_t *key_file) + if (ply_key_file_get_bool (key_file, "two-step", "UseFirmwareBackground")) + plugin->background_bgrt_image = ply_image_new ("/sys/firmware/acpi/bgrt/image"); + ++ plugin->dialog_clears_firmware_background = ++ ply_key_file_get_bool (key_file, "two-step", "DialogClearsFirmwareBackground"); ++ + progress_function = ply_key_file_get_value (key_file, "two-step", "ProgressFunction"); + + if (progress_function != NULL) { +@@ -1081,7 +1085,7 @@ draw_background (view_t *view, + */ + if ((plugin->state == PLY_BOOT_SPLASH_DISPLAY_QUESTION_ENTRY || + plugin->state == PLY_BOOT_SPLASH_DISPLAY_PASSWORD_ENTRY) && +- view->background_is_bgrt) ++ view->background_is_bgrt && plugin->dialog_clears_firmware_background) + ply_pixel_buffer_fill_with_hex_color (pixel_buffer, &area, 0); + else if (view->background_buffer != NULL) + ply_pixel_buffer_fill_with_buffer (pixel_buffer, view->background_buffer, 0, 0); +diff --git a/themes/bgrt/bgrt.plymouth.in b/themes/bgrt/bgrt.plymouth.in +index dc5eaf5..86c2622 100644 +--- a/themes/bgrt/bgrt.plymouth.in ++++ b/themes/bgrt/bgrt.plymouth.in +@@ -14,3 +14,4 @@ TransitionDuration=0.0 + BackgroundStartColor=0x202020 + BackgroundEndColor=0x202020 + UseFirmwareBackground=true ++DialogClearsFirmwareBackground=true +-- +2.20.1 + +From 6117fe683ba704041404ee3462faf0f768e2f396 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 9 Jan 2019 14:38:26 +0100 +Subject: [PATCH 40/74] plymouth-populate-initrd: Don't assume the ImageDir is + the theme-dir + +Before this commit plymouth-populate-initrd was only recursively copying the +/usr/share/plymouth/themes/$PLYMOUTH_THEME_NAME to the initrd, assuming +that ImageDir will point there. + +This makes it impossible for 2 themes to share their ImageDir, which is +desirable for example for the spinner and bgrt themes, which use the same +images with slightly different settings. + +This commit also makes plymouth-populate-initrd also copy the ImageDir +if it is different from the theme-dir, making it possible for ImageDir +to point to a different dir. + +Signed-off-by: Hans de Goede +--- + scripts/plymouth-populate-initrd.in | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/scripts/plymouth-populate-initrd.in b/scripts/plymouth-populate-initrd.in +index c2f46c0..109b649 100755 +--- a/scripts/plymouth-populate-initrd.in ++++ b/scripts/plymouth-populate-initrd.in +@@ -412,6 +412,8 @@ if [ $THEME_OVERRIDE ]; then + fi + + PLYMOUTH_MODULE_NAME=$(grep "ModuleName *= *" ${PLYMOUTH_DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME}/${PLYMOUTH_THEME_NAME}.plymouth | sed 's/ModuleName *= *//') ++PLYMOUTH_THEME_DIR="${PLYMOUTH_DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME}" ++PLYMOUTH_IMAGE_DIR=$(grep "ImageDir *= *" ${PLYMOUTH_THEME_DIR}/${PLYMOUTH_THEME_NAME}.plymouth | sed 's/ImageDir *= *//') + + if [ ! -f ${PLYMOUTH_PLUGIN_PATH}/${PLYMOUTH_MODULE_NAME}.so ]; then + echo "The default plymouth plugin (${PLYMOUTH_MODULE_NAME}) doesn't exist" >&2 +@@ -423,8 +425,12 @@ inst ${PLYMOUTH_PLUGIN_PATH}/${PLYMOUTH_MODULE_NAME}.so $INITRDDIR + [ -f "${PLYMOUTH_PLUGIN_PATH}/renderers/drm.so" ] && inst ${PLYMOUTH_PLUGIN_PATH}/renderers/drm.so $INITRDDIR + inst ${PLYMOUTH_PLUGIN_PATH}/renderers/frame-buffer.so $INITRDDIR + +-if [ -d ${PLYMOUTH_DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME} ]; then +- inst_recur "${PLYMOUTH_DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME}" ++if [ -d "${PLYMOUTH_THEME_DIR}" ]; then ++ inst_recur "${PLYMOUTH_THEME_DIR}" ++fi ++ ++if [ "${PLYMOUTH_IMAGE_DIR}" != "${PLYMOUTH_THEME_DIR}" -a -d "${PLYMOUTH_IMAGE_DIR}" ]; then ++ inst_recur "${PLYMOUTH_IMAGE_DIR}" + fi + + if [ -L ${PLYMOUTH_DATADIR}/plymouth/themes/default.plymouth ]; then +-- +2.20.1 + +From ee2025824af4aaa119046a9f9a9399d36792b016 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 9 Jan 2019 14:42:53 +0100 +Subject: [PATCH 41/74] themes: bgrt: Remove duplicate images + +The bgrt theme is using the exact same images as the spinner theme, +remove these and point ImageDir to the spinner theme dir instead. + +Signed-off-by: Hans de Goede +--- + themes/bgrt/Makefile.am | 73 -------------------------------- + themes/bgrt/animation-0001.png | Bin 1579 -> 0 bytes + themes/bgrt/animation-0002.png | Bin 1573 -> 0 bytes + themes/bgrt/animation-0003.png | Bin 1591 -> 0 bytes + themes/bgrt/animation-0004.png | Bin 1594 -> 0 bytes + themes/bgrt/animation-0005.png | Bin 1624 -> 0 bytes + themes/bgrt/animation-0006.png | Bin 1646 -> 0 bytes + themes/bgrt/animation-0007.png | Bin 1666 -> 0 bytes + themes/bgrt/animation-0008.png | Bin 1634 -> 0 bytes + themes/bgrt/animation-0009.png | Bin 1640 -> 0 bytes + themes/bgrt/animation-0010.png | Bin 1613 -> 0 bytes + themes/bgrt/animation-0011.png | Bin 1621 -> 0 bytes + themes/bgrt/animation-0012.png | Bin 1619 -> 0 bytes + themes/bgrt/animation-0013.png | Bin 1617 -> 0 bytes + themes/bgrt/animation-0014.png | Bin 1618 -> 0 bytes + themes/bgrt/animation-0015.png | Bin 1615 -> 0 bytes + themes/bgrt/animation-0016.png | Bin 1605 -> 0 bytes + themes/bgrt/animation-0017.png | Bin 1581 -> 0 bytes + themes/bgrt/animation-0018.png | Bin 1582 -> 0 bytes + themes/bgrt/animation-0019.png | Bin 1578 -> 0 bytes + themes/bgrt/animation-0020.png | Bin 1558 -> 0 bytes + themes/bgrt/animation-0021.png | Bin 1545 -> 0 bytes + themes/bgrt/animation-0022.png | Bin 1541 -> 0 bytes + themes/bgrt/animation-0023.png | Bin 1481 -> 0 bytes + themes/bgrt/animation-0024.png | Bin 1492 -> 0 bytes + themes/bgrt/animation-0025.png | Bin 1455 -> 0 bytes + themes/bgrt/animation-0026.png | Bin 1427 -> 0 bytes + themes/bgrt/animation-0027.png | Bin 1407 -> 0 bytes + themes/bgrt/animation-0028.png | Bin 1385 -> 0 bytes + themes/bgrt/animation-0029.png | Bin 1348 -> 0 bytes + themes/bgrt/animation-0030.png | Bin 1316 -> 0 bytes + themes/bgrt/animation-0031.png | Bin 1245 -> 0 bytes + themes/bgrt/animation-0032.png | Bin 1185 -> 0 bytes + themes/bgrt/animation-0033.png | Bin 1111 -> 0 bytes + themes/bgrt/animation-0034.png | Bin 1061 -> 0 bytes + themes/bgrt/animation-0035.png | Bin 981 -> 0 bytes + themes/bgrt/animation-0036.png | Bin 989 -> 0 bytes + themes/bgrt/background-tile.png | Bin 79464 -> 0 bytes + themes/bgrt/bgrt.plymouth.in | 2 +- + themes/bgrt/box.png | Bin 870 -> 0 bytes + themes/bgrt/bullet.png | Bin 131 -> 0 bytes + themes/bgrt/entry.png | Bin 1431 -> 0 bytes + themes/bgrt/lock.png | Bin 329 -> 0 bytes + themes/bgrt/throbber-0001.png | Bin 1578 -> 0 bytes + themes/bgrt/throbber-0002.png | Bin 1568 -> 0 bytes + themes/bgrt/throbber-0003.png | Bin 1561 -> 0 bytes + themes/bgrt/throbber-0004.png | Bin 1570 -> 0 bytes + themes/bgrt/throbber-0005.png | Bin 1585 -> 0 bytes + themes/bgrt/throbber-0006.png | Bin 1597 -> 0 bytes + themes/bgrt/throbber-0007.png | Bin 1629 -> 0 bytes + themes/bgrt/throbber-0008.png | Bin 1604 -> 0 bytes + themes/bgrt/throbber-0009.png | Bin 1605 -> 0 bytes + themes/bgrt/throbber-0010.png | Bin 1601 -> 0 bytes + themes/bgrt/throbber-0011.png | Bin 1595 -> 0 bytes + themes/bgrt/throbber-0012.png | Bin 1602 -> 0 bytes + themes/bgrt/throbber-0013.png | Bin 1612 -> 0 bytes + themes/bgrt/throbber-0014.png | Bin 1601 -> 0 bytes + themes/bgrt/throbber-0015.png | Bin 1588 -> 0 bytes + themes/bgrt/throbber-0016.png | Bin 1577 -> 0 bytes + themes/bgrt/throbber-0017.png | Bin 1572 -> 0 bytes + themes/bgrt/throbber-0018.png | Bin 1601 -> 0 bytes + themes/bgrt/throbber-0019.png | Bin 1608 -> 0 bytes + themes/bgrt/throbber-0020.png | Bin 1583 -> 0 bytes + themes/bgrt/throbber-0021.png | Bin 1602 -> 0 bytes + themes/bgrt/throbber-0022.png | Bin 1595 -> 0 bytes + themes/bgrt/throbber-0023.png | Bin 1603 -> 0 bytes + themes/bgrt/throbber-0024.png | Bin 1605 -> 0 bytes + themes/bgrt/throbber-0025.png | Bin 1604 -> 0 bytes + themes/bgrt/throbber-0026.png | Bin 1605 -> 0 bytes + themes/bgrt/throbber-0027.png | Bin 1615 -> 0 bytes + themes/bgrt/throbber-0028.png | Bin 1614 -> 0 bytes + themes/bgrt/throbber-0029.png | Bin 1588 -> 0 bytes + themes/bgrt/throbber-0030.png | Bin 1580 -> 0 bytes + 73 files changed, 1 insertion(+), 74 deletions(-) + delete mode 100644 themes/bgrt/animation-0001.png + delete mode 100644 themes/bgrt/animation-0002.png + delete mode 100644 themes/bgrt/animation-0003.png + delete mode 100644 themes/bgrt/animation-0004.png + delete mode 100644 themes/bgrt/animation-0005.png + delete mode 100644 themes/bgrt/animation-0006.png + delete mode 100644 themes/bgrt/animation-0007.png + delete mode 100644 themes/bgrt/animation-0008.png + delete mode 100644 themes/bgrt/animation-0009.png + delete mode 100644 themes/bgrt/animation-0010.png + delete mode 100644 themes/bgrt/animation-0011.png + delete mode 100644 themes/bgrt/animation-0012.png + delete mode 100644 themes/bgrt/animation-0013.png + delete mode 100644 themes/bgrt/animation-0014.png + delete mode 100644 themes/bgrt/animation-0015.png + delete mode 100644 themes/bgrt/animation-0016.png + delete mode 100644 themes/bgrt/animation-0017.png + delete mode 100644 themes/bgrt/animation-0018.png + delete mode 100644 themes/bgrt/animation-0019.png + delete mode 100644 themes/bgrt/animation-0020.png + delete mode 100644 themes/bgrt/animation-0021.png + delete mode 100644 themes/bgrt/animation-0022.png + delete mode 100644 themes/bgrt/animation-0023.png + delete mode 100644 themes/bgrt/animation-0024.png + delete mode 100644 themes/bgrt/animation-0025.png + delete mode 100644 themes/bgrt/animation-0026.png + delete mode 100644 themes/bgrt/animation-0027.png + delete mode 100644 themes/bgrt/animation-0028.png + delete mode 100644 themes/bgrt/animation-0029.png + delete mode 100644 themes/bgrt/animation-0030.png + delete mode 100644 themes/bgrt/animation-0031.png + delete mode 100644 themes/bgrt/animation-0032.png + delete mode 100644 themes/bgrt/animation-0033.png + delete mode 100644 themes/bgrt/animation-0034.png + delete mode 100644 themes/bgrt/animation-0035.png + delete mode 100644 themes/bgrt/animation-0036.png + delete mode 100644 themes/bgrt/background-tile.png + delete mode 100644 themes/bgrt/box.png + delete mode 100644 themes/bgrt/bullet.png + delete mode 100644 themes/bgrt/entry.png + delete mode 100644 themes/bgrt/lock.png + delete mode 100644 themes/bgrt/throbber-0001.png + delete mode 100644 themes/bgrt/throbber-0002.png + delete mode 100644 themes/bgrt/throbber-0003.png + delete mode 100644 themes/bgrt/throbber-0004.png + delete mode 100644 themes/bgrt/throbber-0005.png + delete mode 100644 themes/bgrt/throbber-0006.png + delete mode 100644 themes/bgrt/throbber-0007.png + delete mode 100644 themes/bgrt/throbber-0008.png + delete mode 100644 themes/bgrt/throbber-0009.png + delete mode 100644 themes/bgrt/throbber-0010.png + delete mode 100644 themes/bgrt/throbber-0011.png + delete mode 100644 themes/bgrt/throbber-0012.png + delete mode 100644 themes/bgrt/throbber-0013.png + delete mode 100644 themes/bgrt/throbber-0014.png + delete mode 100644 themes/bgrt/throbber-0015.png + delete mode 100644 themes/bgrt/throbber-0016.png + delete mode 100644 themes/bgrt/throbber-0017.png + delete mode 100644 themes/bgrt/throbber-0018.png + delete mode 100644 themes/bgrt/throbber-0019.png + delete mode 100644 themes/bgrt/throbber-0020.png + delete mode 100644 themes/bgrt/throbber-0021.png + delete mode 100644 themes/bgrt/throbber-0022.png + delete mode 100644 themes/bgrt/throbber-0023.png + delete mode 100644 themes/bgrt/throbber-0024.png + delete mode 100644 themes/bgrt/throbber-0025.png + delete mode 100644 themes/bgrt/throbber-0026.png + delete mode 100644 themes/bgrt/throbber-0027.png + delete mode 100644 themes/bgrt/throbber-0028.png + delete mode 100644 themes/bgrt/throbber-0029.png + delete mode 100644 themes/bgrt/throbber-0030.png + +diff --git a/themes/bgrt/Makefile.am b/themes/bgrt/Makefile.am +index 4cb7aba..5fd40dd 100644 +--- a/themes/bgrt/Makefile.am ++++ b/themes/bgrt/Makefile.am +@@ -1,79 +1,6 @@ + themedir = $(datadir)/plymouth/themes/bgrt + nodist_theme_DATA = bgrt.plymouth + +-dist_theme_DATA = \ +- background-tile.png \ +- box.png \ +- bullet.png \ +- entry.png \ +- lock.png \ +- animation-0001.png \ +- animation-0002.png \ +- animation-0003.png \ +- animation-0004.png \ +- animation-0005.png \ +- animation-0006.png \ +- animation-0007.png \ +- animation-0008.png \ +- animation-0009.png \ +- animation-0010.png \ +- animation-0011.png \ +- animation-0012.png \ +- animation-0013.png \ +- animation-0014.png \ +- animation-0015.png \ +- animation-0016.png \ +- animation-0017.png \ +- animation-0018.png \ +- animation-0019.png \ +- animation-0020.png \ +- animation-0021.png \ +- animation-0022.png \ +- animation-0023.png \ +- animation-0024.png \ +- animation-0025.png \ +- animation-0026.png \ +- animation-0027.png \ +- animation-0028.png \ +- animation-0029.png \ +- animation-0030.png \ +- animation-0031.png \ +- animation-0032.png \ +- animation-0033.png \ +- animation-0034.png \ +- animation-0035.png \ +- animation-0036.png \ +- throbber-0001.png \ +- throbber-0002.png \ +- throbber-0003.png \ +- throbber-0004.png \ +- throbber-0005.png \ +- throbber-0006.png \ +- throbber-0007.png \ +- throbber-0008.png \ +- throbber-0009.png \ +- throbber-0010.png \ +- throbber-0011.png \ +- throbber-0012.png \ +- throbber-0013.png \ +- throbber-0014.png \ +- throbber-0015.png \ +- throbber-0016.png \ +- throbber-0017.png \ +- throbber-0018.png \ +- throbber-0019.png \ +- throbber-0020.png \ +- throbber-0021.png \ +- throbber-0022.png \ +- throbber-0023.png \ +- throbber-0024.png \ +- throbber-0025.png \ +- throbber-0026.png \ +- throbber-0027.png \ +- throbber-0028.png \ +- throbber-0029.png \ +- throbber-0030.png +- + MAINTAINERCLEANFILES = Makefile.in bgrt.plymouth + CLEANFILES = bgrt.plymouth + +diff --git a/themes/bgrt/animation-0001.png b/themes/bgrt/animation-0001.png +deleted file mode 100644 +index 6bd823976167325046fb5759916e6883936461a2..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1579 +zcmYL}c~lZu7{$Q^#a&RLMI$t|oMDkPlaj_Tw@eZ%N->2nDL@n=$kM{ea)enV3c{#@jVv}3fJsZ|Ffn^s98L-Y +z!_Q=3_OJvP9$U;w-!DkR2-27wCLhD+vAA4j=6^)f*-Y+ky0p*IT!omgBBcnJ0Dmkl +z2!q36{P9Q}E;wLKFcvqx`-cW|#%Vqi&*CrvSZwgW2luwqyTj~Re_bUrW!}U^Fnin0 +zn)AH2!7OE_0R90Qi^b304WgJ$*Ljn|U~-v&6fTRCB4DL+k$7w>kB@ZJOU(h;d?3!e +zAv5#;H__ODyR`FKvkm=PE@rTqd?Y1>!!r|r^AE~CiSPpeEIT7f-^EiQ`6pxd?b_;8 +zP)82+ZH%haDdJqBR-j2?d2aAI%OPLofn`mD*4Ycj4)8pcaf#Mar9q26uB?WVi*F-V +zk^Htkcv^63W^MK7VePp0u?6X=+S)af+FHJLj>+Y6jXg%A(K(Dz)mqwS%+M|#nDn}? +znUdXkELYdwHA>1(%s5WqR+qm;z}tm2xuf_4SFQFIviA~F@1b711lgYkmrDi+1VYWd +z5pqwU(#vvT_?{$>cZc&6u}cCeqzV;LHv)e3p+EZgl4UWc&!KZ1%iLo+Ks?|f +z2v=fN)RhR1rc{+usNMHImm#-SzYUsB&~Z$>(WMPTt?y5iUvu>?686yFY`P->@y>W> +z!EXTFRDTuKm{vaVCwH6^Ow`Ka;W0Xt$Z8hi04u*OTdZU7{D16qUALhJIr-CP6i1lj +zJQWi3OoaM~NI!y6J=TSr2vj|Yy@j-Ve9?$6^fhH;f~WMsKsIQJ*YIqt%2tK$8=QG+ +z-&%#yR|J%0(CC!DwUHy1(3qEKSdA(Z%FH$8S^n&ONlRw1hu@$gF{gTC?5rn+dm>csxL|Xl`!2A$p(()iK7z}!pYsk?G%N62gt4BRho}h +zQsMzRsAvhvcjDX0mm9>%4s9$TigryF9O%=Q$h-t**T;5+vg>GKd%5?gLPLylRJ#(w +z=aO3Vc-58WzNTiF8>+R7ZRf7JFm;7k>6KOaDf;D*UkB=@eAph=BpsJ@MbYUchh0QQ +zx91M|n)5B2CtS%VvkfP +z2^jgew?K)8Ez|~*NAB%6$;%0j;S+ysFQq&$-63DPvR5m$Rn>=py!g$+(bW~gfy=I! +zY`CGu%42o+19OViw}=rsfmWQ~wycPg1UBB!LQ29!?;j?x4n)ZO#`I6{?%0(M*XX#Y +zrTcP~#F@FqiIU(iJEukOPJ3RT{5?r{tPvJKC}sST1uX3I(aI{;z}qf9`r^0@COUPv +T@C3yC*#RQMHj|n{lcj$H!ojpL + +diff --git a/themes/bgrt/animation-0002.png b/themes/bgrt/animation-0002.png +deleted file mode 100644 +index ef8ff54a5ba88688b91eeb3eba6753e9dc28a169..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1573 +zcmYLJdpOg39R4+z8J28?quXRSrOcfaV{up)l}pn>4NYctX`96un@gs2LAsGVMQG)6 +zN~!bYx;ow5r8OH1549TVDOdokpXdAeywCH#@AG~?e|_@z1qVV6Ee!zxfMSFE +zL$rukY6E@kWU$#^wE&?79b^E25qzna0awZ_v?Q7t5W)P7m_z_j2~;uxl}IF$W8zQ@ +zdK~H~k%^)urIM-1%mfrOfj}lOPz)N8LLt!qLx+XKZZ#FoE@D! +zQBF=MXBUK%lb738FGr`jBR49vo)t@;Fd~@%I68X$`<#)R%1f&G)2`3>B`88SukDoY +z!4I?GfT%|Pu}b}?4rkTNJ66gpS9pSb^wC)Y**XzW>g$YCs(o~ZEq9f_OZ3}jSmO@s +z;+nMW^$mGmo?|3@b=G>dSTgfFfL)$djE8Q|zo(|cGb`O;VidyAQiM=^*5bQqdXfL +zAZnC0HSO{&Nv{hx2^^C5q}&W*tqF47>^p3Z7+t(Sfi=TmZymx4>YpIbO|+;7+VZB3 +zU!_VGJt|s@%8o%<$mx@OH0gBcjD0TNG)hNPVbGfPoXQP=531f{*JL)~yff%~vRUC` +zId1j}c*Wtl9ka$Fpt>!2`L`#wzs%XHS1RQBgm0X$GCQ#Z{=N3VgDc34lEu3+pV_AQ +zN8StDLs`xQtuYH3}@RvuoWXbt +zLItOx1y3`GvVSHEI!Dqpz)2aIe<^LBU~MvcUFqF1?Q@{9 +zOs|M70@qHrn_TYDgl+MA{aHERzX+P#ig#fA%9;tgy4(IErXSsthfwieBgqA} +z?eW%_4S~~~ZQiSC)Z0;Y!4>A+Xid(eBQs;(%Wg-Et-^oF|_au+8)%Lt>T&wrJf=sjvFXJiJp7 +z5_vdWiBQNRX=XK%HG*;1d?70#2IH(?;Ma*B-siLtC3hx1MVd<0?|qQn(n_xb@GZPf +z8B{icNq@^yY%0Xzm1-O}cQQ}Ge%4vI@WpM;>ew9exzU61<88xjL{Y6^0z=3BHG|ZE +z%y~cRCv(&gK`Hu41$qQYOBkqQjy5YTQ{KRW*hcsAedXubuwu)L!(OLii + +diff --git a/themes/bgrt/animation-0003.png b/themes/bgrt/animation-0003.png +deleted file mode 100644 +index 205380b1ca8e000f19adb89243a71cd48bfa579b..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1591 +zcmYLJdpOg39RAH_u~F8#teZP=lx?jtmvdHBqO1!tSu!kEcCpPAVQi%xMMA1Yom4I- +zLz3jOIfhcAa?1%j5prL}=z4xS=RD{8d_SM}dEWPZ-tYU@SF)Gvs*hNS002PWZRfWA +zAR5n)4jkOPsHl%1=yG=Y@&Evdo*xKs +zV>b|t@py+#_6|7wOmNP1&|@&~@nSIP01oHy?AdI}L}$?f8jHcC@fmEEF#&gk!!usgp8y)r^M?IkLpt~W +zH*Im7-Ml{YL3#0y@Do8{be^#%jmZHKz;7VNUc}e{0IbDr+g2}%ZdT@#WH0X}rz@p* +zyp&MY5Y11=t05<$u6k#o{peXOF_CYsr)T!&DGZA@X+@b@ +zBv8XDB<-<%GhY(Da}mze$90h@V`{ZGnW)XUWYW;ce)sFVOtHCb5SzDeIXDYIj*`i%OiWQuTrVUF< +z@Yww15@~K)NQyC;bzbKoQ~<1o6+t7Cd`CFTZDk3bDjQC^d8W$KBR}yeq3qH`U3eFw +z7uu*eth$z{^!QQ(*fh9TJ<8A|9q?ZBstWOowvVFDQWh&OVYA*UZkJ +zpZjIN4jhKCMShCX78KR>+v1aCq5g5?KsK!HK*YFrWQ^gvm$tO>S-mgqs$-PA-^m3`XK6cFdHyI}BZ;6i5GF4bKM1s!hdk!=2XT-p7K8%D28M$9mmWb{b^r +zK8nO_$Bg}Vl$GBcGr*v4(E=;3eb43VO?Na81sxuN?{kG}@ylm1!`L#(!TO$C#N;US +zFh^HBV@45cH}8Gd{d}|^J-xb^7c>q_(Lz4x-SqlbRwNKKyg*D)$ZnB@lThef#%qs+ +zoT*hX_3?uS_5x|i=ukYmOS>aJWRl&m`~J8KTdDjOeYGuJ_ueA4S%3lZxv{9gF{^8xvNFIV +zq_#e4X0y#SdN^HRvR-W3J>JMdWf!_xK)cH%PFmCaqGo66_p;K@EOp$e{L;pbyrtKJ +zw_7H^4zG-bR_SKLM+Bo!lz!tmR~W<M{<`dUMl-l%DyyivK6O{a9{eNClI5iavh~W6OKrTeI_8!hSn}(@s?hSI +zFKC44=(wX=Vc9=zsb-y-IHG!0Ig!|8H)3AXJ*`_WThEnuAbZRU41KeOb%0AWU!#ol +d5A3`Z2SJL6rEpG+2>kc}x9#L@GUtGVzX5+W%Q^r6 + +diff --git a/themes/bgrt/animation-0004.png b/themes/bgrt/animation-0004.png +deleted file mode 100644 +index 6038af8bd429a28118214dd308533e60107d531a..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1594 +zcmYLJdpOg39R6uTVQ%9@7wt)?7Te5a?aZZI3URO!B{nm&7_&_^Mr@TXqM}kW6FNl} +zlHA$qFzFB}HA;(e=|V?thn;q&bIx-<&-e3rpXYtw=ly>E`ke9i+Xc~DqXhr}#A~;E +zpbBBjy;4IpnMp}ADp*C|9l`_vZRm2V0oU_QRHO^bBben$jU@w!=y)0#ahOV@5lILp +zgM^?^SqOS8n--tQibk-a$uu$(!K72;;>e8u&?X|592XhE?E;Y)Ldk7p~|Db?Ac4DkpUzU`|q>MFMZ~#(pLUhg+W{v?J#;yNEK(W +z%(-H_q6dRliN?z!oK7AT?7ktP#q4%VGKu_M8E%$UBepVBw00w+-XovUs8hC8o!S63C +zZ9hN~Iet%N3Y9ajt!i(WExg^%9Q~cmM>BjE;oGtTv +z@B1qQJiV{CK6kdc|2cn;rB9E0OW<5rj`jW*j8<+nK>+K9 +z{x*lZRXz`%MUQ`W=Kc|tIn*_@T9WW}Ge$=zl`6Jxze9j>be&fSFBJniMn}6rLFG9eR*qvwUgi} +zHS{&gg0iDUa>}V1p3IxpS>ob49R_0L7GoDEKWF3SY4Qfe`SBw^^|MZWIaO9y?(cnu +zAk?hjrHDQI&NP)2L+FMawQdl3o_kBel&kd^l5)G#wHHfwoT$h;KM7j^6e}Gx6c5J( +zjulLCNn$Y{DpgxD$>!EdLg)q@jo9J(m(5mA?!`B*N=ysC#ix5_hBd9yy`R7EI7+I; +z3KEaVL*)G4(#e2vj%Wej`=b6yhJZS4;fTXCuKbIrZO6 +zviin@#zs52g=Td_e5LPU57$r|`u`8XSTLX-@B3DLpfRA$yQIU&M(q#&e +zZMc_k0*b+;Rh#X8JYZS<$vww8VQ(_Th4HfYAsd9k?tHHoir;o@i9{C+Xi_0f0XAg&g0u|2eU +zwb+7?wtcIhZf-47KO7G)^y`ymbIeobzWEo4!wR)hUzA1LKdTwiU!PYhlg)jMcFU`Y +z!754elp)ACymEW!{HT>vAISg0*1}^aVa`!Gy11v{chUCuo@!6^n&h!ocH9{g-P>s< +z3rg&6`g2YDMDazy$Px?Mcwv`58`5PNX>RI%-G|Mk-}h?Obm0}SIeVA78na3odcZuL +z`myn=B7ulhksI`6kbLi6cpRm}!hgFjTa5AgEvbHBTj!2KIU#n=)6 + +diff --git a/themes/bgrt/animation-0005.png b/themes/bgrt/animation-0005.png +deleted file mode 100644 +index 7a967678a0fcc44fc8238e53a5de9a88d0ff5336..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1624 +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 +zJ{{0XKM!(vI2fE359h!9)U3tY +zm7#grc0QX%QC6u=u|$Xbe7#=$X2L8DiBf +z2St`ur?B$eL|v@T^A6N>+nd&d$Q8KtADa5%aH@1^GOi2SOY%6>vzNRvG!B{lO9+VQ +z6T5(;k{ZV-^COa?b|OK_zucFTSKsz#g&h0qyhYJ&`zq~Yqo=qpLEL1_+7w6CdOFr@ +zV#{KbHYS%skRp~AKjzV|=Z;){S&^%5gxF4I#Qb#cZ@leguDARM;Th2~)C5!aa{Bi5 +zz;_&Ub>gd2yP(JK*mxwL$PF2a{w=7rspIo&tGQ)m<%`Ud=fCc*AN4x6B2uT7N|%xv +zERTuOnoPiN^439vkFErn?ia_n?+@zs>b}UrY&YqvF-gv!)gj-&;LAkqwL{fc&w2d_ +z3CKLrw7j_wjQ&7MohnYQ_3dbO>m9{YCo;MA$HBf$A`^>2j@#3lfLxTHDX?$tTdj0_ +z&N%kS)^N&uQnS~_g&xsOUMR2Qw$Q@+=v+9qRD=u^u#DTBN*}juE}}kG&c%PG=;ZTP +z1MWOASgn*6POdsXn>L<4dp+%DVi~DB@f{ad+37vmf%q7+k)7R`oK^l7`}0nbD`wkl +zmi^oN$d8jI=)m2@P8quSd4b!ORpdS7557C$CV6@DZjMAD+;vZqbv#??z9T86cY6&u +nBWE^xSySxaK8cekt4@HAzE>A1gVN#VdkMrv?Tc*LO&0$fmG<3V + +diff --git a/themes/bgrt/animation-0007.png b/themes/bgrt/animation-0007.png +deleted file mode 100644 +index d2ccac920882325a265fe11365dcf170461cefb7..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1666 +zcmYLJc~H~m7X1-IkTqCjNnA*wPpVOVSt=nRC`dpML1cHJX(A*L$R-K3p@1Z*C|i+N +zl_Ca$by_V;Ky<1g5*0!AO$1wtkx-FENMwtE(qQ}M&3yMeGv}N+_uhYQc5u)k3sa;i +z000*Lev}YBqBd$1O#cf~Qy27L!uLBa001-VjWPf(U$NJd2ZTORLSGh}0e}fS4g*YN +zaX9o?P>>u8#QiKVhFoD5g2tWa!#pN=R|A#Io*bHvm2}u`JA7#H0MWG8B +z01kt71F={Theu(tq0u41msMap*!8kBh=%n0x^Wu9oNx)*FTp +z{e+C<|Mzsk5cY?5jOpc1K8A~8*$e?Hl+NMn5y0ZyGA`Mp0l*09Pw@(iGC6Z8Fn7eq +z>g=hO!NoK7*}1SUU?x|c+kC<_=QB~MeNu_B7IoDa%rGdRlA&+|_zsE{)ax-Qm+P|R +z=cUNcToS{~vs;Sp%ra$*qQn)#0N#D4QPbqq)UVY=)wAp7FzJK-rKP3+e&&#~XFg+Q +z@j}HPbJl-S6+_u+W8Pl!lUr8u9XrlxdsAA6m(t?;<|gnsLbm7rIN|);zJyy3SMpV^ +zd?3cSTZ*Syq*(-6o_&-*`oVFn+v&B%FyExL!u(X`A>|ty{Em5yX=U@KH8b;ZGmWb* +z6B>k{^`jI&UF(EdO?*#7cx*plX=yM)YPhO}VUC)-vbLo{9gY=N&A2O$oX<5xCCSL9 +zI}E>lK$Pz({>lgp2lJk9Z;CJ6W}pxYbjZo0I24Nx?3rc0VQH*-U)uJT+YCe7t6739 +zvwl(qD7Bl(7j@-~Uax;LvX;TO)7e}X5H)#w6>BakX2jz@V7;L7avRw{yyyqf1!oCV +z`B0`3|4gf!TA$h04wCXs;8y-_Uh@uL_|-MLm_5Ii7|zg!+Fo?4$N&Ho{ +zZ}pI}gm#~>pv5!>6RxwZz9Y}Q=Zr~jT6T^RG`1yw7+X)g_2`P*w+*>)OcS6O&_yF6 +z2klZaaJ_-b3dXw>F5F&uR&}K8WL}}&-Dipp?A1qxm)JqAL50&SxzF>hYJK?%&#otQ4v-KRxszyOumD +zkn)1DZS~kj?qcRvPtrnK$nFB=;hDa>z9BsJ&)szqrf-~+Q*IeYYi7T+$q6))L*81e +z;HrJ?kv*9aRi0O{;MDdz`ZWR&NjO45;6D1axU5&Z>E2JJO*YynE-be+vN`myZ#u2< +zNLOWG)$iUB3Y=b-)WWw(*Wp$0;;1CLs3(^2GL^i7A6u2&6w*V-h@#O}+1 +z4U)>s`J!|VxWzna04^o_l1S!hHt87_50|~1VX?nDivyF&VjwXCH|CSO6aHe7%0%IZ +z4}3}hry#YaFAPiiEP5agg-zmu{zV#yi7t4e?!V!6?KExL0}))sS&E21NOVb;oHW|z +zU3Fm@v&{Q#Yl9eps0o^W)ckt+AkNK@Y6z3%C@+24Xc#0MT@9=K{1`DAEz}`&o1a8~ +zU6v?~GWdNmxVX@LNXw<&Cfl|#M;10CkGAGJmwkt5Eq2D)HPD2#yUSvwB0HYc3-!j2y|4-_p934jVY6ud*F*2w80;^NsE3|oh>?7wW +zqdgaWs3o`GJ9ezZ&0Ngey+ztt_cd0ua4Wa^rsg@QK3)H3{q#(AScLwD0{%Whlt +F$=_zH?q>i1 + +diff --git a/themes/bgrt/animation-0008.png b/themes/bgrt/animation-0008.png +deleted file mode 100644 +index 85849c8f8bf3d6f785f39567b2e58f6af9c03102..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1634 +zcmYLJc~p~k7X88pVG+WjRF)v&w3HT=ENmevBy7skQ~^;cNCG4fvnLXOyJ-EYDl!$nkdEqaisbQg34-OLfbj>&hNc@&b{~C-}~#G+)dr- +z;^gB50Dw!tpq}t$8w7Tn2!{k^X+fI)4SzsyY0*iio}@ +z67k(aUn}Rn#>H7F5gqsoLU6dyH@AuDR?%}!OwVWV7yzBe;?f}&pN9#>F$H3b>xA5D +zSifdSvu?-`{r}GpTtrgFGGvuK{tPe8=P<;WbUIgHMF3AAO6$Eg1Ay&PQamMNzhg!H +zwojY(ZaDGei;`N8aD0us3&kCu%=tL%LT%;+v#Z|0Nws3PHQ{)eypHC5HEjcZ%k_a+ +zoAE&8_wE<(DDe&6K~WPg;m$|=-xvRL-EJDbcJE;MLv;mHXe~OM&8B?enowVn)1nX+ +zw=_*=_B5|AJ@X@4CfN&NA4`nh9f3s`j0FVmlKJzaw~XN(^&+$;{RaYibZ7-2I#1aj +zk@@xpwj=)q7M>i>L$~`k=2Sg0$jb~VMC0JBR|yi0*lc1dUozSq4})No9aWCq1*4zs +zrYt5u)Nugel+$71*n32jb1xZEsoO|u&n+_NQ(&>D1f(9_8!QSxY|yz;w5~@l5APn- +z9V_oc-d^-06Uq|2x0pe)CVYBIdC78k{&oVa-W)8u8 +zn|l|FQAUuT=6L380QRR%bwkjruoBy|GHr3uKw6`sY8A{zWHQfrXsVs30$*InO(J}* +zZFTSf?B|xcTLnQah-{FVXECdhb9xLUbtNL5v!$u;z6f4$zx*`4vf`lvVT&@bY1nob +z(o5eD|EN5=>eh(Zha-$>({e3NDDc3%jUeW`Hn(4DR!YHBA0>?zRa@NKZRWtvk?K1s +zL46M<6*di%h2@g$9^Iip>alx$Kht)qPwzk};1!yqk^@`%O;}p4%dQ}wr415!YvDBs +z&o@iEsYX15TJYN6m#podSvh{~t*!vrr{2O-j);3}Lgcx8s{N$$Q{?38lWIxkRj)4st;)ZN#XEGc-N`nfE(Z`qVOMQ1NzPCW+E+tGu=yGhUz%MTbo&M<%Nm`IVIZWt(+ +z>sLND<5hCwded7bliugp>?#6ukJhoth8S98`$tcg+OCpnJ!({!gg~5KGKREmohH-1 +z5{&uaz{JJzGtZ4m&Lo$V=x?9O%WBj^wMj$f73>J@X0W7q*Vgnik#jnONsk(Hh7*a +zshN{?eT$q(U6AT+xJ#3q4wPyJEt4X}sHk6yX9P)=I;_^szC_hZK +zXMU_O*mMQ`kK~ul>AGeq)U&baYHjm~_RZUuJVqX>Cg6Mlhqgr*9g$O4JN@seN|%XY +Vb9~PAKI@GHk`k!#t+6!ue*vul*6aWP + +diff --git a/themes/bgrt/animation-0009.png b/themes/bgrt/animation-0009.png +deleted file mode 100644 +index 3e79b9bcdd7c337bb0de3db1fa15ea8c05e38917..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1640 +zcmYL}dsNbA9L9eLh=N#J8eUp7yW8R?lp%RfysTy^Y8F_KA+i7ou)JZSmANu=X=aDa +zHBHOXRJxF+P^VNhGrO46)FQJ68q*ZaNyA;v&UwG@=bYzx&hvi%dULji2BDFTNB{uP +zA;AIRCSvEt!rXKVQ&K*gV95{ODFgu2g1LbJ=cO2v=p!OWivrmkCV-1i;4*PPvbkJF +zEKVqh#j)5T9G{cSO-K~Q<3#aHE>nmT^4UBdQ}7?x?d33e`}Sr&hMB4`b5#Kh5fi|J +zZbY1$8xBvvy19`yc#uGR0(acel$k%5iC}Y?00@%)Jsxi{)jE@B@%JhM#+>O9*yNXM +z(ro6m%_d2}0RF)`5G4HBMWmQayE&5*%j7Wu29M2Uh}a1{ECGz;3$gRmnWn&kxj?vS +zL#E*WH`jq1y(#T)O}6dd<;k%erVvYEaQP+zZg^t)S&S)>52=;~5+A8r!vG!3$3s)znr{6Cnr~4w6k4jh7+Bl)eh7N<;1r&*qF7+bBkZ?m5A?>XQe)6mj|zLBaF5Bc#e`mNFt +zMG8kh+PBB6PDlmb%PKEkuD=a`){gN~y;cvwl3>n|LmA8I+c!c!Iz~g6WYiPo7E6{7 +zd&|HKVi7b~V{p*T2U9<~mr}Cd2l7!MCZsn}w;^efwESCYZF_nE%%j?OVcT!r-iQ(e +z2|U-VaMLZ((Z)MgyPs~2wvQRsd-0Li)cdP_LVUXK14LQlO69L~I45J@EN*|+fmdUY +z&it9-M-Ny8x$zMF5cF?(}3}#F=^4|?4c1s{lmZ13&Cj|v9MRaO&X)YzRmg#1!R^B`3-s83f +z{-Pd6lyZiGZ?l^u!-vf7R5tYiWIxm-y_816XC|U@6FllhDBVwLJ#A)V +z-vG#v5%V`kzFN4ex2qp3ziIh^_N$ZqJfe`H&mJyZQ`i`%h@Ve_dPiAH%Y+Be%stn$ +z)MO3pL$T()V#bLxxC?5d%_ZW6MJ +zZ?J}B-*4aB%X#ZNu<6i6f(Y>={=znKWqt9c#8;|G0wQi~;xPQx=4@T1U35WtV7SES +z2@&W$b)!4JJF=x&vQ1EP>;`!Pfru-~rjD4apYJLZuXbo_P)M)zD1#Kq2HQqRlNlLS +zr>>ctW|uV`tGG8KT_bK5GAml-i&!40PiA$hP@@g~XpQWr9i`SW-!1gt&k<9niMt@U +zzLv;N=gt%Ij+9a&p)&n?=9kvA95k+u7SSAsHM{dwllEDAcmO(vR;fJc=dXKpYc7(&P9M#qz^ih?O +zM}}yC<1J(}&}N)PYAdqX+qi{?xAxJUlf_#|vhU5QG$&H%*;&U6mp+ +z#`rL}ZFGx%YQ>^AaZGsHA*bW1Z7&U@H@ryeGtNWr_;J;x#>#lt&bm|L;o*BbhQ|5I +zn<|A?dmFc`uk=jBlf0rqE7k*FsT~*7MRyH#5$=H)&g5qA%yvbE?RG77q0&L`rR*&0 +z_T>F<=&0nd1cD|E{#+%Y?TWZyyw;Oft-nOL`Bd|~*e85VZGB&&RBRQB-a6dda+%iq +cdAHU$Pk2Da5jTWPn|?|lgd7@B?N87A3!Dev#Q*>R + +diff --git a/themes/bgrt/animation-0010.png b/themes/bgrt/animation-0010.png +deleted file mode 100644 +index 1f64875a17c6ac9bea646cbfc133dfe5013ea639..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1613 +zcmYLKdpOg39R9JHJ1fbxTFG?X)n&+S5lbae%w-K*tah^vEeb2QBbQSysR`9_=|VMK +zR%gdlC!;Va*AmH*R90jpIaAMh&gc1lKJW9q@B6&p&wrn+-MhT?bwZaWJ(3vY#$;Q0CbHOTMalXG*yvqJg;EhHX5A@AY)hzD)JzW!H9@Laye1R +zXc`a6rt=xBI9?2r7ei%GxkxUX#$-}C{~;ohPGwRe1+8FJl<8uWX9SN5U{Gir5{*V; +zurM^*$DnhCQkcsht1+ +zM4;>mfpa{Sy!2-{KZ;J}!U7@~Y!w1%4DMKw=|%tmj}SaP0)w^Figsp)dqLBq;TJz! +zT`(Fpky#5e%OjUV!n8kyW!*LWp^=K-4999WkVsbB6G}h;mKHazyl9ytJ1G=Pp70!3vp~YH}he`t4 +zGQeLudDFMaN6aoNxk^Wc`eDdRZTl280{qPp3!z$5<9gwD$SUg**LvF&Trnue)sUnf +zOMk2ce2;40y&rqL&v0!!LZECMy>ms&BX?syAPccUf=XX&@)U+=)O?R=nVxLhQmp55 +zX-zjV89bnIZszQ`-?O}WTfkuR?4iN+3h<1sskFfzbC+^;vJ{Rr9en`9-yShiEHCUi +ziF&Db**lz4^m!dl&p_RGR#PqycOS)9J-F<1zCSn6tAv886GR2Z?Z+tHL-Js1utakl +z-F(>r25euW#2^`PQwtpu_84T?rUpfR*b4s&nK2MPulix$;0V%s`XP>7ma`>*SrQj- +zE>v$wVVry_Hi~}l3gJ=au67mtg;&6p2%Di>o}J(fe?`vtcRwg*4k>MVR|*Q99h6zz +z9vbc7TOx~If4T(kfUGh4sezO85L`)nPl#@kL2 +zqKG60*(|IK^Sct9N6JZT|Hkc>6Uif$Z>4S3_*)G>Y;!b+3<2M|$wPyfnHNWOIqY!P#O<&$6z4y6nJjxPt6Za4`ji&CfFE?AI)h%0Rr3>GrV1Z`=o* +z6Us!58rjRIAikk}r?W_{rEz{dpqDkreBRPJ(ENJvLv(+>uMAS94Zj(9LPA`r);HGN +zLTZtiKRD1cdcZg--PNj_v)@}or@`79#}5r9xD5q7`zLQnS4Oqhu(UT(vjg_hVqPMx +z8%BYgd@5swN1G%In|(IgtuBSYLsPr-VlM6c#(!&OdHhE5vGnNrA?TT+(-+e!z-vr4 +z*RxbSD|FD?OU&JE+#F6R6wl$FI61XENvzAy<`Agl%IN`?0Eus!{YVzybX?(?_Uw5) +zMLT`+v#8nQFp-wrmmq!0$SOobX`0Rt{igBt32ze5&ELCV3tgQS?edE2C|Nbuw5`tV +zR>%1Bdz%zZIsR#t+c?w7U*6Gd?zP;^omVUXU4IBqxH=Cl-Uoo-wac>>PZs>1eYOb#!Pi +zbZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_VuH;C0000ObVXQnL}7Gg05UK!I4?0V +zFETSAF)=zdIXW;hZ*B4#0000GbVXQnRB3Hx05C8*FfckWFgh_Y_1G7K00008bVXQn +zMsi_oWdJcTQGWRT0000HbVXQnLt$-Ya$x{NVQpn{VJdbW>wx +zZe;*rZfR{{bZKvHATuy#aC0CJiliLMUe=XYJNLD%eqvkgs!jIWp2pcw +zu7<9q=zq9bUIZ@y*ZaV3unXJ;-k%A61SsqrM^NJ|qysiPC%DDbYe_M}{=w%(v7CEo(sGq{ul-2Vi; +zM<;HosAN0a9hJ;%>r3Ey@F4Jz_!pRjL#R{FTDAKoAv|j`lCsIjPk@tjb$2Rf-DoWv +zNr2sF!E3+(I+J?^+rWTM{CVKi{|)TceqgtbfhT~8w&LKD-FOFl3qCWZ@#Jd}TmYRN +z0SWFwEBFf->>~IQ{0e5AopL6D&aih7ybaz0l8J=u(7V`w$GP9!H1@>63Icitq=J8t +zt=fvk7vKzbSHX539C^nk{1P@FfRBI)kICX*HI{LuNfz9X)j!vE=YhR{6Y#z-fOFV- +z1w;Eh8;V2r?AC|iQ{eeZ4(*%$3u{TFeHy9U08Y71ynidd48EZ{hiwS1Tq%XPhppA0 +z0=P=HLpAoj-KCZYTjxS6X$ZU_4rm#vbj@7?$r)z{5n@y}x{57C8o +z{q0ZJufv^o$<~>Sl{j!)38?cPU`Jr=T5@v8*U$v!m+j7+{4_V58<%Yc$i_(*e(zQ< +znM6wj<93$`ta2u4H{fooypv_8UrLy4PFCdJ5W#h02@QFt~9AzIaif__fEaTml=?+ +z>ny=pH_}0pQdjjoK_~ka;MG>r=e3+^PcaKCyp6(yeCz)J8k(&?v38@q0q~`iio!8E +z1df4wkH!4tpRmhw5yw4S*Ct>Gq+E?pv7e`{yb{|~&fY>7To*cy{A5{2yohk!g??Hf +z1@9ShYHgXXpK~DhYL1|@1OB_UW3W=S2`U49Y=C;jEZe7f8a}+JV*~$%GN5x1GN5Z) +zxt~OK5nwoH&?TMmtGWO()QF9K;P1Iw#Nf!xQF!1A@SfE9E*Sh8@VCN;%Cj +zOW+1Nhr5w>;9dezSQ)YhodXBaYf<*Fa9B;`4hd}6pksg0VcRI{@P#YTLPc+(KSEY* +zh2Fo3Bq6^HAE==k)Po0jbx-U2jNzkPf=CK4(ug?e74yi&bsk`-H3nn +zEqb!4ig + +diff --git a/themes/bgrt/animation-0012.png b/themes/bgrt/animation-0012.png +deleted file mode 100644 +index cdefdc78205460aac77e50eed3ac35b2f2c15456..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1619 +zcmYLJdoCghqC)<+b5c0uM^X(cHsG2}MetYtU0XllZuI3l^E3$5ExE~T5K +z%ch%^FG)7jgpbBhs0?4@_F$3m5r|ZXTW}43qxd0`x3j^z5b5$p8xF`Mb~<+WV~@ptkhaDaiy-L}SFMH*g?lxX5h= +zsbm818=O%nm$`Oq2q>B^iXlWYgA5QDR62n}Wik*hs00=pVKA5l8jKeWd%z3H$^Y+k +zM!EZjv<`r>(XVhWkw#`CLI`vgh~Q>ydYQQs06@nAaGUmq>tvS&GD|~Eaz^xmZ(c6N +zX=T~w+l`8_d<_>{hRq@!~^nAwKC=n*M}dA +z^L>3bt@t&`@SGT*_sKiL>7i$Chqo=WDTTG)Gc +zY}XBo68jWiBm5?9h!;tupOQKqo4J~Onzar +z+hlq82QQ*uM-LR+i4EQG!Sy(-E~sjkrqlZRR6l0Hma~Jix@%^7{Ct<#wCDCk_+Rxq +zUsQ2wDdT*s79}&+8{+9YYgRvhUL>#|ys%RVMU@xq@ayO`KO-`IbnZ>Jdt?DZ2f;Ix +zrO0b;hr-3J36SrpqRnwzw0PEsHofByXJF_Ox1{332DQc$Kk}c+TD8hXP%@7=)0Ai1 +z75I$kS^Xmh=^9>1II@-+azP89k=k-~%7KgAF&aIo*Juzqyh4v=1oiRhG0m_HM%^*zkQAhcveAX4zO_|N16-$?2T~ +zUDL^hZZg+zlPzZC^tP^P^~3I)Hmvcvs%C}LwdLd|mNw5A +zdn?+6FPf^K)=Q|u2lBkSUhP*B>HIQlNggr(aS=roWgV#<>z@71MtI7l*HZQIV)}R$ +zX=5>_an_U;UbN{NwB|@#iD``54Yf@EJoC#GwMEguTQYCvWkaDs8suJ=Zr_T%64M>^ +z6lxtA2#5`pt%6mW@~>Oz&QohmYtWFE^)?A22~A)BkP$LJSp9xmn0wgRwYvus +zMn>O#$@{t;=(6bHwY68Q?#s4#&gLzcoljG~eV}W<>TJd>S(5vY>K&L$$&X6G%m_qm +zDX&Jc@_i)(2Qb-01NJ~^c&Ek8vH|Knre4e|XSl=d{M&eV;YCtmu%Z}{MRh{JRv +zN38zLrBKSb+C+uU1s6QY_tQj1NK&x$(d5^)(uR`)^ql3(Oy*;fs`BiyUAKkv{>@Px +zG2848v?BQrL^QQZ1!vu((^UFv?y4N&vRxe)<6CV1{Cn<11wz*8Tw2p!%!*?2=Y-1L +z%6;YgxSA$E2i!W!`8y#pYn#AR{GiS}6kw?pe|Y^{bclU=etoRHVyBV}k~S0+3w)Q>(SlJ>DH +z%JXaL4w}+)YEO17!8cuhBFssDdJA$;2*rEc6_`2boN6C;GV3*U2ut_l35<~m5awl< +zpV}doYYQT*_-DGDXAj2@9A5e;`uUrh+~RwEUWBp1&pP^SkI;%eM!|v&GZH4rgP8-n +zQo?t1F|6;rZS<)r?5W4sqtzG1HO_Mj6!=T?NImR{9z$GD*t_ZC(27ZJo`2h&-D^!M +zrCxcSW7qSgN{W@$oq#(ZFeZByYhIuz>epAQqB*76g~HkejW$xXLG30=5L< +JZu-S#{R<=3;bi~- + +diff --git a/themes/bgrt/animation-0013.png b/themes/bgrt/animation-0013.png +deleted file mode 100644 +index de5aa6ec0cd0e46ab5e254855ce0ae1f01bbe6e8..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1617 +zcmYLJc~sJA6#cQJ;hI^vFPW($C0mP7(uNs{=7dvJYN3!Dn}C?ODHk!%)#j^J@v=%`2zhY^Mr +z3c}Fgks>so9nay#iXzaW2o{GWL<{+mTrNxSA9{qcSzKml+H*Jt|JgJI3DM-HRxHg;0cW6umB8(`14`$HeKQhP+RUiZS228zoUL|Pb&%K{kONDf03$>TcWF-Q19N7I2c&|tn`*aL3J +z68!(C2WCAb@S6yfm;MNk4`Z{0jx+{`40<0Q^!oqnlK(v3lK|!nFjJeh{2J_65GOsv| +z^Nl1vFQvj-CTgFngg}f>Z0ls|E*HMp8r~9ac8Z-H#^-9jTVJ#t_>Um!{ +z5BWT5HmT3A-EtU4G7N#YsG1L#L2Klu)YPg5qx&%JFPhym<=Z+a>)O~*guOo><%KBH +z(@*KNhY%I8=~P6m!o(gb9yFLS(Czf8`TO)2qd(s1;8FF)tDVzzCZ|##s8;X|ZQ-Mo +zgw$ZUjd<9BkGue}dHA`>(WLXK>wMO6&E6OT`W#N~)arf=CYd!H(f=w(iMMUc!6Lq> +z&ncAdbPE3+4%xj5B4xjFhY_PuiAFt9b_esOT&|qNl&Ts{6Sfe?;gwUbd#+3?-KA?b +zo+v7CLda*A$pts7JJpH9_C4?q9;usCS}A&>Ks4m$6!(1Y@dR~wgRw`pQt{Be1e4E# +zp#pm(=4ZYe-s&NXn0LFC)|i>Kr%I`X4oU{!x&boz)=SQ8FL*4|gljB)yOZP``=L|N +zzqnWR@~C7>jZK;wICwv{OPZT%ch7_bIRr&tUhm>Mn|ldzeNXih3bIZ1B}a+0>ATxE +zH3v`ZCayua#&l;#o2wq(Ni=9Hli5n+wjUD@#)h`a@CJDo3U`P#Ci1A9Ps72b%WE`4 +zN8F^P54*^lVJ@_^vht($$$<%1Di>qSF-PCCplZH0R#D+8dubu4=--!N+cK@R6t7_V +zoQ~&Jqv9@)9;I+$mvZv7$U|3){nB?Kx}NsZEPC;)8#mPXa(%ygJxgw_?1NNo&5z?Q +zwO?voh7Lp(qFm*L7f0M$5D}r*4fD)8*hWXbNqe=c`YI5}mKe2gFh=l&`ss89_U@l2 +zwyvA9B24J6R-xilBy%bd@6Z=JCAZ6Imz;moc1l{V%~Ft<^6eTuj8*^bH*OXYA$cQr +znYlSZelLWsTL@#xt8P9ha{9aihf0@BG-fru>lnMbJ*l`aZ)yIs=YMIBa +zj(S|gy+iGW2pgYi(oyrQn~K^hWvFk{KvzLZQKHMNbHefL-zV7p@ONT;YKkVANdm^8 +z^)GVTXE)KGZcsiy%lMeKyZy;rba;Sier&w)_^PyLK{o>1iYDFZi^L2navDn?+i(Ed +zRzVa_AwqHDEpEK*qzKt=_{y^>dtDfS#^M>lirPY~)v8NF +zJDMj@P5ineiN)RRR^tTin&Ojwbyh7go(Z$g|2Vc++KrA((&m>n-`AUOb|R2`!UrA9 +z`pl{)kO#ZdFE_gl*pk>?Q*A#0)KJ0FENS+IU%}0wN7hpEd$~!AEf_61HReQhT +z+u7;s`tLNJA4*U^CAK6ZE~`J4gnZy+LNffU2#KCJ-3|*9Z|u8huI};dvT1F>tzS#e +zb+YX2>&J(hOH6seL(3auj4CfR>JNu$>w0cv+8%rR9nvzA(M#`>n1Lq|pm_U}%eNg) +F`xj=u(4+tW + +diff --git a/themes/bgrt/animation-0014.png b/themes/bgrt/animation-0014.png +deleted file mode 100644 +index a0199041fce991f918eac5776b9baf7a1cf10287..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1618 +zcmYL}doj2cn&PqX`r$89;?c(#WU?3XK*_La~@6 +zR2U^1#h`L%kulNXsOWGqjm$!^7!*34%>0kY5Gt7-8p3-ER#d^)s~m%)$$%9aV~fII +zP*zw327|Y@!=tStY2OSK8Ljn`hfkdORE4{W}3R7?0^dgbzWFVMMp#?`%BIyV$`YeNm(462Y0y^sfPsN60 +z=KpUZ(KZfVuRkhm?SIQTBr2JO@Cv3e6a+9JJRyJX#R(z+@& +z5_!n83qybai3)}v6?Q-Tg~rK_inZ65itaRAPjt-KaI(W(IC2HPlaSE~O-+B3JI9%x +zS$NPR!uWRW^9cwDcv|`E)0?w3L&IZZWA}=UQjs(H3+(AS*=l?J(;3=*R9=UN`NGx8 +zlG&=^BQ`lbQXgT+6Zq7JNx6;m#Fw&3urIlH2FlQ%NfIPT5Q7l*WwjLzWWpZp#vw>^ +z!o_919}q?ZL9!f_6n`j7iE;pa{gOZx%FUAN4Hj1)@Ts(L=cd)<9^@tItU&8~cp^cw +z0NJS@q(7)q)J->EgCXNJg__Z!HotsPo4P98E(^|)I7arc=N4N}%Z%la*oLU8b`9e2 +z+e6x34iE>`k@jI18&~H(3C^TJY_FLQyqb~3n;QBzDs7~jwZ{ZOT;Cw?R;x8D2Z9XM +zGW`cW8oW0uvovWC=7W#NFUK#KFSNiy`|!6*r;_U;{Y>u_&$@n^2$-yCACZwNOZD>l +zf-e|-9<_k6Yr62bBFmr+{wk{0hop|NF_44Zr>_xnl@IVxSj~*_drG=zSB!d#GVOQU +zBnx5BhZZ%619^RQqpN?+=7CX4T)T93`_P>DB5dsA=n3^ojZooVv=)f(6TLe>aq>8> +z^mesR;Q3RsBegCjt^9ch2J{Sg3H!{y&0|t$adAh$9m7$Tq^(Al*IZwu$}WfQ)L)iF +zxi_su(M$$oox+5i!tG5`>tUh}p16CyZA&7-;O-UiNJPQ~(TV3NtbLxh45`OGyDfXsodz)(A{J?T53(mcMVKvT0ZiZ_GmiTaz9i+Qsla$cJ +z!4gh>T{Rf(HyotC?5U_rJ~F~2AYIMhcjd=?c0K4l^1*aMR36S{3IuNDH@Co>&8l;} +zo_)vGW^)RUHI?>&7arF3+}E8}r$U&fXPWu%3g{0lMQZO^QRtX;TgHP~#J@ho8G``@&t^mgFSgn05iF8WBm|+1^p}~iq;to{o~?C^gThXEkmQSx +z!2ZSjPWe(@o3Qb=+c>0Z9C-6q3jV2K51LID2DE}4K!H=Sm03O|)Ap+0${)Be20Z)s +zo29f-n>S95^NtH|>0T@RoZUS^dKieL*ows+Yl9QzZe<|V%&IS(fuWpVrs=df_|(DH +zyUmP+Q+3wW(>1eYOb#!Pi +zbZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_VuH;C0000ObVXQnL}7Gg05UK!I4?0V +zFETSAF)=zdIXW;hZ*B4#0000GbVXQnRB3Hx05C8*FfckWFgh_c^0m{N00008bVXQn +zMsi_oWdJcXRuequ0000HbVXQnLt$-Ya$x{NVQpn{VJdbW>wx +zZe;*rZfR{{bZKvHATuy#aC0CJUtc+2^RT +zlCSpOYp=a7-(KgOn$PF+*>bs@Db6F&W!;axoqBD1Ke6rYdYkA=r*Ra{dqdYs_Wy5B +zyW`{I`C_qHRimOw&SmWw-Bz!3o?z3tYYyGSa3{D2oC2S>UzF>}+5{5Z5m@1U;7M>l +zxCIzg7WTWf3A(4;0saA(!G~ZMMvmf_^+-r=%s>pO`erO21CIiox|V9Gw_2$;3HMCE +zWKHe>n2b8@J^&ws17a=1hH;d&39u=p20jf8q@-%+p1v3O*l4RbH}KuSB*KLHPr(J4 +zuz-0Y)npCgC9+_&obu55eOA +zeTi$5kP+G120K6oJtLbkC>!V66IO8zRD$v@CT1eMUm5U@z4PyIZbHM|Iq#(}1Y6I2 +z1bziF;gy<<3_lJ|X)h`PCx{tpB;}4)Vo+&4=qt`)^d;`~`_7RoU>A5D25?kl;WP!$ +zwOcgf+Tq7)y)Q@U_eHbs{k9}4P|i4t>|xu_P5ujDVJ4toufy@A*Tp#7>JDpU)f&jm +zbzs(M!V1Q^BuThfmxKYR((i(S^eOBG6Y~ivsVk5URtDENm1~eDbY9gZ;eK>JO{fms +z2rLW65+<=|F;_i+LNS=sn~ZZawV5i(1n8?x;Ot>LNDJVbFn6Cli`?Vv>I&30x@5rM +zcCJ|})j&GarVo^Pn9x|A>!y?P7l30g7WRG44X@&6;bxu$GfW@o#J!D@gfe3I2zVY? +zR4=mX6H+oXAsPA2mIXW2D=?@pArmROl65LYKdoAof6aXEUj=?krt&R{pH%9n?x%C; +zW2gA?uwoMs8~^XQ=Xu2h3GV0kHSn@3(2E6b1B)#CX@gj~Zz~NeFiuC*8zf9%Gt67l +zJ&fvga1K=SGDghuEAUy~0d5QlSVe0_v#XL=kAi!kW6Px#OY?K!EO-g{MVwZSYW4?s +ztBtNph6JptCE*_j_4PkatL$a&s9>L0q;(O$4@2D +zS2mqhp5 +z5^$Y84`e-^uS+;KIpdh1&LgX`S;fh)(HO}(4wKL(eeB$i?Yh7@|1X?Nlva;RVp{+J +N002ovPDHLkV1n9E(TV^7 + +diff --git a/themes/bgrt/animation-0016.png b/themes/bgrt/animation-0016.png +deleted file mode 100644 +index f72a577c023379bf99ea2b7fb77fba843bc9e37c..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1605 +zcmYL}c~FvD7{)(EL=BTPP0Es7D$`iR%mvd*NVBY@92%E_4krKcWw_!5I4Cv>rWemE~fUFO3fZ&RCoq +z28Y8q<54)A$7XjAtTUH0w^ExyEM^WcIUs<=di*{(S5|WxO6wW?yGlGwYvNpcS8~F% +z+OkD$hgOQG0l$I9V)5#yZe*=#zG#voz!(sq#V|QEK9d`R!eb+2c_@>2Y1)9Y%|J;s4Yb6wW5oqM~`h35r6d<5des}5W%mT%Azd|Fg?m=oetf1lpp{N%9I@?C)!e+d` +z5b9BN^MtI4nrI?BFT1YBpALQ^INSuE!cl!vbkb`w3sMb3^T@5tW*%%GL+vsnIusK4 +zaDbio3+fFK2v)6sL3UOITXwKyKD*nal?o$dRn*AXAkFlaw7zgTsnRyUvB)=jjjQTL +ze;DksCi9(@lPK>sWCW6|>{4ad%@g{^)b$yvR;mJUDti=pzQcHQJv;2%T!Ry{(xu-~ +zhPrvSwHa2YFlr%q(abZ7?Kf;H(32KbYE;k6UUf_2B%afKX7^tPe1~EM)8sV)KT07{ +zcUPE;%-X|?TBM&8C-YYLFU9N;C;jN#c;ds==+KCtOR_L#PumU-&ki$QSueRXGkLYF +zJ@`Qg*WQ9GNrw*=M(qtN9ymEIdQsKb0MqAZZ#?LEZy+_OYJ#zfBnVpgT+~9JxHI0< +zTXP2?8RN1;4o!=&IL*(DGnYrv-7gudTL_UC>d}VcRJUH`xPvN`(fMV9k$L0&sjkui +zlW{5QZCQA#^U`f3HVGkr1!REmfCa)Q7>Z%X;E#IMN;{{6cAlh&i%3Ffs94Pe33Kcsz_?HN-C{7Fb0!6aNS&&PAaiQ7M-z;!jza5?;<@SXd{O|@4pYK~y$CG#b1 +z#_069k=;EDw)+;0J-ozwhK`q1-#b1T`Cz}Pi8!lH-=vz}IyS6ZAWNFq&zVfeRNou2 +zw*}6XkG?+Rmt3HyQ}&GxE1^x5|FlVfQoera-v7c;<3;kG+(81?c2y8Nn&j>orfrZ? +z*w=xm!5X#=Da=0Q{47hJbL#VE-KV>V)@D8q<;flP0<&hLKwCO1i`(W%%`uu6I+T82 +zqjUKVax;Mlr>;<2Hza=@nA7==n2VdGmDN)wL +z!Y#O(09n2j(56|yA4Y7k&-VH#ZIw62oLfe$`Ky9{`!+tx3Rb=97e4{*`f=;udt3Te +vvk7-xn%>0@ZOgjY+gP$!e635U2Gu4#kk=Mgf0fpzp2i)U6giQ + +diff --git a/themes/bgrt/animation-0017.png b/themes/bgrt/animation-0017.png +deleted file mode 100644 +index 02926e7137b875d477182dacbf0a3f457bd34ac1..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1581 +zcmYLJc~p{l6#Ya&DKXS6k6T1m<_1VANn>ibW@(1Gz&;09bCi)H*;(sX0V$1AQYwKPHO-;8M731}>G!X44XJ +z{PaXzG84q{SUGHN2AF~aQy6RpAIIl0IUGj%f9OnSF*y6_1yA*$DD$N#3JqicE_eb7 +zMeLtj~|cVZq;(D3DOL{uaZuKM1p&>b!-R3 +z8830$Au62)`~YV>o;cr4+5?GZOX8kH28RLAI7~JTWO6weB0h=7$E+ABfDEQfhA?PD +zM*9DMI^*2}sb4`zHu)Z&lgMK5F?(oi9)tkFg(N&@?f?LK4+1IP)JWt>MaM6DebMl# +zi#la?_SgM*zH+%D%-t_mI=wCP+6K<%-Q~-pXxM;)VO?K;$kh__q+|=s%(rns0>B@MxDx<>XxrTDn7Nt +zKw|M*wJMcI&^lX7V%ws)p=Vxw^g`{Cs6r53`Wcn-dKp)w>dPh@9~hN+!N4y#{WAUA +zCgY)7ZH=VKuz`=(Wv8C%iuN~@#N=*;aiu+iv>~Z+fZ=q;TCK}vZ6SSwe!KO~i#^DX +zHSI#u@K~+t!(BnvV0c={`9b8U?M=(~@A9XDq`6gRlYbh^Hrt7b-euL7bgImt#wkWT +zsayE4u81nY^1^X?oq-RZh!ql|=tk*+U-0xQVKU-+!VMoJuiHMjet$!;scdMp`T4uR +z(?{>(5HKlh`}hf4P#rc!>l`Wu2GiVr_W2C!QZKlsJwJKSvgMLYHZNbR4=NHhftcc) +z>HBs;M~df24(FOvxN-ZP(%9Q8DfX*XsjT*jE3zFK=9e|`dS^m&mOs-8d9kG)?Rlnn +z=&Bvu$0|GDs?YOmi^dzJ%$TbRxs^0h?`3=(wg`9IxN+cKz#%cqZJ%uYn~C)Y{)#Zm +z8L6mia-YNv6*oJ4D0f)(P0Aa5CAK7@;dG2$m^aZTqRv)=NNljaP?KqFc3^#XPvi5` +zs4vGrX3XdX5##tKk2>QctfPjjlhLw>*lm88cZ=fp?#((c-KVnAyC0h# +z3A!RG62=#Om9?{E}#uPl)>_a<5BUorNMdkn#Xf$(`U_{Cx3Ha +z_Yd7Z$Rxm9Sf!0SL1{PZJ(kJubuE9^3TkWy2K3x{T)kTTdu`P~&W&xTCkk<`=rcwX +zIv449u;hLW8_eLyyY#s5T12(SaF7BkIP0T$6KC3=sdSAy?)XT1wJ1+EvvYK|P()s% +z#ky4-b&!0WEr{Q{v&dB>`HYHIw)VHJx??)SX{6$X9(Ro=v6*Y&tB2F7kG^)*@wZD- +z>WyK)zM0EZS;l{gUci~mkEj+Jl!>0hy|X2NuLB!=PT2SQGi%3f0f*F4b`Tg~ +W=68_kkLRFs2L$@=qSW{#6#NVJGszkN + +diff --git a/themes/bgrt/animation-0018.png b/themes/bgrt/animation-0018.png +deleted file mode 100644 +index 667cd7d4ad375878eb731326ad70a12f5536d389..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1582 +zcmYL}dpOg39LIlbOxRpg*~TO#WE)SK>A1DIwH%Qy$o9`x=erKj;@6;_1O#1kxkcMVc% +zdMnxvrNoK=e!>=qvsd&G0+i1iDl3+_P9e#Hb!S8Lm4nw3HU2F +z1X=&TX^V64-twDo_KCr8DBY)n7|jj1GnwZ!+n)WaF81$agphUB +zBm>2XkIi*2kaXP~H1rZ|Tr1}-6uUQ^IHw!gno)F4LrdR{l(f!WA2U@vJ@azi+<-^c +z`L3$*@$r=SL8qF!y1MwoT<)^r`l9krDSy|Xe|abVl}2q8|FIaaefqJ~_~n^$>uzcO +z7GGFR2s*Uv*|9|pDduG0AXjPdu*RsKMLXBI^OiWF6dZyD=hB0lLdB*UQMe(>m^~(`eyqtzD(@==7!bpDJtiQ{u=0@b}@zDI_1ju%*^EhaFRzkH(Kpe +zBd^OVdRv3Zdy1#g%#|7SzTT|Yk$vB9t-p$>4YE_+Zgd+pYNX;aJ8&t6u!g`jM=Pw- +zu+DHw8#qINd3tq1vV*tExUh+3&D#Fv>5V)m-Z5T0h04iQu$b+FR`au}Rhgj21xwy$ +zsOSYul}FGQ4zYRA4bW~(!2pd$<^frBl$@J +zk3{o%=OnY9^n>R*OnE2DR)xY1h1~=vA})||3Tkix@|?*xJ~&Vc*=d~o`N?cS2SYj$ +zn7X-#Otq*;6(pHCR}-z}4?NLefHhjaL`L +z$ZZS!$iL`6bKhaCgL7n<_Svre+KD^ruNDWsOvmyI^qHmY?H$yCCtk;Ozr=jZ3*2(M +zu|-r!Hi7M<+BmuF7>;jnPg}j;L*=Pl7gl@wC?vq7@RqQ%-xl^pBFO0dzzpj{B({N_+2=er +zaVZ>>+~Snk!9SCeD{N(wdnI-Jpf0RD#k%o~Ta-F#FDT@f(9tFE%MkAlLF$w6X=(0w +zpgg#zej=eePju~~^ja*c+jKAE@6Ph4%nsjkoJVnn%4k;8BwNzB3Jisc7C%*TxoK@SuR^j=w_(hg(>Fh$^OJiGGEJFiia58BwCeyeLGszdu+&# +zKN~5c>{@&%c_s1baXQ;j$jwpgl2sz-1zJ@hs?lMUabbudgksI)$tL5aI;P8ZtFK{G +z{*#fI=NnJ%OOQVi%8u>IIf~=JiTg~&&qhim?tawHM3&fxSe3;!FIe6^N&m1QKWL_Ufa_$^-&Mq*U53MYLnO)l6faRa +zs4OCvH}^z0>BL-f>zyIFjJ!W}-t&IW_w#wqd7kGy-_Ktk;b}Mg4rLu>004G46C6B1 +zgm1QzA~?C>;om^m$|juW0>Czn&6WeQaorc +z6ecPo!#Og +z^xf2WyMU3Vz9tdo$2ik*r0MU(EN#t82K$WXwOjYR@Lycdnhq2QjaI(oScVLqS^A#4 +z4p!ah=%}>=;!NLS7sV?4DL3a+cW9OCVz#cP!h}v&OsQ$gLPsRui?(sTy!`t@xQh{C +z*I3$g=pr7EKXqwi3W%~f9aqtqI|LWK@OhXVxUq3V-&)XbAh(p}EzlBB1X|FUVn{sJ +zcK-g5os?3LnN4k2O?8^=Nu$(88@59AY+%Q{x)7HlI+#j5~4hH&&G5sB*1qyQd=v$Q?_=&_SC8;`O3AJ@!Rui3!+15uXjo- +zSde5FB3-j6aSL_YhojfM;)bIgHc@~IL#Ez1x1DBFB1}<9BfPQOu~l*&{F_x_NBCCQ +zllA^-G~M{msrr6R#@Caord{#)8h52gD>W%R(#b~o6yI71r|hkRN8G^agp&=-+3i +zV}^!F9-fU}u|DaJ^py)L>~_5blgpAPLx&>@CYRfLCNisfopW+j{a=M7N8YFl%h#Qs +z{GsEWSZ0DR$VBS|VkE~kCyj5pAWQ~H*u+Tg7uSsSRG!<(Vp05oP%0ieY)CAWgRcOaZFD={QcR}OIBO8sS58n>(6W~a*0rCCUC53Y5y_nL0Bd~YCz@zT) +zUK|a1V9c$ZyoRX8Tbgw!>XfZj*qwu}4umi$gV^!@1yS8D0$mwVK$LnrJ-&i(u8N +z#x6niU=jMZ^QxWUAFFF7KfJrhXWM*w4RK`G=g9lViJ1l!Q?V&BVC4WGlc{fAN%h?p +zDY1gj2Oi5Vx9TXmd5Sb@mOXZ_O-o?f|6;FX%WoRYrT&JzfPRC%;eZ@SP!zA{1XmD&!ljBv!pG4ES)7%7#q`2UO%&QEl&2HKfVDGXRyNf +T*Shb6w+?W2baN;_aZ&IujE2>N + +diff --git a/themes/bgrt/animation-0020.png b/themes/bgrt/animation-0020.png +deleted file mode 100644 +index d228ed84fbddcab44ada03bb79b5c3d842e58a24..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1558 +zcmYL}dpOg39LIl{X(UqEak|X0I%;LNVkvhuE3IiN5+=5pwi%lZF=j<_ugB^Xq032# +zBAvNkN<7K6W2$l7PKPpCGEue1{f^))Fp +z`_J(v>LzYx4*t~##*z|k7p9}To?q(9cZ&e_KoemwZS2Tm$h+#QK1xJJ31VVmtj6oab#V!Vz!J66f!vo(p0YF_hm=T+8YtQ_ +z{1@DY{P_p<{RD6eJbb_O=RSfyfwht9Yi%h4H)~`7%V(4vwd?@i$lRa= +zQ81ve8p}ZB^DDGjLJaAr?!@A`-^*ipifycwvr0#f+2(4ZQI1y9K-Y3hJi6B5^p^aM +zAxp<#kAli)+Dq4Y$&sekkVjmi2&q}3Ri%4tMr!o6OXQhxvfMzB>aKA**{+PkKk7p2 +z+--Xk_;eWl=-Tb#Z4zR@d6)Zrx;HNDG#u-QB|9ZVUOt0Qzl%ee<(~FVU!x>{yI7<< +z+SdN8F|9W4UgX1GVs*cMr%(OY25E;f1BVv{oIoU&i6TgA7sU2>-S>hWvpzb1d6!<_ +z50i?e3eDz8%{eXy>5;IbG=v|K?7G}jfB((kWzO!J+OoK$q!$$4)oA%E=uj#B8%e1w +z4@x~81&1Vl=swnvl1mud;#)i&MH5BA^K8TtqT+lL4q|-0?CRTr(X6~&a-*}D7Qxi4 +zGQuIHIGW=N+YYS458ionBVxB#HTrBcP|^aS<1&J;1UEkg-hAolR>WO +z4g=$G?H_iXqr>0CX14KP--zkyz)}Fc$xyc<(fFRJ%$*ri0X;mqE9ddI{##x-!)vtMIJL^pHHU_#4@B)V +zs$$75yu4#)Ty3Jv3!NUkS8W)c56%wSP9{NcJhXIU%TmIVFNd$7y3WN-R|;Ds3I9CY +zm7OUq2%YvxzaCfGW8iF&`s4sSWMvP*(nF*n+(wS8eF +zzt{AGqa&%Cz2X27?)&^=liTH*^|6$^)}aAVVThquUznPmO|o2v2?o^}M9EEW4Z94F +zX(~*P89$kMR&U=noj&28@hNbww_y}g+qD=8g}iaaqGU;~d#|aB!%RsNBk3Q5LB3!+ +z@Of|vnsc|a%Ti|#A|4jg4LPjWa;`z%uwajebHkNm?a>2P;z@CixGH;oF_j5oWA145 +zllb1mc!@J8^Hr;eF~`V&C@xOxAr4$evLzPz +ySzG6V*gSPVFW)9qI+07?IazBPQu=YcWXU(fB0{)GIKHU**8svnqI0n$CGKAn?7oBm + +diff --git a/themes/bgrt/animation-0021.png b/themes/bgrt/animation-0021.png +deleted file mode 100644 +index e7bd0f5ca29b11e6f3f14f5b14ffbfc53dc2c6f3..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1545 +zcmYLJc{tR09G-+I$6#fm%(Q5Vn#-1PlE +za%@|Ol2T|R_cc4Dk(FZ_=VbS%o_+TFd_Ldz`M&S_yx-4XpQPjNPO4jVw?ZHgRiZP& +z6GX&DD=C6ECp!8I2+AyH3I_t&rnS+VAUE@2AZf#O@ZvfKhXN3E5R(p|LxSmaS^%08 +z7Jxn%%tf<8qv*_VZV;Lq1keEvn!^faFo3ZC5ak~VFarJg9r9olY$J+5;{p&I28%~y +zv1ptr0*kdcXl{Wqg@rs5fF9_Eha5}?AQ+6r_rhUEr3710Q~EYa7!4G0*l1G4VUW|< +z;EsS)7!C3rP#BD<>`y!i6ty=*QUJgJAT&lWoyHAjG7zSivn&omeVh*(v^ET$;DkWf +z|9_$|X4a%PB2d=+79JH43UCl48l43q1dGG-a$qJ9i2N-g!H(>uoY2>icESOwFqg|F +z%csZ-d@~5!9X)g$bx^LdkKT{Fu7S@MF-%)-?*evwMLNv!eH#EXHm|C9Tv6eEVyR)a +zVFWw{B_$=h?5ntyi&mYy$(2s_C(E@C>jF3@-_ovV*T9`=$>}eyvuE*xBSS-a+T5>^ +zeUp-!mClsRJilt-NMNC*mDO;v>cj`XD?yf)=s<#q$Aa0X*J +z{>iU~7EcIbw4(9dGkpjAZK!7nYEb;iwB%BCIiTl-fG_9avAY&lEhD+K}xoB7#R +zC&$3APV;`aigAcY>Uw>fNiM2hyM8;O2}N9*s1lZ?NA{xxYVTi(pqq%TCz~hM3>%f& +zwK1nC7R!u1Pz`65i$6SHH$V2muIQJ;ZF!hv!Pt7ehj5_MM{@w*n<71YeXZTcTD<)a9DP +z_4?wa*xst7C#_E(lEp9Ht9gZ~gfgGM3v1O)FZ9bFRYM_PUD?4@T&m@|lN$m>)e-bu +zQd4R1u~?lQ8T}?vuyIYbj-$Mhz~#Nm`yVu46o$;XvCJaxW*>ivZ`7w!4kZpPn!MJ+ +z1yY|qY!mc-K-vxX|C9O$H=qdajGLzT&H&yzW9o+5&&8JU%P5!)xrH(tlcJF{(nZ-X +zeqEb>176zWRD4n&j;&OHD;7r0*NoJc39kb?@AM7bAd2+PUpk|DUUG~7Hm)j5=$Uz+ +zaQo_-__a@O&DS@=I9pGrpzJLgvk5k-oF~u^iy&36Ei^)yi$5$v_obXOUvJv3YU-yJ-qu7^K7GG#BXV|50 +z*SL+RbQAIEH$FnV6X83ACGKgxFLd-zn^+*3|?C{(agAHk!}{#NDB-)^g=-0l--i!u35hHnA12ciJy46=Ow{9_0(P$WN!jMqUW_m +l#LTP=R?h|}IX$=}Q}60dsL<_peh02H2+_fvP-*YS{}=dUzTN-; + +diff --git a/themes/bgrt/animation-0022.png b/themes/bgrt/animation-0022.png +deleted file mode 100644 +index 4c7728223e991497f28174a8789626155cb762be..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1541 +zcmYLJc~sJA6#c0fC^;5dQU;P*l6C}9%O#f#+?p{=W)ZB2%Qgf?x%2IQ} +zGi94bR#>8^9FOJ{7E>dZCQX=DluNWAq0Y}bbLO4zy?f5R_uTLO^-3cnLM+Tzn*#t~ +z5f)0^1tMm#VN1Z7nw9kt1T%hUOez4ttrpt|I9-nf$p9gVEDUC`=>U$&_U=(sOikK**0|dOA +z7tYNMM{viux%qf{`{3P?$=&6kXW61Bn#G|5c)ZW|M<9e4R_H+u_H7kGA}A6F>R5d- +z$Sq&wwtYKXmlzc(xU?g3Ly&QggJHpD-pCST6y$s{5?2(2D{#F0uus$D9kz-^P|q9~{4kU~ +zRXqn*XIopFUw5m=;7qb|%l=y_4dX4DDG_Ri^|y@XPcwh?$@@E=`V|U=(x45h%RUR) +zKg%RG4D!F6pxN^!M`ft9ZKY;XsxNjj_ra%ehQXv2&!!AeRkhD +ze!6|QvN;*O_5`N0QN9IcrYRosS`~&W51mJD&P+dxI{FgJ?DsbALMlXo?@vfR^<7A- +zdB$+rTgJwP4|{ar(UL>Nw@Wb{(4|GqTEWNQ=yH-cX*oYc1lLg{COm3`s-U5CzxB}J +zJItopd!-5N5pB?h!$p-{=-iZnvVIcTX})|^uBWAyYP^SF9?T%w@%HCuyiVw7RQW5$ +zpFxA6mq6zayq?CAc%=j{yZ7#yJWv;S#N`OAsr0ya= +zE^{}BVI$1Dc{9)3_tWLdiXJ=S@S$@O9O!W_rc;Y`RFY>6S9sx#&IrHbb*JtR-?K8O)FZ1rv+JtAe8G+YHvq}D0b$1ON +zNxtm{i4r&JABi@_buFT{AG!79HW$U0uDew7L2T0Y^Q8fvq`~DT86^J7V +zh(qB?i==0vw245{tJgVvtGcyV<+gJ!(C*{rV(BL!#20juu^YwM7 +zi&+iK7C~`5#?4s0;JkC>_iNk7bg)>cEMz*w;H#kQ%FFJ#>bj=jPK_NcuY_CeE1?;A +z$ECfy#;Nk{(f28`6_g3TIJ?L9LtYT%uI+qjQzMB|>c6Acy*|vQ%zmrx_CEIjXimIL +zXX8k&ORyQ*m={|;6&z62g}QP75(Jx{zVzx%jo1!*exMV1#WMT1R>$KxXGym#1wxZ! +zmSPe2&Ar33y(`xgC?st_I^eHA^p`ja#@j*(79DH(Bm=^d_& +hmU7xtH{H!x)-ud3U=iGbG{oY?s{^Oni3p11%000(b +zl3x&r=*3>T1e^k~coGB{j}$HdfMtlqh5%a +z;M1@SrVz_xiP+p^VFFf|KxfkhSOJg8;n4a2p-U`_&WVf7Y=(kS$i*l>s*n!gajrzH +zt1A{yK)bqne(&LlBOnjeW`iEt%~YLHMpdBUAmt57DX|rU`m;K$$_#t?u1-%Uj2MqI=dkeT@!O(+^1A3Z^0Ze +zLCapd)S3na1caKXqOPP6DL+k^q2l_WwGW>>Cofn3Ir_2yYrMT{V^bBh;djhN +zq6Z9lwK|-=Fb>gJt@UnRnW{0Sd0 +znkW(Is-uz+S})v~yXMxq%9(4;$Ad+~QrG-z(2>2foP4578f%TsP#!=(PwBRVs2F$c +z@}J4lsbqOxkv^)i&oQZ^iRK`T(3}NYwX)*2<_fauG(G~IIIP}s(JvS3SZ>EX)+$i; +zR3CMBjq)~uAxqb%Ii-_rEeEu|ECJ@ix}Hlt^_$7#=SRb*t8ZAXvdy}%({lRx)pha2 +z_73xoskqRwbp5GO5%Th2o+Q5aT#eU6LS*)3lS*}F@(ZQp-3kXZIpKkV2`_gR7v($) +zfbY;5`8+ZUa*&4@PWFFDz1#dLV%x+?xSjZke7JPGMQHNV9qZO(hY&x`8uizojUTS4e +zM$5eOc#OnjYs=i5(K1!sHgj(hyvr%=)(z=(?n6bzstb(P=5iqe>QI?{igBiU;pljiP>-Osa|S*M!zZ^{e#gn=bS*!Ast5TEo-dsSiFKS_E= +zpesOK1XE;M<#CTZu0c#=+G;XvZ0o04DO(3gy;Ez-C6LhpkwZ~;0Y~!=^S~G(PR)e99AEILYMI&l76x +z2{AI{+Ijm82TeP79yA~Zq-)<<3M=Iez!#<22T+{_TS^D+#ZwpFB + +diff --git a/themes/bgrt/animation-0024.png b/themes/bgrt/animation-0024.png +deleted file mode 100644 +index ed52d3d40d594dc4ff4c0f9b796b3d0243a9aa81..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1492 +zcmYL}dpOg39LIlSN7EQKGMPeHa@eg4BbQ7}LO3U#6WQz+W3$CMk6|s<{;* +zHJ2h?i5!=-dJ^VV2?xn7PVIy`Q_p$M^L#(w*YmvJ@8|vf{Ph)id%CKx-?$zC0ClPx +z#YaKIwSlQ9Zhl-`P0vwkW%jQH0LUDpnkPY&2d@eI00_6QiD>@5|V9=AFLKRi$wJHit00Klj!5T*( +z;D{tc0)f24hKwhn!oD?FaG^4!{2Vd|`zzQJGw2+$&!Y?^?{i7+JLk8=5j8l%aI0BSAZqu3DS +z{r{#Fekav$S)j0y-^ycySs>rgm&WEQ2oQ+Y$8*sZ003oCDNcU=swsaAMxdP3Qe(Q8 +zG@JFHNL@>A>ko5ZF^NhDB@^w)Q1jwjOw^ZWwqGTrfTnXXcJ*zIGYb&|_3Xi;H~Y71 +z)^?ER7B8+oAH6gx+qDdCo_0>Vsngz{y_*qVPtCpCQ_IAjr}_oO$Alfrn!0i7oH`z( +zhpdPqTW3qc4|N+l2UeMK+}Z*3*DbH_Cnq#PO12!51=-3dlULvFxU|QFM@^HR(MjKg +zSr@#S!R_@xm>D>tAtQD~%<#***aFc+MvVm`(ZK7Yn@8kr+oUTb35cMsD;KJIVgXat +zB~PfH@dzp4N!*VG`OV!Lm^Se~x@1#OQ#u4@AlxsDZk5ed^-Wj6TOfK_(EE>op7`lz +z*=`u3ywcSCFCdzZyaZo(n1^_p1MN1CEb@No-c=`!Z{+cc2P_sqx~L{*+{8KidRMFP +z?fk6!d;Dd~t=CK9#_k)3yeN2QWUn$(Me>|zum4{+-2XZ +zkGADab=3{5z;p8Il|wJ1-s8p^d0kY*$ugz+cU_MYW9Efn+-VE_RZ~?-YGQ8w1 +z3s<`Vq>1TPuU1$3EZ2NkUnnO3I`z5IN%}i{BnP#cyPB1EGF|;Q-9DoeNHrH|PJ-8p +zyPEam=kH-F{?da{$dLn^qCz?g?oC)WSgJIH2lr)HAP<|*nl*0F7-w)rPBDLreGSyK +zhLUpGEd?N3&$=-;c6f16n^eR~&uT%pCerZpd17HU9GEfNnW?5#Re6==y(fAydYFXS +zmwX^!_#xvkc7kM@=M>;^gtb*W$*DMC2d(hHX^20`I)3n7%K*Q0=tKczh<;U53=pdj +zqL)jKJwwL=)IEqtu|CL>cs>E$ZUQ;5+o31YDz*C7beWn5d;gizH&LIldPAa)3$Fnw +zq+s3I%B+Ll;i#M(p;K%|t?|RqG@=(UZk +zJqLf2-^-7(yjDb?s`gdeT!no*6t^@%Ul{?X8YshF%nQ4q$}4qwy?vA&x8^U&Psuol +zri2AF`7WhYkX+AKF`y}d`kG#i +z`k9G^4C_J>N2G_p+%VpyR3q019A}r)5Q@e~#nns!j_agT{`50&U3R +z{{N>rXzfTHc?HSpU&E6b(JY=WmBxvK5U{}F)6Stx0YKJ`Omy}OM5LbkD~9THL@bj0_q{&Rh;iU}fr-be$aTgzd&1tD{L2vPSb&WD1eyDQo%@{htZRWRzk>^E|qu6=N8@FC*UYxpy +zH8XnHm6X}2yzyzz91$Clhg(F1)E*gG09e8R#+|11eO*mJfKug<$D|6vQQ=lDv6<*EXkYU=d7Fv{4MuD?dVsULl3H54SSP +z>>9_*$5KsJPWSV7%gkD~1<3YJ%!e=?g3U{jEw27f^!Md{v1Mk$sFZ;lP99odQu=}+_ +zH8>S%lPP}6jf(>_Hcz$x`>D%)vSOG-J))tW7N8IhkbLTg_JQPIVa~yDaB` +zJv^+8@H2d~{qGK%V>8l2^2^imYOnWSq@~L~1ecQb4ysHY<4i0g1$__|dJ<-@&ouwh +zl$f)Cwo3C2u{c*S;m0rLymx5}149pmAjH*hb1i92X<=~joaj?XayTrB9VRrEf15J1v7eB7lhAa6 +xe&)U_H6hC)_d#JNHcFv`T(9FOSlo4RF#YNEcwwUpEEGC80GZ@XtaAwy{0oZvaTWjo + +diff --git a/themes/bgrt/animation-0026.png b/themes/bgrt/animation-0026.png +deleted file mode 100644 +index 1bfd5dcaa6cfebe4fa8fbe8a4c53a2650e039182..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1427 +zcmYL}do+}39LL{5WspWLjYWoB*Ja)@%S^}&u{enkkzC%!U^FxA%*$kk7OORu9S3P- +zkw$SUEk#EucZCyMk~PY;5n3W)nnl}=I(zn<=l6Wh`F_9W`~3cTa*p|W?pFCm1pt8E +z-d^qja$>eed8hnlbGd7BAQQbp*#MxbxjhJ=v6#2Bjesj@Ks?;G|SbxcEXz@Mt +zzVsT024%oK)vG%ve=)dJyu~4kDzME8?u$mhnd;VCFSc$H0Qk(DLo!dsEGqIo>&!0g +zvwUA}_2@9ClhY-fZjkk_He!D0BG?WqXK0O;kEpBljpBcuoPN^H;0=U^Qwv=L67P~| +zK&F4ra5DmR8__K&w@4W_dO*tE%03AW)Y|l$<;-s}WEN`i(x+X1@0>rFB&F*~KH>8! +zNa^&#;_7;Bf8No(gYKJPYC>#98_b#vx4IEu5v!G_hf?V91jTXl^~0}@MwvV+Sji=x +z*2tLiYPr|`gd#pWR(J|EhKzQKu|ZvehcVf6T4CW=cZCXp`B{A56+x?(q-G%-D-=}b +z-Yyg#N>%;w-W}ttd+QO#QWU=}>nX2irv!i&l4nqwQLKrdZWN~>!0ILP1=L)_VucTB +zXfPF4Ga;vZmmWWnjXTe+uF~l)>jYBPwbaa6);StFy4^9B%ZeFc;y(%y7(V~R@VdFc_T5G1~Spo-) +zn$nQz>6HC?scLRCXzh-4`p8FTuFKC^t}h;f)wYmIleb1rV0(W+bfMKlOxTe*ndKKSWw9f+O!LZu7`<5p +z*1^rDf~8_wAz{Yknf5U8&xKr*ztKAkO&BKW-csvS{eN^w=^KL``)2!B*7I^Qfc~%* +z9vW5jynT!F*MQl4xGYHQi!`?6z2PU(EXC`+p9&r?ecCAHY65p{P?sC|#&zR-!_Lc{ +zTJ}IB9drza1t-GN4p!A@EY3{j_l}&Cj_$iQJG^?Uzf^<08JVr?)Tbn}My<{3J8`9D +z_C1|Fi!WXm)cGUGT?Uo)A41+v`O7>?NT!+fag%}KkIG!Lj%%}HO$hMJF;!7S&?%kd +z{6Mn~H}g|2?Xpxw^(xF_Y3|!0*cIv(_0BX+_ny!*5IU|YDvuJ`)d&lIX9fONxf3&Y +zN@>02!(Ak7u8(Oar{zB!lhh=9^bGdPv*X4I4Im#;Bc-nYrRv1hkv)dF@2u#8HiuUn +V%1LTM1PC>0whMGv-57~7XZB>`}9B8>!3pwMUp +zBAmq}!oQ`k;S6djEs?_}!`WmKjl_bp7!*34#QcwTaa0ohM4WI?Ras@QS%oFANq{{9 +z=?q6A;r1vP5_!PUfE0D(C0<=CUq#giPRr}23eCP8W1ql*w< +zX(%=F$usI*dY+8jbY~yrK!JZh7d_~5D08rh5$9jf_Y4VEI=|-O0 +ze9T=2XY@Va@b9VOIC(T{#mVWj@{77E4g-zp%%o#4=)X-2PBJ7I`FZzwyENmBxHJ=D +zT2#SEjJuFiwSuAcy;GFyOuKOFSQ)&#yK?BLWx7%QVLVcHcBHOh?C=}lBo{1e7emCp +z+l$8Uf6U;wcJ0Rs`gau^sw~oy7&lu$!UK+%N&cYw={ip4k4eJ)b}G!6hk+D-FN+qa +z-_H++^gHVKR6x6XVC5PfC2JhaSEN)`bme!qZuQvfyyUilOfR>-X&LS?y1Z92ScPnQ +z-^3`7d*!+>(ZKN33t!$&HMcXLELv--1Bs7am$ZFi4W-Vrr!#-0UY%whNxsc=KU;a4 +z7nFSEY1Wqi4BhE5sIBH7$7icf4fk +zC#?l3&~NqL3>45}0pV-DrAccm#t{|JXM7Z7IP3@xW6pUW>4eB*u8IW=OI;69n{-S? +zs)~*k0fa~(bIvyBik+KX&qT0`v)NJBwGp!i?lo2q5+cf)N>~|-u*HN$9OikKn(LV$ +z|L&}XR@05F6mTMWw%dP;YPKm);*d0tOBmNKjN*aBG1r|z!)V=KARAceZO4*9*S(%R +zS13JmN+6iqr`9*UC|G#Erz^_k|2WTUS-Lu)nqg#3qAC$lAA +zryh9P_a^%myhlZjGU9L~Yj(FWnP1SAbFjPalKN8H309_g$%-PVB=_~zro!fVu4%8{ +z!1&w_9h=L;^#bu*yFhV!kF;;Kg#Gd8np)!wSKilPV?|0GU3*?}S1m&vt+Hn^yH8Zz +zjj*j`xz7QayUjgj^tVYk9rdbAeQnS3wZiptYS1Utsgaa`KvwM(U*m?BF7S^$;FG1R +zb#t$1tD8^st0i6uzW8P_Hjj}UrH>)7<5n+sruPr-u8bGPE_-yg^# +z)g{H(R>?;|o!m>eD&&*-C2hi0uvcr5qPie^Xz~hk|H?b$(E3`rs8=YA|(pG1KlMu`+A$PuoQ!-!?ooqj)JPW^iPyT#icU|^zWHt<#g +zX4N(}!qDb8=TD&QHDPLK?&;Kv`OIvCiaj;34i_J&ui +F@L%rzZB+mO + +diff --git a/themes/bgrt/animation-0028.png b/themes/bgrt/animation-0028.png +deleted file mode 100644 +index eda5e3f2f3ab415780c5c7fcfc273bea1920cf57..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1385 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpq$VUY +zHM!~1;QW&K|mL#79s4^GcdOcKK%$NEd(~a +zGC3!;SRptuw*W{p7#dmBO_R`OU|?bNba4!c;H;h2={GxEz-?pWG`-A_Dc|c4cm%S> +z1|51-lWz0;`;Sv8OA^0*?dvVyefQm~0*e^N4^382J(tT@)uhYSF2DaJFy3lT=mCHC +z6o=paIX^Pn=NEXc&$E|(sH2oS5ub0>TKOVaVDq144J>TZ$}?}z4~lQ +z>KprGUV*Rof6|?QzoGGhg8N7B56>TDf7t)vbY1;Ei{vD2kHbfUI;M%bA;h&F#N5Q>f*i-4FKwd7(|6_nY1~ +z2_I*yXV{gl{W@47yhx(=We)?F@mkMAVhZS(nY7FIGpysHwKp?2hEG%QtXZKkw0X7o7tt|5+@LFeNoOYI1pm&r{oW +za7C>wl$>q +z{JU{-wSuA8vC}OdGFz52b#KHB`D=k2n&a>6zq%$|iN +zSLap5{%N*+z3%C5mDLTAJolD)uw{k&*}PuHmce`>y!KW1irs(P6fGFj_szMtyZ`L< +zM`mJPXZ#OJ8BK}d+mXAwuOR0@{bq|UpN|K1EmjIgMC^Pk@;I57HM6PaQdY~2SLn+$2oZKz6zx1nFAn%uB+IAbCAD^tU|JWzZjAE8T=@WZoJti;kKUST*`~wTS +zgS*WARp-T}H%y$@C$I8PN{RE}=Ejb#qSq`N-6Bn^mW6G5x%`S^JfrE{PfINB9l9S_ +zz|SJ&U{skj>8w*g +z?yLEWe(w_7-gzNeu3z)qZP)VPKi$u!8?w6vG0lO +z%yEg4%{j+qiv;ULiwiz?cP?|8-*(94gInT(MIWBHx3T#*^{wW!y)eJ9uZL{`55pyf +z$)94@ue+^uQPd~$Uk-CcW&@K6vyWumM9GxjXAS;7Oy{foa=_5qCx6iv-P6wL2jyRW +iJ$yXr#glZMKjn=3Qa-N}cgqA86%3xPelF{r5}E+GgkxC% + +diff --git a/themes/bgrt/animation-0029.png b/themes/bgrt/animation-0029.png +deleted file mode 100644 +index 33f2683016b52bf778779348c8c96cdabceed39d..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1348 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpq$VUY +zH0f49q-3ewP5Hg}{ba +zCg-FUD+DLz7654mLnDj2X%gBD49s^tT^vIqIBTbM2T2?9xOy(QaOwL0`qbsYQEVKZ +z?=Sw6NWHm0a(#;DwY{76&VEz2`|j13CA*w9h}NFl{jT!I$+x9v-d5VW*Z=gm)_7NV +zrt&fSu8HX~yH8JxzrRmCiF?`I=Q>t${l>>7>OP-7;XJ>1Yu&XZ_x<)wf(5(_1pZDc +zoLzXL;*8Z7kyi@qL^12&6&>c{RB)F@m;*d`q*}xr$Q^^&xs#RnX7ewSgqV#p&Xihe6OYH +zf17DqP6rYqHgP=o-J@G@AkKK+Tb}l$>x(;6wS(Gs2^i-6lRJLuG`xXPAmo1$LHPt!&tENW5;xOk_=ETwZqE>sL|AS1F^;gzqXf +z2KA>b4wOCd^<{cgCUm@PpUd-^!LzGgBo}3czvAmTayH*7NnpnN0`?2jBucj&*L&c! +z=L+k*N?F@RqhmAI>{jPH9p24*>Bsq9NAwLgriD*m@>ss8t=P=-(62w)z0=zciM^Nl +z&1Ct?a>doRtL}0ZWLgF1h@~)p6JAiRUBJG6RVB|QS%K=VY%4~)^&AKIo^96@Tk}2E +zt1Y76`uwe|gcp8oOrk`TUW?yOt1dpRDl?s@U|-R` +z{S1{n-`_ROz14W&TyMIr{Y`=8#U`b{^+YZvxlWwG&~si_>ZQvob}k|B7k@IZZ_PN# +zxTpNQ)rJ+mi(46Q&J(HsduSuKhy#m@bCSH!geO<$xIXG$-BQITQ)VmtX!d$jPQ{O9 +zJ2wRLESP`9Ln2Ah`oX>{>{?Rt(LU|>M6W&4pLCJqTd+ag!N4SamMf2aetLepACR6O +zxP9{7L+-9@#YyWDch6M*>dAjjg>~7%QyRxVIe*gUYirfAlVhmtyK%+Ad&&BZcJ*<5 +ze{UG+8$NvFY%HX>Vc(R=wMn;Pz1toMJ=zg>?SVzsy|-x<`>_?#6|MW&%Fa1WGJerx&TJHC;dqtv?BbQ5&;4OBP}10@ +zazQeG`h_D~`R$GNF^9CUFc<9p<|KDF&tc`#FFVUzw@*sRS#$n&_5OEmYszJX1xnP8 +w&iL}?)`A1)tQl)xY`t%3n4QBY?Ea6L{cQB)#qG}?14{u0Pgg&ebxsLQ0Fll~+5i9m + +diff --git a/themes/bgrt/animation-0030.png b/themes/bgrt/animation-0030.png +deleted file mode 100644 +index c5132bd9cc5ff00f5c8bc7c495d215a48cc85dc2..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1316 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpq$VUY +zHDi8)K2m-n=wFqISo`Jbt@aacDX(6!T +zmB~4&#R|cRxdlL)!O+N}ZkmKP0|WCOPZ!6K2+r1N-9@(?cwCv6`ri8g|BBx)kA{27 +z?<2XBSEPw$e%&>xEVsr&hEM#wX%)2{4%zvuVDD&wlR5PUiYeYBx7>6)j(Q>sIM;>$e)VpWWw9<_(zF&|ebj +z@2L2s{fQW(x&5*e*VoqCu^yf|`^e1qcQvfoew2sx+WukNP`-?Jx=vDe^J4iwE12XK +z{k~f*XnWv2XI0fRW&fDz#rlc5O~)oB)qd*Bb#AqJUcGpE@qyO{y^Y?o5`QhqWlC;+ +zvYKa?^sUH%s>mo|6;xYA!u+?d^%j +z6PfR*o#lP*q$lhk(X!a@l|j+v*WVVIY&gA`G30a8)wI7acXD5tv5Wcfo;4-B(Mz5x +z_TA~)JK5L6WBN@YtFRlnlVwZ#7FkX|C(haFd(ZOI;ztfVS8qt`tJ?2nuu6^Wuu(6V +z!@yAbp-x3*%B|prQ%ol3YeEm~Flew|_fq1a%ci}0x@^(gcguU8(A2y>_t5${m&H+W +zYo9;N{GL;3`BCuG6dNXWA;03k8^vPce!ddg#u?D!A}IE0mQwJCTba{23-tTDm>7~3 +zCv#UmTYAH)NoX2B*SyO7+Wq`K4||mky+5(e@WJGxN2#eU5|nk$#^4Gt#P4xEK#D3YZk-azyJ~)6*Z1m_zmYc$hvfdlaNo +z-dJz{j(Hy2>BXyDRG3?2KKMO*>d~?I!uh%!tJfCsJdd4(Tm;wn`7t{zn6wRRdT!_AUsNARX*kAvy#M#1o!=*x +z7u3}B{|MS$_TfhNfz2~cyk=X?_ETunpJfsb5h8~D`bMo5MGmVs|yCFK++< + +diff --git a/themes/bgrt/animation-0031.png b/themes/bgrt/animation-0031.png +deleted file mode 100644 +index f6ed4b2b3cbe1611c2530eed5d67900ef2ae557a..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1245 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpq$VUY +zH16H7Al^AwB?(h7Eaj?!Pz>kGf&!($0b`mv+>{m^UpS&K7Mtw +zdX%K9Lih0r&RP2Ldecv@|NZwLw`2I1%;)ng{v>SfyKzL-t^PN|YX^S?v!ojF!{vM9 +zq|^8G{t42Xp(hQ3j;pO?*%tHt_SazI%)^M`Sj9`h8o>jYA +zb!XzY=(XRY=8J5zU`&yH@ys}gS(hG*H}_lr(v#Jl0&n +zu%teF?}ROa9rjs{_b$(zAMDBCHrF=yV=a?J>D|uaH|I|%*6F{QGlk_y(hH%bc3F?J +z81s|Ed%Fz&ep{wvKl#7Hc88zQlWxp2Th&@}ma-Etz^R)f0QeJ3F5%XRapJiS*T~d!D(z&QN5UM){YmipA3&9l!DL +z4BM}dT{Fsfi|4Wks9KgynysI9LumK;Ie7^()ALP>RMP7cXWgA*=B)F0q5q*(ldB#d +z{Mw!2b0L4bg8tT4_sMSkuM2+o?Vs0F&8SdfDNy+%ZS6kJ%!}!B2&p2I_MV4>U=3-&(Ror +rNw8KVhI_{1_}jDI{OE~3|5yIS2B&Hd%}8rt_GIvM^>bP0l+XkK%<~xE + +diff --git a/themes/bgrt/animation-0032.png b/themes/bgrt/animation-0032.png +deleted file mode 100644 +index 097916423d6c42f03f07781a8ca380ebc91a6e36..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1185 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpq$VUY +zH%kO+W?0AO%4{7p4{=?9?+b^9=c20+bd4 +z8(x{5lUl40oS0hxq!|p2Eb697XfrS{TY9=UhD2~Kop!tIwgC@|^6|I-|K|(sl$hbX +zKI3Mk#<@hsN1M2twp_}+y{-TD+i#5t+Q05BKWFpjiCW*znbR$Q-FDx^_r@osU!q=I +zIsg9m{?kvJDg|C&TKRsKU(U&}*|x5#J)B}&l$8&xlKUp@>k+W8`9*vBjq~9Nlcut2 +zy-fe9Vm@b<+P6q&4M3HmfI-TRA%$*<+t;&@9oCKldZocT#LLzLs& +z_M-S_stGr4XWVl(nQ8ZFL!`g3f`yyk8xy~C(hr|(-@{a-=smwoc!%M}FaIahA7&S0 +z+V&))HdkQ&u^((#UhXVD_Rq`VX7WUJzvBv1XDpax_jWbg-K$J5?%t@^I>(urFsb3- +zs%QN788=?_YlvF%+C)RIaZY%Rnm~Pc;Q7FSk}j2F#>@1-&T&v}I`ZTE692eX{gaAp +z5}r-Q2DMk#Jhqd2K9BQdcI_e%btFnV%zofFOLU+g7 +zGNEj5iw&QumjBIqbFzN3V*{&y?_RSh42kv~$LGJzbJ*bFQ+(RG`9w|UmodSCU$tY}lSMe|I<8^ww$FPL~PJo~U(=;YOj3M(aE +z`Mq?vkdtKj`)F~*=gXQEyEX^w+jXdjv)l4JZLVd_y(91X|Cw?1jVGnT>KpfQ`OE3= +z-#GnG-idfo-u3Z^ZpMnddTe|)f5&W}365T!>S63YvlBY6_hmi$D11oIz-qf;gO0=Q +z{&kB>NX1ryWwJkjhJ>FC%CC#gQ +zRn}MUW}L44?$SiFt0_fGQqYQ953J)5uh``_LZ>G)vH372H; +i1Fy>eOK;rqpJCrO<8F7=?H7PqjKR~@&t;ucLK6VT(*5NC + +diff --git a/themes/bgrt/animation-0033.png b/themes/bgrt/animation-0033.png +deleted file mode 100644 +index c9ec0e5e62b10de61c6d8f00e456d2bc8b2fff1e..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1111 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpq$VUY +zHzT +zS0?AA7ApiN<`w{H216r@x@i*H3=B-~JzX3_A~@GhFxtU1s)%boxL_q%)PyBeeM1I0y(bpUtgKoKL5@UL-Wr@?)5)Ct~Ji>TqF2+e$tb@ +zaqHI~f81Cp`1;by_cQ%+PP)xDb@jcWw%yBjLDSmKxoRp46kP3X?(UOs^b|9S6n1+& +zQRKc)MoZK5!z+$I$z-0ixN_DX-H#pq!uRDmcO+l>d!Wiq{r}}@Hv4^TA8lH9_m#zV +z@2>gJ%h*@EiRSyb$??-aSB2AyFRWvWVYp%aPyR`1U4r+$jq7_YT79>?oH>ilj`Mjm +zOKh>rPl4ZgGoEcp^_JLYxp(9D=nK{<;bG}<+jk!gzZ@C$Q~`TMl%*}?(&u=Ir%VOYcif1_P?%mgS0^F +zzIoacA{PtHSTE;UZc#C%n0=Ap!Q4Z4t|+YW2>ZAB-s7gvPCuY0og>AfbXlneV +z?;Y*S+obw?FWhX1UHI5(U56V}=kzL-?-HvR#Y2)WyL?|;wn!~%Q!Mk>Qx8umZp{{w +zwwPP!`JvQ)r={h$oc1qM%ZfH;s~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpkKsgoBtr|c%4zN>-5`mJ&Cc;X2pMhe6ATej4P*EZSgwiuGF#dDFA{Zzs +z3X%*?PR&bYNX*O3O)SaG&r>iqNGm8-;D6i%R3Hpe5Cn8#Y7xRtJp*&Q;M0$Q(n4Uv +zE0c3lixq+sa|?hpgQ1Z{-82bp1_q|Ro-U3d5u8h>H%@w`z~j31@&EcwwR27^%;b6% +zJ#!_e;?D0vUGMU4Z@c@gcE8~V*<*9kXMgUPJiGAB*-Fdf6-PYG8s-bnG>)m??so6< +z&pmhFm*2U(L65!Hwn!j;(<|fUEBY6Qy2X`+x3D~an%w;1%beGOSCSlVHVobCxBuRf^8|xN_y&zP=|*-W`uU7SFlvqt)_l@`mpOZheZIv$pi>8>Nl4 +zJ$GlnZVG$gv+LAa(?V{ZeVdt_)E4f`zLLKGQRMW`??je}FTZx=PW%p@fWJO#>`$LG +zJn-7uKy-ma1M7J)d*;{D>2b+IzWcjkuRN0%ZZO(;;8~XON<;HQF+DFDbj>zKaoz3B +z783X#*z@4oxizNzjZs4Rzh6n6Gw?G!x!P9MSIzgtjy4_r^+~UVn35fmV!y?nUu!mP +zt?Y8MK7~22?-w;sc*M4AZNtjvFDn!G|4b16syf9)zSYn`P_Vc>QC;oPffHMUeb@fm +z;q*h+gYlN+1)Xnt_ACbuK9-O@;S`fo=Jx1QW73li>wI6^>RI^5y9ie7<-UA~`Tt^f +zTYe`I{(VynFxv + +diff --git a/themes/bgrt/animation-0035.png b/themes/bgrt/animation-0035.png +deleted file mode 100644 +index 2bd3b0dcbd17f182023d4d609f1103a8b128c7e3..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 981 +zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNC}>~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpkRtBcQLaqCNavWf%6eR*BjZITj<5GcQf*>(xpiogF1BB8uFfjge!6Fza +zDGHJdPEO5BWk}4+%uOuG%+FIWHb^TdR^Wf!1XLglQV;}mVQLY=PCWy2yWrE0fYL%> +z!z+_>Qi~OW6LSlIG=rg$Mcp(BZ3YIWTu&FrkO%^GtTzm@?3tV +zIb5r{o?pLgJIUbVCY{rdzgF2s{Lm{tmMQEmm-DH^Hzw)KcbNp?ADk*_k@l+_tL^6Z +zm&O*_Pph42@_n*r&Cyl*hTe{HS4zkp-=gnFw6-g<%aijqs@TOWyh +zon3li?enycy(Pb8oR>W7cb|CjjnxNxxxNE6@6@~OrmlC8VgLRjzH6VpWtZoBTBO}? +zvZ@p>U+%YlgW2b#y+O$=v3$4QEK`qg*!tkewOL25TwcGU=jd9i$T>f|nzy^(m#Tdk +zF85pL`Uh{jzgw3d->kgmz)XXtXJ5B|dHnu=dDt_tYTF5(GsNVLrtkYHVya&DO(05o +zn(zb{?~Rjs+nzlUc=q<}zGw0Aj4XVO@f;psmohm1iZ1(;l1tcKx)2pSco~ +znAg=Yu{7zN$+7F1B=h!5kACGZXO7O3GdJv14*FI6+wK( +zpWlMshd=l-;cwduj|V#aZO+Zo?-?iY6}c6->#on?VK8)l^6`$M8vC9ifByq_lUZ-o +zEDw#j?SFtlv8L_7JwuOAPt?BtmOjYnwyAUXiJ9i#*S2miy6ny8_vVLdier(hwZ^;i +zzh<8OE%sa?>hs_44!%((9FGhOrQ4n+*mm5=-W;y&xB8hywh*USLi5(udn|q(nRI!& +b|8IWxb#wQAN#$7xOqL9uu6{1-oD!M~e +z8d2hwnUl((pOK%Ns-Kmao12)dUtE-|pPpHwUyxIon_pUzpkRt9FLq_2SVbAX*vln9hGHv6l?e;+6&2oiG!3KbDnW?*0{^>lFziQw#=))=Ja$iw3L_kaAei{;-gwb<51 +zw;Ip%Nh{W9-G2M+x5EAR?JWxWXO(WWE7^1QVsyOitM;}?#yDlu`sLrx-1`}ms%7=wH@#Z) +zIlMA|KNCBL!3~3K+XPd~h`#le=N?v8v*%cCS$(n2S}%rwdgyfd_YAE}&YQ!Sf0tZ+ +zC^P@hntA?y&*oe$PS7u%nKfhGt5CMkSR{dpqwZK+PtP?5FR%M4a%InBo(i?{ +z%wM18E|Wjt?z#1YW5T>TuN<}K%Vobi +zaQvg4#jTH}cLdIwX3dkbTK@29`uCgL#ZFf5xo3Y^s_e&p?-#ERPc(o1)$q+TzV29; +z`BB+_J~QcGwJ+3tP{7XfUg>GYT37vqYn7%O_iknIb#~b4{H=UpmO}9&$wiTCuQTyp +z+~M5*^}6%=s-1Svk0vv6`?MMGY+v4YTyDF?Mh-d7KNwNG^2=^ZeA`@COs_P*Nv;FsE`lROs^ +maxcX1vU~Pr(aE#I{~0q^X>vclIt`S189ZJ6T-G@yGywpOfw1BL + +diff --git a/themes/bgrt/background-tile.png b/themes/bgrt/background-tile.png +deleted file mode 100644 +index 6b70a2d40790fcbec68b2db067f4f6b0d47ec740..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 79464 +zcmXt<1yGdj*TxCykOf{k7b&HrJC_h71eWdw>F$n2S{g~|1r(&aL%Kn_8|eo59{w|* +zj)U$v%IRPT+ +z4t93t_O8Gm5fG%D&5d2n&1gKVU9D(jKPal0v6-VGAkZLufJmr&F8H=CMrH0Mi?pm> +zRE1P%p6-d<v(duz52!Oa_cT*!#9Ua#PN64r42Hl3>!1_p|{$|JZ8g%Aj%bhEkQ25peIEZqf4A +z>xJ{9>alC}nbm~_dB_{01a*io$hr*9=+V{!hxyqx0eRV@f7=!4kZR-!so +z>hWx4#XteFwKMX~4ul~Mad&rj_K7Ka(uvLaa~J^zfBW_=p|x)Oq3`mK3G`~k_hKY? +zRSlAHNhG1#g4t!pn^Hgpw7Im8KX$bB0@i?+ffI(8(^ySZ< +zp)*2$_pU<*sbYyRxjBQf_UdYaiHB71*D{;$@HW^hc*YmG?iD(MguJIVhX8`{!|)p7 +zbQs~a&w3aZaRzupsGU4YZfK?KpP<+I7UILhz${m8t+Mo+Hvgx4Kg}O{%==#WH*V@Y +z#bacVa`|xhlE0Ya^;kVmtn?N_7Na3#D+rB>p9cKfQ`kO6CSM&wc1=nEWtHCYe^}1* +z>nrjrnidVHY;5#`T`SqP9=a64|Ba3+0iVkV-zp0PGMXhcr!jLH@>;Y*(CyY`(|%mQ +zYH{}qF)^_Zzw&k1)o+GGjDNhfyGjtq(Vx(3wz{XAH^iqs{bcK7gx4?Vng35;{bvv +zm~!fZ%XPU_YH#&b%u)3^#ZYmMe?}*IB0*WsVWP6=2kD-N-^%{MmP{!rDV##eRi;*F +zVROnq^qV!(f+}K=j$4gh+Xkf6*VTO`=d(W*Nr1!UA0FhOQkf{bSUxJ`7|rchnij;x +z=ES?#`=4tUMzIuGx46cHk+CutcUUNdJsq8#oX*z%R9jxWd`q2JBT;8D4!)+Hxa!74 +zOZ_O-Xa}V>7AN~ra`zii?7T!oM9$udIW1KYSf;D*)Mu!%QMYGjHM(+4EiD;sYISbD +zNf^a#cP>6%*S8->!muN{O#%YMMExIc5q}l=iql;{Hc048;e)I5^H!r{W3P`?H)yuu +zWN;hr{mH@_I6NsD#W3)EN?B}#MHR#~xIR;+$z`eNM4JD3?#F-b0=v+e`rW;54psH7 +zDA+vhu=E?=O>q8%6%?|S7ePg4q8LjdFxlXFW@6mVZgwQ8BUNtcc)2%$i(BQV6u?hG +z#HgG-JPhlpTcyo5b#dVec)FTHoA1B6x*}q;fI>y}i6El?qPuZr5l=8qzF57LR0r-3 +zM%-UThD23}_q%uRT!`5XfP3Ta;UT57stPgVOn=3-!nw6e6SB}D*qyh2QU=F7#_o8h +ztbgRO>c>|s$0`2mYRK^4FS`eAp)}Ho%J`eHJpp`BLUMAlzynJa?9$xFr@754;BLs! +zF%22hPpT>NY;aH>i^$#Fyij`fhg~YWDm1{_npq8c0-RavvKbo(2M0@Z0!pkuDl_-^ +zb`B06?1pX8c-nCI+mT7HQ5i-kwD#C>EzkIhfJ?<~9u9}ehZ2dnvK2>2{e-VPKdnBy +zF%9=y#;VU)o|vb;<;dSQY;rBNTc^e~lB1%j+jXAGnw~A%>h6`<=4-!Gl!6HI%UxG* +zovwF3Ra8`L-JWe8Z*Q9yI8NH~HeXW}5=fr~VNq=Mo{-M(UKv3$VR`09a^t6n8Ah8D2S7M +zi_|1m?hNS{dIH6MzG$|}`9A!8UJuKaaJZ=IT$$!i3wv*~v8Ao&_PRQa$wL&FI}1__ +z9*^nR?Ch+`0++!BEK^7PITiw033z_$nq?q_Ud_(U(P2WdLRSb=en)dKb&UasJ+;sH)JkKE(X{^TCyr~%=` +zB$euy`T~1}ZW#4FEgwb5ac?{im$YSTIGwBa>Tpg#jLqmcD@J)B9;L>s%`cYXQ!MNi +zpZ$_tW|HhcBCi!CKB%;NDJCYy%*(4$Q7d$uE5fXVvrmGbWoco-rmGC7f@zZ1-Z5+j +zEn3ks`E{hd46|0;WEGRNgrGCvF)z`NEfuxGTc_{u1+O`r!G$E*DZ<7aRB>F;5j$lp +zl26{N@vr$Q|Efdeeb__$FvvmBtNu+V>(3`@tDD9+s6TmnNl +z82q#S-~D)IAWUv`rCW0bftFu@Dwf5^HXh0&dv9j_;Ug*^4;|U$Nq6KOp*f@j>*aag +zcE0v^92ixM7PBgW-)to+yBp&iBkvMwM7&}cMqW!_|Bv&0;5Sek1xT>vK_7nVHF7#& +zZQI$~@9<}KU@;kXN@H7w@<Cy6DdV +zBiCzmE^Ki-)VR3ZpQ`w6hMy_q@k0@G%cZ8syQ~NcLH)8Hb^AuTXBp<0!1K;C62vc$ihrwk`I;5DvE02$lYcCzr +z|9-zXogkZrBDj`aod)6}R`8@CA0fPa7d?zkIPP`ue_6!{qk%wwGX!BBTD=0Yp5<=YU3=AE%~aTUZT8 +zkd>XiUI4p3fGu0ZhnG0P)6|qsTVKE8Eac477d?CEAFtn0ReyN?L5B +zI?r7fahoF^$g_CLx)fgD-cJ2eKws1VDfzEC`_o+tY}7&l3PXsXd$wQy_-dV5Xd3F# +zK6VlabS8SgmmlrCp51C}?=V7=W?>;HBLqr*?OWRFZrh;l3iQbTNW6-BP>-w;$DG$Xg6JPw$$Wht +z&-&5kpC_ycRiR8^_NClvO_d%M%@)z;$BQn3<|-IrhqF=It*tUcV)SG~kibL%{4KTR +z2WWn6ZLJq5GT<_wdZd}&f8{p*;G7k+bzwB9;`OD_NsF3K5pZXQKWQV8PgnYO=YT$i +zj)^_{Mo5sr9isHh$z;P8|0r=Hx+NjL?-}!>0p@g=*}v%N_#d%Of9pV>zxfv}TqtxHrP-@Bne*?>7dz +zy6;MV(WKySX$X|y5OnB2`0p6#xbUK6_rAqrck?u44NYcl~?#>a6S_39f=gl +z?Dndv1pW>hIBtTJ3~2DirG6)d{axWKS~NJFs69eNVQZ;E9HLq#848qC;|tLDu6Y(V +zHmZWLJt3bY(W_}S8k3--Bz}t3a% +zUKUtR2c2J9(lg3;u$H46`i1<8|BG4|mikQnn5s|&aCT_C2g~1368LY>otxliCW|U~ +zU&Fq`+PXiS0nOe8Sr-`^gVT-)Trblo_`=rw$;M4jC~vqYjo@$|%#(=CtJUBqEx7H8 +zuP9^!k~K%`;)z~;=7MEjG^iwpRsLr0lV}uv(#^u>pKeS6sjaQ8zQ7Pbh8qzEM`cvX +z+|yPRQh}cIL=s#O?u090euWKux07kjMg7sscGh3@7umG>j>u%zU|D>000DeT@;EXw +zk~ySl)*#RL_DdEIwmye*-;MCOys>r)aDTQOF*G!^U*C3B5n|!%%*li{03%W|XZcD>ql&ndDdjxW?#yS~#jubUdlWy6 +zS?vPa_YllV@rs58wn%x>ynT<$nD`-DAw=ao=lL$@ggQoM-HfwTBEu(MLKw3wjqO{M +zob4J`8}WA~EG!$CA8^9BBu!1BS7I*(cHHQ-Rc-gj%!p2|oqP%b=Yn%=3!<;_l`oEj53&<%>>CN=uAY*k8Kf$ +zo_&lh_!&?#RIcENSg#E{)Gc5F#CkNbs1!!pwwA$vW3PQrowcBgkcKstdM}$xmjIR)r48cf@1RkvnB5O9xoFn +z5~g;z*L_&V$n@bAnbL1YS_psj>Cd_?qNW{n9qae;va{24!O@llKtbEgII|#P^W4je +z2-otB7}yvwVz09edXOQDbOa&%GBPcF+=+x`iu&D0nb9EcUUfI6c$1?akjShz2d2~R +zo8;Q8!rmI8Sb*^tWUk=wb5`|=*R_-kFwrtT+4jeK8@UraQmEGlUggK>`|4!1A#*4I<2@5Lfqei +zx6L>uv{p>Z_HyrePAyZ1b0qSkbNsIVWZR{%gH5)X12{;M>SX*1Soewp>od2%!{L}e +zfzg_Sn%wLS7^En2xcdC>234BDt+$6QS@t6b&AH;+AQT8L=F!F-#o3?ro?dpy8!p}j +z!apc^ZcylZ#C#rc3t}Qy+c9f|!Rza5uu2RiGO1uGv3OYu95uJ6$?X{!vz;cg{lvG; +zlD?xPgFf$NFsd}GL&xx(Zon7>StZQ!hC%3zBaZAxXsXYzJgb~ +zaspmvetTnMBwSr7nWz$-T*EmI0x|I3FN{S@yK>Q<>C6|U03}$Ae+JHPgP?%Q*1 +zQ(owE^(>72v;J(IRJ$1z<;eIoj|V~^;agdRLl*BZMR*sBnUM=5VmC`JSaBlP^YM+K +z1~e#iTQ-hL|GN*~NJo+hmLVcF7eb5a6-J}CRiyY!gd&A3>T){W!px?Y*UcX9O944yFpSQ+XwQv6&Y9tLS= +z`*0iAyYp>9S70XRp^}Kjsm2T`fy+{=iOS2HYhNED^uCJiq$z}x1-td-M39Lr45OeC +z3@xPV!Vk1xZA?ZdE-&j-L<8>BT-$Z6IYlg~9>V)y@$BHzZ9luHulIySeCc);r4z!1 +zqK%X(nYhu#@Y1ldf6osA&kmjIu~EqbDJ2l~`ZvH_cZhuBaqPl2F3pPG5QF}%Q8W8* +z_#A8F)ZigmXb(DzfWXcv5$cz2q2TBj| +zs3L?ww&G1sv0EPMuWaC76SYN}gI+Tfah18%EL3U}6} +zrYSz1smE=f$G9;CS!)g8tYNf1TD4h~!6UkD^ZdNxzEVaj&VfTRc&*#HT%Di4wzLh) +zeegvvKyV*Ecb^EAB%)4$a3h=I4b21(rLzA7?A)fN1+yPW6~*k}^W>kt=A-^AoKA6* +zxE_nRw);u^rfAYPk*AY{36C#BvyUE_TK{`2AXw#$=#BJ_#Q$0$H6$oyq3IUV%20l5 +zxVq~7v$FCRe*$ZJeF=g8(ute-EG*GWYId3_g}*nA(R#VQIg`VdOP0r-%s=B-{UjPV$l28SAiU +zaLF-@H@+KvHC{QDSj^#hTQtxLQ0e4x{qGU@w%Rn_S#AjzFA39m!PyX%K;(oQtgm{a +zFI0pyp(k_g|J))vg%AG@kuHk@vWNKN`=M6vI!BzL`sHhV0p~5bkiDKIJwl<|Fl8Pu +zTfOKu3?FLIH;AbM6TF{arC%xs+$Vna6@(vv#*_1?0^)>4xT5o1h5ZwCl3RVadtTZ5 +z+yG|y9~3Kv?e4Wm#%wLx4402Sf+#Rma~f1FrP&sDj)S$sF8fXll +z|2Mxgh5z{E&JD6DSdp&@+P+9v6S3O(NMmj+Nm@vCD-wF&85i)liL&T``mi)musJ>z +zrc?F#2NrV1?a#uTpey4yDRp%=IPa7A#-V6fpK+KI;Hd6*BA`e(+$Qlo!h3odZ4)~? +zR+&R)HN%kwA29yd$Ow+1*LE`Rhkz@IiLE~Lhf@K~w_CC9#^Tu`wa99+e{q*$Ka-0FtLy2YD@6m^LGJ +zG!7bC@|!~C;(EdJgLS17arzU9cq1lB8CCBwrQg(ibu&u))X>=Yr}zRhIBm|RRuFf! +z9a3YKLu;WIkxidbrRjXW^*b7&PZH`v_l_P{bW?j(JZtt5=!#ZR0|@&>82zWj{H#$# +zpE?t2A_F*kX=(@i)uD)}A0WO_76*jJfRWvMpw*+ATv|j!bB-N9QxIe=flVP#5|!!V +zjoeQ2HGTvE^!X6oHBrkJw9Pf_Ib`9vJ{^#vgJKup0EV|2UakAocb?e*EAqtq>@*nsK>h +z&K8&l#=ueqxJ+ACVw0IXWq4cK-VbCLm@`(r_V1cHG!8uUz(VQbR9bq^eDJR@szJx| +z4{Ao1`Jb=)gU%YU()3@O(vjaJ!{Iw)Ibve2`&od_3EN8MBa2y^Xr_^BfRLN2c`3El +z{7v~~K~>brVAlBZ_WzxBzb4=MaM*2u$+8yyV3A&YFs_1+#LyKk4b2yO+E*UY-lBom +zOha-ncE?^f{)v1|I~hs+xP~@<5cQks#`-m;AdAtegz~7aws!i%{am|$Ag&7Ps3#Pv +z-`v9g(XFt9&BDH~wY{}9E4@yi1}yUVt-N%>=Lyg?jSK%JvQW=Ob*RQZ5|!gzS9YzG +ztz27qqtgdHwm{i}f_pa>RUGLzA$c|24aPI&s!)OUh}@4XV3Rj|>H(^sTVq%-(V5Sk +zhI+Se+Mk~UK*m9-p0n9%>Vx#F^e$;GxFYQeH!O}!?X5n6tyO_z%8C>qn-QAnG@hs> +zJ|KG~_6D+5Z5iw0xkFZbTC;;FrljG@1HgXoSdX8h&5@?MV$hY-Z@Jxw!jbB-oD_Jz +z33#sGR7oKKVbId`*>r=y3IiS(11K9IwMi4 +zxK4gOXa9aW^?IUT9PCL^a_2yV#^#(|27k%S5=+Ybp-@FG!Z5WT?=Dyk?0ILKCQ)Q2uk10dDP;&} +z(f~HKmD(4Olbcj|@_$TCtg0VolYI#E%(rm0HHik~41CXeWuQEL-ROlqP(}D*4z7hq~&&87t^joVI*8L9-Uw~(5K)1OL6Xwz<35`j4NH}yir=t%E +zog!}$!QiL@ueJA{HVIJHTzML{cj!{m{bC+}^?*wGwAu{DPw#Zu9~}2%f)vouRPfFh +zIdwFJJg!cwXK{hf;#1-$Nc0*U^FFv>NWQz9F}DU;ca4kOu7#XFf{c}G+rSG06A5p@ +zCZPCT{;>IprH|!r{nkSC +z?olZW=GNQT$S~K7tS1k>iZ0obLHO0!Ncsd+8@8?MOoVzx;<1p)Pp=j@ux!5eUO^yK +z{X9XwK+1oM +zb^VC^#alQZ#|O;G9bb>pZ7+fp1Vg{1+KRRR&QFy-6@j~oa=Ajl!{=HiFclN*(f5(uOC>SIxbM8~=nzP0J63cWJ)Ij+^2#YD3grm9y7>8Jg5qY#KxW@ClU +z7vaYmVa}o|1Uk@ur+^kOoQmqMt!L3Tg +zE-HVyhpL>M(6%m_-ljX_)$P=>G_6Z|lrrBj_2xGA;j-iPwRJ1IC#ba;2ZZ0sl)y#B +zdHg*~z6~zRw|cVIxb=a*`tAy?3Wx_2gA(M7Dokaqdx;Ymu6S?3VAN6R%`^VoQqBqN +z4K*m|r0 +zk&|)LyXfyz_pDs#0!+kxKmKLvUy5$01qoGr_=wygufErgUV;gll;~MqvE*^n7(CO1 +zP@TL_|2R&iZ;DUSLJQ7%IBBOQ_>#t%b&le~)QzLNnM7BeYUtm%OQOyTPJoK^#JqJX +z%?1pL(SrjUq%0{xVp6D@a7J;*m{8OXg&?zs_@~J6cC{`%RkV;pfrQ^#vmZd#c>F|o +zpisWN_aW%2f@mn~KW~7}$Nq1FxP9-U5^JsutjQ_bw9Ap_E05w_{6;On50LwcDj{BZ +ztY78Sc{VHYQ-eUhL(7u7Av*dRkggE4*Zzok@7VaZ>waUubu)x^ul~EP7lA64;BeKu +z9vVzf1v?)^3oNPE*@&GF(7ik2K?{+v9@9KQ#@S87lx+uQDHZ~DusU@0d{MBS`=fN| +zD^uw=B2F8SxR%B5aE79{_|$;K|pf|R(+KoM%{ +zXbnV3ukBKhZWJp`oWWDbUTXsfTzy7vfE{f_Q1FCKlT&y>w>yj&5(R-Y@xJc(uPIuE +ztV(f50yi6OkupY<_`3k|Pj&^I)tPo)PQ(nxpMUc`l+^x>^!EFE1)a~JnOQDDbk>6u +zB%CX}{OxKjM+((OKZHyFeNSO3yrNG-{IorM-9e80yfm!Rd}}BEH_frIN;5%hd82hJ +zxqDnN93b9x;SCy@#r{(dpTGZGd#ohazgfx8E2%S=Xw~``fKJuws$9a +z7eAcrM{_X3fL_uw{0QsRI1dPiM8o*n+r-g7tJ +z)+=GW($|-i#jJ3LAO#-d|FjPh>s@xfXbF@w*VRG2vJ(J}NC8P!# +z#UcD?&sT=eGg(3TGlw^`x(>-4;VHrAw(^j+fhX;hoX&Z13Z-h8T#(9Lew^qaz$6S# +z6)UrgK3z^xLc@kRK7XBw@CSYv1t(54y6oaE1ck~g$Xx!BgSG-jOr6KyrN-;m0k_>K +zjUrb(sA?aet^L#iEg|Pv!WreEH69$$y;u6}^0wDRfE9{!E^Jr=w~6iE1Yj3nsB3O+YRc$XNVK3O +z@zJ-e({qi3b)_y6cs;!qz0IWuvvPN=i71kbeLrne>Mvhpula)BLO=UCHoNr?fPKh_ +ze_6J{bh+#Ov}8>9&GDO=Mh^_um4HV8#ra{-x=<*SwTC8l+ldE$hk6bEh2FP$20#i+ +zHX@Y+rAjDSs;+N5YVa*S1nrq|sYi_@*so6#gQeAXm%kosYi&<5PHI{pVzKZTo=W;Jb@3+7W7QDfSLCrSR*LpP^ +zSR)jAbr`=(UI8anVM-(Z#Fa%6rvBfQBLo@(ctu4#cqr3WAPOP(@?36{m2x^%Z|>Y+ +zQ#Yp^1vb<-yq0p}J}e4_@Vn?qJ=?*y1T~>{Q)>t1dK>^#NF)Bhs-7upj*^%Z^W{L^ +z_G12Tht1)8w%-6yHO23=(et>oW08{dzW@eCaSo?C=QK_}yPflZjnpxGHA#CwmLcW+JxL7Gm=hcS7tPdu7 +zK90FW_YbeyBCX;}&BG5a>#wS~=-Y7n3^XVdah+Ut4S~b^=*G8Q=qg +zx?G2zMTqYh(~HtFa=_;*ekFrn=(^!9Cy4Ou=MQ{gPEnzAG+yH?u&=~lxA8`K#@^Ii= +zETI~iOfu`PHpy-p;!m5oFWz~j*W&4fJK8~5i?!q1RWe#*vtLy|Ihdu=UGnnc!BPhPGZQSXTeZQYwz0|?TFEjBD2FC@JzN!MpcDc +zS{q%JnYHfMVzvX6jh-pVQkvxBM|eHt6z+$YN7@b{bHL4pf2qEHk?IM=`k@Jvm-~&^=d1CMafZbtCY`pl#x&>1W06N1-6&GSr{YT%> +zaO{|^XgUsGcb;4td +zEOAfXhg|>%P=h}IvCQeMDSQQCR{dp;z*g8<7!;C;#)Z!RgH}3`M4?`B!uDABK6FDi +zsVL~~H@46$2r>o%gDEXteOT&!{wYMMXQAIYzQ4am3dylm&$`3+4LG>O$rV)bi&m6;npc}y8Z@IMV~h#O63}ox +z@L?(w0kW{x&HgxQqmdgQTj#CO0x7z9FNJIV(o&2t@ftf0^o}xA-Y@K@FCP@}A)}~i +zOIwY0({GIh{BwDq{}1QWC@%vgh>q>MFaEPAaGg$XT@k-8FE8^}NK3BM!jY^*%uga< +zsAJVeHX}k-+LWUy2kj*3f^U{?$wgT=1mlEaKQuqh2l%^yLGXg#F#i=C6xbZH} +z)Au^+_ai_9(kau?2jVFdZ9zs=wk+n~6{HhZk1xGiBRqPWD$6ElNu&8#3;+@gYg8)F +z#GWt2>}0w?DC4~z^gVR0sRAMRRr8(o?N7&T32%$GzQ3@6WH@tnG#OyY-02CxN!oHx +z)hvatM=NnY&uALzhjw}&*UqUhl%ZLU54;m?5iMui4P1Tt>+u>Nj5|4`@2qmV0M_~KmZ&L+atS#joFGD}og1?)@$KJWtx?mld_kJ~LO +z(5Kg8kCnzPA$yN^7gF(sd&9Y8(6Ip9TAi$`E4LqlMm4?w$n-Pd>GRNax}~w_n<`3@ +z#*!awpmoL~Rm-C_%lU5t>dq7kf~R3U(MB=(pg>|kLWy8xibh=iOMqRng0UmHdu?Rb +z0eyo&g=v7zGp!2QdZ9)0XKZHPib0`a4An{JGA3=A(gZ5?c26cR82a9rH8Y=qDC6AKC|eeGp$Z$21Yj`j1!C={NH28s_4f-+7|2#n&uyQ& +zXt#+-vq5@IuFQ6|I(AbRWxDyLOS{eDSJCIC!$t@U;#bx+p0=MPezmsZTr&tFd$D-# +z70@Uigp{aZ;#1i*BCsVE#GfEXyUW80;VBFZ-JA2sJ6OKJbS=VPDE(4m0lVrXU5z4A +z&iin-Vr#lo4d=qWmanMuD>^l@Bn_$db;nqy9~wW2>%YhC(Etbw|B=$GBZ2@eU~`K_>3 +zcfDY@>*qJLY1*heO^<-izbQHU$tHhd4}|tz$pMIEeUIj=x~?lyW=wF=_3Icu?}Apr +z^);;EHrbY!p?AQR%Lx<2jN?eo->!;p(PwVV0X7G2J`e+-7n}0GD@FWSUbTlmBd&g+ +z^R9v9Gnez=^+ojN%)^Hf)@&Fd1OFeiM9f#gz^n_HV3igd#!19JI6t!Te_)3bnj+8Y +z5zd$2FP-V3Akytg^wYksYyeu(zR>F3C}Ju}cf=Rxjo@sdO$C|MQfBb`KxyLQ4r!@n +zGIX{nbpcN2*YTvO;T5d9kCPxKb0RYiDVar=j$CGCi4M{Z?Mi_tZ4pE+8TD13zvXcF +z^!1`5Eg}-{OMK$GzT8I|IuPWCG$X8ZG@J*7Q#mDPX3{g2_J%++h<&BZ7 +z!MlZ4+%zq)plN}PZ`{&00w=NS5RQ5JWFnyyrCW-G@jI;MW&5e<;mr4+{h(I>0p<}O +z9k7gSyp+(TQ;OWL9jQV`IvSD{a!Zw%l>l65g3ic@g>Qo +zgbmpap3o;*uLmWd`?W|9r$PVkHBGVC$d6USui}j_gp?ffXpq|;&cH}y#K(c&m +zs)2WDh+Kc3J{tT$$mAC%zyYHL68^x?UB_6f_UeS)U_r?_$7zd;cxTJ0=6I;$kc9|D +zp|9nm{>k@ScN)9uU(=3;SM6sg!N+;>SDZT?eEla&x7N8{pyEcrPZmh1UBsl02Pwjc +zr~m-QJE2H7VmQXp+n{L5dI~4x(Zz%kT3J(~C>18#FtrD;S`h+aj*_iwfR>w-m^4xN +zUCk)zvZRPnY)s78?zAb>^(k1tM%&ka^!?mgWLxonI5q(YWfnw-KB@FHk4wt6-#jMS#w1lRm=gBk&j*^jI-r`bx +z`j4p9f+b_{LC%E`p+%+#M_f%w3ZgU1qCR<95G(Y}gy_o0%S(VhIZqIi18E9T_@}hS +z6s|lpA0R9HsL10)z9!8fAVur{h +zY=cxpz4+Iggl4|ICudDZEP}a=(=k5AM)$0%YV@|ft}}sj5q!j!XZr8-w{8Tk(QJ5e +zT3$AxCbV|IjBJ$eeR-{=fL&_0%Gv9e0@N5XEc>*!PMVqb3-oi&Ymy&iZqI?;YiOXTnH{Nx@)tVPM`) +znnS#j4UH$!zsdIb+bH0(>)w=nAJTOz;lEGP_NpGe)Htp^ +zZq6#5UWW(&AsCz$6N97CTzVk_|0auIn#mapgFUZDQ1iY_^f%PcXVg+vjo5O04f5+n +zuau@gMMQM3SLW`S%Vmo>Gmn1k%b57sW4FSbT;mH~H481A4j+TdHICTXs*=8U_e3O( +z%;u)_b^ta54#O$GOdl{E6pKAszoysZatwo+@eaRgAzY=1QpW6zrZd|~FD6NHO;Cl# +z_`d+VTy+xL8X%C@L22>MZ@GT3bH`hhc+Q_r;mTr9+z&f^?Tuit39;5d;Gkyv{Y)4f +z?)w(MAhY@-_w~F1_ZURbY8&UWSTV@NoDv`sx8N^t=Ga~uz;H+kERQ4K6sj%(o*u9l@XM)+ppHoEGw +zHi8}G*f=uEUK$o(AdnX=Ztq|j&gvp^(r-AVnJW8* +zCs{Aif{Ju&{4M%=G+V2u +z3=b`L$bSM=v8*Wzq?q1m|HFirxyT1>H8uCirjnGkkgbH0}U2&Z&!@i1@4sxt~_|ypP<$6*#Zy2_ACN +z_J_Sr{QZeB*0Vy&rq=U;U+(>049T@3OK)_2&d?w%T({a3(_lbQdKj{73pgy))9Yme7QACKSnCztt{I_zWcwdj*3WL$&fh`ewep3(C +zM8$Z_{nTl<$i#d +zX3TWVaSJCCIqg7x7n_QjP)ZAK3{y~0zu$8lwIYt|<=0pDfD6Thhcp#dbW~jq++dB{ +zj0lNqfgKA6a2R1m1K9vI*d5w+6A3;5lClkeMzAik5tou|INDdL`44~%uCIXAS40Lao>hD9&1eH4Y|0gwfwBgpcOjf#dP$U= +zv<{_as>{k(f2rh;XR{|QW9B&d^Zs+#IK`JAEZm53#P~tI9?lDF`YYa##5JfDzW6lq +zvkfc*$ +z$`$q#`Fn%Gnm-Lh#8Hc>RCQA5$!r8u-qOR#viO}$sIrS^Y?dwg6%*O1kbT7fm>^Gh +zkshJs@p4MJ8V+yb{o%W!&Bu$2Q7EJKAKtq%W0eof>`1e@Q<>Yr)>cA0t`-T1h7TU? +zaQJxg3MUX +zrBr;e{E6{%zKb!j_O1ySPmA%|pt>n(Ol}l*gf?M@MQCay+>G>27c+kvs +zCYhbkKcZhPBZ6vc8p8G?*U_t{-r$p$3=DTqBmU*D$!vB%UdWutDt09RR)#VxmbDk& +z0ZTpXVnEiI9iy|`GQ|bw@|ntpy}`o5@;gGl+yL=p3VU&W`^Z3wy$5u^!XfHNw-Dh$>n6V`2KgS^+%3wHL?1UtlnAq7co +zur)4uU{x~Cgdm}79+nrfDE=_v1NidafOjsP)3_6cKvQpA+bP14d*=gMWx8@#gX^sI +zyU6N%D|X#YwZwhaLMR8?r?gUttl~0?4lZxv6&2yMu?F28K%igHoT!NQVY1sA(?M|* +z-wqQbWD;?3u}?1pi%y7jj#r%rhraIR$Gw3$Lv5avr`Dm_f-BcUDJYZifHS;T66PgUL56fW;1!~T*k!fn2 +z4J=c~%~yWHK+p0AMkw#2Z_-$KSHU&RV9Xfeaf|4XH@C>}YaVkMf+$9CBhJj0@wlDGvHBbw3YL1=KR~w`MbEZG+Y`vn5EvG*RG5vTyy^E;A^R^UE?wz +zEi!?2sCw$8BRa4`+&Lh%KforAs9^+5%4Y?XQLiK;h6#ty@wxiC`w6Lh;ACzF_2~c4 +z0th-UvUW$IDmCOdx!_+%f3NAn3m}n%C|}JBb{p6-JdrUU_*KQ`@#O?b;bTzk7O4Vk*c(lvI(}=coQEg2V?x8E%Z=t9tH( +zfX}jIqEsNh!}-YaifhZ$>)T%EZ&3a=GO<$|gsP2h&Ff_R2@jsWTdL5lM->th5=cIY +z&kn8mG!z~_7u`qN;<@S^@OmX%266|__$L0F0-OVE!tpZfe`gPr`+%3sq|PJcexzk= +z>^X%2qRUP@zw^!aW#hge1r@viS>VXslX`#)4J)irZZ +znU%AKvCc`30GZSx-G3%tc5z;hhBn-Wp#-2H>6G8KY{ywUs{9m +z2G+5aQ-|!_@<@LDA5CW&6?ON1eY(3lhED135@{(3QM$WB5Tu5b?rxAyN$Kts1f)y4 +zB-Hyk^Ly6+4KIYXoLTdo6W8ARvvt-*ZBV;vlXvIE{H!gT7t^Yqmbs0DRq;<~z?RIs +z=1+ZKG2ztV_Ju*H9^$SN&@%le_Hf{|kNb{#ub0F0NG+XL(8U0EuURU(*O$(up49H6 +zw#^2M~PRRn-*f+jHpW2OQU!C~fTY24y%S7rsn2>;R@XB~kxd+eo~}$_d-u +zc3)@u_v|h{KBQR$y%l7>F(%zXd?dW7Tn?P@Pk+lO;bIw(#h2$8_f`|&`Xs;DH>(v% +zF{KtKXbU^fs`~i&=meJ=uy|TX!93yIh6t!R(rV5USGFk8*~Ya}f<*z~;`SdbudlVl +z96sC)_HrX*xmTOMZgE5{z +zZ?ShGP_4JzafUcucBTAVA2PYV{?ZH39Ya$*;ciST<{=b=GmQ9eqnNnGj;RUCP1XGD +zF+i^E%9duakcKGI3ExPabQL(UB3B`4mURp)xRk5(>8H_k4=C)K{6=^ywXf +zF)b?XSij!=O)@GAr&>WEpUENrf<%OxvO~l;IaaWmBidn5Hj=+F#Jl?QXXM+A41tdI +z4zDjHE8U*Q+CKzn#5^}8vu@I%$}{Zl^yCYoSy@C$+O3pkdvC|XxkK(o_7oOuG-l3D +zh*Rwj{`-%HK#jYn9wzgozp-^BTcaNUVo6>DuM_(fuj#LWu0m#?s9HlYM{ +z+&Q|bFj0?pepov)3bS-^sk^wORM4{^B+YE$#@cMZ-gZWoQ(*kx$Q0v_4Yhj7+ZIlF +zlhSAeEYRsPqsy>^=vo#C|HuqNo9$gW(ySH)loK7^7Tdu4*bL|8|i052M{qs +zuxhGe&sUMp8{pmxce(boJS1p;9|HBXL*uAu%|s+yssmODBl9QJ*m1%iFGPWx38W!9 +zopS~2WB1oHy-!v*ku@@PxZn3kG~W$bp)g4x`;GML;x;iJ%ar$G!v3AnoMcp&H#OR% +zy^Z9fK1WNmXmBV$YfoM&MhuV+T#Vc63RbS+2f4VotgJZ;wU9G;mQk<_sqSGZ9M#B +zP)$p!(EkO2>4PFhkFu@9RKBqK4MiVJKBz=5Dlp<{^Gy3)A*<9}i5|!4Tv=r^>NHSe +zWu!qdn)_(2lNeR?6w#{WZrm +zhbRqQ{X|nxc;(z%2M33S7RN|_c3R#2pM_+%v+nTd>T04pg8NDgc70hn3CfUOVuj^<<{| +zK<-~V&|)}|edR>U7yn6N5Vmi~4#=EWK{FGb#YB+#ZAtgz9lIiXsQH_DZ;`jY_689r +zA=im6f)9DFzhBOIFQH%dMihxasoqIGOzaXQ9Rl&$Y8qH!U>qnfS(Ne!2_1-7H-u+Y +zH;Xg5%B=mx4_6rDgu^~M0_Syqp+>C8*yC?e-7n>u@EAOU@LOloen>v?vW@rFW3L7y +zMA`6xY&;CbF!mRtiXtOVDp=olq~nL1hsRCAdZK59ewXThUN3@rTU;S(OZ?~6o<|7P +zOxtXUqfTS)#bzsB`yk>PB|74D4^{H?I+ipc&PvFd774%Ima?cZ +zmP>Md)o2wbm$|UNCkX>zzt>(@OUn|Y-BmE0Ev?VIFXpE1;>h1Sq^hNB4HA1-7X5)y +zlonnXal&v<2&cpkxxNc;%^J`B>&tHK-erQs*jqFPdrvzGwAEH@Y}V?L&_}TOx2L9m +z7#5ob7FtHFFu`r@9b{kr{sUK(8vb4F)PY46tkU<5IkmD%9LNMj +z8?77!j)uh7*P?p*Z(GY;P#a7&<%j7(P&DTKpB=tZyGmX(kLXVryVbv)#x-+UcKhD~ +zjS3b_k${;)RGN$+2%>f0yL^>$@HO=a`Kx&03o@w5@fL75rR%E3Swa~gJMc^_Y8H7Z +z?gQkNa?W2vRJ*Qi;MdEfx5&54;N@LN-Azvhde&(^t>NQ~g0=6jlInY0I1J6ZozMQpu0w@k|yQ=DJiZC^GZ?ZQMp|fAA#>>&` +z@l9CY)(-=8L2z7f)f0)(2&65t$X(?0;7?lH2-;PR#pj7YKX9mgeS=w4-dpLUdBviP +zZ^&61%pp36LqwB5Xlo(TctnXbJQgIx;{L{nTea@(dR5_Y@Z*@7j^DDcRk#s3BrK5x4k +z;321tDe_XnY4b+!-5=dP(EM@w>HdzS0t-!DsVAREk@w}~xZ(cy%y#<71CoYP&oTLH +zPB86XMN|uC~<(~EAZrJ!Cxy~_8%nLe^&(6u%C3|Ec +zHYVtu1%dci*y~QSR`A?&8AIK@Xna}pqQv++Kw@8gtjL}@@6THyIg@?!93h7Y=EWO*UCj)R>VU;V{w49{VLPBd^je?L0a)sw`$ +zp}*G_$2=M8WxB=wapeS!dC`U}ZV}c9Qrv@9{lH5fi-5zh;t%wB`b~V;>xDNEBWBh> +zhfrdYMnN-%O`+$C^IwRrD@v6&YICENlfT|O3)4d?V?)dX{#HUs4hganbP*K4y^O8= +z_B+9agZiD?*<*TIn*M%#7X>Bij7nJ>Y9ASH!8^uaocJ)evnBKtOjfn2Q@LB}nJ~Yr +zDCi_*^eN%!elnf4%!1Br&lsTv-Arzbax$D8FCG`9)ntzf&a-J_DNn^z*+_3G=P%{r +zL0G~$1y9&R<&t6FQPm*?4{xlLS5q%=*7Vh1=*o9ss`AbLf`F5(o%3hY11iQNRQ>wR +zq?W?4RkhbMOy|ZyK|ES{7D(FKFvU(EyjzfQ` +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 +zw3Eunzbv3krp!mq&rfL`M}~_ +zQOjGiLNrRRi|5eRLc*<$;N8gBrL>yQaqUq85b&=gsLoPa&@t`ikEi+h%+!Y`34^H* +z-&SDs<9Bg?8na9~vD0-GU=cl(X9*tvXyunz2NxANo$FCc_IV`LgWDJAL(-}*+AQgD +z?O!7;X7%mF*fJb2FSS^VspHqt?P*p}=!_D5N3a_)tEH3aE@KJQVYw$TPfhJ2+w?ok +z6&0NwLM83P;jwxdPi448l1l#}%>1oMN*IAQZT{G+p3l{_;xs1u0+P&Go8*+%yMvaaVR +z>H%yYjI(G3q@);geDu`eOmEXQ3N;M-ntr*wJFyRNuMv&aFi_l0r%#x!v>*xS>MIO$ +zuzX}E(JNB5?tGamU6y-xM2PyFdm(MP6Lvm)uqnXx#b*TpPw3urEi8@97l<}#_2on>G` +zB!-iViw|OhAjo}&mR!aTS}zCVlx7jhhUU>~!g&k+K+o~W4APH*Z-Bu$Hbl-S^zt$U +zX#nKR3?p0YPf6DH^-==K_^;1(?m} +zfU{FKz}`1MKYvoGQ%+JCZ5}NC;$ta`tuiB+5xxK4w&&^Ze!D-(Sa8kcHm&FChkO~f +zsQN>a?z*|T3|kLHV%~opwG;$Ny>IugbAoZ-rOZ7DyoYZ@{mSqu&UuiM0?)(xv +zB#=@EYg-3FlGQ3AWL^Sz1RDhm-@QApt*O!b_}k~Bu>4A5wDKhwt~^4aqcBdg#nURi +zm=@gQ;&-d@fNS9J%ir(S_=VegK4By^q${K*%5R}##6#dHfqlE#v<)a#-T7f9+)I#> +zWBUYea4GQ^^L^Z`7avcMw06{w +za^$~EL6)Md;WDKj1}(WtnQ|^;bclpzol!n%IjSOVShh}~jC<;adh%xzIMI0;MZlDh +z&nG*h`}Il;)}4t?d%99y*my*E6~y$HbgJ7rs<~l1S+@rEB;FD3)1v7TSA&Exw|>M& +z4KVY1R&m +zgbSCc#!P&g%Jm;@{(rC-!#^ou9wv$+J0_XJTJpW^pDuiqaXPF_?yhyjH=EnAtGKSV +zif=yKa0Xf2m92ov;o+g`23i!9lT9kv6YETBm_<(Xl1-U4H#{&43Vqw{?-ib~839EC +zv_&UM9j({N^R3?epPseed-zKwdemw=T1FQ%H8#$h4d@VRk*`J))Jc00OH9W0gr1(B +zPKFFYzbP6X^d><4i>ihNqa}zpgWuJ?K41j!+)=1Ghy54Sv#8Ju$ +zrSGg>F-SySydoI9#%#{rW&7-D^zy_dj~sPbo(W!89gJX`L9n&qb;(dT{!i2VPdV^n +zjshBr*eX9p3c}6FoTz`@X1|Nn@#P1E6*fbpnzRfWRvisOp##t95Dr=g&4049vUajl +zX1g3)BuV;32_xygbElY? +zJLSA%B#Q?5XIX1$?ur*O>F`Hj*sR?r_EVOQk%qeXlQD>fR@7(mjZ01?sf?4=BsIeD +z>C_CP7@B<VG1Isr%yNHJYUhtJqPmP7%eZ>}Hv +zf!Ur5+zDMXiSTecXV1}XJEBDUA{wPdQtblpkFC`X;_140@WK_1qm)bRJe7XuxVruY +z&*sKL_`)1vgBEAFY)Pyz$A>H1=)`ai0(rXrPE4@f$Sjl3i=*Z&OY_TGRWGr20C>E9C?e +zt7bd)&X*N6!!3R>muYHcLoU3fXmaVu`v{|7h!q=@9o3CDn_(A}oXgzG>lw5&M)v}d +z4}d!7`t-8eQT +z_>G~#8UEPK(SVaT#-O5AwP3%;tyNKOIs@0_4y0Tf3&s*e+os4$#ADcWau?)61I5M& +zRBwjYsNLnrhOX+s^(j$fc}R7HLSC75ub +z)b?sIWAq;p`Mb2}7|TUw>=GrsK~YjFaEl^=HjvXqUGIdH1K^a0zVg8q-Nm*{xD2kHik*?+Nq@i2NA`8&ay +zdAwi^DFnehDL%44l*ZukmjQu7STBgXEKtYJo6J^7|6QkdO=YGlqJ~D?A*N;``WH;b(^VU?}Mq3Rniea9y|ND60Bu +z*rk|;9QyT~=D=Lz$)xXmx5Eg^`m>Ul@e8G6lcXvaT2mn-Y7WPd9MJUi?90&a +zI5ml@i4Jk@Z-{)-fnSh<9~tqta&S}u +zxT+DO1&e8h6`eNAo$r7cC033xzXaHjp!Lc6r~o}-suxFN$zQbCnV-(-s{pIIF;xZ; +zR=A(akFRKt{xpAZ-RtiyIfUqz{z?wOQyg2dLg=640fe2u6X00xGiN?n<5!fHX;fDe +ztbcVYe%W-djQFEj<~0RYjt9J5k77wI!L5Hclex^$R}$A9`U6|ea*8zy*~21*fVq;y +zaA>nGX5IvC3epgm8o&aDSWtwR^k`_Fy%PVI5WG;~@U_H%1RY^nK+G;TXQA;wuu{hm +zM-GY`+3jnZk@_J_rxO-}ukxm^!G-W4MeNXh!&3gFDr}KMBiCcDR5d*d=zo$HFVe_% +z@JXEdQEHWcdNoYY{`W94ObR0JhHELrhJ`b>Jfn78ZpJOD@`f>RKCd3rmp&W3W&!@q +zgu7r~qK@;yOE?JRY%7q{og@TH&#>e;k~Rpfx}^FT;VLVe!s;8ayc1Feffop2aXOzv +zRZ}p3*9-fJtOQE_FlroBm}GTrBNHrn5yNzZ9lu*p<0k@5qm2WCxZLtG +zum?bOSAYD7(VLJKsC+*|x7(ocff!@!4)8Xsz^X;xh(pGS*UP||#138zqGVsUECZKr +zo|41t+aRkh9GiA3(4u6*$LeJNG}y#Q$)!{?((!Bw`Z&^ErxpDhhX%KH({$5A^g1-o +z-$ZuF!uS}QKtX)Qc-P;>uyc-PZ)_#|l!UH-RAQCEUbImI&t_BUG(n9dl>7>Gf^`8V +z`$+fB?-q&CT#rO+%hywj7RhF$f(PVl-0KgE}G+M7fcZcoca=X(hzJt>uRoy~34K{OR{De@G5;_*RXQMwShX +zl{Lm0hWF0F{b&o8v|I}}4I?LC$M`i$yY3__q%ZFuWp@w|9qV~8nMvQUhBH#nCa6eHDunt@0fRa&}o`W)}XQh9yOA!a_U+7;Y&63XvEPCVX6z+6)ulOf-r? +zG!4@BshaT=OE9%G&vr3}YA^F-QaI2E?X-l>It2hJXdeG}?2lhvLVgFkAZ3nBD{-rF +z10$B-1HhF-V-&`yZ$}%&X|Q_i(%@GS78I9c6^Hi9p{DL`6X4AP?_8^o>g@-_4-b(v +z{rQfqZ;}#`UD-b5u +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 +zSOq>}e?g(b%t>d@0olMYo=ACmuQ= +ze(*nS7%|EcJMa!xCJuEhzyUX#G}P3pqgr-X=3A<;b*KgYt3p!-)cXq&yX16aQ~;v~MmJ +zT*LCK6`s2odU5oL)zSD27U>as7S1L4vH~!s3KrDrd?3YkQ>&7r%@rJ2f>+ +z)PqdyP-TBj*vg1kgh%S`&r*?)iR;ttF*5&~{s%eP(zlh8{`q$Ofl)}N1VyZEIUZvz +z4l7x@Ldu;R=Z!V#=(EJH8^if_WF~gV2foX9E;php8ZYUY9F)D6#Fj&M@#doc6R>hB +z`YrI;yQu3wIfZ#(CinF6Y6)-0wN-TI8KURURMXA~VHF}q{AxGaL-Jt~3lgZMb>P&5 +zBJPox>bU?XrrBX1-ce2jtV>J0M!24K<6%P72UFr|QGviC-!Us`^TlFA?HHVKu3>f` +z|M|4(_E=`ZOp7Tyzn`3^mz&)IqDqSUGCsBCEQa9WfZU0rO+v8Ms5gWK%}^L~8{iu! +z&)HeYS7s9elmba8y(92UxkLX{hvel1d3YS?3ZIsK`+>w)W0|h}>y0IK;hL%8flc-+ +zL)#|$P_1G@qynN2jOh25Tl$j<#5f25qq0{U1h2ticGTpA+*V~N4#*EYc?bs&IudJ9hEup>i<@Qp{ +z`ich6SwTMecu0(^A>rS^7Z0Fwi0dDi@CK6H)s{&pXRdDbwaO?cLej|vLT2)yNLpRI +z5!lEHACU0WojT1G7+t&J_P#5k_2OP4XOsaQr{fU>vF<@SKKm2V%%BbA`CNKW5AM}5 +zQTG9eK34wmRt^y-PSmc8>_(4Bd1Ylw?}iSlGhZL+TBylR{Fl>8=*JKd#?&mLL;p$l +zC`Z*xyGbs4$us{?gjUT!~?_glHFWslX4+ +zP{A6$w;cC?LtT9+Ne($92jdG&+Ign~+a4 +zIy_{**9rncB>(7gxPrR}3P>ltEMcQQKAkBog6!$RMrpIJY7)t66Hsz4^ap{%Efbba!XvZXWh@bD%bcn{ +z7C08mpVZ}hn6>=W3KWHsN3E~wAZmm7BK$VWFCxFYjPo@spwjOk^Mn&iZufU2`|@Qf +zyq(V2bf|_mOY~oXU-@8aH+TG2>=41}qm?ytHy=xo?f;|cEWD!n-Y!lK-8~4>-7vra +zA~7J{AR$Og2qK|?(lvB~}}w +zZK2H=@1F!#e2eVji(x9a&tRL^e85E^JWUr7DwNpOHXq7Wft_gOo+}%3ywbT;HAS5v +zm03wZ;q;C~axkTmqg`5t`Nb7OkGIS?7!0HW?%r4az;-1H7jbc1=gV6rb%veu`koJEM`4jq0{ +zLicwfRTY*XBl`p(3AdworLF#kv91m0@ZUw{m`^+OC2Ky1TqTHkTH!k&C| +z4r5z*vEAQ=kC(F9z8s}izs}Xswe#|E>xU0d$)1}L#{1)kV!~)0TUsYDjA8%9yhZrl +zYU(qJeY=H;EAnmR5TsHL#PoA7xtklW1Bnytx+%7=z5?#?s}Ar0{rej5@2k@8vy$$k +z!o}y9?7n|{?U2AC5dyUVn!|H*6WLbRnXBZzD{rxa0 +zg!CP2_fIH`6nDjdy|%6WIFsmIpnR@qT5b7vw8@BrpIFfga2hVfN-HghbhQw>kQ_c= +zLqoqB@>REf=tfR-YR*~@Woj+{cVe?C*G~x?c9cZ_@u(*Xl^bN~e@YmV6)Tjmdk}e1 +zvwAEceAC^!bL9&thtyP_rrijJJ8C4IJu~|c*FVU={z|y-YMEYCx4u9RE~&ydDb#)Q +z8xLVuDvZ^K1x@rLLI2{eqYMfJ2u&0`K{?u&sp2Ou#v+ZKxD!r?o+xv9g|ehbCnB-f +zOidQuvFUowKz*O9HShO*?wL{1sn@4+wyP?0&%Ol8c04&`DTPt&-Duk_{w~+-w&9Lo +z$P3PT*)rLlOIL|`_Y7N=g3J+M%l;8me}{_MiigSXUAvqvhq}YnxP0Kd3d17VwwiH~ +z!w2-MS6_w!EyW+4)GvYXI1Z;F;GT(kkikCuLiRkZhJ*kF=RQ|4@C(FxtUt9^ZVh3!d!D(9tRr=Vh4d0WR)w){YQZQWF?DN^>| +ziQ-2*ZFKpPe4+B?kUYm#VI;kd*+{_t{@@CB*xg&X(26eP1@K#T?f|VPd{6ni`~${F +zqk2iUFXqPjMJMa85%cPm&dfzpOC-`ifoT{dSt4s0#Lq{C43y0C)AonA)_%=@N6LFi +zmZBYM`~Tz<%3tOAJu10N&aaPQfA6?sy7ykqKvb|nuHyFAAezL_QKw4o8>dJ%4WsZ! +z{eOe3@q9XEHo~EPo(9En60Jgseijl?trhI))o7y|XDejgeOB}0y#ceuZJ^wwQYAs`J?f7B +zXZ_fwr>vhbBun!(u*W^{N_gOagYuR?3b^~%{rz3>OFS`AT<7Tyj@4p;1Y0Ys9a|&22ugP +zw0UV0&<1BcWkCJr0`&Z!YCot)`vUX@sFON&0*QVycRHPKLbGuR#zZ{M>xy?t(Sw+m +z$E;0Lo)Q~O!w=s7bQOB+KkPKpj71+#gI2oFXobjp^8i`}c`%K8%0d=mz55K#7{AF0 +z1ZUhw&H-)*U4xz#xIYpy<}4k2@S|9%Y>$#ACvH?#td*>9-&j@fI8C`q>*(}M|A9F- +z1R{Gl^wxW#t+RjX=(;0*CiKY8p0bbw6_@iHHSq870%T8)6&884kzFN$o*ciET!Oc& +zt7`?mH1gs#kvHxn-!+g^Z%r^a3{vvgp?nE=DZ3N-f-O%UzkOIEE{rJ=3m_fhXmk6$ +z7fn>2dX!O%jZy^E4iRXj-Ef>I#;?cOxB8=R5QkLUoca-eUwvs$IJJN-7tLB?PLpoR +zyL^+!wHgR>-f)GGc#yTuY{&~(@_xy%k^4~+<+Pbn_CsOOVJ-;Qnj24)qQL@4N>A_v +zD}Rp8Vg<{lbHZpz8UrUSwU&i5lS=#A3tXYyUNXCsUpS)vVHOX+c=3Xs>ov@qQfwt} +zjj`p~@F-09!}=s4e$6?v4NWx(jjri~T;Nsv@0kZv>b~^xC;iGKH|sGGM^SMQK|Gdm +zxc+hq;&#FWO~8g)(!Qk`mo?r-Y95@Mn~PtWlK4wa?t8)U_H}oHYm^8nfkOA`q_shf}EoV6ob#Tr=A9E61XXH}VLFvBi2 +zi}apLX-pT(Gi3`C#lAx0>)wrV^z +zeL1ccN?)S(Q4T)|S@XZ#Z`Lv$jr_Y7LSky~%?Bt^DDMnAPGLqc`P{~=Up723#ZLf< +zPa>KaBWkkytSHmMx(!pdbe@JRwZokG_aB?%UlJM9yyR@OO+6%1hcW11nJWx7jBExYn6rdhlKfZ2_E`9`p +zTow7QbxLd~T3uJ(g9dc8Y!34=r>pad=kS&|o$I}!hva{`B(^o4=r5R<{zK>Lz*-YY +zB#?=?0Is%uASIjucl86^_Z32z@T(a1-Dg*T&%4B}^v0pFT#7g`5LeSW*k6%2$JIX9 +zgL&jd^c8n+Z7{O(8bje&5HOAYf+X9swCx;?>^X&xGv^e8$$~|@1HV5U{rox5EP(z% +zVzR}t#q?3jF9DaIu`h^|;*ozXwvTOo0ab +z`rh-5#|QcWEG-C*mbKTTDG`rV?nx58iMOD?Y^L|)89jJdMu3_~=Tn+)K>wlHmWwar +zY*LYAtcvOl*T!xq*p@s{Of*Jd6=kv9gmYcLRomeKoRGJUcU^NhI*6=go(|vNPMGxH +zb4dNLR7H}3>|WUQPbq{R>@A!hjrl{z+bEk3(dvJ#bY`Q@HL0sa+FvqSy*}6&tSK_a +z?-6|KfrKwPJjd-0-p(gr&gYi7U)fMI_h^Jbc2XoB?KNE7XENz$6=s*^^=EL?x--ob +zcs$NNWLzA0d%QAsQ4&+3-W)nj8l>D5jQEQ$9Qid^8-0|;b3FCun~rnTW&&(^H^7!O +zbO+A&C3VpU^W1fkkqF#W0TA^uuku;Uw@OciyzVf`&r?&0oAX6Zk{s0J%Aw-ggXOITkeA7jM0 +zwy+-_3(U;Jy$*fRzlE6?2qQ548%r+{Ra#oAfW8-srY-)jS*|*vLZcu8LQGoCf2@Q{ +z|L#BbA$Ib`cA`YTRN7gR`ugdhAUCj_P_o7&9SXd5+R7pD+L3Y}PsO4f<2|E|tU8w5 +z6;b+oyc;R;O~hFY+T`_;%jJhH;?7|@TmW&&UrJQ<`~W7dc~}>OLnNMKq3wE8H!MMV +z+o3+*W+2L0cA`aA;((BBWGNVC-Sa>T!w}f(IC`lVs8>{Oq#zZ|zcBA~r1LpImskTd +z8+SijjTmn`B6xn)OGXvbPib4S?_KhneP`z8V%cNH=_P!(H~#S*t&5%dD4ia|$ntII +zio9Arju6=)za75xOeCsgNy|$I!8YA+%q1c)#hzdJ*_V>dj2y +zDY12dd^Alj`$rD;Bzbd3BLt!xSCK3dB&W%*lyLP!gNQ6LrJ6iS<;mf=xbH9bwIuqpvagfms-5MtKld}P;fOL5 +z3DV6R0+?JFRul{tc%!GX-8kJYkOaw8BFp^tN3=gfX0DU*Jv03e3=N~i%QJq5(zJHG(~t9!_2;<0OT1^nLa0#U@HN~NvVZ2CH +zeYkD}MQQ9M+0Bq+0R%z{8mX(3QqmJd$h4`$J&6kO{ni4z3-q-S-K`JKio&RaAssqB +zZM2qrr3))6WVS-ZE +z|8^fg7ISC@yJe8-dg}<~UtV5*&>a(J!BvS;QTMsRmLaIr +zpDKR4uWG8KYiX$pN``nCa(^XkzV_J*O;DV9o2OV9#4RM>Zct|b^2OSE&|rDF2`l=k +zSP|F^8)#Z}$2l*T-;akluPk_1ZNvP6LpmNp#~^5qWL(=aujJ=!J#b}ZqOEorbcjKY +z|5Sc$H4-uvdPSJX{gr~OXQHr#klWi>~^XMH`v%`u6}M`L+DSN?^7%H3G_=&p8BMn-lMg!LV`e@j-W2BEbZmbuU&krl;S +zVZ@M8IDdV_cps|slJR1xK?sbG9yI}0EYM8P&r0$_q+Yk*l==uh*KtB?8I3%?)IAo9S5}oE=VECM_>Z8kgDT^Ly8ac%u%mqs)484j>3-56vt)vfnKI4E^;@BHik_P?rkLYi?l_y)(U^aBm{4eBA3X{GEMBMFsv`|7uKdC +zX!99WNfLMtq;dGJwe6es@u!3qNl~v2enU5|nJD5)KD=7hqP=CG99nvmXsTAVMT(da +z53=W;hSs>8oM5U~Ob!sVWXMIbFn_CRgU4njGf3^SFzi{*AY&w?zdwa6_ZO{c637PF +z8oXs~dd(s=g`a%+ngN=`CO)VabWJQ$@hzy?C^lGIWjWZM=$+8kN}bfgR^uxg@p>=L +ze24ZR;}2az@J~;ZWlRPp?f-);3VDm%C>W +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 +z+FT*BQcmuF8=Ld~SKeSorD +zdCl}tHk%oKlRK`2^V3O_=Mg*sG5z4b<` +ztg1r)%gQ#(j06$rO190mx!Bna(HBa#-oOXI(MWf||HNQ%3z(=zKx%YKpRk~q%N>Va +zU0eRxO}zq+D|vpAN78T%D$sX9GXU*u111cO<~nBmJC;n*4N$Zv0EWmm+_+vPUATH+ +z!Uvc&25h4$?`})x5BaBmV~5VZ-IjaS-0<<^$NuV`n>D5&k6N9VtZ&8#O7tE8C*5fz +zFIbOYZYVR6wh;MKBUNxkrcstC;M8q{Cb~%InI!9SvTpvVramV+m?Lx)q-K+j7;Q8l +zR&hr;v>X3|@5*p=o5Qg6SC1w@-}baBWS@}*quLV|97ewifW?)U%o0zQ?zYiM$JR$P#U*GaYUkk2H6{W`CacnfV&VJU{&83OPRjb`XHQrRW!ufv~fSA2b-Q%f0 +z(f52@NHdy`5nrs@v>=S4)MHse6_wM-yzSYHmqY|J$<-gtT}=JkxLJQrc<#6VH8GM| +zs>?KrI-H5wu0SH=^1o(PhO&s9vV;E<;@nJG&XdnCOrANmAm!7Kz^&j1~jE%K=JW%wp|`t +zTN&0O@o5EoTF`-PW7ZqxP&$xKpBv^h}U3 +z{q>JTK|RfW!S$4#$fI9SG8LL^`5ZY!=z*lnhb>U%Y|;Bp*Y11H&AO9I_%V2PxxS5c +zIrOviq-yKNnj=Z7F`6Xk#Z1*<$oj=#0HfaoKMDHx)URU{I@M``nDwq(9(p +zH{gwqyRpw{7Wwe?Q^?w+P0TqOw-=vV)Ee@m1#9@$J!z$A^j2sWeT@)dG3= +z6*L0R94dFSQv=AQYR*2a`qS&Hw_$`3?LL#|5idjr;?YE__=4ifOR(H43XW-z*Py8R +zK%<24w7PMuLuFC5ck^WBer@7liD8HISmt4vl)3B5WQH?#?qUYMEa85S$**O983b4E +zPR79o+%B_&HH!HQvrKvc-}W!ISv_7hCFU_m3;Tk33i=2A9wN%cQ@|oCPZ_GSn`XF$ +z9TLBi{0A?zrLDE!Sk|ea#iM&rW}@ZrPln-q6S_$V!cGc9C(M4{N@EPqF3FpQy-AZS +zMJyGN&g~v56Lc!^FQ^RZMapmaP0lO!e2`iNhQqQut%Ch#LkicGa*}-fzgOS(Ae3K_ +z_A2t2`ia7tz2UZD7P@JJKX6|i466G-hN5`mgO=n*MJMXOz +zF4CQnfjEL>xHRmLL6FQ}BfMp7S_nt8t_|&1Wh>X;1g38Yb +zcBV|kmzFKrsvx8M6v?d;MDH{v324qV?jr)Oa9TYN?)S9=oJ4-4YF!P&)A7V#WXy9AMm%NKk>8BeH1oj3A_=WrHjbXIuEW`ZQxb{ +zYsY_JYtLxK!I~FhO-81htH={ipCg=+6oLtXbbZ2$BN;Rn17t6)(*G1g0JiP3@w=HH +zz)9G+n?ukABAgTFwzNv)2`mii+Ay8}9Hnxhm()9F`ugFaU*dS#7`n@joXITTFtfRd +zz>LN;oOezqCj&W)6iS6}{TPn|KQQ1xYUigeBS&T6(@Vt9Y5w~&7}Twlj9Dl$h_UUE +zVt-;=fJn;7w56w~f3)!7Dx8h>)t5YE$w5?#gE(1~N;SbJ)Q>M080q~8sj}eI;=9bv +zLRF?9{qQw#!ISOZZP0vn=(aQ%i9trB%Bd*qv^6ztCOVlv*A)E}LQW}4ujo%rn04R< +z;pzCY(_D~nGiy9=r)6n6?!J|kYgNEwH;&%SThEBf`R$+r6~IBM>H&bJ2NK32$V&ch +z#GmJ?c4|e3mE?&D*s75$jI?nhDYI}AtOXN_da_J6Qu1|n(nO8&>5u7gN~BIHn87g@ +zyw~8{x$HG=_wfCR{0LX6wd*6@f!bQQFSOwjsJ2R80<+nCC(X320@F0@Cq-c9UZ_O(vIO +z650V#ozRqG=mIz?FwN)X=DNsrrgOK4vw1p9R)m{?Ha@qze?EgvVYW<|Vp3k?0|r?w +zhkM^hf6RvER(d0MUpYK2v#i%6zBus~X|i^@l;}E*g*zE4kHZO-!_)+d@b9>k(%>2HrdY}4t +zu7_LMfhgL4tQ$XW#vprvPxt<0Z(9RrD=e<`WOAa9|SWdA@Svg3PU#wzdco<*-hTndm7q +zC2WaQHS2GrfrNu|#i2{DB;nCiW!g)+%%9W@9PrZ49+0RR)-QP=WIg>{1&xv?FPLmg +zM|4E|BQvmYxL`fhd+y&2r|G&}bZ+uBZ-T9H&pjt`nF5~@rGf5tHIZl~Hqh|o#7&B8 +z+UoG3Fs09CsL(@zX*niDrk+et>SO&>T`&nR-AQ>MiUmR3>S2B47zedwtO +zu?I7+#1#jN&d~koc4?DgDJ9Q;cL?l+Zdf*w@F5s$u|aSYazwB<0I4xLl!w!1U(_~a +zyynx+n6P(R)P*hn1wHGvM+z}oV!;%UA +zPmtl9L1RQ9*Mp2q^%J}_Pk@219eg(2zd;;#pMf5Uurv<=+u(R4U!+RNmtOMEN$>)X^Lt34$-8Qe*%Jx?I +zNB_k?caB(gV~&Y5^#?oh6BJfgENp)`h>BuD>?sSm9Fvt8v{XunBEiz(B_vS_(yXGp +zR0Jz>yp8!;=RPdO7~co*q9ko`j{zPwf;Li^HsX4kH$<{H+^NdMUW1;QX}D%`Ek<%T +znCAKWh9&S}%E*4Yjw^E!<8upG=#RBBpLDn6NMV9SzRs_9c8|gNuFIA?(13XjNO@m> +zsldechY98I`11v#69VPBrv!v%i6ERbh;fgXLOu=#l{z%VvtBKB>CxbM0x? +z)q3?8I84)=C%wh(KHi&QU`w8}IpyM7qnF@%UQe@5%>6S+LwnC){=vj#xi4)iwO|U46zgS;+0s1K#fP%IDCewt?Fji*Pfat${+lorHiuP@E3n^p0 +zwQY*A`C-^V**yF|mpX2dh&=a~)>-??hxZSU#JbACt@-gw^1z)Rp$0`+neqJiD!Fz3 +zzyBkd799oDfCwoX?D==L(98^Sr*T3@cC}xbb%ksnMnkQ}qtvTkygDI!_(06%r)Z5? +z8RuUFaT)qj_)&7SN@HVVFa6>RrTf!|_frxDWJ&*i+sP_^VW|=N@2nrb`^JXBybHGz9z(Kh$TDx=<<^;yd{$pBxk@XEyaQ5e!it~!g_e(E^3Y& +zxxkj!6N*!{`3aq^*>SE@Q=>;kd*>M<3qYEO;~qY~3q-1bID?{~#Y2OC_qgwtXgUr> +z1O8nvujbu&?2Kw~h(f;?jfyck}a@h;7 +z!>#;jnb**N=76FL&^5W{%L*L1LiLd%QD-Nb#_DDRaz +z7kIfC&hlq!K1&^2vT=U2M`{=MSJ71oNsWBzdqLD#MFTtam2Qj9`D22-vyDoG81xH7 +zYP~U`N1t{nU9N9*Erj>ki}axsM9Sj?-yH+4)+4%-P{Dbe#a21axCXtFkKJ;JVN@yW +z53uID1iNg={qMA>lJ|CDFR(qd3j6J3Z9%0|Q|N0RKl?elwVN;^U9-HYtAFPc^WbDT +z1vUcFZrcd-PoOL7Y;UUg8z_dUGGg$T@&p_l!YuS=Ndq#7ln;{6)HTNBNPE*0quCjZ +zZ%0iN!ERJP+(-CvT4Dsi&UFUB@@*5;c*U{0n}rOHMEZ(OBG|>w$TdN5_>p0GAwzR;6UYUiD;Ux&Vjoan> +zUpv;ezMldMfkj`{7esL@bZyW7-j%%kxP7?ra;Iq%d_^dXl<0`$ouzW$TnzLt&W9sp +zVE{PQSAUH)8+z+)7?viDI$;YplA}JdZ9N-b91Z9Toe8IpS_#RpgohhoMmo@9X +zPAI_;X)#0ic^~Wly#QvQWf+aYh-$#Mhe)D4 +z<8Azc1HF;X{!cHaPqeYW3iRZSTq|1}^RL-H{CHyqnz1|m=FQ*6RwI>bKNxAdP0C(= +zxA`vxmS~ccsY*efNn%Y^1b^3SST}Dr&>^(8xh$nyFVj=X>7*I)`!%rAs+H?A)JVOL +zB3*$$S(vbI`uNR>XmC15P%TcY$@ACkLy@IG<#ru%MBxt7NUaS~M0lToG+J^ZJxaMK +zP|TX>E6-1L@8fuePA|7$Dx_A*2y+YM|kZdY+R_c*H0SNd%z+f*pBi1?Qgu8cAJ=C0XEX)<)DbvrO&*`Fx +zx{rH#lB5)=Dh)E^u&%&&@k>J#3_~sI6_HM(_mO9tAfaL@>pt*^QB7)@)Ym=y;+;ZK +zH{_#>fO)&Yf#&M!!omS*OFzJo#uIypL4ehTuJEv*b8&8}7Trj*>pV3Uqk>9&HBn&>{G +zcm0!KTBH+e6gc2{x_t4&sJT@^VWb$urWEk@S0nt(tJbX#(9o0y@l3UIRSYG(sdW{r +zpI-d{4o)<<4W7AFLk;fQv(U?F1AbY=4)|nH#UdUJR@CS?eN9oTc~MrNQ9c7DR#_81 +z|H%6OSKF=-B(h?eV1MW695R_*TKwVB>J^TI4IizhJm1aK?A0WE@~x8i-)7uJA7V!T(Fo7*OCi)FC%`~0r_g@;n5U& +zlwmpvufy-m>GYTXQ6N+qx#q)sF8o@y4(*DXp=?DpGM3=|1DeA0)HC(>L@4VYt9D~RP~`*l-k>|v7XL=LYw$NIZ^TOn6eqi&W;W<@OqPK$pr+h +zQLX@cMF=CXbk?NxPQOVwd>FhiKCmqn4{&<~Y5elrYMzmT2UmtpT-sGQN{MHI5yis`uN5dDJ +zKlC|b))R#I6(X=i6S>=L7#B|YtDrX;kEo=v8by>Tp%yA;CdIG-oR8u`JcOhMN){E+ +z^vPfpUXtHs_3qwZPa88N=8Gp247{+(OByeO6uQC^B~-p)p8p8}UXypR +zwCap1{i|)D+pwc7f6O6;AeLUsk|mpktiw}8k|CndyHUf{5fISqt; +zQSh+gWLQTN8~*u|*ip=7v8t*{n3D_iT)Bo^=9{}K=o|UI;b0%R9vV3~aC!yW+Vp!8 +z@0$+hSAjATUsc3qgi9N($xY;^IN5E!79xuZ*((jp9&^PweTAp%&H3T!#yfVr_vX0= +ztUf33&u4g&OIO*GYiw5^U_r|7*4l!S$wvHoe(^aL%?!xLhZqYs8V{OhkqFaP@^CWI +zB&rCG#i{ivp2vusReX$Nia3&E^~Y2d$dg7xs&a-uj!lLuKX$=V=q;gdX9$KU;)}bU +zbk<$AGvUViy#FqDqm&QH=9qdj5aG7bFF{a~r@`@d@Y9B%=lHg%6a+B&l{oI!x&AC2 +z_BF_NU2Q}!ru^_=As_8Aq@_|23ZDLE@QD5H71xYGm#Gc0Y^KHmuqcBY0>#PW82({R +z7pS)2e>yXLI4$uD({a1vZI}hBwISonq%Txg4ZiK(n +zLG4#V%k^-LeC3MMB!MLYy7FepWn{d~QViN~P9CrES|^sCLo(;_f`SU}Kxs?munU37 +zoTJ(1=1wLZ?!Esr!r8cMFVJgBA8@m@`YZ8RZgI`0I}ge{6|@jLMBWed*%IhO#@`bR +zU(gvV(&7{|wI#mdBGq0JOpBJ^3ihOpw +zFYzQM(a*f|^UwW~{r~};Ze<5KE*%{+iM5oF=WCnwA6NAYasFNEFk?$<>;-ZIhET8v +z@n0Md9F8w8mt`~9gJm_?nbr6S@2NtWJ{MxSdVo9*$%XP5l^kYJS@f|MyHmktW!x9t +z-(IIwSu)wAr_NS3HmrsppvQ0JY(x?}yT2#qD(HA2`}c?AHpDFWIP|j?;ptV$dL8H| +zAQb`h^t=82BTg1s_-mj1X7a9ow;ixCMn^}p3ap#e%oQ*f +zicye(WU>E@_?z#0_m6m7kz)%@G8EWK0$cPQ;6Y@TXjpLv!wx +z(4~!n-`{#s#?BRR(JdPNnicPm+?XTnHZJczcGFNmFSGpp`<@N{lw0C8{sr)A@ZUkndexUgCP@vlZ(^A%$v}j?Q +z;$SpW)Me~R#B%axg*WrxGu#KOyI7;x^DuYAdE?aHbc2yM2pPT!I@QZO6y$is9 +zntF<58Ta)Qk_rxzbyQ*^DySS)=>h3ezhwU;TFz5NCeouN7)`# +zIqk*I7?dtqZ+#+6_`$A=3I!GHl_2%E6x0k4tweTXCg^T+G~wqs2!$p9E5SGjzmSu` +zNSTC-=<(&L!osy%_t&Y=9ySd9A5B*o7FE}-X^`&DA*4%MnxR8lB&0hfq!FZsl3d@(2ETgtv +z=ivTE$Tz|pR&s6q&N(bUpKy>rp6l_fj_uYhSe83;)P_yhV~XB!PR<5y{J~rG*@{b) +z+1-jzNh!DKG{6*jmMKM*QCC)>JcQIK_s5>H4XO9|YXbfwEgxSp*nH^r6iFPXE^Z~P +z--+caxOUvKXxlA?ahI2^srfcCK~nWm5@hbwOK?R>kB{bb5MFBb)Qv9zUg}HWyI5bb +zVVQ%NSd8|u?0!{UNk!pxzk4mv2LuYh>`GI|2386Ertm7L(Vrx>wPW;_NLXBOtbGb2 +zaRzu1(`OV0w(;BeAk7;X}>(0{Ogf==t*iPhD&l7+Oc+nOCVFPW%Qt|qS>EmQ3zD=mSIjK +zFEG1ftyhKX3z~wX1$k#_{LWJp(+!c +z{{03X2*5!b^378N=_|r---XZ>-!orEGSLY!u&Wv9zC@eG_dpG6POEQrG2J^o4EUM5L=__h0exwvPvc;N`7jO2)F9eaOiSuS +zM@vBS-7cXr@~))^jVR5XKXc}08ArHTv*Ne09S%1>lGM9`y=bCF`JD|<`YR|?mPYxi +zy2=@HP`}4W2Z*_{$;3@Q66a}Z(s*+rf8QViP{tUi8^eJ=SUDb=0XXtjGSx6#vmo*8 +zQFpF2)z%%K2Sy0t(rsH>feiB354e@(e+jwd%yt_s-CLghzEL0Uwf<+)!-9lgR7GAV +z_}(Ib${Tb(Z4V@pa3$XZpb$DIt%Jt~U+NI4r3ECEhxI=s|22qwI1qogm#9d4Fx~&{ +zi!ul6AUsJwdUNcBi~3F31bJ=P&-^g?M%GpnXvy4?;LJ?vNF#a_V&6n^eTaReA#@nW +z{=njT{^#N%r4P2-=vmR1|4v#ROSUN<|8?oSk`M%y=yB>ut`+IZGAMMr^X0k(amV2b +zl7Uh7s^L}0R}gGy$rI?TNe7Z(f-Nah22b}to|gFgTSAVp +zRw4iwP@HxMG(QuelESH6L8tYI@z<(C1W}hfjEip?)%KQ~44&%9Ed>KB^RPOt2@b9o +zjQOXGO1U635^C-{7q1Nyx0#4#25i8Go3Sv2GU-$cxZpjx^6>EZpGxfPKQ~Op#*X0> +z_Voy*qW`xp!GuCP1b%e_n5>V|aO?)}COb$V)TGDn(SKf0d3es5ihPQPK8prrYHS^= +z)sbWUcd9=MWrGyv-K~}*a>aI>!*Hn)+NeuH-WjT(<9IxT<1(G1Bg85QZ`B_^r$c^S +z*;Jy@XxcP&1QqsDo2D+&!+VnTAA8Q#7rU31fTO}GG@A#F2! +zI-}Nnm*376b5ObMYzh<*mKm*;`irGxsl(_e#Xu6(WQ^8@LA@_gzD;Tx4w(Wj9>ez43`dv7%QPfV|uK|yGrI4 +z=;mom+HBUVOvNjm(DQR2u5;uheScxA(vLh7NMpaz`p;hm-2Bm82%bRW%@z6f^bKaU +zzIUYCB}Va1g`ea8Bk-!${51=!MJGrEi9r(gfOhsU!78+nxOp?9kBX}mHEFZG{HV1w +zwUZdw<5?*18y_pS{=kz`<{UzgCw{XYS_~hC9^o@7iv{LT?%&GtJW71AH!vk=NCH7! +ze%f(2qYO?ACDOFw?fMu{j4%&W^_&*yGx+ZpM&iPhPXBE5$f1@R7TI7#SWx@`3DPvs +z7az8$*2p=0i%X;lf+{!Q96`sbw)m9ApcC``>ZKF$AQ!YoIDpR6JnK3Fx)KXKnTpok +z9w}x-B%}}F*|_zaCm!Px&AgyD6*%h%3G_x#rr9x@k3ah1Z&#h|Q{W3aIWX(KIw2!p +z&bOAbanv|J0}L~_BS-qfxzyA7{3fx$$%P*B4hl6q`kA*gJZ#+KaHet&exVgq2-{Ei +zBJh1(FiZ8l#V$HP>nkL&V@`OJm;xIB@Y+sjtI&6(_>E{MBOM2xrA3#<#IrL5uBpTv|`Dq0ujCrK4>avU0g2 +zoCL%cHnI_-A +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 +zlq~$GGMG +zbnE|L3-B3RfmQ-_L0g^QaPrMNR)4l8!4;^u#v$NM$Q9CclhUKb<&1TKJg>NVYry^QIu8&~(h_@HhnV#p@;SP4r)|MdN`~LX4##kBXg*x28 +z=8-1peT0bk#>b{h3~cnZG)ltuaeeHZHa~D +zWi>mNPpDD1&U9$x($Sf&8l^P(wbWQbLK4)ZYPf+7hDxR2tUL}MU`1hr@=zVZt4;4Q +zYo^H9Nz1cOQ<0+23Ct_MU?u}Sw>3Bc&&tSK?WLo*n)WUvF5%#&vb3gd1Vo#IuZ;d5 +zf-RyAgs`U>H_$%Rc>a#6ccfp(^FzEq>3A7JgZkvjk**W)3n1H(R_;G5sgUR1W9a73 +zLPe;iC|v?bo8uQFndVc-%46lgTRTjeHfN7cG)U5sw_KB_w6L}E`@?5+)Zz+lAi%JS +z-Xgn8b@sDo)G*m7kZuG*qsXJOIQf!p5qpr68;0%Q)IrK&)|Cz#m#tnY +zlRwi#Y%z9CU*VfEe-$9(#81E#=GRakGP4;f2%_V^5UV3d5R6b7@QA}Fl2wm(;TtJWh{j&xh{}LVzBms;c$4D1i|`X +zZV>1G3lFif#*_aq&WT{fqOq0)1zY}HjTjINXia?@9``r@={6tPS@_{2_=9U~41dk; +zqZ?S{W{xiL7MK)bIn&FBtRXp=V)9;l(l7xg9ZYC1gX@Z1?5M>gJYdqJ& +zJQ6jI-OTldB966EaRcQUlZADATZ?0A2onV%DW1JP?UU)*!@U0i?m)KPl-VDbBPjlJ +zj35iji&^!?g0@{FN`)6^V0!indK*IbYL^r>UBr(cg30bU!BNX#fq+hVxs>hUK6^HL +z(;bf0cYD4^riM4iFLokL_x?CXF2$p&m&H`b(wr|?AbWHXI%IFO3)!5OFS!BD*#QZD +z*P>MK(#oQhs{ +z@T$}*uA|xBiU{+(EQw1w8s1&Xn>C%ycI{Z0jLVNvqKbbpL`!X_U_4^B0BSAE5Dcng +z{*#LleQu#{?I*5e@nU(Cy~+T=GLa?{&VUwGBc&_Fq6Lom4XV)ruTD`}a^9*c){7Z; +zis$bXqI<(6{xxaC2AzLt7g=f`%po)8joRd3>#i0&IrB>qcqHhu7zps*##&gmfXiA% +z9}2#<;&RF6fckX2M0^s_*{c4SpBPqerwFs(mCXjo5!%lo2fjS +zgh$TNefo)|(uG4zh9S?iUBPR?@(tsc0|#?1+xLVEB%^_f-$?K57P;I +zwd3W1pco-q-1R*ESB~T{c34da1T^0y4Ihc%O|fUu^6RnaiRa>36GjzG1oH5KgoG1wh4+~=|4piq +zAM=1<>FQlZYCj~2^;hQ3e}XP1G$3kbN)oPo_|irm6W6DL!imLlE+>J&TiedwaAQYb +zuSxpHkF6Y4J=sIy)wO>sYcvVBx^x7I8^1x*)y-6TM`Ib4npsR=VYbuMU?kDAx8&qG +z=aitAv&NpIfet{#5Mnjz;pUkW9 +z?}iZd7R~8fRlp45LoPeD$ZJu>{~}7MJKyga +zS2&|KWA%Xfxm3utrfQ>|t%QEN$`#OOq~K>^iQhbM=X5I($AVAF$$t(_XOYWZ +z%XaLh5|&yAed3HYIE?DCr^d?&D0l^0ikpd{N2I?vvP{YFxl({(6!Xih +z&{r*}pCPw9hp-|(lA&6)>0H9BK{D1mGZr}l7E*+!jPFI{TF-FN0@I{LFK^)>1LJh8 +zA;TZEheh3CG0wkk-ri($rpN7($PhaSHpOx|zX93}eI-nHpnLmDc!C2GDxDVEX`LD)(zVXWfN+fch66I|+eB0fkAD%ra +zp2ar*QyIDh=lK29hC-2b`0}CE}d21;$sQ-jH||ztmprR(mj|J +z40t4miBe#r4PT7hA0r9mYP?Jyw36?$64?*5jyk~q_b-DxG}P{uU0JRPh?g8^;%(Ff +z4iBnIA<25e6HsEhkB|eq%r&pFz>(Z4Q;yxZd!Z_%?b1(;i;`e;wUUaQrPc&3`46ZY +zD*^-ZDKghPI$wlBh60lK*tMNqxxCT1>|=-uE)o8qODLHca{XD8fEjU-CQ@%FOZ_`| +z1s?t&e;Kaoe`=J0C&1!hK%Ty@?d8X_R2sv6}-{=bOOukYCN+Wge%G2L$ +zrY{T7b;)~$f$3G)?DdtzX5fM+@J|$R4m0a%@ws+VilDV-%H~pRdEd&1W(wVISZ+k9 +zeA3WEP9VzbW>YCtFbijrHl)TzV}-$VQXGG8Qt +z)ZPpD03CqyU@9_$&(I0_9Ml=i#Aqn}q!GU8v*=ZVUZe_9(oJL39BgJ2(KmoB%6AY!LtQb575ji?;3WY~&ic7Z9Kx}hLY6Z^#{O6C__ +z#UXsK#)iR1M(AM$xKV0~|EgFf)k}nJ!SXzb%2$@SUwOHX4NinqaodH*lmAJJZ2^Y& +zU=XsO?;mqwAhckP#)8>PajNoLW*vhX-6cr?9vg)yvY1$gv9BfPowgzH>_uk1=NJH{6xXeyk9QE7M?wk9WUS +zC~`&y@sy4d%^u{P2?jW6vOcFjylf1AHdrPeT1uI1k))SH#@`OwH^Hm$rXUdH%)k9Seh)H+wD)78{#9zhfIl5ieQcF`q6f(k)k(yaGzZIq2HSQYBHMG|8*}5ykVo^ +zIfo3{Sy3_$hEA~|M-eJ!rV>@p^M5PXW+3DA!z%U$MAtM}al8?)yQA&Bdld +ze^hBHp8ZJ-Ti*-q4uR_wgBdpk<)-Jv1kd8BMeFN3I#vNI7fqk;Y0zs{8-miiYL7Fk +zR8m~J4HvoW%HvtD*$eAiNw$DY;6jNduQSW1yRT2J(w>$Nv?WZDLnyKGSK!HDUv$qM +zmUDdU+9nSE=nQ$q;DpRrSYnQ7n$8{eOtpOa;9%FFwgqBq=xhV(!wr3yw)tWS@0_94z3i_8*d~fc+;KIka_Ec8VM(@{3Bcm@I43 +zV*p!=`30o-Z@JVz`@XImb!oPVJ>a+U_KKik{mjd-L%AH4PX3a?Sw;!nSTtAT9w*od +z#W`3X6*fOKo+t5NClepnxlF{fN~i*{4<}>;{?bCc9JI(Nk}GZhxRgjI71X9(BRiv+ +z>W-Rr_CPnyPLo-`TVnB^nww8zSvHvA8-vZ|m#o607Ei{E0ZZxKiJwRWGpz0ueEjzc&GaF9;#N8~MI-xDsDh +zYVJaQI7&oF#NBvdeD2PFl6i53gY#XeM4r@9z~|$t_J^MX?CCQtEDZFvVf=VI0?2xX +ze~A^mGAc5aC)|1>8y2t?3Qd9-bT>!Uspm^JK%&^?#|#km3$P +zIhpg{V%TYx-7st^K%IR(_qExQ8LwTUHXnbpx}n}I5^f9p2x--;9>^7)dRQ5@YHIC3 +zp=gJa)WQYR%quk%1kJls8T;pvA7rGF^JLi|$P!8xM6i!iJ?DSax@1k~MfT_sHuZyt +zeb!!le$TJ~1oP`k%n;`lM!xD{QQS^XvA7C!bXIE33vYHvk6a|Kmr^MkfC+LzejE9T +z+{1q$ISai@U;Zx98gh2491^kg_9v3w3PMhNq&TU}AT5ZXE*a4;N@7?~asjl~1fO2% +zi*0H~>9^SMP1(uSwcN}epsNp{x)L2oqU|Tpaf==g4-con+lAw1Pz!HOpo$He8hu0S +zq}&f-gb4J_?@M=6A#v_05jlL-#m^={%WbNsmC2%@a92@~{jB2eo)_pn5&>u@WW>WC +zKo#N7sQ{{Ahbw2h5Yu2vHO+yh!zQu!gzZ{p*EAWEhANauM=AJA} +z6qEc?yP75r7QSxuT(|B8fD&hozh>3K1Wpg1tfK3hn2uGD>NRo!M_Y7fzHl2xc#fP +zPw=uOd;2--k1>xYnl#QurKQY`L|6S)lu*u2a_yvU738l$tdI~fTn0fF*-nhUs-EI5 +zqD)D^4oY&3L7^^XRmCiQtKGn!Ll<7+nIgX*%rStIHGCL6@z9%=l96Gj +zT009H{>3@cj{H{*~fEGNqt=&<5X|EC!XoA5kh(wSz%zRu4e)#&2M +zSMcT|fCVr$!>q{tC$Ej(kLdxo8xzP4-NKJnDqO}OwPujR`xkhYdm3OXKR^;m9%Odi +zrvN1$cuO5nk)r$U%mpYTtvTIq9OcnIa7d&i +z4>IZFs-c||Cv17XaGyBHS(d}An-Q05>&c@HVxVE7UqpmrSEy_$BOgKPTdIb~CNBH4 +zr_nQ{vMreY!oREjc$gO<=lN#BDxf8+0N9(M^BWyR3(FI`{cY +zM_Xi@i~ABGj1_08A+4|c{XS#HYU>d42)7kqTpUbe!4=LlB5r2#Q1a}g%OZ6?liVCDi}eSL)gI +zgoy|{QXwLFQJiST`L(M9h61Pl +zCgoqw^{~Cj`q;R3+FbW$V*1GT3&89sMc?OmgxAkNXOh%%J><0BoWpfyxbG-I9l9gv +z^5nW(QQb3se7rwpB;+JZ+y-``R1+qvZ-kjwCDj-n4nJe-^JQa=2aod~5AsQ~4QUA2 +zCa3oA<7X8(%u}s^p(fZUg*v)D8^<_FeBR?gi5&G++*kl4a*y%-gdiv*PiW#)G_)FYS4b)}na%fCUXuk}r`xD4y*`LJZ1u5lP@K>N1;X1^S|&5j7NA +zpXQ4AwAI$JWGTtwOc6e#^@+Z&sjl9k{%BEEvw`z~ie+K*o|r1iGjWdp^kR_#f4?>P +z2dL!pO|np#xB{2mn?)66C@qTrX4G>uxU=mH1ae|qjelXDLp32O +zpNssK6clUp>k`Hti+s2D+S>GynuD=Hy^Pdj8Z?zvFy&+n7)~*@b^rJW%A&tKhjiPI +zB5c90F~EGbOmCMJJ64pa4F2rY8JaboN*q<#R!)2)1%U+8+?D}lhbU@@!dOclYzA=4 +z29@0Ub@puhyGIp14rb*XSW0RHi7G#>JJN06Fnm4>Rv~nF)@tdXrE^Ckf%ePoo+32n +z7^I*G>)fUT;6>6!$)vZV%@q8be9G(cqs)$FPyVx;?Mh43nF5G&5F{;+m&L8+_p<)9 +zJkO}+4qOFBs{6r1Yq6vmTqHV#7Y9TD5TF>41a|mXM4cd&I?y#CS(aCCcVc}f86x(s6e_#5o4LoTnZ%|2JB;R +zc&Fvc%s6eua_5d|q^tU^U(~_EMnrDtkmw2DSY>}HL{MV_=aGh=0Td_^5c>EqX8C}; +zn$h~>va%r5L3V6y$`!B9Kw?@*;m{wlb@he4SpNswYO~#pn0h+tL1($LNGqt>>L2)2 +zbG(m98+sS(zl*vHs4XtRZ_T(I-7W=VmbkuFuFp*#5ZOo=cS3mVUhcWlHRWM8*`D;U +z&gs&-hq7|tFSsKuLbe#AaA^3rvOQ5{cN`9LVu)ebUC~QmP`j9D)HmWXsM*Tm7HVF3|AP;&;S +zBtV@SW@+aOTeK+%yrrS`ogw+w^#?@{CpDf)AnO0*l$O +zA7x1KE#bm+V5o;#*h`uu$M=mqxKZ7Ximrtf$aq84TeQnb5^q|NJIe(WGZZ-TmkHWzYM^y@@qDM_RnU{Z*-Ix>&0%<{v%!^==fk +zfuDrvpENpZ^*uyP0Lr+>{J^Yy|8b~>m&AF2w=@P?qT9y$1GHcTO{)u6PwF~8ogb-_ +zC3ndeW#=*H!WGZp0i6c>;NIbCmc704u<2t|=EuREV-O)BJ`oDBoQOjZ!{=~cDUi^I +zYCYpbVd0u8TTki$s232)virSU_;o9nn6V6(@qdrYoDC?Y2>MRG9&!6iEbHE(@up<_7W8lN>ykHYxE8< +z*gal%T({FEHi_G8=5TllkP#F+)kJ?}+lBW4@)p%7nM6dAlht3|_r;JYKG(<@*uVNc +z&2ZFy$!hUijH{#db$GzKIkD5j4O0K-i_WP1mB_39KIULiu{S$?{P~7fsz<IraijE#Om9hwIu#7dAi8u8UtX&z3Hxi@vm(dU +zU7$?R=-P+|p;F|nBKs)V{zj^ctE+bkmYM6~%*0Q*J!9pANrRt~mj*P+vK^Y_rhKo +zXygB{1&AcIi|yKK*S5`PJ3xg<92kamv(RUdLxtLX&Me9>e5TgjHlO}08m<$Y@S7#S +zJ-NPo>J#37@}2DWv;!@*vU{`it5!_if1Y!szzQ&qJTCena0=%&2V21S>iy}DHHfVV +z)0WlYiI~-zUz_eq%JEpTp{`LKUYHrNfOkAdjp_omy^HD35C2ltk0ami$V2!GG_}k- +z6XruH`a{_#<#+Tbeq%x_G?Fl +zc4Fn=sjDqrjP+n_BD~2xf_+8!=rq(Z@~7P>Rvf;-BQV4MY$_^%uxIsG`I7B3wFnVc +z5i<`6g+c!zKh}3R<%b>RaCn)ML6SbxwSId3D>}r#WGFVeE$yyhT#|#h)S1YDbSRI? +z-KKN&C};pdk8*%TRMRHV_wgl&tAwNj6Rb504uzR1N{aEll~ZFpOc$=LV83}Ntoj`> +zjyn(Db>JkPUY-DVv8=GJh0PvC+@t${A@U_((HY6({{bul1Zqg_HPSKAKGlz%b#-&> +z3pr(9mDw%_?s21=7&Rqz)!XI=e)~GJ&x}fGxrpJBnc(n-lq0qM)3@{-ZzRK`+ZW^F +zJz7?&d~fR#uh`f{t-pSpNjbbbouXXN7JJScP}|tpsFF?M$n^oh(04$_vwZ_ny^N>S)$mZjtKZ8u +z{hwu4E1x8k54E!7*oZv}7X06-|5j^FWXZbffqt*-Xd~U2;F&juP#&8vN2|JQ&!-bX +z0?Bpty&TK6Kt9~giOKYf6|9qTD!+jl`prD4aVAoEm(2TdcMHT|IHSVxU*UvP2uTAZu^G!A$eU`thFA`4L+PeLEv43O&{y;s-KHKBgixD5C2%-Bw +z5s6as<-Q@tv24}Z=1;>aBd2nNy2OoU;FwQM(*)IsDBtw;E`2- +z*qZ!h+J*Mw`>o7Jj)`mtShH+wWOkSf$w +z_--vtiFL(iCC2CSy>LNuBW_5?T_RfMH|?jN!sa?#_bYx!)##0iwERZLAU~_BG1WdX +zg1)4VaMko0NOwi;s)|HE&VV-}QMD+uv<3kA%QO_NVrGS7#3wOXSvdUKe$615oy$E< +zRzz4Px1c}>lqVpWhcDzm+lx>_AdK3EERFB}`}1S0@JEF+mI+zdr>-I6#mGkg!o7v~6G3K45zP6vl+$o-jM7^;WuO +zN6RLJe)bKzS@Y!YpNOc={nMu0w){%W-*Q|?-TFh +z`eYM>nh8Xl;xLUB4{C5SU-KL-Ocl)_~-q*C-3sA-#N~ +zt){#(w1FU|WI1=So6$_b)>v_)JC0-AYM7vd3(98N`MP=g!=pI#|$4=F+5f`66dE(|PGo%!05OD)1ilH!^-SMQ-6j@<6H{z;Z +z5&P#n!lAz(A?1JOTE1JMETfV`0%-B;|6XmQg)#NQ-RKqPtmRw;iD_3i0ipDX%pgAu +zTraajLzn}EsW22T6TDoHkiUm}Q<_vkcaS8|FVV>Mntod{D`7FXLkGG;?h=fV^0rst +zpfLRa4e_$2I)4E&YS$#P@6P0pn8C(y%7y&hW~{}4By8feTzXuq3N&4yc5@_1nI711 +zK7yRDcav&T9}hf-TpA>`mqp1wf8^axCxz#5&rqUJFG{#v`ejVaQ#gMbvPnb2EMdN +zfoEQrx^@U1SbIw%tsI?nmD+#(`n5#9_i-Hs%QM-Sm@sd4>Ir?VM}@T>muwQe)qh~S +zQ?K2v{<#c6r?vZid~C&{{*B8Yx7}kzFnTvWE^;wvgK4zvEZChr@TJ-lc)h_H_3s-O +zbnKWhK^T6Ii?N}Q*18N&;%FF%G4+#~)TB0MxWx$r%Z(I>2E)9*7SnfhWZsr~$xOE5 +zxj#`DAHP2oA*YCaUaOjnMIMNPVmSEe!^2jM7*a?AktUt#;lunE&Z71_ul~so*Sf-* +zdb-Np%0*Dd(Y3oMm@-%z-^Jg4fOPjVD2{bEF>wNI6}!@_U5j*MeqB9qvBX392e38f +z@7-pNyhM90z>rm3#t|%1B4^D_EpLP(q|-%g-5ZId25rneoGQZ&=SR=l97*jY)$tEG +zB~H3RWGa?q>P5$+HMR*QI8WZto*E~`SI`!C2X4wPZ_u7ivS<7Uj$fDRMSKnR17cB? +zg4iiZW`abyyR~XT0cp;o+~zp}BY6aLhK80rV^w&R=2GpYn}3%A^;?Ig)tm4_=&t&A +zr14BIA?gG>D~&8)P^$qo!hCvpv6hppS3eHI7Uz2S)+Lh+(`8=}Cr7;Tn2{#K{jD(d +zg4^WYI7QF3kJwEvm}W5Ifp>FHIkJOcgAg +z`u2m53!3|7r9h%N(%Nc-XjZWUWAMTUw8M8V49V&S^7z=>U&W5gHq{|>E$xZ9p^o^) +zMO+eZn0&7O@725R<9x`k`4;xcI{W2`))@$7?QX7lS7CE8&7wP1{ORFb5Xs+O&1g7J +z*Ut@EYer=221Ef7nY=}W$;|KCoU5pJ{+_OMGe8exykR!>pFkx8V5O)NnV +zwne(}ZgSKvh5(Alo5$~87gOf41}|$Q37Xjcn8I3qG-;?}{$)TZnZV@O+0zK-9k5It +zLHAlu7zI^d4D%q6{|!R1nXMWLaaLAOR +z5^mr(E0DKUJ@$$kA&C+(!3>-GzN=#XqOvPe)871J_hazGUNFHgalkMRNP43AIKs)id?`{Uh_>cbm01SU*on8lEgwdq9mEMVQS +zzSh!Jldv@@X7;lU%vzyhz`|sy*{O5hFQkO%Lz&x+#6!Dlk(0s71-e>ZTOEx`Avc&K +z*D77U=~H`t;wdIEwuo@9kLna+U*0*AJG>dZ$3lZ`@Usg>%WXiyiS!dWHA@LyE11 +zGJQGn3!_R>;F}99^9oHY`s%kDc)dc~crCzi7J_@YUN7A&w3LzVxqjK?EFv^W}3k$jryH!W|xt5lj2r{VC7sX01mxAjS +zj^k1?ANN3x$*GHz(?t^sE^Ixy(@6X2p8FgqQ?gJURm^-qMQ#_`u5ogE4!(*X}`>6@z!LNC-(32=4VZFQkI2bA7 +zGppVNeFx`f^Z&wLy|z*2`T(XARQx4iku_dW3uyf`JNKWX$jk#iTEDuG1O6;$_L*KJ +zSqd8KSn1uv;p-pWImVvb`>y@)0@GBR2fjB<1c^vk!TI@O-@-VvWY|`=r-Oh`eV(6MzXCr?fDj<2 +zxMi4wi;Ihp=VV$tC*iU%ifQkaR#2*d8PBHh%oJY-b2IDW@|UTUnGnGcb$lc{MxO?> +zgh6Vi7ICGjMgYRSLOgR +zrNZ30F2qS`b5i-SMf6D3j(aq+@Bwal{c+XwwR+NzV}#2ump$4Z&S#SZD(=!tagw~dHIl6Wmn#Xwr9`F|aqcRbbKAII&z +zuD#>hWOGGjUi*?ADtl+|y~nl6C0n@mjzY-Z*<_1khm3DX62If;AAh;`^KkDu=Y8Jq +z*X#M(QASh0gv~aka~L<(%ei6E+5&LU-1(;|k%62q5wnO)fC1j`c3j}Zp^5$bBG-%w +z3y3~AQ-LaP^7eXC9*&prW-xG6MZ&fE@4p)&!7av{PzkGQIAT=gCHFm=e|pqt2;>verZ2H!ZB}7V&KHgpF~?% +zoiPlc9Oo0!vm;Iwyq+~uh8l4t1Ger0D*x|Cke8;I=I3^o%<_wPP7Ig>^fcN2BU#LP +z0qBbmv+O_ZiNOIW4~C82h-SYk8Hv7c7JNDo$<3N{^eoR25*o~Wg_avFq3X7;Zc_ai +zm(*oZ7`#pIyF?xnUx8bLP-d#{r;GdQ3?sH=sN>|?kv8U+y`;zRDF*JPkM<;f9#dD( +zCx=*rYHY{}l6^OIzxyD}P$8Ka1Q0!Nti`w@iEyZY6-C43tynE4*JhT}@a69p1RY7g +zTu+Ht3k0gyW|aB}xR|xsxshFAXsFU+CYvd*D=CMJWw_V#!1+GfB%2?`7~O4PxXBn}h_5f?$bFY4f#k +zfsg%yIGCuxECo;*FQ&fhGUJCwI?P{zOw#}zNg_T`++2*wR}MGbcMWFupYg0e&&lpg +zcHQms2~0^9{~Q=>*pz4~i@yE7ge{yC3y3GJtOOE7w#@lW%z;XYF~>>DPA?PR(%>&? +zoN3}KVz`vS{t}A$Qy2G04N--?wW$l?)EI_QdVW&n+D$EZ$j`s73)eJ^>n&IU1OK~Q +z*`=F<7DJA15*EoFuCXbyUQSuBv!PcAy^RN4a!eq2q2(e%+01q_K>)9MN}4X+wpESn +zy}D9AEzIQp`|=&E-!I-;Uq@gyB!<4meIWsfD`kw#&^fnxR(;3e5c_HQ;cnuX^3j*@ +zEtw-HcLJQp^eRJUKM8Ct6GuS9;b!zt$-#>!ps(^gS4w1CFPj{Xs|SAeNi3K5FfXy@ +zH!J3c)4N0&f8oZ%-T&(}d`K%?wBCAQX60rIn@^N~ajYt^U(X{BJuALP+8}qB$ +zg4X0~nf|qYG1o{LI*u9CCjnBUwuf=M+m?X|=NrKO+)3E?%2~nJ3$pmk!rtcxX2X{n +zo_`e-xZX=ivc}T6 +z6$=^SC!M+*aziN<$E);H-Ynxi$(iwC9_@6R6Zew*++tx=X9fH5oMs9G+7uw`HfWk> +zzGI&`(nkg+92^<^{}JnO>uGIJbBp_jbl8>r@fZWT@~U{OO@@E+bn-Z5R8xL)9L5ke +zHYsv+K& +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 +zVzq4ASV6K^qGVws02HEiE +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 +MD{I5+6fGkE2SYF}a{vGU + +diff --git a/themes/bgrt/bgrt.plymouth.in b/themes/bgrt/bgrt.plymouth.in +index 86c2622..3cabbca 100644 +--- a/themes/bgrt/bgrt.plymouth.in ++++ b/themes/bgrt/bgrt.plymouth.in +@@ -4,7 +4,7 @@ Description=Jimmac's spinner theme using the ACPI BGRT graphics as background + ModuleName=two-step + + [two-step] +-ImageDir=@PLYMOUTH_THEME_PATH@/bgrt ++ImageDir=@PLYMOUTH_THEME_PATH@/spinner + HorizontalAlignment=.5 + VerticalAlignment=.75 + WatermarkHorizontalAlignment=.5 +diff --git a/themes/bgrt/box.png b/themes/bgrt/box.png +deleted file mode 100644 +index 54876e68097e45b215f6f4c4ab2f1c06c5bd1e4e..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 870 +zcmeAS@N?(olHy`uVBq!ia0y~yU{nIK{W#cwWXpePWgsP4;u=vBoS#-wo>-L1;Fyx1 +zl&avFo0y&&l$w}QS$HzlhJk^Z!_&nvq~g|_Tl@W`(W@UmTf#;@V6`wU#Lhm4Z}sF0SlKS+*^aA-R3`>*{yeueW-)S*X4G@YAFJoyCWu +z!{O)Wo_xLQ+`LKbFZ(4ABrTh`(q3?m&E9!O)NP+RvD74Xyi)P_S~F#t;;ilfL3MHE +z1W&=NWnIR?iwip@ariP_*|lfSpSt|~_sjj3f8KO8Ywhm&2b4~2+9S``ULO}9zu(%z +z;>Y5hQ&=)(7Mr-7-7@Rt_uuQw%gS~={Np^M{fA?Nt4VAm@8-(l;>)-1-mMj$9dwNE +zs;kh#k7^}_g&z-p`}S>h!9D(Bb*BT<^;|cq{#~Z~{Q2|yM=gBg{-4?NKQi;#zkmOx +zZ{4~z@lFfFw9H%si9HeV@&8Td*dJTj{p0k@#gWS|-{d(y@i(hYb7IDsusa>g;+xL4 +zYv^}9authLV$_Kgm7aXQU1M*+4*vt;2AAiV*!&CU_z{&>mCVfaPyDrDg8-uwi-HS~ +z;t*7DVQ^yMpuf;Xm%BcZ)8tvXD%2`NL!T}&&+K@Wvg%+$fplN)ckT+d)#c^o^`>h* +zZwD{A9bmkC`SSeNyZ$ZHoL~R;T$Q`K`}^lgA+5SAv%;3@@F(>|6^2dHd{hy_YQT^U|C$4w;ifVF9Iaeb7Owv@}e9~w#FT2z?jTJ8>EaGR@9qdy5ApbKm +dPUG{u`zzfzHqH8W$O>o>gQu&X%Q~loCIIScDqsKr + +diff --git a/themes/bgrt/entry.png b/themes/bgrt/entry.png +deleted file mode 100644 +index 65810dea3ff2a03f620f13cdb9f680aa116c033d..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1431 +zcmV;I1!($-P) +zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3vdk{c@wh2L4lT|!Gj5-f+`s_Y=kzX#0Nu`@F@ +z$pp&XSRe`X3Ft6>{+QuE6cXhS)stnj3nk{5xuB7*Te-dIiu<`s=hH{e@<8KsFhqj4 +z-2U2;Q-NF`3LcNVKFfo*V<#O$bT_<(=EW;(FpWiSJuwOhXr7qr +zj_Y|esldc|-cllNl)A%btkWRTsFE<<9I(dEoe +zgg7SfDVRA+mCRXiglV?yA*Y;kDR5d~xN +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 +z~-Wh$@phq!Q?`IDPU`GePO +zubHp{v}I>%ANgb!D((`4)jX9jw{2|!Gajmal@hX|%*!6P!QvJT +zAL@7{TSlB;s-G$H`yBI8@a}?h)9kPD{4@0kZ$dHsr*v?BpPNctx*6Ga_33BJwFp7Y +U$^7#${bvUX3EV|$3`ofO8=tzejsO4v + +diff --git a/themes/bgrt/throbber-0002.png b/themes/bgrt/throbber-0002.png +deleted file mode 100644 +index 8e9a85d8be80e430f136327c98db0185a36fe7c8..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1568 +zcmYL}e>~H99LK-*Ln368NvEA#)g)L +z000;hg8U-2YON~+eeKEq_SBaGn;RH}=WB{Zj(aGR( +zDxFSD0NJbrFp(na=aoS}Y>)k2qp5xU&j_yIN?jgL@Om3^Kr>u#!k5GRxWtbBxK(j_i|YIa0?X +zwF8n_|6l2daUn!$I9iPOnw^$FBeSjd66s8>0$3bAvto?{0Kg;!KcA?W<>lu?PSixN +z%oCL4?b|b;>?Qbm`hLx3e +z&CbH^uHjSqJ(uI4aSl(1llt2}r0&c;CvJNE95qbi9?z#yq_zX=kDG1FMNe)C&xDSt +zApSRFx=@kOSLXxMO^Jr#%V0%v2bI$#at`@i?+e6#d`RXh_bf#BhsQpsfixETu~q() +z=#uF#_sBUGwxz}y!uPQNp(r~=zJ1b~m8(LEOIP+N&ctounpMF*sxl@`Q^P-3K(E?R +z+eV5RDXU1i_)}|UEK)bjy_v8}d8&kU%;(1I-{j58^(iCWna +z`$oj$3&cYXj-dt>o&9nv^FLC+&tSaU$pIVIh8F%pgra%SP;$&ix;10Q0snGS^5NE7 +z8XFOO*D?kEF(P61VC=~-?B!(AKu7V$1;474tzLse`vm-+1HtplCdHa|&r@c!a+8>e +zvhl=V{+zw$B7;Ek*r=ui4W_v5k7M{w4A6jOSpy$fFyR!#2YRjb}7JbT+n@3&Fhqw(~m4`__ +zv%9ToKY?pqgn%>|aWT92!vPWSsl24g<5|91=JjO5H;e{SM99$QcM}QFeua0Wsm5CD +zIfvMbztD)j?xI<2=iE7y4*QL4a(CiVqkww4)d6GUA2YaCG-^9y&NuytO6}bAAia(= +zzC-q^rxQ`4?7j_I938p`ZBa($-RVtPkQhda%MZhgrkq8v&IXF01zQQLEi@=tFPR;m +zrpd+4tQ(iS!Rp~fe*4k>pEWKbQh|ckn+2a|nEd5E$`h1&;~GZV(6h#e^iI6~bkH(vw!UTS%uF=b^r3JUWEh|u +zMSFw_f@t|mF0s`|=L6&Ql#*TjZiUavtGNzW9xWab$eac*hj0w5fiOT}G3Ak3_Xv>& +zPkz7TE_$$vx#5tJB&{#nRobkM;Nwr2s84I=Y9`|M_hiqTh=AU~qG1Al>OJqve)jG~ +zzIZR+^4(ICGtaj+vtH9JQ^=(i-VdWy8A(2Gzqh<0*>utSg)|YuO~4nnKhf{d^Oyv; +zW<~V);%3X|JXfbD=F48bvDH23jr;PJ=Plhl@eVaoan5TA+EQ86&n~%oN&CeC1piP! +J;qLgHzXAS3zy$yR + +diff --git a/themes/bgrt/throbber-0003.png b/themes/bgrt/throbber-0003.png +deleted file mode 100644 +index 9fe95aa2734b499cd3df6e65de24b90aeadd2716..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1561 +zcmYL}dpOg39LIlVE^|$b7@^DIDD8rnDVny>#bqw-m||vaVm8}kF3q+sCpnQvTG52) +z9!j}YjD|YuQ7PMrX-bL6l%o6j>74VN@ALh9-_P@YeV+IC^L+pK=7t6bm>MCB001xz +z3M7y~b(}9leemREX3l^D;{^W30{~tvRG6a +zipQm)7>RroCpm+~PUACCd?uYm=b?C<#FP{|_di9(C(~0B;wAT?V3hTI6oJa818!&x +z7KOo}+}s^87~GmQI1lfBy)Y!$vtYg_B9TQ0&}iJh+Z}R0;4R1ue~!YX&O`SzN#}|{ +z&tl%&09srs@Q)zTXtzA2VJ8R|&BJgSJ%tYNnOt^!Je}+4j^4@PiAX)oAcxO$5;!28 +z`~Q_lw3lyq&vOtj{F$9WOQ!Q2!>KF|r~t+dD?Dbs3IL#2g9!KtGE64joFt1}bfAc1 +zNb-k8`nz=E4VDOQ<1LoB=onOD!xduetTW%yjG#EBi8&PR?C*?Q$RKU12=zDoMZrv> +z^hFN{p1+@XJKKYc%_p{KCR--1D_K+QQ~XqL4Qn)Uc#>JC)vb5qXSY8?IJZ8j{j3;D +z#&ws+EO}CW$uDJV+ZewEy0v%}{n^@qDnxNnvg<`S)8?ZqcHk4Ni4RXUJfx~Pcq=0) +z?GN?Z?Y^1NRPJ8FgQB`Lt-Sztj&hIG?He-)k;>CGkRajjy&l!}ZoT*7Tg+b5*;H7hP(S$<>ph#50sB&n{qJwP7j +z2V2*9hKlMmF-5o%uR$uCL@!cR8Co4{h+~1vXpQDo`$ +zcDgjTF|#?HuO^;i&$a_fxvktd(jzi%M%?Z|%vlJAZw8v98tCz=KJB9AN>7!gst!72kR$T*X*`l6`s%Kk_W1J^)X1SWK&o8#kWvhd +ziq&CDzR2r)Ee7%5t+I)tbpqp&GU(%|w8_ZyJ@#YaZ4w42v%<$$l+`el;2=fqQEN7E +zUv3IQP-apK)3!GY^?a`gg-*S!sPFa@kMnnh_D46qTXA?wRXhGUuq+EcH+l_sT#_Y! +z=(GQnd~b5UU)C~)Y1;`}Snbh0H{Cb?)%RAUZ?{dHyR~HM*>o)9>(c{@_ajjLYHqP9A2!old$rgS;iqM$AkB2IR=7+|#Shr%;W1>UO +zE;FX|owaMpx&_sXoTskJzBDu`&z!7F<+Uxa*aA1)mC0pT`HfIuV?E{-PW61C&5-&5%SeLCq8>{ +zAWmwieRb-1LYRXEJZr}L{7U$1OGStX@A{w~9^8f8-5#km)^7RmP`PX}I`*5VnAq%; +zp%@rxqL(drH#|ESF!sv4og&vnu|x0ftFfKi78j=Pnd>X=K3g!@W;rte@fk@PEy$iR +zbnSZRwx3P*`jqE*+CBFjD{j5=$?7}hPf4YKP;ch@MRTIBCAzgNTE;T8)^GRO=5XUqnAi#>(N(d +zJ=MN@l(Ky&c=T>qODxl-JNGoa+_DRNaXYN8YsVN_B%|z;8TStQ-}I7-*sUL}0+2R- +zosJGGkvo^hP!7^CV=L>zQPLKeU2~`E!?zOt;FcN1sS`jc!zi@Yw(^FJ;A72~4KMR> +zU!!*^og-)j`+oh3kjnAGmoTgux*;GvB>OtCf5%vC)fI0uODbd<{M&#aVlbh`KTh&D +DSwXl> + +diff --git a/themes/bgrt/throbber-0004.png b/themes/bgrt/throbber-0004.png +deleted file mode 100644 +index 687aa8bba7e7c470034487c5818c825a6a6e2407..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1570 +zcmYL}dpOg39LImdHp`3*5#{oDB4Try5IPRVT$Yff8ymmOVXSTBI&(Q)c$9}sGR@^U +zDB0?`6e=qz>Y$D__jV-9rAQ@0=S=6E=X{^<=ktD^_v`b#zn{Op=L3jds#~^i0RTXi +z;O!A8SHsOxhRHiKCFPS`5OnWQCIG0QHwyw>;pxcD{VdPJEPQk<2wt}% +zz%UsRn5bwLh8~+ti%(!tF)S)b1DO~mJvuH9Wc;UAlvpq>l9Khik~~UhGs=U^0s$MW +zwFAc58e?N?Xl?C;!#UYGzJwmMlFz7b&ICu(Kmdz%`uE!L>RYcPCr}4$;u)V<>zEZMg~3*w2-^vTjlm=$ +zCqist*ZZc5`BsJeAQ~!6G)3mQ_6?In$#m@og(Cj-q3pk)iJcN@5dCMvql<0_8{NBg +zV}JchM{0}aq`r&rmA#+#;xiQbk16DRFy(i-qovXlH;d$DOCh$@qYaCLp!DGe +zfW_+lPiPdc)LmQ_totCcc563kq)dvF6r4_N@P25pa6A%~E2t!d-dJp>Ak(&a8pN}6 +zm%s)q#q3#DYp+m)j%GvC6fgNtA{L#K5G%!(gQ<$-rw)Xw5;&=|+h#>)OsUnJot>&R +zAzPE~!G6&2IB^QehIPQ>IQyhWrRoN=7kZkAgU?tj$U1=hW;@XHF1Phh-`y5xUz_Qd +zK^KupTZi)T8@k1fvJKI|XX7MDlB{JMjvv;}P?~tO?Ap<6gA&g?#0^0uZOx-WgtB|M +z$2XmzM~a`oG!2&8RI{q}3PdqRp8RHKyE}q=CIR{SCSkWVl;5i#*^q_1Xc?9Gys2~` +z4h$`en%_wrU*CP)k5JmL+tYbpK_E33-VmO;&cs{YlCd%E?{~`vA2mMXWIP%ePI<)u +z(Tgs0ZF}ndIk&vjC^g?Ii5E)3j}#W%B2mP>UpSJRB=nw8(~nmz<{UH~QzR8#xmGP3 +z>aIVOu91ig-*5R60_tf^!&Ay+ElhkrtjNyGDB^rrAJ-E>0a$aLv&AmdQUA#N>B+dF_>!M!V9wSKL{gAZdYTmqy3abO6zw;E@S%IetqHV()dkx<^9+*w{xAaI> +zxy)f0MYOC1R6huqvkznyR0gN73Pc)r+AsjSW01#prQQykkKiDT3=h&wX}7r38c8EFUNa|5G><} +zbC9tbiN>ePO{P#Y2~w@5UUc=Buqr+8*}b_{vjeFYYcq>zQZT%D;_mT6-(9Z{(XtZO +zFYHRMjxSGC(??d8rE?t{PE_fIoTL{WhEBvgkx9r7uXg`ytAX6f_7eDxw|jTBKNk?X +zW_JuNdF8r<4TjLxpVVl+FvU)g1&C(!hSRN%15&f}`6fqmdfK`ov`wI!Qdhq!|KtFI +MC()zv$MCGb0Sel;hyVZp + +diff --git a/themes/bgrt/throbber-0005.png b/themes/bgrt/throbber-0005.png +deleted file mode 100644 +index 3a56beb7482ff40b652972de1a4b8abf25a3cf2f..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1585 +zcmYL}c~H`67{`B_975!oT4Gw7xJevdk#wgiTViR4Xyrk_RZ@_Eyz;=S%QQQzR8W^u +z+tH1*($osEvID!E${4SHi*|VoXeyRyi|y|0JMZ&+XTG0jzVGwbduk`$4})5Y0ssI* +z^Y;nTtHXRD;rh-`Ntw`#G1s5L2LQCid>H^GA{)KAQQ#XQ*v5(j0b)!%8zdfPvDuMK +zBA>@3MzaJ&Zd@`u{-_{^D2M^sAfL$RvN#-&_n#7?;y})!sI2Ek`Y4MdR*@Q)BkB)7bG$aX!noQJ_okOKmO7+!o-6v%UMC;i6d3xhhE_1t2f2k93C +zdH+92AbHVt&j|F`{AYGDGY;fC1V^&DdIiXCl=MqBt^i=9p!sax9bzoL^!)Gv(DL|& +ztuFPK9DetAse+$#Nr6cy(xu*}ITDrp)B^P;pSwU?=FZI;L(wXVOIG(T+$6%sQb!A0 +zUDZ&Z)A%STFtv<0)5kcbz4ZsW|If*5@w4g%?Ngop^uBoULR5)8P57j!6{oOcMasQ* +z4qK$XW?^%Ao)h>FbDYHPfUB>KJ@!Z~TNy36HM{9I>PLzSr$zX)c@;12d +z{)&^M3|h0=)*~>QKjUaawRlrG3?)aXvgInA9bV%`I(bUSa)H75o;Xt|u-n3Af{bOqeG+`BDNUtS21YcnQk2)Yb +zE=-x<*Hb)wy;6;U=8kB~;%iY4d~1#wU|~J-Yg6A8rD>hXYB80I>wet69a{X}TxBw1 +zC8;YZD9dR@?!Pe$g`NvYFiSO(8CVN_*CUr90y7sEZZWf6GR)!{#udL#9nVEBlbgex +z!{K{nuo3#~T8(j%NvcWpG<}SAL)*!C5(|NlYv|K$@C!qwdq1PrZj%$`CJ>IhOayBc +zzRS$@IL%Le&|na6sKpJgut!`|4u#<&+5-h+b`6V%A-eLLF;?t<+73@@>tWaq-X_m1 +zT8AF_&gAlRMI)&R<**ZuHuumv1#OKmFIu?o$eb5#Fvy#Qm^(9x7r#tj^xo_H*uBK( +z73jh7E3d8>r%)5k%d_*H{A96Fqfw;~zxy{pmcij@YWQ2z@yYLYlw9|+0g=(?P>Iu5 +zd^<<$p)0L?%aLTOalcwW+xJYG>#dD&6u$wO&CUhuI;w|Gu1^Xd?e08L+Us|tZ?Upv +zyGBtI3q9#PCY@@=O;rGoN55W{X5k?>3r$+Q_06mg(j|h7H|<_enV0W-u+`wFfxu|z +z3dQrIOJh0wqvJeLML#aGX)0*FYhGgxGGWG%f)M%0Lg^~4^Hq*0A?E%e +z)yE7JeiP4J(YhEVXsH>!yC3Pvi2u!`^w!~rDb +z_*aATNt}xXolBG%QHze$qq?X6N>>$q@cNP=eZ^Hld>*!f>lWZMc#KN>GruMd9w?x=Pl{A?CNp3EiI4Ry$)Ta0&1x%!*& +zw2vgKw9Bb5zuJ2`)553$rwRL!GjOk-u>)-ncU9ZG +z+%aIbFb#{y%*+u>g_sBn=fqWtHu$&|S=!a4@J#PGh~W;QcXioN6nnTfc!N8)?|2*7 +zXZuoCqI;bt47_2(_ScoMv7w3JQ=F$`;6*yDruzpUBW>Wc}V%q4fT7h8EI7+ +YfW*HhUqW(Np#Sp#nlIf)x+Nm(Z}Py(ga7~l + +diff --git a/themes/bgrt/throbber-0006.png b/themes/bgrt/throbber-0006.png +deleted file mode 100644 +index 949cb23012469efb42c33953b5c79d5352ff77fc..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1597 +zcmYL}dsNbQ7{-4F;-%6iW>z@SG`k_7XkkC^|3B%BaVLf@3-#FI@9Z=N8x$ZzXdIqi0j!Hh)(z{u0031H@rOdgO|BOmPl*27 +z@?6O=<2zm3s?H+KE+~T$1fGLE!SOqfq__Apq8+=<77h@ME|u;!_2Rwts~|!1f}tG| +z{t1S8_o}fn>Ydl=vU%mW+H>|}ixYMt=YGO$)2r@>uPEAkw~C94J>_j}nSMz&=TXad +zrRB+)31v&)v`@lMH-1FqPEAfwdeVFtKApZj#aV?tv1bFL!iYnZ=H%aQI*?8q2906H +zwK*Wqa>(SGt-??ab4Oz9=9gv5Z@w5**;SemQq>P6zQxG~M~ovp*Gc1e)ckeHFqBh&P}cZk?B$O+Mu +zqNXp_Hdgka-7sr*!RpV^_nVBII>a015r0TlGTt$Fanh_G4fye|Vt*Wjem3Rin0I*c +zOeO@DIM|m)y19l+gcXoimTr4es>>j2f(KKyGKwKJTcFV1*NuwmI}*kYA?H;-r}A?r +zHqXK4iWe;eBRixx|0zGa`Au=W&= +zqS|+R;Umr3nVPA9Ib6Pz-)pXv({?~--AWNV87%Icam;<@wn3tJh}^>RUHMi0k{uc7 +z9d-K{q@ZC6 +zr}2(&u0$~kow78p=LhzY`V?rd6gl{mSybEm^b%`4vA2ap=R}a@;#*azLOQDYi7NYd +z?VjT4m!y>6U6ZbcXnU}9(q*3H?bf1Dii +z##PrRs=A@^+t{h%B3vF-&0L>o-Z~9`7Zwd)!&~Qk&~2uYa$c+$43+6?_A4 +zDmfLXdm9Z+R+Lw^L(89-4^#?i&b1+m%nR@LZ96kwqjTjw@BHW2c@`ZJkkGm*0S!6@`Y;rCe#liMZXA^ +z@}}q#RQiS=+AjKE2J&B^tKSye*H|_bBzrdxvKZZ;)Gn?%Ue|5qbNjfCBG@|kpIffw +zIillf1?V>i!&taCwu4NIf$8ias*JRVP>U3dGbMi3fQ-7u%ek8!zSOU+?N? +z7Id;xy~$Jw#bSg)P_80hFV?g^%9N=uq_7vJdSY$(YWOtjbbCvE+CtD>)D&g*!4UV@ +qaGdN$13l(?h0pS&lw)0lSOpG74CvlT0}S;4A3*dc;p+~^!k&JeGvtj+xbK?e>XFk4uFX%EIN3E +z$zoAxAdgD}8B9LNNls^_2>6L0KatL&^FSVl$!62J|0#x=OlN;i6+h60qEPEm1PY%H +zxMFc$APxt*y4mA!cz1XFr`}3f1P1E)V7(`b$)W>TEdJl^39FJULrnkuC|t@q^sLrP +zE`U6fb#E7BaVfw*g27^4PYvpKL(ps;?xoS$bbz18O`%fhTzfa{VGi$j +ze8=S=Bl6C;q~U_nw!7genH7S8qc8nEnepl|`O@(0~XmXbfAb#s1x-ka!$jQf55 +z$qIAu#skxFWz%B5ys6p&>t)QUdE$!n<&NT-8*Jm&M*dVBK7)Gfc&)s(xOei{RXe?6 +zv7^dg3Tw=9SG$qzzT92TT6;I`Q(R?aKY`9IL)q%ot3D#@ibPUV8pk>w#!zfgxp+uB +zWi-cOvspunmdQe|t;Z)-W^Z)jbz&4D>WxoA{_36{E>n@Dr!$LMWR6Sw#e?5>%PdMbxz6XUcsu=Chk$YEbuL_jEb6z2m8IIb->4$3pk~BidQc|oTcPeB +zUqbGGxIn7+)%IylOqHDV@N&8qZ9H1s_GZ&Y_GHS-ijEAEhgze;1h}=r^I-Xjb8`U& +zIFM-|Q#RJSSS7i-g$4T&Mr~xr2ND!1k4HyLihpyE>Mot-S34_*4g2?(*9w&aMa}IT +z7scp^&BV99dVN1ghnT|CA6{S-j^c1rR{ZW(yf|`mBc%_?O2{KyOTvctTPWGx(!v?Xr%Dp^XT7QX||=q7FKB +z=zWi+os>nt0%+qo{H`fy%5V2#D9>Ig@Zp{p!dm;*J}GRe@(@raBntMoEeCqG**PRT +zv&qb!iG>;Jt{(0ChhViX$k!#U=S91?7N_Gk)Wwv2#CPnzHaj(V;MX{~_EF&sUP6o# +zZMG6IEWd9pJQIQTvn7$&EYjsCYJUl-OER$1yl^UN@tEHrx`VkayX-`RpCCFnPj)ny +zUal>P26tPSf7UbI!V~)~j5S@lk*C<`8W)c=jok7S&*H1_E44NYxBvZ*&4 +YV^$rUwEBC7p#Kpd5km=$I}eHf27_eUh5!Hn + +diff --git a/themes/bgrt/throbber-0008.png b/themes/bgrt/throbber-0008.png +deleted file mode 100644 +index beef391370a4183ec221e131e4d06e60e1792919..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1604 +zcmYL}e>~H99LK+y&7`YsLg*4Jq1!KvH2Q&T>4zW5c?v$LDi_C9@oly+wA%FN+-It{>J-2T0;WgBZ^wann#DlF;>bj5Zg +zTWCGlisz}dSXAI2L18esGyMjSwa|D421e5uG=LMwN{Wi2v8)_1u}pSWz|#&bN38Gw +z?SeGc|4*VYc+%k|juykeWv4|a(%4pkR60|u02b$Z^1PV?0DwkFUb_#Ip_%7*$JKbR +zJ++*>)xM3m)%o1C%~fL<%uZA~ap0~&gqK(_FRZyx +zpfHyGRghhPuhFL5ogO{0V=bj<{syj8>UhWTi`&B;qYN?@A`0{*G-s!h$~w^`j%X1)sMwVbzdh +z5A~FhV*Qhlc1p4fv|^27s_qg&aC`6o691B|T*rhq3Vb?qDA38&%zU-mf>FjH>hM`l +zNN%D}eGH$*VX~Xbe!ShgS+YUQ%bYI_ +zx7?W1z+|StKa73iRFGhBPQhv&Wo{h$i?oghNB-!^|dEK=} +z$K+ntES>Tw$SNCICf=|B{bGou&e(Bb#IVd7;@l52jUSvMADGTh0bulCkl2U-E)5Ae +zx(r!-M?p-&V`MdtJ@zeFPfv^j&*d{Vr~1kKP~CkAg$O-tk8PWPaRMy)>-42Q=e`KY +zj_PaOTZ*TSwIVE(?$a>WOQ$I)c%!Hx*e;LQojz_ssg`g%t~Hw$ +zWf`)*s|c$KN>^L*!KsbnmV{_dMw3Vt?1O*UZf~=_>&yEL*e5C1NNy-*Awnf}NlOuM +z^SidLB^9^yNONZIAQ%tus&vEUmm6^6L=10`u(OnRgrPyjC5XBY%6JAUheea$Qj%Iz +zv1&$78V58&#a-Mor^7;3=4`_=1^xb+`wKEpgZi?uHdR~4uIjaQ)t>CR`L(e|7cR+L +zEDvwoS$KTrLdC5d&8M&19thQkl%6LL8M=6>knFQYH^`%KJgAmy`CbNI?B8_R(d)_% +zd-wOya6NU=Ac}jle-uScl1zq8W5hI7aUj$DOG~}AeC-Xqh*vWFAw=(1{&mNhyY5nc +zR$<UC)oDkg*z(qCj|@GY9Ad6@tFT)I(&%$M_?Fdl~WYr>P{F|w*p +z>57|Nqp#pNmyYm~`bB->LIKxy&h2$y$;sRbTi=0s&%K^ct~-oxM^0t#QGr5fBeR{6 +zyU@kRnJy$OSuatC-(9^;YGcm6Tz#FYDzMC>S~o&f+9N`HMQWzgm&vq5r+m +zYjb7&E6l8Ez;M`&dUEP39l600eaT#GA#y75D=)bHF_)C5(2%|YPE{Apf~(W^BAlTP +z^3g|Q%tTK6?k0`}cUwwqhfpO-E{fbAV~34q?!QbUq~Qmj#O*>H7&+_O?$#5&$0Zvy +zNt}fHAGIa6UW$1jW{_(0XMa6v{o|OZ@^N3tDKg6M__GPQo1baNE|QBXqfvNkVvBL3znvVP3FHFMI%a#GD?1@Na>+oFr4FV+ZgI>*hD1yHM>hQpk + +diff --git a/themes/bgrt/throbber-0009.png b/themes/bgrt/throbber-0009.png +deleted file mode 100644 +index b366daa8f009ccc64fa2356234e45d09e544486f..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1605 +zcmYL}eKZq#7{|wEYcVeqdA%0v(B*9NT1KHJhFZ-_WW?5DZ0v4}k`1e?P+}E|=;fA_ +z<2{l)rWfZ*NZO1_BN54xvdVC`?!D*!&hL4?=X^iU`Tm~2emQ$~`@z5#a*Jc7p0ofSI>md7*qfTgZ=lqkDJtdQn58ZS7F7fq5IBupED}Y +zK<({NS*%#VKZ3$wobra&JXXPVY8XtRCQ$*Lcvdo*Ol2XQF^8D!Okz)~iW{mqQMDkI +z_5YJ7j2k{=iKD{spV>z#bSfJW9Lr#;6yWHzg;!)^4*-Bh@i?E5a45H^KCwJ>UDr8% +zoNw;=J$c#s#n#pu#kxs+sqcCN9I4F1Zd@iqjwAW}j4WMU6wx9VYed4~0t@Yk{B=;@ +zYegoBItP@?eW?{K3hvSXkTBOeRer3G-M3XfghH#1rIi(W(@deXK|VA}Xlv(|eOu%S +z3A5BecktKI0ij^QWdd_m?LquD*1OmX;&maz56=trMgU%=9lpc~km@GA?>q(QKB}&RCH(qfk +zkH;hlKl}lNwnHtj9-A-NVmxnji0vC{Ve+@f0!416FD6W@YX>?+E!lRdBpc|dUE}i1 +z{>-S^$8p>olGsvSVrQLoGV>{Hd{`a>Nyi<&J|W!+Cz{QFg-iow%T?hM_gAj1xrL~_ +zR2gdSy|{ZtPv+g+TPt~A77AHfkeunU_&yoz*nctIU^#9Ku=eqUfcbzs^bqNCB#;?N +zR)Ph$Qa%S_xZsx^_~Iwg&It3<+p;Py04tRcq)arNvtizPD`;zQGBiah8KlW4vfeN2 +zgx7yuHCF^;-=X~<}_Nh&>(jOtVBRuik +zm0}b7Zc5Kc1$r&T1mZ +zdDjzP%4GqfR%R%Y;$Yhfj=YY)33rO<8QxWPy>ax>qP9l0(xu>(WgU4e%CK#**=A0> +zDuCxLz}a8izRtAeK0jx-qtR4ftY}VH9ccK>>DRcs+?Rb~R*-{qZStz8Xqzf0#R}w2 +zH}s~aA>9%?LX5!kc-qGPWM4rHdRj5yXZg$?QWHRMSX!x8oUP@}cVCvKRbUs+3T{ue +qMdmaTM6}GRtxJzMVmD#&y;Wc$yR*qQSfc)S0eIitxSH)T{J#My<=QO( + +diff --git a/themes/bgrt/throbber-0010.png b/themes/bgrt/throbber-0010.png +deleted file mode 100644 +index 0312f62688976e840bdd3cbd28a0dbab0913913f..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1601 +zcmYL}dpOg39LIlincE?RNnzDAxox8f-B`rZ1-XT=%`ap(n~F@CTP|JK2}z;LoLWw# +zr4BM8_L$MBBT`zq)!A{2J@e(E{T`99yz=lwkI*XMbEKYxAm{Pub4YMW^T0H90s +z@eF_zxm=oXsIyO;n1w`(>2r_`06Hs|3kH;wnnLD|B(Kn9z{D|VAm&IsjYgti +z*enVrHa-c%q^8gqN0Z_(NpT(Fuvex#96{n_PR<{T-kg{pFd!cp3;`v2H&u4x8~FZ45EZ@2jv#5X50Oq;$kV +zp24!W6S7z&;DeTjAii>$2S5vg +ztpA^Mz&aBH6-f{_{GOdcp@MAW0TPV~DS&fyIaz3G3jk_wh@KvSp<3C6-35g~M(wdV +zIMmJ?a0By*VIzC(uv>kEVz1Sk>8J>`wMz9}f?)gg8RdHgCWcivoxf>@RFvBiHC7QK +zQ3TIDfjMUU57)MrDF!E<=2J%h(Bq5^rb-*<72C!J6%9^Xpi?Up;&1k!Z!1b1cr-J+ +zrS2V?J&-b9x=_$9PV8f#-FgjAMM_eJrjzwn4>0WI{Ke7mO63Jz#ku~DMGeuqP?gl? +zHOXodnFi}7){@iAHcmTur2JWW%^Mpb;oq;Gvv$!NRIhJV@lkn1R=t;A)(rZ5yESe# +z;^G|S-a+GDwNOR7=XNbvMc;`6FulS41Se;eD6VB$h=J#vtv)QqUQ9$Tc8a=|;JzZ> +zq(=Tl$zwjUf;nx((Rm6aFwc&>9Dc#qM#hP|)9aeAiq0BU>uqXtHQ_Nb0^3q6a*Nwp +zdYs)>y&v}^z(>xQf%M;gique~-{t^sJ6OIblyR_^@7ACz$!PL+GPCfm6g{I>f7%kZ +z=Zj>&>Si}JyE+2OuQaQP`<{#Q9Zy^X>y+u1GvcI5{p$trVL^Ling+ADzg>pyIQY9g +zcq}tq=J;60xi3aymVJb0v#^p053Q_4f{A_j>TtzTdEFN(fE}cGFWUb6e4hYk% +zHb~5Vh-qo8BH)M=_$GuVF)d6U6n%eo?L*^k{UXmkel03|O%*_FjJt9HQ9Z!Q7Co{$ +zUK;A{QJEiEE>AeJ*Z=$jKBopHYN&adhW>=m4nrP$P3c(2F^_L;Ey~9_Uz~UUfQ{^G +zod6F#$vR3YyBai=@X6@`LoPR^X9ySuvEd5sDe{W0Z6QN;mN)J`*FoR8?3YE!o6qp- +zc?Z+t#pgQF!(K;exbCj&p{rc7Cv=)KFP(TfDeG?YKQlH~)OEbxa!*y3d_788@@mCB +zrNshiCiye|63#`)}lPLQS*h^*lG&;}@!<;aXZ%>6m6a +z)PdX@by=A2=am6j(^A4)*OGl?RtXr}*4*^UC78P^pVNjq;P;Pf&YGZ*uQ8ubhP`n# +zJ+lSo4~BPl%s8gzS>Y(Q+6%#kos*3hUfuh9 +zBf+EaP?NWx4Nth><}vp-KcDyWykDQ^{r&v)J+R)-3uRzx0001rzLv&- +z)MC2edQcZ7B#c6W5UkxK0sy4(bm;(vMJA9*6?<$Hdq#3V0MF)gL3~ssmm3<67YW1h +zJ0rz-0Vkfzj}f!+Vm8PHMR<`QlE(vu|EXOV2juMtlReUfqD-cvXrW>duqO~Hcp?#R +zzrun@baHTTav)s0rG5a-7){RvL~=oZKydnfiNrDWyflcxf2|@6g&>i*L86_4yxG&9 +zJ7ft%f!|_BAlM&L!J8q7o`%eDkOu-{wvZnd1_~`!5F!L3DdRyM#Eqvp16mLi{{N&M +zfkY3O5JPy*uk8464k)rzOth)6!VE;^Wn-k0lR(}c;M +zLwjnu#{TIt)`I?W_+x|Jr_$kmW(TRRlRAb)lqVNt>EUgL2W6PKMJ${1Z1@s1Vok60 +z!aZ2|&X+%m2NM%M%E-|l#~M1iH4*X98PICu=nO-Te33GdIyU|_zPD>)%%v^gPh*pp +z=%r)~e!DtAKIv!uB%rSJj_uP+quy`P*ayY*QD6|KW>a8tX>uj(T4XP|kg_!ZJwZ4X +zQ>bhRA{bf?m|jszcQ)lJzNGb_1?lb~i%4;1Nq;n+Z?Q|_*(gu%MV-68pkUH*cut(b +z^=>qyqxh2gj=QTwmnX|out>rqH;OdrRvNOASIM^KFZOY>3)F7<8PUw0#;rW}6G4_i +z*3~KSZvBa8g`54WGOH_f4qGM6UxgyMTIC~y_!~~-ILC-F$DT^Zm5MG-n7_M!#nn$` +zA8^s%D!6wnKI5Of@?tZ`$_@ZNp;7^mY+Ze~DbT2bC$XOlHs^k&9&i9u?Qf8R+2l##HwEen5 +zYr65pMA4kw8RJ|jxe2Q%33tbh7vH>W6syuZNB>|cZ?&rT9iCOi93m&de-f;{sD +z@was*F)l;0SyEKifaSq?I9_mM4(wtqn3cafP`k1UMfu0S$F#BH=63nLGmG!sW8Ktu +z(ZBnxucooHu`=q+_H576*q13f=I!P^LBosMzpMB4wyp+^Vzf>T^6p^eqLGYCAMk(a +z{L!L^3xi>55umC*|Ds!k0`umI)xbwCc1uA;{_RQmen(!_-ukKW_Q7a@d1l{x&Ru$v +zVE}J1>w&@i^qbuJnhiZ#1ktm4$ldo`x-Z6!AXS +z=Zav|;ey6vM|;1jX?^+k?WNoI;&9v?4b4NQa2_>KNetgaz +z>{hn3c+IsA8Snc(g)e_Qs07t#Upn@p_L$9jcj1$FK{BSRzrmn%ZX?pUvBjahHt{XR +z|1OfADbJ9@-V8kYhA889j;foUcS%*VM@)sQNv~^AyR7byV)#|WsU*z?Yt_0v(I1U% +zUmj@*nW@LoDeZVSBx@d$u27gSQ;owj%Ijypal`QAIXynZM1hUy1uz7N3~3K>HbuJK +zKf@I=7g|c4ZwRAqH+JrnYm0tW>V^uW33n2sZjN|t`9nd65h?SlQoE0%;%r;>kmltX +zTD-Ol@AP;cw$a0J{}wjEhRu!@pE%2OJ}n{T?3=WoOf@Zey~?)&cRbpcWD}EAvewJg +z7#{15+)`;xuJneDIC_`2{_OHhsty_xw_|fyW&)UGGbxw6J}WTMTz=-j5Vyf@ms<16 +zb>?eCPHk;=#8#?LL7Z((4f+c%Lo}*s5n=nAaCT>t=( +zbWh5DNKvb$tqHySq@=fy=x{v)`2c`0S}hoGsn`TET?Nztfk!k81h7mF8^j)qX0yW? +zSU!(|jfxgvxhx@@6DMF|1x%0)^09nwbZjih`%f_uEHE}QLi7h5iZWS^qJ#@TfPll3 +zuy{O{V28rv$wVTVh^v^c~rbF!!>r|6JzN7SiZ +zHtu6oN~HLtv_=dXvnvltnFW_aG@o|0wjY|x_xrIMC3>~yG|oh(?G^NpK#9!XM4_Su +zCZ`gXl2y;&*i8s0Y}X{eIH6ihdDPrf5*PxV0l7T*{Fr+l7}kHRJVb74S^uPJkfMk* +zrJ=%*L%SdQn=Kp8MGFS^l=p36ZVj_eosYaVZi@DpFZSfBHItB!ME)6X^;j7vhBr}_ +zek(uBWSuJ`>-Rp&y;GTi7&fbcqsMzbHdX>bTCM4F`*+{PiOZ6&mqvx`%x_XNYKCDl +z`ZMSoX5q?o^I>L3Oy%T-ZE|3H8{6V`fmBJOVlqSE9CeyXx&n(zFDX%rZ&kDT +zYiv;JHPh!2KdY>e93Kv=(Mn*0F$ +z?Jv2WneiSzZkrnzsR$AeA=K4l^6)Tu+qJc$_TEW`;)i0@mQO?Shn7CXk~q?4oGi1$u^dztbPcoBMhOlW0^7vxdiu#Vr!i8@};cJF*(w!fr9}$mZ8y +zqd4g=+RbKw#L{VR>p{$(MqO{7LBNGsbUEmrmcC|I4zD>=?w_~!{%@rXFta8i$1 +zDwN0BH1KLgLzt?05U@(V&2q{f)3Ud}HQqw9jxN8_vWs>7}-o`tla6&r1J +zQ0LkLERgH^XcfLrqDPmlhMJNt-qUhwZd*&rp4{ph9P<9=tj-fA`selA=Kpjg3;lD* +zFQxfybruO5&Fb&eeqZ+YK8}($d((^4qGRiJ8|auAXVFK;T(WH~PPcsXDrIhOf&v&q +zkJe{-HaS!L#yf30gO}j7J-Kl*($u=mWN&(@tcIkeP_LucPxsx!n%8CB@K*|hzx$>` +z^gPSYxo{!JaiY8pj!?N*iX(w;ujT +zb)4%SX5gGs*Dq_@g`A8f1oU{sX9SvMUwkIio +zLidv?x^naYMYV&Zq4#q9f?@A$P{@>oEYJLK*Q`_#K>W5nQzjf@+k_YlsPzDO~WnZ8H%4UW=u*%X?ty! +z^+yth1BA9Z5eE4Qvd5O4U%~7`7u2r<8V~qkqaJHhxA_9k5VF1 +tk8O410sgeR09(-E(>kyfAxR8e(Re1SE_W!PK7>9&fKK(HRJk1y{R6MZ$w~kK + +diff --git a/themes/bgrt/throbber-0013.png b/themes/bgrt/throbber-0013.png +deleted file mode 100644 +index ace8764887795c1dacd9060bbe7d0e1ea932abc5..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1612 +zcmV-S2DABzP)>1eYOb#!Pi +zbZBL5WpgicaA|ICWpXcbaA|ICWpXZJY-Mg_VuH;C0000ObVXQnL}7Gg05UK!I4?0V +zFETSAF)=zdH99pgw!+xU0000GbVXQnRB3Hx05C8*FfckWFgh_a8`gHO00008bVXQn +zMsi_oWdJcVzi^q-0000HbVXQnLt$-Ya$x{NVQpn{VJR6m&&cbW>wx +zZe;*;XmW32Vr6n5GcaawbAVFIxc~qF6LdvbbW&w*WMy(xX>DZyFfckWFfK4RK2yu$ +z0000IbVXQnLwRFtWpf}?VQp}1Wpe;AGB|#g7%Kn(1m#IYK~z`?g_c2UomCKqlS>Gp +zgiF;Jq=a%&5G|r0-MFdRg$wCMP;eo*5s>zdxsFN8-!6)oq-9W7~5Q +z+s3sq@pm#^qc0_hV|8zQCVt)l32FJh{?161? +z9sCA1N2AfS&3}M>?-jHO95_c|3qA#ogXh39Sg1f1B2%>Z0elTE)4&b%J&ov7YMnlT +z6pyC3ot^|wfK~7xI0`)63G7zw-WE6noXSt&9Qclj?BzVxJ%QwG0(IOLez|5?><{oX +zxCM@YKfzq0;yn=rHB^S}-t0)GP!&Y_Ol7-3Pnl!R-E8|PHi +z`m|4jGc>lC&RG{(h$95>J`U_$a{mHfzOn->==gsGj{gQwEaFui2TsLDD=CSqoyt4l +zD)qjiR=EmmW8ZxPIPBmh@FZ}o-lGI0BYp*!fWTd;Zp07tsbzXdQeEJ_lZnF_Kf9ijAGJxOJ8C +z6?5VJu$}-%Y;o6W$M-YvckQ8tY>2y7TuX!)ujM0fUO!^@PQvrlZ`4PAkb@&)A%mR2 +z7O-o{Y=G};hh1@eJ?V8d8cFmMAQ_7)PC`5bCdP|09u341W&GZIMlXR|ZO2K*U&Ot3 +zUmNi{E&yvdg@}zF^W7L%{?r|dUI$LW&Q0#Fnnq=AbTuyd~X= +z=dO8OF3KCIuQ(4z5+(_KB@kT-s+Ew4J&Oc;UgeO0DSlsylq;xgEF|j|Cht^&rMnbr +zwf2xu%_--XO8q}~vMd2L*q@P)$KSqVa_=S>OE3l0ZE@GxBX%eg977T|x|N*vaaimK +zxCSKSqjVZ2W>%N%b!4+gk5Tv-^)E9a?fXhPQdj#~ +z5>9~O1UB)l=dkYIDIB?bNtC;#CUb@gSWu2d(ZTr6q_xChxa1^$LH~9vX%^cuDn}e3YVQ>_zffb-{6&wN!8Fg}_*?S$_2D9WZ +zoUefH+Rf`ml%I61b(erqg%JfP +z;up+&$`yFPj>VJ6x|7EDJI=1D8sIr+!KdWgM0ai4y@dqg<4}L1j@;`QYr7vLZjj@( +zeG8O3;2-cI7$h-$HMwq&$p#MyEA0zh?7d`Y5@Bf?KgDVO3PaBKf?}(&AD7sCIFM8JA{d{d+?0kyb +zyv{Z#(%Sm6j!s;3{L%48cT;E`ZEymzpS=h96K7sx^~KJ4(fB4wQa^7o2i|!L>KTqMs8X;j7+TN0D +z^lYa*KcmHq1%3$@k0**X7Oh5TKLtaXAR7dd6L?8+aUjoSC4MJ|FAQn>%gF7fc!=>p +zkoW(SSiA=%w5`{OQ9rX&nJkd+5*iC}j0zBlq^u&Rgoo<1iIq(oi)#Ly1Tol9ZGS%bveCT_1;5qzfeo5 +zC=fMfz*J|u;dNWCHnOaB(}^BzN@;=O16>VX$*{I2oAg!;mVmA +zWul4UE;NrQXdSE8@1SOD{p=~Z+u#_b%%{4R#umEU`~&Ozt%}Oj2(Y_@vde4eF0Hbq +zS%g;IekwRwVxfUYW29m=Lou6C~*?m +z<6c$Ns}-!MXlnnu#Qui%w$-|aFJ<2uG3Y}1&BJrUZIh$VF?_o2z0R!9%RHUtnc4B= +z@Hzf>ZT+6Yt_!Uh3C|ag&tt9r@iYVVrNj&7w%6ls>YPVB%g)=5x1_!G +zJF_~eMb6k)cn7H}M!~S^N&dZBt>Fz9*SH(q* +zH=Uge)8s6ysbaP2p=-x)Yq#Yrd+wML&D-deZbJ9z)IOB1L2TH9fx8XLLS0dB-_TOFv7~L=_Z_Oq(a$|6&!QON{az*lCdQ9lnH)NlFzPi#n}?nF~#j +zhS9QbvjPTeFL)xqD5zV@pY6%5G|k>C=h>=emb_h>0$Nsvq&V;cn|B8r&KGwtiWHYF +z<~n3ftGAGMpS(ZmtbNDXOjMgLfP>cg`(zuPsfMHg+jpKr&{%`op!Dq7gg-XP$$;g5 +z?f)E;hB{y&ZJGU`Na>3~B1rdcwM4_bh1pHSf6V(I$JD2c9yZ%WaILXJp6pa3TP5C^ +zTxjfwH!{oIa8JjopD`dF;19iTk6t3#^r-sgSk4x%^mWFyHEJPft#%qQto?{hWp}Tg +z0sg2Dd_n#@?8imHoXPpp`GH>Y(u#sT%f63GU&4|Ua%p-e7!eVy8rC#;8$OkxYi3{p +z=M(2r#w|atc+!BmxUFn1q0{V=1O44@|6MpkgD#WOC>T@cz?GUFyQ=m5jJWnIB^mx_ +zqFp%yk1GSkGhV)`OjmwD-8z}tYp1DX8k!x+jH)`_t-KG~iSia*5R<%i$D1#|Q=4~G{7 +zx&J@uf_JAx{>_K6`RD8mIs@d{MkFygumS|4XYP*}CjeN{NAdTIj5W?F3qJC7)Y@-L +zF+p1cXs52p!Va5#V^_C+ALkO^wUwjiy0qtzaBZY%+NGlFqQH`H +zyOSx7b*eCbxdrK0UB=P5toF(A;0+zrtem_zIjomj_#917*KQsVkJ-f}EDpVnpOLkF +zjH(%{2+=xv$Ls;OzV~`GTd~(3`B28Ill2W^qwBP5Eo;gswM(0t^#97A)@wq!cLkK+ +z3_{1Zd`GiETo0MMwP@1QwfWZyC4FNt#LmwWqC9neO$N27DeQc;-MOeC@!8$3mVs&8 +zn;^3(jHk)_At)xm5P;FOUF|yO@f{NzQC53A5DY_P+ +zRBQ@b#efb4SVTyk8mhnKRK=Atq~yT|2z>h>dgFyR)|w+bxf64G5=G4P)wjezI&0UW +zM7`1d84z)>HzM6XO%N*dCZ67YYHo7J;_v#`*fpbY`(QzWdR2hkRX(pZxoS6II +zh!+PNA!C)}d6RgZJ4IDhZZy`0sMZS=(V+o3_HJEc*AW@>5Rz$NhF1wLznk3q>g-@B +z6k5NK2m@{h7PNgJ@aqprj@qU$RT`6Q}BglSiPZF8#(a^NZ}- +zy=az<`A9}pBbc$1h~b`=MdT4dRkK-;O^F=&Hl{+JrPWecyQRY!4UvXjikq%#a}N4e +zxJS0h)p1;$fwisI&>zNcVp;nX#O_q8l`0J@7T&j^@-LSlTVx% +z(&7}j^mn-f@gr<@^SYq#_shOz`#fIofVu|r6-l3>8j(BNVnqV(s}5m(<%G)KqOPfX +ze*g57{n(YZZOLNI^)D>50Jp)1p9;I38(K;qUqNNCs=5otiGrK0KK(D#jgSR#t_ga< +zq0Z*b=j&sV&vo|>WfRk|nxT8wo_YPS(lpv{a)-NNJ1uP;HluTm$Hi>p*e6)b8<*ai +z*I`O~k=vzJ+sEZqP6ZEgHW8$uX>EreY)C9%LH2tuGed)P9IN8v@{1^{e%~$YjAP&M +zHA{>(wI-n;UGr=E`lF8T1y`YSkkIA!m7}OX +zeUnQmKE1@>8jmkQ=NrVwte@N~+w7yXF+|#|SU*R;9N0;P6v`LsoJ28Uc&BblY=cfJ +z0n0{Yxs@vWv&s8{^BW&$>UE%USFSG)hzYAkNN2Hm-$fRcqE;0sr^dw^rWPWKyjC%3mmm(i;$`6G( +zMym>YB)m?mJmts=cF6$l>S#j;DKXsgq`11`jIYjk#kx>jm?_e{++bqX=BKlb?W +z*?IAWqYq7|t$wa=-6kK~Hji0YnQho99O&Yy@fhp3i%_yswlqGVBiJ_FI +zQwp8r(xXUj;gCv5W8tJCa$S;~pL))7zR&mbc|Xtl^?5$u_g`Q6ZolowWv0sj06_YX +zhykElEfx$4cF~CwQ=q^Fq(4LefIu(S5+GA)44PZSUV&n7RtN*YGWlEvmd)aFsdTJJ +zNXH&yiLru^<6M52n28lL8C-@4D-y7HJcjT;b)cmzqP?t#*3?nR51f^!r=*6 +zJRa-hY=y_WxwyEw;7V({n!y>p#hE=UE(5^f+ +z6Oeai198o&IA8rwz9sG(ALyOGB>VmG!$|!@=TAqgpC`y<2-SmB$C13<*W&|x53XL% +zh5LVXP8hEr+N7xrZk?Y{5k4P%*K*l;vQ;^$k}RI1;o;%l?TNLDu!0`Ke0}M0R8ReV +z{J2r><4|Tl>hNFm+ +zISUrjp`NX~;^0l@E-gD|FcBS_Yww5J&7lb&4Wt3{qqBsE)^B6>xa-KJuvT2hthn_7 +zX$ZEYGO@>ce-zy812pi?jN4aC7xZxa2@}#6q}8S(qGwq&v1L}jI9gQk?v|z((2WU( +zS`>2{Zobh;)L4{jSN52b6z=)X^w?N1EU9Tc>jm8B<-J@H&j#5RyEAMZief$1M8kYt +z8PV0+re6jx?XfiD7DJRRooX%Ixr$#cWku8~*81VKqEE8>+GbZZc5^sI<7!%vVk5f0 +zFwORoSu;P%R+(9Grt{;O-lE{ZO*Z$e3FK!q$#B<0dT57kdr;`7eXqUaruDxsAL*?* +zoS)PQ$Jd3>C2WJ*JBYo)=EP4^{Lo +zEv-Z9y@s!K)5+@|BQZ7k@1*(*T7qR<`o)%Om*5eWahz^egih~X5;vbN^-8&7ezI|I +zZf)NZOs7PPEx$cPFY^HozN|v +z2zcW9V6}mJq#YwuG7k?7RiWd9U+iyucg3`Us$ThQ2ED%O61OFZTNxl)Cmcn5Uh%#e +zZDtwsJmP7G-H~esdoPkl7dTP`Jt)gSsof_#M@UH`Wy!?oTo)p=?y!gg_ + +diff --git a/themes/bgrt/throbber-0017.png b/themes/bgrt/throbber-0017.png +deleted file mode 100644 +index ce792def5cc6aac0b16a4ac9d029aca472c08595..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1572 +zcmYL}eK^x=7{`B_%EqXz!<4reDIMFCXoN+XQ>TRTmd5yDY+kl0v|L6B%S$>5qg7H# +zr$XC7VI&=u$ysT#v{s?aTi(LTnYzw(p6j{q?{(du@AZA|zn(15eeQ7BS{MKTa1WxJ +zmr6~RN@InpGm?|1R0547`ZEAP6S-7sKuIY|HFRd~@?-9%P(c6_8A}5(Q4|_2BoxD- +zhhicqOiUa#i58o{jKnY_K^n-wFybgNF(CavwI)-+m@sl$r@AT%wG`zR!UO>uEY2Q- +z!(nW;nBZ`DTU)#>R?sSWs`9K_^7v3_Ab`cHPhQ~2dy`I*qIC6=5sTKt3 +z|37Js-R9x5z*J$xkL;vSD#$SL4xz=V6u{Zorxc>B06@Lb!;RqM2R&cd8C`a8Rr|SB +zzg5cJi4{ak!p^t@{G;!#)jdC@sb~5fZY}+4oaqoh(%NW}d8zK0c^%@j?`l4g!f*2m +z$h>kew50#*Lg$VyE+e+T5I-*69w90%juElres4meB3h8KmlYqYQ;dhMD=dg=~lA90&00gHr+_yJpV&f +zusq=|^wvCDvV0ce;iyiXi@zjQ-yk&lYQ)mEetz~%8|Y+~UpnGqP$~ToEn9P!jtqR~ +zEn9)DXYk9gm8RQI_@)k%*g7rR^%eu(&&tmrg1c*jR_3uoU2H6#8&!Md4Lao~3?3cE +z=NFL&otE>SXT7zZl4sz{bBkN{D*PRCQA4q^lEJdR6i#(Cq9$r&v=&(~d*dPm)BVz{ +zvNWlKuC+e(rHRE|n3dq09#_D3X76#aX*E5>cAwrF#|uMOG?yJm5T7)Xio~qnjiqW@ +zl}Bb)5P#_p?~t@=3U4}g;l(pvXtG?d1t~PMhf2+$oO#59hfUEN6E{*zT0Wbfoe5~M +zm5nsPn%c)KB*V`3xop9&tbWK~>Phn`M~AD_H1UAVothW>i=GAuvPTXoPC`?Je`SJs +z_<~dk`WtS1W|)_z5U#Z!4sy|h_8m$)(4MWvaza#}I4VO}dVG0Se%v9?BHUB+h>VPEs-aE!cHjZq{5If`p83rCCe +zPiIc9C-5xMPePOt@LG2YE~!Ab{tdln=caR)$AU~>>QC(yMLGE|oBC6yKD_oz1eh3*_o++>4oC^yV_01KX%x}oCo0zPMq$8_njmL&fE&a8T_ZA;%@qE*n +z(H~2bnhWE5m>-;q6$!HIy;nBxtG;9s)T0CAT8YL=X#0nCXQF$nM8&=iHNnXS-rd3#Tsuka4)}w6 +z0`VS!nka3MP22xeUt8YW48N_dyVAl?3{ssZ*upBA-Z-Xi`K=cMd=od(AXcq8E!{_| +z?%QQ{@pZ3K#zUbj9d1Fj33Kpcp;=X% +z>y<*2$-+=&9*nDl66COgS<8oozOrNA373?xlu^&cn$E{VgZi(K8fME3l2iN{>2fLV +z#`SiV+|Q8oP0rgsJ=PC +NW7j^n+dG5P{sq3l&Vm2{ + +diff --git a/themes/bgrt/throbber-0018.png b/themes/bgrt/throbber-0018.png +deleted file mode 100644 +index 6423b95104fd1fb81420f5cc0cb5b1baebc90726..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1601 +zcmYL}dpOg39LIm#*j!?6hZW5wXDsX@oRLCDX@%SpQM)kLjoE%2VHr+QlpIDEN-pI* +zY9cA3wo-1V=_W;@nnXgB$&xemoacO>@8|P=p7-nXyuY8nzDIn#Jv7wTr~v?=LEi4} +zr%;oXQh_TvHznn>LR8t?gSh~puDenY;B+ZUVY+}@gTQUkOa_3Dif1wKG0`j*Eey}) +zgyAEjK|GszfEAwzM&ZFI28+SPbJ@{xaSYCXilZ|bapCmL2TF=4)Jl{)4P*ee1R@Df +zB;sv1m=K9h_V!Npgr+;sdlWNTD>DJnECxUzIQ_gtQl3(sg@UR4ScOAVKqASq!ga60 +z(_Zm@S6Cbx@KbOEf^BZU$~^_tTY>&zj5r1WMseclbOy&{10jOV<@@zCE4c0o_fss$ +z;Qaq2j^IEJkb?@W^CSB}7?Z&@@u#ua3I&L^q=UsMD*#X$AiKK-1gQ#&dvgW5Q5})E +z!knN^bIv1jc+Q`}IjU|r@O7YCrpj{mci58p-o_~Hr+2Q|>~(L9F+7=@7i#Heb{FNa +zida2f^A^0=JN9ypH{CqFN`Oooo^$R!aPZvREtzEHFyrHUx6ht`Z+1O4_Tv6Q2XAJ` +z&1aZJT=r4dF;rtlMbFVW5wCxtDGjWTAH|lrRh&Qu@1wY^IW}LvyyIFhbqIMj(`&{e +zS>+ibOI-718F_F_yHQiA)bx{4j~QWH%Q9s9sV$=vIu9O~wVRy_w~p~xH&JyuvW0K{ +zhcf0g;-Uymecbkob+sIJ32)_!6lq_9Ol8E5=Mt0*w@62~)|Ee(x>^O3mO3lf%vw>%+4}E;1qK0ZSg@wkMP=EoMQ`i +zhwu9OFP*ml^tle2zZko4e!fD_1lHBjIX9=1g0PNQ=b=n7s?DcQ?Rw-9(YI_s_3R>d +zo{4-v7A;zLWdYm@_(=p!jNdL*q;xK$M70K-GN=6<=8+=&M>~vjk=g?ex +zqKRJGzFwYInCv`|kSRZzqU1PX+Iq+cIHb2FNys!!Y9;GXo=n}hAh$?j_?z=f*Vzjz +zWp572NNR#^uxV$xTVUco4y($cKp7iZhw^keZZ>c^tR&6QI^1S613K=Ro3~MX)gagq +z3u!Pe +zHS&$sPciX@7f}7rFllLLcsG}{S|O7IX01;r(&4pK=dEQ`q-l&S@iH$#i2P{z&E$s4 +zS^jM?cV^GM_)7+&s!v0i*WK>EwL=z*pq4Il`}4+n^#-L%C1RLKHISPOzXi+wtls^r +zovLA3gJ6knnp#{U(wR}0*`%Zo_w%Q}LP;7D=x`#>ynp8V*)-_4)?GDa{DIE;@++n{ +zG$%3Ucr?s|mA$+zX_@%`)iQ36PK5c#qgj=k)NTEq8(<34HQx<}VyPY4)aPCh#PYCw +zX?}?3J3BA$SzNu4Go9CJ{*$MX^ +zR@eINUptfEjTl)wvekK2%eZ*(vj42#cRe+}o{%A|w=^MtCg1aSkJ~)JA=tE6LQCna!V)P6BwmjP~WQjhU|7f6Slks1M +sHyw}tVF8gt-stkA?cnZ`rS_ghWCxsXXObb9R{Vhgd8@a(a0@l_U;abPJOBUy + +diff --git a/themes/bgrt/throbber-0019.png b/themes/bgrt/throbber-0019.png +deleted file mode 100644 +index 45e935927623eb5ebd3bbd1f5f6aed9207a55c88..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1608 +zcmYL}dsNbA7{`Bj<6^8xBxmzB4OgaI3MER>1u5mFDHf)AK}k(+a%twJK(=M6c-f{| +zG;0;QwW(QI9z@B~)-bWQ2ptP6J1lKpn&vdM{cLAv?|Gl+d(QXsobUVm^&a0H9gak} +zA^-qDG9qZPpn5JB%mM7;{QPN9;KGOmF#tF^Ef)khrE&pHs)Wvx?8xSF09=-U$H5)U +z=JC?fabi(AE;Cz#6LJsp1X4*BPLjppal|;WFq_Zki2l<6HkZTCU>D!B1EXA)qiAUo +z4nV{c$T$K4N8IE|AW%po3JKrVZPJ4?tCnY&**p$_$5Z~jge`Au>o0>0_HGqX8VCtn +zQZ5SnKo7O-Z3it;8t|_K;PJ%LN3b3cqL*P@I)~2zBv~Q>o6Qk$}NLQnw$k$j}a#SZ}No-k-(Ocwm}8g0&n +zc=WL^y*BDw8zYi3SRW%$Q>AqD56(=xL=<=9w58<=ntS!~Rc92<4wcZtLiuyiRG3%9 +zirjL7L%FMOh~e&{R-8%H6buJh&0@o>b|R{#7Ch0>(KSBLcS{mxJFdqy^E`apwEG24 +ziY#L+^k7tmA1&A=;9x40yemzaz8qqp!B_32Ls7#9B>VNENhJMlW+cGz?8W +zy4lrjcIkSh!98puRJU&R=?tV9Vw8`S>WZODsjn!{T46WA7-I@YV +z(vkp7D&Z~AaBj)a)@lA5v#@LO*#d0vP8D13WLD^sTD5_hXE! +zTN_WC1-t9$gV*d$Kb}XnTTA?Pa8~8WXVbYUXTsUs8O#CHo6R#@+LiN#e(%#8er23A +z^&4eyWX7a_3;csCIdd*%TX%=*XECDL3ELQj_p73?CJI9A9WwzS?i{f0nMfF_`khr` +z9>E6RHWVK$lc>)K5f!pKvfN)8y&|?netq(HQuF46@k~!6Ce?=OYxu=S6T0X?*5z78 +z;4=R4#E>bq_qgnmj@DZhnbgy*_1HU2YGyXGFirBiBkdUuCWivDu_!{;2}@_eD2tDw +zRG{MK`15L~eAV&qE`3P+c3U8}MKnV?cw@ht%LmC{jw1HNfAwurYL04F)^pPQtc6hV +z8iF?_Ga(3GoUKzq?uw^>L~bKwU-5IV(~e%S2<-FAETfKPIZYaQPnkAo=;7XhVz=Ko +zn%!9Acgl0+HP5FZ_Z!xos@vHRG=*(+7>@4lE!)~pJ9YpwdU!~EP>Act4Dg;aw@v@MZrgI +z#g(=GRNlGk>%Ye0^n(^Ox_?|T3{Pb@4BJn;wCS)PxdxhhBrK(`5stcZC +zrwp<3tkFF-hr;HJD4&v_=isYe5=W&%H?C0gXT}%PwbMP16W+Wk#h4zK2aM;|-IW=rU5qjZ0{*I%U +z*Dq=1RZc<+yaTad2PN*M_;IR(#uNDugS<6sq_r5Ad}!ZPK%Sz%XehIS!gzy}G7H>0 +z9QY*rNX&zySu;g$ef0&-pR_MBP+D#nIoZyjFzCvA`;6~Dcs*wORtt+&7uq{whk>(&9A0>1Ai_m`)Tyz +ylZqQ_OI6YL)DWxfZQuDH{K$lL(m@=3_Ajb$XmVakmnIzi3IPT^n%4AjYVkkv|H85W + +diff --git a/themes/bgrt/throbber-0020.png b/themes/bgrt/throbber-0020.png +deleted file mode 100644 +index b84b04dd859b199729c63df17ebf7cbffe8f3185..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1583 +zcmYL}dpOg39LIl#2}dqtTPc>?ncFTRLwGEglq8f((S~8!W^E&ua#z^| +zacx4#I31QHky~=vsZ>TR$3fvZQ_p$M_xXN4@8@~HKF|C6`RjYb!`($mVXp!J07|Y$ +z9X%zA*r{D$NoTUzD-w~XAN6AbfFfk4q=27_;S$rH<>bq9CR0cNIy{m}LSG4D;(UYgEE^eO-k?lt43#l6TQP +ziKn{b9g$cJBJfR67>rr^*seb$P<;n_1(RqbfECV&3<@GK5C<`#bY_C5pjE;lJKR&U +zAc^t+lPHX(otNOX1gm|`jt!=ems(11=f>Q +zuqBknf`!l*C3a=ZfwiZFHn8us*QeiG4a80lSasU$ocm2p7P^Ml%LNbLca*TH8@Ps# +zAK678(%s)6^DZA5^IYAqecKgtDHNa@g>{NFiz>5dC+}C|b6OWjW4QjVm6wXpuJ-xC +z@QOuLi*$;*xf^KI2FVWgiCt5Dj4aiwe^tfP6$15d^f4eP(Lwa~p3tDhK`nh^B-NUH +zLCO^+7yY2FI|NF=N7d@LIw^J85{S_I;M$}Jty8ZXryZ<%_aB2rZDz(w;n;020%=1V +zh!Ff5ckB!sTny?h6z-G#&P1oeq!KFRCr%xkpd{!;|CTwfGs)C}3S}ml7hb-2kBo7> +z5?_^<+%tD(uzKi57;4WXZGYYJKYdNinrU40BG=96(hOcp4xM!1L;zwg^gO@x<}Y4* +zdAza2L}k#EgdrtDRqY8{&LpHQY5=4q+jDWIJS*|6u-dBM=ku!Z-6!L(*FatkKiM|t}fQV7E@ +zVKZN_L+=jzO1aV?g(3)F@MWUI`~$2uJ-XOq@G+EdV6DFC?r7BcYf^^Y-3zN;boqjD +zd~tQd?j+qu3hU2&2tcvrR@xpJS`eqdA<(kLonONq`#CVH<_QYeIt{(B&P{jR5U|RHlM@kVHIW;A*}WI{;F9(7FTY%th+3VBy0p+cf;_ZlwMPU)!zb=EA(T$8QERvz`W%+p>2NZv6X}F7a|Ew`Wc9IeJKNMtOS1;fH$90-1R6P2zRlVYP^wY8WWM^~sv=^_Kh>$_kw)jLp|c-9gC&n%x}{VW7Mn6cfgN}F +z6Mk4Olf!sNFRO?jF(zoJU)c5t@KnTn5(qU2vt^heG_o5}!wYnG5!GAF?YUi-{Hkg4 +z_`0;O+#AE5Q-N)3S4w5=InS4NMJ9CQu7VX#Z(kYjkX_kU-IPIbjDxTg8re0YBNzK{MGz{e#*6bxuWK&3Mf-O=2gesRjyk* +zsMd#45M$=txj5@RWIbbH@C-e?q*~#IXpbI#y<+!io|-nP>315r+b?X%;mi0O>}=Ez +c5cH<~U;AcCT{$u^$&UxPI=MU6;t5Ir0u~;_O#lD@ + +diff --git a/themes/bgrt/throbber-0021.png b/themes/bgrt/throbber-0021.png +deleted file mode 100644 +index a64932df50150f1ac1e29b1d181b80430f802459..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1602 +zcmYL}eKga19LIm#JZ!|pT*|WumDz)bgtRcTYHq1csCn8Qn{BqX)lAq>Nm8g=vh~QV +zZc28Ft5n!+6BDj(EfOP%+x@9?&pqe+`M%G2zdq;v`F#KR=4}fn8W~s_003Y_ +z3JZw<)nTdNdf?4ZOVfga;D$x<0l*NsR1lz4wj4A!3J8&cPzH+zpy?bo4V}zjv*W2~ +zK97n{VhGS&mWa*SFQB6ZbQ+t+NAtOiloT58KlMmp(Nca+$nMYqqn0m4g~SVJ01kuo +zMPspOoTmd8>*ww5=Z&dR^tFLKCQCg#8EhJW!T5bYIPBm|2p(kcZ>#X)L5Rbq?WouQ +zdZtTWFlh1Of$!ph!Qk?H;YtviFTovDS_%yi(0QDM1RBr56O+j0OCs9tfgHKSBfte| +zy#GgfV0=hBzX(8V_AOgPWzqN!JL1_~PysB?H}lN$wE&>gPYT(zGZIm7wu5Wci3LH4ELpv{^qg6-wjl-eokTLt0Qa@}4JopqG`<0{JH57E(^g}NxhHVobL +zLD+kuTXARs!-})8*twxg+H;UoY8-HGz2|giKvJhj-5*XSlgIy5sZ?cj;&9vj7wij} +z{C>X{_Owbim)|w&d$&KNck?iNSzWI9QmEe8s>*>@XK^~MjZxJfoYNRrDtqYtVZD}B +zozz_%3AHwf-U1t`>l-0<2gX6HK5gUUp303v1USap9DulBfp84r$#Mv1q=)D%5ca;}i4#s9EZ2b_{V{Tef +z`_(4%yfClN#kIyhZ@r&*IhRM$wZ>1b*<$)y(fH +zwMLt*JdC$MTtTJ8D|538d83M=-15&^`#WZg!-m}=LS=3R~^eck{j!*B%owKdnl+{IrTp4rpRt}kSAaANUi2^f> +zh16#!Nv6zGEmDawklRvDtnzl$@7+as#B5sN-SF4mRms#vQK)STf6h65#R9;ZFb^<$ +zeQ5A{^WL=egDWjeR;#>Lf8b6Hclq6)@i$sf_m&7->&oc$dSe}y;Ik7$f|^Q-t7qx| +zxQTk7peB)%1>7~sYP0%s{-Eb{tGx}uT^1@gx@*+4Rm>VGYMQN`Z(#UBn$ZYs>@}|k +zFyGDCnUTjwiniA=0&K=7m;d9e_IHqFPkOYEkx!9L4Y#hjfmW7{5-(Iw7`Ky%o$nD_AuAPnDUA4E}l!=h7S_WRGq{QN21!Ad%pGc4KXFALfl1( +z?6N+mu9{CuiXHSqy_$PARL9B|%-!({1vTOFdzlT>UGh_dP1Obe-CvSpppT3W3mk{8wA$WXMpW9SLmpji +zlzM57#=YSOlH27MVfHZTeWuh;7olw|NQYIek}u9jEmP+XtsSyt?sTt#R%SDYk}lZ* +z#D+SD=G>@I6hboy9lWJMW#RN>=Z`#&;aV)f4j}oD|2QUoDs0S{+*17&FV?q^2yY>5{bq3sgh_8zAh!^)9nYex}R?KS6**2oI?Yip%~Nwrj*Y + +diff --git a/themes/bgrt/throbber-0022.png b/themes/bgrt/throbber-0022.png +deleted file mode 100644 +index 4b57e234270c5b3810796a93de9e85e008f446ce..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1595 +zcmYL}e>~H99LK-PHRIB1$}-h-N-nmU!;Hd3BZ)>?UGihiuk43yE>ze?8g~+MlpmG4 +zx+L>+QuL)&Ty>~hcE@H%NAlx{Z5DE0caMAA=ka;JUysM@`F^}U@4r5xfCJ>!hGvEU +z0Ic@$_M||HSuTTBQ0FEm&q4xcdmrHffDv-J^nlAHD9CihN +zjBpx`%c0?-Vt6=qToQwoz>CK5qUj7e7sqACFqw4De~OKWqccxL2wv(#QK;o8&u|_c +zAmHtYI6FHW!5(90M{;l=Ip7=H<bSiGZ8&^!;q>;B13qQ%jjM74NWJ6KPLer8awaT$Eb4rqAFvCv1xP%ewIzTba8$*KcgnxgfC@8Kz&T(P~4q +z;A*kEhh&ecb>H|0-r_r?iUtYdg3>oI94=A6eQ|Fn>OYTOp^& +z#F{=I%qUh2i2PEV6-gc; +zskvU%FsXfeRL>(g_Mnvcvg)4sXxiRVcfp*boBK^Lax5^|=9e65$%swIq4-Vl#R*wc +zNtbV+zsFp8Z`st)c*VymJMw0UEiena$xF@XGM-`Y(VA{ +ziFH?ZF_m(SY0-WvR8J|F^}UziyO_f2KXjKGT2e +zs?P%~wMWhnT&C@tz+y(1bwxjQ&v&GHvRHziw|V#d!>4!ptW`g-;og=%MI1a1E}Bst +zcI(IqLN5FEGgE>2oo|N<2J1i;n1IoRsPx#drZsn`Z~PMAlJ60V&M!I!7bWNU_bJG+ +z4;5gm@$ZFDybk^yU>eb=NLLo~4Yjf=kC3Tu( +zA6)ed`EUWel{<2)h_SXaosyt6MiF6HK`Q8~GkrFo(&mIxyM%QrBI?s{`bkyxD|pB` +z!LOs~RlDG2`dtEhFz2mq_Vk1LdD!fX%0+yMUt!Qlt1-|nwr8Rh@h2vtDCcLypD*;k +z0T;oqKdlJnKh~h-7ZXWj1)0@S%@934B&wd2@tt~cJ?qA#sS>1H=@+{CosZ>XMG4X7 +pj+6Ucx<}|`XAc`QUQ3;qw$zWv#>e*6g3#{=_;?-gy!UmO;BO1~<);7u + +diff --git a/themes/bgrt/throbber-0023.png b/themes/bgrt/throbber-0023.png +deleted file mode 100644 +index b3dbeef0ed06455beaffa218655d8070cf2324d7..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1603 +zcmYL}doBm|NnwcRZPeW-J?vR*@C$Rb2?0KnL6w_rep#0oNfxIq!z;8Z#dz@#wKX_&Os +z^z;NOhQp>}l2f@D7M+*QyueMta8qdMG!BNtN@Xx;?EmyQg-&B6QUp&BP?XhfRA2&^ +z1~`LQ90rTUIJ?+lv3OTkyeoM3*O6XmX7BDySZX>A073k}*VzT!bf81b;Gb342@rI4 +zDT(PZg*?+;F95RG3BbQ{90Z-O4jU*TXubjEaRI636r`w%zV +z3WlSbpAvzebZ#%mMy{Z +z7Sb=UFwrh30BM&OA}C=^twxy@H$!5N1sEq+H +zT!NGsafT6Sb=rXf<$JbEL`uW$g#$yTaVVc5svG#x!H) +zCp0m3Duz>iTXpMazN^JExK8)lyOBJ^?>5H85jPT19$zs8%%U#r)xz(E_z)BB4b3!4 +zR_mCv&jVhVci5qL-%(;;U@YSBgCLZw>zQoHvLWn;;I%gRLNPbqcwC2HvSa&R$Df)+ +zhnyN&n7L$1N3Fr412*uF#Ld8!GD3H2nlMDE07k6|QP02W=CNQihnCAL=J7v0sYEV1 +z)I~L>32vv2;rF4I)K +zk!&*pDnpU{`FGTpUmtBeXKmiY>^2+-~(ajh9}F`veNqPA7|r1|c^W()JS1G^4 +zEz5q9TXVa~T+aLjR;Bk)=QQ7EJn_-_;fQIAlMd4(I|iz>J&QRm=q0SGvDB{1+g=zu +zdEic2N1z1$d@K>2>H40$zw47fje1DFY-Q^`MdUlKK1Bbpv#S9jamc#Ejr^F97B|tI +z=YHkpbvjQQtILWukz5`5vqr3QY8I}g)mI43mEXw +z?(H3CG+*U675_nPhRY~KNzQndXwo#-f1|uV>zEQq|_nw(S|l#M$1#*3TxEz +z36e+~RV5;~t<Ydlqt;ie?wH8Rqaa5!$ymVbd +w7Va}%9+gQkg;W)49{h64Q@D6+QnPa~JmKc`YyErcp~H99LK*gV~H-4qx^27b?k@6to%%DsmVwy9Hy~h8{7N{$()LWYGLG8bp1G4 +z#nB4+adIbVbr&fMQMwyrjOd(mU)|##_j!EY@7Lq;dcGg;&+D&G&LOh5&iXCu0RYe; +z5j`oOny-}>6zsf|lzC8Kam1rM0MLf7)jFWG%n&qP`TMARFJ>$qKruKhIx3pUVueSb +zc-#n76qApNi#@^OB=8w1K7-Dp^H97vCYw#?{-<`dSUUSSEwc{-t}aRin2s)b%@EKeVjYj91+oL1nco~%52Ox*9aS9la +z&i(&MJG28SV3`kMy)U~@M8wj0=KkTVI8Xr$7N1^ZxDx;%!z54l04gl67{jPItbaym +zSmUMBNVKv1aAPkFdCZu=_tU=?Lp19;>NfpC;tXCr6a${uhp)V~a +zI4`H|^M?Gr%}_!hHuU4&Vx_eI7n$T~%#o70pI_}KXRbD6pWX;h0uKDp3JH8T>}^K0 +zff<@@b9m=^0)n&II%@v{OYJ{<(<*!pr}Q=3nxq*!WHJBTU4e9##;cJ`6>17`9ra>1 +zUS~QnFB&oM;*vzCsh|J8YWghaDmwpt;q1%*By6sLOLp#3MN +z)4ibL;=0?Hev!y2t&>wl{f;lDC#}|EDYB%LN^iui2Di-As)UoTACE)G@`9J5r4WC` +zaLMi;KRXT_T@bcsZQ5=5z;aHH;c9)U8Ut9+|wnpfxw +zP1}^{nK}{Tc7G-IFucrX)D}9DG1F0e9z`hWYZL}I?_c;$r+@*cCfLO#flEKok4P>}FN(yvEXu +z5KfW8uRlA_bd!$hZRo*%JV(3ov^R3dc0OKduEY~ +z5$7Sp>x8*&AyCtG3f-!ppqJ;O=$%NG4AztfatP68N{hB_I1w7Iix#N5DoC@XF_avauVm!Ef22z)- +z{$8sk`&<&uI_8bll;Y3RIjn77+>+VT7iYTAn{PF*=)0o;=}?hRSAGgA(M^~LTRx5X +zT<|uu@Dx$(QGZfIVIqlR=a*Z`Q#C}gBu>=HBGaBqH@!T@ZZ$_iRVPM9+ +z^Hcc+N@FO+wS$v+L=eT{))r@YBpnFGTLoH{gj|rPb#CXAM_djW=iceS%^CjIRR-0quIY_p +zU?5S|lL%qe$0@jqdOnHV27xcaKjDy^<-$FSu;h#SIKj6?8#}ziGy~%Ohvcn?Zof3l +zoh{iB_>DzQnzoCH^+wpdU;lQoLoQt$Je6cBYqAfFG +z_4YNYs&Q((%c$YG&yJjgIHMMwXX-%}jK_*@F{K1A;C3-G6wQ#HhoA4lZjRE+3q#2^>ob +xnW{0GfYu~c=SS4;6s*o!KNBIY>@RcvTcZ%$p7KGe+64ZC0BIlDQ|u9z`433t&fow5 + +diff --git a/themes/bgrt/throbber-0025.png b/themes/bgrt/throbber-0025.png +deleted file mode 100644 +index 3905e00eeb09a3546eab2dec2158fa9bc5f280f4..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1604 +zcmYL}dsGs36vsiy0B0%Uqm1bmq`l;kHnoM1K%;zt6bZkrln|nmSLJL?-Hj|I$$3}BFOx}NLPmf`8BIs$)K)NW)~D)tx*E~gJH(?R$$3}7%hOn`vJ-OqTR4)B|7+(ci8SMsz0-Wu@mS +z9(E}B#v7oGQ|&_<@yEfg7Na%uiOSB-iwlumO{ClP_4T+Nc>L9ks&n%Cn!~x>oS0|% +z^0ib3ox44q;a`)gE|{-aEj%MU`A6e?Z^e~}Ja&V@Z+#j2YvRnK+S*+N+BFCGh?H>r +zHS1EhxxBsOO7-VO>e=g8cr@9=hnOEvva5FKEyWiz-{Gtkp5PD1069e|v>cri(#q5;ziiY58p?ksP +zu_V29EJ`-(anf+t+sSS{sG&t6V>-p +zGmBH4ce!bU!a5OPYtehVrrKx94c-)^bLCsLJb5)z@z+N+7if5>XMY<#uI#pc*SWG@ +z0`~~jhcyikE0|glM(K#Z2bbM3jxp!v-`Hk&kZ>#sVW&oos03a5H6to +zp`~-BM-`?bt%z&^YZaxH4BgK}wyum%C60$aSwBb^Qq5j^cr9`?^p$m5RBE%7n@*)v +znp5+Ni!SVf$&oxWd3lJ|*sRUcw!u9hx5(LnaM%B;L2slYXB{iASK=X`ucL1FRoSvcsM^y_=sOM?v#moSz?Av^`%uIs8f=J +zjsm^vhDPnYN?NT&Ef{%= +z@ps<PYq;ZF~D4IVE@+G>%VU|P~h%*?N? +zTaq|ppr$Qzkn;SuOz}0Km#f(htaP=)D^_3r$axYZ2a0BM`t{<+d&F~XQVR*Bk&Am^7d4XaWsbl~oT7)zZjixz?>dejRqAvxsS|r|qQq +ztvL=>_7)aooX>-^7G9L-I&j%Q5|j$SjF +wD~E2)ka~oIzC8+u<0Gd@SoVvtpxGs$Ch&UB0pY0y-8Tpz5q$~O9${(!0^C;FL;wH) + +diff --git a/themes/bgrt/throbber-0026.png b/themes/bgrt/throbber-0026.png +deleted file mode 100644 +index 4c02eb167941a3611d36f1b0cfab5086d77ad0ac..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1605 +zcmYL}eKga19LIl{Yh&g4DH6`&dT0-5hIAur6Qib7M%k>WZDt!|=3$~Jc0E-0dRlc{ +zNkTiggeB!6*F}mf<+ySdtHw*leqO*CtPYQuBamUyIprN~2N%ntP7kLb +z*enX-bQA}{q$SX!V>yusP9&91Wh2uywg=Uk{_Mr(5>D2h%6kVw}b*8#mRZ*WGzz~5J4g)5)~`nB_3 +zk;2p7^!6((RygoO;7Fvyr4ewa0_tr-B8AGJ0-Q)zG?`3gnL8p+G1;kydhaQ??j}E^ +zSdhy4|4BF!jSpJoD6r1=>;wvp$~Gs4)0qkdP!5>nt44MJ02;@8c?2DWB>mQYHuSJo +zR{{2xj%RiG`9Mzt%VT=Z=WWyAzAXoxV+UhzxOs49Mz3gSZ-BTA{ZMIIbEG~J!RZzb2ecD19+C%=b=4pH6}Fo6w_zp@pR +zg<&1-c5}k1lUqA;AAMNfB{o&Eo3xSk_`ZTB)!4}L_G^F>j+`65!Wl=uxd6ez3*!y! +z&!q@d-9>&@bw!#l&DCnmMWfVAB92UI@wcp)bh7Vi?QXe0r9aG&U)1X$O8>x28@s^~8W#GJLJZ(7xW9hML0){J)rD +zv@d8PplbIQ(+)?QMP*US*tdb4aY;PH)VP1gJJ0%LRx$O0RN#yTcpn>BA{ +z=ft;=RQC4O#>sl6P}7%clf49VFtfj9)FQ@OAgg6q5FS`IjHxwdj-kV%hCjiMBpS5d +zDa+j6n!g^eGg<&0hWNF+n^#UZfNMLeFoRzLZLZV!ya5%vTJqC2ry$mf=PNz|T)Z4t +z)W0)WsB~#`u3*%ytfCk4e8j`-j&xzRIJ-^HG$o`;(mmca^~p@B_+#Oc@2FR{VUC~b +z3(z=G-|jy2X2Xmr;rjh|!B{?W5iqF(E}^b{6_*%`aM>nfJr0>OYo)?CUS7^ET_}$) +zx;S1jsX`O#O@ZtqGEA$#l$$=ld@v)r%_pHD;$m^wN2s^fscs?3L1TGaNot0Z@q{dV +zb*i=$W^udfYt!}oi4q-O8mc;T50Sx=Tb#K)bSIuUd=lar)MFRpHki_!RQ)y=i_zBL +z<+H12M9hnixUu%p^3n7?1YPigNB-xdkOk>Ti2Jix9Zl9v_jIkf)*C9>Z=mP<#4)X! +z3F?nFEaSJ}WQim<+@ehKz#7i +z%Gb%y#@zNoE~`C|Y(G=CpTd7!A3`!~J~7yKp(1C8Bvin4%JdE_-Qa(PmTeCOx_*BQ +zpZCH25n7y1@WGurC^n&>Qc`!kAA4IUV1HBRM3!al-kJo0D_2Zoc4jfG1*)zV!5Ww4 +zR(G@PCeJ?Z)^wgtR<*Sdjt93Ss*#i{1bA3XLoO*JBVx$l`UYHXyrwMTEl&MB))-tC +z>-S{I)2i-qjky?9|^4S*FA2I)RZ_`h(WEkpwZiqXPtGcQguH21YkZ9q5 +zP1|+%wlRj$jkwq8XVGx?UZqf0=yUe)L!4=>pUZsF^pcygO!yq}ZfOI&;4(oWZPgp% +w_dN>G8A;-dz?^FSl8Pj#tYHI*=?RwN&~aO&a;Y)OHos;umu=0hFsa-Qr5+WzRJxpV +zO3{k-3gQ9)6uHzYK+y#wrRmIbr|>*jQ6PYch+%`6gDf_i#=vkn +z3=EUS!^B1_~RF`o_^vrup*}4owO1#M4-~rqa`0 +z@_tiV92)RT&{!-!r%SU@3H6ttKLd;g0bT?rhE4}LC|m4-SZcCCvU7C{pK05$jL?r~QfU3E7_hh#l)4at-srgS9j`%&nMZGj=zi!HKI8v?x% +z*5(n`c73y3MoPbOC(e4WN|-!vYs(yV;y#Nns;aE4^vTQ5x5`ek6t{e&3|5;`r!B=z +zFVD$}TjfTbk>%XA3yyQSIs0p$;*+B~Os<#G+dpm*iNMW414txw*q9N|wu<|td3Q}@ +zupH~!JRo8dic6XZkZX19flfohyDc}*xMVXoQ$m~bdMmznQoQ=8A)ceeYaQ<^oAeil +z8gv_))2*Au^@+TA0)p%l)$}J)`ZTP)2JRRKzc5;q(cq_Q*%RK{E4NixC!Cd!>(lR} +z#3rJ1HZg3b&y?L^YFG__S8eO%@QNoJ5|H0v7K`QgAi-9ZrL%<@ceV=QgnDD4I=@a` +zxU8CdkT$MAD5){bN;H-=WkSuCeY_HOc)Fw|J_UMtl?*6oy;9wg{OpgegO}R!%hy%x +z5HAFVrHlINOtZ8Hew!P9 +z&z@itHO3&*K>@`aq(sCwEMWHJn4$)m^|8-PPW8%i^|x9vGE+DR~pWP23BcEGPq|-c_u|Z@y@` +z0v-_e*i3LFXGTKsAX4^!iBC5uOe?7o>YVw~^4<_P>7vs_=vKd3NmuNZ@6kSR(Y1ZB +z!=U!f35ZXDP--3ybM6w)`3F5eYGlyR*hLkIy@A +zy~rN(*a6jhkahZA-Ur4uCxQC0lF#cc*XX)a88knue%XP}_Qpo4*j9aIWZcLUc#2^) +z?rXDt(?sZVerF_HO}L}#{Vr=db2X~_Jt$pneB|Zdd6HMRZcC(J;n$_@k1AO@yP5Mg +zaOVIIRs(D>4aQx5d$ +z(Fw>zpD)FJ)vQ)+t##GQ?q>)+joCg@-aGf@XHm3=Ncts&dDH8yDyt#!0;ynN&U?tD +zrf0XeSoeAFJN#gLDDeqXw)>t&|K++L`lgxXBMx76&V|xTRd%X!q0+dWW=^S&SWU}? +z`HW8TC)It6MsZdKg*A&O69myf+obla-gk}MZdGReBbOId?K5jmrb!o9RKsT0FnjuQ +z9RvuPr$G`VL=`QTIO0Tig=ys4>WQa2eTs)x>ZB!BL5KtAQ&rIZOnZ7{Q8)tDuYOlS +z@;K6_lCu%L`A)@H2KmR;6^u=2hrw#^D5TdX)7ZwoTxi*tOP%)_G$H}ek}4b%v=WBJ +z!IYNQ4#AccKKE7hMj{p_>mLtQABE;q%Gwqk4OC5D&PSZORzDr4LunacNpBED$7Td6 +zj^=O8>a64>s1*4L467ryg2yg;XRkBbjSazpYpB%a)C#xoy$N8E#oSWjkwf7!J2- +zu^-yA^O~uEM3&30)*`3Av!_?vLtmxcm>Ek|*>@L`y}fdU-QMuNcOEVyH_PLQA3|2i +zjJtY*-=ufj=claYce$4(D`46_u*_V@;JkD4K+93hd@()=D$m&+Y8&J@4~=&-?v6=lec?z2dlCF^(%e +zRssOvNG3%mfQno$dt312A3XRH6eyRJ!Uq5c#Bx~yCmPm(W_Ug^IsfBqHUmI2^EeE2 +zPBw=_rK9;gIyx&mAI)Wd$;sQF&qU`l85{;5&F5z4<}!HyX#kDQ$jzXMep>-XtyzwW +zrsgvM90rR=W3gylAQFoW4GIbk!fJGrd%+&qa!*n=hXG(Pq5p0izHQ^;BaqquGYXFi +zLL43!9xaOGP(Scgd05| +zM=bLMa6ks{|0e@5Az_I(CO{1TC;Lk}o54pWQaM~u0W1zLJicZV0IaZ(qa%`%p+(0v +zECUhNpXTjDs%$+9ixd;fNzNkoh$9nCZK)KE)LUDTdg0*gr?4l)xY?)iu!Ap?TH5`+ +zx4w*PVb;LPNty)O$c4l1;j*H)MRl)DBc*wng3JQ5s{8F&Z7aA2H5v_RpQqS=?lh~R +zfX+Ipy`%I%9O_={S!VK>{6hTxec>;6;7o2(J#{C|{U@ofLzSq)h(5LGAQvGP%22=FnvrO5$yR5)HqAPZ`lHm%bR&NT +zNZPj)@eQg2h1-Lm?+fX)4OXu|a8`Z;pGDY_j-0=5d%kRSoNhi*dy~Dd*o`-~StG+;E5!ZFqv1cbfv$$hU#+qE9K{yMQxCI=0}=r +z{o#imeXrF=6{U-Pi#v=&HvCVb<A8zxLV9JFa@{xEt2FcDZ4W|!7j%}-jr0ORh}*N9X2||i9^#lG8w+f< +z9rf^@X*;~Ue*C#Cn_x{@UDNnL6|s8?+oP8%nlC0>`v!JetQWlX3y*f6hv(hz=$d|% +zVy^e7P`;sbCJNYvX@5k%+FiVXX2-rlvx~e&FuujS*q-ucv(xQ!24f(d2#ZD*R4%&{A-9}(RuqvB-rJJpJ90~?>3J;y5dvfv@_ +zYBaEcEeyF(4^?P4CS5eeR0qmBr9Kmx4I$z|acyLbug}~F@mpj>(K=ls!yh57wZiP|w`Zr7a)$J)EEG(nL*lo-P^*R@YZIygM<{*v2gw +zCQxe`2+9{)@=YPs5c +zzJzk>UGT7h)t!1K%&(y*BEZ^BdcDH9LT~LBYd7BbsG!8M1bMUex%pb%2HH|JwGfX* +zR!#aP@I%-yLOa*7)OS=Yv?W;SIF&Fw?^jE2HQziShXh>*d=2gVezj?E+WEWiXG`Jj +z9ps5dt=!*~?b>_yl%V-m;GPW+F`C~`_ORfp_D{{R30 + +diff --git a/themes/bgrt/throbber-0029.png b/themes/bgrt/throbber-0029.png +deleted file mode 100644 +index d9931e1ecbf2708841134a846f9d36d9cdbd20f8..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 1588 +zcmYL}eKga19LIm!qOFifi;-usn{8y~p-HWVgCuIM(q{c)?8!Dgka_A9NuAQ8sPu5v +zwXhJ$*j(za5*4kaEUARrMC^K4_ovQ1_j|sd&-vP`U&tKoX@Gy!Y(gFzpfMHM| +zIRa9fxmutPbwO(CI3x&OV6*@L7MjkL9#B+_f=qwm2C8r)lLZ3U1TGuICNkM +zW8FP$@OU3jPajXbylrp?G_!baCX&ep0UXZf*LC;qbbHK)*n*#{@aYhA_ZH^b8$+JS +zoVOmb_;lcxxZ!Z_`N{=t5Hy>ETNoe*1cV8EZd@G5xADO3<_R(*9^Hkw=^T%M76keK +zKk0@e1Vv5@A-v>g_I?Hn6xeK`vw4sLcz2@c36 +zd~XgG-|T7q6#YuQcTZFC9(me}p5csJ(hl!2=m_rJyC*owU)fNc_ICQFvaZ9l?``E| +zUX##=QrhdAdM2*d=?Ap6RPs=h +zv#oPc-ubJ8$irvl&sDDVfxSKlY{mlfLTytdE|ZZYDV|R>%2zpR9JQ8#du2*hjcBys +zfEVXo^c~v(bc+iQ-U!nHjD~{#P~3KUU#_>q$ik^>RSmHdjj9LdsQ;J<)!AdTWEQvK +zy~p_VU=K8_b8mGnr~LUQgH4oo!bbSpdDTvo9pfIC;!PRd$^4PnOP07k$)1V=$BN_2 +zx8}UhS5a{J+h?OR`ou2h;M=?rri%CtNklfjC`DNIDZMxP&cYvGX%3GC$}m;w*Jyo< +zNauUA&ArsFM2843NjLluV&76~LP(g-TEjMTtjD6QLnT5Mcf!@CnzB?_K~O--s>4@mU +zm)(jZn8{OrbiGTGB${(ZLDj^}##db@byqSLAE%=-YD0vG?Vp{)a8q_{X?l%eeo@(1 +zYmu3jFhS__o~{>uRmiZiI~%UUC-|%(ySi1ZtNgf(haWifg^ScQdFCExV>+r3K?wTj +zd!s*j(4x;vIw5Lu+av&^bwwByCfkm*;9NpR4yzwZmB5jO-LM +zIEKrO7ex0`K6O1j-=teMKK8&M{V7P|063?CgISmW@_U9++_7-1|5SEO|Rmey;+UOCm~rawU07jqNUQUUNHqj_0AzquXC4W +z_I}RL(;pt2x9@@z>mvXr8fvL3gi0O!cZ&{n_tmg$rdvEe_4oHxMi=2d2gp7ce`D** +znW3Dj+M<@w%hf^2NWZuBlCUq*X-uL~rHs1YWc2xi?vo{L-)wnH6lA3wuR6Ul14c4% +zBAmyVm#_U{R-Gm8ed(FVqBHWb;EA7L6P3k^-(rjU}V}$Z3 +z;z_1J<-oH`G5=n{w&^psOtJrwJ)NnP=o12FH^dJORAM@bZpGDvlB~it^DpWd=YTYO +zb11M*1LHmGkaXEe%wd%zWY}ggyO?cmwd4{fVX4$oN$DJP +zA<127>xn3)q%_V?=Q+>$KHtyh{XFm2=XrlWe|@v};=MH0*Q)~npo#PL +z@CVgwwbWF=&N*`AGbk{YcQ6M4;5w_N1YEkZ4m4f3o~b|>4gWE1sc4>kt>DR`K|#@c>8DY^oqsef)bOCFi8b-c)+2q +z>zvfSGOr`0AM0rJnsJS0v8>>=wceFI`&03$t0wKWm871)i8hVDLxL+brSCgma3=e8 +zg)Wx;4uMBM?Y(TCpc%SxQIn-N068rjl&c5ba~~q#-Zc9qezw^#+r)1!cxK}w{6cHx(+!rX7tyCFc&K(}wK-X_um +zbkfH>)sY2%0q#k-rQBV$>Nc)kCLUCV8x}?tn4e-Qo?Lz7B+HR!|Dogdm(?vlWps?Xb22Zys5>eJ$UBR_x{Ee^9D`$*rsQ4L*DoUo^&N +zl8b~Yd?Qy#b=Qvk_S^ZNT4Z(ex_GabSAvz6+26&J1J0JPc&hmR2R&UfI$x$|rro+E +zH;?4$Kd^#*M$Yn1YGK#n5!_OhkWQzw=;AFHXBkKq33@DZ^oCFJ8i<#SdNlaPHU~tm9;4clFB7nQKE(bBfZS?5;d&MvpbwawC2K +zv1dQx>&G{>+a#i2?IaaCB2(>?hYM^U0b#25&8B@95>rE9hVaZ!C@KGlasl%t0{e7* +zgIker4R0G6sXE-(x2b{Zr+O6lRViI*Q{*}~O09b;$*28< +z<&M2R-Zc|W=NA>bJ`{hMTOszpKa@ +X`%H>)eQ8Yx_}u|GPrOH^dqny_<-gJq + +-- +2.20.1 + +From a7ab82171f3a83cf709b91542d1299362c47474f Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 9 Jan 2019 14:52:33 +0100 +Subject: [PATCH 42/74] themes: spinner: Add watermark alignment settings + +Add watermark alignment settings, so that distros can simply drop +a watermark.png into the theme dir from another package and then have it +show up in the right place. + +Signed-off-by: Hans de Goede +--- + themes/spinner/spinner.plymouth.in | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/themes/spinner/spinner.plymouth.in b/themes/spinner/spinner.plymouth.in +index bbd42dc..6ba3f42 100644 +--- a/themes/spinner/spinner.plymouth.in ++++ b/themes/spinner/spinner.plymouth.in +@@ -7,6 +7,8 @@ ModuleName=two-step + ImageDir=@PLYMOUTH_THEME_PATH@/spinner + HorizontalAlignment=.5 + VerticalAlignment=.75 ++WatermarkHorizontalAlignment=.5 ++WatermarkVerticalAlignment=.96 + Transition=none + TransitionDuration=0.0 + BackgroundStartColor=0x202020 +-- +2.20.1 + +From 203fe586bb698a21a90adc271f8fd2ed17905cf9 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 19 Dec 2018 09:37:16 +0100 +Subject: [PATCH 43/74] themes: Update spinner and bgrt diskcrypt dialog + +Update the spinner and bgrt themses diskcrypt dialog to match the dialog +from the "Disk decrypt" mockup from: + +https://wiki.gnome.org/Design/OS/BootProgress + +Signed-off-by: Hans de Goede +--- + themes/spinner/Makefile.am | 1 - + themes/spinner/box.png | Bin 870 -> 0 bytes + themes/spinner/bullet.png | Bin 131 -> 1016 bytes + themes/spinner/entry.png | Bin 1431 -> 407 bytes + themes/spinner/lock.png | Bin 329 -> 619 bytes + 5 files changed, 1 deletion(-) + delete mode 100644 themes/spinner/box.png + +diff --git a/themes/spinner/Makefile.am b/themes/spinner/Makefile.am +index 2a008cb..6c3807f 100644 +--- a/themes/spinner/Makefile.am ++++ b/themes/spinner/Makefile.am +@@ -3,7 +3,6 @@ nodist_theme_DATA = spinner.plymouth + + dist_theme_DATA = \ + background-tile.png \ +- box.png \ + bullet.png \ + entry.png \ + lock.png \ +diff --git a/themes/spinner/box.png b/themes/spinner/box.png +deleted file mode 100644 +index 54876e68097e45b215f6f4c4ab2f1c06c5bd1e4e..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 870 +zcmeAS@N?(olHy`uVBq!ia0y~yU{nIK{W#cwWXpePWgsP4;u=vBoS#-wo>-L1;Fyx1 +zl&avFo0y&&l$w}QS$HzlhJk^Z!_&nvq~g|_Tl@W`(W@UmTf#;@V6`wU#Lhm4Z}sF0SlKS+*^aA-R3`>*{yeueW-)S*X4G@YAFJoyCWu +z!{O)Wo_xLQ+`LKbFZ(4ABrTh`(q3?m&E9!O)NP+RvD74Xyi)P_S~F#t;;ilfL3MHE +z1W&=NWnIR?iwip@ariP_*|lfSpSt|~_sjj3f8KO8Ywhm&2b4~2+9S``ULO}9zu(%z +z;>Y5hQ&=)(7Mr-7-7@Rt_uuQw%gS~={Np^M{fA?Nt4VAm@8-(l;>)-1-mMj$9dwNE +zs;kh#k7^}_g&z-p`}S>h!9D(Bb*BT<^;|cq{#~Z~{Q2|yM=gBg{-4?NKQi;#zkmOx +zZ{4~z@lFfFw9H%si9HeV@&8Td*dJTj{p0k@#gWS|-{d(y@i(hYb7IDsusa>g;+xL4 +zYv^}9authLV$_Kgm7aXQU1M*+4*vt;2AAiV*!&CU_z{&>mCVfaPyDrDg8-uwi-HS~ +z;t*7DVQ^yMpuf;Xm%BcZ)8tvXD%2`NL!T}&&+K@Wvg%+$fplN)ckT+d)#c^o^`>h* +zZwD{A9bmkC`SSeNyZ$ZHoL~R;T$Q`K`}^lgA+5SAv%;3@@F(>|6^2dHd{hy_YaB^>EX>4U6ba`-PAZ2)IW&i+q+TE9Ja^yG& +zhX3mna|8oIpyS9Ns@fau@%NRi*xj9;WIFC2TVqu$8Dqda2zSEv?>{yC!a+Hu5Y;?k +zG2w_gW-eIxv>*FSQ|#wkS-ZZIhvNoAB$#EtOxw^ekn8z?#eX56@8!XkVaJD|56{D( +zG|!C1(DPwPc$d?-4tYFR;!Wt|uP)qg>%8B3ypD!stO|R=fj1$UaQ5a!5P`T9oVlMf +zH_3$c)a4@nJa^$(J|yp0J>+gGLoWBJ2vZsg=^;l$PWn7|Jwvw<(dqf_Mz+Jn=iJrR +zYu)y@D={HcDSwQY`goPTf+Erxr9YN1no-5t`p6iLS6o1B1x`rk2di +zEn9K%=zr?T&E2z?%vsRFG^cDKd(OEOI4v+;@N|JjDKpP9$64nz+w60m%YyP*;-X7h +zZ1E*8W#v^?Z2vW_7FJ*LS~l8HN?Y7?OPg)J<*iiIT9q2B)>N%}&9xlV2Gx6N^g!-w +zYBZ=dVzKMlNeyDN4-?edi8f{+#*skW8UYkEH-Bc6Q;gimHD*(0Yzk#iBW-Y2YQ#V= +zZp2#YV0V)Hl3URD5;y)GxzNzPgIs9n2D#7No={s$|Ds3-)OKOZ=_D164GNnV_R_vd +zKc2%?1OGEabw08Z-Vn@lL)Bl2?92?!>7r +z1B3g2Gemdm4(CTfv8V@mPx#JxN4CR2b8(&M^*vAQS}AC*IFO3hpl< +zCLRK8)L8tIDJQeZGLsDl8ulot=omO(nSQ~FCGa2lSzajfp5LiP2(p^?!a4u|002ov +JPDHLkV1lW|C*J@7 + +diff --git a/themes/spinner/entry.png b/themes/spinner/entry.png +index 65810dea3ff2a03f620f13cdb9f680aa116c033d..e86c21594d0bd49dc0273f37200d7e3b9185d26a 100644 +GIT binary patch +delta 391 +zcmbQvJ)K#xGr-TCmrII^fq{Y7)59eQNM8eDc@8!pIh(~eX!0s%nR?#qKbCYGe8D3oWGWGJ|M`UZqI +z@`(c#{r7Zn45_&F_WDMz!vPX)5C6BMZMwAUs^Sgb!gY@pRFuc{FDQSg#47$aNoJ|< +z!dNZOl2^~Bl~m93uK)4islEE$yZ8UGUGTiTWn=1FF +z{*z7r-8^-j7nh%u2&MiMZGN<716xV$uhdAMcK3~U^OFBr?U$S~e`)A~#oKZhuUfUe +hbZgy;*T0_f|0uQj`b1v+J}@vCJYD@<);T3K0RU@qq@(}< + +delta 1422 +zcmV;91#$Y91D6YbiBL{Q4GJ0x0000DNk~Le0002e0000U2nGNE09ms@jQ{`xeR@<_ +zbW&k=AaHVTW@&6?Aar?fWgumEX=VTbc-pO&U6LCs429oW#a%*6LJ};8->U2&%fAQA +z*s(J+HOU0Z-B=(A^a5Y>}qvkN8Wn7N>Tk*-_0z3Gbkxl8BMN6+#= +z<8&}Yg16lM+L2R%TptP^kGww1gSTTR9Yb_Cyo)T)t9{0$V@UWWr}IDLqgUcD%Q-)8 +z$Lulw`ae2?(G~WD0}mm&@U-PcFat?a@FYB0;214MTaTRIk6pMoUxLT+{n%aQjF9J0 +zgv-tVdx_D1k(0j2dH)l_Cj@#-=G(^h6S=3tycMAh6LMdC# +zP#r%-+jq^V2}^7s)(=EW;(FpWiS +zJuwOhXr7qrj_Y|esldc|-cllNl)A%btkWRTsF +zE<<9I(dEoegg7SfDVRA+=w{=Dp7mu!P?w&k*Ns?mHWXV%XIhD*=aD-{L>>;O| +zb186IV7frNU_>dEtJGMvTJ@T0uB9P;T5Q^^c}p#~(z#2=_V3m`^we`Ng9cJ*#G%86 +zk2LZq6S+2J#;Mb$&ouKacWQ^~Gc|f4_c=9xI@A`ixX1Z}8pQ5zCTML}UCcm?BZ0Ut +z0!V0H%&tT+@*=mGT^WbgI{Yz9U2r-rVjvg?u}-?PdyxB-ThRDN-1sAMVWImMewE`Vx4^=DpJt43CGro;b5AA2#%S5 +zi?o(~)?r2aIw2c8r1~aI_i@=xsp7W#SocXad_(t1HGD(&Ni}>!_enK;L-$EFd_|Xv +zDg^jI@w~o!%%nGDnwZ8(S7TilWOZ(qdW8syB?UJ}s@AE(VcF);XT4-g+w})s;gh~U +z>I#3S_R@t-5^xtwS%T6{xWl5rN@9@=uUoliKY^ok@@KqbGcx&jS +zk)z@(0e9l;_^b>60|^X|qww2t`jH_Ve=Z{c04^f|c%?sf00007bV*G`2jUAC4mu9y +z$&hLQ00EmxL_t(|+U?xUO2a@D#qo0|6R8UYan<*K96|6A)Jjcltsv5me2j~vlh}=! +zbo>7;vkV;W+`};T^!O0w^SN&C?v-V^WCHM?AeH4&t5u=paw&U#c@F++Cg*dRe~}_! +zbe2L;U6rz?lRo9XjNI=3+QtmU|T+iga_j1n3>P8GCU_6uL%qh!rdFwuy +z89@S4!{kgRlh+_b>_|ZBRBAKhr9MPv#*PG}1j$S?^%Kc;K_W@O__pD6iu1B|JjIDb +zkbrSHGU+sX20Ic#0@C)Q!9=n)e@XFpN0NZ?Ts+!Iec8}ec>og1hQ9vRpXLrgLXcu> +zr}kLq2ojJOq*ylCS=m64fboUHu>K}Uzy&)}Z0$slfJ=fD$CHU2378b5L2DNmCvpU& +zl?|uX?)>5^fbn%hf3!16fgK5$D&DmV3SGJg5-=%9rvb%|1We=j1pq+;R0tA4kN`+( +zAByyK_b?}Ny0_y}JiBL{Q4GJ0x0000DNk~Le0000U0000V2nGNE0Pt*m2azEh9u3z3 +z01ejxLMWSf00007bV*G`2jUD92p1aW_9+dKTPJ@3(@8`@R7l6|mQ7C+K^Vt>&uoXq +zq=j~~(zSRa2v@mCgMA?yfdu7ZYWxI#5EH(FAz~zc1mRm?@S?*37ojBy+X%TmN)GJb75vHobi-)^;Ow^{^25D)ln +zVJUwQ5o$+Yh|>~N*(p99R#8gD3)WgQG($urUNC@CD*hV-h{!*7<3BOmwwXw!066n~ +zeBU1}Scy=nJf>JIqSQ}$4i4V4v-5^;{r+gci}^*$U^?!{cU+x@XN7G5&0$U;AL +zI-RCaSR$9Z0l@NdnUl`R`6iYHz~tlv8ygSV-+xD=(ToOMDiv5;UAY+N^LKvnNhMRP +zt*+pC9$Q;4qj_qrb$I=hM5po1>FE$&=e^wXvQY+?g!WNlMF+0e>!FX>Y&J)jPJe9q +zLy{*?E5XMPhYb3IO9DorLbgs51Q=tYNhf0rCc*-8WtHncI6iQ%*Fz_C{NUPA4KJ6C +z9W0h*$^8fSOfs3|^z`h~{EG|>Xkg%8cV9S8=9x%5vVRBjzI?CiB_rbi0000 +Date: Tue, 15 Jan 2019 09:48:30 +0100 +Subject: [PATCH 44/74] ply-array: Add ply_array_contains_uint32_element + function + +Add a new ply_array_contains_uint32_element which checks if the queried +ply-array contains an element with the passed in uint32_t value. + +Signed-off-by: Hans de Goede +--- + src/libply/ply-array.c | 18 ++++++++++++++++++ + src/libply/ply-array.h | 3 +++ + 2 files changed, 21 insertions(+) + +diff --git a/src/libply/ply-array.c b/src/libply/ply-array.c +index 7d23953..26532cf 100644 +--- a/src/libply/ply-array.c ++++ b/src/libply/ply-array.c +@@ -169,4 +169,22 @@ ply_array_steal_uint32_elements (ply_array_t *array) + return data; + } + ++bool ++ply_array_contains_uint32_element (ply_array_t *array, const uint32_t element) ++{ ++ uint32_t const *elements; ++ int i, size; ++ ++ assert (array->element_type == PLY_ARRAY_ELEMENT_TYPE_UINT32); ++ ++ elements = (uint32_t const *) ply_buffer_get_bytes (array->buffer); ++ size = (ply_buffer_get_size (array->buffer) / sizeof(const uint32_t)) - 1; ++ ++ for (i = 0; i < size; i++) ++ if (elements[i] == element) ++ return true; ++ ++ return false; ++} ++ + /* vim: set ts=4 sw=4 expandtab autoindent cindent cino={.5s,(0: */ +diff --git a/src/libply/ply-array.h b/src/libply/ply-array.h +index 777485c..3d8e9c4 100644 +--- a/src/libply/ply-array.h ++++ b/src/libply/ply-array.h +@@ -23,6 +23,7 @@ + #define PLY_ARRAY_H + + #include ++#include + + typedef struct _ply_array ply_array_t; + typedef enum _ply_array_element_type ply_array_element_type_t; +@@ -46,6 +47,8 @@ uint32_t const *ply_array_get_uint32_elements (ply_array_t *array); + void **ply_array_steal_pointer_elements (ply_array_t *array); + + uint32_t *ply_array_steal_uint32_elements (ply_array_t *array); ++bool ply_array_contains_uint32_element (ply_array_t *array, ++ const uint32_t element); + #endif + + #endif /* PLY_ARRAY_H */ +-- +2.20.1 + +From 88f1b1dc0e7c51d7065403783ab1057b0f3ec31d Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 16 Jan 2019 09:21:59 +0100 +Subject: [PATCH 45/74] ply-renderer: Add ply_renderer_handle_change_event + function + +This function can be called to notify the renderer of udev change-events. + +This is a preparation patch for adding support for hotplugging +monitors while plymouth is running. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-core/ply-renderer-plugin.h | 1 + + src/libply-splash-core/ply-renderer.c | 9 +++++++++ + src/libply-splash-core/ply-renderer.h | 2 ++ + 3 files changed, 12 insertions(+) + +diff --git a/src/libply-splash-core/ply-renderer-plugin.h b/src/libply-splash-core/ply-renderer-plugin.h +index db18d19..6b6ff25 100644 +--- a/src/libply-splash-core/ply-renderer-plugin.h ++++ b/src/libply-splash-core/ply-renderer-plugin.h +@@ -43,6 +43,7 @@ typedef struct + bool (*open_device)(ply_renderer_backend_t *backend); + void (*close_device)(ply_renderer_backend_t *backend); + bool (*query_device)(ply_renderer_backend_t *backend); ++ bool (*handle_change_event)(ply_renderer_backend_t *backend); + bool (*map_to_device)(ply_renderer_backend_t *backend); + void (*unmap_from_device)(ply_renderer_backend_t *backend); + void (*activate)(ply_renderer_backend_t *backend); +diff --git a/src/libply-splash-core/ply-renderer.c b/src/libply-splash-core/ply-renderer.c +index 5e83627..e0a0784 100644 +--- a/src/libply-splash-core/ply-renderer.c ++++ b/src/libply-splash-core/ply-renderer.c +@@ -297,6 +297,15 @@ ply_renderer_close (ply_renderer_t *renderer) + renderer->is_active = false; + } + ++bool ++ply_renderer_handle_change_event (ply_renderer_t *renderer) ++{ ++ if (renderer->plugin_interface->handle_change_event) ++ return renderer->plugin_interface->handle_change_event (renderer->backend); ++ ++ return false; ++} ++ + void + ply_renderer_activate (ply_renderer_t *renderer) + { +diff --git a/src/libply-splash-core/ply-renderer.h b/src/libply-splash-core/ply-renderer.h +index c0e0ed5..820cdb6 100644 +--- a/src/libply-splash-core/ply-renderer.h ++++ b/src/libply-splash-core/ply-renderer.h +@@ -55,6 +55,8 @@ ply_renderer_t *ply_renderer_new (ply_renderer_type_t renderer_type, + void ply_renderer_free (ply_renderer_t *renderer); + bool ply_renderer_open (ply_renderer_t *renderer); + void ply_renderer_close (ply_renderer_t *renderer); ++/* Returns true when the heads have changed as a result of the change event */ ++bool ply_renderer_handle_change_event (ply_renderer_t *renderer); + void ply_renderer_activate (ply_renderer_t *renderer); + void ply_renderer_deactivate (ply_renderer_t *renderer); + bool ply_renderer_is_active (ply_renderer_t *renderer); +-- +2.20.1 + +From 80acc33ab37b73feb6092d477f5198e4f57dd649 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Mon, 14 Jan 2019 17:36:22 +0100 +Subject: [PATCH 46/74] drm: Refactor ply_renderer_head_add_connector and + ply_renderer_head_new + +Both these function take a bunch of info coming from the ply_output_t +struct and with upcoming changes they are going to be using even more +ply_output_t fields. Instead of passing all these fields one by one, +simply directly pass a pointer to ply_output_t. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 56 ++++++++++++++---------------- + 1 file changed, 26 insertions(+), 30 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index 20543ea..afc8d65 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -472,33 +472,29 @@ ply_renderer_connector_get_rotation_and_tiled (ply_renderer_backend_t *back + + static bool + ply_renderer_head_add_connector (ply_renderer_head_t *head, +- drmModeConnector *connector, +- drmModeModeInfo *mode) ++ ply_output_t *output) + { +- if (mode->hdisplay != head->area.width || mode->vdisplay != head->area.height) { ++ if (output->mode->hdisplay != head->area.width || output->mode->vdisplay != head->area.height) { + ply_trace ("Tried to add connector with resolution %dx%d to %dx%d head", +- (int) mode->hdisplay, (int) mode->vdisplay, ++ (int) output->mode->hdisplay, (int) output->mode->vdisplay, + (int) head->area.width, (int) head->area.height); + return false; + } else { + ply_trace ("Adding connector with id %d to %dx%d head", +- (int) connector->connector_id, ++ (int) output->connector->connector_id, + (int) head->area.width, (int) head->area.height); + } + +- ply_array_add_uint32_element (head->connector_ids, connector->connector_id); ++ ply_array_add_uint32_element (head->connector_ids, output->connector->connector_id); + + return true; + } + + static ply_renderer_head_t * + ply_renderer_head_new (ply_renderer_backend_t *backend, +- drmModeConnector *connector, +- drmModeModeInfo *mode, +- uint32_t controller_id, ++ ply_output_t *output, + uint32_t console_buffer_id, +- int gamma_size, +- ply_pixel_buffer_rotation_t rotation) ++ int gamma_size) + { + ply_renderer_head_t *head; + int i, step; +@@ -507,16 +503,16 @@ ply_renderer_head_new (ply_renderer_backend_t *backend, + + head->backend = backend; + head->connector_ids = ply_array_new (PLY_ARRAY_ELEMENT_TYPE_UINT32); +- head->controller_id = controller_id; ++ head->controller_id = output->controller_id; + head->console_buffer_id = console_buffer_id; + +- head->connector0 = connector; +- head->connector0_mode = mode; ++ head->connector0 = output->connector; ++ head->connector0_mode = output->mode; + + head->area.x = 0; + head->area.y = 0; +- head->area.width = mode->hdisplay; +- head->area.height = mode->vdisplay; ++ head->area.width = output->mode->hdisplay; ++ head->area.height = output->mode->vdisplay; + + if (gamma_size) { + head->gamma_size = gamma_size; +@@ -530,26 +526,26 @@ ply_renderer_head_new (ply_renderer_backend_t *backend, + } + } + +- ply_renderer_head_add_connector (head, connector, mode); ++ ply_renderer_head_add_connector (head, output); + assert (ply_array_get_size (head->connector_ids) > 0); + +- head->pixel_buffer = ply_pixel_buffer_new_with_device_rotation (head->area.width, head->area.height, rotation); ++ head->pixel_buffer = ply_pixel_buffer_new_with_device_rotation (head->area.width, head->area.height, output->rotation); + ply_pixel_buffer_set_device_scale (head->pixel_buffer, + ply_get_device_scale (head->area.width, + head->area.height, +- connector->mmWidth, +- connector->mmHeight)); ++ output->connector->mmWidth, ++ output->connector->mmHeight)); + + ply_trace ("Creating %ldx%ld renderer head", head->area.width, head->area.height); + ply_pixel_buffer_fill_with_color (head->pixel_buffer, NULL, + 0.0, 0.0, 0.0, 1.0); + +- if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS || +- connector->connector_type == DRM_MODE_CONNECTOR_eDP || +- connector->connector_type == DRM_MODE_CONNECTOR_DSI) { +- backend->panel_width = mode->hdisplay; +- backend->panel_height = mode->vdisplay; +- backend->panel_rotation = rotation; ++ if (output->connector->connector_type == DRM_MODE_CONNECTOR_LVDS || ++ output->connector->connector_type == DRM_MODE_CONNECTOR_eDP || ++ output->connector->connector_type == DRM_MODE_CONNECTOR_DSI) { ++ backend->panel_width = output->mode->hdisplay; ++ backend->panel_height = output->mode->vdisplay; ++ backend->panel_rotation = output->rotation; + backend->panel_scale = ply_pixel_buffer_get_device_scale (head->pixel_buffer); + } + +@@ -1323,9 +1319,9 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + (void *) (intptr_t) controller_id); + + if (head == NULL) { +- head = ply_renderer_head_new (backend, connector, outputs[i].mode, +- controller_id, console_buffer_id, +- gamma_size, outputs[i].rotation); ++ head = ply_renderer_head_new (backend, &outputs[i], ++ console_buffer_id, ++ gamma_size); + + ply_list_append_data (backend->heads, head); + +@@ -1333,7 +1329,7 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + (void *) (intptr_t) controller_id, + head); + } else { +- if (!ply_renderer_head_add_connector (head, connector, outputs[i].mode)) ++ if (!ply_renderer_head_add_connector (head, &outputs[i])) + ply_trace ("couldn't connect monitor to existing head"); + + drmModeFreeConnector (connector); +-- +2.20.1 + +From 9b5d4df9f92909aa4c53d98f02c9343eb4ce97c7 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 15 Jan 2019 07:31:32 +0100 +Subject: [PATCH 47/74] drm: Stop keeing a drmModeConnector instance around + +Before this commit we were storing a pointer to the drmModeConnector +in struct _ply_renderer_head, solely so that we can free it when +destroying the head. This was necessary because we also stored a pointer +to the mode we picked, which comes from insided the drmModeConnector. + +The drmModeModeInfo struct has no pointers, so we can simply store a copy +of it instead of a pointer, which removes the need to keep the +drmModeConnector around after probing the connectors. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 41 ++++++++++++++---------------- + 1 file changed, 19 insertions(+), 22 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index afc8d65..348f880 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -77,8 +77,7 @@ struct _ply_renderer_head + unsigned long row_stride; + + ply_array_t *connector_ids; +- drmModeConnector *connector0; +- drmModeModeInfo *connector0_mode; ++ drmModeModeInfo connector0_mode; + + uint32_t controller_id; + uint32_t console_buffer_id; +@@ -118,7 +117,7 @@ typedef struct + typedef struct + { + drmModeConnector *connector; +- drmModeModeInfo *mode; ++ drmModeModeInfo mode; + uint32_t controller_id; + uint32_t possible_controllers; + ply_pixel_buffer_rotation_t rotation; +@@ -474,9 +473,9 @@ static bool + ply_renderer_head_add_connector (ply_renderer_head_t *head, + ply_output_t *output) + { +- if (output->mode->hdisplay != head->area.width || output->mode->vdisplay != head->area.height) { ++ if (output->mode.hdisplay != head->area.width || output->mode.vdisplay != head->area.height) { + ply_trace ("Tried to add connector with resolution %dx%d to %dx%d head", +- (int) output->mode->hdisplay, (int) output->mode->vdisplay, ++ (int) output->mode.hdisplay, (int) output->mode.vdisplay, + (int) head->area.width, (int) head->area.height); + return false; + } else { +@@ -505,14 +504,12 @@ ply_renderer_head_new (ply_renderer_backend_t *backend, + head->connector_ids = ply_array_new (PLY_ARRAY_ELEMENT_TYPE_UINT32); + head->controller_id = output->controller_id; + head->console_buffer_id = console_buffer_id; +- +- head->connector0 = output->connector; + head->connector0_mode = output->mode; + + head->area.x = 0; + head->area.y = 0; +- head->area.width = output->mode->hdisplay; +- head->area.height = output->mode->vdisplay; ++ head->area.width = output->mode.hdisplay; ++ head->area.height = output->mode.vdisplay; + + if (gamma_size) { + head->gamma_size = gamma_size; +@@ -543,8 +540,8 @@ ply_renderer_head_new (ply_renderer_backend_t *backend, + if (output->connector->connector_type == DRM_MODE_CONNECTOR_LVDS || + output->connector->connector_type == DRM_MODE_CONNECTOR_eDP || + output->connector->connector_type == DRM_MODE_CONNECTOR_DSI) { +- backend->panel_width = output->mode->hdisplay; +- backend->panel_height = output->mode->vdisplay; ++ backend->panel_width = output->mode.hdisplay; ++ backend->panel_height = output->mode.vdisplay; + backend->panel_rotation = output->rotation; + backend->panel_scale = ply_pixel_buffer_get_device_scale (head->pixel_buffer); + } +@@ -558,7 +555,6 @@ ply_renderer_head_free (ply_renderer_head_t *head) + ply_trace ("freeing %ldx%ld renderer head", head->area.width, head->area.height); + ply_pixel_buffer_free (head->pixel_buffer); + +- drmModeFreeConnector (head->connector0); + ply_array_free (head->connector_ids); + free (head->gamma); + free (head); +@@ -648,7 +644,7 @@ ply_renderer_head_set_scan_out_buffer (ply_renderer_backend_t *backend, + ply_renderer_head_t *head, + uint32_t buffer_id) + { +- drmModeModeInfo *mode = head->connector0_mode; ++ drmModeModeInfo *mode = &head->connector0_mode; + uint32_t *connector_ids; + int number_of_connectors; + +@@ -1211,6 +1207,7 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + */ + found = 0; + for (i = 0; i < backend->resources->count_connectors; i++) { ++ drmModeModeInfo *mode = NULL; + drmModeConnector *connector; + + connector = drmModeGetConnector (backend->device_fd, +@@ -1234,17 +1231,18 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + ply_renderer_connector_get_rotation_and_tiled (backend, &outputs[found]); + + if (!outputs[found].tiled && backend->use_preferred_mode) +- outputs[found].mode = get_preferred_mode (connector); ++ mode = get_preferred_mode (connector); + +- if (!outputs[found].mode && outputs[found].controller_id) +- outputs[found].mode = get_active_mode (backend, &outputs[found]); ++ if (!mode && outputs[found].controller_id) ++ mode = get_active_mode (backend, &outputs[found]); + + /* If we couldn't find the current active mode, fall back to the first available. + */ +- if (!outputs[found].mode) { ++ if (!mode) { + ply_trace ("falling back to first available mode"); +- outputs[found].mode = &connector->modes[0]; ++ mode = &connector->modes[0]; + } ++ outputs[found].mode = *mode; + + found++; + } +@@ -1262,8 +1260,8 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + continue; + + if (outputs[i].controller_id == outputs[j].controller_id && +- (outputs[i].mode->hdisplay != outputs[j].mode->hdisplay || +- outputs[i].mode->vdisplay != outputs[j].mode->vdisplay)) { ++ (outputs[i].mode.hdisplay != outputs[j].mode.hdisplay || ++ outputs[i].mode.vdisplay != outputs[j].mode.vdisplay)) { + ply_trace ("connector %u uses same controller as %u and modes differ, unlinking controller", + outputs[j].connector->connector_id, + outputs[i].connector->connector_id); +@@ -1331,9 +1329,8 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + } else { + if (!ply_renderer_head_add_connector (head, &outputs[i])) + ply_trace ("couldn't connect monitor to existing head"); +- +- drmModeFreeConnector (connector); + } ++ drmModeFreeConnector (connector); + } + + ply_hashtable_free (heads_by_controller_id); +-- +2.20.1 + +From b3f1c7683d70b653ebde1d41342f6b549d5c2f1f Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 15 Jan 2019 08:31:20 +0100 +Subject: [PATCH 48/74] drm: Stop storing a pointer to drmModeConnector in + ply_output_t + +This is a preparation patch for hotplug support, for hotplug support we +want to keep the ply_output_t for connectors around, this change decouples +the lifetime of the drmModeConnector from the ply_output_t lifetime. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 66 +++++++++++++++--------------- + 1 file changed, 32 insertions(+), 34 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index 348f880..07de083 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -116,10 +116,12 @@ typedef struct + + typedef struct + { +- drmModeConnector *connector; + drmModeModeInfo mode; ++ uint32_t connector_id; ++ uint32_t connector_type; + uint32_t controller_id; + uint32_t possible_controllers; ++ int device_scale; + ply_pixel_buffer_rotation_t rotation; + bool tiled; + } ply_output_t; +@@ -444,6 +446,7 @@ connector_orientation_prop_to_rotation (drmModePropertyPtr prop, + + static void + ply_renderer_connector_get_rotation_and_tiled (ply_renderer_backend_t *backend, ++ drmModeConnector *connector, + ply_output_t *output) + { + drmModePropertyPtr prop; +@@ -452,14 +455,14 @@ ply_renderer_connector_get_rotation_and_tiled (ply_renderer_backend_t *back + output->rotation = PLY_PIXEL_BUFFER_ROTATE_UPRIGHT; + output->tiled = false; + +- for (i = 0; i < output->connector->count_props; i++) { +- prop = drmModeGetProperty (backend->device_fd, output->connector->props[i]); ++ for (i = 0; i < connector->count_props; i++) { ++ prop = drmModeGetProperty (backend->device_fd, connector->props[i]); + if (!prop) + continue; + + if ((prop->flags & DRM_MODE_PROP_ENUM) && + strcmp (prop->name, "panel orientation") == 0) +- output->rotation = connector_orientation_prop_to_rotation (prop, output->connector->prop_values[i]); ++ output->rotation = connector_orientation_prop_to_rotation (prop, connector->prop_values[i]); + + if ((prop->flags & DRM_MODE_PROP_BLOB) && + strcmp (prop->name, "TILE") == 0) +@@ -480,11 +483,11 @@ ply_renderer_head_add_connector (ply_renderer_head_t *head, + return false; + } else { + ply_trace ("Adding connector with id %d to %dx%d head", +- (int) output->connector->connector_id, ++ (int) output->connector_id, + (int) head->area.width, (int) head->area.height); + } + +- ply_array_add_uint32_element (head->connector_ids, output->connector->connector_id); ++ ply_array_add_uint32_element (head->connector_ids, output->connector_id); + + return true; + } +@@ -527,23 +530,19 @@ ply_renderer_head_new (ply_renderer_backend_t *backend, + assert (ply_array_get_size (head->connector_ids) > 0); + + head->pixel_buffer = ply_pixel_buffer_new_with_device_rotation (head->area.width, head->area.height, output->rotation); +- ply_pixel_buffer_set_device_scale (head->pixel_buffer, +- ply_get_device_scale (head->area.width, +- head->area.height, +- output->connector->mmWidth, +- output->connector->mmHeight)); ++ ply_pixel_buffer_set_device_scale (head->pixel_buffer, output->device_scale); + + ply_trace ("Creating %ldx%ld renderer head", head->area.width, head->area.height); + ply_pixel_buffer_fill_with_color (head->pixel_buffer, NULL, + 0.0, 0.0, 0.0, 1.0); + +- if (output->connector->connector_type == DRM_MODE_CONNECTOR_LVDS || +- output->connector->connector_type == DRM_MODE_CONNECTOR_eDP || +- output->connector->connector_type == DRM_MODE_CONNECTOR_DSI) { ++ if (output->connector_type == DRM_MODE_CONNECTOR_LVDS || ++ output->connector_type == DRM_MODE_CONNECTOR_eDP || ++ output->connector_type == DRM_MODE_CONNECTOR_DSI) { + backend->panel_width = output->mode.hdisplay; + backend->panel_height = output->mode.vdisplay; + backend->panel_rotation = output->rotation; +- backend->panel_scale = ply_pixel_buffer_get_device_scale (head->pixel_buffer); ++ backend->panel_scale = output->device_scale; + } + + return head; +@@ -973,6 +972,7 @@ close_device (ply_renderer_backend_t *backend) + + static void + output_get_controller_info (ply_renderer_backend_t *backend, ++ drmModeConnector *connector, + ply_output_t *output) + { + int i; +@@ -982,16 +982,16 @@ output_get_controller_info (ply_renderer_backend_t *backend, + + output->possible_controllers = 0xffffffff; + +- for (i = 0; i < output->connector->count_encoders; i++) { ++ for (i = 0; i < connector->count_encoders; i++) { + encoder = drmModeGetEncoder (backend->device_fd, +- output->connector->encoders[i]); ++ connector->encoders[i]); + + if (encoder == NULL) + continue; + +- if (encoder->encoder_id == output->connector->encoder_id && encoder->crtc_id) { ++ if (encoder->encoder_id == connector->encoder_id && encoder->crtc_id) { + ply_trace ("Found already lit monitor on connector %u using controller %u", +- output->connector->connector_id, encoder->crtc_id); ++ connector->connector_id, encoder->crtc_id); + output->controller_id = encoder->crtc_id; + } + +@@ -1000,7 +1000,7 @@ output_get_controller_info (ply_renderer_backend_t *backend, + */ + output->possible_controllers &= encoder->possible_crtcs; + ply_trace ("connector %u encoder %u possible controllers 0x%08x/0x%08x", +- output->connector->connector_id, encoder->encoder_id, ++ connector->connector_id, encoder->encoder_id, + encoder->possible_crtcs, output->possible_controllers); + drmModeFreeEncoder (encoder); + } +@@ -1063,6 +1063,7 @@ get_preferred_mode (drmModeConnector *connector) + + static drmModeModeInfo * + get_active_mode (ply_renderer_backend_t *backend, ++ drmModeConnector *connector, + ply_output_t *output) + { + drmModeCrtc *controller; +@@ -1077,7 +1078,7 @@ get_active_mode (ply_renderer_backend_t *backend, + ply_trace ("Looking for connector mode index of active mode %dx%d", + controller->mode.hdisplay, controller->mode.vdisplay); + +- mode = find_matching_connector_mode (backend, output->connector, &controller->mode); ++ mode = find_matching_connector_mode (backend, connector, &controller->mode); + + drmModeFreeCrtc (controller); + +@@ -1225,16 +1226,14 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + continue; + } + +- outputs[found].connector = connector; +- +- output_get_controller_info (backend, &outputs[found]); +- ply_renderer_connector_get_rotation_and_tiled (backend, &outputs[found]); ++ output_get_controller_info (backend, connector, &outputs[found]); ++ ply_renderer_connector_get_rotation_and_tiled (backend, connector, &outputs[found]); + + if (!outputs[found].tiled && backend->use_preferred_mode) + mode = get_preferred_mode (connector); + + if (!mode && outputs[found].controller_id) +- mode = get_active_mode (backend, &outputs[found]); ++ mode = get_active_mode (backend, connector, &outputs[found]); + + /* If we couldn't find the current active mode, fall back to the first available. + */ +@@ -1243,6 +1242,10 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + mode = &connector->modes[0]; + } + outputs[found].mode = *mode; ++ outputs[found].device_scale = ply_get_device_scale (mode->hdisplay, mode->vdisplay, ++ connector->mmWidth, connector->mmHeight); ++ outputs[found].connector_type = connector->connector_type; ++ drmModeFreeConnector (connector); + + found++; + } +@@ -1263,8 +1266,7 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + (outputs[i].mode.hdisplay != outputs[j].mode.hdisplay || + outputs[i].mode.vdisplay != outputs[j].mode.vdisplay)) { + ply_trace ("connector %u uses same controller as %u and modes differ, unlinking controller", +- outputs[j].connector->connector_id, +- outputs[i].connector->connector_id); ++ outputs[j].connector_id, outputs[i].connector_id); + outputs[j].controller_id = 0; + } + } +@@ -1289,13 +1291,12 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + } + for (i = 0; i < outputs_len; i++) + ply_trace ("Using controller %u for connector %u", +- outputs[i].controller_id, outputs[i].connector->connector_id); ++ outputs[i].controller_id, outputs[i].connector_id); + + /* Step 4: + * Create heads for all valid outputs + */ + for (i = 0; i < outputs_len; i++) { +- drmModeConnector *connector = outputs[i].connector; + drmModeCrtc *controller; + ply_renderer_head_t *head; + uint32_t controller_id; +@@ -1303,10 +1304,8 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + int gamma_size; + + controller = drmModeGetCrtc (backend->device_fd, outputs[i].controller_id); +- if (!controller) { +- drmModeFreeConnector (connector); ++ if (!controller) + continue; +- } + + controller_id = controller->crtc_id; + console_buffer_id = controller->buffer_id; +@@ -1330,7 +1329,6 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + if (!ply_renderer_head_add_connector (head, &outputs[i])) + ply_trace ("couldn't connect monitor to existing head"); + } +- drmModeFreeConnector (connector); + } + + ply_hashtable_free (heads_by_controller_id); +-- +2.20.1 + +From 4ba6d4f4a238b506dc65e4e6516384a504a414af Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 15 Jan 2019 08:34:58 +0100 +Subject: [PATCH 49/74] drm: Add get_output_info helper function + +Add a new get_output_info helper function, which fill a ply_output_t with +all info related to the connecter based on a connector-id. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 86 ++++++++++++++++-------------- + 1 file changed, 46 insertions(+), 40 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index 07de083..da56fe4 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -124,6 +124,7 @@ typedef struct + int device_scale; + ply_pixel_buffer_rotation_t rotation; + bool tiled; ++ bool connected; + } ply_output_t; + + struct _ply_renderer_backend +@@ -1085,6 +1086,48 @@ get_active_mode (ply_renderer_backend_t *backend, + return mode; + } + ++static void ++get_output_info (ply_renderer_backend_t *backend, ++ uint32_t connector_id, ++ ply_output_t *output) ++{ ++ drmModeModeInfo *mode = NULL; ++ drmModeConnector *connector; ++ ++ memset (output, 0, sizeof(*output)); ++ output->connector_id = connector_id; ++ ++ connector = drmModeGetConnector (backend->device_fd, connector_id); ++ if (connector == NULL) ++ return; ++ ++ if (connector->connection != DRM_MODE_CONNECTED || ++ connector->count_modes <= 0) ++ goto out; ++ ++ output_get_controller_info (backend, connector, output); ++ ply_renderer_connector_get_rotation_and_tiled (backend, connector, output); ++ ++ if (!output->tiled && backend->use_preferred_mode) ++ mode = get_preferred_mode (connector); ++ ++ if (!mode && output->controller_id) ++ mode = get_active_mode (backend, connector, output); ++ ++ /* If we couldn't find the current active mode, fall back to the first available. */ ++ if (!mode) { ++ ply_trace ("falling back to first available mode"); ++ mode = &connector->modes[0]; ++ } ++ output->mode = *mode; ++ output->device_scale = ply_get_device_scale (mode->hdisplay, mode->vdisplay, ++ connector->mmWidth, connector->mmHeight); ++ output->connector_type = connector->connector_type; ++ output->connected = true; ++out: ++ drmModeFreeConnector (connector); ++} ++ + /* Some controllers can only drive some outputs, we want to find a combination + * where all (connected) outputs get a controller. To do this setup_outputs + * picks which output to assign a controller for first (trying all outputs), so +@@ -1208,46 +1251,9 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + */ + found = 0; + for (i = 0; i < backend->resources->count_connectors; i++) { +- drmModeModeInfo *mode = NULL; +- drmModeConnector *connector; +- +- connector = drmModeGetConnector (backend->device_fd, +- backend->resources->connectors[i]); +- if (connector == NULL) +- continue; +- +- if (connector->connection != DRM_MODE_CONNECTED) { +- drmModeFreeConnector (connector); +- continue; +- } +- +- if (connector->count_modes <= 0) { +- drmModeFreeConnector (connector); +- continue; +- } +- +- output_get_controller_info (backend, connector, &outputs[found]); +- ply_renderer_connector_get_rotation_and_tiled (backend, connector, &outputs[found]); +- +- if (!outputs[found].tiled && backend->use_preferred_mode) +- mode = get_preferred_mode (connector); +- +- if (!mode && outputs[found].controller_id) +- mode = get_active_mode (backend, connector, &outputs[found]); +- +- /* If we couldn't find the current active mode, fall back to the first available. +- */ +- if (!mode) { +- ply_trace ("falling back to first available mode"); +- mode = &connector->modes[0]; +- } +- outputs[found].mode = *mode; +- outputs[found].device_scale = ply_get_device_scale (mode->hdisplay, mode->vdisplay, +- connector->mmWidth, connector->mmHeight); +- outputs[found].connector_type = connector->connector_type; +- drmModeFreeConnector (connector); +- +- found++; ++ get_output_info (backend, backend->resources->connectors[i], &outputs[found]); ++ if (outputs[found].connected) ++ found++; + } + outputs_len = found; /* outputs now contains found valid entries */ + +-- +2.20.1 + +From d68fd78ae17c2574976b78b5f31afd58b965abe5 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 15 Jan 2019 08:58:45 +0100 +Subject: [PATCH 50/74] drm: Store and keep all the outputs in the backend + +Put all outputs in the outputs array instead of just the connected ones +and store the outputs array and the controller_id-to-head hashtable in the +backend object instead of temporarily allocating them during enumeration. + +Also add new heads to the heads list and to the controller_id-to-head +hashtable in ply_renderer_head_new where this really belongs. This +allows nicely balancing these 2 with removing the head from the list +and hash_table in the ply_renderer_head_remove function which is added +in a follow-up commit. + +This is a preparation patch for adding support for hotplugging +monitors while plymouth is running. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 55 ++++++++++++++++-------------- + 1 file changed, 30 insertions(+), 25 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index da56fe4..a66cd67 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -138,10 +138,14 @@ struct _ply_renderer_backend + + ply_renderer_input_source_t input_source; + ply_list_t *heads; +- ply_hashtable_t *heads_by_connector_id; ++ ply_hashtable_t *heads_by_controller_id; + + ply_hashtable_t *output_buffers; + ++ ply_output_t *outputs; ++ int outputs_len; ++ int connected_count; ++ + int32_t dither_red; + int32_t dither_green; + int32_t dither_blue; +@@ -546,6 +550,10 @@ ply_renderer_head_new (ply_renderer_backend_t *backend, + backend->panel_scale = output->device_scale; + } + ++ ply_list_append_data (backend->heads, head); ++ ply_hashtable_insert (backend->heads_by_controller_id, ++ (void *) (intptr_t) output->controller_id, ++ head); + return head; + } + +@@ -808,6 +816,7 @@ create_backend (const char *device_name, + backend->requires_explicit_flushing = true; + backend->output_buffers = ply_hashtable_new (ply_hashtable_direct_hash, + ply_hashtable_direct_compare); ++ backend->heads_by_controller_id = ply_hashtable_new (NULL, NULL); + backend->use_preferred_mode = should_use_preferred_mode (); + + return backend; +@@ -827,9 +836,11 @@ destroy_backend (ply_renderer_backend_t *backend) + + free (backend->device_name); + ply_hashtable_free (backend->output_buffers); ++ ply_hashtable_free (backend->heads_by_controller_id); + + drmModeFreeResources (backend->resources); + ++ free (backend->outputs); + free (backend); + } + +@@ -1194,9 +1205,9 @@ setup_outputs (ply_renderer_backend_t *backend, + best_count = count_setup_controllers (outputs, outputs_len); + best_outputs = outputs; + +- for (i = 0; i < outputs_len && best_count < outputs_len; i++) { +- /* Already assigned? */ +- if (outputs[i].controller_id) ++ for (i = 0; i < outputs_len && best_count < backend->connected_count; i++) { ++ /* Not connected or already assigned? */ ++ if (!outputs[i].connected || outputs[i].controller_id) + continue; + + /* Assign controller for connector i */ +@@ -1238,24 +1249,21 @@ setup_outputs (ply_renderer_backend_t *backend, + static bool + create_heads_for_active_connectors (ply_renderer_backend_t *backend) + { +- ply_hashtable_t *heads_by_controller_id; ++ int i, j, number_of_setup_outputs, outputs_len; + ply_output_t *outputs; +- int i, j, found, number_of_setup_outputs, outputs_len; +- +- heads_by_controller_id = ply_hashtable_new (NULL, NULL); + + outputs = calloc (backend->resources->count_connectors, sizeof(*outputs)); ++ outputs_len = backend->resources->count_connectors; + + /* Step 1: + * Build a list of connected outputs and get pre-configured controllers. + */ +- found = 0; +- for (i = 0; i < backend->resources->count_connectors; i++) { +- get_output_info (backend, backend->resources->connectors[i], &outputs[found]); +- if (outputs[found].connected) +- found++; ++ backend->connected_count = 0; ++ for (i = 0; i < outputs_len; i++) { ++ get_output_info (backend, backend->resources->connectors[i], &outputs[i]); ++ if (outputs[i].connected) ++ backend->connected_count++; + } +- outputs_len = found; /* outputs now contains found valid entries */ + + /* Step 2: + * Drop controllers for clones for which we've picked different modes. +@@ -1282,13 +1290,13 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + * Assign controllers to outputs without a controller + */ + number_of_setup_outputs = count_setup_controllers (outputs, outputs_len); +- if (number_of_setup_outputs != outputs_len) { ++ if (number_of_setup_outputs != backend->connected_count) { + /* First try, try to assign controllers to outputs without one */ + ply_trace ("Some outputs don't have controllers, picking controllers"); + outputs = setup_outputs (backend, outputs, outputs_len); + number_of_setup_outputs = count_setup_controllers (outputs, outputs_len); + } +- if (number_of_setup_outputs != outputs_len) { ++ if (number_of_setup_outputs != backend->connected_count) { + /* Second try, re-assing controller for all outputs */ + ply_trace ("Some outputs still don't have controllers, re-assigning controllers for all outputs"); + for (i = 0; i < outputs_len; i++) +@@ -1309,6 +1317,9 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + uint32_t console_buffer_id; + int gamma_size; + ++ if (!outputs[i].controller_id) ++ continue; ++ + controller = drmModeGetCrtc (backend->device_fd, outputs[i].controller_id); + if (!controller) + continue; +@@ -1318,27 +1329,21 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + gamma_size = controller->gamma_size; + drmModeFreeCrtc (controller); + +- head = ply_hashtable_lookup (heads_by_controller_id, ++ head = ply_hashtable_lookup (backend->heads_by_controller_id, + (void *) (intptr_t) controller_id); + + if (head == NULL) { + head = ply_renderer_head_new (backend, &outputs[i], + console_buffer_id, + gamma_size); +- +- ply_list_append_data (backend->heads, head); +- +- ply_hashtable_insert (heads_by_controller_id, +- (void *) (intptr_t) controller_id, +- head); + } else { + if (!ply_renderer_head_add_connector (head, &outputs[i])) + ply_trace ("couldn't connect monitor to existing head"); + } + } + +- ply_hashtable_free (heads_by_controller_id); +- free (outputs); ++ backend->outputs_len = outputs_len; ++ backend->outputs = outputs; + + return ply_list_get_length (backend->heads) > 0; + } +-- +2.20.1 + +From 7cb2eb14892a3468a2e249709e3f09b7b852d36e Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 15 Jan 2019 09:21:05 +0100 +Subject: [PATCH 51/74] drm: Limit backend->resources lifetime to within + query_device + +We do not need / use backend->resources anywhere outside of the query_device +function and with the upcoming hotplug support we need to get a fresh set +of resources on change events, so limit the resources lifetime to +query_device. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 17 +++++++++-------- + 1 file changed, 9 insertions(+), 8 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index a66cd67..4e3c41a 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -838,8 +838,6 @@ destroy_backend (ply_renderer_backend_t *backend) + ply_hashtable_free (backend->output_buffers); + ply_hashtable_free (backend->heads_by_controller_id); + +- drmModeFreeResources (backend->resources); +- + free (backend->outputs); + free (backend); + } +@@ -1385,6 +1383,8 @@ has_32bpp_support (ply_renderer_backend_t *backend) + static bool + query_device (ply_renderer_backend_t *backend) + { ++ bool ret = true; ++ + assert (backend != NULL); + assert (backend->device_fd >= 0); + +@@ -1397,15 +1397,16 @@ query_device (ply_renderer_backend_t *backend) + + if (!create_heads_for_active_connectors (backend)) { + ply_trace ("Could not initialize heads"); +- return false; +- } +- +- if (!has_32bpp_support (backend)) { ++ ret = false; ++ } else if (!has_32bpp_support (backend)) { + ply_trace ("Device doesn't support 32bpp framebuffer"); +- return false; ++ ret = false; + } + +- return true; ++ drmModeFreeResources (backend->resources); ++ backend->resources = NULL; ++ ++ return ret; + } + + static bool +-- +2.20.1 + +From cd0479675e0c853896a860913917300818b8f69d Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 15 Jan 2019 09:54:09 +0100 +Subject: [PATCH 52/74] drm: Allow calling ply_renderer_head_add_connector with + existing connector_id + +Allow calling ply_renderer_head_add_connector with an existing +connector_id and ignore this call. + +This allows calling create_heads_for_active_connectors multiple times, +only creating/adding heads for new connectors. + +This is a preparation patch for adding support for hotplugging +monitors while plymouth is running. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index 4e3c41a..9998459 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -486,12 +486,15 @@ ply_renderer_head_add_connector (ply_renderer_head_t *head, + (int) output->mode.hdisplay, (int) output->mode.vdisplay, + (int) head->area.width, (int) head->area.height); + return false; +- } else { +- ply_trace ("Adding connector with id %d to %dx%d head", +- (int) output->connector_id, +- (int) head->area.width, (int) head->area.height); + } + ++ if (ply_array_contains_uint32_element (head->connector_ids, output->connector_id)) { ++ ply_trace ("Head already contains connector with id %d", output->connector_id); ++ return false; ++ } ++ ++ ply_trace ("Adding connector with id %d to %dx%d head", ++ (int) output->connector_id, (int) head->area.width, (int) head->area.height); + ply_array_add_uint32_element (head->connector_ids, output->connector_id); + + return true; +-- +2.20.1 + +From 7774bd5e5132ace8060f9edd91395eaa42535246 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 15 Jan 2019 10:43:45 +0100 +Subject: [PATCH 53/74] drm: Allow calling create_heads_for_active_connectors + multiple times + +To support hotplugging monitors while plymouth is running, we must +rebuild our outputs list and create and/or remove heads as necessary +on every change event. + +This commit adds support for removing single outputs (rather then +tearing down the whole backend) and adds a new first step to +create_heads_for_active_connectors which goes over our view of the +outputs before the change and removes any changed outputs from the +heads they belong to, destroying the head if the last output/connector +is removed. + +On the first call backend->output_len is 0, so this new first step +is a no-op. + +On subsequent calls we can simply build the list as we do on the first +call, changed outputs will already be removed by the new first step +and for unchanged outputs we end up in ply_renderer_head_add_connector +which will ignore the already added connector. + +Note this drops the "couldn't connect monitor to existing head" message, +this is confusing when create_heads_for_active_connectors is called more +then once and is unnecessary as ply_renderer_head_add_connector already +logs a message on both failure exit paths. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 111 ++++++++++++++++++++++++++--- + 1 file changed, 101 insertions(+), 10 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index 9998459..bb6ab77 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -734,6 +734,47 @@ ply_renderer_head_unmap (ply_renderer_backend_t *backend, + head->scan_out_buffer_id = 0; + } + ++static void ++ply_renderer_head_remove (ply_renderer_backend_t *backend, ++ ply_renderer_head_t *head) ++{ ++ if (head->scan_out_buffer_id) ++ ply_renderer_head_unmap (backend, head); ++ ++ ply_hashtable_remove (backend->heads_by_controller_id, ++ (void *) (intptr_t) head->controller_id); ++ ply_list_remove_data (backend->heads, head); ++ ply_renderer_head_free (head); ++} ++ ++static void ++ply_renderer_head_remove_connector (ply_renderer_backend_t *backend, ++ ply_renderer_head_t *head, ++ uint32_t connector_id) ++{ ++ int i, size = ply_array_get_size (head->connector_ids); ++ uint32_t *connector_ids; ++ ++ if (!ply_array_contains_uint32_element (head->connector_ids, connector_id)) { ++ ply_trace ("Head does not contain connector %u, cannot remove", connector_id); ++ return; ++ } ++ ++ if (size == 1) { ++ ply_renderer_head_remove (backend, head); ++ return; ++ } ++ ++ /* Empty the array and re-add all connectors except the one being removed */ ++ connector_ids = ply_array_steal_uint32_elements (head->connector_ids); ++ for (i = 0; i < size; i++) { ++ if (connector_ids[i] != connector_id) ++ ply_array_add_uint32_element (head->connector_ids, ++ connector_ids[i]); ++ } ++ free (connector_ids); ++} ++ + static void + flush_area (const char *src, + unsigned long src_row_stride, +@@ -1247,18 +1288,65 @@ setup_outputs (ply_renderer_backend_t *backend, + return (ply_output_t *)best_outputs; + } + ++static void ++remove_output (ply_renderer_backend_t *backend, ply_output_t *output) ++{ ++ ply_renderer_head_t *head; ++ ++ head = ply_hashtable_lookup (backend->heads_by_controller_id, ++ (void *) (intptr_t) output->controller_id); ++ if (head == NULL) { ++ ply_trace ("Could not find head for connector %u, controller %u, cannot remove", ++ output->connector_id, output->controller_id); ++ return; ++ } ++ ++ ply_renderer_head_remove_connector (backend, head, output->connector_id); ++} ++ ++/* Update our outputs array to match the hardware state and ++ * create and/or remove heads as necessary. ++ * Returns true if any heads were modified. ++ */ + static bool + create_heads_for_active_connectors (ply_renderer_backend_t *backend) + { + int i, j, number_of_setup_outputs, outputs_len; +- ply_output_t *outputs; ++ ply_output_t output, *outputs; ++ bool changed = false; ++ ++ /* Step 1: ++ * Remove existing outputs from heads if they have changed. ++ */ ++ ply_trace ("Checking currently connected outputs for changes"); ++ for (i = 0; i < backend->outputs_len; i++) { ++ if (!backend->outputs[i].controller_id) ++ continue; ++ ++ get_output_info (backend, backend->outputs[i].connector_id, &output); ++ ++ if (memcmp(&backend->outputs[i], &output, sizeof(ply_output_t))) { ++ ply_trace ("Output for connector %u changed, removing", ++ backend->outputs[i].connector_id); ++ remove_output (backend, &backend->outputs[i]); ++ changed = true; ++ } ++ } ++ ++ /* Step 2: ++ * Now that we've removed changed connectors from the heads, we can ++ * simply rebuild the outputs array from scratch. For any unchanged ++ * outputs for which we already have a head, we will end up in ++ * ply_renderer_head_add_connector which will ignore the already ++ * added connector. ++ */ ++ ply_trace ("(Re)enumerating all outputs"); ++ free (backend->outputs); ++ backend->outputs = NULL; + + outputs = calloc (backend->resources->count_connectors, sizeof(*outputs)); + outputs_len = backend->resources->count_connectors; + +- /* Step 1: +- * Build a list of connected outputs and get pre-configured controllers. +- */ + backend->connected_count = 0; + for (i = 0; i < outputs_len; i++) { + get_output_info (backend, backend->resources->connectors[i], &outputs[i]); +@@ -1266,7 +1354,7 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + backend->connected_count++; + } + +- /* Step 2: ++ /* Step 3: + * Drop controllers for clones for which we've picked different modes. + */ + for (i = 0; i < outputs_len; i++) { +@@ -1287,7 +1375,7 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + } + } + +- /* Step 3: ++ /* Step 4: + * Assign controllers to outputs without a controller + */ + number_of_setup_outputs = count_setup_controllers (outputs, outputs_len); +@@ -1308,7 +1396,7 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + ply_trace ("Using controller %u for connector %u", + outputs[i].controller_id, outputs[i].connector_id); + +- /* Step 4: ++ /* Step 5: + * Create heads for all valid outputs + */ + for (i = 0; i < outputs_len; i++) { +@@ -1337,16 +1425,19 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + head = ply_renderer_head_new (backend, &outputs[i], + console_buffer_id, + gamma_size); ++ changed = true; + } else { +- if (!ply_renderer_head_add_connector (head, &outputs[i])) +- ply_trace ("couldn't connect monitor to existing head"); ++ if (ply_renderer_head_add_connector (head, &outputs[i])) ++ changed = true; + } + } + + backend->outputs_len = outputs_len; + backend->outputs = outputs; + +- return ply_list_get_length (backend->heads) > 0; ++ ply_trace ("outputs %schanged\n", changed ? "" : "un"); ++ ++ return changed; + } + + static bool +-- +2.20.1 + +From 475a51d0576d0a488023f870c92f39eb8b0a21c1 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 16 Jan 2019 14:50:34 +0100 +Subject: [PATCH 54/74] drm: Ensure heads are mapped before flushing them + +The drm plugin's map_to_device function will return true if mapping of +any of the heads has succeeded, potentially leaving some heads unmapped. + +This causes the "assert (buffer != NULL)" in begin_flush to trigger when +flushing the heads as head->scan_out_buffer_id is 0. + +It seems that even though this is a pre-existing problem we sofar have +not hit this, likely because ply_renderer_head_map in pratice never fails. + +However with the new monitor hotplug support, a head may be added after +map_to_device is called, triggering the assert. + +This commit fixes both the theoretical pre-existing problem and the +actual problem triggered by hotplug support by ensuring that the head +is mapped before flushing it. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 18 ++++++++++++------ + 1 file changed, 12 insertions(+), 6 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index bb6ab77..0963a84 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -715,11 +715,6 @@ ply_renderer_head_map (ply_renderer_backend_t *backend, + return false; + } + +- /* FIXME: Maybe we should blit the fbcon contents instead of the (blank) +- * shadow buffer? +- */ +- ply_renderer_head_redraw (backend, head); +- + return true; + } + +@@ -1518,8 +1513,13 @@ map_to_device (ply_renderer_backend_t *backend) + head = (ply_renderer_head_t *) ply_list_node_get_data (node); + next_node = ply_list_get_next_node (backend->heads, node); + +- if (ply_renderer_head_map (backend, head)) ++ if (ply_renderer_head_map (backend, head)) { ++ /* FIXME: Maybe we should blit the fbcon contents instead of the (blank) ++ * shadow buffer? ++ */ ++ ply_renderer_head_redraw (backend, head); + head_mapped = true; ++ } + + node = next_node; + } +@@ -1605,6 +1605,12 @@ flush_head (ply_renderer_backend_t *backend, + updated_region = ply_pixel_buffer_get_updated_areas (pixel_buffer); + areas_to_flush = ply_region_get_sorted_rectangle_list (updated_region); + ++ /* A hotplugged head may not be mapped yet, map it now. */ ++ if (!head->scan_out_buffer_id) { ++ if (!ply_renderer_head_map (backend, head)) ++ return; ++ } ++ + map_address = begin_flush (backend, head->scan_out_buffer_id); + + node = ply_list_get_first_node (areas_to_flush); +-- +2.20.1 + +From 15ebdd6d5b0e98d7511815e2dfbe82d2ec86f493 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 16 Jan 2019 09:41:42 +0100 +Subject: [PATCH 55/74] drm: Implement handle_change_event + +Now that we can call create_heads_for_active_connectors multiple times +we can implement handle_change_event. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 32 ++++++++++++++++++++++++++---- + 1 file changed, 28 insertions(+), 4 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index 0963a84..b190737 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -1304,7 +1304,7 @@ remove_output (ply_renderer_backend_t *backend, ply_output_t *output) + * Returns true if any heads were modified. + */ + static bool +-create_heads_for_active_connectors (ply_renderer_backend_t *backend) ++create_heads_for_active_connectors (ply_renderer_backend_t *backend, bool change) + { + int i, j, number_of_setup_outputs, outputs_len; + ply_output_t output, *outputs; +@@ -1380,8 +1380,12 @@ create_heads_for_active_connectors (ply_renderer_backend_t *backend) + outputs = setup_outputs (backend, outputs, outputs_len); + number_of_setup_outputs = count_setup_controllers (outputs, outputs_len); + } +- if (number_of_setup_outputs != backend->connected_count) { +- /* Second try, re-assing controller for all outputs */ ++ /* Try again if necessary, re-assing controllers for all outputs. ++ * Note this is skipped when processing change events, as we don't ++ * want to mess with the controller assignment of already lit monitors ++ * in that case. ++ */ ++ if (!change && number_of_setup_outputs != backend->connected_count) { + ply_trace ("Some outputs still don't have controllers, re-assigning controllers for all outputs"); + for (i = 0; i < outputs_len; i++) + outputs[i].controller_id = 0; +@@ -1484,7 +1488,7 @@ query_device (ply_renderer_backend_t *backend) + return false; + } + +- if (!create_heads_for_active_connectors (backend)) { ++ if (!create_heads_for_active_connectors (backend, false)) { + ply_trace ("Could not initialize heads"); + ret = false; + } else if (!has_32bpp_support (backend)) { +@@ -1498,6 +1502,25 @@ query_device (ply_renderer_backend_t *backend) + return ret; + } + ++static bool ++handle_change_event (ply_renderer_backend_t *backend) ++{ ++ bool ret = true; ++ ++ backend->resources = drmModeGetResources (backend->device_fd); ++ if (backend->resources == NULL) { ++ ply_trace ("Could not get card resources for change event"); ++ return false; ++ } ++ ++ ret = create_heads_for_active_connectors (backend, true); ++ ++ drmModeFreeResources (backend->resources); ++ backend->resources = NULL; ++ ++ return ret; ++} ++ + static bool + map_to_device (ply_renderer_backend_t *backend) + { +@@ -1776,6 +1799,7 @@ ply_renderer_backend_get_interface (void) + .open_device = open_device, + .close_device = close_device, + .query_device = query_device, ++ .handle_change_event = handle_change_event, + .map_to_device = map_to_device, + .unmap_from_device = unmap_from_device, + .activate = activate, +-- +2.20.1 + +From c54870fc6663b010b2a3eb4a44df5dd41dd7011c Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Thu, 17 Jan 2019 11:41:46 +0100 +Subject: [PATCH 56/74] drm: Reset mode on display-port connected outputs with + a bad link-status + +With Display-Port links, esp. with DP MST links we may need to reset the +mode if the kernel decides to retrain the link. + +If the kernel has retrained the link, the list of available modes may +have changed. If it changed and the mode we picked is no longer available +because of this, we treat this as an unplug + replug. + +Since we may want to set another mode, the kernel does not automatically +restore the previous mode. So in case the mode did not change we need to +do an explicit mode-set. + +This commits adds support for this, by: + +1) Adding a scan_out_buffer_needs_reset member to ply_renderer_head +2) Storing the link-status when going over the connector properties +3) Checking the link-status when adding a connector to a head and setting + the scan_out_buffer_needs_reset flag when the link-status is bad + +This commit also makes ply_renderer_head_map set +scan_out_buffer_needs_reset, avoiding an unnecessary round-trip to the +kernel in the first reset_scan_out_buffer_if_needed call. + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index b190737..cb228f6 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -82,6 +82,7 @@ struct _ply_renderer_head + uint32_t controller_id; + uint32_t console_buffer_id; + uint32_t scan_out_buffer_id; ++ bool scan_out_buffer_needs_reset; + + int gamma_size; + uint16_t *gamma; +@@ -122,6 +123,7 @@ typedef struct + uint32_t controller_id; + uint32_t possible_controllers; + int device_scale; ++ int link_status; + ply_pixel_buffer_rotation_t rotation; + bool tiled; + bool connected; +@@ -473,6 +475,12 @@ ply_renderer_connector_get_rotation_and_tiled (ply_renderer_backend_t *back + strcmp (prop->name, "TILE") == 0) + output->tiled = true; + ++ if ((prop->flags & DRM_MODE_PROP_ENUM) && ++ strcmp (prop->name, "link-status") == 0) { ++ output->link_status = connector->prop_values[i]; ++ ply_trace ("link-status %d", output->link_status); ++ } ++ + drmModeFreeProperty (prop); + } + } +@@ -481,6 +489,9 @@ static bool + ply_renderer_head_add_connector (ply_renderer_head_t *head, + ply_output_t *output) + { ++ if (output->link_status == DRM_MODE_LINK_STATUS_BAD) ++ head->scan_out_buffer_needs_reset = true; ++ + if (output->mode.hdisplay != head->area.width || output->mode.vdisplay != head->area.height) { + ply_trace ("Tried to add connector with resolution %dx%d to %dx%d head", + (int) output->mode.hdisplay, (int) output->mode.vdisplay, +@@ -715,6 +726,7 @@ ply_renderer_head_map (ply_renderer_backend_t *backend, + return false; + } + ++ head->scan_out_buffer_needs_reset = true; + return true; + } + +@@ -1589,6 +1601,13 @@ reset_scan_out_buffer_if_needed (ply_renderer_backend_t *backend, + if (!ply_terminal_is_active (backend->terminal)) + return false; + ++ if (head->scan_out_buffer_needs_reset) { ++ ply_renderer_head_set_scan_out_buffer (backend, head, ++ head->scan_out_buffer_id); ++ head->scan_out_buffer_needs_reset = false; ++ return true; ++ } ++ + controller = drmModeGetCrtc (backend->device_fd, head->controller_id); + + if (controller == NULL) +-- +2.20.1 + +From ccdb1d1fe1f99523d570b4e37cc14401c3891b9a Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Mon, 21 Jan 2019 15:41:37 +0100 +Subject: [PATCH 57/74] drm: Stop limiting preferred-mode picking to UEFI + systems + +When the code to pick the preferred-mode for outputs was first added, it +was limited to UEFI systems, since it was necessary there. + +It was not enabled everywhere right away because there were some worries +it might cause regressions. + +We've been shipping this for a while now and no regressions have been +reported, moreover with the new hotplug support we really want to pick the +preferred-mode rather then falling back to the first mode in the list. + +Therefor this commits removes the check for UEFI systems from +should_use_preferred_mode(). + +Signed-off-by: Hans de Goede +--- + src/plugins/renderers/drm/plugin.c | 17 ++--------------- + 1 file changed, 2 insertions(+), 15 deletions(-) + +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index cb228f6..0151f47 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -172,19 +172,9 @@ static bool reset_scan_out_buffer_if_needed (ply_renderer_backend_t *backend, + static void flush_head (ply_renderer_backend_t *backend, + ply_renderer_head_t *head); + +-static bool efi_enabled (void) +-{ +- return ply_directory_exists ("/sys/firmware/efi/efivars"); +-} +- + /* A small helper to determine if we should try to keep the current mode +- * or pick the best mode ourselves, we keep the current mode if: +- * 1. The user specified a specific mode using video= on the commandline +- * 2. The code to pick the best mode was added because with flicker-free boot +- * we can no longer rely on the kernel's fbcon code setting things up. +- * We should be able to do a better job then fbcon regardless, but for +- * now lets only use the new code on flicker-free systems until it is +- * more mature, this means only using it on UEFI systems. ++ * or pick the best mode ourselves, we keep the current mode only if the ++ * user specified a specific mode using video= on the commandline. + */ + static bool + should_use_preferred_mode (void) +@@ -194,9 +184,6 @@ should_use_preferred_mode (void) + if (ply_kernel_command_line_get_string_after_prefix ("video=")) + use_preferred_mode = false; + +- if (!efi_enabled ()) +- use_preferred_mode = false; +- + ply_trace ("should_use_preferred_mode: %d", use_preferred_mode); + + return use_preferred_mode; +-- +2.20.1 + +From f9e376797a91ad5fbc1f8e8e4aea778f4f22397c Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Thu, 17 Jan 2019 14:52:41 +0100 +Subject: [PATCH 58/74] ply-device-manager: Consume all events in one go + +Drm devices generate a bunch of add and change events when the kms +driver loads, consume these all in one go. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-core/ply-device-manager.c | 16 ++++++++++++---- + 1 file changed, 12 insertions(+), 4 deletions(-) + +diff --git a/src/libply-splash-core/ply-device-manager.c b/src/libply-splash-core/ply-device-manager.c +index 8ceee10..028bf4a 100644 +--- a/src/libply-splash-core/ply-device-manager.c ++++ b/src/libply-splash-core/ply-device-manager.c +@@ -371,7 +371,7 @@ create_devices_for_subsystem (ply_device_manager_t *manager, + return found_device; + } + +-static void ++static bool + on_udev_event (ply_device_manager_t *manager) + { + struct udev_device *device; +@@ -379,14 +379,14 @@ on_udev_event (ply_device_manager_t *manager) + + device = udev_monitor_receive_device (manager->udev_monitor); + if (device == NULL) +- return; ++ return false; + + action = udev_device_get_action (device); + + ply_trace ("got %s event for device %s", action, udev_device_get_sysname (device)); + + if (action == NULL) +- return; ++ return false; + + if (strcmp (action, "add") == 0) { + const char *subsystem; +@@ -406,6 +406,14 @@ on_udev_event (ply_device_manager_t *manager) + } + + udev_device_unref (device); ++ return true; ++} ++ ++static void ++on_udev_event_loop (ply_device_manager_t *manager) ++{ ++ /* Call on_udev_event until all events are consumed */ ++ while (on_udev_event (manager)) {} + } + + static void +@@ -435,7 +443,7 @@ watch_for_udev_events (ply_device_manager_t *manager) + fd, + PLY_EVENT_LOOP_FD_STATUS_HAS_DATA, + (ply_event_handler_t) +- on_udev_event, ++ on_udev_event_loop, + NULL, + manager); + } +-- +2.20.1 + +From e54f6a47318d82b4e4df024855bd76d888b89675 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Mon, 14 Jan 2019 11:47:21 +0100 +Subject: [PATCH 59/74] ply-device-manager: Handle change events for monitor + hotplugging + +Not only handle add but also change events for drm-subsys devices, +change events are generated when the hardware detect a new monitor +has been plugged in. + +This is esp. important with modern DisplayPort MST docking stations where +discovery / enumeration can take so long that the connected displays +are not enumerated by the kernel yet when the drm plugin first calls +drmModeGetResources(). Causing the monitors on these docks to sometimes +not show plymouth during boot (based on various timing parameters). + +Note that if during the add event drm-renderer could not be bound, this +commit tries to re-bind the DRM renderer on change events in case a +monitor got plugged into a GPU which did not have anything connected before. +This often happens with the second GPU in a laptop with a hybrid GPU setup. + +BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1652279 +Signed-off-by: Hans de Goede +--- + src/libply-splash-core/ply-device-manager.c | 40 +++++++++++++++++++-- + 1 file changed, 38 insertions(+), 2 deletions(-) + +diff --git a/src/libply-splash-core/ply-device-manager.c b/src/libply-splash-core/ply-device-manager.c +index 028bf4a..e2a9eae 100644 +--- a/src/libply-splash-core/ply-device-manager.c ++++ b/src/libply-splash-core/ply-device-manager.c +@@ -51,6 +51,9 @@ static bool create_devices_for_terminal_and_renderer_type (ply_device_manager_t + const char *device_path, + ply_terminal_t *terminal, + ply_renderer_type_t renderer_type); ++static void create_pixel_displays_for_renderer (ply_device_manager_t *manager, ++ ply_renderer_t *renderer); ++ + struct _ply_device_manager + { + ply_device_manager_flags_t flags; +@@ -371,6 +374,39 @@ create_devices_for_subsystem (ply_device_manager_t *manager, + return found_device; + } + ++static void ++on_drm_udev_add_or_change (ply_device_manager_t *manager, ++ const char *action, ++ struct udev_device *device) ++{ ++ const char *device_path = udev_device_get_devnode (device); ++ ply_renderer_t *renderer; ++ bool changed; ++ ++ if (device_path == NULL) ++ return; ++ ++ renderer = ply_hashtable_lookup (manager->renderers, (void *) device_path); ++ if (renderer == NULL) { ++ /* We also try to create the renderer again on change events, ++ * renderer creation fails when no outputs are connected and ++ * this may have changed. ++ */ ++ create_devices_for_udev_device (manager, device); ++ return; ++ } ++ ++ /* Renderer exists, bail if this is not a change event */ ++ if (strcmp (action, "change")) ++ return; ++ ++ changed = ply_renderer_handle_change_event (renderer); ++ if (changed) { ++ free_displays_for_renderer (manager, renderer); ++ create_pixel_displays_for_renderer (manager, renderer); ++ } ++} ++ + static bool + on_udev_event (ply_device_manager_t *manager) + { +@@ -388,7 +424,7 @@ on_udev_event (ply_device_manager_t *manager) + if (action == NULL) + return false; + +- if (strcmp (action, "add") == 0) { ++ if (strcmp (action, "add") == 0 || strcmp (action, "change") == 0) { + const char *subsystem; + + subsystem = udev_device_get_subsystem (device); +@@ -397,7 +433,7 @@ on_udev_event (ply_device_manager_t *manager) + if (manager->local_console_managed && manager->local_console_is_text) + ply_trace ("ignoring since we're already using text splash for local console"); + else +- create_devices_for_udev_device (manager, device); ++ on_drm_udev_add_or_change (manager, action, device); + } else { + ply_trace ("ignoring since we only handle subsystem %s devices after timeout", subsystem); + } +-- +2.20.1 + +From 609781d8857b21a021545677b29af01ddba5df72 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 6 Feb 2019 11:48:55 +0100 +Subject: [PATCH 60/74] ply-label: Make sure get_width_of_control / + get_height_of_control return correct values + +Users of ply_label may want to know the height / width of the text before +calling ply_label_show, so that they can e.g. vertically align it. + +This commit adds a size_needs_update bool to the label plugin and uses this +to check if executing size_control is necessary before returning the +width / height and also modifies the ply-label code to load the plugin +from its get_width / get_height methods. + +As an added advantage this will also skip unnecessary size_control calls +when calling ply_label_show on an already visible label. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-graphics/ply-label.c | 6 ++-- + src/plugins/controls/label/plugin.c | 47 +++++++++++++++----------- + 2 files changed, 32 insertions(+), 21 deletions(-) + +diff --git a/src/libply-splash-graphics/ply-label.c b/src/libply-splash-graphics/ply-label.c +index cfc8098..42d9dfb 100644 +--- a/src/libply-splash-graphics/ply-label.c ++++ b/src/libply-splash-graphics/ply-label.c +@@ -299,7 +299,8 @@ long + ply_label_get_width (ply_label_t *label) + { + if (label->plugin_interface == NULL) +- return 0; ++ if (!ply_label_load_plugin (label)) ++ return 0; + + return label->plugin_interface->get_width_of_control (label->control); + } +@@ -308,7 +309,8 @@ long + ply_label_get_height (ply_label_t *label) + { + if (label->plugin_interface == NULL) +- return 0; ++ if (!ply_label_load_plugin (label)) ++ return 0; + + return label->plugin_interface->get_height_of_control (label->control); + } +diff --git a/src/plugins/controls/label/plugin.c b/src/plugins/controls/label/plugin.c +index acba52b..b552981 100644 +--- a/src/plugins/controls/label/plugin.c ++++ b/src/plugins/controls/label/plugin.c +@@ -66,6 +66,7 @@ struct _ply_label_plugin_control + float alpha; + + uint32_t is_hidden : 1; ++ uint32_t needs_size_update : 1; + }; + + ply_label_plugin_interface_t *ply_label_plugin_get_interface (void); +@@ -93,18 +94,6 @@ destroy_control (ply_label_plugin_control_t *label) + free (label); + } + +-static long +-get_width_of_control (ply_label_plugin_control_t *label) +-{ +- return label->area.width; +-} +- +-static long +-get_height_of_control (ply_label_plugin_control_t *label) +-{ +- return label->area.height; +-} +- + static cairo_t * + get_cairo_context_for_pixel_buffer (ply_label_plugin_control_t *label, + ply_pixel_buffer_t *pixel_buffer) +@@ -175,15 +164,20 @@ init_pango_text_layout (cairo_t *cairo_context, + } + + static void +-size_control (ply_label_plugin_control_t *label) ++size_control (ply_label_plugin_control_t *label, bool force) + { + cairo_t *cairo_context; + PangoLayout *pango_layout; + int text_width; + int text_height; + +- if (label->is_hidden) ++ if (force && !label->needs_size_update) ++ return; /* Size already is up to date */ ++ ++ if (!force && label->is_hidden) { ++ label->needs_size_update = true; + return; ++ } + + cairo_context = get_cairo_context_for_sizing (label); + +@@ -195,6 +189,7 @@ size_control (ply_label_plugin_control_t *label) + + g_object_unref (pango_layout); + cairo_destroy (cairo_context); ++ label->needs_size_update = false; + } + + static void +@@ -261,7 +256,7 @@ set_alignment_for_control (ply_label_plugin_control_t *label, + if (label->alignment != pango_alignment) { + dirty_area = label->area; + label->alignment = pango_alignment; +- size_control (label); ++ size_control (label, false); + if (!label->is_hidden && label->display != NULL) + ply_pixel_display_draw_area (label->display, + dirty_area.x, dirty_area.y, +@@ -278,7 +273,7 @@ set_width_for_control (ply_label_plugin_control_t *label, + if (label->width != width) { + dirty_area = label->area; + label->width = width; +- size_control (label); ++ size_control (label, false); + if (!label->is_hidden && label->display != NULL) + ply_pixel_display_draw_area (label->display, + dirty_area.x, dirty_area.y, +@@ -296,7 +291,7 @@ set_text_for_control (ply_label_plugin_control_t *label, + dirty_area = label->area; + free (label->text); + label->text = strdup (text); +- size_control (label); ++ size_control (label, false); + if (!label->is_hidden && label->display != NULL) + ply_pixel_display_draw_area (label->display, + dirty_area.x, dirty_area.y, +@@ -317,7 +312,7 @@ set_font_for_control (ply_label_plugin_control_t *label, + label->fontdesc = strdup (fontdesc); + else + label->fontdesc = NULL; +- size_control (label); ++ size_control (label, false); + if (!label->is_hidden && label->display != NULL) + ply_pixel_display_draw_area (label->display, + dirty_area.x, dirty_area.y, +@@ -358,7 +353,7 @@ show_control (ply_label_plugin_control_t *label, + + label->is_hidden = false; + +- size_control (label); ++ size_control (label, true); + + if (!label->is_hidden && label->display != NULL) + ply_pixel_display_draw_area (label->display, +@@ -389,6 +384,20 @@ is_control_hidden (ply_label_plugin_control_t *label) + return label->is_hidden; + } + ++static long ++get_width_of_control (ply_label_plugin_control_t *label) ++{ ++ size_control (label, true); ++ return label->area.width; ++} ++ ++static long ++get_height_of_control (ply_label_plugin_control_t *label) ++{ ++ size_control (label, true); ++ return label->area.height; ++} ++ + ply_label_plugin_interface_t * + ply_label_plugin_get_interface (void) + { +-- +2.20.1 + +From d1f51423b520ca88978351104a21ab6935ebec1a Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Fri, 8 Feb 2019 18:04:01 +0100 +Subject: [PATCH 61/74] ply-progress-bar: Redraw on percentage update + +All the other plymouth widgets do a (re)draw when one of their +properties get updated. Make ply-progress-bar also do this, this allows +dropping the draw calls directly after the 2 current callers of +ply_progress_bar_set_percent_done. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-graphics/ply-progress-bar.c | 1 + + src/plugins/splash/throbgress/plugin.c | 2 -- + 2 files changed, 1 insertion(+), 2 deletions(-) + +diff --git a/src/libply-splash-graphics/ply-progress-bar.c b/src/libply-splash-graphics/ply-progress-bar.c +index c0b5f9a..2ba3bf4 100644 +--- a/src/libply-splash-graphics/ply-progress-bar.c ++++ b/src/libply-splash-graphics/ply-progress-bar.c +@@ -199,6 +199,7 @@ ply_progress_bar_set_percent_done (ply_progress_bar_t *progress_bar, + double percent_done) + { + progress_bar->percent_done = percent_done; ++ ply_progress_bar_draw (progress_bar); + } + + double +diff --git a/src/plugins/splash/throbgress/plugin.c b/src/plugins/splash/throbgress/plugin.c +index a1c8a90..4016d96 100644 +--- a/src/plugins/splash/throbgress/plugin.c ++++ b/src/plugins/splash/throbgress/plugin.c +@@ -736,7 +736,6 @@ on_boot_progress (ply_boot_splash_plugin_t *plugin, + next_node = ply_list_get_next_node (plugin->views, node); + + ply_progress_bar_set_percent_done (view->progress_bar, percent_done); +- ply_progress_bar_draw (view->progress_bar); + + node = next_node; + } +@@ -940,7 +939,6 @@ system_update (ply_boot_splash_plugin_t *plugin, + view = ply_list_node_get_data (node); + next_node = ply_list_get_next_node (plugin->views, node); + ply_progress_bar_set_percent_done (view->progress_bar, (double) progress / 100.f); +- ply_progress_bar_draw (view->progress_bar); + node = next_node; + } + } +-- +2.20.1 + +From ecfd84c6749d45f4e95bc99c3285cd7740b8eb36 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Fri, 8 Feb 2019 14:06:28 +0100 +Subject: [PATCH 62/74] ply-progress-bar: Allow choosing fore- and back-ground + color + +Allow choosing a fore- and back-ground color instead of hardcoding +the foreground to white and the background to transparent. + +This commit does not change behavior for existing users (tested with the +spinfinity theme). + +Signed-off-by: Hans de Goede +--- + src/libply-splash-graphics/ply-progress-bar.c | 68 +++++++++---------- + src/libply-splash-graphics/ply-progress-bar.h | 4 ++ + 2 files changed, 36 insertions(+), 36 deletions(-) + +diff --git a/src/libply-splash-graphics/ply-progress-bar.c b/src/libply-splash-graphics/ply-progress-bar.c +index 2ba3bf4..e5697b4 100644 +--- a/src/libply-splash-graphics/ply-progress-bar.c ++++ b/src/libply-splash-graphics/ply-progress-bar.c +@@ -1,6 +1,6 @@ + /* progress_bar.c - boot progress_bar + * +- * Copyright (C) 2008 Red Hat, Inc. ++ * Copyright (C) 2008, 2019 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by +@@ -19,6 +19,7 @@ + * + * Written by: Ray Strode + * Will Woods ++ * Hans de Goede + */ + #include "config.h" + +@@ -50,10 +51,6 @@ + #include "ply-image.h" + #include "ply-utils.h" + +-#ifndef FRAMES_PER_SECOND +-#define FRAMES_PER_SECOND 30 +-#endif +- + #ifndef BAR_HEIGHT + #define BAR_HEIGHT 16 + #endif +@@ -63,6 +60,8 @@ struct _ply_progress_bar + ply_pixel_display_t *display; + ply_rectangle_t area; + ++ uint32_t fg_color; ++ uint32_t bg_color; + double percent_done; + + uint32_t is_hidden : 1; +@@ -76,11 +75,9 @@ ply_progress_bar_new (void) + progress_bar = calloc (1, sizeof(ply_progress_bar_t)); + + progress_bar->is_hidden = true; ++ progress_bar->fg_color = 0xffffffff; /* Solid white */ ++ progress_bar->bg_color = 0x01000000; /* Transparent */ + progress_bar->percent_done = 0.0; +- progress_bar->area.x = 0; +- progress_bar->area.y = 0; +- progress_bar->area.width = 0; +- progress_bar->area.height = BAR_HEIGHT; + + return progress_bar; + } +@@ -93,21 +90,6 @@ ply_progress_bar_free (ply_progress_bar_t *progress_bar) + free (progress_bar); + } + +-static void +-ply_progress_bar_update_area (ply_progress_bar_t *progress_bar, +- long x, +- long y) +-{ +- unsigned long display_width; +- +- progress_bar->area.x = x; +- progress_bar->area.y = y; +- progress_bar->area.height = BAR_HEIGHT; +- +- display_width = ply_pixel_display_get_width (progress_bar->display); +- progress_bar->area.width = (long) (display_width * progress_bar->percent_done); +-} +- + void + ply_progress_bar_draw_area (ply_progress_bar_t *progress_bar, + ply_pixel_buffer_t *buffer, +@@ -116,20 +98,23 @@ ply_progress_bar_draw_area (ply_progress_bar_t *progress_bar, + unsigned long width, + unsigned long height) + { +- ply_rectangle_t paint_area; ++ ply_rectangle_t fill_area; + + if (progress_bar->is_hidden) + return; + +- paint_area.x = x; +- paint_area.y = y; +- paint_area.width = width; +- paint_area.height = height; ++ /* Note we ignore the passed in area / rectangle to update, ++ * since ply_pixel_display_draw_area() already pushes it to ++ * the buffer's clip_area list. ++ */ + +- ply_rectangle_intersect (&progress_bar->area, &paint_area, &paint_area); +- ply_pixel_buffer_fill_with_hex_color (buffer, +- &paint_area, +- 0xffffff); /* white */ ++ fill_area = progress_bar->area; ++ fill_area.width = progress_bar->area.width * progress_bar->percent_done; ++ ply_pixel_buffer_fill_with_hex_color (buffer, &fill_area, progress_bar->fg_color); ++ ++ fill_area.x = fill_area.x + fill_area.width; ++ fill_area.width = progress_bar->area.width - fill_area.width; ++ ply_pixel_buffer_fill_with_hex_color (buffer, &fill_area, progress_bar->bg_color); + } + + void +@@ -138,7 +123,6 @@ ply_progress_bar_draw (ply_progress_bar_t *progress_bar) + if (progress_bar->is_hidden) + return; + +- ply_progress_bar_update_area (progress_bar, progress_bar->area.x, progress_bar->area.y); + ply_pixel_display_draw_area (progress_bar->display, + progress_bar->area.x, + progress_bar->area.y, +@@ -155,8 +139,10 @@ ply_progress_bar_show (ply_progress_bar_t *progress_bar, + assert (progress_bar != NULL); + + progress_bar->display = display; +- +- ply_progress_bar_update_area (progress_bar, x, y); ++ progress_bar->area.x = x; ++ progress_bar->area.y = y; ++ progress_bar->area.height = BAR_HEIGHT; ++ progress_bar->area.width = ply_pixel_display_get_width (display); + + progress_bar->is_hidden = false; + ply_progress_bar_draw (progress_bar); +@@ -208,4 +194,14 @@ ply_progress_bar_get_percent_done (ply_progress_bar_t *progress_bar) + return progress_bar->percent_done; + } + ++void ++ply_progress_bar_set_colors (ply_progress_bar_t *progress_bar, ++ uint32_t fg_color, ++ uint32_t bg_color) ++{ ++ progress_bar->fg_color = fg_color; ++ progress_bar->bg_color = bg_color; ++ ply_progress_bar_draw (progress_bar); ++} ++ + /* vim: set ts=4 sw=4 expandtab autoindent cindent cino={.5s,(0: */ +diff --git a/src/libply-splash-graphics/ply-progress-bar.h b/src/libply-splash-graphics/ply-progress-bar.h +index 2fd80e0..1eab64c 100644 +--- a/src/libply-splash-graphics/ply-progress-bar.h ++++ b/src/libply-splash-graphics/ply-progress-bar.h +@@ -57,6 +57,10 @@ long ply_progress_bar_get_height (ply_progress_bar_t *bar); + void ply_progress_bar_set_percent_done (ply_progress_bar_t *bar, + double percent_done); + double ply_progress_bar_get_percent_done (ply_progress_bar_t *bar); ++ ++void ply_progress_bar_set_colors (ply_progress_bar_t *bar, ++ uint32_t fg_color, ++ uint32_t bg_color); + #endif + + #endif /* PLY_PROGRESS_BAR_H */ +-- +2.20.1 + +From d89af7a2e2fcd7a6abb6f5b3c52f3d847aa337fb Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Fri, 8 Feb 2019 14:38:44 +0100 +Subject: [PATCH 63/74] ply-progress-bar: Allow caller to specify the widgets + width and height + +Before this commit ply_progress_bar_show would take coordinates for where +to show the progress-bar but the width and height were hardcodec. This +commit adds width and height parametes, so that the caller can specify +the width and height too. + +This commit does not change behavior for existing users (tested with the +spinfinity theme). + +Signed-off-by: Hans de Goede +--- + src/libply-splash-graphics/ply-progress-bar.c | 12 +++++------- + src/libply-splash-graphics/ply-progress-bar.h | 4 +++- + src/plugins/splash/throbgress/plugin.c | 5 ++++- + 3 files changed, 12 insertions(+), 9 deletions(-) + +diff --git a/src/libply-splash-graphics/ply-progress-bar.c b/src/libply-splash-graphics/ply-progress-bar.c +index e5697b4..369255a 100644 +--- a/src/libply-splash-graphics/ply-progress-bar.c ++++ b/src/libply-splash-graphics/ply-progress-bar.c +@@ -51,10 +51,6 @@ + #include "ply-image.h" + #include "ply-utils.h" + +-#ifndef BAR_HEIGHT +-#define BAR_HEIGHT 16 +-#endif +- + struct _ply_progress_bar + { + ply_pixel_display_t *display; +@@ -134,15 +130,17 @@ void + ply_progress_bar_show (ply_progress_bar_t *progress_bar, + ply_pixel_display_t *display, + long x, +- long y) ++ long y, ++ unsigned long width, ++ unsigned long height) + { + assert (progress_bar != NULL); + + progress_bar->display = display; + progress_bar->area.x = x; + progress_bar->area.y = y; +- progress_bar->area.height = BAR_HEIGHT; +- progress_bar->area.width = ply_pixel_display_get_width (display); ++ progress_bar->area.height = height; ++ progress_bar->area.width = width; + + progress_bar->is_hidden = false; + ply_progress_bar_draw (progress_bar); +diff --git a/src/libply-splash-graphics/ply-progress-bar.h b/src/libply-splash-graphics/ply-progress-bar.h +index 1eab64c..55f5a48 100644 +--- a/src/libply-splash-graphics/ply-progress-bar.h ++++ b/src/libply-splash-graphics/ply-progress-bar.h +@@ -40,7 +40,9 @@ void ply_progress_bar_free (ply_progress_bar_t *bar); + void ply_progress_bar_show (ply_progress_bar_t *bar, + ply_pixel_display_t *display, + long x, +- long y); ++ long y, ++ unsigned long width, ++ unsigned long height); + void ply_progress_bar_hide (ply_progress_bar_t *bar); + void ply_progress_bar_draw (ply_progress_bar_t *bar); + void ply_progress_bar_draw_area (ply_progress_bar_t *bar, +diff --git a/src/plugins/splash/throbgress/plugin.c b/src/plugins/splash/throbgress/plugin.c +index 4016d96..bbcf1b7 100644 +--- a/src/plugins/splash/throbgress/plugin.c ++++ b/src/plugins/splash/throbgress/plugin.c +@@ -316,7 +316,10 @@ view_start_animation (view_t *view) + view->logo_area.y + view->logo_area.height + height / 2); + ply_progress_bar_show (view->progress_bar, + view->display, +- 0, screen_height - ply_progress_bar_get_height (view->progress_bar)); ++ 0, ++ screen_height - BAR_HEIGHT, ++ screen_width, ++ BAR_HEIGHT); + view_redraw (view); + } + +-- +2.20.1 + +From 2a8df7f2fa2188956f17082d003615ef82e08d06 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 6 Feb 2019 10:08:12 +0100 +Subject: [PATCH 64/74] two-step: Drop background_is_bgrt view_t member + +This is always set to true if plugin->background_bgrt_image is set, so +we can simply check for plugin->background_bgrt_image instead. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index 53f19ee..d117d03 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -94,7 +94,6 @@ typedef struct + ply_rectangle_t box_area, lock_area, watermark_area, dialog_area; + ply_trigger_t *end_trigger; + ply_pixel_buffer_t *background_buffer; +- bool background_is_bgrt; + } view_t; + + struct _ply_boot_splash_plugin +@@ -380,7 +379,6 @@ view_set_bgrt_background (view_t *view) + ply_pixel_buffer_fill_with_buffer (view->background_buffer, bgrt_buffer, x_offset, y_offset); + ply_pixel_buffer_free (bgrt_buffer); + } +- view->background_is_bgrt = true; + } + + static bool +@@ -1085,7 +1083,7 @@ draw_background (view_t *view, + */ + if ((plugin->state == PLY_BOOT_SPLASH_DISPLAY_QUESTION_ENTRY || + plugin->state == PLY_BOOT_SPLASH_DISPLAY_PASSWORD_ENTRY) && +- view->background_is_bgrt && plugin->dialog_clears_firmware_background) ++ plugin->background_bgrt_image && plugin->dialog_clears_firmware_background) + ply_pixel_buffer_fill_with_hex_color (pixel_buffer, &area, 0); + else if (view->background_buffer != NULL) + ply_pixel_buffer_fill_with_buffer (pixel_buffer, view->background_buffer, 0, 0); +-- +2.20.1 + +From 7ed8de39b15af168c4642eabeba925d2283b39af Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 6 Feb 2019 10:34:56 +0100 +Subject: [PATCH 65/74] two-step: Add per mode settings + +We want theme files to be able to specify different settings for +different modes ("boot-up" / "shutdown" / "updates"). Specifically we +want themes to be able to specify a text for (offline) updates mode to +tell the user what is going on, see the mockups at: +https://wiki.gnome.org/Design/OS/BootProgress + +This commit adds support for per mode settings to the two-step plugins +and for starters moves the UseFirmwareBackground setting there, since we +don't want to show the firmware-background when showing the help-text. + +Follow-up commits will add support for specifying the (optional) per mode +text to show, note eventually we will need to make these texts translatable. + +Signed-off-by: Hans de Goede +--- + .../ply-boot-splash-plugin.h | 3 +- + src/plugins/splash/two-step/plugin.c | 45 ++++++++++++++++++- + themes/bgrt/bgrt.plymouth.in | 10 ++++- + 3 files changed, 55 insertions(+), 3 deletions(-) + +diff --git a/src/libply-splash-core/ply-boot-splash-plugin.h b/src/libply-splash-core/ply-boot-splash-plugin.h +index 710047e..de21319 100644 +--- a/src/libply-splash-core/ply-boot-splash-plugin.h ++++ b/src/libply-splash-core/ply-boot-splash-plugin.h +@@ -39,7 +39,8 @@ typedef enum + PLY_BOOT_SPLASH_MODE_BOOT_UP, + PLY_BOOT_SPLASH_MODE_SHUTDOWN, + PLY_BOOT_SPLASH_MODE_UPDATES, +- PLY_BOOT_SPLASH_MODE_INVALID ++ PLY_BOOT_SPLASH_MODE_INVALID, ++ PLY_BOOT_SPLASH_MODE_COUNT = PLY_BOOT_SPLASH_MODE_UPDATES + 1, + } ply_boot_splash_mode_t; + + typedef struct _ply_boot_splash_plugin ply_boot_splash_plugin_t; +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index d117d03..1a531cb 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -96,10 +96,16 @@ typedef struct + ply_pixel_buffer_t *background_buffer; + } view_t; + ++typedef struct ++{ ++ bool use_firmware_background; ++} mode_settings_t; ++ + struct _ply_boot_splash_plugin + { + ply_event_loop_t *loop; + ply_boot_splash_mode_t mode; ++ mode_settings_t mode_settings[PLY_BOOT_SPLASH_MODE_COUNT]; + ply_image_t *lock_image; + ply_image_t *box_image; + ply_image_t *corner_image; +@@ -137,6 +143,7 @@ struct _ply_boot_splash_plugin + uint32_t is_visible : 1; + uint32_t is_animating : 1; + uint32_t is_idle : 1; ++ uint32_t use_firmware_background : 1; + uint32_t dialog_clears_firmware_background : 1; + }; + +@@ -719,6 +726,22 @@ view_hide_prompt (view_t *view) + ply_label_hide (view->label); + } + ++static void ++load_mode_settings (ply_boot_splash_plugin_t *plugin, ++ ply_key_file_t *key_file, ++ const char *group_name, ++ ply_boot_splash_mode_t mode) ++{ ++ mode_settings_t *settings = &plugin->mode_settings[mode]; ++ ++ settings->use_firmware_background = ++ ply_key_file_get_bool (key_file, group_name, "UseFirmwareBackground"); ++ ++ /* If any mode uses the firmware background, then we need to load it */ ++ if (settings->use_firmware_background) ++ plugin->use_firmware_background = true; ++} ++ + static ply_boot_splash_plugin_t * + create_plugin (ply_key_file_t *key_file) + { +@@ -842,7 +865,11 @@ create_plugin (ply_key_file_t *key_file) + + free (color); + +- if (ply_key_file_get_bool (key_file, "two-step", "UseFirmwareBackground")) ++ load_mode_settings (plugin, key_file, "boot-up", PLY_BOOT_SPLASH_MODE_BOOT_UP); ++ load_mode_settings (plugin, key_file, "shutdown", PLY_BOOT_SPLASH_MODE_SHUTDOWN); ++ load_mode_settings (plugin, key_file, "updates", PLY_BOOT_SPLASH_MODE_UPDATES); ++ ++ if (plugin->use_firmware_background) + plugin->background_bgrt_image = ply_image_new ("/sys/firmware/acpi/bgrt/image"); + + plugin->dialog_clears_firmware_background = +@@ -1070,6 +1097,7 @@ draw_background (view_t *view, + { + ply_boot_splash_plugin_t *plugin; + ply_rectangle_t area; ++ bool use_black_background = false; + + plugin = view->plugin; + +@@ -1078,12 +1106,22 @@ draw_background (view_t *view, + area.width = width; + area.height = height; + ++ /* When using the firmware logo as background and we should not use ++ * it for this mode, use solid black as background. ++ */ ++ if (plugin->background_bgrt_image && ++ !plugin->mode_settings[plugin->mode].use_firmware_background) ++ use_black_background = true; ++ + /* When using the firmware logo as background, use solid black as + * background for dialogs. + */ + if ((plugin->state == PLY_BOOT_SPLASH_DISPLAY_QUESTION_ENTRY || + plugin->state == PLY_BOOT_SPLASH_DISPLAY_PASSWORD_ENTRY) && + plugin->background_bgrt_image && plugin->dialog_clears_firmware_background) ++ use_black_background = true; ++ ++ if (use_black_background) + ply_pixel_buffer_fill_with_hex_color (pixel_buffer, &area, 0); + else if (view->background_buffer != NULL) + ply_pixel_buffer_fill_with_buffer (pixel_buffer, view->background_buffer, 0, 0); +@@ -1250,6 +1288,8 @@ show_splash_screen (ply_boot_splash_plugin_t *plugin, + ply_buffer_t *boot_buffer, + ply_boot_splash_mode_t mode) + { ++ int i; ++ + assert (plugin != NULL); + + plugin->loop = loop; +@@ -1301,6 +1341,9 @@ show_splash_screen (ply_boot_splash_plugin_t *plugin, + } else { + ply_image_free (plugin->background_bgrt_image); + plugin->background_bgrt_image = NULL; ++ for (i = 0; i < PLY_BOOT_SPLASH_MODE_COUNT; i++) ++ plugin->mode_settings[i].use_firmware_background = false; ++ plugin->use_firmware_background = false; + } + } + +diff --git a/themes/bgrt/bgrt.plymouth.in b/themes/bgrt/bgrt.plymouth.in +index 3cabbca..e93f91c 100644 +--- a/themes/bgrt/bgrt.plymouth.in ++++ b/themes/bgrt/bgrt.plymouth.in +@@ -13,5 +13,13 @@ Transition=none + TransitionDuration=0.0 + BackgroundStartColor=0x202020 + BackgroundEndColor=0x202020 +-UseFirmwareBackground=true + DialogClearsFirmwareBackground=true ++ ++[boot-up] ++UseFirmwareBackground=true ++ ++[shutdown] ++UseFirmwareBackground=true ++ ++[updates] ++UseFirmwareBackground=true +-- +2.20.1 + +From e1d0b852b620a0fd19167bd3f01b26e9cf2dc136 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 6 Feb 2019 16:58:58 +0100 +Subject: [PATCH 66/74] two-step: Add support for specifying a title and + sub-title in the theme file + +The idea behind this is to allow a splash-screen containing something like this: + + Installing updates... + + Do not turn off your computer + + /-----------------------\ + |Animation / progres-bar| + \-----------------------/ + +As can be seen in the mockups here: +https://wiki.gnome.org/Design/OS/BootProgress + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 92 ++++++++++++++++++++++++++++ + 1 file changed, 92 insertions(+) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index 1a531cb..2051240 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -91,6 +91,8 @@ typedef struct + ply_throbber_t *throbber; + ply_label_t *label; + ply_label_t *message_label; ++ ply_label_t *title_label; ++ ply_label_t *subtitle_label; + ply_rectangle_t box_area, lock_area, watermark_area, dialog_area; + ply_trigger_t *end_trigger; + ply_pixel_buffer_t *background_buffer; +@@ -99,6 +101,8 @@ typedef struct + typedef struct + { + bool use_firmware_background; ++ char *title; ++ char *subtitle; + } mode_settings_t; + + struct _ply_boot_splash_plugin +@@ -106,6 +110,7 @@ struct _ply_boot_splash_plugin + ply_event_loop_t *loop; + ply_boot_splash_mode_t mode; + mode_settings_t mode_settings[PLY_BOOT_SPLASH_MODE_COUNT]; ++ char *font; + ply_image_t *lock_image; + ply_image_t *box_image; + ply_image_t *corner_image; +@@ -120,6 +125,10 @@ struct _ply_boot_splash_plugin + double dialog_horizontal_alignment; + double dialog_vertical_alignment; + ++ double title_horizontal_alignment; ++ double title_vertical_alignment; ++ char *title_font; ++ + double watermark_horizontal_alignment; + double watermark_vertical_alignment; + +@@ -179,7 +188,16 @@ view_new (ply_boot_splash_plugin_t *plugin, + plugin->transition_duration); + + view->label = ply_label_new (); ++ ply_label_set_font (view->label, plugin->font); ++ + view->message_label = ply_label_new (); ++ ply_label_set_font (view->message_label, plugin->font); ++ ++ view->title_label = ply_label_new (); ++ ply_label_set_font (view->title_label, plugin->title_font); ++ ++ view->subtitle_label = ply_label_new (); ++ ply_label_set_font (view->subtitle_label, plugin->font); + + return view; + } +@@ -193,6 +211,8 @@ view_free (view_t *view) + ply_throbber_free (view->throbber); + ply_label_free (view->label); + ply_label_free (view->message_label); ++ ply_label_free (view->title_label); ++ ply_label_free (view->subtitle_label); + + if (view->background_buffer != NULL) + ply_pixel_buffer_free (view->background_buffer); +@@ -391,6 +411,7 @@ view_set_bgrt_background (view_t *view) + static bool + view_load (view_t *view) + { ++ unsigned long x, y, width, title_height = 0, subtitle_height = 0; + unsigned long screen_width, screen_height, screen_scale; + ply_boot_splash_plugin_t *plugin; + ply_pixel_buffer_t *buffer; +@@ -466,6 +487,42 @@ view_load (view_t *view) + ply_trace ("this theme has no throbber\n"); + } + ++ if (plugin->mode_settings[plugin->mode].title) { ++ ply_label_set_text (view->title_label, ++ plugin->mode_settings[plugin->mode].title); ++ title_height = ply_label_get_height (view->title_label); ++ } else { ++ ply_label_hide (view->title_label); ++ } ++ ++ if (plugin->mode_settings[plugin->mode].subtitle) { ++ ply_label_set_text (view->subtitle_label, ++ plugin->mode_settings[plugin->mode].subtitle); ++ subtitle_height = ply_label_get_height (view->subtitle_label); ++ } else { ++ ply_label_hide (view->subtitle_label); ++ } ++ ++ y = (screen_height - title_height - 2 * subtitle_height) * plugin->title_vertical_alignment; ++ ++ if (plugin->mode_settings[plugin->mode].title) { ++ width = ply_label_get_width (view->title_label); ++ x = (screen_width - width) * plugin->title_horizontal_alignment; ++ ply_trace ("using %ldx%ld title centered at %ldx%ld for %ldx%ld screen", ++ width, title_height, x, y, screen_width, screen_height); ++ ply_label_show (view->title_label, view->display, x, y); ++ /* Use subtitle_height pixels seperation between title and subtitle */ ++ y += title_height + subtitle_height; ++ } ++ ++ if (plugin->mode_settings[plugin->mode].subtitle) { ++ width = ply_label_get_width (view->subtitle_label); ++ x = (screen_width - width) * plugin->title_horizontal_alignment; ++ ply_trace ("using %ldx%ld subtitle centered at %ldx%ld for %ldx%ld screen", ++ width, subtitle_height, x, y, screen_width, screen_height); ++ ply_label_show (view->subtitle_label, view->display, x, y); ++ } ++ + return true; + } + +@@ -740,6 +797,9 @@ load_mode_settings (ply_boot_splash_plugin_t *plugin, + /* If any mode uses the firmware background, then we need to load it */ + if (settings->use_firmware_background) + plugin->use_firmware_background = true; ++ ++ settings->title = ply_key_file_get_value (key_file, group_name, "Title"); ++ settings->subtitle = ply_key_file_get_value (key_file, group_name, "SubTitle"); + } + + static ply_boot_splash_plugin_t * +@@ -786,6 +846,9 @@ create_plugin (ply_key_file_t *key_file) + + plugin->animation_dir = image_dir; + ++ plugin->font = ply_key_file_get_value (key_file, "two-step", "Font"); ++ plugin->title_font = ply_key_file_get_value (key_file, "two-step", "TitleFont"); ++ + alignment = ply_key_file_get_value (key_file, "two-step", "HorizontalAlignment"); + if (alignment != NULL) + plugin->animation_horizontal_alignment = ply_strtod (alignment); +@@ -828,6 +891,20 @@ create_plugin (ply_key_file_t *key_file) + plugin->dialog_vertical_alignment = .5; + free (alignment); + ++ alignment = ply_key_file_get_value (key_file, "two-step", "TitleHorizontalAlignment"); ++ if (alignment != NULL) ++ plugin->title_horizontal_alignment = ply_strtod (alignment); ++ else ++ plugin->title_horizontal_alignment = .5; ++ free (alignment); ++ ++ alignment = ply_key_file_get_value (key_file, "two-step", "TitleVerticalAlignment"); ++ if (alignment != NULL) ++ plugin->title_vertical_alignment = ply_strtod (alignment); ++ else ++ plugin->title_vertical_alignment = .5; ++ free (alignment); ++ + plugin->transition = PLY_PROGRESS_ANIMATION_TRANSITION_NONE; + transition = ply_key_file_get_value (key_file, "two-step", "Transition"); + if (transition != NULL) { +@@ -926,6 +1003,8 @@ free_views (ply_boot_splash_plugin_t *plugin) + static void + destroy_plugin (ply_boot_splash_plugin_t *plugin) + { ++ int i; ++ + if (plugin == NULL) + return; + +@@ -960,6 +1039,13 @@ destroy_plugin (ply_boot_splash_plugin_t *plugin) + if (plugin->watermark_image != NULL) + ply_image_free (plugin->watermark_image); + ++ for (i = 0; i < PLY_BOOT_SPLASH_MODE_COUNT; i++) { ++ free (plugin->mode_settings[i].title); ++ free (plugin->mode_settings[i].subtitle); ++ } ++ ++ free (plugin->font); ++ free (plugin->title_font); + free (plugin->animation_dir); + free_views (plugin); + free (plugin); +@@ -1225,6 +1311,12 @@ on_draw (view_t *view, + + ply_pixel_buffer_fill_with_argb32_data (pixel_buffer, &image_area, ply_image_get_data (plugin->header_image)); + } ++ ply_label_draw_area (view->title_label, ++ pixel_buffer, ++ x, y, width, height); ++ ply_label_draw_area (view->subtitle_label, ++ pixel_buffer, ++ x, y, width, height); + } + ply_label_draw_area (view->message_label, + pixel_buffer, +-- +2.20.1 + +From 91922a0194e7422113d643ad8f11ffbfb0f15040 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Thu, 7 Feb 2019 17:44:32 +0100 +Subject: [PATCH 67/74] two-step: Add MessageBelowAnimation option + +So far we've always printed messages coming from "plymouth display-message" +in the top left corner. In some cases the theme may want to instead display +the messages below the animation (where they are more prominently visible). + +My first attempt to support this added MessageHorizontal/VerticalAlignment +options. That did not work since we want a more or less fixed distance +between the animation bottom and the message and with screen-heights varying +from 480 to 1200 that is not possible using alignment options to place both +the animation and the message. + +Note the default is unchanged and still is the top left corner. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 46 ++++++++++++++++++++-------- + 1 file changed, 33 insertions(+), 13 deletions(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index 2051240..c6f99ed 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -96,6 +96,7 @@ typedef struct + ply_rectangle_t box_area, lock_area, watermark_area, dialog_area; + ply_trigger_t *end_trigger; + ply_pixel_buffer_t *background_buffer; ++ int animation_bottom; + } view_t; + + typedef struct +@@ -154,6 +155,7 @@ struct _ply_boot_splash_plugin + uint32_t is_idle : 1; + uint32_t use_firmware_background : 1; + uint32_t dialog_clears_firmware_background : 1; ++ uint32_t message_below_animation : 1; + }; + + ply_boot_splash_plugin_interface_t *ply_boot_splash_plugin_get_interface (void); +@@ -647,6 +649,7 @@ view_start_end_animation (view_t *view, + ply_animation_start (view->end_animation, + view->display, + trigger, x, y); ++ view->animation_bottom = y + height; + } + + static void +@@ -689,6 +692,7 @@ view_start_progress_animation (view_t *view) + plugin->loop, + view->display, x, y); + ply_pixel_display_draw_area (view->display, x, y, width, height); ++ view->animation_bottom = y + height; + } + + /* We don't really know how long shutdown will so +@@ -706,6 +710,7 @@ view_start_progress_animation (view_t *view) + view->display, x, y); + + ply_pixel_display_draw_area (view->display, x, y, width, height); ++ view->animation_bottom = y + height; + } + } + +@@ -952,6 +957,9 @@ create_plugin (ply_key_file_t *key_file) + plugin->dialog_clears_firmware_background = + ply_key_file_get_bool (key_file, "two-step", "DialogClearsFirmwareBackground"); + ++ plugin->message_below_animation = ++ ply_key_file_get_bool (key_file, "two-step", "MessageBelowAnimation"); ++ + progress_function = ply_key_file_get_value (key_file, "two-step", "ProgressFunction"); + + if (progress_function != NULL) { +@@ -1668,6 +1676,29 @@ hide_prompt (ply_boot_splash_plugin_t *plugin) + } + + ++static void ++view_show_message (view_t *view, ++ const char *message) ++{ ++ ply_boot_splash_plugin_t *plugin = view->plugin; ++ int x, y, width, height; ++ ++ ply_label_set_text (view->message_label, message); ++ width = ply_label_get_width (view->message_label); ++ height = ply_label_get_height (view->message_label); ++ ++ if (plugin->message_below_animation) { ++ x = (ply_pixel_display_get_width (view->display) - width) * 0.5; ++ y = view->animation_bottom + 10; ++ } else { ++ x = 10; ++ y = 10; ++ } ++ ++ ply_label_show (view->message_label, view->display, x, y); ++ ply_pixel_display_draw_area (view->display, x, y, width, height); ++} ++ + static void + show_message (ply_boot_splash_plugin_t *plugin, + const char *message) +@@ -1676,19 +1707,8 @@ show_message (ply_boot_splash_plugin_t *plugin, + ply_list_node_t *node; + node = ply_list_get_first_node (plugin->views); + while (node != NULL) { +- ply_list_node_t *next_node; +- view_t *view; +- +- view = ply_list_node_get_data (node); +- next_node = ply_list_get_next_node (plugin->views, node); +- +- ply_label_set_text (view->message_label, message); +- ply_label_show (view->message_label, view->display, 10, 10); +- +- ply_pixel_display_draw_area (view->display, 10, 10, +- ply_label_get_width (view->message_label), +- ply_label_get_height (view->message_label)); +- node = next_node; ++ view_show_message (ply_list_node_get_data (node), message); ++ node = ply_list_get_next_node (plugin->views, node); + } + } + +-- +2.20.1 + +From cf9f40718510ce49b75b7d34c7db3d341f0b62b1 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Fri, 8 Feb 2019 22:41:15 +0100 +Subject: [PATCH 68/74] two-step: Add progress-bar support + +Some themes may want to use a progress-bar instead of the throbber for +some modes. This commit adds a new per mode UseProgressBar setting allowing +this. + +One case where this will be used is the offline updates splash-screen +mockup from: https://wiki.gnome.org/Design/OS/BootProgress + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 66 +++++++++++++++++++++++++++- + 1 file changed, 64 insertions(+), 2 deletions(-) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index c6f99ed..32e4294 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -57,6 +57,7 @@ + #include "ply-animation.h" + #include "ply-progress-animation.h" + #include "ply-throbber.h" ++#include "ply-progress-bar.h" + + #include + +@@ -68,6 +69,9 @@ + #define SHOW_ANIMATION_PERCENT 0.9 + #endif + ++#define PROGRESS_BAR_WIDTH 400 ++#define PROGRESS_BAR_HEIGHT 5 ++ + typedef enum + { + PLY_BOOT_SPLASH_DISPLAY_NORMAL, +@@ -88,6 +92,7 @@ typedef struct + ply_entry_t *entry; + ply_animation_t *end_animation; + ply_progress_animation_t *progress_animation; ++ ply_progress_bar_t *progress_bar; + ply_throbber_t *throbber; + ply_label_t *label; + ply_label_t *message_label; +@@ -101,6 +106,7 @@ typedef struct + + typedef struct + { ++ bool use_progress_bar; + bool use_firmware_background; + char *title; + char *subtitle; +@@ -144,6 +150,9 @@ struct _ply_boot_splash_plugin + uint32_t background_end_color; + int background_bgrt_raw_width; + ++ uint32_t progress_bar_bg_color; ++ uint32_t progress_bar_fg_color; ++ + progress_function_t progress_function; + + ply_trigger_t *idle_trigger; +@@ -156,6 +165,7 @@ struct _ply_boot_splash_plugin + uint32_t use_firmware_background : 1; + uint32_t dialog_clears_firmware_background : 1; + uint32_t message_below_animation : 1; ++ uint32_t progress_bar_show_percent_complete : 1; + }; + + ply_boot_splash_plugin_interface_t *ply_boot_splash_plugin_get_interface (void); +@@ -182,6 +192,10 @@ view_new (ply_boot_splash_plugin_t *plugin, + view->entry = ply_entry_new (plugin->animation_dir); + view->progress_animation = ply_progress_animation_new (plugin->animation_dir, + "progress-"); ++ view->progress_bar = ply_progress_bar_new (); ++ ply_progress_bar_set_colors (view->progress_bar, ++ plugin->progress_bar_fg_color, ++ plugin->progress_bar_bg_color); + + view->throbber = ply_throbber_new (plugin->animation_dir, + "throbber-"); +@@ -210,6 +224,7 @@ view_free (view_t *view) + ply_entry_free (view->entry); + ply_animation_free (view->end_animation); + ply_progress_animation_free (view->progress_animation); ++ ply_progress_bar_free (view->progress_bar); + ply_throbber_free (view->throbber); + ply_label_free (view->label); + ply_label_free (view->message_label); +@@ -683,7 +698,16 @@ view_start_progress_animation (view_t *view) + ply_pixel_display_draw_area (view->display, 0, 0, + screen_width, screen_height); + +- if (view->throbber != NULL) { ++ if (plugin->mode_settings[plugin->mode].use_progress_bar) { ++ width = PROGRESS_BAR_WIDTH; ++ height = PROGRESS_BAR_HEIGHT; ++ x = plugin->animation_horizontal_alignment * screen_width - width / 2.0; ++ y = plugin->animation_vertical_alignment * screen_height - height / 2.0; ++ ply_progress_bar_show (view->progress_bar, view->display, ++ x, y, width, height); ++ ply_pixel_display_draw_area (view->display, x, y, width, height); ++ view->animation_bottom = y + height; ++ } else if (view->throbber != NULL) { + width = ply_throbber_get_width (view->throbber); + height = ply_throbber_get_height (view->throbber); + x = plugin->animation_horizontal_alignment * screen_width - width / 2.0; +@@ -796,6 +820,8 @@ load_mode_settings (ply_boot_splash_plugin_t *plugin, + { + mode_settings_t *settings = &plugin->mode_settings[mode]; + ++ settings->use_progress_bar = ++ ply_key_file_get_bool (key_file, group_name, "UseProgressBar"); + settings->use_firmware_background = + ply_key_file_get_bool (key_file, group_name, "UseFirmwareBackground"); + +@@ -947,6 +973,26 @@ create_plugin (ply_key_file_t *key_file) + + free (color); + ++ color = ply_key_file_get_value (key_file, "two-step", "ProgressBarBackgroundColor"); ++ ++ if (color != NULL) ++ plugin->progress_bar_bg_color = strtol (color, NULL, 0); ++ else ++ plugin->progress_bar_bg_color = 0xffffff; /* white */ ++ ++ free (color); ++ ++ color = ply_key_file_get_value (key_file, "two-step", "ProgressBarForegroundColor"); ++ ++ if (color != NULL) ++ plugin->progress_bar_fg_color = strtol (color, NULL, 0); ++ else ++ plugin->progress_bar_fg_color = 0x000000; /* black */ ++ ++ free (color); ++ ++ plugin->progress_bar_show_percent_complete = ply_key_file_get_bool (key_file, "two-step", "ProgressBarShowPercentComplete"); ++ + load_mode_settings (plugin, key_file, "boot-up", PLY_BOOT_SPLASH_MODE_BOOT_UP); + load_mode_settings (plugin, key_file, "shutdown", PLY_BOOT_SPLASH_MODE_SHUTDOWN); + load_mode_settings (plugin, key_file, "updates", PLY_BOOT_SPLASH_MODE_UPDATES); +@@ -1063,6 +1109,12 @@ static void + start_end_animation (ply_boot_splash_plugin_t *plugin, + ply_trigger_t *trigger) + { ++ if (plugin->mode_settings[plugin->mode].use_progress_bar) { ++ /* Leave the progress-bar at 100% rather then showing the end animation */ ++ ply_trigger_pull (trigger, NULL); ++ return; ++ } ++ + ply_trace ("starting end animation"); + + ply_list_node_t *node; +@@ -1276,7 +1328,10 @@ on_draw (view_t *view, + &view->lock_area, + lock_data); + } else { +- if (view->throbber != NULL && ++ if (plugin->mode_settings[plugin->mode].use_progress_bar) ++ ply_progress_bar_draw_area (view->progress_bar, pixel_buffer, ++ x, y, width, height); ++ else if (view->throbber != NULL && + !ply_throbber_is_stopped (view->throbber)) + ply_throbber_draw_area (view->throbber, pixel_buffer, + x, y, width, height); +@@ -1717,6 +1772,7 @@ system_update (ply_boot_splash_plugin_t *plugin, + int progress) + { + ply_list_node_t *node; ++ char buf[64]; + + if (plugin->mode != PLY_BOOT_SPLASH_MODE_UPDATES) + return; +@@ -1730,6 +1786,12 @@ system_update (ply_boot_splash_plugin_t *plugin, + next_node = ply_list_get_next_node (plugin->views, node); + if (view->progress_animation != NULL) + ply_progress_animation_set_percent_done (view->progress_animation, (double) progress / 100.f); ++ ply_progress_bar_set_percent_done (view->progress_bar, (double) progress / 100.f); ++ if (!ply_progress_bar_is_hidden (view->progress_bar) && ++ plugin->progress_bar_show_percent_complete) { ++ snprintf (buf, sizeof(buf), "%d%% complete", progress); ++ view_show_message (view, buf); ++ } + node = next_node; + } + } +-- +2.20.1 + +From e094733cf7e6bd0cf7e5c06458674be2d65aa52c Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 12 Feb 2019 15:15:26 +0100 +Subject: [PATCH 69/74] two-step: Add a per mode setting to suppress messages + +The messages passed to plymouth display-message can be quite verbose, esp. +in the offline-updates case. Combined with some themes now showing their +own prominent title message explaining what is going on this leads to +undesirable repetitive text being shown. + +This commit adds support for a per mode SuppressMessages setting which +allows themes to suppress messages passed to plymouth display-message +on a per mode basis. + +Signed-off-by: Hans de Goede +--- + src/plugins/splash/two-step/plugin.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c +index 32e4294..9b6abba 100644 +--- a/src/plugins/splash/two-step/plugin.c ++++ b/src/plugins/splash/two-step/plugin.c +@@ -106,6 +106,7 @@ typedef struct + + typedef struct + { ++ bool suppress_messages; + bool use_progress_bar; + bool use_firmware_background; + char *title; +@@ -820,6 +821,8 @@ load_mode_settings (ply_boot_splash_plugin_t *plugin, + { + mode_settings_t *settings = &plugin->mode_settings[mode]; + ++ settings->suppress_messages = ++ ply_key_file_get_bool (key_file, group_name, "SuppressMessages"); + settings->use_progress_bar = + ply_key_file_get_bool (key_file, group_name, "UseProgressBar"); + settings->use_firmware_background = +@@ -1758,6 +1761,10 @@ static void + show_message (ply_boot_splash_plugin_t *plugin, + const char *message) + { ++ if (plugin->mode_settings[plugin->mode].suppress_messages) { ++ ply_trace ("Suppressing message '%s'", message); ++ return; ++ } + ply_trace ("Showing message '%s'", message); + ply_list_node_t *node; + node = ply_list_get_first_node (plugin->views); +-- +2.20.1 + +From 542b6234a2d07daa21105255b4cb995379bc8a7c Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 6 Feb 2019 17:04:04 +0100 +Subject: [PATCH 70/74] themes: Update spinner and bgrt theme offline updates + mode + +Make the spinner and bgrt offline updates mode match the GNOME design +mockups from: https://wiki.gnome.org/Design/OS/BootProgress + +Signed-off-by: Hans de Goede +--- + themes/bgrt/bgrt.plymouth.in | 17 +++++++++++++++-- + themes/spinner/spinner.plymouth.in | 18 +++++++++++++++++- + 2 files changed, 32 insertions(+), 3 deletions(-) + +diff --git a/themes/bgrt/bgrt.plymouth.in b/themes/bgrt/bgrt.plymouth.in +index e93f91c..b0899d7 100644 +--- a/themes/bgrt/bgrt.plymouth.in ++++ b/themes/bgrt/bgrt.plymouth.in +@@ -4,16 +4,26 @@ Description=Jimmac's spinner theme using the ACPI BGRT graphics as background + ModuleName=two-step + + [two-step] ++Font=Cantarell 12 ++TitleFont=Cantarell Light 30 + ImageDir=@PLYMOUTH_THEME_PATH@/spinner ++DialogHorizontalAlignment=.5 ++DialogVerticalAlignment=.382 ++TitleHorizontalAlignment=.5 ++TitleVerticalAlignment=.382 + HorizontalAlignment=.5 +-VerticalAlignment=.75 ++VerticalAlignment=.7 + WatermarkHorizontalAlignment=.5 + WatermarkVerticalAlignment=.96 + Transition=none + TransitionDuration=0.0 + BackgroundStartColor=0x202020 + BackgroundEndColor=0x202020 ++ProgressBarBackgroundColor=0x606060 ++ProgressBarForegroundColor=0xffffff ++ProgressBarShowPercentComplete=true + DialogClearsFirmwareBackground=true ++MessageBelowAnimation=true + + [boot-up] + UseFirmwareBackground=true +@@ -22,4 +32,7 @@ UseFirmwareBackground=true + UseFirmwareBackground=true + + [updates] +-UseFirmwareBackground=true ++SuppressMessages=true ++UseProgressBar=true ++Title=Installing Updates... ++SubTitle=Do not turn off your computer +diff --git a/themes/spinner/spinner.plymouth.in b/themes/spinner/spinner.plymouth.in +index 6ba3f42..02e7eb7 100644 +--- a/themes/spinner/spinner.plymouth.in ++++ b/themes/spinner/spinner.plymouth.in +@@ -4,12 +4,28 @@ Description=A theme designed by jimmac that features a simple spinner. + ModuleName=two-step + + [two-step] ++Font=Cantarell 12 ++TitleFont=Cantarell Light 30 + ImageDir=@PLYMOUTH_THEME_PATH@/spinner ++DialogHorizontalAlignment=.5 ++DialogVerticalAlignment=.382 ++TitleHorizontalAlignment=.5 ++TitleVerticalAlignment=.382 + HorizontalAlignment=.5 +-VerticalAlignment=.75 ++VerticalAlignment=.7 + WatermarkHorizontalAlignment=.5 + WatermarkVerticalAlignment=.96 + Transition=none + TransitionDuration=0.0 + BackgroundStartColor=0x202020 + BackgroundEndColor=0x202020 ++ProgressBarBackgroundColor=0x606060 ++ProgressBarForegroundColor=0xffffff ++ProgressBarShowPercentComplete=true ++MessageBelowAnimation=true ++ ++[updates] ++SuppressMessages=true ++UseProgressBar=true ++Title=Installing Updates... ++SubTitle=Do not turn off your computer +-- +2.20.1 + +From 8711f9dde038dc69b7489246a86ac38462e7d532 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 13 Feb 2019 14:39:42 +0100 +Subject: [PATCH 71/74] logging: Improve logging format + +This commit adds 2 improvemens to the ply_trace logging format: + +1) It prefixes the log messages with timestamps (since system boot) + +2) Previously function-names where right aligned / left padded to 45 +characters. But they were prefixed with a [file:line] prefix which does +not have a fixed width, making the column aligment for the actual messages +fail resulting in hard to read logs. + +This commit fixes 2. by printing " file:line:func" to a +prefix-buffer and then left-aligning / right padding this prefix buffer +to 75 chars. + +The resulting logged lines now look like this: + +00:00:01.741 main.c:1928:check_logging : checking if console messages should be redirected and logged +00:00:01.741 main.c:1937:check_logging : logging will be enabled! + +Signed-off-by: Hans de Goede +--- + src/libply/ply-logger.h | 15 +++++++++++++-- + 1 file changed, 13 insertions(+), 2 deletions(-) + +diff --git a/src/libply/ply-logger.h b/src/libply/ply-logger.h +index 53d1ad9..0015c0c 100644 +--- a/src/libply/ply-logger.h ++++ b/src/libply/ply-logger.h +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + #include + + typedef struct _ply_logger ply_logger_t; +@@ -88,11 +89,21 @@ bool ply_logger_is_tracing_enabled (ply_logger_t *logger); + _old_errno = errno; \ + if (ply_logger_is_tracing_enabled (logger)) \ + { \ ++ struct timespec timespec = { 0, 0 }; \ ++ char buf[128]; \ ++ clock_gettime (CLOCK_MONOTONIC, ×pec); \ + ply_logger_flush (logger); \ ++ snprintf (buf, sizeof(buf), \ ++ "%02d:%02d:%02d.%03d %s:%d:%s", \ ++ (int)(timespec.tv_sec / 3600), \ ++ (int)((timespec.tv_sec / 60) % 60), \ ++ (int)(timespec.tv_sec % 60), \ ++ (int)(timespec.tv_nsec / 1000000), \ ++ __FILE__, __LINE__, __func__); \ + errno = _old_errno; \ + ply_logger_inject (logger, \ +- "[%s:%d] %45.45s:" format "\n", \ +- __FILE__, __LINE__, __func__, ## args); \ ++ "%-75.75s: " format "\n", \ ++ buf, ## args); \ + ply_logger_flush (logger); \ + errno = _old_errno; \ + } \ +-- +2.20.1 + +From b9ef96aa0ade81a564a3982db5cd9bd47478192c Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 16 Jan 2019 12:27:01 +0100 +Subject: [PATCH 72/74] logging: Minor log-message fixes + +This fixes 2 minor issues with our log-messages: +1. ply_trace adds a "\n" itself, so there is no need to pass one extra. +2. Correct spelling of quitting + +Signed-off-by: Hans de Goede +--- + src/libply-splash-graphics/ply-animation.c | 4 ++-- + src/libply/ply-utils.c | 2 +- + src/main.c | 2 +- + src/plugins/renderers/drm/plugin.c | 2 +- + 4 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/libply-splash-graphics/ply-animation.c b/src/libply-splash-graphics/ply-animation.c +index 323d9ed..9b6d8ce 100644 +--- a/src/libply-splash-graphics/ply-animation.c ++++ b/src/libply-splash-graphics/ply-animation.c +@@ -261,11 +261,11 @@ ply_animation_add_frames (ply_animation_t *animation) + + number_of_frames = ply_array_get_size (animation->frames); + if (number_of_frames == 0) { +- ply_trace ("%s directory had no files starting with %s\n", ++ ply_trace ("%s directory had no files starting with %s", + animation->image_dir, animation->frames_prefix); + goto out; + } else { +- ply_trace ("animation has %d frames\n", number_of_frames); ++ ply_trace ("animation has %d frames", number_of_frames); + } + + load_finished = true; +diff --git a/src/libply/ply-utils.c b/src/libply/ply-utils.c +index 4ff7b1b..0cadae9 100644 +--- a/src/libply/ply-utils.c ++++ b/src/libply/ply-utils.c +@@ -656,7 +656,7 @@ ply_open_module (const char *module_path) + RTLD_NODELETE | RTLD_NOW | RTLD_LOCAL); + + if (handle == NULL) { +- ply_trace ("Could not load module \"%s\": %s\n", module_path, dlerror ()); ++ ply_trace ("Could not load module \"%s\": %s", module_path, dlerror ()); + if (errno == 0) + errno = ELIBACC; + } +diff --git a/src/main.c b/src/main.c +index ddc1883..9adff3a 100644 +--- a/src/main.c ++++ b/src/main.c +@@ -1123,7 +1123,7 @@ load_devices (state_t *state, + static void + quit_splash (state_t *state) + { +- ply_trace ("quiting splash"); ++ ply_trace ("quitting splash"); + if (state->boot_splash != NULL) { + ply_trace ("freeing splash"); + ply_boot_splash_free (state->boot_splash); +diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c +index 0151f47..88c9d97 100644 +--- a/src/plugins/renderers/drm/plugin.c ++++ b/src/plugins/renderers/drm/plugin.c +@@ -1100,7 +1100,7 @@ get_preferred_mode (drmModeConnector *connector) + + for (i = 0; i < connector->count_modes; i++) + if (connector->modes[i].type & DRM_MODE_TYPE_PREFERRED) { +- ply_trace ("Found preferred mode %dx%d at index %d\n", ++ ply_trace ("Found preferred mode %dx%d at index %d", + connector->modes[i].hdisplay, + connector->modes[i].vdisplay, i); + return &connector->modes[i]; +-- +2.20.1 + +From 243cf30abbe38c0211255d76752ee7fbdd18a8e7 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 16 Jan 2019 12:51:05 +0100 +Subject: [PATCH 73/74] ply-boot-splash: Do not add + ply_boot_splash_update_progress timeout multiple times + +Before this commit when freeing the splash, the following would be logged: + +multiple matching timeouts found for removal +multiple matching timeouts found for removal + +This is caused by us adding the ply_boot_splash_update_progress timeout +handler to the event loop 3 times: 1 on first show, 2 on second show with +a different mode, 3 on becoming idle. + +This commit fixes the 2nd add by stopping the timer when changing modes +and the 3th add by not calling ply_boot_splash_update_progress to update +the progress, as that will re-add itself. Instead this commit directly calls +plugin_interface->on_boot_progress from ply_boot_splash_become_idle. + +Signed-off-by: Hans de Goede +--- + src/libply-splash-core/ply-boot-splash.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/src/libply-splash-core/ply-boot-splash.c b/src/libply-splash-core/ply-boot-splash.c +index 54c7696..9549ecc 100644 +--- a/src/libply-splash-core/ply-boot-splash.c ++++ b/src/libply-splash-core/ply-boot-splash.c +@@ -476,6 +476,11 @@ ply_boot_splash_show (ply_boot_splash_t *splash, + } else if (splash->mode != PLY_BOOT_SPLASH_MODE_INVALID) { + splash->plugin_interface->hide_splash_screen (splash->plugin, + splash->loop); ++ if (splash->plugin_interface->on_boot_progress != NULL) { ++ ply_event_loop_stop_watching_for_timeout (splash->loop, ++ (ply_event_loop_timeout_handler_t) ++ ply_boot_splash_update_progress, splash); ++ } + } + + ply_trace ("showing splash screen"); +@@ -671,9 +676,12 @@ ply_boot_splash_become_idle (ply_boot_splash_t *splash, + { + assert (splash->idle_trigger == NULL); + +- if (splash->progress != NULL) { ++ if (splash->plugin_interface->on_boot_progress != NULL && ++ splash->progress != NULL) { + ply_progress_set_percentage (splash->progress, 1.0); +- ply_boot_splash_update_progress (splash); ++ splash->plugin_interface->on_boot_progress (splash->plugin, ++ ply_progress_get_time (splash->progress), ++ 1.0); + } + + ply_trace ("telling splash to become idle"); +-- +2.20.1 + +From cca2feed2ee1f38c971b75a01609bef83404bf92 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 13 Feb 2019 15:10:23 +0100 +Subject: [PATCH 74/74] plymouthd.defaults: Change default ShowDelay to 0 + +ShowDelay was added with as goal to reduce the number of jarring / +flickering visual transitions. + +The idea being that if a system boots within 5 seconds, we would avoid +the transition from a black screen to plymouth, instead directly going +to e.g. gdm. + +In practive most modern systems (with SSD) take about 4-7 seconds to +boot, this causes plymouth to only show briefly (aprox. 1 second). + +IOW on some modern systems it quicky flashes by, this "flash" is the end +result of the ShowDelay=5 default which is intended to *reduce* the number +of jarring / flickering visual transitions. + +On older systems the boot will likely take significantly longer then the +5 seconds, so we will show the splash anyways and we might as well show +it right away, so that the user can see something is happening right away. + +Note this has been discussed in more detail in issue #64, which also +contains an alternative much more involved fix for the issues surrounding +SplashDelay, but simply defaulting it to 0 seems to be best. + +Closes #64 + +Signed-off-by: Hans de Goede +--- + src/plymouthd.defaults | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/plymouthd.defaults b/src/plymouthd.defaults +index 4d3b6d4..9e3a342 100644 +--- a/src/plymouthd.defaults ++++ b/src/plymouthd.defaults +@@ -2,5 +2,5 @@ + # upgrades. + [Daemon] + Theme=spinner +-ShowDelay=5 ++ShowDelay=0 + DeviceTimeout=5 +-- +2.20.1 + diff --git a/plymouth.spec b/plymouth.spec index fe746c8..ef3236b 100644 --- a/plymouth.spec +++ b/plymouth.spec @@ -1,22 +1,7 @@ -%global plymouthdaemon_execdir %{_sbindir} -%global plymouthclient_execdir %{_bindir} -%global plymouth_libdir %{_libdir} -%global plymouth_initrd_file /boot/initrd-plymouth.img - -# Set to 1 if building from snapshots. -%global snapshot_build 0 - -%if %{snapshot_build} -%global snapshot_date 20160620 -%global snapshot_hash 0e65b86c -%global snapshot_rel %{?snapshot_date}git%{?snapshot_hash} -%endif - - Summary: Graphical Boot Animation and Logger Name: plymouth Version: 0.9.4 -Release: 2%{?snapshot_rel}%{?dist} +Release: 3%{?dist} License: GPLv2+ URL: http://www.freedesktop.org/wiki/Software/Plymouth @@ -24,7 +9,9 @@ Source0: http://freedesktop.org/software/plymouth/releases/%{name}-%{version}.ta Source2: charge.plymouth Source3: plymouth-update-initrd -BuildRequires: gcc +Patch1: plymouth-updates.patch + +BuildRequires: gcc libtool git BuildRequires: pkgconfig(libdrm) BuildRequires: pkgconfig(libudev) BuildRequires: kernel-headers @@ -34,7 +21,8 @@ BuildRequires: pkgconfig(gtk+-3.0) BuildRequires: pango-devel >= 1.21.0 BuildRequires: cairo-devel -Requires(post): plymouth-scripts +Requires: %{name}-core-libs = %{version}-%{release} +Requires: %{name}-scripts = %{version}-%{release} %description Plymouth provides an attractive graphical boot animation in @@ -42,6 +30,7 @@ place of the text messages that normally get shown. Text messages are instead redirected to a log file for viewing after boot. + %package system-theme Summary: Plymouth default theme Requires: plymouth(system-theme) = %{version}-%{release} @@ -49,6 +38,7 @@ Requires: plymouth(system-theme) = %{version}-%{release} %description system-theme This metapackage tracks the current distribution default theme. + %package core-libs Summary: Plymouth core libraries @@ -56,6 +46,7 @@ Summary: Plymouth core libraries This package contains the libply and libply-splash-core libraries used by Plymouth. + %package graphics-libs Summary: Plymouth graphics libraries Requires: %{name}-core-libs = %{version}-%{release} @@ -65,6 +56,7 @@ Requires: system-logos This package contains the libply-splash-graphics library used by graphical Plymouth splashes. + %package devel Summary: Libraries and headers for writing Plymouth splash plugins Requires: %{name} = %{version}-%{release} @@ -74,14 +66,17 @@ Requires: pkgconfig This package contains the libply and libplybootsplash libraries and headers needed to develop 3rd party splash plugins for Plymouth. + %package scripts Summary: Plymouth related scripts -Requires: findutils, coreutils, gzip, cpio, dracut, plymouth +Requires: findutils, coreutils, gzip, cpio, dracut +Requires: %{name} = %{version}-%{release} %description scripts This package contains scripts that help integrate Plymouth with the system. + %package plugin-label Summary: Plymouth label plugin Requires: %{name} = %{version}-%{release} @@ -92,89 +87,6 @@ This package contains the label control plugin for Plymouth. It provides the ability to render text on graphical boot splashes using pango and cairo. -%package plugin-fade-throbber -Summary: Plymouth "Fade-Throbber" plugin -Requires: %{name} = %{version}-%{release} -Requires: %{name}-graphics-libs = %{version}-%{release} - -%description plugin-fade-throbber -This package contains the "Fade-In" boot splash plugin for -Plymouth. It features a centered image that fades in and out -while other images pulsate around during system boot up. - -%package theme-fade-in -Summary: Plymouth "Fade-In" theme -Requires: %{name}-plugin-fade-throbber = %{version}-%{release} -Requires(post): plymouth-scripts - -%description theme-fade-in -This package contains the "Fade-In" boot splash theme for -Plymouth. It features a centered logo that fades in and out -while stars twinkle around the logo during system boot up. - -%package plugin-throbgress -Summary: Plymouth "Throbgress" plugin -Requires: %{name} = %{version}-%{release} -Requires: %{name}-graphics-libs = %{version}-%{release} -Requires: plymouth-plugin-label - -%description plugin-throbgress -This package contains the "throbgress" boot splash plugin for -Plymouth. It features a centered logo and animated spinner that -spins repeatedly while a progress bar advances at the bottom of -the screen. - -%package theme-spinfinity -Summary: Plymouth "Spinfinity" theme -Requires: %{name}-plugin-throbgress = %{version}-%{release} -Requires(post): plymouth-scripts - -%description theme-spinfinity -This package contains the "Spinfinity" boot splash theme for -Plymouth. It features a centered logo and animated spinner that -spins in the shape of an infinity sign. - -%package plugin-space-flares -Summary: Plymouth "space-flares" plugin -Requires: %{name} = %{version}-%{release} -Requires: %{name}-graphics-libs = %{version}-%{release} -Requires: plymouth-plugin-label - -%description plugin-space-flares -This package contains the "space-flares" boot splash plugin for -Plymouth. It features a corner image with animated flares. - -%package theme-solar -Summary: Plymouth "Solar" theme -Requires: %{name}-plugin-space-flares = %{version}-%{release} -Requires(post): plymouth-scripts - -%description theme-solar -This package contains the "Solar" boot splash theme for -Plymouth. It features a blue flamed sun with animated solar flares. - -%package plugin-two-step -Summary: Plymouth "two-step" plugin -Requires: %{name} = %{version}-%{release} -Requires: %{name}-graphics-libs = %{version}-%{release} -Requires: plymouth-plugin-label - -%description plugin-two-step -This package contains the "two-step" boot splash plugin for -Plymouth. It features a two phased boot process that starts with -a progressing animation synced to boot time and finishes with a -short, fast one-shot animation. - -%package theme-charge -Summary: Plymouth "Charge" plugin -Requires: %{name}-plugin-two-step = %{version}-%{release} -Requires(post): plymouth-scripts -Provides: plymouth(system-theme) = %{version}-%{release} - -%description theme-charge -This package contains the "charge" boot splash theme for -Plymouth. It features the shadowy hull of a Fedora logo charge up and -and finally burst into full form. %package plugin-script Summary: Plymouth "script" plugin @@ -187,30 +99,127 @@ Plymouth. It features an extensible, scriptable boot splash language that simplifies the process of designing custom boot splash themes. + +%package plugin-fade-throbber +Summary: Plymouth "Fade-Throbber" plugin +Requires: %{name} = %{version}-%{release} +Requires: %{name}-graphics-libs = %{version}-%{release} + +%description plugin-fade-throbber +This package contains the "Fade-In" boot splash plugin for +Plymouth. It features a centered image that fades in and out +while other images pulsate around during system boot up. + + +%package plugin-space-flares +Summary: Plymouth "space-flares" plugin +Requires: %{name} = %{version}-%{release} +Requires: %{name}-graphics-libs = %{version}-%{release} +Requires: plymouth-plugin-label = %{version}-%{release} + +%description plugin-space-flares +This package contains the "space-flares" boot splash plugin for +Plymouth. It features a corner image with animated flares. + + +%package plugin-throbgress +Summary: Plymouth "Throbgress" plugin +Requires: %{name} = %{version}-%{release} +Requires: %{name}-graphics-libs = %{version}-%{release} +Requires: plymouth-plugin-label = %{version}-%{release} + +%description plugin-throbgress +This package contains the "throbgress" boot splash plugin for +Plymouth. It features a centered logo and animated spinner that +spins repeatedly while a progress bar advances at the bottom of +the screen. + + +%package plugin-two-step +Summary: Plymouth "two-step" plugin +Requires: %{name} = %{version}-%{release} +Requires: %{name}-graphics-libs = %{version}-%{release} +Requires: plymouth-plugin-label = %{version}-%{release} + +%description plugin-two-step +This package contains the "two-step" boot splash plugin for +Plymouth. It features a two phased boot process that starts with +a progressing animation synced to boot time and finishes with a +short, fast one-shot animation. + + +%package theme-charge +Summary: Plymouth "Charge" plugin +Requires: %{name}-plugin-two-step = %{version}-%{release} +Requires(post): plymouth-scripts + +%description theme-charge +This package contains the "charge" boot splash theme for +Plymouth. It features the shadowy hull of a Fedora logo charge up and +and finally burst into full form. + + +%package theme-fade-in +Summary: Plymouth "Fade-In" theme +Requires: %{name}-plugin-fade-throbber = %{version}-%{release} +Requires(post): plymouth-scripts + +%description theme-fade-in +This package contains the "Fade-In" boot splash theme for +Plymouth. It features a centered logo that fades in and out +while stars twinkle around the logo during system boot up. + + %package theme-script Summary: Plymouth "Script" plugin Requires: %{name}-plugin-script = %{version}-%{release} -Requires(post): %{_sbindir}/plymouth-set-default-theme +Requires(post): plymouth-scripts %description theme-script This package contains the "script" boot splash theme for Plymouth. It it is a simple example theme the uses the "script" plugin. + +%package theme-solar +Summary: Plymouth "Solar" theme +Requires: %{name}-plugin-space-flares = %{version}-%{release} +Requires(post): plymouth-scripts + +%description theme-solar +This package contains the "Solar" boot splash theme for +Plymouth. It features a blue flamed sun with animated solar flares. + + +%package theme-spinfinity +Summary: Plymouth "Spinfinity" theme +Requires: %{name}-plugin-throbgress = %{version}-%{release} +Requires(post): plymouth-scripts + +%description theme-spinfinity +This package contains the "Spinfinity" boot splash theme for +Plymouth. It features a centered logo and animated spinner that +spins in the shape of an infinity sign. + + %package theme-spinner Summary: Plymouth "Spinner" theme Requires: %{name}-plugin-two-step = %{version}-%{release} +Requires: font(cantarell) font(cantarelllight) Requires(post): plymouth-scripts +Provides: plymouth(system-theme) = %{version}-%{release} %description theme-spinner This package contains the "spinner" boot splash theme for Plymouth. It features a small spinner on a dark background. -%prep -%autosetup -p1 +%prep +%autosetup -S git +autoreconf -ivf -Wno-portability # Change the default theme -sed -i -e 's/spinner/charge/g' src/plymouthd.defaults +sed -i -e 's/spinner/bgrt/g' src/plymouthd.defaults + %build %configure --enable-tracing --disable-tests \ @@ -224,8 +233,8 @@ sed -i -e 's/spinner/charge/g' src/plymouthd.defaults --without-log-viewer \ --without-rhgb-compat-link \ --disable-libkms +make %{?_smp_mflags} -make %install make install DESTDIR=$RPM_BUILD_ROOT @@ -240,7 +249,7 @@ find $RPM_BUILD_ROOT -name '*.la' -delete mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/plymouth cp -f $RPM_SOURCE_DIR/plymouth-update-initrd $RPM_BUILD_ROOT%{_libexecdir}/plymouth -# Add charge, our new default +# Add charge, our old default mkdir -p $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/charge cp %{SOURCE2} $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/charge cp $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/glow/{box,bullet,entry,lock}.png $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/charge @@ -248,66 +257,62 @@ cp $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/glow/{box,bullet,entry,lock}.png $ # Drop glow, it's not very Fedora-y rm -rf $RPM_BUILD_ROOT%{_datadir}/plymouth/themes/glow -%postun -if [ $1 -eq 0 ]; then - rm -f %{_libdir}/plymouth/default.so - rm -f /boot/initrd-plymouth.img -fi %ldconfig_scriptlets core-libs %ldconfig_scriptlets graphics-libs -%postun theme-spinfinity -export LIB=%{_lib} +%postun theme-charge +export PLYMOUTH_PLUGIN_PATH=%{_libdir}/plymouth/ if [ $1 -eq 0 ]; then - if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "spinfinity" ]; then - %{_sbindir}/plymouth-set-default-theme text + if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "charge" ]; then + %{_sbindir}/plymouth-set-default-theme --reset fi fi %postun theme-fade-in -export LIB=%{_lib} +export PLYMOUTH_PLUGIN_PATH=%{_libdir}/plymouth/ if [ $1 -eq 0 ]; then if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "fade-in" ]; then %{_sbindir}/plymouth-set-default-theme --reset fi fi -%postun theme-spinner -export LIB=%{_lib} -if [ $1 -eq 0 ]; then - if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "spinner" ]; then - %{_sbindir}/plymouth-set-default-theme --reset - fi -fi - %postun theme-solar -export LIB=%{_lib} +export PLYMOUTH_PLUGIN_PATH=%{_libdir}/plymouth/ if [ $1 -eq 0 ]; then if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "solar" ]; then %{_sbindir}/plymouth-set-default-theme --reset fi fi -%post theme-charge -export LIB=%{_lib} -if [ $1 -eq 1 ]; then - %{_sbindir}/plymouth-set-default-theme charge -else - if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "solar" ]; then - %{_sbindir}/plymouth-set-default-theme charge +%postun theme-spinfinity +export PLYMOUTH_PLUGIN_PATH=%{_libdir}/plymouth/ +if [ $1 -eq 0 ]; then + if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "spinfinity" ]; then + %{_sbindir}/plymouth-set-default-theme --reset fi fi -%postun theme-charge -export LIB=%{_lib} -if [ $1 -eq 0 ]; then +%post theme-spinner +export PLYMOUTH_PLUGIN_PATH=%{_libdir}/plymouth/ +# On upgrades replace charge with the new bgrt default +if [ $1 -eq 2 ]; then if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "charge" ]; then + %{_sbindir}/plymouth-set-default-theme bgrt + fi +fi + +%postun theme-spinner +export PLYMOUTH_PLUGIN_PATH=%{_libdir}/plymouth/ +if [ $1 -eq 0 ]; then + if [ "$(%{_sbindir}/plymouth-set-default-theme)" == "bgrt" -o \ + "$(%{_sbindir}/plymouth-set-default-theme)" == "spinner" ]; then %{_sbindir}/plymouth-set-default-theme --reset fi fi + %files %license COPYING %doc AUTHORS README @@ -320,8 +325,7 @@ fi %dir %{_libdir}/plymouth/renderers %dir %{_sysconfdir}/plymouth %config(noreplace) %{_sysconfdir}/plymouth/plymouthd.conf -%{plymouthdaemon_execdir}/plymouthd -%{plymouthclient_execdir}/plymouth +%{_sbindir}/plymouthd %{_bindir}/plymouth %{_libdir}/plymouth/details.so %{_libdir}/plymouth/text.so @@ -338,8 +342,8 @@ fi %{_prefix}/lib/systemd/system/ %files devel -%{plymouth_libdir}/libply.so -%{plymouth_libdir}/libply-splash-core.so +%{_libdir}/libply.so +%{_libdir}/libply-splash-core.so %{_libdir}/libply-boot-client.so %{_libdir}/libply-splash-graphics.so %{_libdir}/pkgconfig/ply-splash-core.pc @@ -349,8 +353,8 @@ fi %{_includedir}/plymouth-1 %files core-libs -%{plymouth_libdir}/libply.so.* -%{plymouth_libdir}/libply-splash-core.so.* +%{_libdir}/libply.so.* +%{_libdir}/libply-splash-core.so.* %{_libdir}/libply-boot-client.so.* %dir %{_libdir}/plymouth @@ -368,62 +372,60 @@ fi %files plugin-label %{_libdir}/plymouth/label.so +%files plugin-script +%{_libdir}/plymouth/script.so + %files plugin-fade-throbber %{_libdir}/plymouth/fade-throbber.so -%files theme-fade-in -%dir %{_datadir}/plymouth/themes/fade-in -%{_datadir}/plymouth/themes/fade-in/bullet.png -%{_datadir}/plymouth/themes/fade-in/entry.png -%{_datadir}/plymouth/themes/fade-in/lock.png -%{_datadir}/plymouth/themes/fade-in/star.png -%{_datadir}/plymouth/themes/fade-in/fade-in.plymouth - -%files theme-spinner -%dir %{_datadir}/plymouth/themes/spinner -%{_datadir}/plymouth/themes/spinner/*.png -%{_datadir}/plymouth/themes/spinner/spinner.plymouth - -%files plugin-throbgress -%{_libdir}/plymouth/throbgress.so - -%files theme-spinfinity -%dir %{_datadir}/plymouth/themes/spinfinity -%{_datadir}/plymouth/themes/spinfinity/box.png -%{_datadir}/plymouth/themes/spinfinity/bullet.png -%{_datadir}/plymouth/themes/spinfinity/entry.png -%{_datadir}/plymouth/themes/spinfinity/lock.png -%{_datadir}/plymouth/themes/spinfinity/throbber-[0-3][0-9].png -%{_datadir}/plymouth/themes/spinfinity/spinfinity.plymouth - %files plugin-space-flares %{_libdir}/plymouth/space-flares.so -%files theme-solar -%dir %{_datadir}/plymouth/themes/solar -%{_datadir}/plymouth/themes/solar/*.png -%{_datadir}/plymouth/themes/solar/solar.plymouth +%files plugin-throbgress +%{_libdir}/plymouth/throbgress.so %files plugin-two-step %{_libdir}/plymouth/two-step.so %files theme-charge -%dir %{_datadir}/plymouth/themes/charge -%{_datadir}/plymouth/themes/charge/*.png -%{_datadir}/plymouth/themes/charge/charge.plymouth +%{_datadir}/plymouth/themes/charge -%files plugin-script -%{_libdir}/plymouth/script.so +%files theme-fade-in +%{_datadir}/plymouth/themes/fade-in %files theme-script -%dir %{_datadir}/plymouth/themes/script -%{_datadir}/plymouth/themes/script/*.png -%{_datadir}/plymouth/themes/script/script.script -%{_datadir}/plymouth/themes/script/script.plymouth +%{_datadir}/plymouth/themes/script + +%files theme-solar +%{_datadir}/plymouth/themes/solar + +%files theme-spinfinity +%{_datadir}/plymouth/themes/spinfinity + +%files theme-spinner +# bgrt is a variant of spinner with different settings in its .plymouth file +%{_datadir}/plymouth/themes/bgrt +%{_datadir}/plymouth/themes/spinner %files system-theme + %changelog +* Wed Feb 13 2019 Hans de Goede - 0.9.4-3 +- Add patches from upstream for: + - Monitor hotplug support, this fixes issues with monitors on DP-MST + docs sometimes not lighting up (rhbz#1652279) + - Adding support for using the firmware's bootsplash as theme background + - New bgrt theme which implements the boot-theme design from: + https://wiki.gnome.org/Design/OS/BootProgress + Including the new theming for offline-updates shown there +- Make the bgrt theme the new default and upgrade systems which are using the + charge theme, which is the old default to use the new bgrt theme +- Cleanup the spec-file a bit: + - Remove unused / unnecessary %%global variables + - Sort the sections for the various plugins and themes alphabetically + - Simplify theme filelists + * Sat Feb 02 2019 Fedora Release Engineering - 0.9.4-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild