diff options
-rw-r--r-- | finesketch.desktop | 7 | ||||
-rw-r--r-- | finesketch.png | bin | 0 -> 5095 bytes | |||
-rw-r--r-- | finesketch.pro | 41 | ||||
-rw-r--r-- | finesketch.svg | 1833 | ||||
-rw-r--r-- | qml/cover/CoverPage.qml | 42 | ||||
-rw-r--r-- | qml/finesketch.qml | 40 | ||||
-rw-r--r-- | qml/items/SketchArea.qml | 84 | ||||
-rw-r--r-- | qml/items/SketchView.qml | 80 | ||||
-rw-r--r-- | qml/pages/SketchPage.qml | 12 | ||||
-rw-r--r-- | rpm/finesketch.changes.in | 15 | ||||
-rw-r--r-- | rpm/finesketch.spec | 72 | ||||
-rw-r--r-- | rpm/finesketch.yaml | 42 | ||||
-rw-r--r-- | src/finesketch.cpp | 26 | ||||
-rw-r--r-- | src/stylus.cpp | 160 | ||||
-rw-r--r-- | src/stylus.h | 59 | ||||
-rw-r--r-- | translations/finesketch-de.ts | 27 | ||||
-rw-r--r-- | translations/finesketch.ts | 4 |
17 files changed, 2544 insertions, 0 deletions
diff --git a/finesketch.desktop b/finesketch.desktop new file mode 100644 index 0000000..fb3ee89 --- /dev/null +++ b/finesketch.desktop @@ -0,0 +1,7 @@ +[Desktop Entry] +Type=Application +X-Nemo-Application-Type=silica-qt5 +Name=Finesketch +Icon=finesketch +Exec=finesketch + diff --git a/finesketch.png b/finesketch.png Binary files differnew file mode 100644 index 0000000..ae641d5 --- /dev/null +++ b/finesketch.png diff --git a/finesketch.pro b/finesketch.pro new file mode 100644 index 0000000..d840436 --- /dev/null +++ b/finesketch.pro @@ -0,0 +1,41 @@ +# NOTICE: +# +# Application name defined in TARGET has a corresponding QML filename. +# If name defined in TARGET is changed, the following needs to be done +# to match new name: +# - corresponding QML filename must be changed +# - desktop icon filename must be changed +# - desktop filename must be changed +# - icon definition filename in desktop file must be changed +# - translation filenames have to be changed + +# The name of your application +TARGET = finesketch + +CONFIG += sailfishapp + +LIBS += -lgato + +SOURCES += src/finesketch.cpp \ + src/stylus.cpp + +OTHER_FILES += qml/finesketch.qml \ + qml/cover/CoverPage.qml \ + rpm/finesketch.changes.in \ + rpm/finesketch.spec \ + rpm/finesketch.yaml \ + translations/*.ts \ + finesketch.desktop \ + finesketch.png \ + qml/items/SketchView.qml \ + qml/pages/SketchPage.qml \ + qml/items/SketchArea.qml + +# to disable building translations every time, comment out the +# following CONFIG line +CONFIG += sailfishapp_i18n +TRANSLATIONS += translations/finesketch-de.ts + +HEADERS += \ + src/stylus.h + diff --git a/finesketch.svg b/finesketch.svg new file mode 100644 index 0000000..f2a10de --- /dev/null +++ b/finesketch.svg @@ -0,0 +1,1833 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 17.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + x="0px" + y="0px" + width="86px" + height="86px" + viewBox="0 0 86 86" + enable-background="new 0 0 86 86" + xml:space="preserve" + id="svg2" + inkscape:version="0.48.4 r9939" + sodipodi:docname="finesketch.svg" + inkscape:export-filename="/home/javier/src/sailfish/finesketch/finesketch.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"><metadata + id="metadata52"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs + id="defs50"><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3164" + id="linearGradient3552" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.1680072,0,0,1.0091871,508.68297,50.7501)" + x1="726.91016" + y1="388.45044" + x2="726.91016" + y2="445.16745" /><linearGradient + id="linearGradient3164"><stop + id="stop3166" + offset="0" + style="stop-color:#383838;stop-opacity:1" /><stop + style="stop-color:#3b3b3b;stop-opacity:1" + offset="0.05754738" + id="stop3172" /><stop + id="stop3174" + offset="0.07978155" + style="stop-color:#626463;stop-opacity:1" /><stop + style="stop-color:#bfbfbf;stop-opacity:1" + offset="0.12359595" + id="stop3176" /><stop + id="stop3178" + offset="0.18899058" + style="stop-color:#808080;stop-opacity:1" /><stop + style="stop-color:#e0e0e0;stop-opacity:1" + offset="0.25765494" + id="stop3180" /><stop + id="stop3182" + offset="0.37405738" + style="stop-color:#ececec;stop-opacity:1" /><stop + style="stop-color:#828282;stop-opacity:1" + offset="0.52577293" + id="stop3184" /><stop + id="stop3186" + offset="0.57285708" + style="stop-color:#818181;stop-opacity:1" /><stop + style="stop-color:#acacac;stop-opacity:1" + offset="0.67356479" + id="stop3188" /><stop + id="stop3190" + offset="0.73765153" + style="stop-color:#bcbcbc;stop-opacity:1" /><stop + style="stop-color:#505050;stop-opacity:1" + offset="0.86451715" + id="stop3192" /><stop + id="stop3194" + offset="0.90767759" + style="stop-color:#333333;stop-opacity:1" /><stop + style="stop-color:#7a7a7c;stop-opacity:1" + offset="0.96260905" + id="stop3196" /><stop + id="stop3168" + offset="1" + style="stop-color:#c9c6c1;stop-opacity:1" /></linearGradient><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3164" + id="linearGradient3556" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.3012701,0,0,1.0091871,209.77505,50.7501)" + x1="726.91016" + y1="388.45044" + x2="726.91016" + y2="445.16745" /><linearGradient + id="linearGradient3752"><stop + id="stop3754" + offset="0" + style="stop-color:#383838;stop-opacity:1" /><stop + style="stop-color:#3b3b3b;stop-opacity:1" + offset="0.05754738" + id="stop3756" /><stop + id="stop3758" + offset="0.07978155" + style="stop-color:#626463;stop-opacity:1" /><stop + style="stop-color:#bfbfbf;stop-opacity:1" + offset="0.12359595" + id="stop3760" /><stop + id="stop3762" + offset="0.18899058" + style="stop-color:#808080;stop-opacity:1" /><stop + style="stop-color:#e0e0e0;stop-opacity:1" + offset="0.25765494" + id="stop3764" /><stop + id="stop3766" + offset="0.37405738" + style="stop-color:#ececec;stop-opacity:1" /><stop + style="stop-color:#828282;stop-opacity:1" + offset="0.52577293" + id="stop3768" /><stop + id="stop3770" + offset="0.57285708" + style="stop-color:#818181;stop-opacity:1" /><stop + style="stop-color:#acacac;stop-opacity:1" + offset="0.67356479" + id="stop3772" /><stop + id="stop3774" + offset="0.73765153" + style="stop-color:#bcbcbc;stop-opacity:1" /><stop + style="stop-color:#505050;stop-opacity:1" + offset="0.86451715" + id="stop3776" /><stop + id="stop3778" + offset="0.90767759" + style="stop-color:#333333;stop-opacity:1" /><stop + style="stop-color:#7a7a7c;stop-opacity:1" + offset="0.96260905" + id="stop3780" /><stop + id="stop3782" + offset="1" + style="stop-color:#c9c6c1;stop-opacity:1" /></linearGradient><filter + color-interpolation-filters="sRGB" + id="filter4844" + inkscape:collect="always"><feGaussianBlur + id="feGaussianBlur4846" + stdDeviation="0.35133472" + inkscape:collect="always" /></filter><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4800" + id="linearGradient3560" + gradientUnits="userSpaceOnUse" + x1="480.07483" + y1="443.00705" + x2="480.07483" + y2="502.34891" /><linearGradient + id="linearGradient4800"><stop + style="stop-color:#383838;stop-opacity:1" + offset="0" + id="stop4802" /><stop + id="stop4804" + offset="0.05754738" + style="stop-color:#3b3b3b;stop-opacity:1" /><stop + style="stop-color:#626463;stop-opacity:1" + offset="0.07978155" + id="stop4806" /><stop + id="stop4808" + offset="0.12359595" + style="stop-color:#bfbfbf;stop-opacity:1" /><stop + style="stop-color:#808080;stop-opacity:1" + offset="0.18899058" + id="stop4810" /><stop + id="stop4812" + offset="0.25765494" + style="stop-color:#e0e0e0;stop-opacity:1" /><stop + style="stop-color:#ececec;stop-opacity:1" + offset="0.37405738" + id="stop4814" /><stop + id="stop4816" + offset="0.52577293" + style="stop-color:#828282;stop-opacity:1" /><stop + style="stop-color:#818181;stop-opacity:1" + offset="0.57285708" + id="stop4818" /><stop + id="stop4820" + offset="0.67356479" + style="stop-color:#acacac;stop-opacity:1" /><stop + style="stop-color:#bcbcbc;stop-opacity:1" + offset="0.73765153" + id="stop4822" /><stop + id="stop4824" + offset="0.86451715" + style="stop-color:#505050;stop-opacity:1" /><stop + style="stop-color:#333333;stop-opacity:1" + offset="0.90767759" + id="stop4826" /><stop + id="stop4828" + offset="0.96260905" + style="stop-color:#7a7a7c;stop-opacity:1" /><stop + style="stop-color:#c9c6c1;stop-opacity:1" + offset="1" + id="stop4830" /></linearGradient><radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4850" + id="radialGradient3563" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,3.9254336,0,-1382.2662)" + cx="508.29752" + cy="471.40497" + fx="506.24673" + fy="469.36499" + r="7.1330748" /><linearGradient + id="linearGradient4850" + inkscape:collect="always"><stop + id="stop4852" + offset="0" + style="stop-color:#ffffff;stop-opacity:1;" /><stop + id="stop4854" + offset="1" + style="stop-color:#ffffff;stop-opacity:0;" /></linearGradient><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4800" + id="linearGradient3567" + gradientUnits="userSpaceOnUse" + x1="480.07483" + y1="443.00705" + x2="480.07483" + y2="502.34891" /><linearGradient + id="linearGradient3812"><stop + style="stop-color:#383838;stop-opacity:1" + offset="0" + id="stop3814" /><stop + id="stop3816" + offset="0.05754738" + style="stop-color:#3b3b3b;stop-opacity:1" /><stop + style="stop-color:#626463;stop-opacity:1" + offset="0.07978155" + id="stop3818" /><stop + id="stop3820" + offset="0.12359595" + style="stop-color:#bfbfbf;stop-opacity:1" /><stop + style="stop-color:#808080;stop-opacity:1" + offset="0.18899058" + id="stop3822" /><stop + id="stop3824" + offset="0.25765494" + style="stop-color:#e0e0e0;stop-opacity:1" /><stop + style="stop-color:#ececec;stop-opacity:1" + offset="0.37405738" + id="stop3826" /><stop + id="stop3828" + offset="0.52577293" + style="stop-color:#828282;stop-opacity:1" /><stop + style="stop-color:#818181;stop-opacity:1" + offset="0.57285708" + id="stop3830" /><stop + id="stop3832" + offset="0.67356479" + style="stop-color:#acacac;stop-opacity:1" /><stop + style="stop-color:#bcbcbc;stop-opacity:1" + offset="0.73765153" + id="stop3834" /><stop + id="stop3836" + offset="0.86451715" + style="stop-color:#505050;stop-opacity:1" /><stop + style="stop-color:#333333;stop-opacity:1" + offset="0.90767759" + id="stop3838" /><stop + id="stop3840" + offset="0.96260905" + style="stop-color:#7a7a7c;stop-opacity:1" /><stop + style="stop-color:#c9c6c1;stop-opacity:1" + offset="1" + id="stop3842" /></linearGradient><radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4850" + id="radialGradient3570" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,3.9254336,0,-1382.2662)" + cx="508.29752" + cy="471.40497" + fx="506.24673" + fy="469.36499" + r="7.1330748" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4800" + id="linearGradient3574" + gradientUnits="userSpaceOnUse" + x1="480.07483" + y1="443.00705" + x2="480.07483" + y2="502.34891" /><linearGradient + id="linearGradient3856"><stop + style="stop-color:#383838;stop-opacity:1" + offset="0" + id="stop3858" /><stop + id="stop3860" + offset="0.05754738" + style="stop-color:#3b3b3b;stop-opacity:1" /><stop + style="stop-color:#626463;stop-opacity:1" + offset="0.07978155" + id="stop3862" /><stop + id="stop3864" + offset="0.12359595" + style="stop-color:#bfbfbf;stop-opacity:1" /><stop + style="stop-color:#808080;stop-opacity:1" + offset="0.18899058" + id="stop3866" /><stop + id="stop3868" + offset="0.25765494" + style="stop-color:#e0e0e0;stop-opacity:1" /><stop + style="stop-color:#ececec;stop-opacity:1" + offset="0.37405738" + id="stop3870" /><stop + id="stop3872" + offset="0.52577293" + style="stop-color:#828282;stop-opacity:1" /><stop + style="stop-color:#818181;stop-opacity:1" + offset="0.57285708" + id="stop3874" /><stop + id="stop3876" + offset="0.67356479" + style="stop-color:#acacac;stop-opacity:1" /><stop + style="stop-color:#bcbcbc;stop-opacity:1" + offset="0.73765153" + id="stop3878" /><stop + id="stop3880" + offset="0.86451715" + style="stop-color:#505050;stop-opacity:1" /><stop + style="stop-color:#333333;stop-opacity:1" + offset="0.90767759" + id="stop3882" /><stop + id="stop3884" + offset="0.96260905" + style="stop-color:#7a7a7c;stop-opacity:1" /><stop + style="stop-color:#c9c6c1;stop-opacity:1" + offset="1" + id="stop3886" /></linearGradient><radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4850" + id="radialGradient3577" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,3.9254336,0,-1382.2662)" + cx="508.29752" + cy="471.40497" + fx="506.24673" + fy="469.36499" + r="7.1330748" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4800" + id="linearGradient3581" + gradientUnits="userSpaceOnUse" + x1="480.07483" + y1="443.00705" + x2="480.07483" + y2="502.34891" /><linearGradient + id="linearGradient3900"><stop + style="stop-color:#383838;stop-opacity:1" + offset="0" + id="stop3902" /><stop + id="stop3904" + offset="0.05754738" + style="stop-color:#3b3b3b;stop-opacity:1" /><stop + style="stop-color:#626463;stop-opacity:1" + offset="0.07978155" + id="stop3906" /><stop + id="stop3908" + offset="0.12359595" + style="stop-color:#bfbfbf;stop-opacity:1" /><stop + style="stop-color:#808080;stop-opacity:1" + offset="0.18899058" + id="stop3910" /><stop + id="stop3912" + offset="0.25765494" + style="stop-color:#e0e0e0;stop-opacity:1" /><stop + style="stop-color:#ececec;stop-opacity:1" + offset="0.37405738" + id="stop3914" /><stop + id="stop3916" + offset="0.52577293" + style="stop-color:#828282;stop-opacity:1" /><stop + style="stop-color:#818181;stop-opacity:1" + offset="0.57285708" + id="stop3918" /><stop + id="stop3920" + offset="0.67356479" + style="stop-color:#acacac;stop-opacity:1" /><stop + style="stop-color:#bcbcbc;stop-opacity:1" + offset="0.73765153" + id="stop3922" /><stop + id="stop3924" + offset="0.86451715" + style="stop-color:#505050;stop-opacity:1" /><stop + style="stop-color:#333333;stop-opacity:1" + offset="0.90767759" + id="stop3926" /><stop + id="stop3928" + offset="0.96260905" + style="stop-color:#7a7a7c;stop-opacity:1" /><stop + style="stop-color:#c9c6c1;stop-opacity:1" + offset="1" + id="stop3930" /></linearGradient><radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4850" + id="radialGradient3584" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,3.9254336,0,-1382.2662)" + cx="508.29752" + cy="471.40497" + fx="506.24673" + fy="469.36499" + r="7.1330748" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4800" + id="linearGradient3588" + gradientUnits="userSpaceOnUse" + x1="480.07483" + y1="443.00705" + x2="480.07483" + y2="502.34891" /><linearGradient + id="linearGradient3944"><stop + style="stop-color:#383838;stop-opacity:1" + offset="0" + id="stop3946" /><stop + id="stop3948" + offset="0.05754738" + style="stop-color:#3b3b3b;stop-opacity:1" /><stop + style="stop-color:#626463;stop-opacity:1" + offset="0.07978155" + id="stop3950" /><stop + id="stop3952" + offset="0.12359595" + style="stop-color:#bfbfbf;stop-opacity:1" /><stop + style="stop-color:#808080;stop-opacity:1" + offset="0.18899058" + id="stop3954" /><stop + id="stop3956" + offset="0.25765494" + style="stop-color:#e0e0e0;stop-opacity:1" /><stop + style="stop-color:#ececec;stop-opacity:1" + offset="0.37405738" + id="stop3958" /><stop + id="stop3960" + offset="0.52577293" + style="stop-color:#828282;stop-opacity:1" /><stop + style="stop-color:#818181;stop-opacity:1" + offset="0.57285708" + id="stop3962" /><stop + id="stop3964" + offset="0.67356479" + style="stop-color:#acacac;stop-opacity:1" /><stop + style="stop-color:#bcbcbc;stop-opacity:1" + offset="0.73765153" + id="stop3966" /><stop + id="stop3968" + offset="0.86451715" + style="stop-color:#505050;stop-opacity:1" /><stop + style="stop-color:#333333;stop-opacity:1" + offset="0.90767759" + id="stop3970" /><stop + id="stop3972" + offset="0.96260905" + style="stop-color:#7a7a7c;stop-opacity:1" /><stop + style="stop-color:#c9c6c1;stop-opacity:1" + offset="1" + id="stop3974" /></linearGradient><radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4850" + id="radialGradient3591" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,3.9254336,0,-1382.2662)" + cx="508.29752" + cy="471.40497" + fx="506.24673" + fy="469.36499" + r="7.1330748" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4800" + id="linearGradient3595" + gradientUnits="userSpaceOnUse" + x1="480.07483" + y1="443.00705" + x2="480.07483" + y2="502.34891" /><linearGradient + id="linearGradient3988"><stop + style="stop-color:#383838;stop-opacity:1" + offset="0" + id="stop3990" /><stop + id="stop3992" + offset="0.05754738" + style="stop-color:#3b3b3b;stop-opacity:1" /><stop + style="stop-color:#626463;stop-opacity:1" + offset="0.07978155" + id="stop3994" /><stop + id="stop3996" + offset="0.12359595" + style="stop-color:#bfbfbf;stop-opacity:1" /><stop + style="stop-color:#808080;stop-opacity:1" + offset="0.18899058" + id="stop3998" /><stop + id="stop4000" + offset="0.25765494" + style="stop-color:#e0e0e0;stop-opacity:1" /><stop + style="stop-color:#ececec;stop-opacity:1" + offset="0.37405738" + id="stop4002" /><stop + id="stop4004" + offset="0.52577293" + style="stop-color:#828282;stop-opacity:1" /><stop + style="stop-color:#818181;stop-opacity:1" + offset="0.57285708" + id="stop4006" /><stop + id="stop4008" + offset="0.67356479" + style="stop-color:#acacac;stop-opacity:1" /><stop + style="stop-color:#bcbcbc;stop-opacity:1" + offset="0.73765153" + id="stop4010" /><stop + id="stop4012" + offset="0.86451715" + style="stop-color:#505050;stop-opacity:1" /><stop + style="stop-color:#333333;stop-opacity:1" + offset="0.90767759" + id="stop4014" /><stop + id="stop4016" + offset="0.96260905" + style="stop-color:#7a7a7c;stop-opacity:1" /><stop + style="stop-color:#c9c6c1;stop-opacity:1" + offset="1" + id="stop4018" /></linearGradient><radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4850" + id="radialGradient3598" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,3.9254336,0,-1382.2662)" + cx="508.29752" + cy="471.40497" + fx="506.24673" + fy="469.36499" + r="7.1330748" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4800" + id="linearGradient3602" + gradientUnits="userSpaceOnUse" + x1="480.07483" + y1="443.00705" + x2="480.07483" + y2="502.34891" /><linearGradient + id="linearGradient4032"><stop + style="stop-color:#383838;stop-opacity:1" + offset="0" + id="stop4034" /><stop + id="stop4036" + offset="0.05754738" + style="stop-color:#3b3b3b;stop-opacity:1" /><stop + style="stop-color:#626463;stop-opacity:1" + offset="0.07978155" + id="stop4038" /><stop + id="stop4040" + offset="0.12359595" + style="stop-color:#bfbfbf;stop-opacity:1" /><stop + style="stop-color:#808080;stop-opacity:1" + offset="0.18899058" + id="stop4042" /><stop + id="stop4044" + offset="0.25765494" + style="stop-color:#e0e0e0;stop-opacity:1" /><stop + style="stop-color:#ececec;stop-opacity:1" + offset="0.37405738" + id="stop4046" /><stop + id="stop4048" + offset="0.52577293" + style="stop-color:#828282;stop-opacity:1" /><stop + style="stop-color:#818181;stop-opacity:1" + offset="0.57285708" + id="stop4050" /><stop + id="stop4052" + offset="0.67356479" + style="stop-color:#acacac;stop-opacity:1" /><stop + style="stop-color:#bcbcbc;stop-opacity:1" + offset="0.73765153" + id="stop4054" /><stop + id="stop4056" + offset="0.86451715" + style="stop-color:#505050;stop-opacity:1" /><stop + style="stop-color:#333333;stop-opacity:1" + offset="0.90767759" + id="stop4058" /><stop + id="stop4060" + offset="0.96260905" + style="stop-color:#7a7a7c;stop-opacity:1" /><stop + style="stop-color:#c9c6c1;stop-opacity:1" + offset="1" + id="stop4062" /></linearGradient><radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4850" + id="radialGradient3605" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,3.9254336,0,-1382.2662)" + cx="508.29752" + cy="471.40497" + fx="506.24673" + fy="469.36499" + r="7.1330748" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4800" + id="linearGradient3610" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(22.460937,0.5)" + x1="480.07483" + y1="443.00705" + x2="480.07483" + y2="502.34891" /><linearGradient + id="linearGradient4080"><stop + style="stop-color:#383838;stop-opacity:1" + offset="0" + id="stop4082" /><stop + id="stop4084" + offset="0.05754738" + style="stop-color:#3b3b3b;stop-opacity:1" /><stop + style="stop-color:#626463;stop-opacity:1" + offset="0.07978155" + id="stop4086" /><stop + id="stop4088" + offset="0.12359595" + style="stop-color:#bfbfbf;stop-opacity:1" /><stop + style="stop-color:#808080;stop-opacity:1" + offset="0.18899058" + id="stop4090" /><stop + id="stop4092" + offset="0.25765494" + style="stop-color:#e0e0e0;stop-opacity:1" /><stop + style="stop-color:#ececec;stop-opacity:1" + offset="0.37405738" + id="stop4094" /><stop + id="stop4096" + offset="0.52577293" + style="stop-color:#828282;stop-opacity:1" /><stop + style="stop-color:#818181;stop-opacity:1" + offset="0.57285708" + id="stop4098" /><stop + id="stop4100" + offset="0.67356479" + style="stop-color:#acacac;stop-opacity:1" /><stop + style="stop-color:#bcbcbc;stop-opacity:1" + offset="0.73765153" + id="stop4102" /><stop + id="stop4104" + offset="0.86451715" + style="stop-color:#505050;stop-opacity:1" /><stop + style="stop-color:#333333;stop-opacity:1" + offset="0.90767759" + id="stop4106" /><stop + id="stop4108" + offset="0.96260905" + style="stop-color:#7a7a7c;stop-opacity:1" /><stop + style="stop-color:#c9c6c1;stop-opacity:1" + offset="1" + id="stop4110" /></linearGradient><radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4850" + id="radialGradient3613" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,3.9254336,22.460937,-1381.7662)" + cx="508.29752" + cy="471.40497" + fx="506.24673" + fy="469.36499" + r="7.1330748" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3164" + id="linearGradient3616" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.2809327,0,0,1.0091871,-753.11664,-9.2499)" + x1="726.91016" + y1="388.45044" + x2="726.91016" + y2="445.16745" /><linearGradient + id="linearGradient4120"><stop + id="stop4122" + offset="0" + style="stop-color:#383838;stop-opacity:1" /><stop + style="stop-color:#3b3b3b;stop-opacity:1" + offset="0.05754738" + id="stop4124" /><stop + id="stop4126" + offset="0.07978155" + style="stop-color:#626463;stop-opacity:1" /><stop + style="stop-color:#bfbfbf;stop-opacity:1" + offset="0.12359595" + id="stop4128" /><stop + id="stop4130" + offset="0.18899058" + style="stop-color:#808080;stop-opacity:1" /><stop + style="stop-color:#e0e0e0;stop-opacity:1" + offset="0.25765494" + id="stop4132" /><stop + id="stop4134" + offset="0.37405738" + style="stop-color:#ececec;stop-opacity:1" /><stop + style="stop-color:#828282;stop-opacity:1" + offset="0.52577293" + id="stop4136" /><stop + id="stop4138" + offset="0.57285708" + style="stop-color:#818181;stop-opacity:1" /><stop + style="stop-color:#acacac;stop-opacity:1" + offset="0.67356479" + id="stop4140" /><stop + id="stop4142" + offset="0.73765153" + style="stop-color:#bcbcbc;stop-opacity:1" /><stop + style="stop-color:#505050;stop-opacity:1" + offset="0.86451715" + id="stop4144" /><stop + id="stop4146" + offset="0.90767759" + style="stop-color:#333333;stop-opacity:1" /><stop + style="stop-color:#7a7a7c;stop-opacity:1" + offset="0.96260905" + id="stop4148" /><stop + id="stop4150" + offset="1" + style="stop-color:#c9c6c1;stop-opacity:1" /></linearGradient><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3164" + id="linearGradient3620" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.2400412,0,0,1.0091871,-59.607089,50.7501)" + x1="726.91016" + y1="388.45044" + x2="726.91016" + y2="445.16745" /><linearGradient + id="linearGradient4153"><stop + id="stop4155" + offset="0" + style="stop-color:#383838;stop-opacity:1" /><stop + style="stop-color:#3b3b3b;stop-opacity:1" + offset="0.05754738" + id="stop4157" /><stop + id="stop4159" + offset="0.07978155" + style="stop-color:#626463;stop-opacity:1" /><stop + style="stop-color:#bfbfbf;stop-opacity:1" + offset="0.12359595" + id="stop4161" /><stop + id="stop4163" + offset="0.18899058" + style="stop-color:#808080;stop-opacity:1" /><stop + style="stop-color:#e0e0e0;stop-opacity:1" + offset="0.25765494" + id="stop4165" /><stop + id="stop4167" + offset="0.37405738" + style="stop-color:#ececec;stop-opacity:1" /><stop + style="stop-color:#828282;stop-opacity:1" + offset="0.52577293" + id="stop4169" /><stop + id="stop4171" + offset="0.57285708" + style="stop-color:#818181;stop-opacity:1" /><stop + style="stop-color:#acacac;stop-opacity:1" + offset="0.67356479" + id="stop4173" /><stop + id="stop4175" + offset="0.73765153" + style="stop-color:#bcbcbc;stop-opacity:1" /><stop + style="stop-color:#505050;stop-opacity:1" + offset="0.86451715" + id="stop4177" /><stop + id="stop4179" + offset="0.90767759" + style="stop-color:#333333;stop-opacity:1" /><stop + style="stop-color:#7a7a7c;stop-opacity:1" + offset="0.96260905" + id="stop4181" /><stop + id="stop4183" + offset="1" + style="stop-color:#c9c6c1;stop-opacity:1" /></linearGradient><clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath24952"><path + inkscape:connector-curvature="0" + style="fill:url(#linearGradient24956);fill-opacity:1;fill-rule:nonzero;stroke:none" + d="M 75.200062,372.5 145.76888,400 c 6.86115,0 12.4375,-12.32 12.4375,-27.5 0,-15.18 -5.57635,-27.5 -12.4375,-27.5 l -70.568818,27.5 z" + id="path24954" + sodipodi:nodetypes="ccscc" /></clipPath><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3164" + id="linearGradient5317" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.1680072,0,0,1.0091871,508.68297,50.7501)" + x1="726.91016" + y1="388.45044" + x2="726.91016" + y2="445.16745" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3164" + id="linearGradient5319" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.3012701,0,0,1.0091871,209.77505,50.7501)" + x1="726.91016" + y1="388.45044" + x2="726.91016" + y2="445.16745" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4800" + id="linearGradient5321" + gradientUnits="userSpaceOnUse" + x1="480.07483" + y1="443.00705" + x2="480.07483" + y2="502.34891" /><radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4850" + id="radialGradient5323" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,3.9254336,0,-1382.2662)" + cx="508.29752" + cy="471.40497" + fx="506.24673" + fy="469.36499" + r="7.1330748" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4800" + id="linearGradient5325" + gradientUnits="userSpaceOnUse" + x1="480.07483" + y1="443.00705" + x2="480.07483" + y2="502.34891" /><radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4850" + id="radialGradient5327" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,3.9254336,0,-1382.2662)" + cx="508.29752" + cy="471.40497" + fx="506.24673" + fy="469.36499" + r="7.1330748" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4800" + id="linearGradient5329" + gradientUnits="userSpaceOnUse" + x1="480.07483" + y1="443.00705" + x2="480.07483" + y2="502.34891" /><radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4850" + id="radialGradient5331" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,3.9254336,0,-1382.2662)" + cx="508.29752" + cy="471.40497" + fx="506.24673" + fy="469.36499" + r="7.1330748" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4800" + id="linearGradient5333" + gradientUnits="userSpaceOnUse" + x1="480.07483" + y1="443.00705" + x2="480.07483" + y2="502.34891" /><radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4850" + id="radialGradient5335" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,3.9254336,0,-1382.2662)" + cx="508.29752" + cy="471.40497" + fx="506.24673" + fy="469.36499" + r="7.1330748" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4800" + id="linearGradient5337" + gradientUnits="userSpaceOnUse" + x1="480.07483" + y1="443.00705" + x2="480.07483" + y2="502.34891" /><radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4850" + id="radialGradient5339" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,3.9254336,0,-1382.2662)" + cx="508.29752" + cy="471.40497" + fx="506.24673" + fy="469.36499" + r="7.1330748" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4800" + id="linearGradient5341" + gradientUnits="userSpaceOnUse" + x1="480.07483" + y1="443.00705" + x2="480.07483" + y2="502.34891" /><radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4850" + id="radialGradient5343" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,3.9254336,0,-1382.2662)" + cx="508.29752" + cy="471.40497" + fx="506.24673" + fy="469.36499" + r="7.1330748" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4800" + id="linearGradient5345" + gradientUnits="userSpaceOnUse" + x1="480.07483" + y1="443.00705" + x2="480.07483" + y2="502.34891" /><radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4850" + id="radialGradient5347" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,3.9254336,0,-1382.2662)" + cx="508.29752" + cy="471.40497" + fx="506.24673" + fy="469.36499" + r="7.1330748" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4800" + id="linearGradient5349" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(22.460937,0.5)" + x1="480.07483" + y1="443.00705" + x2="480.07483" + y2="502.34891" /><radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4850" + id="radialGradient5351" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,3.9254336,22.460937,-1381.7662)" + cx="508.29752" + cy="471.40497" + fx="506.24673" + fy="469.36499" + r="7.1330748" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3164" + id="linearGradient5353" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.2809327,0,0,1.0091871,-753.11664,-9.2499)" + x1="726.91016" + y1="388.45044" + x2="726.91016" + y2="445.16745" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3164" + id="linearGradient5355" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.2400412,0,0,1.0091871,-59.607089,50.7501)" + x1="726.91016" + y1="388.45044" + x2="726.91016" + y2="445.16745" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3164" + id="linearGradient6431" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.1680072,0,0,1.0091871,508.68297,50.7501)" + x1="726.91016" + y1="388.45044" + x2="726.91016" + y2="445.16745" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3164" + id="linearGradient6433" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.3012701,0,0,1.0091871,209.77505,50.7501)" + x1="726.91016" + y1="388.45044" + x2="726.91016" + y2="445.16745" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4800" + id="linearGradient6435" + gradientUnits="userSpaceOnUse" + x1="480.07483" + y1="443.00705" + x2="480.07483" + y2="502.34891" /><radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4850" + id="radialGradient6437" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,3.9254336,0,-1382.2662)" + cx="508.29752" + cy="471.40497" + fx="506.24673" + fy="469.36499" + r="7.1330748" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4800" + id="linearGradient6439" + gradientUnits="userSpaceOnUse" + x1="480.07483" + y1="443.00705" + x2="480.07483" + y2="502.34891" /><radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4850" + id="radialGradient6441" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,3.9254336,0,-1382.2662)" + cx="508.29752" + cy="471.40497" + fx="506.24673" + fy="469.36499" + r="7.1330748" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4800" + id="linearGradient6443" + gradientUnits="userSpaceOnUse" + x1="480.07483" + y1="443.00705" + x2="480.07483" + y2="502.34891" /><radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4850" + id="radialGradient6445" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,3.9254336,0,-1382.2662)" + cx="508.29752" + cy="471.40497" + fx="506.24673" + fy="469.36499" + r="7.1330748" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4800" + id="linearGradient6447" + gradientUnits="userSpaceOnUse" + x1="480.07483" + y1="443.00705" + x2="480.07483" + y2="502.34891" /><radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4850" + id="radialGradient6449" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,3.9254336,0,-1382.2662)" + cx="508.29752" + cy="471.40497" + fx="506.24673" + fy="469.36499" + r="7.1330748" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4800" + id="linearGradient6451" + gradientUnits="userSpaceOnUse" + x1="480.07483" + y1="443.00705" + x2="480.07483" + y2="502.34891" /><radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4850" + id="radialGradient6453" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,3.9254336,0,-1382.2662)" + cx="508.29752" + cy="471.40497" + fx="506.24673" + fy="469.36499" + r="7.1330748" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4800" + id="linearGradient6455" + gradientUnits="userSpaceOnUse" + x1="480.07483" + y1="443.00705" + x2="480.07483" + y2="502.34891" /><radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4850" + id="radialGradient6457" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,3.9254336,0,-1382.2662)" + cx="508.29752" + cy="471.40497" + fx="506.24673" + fy="469.36499" + r="7.1330748" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4800" + id="linearGradient6459" + gradientUnits="userSpaceOnUse" + x1="480.07483" + y1="443.00705" + x2="480.07483" + y2="502.34891" /><radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4850" + id="radialGradient6461" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,3.9254336,0,-1382.2662)" + cx="508.29752" + cy="471.40497" + fx="506.24673" + fy="469.36499" + r="7.1330748" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4800" + id="linearGradient6463" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(22.460937,0.5)" + x1="480.07483" + y1="443.00705" + x2="480.07483" + y2="502.34891" /><radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4850" + id="radialGradient6465" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,3.9254336,22.460937,-1381.7662)" + cx="508.29752" + cy="471.40497" + fx="506.24673" + fy="469.36499" + r="7.1330748" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3164" + id="linearGradient6467" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.2809327,0,0,1.0091871,-753.11664,-9.2499)" + x1="726.91016" + y1="388.45044" + x2="726.91016" + y2="445.16745" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3164" + id="linearGradient6469" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.2400412,0,0,1.0091871,-59.607089,50.7501)" + x1="726.91016" + y1="388.45044" + x2="726.91016" + y2="445.16745" /></defs><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1234" + inkscape:window-height="844" + id="namedview48" + showgrid="false" + inkscape:zoom="1" + inkscape:cx="43.728814" + inkscape:cy="43" + inkscape:window-x="134" + inkscape:window-y="50" + inkscape:window-maximized="0" + inkscape:current-layer="g2788" /><g + id="Layer_2" + display="none" /><g + id="Layer_1" + transform="matrix(-1,0,0,1,86,0)"><g + id="g6"><path + d="m 41.423,85.606 c -0.195,-0.009 -0.407,-0.02 -0.635,-0.033 0.208,0.015 0.422,0.023 0.635,0.033 z" + id="path8" + inkscape:connector-curvature="0" + style="fill:#ffc8a0" /><path + d="m 41.812,85.623 c 0.38,0.01 0.757,0.029 1.139,0.029 -0.526,0 -1.028,-0.021 -1.528,-0.045 0.141,0.006 0.267,0.011 0.389,0.016 z" + id="path10" + inkscape:connector-curvature="0" + style="fill:#ffc8a0" /><path + d="m 0.378,45.164 c -0.013,-0.228 -0.024,-0.44 -0.033,-0.635 0.01,0.212 0.019,0.426 0.033,0.635 z" + id="path12" + inkscape:connector-curvature="0" + style="fill:#ffc8a0" /><path + d="m 0.329,44.139 c 0.005,0.123 0.01,0.249 0.016,0.389 C 0.321,44.028 0.3,43.526 0.3,43 c 0,0.382 0.019,0.759 0.029,1.139 z" + id="path14" + inkscape:connector-curvature="0" + style="fill:#ffc8a0" /></g><linearGradient + id="SVGID_1_" + gradientUnits="userSpaceOnUse" + x1="12.7851" + y1="73.151901" + x2="85.179199" + y2="0.75779998"><stop + offset="0" + style="stop-color:#F5E7B8" + id="stop17" /><stop + offset="0.9951" + style="stop-color:#E6D695" + id="stop19" /></linearGradient><path + d="m 85.603,1.77 c 0,-0.785 -0.637,-1.422 -1.422,-1.422 H 1.722 C 0.937,0.349 0.3,0.985 0.3,1.77 V 43 c 0,23.556 19.096,42.651 42.651,42.651 h 41.23 c 0.785,0 1.422,-0.696 1.422,-1.481 V 1.77 z" + id="path21" + style="fill:url(#SVGID_1_)" + inkscape:connector-curvature="0" /><g + id="g23"><linearGradient + id="SVGID_2_" + gradientUnits="userSpaceOnUse" + x1="18.245199" + y1="32.648602" + x2="67.6576" + y2="-16.7638"><stop + offset="0" + style="stop-color:#00A89A" + id="stop26" /><stop + offset="1" + style="stop-color:#00CFBD" + id="stop28" /></linearGradient><path + d="M 84.181,0.349 H 1.722 C 0.937,0.349 0.3,0.985 0.3,1.77 V 14.703 H 85.603 V 1.77 c 0,-0.785 -0.637,-1.421 -1.422,-1.421 z" + id="path30" + style="fill:url(#SVGID_2_)" + inkscape:connector-curvature="0" /></g><g + id="g32"><rect + x="9.9180002" + y="64.374001" + width="75.781998" + height="1.943" + id="rect34" + style="opacity:0.1" /><rect + x="9.9180002" + y="54.659" + width="75.781998" + height="1.943" + id="rect36" + style="opacity:0.1" /><path + d="M 17.52,77.005 H 85.7 V 75.062 H 15.748 c 0.578,0.667 1.167,1.317 1.772,1.943 z" + id="path38" + inkscape:connector-curvature="0" + style="opacity:0.1" /><rect + x="9.9180002" + y="44.943001" + width="75.781998" + height="1.943" + id="rect40" + style="opacity:0.1" /><rect + x="9.9180002" + y="24.540001" + width="75.781998" + height="1.943" + id="rect42" + style="opacity:0.1" /><rect + x="9.9180002" + y="35.227001" + width="75.781998" + height="1.943" + id="rect44" + style="opacity:0.1" /></g><path + stroke-miterlimit="10" + d="m 20.678,65.274 c 0,0 30.503,-21.463 18.757,-39.858 -6.566,-10.284 -17.864,37.574 2.28,33.225 12.359,-2.668 15.008,-21.865 13.541,-26.726 -2.145,-7.104 -2.429,11.712 4.86,8.068 7.288,-3.644 5.137,-13.216 11.53,-14.758" + id="path46" + inkscape:connector-curvature="0" + style="opacity:0.5;fill:none;stroke:#a0a2a4;stroke-width:7;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10" /></g><g + transform="matrix(0.05393348,-0.10349855,0.10381179,0.05409671,45.152889,44.019918)" + id="g2788"><g + id="g6277" + transform="translate(19.156815,-0.31974909)"><g + id="g25115" + transform="matrix(1.2164812,-0.1894525,0.18636917,1.2121356,-290.27471,-311.92041)"><g + id="g3265" + transform="translate(-131.20145,0)"><path + inkscape:connector-curvature="0" + id="rect3222" + d="m 629.12087,445 c 0,18.33333 0,36.66667 0,55 13.02433,-0.35959 26.19755,0.72836 39.12646,-0.55902 18.75166,-10.82395 18.75163,-43.058 -1e-5,-53.88196 C 655.34669,444.30527 642.12274,445.33563 629.12087,445 z" + style="fill:url(#linearGradient6431);fill-opacity:1;fill-rule:nonzero;stroke:none" /><path + inkscape:connector-curvature="0" + id="path3263" + d="m 629.12087,445 c 0,18.33333 0,36.66667 0,55 13.02433,-0.35959 26.19755,0.72836 39.12646,-0.55902 18.75166,-10.82395 18.75163,-43.058 -1e-5,-53.88196 C 655.34669,444.30527 642.12274,445.33563 629.12087,445 z" + style="opacity:0.7;fill:#ef2929;fill-opacity:1;fill-rule:nonzero;stroke:none" /></g><path + inkscape:connector-curvature="0" + id="rect3218" + d="m 425.74903,445 c 0,18.33333 0,36.66667 0,55 30.43594,0 60.87189,0 91.30783,0 15.53775,-7.53918 13.85775,-30.58711 9.59484,-44.9893 -2.25985,-12.05424 -14.39811,-10.04183 -23.3436,-10.0107 -25.85302,0 -51.70605,0 -77.55907,0 z" + style="fill:url(#linearGradient6433);fill-opacity:1;fill-rule:nonzero;stroke:none" /><g + id="g4858" + transform="translate(-51.5625,0)"><path + inkscape:connector-curvature="0" + id="path4842" + d="m 495.29752,444.5 c 10.54807,6.0698 14.0526,29.14278 9.02008,43.35254 -2.09293,8.89497 -16.76579,18.31375 -1.61708,7.72317 7.88334,-14.72362 8.22074,-35.21126 -2.18425,-48.76321 -1.34089,-1.34778 -3.27958,-2.32198 -5.21875,-2.3125 z" + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter4844)" /><path + inkscape:connector-curvature="0" + id="path4832" + d="m 495.39515,444.5 c 10.54807,6.0698 14.0526,29.14278 9.02008,43.35254 -2.09293,8.89497 -16.76579,18.31375 -1.61708,7.72317 7.88334,-14.72362 8.22074,-35.21126 -2.18425,-48.76321 -1.34089,-1.34778 -3.27958,-2.32198 -5.21875,-2.3125 z" + style="fill:url(#linearGradient6435);fill-opacity:1;fill-rule:nonzero;stroke:none" /><path + inkscape:connector-curvature="0" + id="path4848" + d="m 495.29752,444.5 c 10.54807,6.0698 14.0526,29.14278 9.02008,43.35254 -2.09293,8.89497 -16.76579,18.31375 -1.61708,7.72317 7.88334,-14.72362 8.22074,-35.21126 -2.18425,-48.76321 -1.34089,-1.34778 -3.27958,-2.32198 -5.21875,-2.3125 z" + style="fill:url(#radialGradient6437);fill-opacity:1;fill-rule:nonzero;stroke:none" /></g><g + id="g4955" + transform="translate(-4.9718446,0)"><g + id="g4883" + transform="translate(-31.640625,0)"><path + inkscape:connector-curvature="0" + id="path4885" + d="m 495.29752,444.5 c 10.54807,6.0698 14.0526,29.14278 9.02008,43.35254 -2.09293,8.89497 -16.76579,18.31375 -1.61708,7.72317 7.88334,-14.72362 8.22074,-35.21126 -2.18425,-48.76321 -1.34089,-1.34778 -3.27958,-2.32198 -5.21875,-2.3125 z" + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter4844)" /><path + inkscape:connector-curvature="0" + id="path4887" + d="m 495.39515,444.5 c 10.54807,6.0698 14.0526,29.14278 9.02008,43.35254 -2.09293,8.89497 -16.76579,18.31375 -1.61708,7.72317 7.88334,-14.72362 8.22074,-35.21126 -2.18425,-48.76321 -1.34089,-1.34778 -3.27958,-2.32198 -5.21875,-2.3125 z" + style="fill:url(#linearGradient6439);fill-opacity:1;fill-rule:nonzero;stroke:none" /><path + inkscape:connector-curvature="0" + id="path4889" + d="m 495.29752,444.5 c 10.54807,6.0698 14.0526,29.14278 9.02008,43.35254 -2.09293,8.89497 -16.76579,18.31375 -1.61708,7.72317 7.88334,-14.72362 8.22074,-35.21126 -2.18425,-48.76321 -1.34089,-1.34778 -3.27958,-2.32198 -5.21875,-2.3125 z" + style="fill:url(#radialGradient6441);fill-opacity:1;fill-rule:nonzero;stroke:none" /></g><g + transform="translate(-25.878906,0)" + id="g4895"><path + inkscape:connector-curvature="0" + id="path4897" + d="m 495.29752,444.5 c 10.54807,6.0698 14.0526,29.14278 9.02008,43.35254 -2.09293,8.89497 -16.76579,18.31375 -1.61708,7.72317 7.88334,-14.72362 8.22074,-35.21126 -2.18425,-48.76321 -1.34089,-1.34778 -3.27958,-2.32198 -5.21875,-2.3125 z" + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter4844)" /><path + inkscape:connector-curvature="0" + id="path4899" + d="m 495.39515,444.5 c 10.54807,6.0698 14.0526,29.14278 9.02008,43.35254 -2.09293,8.89497 -16.76579,18.31375 -1.61708,7.72317 7.88334,-14.72362 8.22074,-35.21126 -2.18425,-48.76321 -1.34089,-1.34778 -3.27958,-2.32198 -5.21875,-2.3125 z" + style="fill:url(#linearGradient6443);fill-opacity:1;fill-rule:nonzero;stroke:none" /><path + inkscape:connector-curvature="0" + id="path4901" + d="m 495.29752,444.5 c 10.54807,6.0698 14.0526,29.14278 9.02008,43.35254 -2.09293,8.89497 -16.76579,18.31375 -1.61708,7.72317 7.88334,-14.72362 8.22074,-35.21126 -2.18425,-48.76321 -1.34089,-1.34778 -3.27958,-2.32198 -5.21875,-2.3125 z" + style="fill:url(#radialGradient6445);fill-opacity:1;fill-rule:nonzero;stroke:none" /></g><g + id="g4907" + transform="translate(-20.117187,0)"><path + inkscape:connector-curvature="0" + id="path4909" + d="m 495.29752,444.5 c 10.54807,6.0698 14.0526,29.14278 9.02008,43.35254 -2.09293,8.89497 -16.76579,18.31375 -1.61708,7.72317 7.88334,-14.72362 8.22074,-35.21126 -2.18425,-48.76321 -1.34089,-1.34778 -3.27958,-2.32198 -5.21875,-2.3125 z" + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter4844)" /><path + inkscape:connector-curvature="0" + id="path4911" + d="m 495.39515,444.5 c 10.54807,6.0698 14.0526,29.14278 9.02008,43.35254 -2.09293,8.89497 -16.76579,18.31375 -1.61708,7.72317 7.88334,-14.72362 8.22074,-35.21126 -2.18425,-48.76321 -1.34089,-1.34778 -3.27958,-2.32198 -5.21875,-2.3125 z" + style="fill:url(#linearGradient6447);fill-opacity:1;fill-rule:nonzero;stroke:none" /><path + inkscape:connector-curvature="0" + id="path4913" + d="m 495.29752,444.5 c 10.54807,6.0698 14.0526,29.14278 9.02008,43.35254 -2.09293,8.89497 -16.76579,18.31375 -1.61708,7.72317 7.88334,-14.72362 8.22074,-35.21126 -2.18425,-48.76321 -1.34089,-1.34778 -3.27958,-2.32198 -5.21875,-2.3125 z" + style="fill:url(#radialGradient6449);fill-opacity:1;fill-rule:nonzero;stroke:none" /></g></g><g + id="g4981" + transform="translate(-0.8286408,0)"><g + transform="translate(-3.1906255,0)" + id="g4919"><path + inkscape:connector-curvature="0" + id="path4921" + d="m 495.29752,444.5 c 10.54807,6.0698 14.0526,29.14278 9.02008,43.35254 -2.09293,8.89497 -16.76579,18.31375 -1.61708,7.72317 7.88334,-14.72362 8.22074,-35.21126 -2.18425,-48.76321 -1.34089,-1.34778 -3.27958,-2.32198 -5.21875,-2.3125 z" + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter4844)" /><path + inkscape:connector-curvature="0" + id="path4923" + d="m 495.39515,444.5 c 10.54807,6.0698 14.0526,29.14278 9.02008,43.35254 -2.09293,8.89497 -16.76579,18.31375 -1.61708,7.72317 7.88334,-14.72362 8.22074,-35.21126 -2.18425,-48.76321 -1.34089,-1.34778 -3.27958,-2.32198 -5.21875,-2.3125 z" + style="fill:url(#linearGradient6451);fill-opacity:1;fill-rule:nonzero;stroke:none" /><path + inkscape:connector-curvature="0" + id="path4925" + d="m 495.29752,444.5 c 10.54807,6.0698 14.0526,29.14278 9.02008,43.35254 -2.09293,8.89497 -16.76579,18.31375 -1.61708,7.72317 7.88334,-14.72362 8.22074,-35.21126 -2.18425,-48.76321 -1.34089,-1.34778 -3.27958,-2.32198 -5.21875,-2.3125 z" + style="fill:url(#radialGradient6453);fill-opacity:1;fill-rule:nonzero;stroke:none" /></g><g + id="g4927" + transform="translate(2.5710935,0)"><path + inkscape:connector-curvature="0" + id="path4929" + d="m 495.29752,444.5 c 10.54807,6.0698 14.0526,29.14278 9.02008,43.35254 -2.09293,8.89497 -16.76579,18.31375 -1.61708,7.72317 7.88334,-14.72362 8.22074,-35.21126 -2.18425,-48.76321 -1.34089,-1.34778 -3.27958,-2.32198 -5.21875,-2.3125 z" + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter4844)" /><path + inkscape:connector-curvature="0" + id="path4931" + d="m 495.39515,444.5 c 10.54807,6.0698 14.0526,29.14278 9.02008,43.35254 -2.09293,8.89497 -16.76579,18.31375 -1.61708,7.72317 7.88334,-14.72362 8.22074,-35.21126 -2.18425,-48.76321 -1.34089,-1.34778 -3.27958,-2.32198 -5.21875,-2.3125 z" + style="fill:url(#linearGradient6455);fill-opacity:1;fill-rule:nonzero;stroke:none" /><path + inkscape:connector-curvature="0" + id="path4933" + d="m 495.29752,444.5 c 10.54807,6.0698 14.0526,29.14278 9.02008,43.35254 -2.09293,8.89497 -16.76579,18.31375 -1.61708,7.72317 7.88334,-14.72362 8.22074,-35.21126 -2.18425,-48.76321 -1.34089,-1.34778 -3.27958,-2.32198 -5.21875,-2.3125 z" + style="fill:url(#radialGradient6457);fill-opacity:1;fill-rule:nonzero;stroke:none" /></g><g + transform="translate(8.3328125,0)" + id="g4935"><path + inkscape:connector-curvature="0" + id="path4937" + d="m 495.29752,444.5 c 10.54807,6.0698 14.0526,29.14278 9.02008,43.35254 -2.09293,8.89497 -16.76579,18.31375 -1.61708,7.72317 7.88334,-14.72362 8.22074,-35.21126 -2.18425,-48.76321 -1.34089,-1.34778 -3.27958,-2.32198 -5.21875,-2.3125 z" + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter4844)" /><path + inkscape:connector-curvature="0" + id="path4939" + d="m 495.39515,444.5 c 10.54807,6.0698 14.0526,29.14278 9.02008,43.35254 -2.09293,8.89497 -16.76579,18.31375 -1.61708,7.72317 7.88334,-14.72362 8.22074,-35.21126 -2.18425,-48.76321 -1.34089,-1.34778 -3.27958,-2.32198 -5.21875,-2.3125 z" + style="fill:url(#linearGradient6459);fill-opacity:1;fill-rule:nonzero;stroke:none" /><path + inkscape:connector-curvature="0" + id="path4941" + d="m 495.29752,444.5 c 10.54807,6.0698 14.0526,29.14278 9.02008,43.35254 -2.09293,8.89497 -16.76579,18.31375 -1.61708,7.72317 7.88334,-14.72362 8.22074,-35.21126 -2.18425,-48.76321 -1.34089,-1.34778 -3.27958,-2.32198 -5.21875,-2.3125 z" + style="fill:url(#radialGradient6461);fill-opacity:1;fill-rule:nonzero;stroke:none" /></g></g><g + id="g5016"><path + inkscape:connector-curvature="0" + id="path4873" + d="m 517.75846,445 c 10.54807,6.0698 14.0526,29.14278 9.02008,43.35254 -2.09293,8.89497 -16.76579,18.31375 -1.61708,7.72317 7.88334,-14.72362 8.22074,-35.21126 -2.18425,-48.76321 -1.34089,-1.34778 -3.27958,-2.32198 -5.21875,-2.3125 z" + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter4844)" /><path + inkscape:connector-curvature="0" + id="path5014" + d="m 518.14749,445 c 10.54807,6.0698 14.0526,29.14278 9.02008,43.35254 -2.09293,8.89497 -16.76579,18.31375 -1.61708,7.72317 7.88334,-14.72362 8.22074,-35.21126 -2.18425,-48.76321 -1.34089,-1.34778 -3.27958,-2.32198 -5.21875,-2.3125 z" + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter4844)" /><path + inkscape:connector-curvature="0" + id="path4875" + d="m 517.85609,445 c 10.54807,6.0698 14.0526,29.14278 9.02008,43.35254 -2.09293,8.89497 -16.76579,18.31375 -1.61708,7.72317 7.88334,-14.72362 8.22074,-35.21126 -2.18425,-48.76321 -1.34089,-1.34778 -3.27958,-2.32198 -5.21875,-2.3125 z" + style="fill:url(#linearGradient6463);fill-opacity:1;fill-rule:nonzero;stroke:none" /><path + inkscape:connector-curvature="0" + id="path4877" + d="m 517.75846,445 c 10.54807,6.0698 14.0526,29.14278 9.02008,43.35254 -2.09293,8.89497 -16.76579,18.31375 -1.61708,7.72317 7.88334,-14.72362 8.22074,-35.21126 -2.18425,-48.76321 -1.34089,-1.34778 -3.27958,-2.32198 -5.21875,-2.3125 z" + style="fill:url(#radialGradient6465);fill-opacity:1;fill-rule:nonzero;stroke:none" /></g></g><g + id="g24999" + transform="matrix(1.2164812,-0.1894525,0.18636917,1.2121356,-279.09257,-239.19229)"><path + inkscape:connector-curvature="0" + id="rect2392" + d="m 165.1875,385 c 0,18.33333 0,36.66667 0,55 92.61458,0 185.22917,0 277.84375,0 15.53774,-7.53918 13.85776,-30.58712 9.59483,-44.9893 C 450.36702,382.9588 438.23189,384.96799 429.2877,385 c -88.0334,0 -176.0668,0 -264.1002,0 z" + style="fill:url(#linearGradient6467);fill-opacity:1;fill-rule:nonzero;stroke:none" /><path + inkscape:connector-curvature="0" + id="path3258" + d="m 165.1875,385 c 0,18.33333 0,36.66667 0,55 92.61458,0 185.22917,0 277.84375,0 15.53774,-7.53918 13.85776,-30.58712 9.59483,-44.9893 C 450.36702,382.9588 438.23189,384.96799 429.2877,385 c -88.0334,0 -176.0668,0 -264.1002,0 z" + style="opacity:0.7;fill:#8ae234;fill-opacity:1;fill-rule:nonzero;stroke:none" /></g><g + id="g25005" + transform="matrix(1.5484648,-0.24115501,0.18636917,1.2121356,-346.18099,-303.21368)"><path + inkscape:connector-curvature="0" + id="rect3226" + d="m 93.982586,472.5 c 23.522934,9.16667 47.045874,18.33333 70.568814,27.5 15.1574,-6.87857 13.55759,-28.98103 10.31129,-42.87207 -1.47824,-11.01812 -11.76029,-14.26204 -20.03999,-8.33675 -20.28003,7.90294 -40.56007,15.80588 -60.840114,23.70882 z" + style="fill:url(#linearGradient6469);fill-opacity:1;fill-rule:nonzero;stroke:none" /><g + transform="translate(18.782524,100)" + clip-path="url(#clipPath24952)" + id="g24846"><g + id="g24398" + transform="translate(0,-100)"><path + inkscape:connector-curvature="0" + id="path24400" + d="m 75.406386,472.9666 c 28.776054,11.04616 57.552104,22.09233 86.328154,33.13849" + style="fill:none;stroke:#8f5902;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24402" + d="m 75.405526,472.96047 c 28.849164,10.78654 57.698334,21.57309 86.547494,32.35963" + style="fill:none;stroke:#915a02;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24404" + d="m 75.404667,472.95434 c 28.922283,10.52692 57.844563,21.05385 86.766843,31.58077" + style="fill:none;stroke:#935c03;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24406" + d="m 75.403807,472.94821 c 28.995393,10.2673 57.990793,20.5346 86.986183,30.8019" + style="fill:none;stroke:#965e04;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24408" + d="m 75.402948,472.94209 c 29.068512,10.00768 58.137022,20.01535 87.205532,30.02303" + style="fill:none;stroke:#985f04;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24410" + d="m 75.402088,472.93596 c 29.141622,9.74806 58.283252,19.49611 87.424872,29.24417" + style="fill:none;stroke:#9a6105;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24412" + d="m 75.401229,472.92983 c 29.214741,9.48844 58.429481,18.97687 87.644221,28.46531" + style="fill:none;stroke:#9d6306;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24414" + d="m 75.400369,472.9237 c 29.287851,9.22881 58.575711,18.45763 87.863561,27.68644" + style="fill:none;stroke:#9f6507;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24416" + d="m 75.399509,472.91757 c 29.360971,8.96919 58.721941,17.93839 88.082911,26.90758" + style="fill:none;stroke:#a26607;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24418" + d="m 75.39865,472.91144 c 29.43408,8.70957 58.86817,17.41915 88.30225,26.12872" + style="fill:none;stroke:#a46808;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24420" + d="m 75.39779,472.90531 c 29.5072,8.44995 59.0144,16.89991 88.5216,25.34986" + style="fill:none;stroke:#a66a09;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24422" + d="m 75.396931,472.89919 c 29.580309,8.19033 59.160629,16.38065 88.740939,24.57098" + style="fill:none;stroke:#a96b09;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24424" + d="m 75.396071,472.89306 c 29.653429,7.93071 59.306859,15.86141 88.960289,23.79212" + style="fill:none;stroke:#ab6d0a;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24426" + d="m 75.395212,472.88693 c 29.726538,7.67109 59.453088,15.34217 89.179628,23.01326" + style="fill:none;stroke:#ad6f0b;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24428" + d="m 75.394352,472.8808 c 29.799658,7.41147 59.599318,14.82293 89.398978,22.2344" + style="fill:none;stroke:#b0710c;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24430" + d="m 75.393492,472.87467 c 29.872768,7.15184 59.745548,14.30369 89.618318,21.45553" + style="fill:none;stroke:#b2720c;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24432" + d="m 75.392633,472.86854 c 29.945887,6.89222 59.891777,13.78445 89.837667,20.67667" + style="fill:none;stroke:#b5740d;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24434" + d="m 75.391773,472.86241 c 30.019007,6.6326 60.038007,13.26521 90.057007,19.89781" + style="fill:none;stroke:#b7760e;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24436" + d="m 75.390914,472.85629 c 30.092116,6.37298 60.184236,12.74596 90.276356,19.11894" + style="fill:none;stroke:#b9770e;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24438" + d="m 75.390054,472.85016 c 30.165236,6.11336 60.330466,12.22671 90.495696,18.34007" + style="fill:none;stroke:#bc790f;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24440" + d="m 75.389195,472.84403 c 30.238345,5.85374 60.476695,11.70747 90.715045,17.56121" + style="fill:none;stroke:#be7b10;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24442" + d="m 75.388335,472.8379 c 30.311465,5.59412 60.622925,11.18823 90.934385,16.78235" + style="fill:none;stroke:#c17d11;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /></g><g + id="g24444" + transform="translate(0,-100)"><path + inkscape:connector-curvature="0" + id="path24446" + d="m 75.388335,472.8379 c 30.311465,5.59412 60.622925,11.18823 90.934385,16.78235" + style="fill:none;stroke:#c17d11;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24448" + d="m 75.388335,472.8379 c 30.311465,5.59412 60.622925,11.18823 90.934385,16.78235" + style="fill:none;stroke:#c17d11;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24450" + d="m 75.386424,472.83216 c 30.335836,5.33143 60.671666,10.66285 91.007496,15.99428" + style="fill:none;stroke:#c27f15;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24452" + d="m 75.384513,472.82642 c 30.360207,5.06874 60.720407,10.13747 91.080607,15.20621" + style="fill:none;stroke:#c48219;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24454" + d="m 75.382601,472.82067 c 30.384569,4.80605 60.769149,9.6121 91.153719,14.41815" + style="fill:none;stroke:#c6851e;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24456" + d="m 75.38069,472.81493 c 30.40895,4.54336 60.81789,9.08671 91.22684,13.63007" + style="fill:none;stroke:#c88822;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24458" + d="m 75.378779,472.80919 c 30.433321,4.28067 60.866631,8.56133 91.299951,12.842" + style="fill:none;stroke:#ca8b27;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24460" + d="m 75.376868,472.80345 c 30.457692,4.01798 60.915372,8.03595 91.373062,12.05393" + style="fill:none;stroke:#cc8e2b;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24462" + d="m 75.374956,472.7977 c 30.482054,3.75529 60.964114,7.51058 91.446174,11.26587" + style="fill:none;stroke:#ce9130;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24464" + d="m 75.373045,472.79196 c 30.506425,3.4926 61.012855,6.9852 91.519285,10.4778" + style="fill:none;stroke:#d09334;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24466" + d="m 75.371134,472.78622 c 30.530796,3.22991 61.061596,6.45982 91.592396,9.68973" + style="fill:none;stroke:#d29638;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24468" + d="m 75.369223,472.78048 c 30.555167,2.96722 61.110337,5.93444 91.665507,8.90166" + style="fill:none;stroke:#d4993d;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24470" + d="m 75.367311,472.77473 c 30.579539,2.70453 61.159089,5.40906 91.738629,8.11359" + style="fill:none;stroke:#d59c41;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24472" + d="m 75.3654,472.76899 c 30.60391,2.44184 61.20783,4.88368 91.81174,7.32552" + style="fill:none;stroke:#d79f46;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24474" + d="m 75.363489,472.76325 c 30.628281,2.17915 61.256571,4.3583 91.884851,6.53745" + style="fill:none;stroke:#d9a24a;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24476" + d="m 75.361578,472.75751 c 30.652652,1.91646 61.305312,3.83292 91.957962,5.74938" + style="fill:none;stroke:#dba54f;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24478" + d="m 75.359666,472.75176 c 30.677024,1.65377 61.354054,3.30755 92.031074,4.96132" + style="fill:none;stroke:#dda753;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24480" + d="m 75.357755,472.74602 c 30.701395,1.39108 61.402785,2.78217 92.104185,4.17325" + style="fill:none;stroke:#dfaa57;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24482" + d="m 75.355844,472.74028 c 30.725766,1.12839 61.451526,2.25679 92.177296,3.38518" + style="fill:none;stroke:#e1ad5c;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24484" + d="m 75.353933,472.73454 c 30.750137,0.8657 61.500277,1.7314 92.250417,2.5971" + style="fill:none;stroke:#e3b060;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24486" + d="m 75.352021,472.72879 c 30.774509,0.60301 61.549019,1.20603 92.323529,1.80904" + style="fill:none;stroke:#e5b365;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24488" + d="m 75.35011,472.72305 c 30.79888,0.34032 61.59776,0.68065 92.39664,1.02097" + style="fill:none;stroke:#e7b669;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24490" + d="m 75.348199,472.71731 c 30.823251,0.0776 61.646501,0.15527 92.469751,0.2329" + style="fill:none;stroke:#e9b96e;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24492" + d="m 75.348199,472.71731 c 30.823251,0.0776 61.646501,0.15527 92.469751,0.2329" + style="fill:none;stroke:#e9b96e;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /></g><g + id="g24494" + transform="translate(0,-100)"><path + inkscape:connector-curvature="0" + id="path24496" + d="m 75.348199,472.71731 c 30.823251,0.0776 61.646501,0.15527 92.469751,0.2329" + style="fill:none;stroke:#e9b96e;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24498" + d="m 75.348199,472.71731 c 30.823251,0.0776 61.646501,0.15527 92.469751,0.2329" + style="fill:none;stroke:#e9b96e;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24500" + d="m 75.348199,472.71731 c 30.823251,0.0776 61.646501,0.15527 92.469751,0.2329" + style="fill:none;stroke:#e9b96e;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24502" + d="m 75.344848,472.71136 c 30.793802,-0.21861 61.587612,-0.43722 92.381412,-0.65583" + style="fill:none;stroke:#e9bb74;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24504" + d="m 75.341497,472.70541 c 30.764363,-0.51486 61.528723,-1.02971 92.293083,-1.54457" + style="fill:none;stroke:#e9be7a;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24506" + d="m 75.338146,472.69946 c 30.734914,-0.8111 61.469834,-1.6222 92.204744,-2.4333" + style="fill:none;stroke:#e9c080;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24508" + d="m 75.334794,472.69351 c 30.705466,-1.10735 61.410936,-2.21469 92.116406,-3.32204" + style="fill:none;stroke:#e9c386;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24510" + d="m 75.331443,472.68756 c 30.676027,-1.40359 61.352047,-2.80718 92.028077,-4.21077" + style="fill:none;stroke:#eac58c;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24512" + d="m 75.328092,472.6816 c 30.646578,-1.69983 61.293158,-3.39967 91.939738,-5.0995" + style="fill:none;stroke:#eac892;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24514" + d="m 75.324741,472.67565 c 30.617129,-1.99608 61.234269,-3.99215 91.851399,-5.98823" + style="fill:none;stroke:#eaca98;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24516" + d="m 75.32139,472.6697 c 30.58769,-2.29232 61.17538,-4.58465 91.76307,-6.87697" + style="fill:none;stroke:#eacd9e;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24518" + d="m 75.318039,472.66375 c 30.558241,-2.58857 61.116491,-5.17713 91.674731,-7.7657" + style="fill:none;stroke:#ebcfa4;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24520" + d="m 75.314688,472.6578 c 30.528802,-2.88481 61.057592,-5.76963 91.586392,-8.65444" + style="fill:none;stroke:#ebd2aa;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24522" + d="m 75.311336,472.65185 c 30.499354,-3.18106 60.998714,-6.36211 91.498064,-9.54317" + style="fill:none;stroke:#ebd4b0;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24524" + d="m 75.307985,472.6459 c 30.469905,-3.4773 60.939815,-6.95461 91.409725,-10.43191" + style="fill:none;stroke:#ebd7b6;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24526" + d="M 75.304634,472.63995 C 105.7451,468.8664 136.18556,465.09286 166.62602,461.31931" + style="fill:none;stroke:#ecd9bc;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24528" + d="m 75.301283,472.634 c 30.411017,-4.06979 60.822037,-8.13959 91.233057,-12.20938" + style="fill:none;stroke:#ecdcc2;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24530" + d="m 75.297932,472.62805 c 30.381568,-4.36604 60.763148,-8.73207 91.144718,-13.09811" + style="fill:none;stroke:#ecdec8;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24532" + d="m 75.294581,472.62209 c 30.352129,-4.66228 60.704249,-9.32456 91.056379,-13.98684" + style="fill:none;stroke:#ece1ce;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24534" + d="m 75.29123,472.61614 c 30.32268,-4.95852 60.64537,-9.91705 90.96805,-14.87557" + style="fill:none;stroke:#ede3d4;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24536" + d="m 75.287878,472.61019 c 30.293242,-5.25477 60.586472,-10.50954 90.879712,-15.76431" + style="fill:none;stroke:#ede6da;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24538" + d="M 75.284527,472.60424 C 105.54832,467.05323 135.81211,461.50221 166.0759,455.9512" + style="fill:none;stroke:#ede8e0;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24540" + d="m 75.281176,472.59829 c 30.234344,-5.84726 60.468694,-11.69452 90.703044,-17.54178" + style="fill:none;stroke:#edebe6;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24542" + d="m 75.277825,472.59234 c 30.204905,-6.1435 60.409805,-12.28701 90.614705,-18.43051" + style="fill:none;stroke:#eeeeec;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24544" + d="m 75.277825,472.59234 c 30.204905,-6.1435 60.409805,-12.28701 90.614705,-18.43051" + style="fill:none;stroke:#eeeeec;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24546" + d="m 75.277825,472.59234 c 30.204905,-6.1435 60.409805,-12.28701 90.614705,-18.43051" + style="fill:none;stroke:#eeeeec;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /></g><g + id="g24548" + transform="translate(0,-100)"><path + inkscape:connector-curvature="0" + id="path24550" + d="m 75.277825,472.59234 c 30.204905,-6.1435 60.409805,-12.28701 90.614705,-18.43051" + style="fill:none;stroke:#eeeeec;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24552" + d="m 75.277825,472.59234 c 30.204905,-6.1435 60.409805,-12.28701 90.614705,-18.43051" + style="fill:none;stroke:#eeeeec;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24554" + d="m 75.277825,472.59234 c 30.204905,-6.1435 60.409805,-12.28701 90.614705,-18.43051" + style="fill:none;stroke:#eeeeec;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24556" + d="m 75.277825,472.59234 c 30.204905,-6.1435 60.409805,-12.28701 90.614705,-18.43051" + style="fill:none;stroke:#eeeeec;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24558" + d="m 75.274122,472.58794 c 30.134178,-6.3839 60.268358,-12.76779 90.402538,-19.15169" + style="fill:none;stroke:#edebe6;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24560" + d="m 75.270419,472.58355 c 30.063461,-6.6243 60.126911,-13.24859 90.190371,-19.87289" + style="fill:none;stroke:#ede8e0;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24562" + d="m 75.266716,472.57915 c 29.992734,-6.86469 59.985464,-13.72938 89.978194,-20.59407" + style="fill:none;stroke:#ede6da;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24564" + d="M 75.263013,472.57475 C 105.18502,465.46967 135.10703,458.36458 165.02904,451.2595" + style="fill:none;stroke:#ede3d4;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24566" + d="m 75.25931,472.57035 c 29.85129,-7.34548 59.70257,-14.69095 89.55386,-22.03643" + style="fill:none;stroke:#ece1ce;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24568" + d="M 75.255607,472.56596 C 105.03617,464.98008 134.81674,457.39421 164.5973,449.80833" + style="fill:none;stroke:#ecdec8;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24570" + d="m 75.251904,472.56156 c 29.709846,-7.82627 59.419686,-15.65254 89.129526,-23.47881" + style="fill:none;stroke:#ecdcc2;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24572" + d="M 75.248201,472.55716 C 104.88732,464.4905 134.52643,456.42383 164.16555,448.35717" + style="fill:none;stroke:#ecd9bc;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24574" + d="m 75.244498,472.55277 c 29.568392,-8.30706 59.136792,-16.61413 88.705182,-24.92119" + style="fill:none;stroke:#ebd7b6;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24576" + d="M 75.240795,472.54837 C 104.73847,464.00091 134.23614,455.45346 163.73381,446.906" + style="fill:none;stroke:#ebd4b0;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24578" + d="m 75.237092,472.54397 c 29.426948,-8.78785 58.853898,-17.5757 88.280848,-26.36355" + style="fill:none;stroke:#ebd2aa;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24580" + d="m 75.233389,472.53957 c 29.356231,-9.02824 58.712451,-18.05649 88.068681,-27.08473" + style="fill:none;stroke:#ebcfa4;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24582" + d="M 75.229686,472.53518 C 104.51519,463.26654 133.8007,453.99789 163.0862,444.72925" + style="fill:none;stroke:#eacd9e;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24584" + d="m 75.225983,472.53078 c 29.214777,-9.50904 58.429557,-19.01807 87.644337,-28.52711" + style="fill:none;stroke:#eaca98;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24586" + d="m 75.22228,472.52638 c 29.14406,-9.74943 58.28811,-19.49886 87.43217,-29.24829" + style="fill:none;stroke:#eac892;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24588" + d="M 75.218577,472.52199 C 104.29191,462.53216 133.36525,452.54233 162.43858,442.5525" + style="fill:none;stroke:#eac58b;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24590" + d="M 75.214874,472.51759 C 104.21749,462.28737 133.2201,452.05714 162.22271,441.82692" + style="fill:none;stroke:#e9c385;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24592" + d="M 75.211171,472.51319 C 104.14306,462.04257 133.07495,451.57196 162.00684,441.10134" + style="fill:none;stroke:#e9c07f;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24594" + d="M 75.207468,472.50879 C 104.06863,461.79778 132.9298,451.08677 161.79096,440.37576" + style="fill:none;stroke:#e9be79;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24596" + d="M 75.203765,472.5044 C 103.99421,461.55299 132.78465,450.60158 161.57509,439.65017" + style="fill:none;stroke:#e9bb73;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24598" + d="M 75.200062,472.5 C 103.91978,461.3082 132.6395,450.11639 161.35922,438.92459" + style="fill:none;stroke:#e9b96e;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24600" + d="M 75.200062,472.5 C 103.91978,461.3082 132.6395,450.11639 161.35922,438.92459" + style="fill:none;stroke:#e9b96e;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24602" + d="M 75.200062,472.5 C 103.91978,461.3082 132.6395,450.11639 161.35922,438.92459" + style="fill:none;stroke:#e9b96e;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><path + inkscape:connector-curvature="0" + id="path24604" + d="M 75.200062,472.5 C 103.91978,461.3082 132.6395,450.11639 161.35922,438.92459" + style="fill:none;stroke:#e9b96e;stroke-width:0.72133237;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /></g></g><path + inkscape:connector-curvature="0" + id="path24960" + d="m 119.43877,462.5625 c -8.48958,3.3125 -16.97916,6.625 -25.468746,9.9375 8.499996,3.3125 16.999996,6.625 25.499996,9.9375 2.4759,-6.32123 2.46185,-13.5611 -0.0312,-19.875 z" + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" /><path + inkscape:connector-curvature="0" + id="path24976" + d="m 120.6053,465.57172 c -8.7851,2.30636 -17.5702,4.6127 -26.3553,6.91906 9.03807,-0.80706 18.07614,-1.61412 27.11421,-2.42118 l -0.28671,-2.26448 -0.4722,-2.2334 z" + style="opacity:0.57539685;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none" /></g></g></g></svg>
\ No newline at end of file diff --git a/qml/cover/CoverPage.qml b/qml/cover/CoverPage.qml new file mode 100644 index 0000000..7679cfc --- /dev/null +++ b/qml/cover/CoverPage.qml @@ -0,0 +1,42 @@ +/* + Copyright (C) 2013 Jolla Ltd. + Contact: Thomas Perl <thomas.perl@jollamobile.com> + All rights reserved. + + You may use this file under the terms of BSD license as follows: + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Jolla Ltd nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR + ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +import QtQuick 2.0 +import Sailfish.Silica 1.0 + +CoverBackground { + Label { + id: label + anchors.centerIn: parent + text: "Finescript" + } +} + + diff --git a/qml/finesketch.qml b/qml/finesketch.qml new file mode 100644 index 0000000..e116e6f --- /dev/null +++ b/qml/finesketch.qml @@ -0,0 +1,40 @@ +/* + Copyright (C) 2013 Jolla Ltd. + Contact: Thomas Perl <thomas.perl@jollamobile.com> + All rights reserved. + + You may use this file under the terms of BSD license as follows: + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Jolla Ltd nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR + ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +import QtQuick 2.0 +import Sailfish.Silica 1.0 +import "pages" + +ApplicationWindow +{ + id: appWindow + initialPage: Component { SketchPage { } } + cover: Qt.resolvedUrl("cover/CoverPage.qml") +} diff --git a/qml/items/SketchArea.qml b/qml/items/SketchArea.qml new file mode 100644 index 0000000..3a528d9 --- /dev/null +++ b/qml/items/SketchArea.qml @@ -0,0 +1,84 @@ +import QtQuick 2.0 + +SketchView { + id: area + autoRepaint: false + + property color fingerLineColor: Qt.rgba(1.0, 0.0, 0.0, 1.0) + property color stylusLineColor: Qt.rgba(0.0, 0.0, 0.0, 1.0) + property color eraserLineColor: Qt.rgba(1.0, 1.0, 1.0, 1.0) + property real curLineWidth: 4 + + function _boundingBox(points) { + if (!points.length) return Qt.rect(0, 0, 0, 0); + var x1 = points[0].x, y1 = points[0].y; + var x2 = x1, y2 = y1; + + for (var i = 1; i < points.length; i++) { + if (points[i].x < x1) x1 = points[i].x; + if (points[i].y < y1) y1 = points[i].y; + if (points[i].x > x2) x2 = points[i].x; + if (points[i].y > y2) y2 = points[i].y; + } + + return Qt.rect(x1, y1, x2 - x1, y2 - y1); + } + + function _isStylusOn() { + return stylus.pressure > 0.15; + } + function _isEraserOn() { + return !_isStylusOn() && stylus.y > 0.85; + } + + MouseArea { + anchors.fill: parent + preventStealing: true + + onPressed: { + var point = Qt.point(mouse.x, mouse.y); + var stroke = { + lineWidth : curLineWidth, + lineColor : fingerLineColor, + stylus : false, + eraser : false, + boundingBox : Qt.rect(0, 0, area.width, area.height), + points : [point] + } + strokes.push(stroke); + canvas.requestPaint(); + } + onReleased: { + canvas.requestPaint(); + } + onPositionChanged: { + var cur_stroke = strokes[area.strokes.length - 1]; + var point = Qt.point(mouse.x, mouse.y); + var prev_point = cur_stroke.points[cur_stroke.points.length - 1]; + cur_stroke.points.push(point); + cur_stroke.boundingBox = _boundingBox(cur_stroke.points); + + var rect = Qt.rect(Math.floor(Math.min(point.x, prev_point.x) - cur_stroke.lineWidth/2), + Math.floor(Math.min(point.y, prev_point.y) - cur_stroke.lineWidth/2), + Math.ceil(Math.abs(point.x - prev_point.x) + cur_stroke.lineWidth), + Math.ceil(Math.abs(point.y - prev_point.y) + cur_stroke.lineWidth)); + + if (!cur_stroke.stylus) { + if (_isStylusOn()) { + cur_stroke.stylus = true; + cur_stroke.lineColor = stylusLineColor; + canvas.requestPaint(); + return; + } else if (_isEraserOn()) { + cur_stroke.stylus = true; + cur_stroke.eraser = true; + cur_stroke.lineColor = eraserLineColor; + canvas.requestPaint(); + return; + } + } + + canvas.markDirty(rect); + } + } +} diff --git a/qml/items/SketchView.qml b/qml/items/SketchView.qml new file mode 100644 index 0000000..8ded87a --- /dev/null +++ b/qml/items/SketchView.qml @@ -0,0 +1,80 @@ +import QtQuick 2.0 + +Item { + id: view + + property alias fillColor: rectangle.color + property alias border: rectangle.border + + property var strokes: [] + + property bool autoRepaint: true + property alias canvas: canvas + + function _drawStroke(ctx, stroke) { + var points = stroke.points; + ctx.save(); + ctx.lineWidth = stroke.lineWidth; + ctx.strokeStyle = stroke.lineColor; + ctx.lineCap = 'round'; + ctx.lineJoin = 'round'; + ctx.beginPath(); + ctx.moveTo(points[0].x, points[0].y); + for (var i = 1; i < points.length; i++) { + ctx.lineTo(points[i].x, points[i].y); + } + ctx.stroke(); + ctx.restore(); + } + + function _intersect(r1, r2) { + if (!r1.width || !r2.width) return false; + if (!r1.height || !r2.height) return false; + + if (r1.x >= r2.x + r2.width) return false; + if (r1.y >= r2.y + r2.height) return false; + if (r2.x >= r1.x + r1.width) return false; + if (r2.y >= r1.y + r1.height) return false; + return true; + } + + Rectangle { + id: rectangle + anchors.fill: parent + + color: Qt.rgba(1.0, 1.0, 1.0, 0.3) + radius: 10.0 + } + + Canvas { + id: canvas + anchors.fill: parent + + renderTarget: Canvas.Image + renderStrategy: Canvas.Immediate + + onPaint: { + var ctx = canvas.getContext('2d'); + ctx.clearRect(region.x, region.y, region.width, region.height); + + ctx.save(); + ctx.beginPath(); + ctx.rect(region.x, region.y, region.width, region.height); + ctx.clip(); + + for (var i = 0; i < strokes.length; i++) { + if (_intersect(region, strokes[i].boundingBox)) { + _drawStroke(ctx, strokes[i]); + } + } + + ctx.restore(); + } + } + + onStrokesChanged: { + if (autoRepaint) { + canvas.requestPaint(); + } + } +} diff --git a/qml/pages/SketchPage.qml b/qml/pages/SketchPage.qml new file mode 100644 index 0000000..449b2aa --- /dev/null +++ b/qml/pages/SketchPage.qml @@ -0,0 +1,12 @@ +import QtQuick 2.0 +import Sailfish.Silica 1.0 +import "../items" + +Page { + id: sketchPage + + SketchArea { + id: area + anchors.fill: parent + } +} diff --git a/rpm/finesketch.changes.in b/rpm/finesketch.changes.in new file mode 100644 index 0000000..08a66ad --- /dev/null +++ b/rpm/finesketch.changes.in @@ -0,0 +1,15 @@ +# Rename this file as finesketch.changes to include changelog +# entries in your RPM file. +# +# Add new changelog entries following the format below. +# Add newest entries to the top of the list. +# Separate entries from eachother with a blank line. + +# * date Author's Name <author's email> version-release +# - Summary of changes + +* Sun Apr 13 2014 Jack Tar <jack.tar@example.com> 0.0.1-1 +- Scrubbed the deck +- Hoisted the sails + + diff --git a/rpm/finesketch.spec b/rpm/finesketch.spec new file mode 100644 index 0000000..d5ad334 --- /dev/null +++ b/rpm/finesketch.spec @@ -0,0 +1,72 @@ +# +# Do NOT Edit the Auto-generated Part! +# Generated by: spectacle version 0.27 +# + +Name: finesketch + +# >> macros +# << macros + +%{!?qtc_qmake:%define qtc_qmake %qmake} +%{!?qtc_qmake5:%define qtc_qmake5 %qmake5} +%{!?qtc_make:%define qtc_make make} +%{?qtc_builddir:%define _builddir %qtc_builddir} +Summary: My SailfishOS Application +Version: 0.1 +Release: 1 +Group: Qt/Qt +License: LICENSE +URL: http://example.org/ +Source0: %{name}-%{version}.tar.bz2 +Source100: finesketch.yaml +Requires: sailfishsilica-qt5 >= 0.10.9 +BuildRequires: pkgconfig(sailfishapp) >= 1.0.2 +BuildRequires: pkgconfig(Qt5Core) +BuildRequires: pkgconfig(Qt5Qml) +BuildRequires: pkgconfig(Qt5Quick) +BuildRequires: libgato-devel +BuildRequires: desktop-file-utils + +%description +Short description of my SailfishOS Application + + +%prep +%setup -q -n %{name}-%{version} + +# >> setup +# << setup + +%build +# >> build pre +# << build pre + +%qtc_qmake5 + +%qtc_make %{?_smp_mflags} + +# >> build post +# << build post + +%install +rm -rf %{buildroot} +# >> install pre +# << install pre +%qmake5_install + +# >> install post +# << install post + +desktop-file-install --delete-original \ + --dir %{buildroot}%{_datadir}/applications \ + %{buildroot}%{_datadir}/applications/*.desktop + +%files +%defattr(-,root,root,-) +%{_bindir} +%{_datadir}/%{name} +%{_datadir}/applications/%{name}.desktop +%{_datadir}/icons/hicolor/86x86/apps/%{name}.png +# >> files +# << files diff --git a/rpm/finesketch.yaml b/rpm/finesketch.yaml new file mode 100644 index 0000000..accb3d6 --- /dev/null +++ b/rpm/finesketch.yaml @@ -0,0 +1,42 @@ +Name: finesketch +Summary: My SailfishOS Application +Version: 0.1 +Release: 1 +# The contents of the Group field must be one of the groups listed here: +# http://gitorious.org/meego-developer-tools/spectacle/blobs/master/data/GROUPS +Group: Qt/Qt +URL: http://example.org/ +License: LICENSE +# This must be generated before uploading a package to a remote build service. +# Usually this line does not need to be modified. +Sources: +- '%{name}-%{version}.tar.bz2' +Description: | + Short description of my SailfishOS Application +Configure: none +# The qtc5 builder inserts macros to allow QtCreator to have fine +# control over qmake/make execution +Builder: qtc5 + +PkgConfigBR: + - sailfishapp >= 1.0.2 + - Qt5Core + - Qt5Qml + - Qt5Quick + +PkgBR: +- libgato-devel + +Requires: + - sailfishsilica-qt5 >= 0.10.9 + +# All installed files +Files: + - '%{_bindir}' + - '%{_datadir}/%{name}' + - '%{_datadir}/applications/%{name}.desktop' + - '%{_datadir}/icons/hicolor/86x86/apps/%{name}.png' + +# For more information about yaml and what's supported in Sailfish OS +# build system, please see https://wiki.merproject.org/wiki/Spectacle + diff --git a/src/finesketch.cpp b/src/finesketch.cpp new file mode 100644 index 0000000..1a5c45f --- /dev/null +++ b/src/finesketch.cpp @@ -0,0 +1,26 @@ +#include <QtGui/QGuiApplication> +#include <QtQuick/QQuickView> +#include <QtQml/QQmlContext> +#include <sailfishapp.h> +#include "stylus.h" + +int main(int argc, char *argv[]) +{ + QGuiApplication *app = SailfishApp::application(argc, argv); + QQuickView *view = SailfishApp::createView(); + + Stylus *stylus = new Stylus(); + stylus->connectDevice("F4:6A:BC:10:4F:E9"); + + view->rootContext()->setContextProperty("stylus", stylus); + view->setSource(SailfishApp::pathTo("qml/finesketch.qml")); + + view->show(); + + int res = app->exec(); + + delete stylus; + + return res; +} + diff --git a/src/stylus.cpp b/src/stylus.cpp new file mode 100644 index 0000000..f4fd0a8 --- /dev/null +++ b/src/stylus.cpp @@ -0,0 +1,160 @@ +#include <QDataStream> +#include <gato/gato.h> +#include "stylus.h" + +static const QString stylus_name(QString::fromLatin1("JN104FE9")); +static const GatoUUID stylus_service(QString::fromLatin1("dcd68980-aadc-11e1-a22a-0002a5d5c51b")); +static const GatoUUID agg_char_uuid(QString::fromLatin1("00002a5a-0000-1000-8000-00805f9b34fb")); + +Stylus::Stylus(QObject *parent) : + QObject(parent), + _manager(new GatoCentralManager(this)), + _peripheral(0), + _p(0), _x(0), _y(0), _z(0) +{ + connect(_manager, SIGNAL(discoveredPeripheral(GatoPeripheral*,int)), + SLOT(handleDiscoveredPeripheral(GatoPeripheral*,int))); +} + +Stylus::~Stylus() +{ + if (_peripheral) { + disconnect(_peripheral, 0, this, 0); + _peripheral->disconnectPeripheral(); + } +} + +qreal Stylus::pressure() const +{ + return _p; +} + +qreal Stylus::x() const +{ + return _x; +} + +qreal Stylus::y() const +{ + return _y; +} + +qreal Stylus::z() const +{ + return _z; +} + +void Stylus::connectToAnyDevice() +{ + _manager->scanForPeripherals(); +} + +void Stylus::connectDevice(const QString &addr) +{ + connectToPeripheral(new GatoPeripheral(GatoAddress(addr), this)); +} + +void Stylus::disconnectDevice() +{ + if (_peripheral) { + _peripheral->disconnectPeripheral(); + _peripheral->deleteLater(); + _peripheral = 0; + } +} + +void Stylus::connectToPeripheral(GatoPeripheral *peripheral) +{ + if (_peripheral) { + disconnectDevice(); + } + + _peripheral = peripheral; + + qDebug() << "Connecting to peripheral" << peripheral->name() << peripheral->address().toString(); + + connect(_peripheral, SIGNAL(connected()), SLOT(handleConnected())); + connect(_peripheral, SIGNAL(disconnected()), SLOT(handleDisconnected())); + connect(_peripheral, SIGNAL(servicesDiscovered()), SLOT(handleServices())); + connect(_peripheral, SIGNAL(characteristicsDiscovered(GatoService)), SLOT(handleCharacteristics(GatoService))); + connect(_peripheral, SIGNAL(valueUpdated(GatoCharacteristic,QByteArray)), SLOT(handleValueUpdated(GatoCharacteristic,QByteArray))); + + _peripheral->connectPeripheral(); +} + +void Stylus::handleDiscoveredPeripheral(GatoPeripheral *peripheral, int rssi) +{ + qDebug() << "Found peripheral" << peripheral->address().toString() << peripheral->name() << rssi; + if (peripheral->name() == stylus_name) { + _manager->stopScan(); + connectToPeripheral(peripheral); + } +} +void Stylus::handleConnected() +{ + qDebug() << "Connected to" << _peripheral->name(); + _peripheral->discoverServices(); +} + +void Stylus::handleDisconnected() +{ + qDebug() << "Peripheral disconnected"; +} + +void Stylus::handleServices() +{ + qDebug() << "Services found"; + foreach (const GatoService &service, _peripheral->services()) { + qDebug() << service.uuid(); + if (service.uuid() == stylus_service) { + // Found the service we want + qDebug() << "Found stylus service"; + _peripheral->discoverCharacteristics(service); + } + } +} + +void Stylus::handleCharacteristics(const GatoService &service) +{ + foreach (const GatoCharacteristic &c, service.characteristics()) { + if (c.uuid() == agg_char_uuid) { + qDebug() << c.uuid(); + _peripheral->setNotification(c, true); + } + } +} + +void Stylus::handleValueUpdated(const GatoCharacteristic &characteristic, const QByteArray &value) +{ + if (characteristic.uuid() == agg_char_uuid) { + QDataStream s(value); + s.setByteOrder(QDataStream::BigEndian); + qint16 p, x, y, z; + s >> p >> x >> y >> z; + handleReport(p, x, y, z); + } +} + +void Stylus::handleReport(int p, int x, int y, int z) +{ + qreal newp = p / 7000.0; + if (newp != _p) { + _p = newp; + emit pressureChanged(); + } + qreal newx = x / 268.0; + if (newx != _x) { + _x = newx; + emit xChanged(); + } + qreal newy = y / 268.0; + if (newy != _y) { + _y = newy; + emit yChanged(); + } + qreal newz = z / 268.0; + if (newz != _z) { + _z = newz; + emit zChanged(); + } +} diff --git a/src/stylus.h b/src/stylus.h new file mode 100644 index 0000000..9b845b9 --- /dev/null +++ b/src/stylus.h @@ -0,0 +1,59 @@ +#ifndef STYLUS_H +#define STYLUS_H + +#include <QObject> +#include <gato/gatocentralmanager.h> +#include <gato/gatoperipheral.h> + +class Stylus : public QObject +{ + Q_OBJECT + Q_PROPERTY(qreal pressure READ pressure NOTIFY pressureChanged) + Q_PROPERTY(qreal x READ x NOTIFY xChanged) + Q_PROPERTY(qreal y READ y NOTIFY yChanged) + Q_PROPERTY(qreal z READ z NOTIFY zChanged) + +public: + explicit Stylus(QObject *parent = 0); + ~Stylus(); + + qreal pressure() const; + qreal x() const; + qreal y() const; + qreal z() const; + +signals: + void autoUpdateChanged(); + void pressureChanged(); + void xChanged(); + void yChanged(); + void zChanged(); + +public slots: + void connectToAnyDevice(); + void connectDevice(const QString &addr); + void disconnectDevice(); + +private: + void connectToPeripheral(GatoPeripheral *peripheral); + +private slots: + void handleDiscoveredPeripheral(GatoPeripheral *peripheral, int rssi); + void handleConnected(); + void handleDisconnected(); + void handleServices(); + void handleCharacteristics(const GatoService &service); + void handleValueUpdated(const GatoCharacteristic &characteristic, const QByteArray &value); + void handleReport(int p, int x, int y, int z); + +private: + GatoCentralManager *_manager; + GatoPeripheral *_peripheral; + + qreal _p; + qreal _x; + qreal _y; + qreal _z; +}; + +#endif // STYLUS_H diff --git a/translations/finesketch-de.ts b/translations/finesketch-de.ts new file mode 100644 index 0000000..a4f35ad --- /dev/null +++ b/translations/finesketch-de.ts @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0"> +<context> + <name>FirstPage</name> + <message> + <source>Show Page 2</source> + <translation>Zur Seite 2</translation> + </message> + <message> + <source>UI Template</source> + <translation>UI-Vorlage</translation> + </message> + <message> + <source>Hello Sailors</source> + <translation>Hallo Matrosen</translation> + </message> +</context> +<context> + <name>SecondPage</name> + <message> + <source>Nested Page</source> + <translation>Unterseite</translation> + </message> +</context> +</TS> + diff --git a/translations/finesketch.ts b/translations/finesketch.ts new file mode 100644 index 0000000..07a7469 --- /dev/null +++ b/translations/finesketch.ts @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0"> +</TS> |