diff options
| author | jvoisin | 2019-07-13 21:26:05 +0200 |
|---|---|---|
| committer | jvoisin | 2019-07-13 21:26:05 +0200 |
| commit | 4999209f9ce01c824020f5b68403c5b4b52d3e8c (patch) | |
| tree | 82f9dbb319be771d26f6f04ed8f76f9b1875fa04 | |
| parent | bdd55810330701e13dd9a0a5f6bb34652fe601eb (diff) | |
Add support for svg
| -rw-r--r-- | README.md | 1 | ||||
| -rw-r--r-- | libmat2/images.py | 34 | ||||
| -rw-r--r-- | tests/data/dirty.svg | 636 | ||||
| -rw-r--r-- | tests/data/embedded.docx | bin | 24601 -> 24316 bytes | |||
| -rw-r--r-- | tests/data/embedded.odt | bin | 33019 -> 32651 bytes | |||
| -rw-r--r-- | tests/test_libmat2.py | 28 |
6 files changed, 695 insertions, 4 deletions
| @@ -30,6 +30,7 @@ metadata. | |||
| 30 | - `python3-mutagen` for audio support | 30 | - `python3-mutagen` for audio support |
| 31 | - `python3-gi-cairo` and `gir1.2-poppler-0.18` for PDF support | 31 | - `python3-gi-cairo` and `gir1.2-poppler-0.18` for PDF support |
| 32 | - `gir1.2-gdkpixbuf-2.0` for images support | 32 | - `gir1.2-gdkpixbuf-2.0` for images support |
| 33 | - `gir1.2-rsvg-2.0` for svg support | ||
| 33 | - `FFmpeg`, optionally, for video support | 34 | - `FFmpeg`, optionally, for video support |
| 34 | - `libimage-exiftool-perl` for everything else | 35 | - `libimage-exiftool-perl` for everything else |
| 35 | - `bubblewrap`, optionally, for sandboxing | 36 | - `bubblewrap`, optionally, for sandboxing |
diff --git a/libmat2/images.py b/libmat2/images.py index 32a329f..8bef3f8 100644 --- a/libmat2/images.py +++ b/libmat2/images.py | |||
| @@ -1,18 +1,48 @@ | |||
| 1 | import imghdr | 1 | import imghdr |
| 2 | import os | 2 | import os |
| 3 | from typing import Set | 3 | from typing import Set, Dict, Union |
| 4 | 4 | ||
| 5 | import cairo | 5 | import cairo |
| 6 | 6 | ||
| 7 | import gi | 7 | import gi |
| 8 | gi.require_version('GdkPixbuf', '2.0') | 8 | gi.require_version('GdkPixbuf', '2.0') |
| 9 | from gi.repository import GdkPixbuf, GLib | 9 | gi.require_version('Rsvg', '2.0') |
| 10 | from gi.repository import GdkPixbuf, GLib, Rsvg | ||
| 10 | 11 | ||
| 11 | from . import exiftool | 12 | from . import exiftool |
| 12 | 13 | ||
| 13 | # Make pyflakes happy | 14 | # Make pyflakes happy |
| 14 | assert Set | 15 | assert Set |
| 15 | 16 | ||
| 17 | class SVGParser(exiftool.ExiftoolParser): | ||
| 18 | mimetypes = {'image/svg+xml', } | ||
| 19 | meta_allowlist = {'Directory', 'ExifToolVersion', 'FileAccessDate', | ||
| 20 | 'FileInodeChangeDate', 'FileModifyDate', 'FileName', | ||
| 21 | 'FilePermissions', 'FileSize', 'FileType', | ||
| 22 | 'FileTypeExtension', 'ImageHeight', 'ImageWidth', | ||
| 23 | 'MIMEType', 'SVGVersion', 'SourceFile', 'ViewBox' | ||
| 24 | } | ||
| 25 | |||
| 26 | def remove_all(self) -> bool: | ||
| 27 | svg = Rsvg.Handle.new_from_file(self.filename) | ||
| 28 | dimensions = svg.get_dimensions() | ||
| 29 | surface = cairo.SVGSurface(self.output_filename, | ||
| 30 | dimensions.height, | ||
| 31 | dimensions.width) | ||
| 32 | context = cairo.Context(surface) | ||
| 33 | svg.render_cairo(context) | ||
| 34 | surface.finish() | ||
| 35 | return True | ||
| 36 | |||
| 37 | def get_meta(self) -> Dict[str, Union[str, dict]]: | ||
| 38 | meta = super().get_meta() | ||
| 39 | |||
| 40 | # The namespace is mandatory, but thereis only one bossible. | ||
| 41 | ns = 'http://www.w3.org/2000/svg' | ||
| 42 | if meta.get('Xmlns', ns) == ns: | ||
| 43 | meta.pop('Xmlns') | ||
| 44 | return meta | ||
| 45 | |||
| 16 | class PNGParser(exiftool.ExiftoolParser): | 46 | class PNGParser(exiftool.ExiftoolParser): |
| 17 | mimetypes = {'image/png', } | 47 | mimetypes = {'image/png', } |
| 18 | meta_allowlist = {'SourceFile', 'ExifToolVersion', 'FileName', | 48 | meta_allowlist = {'SourceFile', 'ExifToolVersion', 'FileName', |
diff --git a/tests/data/dirty.svg b/tests/data/dirty.svg new file mode 100644 index 0000000..e2bde85 --- /dev/null +++ b/tests/data/dirty.svg | |||
| @@ -0,0 +1,636 @@ | |||
| 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| 2 | <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||
| 3 | |||
| 4 | <svg | ||
| 5 | xmlns:dc="http://purl.org/dc/elements/1.1/" | ||
| 6 | xmlns:cc="http://creativecommons.org/ns#" | ||
| 7 | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||
| 8 | xmlns:svg="http://www.w3.org/2000/svg" | ||
| 9 | xmlns="http://www.w3.org/2000/svg" | ||
| 10 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
| 11 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
| 12 | inkscape:export-ydpi="384" | ||
| 13 | inkscape:export-xdpi="384" | ||
| 14 | inkscape:export-filename="mat2.png" | ||
| 15 | width="128" | ||
| 16 | height="128" | ||
| 17 | id="svg11300" | ||
| 18 | sodipodi:version="0.32" | ||
| 19 | inkscape:version="0.92.3 (2405546, 2018-03-11)" | ||
| 20 | sodipodi:docname="dirty.svg" | ||
| 21 | inkscape:output_extension="org.inkscape.output.svg.inkscape" | ||
| 22 | version="1.0" | ||
| 23 | style="display:inline;enable-background:new" | ||
| 24 | viewBox="0 0 128 128"> | ||
| 25 | <script | ||
| 26 | id="script4600" /> | ||
| 27 | <title | ||
| 28 | id="title4162">Adwaita Icon Template</title> | ||
| 29 | <defs | ||
| 30 | id="defs3" /> | ||
| 31 | <sodipodi:namedview | ||
| 32 | stroke="#ef2929" | ||
| 33 | fill="#f57900" | ||
| 34 | id="base" | ||
| 35 | pagecolor="#ffffff" | ||
| 36 | bordercolor="#666666" | ||
| 37 | borderopacity="0.25490196" | ||
| 38 | inkscape:pageopacity="0.0" | ||
| 39 | inkscape:pageshadow="2" | ||
| 40 | inkscape:zoom="4.0446508" | ||
| 41 | inkscape:cx="61.536232" | ||
| 42 | inkscape:cy="41.548134" | ||
| 43 | inkscape:current-layer="layer1" | ||
| 44 | showgrid="true" | ||
| 45 | inkscape:grid-bbox="true" | ||
| 46 | inkscape:document-units="px" | ||
| 47 | inkscape:showpageshadow="false" | ||
| 48 | inkscape:window-width="1366" | ||
| 49 | inkscape:window-height="747" | ||
| 50 | inkscape:window-x="0" | ||
| 51 | inkscape:window-y="21" | ||
| 52 | width="400px" | ||
| 53 | height="300px" | ||
| 54 | inkscape:snap-nodes="true" | ||
| 55 | inkscape:snap-bbox="false" | ||
| 56 | objecttolerance="7" | ||
| 57 | gridtolerance="12" | ||
| 58 | guidetolerance="13" | ||
| 59 | inkscape:window-maximized="1" | ||
| 60 | inkscape:pagecheckerboard="false" | ||
| 61 | showguides="true" | ||
| 62 | inkscape:guide-bbox="true" | ||
| 63 | inkscape:locked="false" | ||
| 64 | inkscape:measure-start="0,0" | ||
| 65 | inkscape:measure-end="0,0" | ||
| 66 | inkscape:object-nodes="true" | ||
| 67 | inkscape:bbox-nodes="true" | ||
| 68 | inkscape:snap-global="true" | ||
| 69 | inkscape:object-paths="true" | ||
| 70 | inkscape:snap-intersection-paths="true" | ||
| 71 | inkscape:snap-bbox-edge-midpoints="true" | ||
| 72 | inkscape:snap-bbox-midpoints="true" | ||
| 73 | showborder="false" | ||
| 74 | inkscape:snap-center="true" | ||
| 75 | inkscape:snap-object-midpoints="true" | ||
| 76 | inkscape:snap-midpoints="true" | ||
| 77 | inkscape:snap-smooth-nodes="true"> | ||
| 78 | <inkscape:grid | ||
| 79 | type="xygrid" | ||
| 80 | id="grid5883" | ||
| 81 | spacingx="2" | ||
| 82 | spacingy="2" | ||
| 83 | enabled="true" | ||
| 84 | visible="true" | ||
| 85 | empspacing="4" | ||
| 86 | originx="0" | ||
| 87 | originy="0" /> | ||
| 88 | <sodipodi:guide | ||
| 89 | position="64,8" | ||
| 90 | orientation="0,1" | ||
| 91 | id="guide1073" | ||
| 92 | inkscape:locked="false" | ||
| 93 | inkscape:label="" | ||
| 94 | inkscape:color="rgb(0,0,255)" /> | ||
| 95 | <sodipodi:guide | ||
| 96 | position="12,64" | ||
| 97 | orientation="1,0" | ||
| 98 | id="guide1075" | ||
| 99 | inkscape:locked="false" | ||
| 100 | inkscape:label="" | ||
| 101 | inkscape:color="rgb(0,0,255)" /> | ||
| 102 | <sodipodi:guide | ||
| 103 | position="64,104" | ||
| 104 | orientation="0,1" | ||
| 105 | id="guide1099" | ||
| 106 | inkscape:locked="false" | ||
| 107 | inkscape:label="" | ||
| 108 | inkscape:color="rgb(0,0,255)" /> | ||
| 109 | <sodipodi:guide | ||
| 110 | position="64,128" | ||
| 111 | orientation="0,1" | ||
| 112 | id="guide993" | ||
| 113 | inkscape:locked="false" | ||
| 114 | inkscape:label="" | ||
| 115 | inkscape:color="rgb(0,0,255)" /> | ||
| 116 | <sodipodi:guide | ||
| 117 | position="104,64" | ||
| 118 | orientation="1,0" | ||
| 119 | id="guide995" | ||
| 120 | inkscape:locked="false" | ||
| 121 | inkscape:label="" | ||
| 122 | inkscape:color="rgb(0,0,255)" /> | ||
| 123 | <sodipodi:guide | ||
| 124 | position="9.2651362e-08,64" | ||
| 125 | orientation="1,0" | ||
| 126 | id="guide867" | ||
| 127 | inkscape:locked="false" | ||
| 128 | inkscape:label="" | ||
| 129 | inkscape:color="rgb(0,0,255)" /> | ||
| 130 | <sodipodi:guide | ||
| 131 | position="120,64" | ||
| 132 | orientation="1,0" | ||
| 133 | id="guide869" | ||
| 134 | inkscape:locked="false" | ||
| 135 | inkscape:label="" | ||
| 136 | inkscape:color="rgb(0,0,255)" /> | ||
| 137 | <sodipodi:guide | ||
| 138 | position="64,116" | ||
| 139 | orientation="0,1" | ||
| 140 | id="guide871" | ||
| 141 | inkscape:locked="false" | ||
| 142 | inkscape:label="" | ||
| 143 | inkscape:color="rgb(0,0,255)" /> | ||
| 144 | <inkscape:grid | ||
| 145 | type="xygrid" | ||
| 146 | id="grid873" | ||
| 147 | spacingx="1" | ||
| 148 | spacingy="1" | ||
| 149 | empspacing="8" | ||
| 150 | color="#000000" | ||
| 151 | opacity="0.49019608" | ||
| 152 | empcolor="#000000" | ||
| 153 | empopacity="0.08627451" | ||
| 154 | dotted="true" /> | ||
| 155 | <sodipodi:guide | ||
| 156 | position="24,64" | ||
| 157 | orientation="1,0" | ||
| 158 | id="guide877" | ||
| 159 | inkscape:locked="false" | ||
| 160 | inkscape:label="" | ||
| 161 | inkscape:color="rgb(0,0,255)" /> | ||
| 162 | <sodipodi:guide | ||
| 163 | position="116,64" | ||
| 164 | orientation="1,0" | ||
| 165 | id="guide879" | ||
| 166 | inkscape:locked="false" | ||
| 167 | inkscape:label="" | ||
| 168 | inkscape:color="rgb(0,0,255)" /> | ||
| 169 | <sodipodi:guide | ||
| 170 | position="64,120" | ||
| 171 | orientation="0,1" | ||
| 172 | id="guide881" | ||
| 173 | inkscape:locked="false" | ||
| 174 | inkscape:label="" | ||
| 175 | inkscape:color="rgb(0,0,255)" /> | ||
| 176 | <sodipodi:guide | ||
| 177 | position="64,12" | ||
| 178 | orientation="0,1" | ||
| 179 | id="guide883" | ||
| 180 | inkscape:locked="false" | ||
| 181 | inkscape:label="" | ||
| 182 | inkscape:color="rgb(0,0,255)" /> | ||
| 183 | <sodipodi:guide | ||
| 184 | position="8,64" | ||
| 185 | orientation="1,0" | ||
| 186 | id="guide885" | ||
| 187 | inkscape:locked="false" | ||
| 188 | inkscape:label="" | ||
| 189 | inkscape:color="rgb(0,0,255)" /> | ||
| 190 | <sodipodi:guide | ||
| 191 | position="128,64" | ||
| 192 | orientation="1,0" | ||
| 193 | id="guide887" | ||
| 194 | inkscape:locked="false" | ||
| 195 | inkscape:label="" | ||
| 196 | inkscape:color="rgb(0,0,255)" /> | ||
| 197 | <sodipodi:guide | ||
| 198 | position="64,0" | ||
| 199 | orientation="0,1" | ||
| 200 | id="guide897" | ||
| 201 | inkscape:locked="false" | ||
| 202 | inkscape:label="" | ||
| 203 | inkscape:color="rgb(0,0,255)" /> | ||
| 204 | <sodipodi:guide | ||
| 205 | position="64,24" | ||
| 206 | orientation="0,1" | ||
| 207 | id="guide899" | ||
| 208 | inkscape:locked="false" | ||
| 209 | inkscape:label="" | ||
| 210 | inkscape:color="rgb(0,0,255)" /> | ||
| 211 | <sodipodi:guide | ||
| 212 | position="256,256" | ||
| 213 | orientation="-0.70710678,0.70710678" | ||
| 214 | id="guide950" | ||
| 215 | inkscape:locked="false" | ||
| 216 | inkscape:label="" | ||
| 217 | inkscape:color="rgb(0,0,255)" /> | ||
| 218 | <sodipodi:guide | ||
| 219 | position="64,64" | ||
| 220 | orientation="0.70710678,0.70710678" | ||
| 221 | id="guide952" | ||
| 222 | inkscape:locked="false" | ||
| 223 | inkscape:label="" | ||
| 224 | inkscape:color="rgb(0,0,255)" /> | ||
| 225 | </sodipodi:namedview> | ||
| 226 | <metadata | ||
| 227 | id="metadata4"> | ||
| 228 | <rdf:RDF> | ||
| 229 | <cc:Work | ||
| 230 | rdf:about=""> | ||
| 231 | <dc:format>image/svg+xml</dc:format> | ||
| 232 | <dc:type | ||
| 233 | rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||
| 234 | <dc:creator> | ||
| 235 | <cc:Agent> | ||
| 236 | <dc:title>GNOME Design Team</dc:title> | ||
| 237 | </cc:Agent> | ||
| 238 | </dc:creator> | ||
| 239 | <dc:source>mat2's source code</dc:source> | ||
| 240 | <cc:license | ||
| 241 | rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" /> | ||
| 242 | <dc:title>Adwaita Icon Template</dc:title> | ||
| 243 | <dc:subject> | ||
| 244 | <rdf:Bag> | ||
| 245 | <rdf:li>mat2</rdf:li> | ||
| 246 | <rdf:li>logo</rdf:li> | ||
| 247 | <rdf:li>metadata</rdf:li> | ||
| 248 | </rdf:Bag> | ||
| 249 | </dc:subject> | ||
| 250 | <dc:date>2019 07 13</dc:date> | ||
| 251 | <dc:rights> | ||
| 252 | <cc:Agent> | ||
| 253 | <dc:title>LGPL</dc:title> | ||
| 254 | </cc:Agent> | ||
| 255 | </dc:rights> | ||
| 256 | <dc:publisher> | ||
| 257 | <cc:Agent> | ||
| 258 | <dc:title>jvoisin</dc:title> | ||
| 259 | </cc:Agent> | ||
| 260 | </dc:publisher> | ||
| 261 | <dc:identifier>mat2-testdata-svg</dc:identifier> | ||
| 262 | <dc:relation /> | ||
| 263 | <dc:language>English</dc:language> | ||
| 264 | <dc:coverage /> | ||
| 265 | <dc:description>This is a test svg image for mat2's testsuite</dc:description> | ||
| 266 | <dc:contributor> | ||
| 267 | <cc:Agent> | ||
| 268 | <dc:title>jvoisin, and Rose for the design</dc:title> | ||
| 269 | </cc:Agent> | ||
| 270 | </dc:contributor> | ||
| 271 | </cc:Work> | ||
| 272 | <cc:License | ||
| 273 | rdf:about="http://creativecommons.org/licenses/by-sa/4.0/"> | ||
| 274 | <cc:permits | ||
| 275 | rdf:resource="http://creativecommons.org/ns#Reproduction" /> | ||
| 276 | <cc:permits | ||
| 277 | rdf:resource="http://creativecommons.org/ns#Distribution" /> | ||
| 278 | <cc:requires | ||
| 279 | rdf:resource="http://creativecommons.org/ns#Notice" /> | ||
| 280 | <cc:requires | ||
| 281 | rdf:resource="http://creativecommons.org/ns#Attribution" /> | ||
| 282 | <cc:permits | ||
| 283 | rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> | ||
| 284 | <cc:requires | ||
| 285 | rdf:resource="http://creativecommons.org/ns#ShareAlike" /> | ||
| 286 | </cc:License> | ||
| 287 | </rdf:RDF> | ||
| 288 | </metadata> | ||
| 289 | <g | ||
| 290 | id="layer1" | ||
| 291 | inkscape:label="Icon" | ||
| 292 | inkscape:groupmode="layer" | ||
| 293 | style="display:inline" | ||
| 294 | transform="translate(0,-172)"> | ||
| 295 | <g | ||
| 296 | inkscape:groupmode="layer" | ||
| 297 | id="layer2" | ||
| 298 | inkscape:label="baseplate" | ||
| 299 | style="display:none"> | ||
| 300 | <text | ||
| 301 | xml:space="preserve" | ||
| 302 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.33333349px;line-height:125%;font-family:Cantarell;-inkscape-font-specification:'Cantarell, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.33264872;enable-background:new" | ||
| 303 | x="7.9499588" | ||
| 304 | y="148.65199" | ||
| 305 | id="context" | ||
| 306 | inkscape:label="context"><tspan | ||
| 307 | sodipodi:role="line" | ||
| 308 | id="tspan2716" | ||
| 309 | x="7.9499588" | ||
| 310 | y="148.65199" | ||
| 311 | style="font-size:5.33333349px;stroke-width:0.33264872">apps</tspan></text> | ||
| 312 | <text | ||
| 313 | inkscape:label="icon-name" | ||
| 314 | id="text3021" | ||
| 315 | y="157.23398" | ||
| 316 | x="7.7533054" | ||
| 317 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.33333349px;line-height:125%;font-family:Cantarell;-inkscape-font-specification:'Cantarell, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.33264872;enable-background:new" | ||
| 318 | xml:space="preserve"><tspan | ||
| 319 | y="157.23398" | ||
| 320 | x="7.7533054" | ||
| 321 | id="tspan3023" | ||
| 322 | sodipodi:role="line" | ||
| 323 | style="font-size:5.33333349px;stroke-width:0.33264872">org.gnome.</tspan></text> | ||
| 324 | <g | ||
| 325 | style="display:inline;fill:#000000;enable-background:new" | ||
| 326 | transform="matrix(7.9911709,0,0,8.0036407,-167.7909,-4846.0776)" | ||
| 327 | id="g12027" | ||
| 328 | inkscape:export-xdpi="12" | ||
| 329 | inkscape:export-ydpi="12" /> | ||
| 330 | <rect | ||
| 331 | style="display:inline;overflow:visible;visibility:visible;fill:#f0f0f0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;enable-background:accumulate" | ||
| 332 | id="rect13805" | ||
| 333 | width="128" | ||
| 334 | height="128" | ||
| 335 | x="9.2651362e-08" | ||
| 336 | y="172" | ||
| 337 | inkscape:label="512x512" /> | ||
| 338 | <g | ||
| 339 | id="g883" | ||
| 340 | style="fill:none;fill-opacity:0.25098039;stroke:#a579b3;stroke-opacity:1" | ||
| 341 | transform="translate(-24,24)" /> | ||
| 342 | <g | ||
| 343 | id="g900" | ||
| 344 | style="fill:none;fill-opacity:0.25098039;stroke:#a579b3;stroke-opacity:1" | ||
| 345 | transform="translate(-24,24)" /> | ||
| 346 | <g | ||
| 347 | id="g1168" | ||
| 348 | transform="matrix(0.25,0,0,0.25,6.9488522e-8,225)"> | ||
| 349 | <circle | ||
| 350 | cx="256" | ||
| 351 | cy="44" | ||
| 352 | r="240" | ||
| 353 | id="path1142" | ||
| 354 | style="opacity:0.1;fill:#2864b0;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal" /> | ||
| 355 | <rect | ||
| 356 | ry="32" | ||
| 357 | rx="32" | ||
| 358 | y="-180" | ||
| 359 | x="96" | ||
| 360 | height="448" | ||
| 361 | width="319.99979" | ||
| 362 | id="rect1110" | ||
| 363 | style="opacity:0.1;fill:#2864b0;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal" /> | ||
| 364 | <rect | ||
| 365 | ry="32" | ||
| 366 | rx="32" | ||
| 367 | y="-164" | ||
| 368 | x="48" | ||
| 369 | height="416" | ||
| 370 | width="416" | ||
| 371 | id="rect1110-8" | ||
| 372 | style="display:inline;opacity:0.1;fill:#2864b0;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> | ||
| 373 | <rect | ||
| 374 | ry="32" | ||
| 375 | rx="32" | ||
| 376 | y="-116" | ||
| 377 | x="32" | ||
| 378 | height="320" | ||
| 379 | width="448" | ||
| 380 | id="rect1110-8-9" | ||
| 381 | style="display:inline;opacity:0.1;fill:#2864b0;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> | ||
| 382 | </g> | ||
| 383 | </g> | ||
| 384 | <g | ||
| 385 | inkscape:groupmode="layer" | ||
| 386 | id="layer9" | ||
| 387 | inkscape:label="hires" | ||
| 388 | style="display:none" /> | ||
| 389 | <g | ||
| 390 | id="g944" | ||
| 391 | transform="matrix(1,0,0,0.93868822,0,14.545966)"> | ||
| 392 | <path | ||
| 393 | style="fill:#99c1f1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.41013032;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
| 394 | d="m 50.53899,195.25817 6.396029,-11.43484 1.082405,-0.87215 4.821622,-10.46578 0.885604,-0.38763 2.558412,4.74837 2.755213,9.59364 1.672808,1.35667 3.542417,-0.87215 5.707227,12.59771 12.988859,9.59364 3.050415,3.87621 v 2.71335 l -16.334476,-1.25977 -7.084833,1.45359 -4.428021,-0.38763 -7.084833,0.29072 -11.414452,-0.58143 -3.640817,0.96905 -9.052843,-1.64739 -2.066409,0.0969 -1.476008,-0.48452 1.377607,-1.45358 1.869609,-1.06596 6.002428,-11.04722 1.279206,0.48453 5.412025,-6.49267 z" | ||
| 395 | id="path3455" | ||
| 396 | inkscape:connector-curvature="0" /> | ||
| 397 | <path | ||
| 398 | style="fill:#241f31;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 399 | d="m 49.358184,215.31759 -3.444016,0.9206 -9.003641,-1.74429 -1.918809,0.24226 -1.623608,-0.58143 1.574407,-1.50204 1.722008,-0.96905 5.953228,-11.09567 1.279205,0.53298 5.510426,-6.54112 0.344401,0.29072 -4.969223,10.27197 2.214011,1.93811 -0.246001,4.45765 z" | ||
| 400 | id="path3459" | ||
| 401 | inkscape:connector-curvature="0" /> | ||
| 402 | <path | ||
| 403 | style="fill:#241f31;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 404 | d="m 50.438601,195.22912 6.470906,-11.5803 1.113274,-0.6167 4.870575,-10.62099 0.904535,-0.41113 -0.417479,3.3576 0.626218,0.89079 0.834954,15.89722 1.391594,3.70021 -3.687722,5.34476 0.208739,1.37044 -0.347898,5.68737 1.87865,3.28908 7.375442,2.19272 1.252433,2.19272 -0.487057,0.13704 -4.244358,-0.54818 -6.540486,0.41114 -2.435287,-2.19272 -0.626216,-4.24839 -2.087389,-6.16703 -4.035619,-3.42612 -2.087388,-4.38544" | ||
| 405 | id="path3461" | ||
| 406 | inkscape:connector-curvature="0" /> | ||
| 407 | <path | ||
| 408 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 409 | d="m 32.069579,218.11563 c -0.06958,-0.27409 0.695796,-1.23341 0.695796,-1.23341 l 2.783185,-0.0685 1.739491,2.26124 4.661836,5.13919 0.139158,1.57602 -4.174778,5.96145 -0.487057,6.16703 -2.922344,2.26124 -0.06958,1.57601 h -1.113274 l -1.322013,-3.08351 2.017809,-14.86938 z" | ||
| 410 | id="path3400" | ||
| 411 | inkscape:connector-curvature="0" /> | ||
| 412 | <path | ||
| 413 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 414 | d="m 48.83827,222.43255 1.600331,-3.01499 -0.695796,-0.75375 -5.635951,-1.16488 -3.200663,0.82227 -0.06958,1.50749 1.53075,0.75375 1.461174,2.67237 -0.208739,1.71307 1.739489,1.02783 2.296129,-0.54818 z" | ||
| 415 | id="path3402" | ||
| 416 | inkscape:connector-curvature="0" /> | ||
| 417 | <path | ||
| 418 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 419 | d="m 51.203977,217.70449 1.113274,-0.68522 2.365707,1.02784 1.322013,2.67237 -2.226548,2.26125 -1.322013,-0.82227 -1.322013,-0.61671 0.834956,-1.71306 z" | ||
| 420 | id="path3404" | ||
| 421 | inkscape:connector-curvature="0" /> | ||
| 422 | <path | ||
| 423 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 424 | d="m 43.758957,226.61242 1.948228,0.68522 0.417479,1.91863 -0.626216,1.30193 -1.182854,0.34261 -1.113275,1.02784 -0.765376,3.63169 0.626218,3.01499 -1.252435,0.68522 -0.487057,-0.41113 -0.278319,-1.5075 -1.80907,-1.37045 -0.765376,-3.49464 3.618141,-3.42613 1.669912,-2.67237" | ||
| 425 | id="path3406" | ||
| 426 | inkscape:connector-curvature="0" /> | ||
| 427 | <path | ||
| 428 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 429 | d="m 50.57776,223.25481 0.13916,0.68523 -2.783187,3.83726 0.06958,1.64454 -0.626218,1.50749 -1.60033,1.43897 -0.06958,0.75375 1.600333,1.91863 1.182854,3.08351 0.974114,0.68523 1.669911,-2.80942 -0.278318,-3.22056 3.966039,-3.3576 0.695796,-1.09636 -3.270243,-4.45396 z" | ||
| 430 | id="path3408" | ||
| 431 | inkscape:connector-curvature="0" /> | ||
| 432 | <path | ||
| 433 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 434 | d="m 51.839954,236.39856 -0.834826,1.58948 0.166966,1.26061 1.057445,1.97315 0.500896,-0.32886 0.389584,-1.7539 1.447031,-1.151 2.337512,-4.0559 -0.22262,-1.04138 -1.947927,-1.69909 -2.114892,1.31542 0.278276,3.39819 z" | ||
| 435 | id="path3410" | ||
| 436 | inkscape:connector-curvature="0" /> | ||
| 437 | <path | ||
| 438 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 439 | d="m 57.593778,229.84236 -1.043694,1.09636 0.765375,0.89079 1.043695,-0.20556 v -1.43898 z" | ||
| 440 | id="path3412" | ||
| 441 | inkscape:connector-curvature="0" /> | ||
| 442 | <path | ||
| 443 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 444 | d="m 59.344793,218.25267 -0.765376,2.19272 -0.695796,0.27409 -0.695796,1.91863 -2.226548,2.26124 2.574446,3.56317 h 1.182854 l 0.487057,0.75375 0.626217,1.09636 1.948229,1.30193 2.922346,-0.6167 1.53075,-2.26125 -1.043694,-3.3576 -1.043693,-1.64454 1.322011,-2.60385 -0.904535,-1.37045 -2.226548,0.0685 z" | ||
| 445 | id="path3416" | ||
| 446 | inkscape:connector-curvature="0" /> | ||
| 447 | <path | ||
| 448 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 449 | d="m 72.150522,238.17554 -0.518261,1.78635 1.036524,2.16915 1.684349,-2.04155 -0.647826,-2.16915 z" | ||
| 450 | id="path3418" | ||
| 451 | inkscape:connector-curvature="0" /> | ||
| 452 | <path | ||
| 453 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 454 | d="m 66.789813,223.66595 1.600333,-0.75375 1.739489,-4.11135 2.922346,0.75375 1.322013,0.41114 0.139159,6.7152 -1.461172,1.02784 -2.226548,4.17987 -0.834956,-0.41114 -0.626216,0.95932 -2.574448,-0.61671 0.904537,-3.08351 z" | ||
| 455 | id="path3422" | ||
| 456 | inkscape:connector-curvature="0" /> | ||
| 457 | <path | ||
| 458 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 459 | d="m 77.505077,218.59529 1.182854,-0.20557 2.435287,1.30193 -0.974115,1.02783 -2.087389,3.63169 -1.391593,0.0685 -1.113274,-0.61671 1.043695,-2.19271 z" | ||
| 460 | id="path3426" | ||
| 461 | inkscape:connector-curvature="0" /> | ||
| 462 | <path | ||
| 463 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 464 | d="m 73.539038,231.06638 1.043695,-1.30193 1.043694,-2.80942 4.522676,1.71306 -0.974115,2.87795 -1.94823,-0.41114 -1.80907,1.09636 z" | ||
| 465 | id="path3428" | ||
| 466 | inkscape:connector-curvature="0" /> | ||
| 467 | <path | ||
| 468 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 469 | d="m 78.200873,225.6531 7.932079,-7.94861 3.339822,1.09636 0.974115,0.13705 1.600331,-1.02784 3.339822,0.0685 -5.079314,12.81371 -3.200663,-1.98715 0.139161,-1.16489 -0.695798,-0.6167 -0.208737,-1.16488 -1.043696,0.27409 -3.200663,2.39829 z" | ||
| 470 | id="path3430" | ||
| 471 | inkscape:connector-curvature="0" /> | ||
| 472 | <path | ||
| 473 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 474 | d="m 81.401536,230.99786 c 0,-0.2741 2.156968,-1.98716 2.156968,-1.98716 l 2.017811,1.30193 -0.904535,2.32976 -1.182855,0.75375 z" | ||
| 475 | id="path3432" | ||
| 476 | inkscape:connector-curvature="0" /> | ||
| 477 | <path | ||
| 478 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 479 | d="m 81.679855,237.8501 0.765375,-1.91863 0.208739,-1.2334 2.156969,0.20557 2.156968,-2.87795 3.409403,1.02784 -0.904535,2.80942 -0.904535,0.34261 -0.626218,2.80943 1.043694,4.72805 -0.904535,1.09636 -1.80907,-2.19272 -0.626217,-1.37045 z" | ||
| 480 | id="path3434" | ||
| 481 | inkscape:connector-curvature="0" /> | ||
| 482 | <path | ||
| 483 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 484 | d="m 78.131294,238.60385 0.626216,3.08351 -0.626216,3.22056 0.765375,0.95931 -0.626216,5.68737 2.504866,2.32976 1.87865,-0.47965 0.417478,-3.35761 1.669911,-0.0685 3.757301,-1.8501 -0.20874,-1.98716 -2.226548,-0.20556 -1.182854,-3.01499 -3.200662,-2.05568 -1.252434,-2.39828 z" | ||
| 485 | id="path3436" | ||
| 486 | inkscape:connector-curvature="0" /> | ||
| 487 | <path | ||
| 488 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 489 | d="m 84.532619,251.41755 -0.278318,1.43898 -0.695797,0.6167 1.322013,2.67238 2.365709,-0.20557 1.53075,-2.94647 -2.365707,-1.98715 z" | ||
| 490 | id="path3438" | ||
| 491 | inkscape:connector-curvature="0" /> | ||
| 492 | <path | ||
| 493 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 494 | d="m 64.993183,249.51154 -1.14959,2.51583 0.766392,1.69818 2.618509,0.25159 0.702526,1.19502 1.021857,2.39003 -0.574794,2.32714 3.89583,1.88688 0.95799,-1.06923 0.510928,-4.59139 -4.023561,-2.70451 -0.127732,-4.21402 z" | ||
| 495 | id="path3440" | ||
| 496 | inkscape:connector-curvature="0" /> | ||
| 497 | <path | ||
| 498 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 499 | d="m 72.912822,251.00642 h 1.391592 l 2.574446,0.75375 1.391593,1.98715 1.461172,1.30193 -0.139159,3.42612 -3.409402,1.57602 -0.974115,-1.85011 0.626217,-3.3576 -3.270243,-1.85011 z" | ||
| 500 | id="path3442" | ||
| 501 | inkscape:connector-curvature="0" /> | ||
| 502 | <path | ||
| 503 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 504 | d="m 72.147446,264.77944 1.80907,-1.98715 3.339822,-1.85011 1.322013,-0.0685 4.661835,-3.63169 1.391594,0.34261 0.556637,4.52248 -3.200664,4.04283 -2.852765,-0.82227 -1.80907,0.54818 -0.765376,1.43897 -2.087389,0.68522 z" | ||
| 505 | id="path3444" | ||
| 506 | inkscape:connector-curvature="0" /> | ||
| 507 | <path | ||
| 508 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 509 | d="m 75.06979,272.93361 0.765376,-1.30192 1.252433,-0.41114 0.904535,-2.87794 1.94823,-0.61671 0.556637,2.60386 -3.339822,6.0985 -1.391593,-0.0685 z" | ||
| 510 | id="path3446" | ||
| 511 | inkscape:connector-curvature="0" /> | ||
| 512 | <path | ||
| 513 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 514 | d="m 71.451649,268.20556 -1.252433,1.85011 2.504867,1.98715 0.765376,0.82227 1.73949,-2.39829 -2.296127,-2.80942 -1.461173,0.27409 z" | ||
| 515 | id="path3448" | ||
| 516 | inkscape:connector-curvature="0" /> | ||
| 517 | <path | ||
| 518 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 519 | d="m 62.24531,254.0948 1.461172,1.02784 1.948229,0.54818 0.487058,1.64454 -1.461173,2.67237 -0.06958,1.78159 -1.669911,1.85011 -1.252433,-2.05568 0.487057,-2.80942 -1.391593,-0.34261 -0.904535,-2.80942 z" | ||
| 520 | id="path3450" | ||
| 521 | inkscape:connector-curvature="0" /> | ||
| 522 | <path | ||
| 523 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 524 | d="m 47.585836,246.55246 -0.695796,3.70021 -0.139159,1.37045 1.87865,0.68523 1.391592,0.95931 1.809071,-1.64454 -0.417478,-0.95931 z" | ||
| 525 | id="path3452" | ||
| 526 | inkscape:connector-curvature="0" /> | ||
| 527 | <path | ||
| 528 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 529 | d="m 54.682958,247.78586 -1.043694,1.02784 0.208739,1.98715 1.600331,0.89079 0.626217,-0.47965 0.06958,-2.26125 z" | ||
| 530 | id="path3454" | ||
| 531 | inkscape:connector-curvature="0" /> | ||
| 532 | <path | ||
| 533 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 534 | d="m 48.629531,258.95503 4.800994,-6.16703 3.409402,0.82227 0.556637,1.78159 3.131083,4.79657 -1.669911,5.82441 -3.200663,-1.37045 -0.417478,-3.49464 -2.087388,1.30192 z" | ||
| 535 | id="path3456" | ||
| 536 | inkscape:connector-curvature="0" /> | ||
| 537 | <path | ||
| 538 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 539 | d="m 45.915924,252.71948 -0.487056,1.98715 1.60033,1.57602 1.461174,-0.20557 -0.347899,-2.19272 z" | ||
| 540 | id="path3458" | ||
| 541 | inkscape:connector-curvature="0" /> | ||
| 542 | <path | ||
| 543 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 544 | d="m 67.555189,261.6274 -1.80907,2.80943 -2.435287,8.42826 2.783185,3.76874 1.461172,-0.0685 1.113274,-2.12419 1.043696,-0.20557 0.487057,-1.09636 -1.043694,-4.45396 1.182853,-4.31692 z" | ||
| 545 | id="path3460" | ||
| 546 | inkscape:connector-curvature="0" /> | ||
| 547 | <path | ||
| 548 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 549 | d="m 58.718577,267.79443 1.600331,-1.23341 2.017809,1.71306 -0.904535,1.85011 z" | ||
| 550 | id="path3462" | ||
| 551 | inkscape:connector-curvature="0" /> | ||
| 552 | <path | ||
| 553 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 554 | d="m 58.509838,276.49678 2.156968,-4.591 1.391593,-0.27409 0.834955,1.50749 -2.017809,5.13919 z" | ||
| 555 | id="path3464" | ||
| 556 | inkscape:connector-curvature="0" /> | ||
| 557 | <path | ||
| 558 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 559 | d="m 71.242911,274.02997 1.391592,0.20557 1.043694,3.01499 2.01781,0.68522 1.530751,1.57602 -0.904535,2.87795 -2.365707,2.32976 -0.139159,3.56317 -1.322013,1.98715 -2.504867,-1.85011 -0.278318,-2.67237 -1.530752,-1.78159 -1.113274,-3.08351 3.61814,-4.17987 z" | ||
| 560 | id="path3466" | ||
| 561 | inkscape:connector-curvature="0" /> | ||
| 562 | <path | ||
| 563 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 564 | d="m 62.893354,276.5653 3.270244,1.16489 0.06958,3.70021 -0.556637,0.68523 0.974115,3.70021 1.252433,1.64454 0.06958,3.08351 -2.017809,1.37045 -2.574447,8.08566 -2.574447,-1.30193 -1.948229,-9.79872 z" | ||
| 565 | id="path3468" | ||
| 566 | inkscape:connector-curvature="0" /> | ||
| 567 | <path | ||
| 568 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 569 | d="m 58.440258,283.5546 h 0.556637 l 0.417478,0.95931 -0.208739,1.30193 -1.461172,0.13704 z" | ||
| 570 | id="path3472" | ||
| 571 | inkscape:connector-curvature="0" /> | ||
| 572 | <path | ||
| 573 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 574 | d="m 56.700767,279.16916 -1.113274,0.95931 0.834956,2.80943 1.600331,0.20556 0.487058,-2.05567 -0.695796,-1.91863 z" | ||
| 575 | id="path3474" | ||
| 576 | inkscape:connector-curvature="0" /> | ||
| 577 | <path | ||
| 578 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 579 | d="m 53.152207,272.17987 0.139159,5.13918 1.87865,1.23341 0.834955,-0.54818 0.904535,-3.63169 1.530752,-1.57602 -1.669911,-3.97431 -3.548561,3.08352 z" | ||
| 580 | id="path3476" | ||
| 581 | inkscape:connector-curvature="0" /> | ||
| 582 | <path | ||
| 583 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 584 | d="m 45.915924,258.33832 -0.208739,3.83726 -4.731414,3.97431 1.948229,2.80942 8.488716,0.82227 0.417478,1.98715 1.043694,-0.75375 0.487057,-2.19272 1.182854,-1.64454 -0.417478,-1.09635 -1.87865,-2.60386 -3.757299,-1.37045 -1.461174,-3.22056 z" | ||
| 585 | id="path3480" | ||
| 586 | inkscape:connector-curvature="0" /> | ||
| 587 | <path | ||
| 588 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 589 | d="m 40.279975,263.68308 1.669912,0.6167 3.061502,-6.37259 -0.904535,-5.61884 -2.504867,-0.34262 -1.391592,-1.2334 2.156968,-7.606 -2.087388,-4.45396 -3.409402,1.57602 -0.834956,3.42612 -1.87865,0.20557 -0.347898,2.1242 1.530752,1.64454 h 1.322013 l 0.626217,3.90578 2.296127,5.61884 -0.347898,2.19272 z" | ||
| 590 | id="path3482" | ||
| 591 | inkscape:connector-curvature="0" /> | ||
| 592 | <path | ||
| 593 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 594 | d="m 66.531337,247.61066 -0.590018,-0.31657 -0.420783,-1.71262 0.427793,-0.66945 1.306823,-1.13114 2.316342,-1.38746 1.06612,0.23465 -0.01701,2.21105 -2.36166,3.35302 z" | ||
| 595 | id="path4284" | ||
| 596 | inkscape:connector-curvature="0" | ||
| 597 | inkscape:transform-center-x="4.9927099" | ||
| 598 | inkscape:transform-center-y="-9.3161687" /> | ||
| 599 | <path | ||
| 600 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 601 | d="m 72.373733,232.22199 -0.815102,1.03206 4.017286,4.12827 1.571981,0.17201 1.339096,-0.86006 0.931544,0.63071 2.387083,-2.98152 -2.794634,-0.91739 -3.027519,0.22934 z" | ||
| 602 | id="path3601" | ||
| 603 | inkscape:connector-curvature="0" /> | ||
| 604 | <path | ||
| 605 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 606 | d="m 57.407878,237.1102 -1.301737,2.34289 -1.301738,0.61888 -0.17955,1.45878 -4.488748,1.54719 -0.403989,1.50299 0.314213,0.30944 1.032412,0.0884 v 1.41457 l 1.660839,1.50299 2.154598,-1.94504 1.571064,0.35364 2.738136,-1.94504 -1.436399,-2.56392 0.987525,-3.44803 -0.583538,-1.37037 z" | ||
| 607 | id="path3603" | ||
| 608 | inkscape:connector-curvature="0" /> | ||
| 609 | <path | ||
| 610 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 611 | d="m 62.104217,246.96003 5.843936,-6.55723 0.659867,-2.66044 2.221783,-0.40757 -0.386451,-3.39556 -2.000988,-0.60704 -6.246127,-0.36572 -2.624948,2.5137 1.519708,2.75102 -0.347742,5.51876 z" | ||
| 612 | id="path3605" | ||
| 613 | inkscape:connector-curvature="0" /> | ||
| 614 | <path | ||
| 615 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 616 | d="m 71.024647,249.63275 5.822153,1.31875 1.047988,-3.89891 -1.280874,-1.43343 0.523995,-6.02038 -3.551515,5.275 0.34933,2.06413 -2.037753,0.80272 -1.164431,0.45869 z" | ||
| 617 | id="path3607" | ||
| 618 | inkscape:connector-curvature="0" /> | ||
| 619 | <path | ||
| 620 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 621 | d="m 59.099222,247.24427 -2.095974,1.72011 -0.05822,1.60543 0.465772,1.72011 1.455539,0.97473 -0.407551,0.97473 2.328861,-0.34402 2.27064,-2.86685 -1.571981,-0.57337 -0.640437,-2.86685 -1.51376,-0.40136 z" | ||
| 622 | id="path3609" | ||
| 623 | inkscape:connector-curvature="0" /> | ||
| 624 | <path | ||
| 625 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 626 | d="m 44.078067,234.34346 0.291107,4.47228 -1.863089,1.43342 2.095976,3.72691 2.037753,0.0573 2.27064,-3.55489 -2.969297,-4.98831 z" | ||
| 627 | id="path3611" | ||
| 628 | inkscape:connector-curvature="0" /> | ||
| 629 | <path | ||
| 630 | style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
| 631 | d="m 44.660282,245.46683 -3.318627,4.30027 1.339096,1.26141 2.561747,-0.28668 1.222652,-3.15354 z" | ||
| 632 | id="path3613" | ||
| 633 | inkscape:connector-curvature="0" /> | ||
| 634 | </g> | ||
| 635 | </g> | ||
| 636 | </svg> | ||
diff --git a/tests/data/embedded.docx b/tests/data/embedded.docx index b134724..615e522 100644 --- a/tests/data/embedded.docx +++ b/tests/data/embedded.docx | |||
| Binary files differ | |||
diff --git a/tests/data/embedded.odt b/tests/data/embedded.odt index 62bf8cc..c5fffc8 100644 --- a/tests/data/embedded.odt +++ b/tests/data/embedded.odt | |||
| Binary files differ | |||
diff --git a/tests/test_libmat2.py b/tests/test_libmat2.py index 64e679f..796d2f1 100644 --- a/tests/test_libmat2.py +++ b/tests/test_libmat2.py | |||
| @@ -73,13 +73,13 @@ class TestParameterInjection(unittest.TestCase): | |||
| 73 | 73 | ||
| 74 | 74 | ||
| 75 | class TestUnsupportedEmbeddedFiles(unittest.TestCase): | 75 | class TestUnsupportedEmbeddedFiles(unittest.TestCase): |
| 76 | def test_odt_with_svg(self): | 76 | def test_odt_with_py(self): |
| 77 | shutil.copy('./tests/data/embedded.odt', './tests/data/clean.odt') | 77 | shutil.copy('./tests/data/embedded.odt', './tests/data/clean.odt') |
| 78 | p = office.LibreOfficeParser('./tests/data/clean.odt') | 78 | p = office.LibreOfficeParser('./tests/data/clean.odt') |
| 79 | self.assertFalse(p.remove_all()) | 79 | self.assertFalse(p.remove_all()) |
| 80 | os.remove('./tests/data/clean.odt') | 80 | os.remove('./tests/data/clean.odt') |
| 81 | 81 | ||
| 82 | def test_docx_with_svg(self): | 82 | def test_docx_with_py(self): |
| 83 | shutil.copy('./tests/data/embedded.docx', './tests/data/clean.docx') | 83 | shutil.copy('./tests/data/embedded.docx', './tests/data/clean.docx') |
| 84 | p = office.MSOfficeParser('./tests/data/clean.docx') | 84 | p = office.MSOfficeParser('./tests/data/clean.docx') |
| 85 | self.assertFalse(p.remove_all()) | 85 | self.assertFalse(p.remove_all()) |
| @@ -862,3 +862,27 @@ class TestCleaning(unittest.TestCase): | |||
| 862 | os.remove('./tests/data/dirty.tar.xz') | 862 | os.remove('./tests/data/dirty.tar.xz') |
| 863 | os.remove('./tests/data/dirty.cleaned.tar.xz') | 863 | os.remove('./tests/data/dirty.cleaned.tar.xz') |
| 864 | os.remove('./tests/data/dirty.cleaned.cleaned.tar.xz') | 864 | os.remove('./tests/data/dirty.cleaned.cleaned.tar.xz') |
| 865 | |||
| 866 | def test_svg(self): | ||
| 867 | shutil.copy('./tests/data/dirty.svg', './tests/data/clean.svg') | ||
| 868 | p = images.SVGParser('./tests/data/clean.svg') | ||
| 869 | |||
| 870 | meta = p.get_meta() | ||
| 871 | self.assertEqual(meta['WorkCreatorAgentTitle'], 'GNOME Design Team') | ||
| 872 | self.assertEqual(meta['WorkSubject'], ['mat2', 'logo', 'metadata']) | ||
| 873 | self.assertEqual(meta['ID'], 'svg11300') | ||
| 874 | self.assertEqual(meta['Output_extension'], | ||
| 875 | 'org.inkscape.output.svg.inkscape') | ||
| 876 | |||
| 877 | ret = p.remove_all() | ||
| 878 | self.assertTrue(ret) | ||
| 879 | |||
| 880 | p = images.SVGParser('./tests/data/clean.cleaned.svg') | ||
| 881 | self.assertEqual(p.get_meta(), {}) | ||
| 882 | self.assertTrue(p.remove_all()) | ||
| 883 | |||
| 884 | os.remove('./tests/data/clean.svg') | ||
| 885 | os.remove('./tests/data/clean.cleaned.svg') | ||
| 886 | os.remove('./tests/data/clean.cleaned.cleaned.svg') | ||
| 887 | |||
| 888 | |||
