diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 14:36:24 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 14:36:24 +0000 |
commit | 9b6d8e63db85c30007b463e91f91a791969fa83f (patch) | |
tree | 0899af51d73c1bf986f73ae39a03c4436083018a /panels/color | |
parent | Initial commit. (diff) | |
download | gnome-control-center-9b6d8e63db85c30007b463e91f91a791969fa83f.tar.xz gnome-control-center-9b6d8e63db85c30007b463e91f91a791969fa83f.zip |
Adding upstream version 1:3.38.4.upstream/1%3.38.4upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'panels/color')
28 files changed, 8112 insertions, 0 deletions
diff --git a/panels/color/cc-color-calibrate.c b/panels/color/cc-color-calibrate.c new file mode 100644 index 0000000..3f53858 --- /dev/null +++ b/panels/color/cc-color-calibrate.c @@ -0,0 +1,1101 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- + * + * Copyright (C) 2012 Richard Hughes <richard@hughsie.com> + * + * Licensed under the GNU General Public License Version 2 + * + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "config.h" + +#include <colord-gtk.h> +#include <gio/gunixfdlist.h> +#include <glib/gi18n.h> +#include <glib-object.h> +#include <math.h> +#include <colord-session/cd-session.h> + +#define GNOME_DESKTOP_USE_UNSTABLE_API +#include <libgnome-desktop/gnome-rr.h> + +#include "cc-color-calibrate.h" + +#define CALIBRATE_WINDOW_OPACITY 0.9 + +struct _CcColorCalibrate +{ + GObject parent_instance; + + CdDevice *device; + CdSensorCap device_kind; + CdSensor *sensor; + CdProfile *profile; + gchar *title; + GDBusProxy *proxy_helper; + GDBusProxy *proxy_inhibit; + GMainLoop *loop; + GnomeRROutput *output; + GnomeRRScreen *x11_screen; + GtkBuilder *builder; + GtkWindow *window; + GtkWidget *sample_widget; + guint gamma_size; + CdProfileQuality quality; + guint target_whitepoint; /* in Kelvin */ + gdouble target_gamma; + gint inhibit_fd; + gint inhibit_cookie; + CdSessionError session_error_code; +}; + +#define CD_SESSION_ERROR cc_color_calibrate_error_quark() + +#define COLORD_SETTINGS_SCHEMA "org.freedesktop.ColorHelper" + +G_DEFINE_TYPE (CcColorCalibrate, cc_color_calibrate, G_TYPE_OBJECT) + +static GQuark +cc_color_calibrate_error_quark (void) +{ + static GQuark quark = 0; + if (!quark) + quark = g_quark_from_static_string ("CcColorCalibrateError"); + return quark; +} + +void +cc_color_calibrate_set_kind (CcColorCalibrate *calibrate, + CdSensorCap kind) +{ + g_return_if_fail (CC_IS_COLOR_CALIBRATE (calibrate)); + calibrate->device_kind = kind; +} + +void +cc_color_calibrate_set_temperature (CcColorCalibrate *calibrate, + guint temperature) +{ + g_return_if_fail (CC_IS_COLOR_CALIBRATE (calibrate)); + g_return_if_fail (temperature < 10000); + calibrate->target_whitepoint = temperature; +} + +void +cc_color_calibrate_set_quality (CcColorCalibrate *calibrate, + CdProfileQuality quality) +{ + g_return_if_fail (CC_IS_COLOR_CALIBRATE (calibrate)); + calibrate->quality = quality; +} + +CdProfileQuality +cc_color_calibrate_get_quality (CcColorCalibrate *calibrate) +{ + g_return_val_if_fail (CC_IS_COLOR_CALIBRATE (calibrate), 0); + return calibrate->quality; +} + +void +cc_color_calibrate_set_device (CcColorCalibrate *calibrate, + CdDevice *device) +{ + g_return_if_fail (CC_IS_COLOR_CALIBRATE (calibrate)); + g_return_if_fail (CD_IS_DEVICE (device)); + if (calibrate->device != NULL) + g_object_unref (calibrate->device); + calibrate->device = g_object_ref (device); +} + +void +cc_color_calibrate_set_sensor (CcColorCalibrate *calibrate, + CdSensor *sensor) +{ + g_return_if_fail (CC_IS_COLOR_CALIBRATE (calibrate)); + g_return_if_fail (CD_IS_SENSOR (sensor)); + if (calibrate->sensor != NULL) + g_object_unref (calibrate->sensor); + calibrate->sensor = g_object_ref (sensor); +} + +void +cc_color_calibrate_set_title (CcColorCalibrate *calibrate, + const gchar *title) +{ + g_return_if_fail (CC_IS_COLOR_CALIBRATE (calibrate)); + g_return_if_fail (title != NULL); + g_free (calibrate->title); + calibrate->title = g_strdup (title); +} + +CdProfile * +cc_color_calibrate_get_profile (CcColorCalibrate *calibrate) +{ + g_return_val_if_fail (CC_IS_COLOR_CALIBRATE (calibrate), NULL); + return calibrate->profile; +} + +static guint +_gnome_rr_output_get_gamma_size (GnomeRROutput *output) +{ + GnomeRRCrtc *crtc; + gint len = 0; + + crtc = gnome_rr_output_get_crtc (output); + if (crtc == NULL) + return 0; + gnome_rr_crtc_get_gamma (crtc, + &len, + NULL, NULL, NULL); + return (guint) len; +} + +static gboolean +cc_color_calibrate_calib_setup_screen (CcColorCalibrate *calibrate, + const gchar *name, + GError **error) +{ + gboolean ret = TRUE; + + /* get screen */ + calibrate->x11_screen = gnome_rr_screen_new (gdk_screen_get_default (), error); + if (calibrate->x11_screen == NULL) + { + ret = FALSE; + goto out; + } + + /* get the output */ + calibrate->output = gnome_rr_screen_get_output_by_name (calibrate->x11_screen, + name); + if (calibrate->output == NULL) + { + ret = FALSE; + g_set_error_literal (error, + CD_SESSION_ERROR, + CD_SESSION_ERROR_INTERNAL, + "failed to get output"); + goto out; + } + + /* create a lookup table */ + calibrate->gamma_size = _gnome_rr_output_get_gamma_size (calibrate->output); + if (calibrate->gamma_size == 0) + { + ret = FALSE; + g_set_error_literal (error, + CD_SESSION_ERROR, + CD_SESSION_ERROR_INTERNAL, + "gamma size is zero"); + } +out: + return ret; +} + +/** + * cc_color_calibrate_calib_set_output_gamma: + * + * Handle this here rather than in gnome-settings-daemon for two reasons: + * + * - We don't want to create a profile each time the video card gamma + * table is created, as that would mean ~15 DBus requests each time + * we get UpdateGamma from the session helper. + * + * - We only have 100ms to process the request before the next update + * could be scheduled. + **/ +static gboolean +cc_color_calibrate_calib_set_output_gamma (CcColorCalibrate *calibrate, + GPtrArray *array, + GError **error) +{ + CdColorRGB *p1; + CdColorRGB *p2; + CdColorRGB result; + gdouble mix; + GnomeRRCrtc *crtc; + g_autofree guint16 *blue = NULL; + g_autofree guint16 *green = NULL; + g_autofree guint16 *red = NULL; + guint i; + + /* no length? */ + if (array->len == 0) + { + g_set_error_literal (error, + CD_SESSION_ERROR, + CD_SESSION_ERROR_INTERNAL, + "no data in the CLUT array"); + return FALSE; + } + + /* convert to a type X understands of the right size */ + red = g_new (guint16, calibrate->gamma_size); + green = g_new (guint16, calibrate->gamma_size); + blue = g_new (guint16, calibrate->gamma_size); + cd_color_rgb_set (&result, 1.0, 1.0, 1.0); + for (i = 0; i < calibrate->gamma_size; i++) + { + mix = (gdouble) (array->len - 1) / + (gdouble) (calibrate->gamma_size - 1) * + (gdouble) i; + p1 = g_ptr_array_index (array, (guint) floor (mix)); + p2 = g_ptr_array_index (array, (guint) ceil (mix)); + cd_color_rgb_interpolate (p1, + p2, + mix - (gint) mix, + &result); + red[i] = result.R * 0xffff; + green[i] = result.G * 0xffff; + blue[i] = result.B * 0xffff; + } + + /* send to LUT */ + crtc = gnome_rr_output_get_crtc (calibrate->output); + if (crtc == NULL) + { + g_set_error (error, + CD_SESSION_ERROR, + CD_SESSION_ERROR_INTERNAL, + "failed to get ctrc for %s", + gnome_rr_output_get_name (calibrate->output)); + return FALSE; + } + gnome_rr_crtc_set_gamma (crtc, calibrate->gamma_size, + red, green, blue); + return TRUE; +} + +static void +cc_color_calibrate_property_changed_cb (CcColorCalibrate *calibrate, + GVariant *changed_properties, + GStrv invalidated_properties) +{ + gboolean ret; + GtkWidget *widget; + guint value; + + ret = g_variant_lookup (changed_properties, + "Progress", + "u", &value); + if (ret) + { + widget = GTK_WIDGET (gtk_builder_get_object (calibrate->builder, + "progressbar_status")); + gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (widget), + value / 100.0f); + } +} + +static void +cc_color_calibrate_interaction_required (CcColorCalibrate *calibrate, + CdSessionInteraction code, + const gchar *message, + const gchar *image_path) +{ + const gchar *message_transl; + gboolean show_button_start = FALSE; + GtkImage *img; + GtkLabel *label; + GtkWidget *widget; + + /* the client helper does not ship an icon for this */ + if (code == CD_SESSION_INTERACTION_SHUT_LAPTOP_LID) + image_path = "preferences-color-symbolic"; + + /* set image */ + img = GTK_IMAGE (gtk_builder_get_object (calibrate->builder, + "image_status")); + if (image_path != NULL && image_path[0] != '\0') + { + g_autoptr(GdkPixbuf) pixbuf = NULL; + + g_debug ("showing image %s", image_path); + pixbuf = gdk_pixbuf_new_from_file_at_size (image_path, + 400, 400, + NULL); + if (pixbuf != NULL) + gtk_image_set_from_pixbuf (img, pixbuf); + gtk_widget_set_visible (GTK_WIDGET (img), TRUE); + gtk_widget_set_visible (GTK_WIDGET (calibrate->sample_widget), FALSE); + } + else + { + g_debug ("hiding image"); + gtk_widget_set_visible (GTK_WIDGET (img), FALSE); + gtk_widget_set_visible (GTK_WIDGET (calibrate->sample_widget), TRUE); + } + + /* set new status */ + switch (code) + { + case CD_SESSION_INTERACTION_ATTACH_TO_SCREEN: + show_button_start = TRUE; + /* TRANSLATORS: The user has to attach the sensor to the screen */ + message_transl = _("Place your calibration device over the square and press “Start”"); + break; + case CD_SESSION_INTERACTION_MOVE_TO_CALIBRATION: + /* TRANSLATORS: Some calibration devices need the user to move a + * dial or switch manually. We also show a picture showing them + * what to do... */ + message_transl = _("Move your calibration device to the calibrate position and press “Continue”"); + break; + case CD_SESSION_INTERACTION_MOVE_TO_SURFACE: + /* TRANSLATORS: Some calibration devices need the user to move a + * dial or switch manually. We also show a picture showing them + * what to do... */ + message_transl = _("Move your calibration device to the surface position and press “Continue”"); + break; + case CD_SESSION_INTERACTION_SHUT_LAPTOP_LID: + /* TRANSLATORS: on some hardware e.g. Lenovo W700 the sensor + * is built into the palmrest and we need to fullscreen the + * sample widget and shut the lid. */ + message_transl = _("Shut the laptop lid"); + break; + default: + message_transl = message; + break; + } + label = GTK_LABEL (gtk_builder_get_object (calibrate->builder, + "label_status")); + gtk_label_set_label (label, message_transl); + + /* show the correct button */ + widget = GTK_WIDGET (gtk_builder_get_object (calibrate->builder, + "button_start")); + gtk_widget_set_visible (widget, show_button_start); + widget = GTK_WIDGET (gtk_builder_get_object (calibrate->builder, + "button_resume")); + gtk_widget_set_visible (widget, !show_button_start); +} + +static const gchar * +cc_color_calibrate_get_error_translation (CdSessionError code) +{ + const gchar *str = NULL; + switch (code) + { + case CD_SESSION_ERROR_FAILED_TO_FIND_DEVICE: + case CD_SESSION_ERROR_FAILED_TO_FIND_SENSOR: + case CD_SESSION_ERROR_INTERNAL: + case CD_SESSION_ERROR_INVALID_VALUE: + /* TRANSLATORS: We suck, the calibration failed and we have no + * good idea why or any suggestions */ + str = _("An internal error occurred that could not be recovered."); + break; + case CD_SESSION_ERROR_FAILED_TO_FIND_TOOL: + /* TRANSLATORS: Some required-at-runtime tools were not + * installed, which should only affect insane distros */ + str = _("Tools required for calibration are not installed."); + break; + case CD_SESSION_ERROR_FAILED_TO_GENERATE_PROFILE: + case CD_SESSION_ERROR_FAILED_TO_OPEN_PROFILE: + case CD_SESSION_ERROR_FAILED_TO_SAVE_PROFILE: + /* TRANSLATORS: The profile failed for some reason */ + str = _("The profile could not be generated."); + break; + case CD_SESSION_ERROR_FAILED_TO_GET_WHITEPOINT: + /* TRANSLATORS: The user specified a whitepoint that was + * unobtainable with the hardware they've got -- see + * https://en.wikipedia.org/wiki/White_point for details */ + str = _("The target whitepoint was not obtainable."); + break; + default: + break; + } + return str; +} + +static void +cc_color_calibrate_finished (CcColorCalibrate *calibrate, + CdSessionError code, + const gchar *error_fallback) +{ + GtkWidget *widget; + g_autoptr(GString) str = NULL; + const gchar *tmp; + + /* save failure so we can get this after we've quit the loop */ + calibrate->session_error_code = code; + + /* show correct buttons */ + widget = GTK_WIDGET (gtk_builder_get_object (calibrate->builder, + "button_cancel")); + gtk_widget_set_visible (widget, FALSE); + widget = GTK_WIDGET (gtk_builder_get_object (calibrate->builder, + "button_start")); + gtk_widget_set_visible (widget, FALSE); + widget = GTK_WIDGET (gtk_builder_get_object (calibrate->builder, + "button_resume")); + gtk_widget_set_visible (widget, FALSE); + widget = GTK_WIDGET (gtk_builder_get_object (calibrate->builder, + "button_done")); + gtk_widget_set_visible (widget, TRUE); + + str = g_string_new (""); + if (code == CD_SESSION_ERROR_NONE) + { + g_debug ("calibration succeeded"); + /* TRANSLATORS: the display calibration process is finished */ + g_string_append (str, _("Complete!")); + } + else + { + g_warning ("calibration failed with code %i: %s", + code, error_fallback); + /* TRANSLATORS: the display calibration failed, and we also show + * the translated (or untranslated) error string after this */ + g_string_append (str, _("Calibration failed!")); + g_string_append (str, "\n\n"); + tmp = cc_color_calibrate_get_error_translation (code); + g_string_append (str, tmp != NULL ? tmp : error_fallback); + } + g_string_append (str, "\n"); + /* TRANSLATORS: The user can now remove the sensor from the screen */ + g_string_append (str, _("You can remove the calibration device.")); + + widget = GTK_WIDGET (gtk_builder_get_object (calibrate->builder, + "label_status")); + gtk_label_set_label (GTK_LABEL (widget), str->str); +} + +static void +cc_color_calibrate_signal_cb (CcColorCalibrate *calibrate, + const gchar *sender_name, + const gchar *signal_name, + GVariant *parameters) +{ + CdColorRGB color; + CdColorRGB *color_tmp; + const gchar *image = NULL; + const gchar *message; + const gchar *profile_path = NULL; + const gchar *str = NULL; + gboolean ret; + g_autoptr(GError) error = NULL; + GPtrArray *array = NULL; + GtkImage *img; + GtkLabel *label; + g_autoptr(GVariant) dict = NULL; + + if (g_strcmp0 (signal_name, "Finished") == 0) + { + CdSessionError error_code; + + g_variant_get (parameters, "(u@a{sv})", + &error_code, + &dict); + g_variant_lookup (dict, "ErrorDetails", "&s", &str); + ret = g_variant_lookup (dict, "ProfilePath", "&s", &profile_path); + if (ret) + calibrate->profile = cd_profile_new_with_object_path (profile_path); + cc_color_calibrate_finished (calibrate, error_code, str); + return; + } + if (g_strcmp0 (signal_name, "UpdateSample") == 0) + { + g_variant_get (parameters, "(ddd)", + &color.R, + &color.G, + &color.B); + img = GTK_IMAGE (gtk_builder_get_object (calibrate->builder, + "image_status")); + gtk_widget_set_visible (GTK_WIDGET (img), FALSE); + gtk_widget_set_visible (GTK_WIDGET (calibrate->sample_widget), TRUE); + cd_sample_widget_set_color (CD_SAMPLE_WIDGET (calibrate->sample_widget), + &color); + + /* for Lenovo W700 and W520 laptops we almost fullscreen the + * sample widget as the device is actually embedded in the + * palmrest! */ + if (cd_sensor_get_embedded (calibrate->sensor)) + { + g_debug ("Making sample window larger for embedded sensor"); + gtk_widget_set_size_request (calibrate->sample_widget, 1000, 600); + } + + /* set the generic label too */ + label = GTK_LABEL (gtk_builder_get_object (calibrate->builder, + "label_status")); + /* TRANSLATORS: The user has to be careful not to knock the + * display off the screen (although we do cope if this is + * detected early enough) */ + gtk_label_set_label (label, _("Do not disturb the calibration device while in progress")); + return; + } + if (g_strcmp0 (signal_name, "InteractionRequired") == 0) + { + CdSessionInteraction code; + + g_variant_get (parameters, "(u&s&s)", + &code, + &message, + &image); + g_debug ("Interaction required type %i: %s", + code, message); + cc_color_calibrate_interaction_required (calibrate, + code, + message, + image); + return; + } + if (g_strcmp0 (signal_name, "UpdateGamma") == 0) + { + g_autoptr(GVariantIter) iter = NULL; + + g_variant_get (parameters, + "(a(ddd))", + &iter); + array = g_ptr_array_new_with_free_func (g_free); + while (g_variant_iter_loop (iter, "(ddd)", + &color.R, + &color.G, + &color.B)) + { + color_tmp = cd_color_rgb_new (); + cd_color_rgb_copy (&color, color_tmp); + g_ptr_array_add (array, color_tmp); + } + ret = cc_color_calibrate_calib_set_output_gamma (calibrate, + array, + &error); + if (!ret) + { + g_warning ("failed to update gamma: %s", + error->message); + return; + } + return; + } + g_warning ("got unknown signal %s", signal_name); +} + +static void +cc_color_calibrate_cancel (CcColorCalibrate *calibrate) +{ + g_autoptr(GVariant) retval = NULL; + g_autoptr(GError) error = NULL; + + /* cancel the calibration to ensure the helper quits */ + retval = g_dbus_proxy_call_sync (calibrate->proxy_helper, + "Cancel", + NULL, + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + &error); + if (retval == NULL) + g_warning ("Failed to send Cancel: %s", error->message); + + /* return */ + g_main_loop_quit (calibrate->loop); +} + +static gboolean +cc_color_calibrate_move_and_resize_window (GtkWindow *window, + CdDevice *device, + GError **error) +{ + const gchar *xrandr_name; + gboolean ret = TRUE; + GdkRectangle rect; + GdkDisplay *display; + GdkMonitor *monitor; + gint i; + gint monitor_num = -1; + gint num_monitors; + + /* find the monitor num of the device output */ + display = gdk_display_get_default (); + num_monitors = gdk_display_get_n_monitors (display); + xrandr_name = cd_device_get_metadata_item (device, CD_DEVICE_METADATA_XRANDR_NAME); + for (i = 0; i < num_monitors; i++) + { + const gchar *plug_name; + + monitor = gdk_display_get_monitor (display, i); + plug_name = gdk_monitor_get_model (monitor); + + if (g_strcmp0 (plug_name, xrandr_name) == 0) + monitor_num = i; + } + if (monitor_num == -1) + { + ret = FALSE; + g_set_error (error, + CD_SESSION_ERROR, + CD_SESSION_ERROR_INTERNAL, + "failed to find output %s", + xrandr_name); + goto out; + } + + /* move the window, and set it to the right size */ + monitor = gdk_display_get_monitor (display, monitor_num); + gdk_monitor_get_geometry (monitor, &rect); + gtk_window_move (window, rect.x, rect.y); + gtk_window_resize (window, rect.width, rect.height); + g_debug ("Setting window to %ix%i with size %ix%i", + rect.x, rect.y, rect.width, rect.height); +out: + return ret; +} + +static void +cc_color_calibrate_window_realize_cb (CcColorCalibrate *self) +{ + GtkWidget *widget; + + widget = GTK_WIDGET (gtk_builder_get_object (self->builder, + "dialog_calibrate")); + gtk_window_fullscreen (GTK_WINDOW (widget)); + gtk_window_maximize (GTK_WINDOW (widget)); +} + +static gboolean +cc_color_calibrate_window_state_cb (CcColorCalibrate *calibrate, + GdkEvent *event) +{ + gboolean ret; + g_autoptr(GError) error = NULL; + GdkEventWindowState *event_state = (GdkEventWindowState *) event; + GtkWindow *window; + + window = GTK_WINDOW (gtk_builder_get_object (calibrate->builder, + "dialog_calibrate")); + + /* check event */ + if (event->type != GDK_WINDOW_STATE) + return TRUE; + if (event_state->changed_mask != GDK_WINDOW_STATE_FULLSCREEN) + return TRUE; + + /* resize to the correct screen */ + ret = cc_color_calibrate_move_and_resize_window (window, + calibrate->device, + &error); + if (!ret) + g_warning ("Failed to resize window: %s", error->message); + return TRUE; +} + +static void +cc_color_calibrate_button_done_cb (CcColorCalibrate *calibrate) +{ + g_main_loop_quit (calibrate->loop); +} + +static void +cc_color_calibrate_button_start_cb (CcColorCalibrate *calibrate) +{ + GtkWidget *widget; + g_autoptr(GError) error = NULL; + g_autoptr(GVariant) retval = NULL; + + /* set correct buttons */ + widget = GTK_WIDGET (gtk_builder_get_object (calibrate->builder, + "button_start")); + gtk_widget_set_visible (widget, FALSE); + widget = GTK_WIDGET (gtk_builder_get_object (calibrate->builder, + "button_resume")); + gtk_widget_set_visible (widget, FALSE); + + /* continue */ + retval = g_dbus_proxy_call_sync (calibrate->proxy_helper, + "Resume", + NULL, + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + &error); + if (retval == NULL) + g_warning ("Failed to send Resume: %s", error->message); +} + +static void +cc_color_calibrate_button_cancel_cb (CcColorCalibrate *calibrate) +{ + cc_color_calibrate_cancel (calibrate); +} + +static gboolean +cc_color_calibrate_alpha_window_draw (CcColorCalibrate *calibrate, cairo_t *cr) +{ + GtkWidget *widget; + + widget = GTK_WIDGET (gtk_builder_get_object (calibrate->builder, + "dialog_calibrate")); + + if (gdk_screen_get_rgba_visual (gtk_widget_get_screen (widget)) && + gdk_screen_is_composited (gtk_widget_get_screen (widget))) + { + /* transparent */ + cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, CALIBRATE_WINDOW_OPACITY); + } + else + { + /* opaque black */ + cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); + } + cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); + cairo_paint (cr); + return FALSE; +} + +static void +cc_color_calibrate_alpha_screen_changed_cb (CcColorCalibrate *calibrate) +{ + GtkWidget *window; + GdkScreen *screen; + GdkVisual *visual; + + window = GTK_WIDGET (gtk_builder_get_object (calibrate->builder, + "dialog_calibrate")); + screen = gtk_widget_get_screen (GTK_WIDGET (window)); + visual = gdk_screen_get_rgba_visual (screen); + if (visual == NULL) + visual = gdk_screen_get_system_visual (screen); + gtk_widget_set_visual (GTK_WIDGET (window), visual); +} + +static void +cc_color_calibrate_uninhibit (CcColorCalibrate *calibrate) +{ + GtkApplication *application; + + if (calibrate->inhibit_fd != -1) + { + close (calibrate->inhibit_fd); + calibrate->inhibit_fd = -1; + } + + if (calibrate->inhibit_cookie != 0) + { + application = GTK_APPLICATION (g_application_get_default ()); + gtk_application_uninhibit (application, calibrate->inhibit_cookie); + calibrate->inhibit_cookie = 0; + } +} + +static void +cc_color_calibrate_inhibit (CcColorCalibrate *calibrate, GtkWindow *window) +{ + g_autoptr(GError) error = NULL; + gint idx; + g_autoptr(GUnixFDList) fd_list = NULL; + g_autoptr(GVariant) retval = NULL; + GtkApplication *application; + + /* inhibit basically everything we can */ + application = GTK_APPLICATION (g_application_get_default ()); + calibrate->inhibit_cookie = gtk_application_inhibit (application, + window, + GTK_APPLICATION_INHIBIT_LOGOUT | + GTK_APPLICATION_INHIBIT_SWITCH | + GTK_APPLICATION_INHIBIT_SUSPEND | + GTK_APPLICATION_INHIBIT_IDLE, + "Display calibration in progress"); + + /* tell logind to disallow the lid switch */ + retval = g_dbus_proxy_call_with_unix_fd_list_sync (calibrate->proxy_inhibit, + "Inhibit", + g_variant_new ("(ssss)", + "shutdown:" + "sleep:" + "idle:" + "handle-lid-switch", + "Display Calibrator", + "Display calibration in progress", + "block"), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + &fd_list, + NULL, + &error); + if (retval == NULL) + { + g_warning ("Failed to send Inhibit: %s", error->message); + return; + } + g_variant_get (retval, "(h)", &idx); + calibrate->inhibit_fd = g_unix_fd_list_get (fd_list, idx, &error); + if (calibrate->inhibit_fd == -1) + { + g_warning ("Failed to receive system inhibitor fd: %s", error->message); + return; + } + g_debug ("System inhibitor fd is %d", calibrate->inhibit_fd); +} + +gboolean +cc_color_calibrate_setup (CcColorCalibrate *calibrate, + GError **error) +{ + gboolean ret = TRUE; + + g_return_val_if_fail (CC_IS_COLOR_CALIBRATE (calibrate), FALSE); + g_return_val_if_fail (calibrate->device_kind != CD_SENSOR_CAP_UNKNOWN, FALSE); + + /* use logind to disable system state idle */ + calibrate->proxy_inhibit = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, + G_DBUS_PROXY_FLAGS_NONE, + NULL, + "org.freedesktop.login1", + "/org/freedesktop/login1", + "org.freedesktop.login1.Manager", + NULL, + error); + if (calibrate->proxy_inhibit == NULL) + { + ret = FALSE; + goto out; + } + + /* start the calibration session daemon */ + calibrate->proxy_helper = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION, + G_DBUS_PROXY_FLAGS_NONE, + NULL, + CD_SESSION_DBUS_SERVICE, + CD_SESSION_DBUS_PATH, + CD_SESSION_DBUS_INTERFACE_DISPLAY, + NULL, + error); + if (calibrate->proxy_helper == NULL) + { + ret = FALSE; + goto out; + } + g_signal_connect_object (calibrate->proxy_helper, + "g-properties-changed", + G_CALLBACK (cc_color_calibrate_property_changed_cb), + calibrate, G_CONNECT_SWAPPED); + g_signal_connect_object (calibrate->proxy_helper, + "g-signal", + G_CALLBACK (cc_color_calibrate_signal_cb), + calibrate, G_CONNECT_SWAPPED); +out: + return ret; +} + +gboolean +cc_color_calibrate_start (CcColorCalibrate *calibrate, + GtkWindow *parent, + GError **error) +{ + const gchar *name; + GtkWidget *widget; + GtkWindow *window; + GVariantBuilder builder; + g_autoptr(GVariant) retval = NULL; + + g_return_val_if_fail (CC_IS_COLOR_CALIBRATE (calibrate), FALSE); + + /* get screen */ + name = cd_device_get_metadata_item (calibrate->device, + CD_DEVICE_METADATA_XRANDR_NAME); + if (!cc_color_calibrate_calib_setup_screen (calibrate, name, error)) + return FALSE; + + g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY); + g_variant_builder_add (&builder, + "{sv}", + "Quality", + g_variant_new_uint32 (calibrate->quality)); + g_variant_builder_add (&builder, + "{sv}", + "Whitepoint", + g_variant_new_uint32 (calibrate->target_whitepoint)); + g_variant_builder_add (&builder, + "{sv}", + "Gamma", + g_variant_new_double (calibrate->target_gamma)); + g_variant_builder_add (&builder, + "{sv}", + "Title", + g_variant_new_string (calibrate->title)); + g_variant_builder_add (&builder, + "{sv}", + "DeviceKind", + g_variant_new_uint32 (calibrate->device_kind)); + retval = g_dbus_proxy_call_sync (calibrate->proxy_helper, + "Start", + g_variant_new ("(ssa{sv})", + cd_device_get_id (calibrate->device), + cd_sensor_get_id (calibrate->sensor), + &builder), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + error); + if (retval == NULL) + return FALSE; + + /* set this above our parent */ + window = GTK_WINDOW (gtk_builder_get_object (calibrate->builder, + "dialog_calibrate")); + gtk_window_set_modal (window, TRUE); + gtk_widget_show (GTK_WIDGET (window)); + + /* show correct buttons */ + widget = GTK_WIDGET (gtk_builder_get_object (calibrate->builder, + "button_cancel")); + gtk_widget_set_visible (widget, TRUE); + widget = GTK_WIDGET (gtk_builder_get_object (calibrate->builder, + "button_start")); + gtk_widget_set_visible (widget, TRUE); + widget = GTK_WIDGET (gtk_builder_get_object (calibrate->builder, + "button_resume")); + gtk_widget_set_visible (widget, FALSE); + widget = GTK_WIDGET (gtk_builder_get_object (calibrate->builder, + "button_done")); + gtk_widget_set_visible (widget, FALSE); + + /* stop the computer from auto-suspending or turning off the screen */ + cc_color_calibrate_inhibit (calibrate, parent); + + g_main_loop_run (calibrate->loop); + gtk_widget_hide (GTK_WIDGET (window)); + + /* we can go idle now */ + cc_color_calibrate_uninhibit (calibrate); + + /* see if we failed */ + if (calibrate->session_error_code != CD_SESSION_ERROR_NONE) + { + g_set_error_literal (error, + CD_SESSION_ERROR, + CD_SESSION_ERROR_INTERNAL, + "failed to calibrate"); + return FALSE; + } + + return TRUE; +} + +static gboolean +cc_color_calibrate_delete_event_cb (CcColorCalibrate *calibrate) +{ + /* do not destroy the window */ + cc_color_calibrate_cancel (calibrate); + return TRUE; +} + +static void +cc_color_calibrate_finalize (GObject *object) +{ + CcColorCalibrate *calibrate = CC_COLOR_CALIBRATE (object); + + g_clear_pointer ((GtkWidget **)&calibrate->window, gtk_widget_destroy); + g_clear_object (&calibrate->builder); + g_clear_object (&calibrate->device); + g_clear_object (&calibrate->proxy_helper); + g_clear_object (&calibrate->proxy_inhibit); + g_clear_object (&calibrate->sensor); + g_clear_object (&calibrate->x11_screen); + g_free (calibrate->title); + g_main_loop_unref (calibrate->loop); + + G_OBJECT_CLASS (cc_color_calibrate_parent_class)->finalize (object); +} + +static void +cc_color_calibrate_class_init (CcColorCalibrateClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + object_class->finalize = cc_color_calibrate_finalize; +} + +static void +cc_color_calibrate_init (CcColorCalibrate *calibrate) +{ + g_autoptr(GError) error = NULL; + gint retval; + g_autoptr(GSettings) settings = NULL; + GtkBox *box; + GtkWidget *widget; + GtkWindow *window; + + calibrate->loop = g_main_loop_new (NULL, FALSE); + calibrate->inhibit_fd = -1; + + /* load UI */ + calibrate->builder = gtk_builder_new (); + retval = gtk_builder_add_from_resource (calibrate->builder, + "/org/gnome/control-center/color/cc-color-calibrate.ui", + &error); + if (retval == 0) + g_warning ("Could not load interface: %s", error->message); + + /* add sample widget */ + box = GTK_BOX (gtk_builder_get_object (calibrate->builder, + "vbox_status")); + calibrate->sample_widget = cd_sample_widget_new (); + gtk_widget_set_size_request (calibrate->sample_widget, 400, 400); + gtk_box_pack_start (box, calibrate->sample_widget, FALSE, FALSE, 0); + gtk_box_reorder_child (box, calibrate->sample_widget, 0); + gtk_widget_set_vexpand (calibrate->sample_widget, FALSE); + gtk_widget_set_hexpand (calibrate->sample_widget, FALSE); + + /* get defaults */ + settings = g_settings_new (COLORD_SETTINGS_SCHEMA); + calibrate->target_whitepoint = g_settings_get_int (settings, "display-whitepoint"); + calibrate->target_gamma = g_settings_get_double (settings, "display-gamma"); + + /* connect to buttons */ + widget = GTK_WIDGET (gtk_builder_get_object (calibrate->builder, + "button_start")); + g_signal_connect_object (widget, "clicked", + G_CALLBACK (cc_color_calibrate_button_start_cb), calibrate, G_CONNECT_SWAPPED); + widget = GTK_WIDGET (gtk_builder_get_object (calibrate->builder, + "button_resume")); + g_signal_connect_object (widget, "clicked", + G_CALLBACK (cc_color_calibrate_button_start_cb), calibrate, G_CONNECT_SWAPPED); + widget = GTK_WIDGET (gtk_builder_get_object (calibrate->builder, + "button_done")); + g_signal_connect_object (widget, "clicked", + G_CALLBACK (cc_color_calibrate_button_done_cb), calibrate, G_CONNECT_SWAPPED); + widget = GTK_WIDGET (gtk_builder_get_object (calibrate->builder, + "button_cancel")); + g_signal_connect_object (widget, "clicked", + G_CALLBACK (cc_color_calibrate_button_cancel_cb), calibrate, G_CONNECT_SWAPPED); + gtk_widget_show (widget); + + /* setup the specialist calibration window */ + window = GTK_WINDOW (gtk_builder_get_object (calibrate->builder, + "dialog_calibrate")); + g_signal_connect_object (window, "draw", + G_CALLBACK (cc_color_calibrate_alpha_window_draw), calibrate, G_CONNECT_SWAPPED); + g_signal_connect_object (window, "realize", + G_CALLBACK (cc_color_calibrate_window_realize_cb), calibrate, G_CONNECT_SWAPPED); + g_signal_connect_object (window, "window-state-event", + G_CALLBACK (cc_color_calibrate_window_state_cb), calibrate, G_CONNECT_SWAPPED); + g_signal_connect_object (window, "delete-event", + G_CALLBACK (cc_color_calibrate_delete_event_cb), calibrate, G_CONNECT_SWAPPED); + gtk_widget_set_app_paintable (GTK_WIDGET (window), TRUE); + gtk_window_set_keep_above (window, TRUE); + cc_color_calibrate_alpha_screen_changed_cb (calibrate); + g_signal_connect_object (window, "screen-changed", + G_CALLBACK (cc_color_calibrate_alpha_screen_changed_cb), calibrate, G_CONNECT_SWAPPED); + calibrate->window = window; +} + +CcColorCalibrate * +cc_color_calibrate_new (void) +{ + CcColorCalibrate *calibrate; + calibrate = g_object_new (CC_TYPE_COLOR_CALIBRATE, NULL); + return CC_COLOR_CALIBRATE (calibrate); +} diff --git a/panels/color/cc-color-calibrate.h b/panels/color/cc-color-calibrate.h new file mode 100644 index 0000000..15ea06d --- /dev/null +++ b/panels/color/cc-color-calibrate.h @@ -0,0 +1,54 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- + * + * Copyright (C) 2012 Richard Hughes <richard@hughsie.com> + * + * Licensed under the GNU General Public License Version 2 + * + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#pragma once + +#include <glib-object.h> +#include <gtk/gtk.h> +#include <colord.h> + +G_BEGIN_DECLS + +#define CC_TYPE_COLOR_CALIBRATE (cc_color_calibrate_get_type ()) +G_DECLARE_FINAL_TYPE (CcColorCalibrate, cc_color_calibrate, CC, COLOR_CALIBRATE, GObject) + +CcColorCalibrate *cc_color_calibrate_new (void); +void cc_color_calibrate_set_kind (CcColorCalibrate *calibrate, + CdSensorCap kind); +void cc_color_calibrate_set_temperature (CcColorCalibrate *calibrate, + guint temperature); +void cc_color_calibrate_set_quality (CcColorCalibrate *calibrate, + CdProfileQuality quality); +CdProfileQuality cc_color_calibrate_get_quality (CcColorCalibrate *calibrate); +void cc_color_calibrate_set_device (CcColorCalibrate *calibrate, + CdDevice *device); +void cc_color_calibrate_set_sensor (CcColorCalibrate *calibrate, + CdSensor *sensor); +void cc_color_calibrate_set_title (CcColorCalibrate *calibrate, + const gchar *title); +gboolean cc_color_calibrate_start (CcColorCalibrate *calibrate, + GtkWindow *parent, + GError **error); +gboolean cc_color_calibrate_setup (CcColorCalibrate *calibrate, + GError **error); +CdProfile *cc_color_calibrate_get_profile (CcColorCalibrate *calibrate); + +G_END_DECLS diff --git a/panels/color/cc-color-calibrate.ui b/panels/color/cc-color-calibrate.ui new file mode 100644 index 0000000..1d98b0b --- /dev/null +++ b/panels/color/cc-color-calibrate.ui @@ -0,0 +1,156 @@ +<?xml version="1.0" encoding="UTF-8"?> +<interface> + <!-- interface-requires gtk+ 3.0 --> + <object class="GtkDialog" id="dialog_calibrate"> + <property name="can_focus">False</property> + <property name="border_width">12</property> + <property name="title" translatable="yes">Display Calibration</property> + <property name="hide_titlebar_when_maximized">True</property> + <property name="type_hint">dialog</property> + <property name="deletable">False</property> + <style> + <class name="osd"/> + </style> + <child internal-child="vbox"> + <object class="GtkBox" id="dialog-vbox4"> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">12</property> + <child internal-child="action_area"> + <object class="GtkButtonBox" id="dialog-action_area1"> + <property name="can_focus">False</property> + <property name="layout_style">end</property> + <child> + <object class="GtkButton" id="button_cancel"> + <property name="label" translatable="yes">_Cancel</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + <property name="secondary">True</property> + </packing> + </child> + <child> + <object class="GtkButton" id="button_start"> + <property name="label" translatable="yes" comments="This starts the calibration process">_Start</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkButton" id="button_resume"> + <property name="label" translatable="yes" comments="This resumes the calibration process">_Resume</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkButton" id="button_done"> + <property name="label" translatable="yes" comments="This button returns the user back to the color control panel">_Done</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">3</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">end</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox" id="vbox_status"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">center</property> + <property name="valign">center</property> + <property name="orientation">vertical</property> + <property name="spacing">15</property> + <child> + <object class="GtkImage" id="image_status"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="yalign">1</property> + <property name="pixel_size">192</property> + <property name="icon_name">address-book-new</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label_status"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="yalign">0</property> + <property name="label">Do not disturb the calibration device while in progress</property> + <property name="justify">center</property> + <property name="wrap">True</property> + <attributes> + <attribute name="weight" value="bold"/> + <attribute name="foreground" value="#ffffffffffff"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkProgressBar" id="progressbar_status"> + <property name="visible">True</property> + <property name="can_focus">False</property> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="padding">25</property> + <property name="position">2</property> + </packing> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + <action-widgets> + <action-widget response="0">button_cancel</action-widget> + <action-widget response="0">button_start</action-widget> + <action-widget response="0">button_resume</action-widget> + <action-widget response="0">button_done</action-widget> + </action-widgets> + </object> + <object class="GtkSizeGroup" id="sizegroup_sample"/> +</interface> diff --git a/panels/color/cc-color-cell-renderer-text.c b/panels/color/cc-color-cell-renderer-text.c new file mode 100644 index 0000000..8e64ecf --- /dev/null +++ b/panels/color/cc-color-cell-renderer-text.c @@ -0,0 +1,132 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- + * + * Copyright (C) 2012 Richard Hughes <richard@hughsie.com> + * + * Licensed under the GNU General Public License Version 2 + * + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "config.h" + +#include <gtk/gtk.h> + +#include "cc-color-cell-renderer-text.h" + +enum { + PROP_0, + PROP_IS_DIM_LABEL, + PROP_LAST +}; + +struct _CcColorCellRendererText +{ + GtkCellRendererText parent_instance; + + gboolean is_dim_label; +}; + +G_DEFINE_TYPE (CcColorCellRendererText, cc_color_cell_renderer_text, GTK_TYPE_CELL_RENDERER_TEXT) + +static gpointer parent_class = NULL; + +static void +cc_color_cell_renderer_text_get_property (GObject *object, guint param_id, + GValue *value, GParamSpec *pspec) +{ + CcColorCellRendererText *renderer = CC_COLOR_CELL_RENDERER_TEXT (object); + + switch (param_id) + { + case PROP_IS_DIM_LABEL: + g_value_set_boolean (value, renderer->is_dim_label); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); + break; + } +} + +static void +cc_color_cell_renderer_text_set_property (GObject *object, guint param_id, + const GValue *value, GParamSpec *pspec) +{ + CcColorCellRendererText *renderer = CC_COLOR_CELL_RENDERER_TEXT (object); + + switch (param_id) + { + case PROP_IS_DIM_LABEL: + renderer->is_dim_label = g_value_get_boolean (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); + break; + } +} + +static void +cc_color_cell_renderer_render (GtkCellRenderer *cell, + cairo_t *cr, + GtkWidget *widget, + const GdkRectangle *background_area, + const GdkRectangle *cell_area, + GtkCellRendererState flags) +{ + CcColorCellRendererText *renderer; + GtkStyleContext *context; + + renderer = CC_COLOR_CELL_RENDERER_TEXT (cell); + context = gtk_widget_get_style_context (widget); + gtk_style_context_save (context); + if (renderer->is_dim_label) + gtk_style_context_add_class (context, "dim-label"); + else + gtk_style_context_remove_class (context, "dim-label"); + GTK_CELL_RENDERER_CLASS (parent_class)->render (cell, cr, widget, + background_area, + cell_area, flags); + gtk_style_context_restore (context); +} + +static void +cc_color_cell_renderer_text_class_init (CcColorCellRendererTextClass *class) +{ + GObjectClass *object_class = G_OBJECT_CLASS (class); + GtkCellRendererClass *object_class_gcr = GTK_CELL_RENDERER_CLASS (class); + object_class_gcr->render = cc_color_cell_renderer_render; + + parent_class = g_type_class_peek_parent (class); + + object_class->get_property = cc_color_cell_renderer_text_get_property; + object_class->set_property = cc_color_cell_renderer_text_set_property; + + g_object_class_install_property (object_class, PROP_IS_DIM_LABEL, + g_param_spec_boolean ("is-dim-label", + NULL, NULL, + FALSE, + G_PARAM_READWRITE)); +} + +static void +cc_color_cell_renderer_text_init (CcColorCellRendererText *renderer) +{ + renderer->is_dim_label = FALSE; +} + +GtkCellRenderer * +cc_color_cell_renderer_text_new (void) +{ + return g_object_new (CC_COLOR_TYPE_CELL_RENDERER_TEXT, NULL); +} diff --git a/panels/color/cc-color-cell-renderer-text.h b/panels/color/cc-color-cell-renderer-text.h new file mode 100644 index 0000000..241663a --- /dev/null +++ b/panels/color/cc-color-cell-renderer-text.h @@ -0,0 +1,32 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- + * + * Copyright (C) 2012 Richard Hughes <richard@hughsie.com> + * + * Licensed under the GNU General Public License Version 2 + * + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#pragma once + +#include <gtk/gtk.h> + +#define CC_COLOR_TYPE_CELL_RENDERER_TEXT (cc_color_cell_renderer_text_get_type ()) +G_DECLARE_FINAL_TYPE (CcColorCellRendererText, cc_color_cell_renderer_text, CC_COLOR, CELL_RENDERER_TEXT, GtkCellRendererText) + +GtkCellRenderer *cc_color_cell_renderer_text_new (void); + +G_END_DECLS + diff --git a/panels/color/cc-color-common.c b/panels/color/cc-color-common.c new file mode 100644 index 0000000..cf269c2 --- /dev/null +++ b/panels/color/cc-color-common.c @@ -0,0 +1,116 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- + * + * Copyright (C) 2012 Richard Hughes <richard@hughsie.com> + * + * Licensed under the GNU General Public License Version 2 + * + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "config.h" + +#include <glib/gi18n.h> + +#include "cc-color-common.h" + +gchar * +cc_color_device_get_title (CdDevice *device) +{ + const gchar *tmp; + GString *string; + + string = g_string_new (""); + + /* is laptop panel */ + if (cd_device_get_kind (device) == CD_DEVICE_KIND_DISPLAY && + cd_device_get_embedded (device)) + { + /* TRANSLATORS: This refers to the TFT display on a laptop */ + g_string_append (string, _("Laptop Screen")); + goto out; + } + + /* is internal webcam */ + if (cd_device_get_kind (device) == CD_DEVICE_KIND_WEBCAM && + cd_device_get_embedded (device)) + { + /* TRANSLATORS: This refers to the embedded webcam on a laptop */ + g_string_append (string, _("Built-in Webcam")); + goto out; + } + + /* get the display model, falling back to something sane */ + tmp = cd_device_get_model (device); + if (tmp == NULL) + tmp = cd_device_get_vendor (device); + if (tmp == NULL) + tmp = cd_device_get_id (device); + + switch (cd_device_get_kind (device)) { + case CD_DEVICE_KIND_DISPLAY: + /* TRANSLATORS: an externally connected display, where %s is either the + * model, vendor or ID, e.g. 'LP2480zx Monitor' */ + g_string_append_printf (string, _("%s Monitor"), tmp); + break; + case CD_DEVICE_KIND_SCANNER: + /* TRANSLATORS: a flatbed scanner device, e.g. 'Epson Scanner' */ + g_string_append_printf (string, _("%s Scanner"), tmp); + break; + case CD_DEVICE_KIND_CAMERA: + /* TRANSLATORS: a camera device, e.g. 'Nikon D60 Camera' */ + g_string_append_printf (string, _("%s Camera"), tmp); + break; + case CD_DEVICE_KIND_PRINTER: + /* TRANSLATORS: a printer device, e.g. 'Epson Photosmart Printer' */ + g_string_append_printf (string, _("%s Printer"), tmp); + break; + case CD_DEVICE_KIND_WEBCAM: + /* TRANSLATORS: a webcam device, e.g. 'Philips HiDef Camera' */ + g_string_append_printf (string, _("%s Webcam"), tmp); + break; + default: + g_string_append (string, tmp); + break; + } +out: + return g_string_free (string, FALSE); +} + +static const gchar * +cc_color_device_kind_to_sort (CdDevice *device) +{ + CdDeviceKind kind = cd_device_get_kind (device); + if (kind == CD_DEVICE_KIND_DISPLAY) + return "4"; + if (kind == CD_DEVICE_KIND_SCANNER) + return "3"; + if (kind == CD_DEVICE_KIND_CAMERA) + return "2"; + if (kind == CD_DEVICE_KIND_WEBCAM) + return "1"; + if (kind == CD_DEVICE_KIND_PRINTER) + return "0"; + return "9"; +} + +gchar * +cc_color_device_get_sortable_base (CdDevice *device) +{ + g_autofree gchar *title = cc_color_device_get_title (device); + return g_strdup_printf ("%s-%s-%s", + cc_color_device_kind_to_sort (device), + cd_device_get_id (device), + title); +} diff --git a/panels/color/cc-color-common.h b/panels/color/cc-color-common.h new file mode 100644 index 0000000..c90193e --- /dev/null +++ b/panels/color/cc-color-common.h @@ -0,0 +1,32 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- + * + * Copyright (C) 2012 Richard Hughes <richard@hughsie.com> + * + * Licensed under the GNU General Public License Version 2 + * + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#pragma once + +#include <colord.h> + +#define GCM_SETTINGS_SCHEMA "org.gnome.settings-daemon.plugins.color" + +gchar *cc_color_device_get_sortable_base (CdDevice *device); +gchar *cc_color_device_get_title (CdDevice *device); + +G_END_DECLS + diff --git a/panels/color/cc-color-device.c b/panels/color/cc-color-device.c new file mode 100644 index 0000000..a49eaad --- /dev/null +++ b/panels/color/cc-color-device.c @@ -0,0 +1,310 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- + * + * Copyright (C) 2012 Richard Hughes <richard@hughsie.com> + * + * Licensed under the GNU General Public License Version 2 + * + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "config.h" + +#include <glib/gi18n.h> +#include <gtk/gtk.h> + +#include "cc-color-common.h" +#include "cc-color-device.h" + +struct _CcColorDevice +{ + GtkListBoxRow parent_instance; + + CdDevice *device; + gboolean expanded; + gchar *sortable; + GtkWidget *widget_description; + GtkWidget *widget_button; + GtkWidget *widget_switch; + GtkWidget *widget_arrow; + GtkWidget *widget_nocalib; +}; + +G_DEFINE_TYPE (CcColorDevice, cc_color_device, GTK_TYPE_LIST_BOX_ROW) + +enum +{ + SIGNAL_EXPANDED_CHANGED, + SIGNAL_LAST +}; + +enum +{ + PROP_0, + PROP_DEVICE, + PROP_LAST +}; + +static guint signals [SIGNAL_LAST] = { 0 }; + +static void +cc_color_device_refresh (CcColorDevice *color_device) +{ + g_autofree gchar *title = NULL; + g_autoptr(GPtrArray) profiles = NULL; + AtkObject *accessible; + g_autofree gchar *name1 = NULL; + g_autofree gchar *name2 = NULL; + + /* add switch and expander if there are profiles, otherwise use a label */ + profiles = cd_device_get_profiles (color_device->device); + if (profiles == NULL) + return; + + title = cc_color_device_get_title (color_device->device); + gtk_label_set_label (GTK_LABEL (color_device->widget_description), title); + gtk_widget_set_visible (color_device->widget_description, TRUE); + + gtk_widget_set_visible (color_device->widget_switch, profiles->len > 0); + gtk_widget_set_visible (color_device->widget_button, profiles->len > 0); + gtk_image_set_from_icon_name (GTK_IMAGE (color_device->widget_arrow), + color_device->expanded ? "pan-down-symbolic" : "pan-end-symbolic", + GTK_ICON_SIZE_BUTTON); + gtk_widget_set_visible (color_device->widget_nocalib, profiles->len == 0); + gtk_widget_set_sensitive (color_device->widget_button, cd_device_get_enabled (color_device->device)); + gtk_switch_set_active (GTK_SWITCH (color_device->widget_switch), + cd_device_get_enabled (color_device->device)); + + accessible = gtk_widget_get_accessible (color_device->widget_switch); + name1 = g_strdup_printf (_("Enable color management for %s"), title); + atk_object_set_name (accessible, name1); + + name2 = g_strdup_printf (_("Show color profiles for %s"), title); + accessible = gtk_widget_get_accessible (color_device->widget_button); + atk_object_set_name (accessible, name2); +} + +CdDevice * +cc_color_device_get_device (CcColorDevice *color_device) +{ + g_return_val_if_fail (CC_IS_COLOR_DEVICE (color_device), NULL); + return color_device->device; +} + +const gchar * +cc_color_device_get_sortable (CcColorDevice *color_device) +{ + g_return_val_if_fail (CC_IS_COLOR_DEVICE (color_device), NULL); + return color_device->sortable; +} + +static void +cc_color_device_get_property (GObject *object, guint param_id, + GValue *value, GParamSpec *pspec) +{ + CcColorDevice *color_device = CC_COLOR_DEVICE (object); + switch (param_id) + { + case PROP_DEVICE: + g_value_set_object (value, color_device->device); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); + break; + } +} + +static void +cc_color_device_set_property (GObject *object, guint param_id, + const GValue *value, GParamSpec *pspec) +{ + CcColorDevice *color_device = CC_COLOR_DEVICE (object); + + switch (param_id) + { + case PROP_DEVICE: + color_device->device = g_value_dup_object (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); + break; + } +} + +static void +cc_color_device_finalize (GObject *object) +{ + CcColorDevice *color_device = CC_COLOR_DEVICE (object); + + g_free (color_device->sortable); + g_object_unref (color_device->device); + + G_OBJECT_CLASS (cc_color_device_parent_class)->finalize (object); +} + +void +cc_color_device_set_expanded (CcColorDevice *color_device, + gboolean expanded) +{ + /* same as before */ + if (color_device->expanded == expanded) + return; + + /* refresh */ + color_device->expanded = expanded; + g_signal_emit (color_device, + signals[SIGNAL_EXPANDED_CHANGED], 0, + color_device->expanded); + cc_color_device_refresh (color_device); +} + +static void +cc_color_device_notify_enable_device_cb (CcColorDevice *color_device) +{ + gboolean enable; + gboolean ret; + g_autoptr(GError) error = NULL; + + enable = gtk_switch_get_active (GTK_SWITCH (color_device->widget_switch)); + g_debug ("Set %s to %i", cd_device_get_id (color_device->device), enable); + ret = cd_device_set_enabled_sync (color_device->device, + enable, NULL, &error); + if (!ret) + g_warning ("failed to %s to the device: %s", + enable ? "enable" : "disable", error->message); + + /* if expanded, close */ + cc_color_device_set_expanded (color_device, FALSE); +} + +static void +cc_color_device_changed_cb (CcColorDevice *color_device) +{ + cc_color_device_refresh (color_device); +} + +static void +cc_color_device_constructed (GObject *object) +{ + CcColorDevice *color_device = CC_COLOR_DEVICE (object); + g_autofree gchar *sortable_tmp = NULL; + + /* watch the device for changes */ + g_signal_connect_object (color_device->device, "changed", + G_CALLBACK (cc_color_device_changed_cb), color_device, G_CONNECT_SWAPPED); + + /* calculate sortable -- FIXME: we have to hack this as EggListBox + * does not let us specify a GtkSortType: + * https://bugzilla.gnome.org/show_bug.cgi?id=691341 */ + sortable_tmp = cc_color_device_get_sortable_base (color_device->device); + color_device->sortable = g_strdup_printf ("%sXX", sortable_tmp); + + cc_color_device_refresh (color_device); + + /* watch to see if the user flicked the switch */ + g_signal_connect_object (color_device->widget_switch, "notify::active", + G_CALLBACK (cc_color_device_notify_enable_device_cb), + color_device, G_CONNECT_SWAPPED); +} + +static void +cc_color_device_class_init (CcColorDeviceClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + object_class->get_property = cc_color_device_get_property; + object_class->set_property = cc_color_device_set_property; + object_class->constructed = cc_color_device_constructed; + object_class->finalize = cc_color_device_finalize; + + g_object_class_install_property (object_class, PROP_DEVICE, + g_param_spec_object ("device", NULL, + NULL, + CD_TYPE_DEVICE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + + signals [SIGNAL_EXPANDED_CHANGED] = + g_signal_new ("expanded-changed", + G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN, + G_TYPE_NONE, 1, G_TYPE_BOOLEAN); +} + +static void +cc_color_device_clicked_expander_cb (CcColorDevice *color_device) +{ + color_device->expanded = !color_device->expanded; + cc_color_device_refresh (color_device); + g_signal_emit (color_device, signals[SIGNAL_EXPANDED_CHANGED], 0, + color_device->expanded); +} + +static void +cc_color_device_init (CcColorDevice *color_device) +{ + GtkStyleContext *context; + GtkWidget *box; + + /* description */ + box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 9); + color_device->widget_description = gtk_label_new (""); + gtk_widget_set_margin_start (color_device->widget_description, 20); + gtk_widget_set_margin_top (color_device->widget_description, 12); + gtk_widget_set_margin_bottom (color_device->widget_description, 12); + gtk_widget_set_halign (color_device->widget_description, GTK_ALIGN_START); + gtk_label_set_ellipsize (GTK_LABEL (color_device->widget_description), PANGO_ELLIPSIZE_END); + gtk_label_set_xalign (GTK_LABEL (color_device->widget_description), 0); + gtk_box_pack_start (GTK_BOX (box), color_device->widget_description, TRUE, TRUE, 0); + + /* switch */ + color_device->widget_switch = gtk_switch_new (); + gtk_widget_set_valign (color_device->widget_switch, GTK_ALIGN_CENTER); + gtk_box_pack_start (GTK_BOX (box), color_device->widget_switch, FALSE, FALSE, 0); + + /* arrow button */ + color_device->widget_arrow = gtk_image_new_from_icon_name ("pan-end-symbolic", + GTK_ICON_SIZE_BUTTON); + color_device->widget_button = gtk_button_new (); + g_signal_connect_object (color_device->widget_button, "clicked", + G_CALLBACK (cc_color_device_clicked_expander_cb), + color_device, G_CONNECT_SWAPPED); + gtk_widget_set_valign (color_device->widget_button, GTK_ALIGN_CENTER); + gtk_button_set_relief (GTK_BUTTON (color_device->widget_button), GTK_RELIEF_NONE); + gtk_container_add (GTK_CONTAINER (color_device->widget_button), color_device->widget_arrow); + gtk_widget_set_visible (color_device->widget_arrow, TRUE); + gtk_widget_set_margin_top (color_device->widget_button, 9); + gtk_widget_set_margin_bottom (color_device->widget_button, 9); + gtk_widget_set_margin_end (color_device->widget_button, 12); + gtk_box_pack_start (GTK_BOX (box), color_device->widget_button, FALSE, FALSE, 0); + + /* not calibrated */ + color_device->widget_nocalib = gtk_label_new (_("Not calibrated")); + context = gtk_widget_get_style_context (color_device->widget_nocalib); + gtk_style_context_add_class (context, "dim-label"); + gtk_widget_set_margin_end (color_device->widget_nocalib, 18); + gtk_box_pack_start (GTK_BOX (box), color_device->widget_nocalib, FALSE, FALSE, 0); + + /* refresh */ + gtk_container_add (GTK_CONTAINER (color_device), box); + gtk_widget_set_visible (box, TRUE); +} + +GtkWidget * +cc_color_device_new (CdDevice *device) +{ + return g_object_new (CC_TYPE_COLOR_DEVICE, + "device", device, + NULL); +} + diff --git a/panels/color/cc-color-device.h b/panels/color/cc-color-device.h new file mode 100644 index 0000000..41e0d63 --- /dev/null +++ b/panels/color/cc-color-device.h @@ -0,0 +1,38 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- + * + * Copyright (C) 2012 Richard Hughes <richard@hughsie.com> + * + * Licensed under the GNU General Public License Version 2 + * + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#pragma once + +#include <gtk/gtk.h> +#include <colord.h> + +G_BEGIN_DECLS + +#define CC_TYPE_COLOR_DEVICE (cc_color_device_get_type ()) +G_DECLARE_FINAL_TYPE (CcColorDevice, cc_color_device, CC, COLOR_DEVICE, GtkListBoxRow) + +GtkWidget *cc_color_device_new (CdDevice *device); +CdDevice *cc_color_device_get_device (CcColorDevice *color_device); +const gchar *cc_color_device_get_sortable (CcColorDevice *color_device); +void cc_color_device_set_expanded (CcColorDevice *color_device, + gboolean expanded); + +G_END_DECLS diff --git a/panels/color/cc-color-panel.c b/panels/color/cc-color-panel.c new file mode 100644 index 0000000..35c78b2 --- /dev/null +++ b/panels/color/cc-color-panel.c @@ -0,0 +1,2283 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- + * + * Copyright (C) 2010 Red Hat, Inc + * Copyright (C) 2011 Richard Hughes <richard@hughsie.com> + * + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + * + */ + +#include <config.h> + +#include <glib/gi18n.h> +#include <colord.h> +#include <gtk/gtk.h> +#include <gdk/gdkx.h> +#include <libsoup/soup.h> + +#include "list-box-helper.h" +#include "cc-color-calibrate.h" +#include "cc-color-cell-renderer-text.h" +#include "cc-color-panel.h" +#include "cc-color-resources.h" +#include "cc-color-common.h" +#include "cc-color-device.h" +#include "cc-color-profile.h" + +struct _CcColorPanel +{ + CcPanel parent_instance; + + CdClient *client; + CdDevice *current_device; + GPtrArray *devices; + GPtrArray *sensors; + GDBusProxy *proxy; + GSettings *settings; + GSettings *settings_colord; + GtkWidget *assistant_calib; + GtkWidget *box_calib_brightness; + GtkWidget *box_calib_kind; + GtkWidget *box_calib_quality; + GtkWidget *box_calib_sensor; + GtkWidget *box_calib_summary; + GtkWidget *box_calib_temp; + GtkWidget *box_calib_title; + GtkWidget *box_devices; + GtkWidget *button_assign_cancel; + GtkWidget *button_assign_import; + GtkWidget *button_assign_ok; + GtkWidget *button_calib_export; + GtkWidget *button_calib_upload; + GtkWidget *dialog_assign; + GtkWidget *entry_calib_title; + GtkWidget *frame_devices; + GtkWidget *label_assign_warning; + GtkWidget *label_calib_summary_message; + GtkWidget *label_calib_upload_location; + GtkWidget *label_no_devices; + GtkTreeModel *liststore_assign; + GtkTreeModel *liststore_calib_kind; + GtkTreeModel *liststore_calib_sensor; + GtkWidget *main_window; + GtkWidget *toolbar_devices; + GtkWidget *toolbutton_device_calibrate; + GtkWidget *toolbutton_device_default; + GtkWidget *toolbutton_device_enable; + GtkWidget *toolbutton_profile_add; + GtkWidget *toolbutton_profile_remove; + GtkWidget *toolbutton_profile_view; + GtkWidget *treeview_assign; + GtkWidget *treeview_calib_kind; + GtkWidget *treeview_calib_quality; + GtkWidget *treeview_calib_sensor; + GtkWidget *treeview_calib_temp; + CcColorCalibrate *calibrate; + GtkListBox *list_box; + gchar *list_box_filter; + GtkSizeGroup *list_box_size; + gboolean is_live_cd; + gboolean model_is_changing; +}; + +CC_PANEL_REGISTER (CcColorPanel, cc_color_panel) + +enum { + GCM_PREFS_COMBO_COLUMN_TEXT, + GCM_PREFS_COMBO_COLUMN_PROFILE, + GCM_PREFS_COMBO_COLUMN_TYPE, + GCM_PREFS_COMBO_COLUMN_WARNING_FILENAME, + GCM_PREFS_COMBO_COLUMN_NUM_COLUMNS +}; + +/* for the GtkListStores */ +enum { + COLUMN_CALIB_KIND_DESCRIPTION, + COLUMN_CALIB_KIND_CAP_VALUE, + COLUMN_CALIB_KIND_VISIBLE, + COLUMN_CALIB_KIND_LAST +}; +enum { + COLUMN_CALIB_QUALITY_DESCRIPTION, + COLUMN_CALIB_QUALITY_APPROX_TIME, + COLUMN_CALIB_QUALITY_VALUE, + COLUMN_CALIB_QUALITY_LAST +}; +enum { + COLUMN_CALIB_SENSOR_OBJECT, + COLUMN_CALIB_SENSOR_DESCRIPTION, + COLUMN_CALIB_SENSOR_LAST +}; +enum { + COLUMN_CALIB_TEMP_DESCRIPTION, + COLUMN_CALIB_TEMP_VALUE_K, + COLUMN_CALIB_TEMP_LAST +}; + +#define COLORD_SETTINGS_SCHEMA "org.freedesktop.ColorHelper" +#define GCM_SETTINGS_SCHEMA "org.gnome.settings-daemon.plugins.color" +#define GCM_SETTINGS_RECALIBRATE_PRINTER_THRESHOLD "recalibrate-printer-threshold" +#define GCM_SETTINGS_RECALIBRATE_DISPLAY_THRESHOLD "recalibrate-display-threshold" + +/* max number of devices and profiles to cause auto-expand at startup */ +#define GCM_PREFS_MAX_DEVICES_PROFILES_EXPANDED 5 + +static void gcm_prefs_refresh_toolbar_buttons (CcColorPanel *panel); + +static void +gcm_prefs_combobox_add_profile (CcColorPanel *prefs, + CdProfile *profile, + GtkTreeIter *iter) +{ + const gchar *id; + GtkTreeIter iter_tmp; + g_autoptr(GString) string = NULL; + gchar *escaped = NULL; + guint kind = 0; + const gchar *warning = NULL; +#if CD_CHECK_VERSION(0,1,25) + gchar **warnings; +#endif + + /* iter is optional */ + if (iter == NULL) + iter = &iter_tmp; + + /* use description */ + string = g_string_new (cd_profile_get_title (profile)); + + /* any source prefix? */ + id = cd_profile_get_metadata_item (profile, + CD_PROFILE_METADATA_DATA_SOURCE); + if (g_strcmp0 (id, CD_PROFILE_METADATA_DATA_SOURCE_EDID) == 0) + { + /* TRANSLATORS: this is a profile prefix to signify the + * profile has been auto-generated for this hardware */ + g_string_prepend (string, _("Default: ")); + kind = 1; + } +#if CD_CHECK_VERSION(0,1,14) + if (g_strcmp0 (id, CD_PROFILE_METADATA_DATA_SOURCE_STANDARD) == 0) + { + /* TRANSLATORS: this is a profile prefix to signify the + * profile his a standard space like AdobeRGB */ + g_string_prepend (string, _("Colorspace: ")); + kind = 2; + } + if (g_strcmp0 (id, CD_PROFILE_METADATA_DATA_SOURCE_TEST) == 0) + { + /* TRANSLATORS: this is a profile prefix to signify the + * profile is a test profile */ + g_string_prepend (string, _("Test profile: ")); + kind = 3; + } +#endif + + /* is the profile faulty */ +#if CD_CHECK_VERSION(0,1,25) + warnings = cd_profile_get_warnings (profile); + if (warnings != NULL && warnings[0] != NULL) + warning = "dialog-warning-symbolic"; +#endif + + escaped = g_markup_escape_text (string->str, -1); + gtk_list_store_append (GTK_LIST_STORE (prefs->liststore_assign), iter); + gtk_list_store_set (GTK_LIST_STORE (prefs->liststore_assign), iter, + GCM_PREFS_COMBO_COLUMN_TEXT, escaped, + GCM_PREFS_COMBO_COLUMN_PROFILE, profile, + GCM_PREFS_COMBO_COLUMN_TYPE, kind, + GCM_PREFS_COMBO_COLUMN_WARNING_FILENAME, warning, + -1); +} + +static void +gcm_prefs_default_cb (CcColorPanel *prefs) +{ + g_autoptr(CdProfile) profile = NULL; + gboolean ret; + g_autoptr(GError) error = NULL; + + /* TODO: check if the profile is already systemwide */ + profile = cd_device_get_default_profile (prefs->current_device); + if (profile == NULL) + return; + + /* install somewhere out of $HOME */ + ret = cd_profile_install_system_wide_sync (profile, + cc_panel_get_cancellable (CC_PANEL (prefs)), + &error); + if (!ret) + g_warning ("failed to set profile system-wide: %s", + error->message); +} + +static GFile * +gcm_prefs_file_chooser_get_icc_profile (CcColorPanel *prefs) +{ + GtkWindow *window; + GtkWidget *dialog; + GFile *file = NULL; + GtkFileFilter *filter; + + /* create new dialog */ + window = GTK_WINDOW (prefs->dialog_assign); + /* TRANSLATORS: an ICC profile is a file containing colorspace data */ + dialog = gtk_file_chooser_dialog_new (_("Select ICC Profile File"), window, + GTK_FILE_CHOOSER_ACTION_OPEN, + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_Import"), GTK_RESPONSE_ACCEPT, + NULL); + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER(dialog), g_get_home_dir ()); + gtk_file_chooser_set_create_folders (GTK_FILE_CHOOSER(dialog), FALSE); + gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER(dialog), FALSE); + + /* setup the filter */ + filter = gtk_file_filter_new (); + gtk_file_filter_add_mime_type (filter, "application/vnd.iccprofile"); + + /* TRANSLATORS: filter name on the file->open dialog */ + gtk_file_filter_set_name (filter, _("Supported ICC profiles")); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER(dialog), filter); + + /* setup the all files filter */ + filter = gtk_file_filter_new (); + gtk_file_filter_add_pattern (filter, "*"); + /* TRANSLATORS: filter name on the file->open dialog */ + gtk_file_filter_set_name (filter, _("All files")); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER(dialog), filter); + + /* did user choose file */ + if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) + file = gtk_file_chooser_get_file (GTK_FILE_CHOOSER(dialog)); + + /* we're done */ + gtk_widget_destroy (dialog); + + /* or NULL for missing */ + return file; +} + +static void +gcm_prefs_calib_cancel_cb (CcColorPanel *prefs) +{ + gtk_widget_hide (prefs->assistant_calib); +} + +static gboolean +gcm_prefs_calib_delayed_complete_cb (gpointer user_data) +{ + CcColorPanel *panel = CC_COLOR_PANEL (user_data); + GtkAssistant *assistant; + + assistant = GTK_ASSISTANT (panel->assistant_calib); + gtk_assistant_set_page_complete (assistant, panel->box_calib_brightness, TRUE); + return FALSE; +} + +static void +gcm_prefs_calib_prepare_cb (CcColorPanel *panel, + GtkWidget *page) +{ + /* give the user the indication they should actually manually set the + * desired brightness rather than clicking blindly by delaying the + * "Next" button deliberately for a second or so */ + if (page == panel->box_calib_brightness) + { + g_timeout_add_seconds (1, gcm_prefs_calib_delayed_complete_cb, panel); + return; + } + + /* disable the brightness page as we don't want to show a 'Finished' + * button if the user goes back at any point */ + gtk_assistant_set_page_complete (GTK_ASSISTANT (panel->assistant_calib), panel->box_calib_brightness, FALSE); +} + +static void +gcm_prefs_calib_apply_cb (CcColorPanel *prefs) +{ + gboolean ret; + g_autoptr(GError) error = NULL; + GtkWindow *window = NULL; + + /* setup the calibration object with items that can fail */ + gtk_widget_show (prefs->button_calib_upload); + ret = cc_color_calibrate_setup (prefs->calibrate, + &error); + if (!ret) + { + g_warning ("failed to setup calibrate: %s", error->message); + return; + } + + /* actually start the calibration */ + window = GTK_WINDOW (prefs->assistant_calib); + ret = cc_color_calibrate_start (prefs->calibrate, + window, + &error); + if (!ret) + { + g_warning ("failed to start calibrate: %s", error->message); + gtk_widget_hide (GTK_WIDGET (window)); + return; + } + + /* if we are a LiveCD then don't close the window as there is another + * summary pane with the export button */ + if (!prefs->is_live_cd) + gtk_widget_hide (GTK_WIDGET (window)); +} + +static gboolean +gcm_prefs_calib_delete_event_cb (CcColorPanel *prefs) +{ + /* do not destroy the window */ + gcm_prefs_calib_cancel_cb (prefs); + return TRUE; +} + +static void +gcm_prefs_calib_temp_treeview_clicked_cb (CcColorPanel *prefs, + GtkTreeSelection *selection) +{ + gboolean ret; + GtkTreeIter iter; + GtkTreeModel *model; + guint target_whitepoint; + GtkAssistant *assistant; + + /* check to see if anything is selected */ + ret = gtk_tree_selection_get_selected (selection, &model, &iter); + assistant = GTK_ASSISTANT (prefs->assistant_calib); + gtk_assistant_set_page_complete (assistant, prefs->box_calib_temp, ret); + if (!ret) + return; + + gtk_tree_model_get (model, &iter, + COLUMN_CALIB_TEMP_VALUE_K, &target_whitepoint, + -1); + cc_color_calibrate_set_temperature (prefs->calibrate, target_whitepoint); +} + +static void +gcm_prefs_calib_kind_treeview_clicked_cb (CcColorPanel *prefs, + GtkTreeSelection *selection) +{ + CdSensorCap device_kind; + gboolean ret; + GtkTreeIter iter; + GtkTreeModel *model; + GtkAssistant *assistant; + + /* check to see if anything is selected */ + ret = gtk_tree_selection_get_selected (selection, &model, &iter); + assistant = GTK_ASSISTANT (prefs->assistant_calib); + gtk_assistant_set_page_complete (assistant, prefs->box_calib_kind, ret); + if (!ret) + return; + + /* save the values if we have a selection */ + gtk_tree_model_get (model, &iter, + COLUMN_CALIB_KIND_CAP_VALUE, &device_kind, + -1); + cc_color_calibrate_set_kind (prefs->calibrate, device_kind); +} + +static void +gcm_prefs_calib_quality_treeview_clicked_cb (CcColorPanel *prefs, + GtkTreeSelection *selection) +{ + CdProfileQuality quality; + gboolean ret; + GtkAssistant *assistant; + GtkTreeIter iter; + GtkTreeModel *model; + + /* check to see if anything is selected */ + ret = gtk_tree_selection_get_selected (selection, &model, &iter); + assistant = GTK_ASSISTANT (prefs->assistant_calib); + gtk_assistant_set_page_complete (assistant, prefs->box_calib_quality, ret); + if (!ret) + return; + + /* save the values if we have a selection */ + gtk_tree_model_get (model, &iter, + COLUMN_CALIB_QUALITY_VALUE, &quality, + -1); + cc_color_calibrate_set_quality (prefs->calibrate, quality); +} + +static gboolean +gcm_prefs_calib_set_sensor_cap_supported_cb (GtkTreeModel *model, + GtkTreePath *path, + GtkTreeIter *iter, + gpointer data) +{ + CdSensorCap cap; + CdSensor *sensor = CD_SENSOR (data); + gboolean supported; + + gtk_tree_model_get (model, iter, + COLUMN_CALIB_KIND_CAP_VALUE, &cap, + -1); + supported = cd_sensor_has_cap (sensor, cap); + g_debug ("%s(%s) is %s", + cd_sensor_get_model (sensor), + cd_sensor_cap_to_string (cap), + supported ? "supported" : "not-supported"); + gtk_list_store_set (GTK_LIST_STORE (model), iter, + COLUMN_CALIB_KIND_VISIBLE, supported, + -1); + return FALSE; +} + +static guint8 +_cd_bitfield_popcount (guint64 bitfield) +{ + guint8 i; + guint8 tmp = 0; + for (i = 0; i < 64; i++) + tmp += cd_bitfield_contain (bitfield, i); + return tmp; +} + +static void +gcm_prefs_calib_set_sensor (CcColorPanel *prefs, + CdSensor *sensor) +{ + guint64 caps; + guint8 i; + + /* use this sensor for calibration */ + cc_color_calibrate_set_sensor (prefs->calibrate, sensor); + + /* hide display types the sensor does not support */ + gtk_tree_model_foreach (prefs->liststore_calib_kind, + gcm_prefs_calib_set_sensor_cap_supported_cb, + sensor); + + /* if the sensor only supports one kind then do not show the panel at all */ + caps = cd_sensor_get_caps (sensor); + if (_cd_bitfield_popcount (caps) == 1) + { + gtk_widget_set_visible (prefs->box_calib_kind, FALSE); + for (i = 0; i < CD_SENSOR_CAP_LAST; i++) + { + if (cd_bitfield_contain (caps, i)) + cc_color_calibrate_set_kind (prefs->calibrate, i); + } + } + else + { + cc_color_calibrate_set_kind (prefs->calibrate, CD_SENSOR_CAP_UNKNOWN); + gtk_widget_set_visible (prefs->box_calib_kind, TRUE); + } +} + +static void +gcm_prefs_calib_sensor_treeview_clicked_cb (CcColorPanel *prefs, + GtkTreeSelection *selection) +{ + gboolean ret; + GtkTreeIter iter; + GtkTreeModel *model; + g_autoptr(CdSensor) sensor = NULL; + GtkAssistant *assistant; + + /* check to see if anything is selected */ + ret = gtk_tree_selection_get_selected (selection, &model, &iter); + assistant = GTK_ASSISTANT (prefs->assistant_calib); + gtk_assistant_set_page_complete (assistant, prefs->box_calib_sensor, ret); + if (!ret) + return; + + /* save the values if we have a selection */ + gtk_tree_model_get (model, &iter, + COLUMN_CALIB_SENSOR_OBJECT, &sensor, + -1); + gcm_prefs_calib_set_sensor (prefs, sensor); +} + +static void +gcm_prefs_calibrate_display (CcColorPanel *prefs) +{ + CdSensor *sensor_tmp; + const gchar *tmp; + GtkTreeIter iter; + guint i; + + /* set target device */ + cc_color_calibrate_set_device (prefs->calibrate, prefs->current_device); + + /* add sensors to list */ + gtk_list_store_clear (GTK_LIST_STORE (prefs->liststore_calib_sensor)); + if (prefs->sensors->len > 1) + { + for (i = 0; i < prefs->sensors->len; i++) + { + sensor_tmp = g_ptr_array_index (prefs->sensors, i); + gtk_list_store_append (GTK_LIST_STORE (prefs->liststore_calib_sensor), &iter); + gtk_list_store_set (GTK_LIST_STORE (prefs->liststore_calib_sensor), &iter, + COLUMN_CALIB_SENSOR_OBJECT, sensor_tmp, + COLUMN_CALIB_SENSOR_DESCRIPTION, cd_sensor_get_model (sensor_tmp), + -1); + } + gtk_widget_set_visible (prefs->box_calib_sensor, TRUE); + } + else + { + sensor_tmp = g_ptr_array_index (prefs->sensors, 0); + gcm_prefs_calib_set_sensor (prefs, sensor_tmp); + gtk_widget_set_visible (prefs->box_calib_sensor, FALSE); + } + + /* set default profile title */ + tmp = cd_device_get_model (prefs->current_device); + if (tmp == NULL) + tmp = cd_device_get_vendor (prefs->current_device); + if (tmp == NULL) + tmp = _("Screen"); + gtk_entry_set_text (GTK_ENTRY (prefs->entry_calib_title), tmp); + cc_color_calibrate_set_title (prefs->calibrate, tmp); + + /* set the display whitepoint to D65 by default */ + //FIXME? + + /* show ui */ + gtk_window_set_transient_for (GTK_WINDOW (prefs->assistant_calib), + GTK_WINDOW (prefs->main_window)); + gtk_widget_show (prefs->assistant_calib); +} + +static void +gcm_prefs_title_entry_changed_cb (CcColorPanel *prefs) +{ + GtkAssistant *assistant; + const gchar *value; + + assistant = GTK_ASSISTANT (prefs->assistant_calib); + value = gtk_entry_get_text (GTK_ENTRY (prefs->entry_calib_title)); + cc_color_calibrate_set_title (prefs->calibrate, value); + gtk_assistant_set_page_complete (assistant, prefs->box_calib_title, value[0] != '\0'); +} + +static void +gcm_prefs_calibrate_cb (CcColorPanel *prefs) +{ + gboolean ret; + g_autoptr(GError) error = NULL; + guint xid; + g_autoptr(GPtrArray) argv = NULL; + + /* use the new-style calibration helper */ + if (cd_device_get_kind (prefs->current_device) == CD_DEVICE_KIND_DISPLAY) + { + gcm_prefs_calibrate_display (prefs); + return; + } + + /* get xid */ + xid = gdk_x11_window_get_xid (gtk_widget_get_window (GTK_WIDGET (prefs->main_window))); + + /* run with modal set */ + argv = g_ptr_array_new_with_free_func (g_free); + g_ptr_array_add (argv, g_build_filename (BINDIR, "gcm-calibrate", NULL)); + g_ptr_array_add (argv, g_strdup ("--device")); + g_ptr_array_add (argv, g_strdup (cd_device_get_id (prefs->current_device))); + g_ptr_array_add (argv, g_strdup ("--parent-window")); + g_ptr_array_add (argv, g_strdup_printf ("%i", xid)); + g_ptr_array_add (argv, NULL); + ret = g_spawn_async (NULL, (gchar**) argv->pdata, NULL, 0, + NULL, NULL, NULL, &error); + if (!ret) + g_warning ("failed to run calibrate: %s", error->message); +} + +static gboolean +gcm_prefs_is_profile_suitable_for_device (CdProfile *profile, + CdDevice *device) +{ + const gchar *data_source; + CdProfileKind profile_kind_tmp; + CdProfileKind profile_kind; + CdColorspace profile_colorspace; + CdColorspace device_colorspace = 0; + gboolean ret = FALSE; + CdDeviceKind device_kind; + CdStandardSpace standard_space; + + /* not the right colorspace */ + device_colorspace = cd_device_get_colorspace (device); + profile_colorspace = cd_profile_get_colorspace (profile); + if (device_colorspace != profile_colorspace) + goto out; + + /* if this is a display matching with one of the standard spaces that displays + * could emulate, also mark it as suitable */ + if (cd_device_get_kind (device) == CD_DEVICE_KIND_DISPLAY && + cd_profile_get_kind (profile) == CD_PROFILE_KIND_DISPLAY_DEVICE) + { + data_source = cd_profile_get_metadata_item (profile, + CD_PROFILE_METADATA_STANDARD_SPACE); + standard_space = cd_standard_space_from_string (data_source); + if (standard_space == CD_STANDARD_SPACE_SRGB || + standard_space == CD_STANDARD_SPACE_ADOBE_RGB) + { + ret = TRUE; + goto out; + } + } + + /* not the correct kind */ + device_kind = cd_device_get_kind (device); + profile_kind_tmp = cd_profile_get_kind (profile); + profile_kind = cd_device_kind_to_profile_kind (device_kind); + if (profile_kind_tmp != profile_kind) + goto out; + + /* ignore the colorspace profiles */ + data_source = cd_profile_get_metadata_item (profile, + CD_PROFILE_METADATA_DATA_SOURCE); + if (g_strcmp0 (data_source, CD_PROFILE_METADATA_DATA_SOURCE_STANDARD) == 0) + goto out; + + /* success */ + ret = TRUE; +out: + return ret; +} + +static gint +gcm_prefs_combo_sort_func_cb (GtkTreeModel *model, + GtkTreeIter *a, + GtkTreeIter *b, + gpointer user_data) +{ + gint type_a, type_b; + g_autofree gchar *text_a = NULL; + g_autofree gchar *text_b = NULL; + + /* get data from model */ + gtk_tree_model_get (model, a, + GCM_PREFS_COMBO_COLUMN_TYPE, &type_a, + GCM_PREFS_COMBO_COLUMN_TEXT, &text_a, + -1); + gtk_tree_model_get (model, b, + GCM_PREFS_COMBO_COLUMN_TYPE, &type_b, + GCM_PREFS_COMBO_COLUMN_TEXT, &text_b, + -1); + + /* prefer normal type profiles over the 'Other Profile...' entry */ + if (type_a < type_b) + return -1; + else if (type_a > type_b) + return 1; + else + return g_strcmp0 (text_a, text_b); +} + +static gboolean +gcm_prefs_profile_exists_in_array (GPtrArray *array, CdProfile *profile) +{ + CdProfile *profile_tmp; + guint i; + + for (i = 0; i < array->len; i++) + { + profile_tmp = g_ptr_array_index (array, i); + if (cd_profile_equal (profile, profile_tmp)) + return TRUE; + } + return FALSE; +} + +static void +gcm_prefs_add_profiles_suitable_for_devices (CcColorPanel *prefs, + GPtrArray *profiles) +{ + CdProfile *profile_tmp; + gboolean ret; + g_autoptr(GError) error = NULL; + g_autoptr(GPtrArray) profile_array = NULL; + GtkTreeIter iter; + guint i; + + gtk_list_store_clear (GTK_LIST_STORE (prefs->liststore_assign)); + gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (prefs->liststore_assign), + GCM_PREFS_COMBO_COLUMN_TEXT, + GTK_SORT_ASCENDING); + gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (prefs->liststore_assign), + GCM_PREFS_COMBO_COLUMN_TEXT, + gcm_prefs_combo_sort_func_cb, + prefs->liststore_assign, NULL); + + gtk_widget_hide (prefs->label_assign_warning); + + /* get profiles */ + profile_array = cd_client_get_profiles_sync (prefs->client, + cc_panel_get_cancellable (CC_PANEL (prefs)), + &error); + if (profile_array == NULL) + { + g_warning ("failed to get profiles: %s", + error->message); + return; + } + + /* add profiles of the right kind */ + for (i = 0; i < profile_array->len; i++) + { + profile_tmp = g_ptr_array_index (profile_array, i); + + /* get properties */ + ret = cd_profile_connect_sync (profile_tmp, + cc_panel_get_cancellable (CC_PANEL (prefs)), + &error); + if (!ret) + { + g_warning ("failed to get profile: %s", error->message); + return; + } + + /* don't add any of the already added profiles */ + if (profiles != NULL) + { + if (gcm_prefs_profile_exists_in_array (profiles, profile_tmp)) + continue; + } + + /* only add correct types */ + ret = gcm_prefs_is_profile_suitable_for_device (profile_tmp, + prefs->current_device); + if (!ret) + continue; + +#if CD_CHECK_VERSION(0,1,13) + /* ignore profiles from other user accounts */ + if (!cd_profile_has_access (profile_tmp)) + continue; +#endif + + /* add */ + gcm_prefs_combobox_add_profile (prefs, + profile_tmp, + &iter); + } +} + +static void +gcm_prefs_calib_upload_cb (CcColorPanel *prefs) +{ + CdProfile *profile; + const gchar *uri; + gboolean ret; + g_autofree gchar *upload_uri = NULL; + g_autofree gchar *msg_result = NULL; + g_autofree gchar *data = NULL; + g_autoptr(GError) error = NULL; + gsize length; + guint status_code; + g_autoptr(SoupBuffer) buffer = NULL; + g_autoptr(SoupMessage) msg = NULL; + g_autoptr(SoupMultipart) multipart = NULL; + g_autoptr(SoupSession) session = NULL; + + profile = cc_color_calibrate_get_profile (prefs->calibrate); + ret = cd_profile_connect_sync (profile, NULL, &error); + if (!ret) + { + g_warning ("Failed to get imported profile: %s", error->message); + return; + } + + /* read file */ + ret = g_file_get_contents (cd_profile_get_filename (profile), + &data, + &length, + &error); + if (!ret) + { + g_warning ("Failed to read file: %s", error->message); + return; + } + + /* setup the session */ + session = soup_session_new_with_options (SOUP_SESSION_USER_AGENT, "gnome-control-center", + SOUP_SESSION_TIMEOUT, 5000, + NULL); + if (session == NULL) + { + g_warning ("Failed to setup networking"); + return; + } + soup_session_add_feature_by_type (session, SOUP_TYPE_PROXY_RESOLVER_DEFAULT); + + /* create multipart form and upload file */ + multipart = soup_multipart_new (SOUP_FORM_MIME_TYPE_MULTIPART); + buffer = soup_buffer_new (SOUP_MEMORY_STATIC, data, length); + soup_multipart_append_form_file (multipart, + "upload", + cd_profile_get_filename (profile), + NULL, + buffer); + upload_uri = g_settings_get_string (prefs->settings_colord, "profile-upload-uri"); + msg = soup_form_request_new_from_multipart (upload_uri, multipart); + status_code = soup_session_send_message (session, msg); + if (status_code != 201) + { + /* TRANSLATORS: this is when the upload of the profile failed */ + msg_result = g_strdup_printf (_("Failed to upload file: %s"), msg->reason_phrase), + gtk_label_set_label (GTK_LABEL (prefs->label_calib_upload_location), msg_result); + gtk_widget_show (prefs->label_calib_upload_location); + return; + } + + /* show instructions to the user */ + uri = soup_message_headers_get_one (msg->response_headers, "Location"); + msg_result = g_strdup_printf ("%s %s\n\n• %s\n• %s\n• %s", + /* TRANSLATORS: these are instructions on how to recover + * the ICC profile on the native operating system and are + * only shown when the user uses a LiveCD to calibrate */ + _("The profile has been uploaded to:"), + uri, + _("Write down this URL."), + _("Restart this computer and boot your normal operating system."), + _("Type the URL into your browser to download and install the profile.")), + gtk_label_set_label (GTK_LABEL (prefs->label_calib_upload_location), msg_result); + gtk_widget_show (prefs->label_calib_upload_location); + + /* hide the upload button as duplicate uploads will fail */ + gtk_widget_hide (prefs->button_calib_upload); +} + +static void +gcm_prefs_calib_export_cb (CcColorPanel *prefs) +{ + CdProfile *profile; + gboolean ret; + g_autofree gchar *default_name = NULL; + g_autoptr(GError) error = NULL; + g_autoptr(GFile) destination = NULL; + g_autoptr(GFile) source = NULL; + GtkWidget *dialog; + + profile = cc_color_calibrate_get_profile (prefs->calibrate); + ret = cd_profile_connect_sync (profile, NULL, &error); + if (!ret) + { + g_warning ("Failed to get imported profile: %s", error->message); + return; + } + + /* TRANSLATORS: this is the dialog to save the ICC profile */ + dialog = gtk_file_chooser_dialog_new (_("Save Profile"), + GTK_WINDOW (prefs->main_window), + GTK_FILE_CHOOSER_ACTION_SAVE, + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_Save"), GTK_RESPONSE_ACCEPT, + NULL); + gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE); + + default_name = g_strdup_printf ("%s.icc", cd_profile_get_title (profile)); + gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), default_name); + + if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) + { + source = g_file_new_for_path (cd_profile_get_filename (profile)); + destination = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (dialog)); + ret = g_file_copy (source, + destination, + G_FILE_COPY_OVERWRITE, + NULL, + NULL, + NULL, + &error); + if (!ret) + g_warning ("Failed to copy profile: %s", error->message); + } + + gtk_widget_destroy (dialog); +} + +static void +gcm_prefs_calib_export_link_cb (CcColorPanel *prefs, + const gchar *url) +{ + gtk_show_uri_on_window (GTK_WINDOW (prefs->main_window), + "help:gnome-help/color-howtoimport", + GDK_CURRENT_TIME, + NULL); +} + +static void +gcm_prefs_profile_add_cb (CcColorPanel *prefs) +{ + g_autoptr(GPtrArray) profiles = NULL; + + /* add profiles of the right kind */ + profiles = cd_device_get_profiles (prefs->current_device); + gcm_prefs_add_profiles_suitable_for_devices (prefs, profiles); + + /* make insensitive until we have a selection */ + gtk_widget_set_sensitive (prefs->button_assign_ok, FALSE); + + /* show the dialog */ + gtk_widget_show (prefs->dialog_assign); + gtk_window_set_transient_for (GTK_WINDOW (prefs->dialog_assign), GTK_WINDOW (prefs->main_window)); +} + +static void +gcm_prefs_profile_remove_cb (CcColorPanel *prefs) +{ + CdProfile *profile; + gboolean ret = FALSE; + g_autoptr(GError) error = NULL; + GtkListBoxRow *row; + + /* get the selected profile */ + row = gtk_list_box_get_selected_row (prefs->list_box); + if (row == NULL) + return; + profile = cc_color_profile_get_profile (CC_COLOR_PROFILE (row)); + if (profile == NULL) + { + g_warning ("failed to get the active profile"); + return; + } + + /* just remove it, the list store will get ::changed */ + ret = cd_device_remove_profile_sync (prefs->current_device, + profile, + cc_panel_get_cancellable (CC_PANEL (prefs)), + &error); + if (!ret) + g_warning ("failed to remove profile: %s", error->message); +} + +static void +gcm_prefs_make_profile_default_cb (GObject *object, + GAsyncResult *res, + CcColorPanel *prefs) +{ + CdDevice *device = CD_DEVICE (object); + gboolean ret = FALSE; + g_autoptr(GError) error = NULL; + + ret = cd_device_make_profile_default_finish (device, + res, + &error); + if (!ret) + { + g_warning ("failed to set default profile on %s: %s", + cd_device_get_id (device), + error->message); + } + else + { + gcm_prefs_refresh_toolbar_buttons (prefs); + } +} + +static void +gcm_prefs_device_profile_enable_cb (CcColorPanel *prefs) +{ + CdProfile *profile; + GtkListBoxRow *row; + + /* get the selected profile */ + row = gtk_list_box_get_selected_row (prefs->list_box); + if (row == NULL) + return; + profile = cc_color_profile_get_profile (CC_COLOR_PROFILE (row)); + if (profile == NULL) + { + g_warning ("failed to get the active profile"); + return; + } + + /* just set it default */ + g_debug ("setting %s default on %s", + cd_profile_get_id (profile), + cd_device_get_id (prefs->current_device)); + cd_device_make_profile_default (prefs->current_device, + profile, + cc_panel_get_cancellable (CC_PANEL (prefs)), + (GAsyncReadyCallback) gcm_prefs_make_profile_default_cb, + prefs); +} + +static void +gcm_prefs_profile_view (CcColorPanel *prefs, CdProfile *profile) +{ + g_autoptr(GPtrArray) argv = NULL; + guint xid; + gboolean ret; + g_autoptr(GError) error = NULL; + + /* get xid */ + xid = gdk_x11_window_get_xid (gtk_widget_get_window (GTK_WIDGET (prefs->main_window))); + + /* open up gcm-viewer as a info pane */ + argv = g_ptr_array_new_with_free_func (g_free); + g_ptr_array_add (argv, g_build_filename (BINDIR, "gcm-viewer", NULL)); + g_ptr_array_add (argv, g_strdup ("--profile")); + g_ptr_array_add (argv, g_strdup (cd_profile_get_id (profile))); + g_ptr_array_add (argv, g_strdup ("--parent-window")); + g_ptr_array_add (argv, g_strdup_printf ("%i", xid)); + g_ptr_array_add (argv, NULL); + ret = g_spawn_async (NULL, (gchar**) argv->pdata, NULL, 0, + NULL, NULL, NULL, &error); + if (!ret) + g_warning ("failed to run calibrate: %s", error->message); +} + +static void +gcm_prefs_profile_assign_link_activate_cb (CcColorPanel *prefs, + const gchar *uri) +{ + CdProfile *profile; + GtkListBoxRow *row; + + /* get the selected profile */ + row = gtk_list_box_get_selected_row (prefs->list_box); + if (row == NULL) + return; + profile = cc_color_profile_get_profile (CC_COLOR_PROFILE (row)); + if (profile == NULL) + { + g_warning ("failed to get the active profile"); + return; + } + + /* show it in the viewer */ + gcm_prefs_profile_view (prefs, profile); +} + +static void +gcm_prefs_profile_view_cb (CcColorPanel *prefs) +{ + CdProfile *profile; + GtkListBoxRow *row; + + /* get the selected profile */ + row = gtk_list_box_get_selected_row (prefs->list_box); + if (row == NULL) + return; + profile = cc_color_profile_get_profile (CC_COLOR_PROFILE (row)); + if (profile == NULL) + { + g_warning ("failed to get the active profile"); + return; + } + + /* open up gcm-viewer as a info pane */ + gcm_prefs_profile_view (prefs, profile); +} + +static void +gcm_prefs_button_assign_cancel_cb (CcColorPanel *prefs) +{ + gtk_widget_hide (prefs->dialog_assign); +} + +static void +gcm_prefs_button_assign_ok_cb (CcColorPanel *prefs) +{ + GtkTreeIter iter; + GtkTreeModel *model; + g_autoptr(CdProfile) profile = NULL; + gboolean ret = FALSE; + g_autoptr(GError) error = NULL; + GtkTreeSelection *selection; + + /* hide window */ + gtk_widget_hide (GTK_WIDGET (prefs->dialog_assign)); + + /* get the selected profile */ + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (prefs->treeview_assign)); + if (!gtk_tree_selection_get_selected (selection, &model, &iter)) + return; + gtk_tree_model_get (model, &iter, + GCM_PREFS_COMBO_COLUMN_PROFILE, &profile, + -1); + if (profile == NULL) + { + g_warning ("failed to get the active profile"); + return; + } + + /* if the device is disabled, enable the device so that we can + * add color profiles to it */ + if (!cd_device_get_enabled (prefs->current_device)) + { + ret = cd_device_set_enabled_sync (prefs->current_device, + TRUE, + cc_panel_get_cancellable (CC_PANEL (prefs)), + &error); + if (!ret) + { + g_warning ("failed to enabled device: %s", error->message); + return; + } + } + + /* just add it, the list store will get ::changed */ + ret = cd_device_add_profile_sync (prefs->current_device, + CD_DEVICE_RELATION_HARD, + profile, + cc_panel_get_cancellable (CC_PANEL (prefs)), + &error); + if (!ret) + { + g_warning ("failed to add: %s", error->message); + return; + } + + /* make it default */ + cd_device_make_profile_default (prefs->current_device, + profile, + cc_panel_get_cancellable (CC_PANEL (prefs)), + (GAsyncReadyCallback) gcm_prefs_make_profile_default_cb, + prefs); +} + +static gboolean +gcm_prefs_profile_delete_event_cb (CcColorPanel *prefs) +{ + gcm_prefs_button_assign_cancel_cb (prefs); + return TRUE; +} + +static void +gcm_prefs_add_profiles_columns (CcColorPanel *prefs, + GtkTreeView *treeview) +{ + GtkCellRenderer *renderer; + GtkTreeViewColumn *column; + + /* text */ + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new (); + gtk_tree_view_column_pack_start (column, renderer, TRUE); + gtk_tree_view_column_add_attribute (column, renderer, + "markup", GCM_PREFS_COMBO_COLUMN_TEXT); + gtk_tree_view_column_set_expand (column, TRUE); + gtk_tree_view_append_column (treeview, column); + + /* image */ + column = gtk_tree_view_column_new (); + renderer = gtk_cell_renderer_pixbuf_new (); + g_object_set (renderer, "stock-size", GTK_ICON_SIZE_MENU, NULL); + gtk_tree_view_column_pack_start (column, renderer, FALSE); + gtk_tree_view_column_add_attribute (column, renderer, + "icon-name", GCM_PREFS_COMBO_COLUMN_WARNING_FILENAME); + gtk_tree_view_append_column (treeview, column); +} + +static void +gcm_prefs_set_calibrate_button_sensitivity (CcColorPanel *prefs) +{ + gboolean ret = FALSE; + const gchar *tooltip; + CdDeviceKind kind; + CdSensor *sensor_tmp; + + /* TRANSLATORS: this is when the button is sensitive */ + tooltip = _("Create a color profile for the selected device"); + + /* no device selected */ + if (prefs->current_device == NULL) + goto out; + + /* are we a display */ + kind = cd_device_get_kind (prefs->current_device); + if (kind == CD_DEVICE_KIND_DISPLAY) + { + + /* find whether we have hardware installed */ + if (prefs->sensors == NULL || prefs->sensors->len == 0) + { + /* TRANSLATORS: this is when the button is insensitive */ + tooltip = _("The measuring instrument is not detected. Please check it is turned on and correctly connected."); + goto out; + } + + /* success */ + ret = TRUE; + + } + else if (kind == CD_DEVICE_KIND_SCANNER || + kind == CD_DEVICE_KIND_CAMERA || + kind == CD_DEVICE_KIND_WEBCAM) + { + + /* TODO: find out if we can scan using gnome-scan */ + ret = TRUE; + + } + else if (kind == CD_DEVICE_KIND_PRINTER) + { + + /* find whether we have hardware installed */ + if (prefs->sensors == NULL || prefs->sensors->len == 0) + { + /* TRANSLATORS: this is when the button is insensitive */ + tooltip = _("The measuring instrument is not detected. Please check it is turned on and correctly connected."); + goto out; + } + + /* find whether we have hardware installed */ + sensor_tmp = g_ptr_array_index (prefs->sensors, 0); + ret = cd_sensor_has_cap (sensor_tmp, CD_SENSOR_CAP_PRINTER); + if (!ret) + { + /* TRANSLATORS: this is when the button is insensitive */ + tooltip = _("The measuring instrument does not support printer profiling."); + goto out; + } + + /* success */ + ret = TRUE; + + } + else + { + /* TRANSLATORS: this is when the button is insensitive */ + tooltip = _("The device type is not currently supported."); + } +out: + /* control the tooltip and sensitivity of the button */ + gtk_widget_set_tooltip_text (prefs->toolbutton_device_calibrate, tooltip); + gtk_widget_set_sensitive (prefs->toolbutton_device_calibrate, ret); +} + +static void +gcm_prefs_device_clicked (CcColorPanel *prefs, CdDevice *device) +{ + /* we have a new device */ + g_debug ("selected device is: %s", + cd_device_get_id (device)); + + /* can this device calibrate */ + gcm_prefs_set_calibrate_button_sensitivity (prefs); +} + +static void +gcm_prefs_profile_clicked (CcColorPanel *prefs, CdProfile *profile, CdDevice *device) +{ + g_autofree gchar *s = NULL; + + /* get profile */ + g_debug ("selected profile = %s", + cd_profile_get_filename (profile)); + + /* allow getting profile info */ + if (cd_profile_get_filename (profile) != NULL && + (s = g_find_program_in_path ("gcm-viewer")) != NULL) + gtk_widget_set_sensitive (prefs->toolbutton_profile_view, TRUE); + else + gtk_widget_set_sensitive (prefs->toolbutton_profile_view, FALSE); +} + +static void +gcm_prefs_profiles_treeview_clicked_cb (CcColorPanel *prefs, + GtkTreeSelection *selection) +{ + GtkTreeModel *model; + GtkTreeIter iter; + g_autoptr(CdProfile) profile = NULL; +#if CD_CHECK_VERSION(0,1,25) + gchar **warnings; +#endif + + /* get selection */ + if (!gtk_tree_selection_get_selected (selection, &model, &iter)) + return; + gtk_tree_model_get (model, &iter, + GCM_PREFS_COMBO_COLUMN_PROFILE, &profile, + -1); + + /* as soon as anything is selected, make the Add button sensitive */ + gtk_widget_set_sensitive (prefs->button_assign_ok, TRUE); + + /* is the profile faulty */ +#if CD_CHECK_VERSION(0,1,25) + warnings = cd_profile_get_warnings (profile); + gtk_widget_set_visible (prefs->label_assign_warning, warnings != NULL && warnings[0] != NULL); +#else + gtk_widget_set_visible (prefs->label_assign_warning, FALSE); +#endif +} + +static void +gcm_prefs_profiles_row_activated_cb (CcColorPanel *prefs, + GtkTreePath *path) +{ + GtkTreeIter iter; + gboolean ret; + + ret = gtk_tree_model_get_iter (gtk_tree_view_get_model (GTK_TREE_VIEW (prefs->treeview_assign)), &iter, path); + if (!ret) + return; + gcm_prefs_button_assign_ok_cb (prefs); +} + + +static void +gcm_prefs_button_assign_import_cb (CcColorPanel *prefs) +{ + g_autoptr(GFile) file = NULL; + g_autoptr(GError) error = NULL; + g_autoptr(CdProfile) profile = NULL; + + file = gcm_prefs_file_chooser_get_icc_profile (prefs); + if (file == NULL) + { + g_warning ("failed to get ICC file"); + gtk_widget_hide (GTK_WIDGET (prefs->dialog_assign)); + return; + } + +#if CD_CHECK_VERSION(0,1,12) + profile = cd_client_import_profile_sync (prefs->client, + file, + cc_panel_get_cancellable (CC_PANEL (prefs)), + &error); + if (profile == NULL) + { + g_warning ("failed to get imported profile: %s", error->message); + return; + } +#endif + + /* add to list view */ + gcm_prefs_profile_add_cb (prefs); +} + +static void +gcm_prefs_sensor_coldplug (CcColorPanel *prefs) +{ + CdSensor *sensor_tmp; + gboolean ret; + g_autoptr(GError) error = NULL; + g_autoptr(GPtrArray) sensors = NULL; + guint i; + + /* unref old */ + g_clear_pointer (&prefs->sensors, g_ptr_array_unref); + + /* no present */ + sensors = cd_client_get_sensors_sync (prefs->client, NULL, &error); + if (sensors == NULL) + { + g_warning ("%s", error->message); + return; + } + if (sensors->len == 0) + return; + + /* save a copy of the sensor list */ + prefs->sensors = g_ptr_array_ref (sensors); + + /* connect to each sensor */ + for (i = 0; i < sensors->len; i++) + { + sensor_tmp = g_ptr_array_index (sensors, i); + ret = cd_sensor_connect_sync (sensor_tmp, NULL, &error); + if (!ret) + { + g_warning ("%s", error->message); + return; + } + } +} + +static void +gcm_prefs_client_sensor_changed_cb (CdClient *client, + CdSensor *sensor, + CcColorPanel *prefs) +{ + gcm_prefs_sensor_coldplug (prefs); + gcm_prefs_set_calibrate_button_sensitivity (prefs); +} + +static void +gcm_prefs_add_device_profile (CcColorPanel *prefs, + CdDevice *device, + CdProfile *profile, + gboolean is_default) +{ + gboolean ret; + g_autoptr(GError) error = NULL; + GtkWidget *widget; + + /* get properties */ + ret = cd_profile_connect_sync (profile, + cc_panel_get_cancellable (CC_PANEL (prefs)), + &error); + if (!ret) + { + g_warning ("failed to get profile: %s", error->message); + return; + } + + /* ignore profiles from other user accounts */ + if (!cd_profile_has_access (profile)) + { + /* only print the filename if it exists */ + if (cd_profile_get_filename (profile) != NULL) + { + g_warning ("%s is not usable by this user", + cd_profile_get_filename (profile)); + } + else + { + g_warning ("%s is not usable by this user", + cd_profile_get_id (profile)); + } + return; + } + + /* add to listbox */ + widget = cc_color_profile_new (device, profile, is_default); + gtk_widget_show (widget); + gtk_container_add (GTK_CONTAINER (prefs->list_box), widget); + gtk_size_group_add_widget (prefs->list_box_size, widget); +} + +static void +gcm_prefs_add_device_profiles (CcColorPanel *prefs, CdDevice *device) +{ + CdProfile *profile_tmp; + g_autoptr(GPtrArray) profiles = NULL; + guint i; + + /* add profiles */ + profiles = cd_device_get_profiles (device); + if (profiles == NULL) + return; + for (i = 0; i < profiles->len; i++) + { + profile_tmp = g_ptr_array_index (profiles, i); + gcm_prefs_add_device_profile (prefs, device, profile_tmp, i == 0); + } +} + +/* find the profile in the array -- for flicker-free changes */ +static gboolean +gcm_prefs_find_profile_by_object_path (GPtrArray *profiles, + const gchar *object_path) +{ + CdProfile *profile_tmp; + guint i; + + for (i = 0; i < profiles->len; i++) + { + profile_tmp = g_ptr_array_index (profiles, i); + if (g_strcmp0 (cd_profile_get_object_path (profile_tmp), object_path) == 0) + return TRUE; + } + return FALSE; +} + +/* find the profile in the list view -- for flicker-free changes */ +static gboolean +gcm_prefs_find_widget_by_object_path (GList *list, + const gchar *object_path_device, + const gchar *object_path_profile) +{ + GList *l; + CdDevice *device_tmp; + CdProfile *profile_tmp; + + for (l = list; l != NULL; l = l->next) + { + if (!CC_IS_COLOR_PROFILE (l->data)) + continue; + + /* correct device ? */ + device_tmp = cc_color_profile_get_device (CC_COLOR_PROFILE (l->data)); + if (g_strcmp0 (object_path_device, + cd_device_get_object_path (device_tmp)) != 0) + { + continue; + } + + /* this profile */ + profile_tmp = cc_color_profile_get_profile (CC_COLOR_PROFILE (l->data)); + if (g_strcmp0 (object_path_profile, + cd_profile_get_object_path (profile_tmp)) == 0) + { + return TRUE; + } + } + return FALSE; +} + +static void +gcm_prefs_device_changed_cb (CcColorPanel *prefs, CdDevice *device) +{ + CdDevice *device_tmp; + CdProfile *profile_tmp; + gboolean ret; + GList *l; + g_autoptr(GList) list = NULL; + GPtrArray *profiles; + guint i; + + /* remove anything in the list view that's not in Device.Profiles */ + profiles = cd_device_get_profiles (device); + list = gtk_container_get_children (GTK_CONTAINER (prefs->list_box)); + for (l = list; l != NULL; l = l->next) + { + if (!CC_IS_COLOR_PROFILE (l->data)) + continue; + + /* correct device ? */ + device_tmp = cc_color_profile_get_device (CC_COLOR_PROFILE (l->data)); + if (g_strcmp0 (cd_device_get_id (device), + cd_device_get_id (device_tmp)) != 0) + continue; + + /* if profile is not in Device.Profiles then remove */ + profile_tmp = cc_color_profile_get_profile (CC_COLOR_PROFILE (l->data)); + ret = gcm_prefs_find_profile_by_object_path (profiles, + cd_profile_get_object_path (profile_tmp)); + if (!ret) { + gtk_widget_destroy (GTK_WIDGET (l->data)); + /* Don't look at the destroyed widget below */ + l->data = NULL; + } + } + + /* add anything in Device.Profiles that's not in the list view */ + for (i = 0; i < profiles->len; i++) + { + profile_tmp = g_ptr_array_index (profiles, i); + ret = gcm_prefs_find_widget_by_object_path (list, + cd_device_get_object_path (device), + cd_profile_get_object_path (profile_tmp)); + if (!ret) + gcm_prefs_add_device_profile (prefs, device, profile_tmp, i == 0); + } + + /* resort */ + gtk_list_box_invalidate_sort (prefs->list_box); +} + +static void +gcm_prefs_device_expanded_changed_cb (CcColorPanel *prefs, + gboolean is_expanded, + CcColorDevice *widget) +{ + /* ignore internal changes */ + if (prefs->model_is_changing) + return; + + g_free (prefs->list_box_filter); + if (is_expanded) + { + g_autoptr(GList) list = NULL; + GList *l; + + prefs->list_box_filter = g_strdup (cd_device_get_id (cc_color_device_get_device (widget))); + + /* unexpand other device widgets */ + list = gtk_container_get_children (GTK_CONTAINER (prefs->list_box)); + prefs->model_is_changing = TRUE; + for (l = list; l != NULL; l = l->next) + { + if (!CC_IS_COLOR_DEVICE (l->data)) + continue; + if (l->data != widget) + cc_color_device_set_expanded (CC_COLOR_DEVICE (l->data), FALSE); + } + prefs->model_is_changing = FALSE; + } + else + { + prefs->list_box_filter = NULL; + } + gtk_list_box_invalidate_filter (prefs->list_box); +} + +static void +gcm_prefs_add_device (CcColorPanel *prefs, CdDevice *device) +{ + gboolean ret; + g_autoptr(GError) error = NULL; + GtkWidget *widget; + + /* get device properties */ + ret = cd_device_connect_sync (device, cc_panel_get_cancellable (CC_PANEL (prefs)), &error); + if (!ret) + { + g_warning ("failed to connect to the device: %s", error->message); + return; + } + + /* add device */ + widget = cc_color_device_new (device); + g_signal_connect_object (widget, "expanded-changed", + G_CALLBACK (gcm_prefs_device_expanded_changed_cb), prefs, G_CONNECT_SWAPPED); + gtk_widget_show (widget); + gtk_container_add (GTK_CONTAINER (prefs->list_box), widget); + gtk_size_group_add_widget (prefs->list_box_size, widget); + + /* add profiles */ + gcm_prefs_add_device_profiles (prefs, device); + + /* watch for changes */ + g_ptr_array_add (prefs->devices, g_object_ref (device)); + g_signal_connect_object (device, "changed", + G_CALLBACK (gcm_prefs_device_changed_cb), prefs, G_CONNECT_SWAPPED); + gtk_list_box_invalidate_sort (prefs->list_box); +} + +static void +gcm_prefs_remove_device (CcColorPanel *prefs, CdDevice *device) +{ + CdDevice *device_tmp; + GList *l; + g_autoptr(GList) list = NULL; + + list = gtk_container_get_children (GTK_CONTAINER (prefs->list_box)); + for (l = list; l != NULL; l = l->next) + { + if (CC_IS_COLOR_DEVICE (l->data)) + device_tmp = cc_color_device_get_device (CC_COLOR_DEVICE (l->data)); + else + device_tmp = cc_color_profile_get_device (CC_COLOR_PROFILE (l->data)); + if (g_strcmp0 (cd_device_get_object_path (device), + cd_device_get_object_path (device_tmp)) == 0) + { + gtk_widget_destroy (GTK_WIDGET (l->data)); + } + } + g_signal_handlers_disconnect_by_func (device, + G_CALLBACK (gcm_prefs_device_changed_cb), + prefs); + g_ptr_array_remove (prefs->devices, device); +} + +static void +gcm_prefs_update_device_list_extra_entry (CcColorPanel *prefs) +{ + g_autoptr(GList) device_widgets = NULL; + guint number_of_devices; + + /* any devices to show? */ + device_widgets = gtk_container_get_children (GTK_CONTAINER (prefs->list_box)); + number_of_devices = g_list_length (device_widgets); + gtk_widget_set_visible (prefs->label_no_devices, number_of_devices == 0); + gtk_widget_set_visible (prefs->box_devices, number_of_devices > 0); + + /* if we have only one device expand it by default */ + if (number_of_devices == 1) + cc_color_device_set_expanded (CC_COLOR_DEVICE (device_widgets->data), TRUE); +} + +static void +gcm_prefs_device_added_cb (CdClient *client, + CdDevice *device, + CcColorPanel *prefs) +{ + /* add the device */ + gcm_prefs_add_device (prefs, device); + + /* ensure we're not showing the 'No devices detected' entry */ + gcm_prefs_update_device_list_extra_entry (prefs); +} + +static void +gcm_prefs_device_removed_cb (CdClient *client, + CdDevice *device, + CcColorPanel *prefs) +{ + /* remove from the UI */ + gcm_prefs_remove_device (prefs, device); + + /* ensure we showing the 'No devices detected' entry if required */ + gcm_prefs_update_device_list_extra_entry (prefs); +} + +static void +gcm_prefs_get_devices_cb (GObject *object, + GAsyncResult *res, + gpointer user_data) +{ + CcColorPanel *prefs = (CcColorPanel *) user_data; + CdClient *client = CD_CLIENT (object); + CdDevice *device; + g_autoptr(GError) error = NULL; + g_autoptr(GPtrArray) devices = NULL; + guint i; + + /* get devices and add them */ + devices = cd_client_get_devices_finish (client, res, &error); + if (devices == NULL) + { + g_warning ("failed to add connected devices: %s", + error->message); + return; + } + for (i = 0; i < devices->len; i++) + { + device = g_ptr_array_index (devices, i); + gcm_prefs_add_device (prefs, device); + } + + /* ensure we show the 'No devices detected' entry if empty */ + gcm_prefs_update_device_list_extra_entry (prefs); +} + +static void +gcm_prefs_list_box_row_selected_cb (CcColorPanel *panel, + GtkListBoxRow *row) +{ + gcm_prefs_refresh_toolbar_buttons (panel); +} + +static void +gcm_prefs_refresh_toolbar_buttons (CcColorPanel *panel) +{ + CdProfile *profile = NULL; + GtkListBoxRow *row; + gboolean is_device; + + /* get the selected profile */ + row = gtk_list_box_get_selected_row (panel->list_box); + + is_device = CC_IS_COLOR_DEVICE (row); + + /* nothing selected */ + gtk_widget_set_visible (panel->toolbar_devices, row != NULL); + if (row == NULL) + return; + + /* save current device */ + g_clear_object (&panel->current_device); + g_object_get (row, "device", &panel->current_device, NULL); + + /* device actions */ + g_debug ("%s selected", is_device ? "device" : "profile"); + if (CC_IS_COLOR_DEVICE (row)) + { + gcm_prefs_device_clicked (panel, panel->current_device); + cc_color_device_set_expanded (CC_COLOR_DEVICE (row), TRUE); + } + else if (CC_IS_COLOR_PROFILE (row)) + { + profile = cc_color_profile_get_profile (CC_COLOR_PROFILE (row)); + gcm_prefs_profile_clicked (panel, profile, panel->current_device); + } + else + g_assert_not_reached (); + + gtk_widget_set_visible (panel->toolbutton_device_default, !is_device && cc_color_profile_get_is_default (CC_COLOR_PROFILE (row))); + if (profile) + gtk_widget_set_sensitive (panel->toolbutton_device_default, !cd_profile_get_is_system_wide (profile)); + gtk_widget_set_visible (panel->toolbutton_device_enable, !is_device && !cc_color_profile_get_is_default (CC_COLOR_PROFILE (row))); + gtk_widget_set_visible (panel->toolbutton_device_calibrate, is_device); + gtk_widget_set_visible (panel->toolbutton_profile_add, is_device); + gtk_widget_set_visible (panel->toolbutton_profile_view, !is_device); + gtk_widget_set_visible (panel->toolbutton_profile_remove, !is_device); +} + +static void +gcm_prefs_list_box_row_activated_cb (CcColorPanel *prefs, + GtkListBoxRow *row) +{ + if (CC_IS_COLOR_PROFILE (row)) + { + gcm_prefs_device_profile_enable_cb (prefs); + } +} + +static void +gcm_prefs_connect_cb (GObject *object, + GAsyncResult *res, + gpointer user_data) +{ + CcColorPanel *prefs; + gboolean ret; + g_autoptr(GError) error = NULL; + + ret = cd_client_connect_finish (CD_CLIENT (object), + res, + &error); + if (!ret) + { + if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) + g_warning ("failed to connect to colord: %s", error->message); + return; + } + + /* Only cast the parameters after making sure it didn't fail. At this point, + * the user can potentially already have changed to another panel, effectively + * making user_data invalid. */ + prefs = CC_COLOR_PANEL (user_data); + + /* set calibrate button sensitivity */ + gcm_prefs_sensor_coldplug (prefs); + + /* get devices */ + cd_client_get_devices (prefs->client, + cc_panel_get_cancellable (CC_PANEL (prefs)), + gcm_prefs_get_devices_cb, + prefs); +} + +static gboolean +gcm_prefs_is_livecd (void) +{ +#ifdef __linux__ + gboolean ret = TRUE; + g_autofree gchar *data = NULL; + g_autoptr(GError) error = NULL; + + /* allow testing */ + if (g_getenv ("CC_COLOR_PANEL_IS_LIVECD") != NULL) + return TRUE; + + /* get the kernel commandline */ + ret = g_file_get_contents ("/proc/cmdline", &data, NULL, &error); + if (!ret) + { + g_warning ("failed to get kernel command line: %s", + error->message); + return TRUE; + } + return (g_strstr_len (data, -1, "liveimg") != NULL || + g_strstr_len (data, -1, "casper") != NULL); +#else + return FALSE; +#endif +} + +static void +gcm_prefs_window_realize_cb (CcColorPanel *prefs) +{ + prefs->main_window = gtk_widget_get_toplevel (GTK_WIDGET (prefs)); +} + +static const char * +cc_color_panel_get_help_uri (CcPanel *panel) +{ + return "help:gnome-help/color"; +} + +static void +cc_color_panel_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + switch (property_id) + { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +cc_color_panel_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + switch (property_id) + { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +cc_color_panel_dispose (GObject *object) +{ + CcColorPanel *prefs = CC_COLOR_PANEL (object); + + g_clear_object (&prefs->settings); + g_clear_object (&prefs->settings_colord); + g_clear_object (&prefs->client); + g_clear_object (&prefs->current_device); + g_clear_pointer (&prefs->devices, g_ptr_array_unref); + g_clear_object (&prefs->calibrate); + g_clear_object (&prefs->list_box_size); + g_clear_pointer (&prefs->sensors, g_ptr_array_unref); + g_clear_pointer (&prefs->list_box_filter, g_free); + g_clear_pointer (&prefs->dialog_assign, gtk_widget_destroy); + + G_OBJECT_CLASS (cc_color_panel_parent_class)->dispose (object); +} + +static void +cc_color_panel_finalize (GObject *object) +{ + G_OBJECT_CLASS (cc_color_panel_parent_class)->finalize (object); +} + +static void +cc_color_panel_class_init (CcColorPanelClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + CcPanelClass *panel_class = CC_PANEL_CLASS (klass); + + panel_class->get_help_uri = cc_color_panel_get_help_uri; + + object_class->get_property = cc_color_panel_get_property; + object_class->set_property = cc_color_panel_set_property; + object_class->dispose = cc_color_panel_dispose; + object_class->finalize = cc_color_panel_finalize; + + gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/color/cc-color-panel.ui"); + + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, assistant_calib); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, box_calib_brightness); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, box_calib_kind); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, box_calib_quality); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, box_calib_sensor); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, box_calib_summary); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, box_calib_temp); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, box_calib_title); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, box_devices); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, button_assign_cancel); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, button_assign_import); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, button_assign_ok); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, button_calib_export); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, button_calib_upload); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, dialog_assign); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, entry_calib_title); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, frame_devices); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, label_assign_warning); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, label_calib_summary_message); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, label_calib_upload_location); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, label_no_devices); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, liststore_assign); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, liststore_calib_kind); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, liststore_calib_sensor); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, toolbar_devices); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, toolbutton_device_calibrate); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, toolbutton_device_default); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, toolbutton_device_enable); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, toolbutton_profile_add); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, toolbutton_profile_remove); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, toolbutton_profile_view); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, treeview_assign); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, treeview_calib_kind); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, treeview_calib_quality); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, treeview_calib_sensor); + gtk_widget_class_bind_template_child (widget_class, CcColorPanel, treeview_calib_temp); +} + +static gint +cc_color_panel_sort_func (GtkListBoxRow *a, + GtkListBoxRow *b, + gpointer user_data) +{ + const gchar *sort_a = NULL; + const gchar *sort_b = NULL; + if (CC_IS_COLOR_DEVICE (a)) + sort_a = cc_color_device_get_sortable (CC_COLOR_DEVICE (a)); + else if (CC_IS_COLOR_PROFILE (a)) + sort_a = cc_color_profile_get_sortable (CC_COLOR_PROFILE (a)); + else + g_assert_not_reached (); + if (CC_IS_COLOR_DEVICE (b)) + sort_b = cc_color_device_get_sortable (CC_COLOR_DEVICE (b)); + else if (CC_IS_COLOR_PROFILE (b)) + sort_b = cc_color_profile_get_sortable (CC_COLOR_PROFILE (b)); + else + g_assert_not_reached (); + return g_strcmp0 (sort_b, sort_a); +} + +static gboolean +cc_color_panel_filter_func (GtkListBoxRow *row, void *user_data) +{ + CcColorPanel *prefs = CC_COLOR_PANEL (user_data); + g_autoptr(CdDevice) device = NULL; + + /* always show all devices */ + if (CC_IS_COLOR_DEVICE (row)) + return TRUE; + + g_object_get (row, "device", &device, NULL); + return g_strcmp0 (cd_device_get_id (device), prefs->list_box_filter) == 0; +} + +static gboolean +cc_color_panel_treeview_quality_default_cb (GtkTreeModel *model, + GtkTreePath *path, + GtkTreeIter *iter, + gpointer data) +{ + CdProfileQuality quality; + GtkTreeSelection *selection = GTK_TREE_SELECTION (data); + + gtk_tree_model_get (model, iter, + COLUMN_CALIB_QUALITY_VALUE, &quality, + -1); + if (quality == CD_PROFILE_QUALITY_MEDIUM) + gtk_tree_selection_select_iter (selection, iter); + return FALSE; +} + +static void +cc_color_panel_init (CcColorPanel *prefs) +{ + GtkCellRenderer *renderer; + GtkStyleContext *context; + GtkTreeModel *model; + GtkTreeModel *model_filter; + GtkTreeSelection *selection; + GtkTreeViewColumn *column; + + g_resources_register (cc_color_get_resource ()); + + gtk_widget_init_template (GTK_WIDGET (prefs)); + + prefs->devices = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref); + + /* can do native display calibration using colord-session */ + prefs->calibrate = cc_color_calibrate_new (); + cc_color_calibrate_set_quality (prefs->calibrate, CD_PROFILE_QUALITY_MEDIUM); + + /* setup defaults */ + prefs->settings = g_settings_new (GCM_SETTINGS_SCHEMA); + prefs->settings_colord = g_settings_new (COLORD_SETTINGS_SCHEMA); + + /* assign buttons */ + g_signal_connect_object (prefs->toolbutton_profile_add, "clicked", + G_CALLBACK (gcm_prefs_profile_add_cb), prefs, G_CONNECT_SWAPPED); + g_signal_connect_object (prefs->toolbutton_profile_remove, "clicked", + G_CALLBACK (gcm_prefs_profile_remove_cb), prefs, G_CONNECT_SWAPPED); + g_signal_connect_object (prefs->toolbutton_profile_view, "clicked", + G_CALLBACK (gcm_prefs_profile_view_cb), prefs, G_CONNECT_SWAPPED); + + /* href */ + g_signal_connect_object (prefs->label_assign_warning, "activate-link", + G_CALLBACK (gcm_prefs_profile_assign_link_activate_cb), prefs, G_CONNECT_SWAPPED); + + /* add columns to profile tree view */ + gcm_prefs_add_profiles_columns (prefs, GTK_TREE_VIEW (prefs->treeview_assign)); + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (prefs->treeview_assign)); + g_signal_connect_object (selection, "changed", + G_CALLBACK (gcm_prefs_profiles_treeview_clicked_cb), + prefs, G_CONNECT_SWAPPED); + g_signal_connect_object (prefs->treeview_assign, "row-activated", + G_CALLBACK (gcm_prefs_profiles_row_activated_cb), + prefs, G_CONNECT_SWAPPED); + + g_signal_connect_object (prefs->toolbutton_device_default, "clicked", + G_CALLBACK (gcm_prefs_default_cb), prefs, G_CONNECT_SWAPPED); + g_signal_connect_object (prefs->toolbutton_device_enable, "clicked", + G_CALLBACK (gcm_prefs_device_profile_enable_cb), prefs, G_CONNECT_SWAPPED); + g_signal_connect_object (prefs->toolbutton_device_calibrate, "clicked", + G_CALLBACK (gcm_prefs_calibrate_cb), prefs, G_CONNECT_SWAPPED); + + context = gtk_widget_get_style_context (prefs->toolbar_devices); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_INLINE_TOOLBAR); + gtk_style_context_set_junction_sides (context, GTK_JUNCTION_TOP); + + /* set up assign dialog */ + g_signal_connect_object (prefs->dialog_assign, "delete-event", + G_CALLBACK (gcm_prefs_profile_delete_event_cb), prefs, G_CONNECT_SWAPPED); + + g_signal_connect_object (prefs->button_assign_cancel, "clicked", + G_CALLBACK (gcm_prefs_button_assign_cancel_cb), prefs, G_CONNECT_SWAPPED); + g_signal_connect_object (prefs->button_assign_ok, "clicked", + G_CALLBACK (gcm_prefs_button_assign_ok_cb), prefs, G_CONNECT_SWAPPED); + + /* setup icc profiles list */ + g_signal_connect_object (prefs->button_assign_import, "clicked", + G_CALLBACK (gcm_prefs_button_assign_import_cb), prefs, G_CONNECT_SWAPPED); + + /* setup the calibration helper */ + g_signal_connect_object (prefs->assistant_calib, "delete-event", + G_CALLBACK (gcm_prefs_calib_delete_event_cb), + prefs, G_CONNECT_SWAPPED); + g_signal_connect_object (prefs->assistant_calib, "apply", + G_CALLBACK (gcm_prefs_calib_apply_cb), + prefs, G_CONNECT_SWAPPED); + g_signal_connect_object (prefs->assistant_calib, "cancel", + G_CALLBACK (gcm_prefs_calib_cancel_cb), + prefs, G_CONNECT_SWAPPED); + g_signal_connect_object (prefs->assistant_calib, "close", + G_CALLBACK (gcm_prefs_calib_cancel_cb), + prefs, G_CONNECT_SWAPPED); + g_signal_connect_object (prefs->assistant_calib, "prepare", + G_CALLBACK (gcm_prefs_calib_prepare_cb), + prefs, G_CONNECT_SWAPPED); + + /* setup the calibration helper ::TreeView */ + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (prefs->treeview_calib_quality)); + model = gtk_tree_view_get_model (GTK_TREE_VIEW (prefs->treeview_calib_quality)); + gtk_tree_model_foreach (model, + cc_color_panel_treeview_quality_default_cb, + selection); + g_signal_connect_object (selection, "changed", + G_CALLBACK (gcm_prefs_calib_quality_treeview_clicked_cb), + prefs, G_CONNECT_SWAPPED); + column = gtk_tree_view_column_new (); + renderer = gtk_cell_renderer_text_new (); + g_object_set (renderer, + "xpad", 9, + "ypad", 9, + NULL); + gtk_tree_view_column_pack_start (column, renderer, TRUE); + gtk_tree_view_column_add_attribute (column, renderer, + "markup", COLUMN_CALIB_QUALITY_DESCRIPTION); + gtk_tree_view_column_set_expand (column, TRUE); + gtk_tree_view_append_column (GTK_TREE_VIEW (prefs->treeview_calib_quality), + GTK_TREE_VIEW_COLUMN (column)); + column = gtk_tree_view_column_new (); + renderer = cc_color_cell_renderer_text_new (); + g_object_set (renderer, + "xpad", 9, + "ypad", 9, + "is-dim-label", TRUE, + NULL); + gtk_tree_view_column_pack_start (column, renderer, TRUE); + gtk_tree_view_column_add_attribute (column, renderer, + "markup", COLUMN_CALIB_QUALITY_APPROX_TIME); + gtk_tree_view_column_set_expand (column, FALSE); + gtk_tree_view_append_column (GTK_TREE_VIEW (prefs->treeview_calib_quality), + GTK_TREE_VIEW_COLUMN (column)); + + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (prefs->treeview_calib_sensor)); + g_signal_connect_object (selection, "changed", + G_CALLBACK (gcm_prefs_calib_sensor_treeview_clicked_cb), + prefs, G_CONNECT_SWAPPED); + column = gtk_tree_view_column_new (); + renderer = gtk_cell_renderer_text_new (); + g_object_set (renderer, + "xpad", 9, + "ypad", 9, + NULL); + gtk_tree_view_column_pack_start (column, renderer, TRUE); + gtk_tree_view_column_add_attribute (column, renderer, + "markup", COLUMN_CALIB_SENSOR_DESCRIPTION); + gtk_tree_view_column_set_expand (column, TRUE); + gtk_tree_view_append_column (GTK_TREE_VIEW (prefs->treeview_calib_sensor), + GTK_TREE_VIEW_COLUMN (column)); + + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (prefs->treeview_calib_kind)); + g_signal_connect_object (selection, "changed", + G_CALLBACK (gcm_prefs_calib_kind_treeview_clicked_cb), + prefs, G_CONNECT_SWAPPED); + column = gtk_tree_view_column_new (); + renderer = gtk_cell_renderer_text_new (); + g_object_set (renderer, + "xpad", 9, + "ypad", 9, + NULL); + gtk_tree_view_column_pack_start (column, renderer, TRUE); + gtk_tree_view_column_add_attribute (column, renderer, + "markup", COLUMN_CALIB_KIND_DESCRIPTION); + model = gtk_tree_view_get_model (GTK_TREE_VIEW (prefs->treeview_calib_kind)); + model_filter = gtk_tree_model_filter_new (model, NULL); + gtk_tree_view_set_model (GTK_TREE_VIEW (prefs->treeview_calib_kind), model_filter); + gtk_tree_model_filter_set_visible_column (GTK_TREE_MODEL_FILTER (model_filter), + COLUMN_CALIB_KIND_VISIBLE); + + gtk_tree_view_column_set_expand (column, TRUE); + gtk_tree_view_append_column (GTK_TREE_VIEW (prefs->treeview_calib_kind), + GTK_TREE_VIEW_COLUMN (column)); + + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (prefs->treeview_calib_temp)); + g_signal_connect_object (selection, "changed", + G_CALLBACK (gcm_prefs_calib_temp_treeview_clicked_cb), + prefs, G_CONNECT_SWAPPED); + column = gtk_tree_view_column_new (); + renderer = gtk_cell_renderer_text_new (); + g_object_set (renderer, + "xpad", 9, + "ypad", 9, + NULL); + gtk_tree_view_column_pack_start (column, renderer, TRUE); + gtk_tree_view_column_add_attribute (column, renderer, + "markup", COLUMN_CALIB_TEMP_DESCRIPTION); + gtk_tree_view_column_set_expand (column, TRUE); + gtk_tree_view_append_column (GTK_TREE_VIEW (prefs->treeview_calib_temp), + GTK_TREE_VIEW_COLUMN (column)); + g_signal_connect_object (prefs->entry_calib_title, "notify::text", + G_CALLBACK (gcm_prefs_title_entry_changed_cb), prefs, G_CONNECT_SWAPPED); + + /* use a device client array */ + prefs->client = cd_client_new (); + g_signal_connect_object (prefs->client, "device-added", + G_CALLBACK (gcm_prefs_device_added_cb), prefs, 0); + g_signal_connect_object (prefs->client, "device-removed", + G_CALLBACK (gcm_prefs_device_removed_cb), prefs, 0); + + /* use a listbox for the main UI */ + prefs->list_box = GTK_LIST_BOX (gtk_list_box_new ()); + gtk_list_box_set_filter_func (prefs->list_box, + cc_color_panel_filter_func, + prefs, + NULL); + gtk_list_box_set_sort_func (prefs->list_box, + cc_color_panel_sort_func, + prefs, + NULL); + gtk_list_box_set_header_func (prefs->list_box, + cc_list_box_update_header_func, + prefs, NULL); + gtk_list_box_set_selection_mode (prefs->list_box, + GTK_SELECTION_SINGLE); + gtk_list_box_set_activate_on_single_click (prefs->list_box, FALSE); + g_signal_connect_object (prefs->list_box, "row-selected", + G_CALLBACK (gcm_prefs_list_box_row_selected_cb), + prefs, G_CONNECT_SWAPPED); + g_signal_connect_object (prefs->list_box, "row-activated", + G_CALLBACK (gcm_prefs_list_box_row_activated_cb), + prefs, G_CONNECT_SWAPPED); + prefs->list_box_size = gtk_size_group_new (GTK_SIZE_GROUP_VERTICAL); + + gtk_container_add (GTK_CONTAINER (prefs->frame_devices), GTK_WIDGET (prefs->list_box)); + gtk_widget_show (GTK_WIDGET (prefs->list_box)); + + /* connect to colord */ + cd_client_connect (prefs->client, + cc_panel_get_cancellable (CC_PANEL (prefs)), + gcm_prefs_connect_cb, + prefs); + + /* use the color sensor */ + g_signal_connect_object (prefs->client, "sensor-added", + G_CALLBACK (gcm_prefs_client_sensor_changed_cb), + prefs, 0); + g_signal_connect_object (prefs->client, "sensor-removed", + G_CALLBACK (gcm_prefs_client_sensor_changed_cb), + prefs, 0); + + /* set calibrate button sensitivity */ + gcm_prefs_set_calibrate_button_sensitivity (prefs); + + /* show the confirmation export page if we are running from a LiveCD */ + prefs->is_live_cd = gcm_prefs_is_livecd (); + gtk_widget_set_visible (prefs->box_calib_summary, prefs->is_live_cd); + g_signal_connect_object (prefs->button_calib_export, "clicked", + G_CALLBACK (gcm_prefs_calib_export_cb), prefs, G_CONNECT_SWAPPED); + g_signal_connect_object (prefs->button_calib_upload, "clicked", + G_CALLBACK (gcm_prefs_calib_upload_cb), prefs, G_CONNECT_SWAPPED); + g_signal_connect_object (prefs->label_calib_summary_message, "activate-link", + G_CALLBACK (gcm_prefs_calib_export_link_cb), prefs, G_CONNECT_SWAPPED); + + g_signal_connect (prefs, "realize", + G_CALLBACK (gcm_prefs_window_realize_cb), + NULL); +} diff --git a/panels/color/cc-color-panel.h b/panels/color/cc-color-panel.h new file mode 100644 index 0000000..27861d1 --- /dev/null +++ b/panels/color/cc-color-panel.h @@ -0,0 +1,30 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- + * + * Copyright (C) 2010 Red Hat, Inc + * Copyright (C) 2011 Richard Hughes <richard@hughsie.com> + * + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + * + */ + +#pragma once + +#include <shell/cc-panel.h> + +G_BEGIN_DECLS + +#define CC_TYPE_COLOR_PANEL (cc_color_panel_get_type ()) +G_DECLARE_FINAL_TYPE (CcColorPanel, cc_color_panel, CC, COLOR_PANEL, CcPanel) + +G_END_DECLS diff --git a/panels/color/cc-color-panel.ui b/panels/color/cc-color-panel.ui new file mode 100644 index 0000000..647e598 --- /dev/null +++ b/panels/color/cc-color-panel.ui @@ -0,0 +1,1169 @@ +<?xml version="1.0" encoding="UTF-8"?> +<interface> + <!-- interface-requires gtk+ 3.0 --> + <object class="GtkAssistant" id="assistant_calib"> + <property name="can_focus">False</property> + <property name="title" translatable="yes">Screen Calibration</property> + <property name="resizable">False</property> + <property name="modal">True</property> + <property name="window_position">center-on-parent</property> + <property name="destroy_with_parent">True</property> + <child> + <object class="GtkBox" id="box_calib_quality"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">9</property> + <child> + <object class="GtkLabel" id="label_calib_quality_message"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="xpad">6</property> + <property name="label" translatable="yes">Calibration will produce a profile that you can use to color manage your screen. The longer you spend on calibration, the better the quality of the color profile.</property> + <property name="wrap">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label_calib_quality_message2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="xpad">6</property> + <property name="label" translatable="yes">You will not be able to use your computer while calibration takes place.</property> + <property name="wrap">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkBox" id="box_label_calib_quality_header"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="margin_top">12</property> + <child> + <object class="GtkLabel" id="label_calib_quality_header"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="xpad">6</property> + <property name="label" translatable="yes" comments="This is the approximate time it takes to calibrate the display.">Quality</property> + <style> + <class name="dim-label"/> + </style> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label_calib_quality_approx_time"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">1</property> + <property name="xpad">6</property> + <property name="label" translatable="yes" comments="This is the approximate time it takes to calibrate the display.">Approximate Time</property> + <style> + <class name="dim-label"/> + </style> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkScrolledWindow" id="scrolledwindow_calib_quality"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">never</property> + <property name="vscrollbar_policy">never</property> + <property name="shadow_type">in</property> + <child> + <object class="GtkTreeView" id="treeview_calib_quality"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="model">liststore_calib_quality</property> + <property name="headers_visible">False</property> + <property name="search_column">0</property> + <child internal-child="selection"> + <object class="GtkTreeSelection" id="treeview-selection3"/> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">3</property> + </packing> + </child> + </object> + <packing> + <property name="title" translatable="yes">Calibration Quality</property> + <property name="complete">True</property> + </packing> + </child> + <child> + <object class="GtkBox" id="box_calib_sensor"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">9</property> + <child> + <object class="GtkLabel" id="label_calib_sensor_message"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="xpad">6</property> + <property name="label" translatable="yes">Select the sensor device you want to use for calibration.</property> + <property name="wrap">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkScrolledWindow" id="scrolledwindow_calib_sensor"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">never</property> + <property name="vscrollbar_policy">never</property> + <property name="shadow_type">in</property> + <child> + <object class="GtkTreeView" id="treeview_calib_sensor"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="model">liststore_calib_sensor</property> + <property name="headers_visible">False</property> + <property name="search_column">1</property> + <child internal-child="selection"> + <object class="GtkTreeSelection" id="treeview-selection4"/> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="title" translatable="yes">Calibration Device</property> + </packing> + </child> + <child> + <object class="GtkBox" id="box_calib_kind"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">9</property> + <child> + <object class="GtkLabel" id="label_calib_kind_message"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="xpad">6</property> + <property name="label" translatable="yes">Select the type of display that is connected.</property> + <property name="wrap">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkScrolledWindow" id="scrolledwindow_calib_kind"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">never</property> + <property name="vscrollbar_policy">never</property> + <property name="shadow_type">in</property> + <child> + <object class="GtkTreeView" id="treeview_calib_kind"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="model">liststore_calib_kind</property> + <property name="headers_visible">False</property> + <property name="search_column">0</property> + <child internal-child="selection"> + <object class="GtkTreeSelection" id="treeview-selection5"/> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="title" translatable="yes">Display Type</property> + </packing> + </child> + <child> + <object class="GtkBox" id="box_calib_temp"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">9</property> + <child> + <object class="GtkLabel" id="label_calib_temp_message"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="xpad">6</property> + <property name="label" translatable="yes">Select a display target white point. Most displays should be calibrated to a D65 illuminant.</property> + <property name="wrap">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkScrolledWindow" id="scrolledwindow_calib_temp"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">never</property> + <property name="vscrollbar_policy">never</property> + <property name="shadow_type">in</property> + <child> + <object class="GtkTreeView" id="treeview_calib_temp"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="model">liststore_calib_temp</property> + <property name="headers_visible">False</property> + <property name="search_column">0</property> + <child internal-child="selection"> + <object class="GtkTreeSelection" id="treeview-selection6"/> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="title" translatable="yes">Profile Whitepoint</property> + </packing> + </child> + <child> + <object class="GtkBox" id="box_calib_brightness"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">9</property> + <child> + <object class="GtkLabel" id="label_calib_brightness_message1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="xpad">6</property> + <property name="label" translatable="yes">Please set the display to a brightness that is typical for you. Color management will be most accurate at this brightness level.</property> + <property name="wrap">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label_calib_brightness_message2"> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="xpad">6</property> + <property name="label" translatable="yes">Alternatively, you can use the brightness level used with one of the other profiles for this device.</property> + <property name="wrap">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="title" translatable="yes">Display Brightness</property> + </packing> + </child> + <child> + <object class="GtkBox" id="box_calib_title"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">9</property> + <child> + <object class="GtkLabel" id="label_calib_title_message"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="xpad">6</property> + <property name="label" translatable="yes">You can use a color profile on different computers, or even create profiles for different lighting conditions.</property> + <property name="wrap">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label_calib_title_header"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="xpad">6</property> + <property name="label" translatable="yes">Profile Name:</property> + <property name="wrap">True</property> + <style> + <class name="dim-label"/> + </style> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkEntry" id="entry_calib_title"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="invisible_char">●</property> + <property name="truncate_multiline">True</property> + <property name="invisible_char_set">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> + </object> + <packing> + <property name="page_type">confirm</property> + <property name="title" translatable="yes">Profile Name</property> + </packing> + </child> + <child> + <object class="GtkBox" id="box_calib_summary"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">9</property> + <child> + <object class="GtkLabel" id="label_calib_summary_title"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="xpad">6</property> + <property name="label" translatable="yes">Profile successfully created!</property> + <property name="wrap">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox" id="box2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">center</property> + <property name="spacing">6</property> + <child> + <object class="GtkButton" id="button_calib_export"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="halign">start</property> + <child> + <object class="GtkBox" id="box3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="border_width">6</property> + <property name="spacing">9</property> + <child> + <object class="GtkImage" id="image2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="pixel_size">48</property> + <property name="icon_name">folder-symbolic</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox" id="box6"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">3</property> + <child> + <object class="GtkLabel" id="label1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Copy profile</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Requires writable media</property> + <attributes> + <attribute name="style" value="italic"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkButton" id="button_calib_upload"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="halign">start</property> + <child> + <object class="GtkBox" id="box4"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="border_width">6</property> + <property name="spacing">9</property> + <child> + <object class="GtkImage" id="image3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="pixel_size">48</property> + <property name="icon_name">preferences-system-sharing-symbolic</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox" id="box5"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">3</property> + <child> + <object class="GtkLabel" id="label3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Upload profile</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label4"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Requires Internet connection</property> + <attributes> + <attribute name="style" value="italic"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="padding">12</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="padding">12</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label_calib_upload_location"> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="xpad">6</property> + <property name="label">The profile has been uploaded to http://foo.bar/deadbeef.icc</property> + <property name="selectable">True</property> + <style> + <class name="dim-label"/> + </style> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label_calib_summary_message"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="xpad">6</property> + <property name="label" translatable="yes">You may find these instructions on how to use the profile on <a href="linux">GNU/Linux</a>, <a href="osx">Apple OS X</a> and <a href="windows">Microsoft Windows</a> systems useful.</property> + <property name="use_markup">True</property> + <property name="wrap">True</property> + <style> + <class name="dim-label"/> + </style> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">3</property> + </packing> + </child> + </object> + <packing> + <property name="page_type">summary</property> + <property name="title" translatable="yes">Summary</property> + </packing> + </child> + <child internal-child="action_area"> + <object class="GtkBox" id="assistant-action_area1"> + <property name="can_focus">False</property> + <property name="halign">end</property> + <property name="spacing">6</property> + </object> + </child> + </object> + <object class="GtkDialog" id="dialog_assign"> + <property name="can_focus">False</property> + <property name="border_width">5</property> + <property name="title" translatable="yes">Add Profile</property> + <property name="resizable">False</property> + <property name="modal">True</property> + <property name="window_position">center-on-parent</property> + <property name="destroy_with_parent">True</property> + <property name="icon_name">gnome-color-manager</property> + <property name="type_hint">dialog</property> + <property name="skip_taskbar_hint">True</property> + <property name="skip_pager_hint">True</property> + <child internal-child="vbox"> + <object class="GtkBox" id="dialog-vbox3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">2</property> + <child internal-child="action_area"> + <object class="GtkButtonBox" id="dialog-action_area3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="layout_style">end</property> + <child> + <object class="GtkButton" id="button_assign_import"> + <property name="label" translatable="yes">_Import File…</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkButton" id="button_assign_cancel"> + <property name="label" translatable="yes">_Cancel</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + <property name="secondary">True</property> + </packing> + </child> + <child> + <object class="GtkButton" id="button_assign_ok"> + <property name="label" translatable="yes">_Add</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">end</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox" id="box1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="border_width">5</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <child> + <object class="GtkScrolledWindow" id="scrolledwindow_assign"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">never</property> + <property name="shadow_type">in</property> + <property name="hscrollbar-policy">GTK_POLICY_NEVER</property> + <property name="min-content-height">300</property> + <child> + <object class="GtkTreeView" id="treeview_assign"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="model">liststore_assign</property> + <property name="headers_visible">False</property> + <property name="enable_search">False</property> + <property name="search_column">0</property> + <child internal-child="selection"> + <object class="GtkTreeSelection" id="treeview-selection2"/> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label_assign_warning"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Problems detected. The profile may not work correctly. <a href="">Show details.</a></property> + <property name="use_markup">True</property> + <property name="wrap">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + <action-widgets> + <action-widget response="0">button_assign_import</action-widget> + <action-widget response="0">button_assign_cancel</action-widget> + <action-widget response="0">button_assign_ok</action-widget> + </action-widgets> + </object> + <template class="CcColorPanel" parent="CcPanel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkScrolledWindow" id="dialog_scroll"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="HdyClamp"> + <property name="visible">True</property> + <property name="margin_top">32</property> + <property name="margin_bottom">32</property> + <property name="margin_start">12</property> + <property name="margin_end">12</property> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">12</property> + <property name="hexpand">True</property> + <child> + <object class="GtkBox" id="hbox3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">9</property> + <child> + <object class="GtkLabel" id="label_intro"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Each device needs an up to date color profile to be color managed.</property> + <property name="wrap">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label_padding"> + <property name="visible">True</property> + <property name="can_focus">False</property> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkLinkButton" id="linkbutton_help"> + <property name="label" translatable="yes">Learn more</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="has_tooltip">True</property> + <property name="tooltip_text" translatable="yes">Learn more about color management</property> + <property name="relief">none</property> + <property name="xalign">0.50999999046325684</property> + <property name="uri">help:gnome-help/color-whyimportant</property> + <accessibility> + <relation type="labelled-by" target="label_intro"/> + </accessibility> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox" id="box_devices"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkFrame" id="frame_devices"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="shadow_type">in</property> + </object> + </child> + <child> + <object class="GtkToolbar" id="toolbar_devices"> + <property name="can_focus">True</property> + <property name="show_arrow">False</property> + <property name="icon_size">1</property> + <child> + <object class="GtkToolItem" id="left_button_group"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkBox" id="left_button_group_box"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkButton" id="toolbutton_device_default"> + <property name="label" translatable="yes">_Set for all users</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="has_tooltip">True</property> + <property name="tooltip_text" translatable="yes">Set this profile for all users on this computer</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkButton" id="toolbutton_device_enable"> + <property name="label" translatable="yes">_Enable</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="has_tooltip">True</property> + <property name="tooltip_markup" translatable="yes">Set this profile for all users on this computer</property> + <property name="tooltip_text" translatable="yes">Set this profile for all users on this computer</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">True</property> + </packing> + </child> + <child> + <object class="GtkToolItem" id="right_button_group"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkBox" id="right_button_group_box"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkButton" id="toolbutton_profile_add"> + <property name="label" translatable="yes">_Add profile</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkButton" id="toolbutton_device_calibrate"> + <property name="label" translatable="yes">_Calibrate…</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="has_tooltip">True</property> + <property name="tooltip_text" translatable="yes">Calibrate the device</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkButton" id="toolbutton_profile_remove"> + <property name="label" translatable="yes">_Remove profile</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkButton" id="toolbutton_profile_view"> + <property name="label" translatable="yes">_View details</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">3</property> + </packing> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label_no_devices"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Unable to detect any devices that can be color managed</property> + <style> + <class name="dim-label"/> + </style> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> + </object> + </child> + </object> + </child> + </object> + </child> + </template> + <object class="GtkListStore" id="liststore_assign"> + <columns> + <!-- column-name title --> + <column type="gchararray"/> + <!-- column-name profile --> + <column type="GObject"/> + <!-- column-name kind --> + <column type="guint"/> + <!-- column-name warningfn --> + <column type="gchararray"/> + </columns> + </object> + <object class="GtkListStore" id="liststore_calib_kind"> + <columns> + <!-- column-name display_kind --> + <column type="gchararray"/> + <!-- column-name kind --> + <column type="guint"/> + <!-- column-name visible --> + <column type="gboolean"/> + </columns> + <data> + <row> + <col id="0" translatable="yes">LCD</col> + <col id="1">1</col> + <col id="2">False</col> + </row> + <row> + <col id="0" translatable="yes">LED</col> + <col id="1">8</col> + <col id="2">False</col> + </row> + <row> + <col id="0" translatable="yes">CRT</col> + <col id="1">2</col> + <col id="2">False</col> + </row> + <row> + <col id="0" translatable="yes">Projector</col> + <col id="1">5</col> + <col id="2">False</col> + </row> + <row> + <col id="0" translatable="yes">Plasma</col> + <col id="1">9</col> + <col id="2">False</col> + </row> + <row> + <col id="0" translatable="yes">LCD (CCFL backlight)</col> + <col id="1">10</col> + <col id="2">False</col> + </row> + <row> + <col id="0" translatable="yes">LCD (RGB LED backlight)</col> + <col id="1">11</col> + <col id="2">False</col> + </row> + <row> + <col id="0" translatable="yes">LCD (white LED backlight)</col> + <col id="1">12</col> + <col id="2">False</col> + </row> + <row> + <col id="0" translatable="yes">Wide gamut LCD (CCFL backlight)</col> + <col id="1">13</col> + <col id="2">False</col> + </row> + <row> + <col id="0" translatable="yes">Wide gamut LCD (RGB LED backlight)</col> + <col id="1">14</col> + <col id="2">False</col> + </row> + </data> + </object> + <object class="GtkListStore" id="liststore_calib_quality"> + <columns> + <!-- column-name quality --> + <column type="gchararray"/> + <!-- column-name approx_time --> + <column type="gchararray"/> + <!-- column-name value --> + <column type="guint"/> + </columns> + <data> + <row> + <col id="0" translatable="yes" context="Calibration quality">High</col> + <col id="1" translatable="yes">40 minutes</col> + <col id="2" translatable="no">2</col> + </row> + <row> + <col id="0" translatable="yes" context="Calibration quality">Medium</col> + <col id="1" translatable="yes">30 minutes</col> + <col id="2" translatable="no">1</col> + </row> + <row> + <col id="0" translatable="yes" context="Calibration quality">Low</col> + <col id="1" translatable="yes">15 minutes</col> + <col id="2" translatable="no">0</col> + </row> + </data> + </object> + <object class="GtkListStore" id="liststore_calib_sensor"> + <columns> + <!-- column-name sensor --> + <column type="GObject"/> + <!-- column-name sensor_desc --> + <column type="gchararray"/> + </columns> + </object> + <object class="GtkListStore" id="liststore_calib_temp"> + <columns> + <!-- column-name temp_desc --> + <column type="gchararray"/> + <!-- column-name temp_value --> + <column type="guint"/> + </columns> + <data> + <row> + <col id="0" translatable="yes">Native to display</col> + <col id="1">0</col> + </row> + <row> + <col id="0" translatable="yes">D50 (Printing and publishing)</col> + <col id="1">5000</col> + </row> + <row> + <col id="0" translatable="yes">D55</col> + <col id="1">5500</col> + </row> + <row> + <col id="0" translatable="yes">D65 (Photography and graphics)</col> + <col id="1">6500</col> + </row> + <row> + <col id="0" translatable="yes">D75</col> + <col id="1">7500</col> + </row> + </data> + </object> + <object class="GtkSizeGroup" id="sizegroup_assign"> + <widgets> + <widget name="label_assign_warning"/> + <widget name="scrolledwindow_assign"/> + </widgets> + </object> + <object class="GtkSizeGroup" id="sizegroup_buttons"> + <widgets> + <widget name="toolbutton_profile_add"/> + <widget name="toolbutton_device_calibrate"/> + <widget name="toolbutton_profile_remove"/> + <widget name="toolbutton_profile_view"/> + </widgets> + </object> + <object class="GtkSizeGroup" id="sizegroup_buttons_enable"> + <widgets> + <widget name="toolbutton_device_default"/> + <widget name="toolbutton_device_enable"/> + </widgets> + </object> + <object class="GtkSizeGroup" id="sizegroup_combos"/> + <object class="GtkSizeGroup" id="sizegroup_defaults"/> + <object class="GtkSizeGroup" id="sizegroup_devices"/> +</interface> diff --git a/panels/color/cc-color-profile.c b/panels/color/cc-color-profile.c new file mode 100644 index 0000000..9528d3c --- /dev/null +++ b/panels/color/cc-color-profile.c @@ -0,0 +1,475 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- + * + * Copyright (C) 2012 Richard Hughes <richard@hughsie.com> + * + * Licensed under the GNU General Public License Version 2 + * + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "config.h" + +#include <glib/gi18n.h> +#include <gtk/gtk.h> + +#include "cc-color-common.h" +#include "cc-color-profile.h" + +struct _CcColorProfile +{ + GtkListBoxRow parent_instance; + + GtkWidget *box; + CdDevice *device; + CdProfile *profile; + gboolean is_default; + gchar *sortable; + GtkWidget *widget_description; + GtkWidget *widget_image; + GtkWidget *widget_info; + GSettings *settings; +}; + +#define GCM_SETTINGS_RECALIBRATE_PRINTER_THRESHOLD "recalibrate-printer-threshold" +#define GCM_SETTINGS_RECALIBRATE_DISPLAY_THRESHOLD "recalibrate-display-threshold" + + +#define IMAGE_WIDGET_PADDING 12 + +G_DEFINE_TYPE (CcColorProfile, cc_color_profile, GTK_TYPE_LIST_BOX_ROW) + +enum +{ + PROP_0, + PROP_DEVICE, + PROP_PROFILE, + PROP_IS_DEFAULT, + PROP_LAST +}; + +static gchar * +cc_color_profile_get_profile_date (CdProfile *profile) +{ + gint64 created; + g_autoptr(GDateTime) dt = NULL; + + /* get profile age */ + created = cd_profile_get_created (profile); + if (created == 0) + return NULL; + dt = g_date_time_new_from_unix_utc (created); + return g_date_time_format (dt, "%x"); +} + +static gchar * +gcm_prefs_get_profile_title (CdProfile *profile) +{ + CdColorspace colorspace; + const gchar *tmp; + GString *str; + + str = g_string_new (""); + + /* add date only if it's a calibration profile or the profile has + * not been tagged with this data */ + tmp = cd_profile_get_metadata_item (profile, CD_PROFILE_METADATA_DATA_SOURCE); + if (tmp == NULL || g_strcmp0 (tmp, CD_PROFILE_METADATA_DATA_SOURCE_CALIB) == 0) + { + tmp = cc_color_profile_get_profile_date (profile); + if (tmp != NULL) + g_string_append_printf (str, "%s - ", tmp); + } + else if (g_strcmp0 (tmp, CD_PROFILE_METADATA_DATA_SOURCE_STANDARD) == 0) + { + /* TRANSLATORS: standard spaces are well known colorspaces like + * sRGB, AdobeRGB and ProPhotoRGB */ + g_string_append_printf (str, "%s - ", _("Standard Space")); + } + else if (g_strcmp0 (tmp, CD_PROFILE_METADATA_DATA_SOURCE_TEST) == 0) + { + /* TRANSLATORS: test profiles do things like changing the screen + * a different color, or swap the red and green channels */ + g_string_append_printf (str, "%s - ", _("Test Profile")); + } + else if (g_strcmp0 (tmp, CD_PROFILE_METADATA_DATA_SOURCE_EDID) == 0) + { + /* TRANSLATORS: automatic profiles are generated automatically + * by the color management system based on manufacturing data, + * for instance the default monitor profile is created from the + * primaries specified in the monitor EDID */ + g_string_append_printf (str, "%s - ", C_("Automatically generated profile", "Automatic")); + } + + /* add quality if it exists */ + tmp = cd_profile_get_metadata_item (profile, CD_PROFILE_METADATA_QUALITY); + if (g_strcmp0 (tmp, CD_PROFILE_METADATA_QUALITY_LOW) == 0) + { + /* TRANSLATORS: the profile quality - low quality profiles take + * much less time to generate but may be a poor reflection of the + * device capability */ + g_string_append_printf (str, "%s - ", C_("Profile quality", "Low Quality")); + } + else if (g_strcmp0 (tmp, CD_PROFILE_METADATA_QUALITY_MEDIUM) == 0) + { + /* TRANSLATORS: the profile quality */ + g_string_append_printf (str, "%s - ", C_("Profile quality", "Medium Quality")); + } + else if (g_strcmp0 (tmp, CD_PROFILE_METADATA_QUALITY_HIGH) == 0) + { + /* TRANSLATORS: the profile quality - high quality profiles take + * a *long* time, and have the best calibration and + * characterisation data. */ + g_string_append_printf (str, "%s - ", C_("Profile quality", "High Quality")); + } + + /* add profile description */ + tmp = cd_profile_get_title (profile); + if (tmp != NULL) + { + g_string_append (str, tmp); + goto out; + } + + /* some meta profiles do not have ICC profiles */ + colorspace = cd_profile_get_colorspace (profile); + if (colorspace == CD_COLORSPACE_RGB) + { + /* TRANSLATORS: this default RGB space is used for printers that + * do not have additional printer profiles specified in the PPD */ + g_string_append (str, C_("Colorspace fallback", "Default RGB")); + goto out; + } + if (colorspace == CD_COLORSPACE_CMYK) + { + /* TRANSLATORS: this default CMYK space is used for printers that + * do not have additional printer profiles specified in the PPD */ + g_string_append (str, C_("Colorspace fallback", "Default CMYK")); + goto out; + } + if (colorspace == CD_COLORSPACE_GRAY) + { + /* TRANSLATORS: this default gray space is used for printers that + * do not have additional printer profiles specified in the PPD */ + g_string_append (str, C_("Colorspace fallback", "Default Gray")); + goto out; + } + + /* fall back to ID, ick */ + tmp = g_strdup (cd_profile_get_id (profile)); + g_string_append (str, tmp); +out: + return g_string_free (str, FALSE); +} + +static const gchar * +cc_color_profile_get_warnings (CcColorProfile *color_profile) +{ + const gchar *tooltip = NULL; + const guint seconds_in_one_day = 60 * 60 * 24; + gint num_days; + guint threshold_days = 0; + + /* autogenerated printer defaults */ + if (cd_device_get_kind (color_profile->device) == CD_DEVICE_KIND_PRINTER && + cd_profile_get_filename (color_profile->profile) == NULL) + { + tooltip = _("Vendor supplied factory calibration data"); + goto out; + } + + /* autogenerated profiles are crap */ + if (cd_device_get_kind (color_profile->device) == CD_DEVICE_KIND_DISPLAY && + cd_profile_get_kind (color_profile->profile) == CD_PROFILE_KIND_DISPLAY_DEVICE && + !cd_profile_get_has_vcgt (color_profile->profile)) + { + tooltip = _("Full-screen display correction not possible with this profile"); + goto out; + } + + /* greater than the calibration threshold for the device type */ + num_days = cd_profile_get_age (color_profile->profile) / seconds_in_one_day; + if (cd_device_get_kind (color_profile->device) == CD_DEVICE_KIND_DISPLAY) + { + g_settings_get (color_profile->settings, + GCM_SETTINGS_RECALIBRATE_DISPLAY_THRESHOLD, + "u", + &threshold_days); + } + else if (cd_device_get_kind (color_profile->device) == CD_DEVICE_KIND_DISPLAY) + { + g_settings_get (color_profile->settings, + GCM_SETTINGS_RECALIBRATE_PRINTER_THRESHOLD, + "u", + &threshold_days); + } + if (threshold_days > 0 && num_days > threshold_days) + { + tooltip = _("This profile may no longer be accurate"); + goto out; + } +out: + return tooltip; +} + +static void +cc_color_profile_refresh (CcColorProfile *color_profile) +{ + const gchar *warnings; + g_autofree gchar *title = NULL; + + /* show the image if the profile is default */ + gtk_widget_set_visible (color_profile->widget_image, color_profile->is_default); + gtk_widget_set_margin_start (color_profile->widget_description, + color_profile->is_default ? 0 : IMAGE_WIDGET_PADDING * 4); + + /* set the title */ + title = gcm_prefs_get_profile_title (color_profile->profile); + gtk_label_set_markup (GTK_LABEL (color_profile->widget_description), title); + + /* show any information */ + warnings = cc_color_profile_get_warnings (color_profile); + gtk_widget_set_visible (color_profile->widget_info, warnings != NULL); + gtk_widget_set_tooltip_text (color_profile->widget_info, warnings); +} + +CdDevice * +cc_color_profile_get_device (CcColorProfile *color_profile) +{ + g_return_val_if_fail (CC_IS_COLOR_PROFILE (color_profile), NULL); + return color_profile->device; +} + +CdProfile * +cc_color_profile_get_profile (CcColorProfile *color_profile) +{ + g_return_val_if_fail (CC_IS_COLOR_PROFILE (color_profile), NULL); + return color_profile->profile; +} + +const gchar * +cc_color_profile_get_sortable (CcColorProfile *color_profile) +{ + g_return_val_if_fail (CC_IS_COLOR_PROFILE (color_profile), NULL); + return color_profile->sortable; +} + +gboolean +cc_color_profile_get_is_default (CcColorProfile *color_profile) +{ + g_return_val_if_fail (CC_IS_COLOR_PROFILE (color_profile), 0); + return color_profile->is_default; +} + +void +cc_color_profile_set_is_default (CcColorProfile *color_profile, gboolean is_default) +{ + g_return_if_fail (CC_IS_COLOR_PROFILE (color_profile)); + color_profile->is_default = is_default; + cc_color_profile_refresh (color_profile); +} + +static void +cc_color_profile_get_property (GObject *object, guint param_id, + GValue *value, GParamSpec *pspec) +{ + CcColorProfile *color_profile = CC_COLOR_PROFILE (object); + switch (param_id) + { + case PROP_DEVICE: + g_value_set_object (value, color_profile->device); + break; + case PROP_PROFILE: + g_value_set_object (value, color_profile->profile); + break; + case PROP_IS_DEFAULT: + g_value_set_boolean (value, color_profile->is_default); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); + break; + } +} + +static void +cc_color_profile_set_property (GObject *object, guint param_id, + const GValue *value, GParamSpec *pspec) +{ + CcColorProfile *color_profile = CC_COLOR_PROFILE (object); + + switch (param_id) + { + case PROP_DEVICE: + color_profile->device = g_value_dup_object (value); + break; + case PROP_PROFILE: + color_profile->profile = g_value_dup_object (value); + break; + case PROP_IS_DEFAULT: + color_profile->is_default = g_value_get_boolean (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); + break; + } +} + +static void +cc_color_profile_finalize (GObject *object) +{ + CcColorProfile *color_profile = CC_COLOR_PROFILE (object); + + g_free (color_profile->sortable); + g_object_unref (color_profile->device); + g_object_unref (color_profile->profile); + g_object_unref (color_profile->settings); + + G_OBJECT_CLASS (cc_color_profile_parent_class)->finalize (object); +} + +static void +cc_color_profile_changed_cb (CcColorProfile *color_profile) +{ + g_autoptr(CdProfile) profile = NULL; + + /* check to see if the default has changed */ + profile = cd_device_get_default_profile (color_profile->device); + if (profile != NULL) + color_profile->is_default = g_strcmp0 (cd_profile_get_object_path (profile), + cd_profile_get_object_path (color_profile->profile)) == 0; + cc_color_profile_refresh (color_profile); +} + +static const gchar * +cc_color_profile_get_profile_sort_data_source (CdProfile *profile) +{ + const gchar *tmp; + tmp = cd_profile_get_metadata_item (profile, CD_PROFILE_METADATA_DATA_SOURCE); + if (tmp == NULL) + return "9"; + if (g_strcmp0 (tmp, CD_PROFILE_METADATA_DATA_SOURCE_CALIB) == 0) + return "3"; + if (g_strcmp0 (tmp, CD_PROFILE_METADATA_DATA_SOURCE_STANDARD) == 0) + return "2"; + if (g_strcmp0 (tmp, CD_PROFILE_METADATA_DATA_SOURCE_TEST) == 0) + return "1"; + return "0"; +} + +static void +cc_color_profile_constructed (GObject *object) +{ + CcColorProfile *color_profile = CC_COLOR_PROFILE (object); + const gchar *sortable_data_source; + g_autofree gchar *sortable_device = NULL; + g_autofree gchar *title = NULL; + + /* watch to see if the default changes */ + g_signal_connect_object (color_profile->device, "changed", + G_CALLBACK (cc_color_profile_changed_cb), color_profile, G_CONNECT_SWAPPED); + g_signal_connect_object (color_profile->profile, "changed", + G_CALLBACK (cc_color_profile_changed_cb), color_profile, G_CONNECT_SWAPPED); + + /* sort the profiles in the list by: + * 1. their device (required) + * 2. the data source (so calibration profiles are listed before autogenerated ones) + * 3. the date the profiles were created (newest first) + * 4. the alpha sorting of the filename + */ + title = gcm_prefs_get_profile_title (color_profile->profile); + sortable_device = cc_color_device_get_sortable_base (color_profile->device); + sortable_data_source = cc_color_profile_get_profile_sort_data_source (color_profile->profile); + color_profile->sortable = g_strdup_printf ("%s-%s-%012" G_GINT64_FORMAT "-%s", + sortable_device, + sortable_data_source, + cd_profile_get_created (color_profile->profile), + title); + + cc_color_profile_refresh (color_profile); +} + +static void +cc_color_profile_class_init (CcColorProfileClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + object_class->get_property = cc_color_profile_get_property; + object_class->set_property = cc_color_profile_set_property; + object_class->constructed = cc_color_profile_constructed; + object_class->finalize = cc_color_profile_finalize; + + g_object_class_install_property (object_class, PROP_DEVICE, + g_param_spec_object ("device", NULL, + NULL, + CD_TYPE_DEVICE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (object_class, PROP_PROFILE, + g_param_spec_object ("profile", NULL, + NULL, + CD_TYPE_PROFILE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (object_class, PROP_IS_DEFAULT, + g_param_spec_boolean ("is-default", NULL, + NULL, + FALSE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); +} + +static void +cc_color_profile_init (CcColorProfile *color_profile) +{ + GtkWidget *box; + + color_profile->settings = g_settings_new (GCM_SETTINGS_SCHEMA); + + box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 9); + + /* default tick */ + color_profile->widget_image = gtk_image_new_from_icon_name ("object-select-symbolic", GTK_ICON_SIZE_MENU); + gtk_widget_set_margin_start (color_profile->widget_image, IMAGE_WIDGET_PADDING); + gtk_widget_set_margin_end (color_profile->widget_image, IMAGE_WIDGET_PADDING); + gtk_box_pack_start (GTK_BOX (box), color_profile->widget_image, FALSE, FALSE, 0); + + /* description */ + color_profile->widget_description = gtk_label_new (""); + gtk_widget_set_margin_top (color_profile->widget_description, 9); + gtk_widget_set_margin_bottom (color_profile->widget_description, 9); + gtk_widget_set_halign (color_profile->widget_description, GTK_ALIGN_START); + gtk_label_set_ellipsize (GTK_LABEL (color_profile->widget_description), PANGO_ELLIPSIZE_END); + gtk_label_set_xalign (GTK_LABEL (color_profile->widget_description), 0); + gtk_box_pack_start (GTK_BOX (box), color_profile->widget_description, TRUE, TRUE, 0); + gtk_widget_show (color_profile->widget_description); + + /* profile warnings/info */ + color_profile->widget_info = gtk_image_new_from_icon_name ("dialog-information-symbolic", GTK_ICON_SIZE_MENU); + gtk_widget_set_margin_start (color_profile->widget_info, IMAGE_WIDGET_PADDING); + gtk_widget_set_margin_end (color_profile->widget_info, IMAGE_WIDGET_PADDING); + gtk_box_pack_start (GTK_BOX (box), color_profile->widget_info, FALSE, FALSE, 0); + + /* refresh */ + gtk_container_add (GTK_CONTAINER (color_profile), box); + gtk_widget_set_visible (box, TRUE); +} + +GtkWidget * +cc_color_profile_new (CdDevice *device, + CdProfile *profile, + gboolean is_default) +{ + return g_object_new (CC_TYPE_COLOR_PROFILE, + "device", device, + "profile", profile, + "is-default", is_default, + NULL); +} + diff --git a/panels/color/cc-color-profile.h b/panels/color/cc-color-profile.h new file mode 100644 index 0000000..c749add --- /dev/null +++ b/panels/color/cc-color-profile.h @@ -0,0 +1,43 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- + * + * Copyright (C) 2012 Richard Hughes <richard@hughsie.com> + * + * Licensed under the GNU General Public License Version 2 + * + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#pragma once + +#include <gtk/gtk.h> +#include <colord.h> + +G_BEGIN_DECLS + +#define CC_TYPE_COLOR_PROFILE (cc_color_profile_get_type ()) +G_DECLARE_FINAL_TYPE (CcColorProfile, cc_color_profile, CC, COLOR_PROFILE, GtkListBoxRow) + +GtkWidget *cc_color_profile_new (CdDevice *device, + CdProfile *profile, + gboolean is_default); +gboolean cc_color_profile_get_is_default (CcColorProfile *color_profile); +void cc_color_profile_set_is_default (CcColorProfile *color_profile, + gboolean profile_is_default); +CdDevice *cc_color_profile_get_device (CcColorProfile *color_profile); +CdProfile *cc_color_profile_get_profile (CcColorProfile *color_profile); +const gchar *cc_color_profile_get_sortable (CcColorProfile *color_profile); + +G_END_DECLS + diff --git a/panels/color/color.gresource.xml b/panels/color/color.gresource.xml new file mode 100644 index 0000000..04cf9b3 --- /dev/null +++ b/panels/color/color.gresource.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<gresources> + <gresource prefix="/org/gnome/control-center/color"> + <file preprocess="xml-stripblanks">cc-color-calibrate.ui</file> + <file preprocess="xml-stripblanks">cc-color-panel.ui</file> + </gresource> +</gresources> diff --git a/panels/color/gnome-color-panel.desktop.in.in b/panels/color/gnome-color-panel.desktop.in.in new file mode 100644 index 0000000..947346f --- /dev/null +++ b/panels/color/gnome-color-panel.desktop.in.in @@ -0,0 +1,20 @@ +[Desktop Entry] +Name=Color +Comment=Calibrate the color of your devices, such as displays, cameras or printers +Exec=gnome-control-center color +# Translators: Do NOT translate or transliterate this text (this is an icon file name)! +Icon=preferences-color +Terminal=false +Type=Application +NoDisplay=true +StartupNotify=true +Categories=GNOME;GTK;Settings;X-GNOME-Settings-Panel;HardwareSettings;X-GNOME-DevicesSettings; +OnlyShowIn=GNOME;Unity; +X-GNOME-Bugzilla-Bugzilla=GNOME +X-GNOME-Bugzilla-Product=gnome-control-center +X-GNOME-Bugzilla-Component=color +X-GNOME-Bugzilla-Version=@VERSION@ +# Translators: Search terms to find the Color panel. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +Keywords=Color;ICC;Profile;Calibrate;Printer;Display; +# Notifications are emitted by gnome-settings-daemon +X-GNOME-UsesNotifications=true
\ No newline at end of file diff --git a/panels/color/icons/16x16/preferences-color.png b/panels/color/icons/16x16/preferences-color.png Binary files differnew file mode 100644 index 0000000..53c700f --- /dev/null +++ b/panels/color/icons/16x16/preferences-color.png diff --git a/panels/color/icons/22x22/preferences-color.png b/panels/color/icons/22x22/preferences-color.png Binary files differnew file mode 100644 index 0000000..27136cc --- /dev/null +++ b/panels/color/icons/22x22/preferences-color.png diff --git a/panels/color/icons/24x24/preferences-color.png b/panels/color/icons/24x24/preferences-color.png Binary files differnew file mode 100644 index 0000000..e96ecbc --- /dev/null +++ b/panels/color/icons/24x24/preferences-color.png diff --git a/panels/color/icons/256x256/preferences-color.png b/panels/color/icons/256x256/preferences-color.png Binary files differnew file mode 100644 index 0000000..b176de8 --- /dev/null +++ b/panels/color/icons/256x256/preferences-color.png diff --git a/panels/color/icons/32x32/preferences-color.png b/panels/color/icons/32x32/preferences-color.png Binary files differnew file mode 100644 index 0000000..d9d317f --- /dev/null +++ b/panels/color/icons/32x32/preferences-color.png diff --git a/panels/color/icons/48x48/preferences-color.png b/panels/color/icons/48x48/preferences-color.png Binary files differnew file mode 100644 index 0000000..02974ac --- /dev/null +++ b/panels/color/icons/48x48/preferences-color.png diff --git a/panels/color/icons/64x64/preferences-color.png b/panels/color/icons/64x64/preferences-color.png Binary files differnew file mode 100644 index 0000000..9e99fb0 --- /dev/null +++ b/panels/color/icons/64x64/preferences-color.png diff --git a/panels/color/icons/meson.build b/panels/color/icons/meson.build new file mode 100644 index 0000000..fe149cb --- /dev/null +++ b/panels/color/icons/meson.build @@ -0,0 +1,21 @@ +icon_sizes = [ + '16x16', + '22x22', + '24x24', + '32x32', + '48x48', + '64x64', + '256x256' +] + +foreach icon_size: icon_sizes + install_data( + join_paths(icon_size, 'preferences-color.png'), + install_dir: join_paths(control_center_icondir, 'hicolor', icon_size, 'apps') + ) +endforeach + +install_data( + 'scalable/preferences-color.svg', + install_dir: join_paths(control_center_icondir, 'hicolor', 'scalable', 'apps') +) diff --git a/panels/color/icons/render-icons.py b/panels/color/icons/render-icons.py new file mode 100755 index 0000000..639539b --- /dev/null +++ b/panels/color/icons/render-icons.py @@ -0,0 +1,149 @@ +#!/usr/bin/env python + +import os +import sys +import xml.sax +import subprocess + +INKSCAPE = '/usr/bin/inkscape' +SRC = os.path.join('.', 'src') + +inkscape_process = None + +def wait_for_prompt(process, command=None): + if command is not None: + process.stdin.write(command+'\n') + + output = process.stdout.read(1) + output += process.stdout.read(1) + + while output != "\n>": + output = output[-1:] + output += process.stdout.read(1) + +def start_inkscape(): + process = subprocess.Popen([INKSCAPE, '--shell'], bufsize=0, stdin=subprocess.PIPE, stdout=subprocess.PIPE) + wait_for_prompt(process) + return process + +def inkscape_render_rect(icon_file, rect, output_file): + global inkscape_process + if inkscape_process is None: + inkscape_process = start_inkscape() + wait_for_prompt(inkscape_process, '%s -i %s -e %s' % (icon_file, rect, output_file)) + +class ContentHandler(xml.sax.ContentHandler): + ROOT = 0 + SVG = 1 + LAYER = 2 + OTHER = 3 + TEXT = 4 + def __init__(self, path, force=False): + self.stack = [self.ROOT] + self.inside = [self.ROOT] + self.path = path + self.rects = [] + self.state = self.ROOT + self.chars = "" + self.force = force + + def endDocument(self): + pass + + def startElement(self, name, attrs): + if self.inside[-1] == self.ROOT: + if name == "svg": + self.stack.append(self.SVG) + self.inside.append(self.SVG) + return + elif self.inside[-1] == self.SVG: + if (name == "g" and attrs.has_key('inkscape:groupmode') and attrs.has_key('inkscape:label') + and attrs['inkscape:groupmode'] == 'layer' and attrs['inkscape:label'].startswith('baseplate')): + self.stack.append(self.LAYER) + self.inside.append(self.LAYER) + self.context = None + self.icon_name = None + self.rects = [] + return + elif self.inside[-1] == self.LAYER: + if name == "text" and attrs.has_key('inkscape:label') and attrs['inkscape:label'] == 'context': + self.stack.append(self.TEXT) + self.inside.append(self.TEXT) + self.text='context' + self.chars = "" + return + elif name == "text" and attrs.has_key('inkscape:label') and attrs['inkscape:label'] == 'icon-name': + self.stack.append(self.TEXT) + self.inside.append(self.TEXT) + self.text='icon-name' + self.chars = "" + return + elif name == "rect": + self.rects.append(attrs) + + self.stack.append(self.OTHER) + + + def endElement(self, name): + stacked = self.stack.pop() + if self.inside[-1] == stacked: + self.inside.pop() + + if stacked == self.TEXT and self.text is not None: + assert self.text in ['context', 'icon-name'] + if self.text == 'context': + self.context = self.chars + elif self.text == 'icon-name': + self.icon_name = self.chars + self.text = None + elif stacked == self.LAYER: + assert self.icon_name + assert self.context + print '%s %s' % (self.context, self.icon_name) + for rect in self.rects: + width = rect['width'] + height = rect['height'] + id = rect['id'] + + dir = os.path.join("icons", "%sx%s" % (width, height), self.context) + outfile = os.path.join(dir, self.icon_name+'.png') + if not os.path.exists(dir): + os.makedirs(dir) + # Do a time based check! + if self.force or not os.path.exists(outfile): + inkscape_render_rect(self.path, id, outfile) + sys.stdout.write('.') + else: + stat_in = os.stat(self.path) + stat_out = os.stat(outfile) + if stat_in.st_mtime > stat_out.st_mtime: + inkscape_render_rect(self.path, id, outfile) + sys.stdout.write('.') + else: + sys.stdout.write('-') + sys.stdout.flush() + sys.stdout.write('\n') + sys.stdout.flush() + + def characters(self, chars): + self.chars += chars.strip() + +if len(sys.argv) == 1: + if not os.path.exists('icons'): + os.mkdir('icons') + print 'Rendering from SVGs in %s' % SRC + for file in os.listdir(SRC): + if file[-4:] == '.svg': + file = os.path.join(SRC, file) + handler = ContentHandler(file) + xml.sax.parse(open(file), handler) +else: + file = os.path.join(SRC, sys.argv[1] + '.svg') + if os.path.exists(os.path.join(file)): + handler = ContentHandler(file, True) + xml.sax.parse(open(file), handler) + else: + print "Error: No such file %s" % file + sys.exit(1) + + diff --git a/panels/color/icons/scalable/preferences-color.svg b/panels/color/icons/scalable/preferences-color.svg new file mode 100644 index 0000000..0f42fc7 --- /dev/null +++ b/panels/color/icons/scalable/preferences-color.svg @@ -0,0 +1,728 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + inkscape:export-ydpi="90.000000" + inkscape:export-xdpi="90.000000" + inkscape:export-filename="/home/hbons/preferences-color.png" + width="230" + height="230" + id="svg11300" + sodipodi:version="0.32" + inkscape:version="0.47 r22583" + sodipodi:docname="preferences-color.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + version="1.0" + style="display:inline;enable-background:new"> + <sodipodi:namedview + stroke="#ef2929" + fill="#f57900" + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="0.25490196" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="2" + inkscape:cx="185.8573" + inkscape:cy="186.35354" + inkscape:current-layer="svg11300" + showgrid="false" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:showpageshadow="false" + inkscape:window-width="1680" + inkscape:window-height="977" + inkscape:window-x="0" + inkscape:window-y="25" + width="400px" + height="300px" + inkscape:snap-nodes="false" + inkscape:snap-bbox="true" + objecttolerance="7" + gridtolerance="12" + guidetolerance="13" + showguides="true" + inkscape:guide-bbox="true" + inkscape:snap-page="true" + inkscape:object-nodes="false" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid5883" + spacingx="1px" + spacingy="1px" + enabled="true" + visible="true" + empspacing="4" + snapvisiblegridlinesonly="true" /> + </sodipodi:namedview> + <defs + id="defs3"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 150 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="400 : 150 : 1" + inkscape:persp3d-origin="200 : 100 : 1" + id="perspective183" /> + <linearGradient + inkscape:collect="always" + id="linearGradient4010"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop4012" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop4014" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient4115"> + <stop + style="stop-color:#e3e3e1;stop-opacity:1" + offset="0" + id="stop4117" /> + <stop + style="stop-color:#7f8376;stop-opacity:1" + offset="1" + id="stop4119" /> + </linearGradient> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath3983"> + <path + d="m 184.125,701.5 a 2.2362916,2.2362916 0 0 0 -1.46875,0.90625 c 0,0 -3.32798,4.76714 -4.03125,11.15625 -5.01814,-4.02286 -10.75,-5.0625 -10.75,-5.0625 a 2.2362916,2.2362916 0 0 0 -2.59375,2.5625 c 0,0 1.03401,5.76487 5.0625,10.78125 -6.3978,0.70283 -11.1875,4.03125 -11.1875,4.03125 a 2.2362916,2.2362916 0 0 0 0,3.625 c 0,0 4.79479,3.3031 11.1875,4 -4.02849,5.01638 -5.0625,10.78125 -5.0625,10.78125 a 2.2362916,2.2362916 0 0 0 2.59375,2.5625 c 0,0 5.73186,-1.03964 10.75,-5.0625 0.70267,6.3934 4.03125,11.1875 4.03125,11.1875 a 2.2362916,2.2362916 0 0 0 3.625,0 c 0,0 3.31109,-4.81453 4,-11.21875 5.02623,4.04674 10.78125,5.09375 10.78125,5.09375 a 2.2362916,2.2362916 0 0 0 2.59375,-2.59375 c 0,0 -1.0624,-5.73727 -5.09375,-10.75 6.397,-0.69632 11.21875,-4 11.21875,-4 a 2.2362916,2.2362916 0 0 0 0,-3.625 c 0,0 -4.81666,-3.329 -11.21875,-4.03125 4.03134,-5.01273 5.09375,-10.75 5.09375,-10.75 A 2.2362916,2.2362916 0 0 0 201.0625,708.5 c 0,0 -5.75502,1.04701 -10.78125,5.09375 -0.69265,-6.39357 -4,-11.1875 -4,-11.1875 A 2.2362916,2.2362916 0 0 0 184.125,701.5 z" + id="path3985" + style="color:#000000;fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.30022803;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + inkscape:original="M 184.46875 703.71875 C 184.46875 703.71875 180.59375 709.06256 180.59375 715.6875 C 180.59375 716.89696 180.75838 718.0867 180.96875 719.1875 C 180.33528 718.25414 179.58087 717.32975 178.71875 716.46875 C 174.02816 711.78421 167.5 710.71875 167.5 710.71875 C 167.5 710.71875 168.55941 717.25296 173.25 721.9375 C 174.11212 722.7985 175.03419 723.55485 175.96875 724.1875 C 174.85826 723.9742 173.69012 723.8125 172.46875 723.8125 C 165.83526 723.8125 160.46875 727.6875 160.46875 727.6875 C 160.46875 727.6875 165.83526 731.53125 172.46875 731.53125 C 173.69012 731.53125 174.85826 731.4008 175.96875 731.1875 C 175.03456 731.81999 174.11178 732.54558 173.25 733.40625 C 168.55941 738.09078 167.5 744.625 167.5 744.625 C 167.5 744.625 174.02816 743.55954 178.71875 738.875 C 179.58087 738.014 180.33528 737.08961 180.96875 736.15625 C 180.75518 737.2653 180.59375 738.43646 180.59375 739.65625 C 180.59375 746.28119 184.46875 751.65625 184.46875 751.65625 C 184.46875 751.65625 188.3125 746.28119 188.3125 739.65625 C 188.3125 738.43646 188.18232 737.2653 187.96875 736.15625 C 188.60222 737.08961 189.35663 738.014 190.21875 738.875 C 194.90934 743.55954 201.4375 744.625 201.4375 744.625 C 201.4375 744.625 200.34684 738.09078 195.65625 733.40625 C 194.79906 732.55017 193.89785 731.849 192.96875 731.21875 C 194.06956 731.42831 195.22825 731.53125 196.4375 731.53125 C 203.07099 731.53125 208.46875 727.6875 208.46875 727.6875 C 208.46875 727.6875 203.07099 723.8125 196.4375 723.8125 C 195.22647 723.8125 194.07098 723.9774 192.96875 724.1875 C 193.90331 723.55485 194.79413 722.7985 195.65625 721.9375 C 200.34684 717.25296 201.4375 710.71875 201.4375 710.71875 C 201.4375 710.71875 194.90934 711.78421 190.21875 716.46875 C 189.35663 717.32975 188.60222 718.25414 187.96875 719.1875 C 188.17912 718.0867 188.3125 716.89696 188.3125 715.6875 C 188.3125 709.06256 184.46875 703.71875 184.46875 703.71875 z " + inkscape:radius="2.236068" + sodipodi:type="inkscape:offset" /> + </clipPath> + <filter + color-interpolation-filters="sRGB" + inkscape:collect="always" + id="filter4123"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="0.26224718" + id="feGaussianBlur4125" /> + </filter> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4169"> + <path + sodipodi:nodetypes="csssc" + id="path4171" + d="m 471.43078,685.92888 c 0,22.09674 -12.84202,40.00973 -12.84202,40.00973 0,0 -12.84203,-17.91299 -12.84203,-40.00973 0,-22.09678 12.84203,-40.00974 12.84203,-40.00974 0,0 12.84202,17.91296 12.84202,40.00974 z" + style="color:#000000;fill:#edd400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + </clipPath> + <filter + color-interpolation-filters="sRGB" + inkscape:collect="always" + id="filter4173" + x="-0.2469319" + width="1.4938638" + y="-0.079258353" + height="1.1585166"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="2.642588" + id="feGaussianBlur4175" /> + </filter> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4145"> + <path + style="color:#000000;fill:#3465a4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 401.43078,865.80173 c 0,22.09677 -12.84202,40.00973 -12.84202,40.00973 0,0 -12.84203,-17.91296 -12.84203,-40.00973 0,-22.09675 12.84203,-40.00974 12.84203,-40.00974 0,0 12.84202,17.91299 12.84202,40.00974 z" + id="path4147" + sodipodi:nodetypes="csssc" /> + </clipPath> + <filter + color-interpolation-filters="sRGB" + inkscape:collect="always" + id="filter4149" + x="-0.2469319" + width="1.4938638" + y="-0.079258353" + height="1.1585166"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="2.642588" + id="feGaussianBlur4151" /> + </filter> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4181"> + <path + sodipodi:nodetypes="csssc" + id="path4183" + d="m 348.71074,698.72614 c -22.06442,0 -39.95118,-12.86084 -39.95118,-12.86084 0,0 17.88676,-12.86084 39.95118,-12.86084 22.06446,0 39.95119,12.86084 39.95119,12.86084 0,0 -17.88673,12.86084 -39.95119,12.86084 z" + style="color:#000000;fill:#ef2929;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + </clipPath> + <filter + color-interpolation-filters="sRGB" + inkscape:collect="always" + id="filter4189" + x="-0.079314828" + width="1.1586297" + y="-0.24638528" + height="1.4927706"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="2.6406013" + id="feGaussianBlur4191" /> + </filter> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4197"> + <path + style="color:#000000;fill:#75507b;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 299.47143,763.19859 c -15.60192,15.62478 -37.33043,19.19718 -37.33043,19.19718 0,0 3.56716,-21.76037 19.16908,-37.38511 15.60192,-15.62479 37.33043,-19.19719 37.33043,-19.19719 0,0 -3.56717,21.76037 -19.16908,37.38512 z" + id="path4199" + sodipodi:nodetypes="csssc" /> + </clipPath> + <filter + color-interpolation-filters="sRGB" + inkscape:collect="always" + id="filter4201" + x="-0.12008792" + width="1.2401758" + y="-0.11991221" + height="1.2398244"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="2.8270453" + id="feGaussianBlur4203" /> + </filter> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4133"> + <path + style="color:#000000;fill:#65c808;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 538.46677,738.72614 c -22.06443,0 -39.95119,-12.86084 -39.95119,-12.86084 0,0 17.88676,-12.86084 39.95119,-12.86084 22.06442,0 39.95119,12.86084 39.95119,12.86084 0,0 -17.88677,12.86084 -39.95119,12.86084 z" + id="path4135" + sodipodi:nodetypes="csssc" /> + </clipPath> + <filter + color-interpolation-filters="sRGB" + inkscape:collect="always" + id="filter4137" + x="-0.079314828" + width="1.1586297" + y="-0.24638529" + height="1.4927706"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="2.6406015" + id="feGaussianBlur4139" /> + </filter> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4071"> + <path + sodipodi:nodetypes="csssc" + id="path4073" + d="m 515.86743,706.71995 c -15.60192,15.62478 -37.33043,19.19718 -37.33043,19.19718 0,0 3.56717,-21.76037 19.16909,-37.38511 15.60192,-15.62478 37.33043,-19.19719 37.33043,-19.19719 0,0 -3.56717,21.76034 -19.16909,37.38512 z" + style="color:#000000;fill:#afea2c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + </clipPath> + <filter + color-interpolation-filters="sRGB" + inkscape:collect="always" + id="filter4075" + x="-0.12008791" + width="1.2401758" + y="-0.11991222" + height="1.2398244"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="2.8270455" + id="feGaussianBlur4077" /> + </filter> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4083"> + <path + sodipodi:nodetypes="csssc" + id="path4085" + d="m 515.86743,745.01066 c 15.60192,15.62474 19.16909,37.38511 19.16909,37.38511 0,0 -21.72851,-3.5724 -37.33043,-19.19718 -15.60192,-15.62475 -19.16909,-37.38512 -19.16909,-37.38512 0,0 21.72851,3.5724 37.33043,19.19719 z" + style="color:#000000;fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + </clipPath> + <filter + color-interpolation-filters="sRGB" + inkscape:collect="always" + id="filter4087" + x="-0.12008791" + width="1.2401758" + y="-0.11991222" + height="1.2398244"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="2.8270455" + id="feGaussianBlur4089" /> + </filter> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4157"> + <path + style="color:#000000;fill:#f57900;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 269.47143,688.53202 c 15.60191,15.62474 19.16908,37.38511 19.16908,37.38511 0,0 -21.72851,-3.5724 -37.33043,-19.19718 -15.60192,-15.62478 -19.16908,-37.38512 -19.16908,-37.38512 0,0 21.72851,3.57241 37.33043,19.19719 z" + id="path4159" + sodipodi:nodetypes="csssc" /> + </clipPath> + <filter + color-interpolation-filters="sRGB" + inkscape:collect="always" + id="filter4161" + x="-0.12008792" + width="1.2401758" + y="-0.11991221" + height="1.2398244"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="2.8270453" + id="feGaussianBlur4163" /> + </filter> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4115" + id="linearGradient4042" + gradientUnits="userSpaceOnUse" + x1="177.01997" + y1="715.69196" + x2="190.86528" + y2="745.97327" /> + <filter + inkscape:collect="always" + id="filter4144" + color-interpolation-filters="sRGB"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="0.52449438" + id="feGaussianBlur4146" /> + </filter> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4010" + id="radialGradient4016" + cx="190.50462" + cy="763.02698" + fx="190.50462" + fy="763.02698" + r="25.774157" + gradientTransform="matrix(-7.100899,-3.7574025,0.65283651,-1.2337581,945.3963,1718.792)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient4010-8"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop4012-4" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop4014-5" /> + </linearGradient> + <radialGradient + r="25.774157" + fy="803.93988" + fx="190.11163" + cy="803.93988" + cx="190.11163" + gradientTransform="matrix(-7.100899,-3.7574025,0.65283651,-1.2337581,945.3963,1718.792)" + gradientUnits="userSpaceOnUse" + id="radialGradient4036" + xlink:href="#linearGradient4010-8" + inkscape:collect="always" /> + <linearGradient + inkscape:collect="always" + id="linearGradient4010-0"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop4012-2" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop4014-51" /> + </linearGradient> + <radialGradient + r="25.774157" + fy="714.44397" + fx="196.29478" + cy="714.44397" + cx="196.29478" + gradientTransform="matrix(-0.59883175,-1.0815124,1.5121107,-0.83725328,-944.82871,910.24831)" + gradientUnits="userSpaceOnUse" + id="radialGradient4036-9" + xlink:href="#linearGradient4010-0" + inkscape:collect="always" /> + <linearGradient + inkscape:collect="always" + id="linearGradient4010-3"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop4012-3" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop4014-4" /> + </linearGradient> + <radialGradient + r="25.774157" + fy="689.05688" + fx="174.41974" + cy="689.05688" + cx="174.41974" + gradientTransform="matrix(0.66761995,-1.2556356,0.62963254,0.33477488,-513.52469,163.92746)" + gradientUnits="userSpaceOnUse" + id="radialGradient4036-6" + xlink:href="#linearGradient4010-3" + inkscape:collect="always" /> + <linearGradient + inkscape:collect="always" + id="linearGradient4010-9"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop4012-29" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop4014-0" /> + </linearGradient> + <radialGradient + r="25.774157" + fy="846.39172" + fx="213.73914" + cy="846.39172" + cx="213.73914" + gradientTransform="matrix(2.1446353,0.54333384,-0.23562774,0.9300646,-46.18505,-798.23193)" + gradientUnits="userSpaceOnUse" + id="radialGradient4036-3" + xlink:href="#linearGradient4010-9" + inkscape:collect="always" /> + </defs> + <metadata + id="metadata4"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:creator> + <cc:Agent> + <dc:title>Lapo Calamandrei</dc:title> + </cc:Agent> + </dc:creator> + <dc:source /> + <cc:license + rdf:resource="" /> + <dc:title /> + <dc:subject> + <rdf:Bag> + <rdf:li>keyboard</rdf:li> + <rdf:li>keys</rdf:li> + <rdf:li>configure</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:date /> + <dc:rights> + <cc:Agent> + <dc:title /> + </cc:Agent> + </dc:rights> + <dc:publisher> + <cc:Agent> + <dc:title /> + </cc:Agent> + </dc:publisher> + <dc:identifier /> + <dc:relation /> + <dc:language /> + <dc:coverage /> + <dc:description /> + <dc:contributor> + <cc:Agent> + <dc:title /> + </cc:Agent> + </dc:contributor> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="preferences-color" + inkscape:groupmode="layer" + style="display:inline" + transform="translate(-30.407115,-47.7175)"> + <g + inkscape:groupmode="layer" + id="layer6" + inkscape:label="baseplate" + style="display:none"> + <rect + inkscape:label="48x48" + y="49.996326" + x="296.0625" + height="48" + width="48" + id="rect6284" + style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <rect + style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect6592" + width="32" + height="32" + x="303" + y="125.99633" + inkscape:label="32x32" /> + <rect + style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect8104" + width="24" + height="24" + x="302" + y="176" + inkscape:label="24x24" /> + <rect + inkscape:label="22x22" + y="177.05884" + x="303" + height="22" + width="22" + id="rect6749" + style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <rect + style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect6833" + width="16" + height="16" + x="303" + y="219" + inkscape:label="16x16" /> + <rect + inkscape:label="256x256" + y="31.996323" + x="16.0625" + height="256" + width="256" + id="rect3068" + style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <text + xml:space="preserve" + style="font-size:18.30070686px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;display:inline;enable-background:new;font-family:Bitstream Vera Sans" + x="20.970737" + y="21.513618" + id="context" + inkscape:label="context"><tspan + sodipodi:role="line" + id="tspan2716" + x="20.970737" + y="21.513618">apps</tspan></text> + <text + inkscape:label="icon-name" + id="text3021" + y="21.513618" + x="191.97073" + style="font-size:18.30070686px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;display:inline;enable-background:new;font-family:Droid Sans;-inkscape-font-specification:Droid Sans Bold" + xml:space="preserve" + sodipodi:linespacing="125%"><tspan + y="21.513618" + x="191.97073" + id="tspan3023" + sodipodi:role="line">preferences-color</tspan></text> + </g> + <g + inkscape:groupmode="layer" + id="layer8" + inkscape:label="small sizes" + style="display:inline" /> + <g + inkscape:groupmode="layer" + id="layer7" + inkscape:label="hires" + style="display:inline" /> + </g> + <g + id="g4017" + transform="translate(-24.606499,-41.050135)"> + <path + transform="matrix(4.1368925,0,0,4.1487427,-624.76596,-2861.8892)" + sodipodi:type="inkscape:offset" + inkscape:radius="2.236068" + inkscape:original="M 184.46875 703.71875 C 184.46875 703.71875 180.59375 709.06256 180.59375 715.6875 C 180.59375 716.89696 180.75838 718.0867 180.96875 719.1875 C 180.33528 718.25414 179.58087 717.32975 178.71875 716.46875 C 174.02816 711.78421 167.5 710.71875 167.5 710.71875 C 167.5 710.71875 168.55941 717.25296 173.25 721.9375 C 174.11212 722.7985 175.03419 723.55485 175.96875 724.1875 C 174.85826 723.9742 173.69012 723.8125 172.46875 723.8125 C 165.83526 723.8125 160.46875 727.6875 160.46875 727.6875 C 160.46875 727.6875 165.83526 731.53125 172.46875 731.53125 C 173.69012 731.53125 174.85826 731.4008 175.96875 731.1875 C 175.03456 731.81999 174.11178 732.54558 173.25 733.40625 C 168.55941 738.09078 167.5 744.625 167.5 744.625 C 167.5 744.625 174.02816 743.55954 178.71875 738.875 C 179.58087 738.014 180.33528 737.08961 180.96875 736.15625 C 180.75518 737.2653 180.59375 738.43646 180.59375 739.65625 C 180.59375 746.28119 184.46875 751.65625 184.46875 751.65625 C 184.46875 751.65625 188.3125 746.28119 188.3125 739.65625 C 188.3125 738.43646 188.18232 737.2653 187.96875 736.15625 C 188.60222 737.08961 189.35663 738.014 190.21875 738.875 C 194.90934 743.55954 201.4375 744.625 201.4375 744.625 C 201.4375 744.625 200.34684 738.09078 195.65625 733.40625 C 194.79906 732.55017 193.89785 731.849 192.96875 731.21875 C 194.06956 731.42831 195.22825 731.53125 196.4375 731.53125 C 203.07099 731.53125 208.46875 727.6875 208.46875 727.6875 C 208.46875 727.6875 203.07099 723.8125 196.4375 723.8125 C 195.22647 723.8125 194.07098 723.9774 192.96875 724.1875 C 193.90331 723.55485 194.79413 722.7985 195.65625 721.9375 C 200.34684 717.25296 201.4375 710.71875 201.4375 710.71875 C 201.4375 710.71875 194.90934 711.78421 190.21875 716.46875 C 189.35663 717.32975 188.60222 718.25414 187.96875 719.1875 C 188.17912 718.0867 188.3125 716.89696 188.3125 715.6875 C 188.3125 709.06256 184.46875 703.71875 184.46875 703.71875 z " + style="color:#000000;fill:url(#linearGradient4042);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.30022803;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + id="path3687" + d="m 184.125,701.5 a 2.2362916,2.2362916 0 0 0 -1.46875,0.90625 c 0,0 -3.32798,4.76714 -4.03125,11.15625 -5.01814,-4.02286 -10.75,-5.0625 -10.75,-5.0625 a 2.2362916,2.2362916 0 0 0 -2.59375,2.5625 c 0,0 1.03401,5.76487 5.0625,10.78125 -6.3978,0.70283 -11.1875,4.03125 -11.1875,4.03125 a 2.2362916,2.2362916 0 0 0 0,3.625 c 0,0 4.79479,3.3031 11.1875,4 -4.02849,5.01638 -5.0625,10.78125 -5.0625,10.78125 a 2.2362916,2.2362916 0 0 0 2.59375,2.5625 c 0,0 5.73186,-1.03964 10.75,-5.0625 0.70267,6.3934 4.03125,11.1875 4.03125,11.1875 a 2.2362916,2.2362916 0 0 0 3.625,0 c 0,0 3.31109,-4.81453 4,-11.21875 5.02623,4.04674 10.78125,5.09375 10.78125,5.09375 a 2.2362916,2.2362916 0 0 0 2.59375,-2.59375 c 0,0 -1.0624,-5.73727 -5.09375,-10.75 6.397,-0.69632 11.21875,-4 11.21875,-4 a 2.2362916,2.2362916 0 0 0 0,-3.625 c 0,0 -4.81666,-3.329 -11.21875,-4.03125 4.03134,-5.01273 5.09375,-10.75 5.09375,-10.75 A 2.2362916,2.2362916 0 0 0 201.0625,708.5 c 0,0 -5.75502,1.04701 -10.78125,5.09375 -0.69265,-6.39357 -4,-11.1875 -4,-11.1875 A 2.2362916,2.2362916 0 0 0 184.125,701.5 z" /> + <path + transform="matrix(4.1368925,0,0,4.1487427,-620.76596,-2857.8892)" + sodipodi:type="inkscape:offset" + inkscape:radius="2.236068" + inkscape:original="M 184.46875 703.71875 C 184.46875 703.71875 180.59375 709.06256 180.59375 715.6875 C 180.59375 716.89696 180.75838 718.0867 180.96875 719.1875 C 180.33528 718.25414 179.58087 717.32975 178.71875 716.46875 C 174.02816 711.78421 167.5 710.71875 167.5 710.71875 C 167.5 710.71875 168.55941 717.25296 173.25 721.9375 C 174.11212 722.7985 175.03419 723.55485 175.96875 724.1875 C 174.85826 723.9742 173.69012 723.8125 172.46875 723.8125 C 165.83526 723.8125 160.46875 727.6875 160.46875 727.6875 C 160.46875 727.6875 165.83526 731.53125 172.46875 731.53125 C 173.69012 731.53125 174.85826 731.4008 175.96875 731.1875 C 175.03456 731.81999 174.11178 732.54558 173.25 733.40625 C 168.55941 738.09078 167.5 744.625 167.5 744.625 C 167.5 744.625 174.02816 743.55954 178.71875 738.875 C 179.58087 738.014 180.33528 737.08961 180.96875 736.15625 C 180.75518 737.2653 180.59375 738.43646 180.59375 739.65625 C 180.59375 746.28119 184.46875 751.65625 184.46875 751.65625 C 184.46875 751.65625 188.3125 746.28119 188.3125 739.65625 C 188.3125 738.43646 188.18232 737.2653 187.96875 736.15625 C 188.60222 737.08961 189.35663 738.014 190.21875 738.875 C 194.90934 743.55954 201.4375 744.625 201.4375 744.625 C 201.4375 744.625 200.34684 738.09078 195.65625 733.40625 C 194.79906 732.55017 193.89785 731.849 192.96875 731.21875 C 194.06956 731.42831 195.22825 731.53125 196.4375 731.53125 C 203.07099 731.53125 208.46875 727.6875 208.46875 727.6875 C 208.46875 727.6875 203.07099 723.8125 196.4375 723.8125 C 195.22647 723.8125 194.07098 723.9774 192.96875 724.1875 C 193.90331 723.55485 194.79413 722.7985 195.65625 721.9375 C 200.34684 717.25296 201.4375 710.71875 201.4375 710.71875 C 201.4375 710.71875 194.90934 711.78421 190.21875 716.46875 C 189.35663 717.32975 188.60222 718.25414 187.96875 719.1875 C 188.17912 718.0867 188.3125 716.89696 188.3125 715.6875 C 188.3125 709.06256 184.46875 703.71875 184.46875 703.71875 z " + style="opacity:0.25;color:#000000;fill:#2e3436;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.30022803;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4144);enable-background:new" + id="path4136" + d="m 184.125,701.5 a 2.2362916,2.2362916 0 0 0 -1.46875,0.90625 c 0,0 -3.32798,4.76714 -4.03125,11.15625 -5.01814,-4.02286 -10.75,-5.0625 -10.75,-5.0625 a 2.2362916,2.2362916 0 0 0 -2.59375,2.5625 c 0,0 1.03401,5.76487 5.0625,10.78125 -6.3978,0.70283 -11.1875,4.03125 -11.1875,4.03125 a 2.2362916,2.2362916 0 0 0 0,3.625 c 0,0 4.79479,3.3031 11.1875,4 -4.02849,5.01638 -5.0625,10.78125 -5.0625,10.78125 a 2.2362916,2.2362916 0 0 0 2.59375,2.5625 c 0,0 5.73186,-1.03964 10.75,-5.0625 0.70267,6.3934 4.03125,11.1875 4.03125,11.1875 a 2.2362916,2.2362916 0 0 0 3.625,0 c 0,0 3.31109,-4.81453 4,-11.21875 5.02623,4.04674 10.78125,5.09375 10.78125,5.09375 a 2.2362916,2.2362916 0 0 0 2.59375,-2.59375 c 0,0 -1.0624,-5.73727 -5.09375,-10.75 6.397,-0.69632 11.21875,-4 11.21875,-4 a 2.2362916,2.2362916 0 0 0 0,-3.625 c 0,0 -4.81666,-3.329 -11.21875,-4.03125 4.03134,-5.01273 5.09375,-10.75 5.09375,-10.75 A 2.2362916,2.2362916 0 0 0 201.0625,708.5 c 0,0 -5.75502,1.04701 -10.78125,5.09375 -0.69265,-6.39357 -4,-11.1875 -4,-11.1875 A 2.2362916,2.2362916 0 0 0 184.125,701.5 z" + clip-path="none" /> + <path + clip-path="url(#clipPath3983)" + d="m 184.125,701.5 a 2.2362916,2.2362916 0 0 0 -1.46875,0.90625 c 0,0 -3.32798,4.76714 -4.03125,11.15625 -5.01814,-4.02286 -10.75,-5.0625 -10.75,-5.0625 a 2.2362916,2.2362916 0 0 0 -2.59375,2.5625 c 0,0 1.03401,5.76487 5.0625,10.78125 -6.3978,0.70283 -11.1875,4.03125 -11.1875,4.03125 a 2.2362916,2.2362916 0 0 0 0,3.625 c 0,0 4.79479,3.3031 11.1875,4 -4.02849,5.01638 -5.0625,10.78125 -5.0625,10.78125 a 2.2362916,2.2362916 0 0 0 2.59375,2.5625 c 0,0 5.73186,-1.03964 10.75,-5.0625 0.70267,6.3934 4.03125,11.1875 4.03125,11.1875 a 2.2362916,2.2362916 0 0 0 3.625,0 c 0,0 3.31109,-4.81453 4,-11.21875 5.02623,4.04674 10.78125,5.09375 10.78125,5.09375 a 2.2362916,2.2362916 0 0 0 2.59375,-2.59375 c 0,0 -1.0624,-5.73727 -5.09375,-10.75 6.397,-0.69632 11.21875,-4 11.21875,-4 a 2.2362916,2.2362916 0 0 0 0,-3.625 c 0,0 -4.81666,-3.329 -11.21875,-4.03125 4.03134,-5.01273 5.09375,-10.75 5.09375,-10.75 A 2.2362916,2.2362916 0 0 0 201.0625,708.5 c 0,0 -5.75502,1.04701 -10.78125,5.09375 -0.69265,-6.39357 -4,-11.1875 -4,-11.1875 A 2.2362916,2.2362916 0 0 0 184.125,701.5 z" + id="path3979" + style="opacity:0.96694186;color:#000000;fill:#f9f9f9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.30022803;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4123);enable-background:new" + inkscape:original="M 184.46875 703.71875 C 184.46875 703.71875 180.59375 709.06256 180.59375 715.6875 C 180.59375 716.89696 180.75838 718.0867 180.96875 719.1875 C 180.33528 718.25414 179.58087 717.32975 178.71875 716.46875 C 174.02816 711.78421 167.5 710.71875 167.5 710.71875 C 167.5 710.71875 168.55941 717.25296 173.25 721.9375 C 174.11212 722.7985 175.03419 723.55485 175.96875 724.1875 C 174.85826 723.9742 173.69012 723.8125 172.46875 723.8125 C 165.83526 723.8125 160.46875 727.6875 160.46875 727.6875 C 160.46875 727.6875 165.83526 731.53125 172.46875 731.53125 C 173.69012 731.53125 174.85826 731.4008 175.96875 731.1875 C 175.03456 731.81999 174.11178 732.54558 173.25 733.40625 C 168.55941 738.09078 167.5 744.625 167.5 744.625 C 167.5 744.625 174.02816 743.55954 178.71875 738.875 C 179.58087 738.014 180.33528 737.08961 180.96875 736.15625 C 180.75518 737.2653 180.59375 738.43646 180.59375 739.65625 C 180.59375 746.28119 184.46875 751.65625 184.46875 751.65625 C 184.46875 751.65625 188.3125 746.28119 188.3125 739.65625 C 188.3125 738.43646 188.18232 737.2653 187.96875 736.15625 C 188.60222 737.08961 189.35663 738.014 190.21875 738.875 C 194.90934 743.55954 201.4375 744.625 201.4375 744.625 C 201.4375 744.625 200.34684 738.09078 195.65625 733.40625 C 194.79906 732.55017 193.89785 731.849 192.96875 731.21875 C 194.06956 731.42831 195.22825 731.53125 196.4375 731.53125 C 203.07099 731.53125 208.46875 727.6875 208.46875 727.6875 C 208.46875 727.6875 203.07099 723.8125 196.4375 723.8125 C 195.22647 723.8125 194.07098 723.9774 192.96875 724.1875 C 193.90331 723.55485 194.79413 722.7985 195.65625 721.9375 C 200.34684 717.25296 201.4375 710.71875 201.4375 710.71875 C 201.4375 710.71875 194.90934 711.78421 190.21875 716.46875 C 189.35663 717.32975 188.60222 718.25414 187.96875 719.1875 C 188.17912 718.0867 188.3125 716.89696 188.3125 715.6875 C 188.3125 709.06256 184.46875 703.71875 184.46875 703.71875 z " + inkscape:radius="2.236068" + sodipodi:type="inkscape:offset" + transform="matrix(4.1368925,0,0,4.1487427,-624.76596,-2861.8892)" /> + <path + style="color:#000000;fill:#d5be00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 154.30526,107.37313 c 0,27.48513 -15.97192,49.76628 -15.97192,49.76628 0,0 -15.97193,-22.28115 -15.97193,-49.76628 0,-27.485174 15.97193,-49.766288 15.97193,-49.766288 0,0 15.97192,22.281114 15.97192,49.766288 z" + id="path3689" + sodipodi:nodetypes="csssc" /> + <path + transform="matrix(1.2437231,0,0,1.2438544,-432.02409,-745.82249)" + clip-path="url(#clipPath4169)" + sodipodi:nodetypes="csssc" + id="path4165" + d="m 471.43078,685.92888 c 0,22.09674 -12.84202,40.00973 -12.84202,40.00973 0,0 -12.84203,-17.91299 -12.84203,-40.00973 0,-22.09678 12.84203,-40.00974 12.84203,-40.00974 0,0 12.84202,17.91296 12.84202,40.00974 z" + style="color:#000000;fill:#edd400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4173);enable-background:new" /> + <path + sodipodi:nodetypes="csssc" + id="path3691" + d="m 154.30526,206.72332 c 0,27.48517 -15.97192,49.76628 -15.97192,49.76628 0,0 -15.97193,-22.28111 -15.97193,-49.76628 0,-27.48514 15.97193,-49.76629 15.97193,-49.76629 0,0 15.97192,22.28115 15.97192,49.76629 z" + style="color:#000000;fill:#23446e;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <path + sodipodi:nodetypes="csssc" + id="path3693" + d="m 187.93055,173.04523 c -27.44205,0 -49.68822,-15.99701 -49.68822,-15.99701 0,0 22.24617,-15.99701 49.68822,-15.99701 27.44202,0 49.68821,15.99701 49.68821,15.99701 0,0 -22.24619,15.99701 -49.68821,15.99701 z" + style="color:#000000;fill:#56aa07;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <path + style="color:#000000;fill:#ca0f0f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 88.736129,173.04523 c -27.442028,0 -49.688205,-15.99701 -49.688205,-15.99701 0,0 22.246177,-15.99701 49.688205,-15.99701 27.442081,0 49.688221,15.99701 49.688221,15.99701 0,0 -22.24614,15.99701 -49.688221,15.99701 z" + id="path3695" + sodipodi:nodetypes="csssc" /> + <path + style="color:#000000;fill:#85b912;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 184.69769,133.23419 c -19.40447,19.43496 -46.42872,23.8785 -46.42872,23.8785 0,0 4.43657,-27.06673 23.84104,-46.50163 19.40447,-19.434952 46.42872,-23.87851 46.42872,-23.87851 0,0 -4.43657,27.06669 -23.84104,46.50164 z" + id="path3697" + sodipodi:nodetypes="csssc" /> + <path + transform="matrix(1.2437231,0,0,1.2438544,-344.96347,-870.20793)" + clip-path="url(#clipPath4145)" + style="color:#000000;fill:#3465a4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4149);enable-background:new" + d="m 401.43078,865.80173 c 0,22.09677 -12.84202,40.00973 -12.84202,40.00973 0,0 -12.84203,-17.91296 -12.84203,-40.00973 0,-22.09675 12.84203,-40.00974 12.84203,-40.00974 0,0 12.84202,17.91299 12.84202,40.00974 z" + id="path4141" + sodipodi:nodetypes="csssc" /> + <path + transform="matrix(1.2437231,0,0,1.2438544,-344.96347,-696.06832)" + clip-path="url(#clipPath4181)" + sodipodi:nodetypes="csssc" + id="path4177" + d="m 348.71074,698.72614 c -22.06442,0 -39.95118,-12.86084 -39.95118,-12.86084 0,0 17.88676,-12.86084 39.95118,-12.86084 22.06446,0 39.95119,12.86084 39.95119,12.86084 0,0 -17.88673,12.86084 -39.95119,12.86084 z" + style="color:#000000;fill:#ef2929;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4189);enable-background:new" /> + <path + sodipodi:nodetypes="csssc" + id="path3699" + d="m 114.55668,203.4854 c -19.404469,19.43495 -46.428719,23.87849 -46.428719,23.87849 0,0 4.436559,-27.06673 23.841028,-46.50163 19.404471,-19.43496 46.428721,-23.87851 46.428721,-23.87851 0,0 -4.43658,27.06673 -23.84103,46.50165 z" + style="color:#000000;fill:#593d5e;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <path + sodipodi:nodetypes="csssc" + id="path3701" + d="m 114.55668,110.61106 c 19.40445,19.4349 23.84103,46.50163 23.84103,46.50163 0,0 -27.02425,-4.44354 -46.428721,-23.8785 C 72.56452,113.79924 68.127961,86.73255 68.127961,86.73255 c 0,0 27.02425,4.443558 46.428719,23.87851 z" + style="color:#000000;fill:#c96300;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <path + transform="matrix(1.2437231,0,0,1.2438544,-257.90286,-745.82249)" + clip-path="url(#clipPath4197)" + style="color:#000000;fill:#75507b;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4201);enable-background:new" + d="m 299.47143,763.19859 c -15.60192,15.62478 -37.33043,19.19718 -37.33043,19.19718 0,0 3.56716,-21.76037 19.16908,-37.38511 15.60192,-15.62479 37.33043,-19.19719 37.33043,-19.19719 0,0 -3.56717,21.76037 -19.16908,37.38512 z" + id="path4193" + sodipodi:nodetypes="csssc" /> + <path + style="color:#000000;fill:#3f7bba;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 184.69769,180.86226 c 19.40447,19.4349 23.84104,46.50163 23.84104,46.50163 0,0 -27.02425,-4.44354 -46.42872,-23.87849 -19.40447,-19.43492 -23.84104,-46.50165 -23.84104,-46.50165 0,0 27.02425,4.44355 46.42872,23.87851 z" + id="path3703" + sodipodi:nodetypes="csssc" /> + <path + transform="matrix(1.2437231,0,0,1.2438544,-481.77301,-745.82249)" + clip-path="url(#clipPath4133)" + style="color:#000000;fill:#65c808;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4137);enable-background:new" + d="m 538.46677,738.72614 c -22.06443,0 -39.95119,-12.86084 -39.95119,-12.86084 0,0 17.88676,-12.86084 39.95119,-12.86084 22.06442,0 39.95119,12.86084 39.95119,12.86084 0,0 -17.88677,12.86084 -39.95119,12.86084 z" + id="path4129" + sodipodi:nodetypes="csssc" /> + <path + transform="matrix(1.2437231,0,0,1.2438544,-456.89855,-745.82249)" + clip-path="url(#clipPath4071)" + sodipodi:nodetypes="csssc" + id="path4067" + d="m 515.86743,706.71995 c -15.60192,15.62478 -37.33043,19.19718 -37.33043,19.19718 0,0 3.56717,-21.76037 19.16909,-37.38511 15.60192,-15.62478 37.33043,-19.19719 37.33043,-19.19719 0,0 -3.56717,21.76034 -19.16909,37.38512 z" + style="color:#000000;fill:#afea2c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4075);enable-background:new" /> + <path + transform="matrix(1.2437231,0,0,1.2438544,-456.89855,-745.82249)" + clip-path="url(#clipPath4083)" + sodipodi:nodetypes="csssc" + id="path4079" + d="m 515.86743,745.01066 c 15.60192,15.62474 19.16909,37.38511 19.16909,37.38511 0,0 -21.72851,-3.5724 -37.33043,-19.19718 -15.60192,-15.62475 -19.16909,-37.38512 -19.16909,-37.38512 0,0 21.72851,3.5724 37.33043,19.19719 z" + style="color:#000000;fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4087);enable-background:new" /> + <path + transform="matrix(1.2437231,0,0,1.2438544,-220.59116,-745.82249)" + clip-path="url(#clipPath4157)" + style="color:#000000;fill:#f57900;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4161);enable-background:new" + d="m 269.47143,688.53202 c 15.60191,15.62474 19.16908,37.38511 19.16908,37.38511 0,0 -21.72851,-3.5724 -37.33043,-19.19718 -15.60192,-15.62478 -19.16908,-37.38512 -19.16908,-37.38512 0,0 21.72851,3.57241 37.33043,19.19719 z" + id="path4153" + sodipodi:nodetypes="csssc" /> + <path + d="m 187.625,727.61218 c 0,1.86396 -1.51104,3.375 -3.375,3.375 -1.86396,0 -3.375,-1.51104 -3.375,-3.375 0,-1.86396 1.51104,-3.375 3.375,-3.375 1.86396,0 3.375,1.51104 3.375,3.375 z" + sodipodi:ry="3.375" + sodipodi:rx="3.375" + sodipodi:cy="727.61218" + sodipodi:cx="184.25" + id="path3705" + style="opacity:0.1;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + sodipodi:type="arc" + transform="matrix(6.5480183,0,0,6.5667752,-1069.0159,-4621.279)" /> + <path + transform="matrix(14.096078,0,0,14.136457,-2459.746,-10129.072)" + sodipodi:type="arc" + style="opacity:0.1;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + id="path3707" + sodipodi:cx="184.25" + sodipodi:cy="727.61218" + sodipodi:rx="3.375" + sodipodi:ry="3.375" + d="m 187.625,727.61218 c 0,1.86396 -1.51104,3.375 -3.375,3.375 -1.86396,0 -3.375,-1.51104 -3.375,-3.375 0,-1.86396 1.51104,-3.375 3.375,-3.375 1.86396,0 3.375,1.51104 3.375,3.375 z" /> + <path + style="opacity:0.1;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 137.44938,85.332635 c -4.15028,0 -8.20042,0.379502 -12.15625,1.0625 -1.72824,6.374669 -2.9375,13.47119 -2.9375,20.968745 0,5.0399 0.52913,9.91534 1.40625,14.5 -2.6169,-3.86387 -5.65983,-7.6855 -9.21875,-11.25 -5.37148,-5.37991 -11.32311,-9.60049 -17.125,-12.906245 -7.18812,4.909705 -13.43098,11.100565 -18.40625,18.249995 3.31137,5.85188 7.55964,11.86364 12.96875,17.28125 3.55235,3.55793 7.33696,6.60095 11.1875,9.21875 -4.56742,-0.87461 -9.41806,-1.40625 -14.4375,-1.40625 -7.65792,0 -14.89692,1.26595 -21.375,3.0625 -0.73474,4.11477 -1.15625,8.36076 -1.15625,12.6875 0,4.52451 0.44816,8.92764 1.25,13.21875 6.45402,1.78244 13.66066,3.03125 21.28125,3.03125 5.00833,0 9.8477,-0.53507 14.40625,-1.40625 -3.83908,2.61272 -7.61423,5.67117 -11.15625,9.21875 -5.32369,5.33204 -9.5243,11.23579 -12.8125,17 5.04292,7.1852 11.37508,13.38158 18.65625,18.28125 5.67081,-3.27029 11.47477,-7.40404 16.71875,-12.65625 3.55892,-3.5645 6.60185,-7.38613 9.21875,-11.25 -0.87712,4.58466 -1.40625,9.46009 -1.40625,14.5 0,7.27634 1.13547,14.1779 2.78125,20.40625 4.00527,0.70084 8.1072,1.09375 12.3125,1.09375 4.84298,0 9.58458,-0.51403 14.15625,-1.4375 1.59587,-6.13752 2.6875,-12.92118 2.6875,-20.0625 0,-5.04013 -0.52905,-9.91516 -1.40625,-14.5 2.61718,3.86448 5.65928,7.68494 9.21875,11.25 4.94856,4.95633 10.38407,8.94403 15.75,12.125 7.41659,-5.13157 13.82787,-11.61275 18.84375,-19.125 -3.16079,-5.32159 -7.10049,-10.71781 -12,-15.625 -3.54201,-3.54758 -7.34841,-6.60603 -11.1875,-9.21875 4.56743,0.87461 9.38683,1.40625 14.40625,1.40625 6.90925,0 13.49045,-1.01346 19.46875,-2.53125 0.86405,-4.44743 1.3125,-9.0178 1.3125,-13.71875 0,-4.50317 -0.42428,-8.91536 -1.21875,-13.1875 -6.00406,-1.53144 -12.61592,-2.5625 -19.5625,-2.5625 -5.04162,0 -9.8836,0.52476 -14.46875,1.40625 3.85782,-2.62102 7.69109,-5.65424 11.25,-9.21875 4.98494,-4.99277 8.96814,-10.4946 12.15625,-15.90625 -4.94351,-7.47022 -11.24797,-13.95313 -18.5625,-19.093745 -5.50721,3.222955 -11.10419,7.283705 -16.1875,12.374995 -3.55947,3.56505 -6.60157,7.38552 -9.21875,11.25 0.8772,-4.58484 1.40625,-9.45987 1.40625,-14.5 0,-7.36254 -1.16592,-14.339257 -2.84375,-20.624995 -4.5237,-0.903292 -9.21157,-1.40625 -14,-1.40625 z" + id="path3906" + inkscape:connector-curvature="0" /> + </g> + <path + style="opacity:0.96694186;color:#000000;fill:none;stroke:url(#radialGradient4036);stroke-width:1.99999988;stroke-miterlimit:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 113.23782,10.255961 c -0.19939,0.02904 -0.18988,0.09127 -0.38762,0.129856 -0.1994,0.03319 -0.1903,-0.04149 -0.38763,0 -0.19774,0.04149 -0.0633,0.07841 -0.25856,0.129855 -0.19526,0.05103 -0.0662,-0.06099 -0.25855,0 -0.19237,0.06099 -0.19857,0.05933 -0.38763,0.129856 -0.18905,0.07011 -0.0732,0.0502 -0.25855,0.129856 -0.18534,0.07966 -0.0774,0.04149 -0.25856,0.129855 -0.1812,0.08878 -0.0819,0.03319 -0.25856,0.129856 -0.17664,0.0975 -0.0869,0.02489 -0.25855,0.129856 -0.17168,0.106207 -0.0922,0.144791 -0.25856,0.259296 -0.1663,0.114505 -0.098,0.0083 -0.25855,0.129856 -0.16051,0.122802 -0.10425,0.128611 -0.25856,0.259296 -0.1543,0.130685 -0.11087,-0.0083 -0.25855,0.129856 -0.14769,0.138153 -0.11791,0.11409 -0.25856,0.259296 -0.14065,0.145206 0.004,0.107038 -0.12948,0.259297 -0.13321,0.152258 -0.13321,-0.02904 -0.25856,0.129855 -0.12535,0.158482 -0.0124,0.09459 -0.12949,0.259297 0,0 -13.344495,19.338451 -16.159735,44.98793 a 2.9761723,2.9846976 0 0 1 -4.78328,1.94472 C 67.678432,43.630605 44.591469,39.428883 44.591469,39.428883 c -0.239112,-0.0419 -0.146446,-0.102059 -0.387627,-0.129856 -0.241181,-0.02904 -0.145205,0.01245 -0.387627,0 -0.242422,-0.01245 -0.145205,-0.0012 -0.387626,0 -0.242836,0.0012 -0.145619,-0.0166 -0.387627,0 -0.242422,0.01659 -0.01655,-0.02904 -0.258556,0 -0.240767,0.02904 -0.148928,0.08505 -0.387627,0.129856 -0.238699,0.04439 -0.152238,-0.0585 -0.387627,0 -0.235803,0.0585 -0.155961,0.05684 -0.387627,0.129855 -0.231666,0.0726 -0.160925,0.04315 -0.387626,0.129856 -0.227116,0.08629 -0.03723,0.02904 -0.258556,0.129856 -0.221324,0.09957 -0.172509,0.01659 -0.387627,0.129855 -0.215118,0.112846 -0.05047,0.134005 -0.258556,0.259297 -0.208085,0.125292 -0.187401,-0.0083 -0.387627,0.129855 -0.200225,0.137738 -0.0666,0.109942 -0.258555,0.259297 -0.191952,0.149354 -0.07612,0.09874 -0.258556,0.259296 -0.182437,0.160556 -0.08563,0.08837 -0.258556,0.259296 -0.172922,0.170929 -0.09639,0.078 -0.258556,0.259297 -0.162166,0.1813 -0.107145,0.06887 -0.258556,0.259296 -0.15141,0.190428 -0.119142,0.189598 -0.258555,0.388738 -0.139414,0.199139 -0.13114,0.05227 -0.258556,0.259296 -0.127416,0.207022 -0.01241,0.04481 -0.129485,0.259296 -0.115005,0.21449 -0.02896,0.168024 -0.129485,0.388738 -0.102181,0.221128 -0.169612,0.162215 -0.258555,0.388737 -0.08894,0.226521 -0.05419,0.02904 -0.129485,0.259296 -0.07529,0.2315 0.06123,0.153504 0,0.388737 -0.06123,0.235649 -0.08191,0.150185 -0.129485,0.388738 -0.04716,0.238967 0.03309,0.147695 0,0.388737 -0.03309,0.241042 -0.110869,0.146035 -0.129485,0.388737 -0.01655,0.242701 0.0041,0.145621 0,0.388737 -0.0041,0.243531 -0.0083,0.145621 0,0.388737 0.0083,0.243117 -0.02482,0.01659 0,0.259297 0.02482,0.242286 0.09018,0.148525 0.129485,0.388737 0,0 4.172511,23.296433 20.296629,43.432153 a 2.9761723,2.9846976 0 0 1 -1.939168,4.79698 c -25.613529,2.82185 -44.988706,16.20603 -44.988706,16.20603 -0.195262,0.14147 -0.07198,-0.0249 -0.258556,0.12985 -0.186574,0.15268 -0.0815,0.0958 -0.258556,0.2593 -0.177059,0.16346 -0.09143,0.0855 -0.2585558,0.2593 -0.16713,0.17383 -0.101767,0.0759 -0.258555,0.25929 -0.156789,0.18338 -0.112938,0.19665 -0.258556,0.38874 -0.145619,0.19209 0.0041,0.0589 -0.129485,0.2593 -0.134035,0.20038 -0.136517,0.051 -0.258556,0.25929 -0.122038,0.20827 -0.02068,0.17383 -0.129485,0.38874 -0.109627,0.2149 -0.161752,0.0373 -0.258555,0.2593 -0.0968,0.22112 -0.04592,0.16263 -0.129485,0.38873 -0.08357,0.22652 -0.05916,0.15807 -0.129485,0.38874 -0.06991,0.23108 0.05626,0.15433 0,0.38874 -0.05626,0.23482 -0.08688,0.0207 -0.129484,0.25929 -0.04261,0.23773 0.02896,0.14936 0,0.38874 -0.02896,0.2398 -0.115006,0.14811 -0.129485,0.38874 -0.01241,0.24104 0,0.14769 0,0.38874 0,0.24145 -0.01241,0.14811 0,0.38873 0.01241,0.24104 0.10094,0.14936 0.129485,0.38874 0.02896,0.2398 -0.04261,0.15143 0,0.38874 0.04261,0.23772 0.07281,0.0249 0.129484,0.25929 0.05626,0.23482 -0.06991,0.15807 0,0.38874 0.06991,0.23109 0.04592,0.16263 0.129485,0.38874 0.08357,0.22652 0.0331,0.16802 0.129485,0.38873 0.0968,0.22113 0.148928,0.0444 0.258555,0.2593 0.109628,0.21491 0.0083,0.18089 0.129485,0.38874 0.122039,0.20827 0.124521,0.0589 0.258556,0.25929 0.134035,0.20039 -0.01655,0.0672 0.129485,0.2593 0.145618,0.19209 0.101767,0.20578 0.258556,0.38874 0.156788,0.18337 0.09143,0.0855 0.258555,0.25929 0.1671308,0.17384 0.0815,0.0958 0.2585558,0.2593 0.177059,0.16346 0.07198,0.10662 0.258556,0.2593 0.186574,0.15267 0.06329,-0.0125 0.258556,0.12985 0,0 19.261206,13.27781 44.859428,16.07638 a 2.9761723,2.9846976 0 0 1 2.068446,4.79698 C 41.524211,162.11426 37.3517,185.41069 37.3517,185.41069 c -0.03723,0.24021 -0.104663,0.14687 -0.129484,0.38874 -0.02482,0.24229 0.0083,0.0166 0,0.2593 -0.0083,0.24311 -0.0041,0.14562 0,0.38873 0.0041,0.24353 -0.01655,0.14604 0,0.38874 0.01655,0.2427 0.09639,0.1477 0.129484,0.38874 0.03309,0.24104 -0.04716,0.15018 0,0.38873 0.04716,0.23897 0.06785,0.15351 0.129485,0.38874 0.06123,0.23565 -0.07529,0.15765 0,0.38874 0.07529,0.2315 0.04137,0.0332 0.129485,0.2593 0.08894,0.22652 0.156374,0.16802 0.258556,0.38873 0.102181,0.22113 0.01241,0.17466 0.129484,0.38874 0.115006,0.21449 0.0017,0.0523 0.129485,0.2593 0.127416,0.20702 0.119142,0.0601 0.258556,0.25929 0.139413,0.19914 0.107145,0.19831 0.258556,0.38874 0.15141,0.19043 0.09639,0.078 0.258555,0.2593 0.162167,0.1813 0.08563,0.0884 0.258556,0.25929 0.172922,0.17093 0.07612,0.0987 0.258556,0.2593 0.182437,0.16056 0.0666,0.10994 0.258556,0.2593 0.191951,0.14935 0.05833,0.12155 0.258555,0.25929 0.200226,0.13774 0.179955,0.004 0.387627,0.12986 0.208086,0.12529 0.04344,0.14645 0.258556,0.25929 0.215118,0.11285 0.166303,0.029 0.387627,0.12986 0.221324,0.0996 0.0331,0.0431 0.258556,0.12985 0.227115,0.0863 0.155961,0.0568 0.387626,0.12986 0.231666,0.0726 0.152238,0.0709 0.387627,0.12986 0.235803,0.0585 0.148928,-0.0444 0.387627,0 0.238699,0.0444 0.14686,0.0996 0.387627,0.12985 0.240767,0.029 0.01655,-0.0166 0.258556,0 0.242422,0.0166 0.145205,-0.001 0.387627,0 0.242835,10e-4 0.145205,0.0125 0.387626,0 0.242422,-0.0124 0.146446,0.029 0.387627,0 0.241181,-0.029 0.148928,-0.0875 0.387627,-0.12985 0,0 23.086963,-4.20173 43.178814,-20.35477 a 2.9761723,2.9846976 0 0 1 4.78328,1.94472 c 2.81305,25.66827 16.159745,45.11758 16.159745,45.11758 0.14106,0.19582 -0.0248,0.0722 0.12948,0.25929 0.15224,0.18711 0.0956,0.0817 0.25856,0.2593 0.16299,0.17757 0.0852,0.0917 0.25855,0.2593 0.17334,0.16761 0.0757,0.10206 0.25856,0.25929 0.18285,0.15724 0.19609,0.11326 0.38763,0.2593 0.19153,0.14604 0.0587,-0.004 0.25855,0.12986 0.19981,0.13441 0.0509,0.1369 0.25856,0.25929 0.20767,0.12239 0.17333,0.0208 0.38762,0.12986 0.2143,0.10994 0.0372,0.16221 0.25856,0.25929 0.2205,0.0971 0.16217,0.0461 0.38763,0.12986 0.22587,0.0838 0.15761,0.0593 0.38762,0.12985 0.23043,0.0701 0.1539,-0.0564 0.38763,0 0.23415,0.0564 0.0207,0.0871 0.25856,0.12986 0.23704,0.0427 0.14892,-0.029 0.38762,0 0.23912,0.029 0.14769,0.11534 0.38763,0.12986 0.24035,0.0124 0.14727,0 0.38763,0 0.24076,0 0.14768,0.0124 0.38762,0 0.24036,-0.0125 0.14893,-0.10123 0.38763,-0.12986 0.23911,-0.029 0.151,0.0427 0.38763,0 0.23704,-0.0427 0.0248,-0.073 0.25855,-0.12986 0.23415,-0.0564 0.15762,0.0701 0.38763,0 0.23042,-0.0701 0.16217,-0.0461 0.38763,-0.12985 0.22587,-0.0838 0.16754,-0.0332 0.38762,-0.12986 0.2205,-0.0971 0.0443,-0.14935 0.25856,-0.25929 0.21429,-0.10994 0.18037,-0.008 0.38763,-0.12986 0.20767,-0.12239 0.0587,-0.12488 0.25855,-0.25929 0.19981,-0.13442 0.067,0.0166 0.25856,-0.12986 0.19154,-0.14604 0.20519,-0.10206 0.38762,-0.2593 0.18286,-0.15723 0.0852,-0.0917 0.25856,-0.25929 0.17334,-0.16761 0.0956,-0.0817 0.25856,-0.2593 0.16299,-0.17757 0.10631,-0.0722 0.25855,-0.2593 0.15224,-0.1871 -0.0124,-0.0635 0.12949,-0.25929 0,0 13.27197,-19.40102 16.03045,-45.11758 a 2.9761723,2.9846976 0 0 1 4.78329,-2.07437 c 20.12395,16.24872 43.30809,20.48442 43.30809,20.48442 0.24118,0.0431 0.14438,0.10123 0.38763,0.12985 0.24325,0.029 0.14313,-0.0124 0.38762,0 0.24449,0.0125 0.14273,10e-4 0.38763,0 0.2449,-9.9e-4 0.14355,0.0166 0.38763,0 0.24449,-0.0166 0.14479,0.029 0.38762,0 0.24325,-0.029 0.0166,-0.0846 0.25856,-0.12985 0.24077,-0.0452 0.15017,0.0593 0.38763,0 0.23745,-0.0593 0.1543,-0.056 0.38762,-0.12986 0.23374,-0.0738 0.15886,-0.0419 0.38763,-0.12986 0.22877,-0.0875 0.16465,-0.029 0.38763,-0.12985 0.22298,-0.10123 0.0418,-0.14479 0.25855,-0.2593 0.21678,-0.1145 0.1783,-0.002 0.38763,-0.12985 0.20933,-0.12737 0.0571,-0.11949 0.25856,-0.2593 0.20146,-0.13981 0.19526,0.0207 0.38762,-0.12985 0.19278,-0.15185 0.0753,-0.0963 0.25856,-0.2593 0.18326,-0.16305 0.0852,-0.0855 0.25855,-0.2593 0.17334,-0.17383 0.096,-0.0755 0.25856,-0.25929 0.16258,-0.18379 0.10715,-0.066 0.25856,-0.2593 0.15141,-0.19333 -0.008,-0.18669 0.12948,-0.38874 0.13941,-0.20204 0.13155,-0.0494 0.25856,-0.25929 0.127,-0.20993 0.0165,-0.17176 0.12948,-0.38874 0.11418,-0.2174 0.15762,-0.0373 0.25856,-0.2593 0.10094,-0.22361 0.0418,-0.15931 0.12948,-0.38873 0.0873,-0.22943 0.0558,-0.15475 0.12949,-0.38874 0.0736,-0.23441 0.0699,-0.1506 0.12948,-0.38874 0.0592,-0.23855 -0.0451,-0.14728 0,-0.38874 0.0451,-0.24145 0.0989,-0.0166 0.12949,-0.25929 0.0289,-0.24395 -0.0165,-0.14396 0,-0.38874 0.0165,-0.24519 -10e-4,-0.14313 0,-0.38874 9.9e-4,-0.2456 0.0124,-0.14354 0,-0.38873 -0.0124,-0.2452 0.0289,-0.1448 0,-0.38874 -0.029,-0.24395 -0.0865,-0.14687 -0.12949,-0.38874 0,0 -4.28359,-23.17305 -20.42591,-43.3025 a 2.9761723,2.9846976 0 0 1 2.06845,-4.79698 c 25.617,-2.79642 44.98871,-16.07638 44.98871,-16.07638 0.19526,-0.14147 0.072,0.0249 0.25855,-0.12986 0.18658,-0.15267 0.0815,-0.0958 0.25856,-0.25929 0.17706,-0.16346 0.0914,-0.0855 0.25855,-0.2593 0.16713,-0.17383 0.10177,-0.0759 0.25856,-0.2593 0.15679,-0.18337 0.11294,-0.19665 0.25856,-0.38873 0.14561,-0.19209 -0.004,-0.0589 0.12948,-0.2593 0.13404,-0.20039 0.13652,-0.051 0.25856,-0.2593 0.12203,-0.20826 0.0207,-0.17383 0.12948,-0.38873 0.10963,-0.21491 0.16175,-0.0373 0.25856,-0.2593 0.0968,-0.22113 0.0459,-0.16263 0.12948,-0.38874 0.0836,-0.22652 0.0592,-0.15807 0.12949,-0.38874 0.0699,-0.23108 -0.0563,-0.15433 0,-0.38873 0.0563,-0.23482 0.0869,-0.0207 0.12948,-0.2593 0.0426,-0.23772 -0.029,-0.14935 0,-0.38874 0.029,-0.23979 0.11501,-0.14811 0.12949,-0.38873 0.0124,-0.24105 0,-0.1477 0,-0.38874 0,-0.24146 0.0124,-0.14811 0,-0.38874 -0.0124,-0.24104 -0.10094,-0.14935 -0.12949,-0.38873 -0.029,-0.2398 0.0426,-0.15143 0,-0.38874 -0.0426,-0.23773 -0.0728,-0.0249 -0.12948,-0.2593 -0.0563,-0.23482 0.0699,-0.15807 0,-0.38874 -0.0699,-0.23108 -0.0459,-0.16263 -0.12949,-0.38873 -0.0836,-0.22652 -0.0331,-0.16803 -0.12948,-0.38874 -0.0968,-0.22113 -0.14893,-0.0444 -0.25856,-0.2593 -0.10963,-0.2149 -0.008,-0.18088 -0.12948,-0.38873 -0.12204,-0.20827 -0.12452,-0.0589 -0.25856,-0.2593 -0.13404,-0.20038 0.0165,-0.0672 -0.12948,-0.2593 -0.14562,-0.19208 -0.10177,-0.20577 -0.25856,-0.38873 -0.15679,-0.18338 -0.0914,-0.0855 -0.25856,-0.2593 -0.16713,-0.17383 -0.0815,-0.0958 -0.25855,-0.2593 -0.17706,-0.16346 -0.072,-0.10662 -0.25856,-0.25929 -0.18657,-0.15268 -0.0633,0.0124 -0.25855,-0.12986 0,0 -19.48568,-13.38633 -45.11799,-16.20603 a 2.9761723,2.9846976 0 0 1 -1.93379,-4.80009 c 16.14228,-20.12945 20.42591,-43.302502 20.42591,-43.302502 0.043,-0.241872 0.10094,-0.144791 0.12948,-0.388737 0.029,-0.243946 -0.0124,-0.143547 0,-0.388737 0.0124,-0.245191 10e-4,-0.143132 0,-0.388738 -9.9e-4,-0.245605 0.0165,-0.143961 0,-0.388737 -0.0165,-0.245191 0.029,-0.145206 0,-0.388737 -0.029,-0.243946 -0.0844,-0.01659 -0.12948,-0.259296 -0.0451,-0.241457 0.0592,-0.1506 0,-0.388738 -0.0592,-0.238552 -0.0558,-0.154748 -0.12949,-0.388737 -0.0736,-0.234404 -0.0418,-0.159312 -0.12948,-0.388737 -0.0873,-0.229425 -0.029,-0.16512 -0.12949,-0.388737 -0.10094,-0.223617 -0.14437,-0.0419 -0.25855,-0.259297 -0.11418,-0.217394 -0.002,-0.17881 -0.12949,-0.388737 -0.127,-0.209926 -0.11914,-0.05725 -0.25855,-0.259296 -0.13941,-0.202044 0.0207,-0.195821 -0.12949,-0.388737 -0.15141,-0.193332 -0.096,-0.07551 -0.25855,-0.259297 -0.16258,-0.183789 -0.0852,-0.08546 -0.25856,-0.259296 -0.17333,-0.173833 -0.0753,-0.09625 -0.25855,-0.259297 -0.18327,-0.163045 -0.0658,-0.107452 -0.25856,-0.259296 -0.19278,-0.151844 -0.18657,0.0083 -0.38763,-0.129856 -0.20146,-0.139812 -0.0492,-0.13193 -0.25855,-0.259296 -0.20933,-0.127367 -0.17127,-0.01659 -0.38763,-0.129856 -0.21677,-0.114505 -0.0372,-0.158067 -0.25855,-0.259296 -0.22298,-0.10123 -0.15886,-0.0419 -0.38763,-0.129856 -0.22877,-0.08754 -0.15431,-0.05601 -0.38763,-0.129856 -0.23373,-0.07385 -0.15017,-0.07011 -0.38763,-0.129855 -0.23745,-0.05933 -0.14685,0.04522 -0.38762,0 -0.24077,-0.04522 -0.0165,-0.09915 -0.25856,-0.129856 -0.24325,-0.02904 -0.14355,0.01659 -0.38762,0 -0.24449,-0.0166 -0.14273,9.96e-4 -0.38763,0 -0.24491,-9.96e-4 -0.14314,-0.01245 -0.38763,0 -0.24449,0.01245 -0.14438,-0.02904 -0.38762,0 -0.24325,0.02904 -0.14645,0.08671 -0.38763,0.129856 0,0 -23.18414,4.2357 -43.3081,20.484417 a 2.9761723,2.9846976 0 0 1 -4.78328,-2.07437 c -2.77333,-25.672753 -16.03046,-44.98793 -16.03046,-44.98793 -0.1481,-0.209097 -0.0976,-0.06016 -0.25855,-0.259297 -0.16093,-0.199139 -0.0852,-0.07053 -0.25856,-0.259296 -0.17333,-0.188768 -0.074,-0.211171 -0.25855,-0.388737 -0.18451,-0.177566 -0.0633,-0.09376 -0.25856,-0.259297 -0.19526,-0.165534 -0.0534,0.02489 -0.25855,-0.129855 -0.20519,-0.153089 -0.17334,-0.119484 -0.38763,-0.259297 -0.21471,-0.139812 -0.0372,-0.133174 -0.25856,-0.259296 -0.22298,-0.126122 -0.15761,-0.0166 -0.38762,-0.129856 -0.23043,-0.111601 -0.151,-0.03319 -0.38763,-0.129855 -0.23663,-0.09708 -0.14562,-0.177152 -0.38763,-0.259297 -0.24242,-0.08214 -0.14065,0.06638 -0.38762,0 -0.24698,-0.06638 -0.13735,-0.07883 -0.38763,-0.129855 -0.2507,-0.05103 -0.13445,-0.09459 -0.38763,-0.129856 -0.25359,-0.03319 -0.13279,0.02074 -0.38762,0 -0.25525,-0.02074 -0.13197,0.0029 -0.38763,0 -0.17044,-0.0019 -0.19857,-0.003 -0.25856,0 -0.10011,0.0083 -0.10218,-0.0032 -0.12948,0 -0.029,0.0032 -0.029,-0.01245 -0.12949,0 z" + id="path4008-6" /> + <path + style="opacity:0.96694186;color:#000000;fill:none;stroke:url(#radialGradient4036-9);stroke-width:1.99999988;stroke-miterlimit:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 113.23782,10.255961 c -0.19939,0.02904 -0.18988,0.09127 -0.38762,0.129856 -0.1994,0.03319 -0.1903,-0.04149 -0.38763,0 -0.19774,0.04149 -0.0633,0.07841 -0.25856,0.129855 -0.19526,0.05103 -0.0662,-0.06099 -0.25855,0 -0.19237,0.06099 -0.19857,0.05933 -0.38763,0.129856 -0.18905,0.07011 -0.0732,0.0502 -0.25855,0.129856 -0.18534,0.07966 -0.0774,0.04149 -0.25856,0.129855 -0.1812,0.08878 -0.0819,0.03319 -0.25856,0.129856 -0.17664,0.0975 -0.0869,0.02489 -0.25855,0.129856 -0.17168,0.106207 -0.0922,0.144791 -0.25856,0.259296 -0.1663,0.114505 -0.098,0.0083 -0.25855,0.129856 -0.16051,0.122802 -0.10425,0.128611 -0.25856,0.259296 -0.1543,0.130685 -0.11087,-0.0083 -0.25855,0.129856 -0.14769,0.138153 -0.11791,0.11409 -0.25856,0.259296 -0.14065,0.145206 0.004,0.107038 -0.12948,0.259297 -0.13321,0.152258 -0.13321,-0.02904 -0.25856,0.129855 -0.12535,0.158482 -0.0124,0.09459 -0.12949,0.259297 0,0 -13.344495,19.338451 -16.159735,44.98793 a 2.9761723,2.9846976 0 0 1 -4.78328,1.94472 C 67.678432,43.630605 44.591469,39.428883 44.591469,39.428883 c -0.239112,-0.0419 -0.146446,-0.102059 -0.387627,-0.129856 -0.241181,-0.02904 -0.145205,0.01245 -0.387627,0 -0.242422,-0.01245 -0.145205,-0.0012 -0.387626,0 -0.242836,0.0012 -0.145619,-0.0166 -0.387627,0 -0.242422,0.01659 -0.01655,-0.02904 -0.258556,0 -0.240767,0.02904 -0.148928,0.08505 -0.387627,0.129856 -0.238699,0.04439 -0.152238,-0.0585 -0.387627,0 -0.235803,0.0585 -0.155961,0.05684 -0.387627,0.129855 -0.231666,0.0726 -0.160925,0.04315 -0.387626,0.129856 -0.227116,0.08629 -0.03723,0.02904 -0.258556,0.129856 -0.221324,0.09957 -0.172509,0.01659 -0.387627,0.129855 -0.215118,0.112846 -0.05047,0.134005 -0.258556,0.259297 -0.208085,0.125292 -0.187401,-0.0083 -0.387627,0.129855 -0.200225,0.137738 -0.0666,0.109942 -0.258555,0.259297 -0.191952,0.149354 -0.07612,0.09874 -0.258556,0.259296 -0.182437,0.160556 -0.08563,0.08837 -0.258556,0.259296 -0.172922,0.170929 -0.09639,0.078 -0.258556,0.259297 -0.162166,0.1813 -0.107145,0.06887 -0.258556,0.259296 -0.15141,0.190428 -0.119142,0.189598 -0.258555,0.388738 -0.139414,0.199139 -0.13114,0.05227 -0.258556,0.259296 -0.127416,0.207022 -0.01241,0.04481 -0.129485,0.259296 -0.115005,0.21449 -0.02896,0.168024 -0.129485,0.388738 -0.102181,0.221128 -0.169612,0.162215 -0.258555,0.388737 -0.08894,0.226521 -0.05419,0.02904 -0.129485,0.259296 -0.07529,0.2315 0.06123,0.153504 0,0.388737 -0.06123,0.235649 -0.08191,0.150185 -0.129485,0.388738 -0.04716,0.238967 0.03309,0.147695 0,0.388737 -0.03309,0.241042 -0.110869,0.146035 -0.129485,0.388737 -0.01655,0.242701 0.0041,0.145621 0,0.388737 -0.0041,0.243531 -0.0083,0.145621 0,0.388737 0.0083,0.243117 -0.02482,0.01659 0,0.259297 0.02482,0.242286 0.09018,0.148525 0.129485,0.388737 0,0 4.172511,23.296433 20.296629,43.432153 a 2.9761723,2.9846976 0 0 1 -1.939168,4.79698 c -25.613529,2.82185 -44.988706,16.20603 -44.988706,16.20603 -0.195262,0.14147 -0.07198,-0.0249 -0.258556,0.12985 -0.186574,0.15268 -0.0815,0.0958 -0.258556,0.2593 -0.177059,0.16346 -0.09143,0.0855 -0.2585558,0.2593 -0.16713,0.17383 -0.101767,0.0759 -0.258555,0.25929 -0.156789,0.18338 -0.112938,0.19665 -0.258556,0.38874 -0.145619,0.19209 0.0041,0.0589 -0.129485,0.2593 -0.134035,0.20038 -0.136517,0.051 -0.258556,0.25929 -0.122038,0.20827 -0.02068,0.17383 -0.129485,0.38874 -0.109627,0.2149 -0.161752,0.0373 -0.258555,0.2593 -0.0968,0.22112 -0.04592,0.16263 -0.129485,0.38873 -0.08357,0.22652 -0.05916,0.15807 -0.129485,0.38874 -0.06991,0.23108 0.05626,0.15433 0,0.38874 -0.05626,0.23482 -0.08688,0.0207 -0.129484,0.25929 -0.04261,0.23773 0.02896,0.14936 0,0.38874 -0.02896,0.2398 -0.115006,0.14811 -0.129485,0.38874 -0.01241,0.24104 0,0.14769 0,0.38874 0,0.24145 -0.01241,0.14811 0,0.38873 0.01241,0.24104 0.10094,0.14936 0.129485,0.38874 0.02896,0.2398 -0.04261,0.15143 0,0.38874 0.04261,0.23772 0.07281,0.0249 0.129484,0.25929 0.05626,0.23482 -0.06991,0.15807 0,0.38874 0.06991,0.23109 0.04592,0.16263 0.129485,0.38874 0.08357,0.22652 0.0331,0.16802 0.129485,0.38873 0.0968,0.22113 0.148928,0.0444 0.258555,0.2593 0.109628,0.21491 0.0083,0.18089 0.129485,0.38874 0.122039,0.20827 0.124521,0.0589 0.258556,0.25929 0.134035,0.20039 -0.01655,0.0672 0.129485,0.2593 0.145618,0.19209 0.101767,0.20578 0.258556,0.38874 0.156788,0.18337 0.09143,0.0855 0.258555,0.25929 0.1671308,0.17384 0.0815,0.0958 0.2585558,0.2593 0.177059,0.16346 0.07198,0.10662 0.258556,0.2593 0.186574,0.15267 0.06329,-0.0125 0.258556,0.12985 0,0 19.261206,13.27781 44.859428,16.07638 a 2.9761723,2.9846976 0 0 1 2.068446,4.79698 C 41.524211,162.11426 37.3517,185.41069 37.3517,185.41069 c -0.03723,0.24021 -0.104663,0.14687 -0.129484,0.38874 -0.02482,0.24229 0.0083,0.0166 0,0.2593 -0.0083,0.24311 -0.0041,0.14562 0,0.38873 0.0041,0.24353 -0.01655,0.14604 0,0.38874 0.01655,0.2427 0.09639,0.1477 0.129484,0.38874 0.03309,0.24104 -0.04716,0.15018 0,0.38873 0.04716,0.23897 0.06785,0.15351 0.129485,0.38874 0.06123,0.23565 -0.07529,0.15765 0,0.38874 0.07529,0.2315 0.04137,0.0332 0.129485,0.2593 0.08894,0.22652 0.156374,0.16802 0.258556,0.38873 0.102181,0.22113 0.01241,0.17466 0.129484,0.38874 0.115006,0.21449 0.0017,0.0523 0.129485,0.2593 0.127416,0.20702 0.119142,0.0601 0.258556,0.25929 0.139413,0.19914 0.107145,0.19831 0.258556,0.38874 0.15141,0.19043 0.09639,0.078 0.258555,0.2593 0.162167,0.1813 0.08563,0.0884 0.258556,0.25929 0.172922,0.17093 0.07612,0.0987 0.258556,0.2593 0.182437,0.16056 0.0666,0.10994 0.258556,0.2593 0.191951,0.14935 0.05833,0.12155 0.258555,0.25929 0.200226,0.13774 0.179955,0.004 0.387627,0.12986 0.208086,0.12529 0.04344,0.14645 0.258556,0.25929 0.215118,0.11285 0.166303,0.029 0.387627,0.12986 0.221324,0.0996 0.0331,0.0431 0.258556,0.12985 0.227115,0.0863 0.155961,0.0568 0.387626,0.12986 0.231666,0.0726 0.152238,0.0709 0.387627,0.12986 0.235803,0.0585 0.148928,-0.0444 0.387627,0 0.238699,0.0444 0.14686,0.0996 0.387627,0.12985 0.240767,0.029 0.01655,-0.0166 0.258556,0 0.242422,0.0166 0.145205,-0.001 0.387627,0 0.242835,10e-4 0.145205,0.0125 0.387626,0 0.242422,-0.0124 0.146446,0.029 0.387627,0 0.241181,-0.029 0.148928,-0.0875 0.387627,-0.12985 0,0 23.086963,-4.20173 43.178814,-20.35477 a 2.9761723,2.9846976 0 0 1 4.78328,1.94472 c 2.81305,25.66827 16.159745,45.11758 16.159745,45.11758 0.14106,0.19582 -0.0248,0.0722 0.12948,0.25929 0.15224,0.18711 0.0956,0.0817 0.25856,0.2593 0.16299,0.17757 0.0852,0.0917 0.25855,0.2593 0.17334,0.16761 0.0757,0.10206 0.25856,0.25929 0.18285,0.15724 0.19609,0.11326 0.38763,0.2593 0.19153,0.14604 0.0587,-0.004 0.25855,0.12986 0.19981,0.13441 0.0509,0.1369 0.25856,0.25929 0.20767,0.12239 0.17333,0.0208 0.38762,0.12986 0.2143,0.10994 0.0372,0.16221 0.25856,0.25929 0.2205,0.0971 0.16217,0.0461 0.38763,0.12986 0.22587,0.0838 0.15761,0.0593 0.38762,0.12985 0.23043,0.0701 0.1539,-0.0564 0.38763,0 0.23415,0.0564 0.0207,0.0871 0.25856,0.12986 0.23704,0.0427 0.14892,-0.029 0.38762,0 0.23912,0.029 0.14769,0.11534 0.38763,0.12986 0.24035,0.0124 0.14727,0 0.38763,0 0.24076,0 0.14768,0.0124 0.38762,0 0.24036,-0.0125 0.14893,-0.10123 0.38763,-0.12986 0.23911,-0.029 0.151,0.0427 0.38763,0 0.23704,-0.0427 0.0248,-0.073 0.25855,-0.12986 0.23415,-0.0564 0.15762,0.0701 0.38763,0 0.23042,-0.0701 0.16217,-0.0461 0.38763,-0.12985 0.22587,-0.0838 0.16754,-0.0332 0.38762,-0.12986 0.2205,-0.0971 0.0443,-0.14935 0.25856,-0.25929 0.21429,-0.10994 0.18037,-0.008 0.38763,-0.12986 0.20767,-0.12239 0.0587,-0.12488 0.25855,-0.25929 0.19981,-0.13442 0.067,0.0166 0.25856,-0.12986 0.19154,-0.14604 0.20519,-0.10206 0.38762,-0.2593 0.18286,-0.15723 0.0852,-0.0917 0.25856,-0.25929 0.17334,-0.16761 0.0956,-0.0817 0.25856,-0.2593 0.16299,-0.17757 0.10631,-0.0722 0.25855,-0.2593 0.15224,-0.1871 -0.0124,-0.0635 0.12949,-0.25929 0,0 13.27197,-19.40102 16.03045,-45.11758 a 2.9761723,2.9846976 0 0 1 4.78329,-2.07437 c 20.12395,16.24872 43.30809,20.48442 43.30809,20.48442 0.24118,0.0431 0.14438,0.10123 0.38763,0.12985 0.24325,0.029 0.14313,-0.0124 0.38762,0 0.24449,0.0125 0.14273,10e-4 0.38763,0 0.2449,-9.9e-4 0.14355,0.0166 0.38763,0 0.24449,-0.0166 0.14479,0.029 0.38762,0 0.24325,-0.029 0.0166,-0.0846 0.25856,-0.12985 0.24077,-0.0452 0.15017,0.0593 0.38763,0 0.23745,-0.0593 0.1543,-0.056 0.38762,-0.12986 0.23374,-0.0738 0.15886,-0.0419 0.38763,-0.12986 0.22877,-0.0875 0.16465,-0.029 0.38763,-0.12985 0.22298,-0.10123 0.0418,-0.14479 0.25855,-0.2593 0.21678,-0.1145 0.1783,-0.002 0.38763,-0.12985 0.20933,-0.12737 0.0571,-0.11949 0.25856,-0.2593 0.20146,-0.13981 0.19526,0.0207 0.38762,-0.12985 0.19278,-0.15185 0.0753,-0.0963 0.25856,-0.2593 0.18326,-0.16305 0.0852,-0.0855 0.25855,-0.2593 0.17334,-0.17383 0.096,-0.0755 0.25856,-0.25929 0.16258,-0.18379 0.10715,-0.066 0.25856,-0.2593 0.15141,-0.19333 -0.008,-0.18669 0.12948,-0.38874 0.13941,-0.20204 0.13155,-0.0494 0.25856,-0.25929 0.127,-0.20993 0.0165,-0.17176 0.12948,-0.38874 0.11418,-0.2174 0.15762,-0.0373 0.25856,-0.2593 0.10094,-0.22361 0.0418,-0.15931 0.12948,-0.38873 0.0873,-0.22943 0.0558,-0.15475 0.12949,-0.38874 0.0736,-0.23441 0.0699,-0.1506 0.12948,-0.38874 0.0592,-0.23855 -0.0451,-0.14728 0,-0.38874 0.0451,-0.24145 0.0989,-0.0166 0.12949,-0.25929 0.0289,-0.24395 -0.0165,-0.14396 0,-0.38874 0.0165,-0.24519 -10e-4,-0.14313 0,-0.38874 9.9e-4,-0.2456 0.0124,-0.14354 0,-0.38873 -0.0124,-0.2452 0.0289,-0.1448 0,-0.38874 -0.029,-0.24395 -0.0865,-0.14687 -0.12949,-0.38874 0,0 -4.28359,-23.17305 -20.42591,-43.3025 a 2.9761723,2.9846976 0 0 1 2.06845,-4.79698 c 25.617,-2.79642 44.98871,-16.07638 44.98871,-16.07638 0.19526,-0.14147 0.072,0.0249 0.25855,-0.12986 0.18658,-0.15267 0.0815,-0.0958 0.25856,-0.25929 0.17706,-0.16346 0.0914,-0.0855 0.25855,-0.2593 0.16713,-0.17383 0.10177,-0.0759 0.25856,-0.2593 0.15679,-0.18337 0.11294,-0.19665 0.25856,-0.38873 0.14561,-0.19209 -0.004,-0.0589 0.12948,-0.2593 0.13404,-0.20039 0.13652,-0.051 0.25856,-0.2593 0.12203,-0.20826 0.0207,-0.17383 0.12948,-0.38873 0.10963,-0.21491 0.16175,-0.0373 0.25856,-0.2593 0.0968,-0.22113 0.0459,-0.16263 0.12948,-0.38874 0.0836,-0.22652 0.0592,-0.15807 0.12949,-0.38874 0.0699,-0.23108 -0.0563,-0.15433 0,-0.38873 0.0563,-0.23482 0.0869,-0.0207 0.12948,-0.2593 0.0426,-0.23772 -0.029,-0.14935 0,-0.38874 0.029,-0.23979 0.11501,-0.14811 0.12949,-0.38873 0.0124,-0.24105 0,-0.1477 0,-0.38874 0,-0.24146 0.0124,-0.14811 0,-0.38874 -0.0124,-0.24104 -0.10094,-0.14935 -0.12949,-0.38873 -0.029,-0.2398 0.0426,-0.15143 0,-0.38874 -0.0426,-0.23773 -0.0728,-0.0249 -0.12948,-0.2593 -0.0563,-0.23482 0.0699,-0.15807 0,-0.38874 -0.0699,-0.23108 -0.0459,-0.16263 -0.12949,-0.38873 -0.0836,-0.22652 -0.0331,-0.16803 -0.12948,-0.38874 -0.0968,-0.22113 -0.14893,-0.0444 -0.25856,-0.2593 -0.10963,-0.2149 -0.008,-0.18088 -0.12948,-0.38873 -0.12204,-0.20827 -0.12452,-0.0589 -0.25856,-0.2593 -0.13404,-0.20038 0.0165,-0.0672 -0.12948,-0.2593 -0.14562,-0.19208 -0.10177,-0.20577 -0.25856,-0.38873 -0.15679,-0.18338 -0.0914,-0.0855 -0.25856,-0.2593 -0.16713,-0.17383 -0.0815,-0.0958 -0.25855,-0.2593 -0.17706,-0.16346 -0.072,-0.10662 -0.25856,-0.25929 -0.18657,-0.15268 -0.0633,0.0124 -0.25855,-0.12986 0,0 -19.48568,-13.38633 -45.11799,-16.20603 a 2.9761723,2.9846976 0 0 1 -1.93379,-4.80009 c 16.14228,-20.12945 20.42591,-43.302502 20.42591,-43.302502 0.043,-0.241872 0.10094,-0.144791 0.12948,-0.388737 0.029,-0.243946 -0.0124,-0.143547 0,-0.388737 0.0124,-0.245191 10e-4,-0.143132 0,-0.388738 -9.9e-4,-0.245605 0.0165,-0.143961 0,-0.388737 -0.0165,-0.245191 0.029,-0.145206 0,-0.388737 -0.029,-0.243946 -0.0844,-0.01659 -0.12948,-0.259296 -0.0451,-0.241457 0.0592,-0.1506 0,-0.388738 -0.0592,-0.238552 -0.0558,-0.154748 -0.12949,-0.388737 -0.0736,-0.234404 -0.0418,-0.159312 -0.12948,-0.388737 -0.0873,-0.229425 -0.029,-0.16512 -0.12949,-0.388737 -0.10094,-0.223617 -0.14437,-0.0419 -0.25855,-0.259297 -0.11418,-0.217394 -0.002,-0.17881 -0.12949,-0.388737 -0.127,-0.209926 -0.11914,-0.05725 -0.25855,-0.259296 -0.13941,-0.202044 0.0207,-0.195821 -0.12949,-0.388737 -0.15141,-0.193332 -0.096,-0.07551 -0.25855,-0.259297 -0.16258,-0.183789 -0.0852,-0.08546 -0.25856,-0.259296 -0.17333,-0.173833 -0.0753,-0.09625 -0.25855,-0.259297 -0.18327,-0.163045 -0.0658,-0.107452 -0.25856,-0.259296 -0.19278,-0.151844 -0.18657,0.0083 -0.38763,-0.129856 -0.20146,-0.139812 -0.0492,-0.13193 -0.25855,-0.259296 -0.20933,-0.127367 -0.17127,-0.01659 -0.38763,-0.129856 -0.21677,-0.114505 -0.0372,-0.158067 -0.25855,-0.259296 -0.22298,-0.10123 -0.15886,-0.0419 -0.38763,-0.129856 -0.22877,-0.08754 -0.15431,-0.05601 -0.38763,-0.129856 -0.23373,-0.07385 -0.15017,-0.07011 -0.38763,-0.129855 -0.23745,-0.05933 -0.14685,0.04522 -0.38762,0 -0.24077,-0.04522 -0.0165,-0.09915 -0.25856,-0.129856 -0.24325,-0.02904 -0.14355,0.01659 -0.38762,0 -0.24449,-0.0166 -0.14273,9.96e-4 -0.38763,0 -0.24491,-9.96e-4 -0.14314,-0.01245 -0.38763,0 -0.24449,0.01245 -0.14438,-0.02904 -0.38762,0 -0.24325,0.02904 -0.14645,0.08671 -0.38763,0.129856 0,0 -23.18414,4.2357 -43.3081,20.484417 a 2.9761723,2.9846976 0 0 1 -4.78328,-2.07437 c -2.77333,-25.672753 -16.03046,-44.98793 -16.03046,-44.98793 -0.1481,-0.209097 -0.0976,-0.06016 -0.25855,-0.259297 -0.16093,-0.199139 -0.0852,-0.07053 -0.25856,-0.259296 -0.17333,-0.188768 -0.074,-0.211171 -0.25855,-0.388737 -0.18451,-0.177566 -0.0633,-0.09376 -0.25856,-0.259297 -0.19526,-0.165534 -0.0534,0.02489 -0.25855,-0.129855 -0.20519,-0.153089 -0.17334,-0.119484 -0.38763,-0.259297 -0.21471,-0.139812 -0.0372,-0.133174 -0.25856,-0.259296 -0.22298,-0.126122 -0.15761,-0.0166 -0.38762,-0.129856 -0.23043,-0.111601 -0.151,-0.03319 -0.38763,-0.129855 -0.23663,-0.09708 -0.14562,-0.177152 -0.38763,-0.259297 -0.24242,-0.08214 -0.14065,0.06638 -0.38762,0 -0.24698,-0.06638 -0.13735,-0.07883 -0.38763,-0.129855 -0.2507,-0.05103 -0.13445,-0.09459 -0.38763,-0.129856 -0.25359,-0.03319 -0.13279,0.02074 -0.38762,0 -0.25525,-0.02074 -0.13197,0.0029 -0.38763,0 -0.17044,-0.0019 -0.19857,-0.003 -0.25856,0 -0.10011,0.0083 -0.10218,-0.0032 -0.12948,0 -0.029,0.0032 -0.029,-0.01245 -0.12949,0 z" + id="path4008-7" /> + <path + style="opacity:0.96694186;color:#000000;fill:none;stroke:url(#radialGradient4036-6);stroke-width:1.99999988;stroke-miterlimit:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 113.23782,10.255961 c -0.19939,0.02904 -0.18988,0.09127 -0.38762,0.129856 -0.1994,0.03319 -0.1903,-0.04149 -0.38763,0 -0.19774,0.04149 -0.0633,0.07841 -0.25856,0.129855 -0.19526,0.05103 -0.0662,-0.06099 -0.25855,0 -0.19237,0.06099 -0.19857,0.05933 -0.38763,0.129856 -0.18905,0.07011 -0.0732,0.0502 -0.25855,0.129856 -0.18534,0.07966 -0.0774,0.04149 -0.25856,0.129855 -0.1812,0.08878 -0.0819,0.03319 -0.25856,0.129856 -0.17664,0.0975 -0.0869,0.02489 -0.25855,0.129856 -0.17168,0.106207 -0.0922,0.144791 -0.25856,0.259296 -0.1663,0.114505 -0.098,0.0083 -0.25855,0.129856 -0.16051,0.122802 -0.10425,0.128611 -0.25856,0.259296 -0.1543,0.130685 -0.11087,-0.0083 -0.25855,0.129856 -0.14769,0.138153 -0.11791,0.11409 -0.25856,0.259296 -0.14065,0.145206 0.004,0.107038 -0.12948,0.259297 -0.13321,0.152258 -0.13321,-0.02904 -0.25856,0.129855 -0.12535,0.158482 -0.0124,0.09459 -0.12949,0.259297 0,0 -13.344495,19.338451 -16.159735,44.98793 a 2.9761723,2.9846976 0 0 1 -4.78328,1.94472 C 67.678432,43.630605 44.591469,39.428883 44.591469,39.428883 c -0.239112,-0.0419 -0.146446,-0.102059 -0.387627,-0.129856 -0.241181,-0.02904 -0.145205,0.01245 -0.387627,0 -0.242422,-0.01245 -0.145205,-0.0012 -0.387626,0 -0.242836,0.0012 -0.145619,-0.0166 -0.387627,0 -0.242422,0.01659 -0.01655,-0.02904 -0.258556,0 -0.240767,0.02904 -0.148928,0.08505 -0.387627,0.129856 -0.238699,0.04439 -0.152238,-0.0585 -0.387627,0 -0.235803,0.0585 -0.155961,0.05684 -0.387627,0.129855 -0.231666,0.0726 -0.160925,0.04315 -0.387626,0.129856 -0.227116,0.08629 -0.03723,0.02904 -0.258556,0.129856 -0.221324,0.09957 -0.172509,0.01659 -0.387627,0.129855 -0.215118,0.112846 -0.05047,0.134005 -0.258556,0.259297 -0.208085,0.125292 -0.187401,-0.0083 -0.387627,0.129855 -0.200225,0.137738 -0.0666,0.109942 -0.258555,0.259297 -0.191952,0.149354 -0.07612,0.09874 -0.258556,0.259296 -0.182437,0.160556 -0.08563,0.08837 -0.258556,0.259296 -0.172922,0.170929 -0.09639,0.078 -0.258556,0.259297 -0.162166,0.1813 -0.107145,0.06887 -0.258556,0.259296 -0.15141,0.190428 -0.119142,0.189598 -0.258555,0.388738 -0.139414,0.199139 -0.13114,0.05227 -0.258556,0.259296 -0.127416,0.207022 -0.01241,0.04481 -0.129485,0.259296 -0.115005,0.21449 -0.02896,0.168024 -0.129485,0.388738 -0.102181,0.221128 -0.169612,0.162215 -0.258555,0.388737 -0.08894,0.226521 -0.05419,0.02904 -0.129485,0.259296 -0.07529,0.2315 0.06123,0.153504 0,0.388737 -0.06123,0.235649 -0.08191,0.150185 -0.129485,0.388738 -0.04716,0.238967 0.03309,0.147695 0,0.388737 -0.03309,0.241042 -0.110869,0.146035 -0.129485,0.388737 -0.01655,0.242701 0.0041,0.145621 0,0.388737 -0.0041,0.243531 -0.0083,0.145621 0,0.388737 0.0083,0.243117 -0.02482,0.01659 0,0.259297 0.02482,0.242286 0.09018,0.148525 0.129485,0.388737 0,0 4.172511,23.296433 20.296629,43.432153 a 2.9761723,2.9846976 0 0 1 -1.939168,4.79698 c -25.613529,2.82185 -44.988706,16.20603 -44.988706,16.20603 -0.195262,0.14147 -0.07198,-0.0249 -0.258556,0.12985 -0.186574,0.15268 -0.0815,0.0958 -0.258556,0.2593 -0.177059,0.16346 -0.09143,0.0855 -0.2585558,0.2593 -0.16713,0.17383 -0.101767,0.0759 -0.258555,0.25929 -0.156789,0.18338 -0.112938,0.19665 -0.258556,0.38874 -0.145619,0.19209 0.0041,0.0589 -0.129485,0.2593 -0.134035,0.20038 -0.136517,0.051 -0.258556,0.25929 -0.122038,0.20827 -0.02068,0.17383 -0.129485,0.38874 -0.109627,0.2149 -0.161752,0.0373 -0.258555,0.2593 -0.0968,0.22112 -0.04592,0.16263 -0.129485,0.38873 -0.08357,0.22652 -0.05916,0.15807 -0.129485,0.38874 -0.06991,0.23108 0.05626,0.15433 0,0.38874 -0.05626,0.23482 -0.08688,0.0207 -0.129484,0.25929 -0.04261,0.23773 0.02896,0.14936 0,0.38874 -0.02896,0.2398 -0.115006,0.14811 -0.129485,0.38874 -0.01241,0.24104 0,0.14769 0,0.38874 0,0.24145 -0.01241,0.14811 0,0.38873 0.01241,0.24104 0.10094,0.14936 0.129485,0.38874 0.02896,0.2398 -0.04261,0.15143 0,0.38874 0.04261,0.23772 0.07281,0.0249 0.129484,0.25929 0.05626,0.23482 -0.06991,0.15807 0,0.38874 0.06991,0.23109 0.04592,0.16263 0.129485,0.38874 0.08357,0.22652 0.0331,0.16802 0.129485,0.38873 0.0968,0.22113 0.148928,0.0444 0.258555,0.2593 0.109628,0.21491 0.0083,0.18089 0.129485,0.38874 0.122039,0.20827 0.124521,0.0589 0.258556,0.25929 0.134035,0.20039 -0.01655,0.0672 0.129485,0.2593 0.145618,0.19209 0.101767,0.20578 0.258556,0.38874 0.156788,0.18337 0.09143,0.0855 0.258555,0.25929 0.1671308,0.17384 0.0815,0.0958 0.2585558,0.2593 0.177059,0.16346 0.07198,0.10662 0.258556,0.2593 0.186574,0.15267 0.06329,-0.0125 0.258556,0.12985 0,0 19.261206,13.27781 44.859428,16.07638 a 2.9761723,2.9846976 0 0 1 2.068446,4.79698 C 41.524211,162.11426 37.3517,185.41069 37.3517,185.41069 c -0.03723,0.24021 -0.104663,0.14687 -0.129484,0.38874 -0.02482,0.24229 0.0083,0.0166 0,0.2593 -0.0083,0.24311 -0.0041,0.14562 0,0.38873 0.0041,0.24353 -0.01655,0.14604 0,0.38874 0.01655,0.2427 0.09639,0.1477 0.129484,0.38874 0.03309,0.24104 -0.04716,0.15018 0,0.38873 0.04716,0.23897 0.06785,0.15351 0.129485,0.38874 0.06123,0.23565 -0.07529,0.15765 0,0.38874 0.07529,0.2315 0.04137,0.0332 0.129485,0.2593 0.08894,0.22652 0.156374,0.16802 0.258556,0.38873 0.102181,0.22113 0.01241,0.17466 0.129484,0.38874 0.115006,0.21449 0.0017,0.0523 0.129485,0.2593 0.127416,0.20702 0.119142,0.0601 0.258556,0.25929 0.139413,0.19914 0.107145,0.19831 0.258556,0.38874 0.15141,0.19043 0.09639,0.078 0.258555,0.2593 0.162167,0.1813 0.08563,0.0884 0.258556,0.25929 0.172922,0.17093 0.07612,0.0987 0.258556,0.2593 0.182437,0.16056 0.0666,0.10994 0.258556,0.2593 0.191951,0.14935 0.05833,0.12155 0.258555,0.25929 0.200226,0.13774 0.179955,0.004 0.387627,0.12986 0.208086,0.12529 0.04344,0.14645 0.258556,0.25929 0.215118,0.11285 0.166303,0.029 0.387627,0.12986 0.221324,0.0996 0.0331,0.0431 0.258556,0.12985 0.227115,0.0863 0.155961,0.0568 0.387626,0.12986 0.231666,0.0726 0.152238,0.0709 0.387627,0.12986 0.235803,0.0585 0.148928,-0.0444 0.387627,0 0.238699,0.0444 0.14686,0.0996 0.387627,0.12985 0.240767,0.029 0.01655,-0.0166 0.258556,0 0.242422,0.0166 0.145205,-0.001 0.387627,0 0.242835,10e-4 0.145205,0.0125 0.387626,0 0.242422,-0.0124 0.146446,0.029 0.387627,0 0.241181,-0.029 0.148928,-0.0875 0.387627,-0.12985 0,0 23.086963,-4.20173 43.178814,-20.35477 a 2.9761723,2.9846976 0 0 1 4.78328,1.94472 c 2.81305,25.66827 16.159745,45.11758 16.159745,45.11758 0.14106,0.19582 -0.0248,0.0722 0.12948,0.25929 0.15224,0.18711 0.0956,0.0817 0.25856,0.2593 0.16299,0.17757 0.0852,0.0917 0.25855,0.2593 0.17334,0.16761 0.0757,0.10206 0.25856,0.25929 0.18285,0.15724 0.19609,0.11326 0.38763,0.2593 0.19153,0.14604 0.0587,-0.004 0.25855,0.12986 0.19981,0.13441 0.0509,0.1369 0.25856,0.25929 0.20767,0.12239 0.17333,0.0208 0.38762,0.12986 0.2143,0.10994 0.0372,0.16221 0.25856,0.25929 0.2205,0.0971 0.16217,0.0461 0.38763,0.12986 0.22587,0.0838 0.15761,0.0593 0.38762,0.12985 0.23043,0.0701 0.1539,-0.0564 0.38763,0 0.23415,0.0564 0.0207,0.0871 0.25856,0.12986 0.23704,0.0427 0.14892,-0.029 0.38762,0 0.23912,0.029 0.14769,0.11534 0.38763,0.12986 0.24035,0.0124 0.14727,0 0.38763,0 0.24076,0 0.14768,0.0124 0.38762,0 0.24036,-0.0125 0.14893,-0.10123 0.38763,-0.12986 0.23911,-0.029 0.151,0.0427 0.38763,0 0.23704,-0.0427 0.0248,-0.073 0.25855,-0.12986 0.23415,-0.0564 0.15762,0.0701 0.38763,0 0.23042,-0.0701 0.16217,-0.0461 0.38763,-0.12985 0.22587,-0.0838 0.16754,-0.0332 0.38762,-0.12986 0.2205,-0.0971 0.0443,-0.14935 0.25856,-0.25929 0.21429,-0.10994 0.18037,-0.008 0.38763,-0.12986 0.20767,-0.12239 0.0587,-0.12488 0.25855,-0.25929 0.19981,-0.13442 0.067,0.0166 0.25856,-0.12986 0.19154,-0.14604 0.20519,-0.10206 0.38762,-0.2593 0.18286,-0.15723 0.0852,-0.0917 0.25856,-0.25929 0.17334,-0.16761 0.0956,-0.0817 0.25856,-0.2593 0.16299,-0.17757 0.10631,-0.0722 0.25855,-0.2593 0.15224,-0.1871 -0.0124,-0.0635 0.12949,-0.25929 0,0 13.27197,-19.40102 16.03045,-45.11758 a 2.9761723,2.9846976 0 0 1 4.78329,-2.07437 c 20.12395,16.24872 43.30809,20.48442 43.30809,20.48442 0.24118,0.0431 0.14438,0.10123 0.38763,0.12985 0.24325,0.029 0.14313,-0.0124 0.38762,0 0.24449,0.0125 0.14273,10e-4 0.38763,0 0.2449,-9.9e-4 0.14355,0.0166 0.38763,0 0.24449,-0.0166 0.14479,0.029 0.38762,0 0.24325,-0.029 0.0166,-0.0846 0.25856,-0.12985 0.24077,-0.0452 0.15017,0.0593 0.38763,0 0.23745,-0.0593 0.1543,-0.056 0.38762,-0.12986 0.23374,-0.0738 0.15886,-0.0419 0.38763,-0.12986 0.22877,-0.0875 0.16465,-0.029 0.38763,-0.12985 0.22298,-0.10123 0.0418,-0.14479 0.25855,-0.2593 0.21678,-0.1145 0.1783,-0.002 0.38763,-0.12985 0.20933,-0.12737 0.0571,-0.11949 0.25856,-0.2593 0.20146,-0.13981 0.19526,0.0207 0.38762,-0.12985 0.19278,-0.15185 0.0753,-0.0963 0.25856,-0.2593 0.18326,-0.16305 0.0852,-0.0855 0.25855,-0.2593 0.17334,-0.17383 0.096,-0.0755 0.25856,-0.25929 0.16258,-0.18379 0.10715,-0.066 0.25856,-0.2593 0.15141,-0.19333 -0.008,-0.18669 0.12948,-0.38874 0.13941,-0.20204 0.13155,-0.0494 0.25856,-0.25929 0.127,-0.20993 0.0165,-0.17176 0.12948,-0.38874 0.11418,-0.2174 0.15762,-0.0373 0.25856,-0.2593 0.10094,-0.22361 0.0418,-0.15931 0.12948,-0.38873 0.0873,-0.22943 0.0558,-0.15475 0.12949,-0.38874 0.0736,-0.23441 0.0699,-0.1506 0.12948,-0.38874 0.0592,-0.23855 -0.0451,-0.14728 0,-0.38874 0.0451,-0.24145 0.0989,-0.0166 0.12949,-0.25929 0.0289,-0.24395 -0.0165,-0.14396 0,-0.38874 0.0165,-0.24519 -10e-4,-0.14313 0,-0.38874 9.9e-4,-0.2456 0.0124,-0.14354 0,-0.38873 -0.0124,-0.2452 0.0289,-0.1448 0,-0.38874 -0.029,-0.24395 -0.0865,-0.14687 -0.12949,-0.38874 0,0 -4.28359,-23.17305 -20.42591,-43.3025 a 2.9761723,2.9846976 0 0 1 2.06845,-4.79698 c 25.617,-2.79642 44.98871,-16.07638 44.98871,-16.07638 0.19526,-0.14147 0.072,0.0249 0.25855,-0.12986 0.18658,-0.15267 0.0815,-0.0958 0.25856,-0.25929 0.17706,-0.16346 0.0914,-0.0855 0.25855,-0.2593 0.16713,-0.17383 0.10177,-0.0759 0.25856,-0.2593 0.15679,-0.18337 0.11294,-0.19665 0.25856,-0.38873 0.14561,-0.19209 -0.004,-0.0589 0.12948,-0.2593 0.13404,-0.20039 0.13652,-0.051 0.25856,-0.2593 0.12203,-0.20826 0.0207,-0.17383 0.12948,-0.38873 0.10963,-0.21491 0.16175,-0.0373 0.25856,-0.2593 0.0968,-0.22113 0.0459,-0.16263 0.12948,-0.38874 0.0836,-0.22652 0.0592,-0.15807 0.12949,-0.38874 0.0699,-0.23108 -0.0563,-0.15433 0,-0.38873 0.0563,-0.23482 0.0869,-0.0207 0.12948,-0.2593 0.0426,-0.23772 -0.029,-0.14935 0,-0.38874 0.029,-0.23979 0.11501,-0.14811 0.12949,-0.38873 0.0124,-0.24105 0,-0.1477 0,-0.38874 0,-0.24146 0.0124,-0.14811 0,-0.38874 -0.0124,-0.24104 -0.10094,-0.14935 -0.12949,-0.38873 -0.029,-0.2398 0.0426,-0.15143 0,-0.38874 -0.0426,-0.23773 -0.0728,-0.0249 -0.12948,-0.2593 -0.0563,-0.23482 0.0699,-0.15807 0,-0.38874 -0.0699,-0.23108 -0.0459,-0.16263 -0.12949,-0.38873 -0.0836,-0.22652 -0.0331,-0.16803 -0.12948,-0.38874 -0.0968,-0.22113 -0.14893,-0.0444 -0.25856,-0.2593 -0.10963,-0.2149 -0.008,-0.18088 -0.12948,-0.38873 -0.12204,-0.20827 -0.12452,-0.0589 -0.25856,-0.2593 -0.13404,-0.20038 0.0165,-0.0672 -0.12948,-0.2593 -0.14562,-0.19208 -0.10177,-0.20577 -0.25856,-0.38873 -0.15679,-0.18338 -0.0914,-0.0855 -0.25856,-0.2593 -0.16713,-0.17383 -0.0815,-0.0958 -0.25855,-0.2593 -0.17706,-0.16346 -0.072,-0.10662 -0.25856,-0.25929 -0.18657,-0.15268 -0.0633,0.0124 -0.25855,-0.12986 0,0 -19.48568,-13.38633 -45.11799,-16.20603 a 2.9761723,2.9846976 0 0 1 -1.93379,-4.80009 c 16.14228,-20.12945 20.42591,-43.302502 20.42591,-43.302502 0.043,-0.241872 0.10094,-0.144791 0.12948,-0.388737 0.029,-0.243946 -0.0124,-0.143547 0,-0.388737 0.0124,-0.245191 10e-4,-0.143132 0,-0.388738 -9.9e-4,-0.245605 0.0165,-0.143961 0,-0.388737 -0.0165,-0.245191 0.029,-0.145206 0,-0.388737 -0.029,-0.243946 -0.0844,-0.01659 -0.12948,-0.259296 -0.0451,-0.241457 0.0592,-0.1506 0,-0.388738 -0.0592,-0.238552 -0.0558,-0.154748 -0.12949,-0.388737 -0.0736,-0.234404 -0.0418,-0.159312 -0.12948,-0.388737 -0.0873,-0.229425 -0.029,-0.16512 -0.12949,-0.388737 -0.10094,-0.223617 -0.14437,-0.0419 -0.25855,-0.259297 -0.11418,-0.217394 -0.002,-0.17881 -0.12949,-0.388737 -0.127,-0.209926 -0.11914,-0.05725 -0.25855,-0.259296 -0.13941,-0.202044 0.0207,-0.195821 -0.12949,-0.388737 -0.15141,-0.193332 -0.096,-0.07551 -0.25855,-0.259297 -0.16258,-0.183789 -0.0852,-0.08546 -0.25856,-0.259296 -0.17333,-0.173833 -0.0753,-0.09625 -0.25855,-0.259297 -0.18327,-0.163045 -0.0658,-0.107452 -0.25856,-0.259296 -0.19278,-0.151844 -0.18657,0.0083 -0.38763,-0.129856 -0.20146,-0.139812 -0.0492,-0.13193 -0.25855,-0.259296 -0.20933,-0.127367 -0.17127,-0.01659 -0.38763,-0.129856 -0.21677,-0.114505 -0.0372,-0.158067 -0.25855,-0.259296 -0.22298,-0.10123 -0.15886,-0.0419 -0.38763,-0.129856 -0.22877,-0.08754 -0.15431,-0.05601 -0.38763,-0.129856 -0.23373,-0.07385 -0.15017,-0.07011 -0.38763,-0.129855 -0.23745,-0.05933 -0.14685,0.04522 -0.38762,0 -0.24077,-0.04522 -0.0165,-0.09915 -0.25856,-0.129856 -0.24325,-0.02904 -0.14355,0.01659 -0.38762,0 -0.24449,-0.0166 -0.14273,9.96e-4 -0.38763,0 -0.24491,-9.96e-4 -0.14314,-0.01245 -0.38763,0 -0.24449,0.01245 -0.14438,-0.02904 -0.38762,0 -0.24325,0.02904 -0.14645,0.08671 -0.38763,0.129856 0,0 -23.18414,4.2357 -43.3081,20.484417 a 2.9761723,2.9846976 0 0 1 -4.78328,-2.07437 c -2.77333,-25.672753 -16.03046,-44.98793 -16.03046,-44.98793 -0.1481,-0.209097 -0.0976,-0.06016 -0.25855,-0.259297 -0.16093,-0.199139 -0.0852,-0.07053 -0.25856,-0.259296 -0.17333,-0.188768 -0.074,-0.211171 -0.25855,-0.388737 -0.18451,-0.177566 -0.0633,-0.09376 -0.25856,-0.259297 -0.19526,-0.165534 -0.0534,0.02489 -0.25855,-0.129855 -0.20519,-0.153089 -0.17334,-0.119484 -0.38763,-0.259297 -0.21471,-0.139812 -0.0372,-0.133174 -0.25856,-0.259296 -0.22298,-0.126122 -0.15761,-0.0166 -0.38762,-0.129856 -0.23043,-0.111601 -0.151,-0.03319 -0.38763,-0.129855 -0.23663,-0.09708 -0.14562,-0.177152 -0.38763,-0.259297 -0.24242,-0.08214 -0.14065,0.06638 -0.38762,0 -0.24698,-0.06638 -0.13735,-0.07883 -0.38763,-0.129855 -0.2507,-0.05103 -0.13445,-0.09459 -0.38763,-0.129856 -0.25359,-0.03319 -0.13279,0.02074 -0.38762,0 -0.25525,-0.02074 -0.13197,0.0029 -0.38763,0 -0.17044,-0.0019 -0.19857,-0.003 -0.25856,0 -0.10011,0.0083 -0.10218,-0.0032 -0.12948,0 -0.029,0.0032 -0.029,-0.01245 -0.12949,0 z" + id="path4008-1" /> + <path + style="opacity:0.96694186;color:#000000;fill:none;stroke:url(#radialGradient4036-3);stroke-width:1.99999988;stroke-miterlimit:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 113.23782,10.255961 c -0.19939,0.02904 -0.18988,0.09127 -0.38762,0.129856 -0.1994,0.03319 -0.1903,-0.04149 -0.38763,0 -0.19774,0.04149 -0.0633,0.07841 -0.25856,0.129855 -0.19526,0.05103 -0.0662,-0.06099 -0.25855,0 -0.19237,0.06099 -0.19857,0.05933 -0.38763,0.129856 -0.18905,0.07011 -0.0732,0.0502 -0.25855,0.129856 -0.18534,0.07966 -0.0774,0.04149 -0.25856,0.129855 -0.1812,0.08878 -0.0819,0.03319 -0.25856,0.129856 -0.17664,0.0975 -0.0869,0.02489 -0.25855,0.129856 -0.17168,0.106207 -0.0922,0.144791 -0.25856,0.259296 -0.1663,0.114505 -0.098,0.0083 -0.25855,0.129856 -0.16051,0.122802 -0.10425,0.128611 -0.25856,0.259296 -0.1543,0.130685 -0.11087,-0.0083 -0.25855,0.129856 -0.14769,0.138153 -0.11791,0.11409 -0.25856,0.259296 -0.14065,0.145206 0.004,0.107038 -0.12948,0.259297 -0.13321,0.152258 -0.13321,-0.02904 -0.25856,0.129855 -0.12535,0.158482 -0.0124,0.09459 -0.12949,0.259297 0,0 -13.344495,19.338451 -16.159735,44.98793 a 2.9761723,2.9846976 0 0 1 -4.78328,1.94472 C 67.678432,43.630605 44.591469,39.428883 44.591469,39.428883 c -0.239112,-0.0419 -0.146446,-0.102059 -0.387627,-0.129856 -0.241181,-0.02904 -0.145205,0.01245 -0.387627,0 -0.242422,-0.01245 -0.145205,-0.0012 -0.387626,0 -0.242836,0.0012 -0.145619,-0.0166 -0.387627,0 -0.242422,0.01659 -0.01655,-0.02904 -0.258556,0 -0.240767,0.02904 -0.148928,0.08505 -0.387627,0.129856 -0.238699,0.04439 -0.152238,-0.0585 -0.387627,0 -0.235803,0.0585 -0.155961,0.05684 -0.387627,0.129855 -0.231666,0.0726 -0.160925,0.04315 -0.387626,0.129856 -0.227116,0.08629 -0.03723,0.02904 -0.258556,0.129856 -0.221324,0.09957 -0.172509,0.01659 -0.387627,0.129855 -0.215118,0.112846 -0.05047,0.134005 -0.258556,0.259297 -0.208085,0.125292 -0.187401,-0.0083 -0.387627,0.129855 -0.200225,0.137738 -0.0666,0.109942 -0.258555,0.259297 -0.191952,0.149354 -0.07612,0.09874 -0.258556,0.259296 -0.182437,0.160556 -0.08563,0.08837 -0.258556,0.259296 -0.172922,0.170929 -0.09639,0.078 -0.258556,0.259297 -0.162166,0.1813 -0.107145,0.06887 -0.258556,0.259296 -0.15141,0.190428 -0.119142,0.189598 -0.258555,0.388738 -0.139414,0.199139 -0.13114,0.05227 -0.258556,0.259296 -0.127416,0.207022 -0.01241,0.04481 -0.129485,0.259296 -0.115005,0.21449 -0.02896,0.168024 -0.129485,0.388738 -0.102181,0.221128 -0.169612,0.162215 -0.258555,0.388737 -0.08894,0.226521 -0.05419,0.02904 -0.129485,0.259296 -0.07529,0.2315 0.06123,0.153504 0,0.388737 -0.06123,0.235649 -0.08191,0.150185 -0.129485,0.388738 -0.04716,0.238967 0.03309,0.147695 0,0.388737 -0.03309,0.241042 -0.110869,0.146035 -0.129485,0.388737 -0.01655,0.242701 0.0041,0.145621 0,0.388737 -0.0041,0.243531 -0.0083,0.145621 0,0.388737 0.0083,0.243117 -0.02482,0.01659 0,0.259297 0.02482,0.242286 0.09018,0.148525 0.129485,0.388737 0,0 4.172511,23.296433 20.296629,43.432153 a 2.9761723,2.9846976 0 0 1 -1.939168,4.79698 c -25.613529,2.82185 -44.988706,16.20603 -44.988706,16.20603 -0.195262,0.14147 -0.07198,-0.0249 -0.258556,0.12985 -0.186574,0.15268 -0.0815,0.0958 -0.258556,0.2593 -0.177059,0.16346 -0.09143,0.0855 -0.2585558,0.2593 -0.16713,0.17383 -0.101767,0.0759 -0.258555,0.25929 -0.156789,0.18338 -0.112938,0.19665 -0.258556,0.38874 -0.145619,0.19209 0.0041,0.0589 -0.129485,0.2593 -0.134035,0.20038 -0.136517,0.051 -0.258556,0.25929 -0.122038,0.20827 -0.02068,0.17383 -0.129485,0.38874 -0.109627,0.2149 -0.161752,0.0373 -0.258555,0.2593 -0.0968,0.22112 -0.04592,0.16263 -0.129485,0.38873 -0.08357,0.22652 -0.05916,0.15807 -0.129485,0.38874 -0.06991,0.23108 0.05626,0.15433 0,0.38874 -0.05626,0.23482 -0.08688,0.0207 -0.129484,0.25929 -0.04261,0.23773 0.02896,0.14936 0,0.38874 -0.02896,0.2398 -0.115006,0.14811 -0.129485,0.38874 -0.01241,0.24104 0,0.14769 0,0.38874 0,0.24145 -0.01241,0.14811 0,0.38873 0.01241,0.24104 0.10094,0.14936 0.129485,0.38874 0.02896,0.2398 -0.04261,0.15143 0,0.38874 0.04261,0.23772 0.07281,0.0249 0.129484,0.25929 0.05626,0.23482 -0.06991,0.15807 0,0.38874 0.06991,0.23109 0.04592,0.16263 0.129485,0.38874 0.08357,0.22652 0.0331,0.16802 0.129485,0.38873 0.0968,0.22113 0.148928,0.0444 0.258555,0.2593 0.109628,0.21491 0.0083,0.18089 0.129485,0.38874 0.122039,0.20827 0.124521,0.0589 0.258556,0.25929 0.134035,0.20039 -0.01655,0.0672 0.129485,0.2593 0.145618,0.19209 0.101767,0.20578 0.258556,0.38874 0.156788,0.18337 0.09143,0.0855 0.258555,0.25929 0.1671308,0.17384 0.0815,0.0958 0.2585558,0.2593 0.177059,0.16346 0.07198,0.10662 0.258556,0.2593 0.186574,0.15267 0.06329,-0.0125 0.258556,0.12985 0,0 19.261206,13.27781 44.859428,16.07638 a 2.9761723,2.9846976 0 0 1 2.068446,4.79698 C 41.524211,162.11426 37.3517,185.41069 37.3517,185.41069 c -0.03723,0.24021 -0.104663,0.14687 -0.129484,0.38874 -0.02482,0.24229 0.0083,0.0166 0,0.2593 -0.0083,0.24311 -0.0041,0.14562 0,0.38873 0.0041,0.24353 -0.01655,0.14604 0,0.38874 0.01655,0.2427 0.09639,0.1477 0.129484,0.38874 0.03309,0.24104 -0.04716,0.15018 0,0.38873 0.04716,0.23897 0.06785,0.15351 0.129485,0.38874 0.06123,0.23565 -0.07529,0.15765 0,0.38874 0.07529,0.2315 0.04137,0.0332 0.129485,0.2593 0.08894,0.22652 0.156374,0.16802 0.258556,0.38873 0.102181,0.22113 0.01241,0.17466 0.129484,0.38874 0.115006,0.21449 0.0017,0.0523 0.129485,0.2593 0.127416,0.20702 0.119142,0.0601 0.258556,0.25929 0.139413,0.19914 0.107145,0.19831 0.258556,0.38874 0.15141,0.19043 0.09639,0.078 0.258555,0.2593 0.162167,0.1813 0.08563,0.0884 0.258556,0.25929 0.172922,0.17093 0.07612,0.0987 0.258556,0.2593 0.182437,0.16056 0.0666,0.10994 0.258556,0.2593 0.191951,0.14935 0.05833,0.12155 0.258555,0.25929 0.200226,0.13774 0.179955,0.004 0.387627,0.12986 0.208086,0.12529 0.04344,0.14645 0.258556,0.25929 0.215118,0.11285 0.166303,0.029 0.387627,0.12986 0.221324,0.0996 0.0331,0.0431 0.258556,0.12985 0.227115,0.0863 0.155961,0.0568 0.387626,0.12986 0.231666,0.0726 0.152238,0.0709 0.387627,0.12986 0.235803,0.0585 0.148928,-0.0444 0.387627,0 0.238699,0.0444 0.14686,0.0996 0.387627,0.12985 0.240767,0.029 0.01655,-0.0166 0.258556,0 0.242422,0.0166 0.145205,-0.001 0.387627,0 0.242835,10e-4 0.145205,0.0125 0.387626,0 0.242422,-0.0124 0.146446,0.029 0.387627,0 0.241181,-0.029 0.148928,-0.0875 0.387627,-0.12985 0,0 23.086963,-4.20173 43.178814,-20.35477 a 2.9761723,2.9846976 0 0 1 4.78328,1.94472 c 2.81305,25.66827 16.159745,45.11758 16.159745,45.11758 0.14106,0.19582 -0.0248,0.0722 0.12948,0.25929 0.15224,0.18711 0.0956,0.0817 0.25856,0.2593 0.16299,0.17757 0.0852,0.0917 0.25855,0.2593 0.17334,0.16761 0.0757,0.10206 0.25856,0.25929 0.18285,0.15724 0.19609,0.11326 0.38763,0.2593 0.19153,0.14604 0.0587,-0.004 0.25855,0.12986 0.19981,0.13441 0.0509,0.1369 0.25856,0.25929 0.20767,0.12239 0.17333,0.0208 0.38762,0.12986 0.2143,0.10994 0.0372,0.16221 0.25856,0.25929 0.2205,0.0971 0.16217,0.0461 0.38763,0.12986 0.22587,0.0838 0.15761,0.0593 0.38762,0.12985 0.23043,0.0701 0.1539,-0.0564 0.38763,0 0.23415,0.0564 0.0207,0.0871 0.25856,0.12986 0.23704,0.0427 0.14892,-0.029 0.38762,0 0.23912,0.029 0.14769,0.11534 0.38763,0.12986 0.24035,0.0124 0.14727,0 0.38763,0 0.24076,0 0.14768,0.0124 0.38762,0 0.24036,-0.0125 0.14893,-0.10123 0.38763,-0.12986 0.23911,-0.029 0.151,0.0427 0.38763,0 0.23704,-0.0427 0.0248,-0.073 0.25855,-0.12986 0.23415,-0.0564 0.15762,0.0701 0.38763,0 0.23042,-0.0701 0.16217,-0.0461 0.38763,-0.12985 0.22587,-0.0838 0.16754,-0.0332 0.38762,-0.12986 0.2205,-0.0971 0.0443,-0.14935 0.25856,-0.25929 0.21429,-0.10994 0.18037,-0.008 0.38763,-0.12986 0.20767,-0.12239 0.0587,-0.12488 0.25855,-0.25929 0.19981,-0.13442 0.067,0.0166 0.25856,-0.12986 0.19154,-0.14604 0.20519,-0.10206 0.38762,-0.2593 0.18286,-0.15723 0.0852,-0.0917 0.25856,-0.25929 0.17334,-0.16761 0.0956,-0.0817 0.25856,-0.2593 0.16299,-0.17757 0.10631,-0.0722 0.25855,-0.2593 0.15224,-0.1871 -0.0124,-0.0635 0.12949,-0.25929 0,0 13.27197,-19.40102 16.03045,-45.11758 a 2.9761723,2.9846976 0 0 1 4.78329,-2.07437 c 20.12395,16.24872 43.30809,20.48442 43.30809,20.48442 0.24118,0.0431 0.14438,0.10123 0.38763,0.12985 0.24325,0.029 0.14313,-0.0124 0.38762,0 0.24449,0.0125 0.14273,10e-4 0.38763,0 0.2449,-9.9e-4 0.14355,0.0166 0.38763,0 0.24449,-0.0166 0.14479,0.029 0.38762,0 0.24325,-0.029 0.0166,-0.0846 0.25856,-0.12985 0.24077,-0.0452 0.15017,0.0593 0.38763,0 0.23745,-0.0593 0.1543,-0.056 0.38762,-0.12986 0.23374,-0.0738 0.15886,-0.0419 0.38763,-0.12986 0.22877,-0.0875 0.16465,-0.029 0.38763,-0.12985 0.22298,-0.10123 0.0418,-0.14479 0.25855,-0.2593 0.21678,-0.1145 0.1783,-0.002 0.38763,-0.12985 0.20933,-0.12737 0.0571,-0.11949 0.25856,-0.2593 0.20146,-0.13981 0.19526,0.0207 0.38762,-0.12985 0.19278,-0.15185 0.0753,-0.0963 0.25856,-0.2593 0.18326,-0.16305 0.0852,-0.0855 0.25855,-0.2593 0.17334,-0.17383 0.096,-0.0755 0.25856,-0.25929 0.16258,-0.18379 0.10715,-0.066 0.25856,-0.2593 0.15141,-0.19333 -0.008,-0.18669 0.12948,-0.38874 0.13941,-0.20204 0.13155,-0.0494 0.25856,-0.25929 0.127,-0.20993 0.0165,-0.17176 0.12948,-0.38874 0.11418,-0.2174 0.15762,-0.0373 0.25856,-0.2593 0.10094,-0.22361 0.0418,-0.15931 0.12948,-0.38873 0.0873,-0.22943 0.0558,-0.15475 0.12949,-0.38874 0.0736,-0.23441 0.0699,-0.1506 0.12948,-0.38874 0.0592,-0.23855 -0.0451,-0.14728 0,-0.38874 0.0451,-0.24145 0.0989,-0.0166 0.12949,-0.25929 0.0289,-0.24395 -0.0165,-0.14396 0,-0.38874 0.0165,-0.24519 -10e-4,-0.14313 0,-0.38874 9.9e-4,-0.2456 0.0124,-0.14354 0,-0.38873 -0.0124,-0.2452 0.0289,-0.1448 0,-0.38874 -0.029,-0.24395 -0.0865,-0.14687 -0.12949,-0.38874 0,0 -4.28359,-23.17305 -20.42591,-43.3025 a 2.9761723,2.9846976 0 0 1 2.06845,-4.79698 c 25.617,-2.79642 44.98871,-16.07638 44.98871,-16.07638 0.19526,-0.14147 0.072,0.0249 0.25855,-0.12986 0.18658,-0.15267 0.0815,-0.0958 0.25856,-0.25929 0.17706,-0.16346 0.0914,-0.0855 0.25855,-0.2593 0.16713,-0.17383 0.10177,-0.0759 0.25856,-0.2593 0.15679,-0.18337 0.11294,-0.19665 0.25856,-0.38873 0.14561,-0.19209 -0.004,-0.0589 0.12948,-0.2593 0.13404,-0.20039 0.13652,-0.051 0.25856,-0.2593 0.12203,-0.20826 0.0207,-0.17383 0.12948,-0.38873 0.10963,-0.21491 0.16175,-0.0373 0.25856,-0.2593 0.0968,-0.22113 0.0459,-0.16263 0.12948,-0.38874 0.0836,-0.22652 0.0592,-0.15807 0.12949,-0.38874 0.0699,-0.23108 -0.0563,-0.15433 0,-0.38873 0.0563,-0.23482 0.0869,-0.0207 0.12948,-0.2593 0.0426,-0.23772 -0.029,-0.14935 0,-0.38874 0.029,-0.23979 0.11501,-0.14811 0.12949,-0.38873 0.0124,-0.24105 0,-0.1477 0,-0.38874 0,-0.24146 0.0124,-0.14811 0,-0.38874 -0.0124,-0.24104 -0.10094,-0.14935 -0.12949,-0.38873 -0.029,-0.2398 0.0426,-0.15143 0,-0.38874 -0.0426,-0.23773 -0.0728,-0.0249 -0.12948,-0.2593 -0.0563,-0.23482 0.0699,-0.15807 0,-0.38874 -0.0699,-0.23108 -0.0459,-0.16263 -0.12949,-0.38873 -0.0836,-0.22652 -0.0331,-0.16803 -0.12948,-0.38874 -0.0968,-0.22113 -0.14893,-0.0444 -0.25856,-0.2593 -0.10963,-0.2149 -0.008,-0.18088 -0.12948,-0.38873 -0.12204,-0.20827 -0.12452,-0.0589 -0.25856,-0.2593 -0.13404,-0.20038 0.0165,-0.0672 -0.12948,-0.2593 -0.14562,-0.19208 -0.10177,-0.20577 -0.25856,-0.38873 -0.15679,-0.18338 -0.0914,-0.0855 -0.25856,-0.2593 -0.16713,-0.17383 -0.0815,-0.0958 -0.25855,-0.2593 -0.17706,-0.16346 -0.072,-0.10662 -0.25856,-0.25929 -0.18657,-0.15268 -0.0633,0.0124 -0.25855,-0.12986 0,0 -19.48568,-13.38633 -45.11799,-16.20603 a 2.9761723,2.9846976 0 0 1 -1.93379,-4.80009 c 16.14228,-20.12945 20.42591,-43.302502 20.42591,-43.302502 0.043,-0.241872 0.10094,-0.144791 0.12948,-0.388737 0.029,-0.243946 -0.0124,-0.143547 0,-0.388737 0.0124,-0.245191 10e-4,-0.143132 0,-0.388738 -9.9e-4,-0.245605 0.0165,-0.143961 0,-0.388737 -0.0165,-0.245191 0.029,-0.145206 0,-0.388737 -0.029,-0.243946 -0.0844,-0.01659 -0.12948,-0.259296 -0.0451,-0.241457 0.0592,-0.1506 0,-0.388738 -0.0592,-0.238552 -0.0558,-0.154748 -0.12949,-0.388737 -0.0736,-0.234404 -0.0418,-0.159312 -0.12948,-0.388737 -0.0873,-0.229425 -0.029,-0.16512 -0.12949,-0.388737 -0.10094,-0.223617 -0.14437,-0.0419 -0.25855,-0.259297 -0.11418,-0.217394 -0.002,-0.17881 -0.12949,-0.388737 -0.127,-0.209926 -0.11914,-0.05725 -0.25855,-0.259296 -0.13941,-0.202044 0.0207,-0.195821 -0.12949,-0.388737 -0.15141,-0.193332 -0.096,-0.07551 -0.25855,-0.259297 -0.16258,-0.183789 -0.0852,-0.08546 -0.25856,-0.259296 -0.17333,-0.173833 -0.0753,-0.09625 -0.25855,-0.259297 -0.18327,-0.163045 -0.0658,-0.107452 -0.25856,-0.259296 -0.19278,-0.151844 -0.18657,0.0083 -0.38763,-0.129856 -0.20146,-0.139812 -0.0492,-0.13193 -0.25855,-0.259296 -0.20933,-0.127367 -0.17127,-0.01659 -0.38763,-0.129856 -0.21677,-0.114505 -0.0372,-0.158067 -0.25855,-0.259296 -0.22298,-0.10123 -0.15886,-0.0419 -0.38763,-0.129856 -0.22877,-0.08754 -0.15431,-0.05601 -0.38763,-0.129856 -0.23373,-0.07385 -0.15017,-0.07011 -0.38763,-0.129855 -0.23745,-0.05933 -0.14685,0.04522 -0.38762,0 -0.24077,-0.04522 -0.0165,-0.09915 -0.25856,-0.129856 -0.24325,-0.02904 -0.14355,0.01659 -0.38762,0 -0.24449,-0.0166 -0.14273,9.96e-4 -0.38763,0 -0.24491,-9.96e-4 -0.14314,-0.01245 -0.38763,0 -0.24449,0.01245 -0.14438,-0.02904 -0.38762,0 -0.24325,0.02904 -0.14645,0.08671 -0.38763,0.129856 0,0 -23.18414,4.2357 -43.3081,20.484417 a 2.9761723,2.9846976 0 0 1 -4.78328,-2.07437 c -2.77333,-25.672753 -16.03046,-44.98793 -16.03046,-44.98793 -0.1481,-0.209097 -0.0976,-0.06016 -0.25855,-0.259297 -0.16093,-0.199139 -0.0852,-0.07053 -0.25856,-0.259296 -0.17333,-0.188768 -0.074,-0.211171 -0.25855,-0.388737 -0.18451,-0.177566 -0.0633,-0.09376 -0.25856,-0.259297 -0.19526,-0.165534 -0.0534,0.02489 -0.25855,-0.129855 -0.20519,-0.153089 -0.17334,-0.119484 -0.38763,-0.259297 -0.21471,-0.139812 -0.0372,-0.133174 -0.25856,-0.259296 -0.22298,-0.126122 -0.15761,-0.0166 -0.38762,-0.129856 -0.23043,-0.111601 -0.151,-0.03319 -0.38763,-0.129855 -0.23663,-0.09708 -0.14562,-0.177152 -0.38763,-0.259297 -0.24242,-0.08214 -0.14065,0.06638 -0.38762,0 -0.24698,-0.06638 -0.13735,-0.07883 -0.38763,-0.129855 -0.2507,-0.05103 -0.13445,-0.09459 -0.38763,-0.129856 -0.25359,-0.03319 -0.13279,0.02074 -0.38762,0 -0.25525,-0.02074 -0.13197,0.0029 -0.38763,0 -0.17044,-0.0019 -0.19857,-0.003 -0.25856,0 -0.10011,0.0083 -0.10218,-0.0032 -0.12948,0 -0.029,0.0032 -0.029,-0.01245 -0.12949,0 z" + id="path4008-0" /> +</svg> diff --git a/panels/color/icons/src/preferences-color.svg b/panels/color/icons/src/preferences-color.svg new file mode 100644 index 0000000..0b8d9ae --- /dev/null +++ b/panels/color/icons/src/preferences-color.svg @@ -0,0 +1,1154 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + inkscape:export-ydpi="90.000000" + inkscape:export-xdpi="90.000000" + inkscape:export-filename="/home/hbons/preferences-color.png" + width="400" + height="300" + id="svg11300" + sodipodi:version="0.32" + inkscape:version="0.47+devel r" + sodipodi:docname="preferences-color.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + version="1.0" + style="display:inline;enable-background:new"> + <sodipodi:namedview + stroke="#ef2929" + fill="#f57900" + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="0.25490196" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="437.25452" + inkscape:cy="182.70128" + inkscape:current-layer="svg11300" + showgrid="false" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:showpageshadow="false" + inkscape:window-width="1280" + inkscape:window-height="742" + inkscape:window-x="0" + inkscape:window-y="26" + width="400px" + height="300px" + inkscape:snap-nodes="false" + inkscape:snap-bbox="true" + objecttolerance="7" + gridtolerance="12" + guidetolerance="13" + showguides="true" + inkscape:guide-bbox="true" + inkscape:snap-page="true" + inkscape:object-nodes="false" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid5883" + spacingx="1px" + spacingy="1px" + enabled="true" + visible="true" + empspacing="4" + snapvisiblegridlinesonly="true" /> + </sodipodi:namedview> + <defs + id="defs3"> + <linearGradient + inkscape:collect="always" + id="linearGradient4010"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop4012" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop4014" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient4115"> + <stop + style="stop-color:#e3e3e1;stop-opacity:1" + offset="0" + id="stop4117" /> + <stop + style="stop-color:#7f8376;stop-opacity:1" + offset="1" + id="stop4119" /> + </linearGradient> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath3983"> + <path + d="m 184.125,701.5 a 2.2362916,2.2362916 0 0 0 -1.46875,0.90625 c 0,0 -3.32798,4.76714 -4.03125,11.15625 -5.01814,-4.02286 -10.75,-5.0625 -10.75,-5.0625 a 2.2362916,2.2362916 0 0 0 -2.59375,2.5625 c 0,0 1.03401,5.76487 5.0625,10.78125 -6.3978,0.70283 -11.1875,4.03125 -11.1875,4.03125 a 2.2362916,2.2362916 0 0 0 0,3.625 c 0,0 4.79479,3.3031 11.1875,4 -4.02849,5.01638 -5.0625,10.78125 -5.0625,10.78125 a 2.2362916,2.2362916 0 0 0 2.59375,2.5625 c 0,0 5.73186,-1.03964 10.75,-5.0625 0.70267,6.3934 4.03125,11.1875 4.03125,11.1875 a 2.2362916,2.2362916 0 0 0 3.625,0 c 0,0 3.31109,-4.81453 4,-11.21875 5.02623,4.04674 10.78125,5.09375 10.78125,5.09375 a 2.2362916,2.2362916 0 0 0 2.59375,-2.59375 c 0,0 -1.0624,-5.73727 -5.09375,-10.75 6.397,-0.69632 11.21875,-4 11.21875,-4 a 2.2362916,2.2362916 0 0 0 0,-3.625 c 0,0 -4.81666,-3.329 -11.21875,-4.03125 4.03134,-5.01273 5.09375,-10.75 5.09375,-10.75 A 2.2362916,2.2362916 0 0 0 201.0625,708.5 c 0,0 -5.75502,1.04701 -10.78125,5.09375 -0.69265,-6.39357 -4,-11.1875 -4,-11.1875 A 2.2362916,2.2362916 0 0 0 184.125,701.5 z" + id="path3985" + style="color:#000000;fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.30022803;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + inkscape:original="M 184.46875 703.71875 C 184.46875 703.71875 180.59375 709.06256 180.59375 715.6875 C 180.59375 716.89696 180.75838 718.0867 180.96875 719.1875 C 180.33528 718.25414 179.58087 717.32975 178.71875 716.46875 C 174.02816 711.78421 167.5 710.71875 167.5 710.71875 C 167.5 710.71875 168.55941 717.25296 173.25 721.9375 C 174.11212 722.7985 175.03419 723.55485 175.96875 724.1875 C 174.85826 723.9742 173.69012 723.8125 172.46875 723.8125 C 165.83526 723.8125 160.46875 727.6875 160.46875 727.6875 C 160.46875 727.6875 165.83526 731.53125 172.46875 731.53125 C 173.69012 731.53125 174.85826 731.4008 175.96875 731.1875 C 175.03456 731.81999 174.11178 732.54558 173.25 733.40625 C 168.55941 738.09078 167.5 744.625 167.5 744.625 C 167.5 744.625 174.02816 743.55954 178.71875 738.875 C 179.58087 738.014 180.33528 737.08961 180.96875 736.15625 C 180.75518 737.2653 180.59375 738.43646 180.59375 739.65625 C 180.59375 746.28119 184.46875 751.65625 184.46875 751.65625 C 184.46875 751.65625 188.3125 746.28119 188.3125 739.65625 C 188.3125 738.43646 188.18232 737.2653 187.96875 736.15625 C 188.60222 737.08961 189.35663 738.014 190.21875 738.875 C 194.90934 743.55954 201.4375 744.625 201.4375 744.625 C 201.4375 744.625 200.34684 738.09078 195.65625 733.40625 C 194.79906 732.55017 193.89785 731.849 192.96875 731.21875 C 194.06956 731.42831 195.22825 731.53125 196.4375 731.53125 C 203.07099 731.53125 208.46875 727.6875 208.46875 727.6875 C 208.46875 727.6875 203.07099 723.8125 196.4375 723.8125 C 195.22647 723.8125 194.07098 723.9774 192.96875 724.1875 C 193.90331 723.55485 194.79413 722.7985 195.65625 721.9375 C 200.34684 717.25296 201.4375 710.71875 201.4375 710.71875 C 201.4375 710.71875 194.90934 711.78421 190.21875 716.46875 C 189.35663 717.32975 188.60222 718.25414 187.96875 719.1875 C 188.17912 718.0867 188.3125 716.89696 188.3125 715.6875 C 188.3125 709.06256 184.46875 703.71875 184.46875 703.71875 z " + inkscape:radius="2.236068" + sodipodi:type="inkscape:offset" /> + </clipPath> + <filter + color-interpolation-filters="sRGB" + inkscape:collect="always" + id="filter4123"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="0.26224718" + id="feGaussianBlur4125" /> + </filter> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4169"> + <path + sodipodi:nodetypes="csssc" + id="path4171" + d="m 471.43078,685.92888 c 0,22.09674 -12.84202,40.00973 -12.84202,40.00973 0,0 -12.84203,-17.91299 -12.84203,-40.00973 0,-22.09678 12.84203,-40.00974 12.84203,-40.00974 0,0 12.84202,17.91296 12.84202,40.00974 z" + style="color:#000000;fill:#edd400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + </clipPath> + <filter + color-interpolation-filters="sRGB" + inkscape:collect="always" + id="filter4173" + x="-0.2469319" + width="1.4938638" + y="-0.079258353" + height="1.1585166"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="2.642588" + id="feGaussianBlur4175" /> + </filter> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4145"> + <path + style="color:#000000;fill:#3465a4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 401.43078,865.80173 c 0,22.09677 -12.84202,40.00973 -12.84202,40.00973 0,0 -12.84203,-17.91296 -12.84203,-40.00973 0,-22.09675 12.84203,-40.00974 12.84203,-40.00974 0,0 12.84202,17.91299 12.84202,40.00974 z" + id="path4147" + sodipodi:nodetypes="csssc" /> + </clipPath> + <filter + color-interpolation-filters="sRGB" + inkscape:collect="always" + id="filter4149" + x="-0.2469319" + width="1.4938638" + y="-0.079258353" + height="1.1585166"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="2.642588" + id="feGaussianBlur4151" /> + </filter> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4181"> + <path + sodipodi:nodetypes="csssc" + id="path4183" + d="m 348.71074,698.72614 c -22.06442,0 -39.95118,-12.86084 -39.95118,-12.86084 0,0 17.88676,-12.86084 39.95118,-12.86084 22.06446,0 39.95119,12.86084 39.95119,12.86084 0,0 -17.88673,12.86084 -39.95119,12.86084 z" + style="color:#000000;fill:#ef2929;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + </clipPath> + <filter + color-interpolation-filters="sRGB" + inkscape:collect="always" + id="filter4189" + x="-0.079314828" + width="1.1586297" + y="-0.24638528" + height="1.4927706"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="2.6406013" + id="feGaussianBlur4191" /> + </filter> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4197"> + <path + style="color:#000000;fill:#75507b;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 299.47143,763.19859 c -15.60192,15.62478 -37.33043,19.19718 -37.33043,19.19718 0,0 3.56716,-21.76037 19.16908,-37.38511 15.60192,-15.62479 37.33043,-19.19719 37.33043,-19.19719 0,0 -3.56717,21.76037 -19.16908,37.38512 z" + id="path4199" + sodipodi:nodetypes="csssc" /> + </clipPath> + <filter + color-interpolation-filters="sRGB" + inkscape:collect="always" + id="filter4201" + x="-0.12008792" + width="1.2401758" + y="-0.11991221" + height="1.2398244"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="2.8270453" + id="feGaussianBlur4203" /> + </filter> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4133"> + <path + style="color:#000000;fill:#65c808;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 538.46677,738.72614 c -22.06443,0 -39.95119,-12.86084 -39.95119,-12.86084 0,0 17.88676,-12.86084 39.95119,-12.86084 22.06442,0 39.95119,12.86084 39.95119,12.86084 0,0 -17.88677,12.86084 -39.95119,12.86084 z" + id="path4135" + sodipodi:nodetypes="csssc" /> + </clipPath> + <filter + color-interpolation-filters="sRGB" + inkscape:collect="always" + id="filter4137" + x="-0.079314828" + width="1.1586297" + y="-0.24638529" + height="1.4927706"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="2.6406015" + id="feGaussianBlur4139" /> + </filter> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4071"> + <path + sodipodi:nodetypes="csssc" + id="path4073" + d="m 515.86743,706.71995 c -15.60192,15.62478 -37.33043,19.19718 -37.33043,19.19718 0,0 3.56717,-21.76037 19.16909,-37.38511 15.60192,-15.62478 37.33043,-19.19719 37.33043,-19.19719 0,0 -3.56717,21.76034 -19.16909,37.38512 z" + style="color:#000000;fill:#afea2c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + </clipPath> + <filter + color-interpolation-filters="sRGB" + inkscape:collect="always" + id="filter4075" + x="-0.12008791" + width="1.2401758" + y="-0.11991222" + height="1.2398244"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="2.8270455" + id="feGaussianBlur4077" /> + </filter> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4083"> + <path + sodipodi:nodetypes="csssc" + id="path4085" + d="m 515.86743,745.01066 c 15.60192,15.62474 19.16909,37.38511 19.16909,37.38511 0,0 -21.72851,-3.5724 -37.33043,-19.19718 -15.60192,-15.62475 -19.16909,-37.38512 -19.16909,-37.38512 0,0 21.72851,3.5724 37.33043,19.19719 z" + style="color:#000000;fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + </clipPath> + <filter + color-interpolation-filters="sRGB" + inkscape:collect="always" + id="filter4087" + x="-0.12008791" + width="1.2401758" + y="-0.11991222" + height="1.2398244"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="2.8270455" + id="feGaussianBlur4089" /> + </filter> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4157"> + <path + style="color:#000000;fill:#f57900;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 269.47143,688.53202 c 15.60191,15.62474 19.16908,37.38511 19.16908,37.38511 0,0 -21.72851,-3.5724 -37.33043,-19.19718 -15.60192,-15.62478 -19.16908,-37.38512 -19.16908,-37.38512 0,0 21.72851,3.57241 37.33043,19.19719 z" + id="path4159" + sodipodi:nodetypes="csssc" /> + </clipPath> + <filter + color-interpolation-filters="sRGB" + inkscape:collect="always" + id="filter4161" + x="-0.12008792" + width="1.2401758" + y="-0.11991221" + height="1.2398244"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="2.8270453" + id="feGaussianBlur4163" /> + </filter> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4115" + id="linearGradient4042" + gradientUnits="userSpaceOnUse" + x1="177.01997" + y1="715.69196" + x2="190.86528" + y2="745.97327" /> + <filter + inkscape:collect="always" + id="filter4144"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="0.52449438" + id="feGaussianBlur4146" /> + </filter> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4010" + id="radialGradient4016" + cx="190.50462" + cy="763.02698" + fx="190.50462" + fy="763.02698" + r="25.774156" + gradientTransform="matrix(-1.7164814,-0.90567257,0.15780843,-0.29738121,385.4992,1114.0077)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient4010-8"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop4012-4" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop4014-5" /> + </linearGradient> + <radialGradient + r="25.774157" + fy="803.93988" + fx="190.11163" + cy="803.93988" + cx="190.11163" + gradientTransform="matrix(-7.100899,-3.7574025,0.65283651,-1.2337581,971.80341,1762.5095)" + gradientUnits="userSpaceOnUse" + id="radialGradient4036" + xlink:href="#linearGradient4010-8" + inkscape:collect="always" /> + <linearGradient + inkscape:collect="always" + id="linearGradient4010-0"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop4012-2" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop4014-51" /> + </linearGradient> + <radialGradient + r="25.774157" + fy="714.44397" + fx="196.29478" + cy="714.44397" + cx="196.29478" + gradientTransform="matrix(-0.59883175,-1.0815124,1.5121107,-0.83725328,-918.4216,953.96581)" + gradientUnits="userSpaceOnUse" + id="radialGradient4036-9" + xlink:href="#linearGradient4010-0" + inkscape:collect="always" /> + <linearGradient + inkscape:collect="always" + id="linearGradient4010-3"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop4012-3" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop4014-4" /> + </linearGradient> + <radialGradient + r="25.774157" + fy="689.05688" + fx="174.41974" + cy="689.05688" + cx="174.41974" + gradientTransform="matrix(0.66761995,-1.2556356,0.62963254,0.33477488,-487.11758,207.64496)" + gradientUnits="userSpaceOnUse" + id="radialGradient4036-6" + xlink:href="#linearGradient4010-3" + inkscape:collect="always" /> + <linearGradient + inkscape:collect="always" + id="linearGradient4010-9"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop4012-29" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop4014-0" /> + </linearGradient> + <radialGradient + r="25.774157" + fy="846.39172" + fx="213.73914" + cy="846.39172" + cx="213.73914" + gradientTransform="matrix(2.1446353,0.54333384,-0.23562774,0.9300646,-19.777935,-754.51443)" + gradientUnits="userSpaceOnUse" + id="radialGradient4036-3" + xlink:href="#linearGradient4010-9" + inkscape:collect="always" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4001-7" + id="linearGradient4007-3" + x1="325.10092" + y1="153.11827" + x2="312.28464" + y2="134.7825" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient4001-7"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop4003-4" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1" + offset="1" + id="stop4005-5" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3967-5" + id="linearGradient3665-2" + x1="172.82822" + y1="711.43457" + x2="191.75198" + y2="752.31256" + gradientUnits="userSpaceOnUse" /> + <linearGradient + id="linearGradient3967-5" + inkscape:collect="always"> + <stop + id="stop3969-4" + offset="0" + style="stop-color:#d3d7cf;stop-opacity:1" /> + <stop + id="stop3971-7" + offset="1" + style="stop-color:#888a85;stop-opacity:1" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3973" + id="linearGradient3979" + x1="310.58127" + y1="184.49281" + x2="319.74625" + y2="196.51363" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient3973"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3975" /> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="1" + id="stop3977" /> + </linearGradient> + <filter + color-interpolation-filters="sRGB" + inkscape:collect="always" + id="filter4113-4"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="0.52449425" + id="feGaussianBlur4115-4" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:collect="always" + id="filter4124-3"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="0.24045921" + id="feGaussianBlur4126-0" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:collect="always" + id="filter4132-7"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="0.20006812" + id="feGaussianBlur4134-8" /> + </filter> + </defs> + <metadata + id="metadata4"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:creator> + <cc:Agent> + <dc:title>Lapo Calamandrei</dc:title> + </cc:Agent> + </dc:creator> + <dc:source /> + <cc:license + rdf:resource="" /> + <dc:title /> + <dc:subject> + <rdf:Bag> + <rdf:li>keyboard</rdf:li> + <rdf:li>keys</rdf:li> + <rdf:li>configure</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:date /> + <dc:rights> + <cc:Agent> + <dc:title /> + </cc:Agent> + </dc:rights> + <dc:publisher> + <cc:Agent> + <dc:title /> + </cc:Agent> + </dc:publisher> + <dc:identifier /> + <dc:relation /> + <dc:language /> + <dc:coverage /> + <dc:description /> + <dc:contributor> + <cc:Agent> + <dc:title /> + </cc:Agent> + </dc:contributor> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="preferences-color" + inkscape:groupmode="layer" + style="display:inline"> + <g + inkscape:groupmode="layer" + id="layer6" + inkscape:label="baseplate" + style="display:none"> + <rect + inkscape:label="48x48" + y="49.996326" + x="296.0625" + height="48" + width="48" + id="rect6284" + style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <rect + style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect6592" + width="32" + height="32" + x="303" + y="125.99633" + inkscape:label="32x32" /> + <rect + style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect8104" + width="24" + height="24" + x="302" + y="176" + inkscape:label="24x24" /> + <rect + inkscape:label="22x22" + y="177.05884" + x="303" + height="22" + width="22" + id="rect6749" + style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <rect + style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect6833" + width="16" + height="16" + x="303" + y="219" + inkscape:label="16x16" /> + <rect + inkscape:label="256x256" + y="31.996323" + x="16.0625" + height="256" + width="256" + id="rect3068" + style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <text + xml:space="preserve" + style="font-size:18.30070686px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;display:inline;enable-background:new;font-family:Bitstream Vera Sans" + x="20.970737" + y="21.513618" + id="context" + inkscape:label="context"><tspan + sodipodi:role="line" + id="tspan2716" + x="20.970737" + y="21.513618">apps</tspan></text> + <text + inkscape:label="icon-name" + id="text3021" + y="21.513618" + x="191.97073" + style="font-size:18.30070686px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;display:inline;enable-background:new;font-family:Droid Sans;-inkscape-font-specification:Droid Sans Bold" + xml:space="preserve" + sodipodi:linespacing="125%"><tspan + y="21.513618" + x="191.97073" + id="tspan3023" + sodipodi:role="line">preferences-color</tspan></text> + </g> + <g + inkscape:groupmode="layer" + id="layer8" + inkscape:label="small sizes" + style="display:inline" /> + <g + inkscape:groupmode="layer" + id="layer7" + inkscape:label="hires" + style="display:inline" /> + </g> + <g + id="g4017" + transform="translate(1.8006158,2.6673653)"> + <path + transform="matrix(4.1368925,0,0,4.1487427,-624.76596,-2861.8892)" + sodipodi:type="inkscape:offset" + inkscape:radius="2.236068" + inkscape:original="M 184.46875 703.71875 C 184.46875 703.71875 180.59375 709.06256 180.59375 715.6875 C 180.59375 716.89696 180.75838 718.0867 180.96875 719.1875 C 180.33528 718.25414 179.58087 717.32975 178.71875 716.46875 C 174.02816 711.78421 167.5 710.71875 167.5 710.71875 C 167.5 710.71875 168.55941 717.25296 173.25 721.9375 C 174.11212 722.7985 175.03419 723.55485 175.96875 724.1875 C 174.85826 723.9742 173.69012 723.8125 172.46875 723.8125 C 165.83526 723.8125 160.46875 727.6875 160.46875 727.6875 C 160.46875 727.6875 165.83526 731.53125 172.46875 731.53125 C 173.69012 731.53125 174.85826 731.4008 175.96875 731.1875 C 175.03456 731.81999 174.11178 732.54558 173.25 733.40625 C 168.55941 738.09078 167.5 744.625 167.5 744.625 C 167.5 744.625 174.02816 743.55954 178.71875 738.875 C 179.58087 738.014 180.33528 737.08961 180.96875 736.15625 C 180.75518 737.2653 180.59375 738.43646 180.59375 739.65625 C 180.59375 746.28119 184.46875 751.65625 184.46875 751.65625 C 184.46875 751.65625 188.3125 746.28119 188.3125 739.65625 C 188.3125 738.43646 188.18232 737.2653 187.96875 736.15625 C 188.60222 737.08961 189.35663 738.014 190.21875 738.875 C 194.90934 743.55954 201.4375 744.625 201.4375 744.625 C 201.4375 744.625 200.34684 738.09078 195.65625 733.40625 C 194.79906 732.55017 193.89785 731.849 192.96875 731.21875 C 194.06956 731.42831 195.22825 731.53125 196.4375 731.53125 C 203.07099 731.53125 208.46875 727.6875 208.46875 727.6875 C 208.46875 727.6875 203.07099 723.8125 196.4375 723.8125 C 195.22647 723.8125 194.07098 723.9774 192.96875 724.1875 C 193.90331 723.55485 194.79413 722.7985 195.65625 721.9375 C 200.34684 717.25296 201.4375 710.71875 201.4375 710.71875 C 201.4375 710.71875 194.90934 711.78421 190.21875 716.46875 C 189.35663 717.32975 188.60222 718.25414 187.96875 719.1875 C 188.17912 718.0867 188.3125 716.89696 188.3125 715.6875 C 188.3125 709.06256 184.46875 703.71875 184.46875 703.71875 z " + style="color:#000000;fill:url(#linearGradient4042);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.30022803;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + id="path3687" + d="m 184.125,701.5 a 2.2362916,2.2362916 0 0 0 -1.46875,0.90625 c 0,0 -3.32798,4.76714 -4.03125,11.15625 -5.01814,-4.02286 -10.75,-5.0625 -10.75,-5.0625 a 2.2362916,2.2362916 0 0 0 -2.59375,2.5625 c 0,0 1.03401,5.76487 5.0625,10.78125 -6.3978,0.70283 -11.1875,4.03125 -11.1875,4.03125 a 2.2362916,2.2362916 0 0 0 0,3.625 c 0,0 4.79479,3.3031 11.1875,4 -4.02849,5.01638 -5.0625,10.78125 -5.0625,10.78125 a 2.2362916,2.2362916 0 0 0 2.59375,2.5625 c 0,0 5.73186,-1.03964 10.75,-5.0625 0.70267,6.3934 4.03125,11.1875 4.03125,11.1875 a 2.2362916,2.2362916 0 0 0 3.625,0 c 0,0 3.31109,-4.81453 4,-11.21875 5.02623,4.04674 10.78125,5.09375 10.78125,5.09375 a 2.2362916,2.2362916 0 0 0 2.59375,-2.59375 c 0,0 -1.0624,-5.73727 -5.09375,-10.75 6.397,-0.69632 11.21875,-4 11.21875,-4 a 2.2362916,2.2362916 0 0 0 0,-3.625 c 0,0 -4.81666,-3.329 -11.21875,-4.03125 4.03134,-5.01273 5.09375,-10.75 5.09375,-10.75 A 2.2362916,2.2362916 0 0 0 201.0625,708.5 c 0,0 -5.75502,1.04701 -10.78125,5.09375 -0.69265,-6.39357 -4,-11.1875 -4,-11.1875 A 2.2362916,2.2362916 0 0 0 184.125,701.5 z" /> + <path + transform="matrix(4.1368925,0,0,4.1487427,-620.76596,-2857.8892)" + sodipodi:type="inkscape:offset" + inkscape:radius="2.236068" + inkscape:original="M 184.46875 703.71875 C 184.46875 703.71875 180.59375 709.06256 180.59375 715.6875 C 180.59375 716.89696 180.75838 718.0867 180.96875 719.1875 C 180.33528 718.25414 179.58087 717.32975 178.71875 716.46875 C 174.02816 711.78421 167.5 710.71875 167.5 710.71875 C 167.5 710.71875 168.55941 717.25296 173.25 721.9375 C 174.11212 722.7985 175.03419 723.55485 175.96875 724.1875 C 174.85826 723.9742 173.69012 723.8125 172.46875 723.8125 C 165.83526 723.8125 160.46875 727.6875 160.46875 727.6875 C 160.46875 727.6875 165.83526 731.53125 172.46875 731.53125 C 173.69012 731.53125 174.85826 731.4008 175.96875 731.1875 C 175.03456 731.81999 174.11178 732.54558 173.25 733.40625 C 168.55941 738.09078 167.5 744.625 167.5 744.625 C 167.5 744.625 174.02816 743.55954 178.71875 738.875 C 179.58087 738.014 180.33528 737.08961 180.96875 736.15625 C 180.75518 737.2653 180.59375 738.43646 180.59375 739.65625 C 180.59375 746.28119 184.46875 751.65625 184.46875 751.65625 C 184.46875 751.65625 188.3125 746.28119 188.3125 739.65625 C 188.3125 738.43646 188.18232 737.2653 187.96875 736.15625 C 188.60222 737.08961 189.35663 738.014 190.21875 738.875 C 194.90934 743.55954 201.4375 744.625 201.4375 744.625 C 201.4375 744.625 200.34684 738.09078 195.65625 733.40625 C 194.79906 732.55017 193.89785 731.849 192.96875 731.21875 C 194.06956 731.42831 195.22825 731.53125 196.4375 731.53125 C 203.07099 731.53125 208.46875 727.6875 208.46875 727.6875 C 208.46875 727.6875 203.07099 723.8125 196.4375 723.8125 C 195.22647 723.8125 194.07098 723.9774 192.96875 724.1875 C 193.90331 723.55485 194.79413 722.7985 195.65625 721.9375 C 200.34684 717.25296 201.4375 710.71875 201.4375 710.71875 C 201.4375 710.71875 194.90934 711.78421 190.21875 716.46875 C 189.35663 717.32975 188.60222 718.25414 187.96875 719.1875 C 188.17912 718.0867 188.3125 716.89696 188.3125 715.6875 C 188.3125 709.06256 184.46875 703.71875 184.46875 703.71875 z " + style="opacity:0.25;color:#000000;fill:#2e3436;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.30022803;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4144);enable-background:new" + id="path4136" + d="m 184.125,701.5 a 2.2362916,2.2362916 0 0 0 -1.46875,0.90625 c 0,0 -3.32798,4.76714 -4.03125,11.15625 -5.01814,-4.02286 -10.75,-5.0625 -10.75,-5.0625 a 2.2362916,2.2362916 0 0 0 -2.59375,2.5625 c 0,0 1.03401,5.76487 5.0625,10.78125 -6.3978,0.70283 -11.1875,4.03125 -11.1875,4.03125 a 2.2362916,2.2362916 0 0 0 0,3.625 c 0,0 4.79479,3.3031 11.1875,4 -4.02849,5.01638 -5.0625,10.78125 -5.0625,10.78125 a 2.2362916,2.2362916 0 0 0 2.59375,2.5625 c 0,0 5.73186,-1.03964 10.75,-5.0625 0.70267,6.3934 4.03125,11.1875 4.03125,11.1875 a 2.2362916,2.2362916 0 0 0 3.625,0 c 0,0 3.31109,-4.81453 4,-11.21875 5.02623,4.04674 10.78125,5.09375 10.78125,5.09375 a 2.2362916,2.2362916 0 0 0 2.59375,-2.59375 c 0,0 -1.0624,-5.73727 -5.09375,-10.75 6.397,-0.69632 11.21875,-4 11.21875,-4 a 2.2362916,2.2362916 0 0 0 0,-3.625 c 0,0 -4.81666,-3.329 -11.21875,-4.03125 4.03134,-5.01273 5.09375,-10.75 5.09375,-10.75 A 2.2362916,2.2362916 0 0 0 201.0625,708.5 c 0,0 -5.75502,1.04701 -10.78125,5.09375 -0.69265,-6.39357 -4,-11.1875 -4,-11.1875 A 2.2362916,2.2362916 0 0 0 184.125,701.5 z" + clip-path="none" /> + <path + clip-path="url(#clipPath3983)" + d="m 184.125,701.5 a 2.2362916,2.2362916 0 0 0 -1.46875,0.90625 c 0,0 -3.32798,4.76714 -4.03125,11.15625 -5.01814,-4.02286 -10.75,-5.0625 -10.75,-5.0625 a 2.2362916,2.2362916 0 0 0 -2.59375,2.5625 c 0,0 1.03401,5.76487 5.0625,10.78125 -6.3978,0.70283 -11.1875,4.03125 -11.1875,4.03125 a 2.2362916,2.2362916 0 0 0 0,3.625 c 0,0 4.79479,3.3031 11.1875,4 -4.02849,5.01638 -5.0625,10.78125 -5.0625,10.78125 a 2.2362916,2.2362916 0 0 0 2.59375,2.5625 c 0,0 5.73186,-1.03964 10.75,-5.0625 0.70267,6.3934 4.03125,11.1875 4.03125,11.1875 a 2.2362916,2.2362916 0 0 0 3.625,0 c 0,0 3.31109,-4.81453 4,-11.21875 5.02623,4.04674 10.78125,5.09375 10.78125,5.09375 a 2.2362916,2.2362916 0 0 0 2.59375,-2.59375 c 0,0 -1.0624,-5.73727 -5.09375,-10.75 6.397,-0.69632 11.21875,-4 11.21875,-4 a 2.2362916,2.2362916 0 0 0 0,-3.625 c 0,0 -4.81666,-3.329 -11.21875,-4.03125 4.03134,-5.01273 5.09375,-10.75 5.09375,-10.75 A 2.2362916,2.2362916 0 0 0 201.0625,708.5 c 0,0 -5.75502,1.04701 -10.78125,5.09375 -0.69265,-6.39357 -4,-11.1875 -4,-11.1875 A 2.2362916,2.2362916 0 0 0 184.125,701.5 z" + id="path3979" + style="opacity:0.96694186;color:#000000;fill:#f9f9f9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.30022803;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4123);enable-background:new" + inkscape:original="M 184.46875 703.71875 C 184.46875 703.71875 180.59375 709.06256 180.59375 715.6875 C 180.59375 716.89696 180.75838 718.0867 180.96875 719.1875 C 180.33528 718.25414 179.58087 717.32975 178.71875 716.46875 C 174.02816 711.78421 167.5 710.71875 167.5 710.71875 C 167.5 710.71875 168.55941 717.25296 173.25 721.9375 C 174.11212 722.7985 175.03419 723.55485 175.96875 724.1875 C 174.85826 723.9742 173.69012 723.8125 172.46875 723.8125 C 165.83526 723.8125 160.46875 727.6875 160.46875 727.6875 C 160.46875 727.6875 165.83526 731.53125 172.46875 731.53125 C 173.69012 731.53125 174.85826 731.4008 175.96875 731.1875 C 175.03456 731.81999 174.11178 732.54558 173.25 733.40625 C 168.55941 738.09078 167.5 744.625 167.5 744.625 C 167.5 744.625 174.02816 743.55954 178.71875 738.875 C 179.58087 738.014 180.33528 737.08961 180.96875 736.15625 C 180.75518 737.2653 180.59375 738.43646 180.59375 739.65625 C 180.59375 746.28119 184.46875 751.65625 184.46875 751.65625 C 184.46875 751.65625 188.3125 746.28119 188.3125 739.65625 C 188.3125 738.43646 188.18232 737.2653 187.96875 736.15625 C 188.60222 737.08961 189.35663 738.014 190.21875 738.875 C 194.90934 743.55954 201.4375 744.625 201.4375 744.625 C 201.4375 744.625 200.34684 738.09078 195.65625 733.40625 C 194.79906 732.55017 193.89785 731.849 192.96875 731.21875 C 194.06956 731.42831 195.22825 731.53125 196.4375 731.53125 C 203.07099 731.53125 208.46875 727.6875 208.46875 727.6875 C 208.46875 727.6875 203.07099 723.8125 196.4375 723.8125 C 195.22647 723.8125 194.07098 723.9774 192.96875 724.1875 C 193.90331 723.55485 194.79413 722.7985 195.65625 721.9375 C 200.34684 717.25296 201.4375 710.71875 201.4375 710.71875 C 201.4375 710.71875 194.90934 711.78421 190.21875 716.46875 C 189.35663 717.32975 188.60222 718.25414 187.96875 719.1875 C 188.17912 718.0867 188.3125 716.89696 188.3125 715.6875 C 188.3125 709.06256 184.46875 703.71875 184.46875 703.71875 z " + inkscape:radius="2.236068" + sodipodi:type="inkscape:offset" + transform="matrix(4.1368925,0,0,4.1487427,-624.76596,-2861.8892)" /> + <path + style="color:#000000;fill:#d5be00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 154.30526,107.37313 c 0,27.48513 -15.97192,49.76628 -15.97192,49.76628 0,0 -15.97193,-22.28115 -15.97193,-49.76628 0,-27.485174 15.97193,-49.766288 15.97193,-49.766288 0,0 15.97192,22.281114 15.97192,49.766288 z" + id="path3689" + sodipodi:nodetypes="csssc" /> + <path + transform="matrix(1.2437231,0,0,1.2438544,-432.02409,-745.82249)" + clip-path="url(#clipPath4169)" + sodipodi:nodetypes="csssc" + id="path4165" + d="m 471.43078,685.92888 c 0,22.09674 -12.84202,40.00973 -12.84202,40.00973 0,0 -12.84203,-17.91299 -12.84203,-40.00973 0,-22.09678 12.84203,-40.00974 12.84203,-40.00974 0,0 12.84202,17.91296 12.84202,40.00974 z" + style="color:#000000;fill:#edd400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4173);enable-background:new" /> + <path + sodipodi:nodetypes="csssc" + id="path3691" + d="m 154.30526,206.72332 c 0,27.48517 -15.97192,49.76628 -15.97192,49.76628 0,0 -15.97193,-22.28111 -15.97193,-49.76628 0,-27.48514 15.97193,-49.76629 15.97193,-49.76629 0,0 15.97192,22.28115 15.97192,49.76629 z" + style="color:#000000;fill:#23446e;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <path + sodipodi:nodetypes="csssc" + id="path3693" + d="m 187.93055,173.04523 c -27.44205,0 -49.68822,-15.99701 -49.68822,-15.99701 0,0 22.24617,-15.99701 49.68822,-15.99701 27.44202,0 49.68821,15.99701 49.68821,15.99701 0,0 -22.24619,15.99701 -49.68821,15.99701 z" + style="color:#000000;fill:#56aa07;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <path + style="color:#000000;fill:#ca0f0f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 88.736129,173.04523 c -27.442028,0 -49.688205,-15.99701 -49.688205,-15.99701 0,0 22.246177,-15.99701 49.688205,-15.99701 27.442081,0 49.688221,15.99701 49.688221,15.99701 0,0 -22.24614,15.99701 -49.688221,15.99701 z" + id="path3695" + sodipodi:nodetypes="csssc" /> + <path + style="color:#000000;fill:#85b912;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 184.69769,133.23419 c -19.40447,19.43496 -46.42872,23.8785 -46.42872,23.8785 0,0 4.43657,-27.06673 23.84104,-46.50163 19.40447,-19.434952 46.42872,-23.87851 46.42872,-23.87851 0,0 -4.43657,27.06669 -23.84104,46.50164 z" + id="path3697" + sodipodi:nodetypes="csssc" /> + <path + transform="matrix(1.2437231,0,0,1.2438544,-344.96347,-870.20793)" + clip-path="url(#clipPath4145)" + style="color:#000000;fill:#3465a4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4149);enable-background:new" + d="m 401.43078,865.80173 c 0,22.09677 -12.84202,40.00973 -12.84202,40.00973 0,0 -12.84203,-17.91296 -12.84203,-40.00973 0,-22.09675 12.84203,-40.00974 12.84203,-40.00974 0,0 12.84202,17.91299 12.84202,40.00974 z" + id="path4141" + sodipodi:nodetypes="csssc" /> + <path + transform="matrix(1.2437231,0,0,1.2438544,-344.96347,-696.06832)" + clip-path="url(#clipPath4181)" + sodipodi:nodetypes="csssc" + id="path4177" + d="m 348.71074,698.72614 c -22.06442,0 -39.95118,-12.86084 -39.95118,-12.86084 0,0 17.88676,-12.86084 39.95118,-12.86084 22.06446,0 39.95119,12.86084 39.95119,12.86084 0,0 -17.88673,12.86084 -39.95119,12.86084 z" + style="color:#000000;fill:#ef2929;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4189);enable-background:new" /> + <path + sodipodi:nodetypes="csssc" + id="path3699" + d="m 114.55668,203.4854 c -19.404469,19.43495 -46.428719,23.87849 -46.428719,23.87849 0,0 4.436559,-27.06673 23.841028,-46.50163 19.404471,-19.43496 46.428721,-23.87851 46.428721,-23.87851 0,0 -4.43658,27.06673 -23.84103,46.50165 z" + style="color:#000000;fill:#593d5e;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <path + sodipodi:nodetypes="csssc" + id="path3701" + d="m 114.55668,110.61106 c 19.40445,19.4349 23.84103,46.50163 23.84103,46.50163 0,0 -27.02425,-4.44354 -46.428721,-23.8785 C 72.56452,113.79924 68.127961,86.73255 68.127961,86.73255 c 0,0 27.02425,4.443558 46.428719,23.87851 z" + style="color:#000000;fill:#c96300;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <path + transform="matrix(1.2437231,0,0,1.2438544,-257.90286,-745.82249)" + clip-path="url(#clipPath4197)" + style="color:#000000;fill:#75507b;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4201);enable-background:new" + d="m 299.47143,763.19859 c -15.60192,15.62478 -37.33043,19.19718 -37.33043,19.19718 0,0 3.56716,-21.76037 19.16908,-37.38511 15.60192,-15.62479 37.33043,-19.19719 37.33043,-19.19719 0,0 -3.56717,21.76037 -19.16908,37.38512 z" + id="path4193" + sodipodi:nodetypes="csssc" /> + <path + style="color:#000000;fill:#3f7bba;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 184.69769,180.86226 c 19.40447,19.4349 23.84104,46.50163 23.84104,46.50163 0,0 -27.02425,-4.44354 -46.42872,-23.87849 -19.40447,-19.43492 -23.84104,-46.50165 -23.84104,-46.50165 0,0 27.02425,4.44355 46.42872,23.87851 z" + id="path3703" + sodipodi:nodetypes="csssc" /> + <path + transform="matrix(1.2437231,0,0,1.2438544,-481.77301,-745.82249)" + clip-path="url(#clipPath4133)" + style="color:#000000;fill:#65c808;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4137);enable-background:new" + d="m 538.46677,738.72614 c -22.06443,0 -39.95119,-12.86084 -39.95119,-12.86084 0,0 17.88676,-12.86084 39.95119,-12.86084 22.06442,0 39.95119,12.86084 39.95119,12.86084 0,0 -17.88677,12.86084 -39.95119,12.86084 z" + id="path4129" + sodipodi:nodetypes="csssc" /> + <path + transform="matrix(1.2437231,0,0,1.2438544,-456.89855,-745.82249)" + clip-path="url(#clipPath4071)" + sodipodi:nodetypes="csssc" + id="path4067" + d="m 515.86743,706.71995 c -15.60192,15.62478 -37.33043,19.19718 -37.33043,19.19718 0,0 3.56717,-21.76037 19.16909,-37.38511 15.60192,-15.62478 37.33043,-19.19719 37.33043,-19.19719 0,0 -3.56717,21.76034 -19.16909,37.38512 z" + style="color:#000000;fill:#afea2c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4075);enable-background:new" /> + <path + transform="matrix(1.2437231,0,0,1.2438544,-456.89855,-745.82249)" + clip-path="url(#clipPath4083)" + sodipodi:nodetypes="csssc" + id="path4079" + d="m 515.86743,745.01066 c 15.60192,15.62474 19.16909,37.38511 19.16909,37.38511 0,0 -21.72851,-3.5724 -37.33043,-19.19718 -15.60192,-15.62475 -19.16909,-37.38512 -19.16909,-37.38512 0,0 21.72851,3.5724 37.33043,19.19719 z" + style="color:#000000;fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4087);enable-background:new" /> + <path + transform="matrix(1.2437231,0,0,1.2438544,-220.59116,-745.82249)" + clip-path="url(#clipPath4157)" + style="color:#000000;fill:#f57900;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4161);enable-background:new" + d="m 269.47143,688.53202 c 15.60191,15.62474 19.16908,37.38511 19.16908,37.38511 0,0 -21.72851,-3.5724 -37.33043,-19.19718 -15.60192,-15.62478 -19.16908,-37.38512 -19.16908,-37.38512 0,0 21.72851,3.57241 37.33043,19.19719 z" + id="path4153" + sodipodi:nodetypes="csssc" /> + <path + d="m 187.625,727.61218 c 0,1.86396 -1.51104,3.375 -3.375,3.375 -1.86396,0 -3.375,-1.51104 -3.375,-3.375 0,-1.86396 1.51104,-3.375 3.375,-3.375 1.86396,0 3.375,1.51104 3.375,3.375 z" + sodipodi:ry="3.375" + sodipodi:rx="3.375" + sodipodi:cy="727.61218" + sodipodi:cx="184.25" + id="path3705" + style="opacity:0.1;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + sodipodi:type="arc" + transform="matrix(6.5480183,0,0,6.5667752,-1069.0159,-4621.279)" /> + <path + transform="matrix(14.096078,0,0,14.136457,-2459.746,-10129.072)" + sodipodi:type="arc" + style="opacity:0.1;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + id="path3707" + sodipodi:cx="184.25" + sodipodi:cy="727.61218" + sodipodi:rx="3.375" + sodipodi:ry="3.375" + d="m 187.625,727.61218 c 0,1.86396 -1.51104,3.375 -3.375,3.375 -1.86396,0 -3.375,-1.51104 -3.375,-3.375 0,-1.86396 1.51104,-3.375 3.375,-3.375 1.86396,0 3.375,1.51104 3.375,3.375 z" /> + <path + style="opacity:0.1;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 137.44938,85.332635 c -4.15028,0 -8.20042,0.379502 -12.15625,1.0625 -1.72824,6.374669 -2.9375,13.47119 -2.9375,20.968745 0,5.0399 0.52913,9.91534 1.40625,14.5 -2.6169,-3.86387 -5.65983,-7.6855 -9.21875,-11.25 -5.37148,-5.37991 -11.32311,-9.60049 -17.125,-12.906245 -7.18812,4.909705 -13.43098,11.100565 -18.40625,18.249995 3.31137,5.85188 7.55964,11.86364 12.96875,17.28125 3.55235,3.55793 7.33696,6.60095 11.1875,9.21875 -4.56742,-0.87461 -9.41806,-1.40625 -14.4375,-1.40625 -7.65792,0 -14.89692,1.26595 -21.375,3.0625 -0.73474,4.11477 -1.15625,8.36076 -1.15625,12.6875 0,4.52451 0.44816,8.92764 1.25,13.21875 6.45402,1.78244 13.66066,3.03125 21.28125,3.03125 5.00833,0 9.8477,-0.53507 14.40625,-1.40625 -3.83908,2.61272 -7.61423,5.67117 -11.15625,9.21875 -5.32369,5.33204 -9.5243,11.23579 -12.8125,17 5.04292,7.1852 11.37508,13.38158 18.65625,18.28125 5.67081,-3.27029 11.47477,-7.40404 16.71875,-12.65625 3.55892,-3.5645 6.60185,-7.38613 9.21875,-11.25 -0.87712,4.58466 -1.40625,9.46009 -1.40625,14.5 0,7.27634 1.13547,14.1779 2.78125,20.40625 4.00527,0.70084 8.1072,1.09375 12.3125,1.09375 4.84298,0 9.58458,-0.51403 14.15625,-1.4375 1.59587,-6.13752 2.6875,-12.92118 2.6875,-20.0625 0,-5.04013 -0.52905,-9.91516 -1.40625,-14.5 2.61718,3.86448 5.65928,7.68494 9.21875,11.25 4.94856,4.95633 10.38407,8.94403 15.75,12.125 7.41659,-5.13157 13.82787,-11.61275 18.84375,-19.125 -3.16079,-5.32159 -7.10049,-10.71781 -12,-15.625 -3.54201,-3.54758 -7.34841,-6.60603 -11.1875,-9.21875 4.56743,0.87461 9.38683,1.40625 14.40625,1.40625 6.90925,0 13.49045,-1.01346 19.46875,-2.53125 0.86405,-4.44743 1.3125,-9.0178 1.3125,-13.71875 0,-4.50317 -0.42428,-8.91536 -1.21875,-13.1875 -6.00406,-1.53144 -12.61592,-2.5625 -19.5625,-2.5625 -5.04162,0 -9.8836,0.52476 -14.46875,1.40625 3.85782,-2.62102 7.69109,-5.65424 11.25,-9.21875 4.98494,-4.99277 8.96814,-10.4946 12.15625,-15.90625 -4.94351,-7.47022 -11.24797,-13.95313 -18.5625,-19.093745 -5.50721,3.222955 -11.10419,7.283705 -16.1875,12.374995 -3.55947,3.56505 -6.60157,7.38552 -9.21875,11.25 0.8772,-4.58484 1.40625,-9.45987 1.40625,-14.5 0,-7.36254 -1.16592,-14.339257 -2.84375,-20.624995 -4.5237,-0.903292 -9.21157,-1.40625 -14,-1.40625 z" + id="path3906" + inkscape:connector-curvature="0" /> + </g> + <path + transform="matrix(4.1368925,0,0,4.1487427,-622.96534,-2859.2218)" + style="opacity:0.96694186;color:#000000;fill:none;stroke:url(#radialGradient4016);stroke-width:0.48276371;stroke-miterlimit:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 189.5628,713.65655 c -0.67039,-6.18808 -3.875,-10.84375 -3.875,-10.84375 -0.0358,-0.0504 -0.0236,-0.0145 -0.0625,-0.0625 -0.0389,-0.048 -0.0206,-0.017 -0.0625,-0.0625 -0.0419,-0.0455 -0.0179,-0.0509 -0.0625,-0.0937 -0.0446,-0.0428 -0.0153,-0.0226 -0.0625,-0.0625 -0.0472,-0.0399 -0.0129,0.006 -0.0625,-0.0313 -0.0496,-0.0369 -0.0419,-0.0288 -0.0937,-0.0625 -0.0519,-0.0337 -0.009,-0.0321 -0.0625,-0.0625 -0.0539,-0.0304 -0.0381,-0.004 -0.0937,-0.0313 -0.0557,-0.0269 -0.0365,-0.008 -0.0937,-0.0313 -0.0572,-0.0234 -0.0352,-0.0427 -0.0937,-0.0625 -0.0586,-0.0198 -0.034,0.016 -0.0937,0 -0.0597,-0.016 -0.0332,-0.019 -0.0937,-0.0313 -0.0606,-0.0123 -0.0325,-0.0228 -0.0937,-0.0313 -0.0613,-0.008 -0.0321,0.005 -0.0937,0 -0.0617,-0.005 -0.0319,7e-4 -0.0937,0 -0.0412,-4.7e-4 -0.048,-7.2e-4 -0.0625,0 -0.0242,0.002 -0.0247,-7.7e-4 -0.0313,0 -0.007,7.7e-4 -0.007,-0.003 -0.0313,0 l -6.5e-4,-10e-5 c -0.0482,0.007 -0.0459,0.022 -0.0937,0.0313 -0.0482,0.008 -0.046,-0.01 -0.0937,0 -0.0478,0.01 -0.0153,0.0189 -0.0625,0.0313 -0.0472,0.0123 -0.016,-0.0147 -0.0625,0 -0.0465,0.0147 -0.048,0.0143 -0.0937,0.0313 -0.0457,0.0169 -0.0177,0.0121 -0.0625,0.0313 -0.0448,0.0192 -0.0187,0.01 -0.0625,0.0313 -0.0438,0.0214 -0.0198,0.008 -0.0625,0.0313 -0.0427,0.0235 -0.021,0.006 -0.0625,0.0313 -0.0415,0.0256 -0.0223,0.0349 -0.0625,0.0625 -0.0402,0.0276 -0.0237,0.002 -0.0625,0.0313 -0.0388,0.0296 -0.0252,0.031 -0.0625,0.0625 -0.0373,0.0315 -0.0268,-0.002 -0.0625,0.0313 -0.0357,0.0333 -0.0285,0.0275 -0.0625,0.0625 -0.034,0.035 9.5e-4,0.0258 -0.0313,0.0625 -0.0322,0.0367 -0.0322,-0.007 -0.0625,0.0313 -0.0303,0.0382 -0.003,0.0228 -0.0313,0.0625 0,0 -3.22573,4.66128 -3.90625,10.84375 -0.0684,0.49864 -0.75995,0.77902 -1.15625,0.46875 -4.85675,-3.89348 -10.4375,-4.90625 -10.4375,-4.90625 -0.0578,-0.0101 -0.0354,-0.0246 -0.0937,-0.0313 -0.0583,-0.007 -0.0351,0.003 -0.0937,0 -0.0586,-0.003 -0.0351,-2.9e-4 -0.0937,0 -0.0587,2.9e-4 -0.0352,-0.004 -0.0937,0 -0.0586,0.004 -0.004,-0.007 -0.0625,0 -0.0582,0.007 -0.036,0.0205 -0.0937,0.0313 -0.0577,0.0107 -0.0368,-0.0141 -0.0937,0 -0.057,0.0141 -0.0377,0.0137 -0.0937,0.0313 -0.056,0.0175 -0.0389,0.0104 -0.0937,0.0313 -0.0549,0.0208 -0.009,0.007 -0.0625,0.0313 -0.0535,0.024 -0.0417,0.004 -0.0937,0.0313 -0.052,0.0272 -0.0122,0.0323 -0.0625,0.0625 -0.0503,0.0302 -0.0453,-0.002 -0.0937,0.0313 -0.0484,0.0332 -0.0161,0.0265 -0.0625,0.0625 -0.0464,0.036 -0.0184,0.0238 -0.0625,0.0625 -0.0441,0.0387 -0.0207,0.0213 -0.0625,0.0625 -0.0418,0.0412 -0.0233,0.0188 -0.0625,0.0625 -0.0392,0.0437 -0.0259,0.0166 -0.0625,0.0625 -0.0366,0.0459 -0.0288,0.0457 -0.0625,0.0937 -0.0337,0.048 -0.0317,0.0126 -0.0625,0.0625 -0.0308,0.0499 -0.003,0.0108 -0.0313,0.0625 -0.0278,0.0517 -0.007,0.0405 -0.0313,0.0937 -0.0247,0.0533 -0.041,0.0391 -0.0625,0.0937 -0.0215,0.0546 -0.0131,0.007 -0.0313,0.0625 -0.0182,0.0558 0.0148,0.037 0,0.0937 -0.0148,0.0568 -0.0198,0.0362 -0.0313,0.0937 -0.0114,0.0576 0.008,0.0356 0,0.0937 -0.008,0.0581 -0.0268,0.0352 -0.0313,0.0937 -0.004,0.0585 10e-4,0.0351 0,0.0937 -0.001,0.0587 -0.002,0.0351 0,0.0937 0.002,0.0586 -0.006,0.004 0,0.0625 0.006,0.0584 0.0218,0.0358 0.0313,0.0937 0,0 1.00861,5.6153 4.90625,10.46875" + id="path4008" + sodipodi:nodetypes="ccsssssssssssssssssccssssssssssssssssccccssssssssssssssssssssssssssssssscc" /> + <path + style="opacity:0.96694186000000004;color:#000000;fill:none;stroke:url(#radialGradient4036);stroke-width:1.99999988000000006;stroke-miterlimit:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 139.64493,53.973461 c -0.19939,0.02904 -0.18988,0.09127 -0.38762,0.129856 -0.1994,0.03319 -0.1903,-0.04149 -0.38763,0 -0.19774,0.04149 -0.0633,0.07841 -0.25856,0.129855 -0.19526,0.05103 -0.0662,-0.06099 -0.25855,0 -0.19237,0.06099 -0.19857,0.05933 -0.38763,0.129856 -0.18905,0.07011 -0.0732,0.0502 -0.25855,0.129856 -0.18534,0.07966 -0.0774,0.04149 -0.25856,0.129855 -0.1812,0.08878 -0.0819,0.03319 -0.25856,0.129856 -0.17664,0.0975 -0.0869,0.02489 -0.25855,0.129856 -0.17168,0.106207 -0.0922,0.144791 -0.25856,0.259296 -0.1663,0.114505 -0.098,0.0083 -0.25855,0.129856 -0.16051,0.122802 -0.10425,0.128611 -0.25856,0.259296 -0.1543,0.130685 -0.11087,-0.0083 -0.25855,0.129856 -0.14769,0.138153 -0.11791,0.11409 -0.25856,0.259296 -0.14065,0.145206 0.004,0.107038 -0.12948,0.259297 -0.13321,0.152258 -0.13321,-0.02904 -0.25856,0.129855 -0.12535,0.158482 -0.0124,0.09459 -0.12949,0.259297 0,0 -13.34449,19.338451 -16.15973,44.98793 a 2.9761723,2.9846976 0 0 1 -4.78328,1.94472 C 94.085547,87.348105 70.998584,83.146383 70.998584,83.146383 c -0.239112,-0.0419 -0.146446,-0.102059 -0.387627,-0.129856 -0.241181,-0.02904 -0.145205,0.01245 -0.387627,0 -0.242422,-0.01245 -0.145205,-0.0012 -0.387626,0 -0.242836,0.0012 -0.145619,-0.0166 -0.387627,0 -0.242422,0.01659 -0.01655,-0.02904 -0.258556,0 -0.240767,0.02904 -0.148928,0.08505 -0.387627,0.129856 -0.238699,0.04439 -0.152238,-0.0585 -0.387627,0 -0.235803,0.0585 -0.155961,0.05684 -0.387627,0.129855 -0.231666,0.0726 -0.160925,0.04315 -0.387626,0.129856 -0.227116,0.08629 -0.03723,0.02904 -0.258556,0.129856 -0.221324,0.09957 -0.172509,0.01659 -0.387627,0.129855 -0.215118,0.112846 -0.05047,0.134005 -0.258556,0.259297 -0.208085,0.125292 -0.187401,-0.0083 -0.387627,0.129855 -0.200225,0.137738 -0.0666,0.109942 -0.258555,0.259297 -0.191952,0.149354 -0.07612,0.09874 -0.258556,0.259296 -0.182437,0.160556 -0.08563,0.08837 -0.258556,0.259296 -0.172922,0.170929 -0.09639,0.078 -0.258556,0.259297 -0.162166,0.1813 -0.107145,0.06887 -0.258556,0.259296 -0.15141,0.190428 -0.119142,0.189598 -0.258555,0.388738 -0.139414,0.199139 -0.13114,0.05227 -0.258556,0.259296 -0.127416,0.207022 -0.01241,0.04481 -0.129485,0.259296 -0.115005,0.21449 -0.02896,0.168024 -0.129485,0.388738 -0.102181,0.221128 -0.169612,0.162215 -0.258555,0.388737 -0.08894,0.226521 -0.05419,0.02904 -0.129485,0.259296 -0.07529,0.2315 0.06123,0.153504 0,0.388737 -0.06123,0.235649 -0.08191,0.150185 -0.129485,0.388738 -0.04716,0.238967 0.03309,0.147695 0,0.388737 -0.03309,0.241042 -0.110869,0.146035 -0.129485,0.388737 -0.01655,0.242701 0.0041,0.145621 0,0.388737 -0.0041,0.243531 -0.0083,0.145621 0,0.388737 0.0083,0.243117 -0.02482,0.01659 0,0.259297 0.02482,0.242286 0.09018,0.148525 0.129485,0.388737 0,0 4.172511,23.296433 20.296629,43.432153 a 2.9761723,2.9846976 0 0 1 -1.939168,4.79698 c -25.613529,2.82185 -44.988706,16.20603 -44.988706,16.20603 -0.195262,0.14147 -0.07198,-0.0249 -0.258556,0.12985 -0.186574,0.15268 -0.0815,0.0958 -0.258556,0.2593 -0.177059,0.16346 -0.09143,0.0855 -0.258556,0.2593 -0.16713,0.17383 -0.101767,0.0759 -0.258555,0.25929 -0.156789,0.18338 -0.112938,0.19665 -0.258556,0.38874 -0.145619,0.19209 0.0041,0.0589 -0.129485,0.2593 -0.134035,0.20038 -0.136517,0.051 -0.258556,0.25929 -0.122038,0.20827 -0.02068,0.17383 -0.129485,0.38874 -0.109627,0.2149 -0.161752,0.0373 -0.258555,0.2593 -0.0968,0.22112 -0.04592,0.16263 -0.129485,0.38873 -0.08357,0.22652 -0.05916,0.15807 -0.129485,0.38874 -0.06991,0.23108 0.05626,0.15433 0,0.38874 -0.05626,0.23482 -0.08688,0.0207 -0.129484,0.25929 -0.04261,0.23773 0.02896,0.14936 0,0.38874 -0.02896,0.2398 -0.115006,0.14811 -0.129485,0.38874 -0.01241,0.24104 0,0.14769 0,0.38874 0,0.24145 -0.01241,0.14811 0,0.38873 0.01241,0.24104 0.10094,0.14936 0.129485,0.38874 0.02896,0.2398 -0.04261,0.15143 0,0.38874 0.04261,0.23772 0.07281,0.0249 0.129484,0.25929 0.05626,0.23482 -0.06991,0.15807 0,0.38874 0.06991,0.23109 0.04592,0.16263 0.129485,0.38874 0.08357,0.22652 0.0331,0.16802 0.129485,0.38873 0.0968,0.22113 0.148928,0.0444 0.258555,0.2593 0.109628,0.21491 0.0083,0.18089 0.129485,0.38874 0.122039,0.20827 0.124521,0.0589 0.258556,0.25929 0.134035,0.20039 -0.01655,0.0672 0.129485,0.2593 0.145618,0.19209 0.101767,0.20578 0.258556,0.38874 0.156788,0.18337 0.09143,0.0855 0.258555,0.25929 0.167131,0.17384 0.0815,0.0958 0.258556,0.2593 0.177059,0.16346 0.07198,0.10662 0.258556,0.2593 0.186574,0.15267 0.06329,-0.0125 0.258556,0.12985 0,0 19.261206,13.27781 44.859428,16.07638 a 2.9761723,2.9846976 0 0 1 2.068446,4.79698 c -16.125566,20.13759 -20.298077,43.43402 -20.298077,43.43402 -0.03723,0.24021 -0.104663,0.14687 -0.129484,0.38874 -0.02482,0.24229 0.0083,0.0166 0,0.2593 -0.0083,0.24311 -0.0041,0.14562 0,0.38873 0.0041,0.24353 -0.01655,0.14604 0,0.38874 0.01655,0.2427 0.09639,0.1477 0.129484,0.38874 0.03309,0.24104 -0.04716,0.15018 0,0.38873 0.04716,0.23897 0.06785,0.15351 0.129485,0.38874 0.06123,0.23565 -0.07529,0.15765 0,0.38874 0.07529,0.2315 0.04137,0.0332 0.129485,0.2593 0.08894,0.22652 0.156374,0.16802 0.258556,0.38873 0.102181,0.22113 0.01241,0.17466 0.129484,0.38874 0.115006,0.21449 0.0017,0.0523 0.129485,0.2593 0.127416,0.20702 0.119142,0.0601 0.258556,0.25929 0.139413,0.19914 0.107145,0.19831 0.258556,0.38874 0.15141,0.19043 0.09639,0.078 0.258555,0.2593 0.162167,0.1813 0.08563,0.0884 0.258556,0.25929 0.172922,0.17093 0.07612,0.0987 0.258556,0.2593 0.182437,0.16056 0.0666,0.10994 0.258556,0.2593 0.191951,0.14935 0.05833,0.12155 0.258555,0.25929 0.200226,0.13774 0.179955,0.004 0.387627,0.12986 0.208086,0.12529 0.04344,0.14645 0.258556,0.25929 0.215118,0.11285 0.166303,0.029 0.387627,0.12986 0.221324,0.0996 0.0331,0.0431 0.258556,0.12985 0.227115,0.0863 0.155961,0.0568 0.387626,0.12986 0.231666,0.0726 0.152238,0.0709 0.387627,0.12986 0.235803,0.0585 0.148928,-0.0444 0.387627,0 0.238699,0.0444 0.14686,0.0996 0.387627,0.12985 0.240767,0.029 0.01655,-0.0166 0.258556,0 0.242422,0.0166 0.145205,-0.001 0.387627,0 0.242835,10e-4 0.145205,0.0125 0.387626,0 0.242422,-0.0124 0.146446,0.029 0.387627,0 0.241181,-0.029 0.148928,-0.0875 0.387627,-0.12985 0,0 23.086963,-4.20173 43.178814,-20.35477 a 2.9761723,2.9846976 0 0 1 4.78328,1.94472 c 2.81305,25.66827 16.15974,45.11758 16.15974,45.11758 0.14106,0.19582 -0.0248,0.0722 0.12948,0.25929 0.15224,0.18711 0.0956,0.0817 0.25856,0.2593 0.16299,0.17757 0.0852,0.0917 0.25855,0.2593 0.17334,0.16761 0.0757,0.10206 0.25856,0.25929 0.18285,0.15724 0.19609,0.11326 0.38763,0.2593 0.19153,0.14604 0.0587,-0.004 0.25855,0.12986 0.19981,0.13441 0.0509,0.1369 0.25856,0.25929 0.20767,0.12239 0.17333,0.0208 0.38762,0.12986 0.2143,0.10994 0.0372,0.16221 0.25856,0.25929 0.2205,0.0971 0.16217,0.0461 0.38763,0.12986 0.22587,0.0838 0.15761,0.0593 0.38762,0.12985 0.23043,0.0701 0.1539,-0.0564 0.38763,0 0.23415,0.0564 0.0207,0.0871 0.25856,0.12986 0.23704,0.0427 0.14892,-0.029 0.38762,0 0.23912,0.029 0.14769,0.11534 0.38763,0.12986 0.24035,0.0124 0.14727,0 0.38763,0 0.24076,0 0.14768,0.0124 0.38762,0 0.24036,-0.0125 0.14893,-0.10123 0.38763,-0.12986 0.23911,-0.029 0.151,0.0427 0.38763,0 0.23704,-0.0427 0.0248,-0.073 0.25855,-0.12986 0.23415,-0.0564 0.15762,0.0701 0.38763,0 0.23042,-0.0701 0.16217,-0.0461 0.38763,-0.12985 0.22587,-0.0838 0.16754,-0.0332 0.38762,-0.12986 0.2205,-0.0971 0.0443,-0.14935 0.25856,-0.25929 0.21429,-0.10994 0.18037,-0.008 0.38763,-0.12986 0.20767,-0.12239 0.0587,-0.12488 0.25855,-0.25929 0.19981,-0.13442 0.067,0.0166 0.25856,-0.12986 0.19154,-0.14604 0.20519,-0.10206 0.38762,-0.2593 0.18286,-0.15723 0.0852,-0.0917 0.25856,-0.25929 0.17334,-0.16761 0.0956,-0.0817 0.25856,-0.2593 0.16299,-0.17757 0.10631,-0.0722 0.25855,-0.2593 0.15224,-0.1871 -0.0124,-0.0635 0.12949,-0.25929 0,0 13.27197,-19.40102 16.03045,-45.11758 a 2.9761723,2.9846976 0 0 1 4.78329,-2.07437 c 20.12395,16.24872 43.30809,20.48442 43.30809,20.48442 0.24118,0.0431 0.14438,0.10123 0.38763,0.12985 0.24325,0.029 0.14313,-0.0124 0.38762,0 0.24449,0.0125 0.14273,10e-4 0.38763,0 0.2449,-9.9e-4 0.14355,0.0166 0.38763,0 0.24449,-0.0166 0.14479,0.029 0.38762,0 0.24325,-0.029 0.0166,-0.0846 0.25856,-0.12985 0.24077,-0.0452 0.15017,0.0593 0.38763,0 0.23745,-0.0593 0.1543,-0.056 0.38762,-0.12986 0.23374,-0.0738 0.15886,-0.0419 0.38763,-0.12986 0.22877,-0.0875 0.16465,-0.029 0.38763,-0.12985 0.22298,-0.10123 0.0418,-0.14479 0.25855,-0.2593 0.21678,-0.1145 0.1783,-0.002 0.38763,-0.12985 0.20933,-0.12737 0.0571,-0.11949 0.25856,-0.2593 0.20146,-0.13981 0.19526,0.0207 0.38762,-0.12985 0.19278,-0.15185 0.0753,-0.0963 0.25856,-0.2593 0.18326,-0.16305 0.0852,-0.0855 0.25855,-0.2593 0.17334,-0.17383 0.096,-0.0755 0.25856,-0.25929 0.16258,-0.18379 0.10715,-0.066 0.25856,-0.2593 0.15141,-0.19333 -0.008,-0.18669 0.12948,-0.38874 0.13941,-0.20204 0.13155,-0.0494 0.25856,-0.25929 0.127,-0.20993 0.0165,-0.17176 0.12948,-0.38874 0.11418,-0.2174 0.15762,-0.0373 0.25856,-0.2593 0.10094,-0.22361 0.0418,-0.15931 0.12948,-0.38873 0.0873,-0.22943 0.0558,-0.15475 0.12949,-0.38874 0.0736,-0.23441 0.0699,-0.1506 0.12948,-0.38874 0.0592,-0.23855 -0.0451,-0.14728 0,-0.38874 0.0451,-0.24145 0.0989,-0.0166 0.12949,-0.25929 0.0289,-0.24395 -0.0165,-0.14396 0,-0.38874 0.0165,-0.24519 -0.001,-0.14313 0,-0.38874 9.9e-4,-0.2456 0.0124,-0.14354 0,-0.38873 -0.0124,-0.2452 0.0289,-0.1448 0,-0.38874 -0.029,-0.24395 -0.0865,-0.14687 -0.12949,-0.38874 0,0 -4.28359,-23.17305 -20.42591,-43.3025 a 2.9761723,2.9846976 0 0 1 2.06845,-4.79698 c 25.617,-2.79642 44.98871,-16.07638 44.98871,-16.07638 0.19526,-0.14147 0.072,0.0249 0.25855,-0.12986 0.18658,-0.15267 0.0815,-0.0958 0.25856,-0.25929 0.17706,-0.16346 0.0914,-0.0855 0.25855,-0.2593 0.16713,-0.17383 0.10177,-0.0759 0.25856,-0.2593 0.15679,-0.18337 0.11294,-0.19665 0.25856,-0.38873 0.14561,-0.19209 -0.004,-0.0589 0.12948,-0.2593 0.13404,-0.20039 0.13652,-0.051 0.25856,-0.2593 0.12203,-0.20826 0.0207,-0.17383 0.12948,-0.38873 0.10963,-0.21491 0.16175,-0.0373 0.25856,-0.2593 0.0968,-0.22113 0.0459,-0.16263 0.12948,-0.38874 0.0836,-0.22652 0.0592,-0.15807 0.12949,-0.38874 0.0699,-0.23108 -0.0563,-0.15433 0,-0.38873 0.0563,-0.23482 0.0869,-0.0207 0.12948,-0.2593 0.0426,-0.23772 -0.029,-0.14935 0,-0.38874 0.029,-0.23979 0.11501,-0.14811 0.12949,-0.38873 0.0124,-0.24105 0,-0.1477 0,-0.38874 0,-0.24146 0.0124,-0.14811 0,-0.38874 -0.0124,-0.24104 -0.10094,-0.14935 -0.12949,-0.38873 -0.029,-0.2398 0.0426,-0.15143 0,-0.38874 -0.0426,-0.23773 -0.0728,-0.0249 -0.12948,-0.2593 -0.0563,-0.23482 0.0699,-0.15807 0,-0.38874 -0.0699,-0.23108 -0.0459,-0.16263 -0.12949,-0.38873 -0.0836,-0.22652 -0.0331,-0.16803 -0.12948,-0.38874 -0.0968,-0.22113 -0.14893,-0.0444 -0.25856,-0.2593 -0.10963,-0.2149 -0.008,-0.18088 -0.12948,-0.38873 -0.12204,-0.20827 -0.12452,-0.0589 -0.25856,-0.2593 -0.13404,-0.20038 0.0165,-0.0672 -0.12948,-0.2593 -0.14562,-0.19208 -0.10177,-0.20577 -0.25856,-0.38873 -0.15679,-0.18338 -0.0914,-0.0855 -0.25856,-0.2593 -0.16713,-0.17383 -0.0815,-0.0958 -0.25855,-0.2593 -0.17706,-0.16346 -0.072,-0.10662 -0.25856,-0.25929 -0.18657,-0.15268 -0.0633,0.0124 -0.25855,-0.12986 0,0 -19.48568,-13.38633 -45.11799,-16.20603 a 2.9761723,2.9846976 0 0 1 -1.93379,-4.80009 c 16.14228,-20.12945 20.42591,-43.302502 20.42591,-43.302502 0.043,-0.241872 0.10094,-0.144791 0.12948,-0.388737 0.029,-0.243946 -0.0124,-0.143547 0,-0.388737 0.0124,-0.245191 0.001,-0.143132 0,-0.388738 -9.9e-4,-0.245605 0.0165,-0.143961 0,-0.388737 -0.0165,-0.245191 0.029,-0.145206 0,-0.388737 -0.029,-0.243946 -0.0844,-0.01659 -0.12948,-0.259296 -0.0451,-0.241457 0.0592,-0.1506 0,-0.388738 -0.0592,-0.238552 -0.0558,-0.154748 -0.12949,-0.388737 -0.0736,-0.234404 -0.0418,-0.159312 -0.12948,-0.388737 -0.0873,-0.229425 -0.029,-0.16512 -0.12949,-0.388737 -0.10094,-0.223617 -0.14437,-0.0419 -0.25855,-0.259297 -0.11418,-0.217394 -0.002,-0.17881 -0.12949,-0.388737 -0.127,-0.209926 -0.11914,-0.05725 -0.25855,-0.259296 -0.13941,-0.202044 0.0207,-0.195821 -0.12949,-0.388737 -0.15141,-0.193332 -0.096,-0.07551 -0.25855,-0.259297 -0.16258,-0.183789 -0.0852,-0.08546 -0.25856,-0.259296 -0.17333,-0.173833 -0.0753,-0.09625 -0.25855,-0.259297 -0.18327,-0.163045 -0.0658,-0.107452 -0.25856,-0.259296 -0.19278,-0.151844 -0.18657,0.0083 -0.38763,-0.129856 -0.20146,-0.139812 -0.0492,-0.13193 -0.25855,-0.259296 -0.20933,-0.127367 -0.17127,-0.01659 -0.38763,-0.129856 -0.21677,-0.114505 -0.0372,-0.158067 -0.25855,-0.259296 -0.22298,-0.10123 -0.15886,-0.0419 -0.38763,-0.129856 -0.22877,-0.08754 -0.15431,-0.05601 -0.38763,-0.129856 -0.23373,-0.07385 -0.15017,-0.07011 -0.38763,-0.129855 -0.23745,-0.05933 -0.14685,0.04522 -0.38762,0 -0.24077,-0.04522 -0.0165,-0.09915 -0.25856,-0.129856 -0.24325,-0.02904 -0.14355,0.01659 -0.38762,0 -0.24449,-0.0166 -0.14273,9.96e-4 -0.38763,0 -0.24491,-9.96e-4 -0.14314,-0.01245 -0.38763,0 -0.24449,0.01245 -0.14438,-0.02904 -0.38762,0 -0.24325,0.02904 -0.14645,0.08671 -0.38763,0.129856 0,0 -23.18414,4.2357 -43.3081,20.484417 a 2.9761723,2.9846976 0 0 1 -4.78328,-2.07437 c -2.77333,-25.672753 -16.03046,-44.98793 -16.03046,-44.98793 -0.1481,-0.209097 -0.0976,-0.06016 -0.25855,-0.259297 -0.16093,-0.199139 -0.0852,-0.07053 -0.25856,-0.259296 -0.17333,-0.188768 -0.074,-0.211171 -0.25855,-0.388737 -0.18451,-0.177566 -0.0633,-0.09376 -0.25856,-0.259297 -0.19526,-0.165534 -0.0534,0.02489 -0.25855,-0.129855 -0.20519,-0.153089 -0.17334,-0.119484 -0.38763,-0.259297 -0.21471,-0.139812 -0.0372,-0.133174 -0.25856,-0.259296 -0.22298,-0.126122 -0.15761,-0.0166 -0.38762,-0.129856 -0.23043,-0.111601 -0.151,-0.03319 -0.38763,-0.129855 -0.23663,-0.09708 -0.14562,-0.177152 -0.38763,-0.259297 -0.24242,-0.08214 -0.14065,0.06638 -0.38762,0 -0.24698,-0.06638 -0.13735,-0.07883 -0.38763,-0.129855 -0.2507,-0.05103 -0.13445,-0.09459 -0.38763,-0.129856 -0.25359,-0.03319 -0.13279,0.02074 -0.38762,0 -0.25525,-0.02074 -0.13197,0.0029 -0.38763,0 -0.17044,-0.0019 -0.19857,-0.003 -0.25856,0 -0.10011,0.0083 -0.10218,-0.0032 -0.12948,0 -0.029,0.0032 -0.029,-0.01245 -0.12949,0 z" + id="path4008-6" /> + <path + style="opacity:0.96694186000000004;color:#000000;fill:none;stroke:url(#radialGradient4036-9);stroke-width:1.99999988000000006;stroke-miterlimit:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 139.64493,53.973461 c -0.19939,0.02904 -0.18988,0.09127 -0.38762,0.129856 -0.1994,0.03319 -0.1903,-0.04149 -0.38763,0 -0.19774,0.04149 -0.0633,0.07841 -0.25856,0.129855 -0.19526,0.05103 -0.0662,-0.06099 -0.25855,0 -0.19237,0.06099 -0.19857,0.05933 -0.38763,0.129856 -0.18905,0.07011 -0.0732,0.0502 -0.25855,0.129856 -0.18534,0.07966 -0.0774,0.04149 -0.25856,0.129855 -0.1812,0.08878 -0.0819,0.03319 -0.25856,0.129856 -0.17664,0.0975 -0.0869,0.02489 -0.25855,0.129856 -0.17168,0.106207 -0.0922,0.144791 -0.25856,0.259296 -0.1663,0.114505 -0.098,0.0083 -0.25855,0.129856 -0.16051,0.122802 -0.10425,0.128611 -0.25856,0.259296 -0.1543,0.130685 -0.11087,-0.0083 -0.25855,0.129856 -0.14769,0.138153 -0.11791,0.11409 -0.25856,0.259296 -0.14065,0.145206 0.004,0.107038 -0.12948,0.259297 -0.13321,0.152258 -0.13321,-0.02904 -0.25856,0.129855 -0.12535,0.158482 -0.0124,0.09459 -0.12949,0.259297 0,0 -13.34449,19.338451 -16.15973,44.98793 a 2.9761723,2.9846976 0 0 1 -4.78328,1.94472 C 94.085547,87.348105 70.998584,83.146383 70.998584,83.146383 c -0.239112,-0.0419 -0.146446,-0.102059 -0.387627,-0.129856 -0.241181,-0.02904 -0.145205,0.01245 -0.387627,0 -0.242422,-0.01245 -0.145205,-0.0012 -0.387626,0 -0.242836,0.0012 -0.145619,-0.0166 -0.387627,0 -0.242422,0.01659 -0.01655,-0.02904 -0.258556,0 -0.240767,0.02904 -0.148928,0.08505 -0.387627,0.129856 -0.238699,0.04439 -0.152238,-0.0585 -0.387627,0 -0.235803,0.0585 -0.155961,0.05684 -0.387627,0.129855 -0.231666,0.0726 -0.160925,0.04315 -0.387626,0.129856 -0.227116,0.08629 -0.03723,0.02904 -0.258556,0.129856 -0.221324,0.09957 -0.172509,0.01659 -0.387627,0.129855 -0.215118,0.112846 -0.05047,0.134005 -0.258556,0.259297 -0.208085,0.125292 -0.187401,-0.0083 -0.387627,0.129855 -0.200225,0.137738 -0.0666,0.109942 -0.258555,0.259297 -0.191952,0.149354 -0.07612,0.09874 -0.258556,0.259296 -0.182437,0.160556 -0.08563,0.08837 -0.258556,0.259296 -0.172922,0.170929 -0.09639,0.078 -0.258556,0.259297 -0.162166,0.1813 -0.107145,0.06887 -0.258556,0.259296 -0.15141,0.190428 -0.119142,0.189598 -0.258555,0.388738 -0.139414,0.199139 -0.13114,0.05227 -0.258556,0.259296 -0.127416,0.207022 -0.01241,0.04481 -0.129485,0.259296 -0.115005,0.21449 -0.02896,0.168024 -0.129485,0.388738 -0.102181,0.221128 -0.169612,0.162215 -0.258555,0.388737 -0.08894,0.226521 -0.05419,0.02904 -0.129485,0.259296 -0.07529,0.2315 0.06123,0.153504 0,0.388737 -0.06123,0.235649 -0.08191,0.150185 -0.129485,0.388738 -0.04716,0.238967 0.03309,0.147695 0,0.388737 -0.03309,0.241042 -0.110869,0.146035 -0.129485,0.388737 -0.01655,0.242701 0.0041,0.145621 0,0.388737 -0.0041,0.243531 -0.0083,0.145621 0,0.388737 0.0083,0.243117 -0.02482,0.01659 0,0.259297 0.02482,0.242286 0.09018,0.148525 0.129485,0.388737 0,0 4.172511,23.296433 20.296629,43.432153 a 2.9761723,2.9846976 0 0 1 -1.939168,4.79698 c -25.613529,2.82185 -44.988706,16.20603 -44.988706,16.20603 -0.195262,0.14147 -0.07198,-0.0249 -0.258556,0.12985 -0.186574,0.15268 -0.0815,0.0958 -0.258556,0.2593 -0.177059,0.16346 -0.09143,0.0855 -0.258556,0.2593 -0.16713,0.17383 -0.101767,0.0759 -0.258555,0.25929 -0.156789,0.18338 -0.112938,0.19665 -0.258556,0.38874 -0.145619,0.19209 0.0041,0.0589 -0.129485,0.2593 -0.134035,0.20038 -0.136517,0.051 -0.258556,0.25929 -0.122038,0.20827 -0.02068,0.17383 -0.129485,0.38874 -0.109627,0.2149 -0.161752,0.0373 -0.258555,0.2593 -0.0968,0.22112 -0.04592,0.16263 -0.129485,0.38873 -0.08357,0.22652 -0.05916,0.15807 -0.129485,0.38874 -0.06991,0.23108 0.05626,0.15433 0,0.38874 -0.05626,0.23482 -0.08688,0.0207 -0.129484,0.25929 -0.04261,0.23773 0.02896,0.14936 0,0.38874 -0.02896,0.2398 -0.115006,0.14811 -0.129485,0.38874 -0.01241,0.24104 0,0.14769 0,0.38874 0,0.24145 -0.01241,0.14811 0,0.38873 0.01241,0.24104 0.10094,0.14936 0.129485,0.38874 0.02896,0.2398 -0.04261,0.15143 0,0.38874 0.04261,0.23772 0.07281,0.0249 0.129484,0.25929 0.05626,0.23482 -0.06991,0.15807 0,0.38874 0.06991,0.23109 0.04592,0.16263 0.129485,0.38874 0.08357,0.22652 0.0331,0.16802 0.129485,0.38873 0.0968,0.22113 0.148928,0.0444 0.258555,0.2593 0.109628,0.21491 0.0083,0.18089 0.129485,0.38874 0.122039,0.20827 0.124521,0.0589 0.258556,0.25929 0.134035,0.20039 -0.01655,0.0672 0.129485,0.2593 0.145618,0.19209 0.101767,0.20578 0.258556,0.38874 0.156788,0.18337 0.09143,0.0855 0.258555,0.25929 0.167131,0.17384 0.0815,0.0958 0.258556,0.2593 0.177059,0.16346 0.07198,0.10662 0.258556,0.2593 0.186574,0.15267 0.06329,-0.0125 0.258556,0.12985 0,0 19.261206,13.27781 44.859428,16.07638 a 2.9761723,2.9846976 0 0 1 2.068446,4.79698 c -16.125566,20.13759 -20.298077,43.43402 -20.298077,43.43402 -0.03723,0.24021 -0.104663,0.14687 -0.129484,0.38874 -0.02482,0.24229 0.0083,0.0166 0,0.2593 -0.0083,0.24311 -0.0041,0.14562 0,0.38873 0.0041,0.24353 -0.01655,0.14604 0,0.38874 0.01655,0.2427 0.09639,0.1477 0.129484,0.38874 0.03309,0.24104 -0.04716,0.15018 0,0.38873 0.04716,0.23897 0.06785,0.15351 0.129485,0.38874 0.06123,0.23565 -0.07529,0.15765 0,0.38874 0.07529,0.2315 0.04137,0.0332 0.129485,0.2593 0.08894,0.22652 0.156374,0.16802 0.258556,0.38873 0.102181,0.22113 0.01241,0.17466 0.129484,0.38874 0.115006,0.21449 0.0017,0.0523 0.129485,0.2593 0.127416,0.20702 0.119142,0.0601 0.258556,0.25929 0.139413,0.19914 0.107145,0.19831 0.258556,0.38874 0.15141,0.19043 0.09639,0.078 0.258555,0.2593 0.162167,0.1813 0.08563,0.0884 0.258556,0.25929 0.172922,0.17093 0.07612,0.0987 0.258556,0.2593 0.182437,0.16056 0.0666,0.10994 0.258556,0.2593 0.191951,0.14935 0.05833,0.12155 0.258555,0.25929 0.200226,0.13774 0.179955,0.004 0.387627,0.12986 0.208086,0.12529 0.04344,0.14645 0.258556,0.25929 0.215118,0.11285 0.166303,0.029 0.387627,0.12986 0.221324,0.0996 0.0331,0.0431 0.258556,0.12985 0.227115,0.0863 0.155961,0.0568 0.387626,0.12986 0.231666,0.0726 0.152238,0.0709 0.387627,0.12986 0.235803,0.0585 0.148928,-0.0444 0.387627,0 0.238699,0.0444 0.14686,0.0996 0.387627,0.12985 0.240767,0.029 0.01655,-0.0166 0.258556,0 0.242422,0.0166 0.145205,-0.001 0.387627,0 0.242835,10e-4 0.145205,0.0125 0.387626,0 0.242422,-0.0124 0.146446,0.029 0.387627,0 0.241181,-0.029 0.148928,-0.0875 0.387627,-0.12985 0,0 23.086963,-4.20173 43.178814,-20.35477 a 2.9761723,2.9846976 0 0 1 4.78328,1.94472 c 2.81305,25.66827 16.15974,45.11758 16.15974,45.11758 0.14106,0.19582 -0.0248,0.0722 0.12948,0.25929 0.15224,0.18711 0.0956,0.0817 0.25856,0.2593 0.16299,0.17757 0.0852,0.0917 0.25855,0.2593 0.17334,0.16761 0.0757,0.10206 0.25856,0.25929 0.18285,0.15724 0.19609,0.11326 0.38763,0.2593 0.19153,0.14604 0.0587,-0.004 0.25855,0.12986 0.19981,0.13441 0.0509,0.1369 0.25856,0.25929 0.20767,0.12239 0.17333,0.0208 0.38762,0.12986 0.2143,0.10994 0.0372,0.16221 0.25856,0.25929 0.2205,0.0971 0.16217,0.0461 0.38763,0.12986 0.22587,0.0838 0.15761,0.0593 0.38762,0.12985 0.23043,0.0701 0.1539,-0.0564 0.38763,0 0.23415,0.0564 0.0207,0.0871 0.25856,0.12986 0.23704,0.0427 0.14892,-0.029 0.38762,0 0.23912,0.029 0.14769,0.11534 0.38763,0.12986 0.24035,0.0124 0.14727,0 0.38763,0 0.24076,0 0.14768,0.0124 0.38762,0 0.24036,-0.0125 0.14893,-0.10123 0.38763,-0.12986 0.23911,-0.029 0.151,0.0427 0.38763,0 0.23704,-0.0427 0.0248,-0.073 0.25855,-0.12986 0.23415,-0.0564 0.15762,0.0701 0.38763,0 0.23042,-0.0701 0.16217,-0.0461 0.38763,-0.12985 0.22587,-0.0838 0.16754,-0.0332 0.38762,-0.12986 0.2205,-0.0971 0.0443,-0.14935 0.25856,-0.25929 0.21429,-0.10994 0.18037,-0.008 0.38763,-0.12986 0.20767,-0.12239 0.0587,-0.12488 0.25855,-0.25929 0.19981,-0.13442 0.067,0.0166 0.25856,-0.12986 0.19154,-0.14604 0.20519,-0.10206 0.38762,-0.2593 0.18286,-0.15723 0.0852,-0.0917 0.25856,-0.25929 0.17334,-0.16761 0.0956,-0.0817 0.25856,-0.2593 0.16299,-0.17757 0.10631,-0.0722 0.25855,-0.2593 0.15224,-0.1871 -0.0124,-0.0635 0.12949,-0.25929 0,0 13.27197,-19.40102 16.03045,-45.11758 a 2.9761723,2.9846976 0 0 1 4.78329,-2.07437 c 20.12395,16.24872 43.30809,20.48442 43.30809,20.48442 0.24118,0.0431 0.14438,0.10123 0.38763,0.12985 0.24325,0.029 0.14313,-0.0124 0.38762,0 0.24449,0.0125 0.14273,10e-4 0.38763,0 0.2449,-9.9e-4 0.14355,0.0166 0.38763,0 0.24449,-0.0166 0.14479,0.029 0.38762,0 0.24325,-0.029 0.0166,-0.0846 0.25856,-0.12985 0.24077,-0.0452 0.15017,0.0593 0.38763,0 0.23745,-0.0593 0.1543,-0.056 0.38762,-0.12986 0.23374,-0.0738 0.15886,-0.0419 0.38763,-0.12986 0.22877,-0.0875 0.16465,-0.029 0.38763,-0.12985 0.22298,-0.10123 0.0418,-0.14479 0.25855,-0.2593 0.21678,-0.1145 0.1783,-0.002 0.38763,-0.12985 0.20933,-0.12737 0.0571,-0.11949 0.25856,-0.2593 0.20146,-0.13981 0.19526,0.0207 0.38762,-0.12985 0.19278,-0.15185 0.0753,-0.0963 0.25856,-0.2593 0.18326,-0.16305 0.0852,-0.0855 0.25855,-0.2593 0.17334,-0.17383 0.096,-0.0755 0.25856,-0.25929 0.16258,-0.18379 0.10715,-0.066 0.25856,-0.2593 0.15141,-0.19333 -0.008,-0.18669 0.12948,-0.38874 0.13941,-0.20204 0.13155,-0.0494 0.25856,-0.25929 0.127,-0.20993 0.0165,-0.17176 0.12948,-0.38874 0.11418,-0.2174 0.15762,-0.0373 0.25856,-0.2593 0.10094,-0.22361 0.0418,-0.15931 0.12948,-0.38873 0.0873,-0.22943 0.0558,-0.15475 0.12949,-0.38874 0.0736,-0.23441 0.0699,-0.1506 0.12948,-0.38874 0.0592,-0.23855 -0.0451,-0.14728 0,-0.38874 0.0451,-0.24145 0.0989,-0.0166 0.12949,-0.25929 0.0289,-0.24395 -0.0165,-0.14396 0,-0.38874 0.0165,-0.24519 -0.001,-0.14313 0,-0.38874 9.9e-4,-0.2456 0.0124,-0.14354 0,-0.38873 -0.0124,-0.2452 0.0289,-0.1448 0,-0.38874 -0.029,-0.24395 -0.0865,-0.14687 -0.12949,-0.38874 0,0 -4.28359,-23.17305 -20.42591,-43.3025 a 2.9761723,2.9846976 0 0 1 2.06845,-4.79698 c 25.617,-2.79642 44.98871,-16.07638 44.98871,-16.07638 0.19526,-0.14147 0.072,0.0249 0.25855,-0.12986 0.18658,-0.15267 0.0815,-0.0958 0.25856,-0.25929 0.17706,-0.16346 0.0914,-0.0855 0.25855,-0.2593 0.16713,-0.17383 0.10177,-0.0759 0.25856,-0.2593 0.15679,-0.18337 0.11294,-0.19665 0.25856,-0.38873 0.14561,-0.19209 -0.004,-0.0589 0.12948,-0.2593 0.13404,-0.20039 0.13652,-0.051 0.25856,-0.2593 0.12203,-0.20826 0.0207,-0.17383 0.12948,-0.38873 0.10963,-0.21491 0.16175,-0.0373 0.25856,-0.2593 0.0968,-0.22113 0.0459,-0.16263 0.12948,-0.38874 0.0836,-0.22652 0.0592,-0.15807 0.12949,-0.38874 0.0699,-0.23108 -0.0563,-0.15433 0,-0.38873 0.0563,-0.23482 0.0869,-0.0207 0.12948,-0.2593 0.0426,-0.23772 -0.029,-0.14935 0,-0.38874 0.029,-0.23979 0.11501,-0.14811 0.12949,-0.38873 0.0124,-0.24105 0,-0.1477 0,-0.38874 0,-0.24146 0.0124,-0.14811 0,-0.38874 -0.0124,-0.24104 -0.10094,-0.14935 -0.12949,-0.38873 -0.029,-0.2398 0.0426,-0.15143 0,-0.38874 -0.0426,-0.23773 -0.0728,-0.0249 -0.12948,-0.2593 -0.0563,-0.23482 0.0699,-0.15807 0,-0.38874 -0.0699,-0.23108 -0.0459,-0.16263 -0.12949,-0.38873 -0.0836,-0.22652 -0.0331,-0.16803 -0.12948,-0.38874 -0.0968,-0.22113 -0.14893,-0.0444 -0.25856,-0.2593 -0.10963,-0.2149 -0.008,-0.18088 -0.12948,-0.38873 -0.12204,-0.20827 -0.12452,-0.0589 -0.25856,-0.2593 -0.13404,-0.20038 0.0165,-0.0672 -0.12948,-0.2593 -0.14562,-0.19208 -0.10177,-0.20577 -0.25856,-0.38873 -0.15679,-0.18338 -0.0914,-0.0855 -0.25856,-0.2593 -0.16713,-0.17383 -0.0815,-0.0958 -0.25855,-0.2593 -0.17706,-0.16346 -0.072,-0.10662 -0.25856,-0.25929 -0.18657,-0.15268 -0.0633,0.0124 -0.25855,-0.12986 0,0 -19.48568,-13.38633 -45.11799,-16.20603 a 2.9761723,2.9846976 0 0 1 -1.93379,-4.80009 c 16.14228,-20.12945 20.42591,-43.302502 20.42591,-43.302502 0.043,-0.241872 0.10094,-0.144791 0.12948,-0.388737 0.029,-0.243946 -0.0124,-0.143547 0,-0.388737 0.0124,-0.245191 0.001,-0.143132 0,-0.388738 -9.9e-4,-0.245605 0.0165,-0.143961 0,-0.388737 -0.0165,-0.245191 0.029,-0.145206 0,-0.388737 -0.029,-0.243946 -0.0844,-0.01659 -0.12948,-0.259296 -0.0451,-0.241457 0.0592,-0.1506 0,-0.388738 -0.0592,-0.238552 -0.0558,-0.154748 -0.12949,-0.388737 -0.0736,-0.234404 -0.0418,-0.159312 -0.12948,-0.388737 -0.0873,-0.229425 -0.029,-0.16512 -0.12949,-0.388737 -0.10094,-0.223617 -0.14437,-0.0419 -0.25855,-0.259297 -0.11418,-0.217394 -0.002,-0.17881 -0.12949,-0.388737 -0.127,-0.209926 -0.11914,-0.05725 -0.25855,-0.259296 -0.13941,-0.202044 0.0207,-0.195821 -0.12949,-0.388737 -0.15141,-0.193332 -0.096,-0.07551 -0.25855,-0.259297 -0.16258,-0.183789 -0.0852,-0.08546 -0.25856,-0.259296 -0.17333,-0.173833 -0.0753,-0.09625 -0.25855,-0.259297 -0.18327,-0.163045 -0.0658,-0.107452 -0.25856,-0.259296 -0.19278,-0.151844 -0.18657,0.0083 -0.38763,-0.129856 -0.20146,-0.139812 -0.0492,-0.13193 -0.25855,-0.259296 -0.20933,-0.127367 -0.17127,-0.01659 -0.38763,-0.129856 -0.21677,-0.114505 -0.0372,-0.158067 -0.25855,-0.259296 -0.22298,-0.10123 -0.15886,-0.0419 -0.38763,-0.129856 -0.22877,-0.08754 -0.15431,-0.05601 -0.38763,-0.129856 -0.23373,-0.07385 -0.15017,-0.07011 -0.38763,-0.129855 -0.23745,-0.05933 -0.14685,0.04522 -0.38762,0 -0.24077,-0.04522 -0.0165,-0.09915 -0.25856,-0.129856 -0.24325,-0.02904 -0.14355,0.01659 -0.38762,0 -0.24449,-0.0166 -0.14273,9.96e-4 -0.38763,0 -0.24491,-9.96e-4 -0.14314,-0.01245 -0.38763,0 -0.24449,0.01245 -0.14438,-0.02904 -0.38762,0 -0.24325,0.02904 -0.14645,0.08671 -0.38763,0.129856 0,0 -23.18414,4.2357 -43.3081,20.484417 a 2.9761723,2.9846976 0 0 1 -4.78328,-2.07437 c -2.77333,-25.672753 -16.03046,-44.98793 -16.03046,-44.98793 -0.1481,-0.209097 -0.0976,-0.06016 -0.25855,-0.259297 -0.16093,-0.199139 -0.0852,-0.07053 -0.25856,-0.259296 -0.17333,-0.188768 -0.074,-0.211171 -0.25855,-0.388737 -0.18451,-0.177566 -0.0633,-0.09376 -0.25856,-0.259297 -0.19526,-0.165534 -0.0534,0.02489 -0.25855,-0.129855 -0.20519,-0.153089 -0.17334,-0.119484 -0.38763,-0.259297 -0.21471,-0.139812 -0.0372,-0.133174 -0.25856,-0.259296 -0.22298,-0.126122 -0.15761,-0.0166 -0.38762,-0.129856 -0.23043,-0.111601 -0.151,-0.03319 -0.38763,-0.129855 -0.23663,-0.09708 -0.14562,-0.177152 -0.38763,-0.259297 -0.24242,-0.08214 -0.14065,0.06638 -0.38762,0 -0.24698,-0.06638 -0.13735,-0.07883 -0.38763,-0.129855 -0.2507,-0.05103 -0.13445,-0.09459 -0.38763,-0.129856 -0.25359,-0.03319 -0.13279,0.02074 -0.38762,0 -0.25525,-0.02074 -0.13197,0.0029 -0.38763,0 -0.17044,-0.0019 -0.19857,-0.003 -0.25856,0 -0.10011,0.0083 -0.10218,-0.0032 -0.12948,0 -0.029,0.0032 -0.029,-0.01245 -0.12949,0 z" + id="path4008-7" /> + <path + style="opacity:0.96694186000000004;color:#000000;fill:none;stroke:url(#radialGradient4036-6);stroke-width:1.99999988000000006;stroke-miterlimit:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 139.64493,53.973461 c -0.19939,0.02904 -0.18988,0.09127 -0.38762,0.129856 -0.1994,0.03319 -0.1903,-0.04149 -0.38763,0 -0.19774,0.04149 -0.0633,0.07841 -0.25856,0.129855 -0.19526,0.05103 -0.0662,-0.06099 -0.25855,0 -0.19237,0.06099 -0.19857,0.05933 -0.38763,0.129856 -0.18905,0.07011 -0.0732,0.0502 -0.25855,0.129856 -0.18534,0.07966 -0.0774,0.04149 -0.25856,0.129855 -0.1812,0.08878 -0.0819,0.03319 -0.25856,0.129856 -0.17664,0.0975 -0.0869,0.02489 -0.25855,0.129856 -0.17168,0.106207 -0.0922,0.144791 -0.25856,0.259296 -0.1663,0.114505 -0.098,0.0083 -0.25855,0.129856 -0.16051,0.122802 -0.10425,0.128611 -0.25856,0.259296 -0.1543,0.130685 -0.11087,-0.0083 -0.25855,0.129856 -0.14769,0.138153 -0.11791,0.11409 -0.25856,0.259296 -0.14065,0.145206 0.004,0.107038 -0.12948,0.259297 -0.13321,0.152258 -0.13321,-0.02904 -0.25856,0.129855 -0.12535,0.158482 -0.0124,0.09459 -0.12949,0.259297 0,0 -13.34449,19.338451 -16.15973,44.98793 a 2.9761723,2.9846976 0 0 1 -4.78328,1.94472 C 94.085547,87.348105 70.998584,83.146383 70.998584,83.146383 c -0.239112,-0.0419 -0.146446,-0.102059 -0.387627,-0.129856 -0.241181,-0.02904 -0.145205,0.01245 -0.387627,0 -0.242422,-0.01245 -0.145205,-0.0012 -0.387626,0 -0.242836,0.0012 -0.145619,-0.0166 -0.387627,0 -0.242422,0.01659 -0.01655,-0.02904 -0.258556,0 -0.240767,0.02904 -0.148928,0.08505 -0.387627,0.129856 -0.238699,0.04439 -0.152238,-0.0585 -0.387627,0 -0.235803,0.0585 -0.155961,0.05684 -0.387627,0.129855 -0.231666,0.0726 -0.160925,0.04315 -0.387626,0.129856 -0.227116,0.08629 -0.03723,0.02904 -0.258556,0.129856 -0.221324,0.09957 -0.172509,0.01659 -0.387627,0.129855 -0.215118,0.112846 -0.05047,0.134005 -0.258556,0.259297 -0.208085,0.125292 -0.187401,-0.0083 -0.387627,0.129855 -0.200225,0.137738 -0.0666,0.109942 -0.258555,0.259297 -0.191952,0.149354 -0.07612,0.09874 -0.258556,0.259296 -0.182437,0.160556 -0.08563,0.08837 -0.258556,0.259296 -0.172922,0.170929 -0.09639,0.078 -0.258556,0.259297 -0.162166,0.1813 -0.107145,0.06887 -0.258556,0.259296 -0.15141,0.190428 -0.119142,0.189598 -0.258555,0.388738 -0.139414,0.199139 -0.13114,0.05227 -0.258556,0.259296 -0.127416,0.207022 -0.01241,0.04481 -0.129485,0.259296 -0.115005,0.21449 -0.02896,0.168024 -0.129485,0.388738 -0.102181,0.221128 -0.169612,0.162215 -0.258555,0.388737 -0.08894,0.226521 -0.05419,0.02904 -0.129485,0.259296 -0.07529,0.2315 0.06123,0.153504 0,0.388737 -0.06123,0.235649 -0.08191,0.150185 -0.129485,0.388738 -0.04716,0.238967 0.03309,0.147695 0,0.388737 -0.03309,0.241042 -0.110869,0.146035 -0.129485,0.388737 -0.01655,0.242701 0.0041,0.145621 0,0.388737 -0.0041,0.243531 -0.0083,0.145621 0,0.388737 0.0083,0.243117 -0.02482,0.01659 0,0.259297 0.02482,0.242286 0.09018,0.148525 0.129485,0.388737 0,0 4.172511,23.296433 20.296629,43.432153 a 2.9761723,2.9846976 0 0 1 -1.939168,4.79698 c -25.613529,2.82185 -44.988706,16.20603 -44.988706,16.20603 -0.195262,0.14147 -0.07198,-0.0249 -0.258556,0.12985 -0.186574,0.15268 -0.0815,0.0958 -0.258556,0.2593 -0.177059,0.16346 -0.09143,0.0855 -0.258556,0.2593 -0.16713,0.17383 -0.101767,0.0759 -0.258555,0.25929 -0.156789,0.18338 -0.112938,0.19665 -0.258556,0.38874 -0.145619,0.19209 0.0041,0.0589 -0.129485,0.2593 -0.134035,0.20038 -0.136517,0.051 -0.258556,0.25929 -0.122038,0.20827 -0.02068,0.17383 -0.129485,0.38874 -0.109627,0.2149 -0.161752,0.0373 -0.258555,0.2593 -0.0968,0.22112 -0.04592,0.16263 -0.129485,0.38873 -0.08357,0.22652 -0.05916,0.15807 -0.129485,0.38874 -0.06991,0.23108 0.05626,0.15433 0,0.38874 -0.05626,0.23482 -0.08688,0.0207 -0.129484,0.25929 -0.04261,0.23773 0.02896,0.14936 0,0.38874 -0.02896,0.2398 -0.115006,0.14811 -0.129485,0.38874 -0.01241,0.24104 0,0.14769 0,0.38874 0,0.24145 -0.01241,0.14811 0,0.38873 0.01241,0.24104 0.10094,0.14936 0.129485,0.38874 0.02896,0.2398 -0.04261,0.15143 0,0.38874 0.04261,0.23772 0.07281,0.0249 0.129484,0.25929 0.05626,0.23482 -0.06991,0.15807 0,0.38874 0.06991,0.23109 0.04592,0.16263 0.129485,0.38874 0.08357,0.22652 0.0331,0.16802 0.129485,0.38873 0.0968,0.22113 0.148928,0.0444 0.258555,0.2593 0.109628,0.21491 0.0083,0.18089 0.129485,0.38874 0.122039,0.20827 0.124521,0.0589 0.258556,0.25929 0.134035,0.20039 -0.01655,0.0672 0.129485,0.2593 0.145618,0.19209 0.101767,0.20578 0.258556,0.38874 0.156788,0.18337 0.09143,0.0855 0.258555,0.25929 0.167131,0.17384 0.0815,0.0958 0.258556,0.2593 0.177059,0.16346 0.07198,0.10662 0.258556,0.2593 0.186574,0.15267 0.06329,-0.0125 0.258556,0.12985 0,0 19.261206,13.27781 44.859428,16.07638 a 2.9761723,2.9846976 0 0 1 2.068446,4.79698 c -16.125566,20.13759 -20.298077,43.43402 -20.298077,43.43402 -0.03723,0.24021 -0.104663,0.14687 -0.129484,0.38874 -0.02482,0.24229 0.0083,0.0166 0,0.2593 -0.0083,0.24311 -0.0041,0.14562 0,0.38873 0.0041,0.24353 -0.01655,0.14604 0,0.38874 0.01655,0.2427 0.09639,0.1477 0.129484,0.38874 0.03309,0.24104 -0.04716,0.15018 0,0.38873 0.04716,0.23897 0.06785,0.15351 0.129485,0.38874 0.06123,0.23565 -0.07529,0.15765 0,0.38874 0.07529,0.2315 0.04137,0.0332 0.129485,0.2593 0.08894,0.22652 0.156374,0.16802 0.258556,0.38873 0.102181,0.22113 0.01241,0.17466 0.129484,0.38874 0.115006,0.21449 0.0017,0.0523 0.129485,0.2593 0.127416,0.20702 0.119142,0.0601 0.258556,0.25929 0.139413,0.19914 0.107145,0.19831 0.258556,0.38874 0.15141,0.19043 0.09639,0.078 0.258555,0.2593 0.162167,0.1813 0.08563,0.0884 0.258556,0.25929 0.172922,0.17093 0.07612,0.0987 0.258556,0.2593 0.182437,0.16056 0.0666,0.10994 0.258556,0.2593 0.191951,0.14935 0.05833,0.12155 0.258555,0.25929 0.200226,0.13774 0.179955,0.004 0.387627,0.12986 0.208086,0.12529 0.04344,0.14645 0.258556,0.25929 0.215118,0.11285 0.166303,0.029 0.387627,0.12986 0.221324,0.0996 0.0331,0.0431 0.258556,0.12985 0.227115,0.0863 0.155961,0.0568 0.387626,0.12986 0.231666,0.0726 0.152238,0.0709 0.387627,0.12986 0.235803,0.0585 0.148928,-0.0444 0.387627,0 0.238699,0.0444 0.14686,0.0996 0.387627,0.12985 0.240767,0.029 0.01655,-0.0166 0.258556,0 0.242422,0.0166 0.145205,-0.001 0.387627,0 0.242835,10e-4 0.145205,0.0125 0.387626,0 0.242422,-0.0124 0.146446,0.029 0.387627,0 0.241181,-0.029 0.148928,-0.0875 0.387627,-0.12985 0,0 23.086963,-4.20173 43.178814,-20.35477 a 2.9761723,2.9846976 0 0 1 4.78328,1.94472 c 2.81305,25.66827 16.15974,45.11758 16.15974,45.11758 0.14106,0.19582 -0.0248,0.0722 0.12948,0.25929 0.15224,0.18711 0.0956,0.0817 0.25856,0.2593 0.16299,0.17757 0.0852,0.0917 0.25855,0.2593 0.17334,0.16761 0.0757,0.10206 0.25856,0.25929 0.18285,0.15724 0.19609,0.11326 0.38763,0.2593 0.19153,0.14604 0.0587,-0.004 0.25855,0.12986 0.19981,0.13441 0.0509,0.1369 0.25856,0.25929 0.20767,0.12239 0.17333,0.0208 0.38762,0.12986 0.2143,0.10994 0.0372,0.16221 0.25856,0.25929 0.2205,0.0971 0.16217,0.0461 0.38763,0.12986 0.22587,0.0838 0.15761,0.0593 0.38762,0.12985 0.23043,0.0701 0.1539,-0.0564 0.38763,0 0.23415,0.0564 0.0207,0.0871 0.25856,0.12986 0.23704,0.0427 0.14892,-0.029 0.38762,0 0.23912,0.029 0.14769,0.11534 0.38763,0.12986 0.24035,0.0124 0.14727,0 0.38763,0 0.24076,0 0.14768,0.0124 0.38762,0 0.24036,-0.0125 0.14893,-0.10123 0.38763,-0.12986 0.23911,-0.029 0.151,0.0427 0.38763,0 0.23704,-0.0427 0.0248,-0.073 0.25855,-0.12986 0.23415,-0.0564 0.15762,0.0701 0.38763,0 0.23042,-0.0701 0.16217,-0.0461 0.38763,-0.12985 0.22587,-0.0838 0.16754,-0.0332 0.38762,-0.12986 0.2205,-0.0971 0.0443,-0.14935 0.25856,-0.25929 0.21429,-0.10994 0.18037,-0.008 0.38763,-0.12986 0.20767,-0.12239 0.0587,-0.12488 0.25855,-0.25929 0.19981,-0.13442 0.067,0.0166 0.25856,-0.12986 0.19154,-0.14604 0.20519,-0.10206 0.38762,-0.2593 0.18286,-0.15723 0.0852,-0.0917 0.25856,-0.25929 0.17334,-0.16761 0.0956,-0.0817 0.25856,-0.2593 0.16299,-0.17757 0.10631,-0.0722 0.25855,-0.2593 0.15224,-0.1871 -0.0124,-0.0635 0.12949,-0.25929 0,0 13.27197,-19.40102 16.03045,-45.11758 a 2.9761723,2.9846976 0 0 1 4.78329,-2.07437 c 20.12395,16.24872 43.30809,20.48442 43.30809,20.48442 0.24118,0.0431 0.14438,0.10123 0.38763,0.12985 0.24325,0.029 0.14313,-0.0124 0.38762,0 0.24449,0.0125 0.14273,10e-4 0.38763,0 0.2449,-9.9e-4 0.14355,0.0166 0.38763,0 0.24449,-0.0166 0.14479,0.029 0.38762,0 0.24325,-0.029 0.0166,-0.0846 0.25856,-0.12985 0.24077,-0.0452 0.15017,0.0593 0.38763,0 0.23745,-0.0593 0.1543,-0.056 0.38762,-0.12986 0.23374,-0.0738 0.15886,-0.0419 0.38763,-0.12986 0.22877,-0.0875 0.16465,-0.029 0.38763,-0.12985 0.22298,-0.10123 0.0418,-0.14479 0.25855,-0.2593 0.21678,-0.1145 0.1783,-0.002 0.38763,-0.12985 0.20933,-0.12737 0.0571,-0.11949 0.25856,-0.2593 0.20146,-0.13981 0.19526,0.0207 0.38762,-0.12985 0.19278,-0.15185 0.0753,-0.0963 0.25856,-0.2593 0.18326,-0.16305 0.0852,-0.0855 0.25855,-0.2593 0.17334,-0.17383 0.096,-0.0755 0.25856,-0.25929 0.16258,-0.18379 0.10715,-0.066 0.25856,-0.2593 0.15141,-0.19333 -0.008,-0.18669 0.12948,-0.38874 0.13941,-0.20204 0.13155,-0.0494 0.25856,-0.25929 0.127,-0.20993 0.0165,-0.17176 0.12948,-0.38874 0.11418,-0.2174 0.15762,-0.0373 0.25856,-0.2593 0.10094,-0.22361 0.0418,-0.15931 0.12948,-0.38873 0.0873,-0.22943 0.0558,-0.15475 0.12949,-0.38874 0.0736,-0.23441 0.0699,-0.1506 0.12948,-0.38874 0.0592,-0.23855 -0.0451,-0.14728 0,-0.38874 0.0451,-0.24145 0.0989,-0.0166 0.12949,-0.25929 0.0289,-0.24395 -0.0165,-0.14396 0,-0.38874 0.0165,-0.24519 -0.001,-0.14313 0,-0.38874 9.9e-4,-0.2456 0.0124,-0.14354 0,-0.38873 -0.0124,-0.2452 0.0289,-0.1448 0,-0.38874 -0.029,-0.24395 -0.0865,-0.14687 -0.12949,-0.38874 0,0 -4.28359,-23.17305 -20.42591,-43.3025 a 2.9761723,2.9846976 0 0 1 2.06845,-4.79698 c 25.617,-2.79642 44.98871,-16.07638 44.98871,-16.07638 0.19526,-0.14147 0.072,0.0249 0.25855,-0.12986 0.18658,-0.15267 0.0815,-0.0958 0.25856,-0.25929 0.17706,-0.16346 0.0914,-0.0855 0.25855,-0.2593 0.16713,-0.17383 0.10177,-0.0759 0.25856,-0.2593 0.15679,-0.18337 0.11294,-0.19665 0.25856,-0.38873 0.14561,-0.19209 -0.004,-0.0589 0.12948,-0.2593 0.13404,-0.20039 0.13652,-0.051 0.25856,-0.2593 0.12203,-0.20826 0.0207,-0.17383 0.12948,-0.38873 0.10963,-0.21491 0.16175,-0.0373 0.25856,-0.2593 0.0968,-0.22113 0.0459,-0.16263 0.12948,-0.38874 0.0836,-0.22652 0.0592,-0.15807 0.12949,-0.38874 0.0699,-0.23108 -0.0563,-0.15433 0,-0.38873 0.0563,-0.23482 0.0869,-0.0207 0.12948,-0.2593 0.0426,-0.23772 -0.029,-0.14935 0,-0.38874 0.029,-0.23979 0.11501,-0.14811 0.12949,-0.38873 0.0124,-0.24105 0,-0.1477 0,-0.38874 0,-0.24146 0.0124,-0.14811 0,-0.38874 -0.0124,-0.24104 -0.10094,-0.14935 -0.12949,-0.38873 -0.029,-0.2398 0.0426,-0.15143 0,-0.38874 -0.0426,-0.23773 -0.0728,-0.0249 -0.12948,-0.2593 -0.0563,-0.23482 0.0699,-0.15807 0,-0.38874 -0.0699,-0.23108 -0.0459,-0.16263 -0.12949,-0.38873 -0.0836,-0.22652 -0.0331,-0.16803 -0.12948,-0.38874 -0.0968,-0.22113 -0.14893,-0.0444 -0.25856,-0.2593 -0.10963,-0.2149 -0.008,-0.18088 -0.12948,-0.38873 -0.12204,-0.20827 -0.12452,-0.0589 -0.25856,-0.2593 -0.13404,-0.20038 0.0165,-0.0672 -0.12948,-0.2593 -0.14562,-0.19208 -0.10177,-0.20577 -0.25856,-0.38873 -0.15679,-0.18338 -0.0914,-0.0855 -0.25856,-0.2593 -0.16713,-0.17383 -0.0815,-0.0958 -0.25855,-0.2593 -0.17706,-0.16346 -0.072,-0.10662 -0.25856,-0.25929 -0.18657,-0.15268 -0.0633,0.0124 -0.25855,-0.12986 0,0 -19.48568,-13.38633 -45.11799,-16.20603 a 2.9761723,2.9846976 0 0 1 -1.93379,-4.80009 c 16.14228,-20.12945 20.42591,-43.302502 20.42591,-43.302502 0.043,-0.241872 0.10094,-0.144791 0.12948,-0.388737 0.029,-0.243946 -0.0124,-0.143547 0,-0.388737 0.0124,-0.245191 0.001,-0.143132 0,-0.388738 -9.9e-4,-0.245605 0.0165,-0.143961 0,-0.388737 -0.0165,-0.245191 0.029,-0.145206 0,-0.388737 -0.029,-0.243946 -0.0844,-0.01659 -0.12948,-0.259296 -0.0451,-0.241457 0.0592,-0.1506 0,-0.388738 -0.0592,-0.238552 -0.0558,-0.154748 -0.12949,-0.388737 -0.0736,-0.234404 -0.0418,-0.159312 -0.12948,-0.388737 -0.0873,-0.229425 -0.029,-0.16512 -0.12949,-0.388737 -0.10094,-0.223617 -0.14437,-0.0419 -0.25855,-0.259297 -0.11418,-0.217394 -0.002,-0.17881 -0.12949,-0.388737 -0.127,-0.209926 -0.11914,-0.05725 -0.25855,-0.259296 -0.13941,-0.202044 0.0207,-0.195821 -0.12949,-0.388737 -0.15141,-0.193332 -0.096,-0.07551 -0.25855,-0.259297 -0.16258,-0.183789 -0.0852,-0.08546 -0.25856,-0.259296 -0.17333,-0.173833 -0.0753,-0.09625 -0.25855,-0.259297 -0.18327,-0.163045 -0.0658,-0.107452 -0.25856,-0.259296 -0.19278,-0.151844 -0.18657,0.0083 -0.38763,-0.129856 -0.20146,-0.139812 -0.0492,-0.13193 -0.25855,-0.259296 -0.20933,-0.127367 -0.17127,-0.01659 -0.38763,-0.129856 -0.21677,-0.114505 -0.0372,-0.158067 -0.25855,-0.259296 -0.22298,-0.10123 -0.15886,-0.0419 -0.38763,-0.129856 -0.22877,-0.08754 -0.15431,-0.05601 -0.38763,-0.129856 -0.23373,-0.07385 -0.15017,-0.07011 -0.38763,-0.129855 -0.23745,-0.05933 -0.14685,0.04522 -0.38762,0 -0.24077,-0.04522 -0.0165,-0.09915 -0.25856,-0.129856 -0.24325,-0.02904 -0.14355,0.01659 -0.38762,0 -0.24449,-0.0166 -0.14273,9.96e-4 -0.38763,0 -0.24491,-9.96e-4 -0.14314,-0.01245 -0.38763,0 -0.24449,0.01245 -0.14438,-0.02904 -0.38762,0 -0.24325,0.02904 -0.14645,0.08671 -0.38763,0.129856 0,0 -23.18414,4.2357 -43.3081,20.484417 a 2.9761723,2.9846976 0 0 1 -4.78328,-2.07437 c -2.77333,-25.672753 -16.03046,-44.98793 -16.03046,-44.98793 -0.1481,-0.209097 -0.0976,-0.06016 -0.25855,-0.259297 -0.16093,-0.199139 -0.0852,-0.07053 -0.25856,-0.259296 -0.17333,-0.188768 -0.074,-0.211171 -0.25855,-0.388737 -0.18451,-0.177566 -0.0633,-0.09376 -0.25856,-0.259297 -0.19526,-0.165534 -0.0534,0.02489 -0.25855,-0.129855 -0.20519,-0.153089 -0.17334,-0.119484 -0.38763,-0.259297 -0.21471,-0.139812 -0.0372,-0.133174 -0.25856,-0.259296 -0.22298,-0.126122 -0.15761,-0.0166 -0.38762,-0.129856 -0.23043,-0.111601 -0.151,-0.03319 -0.38763,-0.129855 -0.23663,-0.09708 -0.14562,-0.177152 -0.38763,-0.259297 -0.24242,-0.08214 -0.14065,0.06638 -0.38762,0 -0.24698,-0.06638 -0.13735,-0.07883 -0.38763,-0.129855 -0.2507,-0.05103 -0.13445,-0.09459 -0.38763,-0.129856 -0.25359,-0.03319 -0.13279,0.02074 -0.38762,0 -0.25525,-0.02074 -0.13197,0.0029 -0.38763,0 -0.17044,-0.0019 -0.19857,-0.003 -0.25856,0 -0.10011,0.0083 -0.10218,-0.0032 -0.12948,0 -0.029,0.0032 -0.029,-0.01245 -0.12949,0 z" + id="path4008-1" /> + <path + style="opacity:0.96694186000000004;color:#000000;fill:none;stroke:url(#radialGradient4036-3);stroke-width:1.99999988000000006;stroke-miterlimit:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 139.64493,53.973461 c -0.19939,0.02904 -0.18988,0.09127 -0.38762,0.129856 -0.1994,0.03319 -0.1903,-0.04149 -0.38763,0 -0.19774,0.04149 -0.0633,0.07841 -0.25856,0.129855 -0.19526,0.05103 -0.0662,-0.06099 -0.25855,0 -0.19237,0.06099 -0.19857,0.05933 -0.38763,0.129856 -0.18905,0.07011 -0.0732,0.0502 -0.25855,0.129856 -0.18534,0.07966 -0.0774,0.04149 -0.25856,0.129855 -0.1812,0.08878 -0.0819,0.03319 -0.25856,0.129856 -0.17664,0.0975 -0.0869,0.02489 -0.25855,0.129856 -0.17168,0.106207 -0.0922,0.144791 -0.25856,0.259296 -0.1663,0.114505 -0.098,0.0083 -0.25855,0.129856 -0.16051,0.122802 -0.10425,0.128611 -0.25856,0.259296 -0.1543,0.130685 -0.11087,-0.0083 -0.25855,0.129856 -0.14769,0.138153 -0.11791,0.11409 -0.25856,0.259296 -0.14065,0.145206 0.004,0.107038 -0.12948,0.259297 -0.13321,0.152258 -0.13321,-0.02904 -0.25856,0.129855 -0.12535,0.158482 -0.0124,0.09459 -0.12949,0.259297 0,0 -13.34449,19.338451 -16.15973,44.98793 a 2.9761723,2.9846976 0 0 1 -4.78328,1.94472 C 94.085547,87.348105 70.998584,83.146383 70.998584,83.146383 c -0.239112,-0.0419 -0.146446,-0.102059 -0.387627,-0.129856 -0.241181,-0.02904 -0.145205,0.01245 -0.387627,0 -0.242422,-0.01245 -0.145205,-0.0012 -0.387626,0 -0.242836,0.0012 -0.145619,-0.0166 -0.387627,0 -0.242422,0.01659 -0.01655,-0.02904 -0.258556,0 -0.240767,0.02904 -0.148928,0.08505 -0.387627,0.129856 -0.238699,0.04439 -0.152238,-0.0585 -0.387627,0 -0.235803,0.0585 -0.155961,0.05684 -0.387627,0.129855 -0.231666,0.0726 -0.160925,0.04315 -0.387626,0.129856 -0.227116,0.08629 -0.03723,0.02904 -0.258556,0.129856 -0.221324,0.09957 -0.172509,0.01659 -0.387627,0.129855 -0.215118,0.112846 -0.05047,0.134005 -0.258556,0.259297 -0.208085,0.125292 -0.187401,-0.0083 -0.387627,0.129855 -0.200225,0.137738 -0.0666,0.109942 -0.258555,0.259297 -0.191952,0.149354 -0.07612,0.09874 -0.258556,0.259296 -0.182437,0.160556 -0.08563,0.08837 -0.258556,0.259296 -0.172922,0.170929 -0.09639,0.078 -0.258556,0.259297 -0.162166,0.1813 -0.107145,0.06887 -0.258556,0.259296 -0.15141,0.190428 -0.119142,0.189598 -0.258555,0.388738 -0.139414,0.199139 -0.13114,0.05227 -0.258556,0.259296 -0.127416,0.207022 -0.01241,0.04481 -0.129485,0.259296 -0.115005,0.21449 -0.02896,0.168024 -0.129485,0.388738 -0.102181,0.221128 -0.169612,0.162215 -0.258555,0.388737 -0.08894,0.226521 -0.05419,0.02904 -0.129485,0.259296 -0.07529,0.2315 0.06123,0.153504 0,0.388737 -0.06123,0.235649 -0.08191,0.150185 -0.129485,0.388738 -0.04716,0.238967 0.03309,0.147695 0,0.388737 -0.03309,0.241042 -0.110869,0.146035 -0.129485,0.388737 -0.01655,0.242701 0.0041,0.145621 0,0.388737 -0.0041,0.243531 -0.0083,0.145621 0,0.388737 0.0083,0.243117 -0.02482,0.01659 0,0.259297 0.02482,0.242286 0.09018,0.148525 0.129485,0.388737 0,0 4.172511,23.296433 20.296629,43.432153 a 2.9761723,2.9846976 0 0 1 -1.939168,4.79698 c -25.613529,2.82185 -44.988706,16.20603 -44.988706,16.20603 -0.195262,0.14147 -0.07198,-0.0249 -0.258556,0.12985 -0.186574,0.15268 -0.0815,0.0958 -0.258556,0.2593 -0.177059,0.16346 -0.09143,0.0855 -0.258556,0.2593 -0.16713,0.17383 -0.101767,0.0759 -0.258555,0.25929 -0.156789,0.18338 -0.112938,0.19665 -0.258556,0.38874 -0.145619,0.19209 0.0041,0.0589 -0.129485,0.2593 -0.134035,0.20038 -0.136517,0.051 -0.258556,0.25929 -0.122038,0.20827 -0.02068,0.17383 -0.129485,0.38874 -0.109627,0.2149 -0.161752,0.0373 -0.258555,0.2593 -0.0968,0.22112 -0.04592,0.16263 -0.129485,0.38873 -0.08357,0.22652 -0.05916,0.15807 -0.129485,0.38874 -0.06991,0.23108 0.05626,0.15433 0,0.38874 -0.05626,0.23482 -0.08688,0.0207 -0.129484,0.25929 -0.04261,0.23773 0.02896,0.14936 0,0.38874 -0.02896,0.2398 -0.115006,0.14811 -0.129485,0.38874 -0.01241,0.24104 0,0.14769 0,0.38874 0,0.24145 -0.01241,0.14811 0,0.38873 0.01241,0.24104 0.10094,0.14936 0.129485,0.38874 0.02896,0.2398 -0.04261,0.15143 0,0.38874 0.04261,0.23772 0.07281,0.0249 0.129484,0.25929 0.05626,0.23482 -0.06991,0.15807 0,0.38874 0.06991,0.23109 0.04592,0.16263 0.129485,0.38874 0.08357,0.22652 0.0331,0.16802 0.129485,0.38873 0.0968,0.22113 0.148928,0.0444 0.258555,0.2593 0.109628,0.21491 0.0083,0.18089 0.129485,0.38874 0.122039,0.20827 0.124521,0.0589 0.258556,0.25929 0.134035,0.20039 -0.01655,0.0672 0.129485,0.2593 0.145618,0.19209 0.101767,0.20578 0.258556,0.38874 0.156788,0.18337 0.09143,0.0855 0.258555,0.25929 0.167131,0.17384 0.0815,0.0958 0.258556,0.2593 0.177059,0.16346 0.07198,0.10662 0.258556,0.2593 0.186574,0.15267 0.06329,-0.0125 0.258556,0.12985 0,0 19.261206,13.27781 44.859428,16.07638 a 2.9761723,2.9846976 0 0 1 2.068446,4.79698 c -16.125566,20.13759 -20.298077,43.43402 -20.298077,43.43402 -0.03723,0.24021 -0.104663,0.14687 -0.129484,0.38874 -0.02482,0.24229 0.0083,0.0166 0,0.2593 -0.0083,0.24311 -0.0041,0.14562 0,0.38873 0.0041,0.24353 -0.01655,0.14604 0,0.38874 0.01655,0.2427 0.09639,0.1477 0.129484,0.38874 0.03309,0.24104 -0.04716,0.15018 0,0.38873 0.04716,0.23897 0.06785,0.15351 0.129485,0.38874 0.06123,0.23565 -0.07529,0.15765 0,0.38874 0.07529,0.2315 0.04137,0.0332 0.129485,0.2593 0.08894,0.22652 0.156374,0.16802 0.258556,0.38873 0.102181,0.22113 0.01241,0.17466 0.129484,0.38874 0.115006,0.21449 0.0017,0.0523 0.129485,0.2593 0.127416,0.20702 0.119142,0.0601 0.258556,0.25929 0.139413,0.19914 0.107145,0.19831 0.258556,0.38874 0.15141,0.19043 0.09639,0.078 0.258555,0.2593 0.162167,0.1813 0.08563,0.0884 0.258556,0.25929 0.172922,0.17093 0.07612,0.0987 0.258556,0.2593 0.182437,0.16056 0.0666,0.10994 0.258556,0.2593 0.191951,0.14935 0.05833,0.12155 0.258555,0.25929 0.200226,0.13774 0.179955,0.004 0.387627,0.12986 0.208086,0.12529 0.04344,0.14645 0.258556,0.25929 0.215118,0.11285 0.166303,0.029 0.387627,0.12986 0.221324,0.0996 0.0331,0.0431 0.258556,0.12985 0.227115,0.0863 0.155961,0.0568 0.387626,0.12986 0.231666,0.0726 0.152238,0.0709 0.387627,0.12986 0.235803,0.0585 0.148928,-0.0444 0.387627,0 0.238699,0.0444 0.14686,0.0996 0.387627,0.12985 0.240767,0.029 0.01655,-0.0166 0.258556,0 0.242422,0.0166 0.145205,-0.001 0.387627,0 0.242835,10e-4 0.145205,0.0125 0.387626,0 0.242422,-0.0124 0.146446,0.029 0.387627,0 0.241181,-0.029 0.148928,-0.0875 0.387627,-0.12985 0,0 23.086963,-4.20173 43.178814,-20.35477 a 2.9761723,2.9846976 0 0 1 4.78328,1.94472 c 2.81305,25.66827 16.15974,45.11758 16.15974,45.11758 0.14106,0.19582 -0.0248,0.0722 0.12948,0.25929 0.15224,0.18711 0.0956,0.0817 0.25856,0.2593 0.16299,0.17757 0.0852,0.0917 0.25855,0.2593 0.17334,0.16761 0.0757,0.10206 0.25856,0.25929 0.18285,0.15724 0.19609,0.11326 0.38763,0.2593 0.19153,0.14604 0.0587,-0.004 0.25855,0.12986 0.19981,0.13441 0.0509,0.1369 0.25856,0.25929 0.20767,0.12239 0.17333,0.0208 0.38762,0.12986 0.2143,0.10994 0.0372,0.16221 0.25856,0.25929 0.2205,0.0971 0.16217,0.0461 0.38763,0.12986 0.22587,0.0838 0.15761,0.0593 0.38762,0.12985 0.23043,0.0701 0.1539,-0.0564 0.38763,0 0.23415,0.0564 0.0207,0.0871 0.25856,0.12986 0.23704,0.0427 0.14892,-0.029 0.38762,0 0.23912,0.029 0.14769,0.11534 0.38763,0.12986 0.24035,0.0124 0.14727,0 0.38763,0 0.24076,0 0.14768,0.0124 0.38762,0 0.24036,-0.0125 0.14893,-0.10123 0.38763,-0.12986 0.23911,-0.029 0.151,0.0427 0.38763,0 0.23704,-0.0427 0.0248,-0.073 0.25855,-0.12986 0.23415,-0.0564 0.15762,0.0701 0.38763,0 0.23042,-0.0701 0.16217,-0.0461 0.38763,-0.12985 0.22587,-0.0838 0.16754,-0.0332 0.38762,-0.12986 0.2205,-0.0971 0.0443,-0.14935 0.25856,-0.25929 0.21429,-0.10994 0.18037,-0.008 0.38763,-0.12986 0.20767,-0.12239 0.0587,-0.12488 0.25855,-0.25929 0.19981,-0.13442 0.067,0.0166 0.25856,-0.12986 0.19154,-0.14604 0.20519,-0.10206 0.38762,-0.2593 0.18286,-0.15723 0.0852,-0.0917 0.25856,-0.25929 0.17334,-0.16761 0.0956,-0.0817 0.25856,-0.2593 0.16299,-0.17757 0.10631,-0.0722 0.25855,-0.2593 0.15224,-0.1871 -0.0124,-0.0635 0.12949,-0.25929 0,0 13.27197,-19.40102 16.03045,-45.11758 a 2.9761723,2.9846976 0 0 1 4.78329,-2.07437 c 20.12395,16.24872 43.30809,20.48442 43.30809,20.48442 0.24118,0.0431 0.14438,0.10123 0.38763,0.12985 0.24325,0.029 0.14313,-0.0124 0.38762,0 0.24449,0.0125 0.14273,10e-4 0.38763,0 0.2449,-9.9e-4 0.14355,0.0166 0.38763,0 0.24449,-0.0166 0.14479,0.029 0.38762,0 0.24325,-0.029 0.0166,-0.0846 0.25856,-0.12985 0.24077,-0.0452 0.15017,0.0593 0.38763,0 0.23745,-0.0593 0.1543,-0.056 0.38762,-0.12986 0.23374,-0.0738 0.15886,-0.0419 0.38763,-0.12986 0.22877,-0.0875 0.16465,-0.029 0.38763,-0.12985 0.22298,-0.10123 0.0418,-0.14479 0.25855,-0.2593 0.21678,-0.1145 0.1783,-0.002 0.38763,-0.12985 0.20933,-0.12737 0.0571,-0.11949 0.25856,-0.2593 0.20146,-0.13981 0.19526,0.0207 0.38762,-0.12985 0.19278,-0.15185 0.0753,-0.0963 0.25856,-0.2593 0.18326,-0.16305 0.0852,-0.0855 0.25855,-0.2593 0.17334,-0.17383 0.096,-0.0755 0.25856,-0.25929 0.16258,-0.18379 0.10715,-0.066 0.25856,-0.2593 0.15141,-0.19333 -0.008,-0.18669 0.12948,-0.38874 0.13941,-0.20204 0.13155,-0.0494 0.25856,-0.25929 0.127,-0.20993 0.0165,-0.17176 0.12948,-0.38874 0.11418,-0.2174 0.15762,-0.0373 0.25856,-0.2593 0.10094,-0.22361 0.0418,-0.15931 0.12948,-0.38873 0.0873,-0.22943 0.0558,-0.15475 0.12949,-0.38874 0.0736,-0.23441 0.0699,-0.1506 0.12948,-0.38874 0.0592,-0.23855 -0.0451,-0.14728 0,-0.38874 0.0451,-0.24145 0.0989,-0.0166 0.12949,-0.25929 0.0289,-0.24395 -0.0165,-0.14396 0,-0.38874 0.0165,-0.24519 -0.001,-0.14313 0,-0.38874 9.9e-4,-0.2456 0.0124,-0.14354 0,-0.38873 -0.0124,-0.2452 0.0289,-0.1448 0,-0.38874 -0.029,-0.24395 -0.0865,-0.14687 -0.12949,-0.38874 0,0 -4.28359,-23.17305 -20.42591,-43.3025 a 2.9761723,2.9846976 0 0 1 2.06845,-4.79698 c 25.617,-2.79642 44.98871,-16.07638 44.98871,-16.07638 0.19526,-0.14147 0.072,0.0249 0.25855,-0.12986 0.18658,-0.15267 0.0815,-0.0958 0.25856,-0.25929 0.17706,-0.16346 0.0914,-0.0855 0.25855,-0.2593 0.16713,-0.17383 0.10177,-0.0759 0.25856,-0.2593 0.15679,-0.18337 0.11294,-0.19665 0.25856,-0.38873 0.14561,-0.19209 -0.004,-0.0589 0.12948,-0.2593 0.13404,-0.20039 0.13652,-0.051 0.25856,-0.2593 0.12203,-0.20826 0.0207,-0.17383 0.12948,-0.38873 0.10963,-0.21491 0.16175,-0.0373 0.25856,-0.2593 0.0968,-0.22113 0.0459,-0.16263 0.12948,-0.38874 0.0836,-0.22652 0.0592,-0.15807 0.12949,-0.38874 0.0699,-0.23108 -0.0563,-0.15433 0,-0.38873 0.0563,-0.23482 0.0869,-0.0207 0.12948,-0.2593 0.0426,-0.23772 -0.029,-0.14935 0,-0.38874 0.029,-0.23979 0.11501,-0.14811 0.12949,-0.38873 0.0124,-0.24105 0,-0.1477 0,-0.38874 0,-0.24146 0.0124,-0.14811 0,-0.38874 -0.0124,-0.24104 -0.10094,-0.14935 -0.12949,-0.38873 -0.029,-0.2398 0.0426,-0.15143 0,-0.38874 -0.0426,-0.23773 -0.0728,-0.0249 -0.12948,-0.2593 -0.0563,-0.23482 0.0699,-0.15807 0,-0.38874 -0.0699,-0.23108 -0.0459,-0.16263 -0.12949,-0.38873 -0.0836,-0.22652 -0.0331,-0.16803 -0.12948,-0.38874 -0.0968,-0.22113 -0.14893,-0.0444 -0.25856,-0.2593 -0.10963,-0.2149 -0.008,-0.18088 -0.12948,-0.38873 -0.12204,-0.20827 -0.12452,-0.0589 -0.25856,-0.2593 -0.13404,-0.20038 0.0165,-0.0672 -0.12948,-0.2593 -0.14562,-0.19208 -0.10177,-0.20577 -0.25856,-0.38873 -0.15679,-0.18338 -0.0914,-0.0855 -0.25856,-0.2593 -0.16713,-0.17383 -0.0815,-0.0958 -0.25855,-0.2593 -0.17706,-0.16346 -0.072,-0.10662 -0.25856,-0.25929 -0.18657,-0.15268 -0.0633,0.0124 -0.25855,-0.12986 0,0 -19.48568,-13.38633 -45.11799,-16.20603 a 2.9761723,2.9846976 0 0 1 -1.93379,-4.80009 c 16.14228,-20.12945 20.42591,-43.302502 20.42591,-43.302502 0.043,-0.241872 0.10094,-0.144791 0.12948,-0.388737 0.029,-0.243946 -0.0124,-0.143547 0,-0.388737 0.0124,-0.245191 0.001,-0.143132 0,-0.388738 -9.9e-4,-0.245605 0.0165,-0.143961 0,-0.388737 -0.0165,-0.245191 0.029,-0.145206 0,-0.388737 -0.029,-0.243946 -0.0844,-0.01659 -0.12948,-0.259296 -0.0451,-0.241457 0.0592,-0.1506 0,-0.388738 -0.0592,-0.238552 -0.0558,-0.154748 -0.12949,-0.388737 -0.0736,-0.234404 -0.0418,-0.159312 -0.12948,-0.388737 -0.0873,-0.229425 -0.029,-0.16512 -0.12949,-0.388737 -0.10094,-0.223617 -0.14437,-0.0419 -0.25855,-0.259297 -0.11418,-0.217394 -0.002,-0.17881 -0.12949,-0.388737 -0.127,-0.209926 -0.11914,-0.05725 -0.25855,-0.259296 -0.13941,-0.202044 0.0207,-0.195821 -0.12949,-0.388737 -0.15141,-0.193332 -0.096,-0.07551 -0.25855,-0.259297 -0.16258,-0.183789 -0.0852,-0.08546 -0.25856,-0.259296 -0.17333,-0.173833 -0.0753,-0.09625 -0.25855,-0.259297 -0.18327,-0.163045 -0.0658,-0.107452 -0.25856,-0.259296 -0.19278,-0.151844 -0.18657,0.0083 -0.38763,-0.129856 -0.20146,-0.139812 -0.0492,-0.13193 -0.25855,-0.259296 -0.20933,-0.127367 -0.17127,-0.01659 -0.38763,-0.129856 -0.21677,-0.114505 -0.0372,-0.158067 -0.25855,-0.259296 -0.22298,-0.10123 -0.15886,-0.0419 -0.38763,-0.129856 -0.22877,-0.08754 -0.15431,-0.05601 -0.38763,-0.129856 -0.23373,-0.07385 -0.15017,-0.07011 -0.38763,-0.129855 -0.23745,-0.05933 -0.14685,0.04522 -0.38762,0 -0.24077,-0.04522 -0.0165,-0.09915 -0.25856,-0.129856 -0.24325,-0.02904 -0.14355,0.01659 -0.38762,0 -0.24449,-0.0166 -0.14273,9.96e-4 -0.38763,0 -0.24491,-9.96e-4 -0.14314,-0.01245 -0.38763,0 -0.24449,0.01245 -0.14438,-0.02904 -0.38762,0 -0.24325,0.02904 -0.14645,0.08671 -0.38763,0.129856 0,0 -23.18414,4.2357 -43.3081,20.484417 a 2.9761723,2.9846976 0 0 1 -4.78328,-2.07437 c -2.77333,-25.672753 -16.03046,-44.98793 -16.03046,-44.98793 -0.1481,-0.209097 -0.0976,-0.06016 -0.25855,-0.259297 -0.16093,-0.199139 -0.0852,-0.07053 -0.25856,-0.259296 -0.17333,-0.188768 -0.074,-0.211171 -0.25855,-0.388737 -0.18451,-0.177566 -0.0633,-0.09376 -0.25856,-0.259297 -0.19526,-0.165534 -0.0534,0.02489 -0.25855,-0.129855 -0.20519,-0.153089 -0.17334,-0.119484 -0.38763,-0.259297 -0.21471,-0.139812 -0.0372,-0.133174 -0.25856,-0.259296 -0.22298,-0.126122 -0.15761,-0.0166 -0.38762,-0.129856 -0.23043,-0.111601 -0.151,-0.03319 -0.38763,-0.129855 -0.23663,-0.09708 -0.14562,-0.177152 -0.38763,-0.259297 -0.24242,-0.08214 -0.14065,0.06638 -0.38762,0 -0.24698,-0.06638 -0.13735,-0.07883 -0.38763,-0.129855 -0.2507,-0.05103 -0.13445,-0.09459 -0.38763,-0.129856 -0.25359,-0.03319 -0.13279,0.02074 -0.38762,0 -0.25525,-0.02074 -0.13197,0.0029 -0.38763,0 -0.17044,-0.0019 -0.19857,-0.003 -0.25856,0 -0.10011,0.0083 -0.10218,-0.0032 -0.12948,0 -0.029,0.0032 -0.029,-0.01245 -0.12949,0 z" + id="path4008-0" /> + <path + d="m 313.375,177.5 a 1.5014517,1.5014517 0 0 0 -1.0625,0.5625 c 0,0 -0.9445,1.20549 -1.46875,3 C 309.20424,180.16626 307.6875,180 307.6875,180 A 1.5014517,1.5014517 0 0 0 306,181.6875 c 0,0 0.16627,1.51674 1.0625,3.15625 -1.79415,0.52409 -3,1.46875 -3,1.46875 a 1.5014517,1.5014517 0 0 0 0,2.375 c 0,0 1.19178,0.94263 2.96875,1.46875 -0.89625,1.64986 -1.0625,3.1875 -1.0625,3.1875 A 1.5014517,1.5014517 0 0 0 307.625,195 c 0,0 1.517,-0.17972 3.15625,-1.0625 0.53315,1.82317 1.5625,3 1.5625,3 a 1.5014517,1.5014517 0 0 0 2.34375,0 c 0,0 0.97856,-1.21242 1.5,-3.03125 1.62374,0.903 3.125,1.09375 3.125,1.09375 A 1.5014517,1.5014517 0 0 0 321,193.3125 c 0,0 -0.18998,-1.52213 -1.09375,-3.15625 1.81288,-0.51014 3,-1.46875 3,-1.46875 a 1.5014517,1.5014517 0 0 0 0,-2.375 c 0,0 -1.20066,-0.961 -3.03125,-1.46875 0.92293,-1.64837 1.125,-3.1875 1.125,-3.1875 a 1.5014517,1.5014517 0 0 0 -1.6875,-1.6875 c 0,0 -1.51827,0.20291 -3.15625,1.125 -0.50976,-1.81192 -1.46875,-3 -1.46875,-3 A 1.5014517,1.5014517 0 0 0 313.375,177.5 z" + id="path4130" + style="opacity:0.15;color:#000000;fill:#2e3436;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4132-7);enable-background:new" + inkscape:original="M 313.5 179 C 313.5 179 312 180.90222 312 183.25 C 312 183.53274 312.05625 183.7952 312.09375 184.0625 C 311.93384 183.85002 311.75925 183.63425 311.5625 183.4375 C 309.90401 181.77895 307.5 181.5 307.5 181.5 C 307.5 181.5 307.77894 183.90395 309.4375 185.5625 C 309.63403 185.75903 309.85028 185.90273 310.0625 186.0625 C 309.79552 186.02429 309.5324 186 309.25 186 C 306.90446 186 305 187.5 305 187.5 C 305 187.5 306.90445 189 309.25 189 C 309.4892 189 309.70909 188.9655 309.9375 188.9375 C 309.7546 189.07982 309.57658 189.23592 309.40625 189.40625 C 307.74371 191.06881 307.46875 193.5 307.46875 193.5 C 307.46875 193.5 309.89995 193.22505 311.5625 191.5625 C 311.73283 191.39217 311.88893 191.21415 312.03125 191.03125 C 312.00235 191.26194 311.96875 191.50832 311.96875 191.75 C 311.96877 194.1012 313.5 196 313.5 196 C 313.5 196 315 194.1012 315 191.75 C 315 191.46654 314.9764 191.1742 314.9375 190.90625 C 315.09851 191.11887 315.27134 191.33384 315.46875 191.53125 C 317.13289 193.19538 319.5 193.5 319.5 193.5 C 319.5 193.5 319.19539 191.10162 317.53125 189.4375 C 317.33384 189.24009 317.11887 189.06726 316.90625 188.90625 C 317.17446 188.94385 317.46628 188.96875 317.75 188.96875 C 320.10344 188.96875 322 187.5 322 187.5 C 322 187.5 320.10344 186.03124 317.75 186.03125 C 317.45582 186.03125 317.1524 186.05355 316.875 186.09375 C 317.09911 185.9265 317.32373 185.73877 317.53125 185.53125 C 319.19137 183.87111 319.5 181.46875 319.5 181.46875 C 319.5 181.46875 317.12888 181.77736 315.46875 183.4375 C 315.26123 183.64502 315.0735 183.86964 314.90625 184.09375 C 314.94645 183.81702 314.96875 183.54347 314.96875 183.25 C 314.96873 180.90222 313.5 179 313.5 179 z " + inkscape:radius="1.5013015" + sodipodi:type="inkscape:offset" + transform="translate(0.99999785,1.0000082)" /> + <path + transform="matrix(1.1653943,0,0,1.1653943,-51.666622,-22.391818)" + d="m 318.28125,129.5 a 1.5105318,1.5105318 0 0 0 -1,0.6875 c 0,0 -1.05656,2.06575 -1.4375,4.6875 -2.18577,-1.6749 -4.46875,-2.25 -4.46875,-2.25 a 1.5105318,1.5105318 0 0 0 -1.8125,1.8125 c 0,0 0.71311,2.14493 2.25,4.25 -2.66952,0.38009 -4.625,1.5625 -4.625,1.5625 a 1.5105318,1.5105318 0 0 0 0,2.5625 c 0,0 1.87849,1.15819 4.46875,1.5625 -1.52626,2.11661 -2.03125,4.25 -2.03125,4.25 a 1.5105318,1.5105318 0 0 0 1.78125,1.78125 c 0,0 2.12961,-0.50246 4.25,-2.03125 0.40756,2.58012 1.5625,4.4375 1.5625,4.4375 a 1.5105318,1.5105318 0 0 0 2.5625,0 c 0,0 1.14685,-1.87101 1.5625,-4.46875 2.11231,1.54106 4.25,2.03125 4.25,2.03125 a 1.5105318,1.5105318 0 0 0 1.78125,-1.78125 c 0,0 -0.49019,-2.13768 -2.03125,-4.25 2.58413,-0.4033 4.46875,-1.5625 4.46875,-1.5625 a 1.5105318,1.5105318 0 0 0 0,-2.5625 c 0,0 -1.96085,-1.18397 -4.625,-1.5625 1.53157,-2.07973 2.25,-4.21875 2.25,-4.21875 a 1.5105318,1.5105318 0 0 0 -1.8125,-1.8125 c 0,0 -2.23448,0.70397 -4.375,2.3125 -0.35793,-2.65265 -1.40625,-4.71875 -1.40625,-4.71875 A 1.5105318,1.5105318 0 0 0 318.28125,129.5 z" + id="path4117" + style="opacity:0.25;color:#000000;fill:#2e3436;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.85807866;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4124-3);enable-background:new" + inkscape:original="M 318.5625 131 C 318.5625 131 317.09875 133.33183 317.09375 136.21875 C 317.09175 137.30134 317.27669 138.2913 317.53125 139.125 C 317.1251 138.35971 316.59607 137.53357 315.84375 136.78125 C 313.78565 134.72315 311.03125 134.09375 311.03125 134.09375 C 311.03125 134.09375 311.66064 136.81689 313.71875 138.875 C 314.34243 139.49869 315.00416 139.99404 315.65625 140.375 C 314.93573 140.18887 314.14679 140.03125 313.28125 140.03125 C 310.37066 140.03125 308 141.53125 308 141.53125 C 308 141.53125 310.37065 143.03125 313.28125 143.03125 C 314.09694 143.03125 314.84193 142.91933 315.53125 142.75 C 314.93126 143.11305 314.31756 143.55938 313.75 144.125 C 311.68062 146.18718 311.09375 148.9375 311.09375 148.9375 C 311.09375 148.9375 313.83694 148.34349 315.90625 146.28125 C 316.48129 145.70821 316.91472 145.07389 317.28125 144.46875 C 317.11258 145.15189 317.00138 145.91413 317 146.71875 C 316.995 149.6402 318.5 152 318.5 152 C 318.5 152 320.02625 149.6402 320.03125 146.71875 C 320.03225 145.90003 319.92105 145.12901 319.75 144.4375 C 320.11782 145.05158 320.57282 145.69782 321.15625 146.28125 C 323.20214 148.32714 325.90625 148.90625 325.90625 148.90625 C 325.90625 148.90625 325.32715 146.20214 323.28125 144.15625 C 322.63589 143.51089 321.92265 143.00909 321.25 142.625 C 322.0002 142.83082 322.83215 143 323.75 143 C 326.64333 143 329 141.5 329 141.5 C 329 141.5 326.64334 139.99999 323.75 140 C 322.83389 140 321.9992 140.13853 321.25 140.34375 C 321.9255 139.95562 322.62869 139.4628 323.28125 138.8125 C 325.32605 136.77455 325.96875 134.09375 325.96875 134.09375 C 325.96875 134.09375 323.26364 134.71217 321.21875 136.75 C 320.47966 137.48661 319.937 138.3151 319.53125 139.0625 C 319.78069 138.2387 319.99817 137.27751 320 136.21875 C 320.00485 133.33181 318.5625 131 318.5625 131 z " + inkscape:radius="1.5103807" + sodipodi:type="inkscape:offset" /> + <path + transform="matrix(0.86090294,0,0,0.86090013,162.26997,-551.3872)" + d="m 184.125,701.5 a 2.2362916,2.2362916 0 0 0 -1.46875,0.90625 c 0,0 -3.32798,4.76714 -4.03125,11.15625 -5.01814,-4.02286 -10.75,-5.0625 -10.75,-5.0625 a 2.2362916,2.2362916 0 0 0 -2.59375,2.5625 c 0,0 1.03401,5.76487 5.0625,10.78125 -6.3978,0.70283 -11.1875,4.03125 -11.1875,4.03125 a 2.2362916,2.2362916 0 0 0 0,3.625 c 0,0 4.79479,3.3031 11.1875,4 -4.02849,5.01638 -5.0625,10.78125 -5.0625,10.78125 a 2.2362916,2.2362916 0 0 0 2.59375,2.5625 c 0,0 5.73186,-1.03964 10.75,-5.0625 0.70267,6.3934 4.03125,11.1875 4.03125,11.1875 a 2.2362916,2.2362916 0 0 0 3.625,0 c 0,0 3.31109,-4.81453 4,-11.21875 5.02623,4.04674 10.78125,5.09375 10.78125,5.09375 a 2.2362916,2.2362916 0 0 0 2.59375,-2.59375 c 0,0 -1.0624,-5.73727 -5.09375,-10.75 6.397,-0.69632 11.21875,-4 11.21875,-4 a 2.2362916,2.2362916 0 0 0 0,-3.625 c 0,0 -4.81666,-3.329 -11.21875,-4.03125 4.03134,-5.01273 5.09375,-10.75 5.09375,-10.75 A 2.2362916,2.2362916 0 0 0 201.0625,708.5 c 0,0 -5.75502,1.04701 -10.78125,5.09375 -0.69265,-6.39357 -4,-11.1875 -4,-11.1875 A 2.2362916,2.2362916 0 0 0 184.125,701.5 z" + id="path4103" + style="opacity:0.25;color:#000000;fill:#2e3436;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.16157317;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4113-4);enable-background:new" + inkscape:original="M 184.46875 703.71875 C 184.46875 703.71875 180.59375 709.06256 180.59375 715.6875 C 180.59375 716.89696 180.75838 718.0867 180.96875 719.1875 C 180.33528 718.25414 179.58087 717.32975 178.71875 716.46875 C 174.02816 711.78421 167.5 710.71875 167.5 710.71875 C 167.5 710.71875 168.55941 717.25296 173.25 721.9375 C 174.11212 722.7985 175.03419 723.55485 175.96875 724.1875 C 174.85826 723.9742 173.69012 723.8125 172.46875 723.8125 C 165.83526 723.8125 160.46875 727.6875 160.46875 727.6875 C 160.46875 727.6875 165.83526 731.53125 172.46875 731.53125 C 173.69012 731.53125 174.85826 731.4008 175.96875 731.1875 C 175.03456 731.81999 174.11178 732.54558 173.25 733.40625 C 168.55941 738.09078 167.5 744.625 167.5 744.625 C 167.5 744.625 174.02816 743.55954 178.71875 738.875 C 179.58087 738.014 180.33528 737.08961 180.96875 736.15625 C 180.75518 737.2653 180.59375 738.43646 180.59375 739.65625 C 180.59375 746.28119 184.46875 751.65625 184.46875 751.65625 C 184.46875 751.65625 188.3125 746.28119 188.3125 739.65625 C 188.3125 738.43646 188.18232 737.2653 187.96875 736.15625 C 188.60222 737.08961 189.35663 738.014 190.21875 738.875 C 194.90934 743.55954 201.4375 744.625 201.4375 744.625 C 201.4375 744.625 200.34684 738.09078 195.65625 733.40625 C 194.79906 732.55017 193.89785 731.849 192.96875 731.21875 C 194.06956 731.42831 195.22825 731.53125 196.4375 731.53125 C 203.07099 731.53125 208.46875 727.6875 208.46875 727.6875 C 208.46875 727.6875 203.07099 723.8125 196.4375 723.8125 C 195.22647 723.8125 194.07098 723.9774 192.96875 724.1875 C 193.90331 723.55485 194.79413 722.7985 195.65625 721.9375 C 200.34684 717.25296 201.4375 710.71875 201.4375 710.71875 C 201.4375 710.71875 194.90934 711.78421 190.21875 716.46875 C 189.35663 717.32975 188.60222 718.25414 187.96875 719.1875 C 188.17912 718.0867 188.3125 716.89696 188.3125 715.6875 C 188.3125 709.06256 184.46875 703.71875 184.46875 703.71875 z " + inkscape:radius="2.236068" + sodipodi:type="inkscape:offset" /> + <path + transform="translate(-2.1548671e-6,8.1602296e-6)" + sodipodi:type="inkscape:offset" + inkscape:radius="1.5013015" + inkscape:original="M 313.5 179 C 313.5 179 312 180.90222 312 183.25 C 312 183.53274 312.05625 183.7952 312.09375 184.0625 C 311.93384 183.85002 311.75925 183.63425 311.5625 183.4375 C 309.90401 181.77895 307.5 181.5 307.5 181.5 C 307.5 181.5 307.77894 183.90395 309.4375 185.5625 C 309.63403 185.75903 309.85028 185.90273 310.0625 186.0625 C 309.79552 186.02429 309.5324 186 309.25 186 C 306.90446 186 305 187.5 305 187.5 C 305 187.5 306.90445 189 309.25 189 C 309.4892 189 309.70909 188.9655 309.9375 188.9375 C 309.7546 189.07982 309.57658 189.23592 309.40625 189.40625 C 307.74371 191.06881 307.46875 193.5 307.46875 193.5 C 307.46875 193.5 309.89995 193.22505 311.5625 191.5625 C 311.73283 191.39217 311.88893 191.21415 312.03125 191.03125 C 312.00235 191.26194 311.96875 191.50832 311.96875 191.75 C 311.96877 194.1012 313.5 196 313.5 196 C 313.5 196 315 194.1012 315 191.75 C 315 191.46654 314.9764 191.1742 314.9375 190.90625 C 315.09851 191.11887 315.27134 191.33384 315.46875 191.53125 C 317.13289 193.19538 319.5 193.5 319.5 193.5 C 319.5 193.5 319.19539 191.10162 317.53125 189.4375 C 317.33384 189.24009 317.11887 189.06726 316.90625 188.90625 C 317.17446 188.94385 317.46628 188.96875 317.75 188.96875 C 320.10344 188.96875 322 187.5 322 187.5 C 322 187.5 320.10344 186.03124 317.75 186.03125 C 317.45582 186.03125 317.1524 186.05355 316.875 186.09375 C 317.09911 185.9265 317.32373 185.73877 317.53125 185.53125 C 319.19137 183.87111 319.5 181.46875 319.5 181.46875 C 319.5 181.46875 317.12888 181.77736 315.46875 183.4375 C 315.26123 183.64502 315.0735 183.86964 314.90625 184.09375 C 314.94645 183.81702 314.96875 183.54347 314.96875 183.25 C 314.96873 180.90222 313.5 179 313.5 179 z " + style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3979);stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + id="path4101" + d="m 313.375,177.5 a 1.5014517,1.5014517 0 0 0 -1.0625,0.5625 c 0,0 -0.9445,1.20549 -1.46875,3 C 309.20424,180.16626 307.6875,180 307.6875,180 A 1.5014517,1.5014517 0 0 0 306,181.6875 c 0,0 0.16627,1.51674 1.0625,3.15625 -1.79415,0.52409 -3,1.46875 -3,1.46875 a 1.5014517,1.5014517 0 0 0 0,2.375 c 0,0 1.19178,0.94263 2.96875,1.46875 -0.89625,1.64986 -1.0625,3.1875 -1.0625,3.1875 A 1.5014517,1.5014517 0 0 0 307.625,195 c 0,0 1.517,-0.17972 3.15625,-1.0625 0.53315,1.82317 1.5625,3 1.5625,3 a 1.5014517,1.5014517 0 0 0 2.34375,0 c 0,0 0.97856,-1.21242 1.5,-3.03125 1.62374,0.903 3.125,1.09375 3.125,1.09375 A 1.5014517,1.5014517 0 0 0 321,193.3125 c 0,0 -0.18998,-1.52213 -1.09375,-3.15625 1.81288,-0.51014 3,-1.46875 3,-1.46875 a 1.5014517,1.5014517 0 0 0 0,-2.375 c 0,0 -1.20066,-0.961 -3.03125,-1.46875 0.92293,-1.64837 1.125,-3.1875 1.125,-3.1875 a 1.5014517,1.5014517 0 0 0 -1.6875,-1.6875 c 0,0 -1.51827,0.20291 -3.15625,1.125 -0.50976,-1.81192 -1.46875,-3 -1.46875,-3 A 1.5014517,1.5014517 0 0 0 313.375,177.5 z" /> + <path + sodipodi:type="inkscape:offset" + inkscape:radius="2.236068" + inkscape:original="M 184.46875 703.71875 C 184.46875 703.71875 180.59375 709.06256 180.59375 715.6875 C 180.59375 716.89696 180.75838 718.0867 180.96875 719.1875 C 180.33528 718.25414 179.58087 717.32975 178.71875 716.46875 C 174.02816 711.78421 167.5 710.71875 167.5 710.71875 C 167.5 710.71875 168.55941 717.25296 173.25 721.9375 C 174.11212 722.7985 175.03419 723.55485 175.96875 724.1875 C 174.85826 723.9742 173.69012 723.8125 172.46875 723.8125 C 165.83526 723.8125 160.46875 727.6875 160.46875 727.6875 C 160.46875 727.6875 165.83526 731.53125 172.46875 731.53125 C 173.69012 731.53125 174.85826 731.4008 175.96875 731.1875 C 175.03456 731.81999 174.11178 732.54558 173.25 733.40625 C 168.55941 738.09078 167.5 744.625 167.5 744.625 C 167.5 744.625 174.02816 743.55954 178.71875 738.875 C 179.58087 738.014 180.33528 737.08961 180.96875 736.15625 C 180.75518 737.2653 180.59375 738.43646 180.59375 739.65625 C 180.59375 746.28119 184.46875 751.65625 184.46875 751.65625 C 184.46875 751.65625 188.3125 746.28119 188.3125 739.65625 C 188.3125 738.43646 188.18232 737.2653 187.96875 736.15625 C 188.60222 737.08961 189.35663 738.014 190.21875 738.875 C 194.90934 743.55954 201.4375 744.625 201.4375 744.625 C 201.4375 744.625 200.34684 738.09078 195.65625 733.40625 C 194.79906 732.55017 193.89785 731.849 192.96875 731.21875 C 194.06956 731.42831 195.22825 731.53125 196.4375 731.53125 C 203.07099 731.53125 208.46875 727.6875 208.46875 727.6875 C 208.46875 727.6875 203.07099 723.8125 196.4375 723.8125 C 195.22647 723.8125 194.07098 723.9774 192.96875 724.1875 C 193.90331 723.55485 194.79413 722.7985 195.65625 721.9375 C 200.34684 717.25296 201.4375 710.71875 201.4375 710.71875 C 201.4375 710.71875 194.90934 711.78421 190.21875 716.46875 C 189.35663 717.32975 188.60222 718.25414 187.96875 719.1875 C 188.17912 718.0867 188.3125 716.89696 188.3125 715.6875 C 188.3125 709.06256 184.46875 703.71875 184.46875 703.71875 z " + style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3665-2);stroke-width:1.16157317;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + id="path3624" + d="m 184.125,701.5 a 2.2362916,2.2362916 0 0 0 -1.46875,0.90625 c 0,0 -3.32798,4.76714 -4.03125,11.15625 -5.01814,-4.02286 -10.75,-5.0625 -10.75,-5.0625 a 2.2362916,2.2362916 0 0 0 -2.59375,2.5625 c 0,0 1.03401,5.76487 5.0625,10.78125 -6.3978,0.70283 -11.1875,4.03125 -11.1875,4.03125 a 2.2362916,2.2362916 0 0 0 0,3.625 c 0,0 4.79479,3.3031 11.1875,4 -4.02849,5.01638 -5.0625,10.78125 -5.0625,10.78125 a 2.2362916,2.2362916 0 0 0 2.59375,2.5625 c 0,0 5.73186,-1.03964 10.75,-5.0625 0.70267,6.3934 4.03125,11.1875 4.03125,11.1875 a 2.2362916,2.2362916 0 0 0 3.625,0 c 0,0 3.31109,-4.81453 4,-11.21875 5.02623,4.04674 10.78125,5.09375 10.78125,5.09375 a 2.2362916,2.2362916 0 0 0 2.59375,-2.59375 c 0,0 -1.0624,-5.73727 -5.09375,-10.75 6.397,-0.69632 11.21875,-4 11.21875,-4 a 2.2362916,2.2362916 0 0 0 0,-3.625 c 0,0 -4.81666,-3.329 -11.21875,-4.03125 4.03134,-5.01273 5.09375,-10.75 5.09375,-10.75 A 2.2362916,2.2362916 0 0 0 201.0625,708.5 c 0,0 -5.75502,1.04701 -10.78125,5.09375 -0.69265,-6.39357 -4,-11.1875 -4,-11.1875 A 2.2362916,2.2362916 0 0 0 184.125,701.5 z" + transform="matrix(0.86090294,0,0,0.86090013,161.26997,-552.3872)" /> + <path + style="color:#000000;fill:#edd400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 323.39776,63.760511 c -3e-5,5.70341 -3.32382,10.326934 -3.32382,10.326934 0,0 -3.32383,-4.623515 -3.32384,-10.326924 1e-5,-5.703418 3.32383,-10.326923 3.32383,-10.326923 0,0 3.32382,4.623505 3.32383,10.326913 z" + id="path2816" + sodipodi:nodetypes="csssc" /> + <path + sodipodi:nodetypes="csssc" + id="path3591" + d="m 323.39773,84.376553 c 0,5.703389 -3.32381,10.326913 -3.32381,10.326913 0,0 -3.32381,-4.623505 -3.32383,-10.326913 10e-6,-5.7034 3.32383,-10.326942 3.32383,-10.326942 0,0 3.32383,4.623524 3.32381,10.326942 z" + style="color:#000000;fill:#3465a4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <path + sodipodi:nodetypes="csssc" + id="path3593" + d="m 330.3953,77.388045 c -5.71081,0 -10.34033,-3.319527 -10.34033,-3.319527 0,0 4.62952,-3.319518 10.34031,-3.319508 5.7108,-1e-5 10.3403,3.319508 10.3403,3.319508 0,0 -4.6295,3.319518 -10.34028,3.319527 z" + style="color:#000000;fill:#65c808;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <path + style="color:#000000;fill:#ef2929;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 309.75256,77.388036 c -5.71079,0 -10.34031,-3.319528 -10.34031,-3.319528 0,0 4.62949,-3.319488 10.34028,-3.319498 5.71082,1e-5 10.34032,3.319527 10.34032,3.319527 0,0 -4.62949,3.319518 -10.34029,3.319499 z" + id="path3595" + sodipodi:nodetypes="csssc" /> + <path + style="color:#000000;fill:#afea2c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 329.72251,69.126933 c -4.03797,4.033097 -9.66199,4.954992 -9.66199,4.954992 0,0 0.92327,-5.616588 4.9614,-9.649503 4.03799,-4.033097 9.66201,-4.954993 9.66201,-4.954993 0,0 -0.92327,5.616559 -4.96142,9.649504 z" + id="path3597" + sodipodi:nodetypes="csssc" /> + <path + sodipodi:nodetypes="csssc" + id="path3599" + d="m 315.12591,83.704633 c -4.03798,4.033107 -9.662,4.955021 -9.662,4.955021 0,0 0.92328,-5.616607 4.96142,-9.649513 4.03797,-4.033097 9.66197,-4.954983 9.66197,-4.954983 0,0 -0.92326,5.616578 -4.96139,9.649475 z" + style="color:#000000;fill:#75507b;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <path + sodipodi:nodetypes="csssc" + id="path3601" + d="m 315.12589,64.432412 c 4.03797,4.033097 4.96141,9.649485 4.96141,9.649485 0,0 -5.62384,-0.922048 -9.66198,-4.954992 -4.03796,-4.033078 -4.96142,-9.649485 -4.96142,-9.649485 0,0 5.62387,0.922077 9.66199,4.954992 z" + style="color:#000000;fill:#f57900;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <path + style="color:#000000;fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 329.72251,79.010151 c 4.03798,4.033096 4.96142,9.649484 4.96142,9.649484 0,0 -5.62386,-0.922067 -9.66199,-4.955002 -4.03796,-4.033078 -4.96142,-9.649494 -4.96142,-9.649494 0,0 5.62384,0.922076 9.66199,4.955012 z" + id="path3603" + sodipodi:nodetypes="csssc" /> + <path + d="m 187.625,727.61218 a 3.375,3.375 0 1 1 -6.75,0 3.375,3.375 0 1 1 6.75,0 z" + sodipodi:ry="3.375" + sodipodi:rx="3.375" + sodipodi:cy="727.61218" + sodipodi:cx="184.25" + id="path3636" + style="opacity:0.15;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + sodipodi:type="arc" + transform="matrix(4.3930976,0,0,4.3930832,-489.53675,-3122.4468)" /> + <path + transform="matrix(2.933447,0,0,2.9334374,-220.59626,-2060.3908)" + sodipodi:type="arc" + style="opacity:0.15;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + id="path3634" + sodipodi:cx="184.25" + sodipodi:cy="727.61218" + sodipodi:rx="3.375" + sodipodi:ry="3.375" + d="m 187.625,727.61218 a 3.375,3.375 0 1 1 -6.75,0 3.375,3.375 0 1 1 6.75,0 z" /> + <path + d="m 187.625,727.61218 a 3.375,3.375 0 1 1 -6.75,0 3.375,3.375 0 1 1 6.75,0 z" + sodipodi:ry="3.375" + sodipodi:rx="3.375" + sodipodi:cy="727.61218" + sodipodi:cx="184.25" + id="path3632" + style="opacity:0.15;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + sodipodi:type="arc" + transform="matrix(1.3626673,4.8358059e-8,-4.8358217e-8,1.3626628,68.820018,-917.47577)" /> + <path + style="fill:#ffffff;stroke:#babdb6;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new;fill-opacity:1" + d="m 310.27934,219.5 1.48735,0 1.50863,2.01733 2.46518,0 0.78486,0.72717 0,2.18798 1.97464,1.8586 0,1.48411 -1.98011,1.58257 0,2.44021 -0.82283,0.70323 -2.43125,0.0313 -1.45908,1.96755 -1.50327,0.008 -1.48446,-1.99415 -2.56916,0 -0.74652,-0.7816 0,-2.44826 -2.00332,-1.57518 0,-1.46794 2.0146,-1.49262 0,-2.47309 0.76072,-0.76517 2.56056,0 1.44346,-2.0096 0,-4.4e-4 z" + id="path4151" + sodipodi:nodetypes="cccccccccccccccccccccccccc" /> + <path + style="color:#000000;fill:#ef2929;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 305.99504,226.00005 4.00498,0 1,1 -0.99999,1 -4.005,0 -1.00001,-1 1.00002,-1 z" + id="rect3758" + sodipodi:nodetypes="ccccccc" /> + <path + sodipodi:nodetypes="ccccccc" + id="path3761" + d="m 308.41789,223.00005 1.58214,1.56087 -10e-6,1.43913 -1.41787,1e-5 -1.58214,-1.56087 1e-5,-1.43914 1.41787,0 z" + style="color:#000000;fill:#f57900;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <path + sodipodi:nodetypes="ccccccc" + id="path3763" + d="m 311.99752,221.99756 10e-6,4.00498 -0.99999,1.00001 -1.00001,-1.00001 -10e-6,-4.00498 0.99998,-1.00001 1.00002,1.00001 z" + style="color:#000000;fill:#edd400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <path + sodipodi:nodetypes="ccccccc" + id="path3765" + d="m 315.99753,227.99755 -4.00499,0 -1,-1 0.99999,-1 4.005,0 0.99999,1 -0.99999,1 z" + style="color:#000000;fill:#65c808;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <path + style="color:#000000;fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 313.57862,231.00005 -1.58608,-1.56217 0,-1.44033 1.4214,0 1.58608,1.56218 0,1.44032 -1.4214,0 z" + id="path3767" + sodipodi:nodetypes="ccccccc" /> + <path + style="color:#000000;fill:#3465a4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 309.99504,232.00004 -1e-5,-4.00498 0.99999,-1.00001 1,1.00001 3e-5,4.00498 -1,1.00001 -1.00001,-1.00001 z" + id="path3769" + sodipodi:nodetypes="ccccccc" /> + <path + style="color:#000000;fill:#afea2c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 313.57862,223.00005 -1.58608,1.56087 0,1.43913 1.42141,1e-5 1.58607,-1.56088 0,-1.43913 -1.4214,0 z" + id="path3771" + sodipodi:nodetypes="ccccccc" /> + <path + sodipodi:nodetypes="ccccccc" + id="path3773" + d="m 308.41789,231.00005 1.58214,-1.56217 0,-1.44033 -1.41788,0 -1.58212,1.56219 -10e-6,1.44031 1.41787,0 z" + style="color:#000000;fill:#75507b;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <rect + y="226.00002" + x="310" + height="1" + width="1" + id="rect3928" + style="color:#000000;fill:#f57900;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <rect + style="color:#000000;fill:#afea2c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + id="rect3930" + width="1" + height="1" + x="311" + y="226.00002" /> + <rect + y="227" + x="310" + height="1" + width="1" + id="rect3932" + style="color:#000000;fill:#75507b;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <rect + style="color:#000000;fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + id="rect3934" + width="1" + height="1" + x="311" + y="227" /> + <path + sodipodi:type="inkscape:offset" + inkscape:radius="1.5103807" + inkscape:original="M 318.5625 131 C 318.5625 131 317.09875 133.33183 317.09375 136.21875 C 317.09175 137.30134 317.27669 138.2913 317.53125 139.125 C 317.1251 138.35971 316.59607 137.53357 315.84375 136.78125 C 313.78565 134.72315 311.03125 134.09375 311.03125 134.09375 C 311.03125 134.09375 311.66064 136.81689 313.71875 138.875 C 314.34243 139.49869 315.00416 139.99404 315.65625 140.375 C 314.93573 140.18887 314.14679 140.03125 313.28125 140.03125 C 310.37066 140.03125 308 141.53125 308 141.53125 C 308 141.53125 310.37065 143.03125 313.28125 143.03125 C 314.09694 143.03125 314.84193 142.91933 315.53125 142.75 C 314.93126 143.11305 314.31756 143.55938 313.75 144.125 C 311.68062 146.18718 311.09375 148.9375 311.09375 148.9375 C 311.09375 148.9375 313.83694 148.34349 315.90625 146.28125 C 316.48129 145.70821 316.91472 145.07389 317.28125 144.46875 C 317.11258 145.15189 317.00138 145.91413 317 146.71875 C 316.995 149.6402 318.5 152 318.5 152 C 318.5 152 320.02625 149.6402 320.03125 146.71875 C 320.03225 145.90003 319.92105 145.12901 319.75 144.4375 C 320.11782 145.05158 320.57282 145.69782 321.15625 146.28125 C 323.20214 148.32714 325.90625 148.90625 325.90625 148.90625 C 325.90625 148.90625 325.32715 146.20214 323.28125 144.15625 C 322.63589 143.51089 321.92265 143.00909 321.25 142.625 C 322.0002 142.83082 322.83215 143 323.75 143 C 326.64333 143 329 141.5 329 141.5 C 329 141.5 326.64334 139.99999 323.75 140 C 322.83389 140 321.9992 140.13853 321.25 140.34375 C 321.9255 139.95562 322.62869 139.4628 323.28125 138.8125 C 325.32605 136.77455 325.96875 134.09375 325.96875 134.09375 C 325.96875 134.09375 323.26364 134.71217 321.21875 136.75 C 320.47966 137.48661 319.937 138.3151 319.53125 139.0625 C 319.78069 138.2387 319.99817 137.27751 320 136.21875 C 320.00485 133.33181 318.5625 131 318.5625 131 z " + style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4007-3);stroke-width:0.85807866;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + id="path4148" + d="m 318.28125,129.5 a 1.5105318,1.5105318 0 0 0 -1,0.6875 c 0,0 -1.05656,2.06575 -1.4375,4.6875 -2.18577,-1.6749 -4.46875,-2.25 -4.46875,-2.25 a 1.5105318,1.5105318 0 0 0 -1.8125,1.8125 c 0,0 0.71311,2.14493 2.25,4.25 -2.66952,0.38009 -4.625,1.5625 -4.625,1.5625 a 1.5105318,1.5105318 0 0 0 0,2.5625 c 0,0 1.87849,1.15819 4.46875,1.5625 -1.52626,2.11661 -2.03125,4.25 -2.03125,4.25 a 1.5105318,1.5105318 0 0 0 1.78125,1.78125 c 0,0 2.12961,-0.50246 4.25,-2.03125 0.40756,2.58012 1.5625,4.4375 1.5625,4.4375 a 1.5105318,1.5105318 0 0 0 2.5625,0 c 0,0 1.14685,-1.87101 1.5625,-4.46875 2.11231,1.54106 4.25,2.03125 4.25,2.03125 a 1.5105318,1.5105318 0 0 0 1.78125,-1.78125 c 0,0 -0.49019,-2.13768 -2.03125,-4.25 2.58413,-0.4033 4.46875,-1.5625 4.46875,-1.5625 a 1.5105318,1.5105318 0 0 0 0,-2.5625 c 0,0 -1.96085,-1.18397 -4.625,-1.5625 1.53157,-2.07973 2.25,-4.21875 2.25,-4.21875 a 1.5105318,1.5105318 0 0 0 -1.8125,-1.8125 c 0,0 -2.23448,0.70397 -4.375,2.3125 -0.35793,-2.65265 -1.40625,-4.71875 -1.40625,-4.71875 A 1.5105318,1.5105318 0 0 0 318.28125,129.5 z" + transform="matrix(1.1653943,0,0,1.1653943,-52.666622,-23.391818)" /> + <path + style="color:#000000;fill:#65c808;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 324.64157,143.25315 c -3.37189,0 -6.10532,-1.74547 -6.10532,-1.74547 0,0 2.73343,-1.74548 6.10531,-1.74547 3.37188,-1e-5 6.10531,1.74547 6.10531,1.74547 0,0 -2.73343,1.74547 -6.1053,1.74547 z" + id="path3205" + sodipodi:nodetypes="csssc" /> + <path + sodipodi:nodetypes="csssc" + id="path4122" + d="m 321.6091,147.07447 c -2.38429,-2.3843 -3.08289,-5.55136 -3.08289,-5.55136 0,0 3.16707,0.69858 5.55135,3.08288 2.38428,2.38426 3.08287,5.55134 3.08287,5.55134 0,0 -3.16706,-0.6986 -5.55133,-3.08286 z" + style="color:#000000;fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <path + style="color:#000000;fill:#edd400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 320.25955,135.34763 c -0.006,3.36437 -1.70727,6.09557 -1.70727,6.09557 0,0 -1.6924,-2.72357 -1.68673,-6.08797 0.006,-3.3644 1.70727,-6.0956 1.70727,-6.0956 0,0 1.69238,2.72357 1.68673,6.088 z" + id="path3243" + sodipodi:nodetypes="csssc" /> + <path + sodipodi:nodetypes="csssc" + id="path4124" + d="m 324.10058,138.38586 c -2.38309,2.37485 -5.51744,3.103 -5.51744,3.103 0,0 0.72915,-3.12257 3.11215,-5.49755 2.38311,-2.37488 5.51746,-3.10301 5.51746,-3.10301 0,0 -0.72917,3.12254 -3.11217,5.49756 z" + style="color:#000000;fill:#afea2c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <path + sodipodi:nodetypes="csssc" + id="path3207" + d="m 312.42007,143.30466 c -3.392,0 -6.14174,-1.74547 -6.14174,-1.74547 0,0 2.74973,-1.74548 6.14172,-1.74548 3.39201,0 6.14174,1.74549 6.14174,1.74549 0,0 -2.74972,1.74547 -6.14172,1.74546 z" + style="color:#000000;fill:#ef2929;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <path + style="color:#000000;fill:#f57900;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 312.93077,138.46898 c -2.39851,-2.3985 -3.10864,-5.57711 -3.10864,-5.57711 0,0 3.1786,0.71013 5.5771,3.10862 2.39851,2.39851 3.10862,5.57711 3.10862,5.57711 0,0 -3.17859,-0.71011 -5.57708,-3.10862 z" + id="path4126" + sodipodi:nodetypes="csssc" /> + <path + sodipodi:nodetypes="csssc" + id="path3245" + d="m 320.31107,147.57843 c -0.006,3.40464 -1.78631,6.16849 -1.78631,6.16849 0,0 -1.77079,-2.75615 -1.76485,-6.16079 0.006,-3.4046 1.78631,-6.16844 1.78631,-6.16844 0,0 1.77078,2.75614 1.76485,6.16074 z" + style="color:#000000;fill:#3465a4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <path + style="color:#000000;fill:#75507b;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 315.48853,147.07077 c -2.41156,2.40332 -5.6249,3.09867 -5.6249,3.09867 0,0 0.69676,-3.20102 3.10841,-5.60428 2.41153,-2.4033 5.62485,-3.09863 5.62485,-3.09863 0,0 -0.69675,3.20102 -3.10836,5.60424 z" + id="path4128" + sodipodi:nodetypes="csssc" /> + <path + d="m 187.625,727.61218 a 3.375,3.375 0 1 1 -6.75,0 3.375,3.375 0 1 1 6.75,0 z" + sodipodi:ry="3.375" + sodipodi:rx="3.375" + sodipodi:cy="727.61218" + sodipodi:cx="184.25" + id="path3219" + style="opacity:0.15;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + sodipodi:type="arc" + transform="matrix(2.2222232,0,0,2.2222241,-90.944622,-1475.4173)" /> + <path + transform="matrix(1.0370376,3.68023e-8,-3.6802299e-8,1.0370376,127.42584,-613.06119)" + sodipodi:type="arc" + style="opacity:0.15;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + id="path3221" + sodipodi:cx="184.25" + sodipodi:cy="727.61218" + sodipodi:rx="3.375" + sodipodi:ry="3.375" + d="m 187.625,727.61218 a 3.375,3.375 0 1 1 -6.75,0 3.375,3.375 0 1 1 6.75,0 z" /> + <path + sodipodi:nodetypes="csssc" + id="path3253" + d="m 314.95613,183.25103 c -2e-5,2.34779 -1.47037,4.25105 -1.47037,4.25105 0,0 -1.4704,-1.90326 -1.4704,-4.25105 0,-2.34778 1.47039,-4.25103 1.47039,-4.25103 0,0 1.47036,1.90325 1.47038,4.25103 z" + style="color:#000000;fill:#edd400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <path + style="color:#000000;fill:#204a87;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 315.00849,191.7428 c 0,2.3512 -1.52274,4.2572 -1.52274,4.2572 0,0 -1.52275,-1.906 -1.52277,-4.2572 2e-5,-2.35117 1.52277,-4.25719 1.52277,-4.25719 0,0 1.52274,1.906 1.52274,4.25719 z" + id="path3255" + sodipodi:nodetypes="csssc" /> + <path + style="color:#000000;fill:#65c808;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 317.73874,188.96511 c -2.35342,0 -4.26124,-1.47127 -4.26124,-1.47127 0,0 1.90782,-1.47127 4.26124,-1.47126 2.35344,-1e-5 4.26126,1.47126 4.26126,1.47126 0,0 -1.90782,1.47127 -4.26126,1.47127 z" + id="path3257" + sodipodi:nodetypes="csssc" /> + <path + sodipodi:nodetypes="csssc" + id="path3259" + d="m 309.24699,188.99221 c -2.34555,0 -4.24699,-1.49837 -4.24699,-1.49837 0,0 1.90144,-1.49837 4.24698,-1.49837 2.34557,0 4.24701,1.49838 4.24701,1.49838 0,0 -1.90144,1.49837 -4.247,1.49836 z" + style="color:#000000;fill:#ef2929;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <path + sodipodi:nodetypes="csssc" + id="path4078" + d="m 311.56655,191.56678 c -1.66255,1.66255 -4.08703,1.93355 -4.08703,1.93355 0,0 0.27099,-2.42449 1.93353,-4.08705 1.66254,-1.66252 4.08705,-1.93353 4.08705,-1.93353 0,0 -0.27101,2.42448 -1.93355,4.08703 z" + style="color:#000000;fill:#75507b;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <path + style="color:#000000;fill:#afea2c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 317.53411,185.52516 c -1.66015,1.66013 -4.04565,1.96624 -4.04565,1.96624 0,0 0.30608,-2.38554 1.96622,-4.04567 1.66013,-1.66014 4.04565,-1.96621 4.04565,-1.96621 0,0 -0.3061,2.3855 -1.96622,4.04564 z" + id="path4076" + sodipodi:nodetypes="csssc" /> + <path + sodipodi:nodetypes="csssc" + id="path4080" + d="m 315.46125,191.53323 c -1.66412,-1.66412 -1.9728,-4.0535 -1.9728,-4.0535 0,0 2.38937,0.30869 4.05349,1.97282 1.66414,1.66412 1.97282,4.0535 1.97282,4.0535 0,0 -2.38937,-0.30869 -4.05351,-1.97282 z" + style="color:#000000;fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <path + style="color:#000000;fill:#f57900;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + d="m 309.43752,185.54782 c -1.65856,-1.65855 -1.94357,-4.06258 -1.94357,-4.06258 0,0 2.40403,0.28501 4.06257,1.94356 1.65857,1.65857 1.94358,4.0626 1.94358,4.0626 0,0 -2.40403,-0.28501 -4.06258,-1.94358 z" + id="path4082" + sodipodi:nodetypes="csssc" /> + <path + d="m 187.625,727.61218 a 3.375,3.375 0 1 1 -6.75,0 3.375,3.375 0 1 1 6.75,0 z" + sodipodi:ry="3.375" + sodipodi:rx="3.375" + sodipodi:cy="727.61218" + sodipodi:cx="184.25" + id="path3271" + style="opacity:0.15;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + sodipodi:type="arc" + transform="matrix(1.4760449,0,0,1.4760001,41.527558,-886.44282)" /> + <path + transform="matrix(0.73749573,2.6171391e-8,-2.6172183e-8,0.73747337,177.62738,-349.10373)" + sodipodi:type="arc" + style="opacity:0.15;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + id="path3273" + sodipodi:cx="184.25" + sodipodi:cy="727.61218" + sodipodi:rx="3.375" + sodipodi:ry="3.375" + d="m 187.625,727.61218 a 3.375,3.375 0 1 1 -6.75,0 3.375,3.375 0 1 1 6.75,0 z" /> + <rect + style="color:#000000;fill:#f57900;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + id="rect3983" + width="1" + height="1" + x="309.50824" + y="225.50826" /> + <rect + y="225.46968" + x="311.57452" + height="1" + width="1" + id="rect3985" + style="color:#000000;fill:#afea2c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <rect + y="227.50824" + x="311.50824" + height="1" + width="1" + id="rect3987" + style="color:#000000;fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> + <rect + style="color:#000000;fill:#75507b;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" + id="rect3989" + width="1" + height="1" + x="309.49176" + y="227.50824" /> +</svg> diff --git a/panels/color/meson.build b/panels/color/meson.build new file mode 100644 index 0000000..d21c54a --- /dev/null +++ b/panels/color/meson.build @@ -0,0 +1,62 @@ +panels_list += cappletname +desktop = 'gnome-@0@-panel.desktop'.format(cappletname) + +desktop_in = configure_file( + input: desktop + '.in.in', + output: desktop + '.in', + configuration: desktop_conf +) + +i18n.merge_file( + desktop, + type: 'desktop', + input: desktop_in, + output: desktop, + po_dir: po_dir, + install: true, + install_dir: control_center_desktopdir +) + +sources = files( + 'cc-color-panel.c', + 'cc-color-calibrate.c', + 'cc-color-cell-renderer-text.c', + 'cc-color-common.c', + 'cc-color-device.c', + 'cc-color-profile.c' +) + +resource_data = files( + 'cc-color-calibrate.ui', + 'cc-color-panel.ui', +) + +sources += gnome.compile_resources( + 'cc-' + cappletname + '-resources', + cappletname + '.gresource.xml', + c_name: 'cc_' + cappletname, + dependencies: resource_data, + export: true +) + +deps = common_deps + [ + colord_dep, + gnome_desktop_dep, + m_dep, + dependency('colord-gtk', version: '>= 0.1.24'), + dependency('libsoup-2.4') +] + +cflags += [ + '-DBINDIR="@0@"'.format(control_center_bindir) +] + +panels_libs += static_library( + cappletname, + sources: sources, + include_directories: [ top_inc, common_inc ], + dependencies: deps, + c_args: cflags +) + +subdir('icons') |