Merge lp:~morphis/network-manager/add-snappy-support into lp:~phablet-team/network-manager/snappy

Proposed by Simon Fels
Status: Merged
Approved by: Tony Espy
Approved revision: 978
Merged at revision: 972
Proposed branch: lp:~morphis/network-manager/add-snappy-support
Merge into: lp:~phablet-team/network-manager/snappy
Diff against target: 4420 lines (+4353/-0)
12 files modified
debian/patches/add-snappy-support.patch (+691/-0)
debian/patches/fix-code-to-build-with-werror.patch (+547/-0)
debian/patches/series (+3/-0)
parts/plugins/x-autotools.py (+129/-0)
snapcraft.yaml (+239/-0)
snappy/bin/dhclient (+32/-0)
snappy/bin/dnsmasq (+41/-0)
snappy/bin/networkmanager (+37/-0)
snappy/conf/NetworkManager.conf (+6/-0)
snappy/conf/dnsmasq-dbus.conf (+10/-0)
snappy/conf/org.freedesktop.NetworkManager.conf (+152/-0)
snappy/icon.svg (+2466/-0)
To merge this branch: bzr merge lp:~morphis/network-manager/add-snappy-support
Reviewer Review Type Date Requested Status
Tony Espy Approve
Simon Fels Pending
Review via email: mp+289514@code.launchpad.net

Commit message

Import snappy support from our 15.04 work

This is fully converted to snapcraft 2.x syntax now but still runs fully
unconfined. Also this doesn't include ModemManager as for the snappy 16
series we still have to find out whether we go with it or ofono as default.

Additionaly this is putting the snappy build configuration next to our
debian to both together and build stuff from the same base (patches,
config, ...).

Description of the change

Still some things we need to debate like

- version number (took the nm version + -<n>)
- Applying all debian/patches/ or not

but is fine for a first drop and we can move on from what we have then in that branch by defining further work items.

To post a comment you must log in.
976. By Simon Fels

Remove left over ModemManager udev rules

Revision history for this message
Tony Espy (awe) wrote :

1) I will have to say, I'm not a fan of merging the debian and snappy packaging into a single branch. There's simply too many debian-specific files included which are useless when it comes to building a snap. Add in the fact that the debian packaging branch for NM includes many stale patches ( ie. patches that aren't used or are commented out in the d/p/series ), and it seems like a mess to me.

Also, if we base the snap on the NM branch like this, we probably should revise the version to actually reflect this, at the moment it doesn't include the '-4ubuntu15.1.8' part in the version, yet it does include the code from that version.

I really prefer the bluez approach, where although the bzr namespace is the same as the debian package, the snap branch *only* includes snappy bits.

2) Why bother with --configure-snappy, the branch is solely for snappy? If we eventually try to upstream the patch(es), we'll probably need to change this is done ( ie. doubtful upstream would accept such a switch, we'd probably instead want to fix generically ), so let's either make the branch snappy only, or re-work the snappy patch into something we *think* upstream might accept ( note, let's do this after we switch to 1.2 ).

3) Why did you remove modemmanager and leave ofono in place? We know that modemmanager works, and we also know that ofono won't work till we re-write the settings plugin.

4) What's the reasoning behind the fix-code-to-build-with-werror.patch? It seems like this is changing a lot of code. Also this may not work with NM1.2, as they've gotten rid of some deprecated code ( eg. dbus-glib ), but not all ( eg. GSimpleAsyncResult ). Does the snap fail to build without this?

Note, I've also cleaned up a lot of ofono unused code in my 1.2 branch.

5) Where did the icon.svg come from? It's *huge* compared to the bluez icon.png ( which is a generic Ubuntu icon ).

6) What's the plan to fix "XXX: hardcode architecture" in wrapper binaries?

7) It looks like you're manually installing the binary wrapper scripts. Have you tested this? I couldn't get bluez to work this way, and ended up modifying yet another core snapcraft library to add the copies in when generating the wrapper scripts.

8) I don't see nmcli?

9) d/p/0002-Force-online-state-with-unmanaged-devices.patch: not re-patched for snappy.

10) 0003-Don-t-setup-Sleep-Monitor-if-not-booted-with-systemd.patch: not applicable for snappy.

11) d/p/0004-Use-symlinks-for-nmtui.patch: have you tested nmtui on snappy?

12) There are bunch of other patches that aren't really applicable to snappy ( eg. whoopsie support, upstart patches, ... ).

review: Needs Information
Revision history for this message
Tony Espy (awe) wrote :

Also note that the bluez snap uses the ~bluetooth team, perhaps we should use ~network-manager here instead of ~phablet-team?

Revision history for this message
Simon Fels (morphis) wrote :
Download full text (4.5 KiB)

Thanks a lot for the first review round!

For 1: I must say I don't really like us separating stuff into multiple different approaches per product. We already have separate packaging branches for desktop and touch and adding a third one for snappy doesn't really scale. That there are debian patches which might not apply to snappy, stale patches etc. but those things are all sth we have to solve over time. We have to find one common approach for all projects we're doing and apply that to all projects the same way.

Also respect that we're already shipping snappy packages for 15.04 with the exact same approach we're doing here but just having the debian package unpacked in another git repo. So this is only a continuation of what we've done before but in a more packed way. I would really like to bring all the different work we're doing as close as possible together rather than investing a huge amount of time for development, testing, reviewing for all different projects. There will be always project specific development/testing/.. but we should aim for convergence. I know there are problems in practice but those are the bits we need to solve.

I am fine with adding the debian packaging version number.

For 2: Adding --enable-snappy was done with the aim to align our packaging as described for 1). The debian package would simply build with --disable-snappy.

For 3: I removed ModemManager as

 * It needs to be in its own snap. The NetworkManager snap/part
   then just interacts with. What we did for 15.04 was a
   quick hack and is nothing we should just continue to do
   without discussing what we really want.
 * Its a per device decision if a telephony snap should be
   installed or not.
 * There are different components we can use to bring
   telephony into the game and we still haven't decided
   which horse we will ride for snappy (ofono, ModemManager)
 * This MP isn't aiming for feature completeness. Its just
   bringing the basic work from 15.04 to series 16 and
   leaving stuff out we don't know if we want it or not.

Also I left ofono in place as I simply copied the configflags from the debian packaging which have ofono enabled by default. That is again sth which needs to be reworked in follow up stories after we have decided where our way goes to.

For 4: I added that patch simply because all the wonderful patches we did on top of upstream doesn't build with -Werror (deprecated glib functions, ignoring const, unused variables) which is the default on xenial. I am sure you fixed some or most of them already with your 1.2 work and lets not bother with this patch too much. Its just there to get stuff building for the time being but the right way is to rework all those patches.

For 5: That icon is what we had in 15.04 for the network-manager snap. Its a more colorful networking one coming from the default icon set on desktop??

For 6: None yet. But the best would be if we get rid of them by telling the build not to install things into arch specific directories as that doesn't make much sense with snappy. Its currently a bit of a mess how those things are handled within the snap configuration but that is up for later.

For 7: Works as it s...

Read more...

977. By Simon Fels

Move snappy icon to its folder

978. By Simon Fels

Reflect debian version also in our snap version

Revision history for this message
Tony Espy (awe) :
review: Approve
Revision history for this message
Tony Espy (awe) wrote :

Approved; discussion on most of the above points will happen separately.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== added file 'debian/patches/add-snappy-support.patch'
--- debian/patches/add-snappy-support.patch 1970-01-01 00:00:00 +0000
+++ debian/patches/add-snappy-support.patch 2016-03-30 06:28:14 +0000
@@ -0,0 +1,691 @@
1Index: build/configure.ac
2===================================================================
3--- build.orig/configure.ac
4+++ build/configure.ac
5@@ -758,6 +758,15 @@ fi
6 AM_CONDITIONAL(BUILD_NMTUI, test "$build_nmtui" = yes)
7
8
9+AC_ARG_ENABLE(snappy, AS_HELP_STRING([--enable-snappy], [enable Ubuntu Snappy support]),
10+ [enable_snappy=${enableval}], [enable_snappy=yes])
11+if (test "${enable_snappy}" = "yes"); then
12+ AC_DEFINE(WITH_SNAPPY, 1, [Define if you want Ubuntu Snappy support])
13+else
14+ AC_DEFINE(WITH_SNAPPY, 0, [Define if you want Ubuntu Snappy support])
15+fi
16+AM_CONDITIONAL(WITH_SNAPPY, test "${enable_snappy}" = "yes")
17+
18 NM_COMPILER_WARNINGS
19
20 dnl -------------------------
21@@ -921,6 +930,7 @@ else
22 echo " policykit: no"
23 fi
24 echo " selinux: $have_selinux"
25+echo " Ubuntu snappy: ${enable_snappy}"
26 echo
27
28 echo "Features:"
29Index: build/src/Makefile.am
30===================================================================
31--- build.orig/src/Makefile.am
32+++ build/src/Makefile.am
33@@ -38,6 +38,11 @@ AM_CPPFLAGS = \
34 -DG_LOG_DOMAIN=\""NetworkManager"\" \
35 -DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE
36
37+if WITH_SNAPPY
38+AM_CPPFLAGS += \
39+ -DSNAPPY=
40+endif
41+
42 # add each subdirectory that contains a libNM source file. $(sort) is being used
43 # primarily for its side effect of removing duplicates.
44 AM_CPPFLAGS += $(foreach d,$(sort $(dir $(libNetworkManager_la_SOURCES))),-I$(top_srcdir)/src/$d)
45Index: build/src/devices/nm-device.c
46===================================================================
47--- build.orig/src/devices/nm-device.c
48+++ build/src/devices/nm-device.c
49@@ -78,6 +78,8 @@ static void impl_device_disconnect (NMDe
50
51 #include "nm-device-glue.h"
52
53+#include "snappy.h"
54+
55 static void nm_device_config_device_interface_init (NMConfigDeviceInterface *iface);
56
57 G_DEFINE_ABSTRACT_TYPE_WITH_CODE (NMDevice, nm_device, G_TYPE_OBJECT,
58@@ -4454,6 +4456,12 @@ send_arps (NMDevice *self, const char *m
59 NMIP4Address *addr;
60 guint32 ipaddr;
61 GError *error = NULL;
62+ char *path = NULL;
63+
64+ if (get_snap_app_path()) {
65+ path = g_strdup_printf("%s/usr/bin/arping", get_snap_app_path());
66+ argv[0] = path;
67+ }
68
69 connection = nm_device_get_connection (self);
70 if (!connection)
71@@ -4482,6 +4490,9 @@ send_arps (NMDevice *self, const char *m
72 g_clear_error (&error);
73 }
74 }
75+
76+ if (path)
77+ g_free(path);
78 }
79
80 static gboolean
81Index: build/src/dhcp-manager/nm-dhcp-dhclient.c
82===================================================================
83--- build.orig/src/dhcp-manager/nm-dhcp-dhclient.c
84+++ build/src/dhcp-manager/nm-dhcp-dhclient.c
85@@ -40,20 +40,21 @@
86 #include "nm-dhcp-dhclient-utils.h"
87 #include "nm-dhcp-manager.h"
88 #include "nm-posix-signals.h"
89+#include "snappy.h"
90
91 G_DEFINE_TYPE (NMDHCPDhclient, nm_dhcp_dhclient, NM_TYPE_DHCP_CLIENT)
92
93 #define NM_DHCP_DHCLIENT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DHCP_DHCLIENT, NMDHCPDhclientPrivate))
94
95 typedef struct {
96- const char *path;
97+ char *path;
98 char *conf_file;
99 const char *def_leasefile;
100 char *lease_file;
101 char *pid_file;
102 } NMDHCPDhclientPrivate;
103
104-const char *
105+char *
106 nm_dhcp_dhclient_get_path (const char *try_first)
107 {
108 static const char *dhclient_paths[] = {
109@@ -66,7 +67,7 @@ nm_dhcp_dhclient_get_path (const char *t
110 const char **path = dhclient_paths;
111
112 if (strlen (try_first) && g_file_test (try_first, G_FILE_TEST_EXISTS))
113- return try_first;
114+ return g_strdup (try_first);
115
116 while (*path != NULL) {
117 if (g_file_test (*path, G_FILE_TEST_EXISTS))
118@@ -74,7 +75,7 @@ nm_dhcp_dhclient_get_path (const char *t
119 path++;
120 }
121
122- return *path;
123+ return g_strdup(*path);
124 }
125
126 /**
127@@ -97,9 +98,14 @@ get_dhclient_leasefile (const char *ifac
128 char **out_preferred_path)
129 {
130 char *path;
131+ char *base_path = NMSTATEDIR;
132+
133+ if (get_snap_app_data_path())
134+ base_path = (char *) get_snap_app_data_path();
135
136 /* /var/lib/NetworkManager is the preferred leasefile path */
137- path = g_strdup_printf (NMSTATEDIR "/dhclient%s-%s-%s.lease",
138+ path = g_strdup_printf ("%s/dhclient%s-%s-%s.lease",
139+ base_path,
140 ipv6 ? "6" : "",
141 uuid,
142 iface);
143@@ -274,12 +280,16 @@ create_dhclient_config (const char *ifac
144 const char *hostname)
145 {
146 char *orig = NULL, *new = NULL;
147+ char *base_path = NMSTATEDIR;
148 GError *error = NULL;
149 gboolean success = FALSE;
150
151 g_return_val_if_fail (iface != NULL, NULL);
152
153- new = g_strdup_printf (NMSTATEDIR "/dhclient%s-%s.conf", is_ip6 ? "6" : "", iface);
154+ if (get_snap_app_data_path())
155+ base_path = (char *) get_snap_app_data_path();
156+
157+ new = g_strdup_printf ("%s/dhclient%s-%s.conf", base_path, is_ip6 ? "6" : "", iface);
158 nm_log_dbg (is_ip6 ? LOGD_DHCP6 : LOGD_DHCP4,
159 "(%s): creating composite dhclient config %s",
160 iface, new);
161@@ -351,9 +361,15 @@ dhclient_start (NMDHCPClient *client,
162 return -1;
163 }
164
165- pid_file = g_strdup_printf ("/run/sendsigs.omit.d/network-manager.dhclient%s-%s.pid",
166- ipv6 ? "6" : "",
167- iface);
168+ if (get_snap_app_data_path())
169+ pid_file = g_strdup_printf ("%s/run/sendsigs.omit.d/network-manager.dhclient%s-%s.pid",
170+ get_snap_app_data_path(),
171+ ipv6 ? "6" : "",
172+ iface);
173+ else
174+ pid_file = g_strdup_printf ("/run/sendsigs.omit.d/network-manager.dhclient%s-%s.pid",
175+ ipv6 ? "6" : "",
176+ iface);
177
178 /* Kill any existing dhclient from the pidfile */
179 binary_name = g_path_get_basename (priv->path);
180@@ -406,6 +422,8 @@ dhclient_start (NMDHCPClient *client,
181 }
182 }
183
184+ nm_log_warn (log_domain, "dhclient: building argv array; binary path is: %s", priv->path);
185+
186 argv = g_ptr_array_new ();
187 g_ptr_array_add (argv, (gpointer) priv->path);
188
189@@ -427,17 +445,22 @@ dhclient_start (NMDHCPClient *client,
190 g_ptr_array_add (argv, (gpointer) "-sf"); /* Set script file */
191 g_ptr_array_add (argv, (gpointer) nm_dhcp_helper_path);
192
193+ nm_log_warn (log_domain, "dhclient: building argv array; -sf <helper_path> is: %s", nm_dhcp_helper_path);
194+
195 if (pid_file) {
196 g_ptr_array_add (argv, (gpointer) "-pf"); /* Set pid file */
197 g_ptr_array_add (argv, (gpointer) pid_file);
198+ nm_log_warn (log_domain, "dhclient: building argv array; -pf <pid_file> is: %s", pid_file);
199 }
200
201 g_ptr_array_add (argv, (gpointer) "-lf"); /* Set lease file */
202 g_ptr_array_add (argv, (gpointer) priv->lease_file);
203+ nm_log_warn (log_domain, "dhclient: building argv array; -lf <lease_file> is: %s", priv->lease_file);
204
205 if (priv->conf_file) {
206 g_ptr_array_add (argv, (gpointer) "-cf"); /* Set interface config file */
207 g_ptr_array_add (argv, (gpointer) priv->conf_file);
208+ nm_log_warn (log_domain, "dhclient: building argv array; -cf <config_file> is: %s", priv->conf_file);
209 }
210
211 /* Usually the system bus address is well-known; but if it's supposed
212@@ -603,8 +626,15 @@ nm_dhcp_dhclient_init (NMDHCPDhclient *s
213 {
214 NMDHCPDhclientPrivate *priv = NM_DHCP_DHCLIENT_GET_PRIVATE (self);
215 const char **iter = &def_leasefiles[0];
216+ char *dhclient_path = DHCLIENT_PATH;
217+
218+ if (get_snap_app_path())
219+ dhclient_path = g_strdup_printf("%s/sbin/dhclient", get_snap_app_path());
220+
221+ priv->path = nm_dhcp_dhclient_get_path (dhclient_path);
222
223- priv->path = nm_dhcp_dhclient_get_path (DHCLIENT_PATH);
224+ if (get_snap_app_path ())
225+ g_free (dhclient_path);
226
227 while (iter && *iter) {
228 if (g_file_test (*iter, G_FILE_TEST_EXISTS)) {
229@@ -627,6 +657,7 @@ dispose (GObject *object)
230 g_free (priv->pid_file);
231 g_free (priv->conf_file);
232 g_free (priv->lease_file);
233+ g_free (priv->path);
234
235 G_OBJECT_CLASS (nm_dhcp_dhclient_parent_class)->dispose (object);
236 }
237Index: build/src/main.c
238===================================================================
239--- build.orig/src/main.c
240+++ build/src/main.c
241@@ -55,6 +55,7 @@
242 #include "nm-posix-signals.h"
243 #include "nm-session-monitor.h"
244 #include "nm-dispatcher.h"
245+#include "snappy.h"
246
247 #if !defined(NM_DIST_VERSION)
248 # define NM_DIST_VERSION VERSION
249@@ -63,6 +64,9 @@
250 #define NM_DEFAULT_PID_FILE NMRUNDIR "/NetworkManager.pid"
251 #define NM_DEFAULT_SYSTEM_STATE_FILE NMSTATEDIR "/NetworkManager.state"
252
253+extern const char* get_snap_app_path();
254+extern const char* get_snap_app_data_path();
255+
256 /*
257 * Globals
258 */
259@@ -355,6 +359,7 @@ main (int argc, char *argv[])
260 GError *error = NULL;
261 gboolean wrote_pidfile = FALSE;
262 char *bad_domains = NULL;
263+ char *run_dir, *state_dir;
264
265 GOptionEntry options[] = {
266 { "version", 'V', 0, G_OPTION_ARG_NONE, &show_version, N_("Print NetworkManager version and exit"), NULL },
267@@ -476,18 +481,37 @@ main (int argc, char *argv[])
268 g_free (path);
269 }
270
271+ if (get_snap_app_data_path()) {
272+ run_dir = g_strdup_printf("%s/var/run/", get_snap_app_data_path());
273+ state_dir = g_strdup_printf("%s/var/lib/", get_snap_app_data_path());
274+ } else {
275+ run_dir = g_strdup (NMRUNDIR);
276+ state_dir = g_strdup (NMSTATEDIR);
277+ }
278+
279+ nm_log_warn (LOGD_CORE, "run_dir: '%s", run_dir);
280+ nm_log_warn (LOGD_CORE, "state_dir: '%s", state_dir);
281+
282 /* Setup runtime directory */
283- if (g_mkdir_with_parents (NMRUNDIR, 0755) != 0) {
284- nm_log_err (LOGD_CORE, "Cannot create '%s': %s", NMRUNDIR, strerror (errno));
285+ if (g_mkdir_with_parents (run_dir, 0755) != 0) {
286+ nm_log_err (LOGD_CORE, "Cannot create '%s': %s", run_dir, strerror (errno));
287+ g_free (run_dir);
288+ g_free (state_dir);
289 exit (1);
290 }
291
292+ g_free (run_dir);
293+
294 /* Ensure state directory exists */
295- if (g_mkdir_with_parents (NMSTATEDIR, 0755) != 0) {
296- nm_log_err (LOGD_CORE, "Cannot create '%s': %s", NMSTATEDIR, strerror (errno));
297+ if (g_mkdir_with_parents (state_dir, 0755) != 0) {
298+ nm_log_err (LOGD_CORE, "Cannot create '%s': %s", state_dir, strerror (errno));
299+ g_free (run_dir);
300+ g_free (state_dir);
301 exit (1);
302 }
303
304+ g_free (state_dir);
305+
306 pidfile = pidfile ? pidfile : g_strdup (NM_DEFAULT_PID_FILE);
307 state_file = state_file ? state_file : g_strdup (NM_DEFAULT_SYSTEM_STATE_FILE);
308
309@@ -561,7 +585,10 @@ main (int argc, char *argv[])
310 g_log_set_always_fatal (fatal_mask);
311 }
312
313+#ifndef SNAPPY
314+ /* FIXME: this causes us to segfault in a snappy environment */
315 nm_logging_syslog_openlog (debug);
316+#endif
317
318 #if !GLIB_CHECK_VERSION (2, 35, 0)
319 g_type_init ();
320@@ -593,6 +620,7 @@ main (int argc, char *argv[])
321
322 /* Initialize our DBus service & connection */
323 dbus_mgr = nm_dbus_manager_get ();
324+
325 g_assert (dbus_mgr != NULL);
326
327 vpn_manager = nm_vpn_manager_get ();
328Index: build/src/nm-activation-request.c
329===================================================================
330--- build.orig/src/nm-activation-request.c
331+++ build/src/nm-activation-request.c
332@@ -37,6 +37,7 @@
333 #include "nm-active-connection.h"
334 #include "nm-settings-connection.h"
335 #include "nm-posix-signals.h"
336+#include "snappy.h"
337
338
339 G_DEFINE_TYPE (NMActRequest, nm_act_request, NM_TYPE_ACTIVE_CONNECTION)
340@@ -228,8 +229,13 @@ nm_act_request_set_shared (NMActRequest
341 char *envp[1] = { NULL };
342 gs_strfreev char **argv = NULL;
343 gs_free char *cmd = NULL;
344+ char *base_path = "";
345
346- cmd = g_strdup_printf ("%s --table %s %s %s",
347+ if (get_snap_app_path())
348+ base_path = get_snap_app_path();
349+
350+ cmd = g_strdup_printf ("%s%s --table %s %s %s",
351+ base_path,
352 IPTABLES_PATH,
353 rule->table,
354 shared ? "--insert" : "--delete",
355Index: build/src/nm-manager.c
356===================================================================
357--- build.orig/src/nm-manager.c
358+++ build/src/nm-manager.c
359@@ -70,7 +70,7 @@
360 #include "nm-sleep-monitor.h"
361 #include "nm-connectivity.h"
362 #include "nm-policy.h"
363-
364+#include "snappy.h"
365
366 #define NM_AUTOIP_DBUS_SERVICE "org.freedesktop.nm_avahi_autoipd"
367 #define NM_AUTOIP_DBUS_IFACE "org.freedesktop.nm_avahi_autoipd"
368@@ -2022,13 +2022,25 @@ load_device_factories (NMManager *self)
369 const char *item;
370 char *path;
371 GSList *iter;
372+ char *plugin_dir;
373+
374+ /* FIXME: hard-coded arch path... */
375+ if (get_snap_app_path())
376+ plugin_dir = g_strdup_printf("%s/usr/lib/NetworkManager/",
377+ get_snap_app_path());
378+ else
379+ plugin_dir = g_strdup (NMPLUGINDIR);
380+
381+ nm_log_warn (LOGD_HW, "load_device_factories: about to open plugin directory %s", plugin_dir);
382+
383+ dir = g_dir_open (plugin_dir, 0, &error);
384
385- dir = g_dir_open (NMPLUGINDIR, 0, &error);
386 if (!dir) {
387 nm_log_warn (LOGD_HW, "Failed to open plugin directory %s: %s",
388- NMPLUGINDIR,
389+ plugin_dir,
390 (error && error->message) ? error->message : "(unknown)");
391 g_clear_error (&error);
392+ g_free (plugin_dir);
393 return;
394 }
395
396@@ -2045,7 +2057,11 @@ load_device_factories (NMManager *self)
397 if (g_str_has_suffix (item, ".la"))
398 continue;
399
400- path = g_module_build_path (NMPLUGINDIR, item);
401+ if (get_snap_app_path())
402+ path = g_module_build_path(plugin_dir, item);
403+ else
404+ path = g_module_build_path (NMPLUGINDIR, item);
405+
406 g_assert (path);
407 plugin = g_module_open (path, G_MODULE_BIND_LOCAL);
408 g_free (path);
409@@ -2113,8 +2129,11 @@ load_device_factories (NMManager *self)
410 nm_log_info (LOGD_HW, "Loaded device plugin: %s", g_module_name (plugin));
411 };
412 g_dir_close (dir);
413+ g_free (plugin_dir);
414
415 priv->factories = g_slist_reverse (priv->factories);
416+
417+ nm_log_warn (LOGD_HW, "load_device_factories: all done");
418 }
419
420 static void
421Index: build/src/ppp-manager/nm-ppp-manager.c
422===================================================================
423--- build.orig/src/ppp-manager/nm-ppp-manager.c
424+++ build/src/ppp-manager/nm-ppp-manager.c
425@@ -53,6 +53,7 @@
426 #include "nm-dbus-manager.h"
427 #include "nm-logging.h"
428 #include "nm-posix-signals.h"
429+#include "snappy.h"
430
431 static void impl_ppp_manager_need_secrets (NMPPPManager *manager,
432 DBusGMethodInvocation *context);
433@@ -972,7 +973,16 @@ create_pppd_cmd_line (NMPPPManager *self
434 nm_cmd_line_add_string (cmd, priv->dbus_path);
435
436 nm_cmd_line_add_string (cmd, "plugin");
437- nm_cmd_line_add_string (cmd, NM_PPPD_PLUGIN);
438+
439+ if (get_snap_app_path()) {
440+ gchar *plugin_path = g_strdup_printf("%s%s",
441+ get_snap_app_path(),
442+ NM_PPPD_PLUGIN);
443+ nm_cmd_line_add_string (cmd, plugin_path);
444+ g_free(plugin_path);
445+ } else {
446+ nm_cmd_line_add_string (cmd, NM_PPPD_PLUGIN);
447+ }
448
449 return cmd;
450 }
451Index: build/src/settings/nm-settings.c
452===================================================================
453--- build.orig/src/settings/nm-settings.c
454+++ build/src/settings/nm-settings.c
455@@ -68,6 +68,7 @@
456 #include "nm-connection-provider.h"
457 #include "nm-config.h"
458 #include "NetworkManagerUtils.h"
459+#include "snappy.h"
460
461 /* LINKER CRACKROCK */
462 #define EXPORT(sym) void * __export_##sym = &sym;
463@@ -124,7 +125,6 @@ static void connection_provider_init (NM
464 G_DEFINE_TYPE_EXTENDED (NMSettings, nm_settings, G_TYPE_OBJECT, 0,
465 G_IMPLEMENT_INTERFACE (NM_TYPE_CONNECTION_PROVIDER, connection_provider_init))
466
467-
468 typedef struct {
469 NMDBusManager *dbus_mgr;
470
471@@ -615,6 +615,15 @@ load_plugins (NMSettings *self, const ch
472 const char **iter;
473 gboolean keyfile_added = FALSE;
474 gboolean success = TRUE;
475+ char *plugin_dir = NULL;
476+
477+ if (get_snap_app_path()) {
478+ plugin_dir = g_strdup_printf ("%s/usr/lib/NetworkManager/", get_snap_app_path());
479+ }
480+ else
481+ plugin_dir = g_strdup (NMPLUGINDIR);
482+
483+ nm_log_warn (LOGD_HW, "load_plugins: about to open plugin directory %s", plugin_dir);
484
485 for (iter = plugins; iter && *iter; iter++) {
486 GModule *plugin;
487@@ -645,7 +654,7 @@ load_plugins (NMSettings *self, const ch
488 }
489
490 full_name = g_strdup_printf ("nm-settings-plugin-%s", pname);
491- path = g_module_build_path (NMPLUGINDIR, full_name);
492+ path = g_module_build_path (plugin_dir, full_name);
493
494 plugin = g_module_open (path, G_MODULE_BIND_LOCAL);
495 if (!plugin) {
496@@ -690,6 +699,9 @@ load_plugins (NMSettings *self, const ch
497
498 g_slist_free_full (list, g_object_unref);
499
500+ if (plugin_dir)
501+ g_free (plugin_dir);
502+
503 return success;
504 }
505
506@@ -1754,6 +1766,8 @@ nm_settings_new (GError **error)
507 NMSettings *self;
508 NMSettingsPrivate *priv;
509
510+ nm_log_warn (LOGD_HW, "nm_settings_new");
511+
512 self = g_object_new (NM_TYPE_SETTINGS, NULL);
513
514 priv = NM_SETTINGS_GET_PRIVATE (self);
515@@ -1761,8 +1775,11 @@ nm_settings_new (GError **error)
516 priv->config = nm_config_get ();
517 priv->dbus_mgr = nm_dbus_manager_get ();
518
519+ nm_log_warn (LOGD_HW, "nm_settings_new: about to call load_plugins");
520+
521 /* Load the plugins; fail if a plugin is not found. */
522 if (!load_plugins (self, nm_config_get_plugins (priv->config), error)) {
523+ fprintf (stderr, "load settings plugins - FAILED!!!\n");
524 g_object_unref (self);
525 return NULL;
526 }
527Index: build/src/settings/plugins/keyfile/plugin.c
528===================================================================
529--- build.orig/src/settings/plugins/keyfile/plugin.c
530+++ build/src/settings/plugins/keyfile/plugin.c
531@@ -44,6 +44,7 @@
532 #include "writer.h"
533 #include "common.h"
534 #include "utils.h"
535+#include "snappy.h"
536
537 static char *plugin_get_hostname (SCPluginKeyfile *plugin);
538 static void system_config_interface_init (NMSystemConfigInterface *system_config_interface_class);
539@@ -282,7 +283,17 @@ setup_monitoring (NMSystemConfigInterfac
540 GFileMonitor *monitor;
541
542 if (nm_config_get_monitor_connection_files (nm_config_get ())) {
543- file = g_file_new_for_path (KEYFILE_DIR);
544+
545+ if (get_snap_app_data_path()) {
546+ char *keyfile_dir = NULL;
547+ keyfile_dir = g_strdup_printf("%s/%s", get_snap_app_data_path(),
548+ KEYFILE_DIR);
549+ file = g_file_new_for_path (keyfile_dir);
550+ g_free(keyfile_dir);
551+ } else {
552+ file = g_file_new_for_path (KEYFILE_DIR);
553+ }
554+
555 monitor = g_file_monitor_directory (file, G_FILE_MONITOR_NONE, NULL, NULL);
556 g_object_unref (file);
557
558@@ -316,7 +327,16 @@ read_connections (NMSystemConfigInterfac
559 GHashTableIter iter;
560 gpointer data;
561
562- dir = g_dir_open (KEYFILE_DIR, 0, &error);
563+ if (get_snap_app_data_path()) {
564+ char *keyfile_dir = NULL;
565+ keyfile_dir = g_strdup_printf("%s/%s", get_snap_app_data_path(),
566+ KEYFILE_DIR);
567+ dir = g_dir_open (keyfile_dir, 0, &error);
568+ g_free(keyfile_dir);
569+ } else {
570+ dir = g_dir_open (KEYFILE_DIR, 0, &error);
571+ }
572+
573 if (!dir) {
574 nm_log_warn (LOGD_SETTINGS, "Cannot read directory '%s': (%d) %s",
575 KEYFILE_DIR,
576@@ -341,7 +361,10 @@ read_connections (NMSystemConfigInterfac
577 if (nm_keyfile_plugin_utils_should_ignore_file (item))
578 continue;
579
580- full_path = g_build_filename (KEYFILE_DIR, item, NULL);
581+ if (get_snap_app_data_path())
582+ full_path = g_build_filename (get_snap_app_data_path(), KEYFILE_DIR, item, NULL);
583+ else
584+ full_path = g_build_filename (KEYFILE_DIR, item, NULL);
585
586 connection = g_hash_table_lookup (oldconns, full_path);
587 if (connection) {
588Index: build/src/settings/plugins/keyfile/writer.c
589===================================================================
590--- build.orig/src/settings/plugins/keyfile/writer.c
591+++ build/src/settings/plugins/keyfile/writer.c
592@@ -48,6 +48,7 @@
593 #include "writer.h"
594 #include "common.h"
595 #include "utils.h"
596+#include "snappy.h"
597
598 /* Some setting properties also contain setting names, such as
599 * NMSettingConnection's 'type' property (which specifies the base type of the
600@@ -1124,12 +1125,26 @@ nm_keyfile_plugin_write_connection (NMCo
601 char **out_path,
602 GError **error)
603 {
604- return _internal_write_connection (connection,
605- KEYFILE_DIR,
606+ gboolean ret;
607+ char *keyfile_dir = NULL;
608+
609+ if (get_snap_app_data_path())
610+ keyfile_dir = g_strdup_printf("%s%s",
611+ get_snap_app_data_path(),
612+ KEYFILE_DIR);
613+ else
614+ keyfile_dir = g_strdup(KEYFILE_DIR);
615+
616+ ret = _internal_write_connection (connection,
617+ keyfile_dir,
618 0, 0,
619 existing_path,
620 out_path,
621 error);
622+
623+ g_free(keyfile_dir);
624+
625+ return ret;
626 }
627
628 gboolean
629Index: build/src/snappy.h
630===================================================================
631--- /dev/null
632+++ build/src/snappy.h
633@@ -0,0 +1,45 @@
634+/* NetworkManager -- Network link manager
635+ *
636+ * This program is free software; you can redistribute it and/or modify
637+ * it under the terms of the GNU General Public License as published by
638+ * the Free Software Foundation; either version 2 of the License, or
639+ * (at your option) any later version.
640+ *
641+ * This program is distributed in the hope that it will be useful,
642+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
643+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
644+ * GNU General Public License for more details.
645+ *
646+ * You should have received a copy of the GNU General Public License along
647+ * with this program; if not, write to the Free Software Foundation, Inc.,
648+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
649+ *
650+ * Copyright (C) 2015 Canonical Ltd.
651+ */
652+
653+#ifndef SNAPPY_H_
654+#define SNAPPY_H_
655+
656+#include <stdlib.h>
657+
658+static const char* get_snap_app_data_path()
659+{
660+ static char *path = NULL;
661+
662+ if (!path)
663+ path = getenv("SNAP_APP_DATA_PATH");
664+
665+ return path;
666+}
667+
668+static const char* get_snap_app_path()
669+{
670+ static char *path = NULL;
671+
672+ if (!path)
673+ path = getenv("SNAP_APP_PATH");
674+
675+ return path;
676+}
677+
678+#endif
679Index: build/src/dhcp-manager/nm-dhcp-dhclient.h
680===================================================================
681--- build.orig/src/dhcp-manager/nm-dhcp-dhclient.h
682+++ build/src/dhcp-manager/nm-dhcp-dhclient.h
683@@ -45,7 +45,7 @@ GSList *nm_dhcp_dhclient_get_lease_ip_co
684 const char *uuid,
685 gboolean ipv6);
686
687-const char *nm_dhcp_dhclient_get_path (const char *try_first);
688+char *nm_dhcp_dhclient_get_path (const char *try_first);
689
690 #endif /* NM_DHCP_DHCLIENT_H */
691
0692
=== added file 'debian/patches/fix-code-to-build-with-werror.patch'
--- debian/patches/fix-code-to-build-with-werror.patch 1970-01-01 00:00:00 +0000
+++ debian/patches/fix-code-to-build-with-werror.patch 2016-03-30 06:28:14 +0000
@@ -0,0 +1,547 @@
1Index: build/libgsystem/Makefile-libgsystem.am
2===================================================================
3--- build.orig/libgsystem/Makefile-libgsystem.am
4+++ build/libgsystem/Makefile-libgsystem.am
5@@ -37,6 +37,6 @@ libgsystem_la_SOURCES = \
6 $(libgsystem_srcpath)/libgsystem.h \
7 $(NULL)
8
9-libgsystem_la_CFLAGS = $(AM_CFLAGS) $(libgsystem_cflags)
10+libgsystem_la_CFLAGS = $(AM_CFLAGS) $(libgsystem_cflags) -Wno-deprecated-declarations
11 libgsystem_la_LDFLAGS = -avoid-version -Bsymbolic-functions -export-symbols-regex "^gs_" -no-undefined -export-dynamic
12 libgsystem_la_LIBADD = $(libgsystem_libs)
13Index: build/src/NetworkManagerUtils.c
14===================================================================
15--- build.orig/src/NetworkManagerUtils.c
16+++ build/src/NetworkManagerUtils.c
17@@ -19,7 +19,6 @@
18 * Copyright (C) 2005 - 2008 Novell, Inc.
19 */
20
21-#include <glib.h>
22 #include <errno.h>
23 #include <fcntl.h>
24 #include <string.h>
25@@ -27,6 +26,8 @@
26 #include <stdlib.h>
27 #include <resolv.h>
28
29+#include <glib.h>
30+
31 #include "NetworkManagerUtils.h"
32 #include "nm-utils.h"
33 #include "nm-logging.h"
34Index: build/src/devices/nm-device.c
35===================================================================
36--- build.orig/src/devices/nm-device.c
37+++ build/src/devices/nm-device.c
38@@ -3808,7 +3808,7 @@ ip6_use_tempaddr (void)
39 ret = use_tempaddr_clamp (tmp);
40
41 done:
42- sysctl_data = g_string_free (sysctl_data, TRUE);
43+ sysctl_data = (GString*) g_string_free (sysctl_data, TRUE);
44 g_clear_error (&error);
45 g_key_file_free (keyfile);
46
47Index: build/src/devices/wwan/nm-modem-ofono.c
48===================================================================
49--- build.orig/src/devices/wwan/nm-modem-ofono.c
50+++ build/src/devices/wwan/nm-modem-ofono.c
51@@ -35,6 +35,7 @@
52 #include "nm-modem.h"
53 #include "nm-dbus-manager.h"
54 #include "NetworkManagerUtils.h"
55+#include "nm-utils.h"
56
57 G_DEFINE_TYPE (NMModemOfono, nm_modem_ofono, NM_TYPE_MODEM)
58
59@@ -63,17 +64,6 @@ typedef struct {
60
61 } NMModemOfonoPrivate;
62
63-#define NM_OFONO_ERROR (nm_ofono_error_quark ())
64-
65-static GQuark
66-nm_ofono_error_quark (void)
67-{
68- static GQuark quark = 0;
69- if (!quark)
70- quark = g_quark_from_static_string ("nm-ofono-error");
71- return quark;
72-}
73-
74 static gboolean
75 ip_string_to_network_address (const gchar *str,
76 guint32 *out)
77@@ -141,7 +131,6 @@ disconnect_done (DBusGProxy *proxy, DBus
78 {
79 SimpleDisconnectContext *ctx = (SimpleDisconnectContext*) user_data;
80 NMModemOfono *self = ctx->self;
81- NMModemOfonoPrivate *priv = NM_MODEM_OFONO_GET_PRIVATE (self);
82 GError *error = NULL;
83
84 nm_log_dbg (LOGD_MB, "in %s", __func__);
85@@ -199,7 +188,7 @@ deactivate (NMModem *_self, NMDevice *de
86 NM_MODEM_CLASS (nm_modem_ofono_parent_class)->deactivate (_self, device);
87 }
88
89-DBusGProxy *
90+static DBusGProxy *
91 get_ofono_proxy (NMModemOfono *self, const char *path, const char *interface)
92 {
93 NMModemOfonoPrivate *priv = NM_MODEM_OFONO_GET_PRIVATE (self);
94@@ -238,7 +227,6 @@ static void
95 get_ofono_conn_manager_properties_done (DBusGProxy *proxy, DBusGProxyCall *call_id, gpointer user_data)
96 {
97 NMModemOfono *self = NM_MODEM_OFONO (user_data);
98- NMModemOfonoPrivate *priv = NM_MODEM_OFONO_GET_PRIVATE (self);
99 GError *error = NULL;
100 GHashTable *properties = NULL;
101 GValue *value = NULL;
102@@ -310,12 +298,9 @@ static void
103 get_ofono_sim_properties_done (DBusGProxy *proxy, DBusGProxyCall *call_id, gpointer user_data)
104 {
105 NMModemOfono *self = NM_MODEM_OFONO (user_data);
106- NMModemOfonoPrivate *priv = NM_MODEM_OFONO_GET_PRIVATE (self);
107- NMModemState state = nm_modem_get_state (NM_MODEM (self));
108 GError *error = NULL;
109 GHashTable *properties = NULL;
110 GValue *value = NULL;
111- const gchar *value_str;
112
113 nm_log_dbg (LOGD_MB, "in %s", __func__);
114
115@@ -360,17 +345,12 @@ ofono_context_added (DBusGProxy *proxy,
116 GValue *prop,
117 gpointer user_data)
118 {
119- NMModemOfono *self = NM_MODEM_OFONO (user_data);
120-
121 nm_log_dbg (LOGD_MB, "context %s added", path);
122 }
123
124 static void
125 ofono_context_removed (DBusGProxy *proxy, const char *path, gpointer user_data)
126 {
127- NMModemOfono *self = NM_MODEM_OFONO (user_data);
128- NMModemOfonoPrivate *priv = NM_MODEM_OFONO_GET_PRIVATE (self);
129-
130 nm_log_dbg (LOGD_MB, "context %s removed", path);
131 }
132
133@@ -695,7 +675,6 @@ context_properties_changed (DBusGProxy *
134 gpointer user_data)
135 {
136 NMModemOfono *self = NM_MODEM_OFONO (user_data);
137- NMModemOfonoPrivate *priv = NM_MODEM_OFONO_GET_PRIVATE (self);
138
139 if (g_strcmp0("Settings", key) == 0) {
140 ofono_context_get_ip_properties (self);
141@@ -708,8 +687,8 @@ do_context_activate (NMModemOfono *self,
142 NMModemOfonoPrivate *priv = NM_MODEM_OFONO_GET_PRIVATE (self);
143 GValue value = G_VALUE_INIT;
144
145- g_return_val_if_fail (self != NULL, FALSE);
146- g_return_val_if_fail (NM_IS_MODEM_OFONO (self), FALSE);
147+ g_return_if_fail (self != NULL);
148+ g_return_if_fail (NM_IS_MODEM_OFONO (self));
149
150 nm_log_dbg (LOGD_MB, "in %s", __func__);
151
152@@ -762,66 +741,6 @@ do_context_activate (NMModemOfono *self,
153
154 }
155
156-static void
157-context_set_property (gpointer key, gpointer value, gpointer user_data)
158-{
159- NMModemOfono *self = NM_MODEM_OFONO (user_data);
160- NMModemOfonoPrivate *priv = NM_MODEM_OFONO_GET_PRIVATE (self);
161- GValue val = G_VALUE_INIT;
162-
163- nm_log_dbg (LOGD_MB, "%s -- setting context prop: %s == %s",
164- __func__,
165- (char*)key,
166- (char*)value);
167-
168- g_value_init (&val, G_TYPE_STRING);
169- g_value_set_string (&val, (char*)value);
170-
171- if (!priv->property_error) {
172- dbus_g_proxy_call_with_timeout (priv->context_proxy,
173- "SetProperty",
174- 20000,
175- &priv->property_error,
176- G_TYPE_STRING, (char*)key,
177- G_TYPE_VALUE, &val,
178- G_TYPE_INVALID);
179- } else {
180- nm_log_warn (LOGD_MB, "could not set context property '%s': %s", (char*)key,
181- priv->property_error
182- && priv->property_error->message
183- ? priv->property_error->message : "(unknown)");
184- }
185-}
186-
187-static void stage1_enable_done (DBusGProxy *proxy, DBusGProxyCall *call_id, gpointer user_data);
188-
189-static void
190-stage1_enable_done (DBusGProxy *proxy, DBusGProxyCall *call_id, gpointer user_data)
191-{
192- NMModemOfono *self = NM_MODEM_OFONO (user_data);
193- NMModemOfonoPrivate *priv = NM_MODEM_OFONO_GET_PRIVATE (self);
194- GError *error = NULL;
195-
196- nm_log_dbg (LOGD_MB, "in %s", __func__);
197-
198- if (dbus_g_proxy_end_call (proxy, call_id, &error, G_TYPE_INVALID)) {
199- if (priv->context_path)
200- do_context_activate (self, priv->context_path);
201- else
202- g_signal_emit_by_name (self, NM_MODEM_PREPARE_RESULT, FALSE, NM_DEVICE_STATE_REASON_MODEM_INIT_FAILED);
203- } else {
204- nm_log_warn (LOGD_MB, "OFONO modem enable failed: (%d) %s",
205- error ? error->code : -1,
206- error && error->message ? error->message : "(unknown)");
207-
208- g_signal_emit_by_name (self, NM_MODEM_PREPARE_RESULT, FALSE, NM_DEVICE_STATE_REASON_MODEM_INIT_FAILED);
209-
210- g_error_free (error);
211- }
212-
213- g_object_unref (self);
214-}
215-
216 static GHashTable *
217 create_connect_properties (NMConnection *connection)
218 {
219@@ -857,7 +776,6 @@ act_stage1_prepare (NMModem *modem,
220 NMModemOfono *self = NM_MODEM_OFONO (modem);
221 NMModemOfonoPrivate *priv = NM_MODEM_OFONO_GET_PRIVATE (self);
222 const char *context_id;
223- char *context_path;
224 char **id = NULL;
225
226 nm_log_dbg (LOGD_MB, "in %s", __func__);
227@@ -1014,7 +932,6 @@ get_capabilities (NMModem *_self,
228 NMDeviceModemCapabilities *modem_caps,
229 NMDeviceModemCapabilities *current_caps)
230 {
231- NMModemOfono *self = NM_MODEM_OFONO (_self);
232 NMDeviceModemCapabilities all_ofono_caps = NM_DEVICE_MODEM_CAPABILITY_GSM_UMTS;
233
234 *modem_caps = all_ofono_caps;
235Index: build/src/dhcp-manager/nm-dhcp-dhclient.c
236===================================================================
237--- build.orig/src/dhcp-manager/nm-dhcp-dhclient.c
238+++ build/src/dhcp-manager/nm-dhcp-dhclient.c
239@@ -18,9 +18,7 @@
240 * Copyright (C) 2005 - 2012 Red Hat, Inc.
241 */
242
243-#define _XOPEN_SOURCE
244 #include <time.h>
245-#undef _XOPEN_SOURCE
246
247 #include <glib.h>
248 #include <glib/gi18n.h>
249Index: build/src/dns-manager/nm-dns-dnsmasq.c
250===================================================================
251--- build.orig/src/dns-manager/nm-dns-dnsmasq.c
252+++ build/src/dns-manager/nm-dns-dnsmasq.c
253@@ -83,7 +83,6 @@ find_dnsmasq (void)
254 static gboolean
255 add_ip4_config (DBusMessage *message, NMIP4Config *ip4, gboolean split)
256 {
257- char buf[INET_ADDRSTRLEN];
258 in_addr_t addr;
259 int nnameservers, i_nameserver, n, i;
260 gboolean added = FALSE;
261@@ -105,7 +104,7 @@ add_ip4_config (DBusMessage *message, NM
262 /* searches are preferred over domains */
263 n = nm_ip4_config_get_num_searches (ip4);
264 for (i = 0; i < n; i++) {
265- char *search = nm_ip4_config_get_search (ip4, i);
266+ const char *search = nm_ip4_config_get_search (ip4, i);
267 dbus_message_append_args (message,
268 DBUS_TYPE_STRING, &search,
269 DBUS_TYPE_INVALID);
270@@ -116,7 +115,7 @@ add_ip4_config (DBusMessage *message, NM
271 /* If not searches, use any domains */
272 n = nm_ip4_config_get_num_domains (ip4);
273 for (i = 0; i < n; i++) {
274- char *domain = nm_ip4_config_get_domain (ip4, i);
275+ const char *domain = nm_ip4_config_get_domain (ip4, i);
276 dbus_message_append_args (message,
277 DBUS_TYPE_STRING, &domain,
278 DBUS_TYPE_INVALID);
279@@ -193,7 +192,7 @@ add_ip6_config (DBusMessage *message, NM
280 /* searches are preferred over domains */
281 n = nm_ip6_config_get_num_searches (ip6);
282 for (i = 0; i < n; i++) {
283- char *search = nm_ip6_config_get_search (ip6, i);
284+ const char *search = nm_ip6_config_get_search (ip6, i);
285 dbus_message_append_args (message,
286 DBUS_TYPE_STRING, &search,
287 DBUS_TYPE_INVALID);
288@@ -204,7 +203,7 @@ add_ip6_config (DBusMessage *message, NM
289 /* If not searches, use any domains */
290 n = nm_ip6_config_get_num_domains (ip6);
291 for (i = 0; i < n; i++) {
292- char *domain = nm_ip6_config_get_domain (ip6, i);
293+ const char *domain = nm_ip6_config_get_domain (ip6, i);
294 dbus_message_append_args (message,
295 DBUS_TYPE_STRING, &domain,
296 DBUS_TYPE_INVALID);
297@@ -342,7 +341,7 @@ update (NMDnsPlugin *plugin,
298 /* Work on a copy of the vpn_configs list because we might want to remove
299 * some items from it, yet not affect other DNS plugins that might run
300 */
301- vpn_configs_copy = g_slist_copy (vpn_configs);
302+ vpn_configs_copy = g_slist_copy ((GSList*) vpn_configs);
303
304 /* Look for a VPN config that is set to get a default route, and if
305 * there is one, install it *without* splitting into per-domain servers.
306@@ -413,9 +412,9 @@ update (NMDnsPlugin *plugin,
307 * we cleared up the dnsmasq cache; but we should also fail the update, so
308 * that we don't write 127.0.1.1 to resolv.conf.
309 */
310- if (((vpn_configs && g_slist_length (vpn_configs) < 1) || !vpn_configs) &&
311- ((dev_configs && g_slist_length (dev_configs) < 1) || !dev_configs) &&
312- ((other_configs && g_slist_length (other_configs) < 1) || !other_configs))
313+ if (((vpn_configs && g_slist_length ((GSList*) vpn_configs) < 1) || !vpn_configs) &&
314+ ((dev_configs && g_slist_length ((GSList*) dev_configs) < 1) || !dev_configs) &&
315+ ((other_configs && g_slist_length ((GSList*) other_configs) < 1) || !other_configs))
316 ret = FALSE;
317
318 out:
319Index: build/src/dns-manager/nm-dns-manager.c
320===================================================================
321--- build.orig/src/dns-manager/nm-dns-manager.c
322+++ build/src/dns-manager/nm-dns-manager.c
323@@ -784,7 +784,6 @@ static void
324 plugin_appeared (NMDnsPlugin *plugin, gpointer user_data)
325 {
326 NMDnsManager *self = NM_DNS_MANAGER (user_data);
327- NMDnsManagerPrivate *priv = NM_DNS_MANAGER_GET_PRIVATE (self);
328 GError *error = NULL;
329
330 /* Not applicable to non-caching plugins */
331Index: build/src/nm-manager.c
332===================================================================
333--- build.orig/src/nm-manager.c
334+++ build/src/nm-manager.c
335@@ -800,7 +800,6 @@ remove_device (NMManager *manager, NMDev
336 NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (manager);
337
338 if (nm_device_get_managed (device)) {
339- NMActRequest *req = nm_device_get_act_request (device);
340 gboolean unmanage = FALSE;
341
342 /* Ubuntu: don't use device assumption, so as not to leave
343@@ -2172,7 +2171,6 @@ platform_link_added (NMManager *self,
344 /*
345 * Ubuntu: Explicitly unmanage p2p Wi-Fi devices exposed by Android JB Wi-Fi drivers.
346 */
347- NMDeviceType devtype = nm_device_get_device_type (device);
348 if ((plink->type == NM_LINK_TYPE_WIFI)
349 && !strncmp (plink->name, "p2p0", STRLEN ("p2p0"))) {
350 nm_log_info (LOGD_HW, "(%s): ignoring P2P wireless iface", plink->name);
351@@ -4266,9 +4264,6 @@ ifstate_file_changed (GFileMonitor *moni
352 GFileMonitorEvent event_type,
353 gpointer user_data)
354 {
355- NMManager *self = NM_MANAGER (user_data);
356- NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
357-
358 switch (event_type) {
359 // case G_FILE_MONITOR_EVENT_CREATED:
360 //#if GLIB_CHECK_VERSION(2,23,4)
361@@ -4809,7 +4804,6 @@ urfkill_wlan_state_changed_cb (NMUrfkill
362 {
363 NMManager *self = NM_MANAGER (user_data);
364 NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
365- GError *error = NULL;
366
367 nm_log_dbg (LOGD_RFKILL, "urfkill wlan state changed to %s",
368 enabled ? "enabled" : "disabled");
369@@ -4832,7 +4826,6 @@ urfkill_wwan_state_changed_cb (NMUrfkill
370 {
371 NMManager *self = NM_MANAGER (user_data);
372 NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
373- GError *error = NULL;
374
375 nm_log_dbg (LOGD_RFKILL, "urfkill wwan state changed to %s",
376 enabled ? "enabled" : "disabled");
377@@ -4910,6 +4903,7 @@ nm_manager_new (NMSettings *settings,
378 NMManagerPrivate *priv;
379 DBusGConnection *bus;
380 DBusConnection *dbus_connection;
381+ KillState *kill_state;
382
383 g_assert (settings);
384
385@@ -5009,7 +5003,7 @@ nm_manager_new (NMSettings *settings,
386 * changes to the WirelessEnabled/WWANEnabled properties which toggle kernel
387 * rfkill.
388 */
389- KillState *kill_state = g_slice_new0 (KillState);
390+ kill_state = g_slice_new0 (KillState);
391 kill_state->manager = g_object_ref (singleton);
392 kill_state->wlan_enabled = initial_wifi_enabled;
393 kill_state->wwan_enabled = initial_wwan_enabled;
394Index: build/src/nm-urfkill-manager.c
395===================================================================
396--- build.orig/src/nm-urfkill-manager.c
397+++ build/src/nm-urfkill-manager.c
398@@ -63,7 +63,6 @@ wlan_state_changed (GDBusProxy *proxy,
399 gpointer user_data)
400 {
401 NMUrfkillManager *self = NM_URFKILL_MANAGER (user_data);
402- GVariant *state;
403 gboolean enabled;
404
405 enabled = nm_urfkill_get_wlan_state (self);
406@@ -81,7 +80,6 @@ wwan_state_changed (GDBusProxy *proxy,
407 gpointer user_data)
408 {
409 NMUrfkillManager *self = NM_URFKILL_MANAGER (user_data);
410- GVariant *state = NULL;
411 gboolean enabled;
412
413 enabled = nm_urfkill_get_wwan_state (self);
414@@ -234,8 +232,6 @@ on_urfkill_vanished (GDBusConnection *co
415 static void
416 nm_urfkill_manager_init (NMUrfkillManager *self)
417 {
418- DBusGConnection *bus;
419-
420 self->urfkill_watch = g_bus_watch_name (G_BUS_TYPE_SYSTEM,
421 "org.freedesktop.URfkill",
422 0,
423Index: build/src/nm-urfkill-manager.h
424===================================================================
425--- build.orig/src/nm-urfkill-manager.h
426+++ build/src/nm-urfkill-manager.h
427@@ -39,7 +39,7 @@ typedef struct _NMUrfkillManager NMUrfki
428
429 GType nm_urfkill_manager_get_type (void);
430
431-NMUrfkillManager *nm_urfkill_manager_new ();
432+NMUrfkillManager *nm_urfkill_manager_new (void);
433
434 gboolean nm_urfkill_get_wlan_state (NMUrfkillManager *self);
435 gboolean nm_urfkill_get_wwan_state (NMUrfkillManager *self);
436Index: build/src/devices/bluetooth/Makefile.am
437===================================================================
438--- build.orig/src/devices/bluetooth/Makefile.am
439+++ build/src/devices/bluetooth/Makefile.am
440@@ -19,7 +19,8 @@ AM_CPPFLAGS = \
441 $(DBUS_CFLAGS) \
442 $(POLKIT_CFLAGS) \
443 $(LIBNL_CFLAGS) \
444- $(GUDEV_CFLAGS)
445+ $(GUDEV_CFLAGS) \
446+ -Wno-deprecated-declarations
447
448 GLIB_GENERATED = nm-bt-enum-types.h nm-bt-enum-types.c
449 GLIB_MKENUMS_H_FLAGS = --identifier-prefix NM
450Index: build/src/settings/plugins/ofono/plugin.c
451===================================================================
452--- build.orig/src/settings/plugins/ofono/plugin.c
453+++ build/src/settings/plugins/ofono/plugin.c
454@@ -96,11 +96,6 @@ ofono_plugin_error_quark (void)
455 }
456
457 static void
458-ignore_cb ()
459-{
460-}
461-
462-static void
463 SCPluginOfono_parse_contexts (SCPluginOfono *self, GSList *contexts, const char *imsi)
464 {
465 SCPluginOfonoPrivate *priv = SC_PLUGIN_OFONO_GET_PRIVATE (self);
466@@ -197,7 +192,6 @@ next_context:
467 static gboolean
468 nm_ofono_read_imsi_contexts (SCPluginOfono *self, const char *imsi, GError **error)
469 {
470- SCPluginOfonoPrivate *priv = SC_PLUGIN_OFONO_GET_PRIVATE (self);
471 GHashTable *context;
472 GHashTable *pref_context = NULL;
473 GSList *contexts = NULL;
474@@ -358,7 +352,6 @@ ofono_imsi_changed (GFileMonitor *monito
475 gpointer user_data)
476 {
477 SCPluginOfono *self = SC_PLUGIN_OFONO (user_data);
478- SCPluginOfonoPrivate *priv = SC_PLUGIN_OFONO_GET_PRIVATE (self);
479 GFile *parent;
480 gchar *path, *imsi;
481 GError *error = NULL;
482@@ -465,9 +458,8 @@ ofono_dir_changed (GFileMonitor *monitor
483 SCPluginOfono *self = SC_PLUGIN_OFONO (user_data);
484 SCPluginOfonoPrivate *priv = SC_PLUGIN_OFONO_GET_PRIVATE (self);
485 GFileMonitor *imsi_monitor;
486- GFile *config_path;
487 gulong id;
488- gchar *imsi, *path;
489+ gchar *imsi;
490 gboolean res;
491 GError *error = NULL;
492
493@@ -597,8 +589,6 @@ static void
494 GObject__get_property (GObject *object, guint prop_id,
495 GValue *value, GParamSpec *pspec)
496 {
497- NMSystemConfigInterface *self = NM_SYSTEM_CONFIG_INTERFACE (object);
498-
499 switch (prop_id) {
500 case NM_SYSTEM_CONFIG_INTERFACE_PROP_NAME:
501 g_value_set_string (value, OFONO_PLUGIN_NAME);
502@@ -676,8 +666,6 @@ SCPluginOfono_init (NMSystemConfigInterf
503 {
504 SCPluginOfono *self = SC_PLUGIN_OFONO (config);
505 SCPluginOfonoPrivate *priv = SC_PLUGIN_OFONO_GET_PRIVATE (self);
506- GError *error = NULL;
507- gboolean success = FALSE;
508
509 /* Keep a hash table of GFileMonitors per IMSI for later removal */
510 if (!priv->ofono_imsi_monitors)
511@@ -705,11 +693,13 @@ SCPluginOfono_get_unmanaged_specs (NMSys
512 static gint
513 sort_by_context_id (gconstpointer a, gconstpointer b)
514 {
515+ const char *context_a, *context_b;
516+
517 g_return_val_if_fail (a != NULL, 0);
518 g_return_val_if_fail (b != NULL, 0);
519
520- const char *context_a = nm_connection_get_id (NM_CONNECTION (a));
521- const char *context_b = nm_connection_get_id (NM_CONNECTION (b));
522+ context_a = nm_connection_get_id (NM_CONNECTION (a));
523+ context_b = nm_connection_get_id (NM_CONNECTION (b));
524
525 return g_strcmp0 (context_a, context_b);
526 }
527Index: build/src/platform/tests/test-link.c
528===================================================================
529--- build.orig/src/platform/tests/test-link.c
530+++ build/src/platform/tests/test-link.c
531@@ -188,12 +188,12 @@ test_slave (int master, int type, Signal
532 /* Older team versions (e.g. Fedora 17) have a bug that team master stays
533 * IFF_LOWER_UP even if its slave is down. Double check it with iproute2 and if
534 * `ip link` also claims master to be up, accept it. */
535- char *stdout = NULL;
536+ char *_stdout = NULL;
537
538- nmtst_spawn_sync (NULL, &stdout, NULL, 0, "/sbin/ip", "link", "show", "dev", nm_platform_link_get_name (master));
539+ nmtst_spawn_sync (NULL, &_stdout, NULL, 0, "/sbin/ip", "link", "show", "dev", nm_platform_link_get_name (master));
540
541- g_assert (strstr (stdout, "LOWER_UP"));
542- g_free (stdout);
543+ g_assert (strstr (_stdout, "LOWER_UP"));
544+ g_free (_stdout);
545 } else
546 g_assert_not_reached ();
547 }
0548
=== modified file 'debian/patches/series'
--- debian/patches/series 2015-10-01 21:39:53 +0000
+++ debian/patches/series 2016-03-30 06:28:14 +0000
@@ -76,3 +76,6 @@
76lp1444162-add-ip6-config-to-nm-ofono-connections.patch76lp1444162-add-ip6-config-to-nm-ofono-connections.patch
77fix-ofono-plugin-leaks.patch77fix-ofono-plugin-leaks.patch
78rm-scofono-plugin-dbus.patch78rm-scofono-plugin-dbus.patch
79
80fix-code-to-build-with-werror.patch
81add-snappy-support.patch
7982
=== added directory 'parts'
=== added directory 'parts/plugins'
=== added file 'parts/plugins/x-autotools.py'
--- parts/plugins/x-autotools.py 1970-01-01 00:00:00 +0000
+++ parts/plugins/x-autotools.py 2016-03-30 06:28:14 +0000
@@ -0,0 +1,129 @@
1# -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*-
2#
3# Copyright (C) 2015 Canonical Ltd
4#
5# This program is free software: you can redistribute it and/or modify
6# it under the terms of the GNU General Public License version 3 as
7# published by the Free Software Foundation.
8#
9# This program is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12# GNU General Public License for more details.
13#
14# You should have received a copy of the GNU General Public License
15# along with this program. If not, see <http://www.gnu.org/licenses/>.
16
17"""The autotools plugin is used for autotools based parts.
18
19Autotools based projects are the ones that have the usual
20`./configure && make && make install` instruction set.
21
22The plugin tries to build using ./configure first, if it is not there
23it will run ./autogen and if autogen is not there it will run autoreconf.
24
25This plugin uses the common plugin keywords as well as those for "sources".
26For more information check the 'plugins' topic for the former and the
27'sources' topic for the latter.
28
29In additon, this plugin uses the following plugin-specific keywords:
30
31 - configflags:
32 (list of strings)
33 configure flags to pass to the build such as those shown by running
34 './configure --help'
35"""
36
37import os
38import stat
39
40import snapcraft
41
42
43class AutotoolsPlugin(snapcraft.BasePlugin):
44
45 @classmethod
46 def schema(cls):
47 schema = super().schema()
48 schema['properties']['configflags'] = {
49 'type': 'array',
50 'minitems': 1,
51 'uniqueItems': True,
52 'items': {
53 'type': 'string',
54 },
55 'default': [],
56 }
57
58 schema['properties']['install-via'] = {
59 'enum': ['destdir', 'prefix'],
60 'default': 'destdir',
61 }
62
63 schema['properties']['patches-dir'] = {
64 'type': 'string',
65 'default': 'patches',
66 }
67
68 schema['properties']['force-autogen'] = {
69 'type': 'boolean',
70 'default': 'true',
71 }
72
73 return schema
74
75 def __init__(self, name, options):
76 super().__init__(name, options)
77 self.build_packages.extend([
78 'autoconf',
79 'automake',
80 'autopoint',
81 'libtool',
82 'make',
83 ])
84
85 if options.install_via == 'destdir':
86 self.install_via_destdir = True
87 elif options.install_via == 'prefix':
88 self.install_via_destdir = False
89 else:
90 raise RuntimeError('Unsupported installation method: "{}"'.format(
91 options.install_via))
92
93 def build(self):
94 super().build()
95
96 patchdir = os.path.join(self.builddir, "../../..", self.options.patches_dir)
97
98 if os.path.exists(patchdir):
99 os.environ['QUILT_PATCHES'] = patchdir
100 self.run(['quilt', 'push', '-a'])
101
102 if not os.path.exists(os.path.join(self.builddir, "configure")) or self.options.force_autogen:
103 autogen_path = os.path.join(self.builddir, "autogen.sh")
104 if os.path.exists(autogen_path):
105 # Make sure it's executable
106 if not os.access(autogen_path, os.X_OK):
107 os.chmod(autogen_path,
108 stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR |
109 stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP |
110 stat.S_IROTH | stat.S_IWOTH | stat.S_IXOTH)
111
112 self.run(['env', 'NOCONFIGURE=1', './autogen.sh'])
113 else:
114 self.run(['autoreconf', '-i'])
115
116 configure_command = ['./configure']
117 make_install_command = ['make', 'install']
118
119 if self.install_via_destdir:
120 # Use an empty prefix since we'll install via DESTDIR
121 configure_command.append('--prefix=')
122 make_install_command.append('DESTDIR=' + self.installdir)
123 else:
124 configure_command.append('--prefix=' + self.installdir)
125
126 self.run(configure_command + self.options.configflags)
127 self.run(['make', '-j{}'.format(
128 snapcraft.common.get_parallel_build_count())])
129 self.run(make_install_command)
0130
=== added file 'snapcraft.yaml'
--- snapcraft.yaml 1970-01-01 00:00:00 +0000
+++ snapcraft.yaml 2016-03-30 06:28:14 +0000
@@ -0,0 +1,239 @@
1name: network-manager
2version: 0.9.10.0-4ubuntu15.1.8-1
3type: app
4summary: Network management based on NeworkManager
5description: Network management of wired ethernet and WiFi based on NetworkManager
6icon: snappy/icon.svg
7
8apps:
9 nmcli:
10 command: usr/bin/nmcli
11 plugs: [unconfined]
12 nmtui-connect:
13 command: usr/bin/nmtui-connect
14 plugs: [unconfined]
15 nmtui-edit:
16 command: usr/bin/nmtui-edit
17 plugs: [unconfined]
18 NetworkManager:
19 command: bin/networkmanager
20 daemon: simple
21 plugs: [unconfined]
22 dnsmasq:
23 command: bin/dnsmasq
24 daemon: simple
25 plugs: [unconfined]
26
27plugs:
28 unconfined:
29 interface: old-security
30 security-template: unconfined
31
32parts:
33 networkmanager-common:
34 plugin: copy
35 files:
36 snappy/bin/networkmanager: bin/networkmanager
37 snappy/bin/dnsmasq: bin/dnsmasq
38 snappy/conf/NetworkManager.conf: etc/NetworkManager/NetworkManager.conf
39 snappy/conf/dnsmasq-dbus.conf: conf/dnsmasq-dbus.conf
40
41 networkmanager:
42 plugin: autotools
43
44 source: https://download.gnome.org/sources/NetworkManager/0.9/NetworkManager-0.9.10.0.tar.xz
45
46 # Taking the same patchset as our debian package does
47 patches-dir: debian/patches
48
49 # NOTE: Force autogen to be executed again even if the tarball already
50 # comes with a configure script but that links against aclocal-1.13
51 # which we don't profile anymore and will cause the build to fail.
52 force-autogen: true
53
54 # NOTE: Keep this in sync with what the debian package configures
55 # NetworkManager. For everything we do differently please add a
56 # comment why we do so.
57 configflags:
58 - --libexecdir=/usr/lib/NetworkManager
59 - --with-pppd-plugin-dir=/usr/lib/pppd/2.4.6
60 - --with-pppd=/usr/sbin/pppd
61 - --with-pppoe=/usr/sbin/pppoe
62 - --with-resolvconf=/sbin/resolvconf
63 - --with-dhclient=/sbin/dhclient
64 - --with-iptables=/sbin/iptables
65 - --with-dnsmasq=/usr/sbin/dnsmasq
66 - --with-systemdsystemunitdir=/lib/systemd/system
67 - --with-crypto=gnutls
68 - --with-session-tracking=systemd
69 - --with-suspend-resume=systemd
70 - --with-modem-manager-1
71 - --with-nmtui
72 - --disable-more-warnings
73 - --disable-modify-system
74 - --enable-polkit
75 - --enable-ppp
76 - --enable-ifupdown
77 - --enable-introspection
78 - --enable-gtk-doc
79 - --enable-concheck
80 - --enable-teamdctl=no
81 - --enable-vala
82 - --enable-bluez4
83 - --with-tests
84 # NOTE: After this all options are specific to snappy and are not
85 # in sync with those being used in the debian package.
86 - --prefix=/usr
87 - --sysconfdir=/etc
88 - --disable-qt
89 - --enable-snappy
90
91 # We stage everything here we need for build and runtime
92 stage-packages:
93 - adduser
94 - dbus-test-runner
95 - dnsmasq-base
96 - gobject-introspection
97 - gtk-doc-tools
98 - init-system-helpers
99 - intltool
100 - iputils-arping
101 - isc-dhcp-client
102 - iw
103 - libc6
104 - libdbus-1-3
105 - libdbus-1-dev
106 - libdbus-glib-1-2
107 - libdbus-glib-1-dev
108 - libgcrypt11-dev
109 - libgcrypt20
110 - libgirepository1.0-dev
111 - libglib2.0-0
112 - libglib2.0-dev
113 - libglib2.0-doc
114 - libgudev-1.0-0
115 - libgudev-1.0-dev
116 - libiw-dev
117 - libmbim-glib4
118 - libmm-glib-dev
119 - libndp-dev
120 - libndp0
121 - libnewt-dev
122 - libnewt0.52
123 - libnl-3-200
124 - libnl-3-dev
125 - libnl-genl-3-200
126 - libnl-genl-3-dev
127 - libnl-route-3-200
128 - libnl-route-3-dev
129 - libnss3-dev
130 - libnspr4-dev
131 - libpam-systemd
132 - libpolkit-agent-1-0
133 - libpolkit-gobject-1-0
134 - libpolkit-gobject-1-dev
135 - libqmi-glib1
136 - libreadline-dev
137 - libreadline6
138 - libsoup2.4-1
139 - libsoup2.4-dev
140 - libsystemd-dev
141 - libsystemd0
142 - libudev-dev
143 - libuuid1
144 - lsb-base
145 - pkg-config
146 - policykit-1
147 - ppp-dev
148 - python-dbus
149 - python-gi
150 - udev
151 - uuid-dev
152 - valac
153 - wireless-tools
154
155 # We don't want that anything from our staged packages ends
156 # up in the resulting snap. We only need them to build
157 # NetworkManager. All runtime dependencies are pulled in with
158 # the rdepends part below. The only left items specified
159 # here are the results of the network manager build.
160 filesets:
161 docs:
162 # Need those to chip the license files of all things
163 # we put into the snap.
164 - usr/share/doc
165 binaries:
166 - usr/bin/nm-online
167 - usr/bin/nmcli
168 - usr/bin/nmtui
169 - usr/bin/nmtui-connect
170 - usr/bin/nmtui-hostname
171 - usr/bin/nmtui-edit
172 - usr/lib/*/NetworkManager
173 - usr/lib/pppd/2.4.6/nm-pppd-plugin.so
174 - usr/lib/NetworkManager
175 - usr/sbin/NetworkManager
176 - usr/lib/*/libnm-*.so*
177 - usr/lib/libnm-*.so*
178 configs:
179 - etc/dbus-1/system.d/*
180 rdepends:
181 - lib64/*
182 - lib/*/
183 - usr/lib/*/
184 - sbin/iwconfig
185 - sbin/iwlist
186 - sbin/iw
187 - sbin/dhclient-script
188 - sbin/dhclient
189 - bin/ip
190 - etc/dbus-1/system.d/dnsmasq.conf
191 - etc/iproute2/
192 - usr/sbin/arpd
193 - usr/sbin/dnsmasq
194 - usr/bin/arping
195 - usr/share/dnsmasq-base/
196 - etc/dhcp/
197 unwanted:
198 - -etc/dbus-1/system.d/org.freedesktop.ModemManager1.conf
199 - -usr/bin/mmcli
200 - -usr/include/libmm-glib/
201 - -usr/lib/*/libmm-glib.so*
202 - -usr/lib/*/ModemManager/
203 - -usr/sbin/ModemManager
204 - -usr/share/icons/hicolor/22x22/apps/ModemManager.png
205 - -usr/lib/*/gobject-introspection
206 - -usr/lib/*/pkgconfig
207 - -usr/lib/pkgconfig
208 - -usr/lib/*/perl/
209 - -usr/lib/*/perl5/
210 - -usr/lib/python2.7/
211 - -usr/lib/python3.4/
212 - -usr/lib/python3/
213 - -usr/lib/gcc/
214 - -usr/lib/ldscripts/
215 - -usr/lib/policykit-1
216 - -usr/lib/valgrind/
217 - -usr/lib/*/dbus-1.0/
218 - -usr/lib/*/girepository-1.0/
219 - -usr/lib/*/gconv/
220 - -usr/lib/girepository-1.0/
221 - -usr/lib/compat-ld/
222 - -usr/lib/dbus-1.0/dbus-daemon-launch-helper
223 - -usr/lib/dpkg/
224 - -lib/udev
225 - -lib/systemd
226 - -lib/ifupdown
227 - -lib/lsb
228 - -usr/lib/*.a
229 - -usr/lib/*/*.a
230 - -usr/lib/*.la
231 - -usr/lib/*/*.la
232 - -usr/lib/*/NetworkManager/*.la
233 - -usr/lib/pppd/*/nm-pppd-plugin.la
234 snap:
235 - $docs
236 - $binaries
237 - $configs
238 - $rdepends
239 - $unwanted
0240
=== added directory 'snappy'
=== added directory 'snappy/bin'
=== added file 'snappy/bin/dhclient'
--- snappy/bin/dhclient 1970-01-01 00:00:00 +0000
+++ snappy/bin/dhclient 2016-03-30 06:28:14 +0000
@@ -0,0 +1,32 @@
1#!/bin/bash
2
3set -e
4set -x
5
6escape() {
7 echo "$*" | sed "s/'/'\"'\"'/g; s/.*/'&'/"
8}
9
10run=""
11while [ $# -gt 0 ]; do
12 case $1 in
13 -sf|-pf|-lf|-cf)
14 case $2 in
15 /*)
16 path=$2
17 ;;
18 *)
19 path=$PWD/$2
20 ;;
21 esac
22 run="$run $1 `escape $path`"
23 shift 2
24 ;;
25 *)
26 run="$run `escape $1`"
27 shift
28 ;;
29 esac
30done
31
32eval exec $0.real $run
033
=== added file 'snappy/bin/dnsmasq'
--- snappy/bin/dnsmasq 1970-01-01 00:00:00 +0000
+++ snappy/bin/dnsmasq 2016-03-30 06:28:14 +0000
@@ -0,0 +1,41 @@
1#!/bin/sh
2
3set -e
4set -x
5
6# Copy in our dbus policy until snappy has support for this
7cp $SNAP_APP_PATH/conf/dnsmasq-dbus.conf \
8 /etc/dbus-1/system.d/$SNAP_APP.conf
9
10mkdir -p $SNAP_APP_DATA_PATH/etc/NetworkManager/dnsmasq.d
11mkdir -p $SNAP_APP_DATA_PATH/var/run/NetworkManager
12touch $SNAP_APP_DATA_PATH/var/run/NetworkManager/dnsmasq.conf
13chmod 0644 $SNAP_APP_DATA_PATH/var/run/NetworkManager/dnsmasq.conf
14
15TRIPLET=
16
17case $SNAP_ARCH in
18 amd64)
19 TRIPLET=x86_64-linux-gnu
20 ;;
21 *)
22 echo "ERROR: Architecture $SNAP_ARCH isn't supported by this snap"
23 exit 1
24esac
25
26
27# XXX hardcoded architecture
28LD_LIBRARY_PATH="$SNAP_APP_PATH/usr/lib/$TRIPLET:$SNAP_APP_PATH/usr/lib:$SNAP_APP_PATH/lib/$TRIPLET" \
29$SNAP_APP_PATH/usr/sbin/dnsmasq \
30 --no-resolv \
31 --keep-in-foreground \
32 --no-hosts \
33 --listen-address=127.0.1.1 \
34 --cache-size=0 \
35 --proxy-dnssec \
36 --enable-dbus=org.freedesktop.NetworkManager.dnsmasq \
37 --conf-file=$SNAP_APP_DATA_PATH/var/run/NetworkManager/dnsmasq.conf \
38 --conf-dir=$SNAP_APP_DATA_PATH/etc/NetworkManager/dnsmasq.d \
39 "$@"
40
41rm /etc/dbus-1/system.d/$SNAP_APP.conf
042
=== added file 'snappy/bin/networkmanager'
--- snappy/bin/networkmanager 1970-01-01 00:00:00 +0000
+++ snappy/bin/networkmanager 2016-03-30 06:28:14 +0000
@@ -0,0 +1,37 @@
1#!/bin/sh
2
3set -e
4set -x
5
6# Copy in our dbus policy until snappy has support for this
7cp $SNAP_APP_PATH/etc/dbus-1/system.d/org.freedesktop.NetworkManager.conf \
8 /etc/dbus-1/system.d/$SNAP_APP.conf
9
10# Create all necessary directories we need at runtime
11mkdir -p $SNAP_APP_DATA_PATH/etc/NetworkManager/system-connections
12mkdir -p $SNAP_APP_DATA_PATH/run/sendsigs.omit.d
13mkdir -p $SNAP_APP_DATA_PATH/var/run
14mkdir -p $SNAP_APP_DATA_PATH/var/lib
15
16TRIPLET=
17
18case $SNAP_ARCH in
19 amd64)
20 TRIPLET=x86_64-linux-gnu
21 ;;
22 *)
23 echo "ERROR: Architecture $SNAP_ARCH isn't supported by this snap"
24 exit 1
25esac
26
27# TODO drop DEBUG
28LD_LIBRARY_PATH="$SNAP_APP_PATH/usr/lib/$TRIPLET:$SNAP_APP_PATH/usr/lib:$SNAP_APP_PATH/usr/lib/$TRIPLET/NetworkManager:$SNAP_APP_PATH/usr/lib/NetworkManager:$SNAP_APP_PATH/lib/$TRIPLET" \
29$SNAP_APP_PATH/usr/sbin/NetworkManager \
30 --state-file=$SNAP_APP_DATA_PATH/NetworkManager.state \
31 --config-dir=$SNAP_APP_PATH/etc/NetworkManager \
32 --config=$SNAP_APP_PATH/etc/NetworkManager/NetworkManager.conf \
33 --log-level=DEBUG \
34 --no-daemon \
35 "$@"
36
37rm /etc/dbus-1/system.d/$SNAP_APP.conf
038
=== added directory 'snappy/conf'
=== added file 'snappy/conf/NetworkManager.conf'
--- snappy/conf/NetworkManager.conf 1970-01-01 00:00:00 +0000
+++ snappy/conf/NetworkManager.conf 2016-03-30 06:28:14 +0000
@@ -0,0 +1,6 @@
1[main]
2plugins=ifupdown,keyfile
3dns=dnsmasq
4
5[ifupdown]
6managed=false
07
=== added file 'snappy/conf/dnsmasq-dbus.conf'
--- snappy/conf/dnsmasq-dbus.conf 1970-01-01 00:00:00 +0000
+++ snappy/conf/dnsmasq-dbus.conf 2016-03-30 06:28:14 +0000
@@ -0,0 +1,10 @@
1<!DOCTYPE busconfig PUBLIC
2 "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
3 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
4<busconfig>
5 <policy user="root">
6 <allow own="org.freedesktop.NetworkManager.dnsmasq"/>
7 <allow send_destination="org.freedesktop.NetworkManager.dnsmasq"/>
8 </policy>
9</busconfig>
10
011
=== added file 'snappy/conf/org.freedesktop.NetworkManager.conf'
--- snappy/conf/org.freedesktop.NetworkManager.conf 1970-01-01 00:00:00 +0000
+++ snappy/conf/org.freedesktop.NetworkManager.conf 2016-03-30 06:28:14 +0000
@@ -0,0 +1,152 @@
1<!DOCTYPE busconfig PUBLIC
2 "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
3 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
4<busconfig>
5 <policy user="root">
6 <allow own="org.freedesktop.NetworkManager"/>
7 <allow send_destination="org.freedesktop.NetworkManager"/>
8
9 <allow send_destination="org.freedesktop.NetworkManager"
10 send_interface="org.freedesktop.NetworkManager.PPP"/>
11
12 <allow send_interface="org.freedesktop.NetworkManager.SecretAgent"/>
13
14 <!-- Allow NM to talk to known VPN plugins; due to a bug in
15 the D-Bus daemon, when a plugin is installed and the user
16 immediately tries to use it, the VPN plugin's rules aren't
17 always loaded into dbus-daemon. Those rules allow NM to
18 talk to the plugin. Oops. Work around that by explicitly
19 allowing NM to talk to VPN plugins here.
20 -->
21 <allow send_destination="org.freedesktop.NetworkManager.openconnect"/>
22 <allow send_destination="org.freedesktop.NetworkManager.openswan"/>
23 <allow send_destination="org.freedesktop.NetworkManager.openvpn"/>
24 <allow send_destination="org.freedesktop.NetworkManager.pptp"/>
25 <allow send_destination="org.freedesktop.NetworkManager.vpnc"/>
26 <allow send_destination="org.freedesktop.NetworkManager.ssh"/>
27 <allow send_destination="org.freedesktop.NetworkManager.iodine"/>
28
29 <!-- Allow the custom name for the dnsmasq instance spawned by NM
30 from the dns dnsmasq plugin to own it's dbus name, and for
31 messages to be sent to it.
32 -->
33 <allow own="org.freedesktop.NetworkManager.dnsmasq"/>
34 <allow send_destination="org.freedesktop.NetworkManager.dnsmasq"/>
35 </policy>
36 <policy user="whoopsie">
37 <allow send_destination="org.freedesktop.NetworkManager"/>
38
39 <allow send_destination="org.freedesktop.NetworkManager"
40 send_interface="org.freedesktop.DBus.Introspectable"/>
41
42 <allow send_destination="org.freedesktop.NetworkManager"
43 send_interface="org.freedesktop.DBus.Properties"/>
44
45 <allow send_destination="org.freedesktop.NetworkManager"
46 send_interface="org.freedesktop.NetworkManager"/>
47
48 <allow send_destination="org.freedesktop.NetworkManager"
49 send_interface="org.freedesktop.NetworkManager.Connection.Active"/>
50
51 <allow send_destination="org.freedesktop.NetworkManager"
52 send_interface="org.freedesktop.NetworkManager.Device"/>
53 </policy>
54 <policy context="default">
55 <deny own="org.freedesktop.NetworkManager"/>
56
57 <deny send_destination="org.freedesktop.NetworkManager"/>
58
59 <!-- Basic D-Bus API stuff -->
60 <allow send_destination="org.freedesktop.NetworkManager"
61 send_interface="org.freedesktop.DBus.Introspectable"/>
62 <allow send_destination="org.freedesktop.NetworkManager"
63 send_interface="org.freedesktop.DBus.Properties"/>
64
65 <!-- Devices (read-only properties, no methods) -->
66 <allow send_destination="org.freedesktop.NetworkManager"
67 send_interface="org.freedesktop.NetworkManager.Device.Adsl"/>
68 <allow send_destination="org.freedesktop.NetworkManager"
69 send_interface="org.freedesktop.NetworkManager.Device.Bond"/>
70 <allow send_destination="org.freedesktop.NetworkManager"
71 send_interface="org.freedesktop.NetworkManager.Device.Bridge"/>
72 <allow send_destination="org.freedesktop.NetworkManager"
73 send_interface="org.freedesktop.NetworkManager.Device.Bluetooth"/>
74 <allow send_destination="org.freedesktop.NetworkManager"
75 send_interface="org.freedesktop.NetworkManager.Device.Wired"/>
76 <allow send_destination="org.freedesktop.NetworkManager"
77 send_interface="org.freedesktop.NetworkManager.Device.Generic"/>
78 <allow send_destination="org.freedesktop.NetworkManager"
79 send_interface="org.freedesktop.NetworkManager.Device.Gre"/>
80 <allow send_destination="org.freedesktop.NetworkManager"
81 send_interface="org.freedesktop.NetworkManager.Device.Infiniband"/>
82 <allow send_destination="org.freedesktop.NetworkManager"
83 send_interface="org.freedesktop.NetworkManager.Device.Macvlan"/>
84 <allow send_destination="org.freedesktop.NetworkManager"
85 send_interface="org.freedesktop.NetworkManager.Device.Modem"/>
86 <allow send_destination="org.freedesktop.NetworkManager"
87 send_interface="org.freedesktop.NetworkManager.Device.OlpcMesh"/>
88 <allow send_destination="org.freedesktop.NetworkManager"
89 send_interface="org.freedesktop.NetworkManager.Device.Team"/>
90 <allow send_destination="org.freedesktop.NetworkManager"
91 send_interface="org.freedesktop.NetworkManager.Device.Tun"/>
92 <allow send_destination="org.freedesktop.NetworkManager"
93 send_interface="org.freedesktop.NetworkManager.Device.Veth"/>
94 <allow send_destination="org.freedesktop.NetworkManager"
95 send_interface="org.freedesktop.NetworkManager.Device.Vlan"/>
96 <allow send_destination="org.freedesktop.NetworkManager"
97 send_interface="org.freedesktop.NetworkManager.WiMax.Nsp"/>
98 <allow send_destination="org.freedesktop.NetworkManager"
99 send_interface="org.freedesktop.NetworkManager.AccessPoint"/>
100
101 <!-- Devices (read-only, no security required) -->
102 <allow send_destination="org.freedesktop.NetworkManager"
103 send_interface="org.freedesktop.NetworkManager.Device.WiMax"/>
104
105 <!-- Devices (read/write, secured with PolicyKit) -->
106 <allow send_destination="org.freedesktop.NetworkManager"
107 send_interface="org.freedesktop.NetworkManager.Device.Wireless"/>
108 <allow send_destination="org.freedesktop.NetworkManager"
109 send_interface="org.freedesktop.NetworkManager.Device"/>
110
111 <!-- Core stuff (read-only properties, no methods) -->
112 <allow send_destination="org.freedesktop.NetworkManager"
113 send_interface="org.freedesktop.NetworkManager.Connection.Active"/>
114 <allow send_destination="org.freedesktop.NetworkManager"
115 send_interface="org.freedesktop.NetworkManager.DHCP4Config"/>
116 <allow send_destination="org.freedesktop.NetworkManager"
117 send_interface="org.freedesktop.NetworkManager.DHCP6Config"/>
118 <allow send_destination="org.freedesktop.NetworkManager"
119 send_interface="org.freedesktop.NetworkManager.IP4Config"/>
120 <allow send_destination="org.freedesktop.NetworkManager"
121 send_interface="org.freedesktop.NetworkManager.IP6Config"/>
122 <allow send_destination="org.freedesktop.NetworkManager"
123 send_interface="org.freedesktop.NetworkManager.VPN.Connection"/>
124
125 <!-- Core stuff (read/write, secured with PolicyKit) -->
126 <allow send_destination="org.freedesktop.NetworkManager"
127 send_interface="org.freedesktop.NetworkManager"/>
128 <allow send_destination="org.freedesktop.NetworkManager"
129 send_interface="org.freedesktop.NetworkManager.Settings"/>
130 <allow send_destination="org.freedesktop.NetworkManager"
131 send_interface="org.freedesktop.NetworkManager.Settings.Connection"/>
132
133 <!-- Agents; secured with PolicyKit. Any process can talk to
134 the AgentManager API, but only NetworkManager can talk
135 to the agents themselves. -->
136 <allow send_destination="org.freedesktop.NetworkManager"
137 send_interface="org.freedesktop.NetworkManager.AgentManager"/>
138 <deny send_interface="org.freedesktop.NetworkManager.SecretAgent"/>
139
140 <!-- Root-only functions -->
141 <deny send_interface="org.freedesktop.NetworkManager" send_member="SetLogging"/>
142 <deny send_interface="org.freedesktop.NetworkManager" send_member="Sleep"/>
143 <deny send_interface="org.freedesktop.NetworkManager.Settings" send_member="LoadConnections"/>
144 <deny send_interface="org.freedesktop.NetworkManager.Settings" send_member="ReloadConnections"/>
145 <deny send_interface="org.freedesktop.NetworkManager.VPN.Plugin"/>
146 <deny send_interface="org.freedesktop.NetworkManager.PPP"/>
147
148 <deny own="org.freedesktop.NetworkManager.dnsmasq"/>
149 <deny send_destination="org.freedesktop.NetworkManager.dnsmasq"/>
150 </policy>
151</busconfig>
152
0153
=== added file 'snappy/icon.svg'
--- snappy/icon.svg 1970-01-01 00:00:00 +0000
+++ snappy/icon.svg 2016-03-30 06:28:14 +0000
@@ -0,0 +1,2466 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Created with Inkscape (http://www.inkscape.org/) -->
3<svg
4 xmlns:dc="http://purl.org/dc/elements/1.1/"
5 xmlns:cc="http://web.resource.org/cc/"
6 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
7 xmlns:svg="http://www.w3.org/2000/svg"
8 xmlns="http://www.w3.org/2000/svg"
9 xmlns:xlink="http://www.w3.org/1999/xlink"
10 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
11 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
12 width="48.000000px"
13 height="48.000000px"
14 id="svg2327"
15 sodipodi:version="0.32"
16 inkscape:version="0.45"
17 sodipodi:docbase="/home/dobey/Projects/gnome-icon-theme/scalable/status"
18 sodipodi:docname="network-idle.svg"
19 inkscape:output_extension="org.inkscape.output.svg.inkscape">
20 <defs
21 id="defs3">
22 <linearGradient
23 id="linearGradient7670">
24 <stop
25 style="stop-color:#3465a4;stop-opacity:1"
26 offset="0"
27 id="stop7672" />
28 <stop
29 style="stop-color:#204a87;stop-opacity:1"
30 offset="1"
31 id="stop7674" />
32 </linearGradient>
33 <linearGradient
34 inkscape:collect="always"
35 id="linearGradient2307">
36 <stop
37 style="stop-color:#5a7aa4;stop-opacity:1;"
38 offset="0"
39 id="stop2309" />
40 <stop
41 style="stop-color:#5a7aa4;stop-opacity:0;"
42 offset="1"
43 id="stop2311" />
44 </linearGradient>
45 <linearGradient
46 id="linearGradient11400">
47 <stop
48 id="stop11402"
49 offset="0"
50 style="stop-color:#000000;stop-opacity:1;" />
51 <stop
52 id="stop11404"
53 offset="1"
54 style="stop-color:#000000;stop-opacity:0;" />
55 </linearGradient>
56 <linearGradient
57 id="linearGradient6240"
58 inkscape:collect="always">
59 <stop
60 id="stop6242"
61 offset="0"
62 style="stop-color:#ffffff;stop-opacity:1;" />
63 <stop
64 id="stop6244"
65 offset="1"
66 style="stop-color:#ffffff;stop-opacity:0;" />
67 </linearGradient>
68 <linearGradient
69 id="linearGradient5137">
70 <stop
71 id="stop5139"
72 offset="0"
73 style="stop-color:#eeeeec;stop-opacity:1;" />
74 <stop
75 id="stop5141"
76 offset="1"
77 style="stop-color:#e6e6e3;stop-opacity:1;" />
78 </linearGradient>
79 <linearGradient
80 id="linearGradient5225"
81 inkscape:collect="always">
82 <stop
83 id="stop5227"
84 offset="0"
85 style="stop-color:black;stop-opacity:1;" />
86 <stop
87 id="stop5229"
88 offset="1"
89 style="stop-color:black;stop-opacity:0;" />
90 </linearGradient>
91 <linearGradient
92 id="linearGradient3899"
93 inkscape:collect="always">
94 <stop
95 id="stop3901"
96 offset="0"
97 style="stop-color:#eeeeec" />
98 <stop
99 id="stop3903"
100 offset="1"
101 style="stop-color:#d3d7cf" />
102 </linearGradient>
103 <linearGradient
104 id="linearGradient3907">
105 <stop
106 id="stop3909"
107 offset="0"
108 style="stop-color:#ffffff;stop-opacity:1;" />
109 <stop
110 id="stop3911"
111 offset="1"
112 style="stop-color:#ffffff;stop-opacity:0;" />
113 </linearGradient>
114 <linearGradient
115 id="linearGradient4196">
116 <stop
117 id="stop4198"
118 offset="0"
119 style="stop-color:black;stop-opacity:1;" />
120 <stop
121 id="stop4200"
122 offset="1"
123 style="stop-color:black;stop-opacity:0;" />
124 </linearGradient>
125 <linearGradient
126 inkscape:collect="always"
127 id="linearGradient5060">
128 <stop
129 style="stop-color:black;stop-opacity:1;"
130 offset="0"
131 id="stop5062" />
132 <stop
133 style="stop-color:black;stop-opacity:0;"
134 offset="1"
135 id="stop5064" />
136 </linearGradient>
137 <radialGradient
138 r="19.5"
139 fy="47.045319"
140 fx="20.913568"
141 cy="47.045319"
142 cx="20.913568"
143 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)"
144 gradientUnits="userSpaceOnUse"
145 id="radialGradient3304"
146 xlink:href="#linearGradient3907"
147 inkscape:collect="always" />
148 <radialGradient
149 r="19.5"
150 fy="47.045319"
151 fx="20.913568"
152 cy="47.045319"
153 cx="20.913568"
154 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)"
155 gradientUnits="userSpaceOnUse"
156 id="radialGradient3302"
157 xlink:href="#linearGradient3907"
158 inkscape:collect="always" />
159 <radialGradient
160 r="19.5"
161 fy="47.045319"
162 fx="20.913568"
163 cy="47.045319"
164 cx="20.913568"
165 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)"
166 gradientUnits="userSpaceOnUse"
167 id="radialGradient3300"
168 xlink:href="#linearGradient3907"
169 inkscape:collect="always" />
170 <radialGradient
171 r="19.5"
172 fy="47.045319"
173 fx="20.913568"
174 cy="47.045319"
175 cx="20.913568"
176 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)"
177 gradientUnits="userSpaceOnUse"
178 id="radialGradient3298"
179 xlink:href="#linearGradient3907"
180 inkscape:collect="always" />
181 <radialGradient
182 r="19.5"
183 fy="47.045319"
184 fx="20.913568"
185 cy="47.045319"
186 cx="20.913568"
187 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)"
188 gradientUnits="userSpaceOnUse"
189 id="radialGradient3296"
190 xlink:href="#linearGradient3907"
191 inkscape:collect="always" />
192 <radialGradient
193 r="19.5"
194 fy="47.045319"
195 fx="20.913568"
196 cy="47.045319"
197 cx="20.913568"
198 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)"
199 gradientUnits="userSpaceOnUse"
200 id="radialGradient3294"
201 xlink:href="#linearGradient3907"
202 inkscape:collect="always" />
203 <radialGradient
204 r="19.5"
205 fy="47.045319"
206 fx="20.913568"
207 cy="47.045319"
208 cx="20.913568"
209 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)"
210 gradientUnits="userSpaceOnUse"
211 id="radialGradient3292"
212 xlink:href="#linearGradient3907"
213 inkscape:collect="always" />
214 <radialGradient
215 r="19.5"
216 fy="47.045319"
217 fx="20.913568"
218 cy="47.045319"
219 cx="20.913568"
220 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)"
221 gradientUnits="userSpaceOnUse"
222 id="radialGradient3276"
223 xlink:href="#linearGradient3907"
224 inkscape:collect="always" />
225 <radialGradient
226 r="19.5"
227 fy="47.045319"
228 fx="20.913568"
229 cy="47.045319"
230 cx="20.913568"
231 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)"
232 gradientUnits="userSpaceOnUse"
233 id="radialGradient3274"
234 xlink:href="#linearGradient3907"
235 inkscape:collect="always" />
236 <radialGradient
237 r="19.5"
238 fy="47.045319"
239 fx="20.913568"
240 cy="47.045319"
241 cx="20.913568"
242 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)"
243 gradientUnits="userSpaceOnUse"
244 id="radialGradient3272"
245 xlink:href="#linearGradient3907"
246 inkscape:collect="always" />
247 <radialGradient
248 r="19.5"
249 fy="47.045319"
250 fx="20.913568"
251 cy="47.045319"
252 cx="20.913568"
253 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)"
254 gradientUnits="userSpaceOnUse"
255 id="radialGradient3270"
256 xlink:href="#linearGradient3907"
257 inkscape:collect="always" />
258 <radialGradient
259 r="19.5"
260 fy="47.045319"
261 fx="20.913568"
262 cy="47.045319"
263 cx="20.913568"
264 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)"
265 gradientUnits="userSpaceOnUse"
266 id="radialGradient3268"
267 xlink:href="#linearGradient3907"
268 inkscape:collect="always" />
269 <radialGradient
270 r="19.5"
271 fy="47.045319"
272 fx="20.913568"
273 cy="47.045319"
274 cx="20.913568"
275 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)"
276 gradientUnits="userSpaceOnUse"
277 id="radialGradient3266"
278 xlink:href="#linearGradient3907"
279 inkscape:collect="always" />
280 <radialGradient
281 r="19.5"
282 fy="47.045319"
283 fx="20.913568"
284 cy="47.045319"
285 cx="20.913568"
286 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)"
287 gradientUnits="userSpaceOnUse"
288 id="radialGradient3264"
289 xlink:href="#linearGradient3907"
290 inkscape:collect="always" />
291 <radialGradient
292 r="19.5"
293 fy="47.045319"
294 fx="20.913568"
295 cy="47.045319"
296 cx="20.913568"
297 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
298 gradientUnits="userSpaceOnUse"
299 id="radialGradient3155"
300 xlink:href="#linearGradient3907"
301 inkscape:collect="always" />
302 <radialGradient
303 r="19.5"
304 fy="47.045319"
305 fx="20.913568"
306 cy="47.045319"
307 cx="20.913568"
308 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
309 gradientUnits="userSpaceOnUse"
310 id="radialGradient3158"
311 xlink:href="#linearGradient3907"
312 inkscape:collect="always" />
313 <radialGradient
314 r="19.5"
315 fy="47.045319"
316 fx="20.913568"
317 cy="47.045319"
318 cx="20.913568"
319 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
320 gradientUnits="userSpaceOnUse"
321 id="radialGradient3161"
322 xlink:href="#linearGradient3907"
323 inkscape:collect="always" />
324 <radialGradient
325 r="19.5"
326 fy="47.045319"
327 fx="20.913568"
328 cy="47.045319"
329 cx="20.913568"
330 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
331 gradientUnits="userSpaceOnUse"
332 id="radialGradient3164"
333 xlink:href="#linearGradient3907"
334 inkscape:collect="always" />
335 <radialGradient
336 r="19.5"
337 fy="47.045319"
338 fx="20.913568"
339 cy="47.045319"
340 cx="20.913568"
341 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
342 gradientUnits="userSpaceOnUse"
343 id="radialGradient3167"
344 xlink:href="#linearGradient3907"
345 inkscape:collect="always" />
346 <radialGradient
347 r="19.5"
348 fy="47.045319"
349 fx="20.913568"
350 cy="47.045319"
351 cx="20.913568"
352 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
353 gradientUnits="userSpaceOnUse"
354 id="radialGradient3170"
355 xlink:href="#linearGradient3907"
356 inkscape:collect="always" />
357 <radialGradient
358 r="19.5"
359 fy="47.045319"
360 fx="20.913568"
361 cy="47.045319"
362 cx="20.913568"
363 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
364 gradientUnits="userSpaceOnUse"
365 id="radialGradient3173"
366 xlink:href="#linearGradient3907"
367 inkscape:collect="always" />
368 <radialGradient
369 r="19.5"
370 fy="47.045319"
371 fx="20.913568"
372 cy="47.045319"
373 cx="20.913568"
374 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
375 gradientUnits="userSpaceOnUse"
376 id="radialGradient3176"
377 xlink:href="#linearGradient3907"
378 inkscape:collect="always" />
379 <radialGradient
380 r="19.5"
381 fy="47.045319"
382 fx="20.913568"
383 cy="47.045319"
384 cx="20.913568"
385 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
386 gradientUnits="userSpaceOnUse"
387 id="radialGradient3182"
388 xlink:href="#linearGradient3907"
389 inkscape:collect="always" />
390 <radialGradient
391 r="19.5"
392 fy="47.045319"
393 fx="20.913568"
394 cy="47.045319"
395 cx="20.913568"
396 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
397 gradientUnits="userSpaceOnUse"
398 id="radialGradient3185"
399 xlink:href="#linearGradient3907"
400 inkscape:collect="always" />
401 <radialGradient
402 r="19.5"
403 fy="47.045319"
404 fx="20.913568"
405 cy="47.045319"
406 cx="20.913568"
407 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
408 gradientUnits="userSpaceOnUse"
409 id="radialGradient3188"
410 xlink:href="#linearGradient3907"
411 inkscape:collect="always" />
412 <radialGradient
413 r="19.5"
414 fy="47.045319"
415 fx="20.913568"
416 cy="47.045319"
417 cx="20.913568"
418 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
419 gradientUnits="userSpaceOnUse"
420 id="radialGradient3191"
421 xlink:href="#linearGradient3907"
422 inkscape:collect="always" />
423 <radialGradient
424 r="19.5"
425 fy="47.045319"
426 fx="20.913568"
427 cy="47.045319"
428 cx="20.913568"
429 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
430 gradientUnits="userSpaceOnUse"
431 id="radialGradient3194"
432 xlink:href="#linearGradient3907"
433 inkscape:collect="always" />
434 <radialGradient
435 r="19.5"
436 fy="47.045319"
437 fx="20.913568"
438 cy="47.045319"
439 cx="20.913568"
440 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
441 gradientUnits="userSpaceOnUse"
442 id="radialGradient3197"
443 xlink:href="#linearGradient3907"
444 inkscape:collect="always" />
445 <radialGradient
446 r="19.5"
447 fy="47.045319"
448 fx="20.913568"
449 cy="47.045319"
450 cx="20.913568"
451 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
452 gradientUnits="userSpaceOnUse"
453 id="radialGradient3200"
454 xlink:href="#linearGradient3907"
455 inkscape:collect="always" />
456 <radialGradient
457 r="19.5"
458 fy="47.045319"
459 fx="20.913568"
460 cy="47.045319"
461 cx="20.913568"
462 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
463 gradientUnits="userSpaceOnUse"
464 id="radialGradient3203"
465 xlink:href="#linearGradient3907"
466 inkscape:collect="always" />
467 <radialGradient
468 r="19.5"
469 fy="47.045319"
470 fx="20.913568"
471 cy="47.045319"
472 cx="20.913568"
473 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
474 gradientUnits="userSpaceOnUse"
475 id="radialGradient3206"
476 xlink:href="#linearGradient3907"
477 inkscape:collect="always" />
478 <radialGradient
479 r="19.5"
480 fy="47.045319"
481 fx="20.913568"
482 cy="47.045319"
483 cx="20.913568"
484 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
485 gradientUnits="userSpaceOnUse"
486 id="radialGradient3209"
487 xlink:href="#linearGradient3907"
488 inkscape:collect="always" />
489 <radialGradient
490 r="19.5"
491 fy="47.045319"
492 fx="20.913568"
493 cy="47.045319"
494 cx="20.913568"
495 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
496 gradientUnits="userSpaceOnUse"
497 id="radialGradient3212"
498 xlink:href="#linearGradient3907"
499 inkscape:collect="always" />
500 <radialGradient
501 r="19.5"
502 fy="47.045319"
503 fx="20.913568"
504 cy="47.045319"
505 cx="20.913568"
506 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
507 gradientUnits="userSpaceOnUse"
508 id="radialGradient3215"
509 xlink:href="#linearGradient3907"
510 inkscape:collect="always" />
511 <radialGradient
512 r="19.5"
513 fy="47.045319"
514 fx="20.913568"
515 cy="47.045319"
516 cx="20.913568"
517 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
518 gradientUnits="userSpaceOnUse"
519 id="radialGradient3218"
520 xlink:href="#linearGradient3907"
521 inkscape:collect="always" />
522 <radialGradient
523 r="19.5"
524 fy="47.045319"
525 fx="20.913568"
526 cy="47.045319"
527 cx="20.913568"
528 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
529 gradientUnits="userSpaceOnUse"
530 id="radialGradient3221"
531 xlink:href="#linearGradient3907"
532 inkscape:collect="always" />
533 <radialGradient
534 r="19.5"
535 fy="47.045319"
536 fx="20.913568"
537 cy="47.045319"
538 cx="20.913568"
539 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
540 gradientUnits="userSpaceOnUse"
541 id="radialGradient3224"
542 xlink:href="#linearGradient3907"
543 inkscape:collect="always" />
544 <radialGradient
545 r="19.5"
546 fy="47.045319"
547 fx="20.913568"
548 cy="47.045319"
549 cx="20.913568"
550 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
551 gradientUnits="userSpaceOnUse"
552 id="radialGradient3230"
553 xlink:href="#linearGradient3907"
554 inkscape:collect="always" />
555 <radialGradient
556 r="19.5"
557 fy="47.045319"
558 fx="20.913568"
559 cy="47.045319"
560 cx="20.913568"
561 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
562 gradientUnits="userSpaceOnUse"
563 id="radialGradient3233"
564 xlink:href="#linearGradient3907"
565 inkscape:collect="always" />
566 <radialGradient
567 r="19.5"
568 fy="47.045319"
569 fx="20.913568"
570 cy="47.045319"
571 cx="20.913568"
572 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
573 gradientUnits="userSpaceOnUse"
574 id="radialGradient3236"
575 xlink:href="#linearGradient3907"
576 inkscape:collect="always" />
577 <radialGradient
578 r="19.5"
579 fy="47.045319"
580 fx="20.913568"
581 cy="47.045319"
582 cx="20.913568"
583 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
584 gradientUnits="userSpaceOnUse"
585 id="radialGradient3239"
586 xlink:href="#linearGradient3907"
587 inkscape:collect="always" />
588 <radialGradient
589 r="19.5"
590 fy="47.045319"
591 fx="20.913568"
592 cy="47.045319"
593 cx="20.913568"
594 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
595 gradientUnits="userSpaceOnUse"
596 id="radialGradient3242"
597 xlink:href="#linearGradient3907"
598 inkscape:collect="always" />
599 <radialGradient
600 r="19.5"
601 fy="47.045319"
602 fx="20.913568"
603 cy="47.045319"
604 cx="20.913568"
605 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
606 gradientUnits="userSpaceOnUse"
607 id="radialGradient3245"
608 xlink:href="#linearGradient3907"
609 inkscape:collect="always" />
610 <radialGradient
611 r="19.5"
612 fy="47.045319"
613 fx="20.913568"
614 cy="47.045319"
615 cx="20.913568"
616 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
617 gradientUnits="userSpaceOnUse"
618 id="radialGradient3248"
619 xlink:href="#linearGradient3907"
620 inkscape:collect="always" />
621 <linearGradient
622 gradientTransform="matrix(0.647995,0,0,0.707655,0.734249,-1.447571)"
623 gradientUnits="userSpaceOnUse"
624 y2="37.9375"
625 x2="29.125"
626 y1="46.029419"
627 x1="29.5"
628 id="linearGradient3905"
629 xlink:href="#linearGradient3899"
630 inkscape:collect="always" />
631 <radialGradient
632 r="117.14286"
633 fy="486.64789"
634 fx="605.71429"
635 cy="486.64789"
636 cx="605.71429"
637 gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
638 gradientUnits="userSpaceOnUse"
639 id="radialGradient2309"
640 xlink:href="#linearGradient5060"
641 inkscape:collect="always" />
642 <radialGradient
643 r="117.14286"
644 fy="486.64789"
645 fx="605.71429"
646 cy="486.64789"
647 cx="605.71429"
648 gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
649 gradientUnits="userSpaceOnUse"
650 id="radialGradient2311"
651 xlink:href="#linearGradient5060"
652 inkscape:collect="always" />
653 <linearGradient
654 gradientTransform="matrix(0.664512,0,0,0.651253,9.569506e-2,-1.210023)"
655 gradientUnits="userSpaceOnUse"
656 y2="26.039215"
657 x2="20.156862"
658 y1="5.0996137"
659 x1="20.156862"
660 id="linearGradient6246"
661 xlink:href="#linearGradient6240"
662 inkscape:collect="always" />
663 <radialGradient
664 gradientUnits="userSpaceOnUse"
665 gradientTransform="matrix(0.836315,0,0,0.514216,-4.024721,-3.259613e-2)"
666 r="19.00016"
667 fy="32.997028"
668 fx="24.006104"
669 cy="32.997028"
670 cx="24.006104"
671 id="radialGradient5239"
672 xlink:href="#linearGradient7670"
673 inkscape:collect="always" />
674 <linearGradient
675 gradientTransform="matrix(0.648248,0,0,0.644253,0.433189,-0.740991)"
676 y2="38.876041"
677 x2="39.904388"
678 y1="6.3760414"
679 x1="17.247635"
680 gradientUnits="userSpaceOnUse"
681 id="linearGradient5147"
682 xlink:href="#linearGradient5137"
683 inkscape:collect="always" />
684 <linearGradient
685 y2="43.82579"
686 x2="31.86105"
687 y1="37.842293"
688 x1="31.743324"
689 gradientTransform="matrix(1,0,0,0.992781,0,-2.718035)"
690 gradientUnits="userSpaceOnUse"
691 id="linearGradient2308"
692 xlink:href="#linearGradient5137"
693 inkscape:collect="always" />
694 <linearGradient
695 y2="40.219608"
696 x2="23.529411"
697 y1="34.572548"
698 x1="23.154902"
699 gradientTransform="matrix(1.004187,0,0,1,-0.12454,-3.011765)"
700 gradientUnits="userSpaceOnUse"
701 id="linearGradient2310"
702 xlink:href="#linearGradient11400"
703 inkscape:collect="always" />
704 <linearGradient
705 gradientTransform="matrix(0.654255,0,0,0.654672,-0.481383,0.690637)"
706 gradientUnits="userSpaceOnUse"
707 y2="33.637787"
708 x2="37.295498"
709 y1="38.267769"
710 x1="37.484837"
711 id="linearGradient4202"
712 xlink:href="#linearGradient4196"
713 inkscape:collect="always" />
714 <radialGradient
715 r="23.75956"
716 fy="42.6875"
717 fx="23.9375"
718 cy="42.6875"
719 cx="23.9375"
720 gradientTransform="matrix(1,0,0,0.24763,0,32.1168)"
721 gradientUnits="userSpaceOnUse"
722 id="radialGradient2313"
723 xlink:href="#linearGradient5225"
724 inkscape:collect="always" />
725 <linearGradient
726 inkscape:collect="always"
727 xlink:href="#linearGradient2307"
728 id="linearGradient5478"
729 gradientTransform="scale(1.673466,0.597562)"
730 x1="-931.7503"
731 y1="148.07116"
732 x2="-131.23588"
733 y2="148.07116"
734 gradientUnits="userSpaceOnUse" />
735 <radialGradient
736 inkscape:collect="always"
737 xlink:href="#linearGradient5225"
738 id="radialGradient5620"
739 gradientUnits="userSpaceOnUse"
740 gradientTransform="matrix(1,0,0,0.24763,0,32.1168)"
741 cx="23.9375"
742 cy="42.6875"
743 fx="23.9375"
744 fy="42.6875"
745 r="23.75956" />
746 <linearGradient
747 inkscape:collect="always"
748 xlink:href="#linearGradient4196"
749 id="linearGradient5622"
750 gradientUnits="userSpaceOnUse"
751 gradientTransform="matrix(0.654255,0,0,0.654672,-0.481383,0.690637)"
752 x1="37.484837"
753 y1="38.267769"
754 x2="37.295498"
755 y2="33.637787" />
756 <linearGradient
757 inkscape:collect="always"
758 xlink:href="#linearGradient5137"
759 id="linearGradient5624"
760 gradientUnits="userSpaceOnUse"
761 gradientTransform="matrix(1,0,0,0.992781,0,-2.718035)"
762 x1="31.743324"
763 y1="37.842293"
764 x2="31.86105"
765 y2="43.82579" />
766 <linearGradient
767 inkscape:collect="always"
768 xlink:href="#linearGradient11400"
769 id="linearGradient5626"
770 gradientUnits="userSpaceOnUse"
771 gradientTransform="matrix(1.004187,0,0,1,-0.12454,-3.011765)"
772 x1="23.154902"
773 y1="34.572548"
774 x2="23.529411"
775 y2="40.219608" />
776 <linearGradient
777 inkscape:collect="always"
778 xlink:href="#linearGradient5137"
779 id="linearGradient5628"
780 gradientUnits="userSpaceOnUse"
781 gradientTransform="matrix(0.648248,0,0,0.644253,0.433189,-0.740991)"
782 x1="17.247635"
783 y1="6.3760414"
784 x2="39.904388"
785 y2="38.876041" />
786 <radialGradient
787 inkscape:collect="always"
788 xlink:href="#linearGradient7670"
789 id="radialGradient5630"
790 gradientUnits="userSpaceOnUse"
791 gradientTransform="matrix(0.836315,0,0,0.514216,-4.024721,-3.259613e-2)"
792 cx="24.006104"
793 cy="32.997028"
794 fx="24.006104"
795 fy="32.997028"
796 r="19.00016" />
797 <linearGradient
798 inkscape:collect="always"
799 xlink:href="#linearGradient6240"
800 id="linearGradient5632"
801 gradientUnits="userSpaceOnUse"
802 gradientTransform="matrix(0.664512,0,0,0.651253,9.569506e-2,-1.210023)"
803 x1="20.156862"
804 y1="5.0996137"
805 x2="20.156862"
806 y2="26.039215" />
807 <linearGradient
808 inkscape:collect="always"
809 xlink:href="#linearGradient2307"
810 id="linearGradient5634"
811 gradientUnits="userSpaceOnUse"
812 gradientTransform="scale(1.673466,0.597562)"
813 x1="-931.7503"
814 y1="148.07116"
815 x2="-131.23588"
816 y2="148.07116" />
817 <radialGradient
818 inkscape:collect="always"
819 xlink:href="#linearGradient5060"
820 id="radialGradient5636"
821 gradientUnits="userSpaceOnUse"
822 gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
823 cx="605.71429"
824 cy="486.64789"
825 fx="605.71429"
826 fy="486.64789"
827 r="117.14286" />
828 <radialGradient
829 inkscape:collect="always"
830 xlink:href="#linearGradient5060"
831 id="radialGradient5638"
832 gradientUnits="userSpaceOnUse"
833 gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
834 cx="605.71429"
835 cy="486.64789"
836 fx="605.71429"
837 fy="486.64789"
838 r="117.14286" />
839 <linearGradient
840 inkscape:collect="always"
841 xlink:href="#linearGradient3899"
842 id="linearGradient5640"
843 gradientUnits="userSpaceOnUse"
844 gradientTransform="matrix(0.647995,0,0,0.707655,0.734249,-1.447571)"
845 x1="29.5"
846 y1="46.029419"
847 x2="29.125"
848 y2="37.9375" />
849 <radialGradient
850 inkscape:collect="always"
851 xlink:href="#linearGradient3907"
852 id="radialGradient5642"
853 gradientUnits="userSpaceOnUse"
854 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
855 cx="20.913568"
856 cy="47.045319"
857 fx="20.913568"
858 fy="47.045319"
859 r="19.5" />
860 <radialGradient
861 inkscape:collect="always"
862 xlink:href="#linearGradient3907"
863 id="radialGradient5644"
864 gradientUnits="userSpaceOnUse"
865 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
866 cx="20.913568"
867 cy="47.045319"
868 fx="20.913568"
869 fy="47.045319"
870 r="19.5" />
871 <radialGradient
872 inkscape:collect="always"
873 xlink:href="#linearGradient3907"
874 id="radialGradient5646"
875 gradientUnits="userSpaceOnUse"
876 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
877 cx="20.913568"
878 cy="47.045319"
879 fx="20.913568"
880 fy="47.045319"
881 r="19.5" />
882 <radialGradient
883 inkscape:collect="always"
884 xlink:href="#linearGradient3907"
885 id="radialGradient5648"
886 gradientUnits="userSpaceOnUse"
887 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
888 cx="20.913568"
889 cy="47.045319"
890 fx="20.913568"
891 fy="47.045319"
892 r="19.5" />
893 <radialGradient
894 inkscape:collect="always"
895 xlink:href="#linearGradient3907"
896 id="radialGradient5650"
897 gradientUnits="userSpaceOnUse"
898 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
899 cx="20.913568"
900 cy="47.045319"
901 fx="20.913568"
902 fy="47.045319"
903 r="19.5" />
904 <radialGradient
905 inkscape:collect="always"
906 xlink:href="#linearGradient3907"
907 id="radialGradient5652"
908 gradientUnits="userSpaceOnUse"
909 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
910 cx="20.913568"
911 cy="47.045319"
912 fx="20.913568"
913 fy="47.045319"
914 r="19.5" />
915 <radialGradient
916 inkscape:collect="always"
917 xlink:href="#linearGradient3907"
918 id="radialGradient5654"
919 gradientUnits="userSpaceOnUse"
920 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
921 cx="20.913568"
922 cy="47.045319"
923 fx="20.913568"
924 fy="47.045319"
925 r="19.5" />
926 <radialGradient
927 inkscape:collect="always"
928 xlink:href="#linearGradient3907"
929 id="radialGradient5656"
930 gradientUnits="userSpaceOnUse"
931 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
932 cx="20.913568"
933 cy="47.045319"
934 fx="20.913568"
935 fy="47.045319"
936 r="19.5" />
937 <radialGradient
938 inkscape:collect="always"
939 xlink:href="#linearGradient3907"
940 id="radialGradient5658"
941 gradientUnits="userSpaceOnUse"
942 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
943 cx="20.913568"
944 cy="47.045319"
945 fx="20.913568"
946 fy="47.045319"
947 r="19.5" />
948 <radialGradient
949 inkscape:collect="always"
950 xlink:href="#linearGradient3907"
951 id="radialGradient5660"
952 gradientUnits="userSpaceOnUse"
953 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
954 cx="20.913568"
955 cy="47.045319"
956 fx="20.913568"
957 fy="47.045319"
958 r="19.5" />
959 <radialGradient
960 inkscape:collect="always"
961 xlink:href="#linearGradient3907"
962 id="radialGradient5662"
963 gradientUnits="userSpaceOnUse"
964 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
965 cx="20.913568"
966 cy="47.045319"
967 fx="20.913568"
968 fy="47.045319"
969 r="19.5" />
970 <radialGradient
971 inkscape:collect="always"
972 xlink:href="#linearGradient3907"
973 id="radialGradient5664"
974 gradientUnits="userSpaceOnUse"
975 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
976 cx="20.913568"
977 cy="47.045319"
978 fx="20.913568"
979 fy="47.045319"
980 r="19.5" />
981 <radialGradient
982 inkscape:collect="always"
983 xlink:href="#linearGradient3907"
984 id="radialGradient5666"
985 gradientUnits="userSpaceOnUse"
986 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
987 cx="20.913568"
988 cy="47.045319"
989 fx="20.913568"
990 fy="47.045319"
991 r="19.5" />
992 <radialGradient
993 inkscape:collect="always"
994 xlink:href="#linearGradient3907"
995 id="radialGradient5668"
996 gradientUnits="userSpaceOnUse"
997 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
998 cx="20.913568"
999 cy="47.045319"
1000 fx="20.913568"
1001 fy="47.045319"
1002 r="19.5" />
1003 <radialGradient
1004 inkscape:collect="always"
1005 xlink:href="#linearGradient3907"
1006 id="radialGradient5670"
1007 gradientUnits="userSpaceOnUse"
1008 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
1009 cx="20.913568"
1010 cy="47.045319"
1011 fx="20.913568"
1012 fy="47.045319"
1013 r="19.5" />
1014 <radialGradient
1015 inkscape:collect="always"
1016 xlink:href="#linearGradient3907"
1017 id="radialGradient5672"
1018 gradientUnits="userSpaceOnUse"
1019 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
1020 cx="20.913568"
1021 cy="47.045319"
1022 fx="20.913568"
1023 fy="47.045319"
1024 r="19.5" />
1025 <radialGradient
1026 inkscape:collect="always"
1027 xlink:href="#linearGradient3907"
1028 id="radialGradient5674"
1029 gradientUnits="userSpaceOnUse"
1030 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
1031 cx="20.913568"
1032 cy="47.045319"
1033 fx="20.913568"
1034 fy="47.045319"
1035 r="19.5" />
1036 <radialGradient
1037 inkscape:collect="always"
1038 xlink:href="#linearGradient3907"
1039 id="radialGradient5676"
1040 gradientUnits="userSpaceOnUse"
1041 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
1042 cx="20.913568"
1043 cy="47.045319"
1044 fx="20.913568"
1045 fy="47.045319"
1046 r="19.5" />
1047 <radialGradient
1048 inkscape:collect="always"
1049 xlink:href="#linearGradient3907"
1050 id="radialGradient5678"
1051 gradientUnits="userSpaceOnUse"
1052 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
1053 cx="20.913568"
1054 cy="47.045319"
1055 fx="20.913568"
1056 fy="47.045319"
1057 r="19.5" />
1058 <radialGradient
1059 inkscape:collect="always"
1060 xlink:href="#linearGradient3907"
1061 id="radialGradient5680"
1062 gradientUnits="userSpaceOnUse"
1063 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
1064 cx="20.913568"
1065 cy="47.045319"
1066 fx="20.913568"
1067 fy="47.045319"
1068 r="19.5" />
1069 <radialGradient
1070 inkscape:collect="always"
1071 xlink:href="#linearGradient3907"
1072 id="radialGradient5682"
1073 gradientUnits="userSpaceOnUse"
1074 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
1075 cx="20.913568"
1076 cy="47.045319"
1077 fx="20.913568"
1078 fy="47.045319"
1079 r="19.5" />
1080 <radialGradient
1081 inkscape:collect="always"
1082 xlink:href="#linearGradient3907"
1083 id="radialGradient5684"
1084 gradientUnits="userSpaceOnUse"
1085 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
1086 cx="20.913568"
1087 cy="47.045319"
1088 fx="20.913568"
1089 fy="47.045319"
1090 r="19.5" />
1091 <radialGradient
1092 inkscape:collect="always"
1093 xlink:href="#linearGradient3907"
1094 id="radialGradient5686"
1095 gradientUnits="userSpaceOnUse"
1096 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
1097 cx="20.913568"
1098 cy="47.045319"
1099 fx="20.913568"
1100 fy="47.045319"
1101 r="19.5" />
1102 <radialGradient
1103 inkscape:collect="always"
1104 xlink:href="#linearGradient3907"
1105 id="radialGradient5688"
1106 gradientUnits="userSpaceOnUse"
1107 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
1108 cx="20.913568"
1109 cy="47.045319"
1110 fx="20.913568"
1111 fy="47.045319"
1112 r="19.5" />
1113 <radialGradient
1114 inkscape:collect="always"
1115 xlink:href="#linearGradient3907"
1116 id="radialGradient5690"
1117 gradientUnits="userSpaceOnUse"
1118 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
1119 cx="20.913568"
1120 cy="47.045319"
1121 fx="20.913568"
1122 fy="47.045319"
1123 r="19.5" />
1124 <radialGradient
1125 inkscape:collect="always"
1126 xlink:href="#linearGradient3907"
1127 id="radialGradient5692"
1128 gradientUnits="userSpaceOnUse"
1129 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
1130 cx="20.913568"
1131 cy="47.045319"
1132 fx="20.913568"
1133 fy="47.045319"
1134 r="19.5" />
1135 <radialGradient
1136 inkscape:collect="always"
1137 xlink:href="#linearGradient3907"
1138 id="radialGradient5694"
1139 gradientUnits="userSpaceOnUse"
1140 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
1141 cx="20.913568"
1142 cy="47.045319"
1143 fx="20.913568"
1144 fy="47.045319"
1145 r="19.5" />
1146 <radialGradient
1147 inkscape:collect="always"
1148 xlink:href="#linearGradient3907"
1149 id="radialGradient5696"
1150 gradientUnits="userSpaceOnUse"
1151 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
1152 cx="20.913568"
1153 cy="47.045319"
1154 fx="20.913568"
1155 fy="47.045319"
1156 r="19.5" />
1157 <radialGradient
1158 inkscape:collect="always"
1159 xlink:href="#linearGradient3907"
1160 id="radialGradient5698"
1161 gradientUnits="userSpaceOnUse"
1162 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
1163 cx="20.913568"
1164 cy="47.045319"
1165 fx="20.913568"
1166 fy="47.045319"
1167 r="19.5" />
1168 <radialGradient
1169 inkscape:collect="always"
1170 xlink:href="#linearGradient3907"
1171 id="radialGradient5700"
1172 gradientUnits="userSpaceOnUse"
1173 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-8.729684,21.0972)"
1174 cx="20.913568"
1175 cy="47.045319"
1176 fx="20.913568"
1177 fy="47.045319"
1178 r="19.5" />
1179 <radialGradient
1180 inkscape:collect="always"
1181 xlink:href="#linearGradient3907"
1182 id="radialGradient5702"
1183 gradientUnits="userSpaceOnUse"
1184 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)"
1185 cx="20.913568"
1186 cy="47.045319"
1187 fx="20.913568"
1188 fy="47.045319"
1189 r="19.5" />
1190 <radialGradient
1191 inkscape:collect="always"
1192 xlink:href="#linearGradient3907"
1193 id="radialGradient5704"
1194 gradientUnits="userSpaceOnUse"
1195 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)"
1196 cx="20.913568"
1197 cy="47.045319"
1198 fx="20.913568"
1199 fy="47.045319"
1200 r="19.5" />
1201 <radialGradient
1202 inkscape:collect="always"
1203 xlink:href="#linearGradient3907"
1204 id="radialGradient5706"
1205 gradientUnits="userSpaceOnUse"
1206 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)"
1207 cx="20.913568"
1208 cy="47.045319"
1209 fx="20.913568"
1210 fy="47.045319"
1211 r="19.5" />
1212 <radialGradient
1213 inkscape:collect="always"
1214 xlink:href="#linearGradient3907"
1215 id="radialGradient5708"
1216 gradientUnits="userSpaceOnUse"
1217 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)"
1218 cx="20.913568"
1219 cy="47.045319"
1220 fx="20.913568"
1221 fy="47.045319"
1222 r="19.5" />
1223 <radialGradient
1224 inkscape:collect="always"
1225 xlink:href="#linearGradient3907"
1226 id="radialGradient5710"
1227 gradientUnits="userSpaceOnUse"
1228 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)"
1229 cx="20.913568"
1230 cy="47.045319"
1231 fx="20.913568"
1232 fy="47.045319"
1233 r="19.5" />
1234 <radialGradient
1235 inkscape:collect="always"
1236 xlink:href="#linearGradient3907"
1237 id="radialGradient5712"
1238 gradientUnits="userSpaceOnUse"
1239 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)"
1240 cx="20.913568"
1241 cy="47.045319"
1242 fx="20.913568"
1243 fy="47.045319"
1244 r="19.5" />
1245 <radialGradient
1246 inkscape:collect="always"
1247 xlink:href="#linearGradient3907"
1248 id="radialGradient5714"
1249 gradientUnits="userSpaceOnUse"
1250 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-0.72968,21.0972)"
1251 cx="20.913568"
1252 cy="47.045319"
1253 fx="20.913568"
1254 fy="47.045319"
1255 r="19.5" />
1256 <radialGradient
1257 inkscape:collect="always"
1258 xlink:href="#linearGradient3907"
1259 id="radialGradient5716"
1260 gradientUnits="userSpaceOnUse"
1261 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)"
1262 cx="20.913568"
1263 cy="47.045319"
1264 fx="20.913568"
1265 fy="47.045319"
1266 r="19.5" />
1267 <radialGradient
1268 inkscape:collect="always"
1269 xlink:href="#linearGradient3907"
1270 id="radialGradient5718"
1271 gradientUnits="userSpaceOnUse"
1272 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)"
1273 cx="20.913568"
1274 cy="47.045319"
1275 fx="20.913568"
1276 fy="47.045319"
1277 r="19.5" />
1278 <radialGradient
1279 inkscape:collect="always"
1280 xlink:href="#linearGradient3907"
1281 id="radialGradient5720"
1282 gradientUnits="userSpaceOnUse"
1283 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)"
1284 cx="20.913568"
1285 cy="47.045319"
1286 fx="20.913568"
1287 fy="47.045319"
1288 r="19.5" />
1289 <radialGradient
1290 inkscape:collect="always"
1291 xlink:href="#linearGradient3907"
1292 id="radialGradient5722"
1293 gradientUnits="userSpaceOnUse"
1294 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)"
1295 cx="20.913568"
1296 cy="47.045319"
1297 fx="20.913568"
1298 fy="47.045319"
1299 r="19.5" />
1300 <radialGradient
1301 inkscape:collect="always"
1302 xlink:href="#linearGradient3907"
1303 id="radialGradient5724"
1304 gradientUnits="userSpaceOnUse"
1305 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)"
1306 cx="20.913568"
1307 cy="47.045319"
1308 fx="20.913568"
1309 fy="47.045319"
1310 r="19.5" />
1311 <radialGradient
1312 inkscape:collect="always"
1313 xlink:href="#linearGradient3907"
1314 id="radialGradient5726"
1315 gradientUnits="userSpaceOnUse"
1316 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)"
1317 cx="20.913568"
1318 cy="47.045319"
1319 fx="20.913568"
1320 fy="47.045319"
1321 r="19.5" />
1322 <radialGradient
1323 inkscape:collect="always"
1324 xlink:href="#linearGradient3907"
1325 id="radialGradient5728"
1326 gradientUnits="userSpaceOnUse"
1327 gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,4.270316,21.0972)"
1328 cx="20.913568"
1329 cy="47.045319"
1330 fx="20.913568"
1331 fy="47.045319"
1332 r="19.5" />
1333 </defs>
1334 <sodipodi:namedview
1335 id="base"
1336 pagecolor="#ffffff"
1337 bordercolor="#666"
1338 borderopacity="1"
1339 inkscape:pageopacity="0.0"
1340 inkscape:pageshadow="2"
1341 inkscape:zoom="1"
1342 inkscape:cx="47.587693"
1343 inkscape:cy="-3.0466105"
1344 inkscape:current-layer="layer1"
1345 showgrid="false"
1346 inkscape:grid-bbox="true"
1347 inkscape:document-units="px"
1348 inkscape:window-width="1051"
1349 inkscape:window-height="885"
1350 inkscape:window-x="0"
1351 inkscape:window-y="89"
1352 inkscape:showpageshadow="false"
1353 inkscape:grid-points="false"
1354 showborder="false" />
1355 <metadata
1356 id="metadata4">
1357 <rdf:RDF>
1358 <cc:Work
1359 rdf:about="">
1360 <dc:format>image/svg+xml</dc:format>
1361 <dc:type
1362 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
1363 <dc:title>Network</dc:title>
1364 <dc:date>2005-03-08</dc:date>
1365 <dc:creator>
1366 <cc:Agent>
1367 <dc:title>Lapo Calamandrei</dc:title>
1368 </cc:Agent>
1369 </dc:creator>
1370 <dc:subject>
1371 <rdf:Bag />
1372 </dc:subject>
1373 <cc:license
1374 rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
1375 <dc:source />
1376 <dc:contributor>
1377 <cc:Agent>
1378 <dc:title>Jakub Steiner, Luca Ferretti</dc:title>
1379 </cc:Agent>
1380 </dc:contributor>
1381 </cc:Work>
1382 <cc:License
1383 rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
1384 <cc:permits
1385 rdf:resource="http://web.resource.org/cc/Reproduction" />
1386 <cc:permits
1387 rdf:resource="http://web.resource.org/cc/Distribution" />
1388 <cc:requires
1389 rdf:resource="http://web.resource.org/cc/Notice" />
1390 <cc:requires
1391 rdf:resource="http://web.resource.org/cc/Attribution" />
1392 <cc:permits
1393 rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
1394 <cc:requires
1395 rdf:resource="http://web.resource.org/cc/ShareAlike" />
1396 </cc:License>
1397 </rdf:RDF>
1398 </metadata>
1399 <g
1400 id="layer1"
1401 inkscape:label="Layer 1"
1402 inkscape:groupmode="layer">
1403 <g
1404 id="g5480"
1405 transform="translate(14.98536,1)">
1406 <g
1407 style="display:inline"
1408 inkscape:label="Layer 1"
1409 id="g5482" />
1410 <g
1411 style="display:inline"
1412 inkscape:label="tastiera"
1413 id="g5484">
1414 <g
1415 transform="translate(-54,0.18088)"
1416 inkscape:label="Shadow"
1417 id="g5486" />
1418 <g
1419 id="g5488"
1420 inkscape:label="Shadow"
1421 transform="translate(-54,15.24691)" />
1422 <g
1423 id="g5490"
1424 inkscape:label="Lavoro"
1425 style="display:inline"
1426 transform="translate(-54,15.24691)" />
1427 </g>
1428 <g
1429 style="display:inline"
1430 inkscape:label="tasti"
1431 id="g5492">
1432 <path
1433 transform="matrix(0.633479,0,0,0.565504,1.119993,0.201324)"
1434 d="M 47.69706 42.6875 A 23.75956 5.8835783 0 1 1 0.17794037,42.6875 A 23.75956 5.8835783 0 1 1 47.69706 42.6875 z"
1435 sodipodi:ry="5.8835783"
1436 sodipodi:rx="23.75956"
1437 sodipodi:cy="42.6875"
1438 sodipodi:cx="23.9375"
1439 id="path5494"
1440 style="opacity:0.3;fill:url(#radialGradient5620);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
1441 sodipodi:type="arc" />
1442 <path
1443 style="opacity:0.20786516;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5622);stroke-width:0.99999982;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
1444 d="M 27.082936,28.048013 C 21.663366,21.135948 31.947853,26.54939 30.855772,24.153878 C 29.785572,21.806364 17.408039,24.595241 18.709552,20.667209"
1445 id="path5496"
1446 sodipodi:nodetypes="czz" />
1447 <path
1448 sodipodi:nodetypes="czz"
1449 id="path5498"
1450 d="M 26.784723,27.671888 C 21.538638,20.412631 31.520563,26.487432 30.374151,23.604157 C 29.072638,20.330797 18.198646,24.276982 18.806217,20.406815"
1451 style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#729fcf;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
1452 <g
1453 transform="matrix(0.530612,0,0,0.53095,3.140616,3.404111)"
1454 id="g5500"
1455 style="display:inline">
1456 <path
1457 sodipodi:nodetypes="csccscc"
1458 id="path5502"
1459 d="M 14.375479,32.558794 C 14.375479,32.558794 15.592355,37.45777 10.51915,37.50376 C 8.0888743,37.525507 8.5866723,41.509781 8.5866723,41.509781 L 39.433139,41.478634 C 39.433139,41.478634 39.851577,37.611393 37.410922,37.566053 C 32.423455,37.474579 33.600393,32.496503 33.600393,32.496503 L 14.375479,32.558794 z "
1460 style="opacity:1;color:black;fill:url(#linearGradient5624);fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.88401449;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
1461 <path
1462 sodipodi:nodetypes="ccccc"
1463 id="path5504"
1464 d="M 13.926195,33.027451 C 14.010206,35.2 13.641655,35.938894 12.285731,36.702682 L 36,38 C 35.047008,36.831372 33.660837,35.066666 34.038883,33.011765 L 13.926195,33.027451 z "
1465 style="opacity:0.5;fill:url(#linearGradient5626);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
1466 <path
1467 style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#8d8d8f;stroke-width:1.88401508px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:0.43902438"
1468 d="M 10.436202,38.661601 C 17.000465,38.66357 37.562637,38.661601 37.562637,38.661601"
1469 id="path5506"
1470 sodipodi:nodetypes="cc" />
1471 <path
1472 sodipodi:nodetypes="cc"
1473 id="path5508"
1474 d="M 11.134219,39.660187 C 17.146756,39.662156 36.881517,39.660187 36.881517,39.660187"
1475 style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:1.88401532px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
1476 </g>
1477 <path
1478 sodipodi:nodetypes="ccccccccc"
1479 id="path5510"
1480 d="M 3.602229,1.4999996 L 28.319154,1.4999996 C 29.631932,1.4999996 30.588653,2.4197694 30.588653,3.8361498 L 30.595753,20.072828 C 30.595753,21.162945 30.253253,21.499994 29.276792,21.499994 L 2.7228402,21.487795 C 1.9583807,21.469246 1.414291,21.169109 1.404027,20.186855 L 1.4138652,3.7151949 C 1.4138652,2.572403 2.4117826,1.4999996 3.602229,1.4999996 z "
1481 style="fill:url(#linearGradient5628);fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.00000036;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;display:inline" />
1482 <rect
1483 y="3.5000005"
1484 x="3.4999971"
1485 height="15.194118"
1486 width="25.103695"
1487 id="rect5512"
1488 style="fill:url(#radialGradient5630);fill-opacity:1;fill-rule:evenodd;stroke:#204a87;stroke-width:0.99999958px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
1489 <path
1490 sodipodi:nodetypes="ccccc"
1491 id="path5514"
1492 d="M 4.0984042,4.0204313 L 4.0984042,15.748091 C 15.025941,14.866132 19.115514,9.1623492 28,8.5664313 L 28,4 L 4.0984042,4.0204313 z "
1493 style="opacity:0.5;fill:url(#linearGradient5632);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
1494 <path
1495 sodipodi:nodetypes="cccsccscccc"
1496 id="path5516"
1497 d="M 4.056094,2.4999991 C 3.2398944,2.4999991 2.4960113,3.2952856 2.4960113,4.0741096 L 2.4960108,19.789734 C 2.4999206,20.160319 2.5869303,20.275382 2.6715202,20.346431 C 2.7561101,20.417479 2.9348114,20.473541 3.2370502,20.480806 L 28.783404,20.500002 C 29.189758,20.500002 29.318189,20.437946 29.368434,20.384824 C 29.418681,20.3317 29.504941,20.138678 29.504941,19.674554 L 29.504942,4.1892884 C 29.504942,3.0791795 28.874178,2.4999991 27.866855,2.4999991 L 4.056094,2.4999991 z "
1498 style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;display:inline" />
1499 <g
1500 id="g5518"
1501 transform="matrix(1.543206e-2,0,0,1.215502e-2,29.57023,28.01728)"
1502 style="display:inline">
1503 <rect
1504 y="-150.69685"
1505 x="-1559.2523"
1506 height="478.35718"
1507 width="1339.6335"
1508 id="rect5520"
1509 style="opacity:0.40206185;color:black;fill:url(#linearGradient5634);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
1510 <path
1511 sodipodi:nodetypes="cccc"
1512 id="path5522"
1513 d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
1514 style="opacity:0.40206185;color:black;fill:url(#radialGradient5636);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
1515 <path
1516 style="opacity:0.40206185;color:black;fill:url(#radialGradient5638);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1517 d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
1518 id="path5524"
1519 sodipodi:nodetypes="cccc" />
1520 </g>
1521 <path
1522 sodipodi:nodetypes="ccccccccc"
1523 id="path5526"
1524 d="M 3.643761,26.504783 L 28.921938,26.504783 C 29.226374,26.504783 29.788645,26.492665 30,27 L 31.5,30 C 31.5625,30.406064 31.487026,31.562501 30,31.562501 L 2.5,31.500001 C 1,31.562501 1.0652178,30.281064 1.0652178,30 L 3,27 C 3.2113561,26.492665 3.3393239,26.504783 3.643761,26.504783 z "
1525 style="color:black;fill:url(#linearGradient5640);fill-opacity:1;fill-rule:nonzero;stroke:#888a85;stroke-width:0.99999976;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
1526 <path
1527 sodipodi:nodetypes="ccccccccc"
1528 id="path5528"
1529 d="M 4.0955909,27.111942 L 28.49679,27.10614 C 28.788541,27.10614 28.820868,27.10614 29.023418,27.449588 L 30.420658,30.150759 C 30.420658,30.341029 30.185782,30.494207 29.894029,30.494207 L 2.6782341,30.500011 C 2.3864818,30.500011 2.1516056,30.346832 2.1516056,30.156562 L 3.5689622,27.45539 C 3.7715117,27.111942 3.8038386,27.111942 4.0955909,27.111942 z "
1530 style="opacity:1;color:black;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:white;stroke-width:0.99999964;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
1531 <path
1532 sodipodi:nodetypes="csssssssccssssssssssssccccssscccccccccssssssssssssccsssssssssccccccc"
1533 id="path5530"
1534 d="M 4.9039459,26.500588 C 4.9019723,26.502459 4.9057445,26.514939 4.9039459,26.516406 C 4.89444,26.51889 4.8714034,26.528697 4.8616746,26.532224 C 4.8584281,26.533516 4.8437789,26.530815 4.840539,26.532224 C 4.8373165,26.533749 4.8225981,26.546397 4.8194034,26.548041 C 4.8130911,26.551565 4.8043634,26.559861 4.7982678,26.563859 C 4.7952901,26.565977 4.7800294,26.57744 4.7771322,26.579677 C 4.7743261,26.582033 4.7587013,26.593017 4.7559967,26.595495 C 4.7139608,26.641114 4.6696929,26.720423 4.6080475,26.816941 L 3.1646057,29.221226 C 3.1646057,29.224233 3.1644578,29.234029 3.1646057,29.237043 C 3.1648991,29.240062 3.1641691,29.249843 3.1646057,29.25286 C 3.1651831,29.255877 3.1638899,29.265668 3.1646057,29.268679 C 3.1663094,29.274683 3.1835077,29.294359 3.1857413,29.300313 C 3.1869871,29.303274 3.184369,29.31319 3.1857413,29.316132 C 3.1902312,29.324886 3.2013114,29.339269 3.2068769,29.347766 C 3.2127868,29.356161 3.2211123,29.37137 3.2280125,29.379402 C 3.230418,29.382033 3.2466397,29.392637 3.2491481,29.395219 C 3.2517571,29.39775 3.2675765,29.408562 3.2702837,29.411038 C 3.287102,29.425545 3.313719,29.446427 3.3336905,29.45849 C 3.3370984,29.460423 3.3513413,29.472456 3.3548262,29.474308 C 3.3655167,29.479116 3.3855128,29.485766 3.3970973,29.490126 C 3.4750042,29.516899 3.5780713,29.537579 3.6718601,29.537579 L 18.650036,29.537579 L 18.586629,26.500592 L 5.1153018,26.500588 C 5.0709049,26.500588 5.0221446,26.49941 4.9884883,26.500588 C 4.9806133,26.500623 4.9547729,26.500899 4.9462171,26.500588 C 4.9436075,26.500603 4.9274517,26.500458 4.9250814,26.500588 C 4.9232514,26.502034 4.9059195,26.498718 4.9039459,26.500588 z M 19.83363,26.500592 L 19.897036,27.512921 L 23.553495,27.512921 L 23.38441,26.500592 L 19.83363,26.500592 z M 24.652546,26.500592 L 25.413428,29.537579 L 28.795124,29.537579 C 28.888912,29.537579 28.991979,29.516899 29.069886,29.490126 C 29.081471,29.485766 29.101467,29.479116 29.112157,29.474308 C 29.115641,29.472456 29.129884,29.460423 29.133293,29.45849 C 29.153265,29.446427 29.179882,29.425545 29.1967,29.411038 C 29.199407,29.408562 29.215227,29.39775 29.217835,29.395219 C 29.220344,29.392637 29.236565,29.382033 29.238971,29.379402 C 29.245871,29.37137 29.254196,29.356161 29.260107,29.347766 C 29.265672,29.339269 29.276752,29.324886 29.281242,29.316132 C 29.282614,29.31319 29.279996,29.303274 29.281242,29.300313 C 29.283476,29.294359 29.300674,29.274683 29.302378,29.268679 C 29.303093,29.265668 29.3018,29.255877 29.302378,29.25286 C 29.302814,29.249843 29.302083,29.240062 29.302378,29.237043 C 29.302527,29.234029 29.302378,29.224233 29.302378,29.221226 L 28.119129,26.816941 C 28.057483,26.720424 28.013215,26.641114 27.97118,26.595495 C 27.968475,26.593017 27.95285,26.582033 27.950044,26.579677 C 27.947147,26.57744 27.931886,26.565977 27.928908,26.563859 C 27.922812,26.559861 27.914085,26.551565 27.907773,26.548041 C 27.904579,26.546397 27.88986,26.533749 27.886638,26.532224 C 27.883397,26.530815 27.868747,26.533516 27.865502,26.532224 C 27.855773,26.528697 27.832737,26.51889 27.823231,26.516406 C 27.812787,26.51452 27.796296,26.503902 27.780959,26.500588 C 27.773263,26.49907 27.745738,26.501448 27.738688,26.500588 C 27.705031,26.49941 27.656271,26.500588 27.611875,26.500588 L 24.652546,26.500592 z M 20.679054,28.525249 L 20.002715,29.537579 L 23.891664,29.537579 L 23.04624,28.525249 L 20.679054,28.525249 z "
1535 style="color:black;fill:#d3d7cf;fill-opacity:1;fill-rule:nonzero;stroke:#babdb6;stroke-width:0.99999923;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
1536 <rect
1537 style="color:black;fill:url(#radialGradient5642);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1538 id="rect5532"
1539 width="1"
1540 height="1"
1541 x="5"
1542 y="26"
1543 rx="0.26516503"
1544 ry="0.26516503" />
1545 <rect
1546 style="color:black;fill:url(#radialGradient5644);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1547 id="rect5534"
1548 width="1"
1549 height="1"
1550 x="7"
1551 y="26"
1552 rx="0.26516503"
1553 ry="0.26516503" />
1554 <rect
1555 style="color:black;fill:url(#radialGradient5646);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1556 id="rect5536"
1557 width="1"
1558 height="1"
1559 x="9"
1560 y="26"
1561 rx="0.26516503"
1562 ry="0.26516503" />
1563 <rect
1564 style="color:black;fill:url(#radialGradient5648);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1565 id="rect5538"
1566 width="1"
1567 height="1"
1568 x="11"
1569 y="26"
1570 rx="0.26516503"
1571 ry="0.26516503" />
1572 <rect
1573 style="color:black;fill:url(#radialGradient5650);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1574 id="rect5540"
1575 width="1"
1576 height="1"
1577 x="13"
1578 y="26"
1579 rx="0.26516503"
1580 ry="0.26516503" />
1581 <rect
1582 style="color:black;fill:url(#radialGradient5652);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1583 id="rect5542"
1584 width="1"
1585 height="1"
1586 x="15"
1587 y="26"
1588 rx="0.26516503"
1589 ry="0.26516503" />
1590 <rect
1591 style="color:black;fill:url(#radialGradient5654);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1592 id="rect5544"
1593 width="1"
1594 height="1"
1595 x="17"
1596 y="26"
1597 rx="0.26516503"
1598 ry="0.26516503" />
1599 <rect
1600 style="color:black;fill:url(#radialGradient5656);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1601 id="rect5546"
1602 width="1"
1603 height="1"
1604 x="4"
1605 y="27"
1606 rx="0.26516503"
1607 ry="0.26516503" />
1608 <rect
1609 style="color:black;fill:url(#radialGradient5658);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1610 id="rect5548"
1611 width="1"
1612 height="1"
1613 x="6"
1614 y="27"
1615 rx="0.26516503"
1616 ry="0.26516503" />
1617 <rect
1618 style="color:black;fill:url(#radialGradient5660);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1619 id="rect5550"
1620 width="1"
1621 height="1"
1622 x="8"
1623 y="27"
1624 rx="0.26516503"
1625 ry="0.26516503" />
1626 <rect
1627 style="color:black;fill:url(#radialGradient5662);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1628 id="rect5552"
1629 width="1"
1630 height="1"
1631 x="10"
1632 y="27"
1633 rx="0.26516503"
1634 ry="0.26516503" />
1635 <rect
1636 style="color:black;fill:url(#radialGradient5664);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1637 id="rect5554"
1638 width="1"
1639 height="1"
1640 x="12"
1641 y="27"
1642 rx="0.26516503"
1643 ry="0.26516503" />
1644 <rect
1645 style="color:black;fill:url(#radialGradient5666);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1646 id="rect5556"
1647 width="1"
1648 height="1"
1649 x="14"
1650 y="27"
1651 rx="0.26516503"
1652 ry="0.26516503" />
1653 <rect
1654 style="color:black;fill:url(#radialGradient5668);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1655 id="rect5558"
1656 width="1"
1657 height="1"
1658 x="16"
1659 y="27"
1660 rx="0.26516503"
1661 ry="0.26516503" />
1662 <rect
1663 style="color:black;fill:url(#radialGradient5670);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1664 id="rect5560"
1665 width="1"
1666 height="1"
1667 x="18"
1668 y="27"
1669 rx="0.26516503"
1670 ry="0.26516503" />
1671 <rect
1672 style="color:black;fill:url(#radialGradient5672);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1673 id="rect5562"
1674 width="1"
1675 height="1"
1676 x="5"
1677 y="28"
1678 rx="0.26516503"
1679 ry="0.26516503" />
1680 <rect
1681 style="color:black;fill:url(#radialGradient5674);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1682 id="rect5564"
1683 width="1"
1684 height="1"
1685 x="7"
1686 y="28"
1687 rx="0.26516503"
1688 ry="0.26516503" />
1689 <rect
1690 style="color:black;fill:url(#radialGradient5676);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1691 id="rect5566"
1692 width="1"
1693 height="1"
1694 x="9"
1695 y="28"
1696 rx="0.26516503"
1697 ry="0.26516503" />
1698 <rect
1699 style="color:black;fill:url(#radialGradient5678);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1700 id="rect5568"
1701 width="1"
1702 height="1"
1703 x="11"
1704 y="28"
1705 rx="0.26516503"
1706 ry="0.26516503" />
1707 <rect
1708 style="color:black;fill:url(#radialGradient5680);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1709 id="rect5570"
1710 width="1"
1711 height="1"
1712 x="13"
1713 y="28"
1714 rx="0.26516503"
1715 ry="0.26516503" />
1716 <rect
1717 style="color:black;fill:url(#radialGradient5682);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1718 id="rect5572"
1719 width="1"
1720 height="1"
1721 x="15"
1722 y="28"
1723 rx="0.26516503"
1724 ry="0.26516503" />
1725 <rect
1726 style="color:black;fill:url(#radialGradient5684);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1727 id="rect5574"
1728 width="1"
1729 height="1"
1730 x="17"
1731 y="28"
1732 rx="0.26516503"
1733 ry="0.26516503" />
1734 <rect
1735 style="color:black;fill:url(#radialGradient5686);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1736 id="rect5576"
1737 width="1"
1738 height="1"
1739 x="4"
1740 y="29"
1741 rx="0.26516503"
1742 ry="0.26516503" />
1743 <rect
1744 style="color:black;fill:url(#radialGradient5688);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1745 id="rect5578"
1746 width="1"
1747 height="1"
1748 x="6"
1749 y="29"
1750 rx="0.26516503"
1751 ry="0.26516503" />
1752 <rect
1753 style="color:black;fill:url(#radialGradient5690);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1754 id="rect5580"
1755 width="1"
1756 height="1"
1757 x="8"
1758 y="29"
1759 rx="0.26516503"
1760 ry="0.26516503" />
1761 <rect
1762 style="color:black;fill:url(#radialGradient5692);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1763 id="rect5582"
1764 width="1"
1765 height="1"
1766 x="10"
1767 y="29"
1768 rx="0.26516503"
1769 ry="0.26516503" />
1770 <rect
1771 style="color:black;fill:url(#radialGradient5694);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1772 id="rect5584"
1773 width="1"
1774 height="1"
1775 x="12"
1776 y="29"
1777 rx="0.26516503"
1778 ry="0.26516503" />
1779 <rect
1780 style="color:black;fill:url(#radialGradient5696);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1781 id="rect5586"
1782 width="1"
1783 height="1"
1784 x="14"
1785 y="29"
1786 rx="0.26516503"
1787 ry="0.26516503" />
1788 <rect
1789 style="color:black;fill:url(#radialGradient5698);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1790 id="rect5588"
1791 width="1"
1792 height="1"
1793 x="16"
1794 y="29"
1795 rx="0.26516503"
1796 ry="0.26516503" />
1797 <rect
1798 style="color:black;fill:url(#radialGradient5700);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1799 id="rect5590"
1800 width="1"
1801 height="1"
1802 x="18"
1803 y="29"
1804 rx="0.26516503"
1805 ry="0.26516503" />
1806 <rect
1807 style="color:black;fill:url(#radialGradient5702);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1808 id="rect5592"
1809 width="1"
1810 height="1"
1811 x="21"
1812 y="26"
1813 rx="0.26516503"
1814 ry="0.26516503" />
1815 <rect
1816 style="color:black;fill:url(#radialGradient5704);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1817 id="rect5594"
1818 width="1"
1819 height="1"
1820 x="20"
1821 y="27"
1822 rx="0.26516503"
1823 ry="0.26516503" />
1824 <rect
1825 style="color:black;fill:url(#radialGradient5706);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1826 id="rect5596"
1827 width="1"
1828 height="1"
1829 x="22"
1830 y="27"
1831 rx="0.26516503"
1832 ry="0.26516503" />
1833 <rect
1834 style="color:black;fill:url(#radialGradient5708);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1835 id="rect5598"
1836 width="1"
1837 height="1"
1838 x="21"
1839 y="28"
1840 rx="0.26516503"
1841 ry="0.26516503" />
1842 <rect
1843 style="color:black;fill:url(#radialGradient5710);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1844 id="rect5600"
1845 width="1"
1846 height="1"
1847 x="23"
1848 y="28"
1849 rx="0.26516503"
1850 ry="0.26516503" />
1851 <rect
1852 style="color:black;fill:url(#radialGradient5712);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1853 id="rect5602"
1854 width="1"
1855 height="1"
1856 x="20"
1857 y="29"
1858 rx="0.26516503"
1859 ry="0.26516503" />
1860 <rect
1861 style="color:black;fill:url(#radialGradient5714);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1862 id="rect5604"
1863 width="1"
1864 height="1"
1865 x="22"
1866 y="29"
1867 rx="0.26516503"
1868 ry="0.26516503" />
1869 <rect
1870 style="color:black;fill:url(#radialGradient5716);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1871 id="rect5606"
1872 width="1"
1873 height="1"
1874 x="26"
1875 y="26"
1876 rx="0.26516503"
1877 ry="0.26516503" />
1878 <rect
1879 style="color:black;fill:url(#radialGradient5718);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1880 id="rect5608"
1881 width="1"
1882 height="1"
1883 x="25"
1884 y="27"
1885 rx="0.26516503"
1886 ry="0.26516503" />
1887 <rect
1888 style="color:black;fill:url(#radialGradient5720);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1889 id="rect5610"
1890 width="1"
1891 height="1"
1892 x="27"
1893 y="27"
1894 rx="0.26516503"
1895 ry="0.26516503" />
1896 <rect
1897 style="color:black;fill:url(#radialGradient5722);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1898 id="rect5612"
1899 width="1"
1900 height="1"
1901 x="26"
1902 y="28"
1903 rx="0.26516503"
1904 ry="0.26516503" />
1905 <rect
1906 style="color:black;fill:url(#radialGradient5724);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1907 id="rect5614"
1908 width="1"
1909 height="1"
1910 x="28"
1911 y="28"
1912 rx="0.26516503"
1913 ry="0.26516503" />
1914 <rect
1915 style="color:black;fill:url(#radialGradient5726);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1916 id="rect5616"
1917 width="1"
1918 height="1"
1919 x="25"
1920 y="29"
1921 rx="0.26516503"
1922 ry="0.26516503" />
1923 <rect
1924 style="color:black;fill:url(#radialGradient5728);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
1925 id="rect5618"
1926 width="1"
1927 height="1"
1928 x="27"
1929 y="29"
1930 rx="0.26516503"
1931 ry="0.26516503" />
1932 </g>
1933 </g>
1934 <g
1935 id="g5340"
1936 transform="translate(0.985355,12)">
1937 <g
1938 style="display:inline"
1939 inkscape:label="Layer 1"
1940 id="g5342" />
1941 <g
1942 style="display:inline"
1943 inkscape:label="tastiera"
1944 id="g5344">
1945 <g
1946 transform="translate(-54,0.18088)"
1947 inkscape:label="Shadow"
1948 id="g5346" />
1949 <g
1950 id="g5348"
1951 inkscape:label="Shadow"
1952 transform="translate(-54,15.24691)" />
1953 <g
1954 id="g5350"
1955 inkscape:label="Lavoro"
1956 style="display:inline"
1957 transform="translate(-54,15.24691)" />
1958 </g>
1959 <g
1960 style="display:inline"
1961 inkscape:label="tasti"
1962 id="layer2">
1963 <path
1964 transform="matrix(0.633479,0,0,0.565504,1.119993,0.201324)"
1965 d="M 47.69706 42.6875 A 23.75956 5.8835783 0 1 1 0.17794037,42.6875 A 23.75956 5.8835783 0 1 1 47.69706 42.6875 z"
1966 sodipodi:ry="5.8835783"
1967 sodipodi:rx="23.75956"
1968 sodipodi:cy="42.6875"
1969 sodipodi:cx="23.9375"
1970 id="path5353"
1971 style="opacity:0.3;fill:url(#radialGradient2313);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
1972 sodipodi:type="arc" />
1973 <path
1974 style="opacity:0.20786516;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4202);stroke-width:0.99999982;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
1975 d="M 27.082936,28.048013 C 21.663366,21.135948 31.947853,26.54939 30.855772,24.153878 C 29.785572,21.806364 17.408039,24.595241 18.709552,20.667209"
1976 id="path5355"
1977 sodipodi:nodetypes="czz" />
1978 <path
1979 sodipodi:nodetypes="czz"
1980 id="path5357"
1981 d="M 26.784723,27.671888 C 21.538638,20.412631 31.520563,26.487432 30.374151,23.604157 C 29.072638,20.330797 18.198646,24.276982 18.806217,20.406815"
1982 style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#729fcf;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
1983 <g
1984 transform="matrix(0.530612,0,0,0.53095,3.140616,3.404111)"
1985 id="g5359"
1986 style="display:inline">
1987 <path
1988 sodipodi:nodetypes="csccscc"
1989 id="path5361"
1990 d="M 14.375479,32.558794 C 14.375479,32.558794 15.592355,37.45777 10.51915,37.50376 C 8.0888743,37.525507 8.5866723,41.509781 8.5866723,41.509781 L 39.433139,41.478634 C 39.433139,41.478634 39.851577,37.611393 37.410922,37.566053 C 32.423455,37.474579 33.600393,32.496503 33.600393,32.496503 L 14.375479,32.558794 z "
1991 style="opacity:1;color:black;fill:url(#linearGradient2308);fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.88401449;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
1992 <path
1993 sodipodi:nodetypes="ccccc"
1994 id="path5363"
1995 d="M 13.926195,33.027451 C 14.010206,35.2 13.641655,35.938894 12.285731,36.702682 L 36,38 C 35.047008,36.831372 33.660837,35.066666 34.038883,33.011765 L 13.926195,33.027451 z "
1996 style="opacity:0.5;fill:url(#linearGradient2310);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
1997 <path
1998 style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#8d8d8f;stroke-width:1.88401508px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:0.43902438"
1999 d="M 10.436202,38.661601 C 17.000465,38.66357 37.562637,38.661601 37.562637,38.661601"
2000 id="path5365"
2001 sodipodi:nodetypes="cc" />
2002 <path
2003 sodipodi:nodetypes="cc"
2004 id="path5367"
2005 d="M 11.134219,39.660187 C 17.146756,39.662156 36.881517,39.660187 36.881517,39.660187"
2006 style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:1.88401532px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
2007 </g>
2008 <path
2009 sodipodi:nodetypes="ccccccccc"
2010 id="path5369"
2011 d="M 3.602229,1.4999996 L 28.319154,1.4999996 C 29.631932,1.4999996 30.588653,2.4197694 30.588653,3.8361498 L 30.595753,20.072828 C 30.595753,21.162945 30.253253,21.499994 29.276792,21.499994 L 2.7228402,21.487795 C 1.9583807,21.469246 1.414291,21.169109 1.404027,20.186855 L 1.4138652,3.7151949 C 1.4138652,2.572403 2.4117826,1.4999996 3.602229,1.4999996 z "
2012 style="fill:url(#linearGradient5147);fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.00000036;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;display:inline" />
2013 <rect
2014 y="3.5000005"
2015 x="3.4999971"
2016 height="15.194118"
2017 width="25.103695"
2018 id="rect5371"
2019 style="fill:url(#radialGradient5239);fill-opacity:1;fill-rule:evenodd;stroke:#204a87;stroke-width:0.99999958px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
2020 <path
2021 sodipodi:nodetypes="ccccc"
2022 id="path5373"
2023 d="M 4.0984042,4.0204313 L 4.0984042,15.748091 C 15.025941,14.866132 19.115514,9.1623492 28,8.5664313 L 28,4 L 4.0984042,4.0204313 z "
2024 style="opacity:0.5;fill:url(#linearGradient6246);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
2025 <path
2026 sodipodi:nodetypes="cccsccscccc"
2027 id="path5375"
2028 d="M 4.056094,2.4999991 C 3.2398944,2.4999991 2.4960113,3.2952856 2.4960113,4.0741096 L 2.4960108,19.789734 C 2.4999206,20.160319 2.5869303,20.275382 2.6715202,20.346431 C 2.7561101,20.417479 2.9348114,20.473541 3.2370502,20.480806 L 28.783404,20.500002 C 29.189758,20.500002 29.318189,20.437946 29.368434,20.384824 C 29.418681,20.3317 29.504941,20.138678 29.504941,19.674554 L 29.504942,4.1892884 C 29.504942,3.0791795 28.874178,2.4999991 27.866855,2.4999991 L 4.056094,2.4999991 z "
2029 style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;display:inline" />
2030 <g
2031 id="g5377"
2032 transform="matrix(1.543206e-2,0,0,1.215502e-2,29.57023,28.01728)"
2033 style="display:inline">
2034 <rect
2035 y="-150.69685"
2036 x="-1559.2523"
2037 height="478.35718"
2038 width="1339.6335"
2039 id="rect6709"
2040 style="opacity:0.40206185;color:black;fill:url(#linearGradient5478);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
2041 <path
2042 sodipodi:nodetypes="cccc"
2043 id="path5380"
2044 d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
2045 style="opacity:0.40206185;color:black;fill:url(#radialGradient2309);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
2046 <path
2047 style="opacity:0.40206185;color:black;fill:url(#radialGradient2311);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2048 d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
2049 id="path5382"
2050 sodipodi:nodetypes="cccc" />
2051 </g>
2052 <path
2053 sodipodi:nodetypes="ccccccccc"
2054 id="path5384"
2055 d="M 3.643761,26.504783 L 28.921938,26.504783 C 29.226374,26.504783 29.788645,26.492665 30,27 L 31.5,30 C 31.5625,30.406064 31.487026,31.562501 30,31.562501 L 2.5,31.500001 C 1,31.562501 1.0652178,30.281064 1.0652178,30 L 3,27 C 3.2113561,26.492665 3.3393239,26.504783 3.643761,26.504783 z "
2056 style="color:black;fill:url(#linearGradient3905);fill-opacity:1;fill-rule:nonzero;stroke:#888a85;stroke-width:0.99999976;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
2057 <path
2058 sodipodi:nodetypes="ccccccccc"
2059 id="path5386"
2060 d="M 4.0955909,27.111942 L 28.49679,27.10614 C 28.788541,27.10614 28.820868,27.10614 29.023418,27.449588 L 30.420658,30.150759 C 30.420658,30.341029 30.185782,30.494207 29.894029,30.494207 L 2.6782341,30.500011 C 2.3864818,30.500011 2.1516056,30.346832 2.1516056,30.156562 L 3.5689622,27.45539 C 3.7715117,27.111942 3.8038386,27.111942 4.0955909,27.111942 z "
2061 style="opacity:1;color:black;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:white;stroke-width:0.99999964;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
2062 <path
2063 sodipodi:nodetypes="csssssssccssssssssssssccccssscccccccccssssssssssssccsssssssssccccccc"
2064 id="path5388"
2065 d="M 4.9039459,26.500588 C 4.9019723,26.502459 4.9057445,26.514939 4.9039459,26.516406 C 4.89444,26.51889 4.8714034,26.528697 4.8616746,26.532224 C 4.8584281,26.533516 4.8437789,26.530815 4.840539,26.532224 C 4.8373165,26.533749 4.8225981,26.546397 4.8194034,26.548041 C 4.8130911,26.551565 4.8043634,26.559861 4.7982678,26.563859 C 4.7952901,26.565977 4.7800294,26.57744 4.7771322,26.579677 C 4.7743261,26.582033 4.7587013,26.593017 4.7559967,26.595495 C 4.7139608,26.641114 4.6696929,26.720423 4.6080475,26.816941 L 3.1646057,29.221226 C 3.1646057,29.224233 3.1644578,29.234029 3.1646057,29.237043 C 3.1648991,29.240062 3.1641691,29.249843 3.1646057,29.25286 C 3.1651831,29.255877 3.1638899,29.265668 3.1646057,29.268679 C 3.1663094,29.274683 3.1835077,29.294359 3.1857413,29.300313 C 3.1869871,29.303274 3.184369,29.31319 3.1857413,29.316132 C 3.1902312,29.324886 3.2013114,29.339269 3.2068769,29.347766 C 3.2127868,29.356161 3.2211123,29.37137 3.2280125,29.379402 C 3.230418,29.382033 3.2466397,29.392637 3.2491481,29.395219 C 3.2517571,29.39775 3.2675765,29.408562 3.2702837,29.411038 C 3.287102,29.425545 3.313719,29.446427 3.3336905,29.45849 C 3.3370984,29.460423 3.3513413,29.472456 3.3548262,29.474308 C 3.3655167,29.479116 3.3855128,29.485766 3.3970973,29.490126 C 3.4750042,29.516899 3.5780713,29.537579 3.6718601,29.537579 L 18.650036,29.537579 L 18.586629,26.500592 L 5.1153018,26.500588 C 5.0709049,26.500588 5.0221446,26.49941 4.9884883,26.500588 C 4.9806133,26.500623 4.9547729,26.500899 4.9462171,26.500588 C 4.9436075,26.500603 4.9274517,26.500458 4.9250814,26.500588 C 4.9232514,26.502034 4.9059195,26.498718 4.9039459,26.500588 z M 19.83363,26.500592 L 19.897036,27.512921 L 23.553495,27.512921 L 23.38441,26.500592 L 19.83363,26.500592 z M 24.652546,26.500592 L 25.413428,29.537579 L 28.795124,29.537579 C 28.888912,29.537579 28.991979,29.516899 29.069886,29.490126 C 29.081471,29.485766 29.101467,29.479116 29.112157,29.474308 C 29.115641,29.472456 29.129884,29.460423 29.133293,29.45849 C 29.153265,29.446427 29.179882,29.425545 29.1967,29.411038 C 29.199407,29.408562 29.215227,29.39775 29.217835,29.395219 C 29.220344,29.392637 29.236565,29.382033 29.238971,29.379402 C 29.245871,29.37137 29.254196,29.356161 29.260107,29.347766 C 29.265672,29.339269 29.276752,29.324886 29.281242,29.316132 C 29.282614,29.31319 29.279996,29.303274 29.281242,29.300313 C 29.283476,29.294359 29.300674,29.274683 29.302378,29.268679 C 29.303093,29.265668 29.3018,29.255877 29.302378,29.25286 C 29.302814,29.249843 29.302083,29.240062 29.302378,29.237043 C 29.302527,29.234029 29.302378,29.224233 29.302378,29.221226 L 28.119129,26.816941 C 28.057483,26.720424 28.013215,26.641114 27.97118,26.595495 C 27.968475,26.593017 27.95285,26.582033 27.950044,26.579677 C 27.947147,26.57744 27.931886,26.565977 27.928908,26.563859 C 27.922812,26.559861 27.914085,26.551565 27.907773,26.548041 C 27.904579,26.546397 27.88986,26.533749 27.886638,26.532224 C 27.883397,26.530815 27.868747,26.533516 27.865502,26.532224 C 27.855773,26.528697 27.832737,26.51889 27.823231,26.516406 C 27.812787,26.51452 27.796296,26.503902 27.780959,26.500588 C 27.773263,26.49907 27.745738,26.501448 27.738688,26.500588 C 27.705031,26.49941 27.656271,26.500588 27.611875,26.500588 L 24.652546,26.500592 z M 20.679054,28.525249 L 20.002715,29.537579 L 23.891664,29.537579 L 23.04624,28.525249 L 20.679054,28.525249 z "
2066 style="color:black;fill:#d3d7cf;fill-opacity:1;fill-rule:nonzero;stroke:#babdb6;stroke-width:0.99999923;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
2067 <rect
2068 style="color:black;fill:url(#radialGradient3248);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2069 id="rect5390"
2070 width="1"
2071 height="1"
2072 x="5"
2073 y="26"
2074 rx="0.26516503"
2075 ry="0.26516503" />
2076 <rect
2077 style="color:black;fill:url(#radialGradient3245);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2078 id="rect5392"
2079 width="1"
2080 height="1"
2081 x="7"
2082 y="26"
2083 rx="0.26516503"
2084 ry="0.26516503" />
2085 <rect
2086 style="color:black;fill:url(#radialGradient3242);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2087 id="rect5394"
2088 width="1"
2089 height="1"
2090 x="9"
2091 y="26"
2092 rx="0.26516503"
2093 ry="0.26516503" />
2094 <rect
2095 style="color:black;fill:url(#radialGradient3239);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2096 id="rect5396"
2097 width="1"
2098 height="1"
2099 x="11"
2100 y="26"
2101 rx="0.26516503"
2102 ry="0.26516503" />
2103 <rect
2104 style="color:black;fill:url(#radialGradient3236);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2105 id="rect5398"
2106 width="1"
2107 height="1"
2108 x="13"
2109 y="26"
2110 rx="0.26516503"
2111 ry="0.26516503" />
2112 <rect
2113 style="color:black;fill:url(#radialGradient3233);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2114 id="rect5400"
2115 width="1"
2116 height="1"
2117 x="15"
2118 y="26"
2119 rx="0.26516503"
2120 ry="0.26516503" />
2121 <rect
2122 style="color:black;fill:url(#radialGradient3230);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2123 id="rect5402"
2124 width="1"
2125 height="1"
2126 x="17"
2127 y="26"
2128 rx="0.26516503"
2129 ry="0.26516503" />
2130 <rect
2131 style="color:black;fill:url(#radialGradient3224);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2132 id="rect5404"
2133 width="1"
2134 height="1"
2135 x="4"
2136 y="27"
2137 rx="0.26516503"
2138 ry="0.26516503" />
2139 <rect
2140 style="color:black;fill:url(#radialGradient3221);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2141 id="rect5406"
2142 width="1"
2143 height="1"
2144 x="6"
2145 y="27"
2146 rx="0.26516503"
2147 ry="0.26516503" />
2148 <rect
2149 style="color:black;fill:url(#radialGradient3218);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2150 id="rect5408"
2151 width="1"
2152 height="1"
2153 x="8"
2154 y="27"
2155 rx="0.26516503"
2156 ry="0.26516503" />
2157 <rect
2158 style="color:black;fill:url(#radialGradient3215);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2159 id="rect5410"
2160 width="1"
2161 height="1"
2162 x="10"
2163 y="27"
2164 rx="0.26516503"
2165 ry="0.26516503" />
2166 <rect
2167 style="color:black;fill:url(#radialGradient3212);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2168 id="rect5412"
2169 width="1"
2170 height="1"
2171 x="12"
2172 y="27"
2173 rx="0.26516503"
2174 ry="0.26516503" />
2175 <rect
2176 style="color:black;fill:url(#radialGradient3209);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2177 id="rect5414"
2178 width="1"
2179 height="1"
2180 x="14"
2181 y="27"
2182 rx="0.26516503"
2183 ry="0.26516503" />
2184 <rect
2185 style="color:black;fill:url(#radialGradient3206);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2186 id="rect5416"
2187 width="1"
2188 height="1"
2189 x="16"
2190 y="27"
2191 rx="0.26516503"
2192 ry="0.26516503" />
2193 <rect
2194 style="color:black;fill:url(#radialGradient3203);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2195 id="rect5418"
2196 width="1"
2197 height="1"
2198 x="18"
2199 y="27"
2200 rx="0.26516503"
2201 ry="0.26516503" />
2202 <rect
2203 style="color:black;fill:url(#radialGradient3200);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2204 id="rect5420"
2205 width="1"
2206 height="1"
2207 x="5"
2208 y="28"
2209 rx="0.26516503"
2210 ry="0.26516503" />
2211 <rect
2212 style="color:black;fill:url(#radialGradient3197);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2213 id="rect5422"
2214 width="1"
2215 height="1"
2216 x="7"
2217 y="28"
2218 rx="0.26516503"
2219 ry="0.26516503" />
2220 <rect
2221 style="color:black;fill:url(#radialGradient3194);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2222 id="rect5424"
2223 width="1"
2224 height="1"
2225 x="9"
2226 y="28"
2227 rx="0.26516503"
2228 ry="0.26516503" />
2229 <rect
2230 style="color:black;fill:url(#radialGradient3191);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2231 id="rect5426"
2232 width="1"
2233 height="1"
2234 x="11"
2235 y="28"
2236 rx="0.26516503"
2237 ry="0.26516503" />
2238 <rect
2239 style="color:black;fill:url(#radialGradient3188);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2240 id="rect5428"
2241 width="1"
2242 height="1"
2243 x="13"
2244 y="28"
2245 rx="0.26516503"
2246 ry="0.26516503" />
2247 <rect
2248 style="color:black;fill:url(#radialGradient3185);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2249 id="rect5430"
2250 width="1"
2251 height="1"
2252 x="15"
2253 y="28"
2254 rx="0.26516503"
2255 ry="0.26516503" />
2256 <rect
2257 style="color:black;fill:url(#radialGradient3182);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2258 id="rect5432"
2259 width="1"
2260 height="1"
2261 x="17"
2262 y="28"
2263 rx="0.26516503"
2264 ry="0.26516503" />
2265 <rect
2266 style="color:black;fill:url(#radialGradient3176);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2267 id="rect5434"
2268 width="1"
2269 height="1"
2270 x="4"
2271 y="29"
2272 rx="0.26516503"
2273 ry="0.26516503" />
2274 <rect
2275 style="color:black;fill:url(#radialGradient3173);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2276 id="rect5436"
2277 width="1"
2278 height="1"
2279 x="6"
2280 y="29"
2281 rx="0.26516503"
2282 ry="0.26516503" />
2283 <rect
2284 style="color:black;fill:url(#radialGradient3170);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2285 id="rect5438"
2286 width="1"
2287 height="1"
2288 x="8"
2289 y="29"
2290 rx="0.26516503"
2291 ry="0.26516503" />
2292 <rect
2293 style="color:black;fill:url(#radialGradient3167);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2294 id="rect5440"
2295 width="1"
2296 height="1"
2297 x="10"
2298 y="29"
2299 rx="0.26516503"
2300 ry="0.26516503" />
2301 <rect
2302 style="color:black;fill:url(#radialGradient3164);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2303 id="rect5442"
2304 width="1"
2305 height="1"
2306 x="12"
2307 y="29"
2308 rx="0.26516503"
2309 ry="0.26516503" />
2310 <rect
2311 style="color:black;fill:url(#radialGradient3161);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2312 id="rect5444"
2313 width="1"
2314 height="1"
2315 x="14"
2316 y="29"
2317 rx="0.26516503"
2318 ry="0.26516503" />
2319 <rect
2320 style="color:black;fill:url(#radialGradient3158);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2321 id="rect5446"
2322 width="1"
2323 height="1"
2324 x="16"
2325 y="29"
2326 rx="0.26516503"
2327 ry="0.26516503" />
2328 <rect
2329 style="color:black;fill:url(#radialGradient3155);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2330 id="rect5448"
2331 width="1"
2332 height="1"
2333 x="18"
2334 y="29"
2335 rx="0.26516503"
2336 ry="0.26516503" />
2337 <rect
2338 style="color:black;fill:url(#radialGradient3264);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2339 id="rect5450"
2340 width="1"
2341 height="1"
2342 x="21"
2343 y="26"
2344 rx="0.26516503"
2345 ry="0.26516503" />
2346 <rect
2347 style="color:black;fill:url(#radialGradient3266);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2348 id="rect5452"
2349 width="1"
2350 height="1"
2351 x="20"
2352 y="27"
2353 rx="0.26516503"
2354 ry="0.26516503" />
2355 <rect
2356 style="color:black;fill:url(#radialGradient3268);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2357 id="rect5454"
2358 width="1"
2359 height="1"
2360 x="22"
2361 y="27"
2362 rx="0.26516503"
2363 ry="0.26516503" />
2364 <rect
2365 style="color:black;fill:url(#radialGradient3270);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2366 id="rect5456"
2367 width="1"
2368 height="1"
2369 x="21"
2370 y="28"
2371 rx="0.26516503"
2372 ry="0.26516503" />
2373 <rect
2374 style="color:black;fill:url(#radialGradient3272);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2375 id="rect5458"
2376 width="1"
2377 height="1"
2378 x="23"
2379 y="28"
2380 rx="0.26516503"
2381 ry="0.26516503" />
2382 <rect
2383 style="color:black;fill:url(#radialGradient3274);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2384 id="rect5460"
2385 width="1"
2386 height="1"
2387 x="20"
2388 y="29"
2389 rx="0.26516503"
2390 ry="0.26516503" />
2391 <rect
2392 style="color:black;fill:url(#radialGradient3276);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2393 id="rect5462"
2394 width="1"
2395 height="1"
2396 x="22"
2397 y="29"
2398 rx="0.26516503"
2399 ry="0.26516503" />
2400 <rect
2401 style="color:black;fill:url(#radialGradient3292);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2402 id="rect5464"
2403 width="1"
2404 height="1"
2405 x="26"
2406 y="26"
2407 rx="0.26516503"
2408 ry="0.26516503" />
2409 <rect
2410 style="color:black;fill:url(#radialGradient3294);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2411 id="rect5466"
2412 width="1"
2413 height="1"
2414 x="25"
2415 y="27"
2416 rx="0.26516503"
2417 ry="0.26516503" />
2418 <rect
2419 style="color:black;fill:url(#radialGradient3296);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2420 id="rect5468"
2421 width="1"
2422 height="1"
2423 x="27"
2424 y="27"
2425 rx="0.26516503"
2426 ry="0.26516503" />
2427 <rect
2428 style="color:black;fill:url(#radialGradient3298);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2429 id="rect5470"
2430 width="1"
2431 height="1"
2432 x="26"
2433 y="28"
2434 rx="0.26516503"
2435 ry="0.26516503" />
2436 <rect
2437 style="color:black;fill:url(#radialGradient3300);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2438 id="rect5472"
2439 width="1"
2440 height="1"
2441 x="28"
2442 y="28"
2443 rx="0.26516503"
2444 ry="0.26516503" />
2445 <rect
2446 style="color:black;fill:url(#radialGradient3302);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2447 id="rect5474"
2448 width="1"
2449 height="1"
2450 x="25"
2451 y="29"
2452 rx="0.26516503"
2453 ry="0.26516503" />
2454 <rect
2455 style="color:black;fill:url(#radialGradient3304);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
2456 id="rect5476"
2457 width="1"
2458 height="1"
2459 x="27"
2460 y="29"
2461 rx="0.26516503"
2462 ry="0.26516503" />
2463 </g>
2464 </g>
2465 </g>
2466</svg>

Subscribers

People subscribed via source and target branches