GithubHelp home page GithubHelp logo

marcuscalidus / marcuscalidus-svg-panel Goto Github PK

View Code? Open in Web Editor NEW
62.0 62.0 28.0 2.06 MB

Grafana panel for displaying metric sensitive SVG images using the snap svg library

License: MIT License

JavaScript 78.40% HTML 21.60%

marcuscalidus-svg-panel's People

Contributors

adrien-f avatar dependabot[bot] avatar marcuscalidus avatar saurla avatar y2sarakawa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

marcuscalidus-svg-panel's Issues

Improvement: Easily upload SVG files to repository/group

Unless I am missing something, it sounds like in order for the user to make use of their own SVG files, the user must fork the project and edit it in order to use their own repository/files. There is already a drop-down for selecting a new repository, group, and/or SVG file, however, this is populated by a hand-written JSON file instead of a database.

I would like to request an improvement to the project that makes this database-driven (rather than a flat JSON file), and furthermore allows the user to simply create a new "repository" (or perhaps rename this something more appropriate, like "database"), upload SVG files to it via the web page, and go to town with their animations.

As part of this, I'd also love to see the SVG Panel have auto-scale feature. When checked, the SVG file will scale to fit within the width of the panel on the client's screen. Given that SVG begins with "scalable", I have to believe this is a fairly straightforward process to do (perhaps built into Snap.js)?

I am willing to provide financial backing for these improvements, if anybody is interested in jumping on it?

Organize configuration into tabs

When I edit a SVG panel, I have trouble to modify long js scripts in the editor, due to the double scrollbar.
I think that tabs could improve usability (SVG, JS handle metric, JS onInit).
Thanks for your good work

Can't get id with a number first

Hey. I tried to get an element that starts with a number, but it gives me a DOMException.

SVG

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->

<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   width="100%"
   height="100%"
   viewBox="0 0 210 297"
   version="1.1"
   id="svg8"
   inkscape:version="0.92.3 (2405546, 2018-03-11)"
   sodipodi:docname="test.svg">
  <defs
     id="defs2" />
  <sodipodi:namedview
     id="base"
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1.0"
     inkscape:pageopacity="0.0"
     inkscape:pageshadow="2"
     inkscape:zoom="1.4"
     inkscape:cx="311.15729"
     inkscape:cy="551.55076"
     inkscape:document-units="mm"
     inkscape:current-layer="layer1"
     showgrid="false"
     inkscape:window-width="1920"
     inkscape:window-height="1057"
     inkscape:window-x="-8"
     inkscape:window-y="-8"
     inkscape:window-maximized="1" />
  <metadata
     id="metadata5">
    <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>
  <g
     inkscape:label="Layer 1"
     inkscape:groupmode="layer"
     id="layer1">
    <rect
       style="fill:#000000;fill-opacity:1;stroke-width:0.26458332;stroke:#000000"
       id="123b"
       width="66.523811"
       height="53.672619"
       x="30.238094"
       y="114.81547" />
  </g>
</svg>

Script

S = Snap(svgnode);
console.log(S.select("#123b"));

Warning

DOMException: Failed to execute 'querySelector' on 'Element': '#123b' is not a valid selector.

Click to Map Feature

This is a feature request/request for input. I'm working on feature that will allow you to click on elements in the SVG to identify them. Right now, my plan is to create fields for each ID you click, allowing you to provide names, those names will get js vars initialized as Snap objects with the underlying SVG ID. This should remove the need for a lot of boilerplate code, and manual renaming of SVG components to semantic names. Any comments on this approach, and/or additional capabilities I should consider?

Here's the click functionality working, just to clarify what I'm talking about.
https://youtu.be/31q7Vf3sb9Y

How can I map a mssql query output to update a svg dashboard ?

Hi I am using a mssql query to get server Name, status and response time.

SELECT Sysname, Status and Responsetime FROM ServersTable Where Sysname = "h0h1coreA" OR Sysname = "h0h1coreB"
the svg file I created is the following:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 210 297"><rect width="144.807" height="78.951" x="14.406" y="88.022" ry=".13" fill="#fff" transform="matrix(1.91082 0 0 2.08525 -79.068 -138.367)"/><g stroke-width=".816" transform="matrix(1.91082 0 0 2.08525 -79.068 -138.367)"><path d="M52.012 126.788v5.725" fill="none" stroke="#999"/><rect ry="0" y="132.65" x="30.131" height="21.404" width="43.762" fill="#f9f9f9" stroke="#999" stroke-linecap="round" stroke-linejoin="round"/><rect ry="1.06" y="101.566" x="45.195" height="24.948" width="13.633" fill="#fff6d5" stroke="#4f4d4d" stroke-linecap="round" stroke-linejoin="round"/></g><g fill="#59f" transform="matrix(1.91082 0 0 2.08525 -79.068 -138.367)"><path d="M59.251 111.324a3.461 3.555-1.453 0 1 3.07 1.748 3.461 3.555-1.453 0 1 .01 3.602 3.461 3.555-1.453 0 1-3.06 1.757l.07-3.554z" stroke="gray" stroke-width=".1" stroke-linecap="round" stroke-linejoin="round"/><path d="M62.686 114.756l20.233.02" stroke="#2a7fff" stroke-width=".264"/><path d="M87.215 114.756l20.723.02" stroke="#2a7fff" stroke-width=".267"/><ellipse cx="85.088" cy="114.679" rx="2.171" ry="2.114"/><path d="M111.42 111.324a3.461 3.555 1.453 0 0-3.07 1.748 3.461 3.555 1.453 0 0-.009 3.602 3.461 3.555 1.453 0 0 3.06 1.757l-.07-3.554z" stroke="gray" stroke-width=".1" stroke-linecap="round" stroke-linejoin="round"/></g><g transform="matrix(1.91082 0 0 2.08525 48.336 -138.367)" stroke-width=".816"><path d="M52.012 126.788v5.725" fill="none" stroke="#999"/><rect width="43.762" height="21.404" x="30.131" y="132.65" ry="0" fill="#f9f9f9" stroke="#999" stroke-linecap="round" stroke-linejoin="round"/><rect width="13.633" height="24.948" x="45.195" y="101.566" ry="1.06" fill="#fff6d5" stroke="#4d4d4d" stroke-linecap="round" stroke-linejoin="round"/></g><g transform="matrix(1.91082 0 0 2.08525 -79.068 -138.367)"><rect ry="1.06" y="104.838" x="46.968" height="4.908" width="10.088" fill="#0f0" stroke="#4d4d4d" stroke-width=".816" stroke-linecap="round" stroke-linejoin="round"/><rect transform="translate(66.675)" width="10.088" height="4.908" x="46.968" y="104.838" ry="1.06" fill="#0f0" stroke="#4d4d4d" stroke-width=".816" stroke-linecap="round" stroke-linejoin="round"/><text style="line-height:1.25;-inkscape-font-specification:'IBM Plex Sans'" x="31.597" y="137.676" font-weight="400" font-size="3.528" font-family="IBM Plex Sans" letter-spacing="0" word-spacing="0" stroke-width=".265"><tspan x="31.597" y="137.676">Node-name</tspan></text><text y="148.259" x="31.597" style="line-height:1.25;-inkscape-font-specification:'IBM Plex Sans'" font-weight="400" font-size="3.528" font-family="IBM Plex Sans" letter-spacing="0" word-spacing="0" stroke-width=".265"><tspan y="148.259" x="31.597">STATUS</tspan></text><text y="137.863" x="99.323" style="line-height:1.25;-inkscape-font-specification:'IBM Plex Sans'" font-weight="400" font-size="3.528" font-family="IBM Plex Sans" letter-spacing="0" word-spacing="0" stroke-width=".265" id="nodename"><tspan y="137.863" x="99.323">Node-name</tspan></text><text style="line-height:1.25;-inkscape-font-specification:'IBM Plex Sans'" x="99.323" y="148.446" font-weight="400" font-size="3.528" font-family="IBM Plex Sans" letter-spacing="0" word-spacing="0" stroke-width=".265" id="nodestatus"><tspan x="99.323" y="148.446">STATUS</tspan></text><rect width="27.315" height="6.735" x="72.029" y="99.621" ry=".13" fill="#f9f9f9" stroke="#999" stroke-width=".1" stroke-linecap="round" stroke-linejoin="round"/><text style="line-height:1.25;-inkscape-font-specification:'IBM Plex Sans'" x="79.691" y="104.22" font-weight="400" font-size="3.528" font-family="IBM Plex Sans" letter-spacing="0" word-spacing="0" stroke-width=".265" id="responsetime"><tspan x="79.691" y="104.22">000 ms</tspan></text></g></svg>

I would like to know how can I map the SQL query output to the field ids in the svg.
Is there an available example I could use?
Thanks

disappearing data attribute

Sometimes after an error/exception has been thrown in the onHandleMetric code, the data which is passed to the javascript disappears. In other words, when trying to extract data from ctrl.data[0].datapoints, the value will be empty after an exception where previously it had a value.

The only way to restore the data is to delete the panel and create a new one.

I have seen this behavior when using the SVG panel with an elasticsearch datasource

Possibility to hook to Graph/shared Tooltip?

Fancy plugin! I wonder if it is possible to hook the values I get via ctrl.series[0].stats.current to represent the value of that series corresponding to the currently "hovered" timestamp, as provided via the Graph Tooltip / Shared Tooltip function of Grafana's global dashboard settings?

ctrl.series[0] is undefined

I have dashboard with 3 metrics.

I discover that sometimes my dashboard doesn't work.

I got error ctrl.series[0] is undefined

Beginning of my code

var svg = Snap(svgnode); 


var metricA=ctrl.series[0].stats.current;
var metricB=ctrl.series[1].stats.current;
var metricC=ctrl.series[2].stats.current;

I tought it is due to my svg content encoding.

Problme is that after removing svg content I still have the same error

There is a worst thing.

After half an hour it works fine.

I have no idea is it some grafana cache or something.

Your plugin is great but this issue makes me cry.

Error:

anonymous@http://grafana:30080/public/build/0.6aa12092d3333cb24394.js line 1 > eval line 309 > Function:6:5
render@http://grafana:30080/public/plugins/marcuscalidus-svg-panel/rendering.js:86:11
link/<@http://grafana:30080/public/plugins/marcuscalidus-svg-panel/rendering.js:16:7
o.prototype.emit@http://grafana:30080/public/build/vendor.6aa12092d3333cb24394.js:44:25778
a</e.prototype.emit@http://grafana:30080/public/build/app.6aa12092d3333cb24394.js:1:13819
1669/f</t.prototype.render@http://grafana:30080/public/build/0.6aa12092d3333cb24394.js:1:51006
onDataReceived@http://grafana:30080/public/plugins/marcuscalidus-svg-panel/svg_ctrl.js:332:25
o.prototype.emit@http://grafana:30080/public/build/vendor.6aa12092d3333cb24394.js:44:25348
a</e.prototype.emit@http://grafana:30080/public/build/app.6aa12092d3333cb24394.js:1:13819
1752/g</e.prototype.handleQueryResult@http://grafana:30080/public/build/0.6aa12092d3333cb24394.js:7:18465
u@http://grafana:30080/public/build/vendor.6aa12092d3333cb24394.js:87:68722
l/<@http://grafana:30080/public/build/vendor.6aa12092d3333cb24394.js:87:69127
$digest@http://grafana:30080/public/build/vendor.6aa12092d3333cb24394.js:87:74824
$apply@http://grafana:30080/public/build/vendor.6aa12092d3333cb24394.js:87:76636
x/s<@http://grafana:30080/public/build/vendor.6aa12092d3333cb24394.js:87:72695
i@http://grafana:30080/public/build/vendor.6aa12092d3333cb24394.js:87:21868
mt/l.defer/n<@http://grafana:30080/public/build/vendor.6aa12092d3333cb24394.js:87:23332

enh: Moving objects around in SVGBuiler canvas area

Have a way of moving objects around on the canvas, instead of specifying X,Y coordinates. Once again a usability enhancement request.

Great plugin and SVG library. The main hurdle is for those not familiar with SVG and examples on how to program common tasks. (metrics to text, hyperlinks, using Grafana template variables, changing object colours based on thresholds, etc.)

Cheers

Replacement of tag 0.1.0

Tag 0.1.0 of this repository points to 2447f52.
I guess that should point to f6dd083.
Would you like to change the tag reference before registering in Grafana's repository?

No Demos offered?

I cloned the repo into plugins.
ran npm and grunt and it builds
restart grafana and reload webpage
SVG builder seems to work.
Maybe I am missing it, but I see no demo options.
Can you help?

Custom CSS

Could you add an editor to add static CSS to the panel ?
Also, it could be nice to load js files from url (aka CDN, jquery-ui, bootstrap, or other things)
Thanks for your good work

Retrieve key from Elasticsearch query.

Hi @MarcusCalidus I am using ElasticSearch 6.2.5 version and SVG with a table format.
Screenshot (89)_LI
To retrieve value in row I have used

var version1 = s.select("#g1");
var v1 = version1.selectAll("text");
var vr1 = ctrl.data[0].datapoints[0][0];

Here there is a key = "ABC"..How to retrieve or print key in a table row?

Getting SVG for panel from external URL

This is both a question and/or feature suggestion:

It would be nice to add an option to load source of main SVG object on panel init from external URL instead of just copy-paste/edit it in SVG tab.
This loaded svg can either replace original(default) svg object
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 1000 1000"></svg>
in panel or be embedded into it.

Form entry for external svg URL can be added to editor_builder.html and minor changes needed in module.html. URL string can be either static or support dashboard template variables for maximum flexibility.

Now the only way to avoid copy/paste to SVG tab is using something like this in onInit() or onHandleMetric() handlers:

$('svg.svg-object').load("http://example.com/path/to/external.svg");

Is it correct? Are there better alternatives?


PS: Also it would be great to be able to add some custom html markup inside panel's `TD` cell with svg - for buttons, text, links, etc (similar to grafana's standard text panel).

plugin no longer works in grafana 8

Dear developers,

This plugin worked great upto grafana 7.5.9, in grafana 8.0.4 it is no longer working. The problem seems to be that it is not signed. I get the following warnings when trying to use the datasource in grafana, adding plugin via commandline didn't give any error.
image

It can still be allowed via grafana.ini configuration

  • allow_loading_unsigned_plugins=marcuscalidus-svg-panel

Kind regards,
Dennis

Need Help with SVG

Hi,

First of all, let me thank you for providing an amazing plugin.
Since i am no expert in scripting or SVG.js hence would like to seek some help when using this plugin for providing live metrics for the element in the SVG code.
This is a part of my SVG code where a pump needs to be changing color based on the value ctrl.series metrics pushed.
I did figured that under linearGradient = "red" does changes the color of the SVG however i need this to be based on the conditionals

<g id="zoomG">
<g id="domElemG" shape-rendering="geometricPrecision" text-rendering="geometricPrecision">
<g title="Horizontal Pump" parentid="" nativewidth="154" nativeheight="106" myscale="0.35" transform="matrix(0.35 0 0 0.35 852.55 91.55)" id="process1545625699704" class="processElem">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" title="Horizontal Pump" class="Pumps" height="106" width="154" viewBox="0 0 154 105.947" nativewidth="154" nativeheight="106" overflow="visible" myscale="1.0">

    <defs>

        <linearGradient x1="100%" y2="0%" x2="100%" y1="0%" id="lg1_219">

            <stop stop-color="red" offset="0"/>

            <stop stop-color="#aeb5c0" offset="0.22"/>

            <stop stop-color="#dce0e5" offset="0.57"/>

            <stop stop-color="#cacfd7" offset="0.84"/>

            <stop stop-color="#a7afb9" offset="1"/>

        </linearGradient>

        <linearGradient x1="0%" y2="0%" x2="100%" y1="0%" id="lg2_219">

            <stop stop-color="#8f969d" offset="0"/>

            <stop stop-color="#d3d8de" offset="0.64"/>

            <stop stop-color="#9aa0a8" offset="1"/>

        </linearGradient>

        <linearGradient x1="0%" y2="0%" x2="100%" y1="0%" id="lg3_219">

            <stop stop-color="#626974" offset="0"/>

            <stop stop-color="#ccd0d5" offset="0.66"/>

            <stop stop-color="#5e6670" offset="1"/>

        </linearGradient>

        <radialGradient fy="51" r="72.6" id="rg1" cy="51" cx="51" gradientUnits="userSpaceOnUse" fx="51">

            <stop stop-color="#c7cbd1" offset="0"/>

            <stop stop-color="#c4c7cd" offset="0.91"/>

            <stop stop-color="#d4d8dd" offset="0.74"/>

            <stop stop-color="#b6bcc4" offset="0.54"/>

        </radialGradient>

    </defs>

    <g transform="translate(1.01,1)">

        <g transform="matrix(-1,0,0,1,74.4,31.2)">

            <path transform="matrix(0,-1,-1,0,68.3,40.6)" id="shape1" fill="url(#lg1_219)" d="M0,0L39.1,0L39.1,68.3L0,68.3L0,0z"/>

            <path transform="matrix(0,-1,-1,0,74.4,42.9)" id="shape2" fill="url(#lg2_219)" d="M1.4,-0L41.5,-0C42.2,-0,42.9,1.3,42.9,3C42.9,4.7,42.2,6.1,41.5,6.1L1.4,6.1C.6,6.1,0,4.7,0,3C0,1.3,.6,-0,1.4,-0z"/>

            <path transform="matrix(0,-1,-1,0,70.3,42.7)" id="shape3" fill="url(#lg3_219)" d="M42.5,0C42.4,1.1,41.9,1.9,41.1,1.9L1.4,1.9C.6,1.9,.1,1,0,0C0,0,42.5,0,42.5,0z"/>

            <path transform="matrix(0,-1,-1,0,74.1,42.2)" id="shape4" fill="#ffffff" fill-opacity="0.32" d="M.7,0L40.8,0C41.2,0,41.5,.3,41.5,.6C41.5,.9,41.2,1.1,40.8,1.1L.7,1.1C.3,1.1,0,.9,0,.6C0,.3,.3,0,.7,0z"/>

        </g>

        <g transform="translate(77.55,0)">

            <path transform="matrix(0,-1,-1,0,68.3,40.7)" id="shape5" fill="url(#lg1_219)" d="M0,0L39.1,0L39.1,68.3L0,68.3L0,0z"/>

            <path transform="matrix(0,-1,-1,0,74.4,42.9)" id="shape6" fill="url(#lg2_219)" d="M1.4,-0L41.5,-0C42.2,-0,42.9,1.3,42.9,3C42.9,4.7,42.2,6.1,41.5,6.1L1.4,6.1C.6,6.1,0,4.7,0,3C0,1.3,.6,-0,1.4,-0z"/>

            <path transform="matrix(0,-1,-1,0,70.3,42.7)" id="shape7" fill="url(#lg3_219)" d="M42.5,0C42.4,1.1,41.9,1.9,41.1,1.9L1.4,1.9C.6,1.9,.1,1,0,0C0,0,42.5,0,42.5,0z"/>

            <path transform="matrix(0,-1,-1,0,74.1,42.2)" id="shape8" fill="#ffffff" fill-opacity="0.35" d="M.7,0L40.8,0C41.2,0,41.5,.3,41.5,.6C41.5,.9,41.2,1.1,40.8,1.1L.7,1.1C.3,1.1,0,.9,0,.6C0,.3,.3,0,.7,0z"/>

        </g>

        <g transform="translate(26.19,1.31)">

            <path transform="matrix(0,-1,-1,0,102.8,102.6)" id="shape9" fill="url(#rg1)" stroke="#d4d6db" stroke-width="0.25" d="M0,51.4C0,23,23,0,51.3,0C79.7,0,102.6,23,102.6,51.4C102.6,79.8,79.7,102.8,51.3,102.8C23,102.8,0,79.8,0,51.4z"/>

            <path transform="matrix(0,-1,-1,0,94.2,94)" id="shape10" fill="#ffffff" fill-opacity="0.27" d="M0,42.7C0,19.1,19.1,0,42.6,0C66.2,0,85.3,19.1,85.3,42.7C85.3,66.3,66.2,85.5,42.6,85.5C19.1,85.5,0,66.3,0,42.7z"/>

            <path transform="matrix(0,-1,-1,0,85.9,93.9)" id="shape11" fill="#ffffff" fill-opacity="0.13" d="M0,34.5C-0.3,13,17.1,0,17.1,0L73.1,63.9C73.1,63.9,62.3,77.3,42.6,77.3C19.1,77.3,0,58.1,0,34.5z"/>

        </g>

    </g>

</svg>

My Events code

var s = Snap(svgnode);
console.log(ctrl.series[15].stats.current.toFixed(2));
var p1 = s.select("#domElemG");
var colors = ["#008000", "#FF6600", "#FF0000"];
var color = colors[1];
if (ctrl.series[15].stats.current.toFixed(2) > 7) 
{
 p1.attr ({"fill" : color})
}

SVG rendering problem

Hello again, I designed the SVG (with Inkscape) of the network diagram of my external networks, but when that SVG is rendered:

screenshot_20180207_080707

There are any limitation in size of the SVG???

SVG does not appear

I am trying to setup the plugin in grafana-5.0.4 running on Centos 7. I cloned the git repo at /var/lib/grafana/plugins. The SVG plugin appears in the list of plugins.

When I add a SVG panel and try to use SVG builder i get an empty page.

image

Any idea what am i missing and where do i find the demo pages?

Multiple metrics exmple

Hello.

Your panel is great.

I'm trying to use it with my metrics.

I have simple problem.

My svg:

<title>background</title> <title>Layer 1</title> X Y Z

I've defined three metrics (metricA, metricB, metricB )

My question is:

Can you show me code which change may svg text values ( id="metricA" , id="metricB", id="metricC") based on my metrics ?

I just don't get it.

SVG Objects library

Great job with this plugin. It would be very useful to be able to provide to the user while editing the panel the possibility to insert different objects taken from a library.
I have a library of SVG objects for industrial use cases (tanks, pumps, pipes etc...) that I would like to contribute to your plugin.
Can we do that?

How to Display values on top of SVG diagram image with InfluxDB Data Source in Grafana 7.0 in Windows?

image

SVG data

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
   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"
   width="750"
   height="460"
   viewBox="0 0 198.43749 121.70832"
   version="1.1"
   id="svg8">
  <defs
     id="defs2">
    <rect
       x="237.2935"
       y="-930.57758"
       width="65.012161"
       height="85.725525"
       id="rect7214" />
    <linearGradient
       id="linearGradient6308"
       osb:paint="solid">
      <stop
         style="stop-color:#000000;stop-opacity:1;"
         offset="0"
         id="stop6306" />
    </linearGradient>
    <linearGradient
       id="linearGradient6300"
       osb:paint="solid">
      <stop
         style="stop-color:#000000;stop-opacity:1;"
         offset="0"
         id="stop6298" />
    </linearGradient>
    <rect
       x="-158.97685"
       y="-859.33344"
       width="41.804237"
       height="16.446554"
       id="rect4441" />
    <rect
       x="-165.55357"
       y="-838.35114"
       width="68.791931"
       height="15.875061"
       id="rect4435" />
    <rect
       x="-165.55357"
       y="-838.35114"
       width="68.791931"
       height="15.875061"
       id="rect4429" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4263" />
    <linearGradient
       id="linearGradient4255"
       osb:paint="solid">
      <stop
         style="stop-color:#000000;stop-opacity:1;"
         offset="0"
         id="stop4253" />
    </linearGradient>
    <linearGradient
       id="linearGradient4249"
       osb:paint="solid">
      <stop
         style="stop-color:#afe9dd;stop-opacity:1;"
         offset="0"
         id="stop4247" />
    </linearGradient>
    <linearGradient
       id="linearGradient4237"
       osb:paint="solid">
      <stop
         style="stop-color:#000000;stop-opacity:1;"
         offset="0"
         id="stop4235" />
    </linearGradient>
    <linearGradient
       id="linearGradient4231"
       osb:paint="solid">
      <stop
         style="stop-color:#000000;stop-opacity:1;"
         offset="0"
         id="stop4229" />
    </linearGradient>
    <rect
       x="-617.6131"
       y="-1168.7024"
       width="117.92857"
       height="77.10714"
       id="rect4219" />
    <rect
       x="-573.76788"
       y="-889"
       width="120.95238"
       height="37.797619"
       id="rect4002" />
    <rect
       x="-41.577381"
       y="-861.02979"
       width="92.226189"
       height="22.678572"
       id="rect3708" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect2961" />
    <rect
       x="-381.75595"
       y="-985.76184"
       width="74.839287"
       height="53.672554"
       id="rect2951" />
    <rect
       x="-27.214294"
       y="-932.08923"
       width="21.922619"
       height="71.815491"
       id="rect2945" />
    <linearGradient
       id="linearGradient2937"
       osb:paint="solid">
      <stop
         style="stop-color:#000000;stop-opacity:1;"
         offset="0"
         id="stop2935" />
    </linearGradient>
    <linearGradient
       id="linearGradient2929"
       osb:paint="solid">
      <stop
         style="stop-color:#000000;stop-opacity:1;"
         offset="0"
         id="stop2927" />
    </linearGradient>
    <linearGradient
       id="linearGradient2847"
       osb:paint="solid">
      <stop
         style="stop-color:#c900ff;stop-opacity:1;"
         offset="0"
         id="stop2845" />
    </linearGradient>
    <linearGradient
       xlink:href="#linearGradient2937"
       id="linearGradient2939"
       x1="138.33928"
       y1="-1006.5505"
       x2="160.2619"
       y2="-1006.5505"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect2978" />
    <meshgradient
       id="meshgradient2980"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x="138.33928"
       y="-1042.4583">
      <meshrow
         id="meshrow2992">
        <meshpatch
           id="meshpatch2990">
          <stop
             path="c 7.30754,0  14.6151,0  21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop2982" />
          <stop
             path="c 0,23.9385  0,47.877  0,71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop2984" />
          <stop
             path="c -7.30754,0  -14.6151,0  -21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop2986" />
          <stop
             path="c 0,-23.9385  0,-47.877  0,-71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop2988" />
        </meshpatch>
      </meshrow>
    </meshgradient>
    <linearGradient
       xlink:href="#linearGradient2937"
       id="linearGradient2994"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x1="138.33928"
       y1="-1006.5505"
       x2="160.2619"
       y2="-1006.5505" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3004" />
    <meshgradient
       id="meshgradient3006"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x="138.33928"
       y="-1042.4583">
      <meshrow
         id="meshrow3018">
        <meshpatch
           id="meshpatch3016">
          <stop
             path="c 7.30754,0  14.6151,0  21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3008" />
          <stop
             path="c 0,23.9385  0,47.877  0,71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3010" />
          <stop
             path="c -7.30754,0  -14.6151,0  -21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3012" />
          <stop
             path="c 0,-23.9385  0,-47.877  0,-71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3014" />
        </meshpatch>
      </meshrow>
    </meshgradient>
    <linearGradient
       xlink:href="#linearGradient2937"
       id="linearGradient3020"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x1="138.33928"
       y1="-1006.5505"
       x2="160.2619"
       y2="-1006.5505" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3030" />
    <meshgradient
       id="meshgradient3032"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x="138.33928"
       y="-1042.4583">
      <meshrow
         id="meshrow3044">
        <meshpatch
           id="meshpatch3042">
          <stop
             path="c 7.30754,0  14.6151,0  21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3034" />
          <stop
             path="c 0,23.9385  0,47.877  0,71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3036" />
          <stop
             path="c -7.30754,0  -14.6151,0  -21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3038" />
          <stop
             path="c 0,-23.9385  0,-47.877  0,-71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3040" />
        </meshpatch>
      </meshrow>
    </meshgradient>
    <linearGradient
       xlink:href="#linearGradient2937"
       id="linearGradient3046"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x1="138.33928"
       y1="-1006.5505"
       x2="160.2619"
       y2="-1006.5505" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3056" />
    <meshgradient
       id="meshgradient3058"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x="138.33928"
       y="-1042.4583">
      <meshrow
         id="meshrow3070">
        <meshpatch
           id="meshpatch3068">
          <stop
             path="c 7.30754,0  14.6151,0  21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3060" />
          <stop
             path="c 0,23.9385  0,47.877  0,71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3062" />
          <stop
             path="c -7.30754,0  -14.6151,0  -21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3064" />
          <stop
             path="c 0,-23.9385  0,-47.877  0,-71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3066" />
        </meshpatch>
      </meshrow>
    </meshgradient>
    <linearGradient
       xlink:href="#linearGradient2937"
       id="linearGradient3072"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x1="138.33928"
       y1="-1006.5505"
       x2="160.2619"
       y2="-1006.5505" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3082" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3092" />
    <meshgradient
       id="meshgradient3094"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x="138.33928"
       y="-1042.4583">
      <meshrow
         id="meshrow3106">
        <meshpatch
           id="meshpatch3104">
          <stop
             path="c 7.30754,0  14.6151,0  21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3096" />
          <stop
             path="c 0,23.9385  0,47.877  0,71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3098" />
          <stop
             path="c -7.30754,0  -14.6151,0  -21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3100" />
          <stop
             path="c 0,-23.9385  0,-47.877  0,-71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3102" />
        </meshpatch>
      </meshrow>
    </meshgradient>
    <linearGradient
       xlink:href="#linearGradient2937"
       id="linearGradient3108"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x1="138.33928"
       y1="-1006.5505"
       x2="160.2619"
       y2="-1006.5505" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3118" />
    <meshgradient
       id="meshgradient3120"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x="138.33928"
       y="-1042.4583">
      <meshrow
         id="meshrow3132">
        <meshpatch
           id="meshpatch3130">
          <stop
             path="c 7.30754,0  14.6151,0  21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3122" />
          <stop
             path="c 0,23.9385  0,47.877  0,71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3124" />
          <stop
             path="c -7.30754,0  -14.6151,0  -21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3126" />
          <stop
             path="c 0,-23.9385  0,-47.877  0,-71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3128" />
        </meshpatch>
      </meshrow>
    </meshgradient>
    <linearGradient
       xlink:href="#linearGradient2937"
       id="linearGradient3134"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x1="138.33928"
       y1="-1006.5505"
       x2="160.2619"
       y2="-1006.5505" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3144" />
    <meshgradient
       id="meshgradient3146"
       gradientUnits="userSpaceOnUse"
       gradientTransform="matrix(5.068265,0,0,1.7912171,-1547.8211,2175.5426)"
       x="138.33928"
       y="-1042.4583">
      <meshrow
         id="meshrow3158">
        <meshpatch
           id="meshpatch3156">
          <stop
             path="c 7.30754,0  14.6151,0  21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3148" />
          <stop
             path="c 0,23.9385  0,47.877  0,71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3150" />
          <stop
             path="c -7.30754,0  -14.6151,0  -21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3152" />
          <stop
             path="c 0,-23.9385  0,-47.877  0,-71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3154" />
        </meshpatch>
      </meshrow>
    </meshgradient>
    <linearGradient
       xlink:href="#linearGradient2937"
       id="linearGradient3160"
       gradientUnits="userSpaceOnUse"
       gradientTransform="matrix(5.068265,0,0,1.7912171,-1547.8211,2175.5426)"
       x1="138.33928"
       y1="-1006.5505"
       x2="160.2619"
       y2="-1006.5505" />
    <meshgradient
       id="meshgradient3167"
       gradientUnits="userSpaceOnUse"
       gradientTransform="matrix(5.068265,0,0,1.7912171,-1770.0711,1757.5009)"
       x="138.33928"
       y="-1042.4583">
      <meshrow
         id="meshrow3179">
        <meshpatch
           id="meshpatch3177">
          <stop
             path="c 7.30754,0  14.6151,0  21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3169" />
          <stop
             path="c 0,23.9385  0,47.877  0,71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3171" />
          <stop
             path="c -7.30754,0  -14.6151,0  -21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3173" />
          <stop
             path="c 0,-23.9385  0,-47.877  0,-71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3175" />
        </meshpatch>
      </meshrow>
    </meshgradient>
    <linearGradient
       xlink:href="#linearGradient2937"
       id="linearGradient3181"
       gradientUnits="userSpaceOnUse"
       gradientTransform="matrix(5.068265,0,0,1.7912171,-1770.0711,1757.5009)"
       x1="138.33928"
       y1="-1006.5505"
       x2="160.2619"
       y2="-1006.5505" />
    <rect
       x="-27.214294"
       y="-932.08923"
       width="21.922619"
       height="71.815491"
       id="rect3266" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3268" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3270" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3272" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3274" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3276" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3278" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3280" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3282" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3284" />
    <rect
       x="-27.214294"
       y="-932.08923"
       width="21.922619"
       height="71.815491"
       id="rect3368" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3370" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3372" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3374" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3376" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3378" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3380" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3382" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3384" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3386" />
    <meshgradient
       id="meshgradient3388"
       gradientUnits="userSpaceOnUse"
       gradientTransform="matrix(5.068265,0,0,1.7912171,-1776.8747,1781.6914)"
       x="138.33928"
       y="-1042.4583">
      <meshrow
         id="meshrow3400">
        <meshpatch
           id="meshpatch3398">
          <stop
             path="c 7.30754,0  14.6151,0  21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3390" />
          <stop
             path="c 0,23.9385  0,47.877  0,71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3392" />
          <stop
             path="c -7.30754,0  -14.6151,0  -21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3394" />
          <stop
             path="c 0,-23.9385  0,-47.877  0,-71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3396" />
        </meshpatch>
      </meshrow>
    </meshgradient>
    <linearGradient
       xlink:href="#linearGradient2937"
       id="linearGradient3402"
       gradientUnits="userSpaceOnUse"
       gradientTransform="matrix(5.068265,0,0,1.7912171,-1776.8747,1781.6914)"
       x1="138.33928"
       y1="-1006.5505"
       x2="160.2619"
       y2="-1006.5505" />
    <rect
       x="-27.214294"
       y="-932.08923"
       width="21.922619"
       height="71.815491"
       id="rect3484" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3486" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3488" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3490" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3492" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3494" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3496" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3498" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3500" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3502" />
    <meshgradient
       id="meshgradient3504"
       gradientUnits="userSpaceOnUse"
       gradientTransform="matrix(5.2198436,0,0,1.7912171,-1667.3634,1798.3224)"
       x="138.33928"
       y="-1042.4583">
      <meshrow
         id="meshrow3516">
        <meshpatch
           id="meshpatch3514">
          <stop
             path="c 7.30754,0  14.6151,0  21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3506" />
          <stop
             path="c 0,23.9385  0,47.877  0,71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3508" />
          <stop
             path="c -7.30754,0  -14.6151,0  -21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3510" />
          <stop
             path="c 0,-23.9385  0,-47.877  0,-71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3512" />
        </meshpatch>
      </meshrow>
    </meshgradient>
    <linearGradient
       xlink:href="#linearGradient2937"
       id="linearGradient3518"
       gradientUnits="userSpaceOnUse"
       gradientTransform="matrix(5.2198436,0,0,1.7912171,-1667.3634,1798.3224)"
       x1="138.33928"
       y1="-1006.5505"
       x2="160.2619"
       y2="-1006.5505" />
    <meshgradient
       id="meshgradient3648"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x="138.33928"
       y="-1042.4583">
      <meshrow
         id="meshrow3660">
        <meshpatch
           id="meshpatch3658">
          <stop
             path="c 7.30754,0  14.6151,0  21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3650" />
          <stop
             path="c 0,23.9385  0,47.877  0,71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3652" />
          <stop
             path="c -7.30754,0  -14.6151,0  -21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3654" />
          <stop
             path="c 0,-23.9385  0,-47.877  0,-71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3656" />
        </meshpatch>
      </meshrow>
    </meshgradient>
    <linearGradient
       xlink:href="#linearGradient2937"
       id="linearGradient3662"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x1="138.33928"
       y1="-1006.5505"
       x2="160.2619"
       y2="-1006.5505" />
    <meshgradient
       id="meshgradient3664"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x="138.33928"
       y="-1042.4583">
      <meshrow
         id="meshrow3676">
        <meshpatch
           id="meshpatch3674">
          <stop
             path="c 7.30754,0  14.6151,0  21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3666" />
          <stop
             path="c 0,23.9385  0,47.877  0,71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3668" />
          <stop
             path="c -7.30754,0  -14.6151,0  -21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3670" />
          <stop
             path="c 0,-23.9385  0,-47.877  0,-71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3672" />
        </meshpatch>
      </meshrow>
    </meshgradient>
    <linearGradient
       xlink:href="#linearGradient2937"
       id="linearGradient3678"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x1="138.33928"
       y1="-1006.5505"
       x2="160.2619"
       y2="-1006.5505" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3688" />
    <meshgradient
       id="meshgradient3690"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x="138.33928"
       y="-1042.4583">
      <meshrow
         id="meshrow3702">
        <meshpatch
           id="meshpatch3700">
          <stop
             path="c 7.30754,0  14.6151,0  21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3692" />
          <stop
             path="c 0,23.9385  0,47.877  0,71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3694" />
          <stop
             path="c -7.30754,0  -14.6151,0  -21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3696" />
          <stop
             path="c 0,-23.9385  0,-47.877  0,-71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3698" />
        </meshpatch>
      </meshrow>
    </meshgradient>
    <linearGradient
       xlink:href="#linearGradient2937"
       id="linearGradient3704"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x1="138.33928"
       y1="-1006.5505"
       x2="160.2619"
       y2="-1006.5505" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3730" />
    <meshgradient
       id="meshgradient3732"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x="138.33928"
       y="-1042.4583">
      <meshrow
         id="meshrow3744">
        <meshpatch
           id="meshpatch3742">
          <stop
             path="c 7.30754,0  14.6151,0  21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3734" />
          <stop
             path="c 0,23.9385  0,47.877  0,71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3736" />
          <stop
             path="c -7.30754,0  -14.6151,0  -21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3738" />
          <stop
             path="c 0,-23.9385  0,-47.877  0,-71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3740" />
        </meshpatch>
      </meshrow>
    </meshgradient>
    <linearGradient
       xlink:href="#linearGradient2937"
       id="linearGradient3746"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x1="138.33928"
       y1="-1006.5505"
       x2="160.2619"
       y2="-1006.5505" />
    <rect
       x="-27.214294"
       y="-932.08923"
       width="21.922619"
       height="71.815491"
       id="rect3828" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3830" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3832" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3834" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3836" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3838" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3840" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3842" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3844" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect3846" />
    <meshgradient
       id="meshgradient3870"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x="138.33928"
       y="-1042.4583">
      <meshrow
         id="meshrow3882">
        <meshpatch
           id="meshpatch3880">
          <stop
             path="c 7.30754,0  14.6151,0  21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3872" />
          <stop
             path="c 0,23.9385  0,47.877  0,71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3874" />
          <stop
             path="c -7.30754,0  -14.6151,0  -21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3876" />
          <stop
             path="c 0,-23.9385  0,-47.877  0,-71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3878" />
        </meshpatch>
      </meshrow>
    </meshgradient>
    <linearGradient
       xlink:href="#linearGradient2937"
       id="linearGradient3884"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x1="138.33928"
       y1="-1006.5505"
       x2="160.2619"
       y2="-1006.5505" />
    <meshgradient
       id="meshgradient3886"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x="138.33928"
       y="-1042.4583">
      <meshrow
         id="meshrow3898">
        <meshpatch
           id="meshpatch3896">
          <stop
             path="c 7.30754,0  14.6151,0  21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3888" />
          <stop
             path="c 0,23.9385  0,47.877  0,71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3890" />
          <stop
             path="c -7.30754,0  -14.6151,0  -21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3892" />
          <stop
             path="c 0,-23.9385  0,-47.877  0,-71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3894" />
        </meshpatch>
      </meshrow>
    </meshgradient>
    <linearGradient
       xlink:href="#linearGradient2937"
       id="linearGradient3900"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x1="138.33928"
       y1="-1006.5505"
       x2="160.2619"
       y2="-1006.5505" />
    <meshgradient
       id="meshgradient3902"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x="138.33928"
       y="-1042.4583">
      <meshrow
         id="meshrow3914">
        <meshpatch
           id="meshpatch3912">
          <stop
             path="c 7.30754,0  14.6151,0  21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3904" />
          <stop
             path="c 0,23.9385  0,47.877  0,71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3906" />
          <stop
             path="c -7.30754,0  -14.6151,0  -21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3908" />
          <stop
             path="c 0,-23.9385  0,-47.877  0,-71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3910" />
        </meshpatch>
      </meshrow>
    </meshgradient>
    <linearGradient
       xlink:href="#linearGradient2937"
       id="linearGradient3916"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x1="138.33928"
       y1="-1006.5505"
       x2="160.2619"
       y2="-1006.5505" />
    <meshgradient
       id="meshgradient3918"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x="138.33928"
       y="-1042.4583">
      <meshrow
         id="meshrow3930">
        <meshpatch
           id="meshpatch3928">
          <stop
             path="c 7.30754,0  14.6151,0  21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3920" />
          <stop
             path="c 0,23.9385  0,47.877  0,71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3922" />
          <stop
             path="c -7.30754,0  -14.6151,0  -21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3924" />
          <stop
             path="c 0,-23.9385  0,-47.877  0,-71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3926" />
        </meshpatch>
      </meshrow>
    </meshgradient>
    <linearGradient
       xlink:href="#linearGradient2937"
       id="linearGradient3932"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x1="138.33928"
       y1="-1006.5505"
       x2="160.2619"
       y2="-1006.5505" />
    <meshgradient
       id="meshgradient3934"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x="138.33928"
       y="-1042.4583">
      <meshrow
         id="meshrow3946">
        <meshpatch
           id="meshpatch3944">
          <stop
             path="c 7.30754,0  14.6151,0  21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3936" />
          <stop
             path="c 0,23.9385  0,47.877  0,71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3938" />
          <stop
             path="c -7.30754,0  -14.6151,0  -21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3940" />
          <stop
             path="c 0,-23.9385  0,-47.877  0,-71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3942" />
        </meshpatch>
      </meshrow>
    </meshgradient>
    <linearGradient
       xlink:href="#linearGradient2937"
       id="linearGradient3948"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x1="138.33928"
       y1="-1006.5505"
       x2="160.2619"
       y2="-1006.5505" />
    <meshgradient
       id="meshgradient3950"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x="138.33928"
       y="-1042.4583">
      <meshrow
         id="meshrow3962">
        <meshpatch
           id="meshpatch3960">
          <stop
             path="c 7.30754,0  14.6151,0  21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3952" />
          <stop
             path="c 0,23.9385  0,47.877  0,71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3954" />
          <stop
             path="c -7.30754,0  -14.6151,0  -21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3956" />
          <stop
             path="c 0,-23.9385  0,-47.877  0,-71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3958" />
        </meshpatch>
      </meshrow>
    </meshgradient>
    <linearGradient
       xlink:href="#linearGradient2937"
       id="linearGradient3964"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x1="138.33928"
       y1="-1006.5505"
       x2="160.2619"
       y2="-1006.5505" />
    <meshgradient
       id="meshgradient3966"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x="138.33928"
       y="-1042.4583">
      <meshrow
         id="meshrow3978">
        <meshpatch
           id="meshpatch3976">
          <stop
             path="c 7.30754,0  14.6151,0  21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3968" />
          <stop
             path="c 0,23.9385  0,47.877  0,71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3970" />
          <stop
             path="c -7.30754,0  -14.6151,0  -21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3972" />
          <stop
             path="c 0,-23.9385  0,-47.877  0,-71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3974" />
        </meshpatch>
      </meshrow>
    </meshgradient>
    <linearGradient
       xlink:href="#linearGradient2937"
       id="linearGradient3980"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x1="138.33928"
       y1="-1006.5505"
       x2="160.2619"
       y2="-1006.5505" />
    <meshgradient
       id="meshgradient3982"
       gradientUnits="userSpaceOnUse"
       gradientTransform="matrix(5.068265,0,0,1.7912171,-1404.1902,2251.1378)"
       x="138.33928"
       y="-1042.4583">
      <meshrow
         id="meshrow3994">
        <meshpatch
           id="meshpatch3992">
          <stop
             path="c 7.30754,0  14.6151,0  21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3984" />
          <stop
             path="c 0,23.9385  0,47.877  0,71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3986" />
          <stop
             path="c -7.30754,0  -14.6151,0  -21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop3988" />
          <stop
             path="c 0,-23.9385  0,-47.877  0,-71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop3990" />
        </meshpatch>
      </meshrow>
    </meshgradient>
    <linearGradient
       xlink:href="#linearGradient2937"
       id="linearGradient3996"
       gradientUnits="userSpaceOnUse"
       gradientTransform="matrix(5.068265,0,0,1.7912171,-1404.1902,2251.1378)"
       x1="138.33928"
       y1="-1006.5505"
       x2="160.2619"
       y2="-1006.5505" />
    <rect
       x="-573.76788"
       y="-889"
       width="120.95238"
       height="37.797619"
       id="rect4019" />
    <rect
       x="-573.76788"
       y="-889"
       width="120.95238"
       height="37.797619"
       id="rect4029" />
    <rect
       x="-573.76788"
       y="-889"
       width="120.95238"
       height="37.797619"
       id="rect4039" />
    <rect
       x="-573.76788"
       y="-889"
       width="120.95238"
       height="37.797619"
       id="rect4049" />
    <rect
       x="-27.214294"
       y="-932.08923"
       width="21.922619"
       height="71.815491"
       id="rect4173" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect4175" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect4177" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect4179" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect4181" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect4183" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect4185" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect4187" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect4189" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect4191" />
    <rect
       x="-573.76788"
       y="-889"
       width="120.95238"
       height="37.797619"
       id="rect4193" />
    <rect
       x="-573.76788"
       y="-889"
       width="120.95238"
       height="37.797619"
       id="rect4195" />
    <rect
       x="-573.76788"
       y="-889"
       width="120.95238"
       height="37.797619"
       id="rect4197" />
    <rect
       x="-573.76788"
       y="-889"
       width="120.95238"
       height="37.797619"
       id="rect4199" />
    <rect
       x="-573.76788"
       y="-889"
       width="120.95238"
       height="37.797619"
       id="rect4201" />
    <linearGradient
       xlink:href="#linearGradient4237"
       id="linearGradient4243"
       gradientUnits="userSpaceOnUse"
       x1="-616.57977"
       y1="-1162.988"
       x2="-583.11938"
       y2="-1162.988" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4280" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4290" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4300" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4310" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4320" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4374" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4376" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4378" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4380" />
    <rect
       x="-617.6131"
       y="-1168.7024"
       width="117.92857"
       height="77.10714"
       id="rect4388" />
    <linearGradient
       xlink:href="#linearGradient4231"
       id="linearGradient4392"
       gradientUnits="userSpaceOnUse"
       x1="-616.57977"
       y1="-1162.988"
       x2="-583.11938"
       y2="-1162.988" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4402" />
    <linearGradient
       xlink:href="#linearGradient4231"
       id="linearGradient4425"
       gradientUnits="userSpaceOnUse"
       x1="-616.57977"
       y1="-1162.988"
       x2="-583.11938"
       y2="-1162.988" />
    <rect
       x="-27.214294"
       y="-932.08923"
       width="21.922619"
       height="71.815491"
       id="rect4453" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4528" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4530" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4532" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4534" />
    <rect
       x="-165.55357"
       y="-838.35114"
       width="68.791931"
       height="15.875061"
       id="rect4536" />
    <rect
       x="-158.97685"
       y="-859.33344"
       width="41.804237"
       height="16.446554"
       id="rect4538" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4588" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4590" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4592" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4594" />
    <rect
       x="-165.55357"
       y="-838.35114"
       width="68.791931"
       height="15.875061"
       id="rect4596" />
    <rect
       x="-158.97685"
       y="-859.33344"
       width="41.804237"
       height="16.446554"
       id="rect4598" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4624" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4674" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4676" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4678" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4680" />
    <rect
       x="-165.55357"
       y="-838.35114"
       width="68.791931"
       height="15.875061"
       id="rect4682" />
    <rect
       x="-158.97685"
       y="-859.33344"
       width="41.804237"
       height="16.446554"
       id="rect4684" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4702" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4712" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4722" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4732" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4821" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4823" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4825" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4827" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4829" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4859" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4877" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4887" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4897" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4907" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4973" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4975" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4977" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4979" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect4981" />
    <rect
       x="-165.55357"
       y="-838.35114"
       width="68.791931"
       height="15.875061"
       id="rect5100" />
    <rect
       x="-158.97685"
       y="-859.33344"
       width="41.804237"
       height="16.446554"
       id="rect5102" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5104" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5106" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5108" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5110" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5112" />
    <rect
       x="-27.214294"
       y="-932.08923"
       width="21.922619"
       height="71.815491"
       id="rect5506" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect5508" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect5510" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect5512" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect5514" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect5516" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect5518" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect5520" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect5522" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect5524" />
    <rect
       x="-617.6131"
       y="-1168.7024"
       width="117.92857"
       height="77.10714"
       id="rect5526" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5528" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5530" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5532" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5534" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5536" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5538" />
    <rect
       x="-617.6131"
       y="-1168.7024"
       width="117.92857"
       height="77.10714"
       id="rect5540" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5542" />
    <rect
       x="-165.55357"
       y="-838.35114"
       width="68.791931"
       height="15.875061"
       id="rect5544" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5546" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5548" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5550" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5552" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5554" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5556" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5558" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5560" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5562" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5564" />
    <rect
       x="-165.55357"
       y="-838.35114"
       width="68.791931"
       height="15.875061"
       id="rect5566" />
    <rect
       x="-158.97685"
       y="-859.33344"
       width="41.804237"
       height="16.446554"
       id="rect5568" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5570" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5572" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5574" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5576" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5578" />
    <rect
       x="-165.55357"
       y="-838.35114"
       width="68.791931"
       height="15.875061"
       id="rect5580" />
    <rect
       x="-158.97685"
       y="-859.33344"
       width="41.804237"
       height="16.446554"
       id="rect5582" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5584" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5586" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5588" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5590" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5592" />
    <rect
       x="-165.55357"
       y="-838.35114"
       width="68.791931"
       height="15.875061"
       id="rect5723" />
    <rect
       x="-158.97685"
       y="-859.33344"
       width="41.804237"
       height="16.446554"
       id="rect5725" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5727" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5729" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5731" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5733" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5735" />
    <rect
       x="-165.55357"
       y="-838.35114"
       width="68.791931"
       height="15.875061"
       id="rect5795" />
    <rect
       x="-158.97685"
       y="-859.33344"
       width="41.804237"
       height="16.446554"
       id="rect5797" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5799" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5801" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5803" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5805" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect5807" />
    <rect
       x="-165.55357"
       y="-838.35114"
       width="68.791931"
       height="15.875061"
       id="rect6021" />
    <rect
       x="-158.97685"
       y="-859.33344"
       width="41.804237"
       height="16.446554"
       id="rect6023" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect6025" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect6027" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect6029" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect6031" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect6033" />
    <rect
       x="-165.55357"
       y="-838.35114"
       width="68.791931"
       height="15.875061"
       id="rect6099" />
    <rect
       x="-158.97685"
       y="-859.33344"
       width="41.804237"
       height="16.446554"
       id="rect6101" />
    <rect
       x="-165.55357"
       y="-838.35114"
       width="68.791931"
       height="15.875061"
       id="rect6103" />
    <rect
       x="-158.97685"
       y="-859.33344"
       width="41.804237"
       height="16.446554"
       id="rect6105" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect6107" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect6109" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect6111" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect6113" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect6115" />
    <meshgradient
       id="meshgradient6135"
       gradientUnits="userSpaceOnUse"
       gradientTransform="matrix(5.068265,0,0,1.7912171,-1028.4818,2481.7033)"
       x="138.33928"
       y="-1042.4583">
      <meshrow
         id="meshrow6147">
        <meshpatch
           id="meshpatch6145">
          <stop
             path="c 7.30754,0  14.6151,0  21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop6137" />
          <stop
             path="c 0,23.9385  0,47.877  0,71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop6139" />
          <stop
             path="c -7.30754,0  -14.6151,0  -21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop6141" />
          <stop
             path="c 0,-23.9385  0,-47.877  0,-71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop6143" />
        </meshpatch>
      </meshrow>
    </meshgradient>
    <linearGradient
       xlink:href="#linearGradient2937"
       id="linearGradient6149"
       gradientUnits="userSpaceOnUse"
       gradientTransform="matrix(5.068265,0,0,1.7912171,-1028.4818,2481.7033)"
       x1="138.33928"
       y1="-1006.5505"
       x2="160.2619"
       y2="-1006.5505" />
    <meshgradient
       id="meshgradient6151"
       gradientUnits="userSpaceOnUse"
       gradientTransform="matrix(5.068265,0,0,1.7912171,-989.17234,2224.6795)"
       x="138.33928"
       y="-1042.4583">
      <meshrow
         id="meshrow6163">
        <meshpatch
           id="meshpatch6161">
          <stop
             path="c 7.30754,0  14.6151,0  21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop6153" />
          <stop
             path="c 0,23.9385  0,47.877  0,71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop6155" />
          <stop
             path="c -7.30754,0  -14.6151,0  -21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop6157" />
          <stop
             path="c 0,-23.9385  0,-47.877  0,-71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop6159" />
        </meshpatch>
      </meshrow>
    </meshgradient>
    <linearGradient
       xlink:href="#linearGradient2937"
       id="linearGradient6165"
       gradientUnits="userSpaceOnUse"
       gradientTransform="matrix(5.068265,0,0,1.7912171,-989.17234,2224.6795)"
       x1="138.33928"
       y1="-1006.5505"
       x2="160.2619"
       y2="-1006.5505" />
    <meshgradient
       id="meshgradient6201"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x="138.33928"
       y="-1042.4583">
      <meshrow
         id="meshrow6213">
        <meshpatch
           id="meshpatch6211">
          <stop
             path="c 7.30754,0  14.6151,0  21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop6203" />
          <stop
             path="c 0,23.9385  0,47.877  0,71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop6205" />
          <stop
             path="c -7.30754,0  -14.6151,0  -21.9226,0"
             style="stop-color:#ffffff;stop-opacity:1"
             id="stop6207" />
          <stop
             path="c 0,-23.9385  0,-47.877  0,-71.8155"
             style="stop-color:#01426a;stop-opacity:1"
             id="stop6209" />
        </meshpatch>
      </meshrow>
    </meshgradient>
    <linearGradient
       xlink:href="#linearGradient2937"
       id="linearGradient6215"
       gradientUnits="userSpaceOnUse"
       gradientTransform="translate(-520.09524,56.696401)"
       x1="138.33928"
       y1="-1006.5505"
       x2="160.2619"
       y2="-1006.5505" />
    <rect
       x="-27.214294"
       y="-932.08923"
       width="21.922619"
       height="71.815491"
       id="rect7064" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect7066" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect7068" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect7070" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect7072" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect7074" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect7076" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect7078" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect7080" />
    <rect
       x="-438.45239"
       y="-869.34521"
       width="108.10119"
       height="55.184525"
       id="rect7082" />
    <rect
       x="-617.6131"
       y="-1168.7024"
       width="117.92857"
       height="77.10714"
       id="rect7084" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7086" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7088" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7090" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7092" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7094" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7096" />
    <rect
       x="-617.6131"
       y="-1168.7024"
       width="117.92857"
       height="77.10714"
       id="rect7098" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7100" />
    <rect
       x="-165.55357"
       y="-838.35114"
       width="68.791931"
       height="15.875061"
       id="rect7102" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7104" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7106" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7108" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7110" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7112" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7114" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7116" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7118" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7120" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7122" />
    <rect
       x="-165.55357"
       y="-838.35114"
       width="68.791931"
       height="15.875061"
       id="rect7124" />
    <rect
       x="-158.97685"
       y="-859.33344"
       width="77.787567"
       height="10.096554"
       id="rect7126" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7128" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7130" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7132" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7134" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7136" />
    <rect
       x="-165.55357"
       y="-838.35114"
       width="68.791931"
       height="15.875061"
       id="rect7138" />
    <rect
       x="-158.97685"
       y="-859.33344"
       width="41.804237"
       height="16.446554"
       id="rect7140" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7142" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7144" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7146" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7148" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7150" />
    <rect
       x="-165.55357"
       y="-838.35114"
       width="68.791931"
       height="15.875061"
       id="rect7152" />
    <rect
       x="-158.97685"
       y="-859.33344"
       width="41.804237"
       height="16.446554"
       id="rect7154" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7156" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7158" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7160" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7162" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7164" />
    <rect
       x="-165.55357"
       y="-838.35114"
       width="68.791931"
       height="15.875061"
       id="rect7166" />
    <rect
       x="-158.97685"
       y="-859.33344"
       width="41.804237"
       height="16.446554"
       id="rect7168" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7170" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7172" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7174" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7176" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7178" />
    <rect
       x="-165.55357"
       y="-838.35114"
       width="68.791931"
       height="15.875061"
       id="rect7180" />
    <rect
       x="-158.97685"
       y="-859.33344"
       width="51.631878"
       height="14.027525"
       id="rect7182" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7184" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7186" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7188" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7190" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7192" />
    <rect
       x="-165.55357"
       y="-838.35114"
       width="68.791931"
       height="15.875061"
       id="rect7194" />
    <rect
       x="-158.97685"
       y="-859.33344"
       width="41.804237"
       height="16.446554"
       id="rect7196" />
    <rect
       x="-165.55357"
       y="-838.35114"
       width="68.791931"
       height="15.875061"
       id="rect7198" />
    <rect
       x="-158.97685"
       y="-859.33344"
       width="51.631802"
       height="17.202545"
       id="rect7200" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7202" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7204" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7206" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7208" />
    <rect
       x="-598.71429"
       y="-1105.975"
       width="74.083313"
       height="24.207031"
       id="rect7210" />
    <rect
       x="237.2935"
       y="-930.57758"
       width="65.012161"
       height="85.725525"
       id="rect7225" />
    <rect
       x="237.2935"
       y="-930.57758"
       width="65.012161"
       height="85.725525"
       id="rect7233" />
    <rect
       x="237.2935"
       y="-930.57758"
       width="65.012161"
       height="85.725525"
       id="rect7241" />
  </defs>
  <text
     xml:space="preserve"
     id="text6406"
     style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect7064);fill:#000000;fill-opacity:1;stroke:none;"
     transform="matrix(0.41933367,0,0,0.41933367,-23.653139,-29.508664)"><tspan
       style="visibility:hidden"
       x="-27.214844"
       y="-850.61797"><tspan
         dx="0 7.2553482 2.9042063 6.3561811 6.5938911 6.3045044">Blades</tspan></tspan></text>
  <text
     xml:space="preserve"
     style="font-style:normal;font-weight:normal;font-size:4.43793px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.110949"
     x="-260.44937"
     y="-515.46399"
     id="text6502"><tspan
       id="tspan6498"
       x="-260.44937"
       y="-515.46399"
       style="stroke-width:0.110949" /><tspan
       x="-260.44937"
       y="-509.91656"
       style="stroke-width:0.110949"
       id="tspan6500" /></text>
  <text
     xml:space="preserve"
     id="text6568"
     style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect7102);fill:#000000;fill-opacity:1;stroke:none;"
     transform="matrix(0.41933367,0,0,0.41933367,-23.653139,-29.508664)" />
  <rect
     style="fill:#aaccff;fill-rule:evenodd;stroke-width:0.0825156"
     id="rect6484"
     width="60.8634"
     height="22.506758"
     x="74.964432"
     y="72.944481" />
  <rect
     style="fill:#aaccff;fill-rule:evenodd;stroke-width:0.0557953"
     id="rect6486"
     width="47.042362"
     height="13.313865"
     x="147.87358"
     y="79.284393" />
  <rect
     style="fill:#aaccff;fill-rule:evenodd;stroke-width:0.0445244"
     id="rect6488"
     width="59.912415"
     height="6.6569428"
     x="1.7382889"
     y="89.111275" />
  <rect
     style="opacity:0.999;fill:#afe9dd;fill-rule:evenodd;stroke-width:0.110949"
     id="rect6654"
     width="50.402519"
     height="49.134445"
     x="22.343046"
     y="1.6203405" />
  <rect
     style="opacity:0.999;fill:#afe9dd;fill-rule:evenodd;stroke:#000000;stroke-width:0.419334;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
     id="rect6656"
     width="28.846773"
     height="6.6569428"
     x="34.737583"
     y="46.316872" />
  <text
     xml:space="preserve"
     id="text6660"
     style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect7124);fill:#000000;fill-opacity:1;stroke:none;"
     transform="matrix(0.41933367,0,0,0.41933367,110.4997,398.49972)"><tspan
       x="-165.55273"
       y="-828.6961"><tspan>Fabric</tspan></tspan></text>
  <text
     xml:space="preserve"
     id="text6664"
     style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;white-space:pre;shape-inside:url(#rect7126);fill:#000000;fill-opacity:1;stroke:none;"
     transform="matrix(0.41933367,0,0,0.41933367,104.15977,400.7821)"><tspan
       x="-158.97656"
       y="-852.25329"><tspan
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">V1 V4 Chassis</tspan></tspan></text>
  <g
     id="Panel-1-1"
     transform="matrix(0,-0.41933367,0.41933367,0,267.72845,-221.62703)">
    <rect
       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.937241;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
       id="rect6666"
       width="74.146095"
       height="21.245951"
       x="-619.23193"
       y="-577.56244" />
    <text
       xml:space="preserve"
       id="text6670"
       style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect7128);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;"
       transform="translate(-2.494566,532.6772)"><tspan
         x="-598.71484"
         y="-1096.3191"><tspan
           style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none">Panel-1-1</tspan></tspan></text>
  </g>
  <g
     id="Panel-1-2"
     transform="matrix(0,-0.41933367,0.41933367,0,276.6376,-221.62703)">
    <rect
       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.937241;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
       id="rect6674"
       width="74.146095"
       height="21.245951"
       x="-619.23193"
       y="-577.56244" />
    <text
       xml:space="preserve"
       id="text6678"
       style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect7130);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;"
       transform="translate(-2.494566,532.6772)"><tspan
         x="-598.71484"
         y="-1096.3191"><tspan
           style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none">Panel-1-2</tspan></tspan></text>
  </g>
  <g
     id="Panel-1-3"
     transform="matrix(0,-0.41933367,0.41933367,0,285.54675,-221.62703)">
    <rect
       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.937241;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
       id="rect6682"
       width="74.146095"
       height="21.245951"
       x="-619.23193"
       y="-577.56244" />
    <text
       xml:space="preserve"
       id="text6686"
       style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect7132);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;"
       transform="translate(-2.494566,532.6772)"><tspan
         x="-598.71484"
         y="-1096.3191"><tspan
           style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none">Panel-1-3</tspan></tspan></text>
  </g>
  <g
     id="Panel-1-4"
     transform="matrix(0,-0.41933367,0.41933367,0,294.4559,-221.62703)">
    <rect
       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.937241;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
       id="rect6690"
       width="74.146095"
       height="21.245951"
       x="-619.23193"
       y="-577.56244" />
    <text
       xml:space="preserve"
       id="text6694"
       style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect7134);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;"
       transform="translate(-2.494566,532.6772)"><tspan
         x="-598.71484"
         y="-1096.3191"><tspan
           style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none">Panel-1-4</tspan></tspan></text>
  </g>
  <g
     id="Panel-1-5"
     transform="matrix(0,-0.41933367,0.41933367,0,303.36506,-221.62703)">
    <rect
       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.937241;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
       id="rect6698"
       width="74.146095"
       height="21.245951"
       x="-619.23193"
       y="-577.56244" />
    <text
       xml:space="preserve"
       id="text6702"
       style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect7136);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;"
       transform="translate(-2.494566,532.6772)"><tspan
         x="-598.71484"
         y="-1096.3191"><tspan
           style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none">Panel-1-5</tspan></tspan></text>
  </g>
  <rect
     style="opacity:0.999;fill:#e9afdd;fill-rule:evenodd;stroke-width:0.110949"
     id="rect6712"
     width="50.402519"
     height="49.134445"
     x="78.736832"
     y="1.6203405" />
  <rect
     style="opacity:0.999;fill:#e9afdd;fill-rule:evenodd;stroke:#000000;stroke-width:0.419334;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
     id="rect6714"
     width="28.846773"
     height="6.6569428"
     x="91.131371"
     y="46.316872" />
  <text
     xml:space="preserve"
     id="text6718"
     style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect7138);fill:#e9afdd;fill-opacity:1;stroke:none;"
     transform="matrix(0.41933367,0,0,0.41933367,166.89348,398.49972)"><tspan
       x="-165.55273"
       y="-828.6961"><tspan
         style="fill:#e9afdd">Fabric</tspan></tspan></text>
  <text
     xml:space="preserve"
     id="text6722"
     style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect7140);fill:#e9afdd;fill-opacity:1;stroke:none;"
     transform="matrix(0.41933367,0,0,0.41933367,164.9915,399.45071)"><tspan
       x="-158.97656"
       y="-849.67852"><tspan
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#e9afdd">Chassis</tspan></tspan></text>
  <text
     xml:space="preserve"
     id="text6872"
     style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect7180);fill:#000000;fill-opacity:1;stroke:none;"
     transform="matrix(0.41933367,0,0,0.41933367,166.89348,398.49973)"><tspan
       x="-165.55273"
       y="-828.6961"><tspan>Fabric</tspan></tspan></text>
  <text
     xml:space="preserve"
     id="text6876"
     style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;white-space:pre;shape-inside:url(#rect7182);fill:#000000;fill-opacity:1;stroke:none;"
     transform="matrix(0.41933367,0,0,0.41933367,161.88492,400.78211)"><tspan
       x="-158.97656"
       y="-852.25329"><tspan
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">V4 Chassis</tspan></tspan></text>
  <g
     id="Panel-2-1"
     transform="matrix(0,-0.41933367,0.41933367,0,324.12224,-221.62702)">
    <rect
       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.937241;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
       id="rect6878"
       width="74.146095"
       height="21.245951"
       x="-619.23193"
       y="-577.56244" />
    <text
       xml:space="preserve"
       id="text6882"
       style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect7184);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;"
       transform="translate(-2.494566,532.6772)"><tspan
         x="-598.71484"
         y="-1096.3191"><tspan
           style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none">Panel-2-1</tspan></tspan></text>
  </g>
  <g
     id="Panel-2-2"
     transform="matrix(0,-0.41933367,0.41933367,0,333.03139,-221.62702)">
    <rect
       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.937241;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
       id="rect6886"
       width="74.146095"
       height="21.245951"
       x="-619.23193"
       y="-577.56244" />
    <text
       xml:space="preserve"
       id="text6890"
       style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect7186);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;"
       transform="translate(-2.494566,532.6772)"><tspan
         x="-598.71484"
         y="-1096.3191"><tspan
           style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none">Panel-2-2</tspan></tspan></text>
  </g>
  <g
     id="Panel-2-3"
     transform="matrix(0,-0.41933367,0.41933367,0,341.94054,-221.62702)">
    <rect
       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.937241;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
       id="rect6894"
       width="74.146095"
       height="21.245951"
       x="-619.23193"
       y="-577.56244" />
    <text
       xml:space="preserve"
       id="text6898"
       style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect7188);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;"
       transform="translate(-2.494566,532.6772)"><tspan
         x="-598.71484"
         y="-1096.3191"><tspan
           style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none">Panel-2-3</tspan></tspan></text>
  </g>
  <g
     id="Panel-2-4"
     transform="matrix(0,-0.41933367,0.41933367,0,350.84969,-221.62702)">
    <rect
       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.937241;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
       id="rect6902"
       width="74.146095"
       height="21.245951"
       x="-619.23193"
       y="-577.56244" />
    <text
       xml:space="preserve"
       id="text6906"
       style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect7190);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;"
       transform="translate(-2.494566,532.6772)"><tspan
         x="-598.71484"
         y="-1096.3191"><tspan
           style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none">Panel-2-4</tspan></tspan></text>
  </g>
  <g
     id="Panel-2-5"
     transform="matrix(0,-0.41933367,0.41933367,0,359.75885,-221.62702)">
    <rect
       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.937241;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
       id="rect6910"
       width="74.146095"
       height="21.245951"
       x="-619.23193"
       y="-577.56244" />
    <text
       xml:space="preserve"
       id="text6914"
       style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect7192);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;"
       transform="translate(-2.494566,532.6772)"><tspan
         x="-598.71484"
         y="-1096.3191"><tspan
           style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none">Panel-2-5</tspan></tspan></text>
  </g>
  <rect
     style="opacity:0.999;fill:#e9afdd;fill-rule:evenodd;stroke-width:0.110949"
     id="rect6922"
     width="50.402519"
     height="49.134445"
     x="136.24008"
     y="1.6203405" />
  <rect
     style="opacity:0.999;fill:#e9afdd;fill-rule:evenodd;stroke:#000000;stroke-width:0.419334;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
     id="rect6924"
     width="28.846773"
     height="6.6569428"
     x="148.63461"
     y="46.316872" />
  <text
     xml:space="preserve"
     id="text6928"
     style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect7194);fill:#e9afdd;fill-opacity:1;stroke:none;"
     transform="matrix(0.41933367,0,0,0.41933367,224.39676,398.49972)"><tspan
       x="-165.55273"
       y="-828.6961"><tspan
         style="fill:#e9afdd">Fabric</tspan></tspan></text>
  <text
     xml:space="preserve"
     id="text6932"
     style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect7196);fill:#e9afdd;fill-opacity:1;stroke:none;"
     transform="matrix(0.41933367,0,0,0.41933367,222.49478,399.45071)"><tspan
       x="-158.97656"
       y="-849.67852"><tspan
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#e9afdd">Chassis</tspan></tspan></text>
  <text
     xml:space="preserve"
     id="text6936"
     style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect7198);fill:#000000;fill-opacity:1;stroke:none;"
     transform="matrix(0.41933367,0,0,0.41933367,224.39676,398.49973)"><tspan
       x="-165.55273"
       y="-828.6961"><tspan>Fabric</tspan></tspan></text>
  <text
     xml:space="preserve"
     id="text6940"
     style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;white-space:pre;shape-inside:url(#rect7200);fill:#000000;fill-opacity:1;stroke:none;"
     transform="matrix(0.41933367,0,0,0.41933367,219.3882,401.00401)"><tspan
       x="-158.97656"
       y="-852.25329"><tspan
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">V4 Chassis</tspan></tspan></text>
  <g
     id="Panel-3-1"
     transform="matrix(0,-0.41933367,0.41933367,0,381.62552,-221.62702)">
    <rect
       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.937241;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
       id="rect6942"
       width="74.146095"
       height="21.245951"
       x="-619.23193"
       y="-577.56244" />
    <text
       xml:space="preserve"
       id="text6946"
       style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect7202);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;"
       transform="translate(-2.494566,532.6772)"><tspan
         x="-598.71484"
         y="-1096.3191"><tspan
           style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none">Panel-3-1</tspan></tspan></text>
  </g>
  <g
     id="Panel-3-2"
     transform="matrix(0,-0.41933367,0.41933367,0,390.53467,-221.62702)">
    <rect
       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.937241;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
       id="rect6950"
       width="74.146095"
       height="21.245951"
       x="-619.23193"
       y="-577.56244" />
    <text
       xml:space="preserve"
       id="text6954"
       style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect7204);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;"
       transform="translate(-2.494566,532.6772)"><tspan
         x="-598.71484"
         y="-1096.3191"><tspan
           style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none">Panel-3-2</tspan></tspan></text>
  </g>
  <g
     id="Panel-3-3"
     transform="matrix(0,-0.41933367,0.41933367,0,399.44382,-221.62702)">
    <rect
       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.937241;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
       id="rect6958"
       width="74.146095"
       height="21.245951"
       x="-619.23193"
       y="-577.56244" />
    <text
       xml:space="preserve"
       id="text6962"
       style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect7206);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;"
       transform="translate(-2.494566,532.6772)"><tspan
         x="-598.71484"
         y="-1096.3191"><tspan
           style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none">Panel-3-3</tspan></tspan></text>
  </g>
  <g
     id="Panel-3-4"
     transform="matrix(0,-0.41933367,0.41933367,0,408.35297,-221.62702)">
    <rect
       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.937241;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
       id="rect6966"
       width="74.146095"
       height="21.245951"
       x="-619.23193"
       y="-577.56244" />
    <text
       xml:space="preserve"
       id="text6970"
       style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect7208);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;"
       transform="translate(-2.494566,532.6772)"><tspan
         x="-598.71484"
         y="-1096.3191"><tspan
           style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none">Panel-3-4</tspan></tspan></text>
  </g>
  <g
     id="Panel-3-5"
     transform="matrix(0,-0.41933367,0.41933367,0,417.26213,-221.62702)">
    <rect
       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.937241;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
       id="rect6974"
       width="74.146095"
       height="21.245951"
       x="-619.23193"
       y="-577.56244" />
    <text
       xml:space="preserve"
       id="text6978"
       style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect7210);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;"
       transform="translate(-2.494566,532.6772)"><tspan
         x="-598.71484"
         y="-1096.3191"><tspan
           style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none">Panel-3-5</tspan></tspan></text>
  </g>
  <g
     id="g6994"
     transform="matrix(0.41933367,0,0,0.41933367,104.15977,397.86573)">
    <g
       id="g6992">
      <rect
         style="opacity:0.999;fill:#afe9af;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
         id="rect6986"
         width="139.09525"
         height="15.875"
         x="-243.41666"
         y="-786.19043" />
      <text
         xml:space="preserve"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583"
         x="-223.98848"
         y="-774.39758"
         id="text6990"><tspan
           id="tspan1826"
           x="-223.98848"
           y="-774.39758">SI DC Server V2 V3 V4</tspan></text>
    </g>
  </g>
  <rect
     style="opacity:0.999;fill:#afe9af;fill-opacity:1;stroke:none;stroke-width:0.419334;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
     id="rect6996"
     width="58.32732"
     height="6.6569219"
     x="2.0869701"
     y="77.953094" />
  <text
     xml:space="preserve"
     style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.25449px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.110949"
     x="3.1332376"
     y="82.898232"
     id="text7000"><tspan
       id="tspan1832"
       x="3.1332376"
       y="82.898232"
       style="stroke-width:0.110949">File Management Server V2 V3 V4</tspan></text>
  <text
     xml:space="preserve"
     style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.25449px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;display:inline;stroke-width:0.110949"
     x="16.959276"
     y="93.857597"
     id="text7004"><tspan
       id="tspan1522"
       x="16.959276"
       y="93.857597"
       style="stroke-width:0.110949">SIMS V1 V2 V3 V4</tspan></text>
  <text
     xml:space="preserve"
     style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;white-space:pre;inline-size:151.622;display:inline;stroke-width:0.264583"
     x="-28.326025"
     y="-750.1402"
     id="text7008"
     transform="matrix(0.41933367,0,0,0.41933367,96.615256,407.62922)"><tspan
       x="-28.326025"
       y="-750.1402"><tspan
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">SNI Switches V1 V2 V3 V4</tspan></tspan></text>
  <text
     xml:space="preserve"
     style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.25449px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;display:inline;stroke-width:0.110949"
     x="149.20496"
     y="87.050743"
     id="text7012"><tspan
       id="tspan1524"
       x="149.20496"
       y="87.050743"
       style="stroke-width:0.110949">Storage Array V1 V2 V3 V4</tspan></text>
  <g
     id="g7022"
     transform="matrix(0.41933367,0,0,0.41933367,108.91471,439.07525)">
    <g
       id="g7020">
      <rect
         style="opacity:0.999;fill:#afe9af;fill-opacity:1;stroke:none;stroke-width:0.959223;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
         id="rect7014"
         width="70.970619"
         height="28.62764"
         x="-221.9343"
         y="-788.13293" />
      <text
         xml:space="preserve"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583"
         x="-217.18477"
         y="-769.86188"
         id="text7018"><tspan
           id="tspan1526"
           x="-217.18477"
           y="-769.86188">AMCU V2 V3 V4</tspan></text>
    </g>
  </g>
  <g
     id="g7040"
     transform="matrix(0.41933367,0,0,0.41933367,104.15977,397.86573)">
    <path
       style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.275259px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
       d="m -42.951635,-774.98594 v -24.14993 h -94.023995"
       id="path7036" />
    <path
       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
       d="m -136.842,-822.25469 -0.13363,23.11882"
       id="path7038" />
  </g>
  <path
     style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.110949px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
     d="m 60.295409,71.518056 h 5.864431 v 6.181423"
     id="path7042" />
  <path
     style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.0534537px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
     d="m 66.15984,77.699479 h 8.825394 v -0.03665"
     id="path7044" />
  <path
     style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.0891189px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
     d="m 60.408499,81.122701 h 14.553119 v -0.05053"
     id="path7046" />
  <path
     style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.110949px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
     d="m 61.642644,92.439816 h 4.556821 v -5.78519"
     id="path7048" />
  <path
     style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.0472115px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
     d="m 66.18343,86.693297 h 8.78889 v -0.07149"
     id="path7050" />
  <path
     style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.110949px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
     d="m 135.74053,84.475278 h 12.08548 v 0.03963"
     id="path7052" />
  <path
     style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.110949px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
     d="m 105.17965,53.105873 v 19.730828 h -0.0784"
     id="path7054" />
  <path
     style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.110949px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
     d="m 163.86218,53.145106 v 2.70661 h -37.18652"
     id="path7056" />
  <path
     style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.110949px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
     d="m 126.67566,55.851721 h 0.0392 v 16.98498"
     id="path7058" />
  <path
     style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.100172px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
     d="M 45.56145,113.63251 H 97.946643 V 95.641475"
     id="path7060" />
  <metadata
     id="metadata37760">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:title></dc:title>
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <script
     id="mesh_polyfill"
     type="text/javascript">
!function(){const t=&quot;http://www.w3.org/2000/svg&quot;,e=&quot;http://www.w3.org/1999/xlink&quot;,s=&quot;http://www.w3.org/1999/xhtml&quot;,r=2;if(document.createElementNS(t,&quot;meshgradient&quot;).x)return;const n=(t,e,s,r)=&gt;{let n=new x(.5*(e.x+s.x),.5*(e.y+s.y)),o=new x(.5*(t.x+e.x),.5*(t.y+e.y)),i=new x(.5*(s.x+r.x),.5*(s.y+r.y)),a=new x(.5*(n.x+o.x),.5*(n.y+o.y)),h=new x(.5*(n.x+i.x),.5*(n.y+i.y)),l=new x(.5*(a.x+h.x),.5*(a.y+h.y));return[[t,o,a,l],[l,h,i,r]]},o=t=&gt;{let e=t[0].distSquared(t[1]),s=t[2].distSquared(t[3]),r=.25*t[0].distSquared(t[2]),n=.25*t[1].distSquared(t[3]),o=e&gt;s?e:s,i=r&gt;n?r:n;return 18*(o&gt;i?o:i)},i=(t,e)=&gt;Math.sqrt(t.distSquared(e)),a=(t,e)=&gt;t.scale(2/3).add(e.scale(1/3)),h=t=&gt;{let e,s,r,n,o,i,a,h=new g;return t.match(/(\w+\(\s*[^)]+\))+/g).forEach(t=&gt;{let l=t.match(/[\w.-]+/g),d=l.shift();switch(d){case&quot;translate&quot;:2===l.length?e=new g(1,0,0,1,l[0],l[1]):(console.error(&quot;mesh.js: translate does not have 2 arguments!&quot;),e=new g(1,0,0,1,0,0)),h=h.append(e);break;case&quot;scale&quot;:1===l.length?s=new g(l[0],0,0,l[0],0,0):2===l.length?s=new g(l[0],0,0,l[1],0,0):(console.error(&quot;mesh.js: scale does not have 1 or 2 arguments!&quot;),s=new g(1,0,0,1,0,0)),h=h.append(s);break;case&quot;rotate&quot;:if(3===l.length&amp;&amp;(e=new g(1,0,0,1,l[1],l[2]),h=h.append(e)),l[0]){r=l[0]*Math.PI/180;let t=Math.cos(r),e=Math.sin(r);Math.abs(t)&lt;1e-16&amp;&amp;(t=0),Math.abs(e)&lt;1e-16&amp;&amp;(e=0),a=new g(t,e,-e,t,0,0),h=h.append(a)}else console.error(&quot;math.js: No argument to rotate transform!&quot;);3===l.length&amp;&amp;(e=new g(1,0,0,1,-l[1],-l[2]),h=h.append(e));break;case&quot;skewX&quot;:l[0]?(r=l[0]*Math.PI/180,n=Math.tan(r),o=new g(1,0,n,1,0,0),h=h.append(o)):console.error(&quot;math.js: No argument to skewX transform!&quot;);break;case&quot;skewY&quot;:l[0]?(r=l[0]*Math.PI/180,n=Math.tan(r),i=new g(1,n,0,1,0,0),h=h.append(i)):console.error(&quot;math.js: No argument to skewY transform!&quot;);break;case&quot;matrix&quot;:6===l.length?h=h.append(new g(...l)):console.error(&quot;math.js: Incorrect number of arguments for matrix!&quot;);break;default:console.error(&quot;mesh.js: Unhandled transform type: &quot;+d)}}),h},l=t=&gt;{let e=[],s=t.split(/[ ,]+/);for(let t=0,r=s.length-1;t&lt;r;t+=2)e.push(new x(parseFloat(s[t]),parseFloat(s[t+1])));return e},d=(t,e)=&gt;{for(let s in e)t.setAttribute(s,e[s])},c=(t,e,s,r,n)=&gt;{let o,i,a=[0,0,0,0];for(let h=0;h&lt;3;++h)e[h]&lt;t[h]&amp;&amp;e[h]&lt;s[h]||t[h]&lt;e[h]&amp;&amp;s[h]&lt;e[h]?a[h]=0:(a[h]=.5*((e[h]-t[h])/r+(s[h]-e[h])/n),o=Math.abs(3*(e[h]-t[h])/r),i=Math.abs(3*(s[h]-e[h])/n),a[h]&gt;o?a[h]=o:a[h]&gt;i&amp;&amp;(a[h]=i));return a},u=[[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0],[-3,3,0,0,-2,-1,0,0,0,0,0,0,0,0,0,0],[2,-2,0,0,1,1,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0],[0,0,0,0,0,0,0,0,-3,3,0,0,-2,-1,0,0],[0,0,0,0,0,0,0,0,2,-2,0,0,1,1,0,0],[-3,0,3,0,0,0,0,0,-2,0,-1,0,0,0,0,0],[0,0,0,0,-3,0,3,0,0,0,0,0,-2,0,-1,0],[9,-9,-9,9,6,3,-6,-3,6,-6,3,-3,4,2,2,1],[-6,6,6,-6,-3,-3,3,3,-4,4,-2,2,-2,-2,-1,-1],[2,0,-2,0,0,0,0,0,1,0,1,0,0,0,0,0],[0,0,0,0,2,0,-2,0,0,0,0,0,1,0,1,0],[-6,6,6,-6,-4,-2,4,2,-3,3,-3,3,-2,-1,-2,-1],[4,-4,-4,4,2,2,-2,-2,2,-2,2,-2,1,1,1,1]],f=t=&gt;{let e=[];for(let s=0;s&lt;16;++s){e[s]=0;for(let r=0;r&lt;16;++r)e[s]+=u[s][r]*t[r]}return e},p=(t,e,s)=&gt;{const r=e*e,n=s*s,o=e*e*e,i=s*s*s;return t[0]+t[1]*e+t[2]*r+t[3]*o+t[4]*s+t[5]*s*e+t[6]*s*r+t[7]*s*o+t[8]*n+t[9]*n*e+t[10]*n*r+t[11]*n*o+t[12]*i+t[13]*i*e+t[14]*i*r+t[15]*i*o},y=t=&gt;{let e=[],s=[],r=[];for(let s=0;s&lt;4;++s)e[s]=[],e[s][0]=n(t[0][s],t[1][s],t[2][s],t[3][s]),e[s][1]=[],e[s][1].push(...n(...e[s][0][0])),e[s][1].push(...n(...e[s][0][1])),e[s][2]=[],e[s][2].push(...n(...e[s][1][0])),e[s][2].push(...n(...e[s][1][1])),e[s][2].push(...n(...e[s][1][2])),e[s][2].push(...n(...e[s][1][3]));for(let t=0;t&lt;8;++t){s[t]=[];for(let r=0;r&lt;4;++r)s[t][r]=[],s[t][r][0]=n(e[0][2][t][r],e[1][2][t][r],e[2][2][t][r],e[3][2][t][r]),s[t][r][1]=[],s[t][r][1].push(...n(...s[t][r][0][0])),s[t][r][1].push(...n(...s[t][r][0][1])),s[t][r][2]=[],s[t][r][2].push(...n(...s[t][r][1][0])),s[t][r][2].push(...n(...s[t][r][1][1])),s[t][r][2].push(...n(...s[t][r][1][2])),s[t][r][2].push(...n(...s[t][r][1][3]))}for(let t=0;t&lt;8;++t){r[t]=[];for(let e=0;e&lt;8;++e)r[t][e]=[],r[t][e][0]=s[t][0][2][e],r[t][e][1]=s[t][1][2][e],r[t][e][2]=s[t][2][2][e],r[t][e][3]=s[t][3][2][e]}return r};class x{constructor(t,e){this.x=t||0,this.y=e||0}toString(){return`(x=${this.x}, y=${this.y})`}clone(){return new x(this.x,this.y)}add(t){return new x(this.x+t.x,this.y+t.y)}scale(t){return void 0===t.x?new x(this.x*t,this.y*t):new x(this.x*t.x,this.y*t.y)}distSquared(t){let e=this.x-t.x,s=this.y-t.y;return e*e+s*s}transform(t){let e=this.x*t.a+this.y*t.c+t.e,s=this.x*t.b+this.y*t.d+t.f;return new x(e,s)}}class g{constructor(t,e,s,r,n,o){void 0===t?(this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0):(this.a=t,this.b=e,this.c=s,this.d=r,this.e=n,this.f=o)}toString(){return`affine: ${this.a} ${this.c} ${this.e} \n       ${this.b} ${this.d} ${this.f}`}append(t){t instanceof g||console.error(&quot;mesh.js: argument to Affine.append is not affine!&quot;);let e=this.a*t.a+this.c*t.b,s=this.b*t.a+this.d*t.b,r=this.a*t.c+this.c*t.d,n=this.b*t.c+this.d*t.d,o=this.a*t.e+this.c*t.f+this.e,i=this.b*t.e+this.d*t.f+this.f;return new g(e,s,r,n,o,i)}}class w{constructor(t,e){this.nodes=t,this.colors=e}paintCurve(t,e){if(o(this.nodes)&gt;r){const s=n(...this.nodes);let r=[[],[]],o=[[],[]];for(let t=0;t&lt;4;++t)r[0][t]=this.colors[0][t],r[1][t]=(this.colors[0][t]+this.colors[1][t])/2,o[0][t]=r[1][t],o[1][t]=this.colors[1][t];let i=new w(s[0],r),a=new w(s[1],o);i.paintCurve(t,e),a.paintCurve(t,e)}else{let s=Math.round(this.nodes[0].x);if(s&gt;=0&amp;&amp;s&lt;e){let r=4*(~~this.nodes[0].y*e+s);t[r]=Math.round(this.colors[0][0]),t[r+1]=Math.round(this.colors[0][1]),t[r+2]=Math.round(this.colors[0][2]),t[r+3]=Math.round(this.colors[0][3])}}}}class m{constructor(t,e){this.nodes=t,this.colors=e}split(){let t=[[],[],[],[]],e=[[],[],[],[]],s=[[[],[]],[[],[]]],r=[[[],[]],[[],[]]];for(let s=0;s&lt;4;++s){const r=n(this.nodes[0][s],this.nodes[1][s],this.nodes[2][s],this.nodes[3][s]);t[0][s]=r[0][0],t[1][s]=r[0][1],t[2][s]=r[0][2],t[3][s]=r[0][3],e[0][s]=r[1][0],e[1][s]=r[1][1],e[2][s]=r[1][2],e[3][s]=r[1][3]}for(let t=0;t&lt;4;++t)s[0][0][t]=this.colors[0][0][t],s[0][1][t]=this.colors[0][1][t],s[1][0][t]=(this.colors[0][0][t]+this.colors[1][0][t])/2,s[1][1][t]=(this.colors[0][1][t]+this.colors[1][1][t])/2,r[0][0][t]=s[1][0][t],r[0][1][t]=s[1][1][t],r[1][0][t]=this.colors[1][0][t],r[1][1][t]=this.colors[1][1][t];return[new m(t,s),new m(e,r)]}paint(t,e){let s,n=!1;for(let t=0;t&lt;4;++t)if((s=o([this.nodes[0][t],this.nodes[1][t],this.nodes[2][t],this.nodes[3][t]]))&gt;r){n=!0;break}if(n){let s=this.split();s[0].paint(t,e),s[1].paint(t,e)}else{new w([...this.nodes[0]],[...this.colors[0]]).paintCurve(t,e)}}}class b{constructor(t){this.readMesh(t),this.type=t.getAttribute(&quot;type&quot;)||&quot;bilinear&quot;}readMesh(t){let e=[[]],s=[[]],r=Number(t.getAttribute(&quot;x&quot;)),n=Number(t.getAttribute(&quot;y&quot;));e[0][0]=new x(r,n);let o=t.children;for(let t=0,r=o.length;t&lt;r;++t){e[3*t+1]=[],e[3*t+2]=[],e[3*t+3]=[],s[t+1]=[];let r=o[t].children;for(let n=0,o=r.length;n&lt;o;++n){let o=r[n].children;for(let r=0,i=o.length;r&lt;i;++r){let i=r;0!==t&amp;&amp;++i;let h,d=o[r].getAttribute(&quot;path&quot;),c=&quot;l&quot;;null!=d&amp;&amp;(c=(h=d.match(/\s*([lLcC])\s*(.*)/))[1]);let u=l(h[2]);switch(c){case&quot;l&quot;:0===i?(e[3*t][3*n+3]=u[0].add(e[3*t][3*n]),e[3*t][3*n+1]=a(e[3*t][3*n],e[3*t][3*n+3]),e[3*t][3*n+2]=a(e[3*t][3*n+3],e[3*t][3*n])):1===i?(e[3*t+3][3*n+3]=u[0].add(e[3*t][3*n+3]),e[3*t+1][3*n+3]=a(e[3*t][3*n+3],e[3*t+3][3*n+3]),e[3*t+2][3*n+3]=a(e[3*t+3][3*n+3],e[3*t][3*n+3])):2===i?(0===n&amp;&amp;(e[3*t+3][3*n+0]=u[0].add(e[3*t+3][3*n+3])),e[3*t+3][3*n+1]=a(e[3*t+3][3*n],e[3*t+3][3*n+3]),e[3*t+3][3*n+2]=a(e[3*t+3][3*n+3],e[3*t+3][3*n])):(e[3*t+1][3*n]=a(e[3*t][3*n],e[3*t+3][3*n]),e[3*t+2][3*n]=a(e[3*t+3][3*n],e[3*t][3*n]));break;case&quot;L&quot;:0===i?(e[3*t][3*n+3]=u[0],e[3*t][3*n+1]=a(e[3*t][3*n],e[3*t][3*n+3]),e[3*t][3*n+2]=a(e[3*t][3*n+3],e[3*t][3*n])):1===i?(e[3*t+3][3*n+3]=u[0],e[3*t+1][3*n+3]=a(e[3*t][3*n+3],e[3*t+3][3*n+3]),e[3*t+2][3*n+3]=a(e[3*t+3][3*n+3],e[3*t][3*n+3])):2===i?(0===n&amp;&amp;(e[3*t+3][3*n+0]=u[0]),e[3*t+3][3*n+1]=a(e[3*t+3][3*n],e[3*t+3][3*n+3]),e[3*t+3][3*n+2]=a(e[3*t+3][3*n+3],e[3*t+3][3*n])):(e[3*t+1][3*n]=a(e[3*t][3*n],e[3*t+3][3*n]),e[3*t+2][3*n]=a(e[3*t+3][3*n],e[3*t][3*n]));break;case&quot;c&quot;:0===i?(e[3*t][3*n+1]=u[0].add(e[3*t][3*n]),e[3*t][3*n+2]=u[1].add(e[3*t][3*n]),e[3*t][3*n+3]=u[2].add(e[3*t][3*n])):1===i?(e[3*t+1][3*n+3]=u[0].add(e[3*t][3*n+3]),e[3*t+2][3*n+3]=u[1].add(e[3*t][3*n+3]),e[3*t+3][3*n+3]=u[2].add(e[3*t][3*n+3])):2===i?(e[3*t+3][3*n+2]=u[0].add(e[3*t+3][3*n+3]),e[3*t+3][3*n+1]=u[1].add(e[3*t+3][3*n+3]),0===n&amp;&amp;(e[3*t+3][3*n+0]=u[2].add(e[3*t+3][3*n+3]))):(e[3*t+2][3*n]=u[0].add(e[3*t+3][3*n]),e[3*t+1][3*n]=u[1].add(e[3*t+3][3*n]));break;case&quot;C&quot;:0===i?(e[3*t][3*n+1]=u[0],e[3*t][3*n+2]=u[1],e[3*t][3*n+3]=u[2]):1===i?(e[3*t+1][3*n+3]=u[0],e[3*t+2][3*n+3]=u[1],e[3*t+3][3*n+3]=u[2]):2===i?(e[3*t+3][3*n+2]=u[0],e[3*t+3][3*n+1]=u[1],0===n&amp;&amp;(e[3*t+3][3*n+0]=u[2])):(e[3*t+2][3*n]=u[0],e[3*t+1][3*n]=u[1]);break;default:console.error(&quot;mesh.js: &quot;+c+&quot; invalid path type.&quot;)}if(0===t&amp;&amp;0===n||r&gt;0){let e=window.getComputedStyle(o[r]).stopColor.match(/^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i),a=window.getComputedStyle(o[r]).stopOpacity,h=255;a&amp;&amp;(h=Math.floor(255*a)),e&amp;&amp;(0===i?(s[t][n]=[],s[t][n][0]=Math.floor(e[1]),s[t][n][1]=Math.floor(e[2]),s[t][n][2]=Math.floor(e[3]),s[t][n][3]=h):1===i?(s[t][n+1]=[],s[t][n+1][0]=Math.floor(e[1]),s[t][n+1][1]=Math.floor(e[2]),s[t][n+1][2]=Math.floor(e[3]),s[t][n+1][3]=h):2===i?(s[t+1][n+1]=[],s[t+1][n+1][0]=Math.floor(e[1]),s[t+1][n+1][1]=Math.floor(e[2]),s[t+1][n+1][2]=Math.floor(e[3]),s[t+1][n+1][3]=h):3===i&amp;&amp;(s[t+1][n]=[],s[t+1][n][0]=Math.floor(e[1]),s[t+1][n][1]=Math.floor(e[2]),s[t+1][n][2]=Math.floor(e[3]),s[t+1][n][3]=h))}}e[3*t+1][3*n+1]=new x,e[3*t+1][3*n+2]=new x,e[3*t+2][3*n+1]=new x,e[3*t+2][3*n+2]=new x,e[3*t+1][3*n+1].x=(-4*e[3*t][3*n].x+6*(e[3*t][3*n+1].x+e[3*t+1][3*n].x)+-2*(e[3*t][3*n+3].x+e[3*t+3][3*n].x)+3*(e[3*t+3][3*n+1].x+e[3*t+1][3*n+3].x)+-1*e[3*t+3][3*n+3].x)/9,e[3*t+1][3*n+2].x=(-4*e[3*t][3*n+3].x+6*(e[3*t][3*n+2].x+e[3*t+1][3*n+3].x)+-2*(e[3*t][3*n].x+e[3*t+3][3*n+3].x)+3*(e[3*t+3][3*n+2].x+e[3*t+1][3*n].x)+-1*e[3*t+3][3*n].x)/9,e[3*t+2][3*n+1].x=(-4*e[3*t+3][3*n].x+6*(e[3*t+3][3*n+1].x+e[3*t+2][3*n].x)+-2*(e[3*t+3][3*n+3].x+e[3*t][3*n].x)+3*(e[3*t][3*n+1].x+e[3*t+2][3*n+3].x)+-1*e[3*t][3*n+3].x)/9,e[3*t+2][3*n+2].x=(-4*e[3*t+3][3*n+3].x+6*(e[3*t+3][3*n+2].x+e[3*t+2][3*n+3].x)+-2*(e[3*t+3][3*n].x+e[3*t][3*n+3].x)+3*(e[3*t][3*n+2].x+e[3*t+2][3*n].x)+-1*e[3*t][3*n].x)/9,e[3*t+1][3*n+1].y=(-4*e[3*t][3*n].y+6*(e[3*t][3*n+1].y+e[3*t+1][3*n].y)+-2*(e[3*t][3*n+3].y+e[3*t+3][3*n].y)+3*(e[3*t+3][3*n+1].y+e[3*t+1][3*n+3].y)+-1*e[3*t+3][3*n+3].y)/9,e[3*t+1][3*n+2].y=(-4*e[3*t][3*n+3].y+6*(e[3*t][3*n+2].y+e[3*t+1][3*n+3].y)+-2*(e[3*t][3*n].y+e[3*t+3][3*n+3].y)+3*(e[3*t+3][3*n+2].y+e[3*t+1][3*n].y)+-1*e[3*t+3][3*n].y)/9,e[3*t+2][3*n+1].y=(-4*e[3*t+3][3*n].y+6*(e[3*t+3][3*n+1].y+e[3*t+2][3*n].y)+-2*(e[3*t+3][3*n+3].y+e[3*t][3*n].y)+3*(e[3*t][3*n+1].y+e[3*t+2][3*n+3].y)+-1*e[3*t][3*n+3].y)/9,e[3*t+2][3*n+2].y=(-4*e[3*t+3][3*n+3].y+6*(e[3*t+3][3*n+2].y+e[3*t+2][3*n+3].y)+-2*(e[3*t+3][3*n].y+e[3*t][3*n+3].y)+3*(e[3*t][3*n+2].y+e[3*t+2][3*n].y)+-1*e[3*t][3*n].y)/9}}this.nodes=e,this.colors=s}paintMesh(t,e){let s=(this.nodes.length-1)/3,r=(this.nodes[0].length-1)/3;if(&quot;bilinear&quot;===this.type||s&lt;2||r&lt;2){let n;for(let o=0;o&lt;s;++o)for(let s=0;s&lt;r;++s){let r=[];for(let t=3*o,e=3*o+4;t&lt;e;++t)r.push(this.nodes[t].slice(3*s,3*s+4));let i=[];i.push(this.colors[o].slice(s,s+2)),i.push(this.colors[o+1].slice(s,s+2)),(n=new m(r,i)).paint(t,e)}}else{let n,o,a,h,l,d,u;const x=s,g=r;s++,r++;let w=new Array(s);for(let t=0;t&lt;s;++t){w[t]=new Array(r);for(let e=0;e&lt;r;++e)w[t][e]=[],w[t][e][0]=this.nodes[3*t][3*e],w[t][e][1]=this.colors[t][e]}for(let t=0;t&lt;s;++t)for(let e=0;e&lt;r;++e)0!==t&amp;&amp;t!==x&amp;&amp;(n=i(w[t-1][e][0],w[t][e][0]),o=i(w[t+1][e][0],w[t][e][0]),w[t][e][2]=c(w[t-1][e][1],w[t][e][1],w[t+1][e][1],n,o)),0!==e&amp;&amp;e!==g&amp;&amp;(n=i(w[t][e-1][0],w[t][e][0]),o=i(w[t][e+1][0],w[t][e][0]),w[t][e][3]=c(w[t][e-1][1],w[t][e][1],w[t][e+1][1],n,o));for(let t=0;t&lt;r;++t){w[0][t][2]=[],w[x][t][2]=[];for(let e=0;e&lt;4;++e)n=i(w[1][t][0],w[0][t][0]),o=i(w[x][t][0],w[x-1][t][0]),w[0][t][2][e]=n&gt;0?2*(w[1][t][1][e]-w[0][t][1][e])/n-w[1][t][2][e]:0,w[x][t][2][e]=o&gt;0?2*(w[x][t][1][e]-w[x-1][t][1][e])/o-w[x-1][t][2][e]:0}for(let t=0;t&lt;s;++t){w[t][0][3]=[],w[t][g][3]=[];for(let e=0;e&lt;4;++e)n=i(w[t][1][0],w[t][0][0]),o=i(w[t][g][0],w[t][g-1][0]),w[t][0][3][e]=n&gt;0?2*(w[t][1][1][e]-w[t][0][1][e])/n-w[t][1][3][e]:0,w[t][g][3][e]=o&gt;0?2*(w[t][g][1][e]-w[t][g-1][1][e])/o-w[t][g-1][3][e]:0}for(let s=0;s&lt;x;++s)for(let r=0;r&lt;g;++r){let n=i(w[s][r][0],w[s+1][r][0]),o=i(w[s][r+1][0],w[s+1][r+1][0]),c=i(w[s][r][0],w[s][r+1][0]),x=i(w[s+1][r][0],w[s+1][r+1][0]),g=[[],[],[],[]];for(let t=0;t&lt;4;++t){(d=[])[0]=w[s][r][1][t],d[1]=w[s+1][r][1][t],d[2]=w[s][r+1][1][t],d[3]=w[s+1][r+1][1][t],d[4]=w[s][r][2][t]*n,d[5]=w[s+1][r][2][t]*n,d[6]=w[s][r+1][2][t]*o,d[7]=w[s+1][r+1][2][t]*o,d[8]=w[s][r][3][t]*c,d[9]=w[s+1][r][3][t]*x,d[10]=w[s][r+1][3][t]*c,d[11]=w[s+1][r+1][3][t]*x,d[12]=0,d[13]=0,d[14]=0,d[15]=0,u=f(d);for(let e=0;e&lt;9;++e){g[t][e]=[];for(let s=0;s&lt;9;++s)g[t][e][s]=p(u,e/8,s/8),g[t][e][s]&gt;255?g[t][e][s]=255:g[t][e][s]&lt;0&amp;&amp;(g[t][e][s]=0)}}h=[];for(let t=3*s,e=3*s+4;t&lt;e;++t)h.push(this.nodes[t].slice(3*r,3*r+4));l=y(h);for(let s=0;s&lt;8;++s)for(let r=0;r&lt;8;++r)(a=new m(l[s][r],[[[g[0][s][r],g[1][s][r],g[2][s][r],g[3][s][r]],[g[0][s][r+1],g[1][s][r+1],g[2][s][r+1],g[3][s][r+1]]],[[g[0][s+1][r],g[1][s+1][r],g[2][s+1][r],g[3][s+1][r]],[g[0][s+1][r+1],g[1][s+1][r+1],g[2][s+1][r+1],g[3][s+1][r+1]]]])).paint(t,e)}}}transform(t){if(t instanceof x)for(let e=0,s=this.nodes.length;e&lt;s;++e)for(let s=0,r=this.nodes[0].length;s&lt;r;++s)this.nodes[e][s]=this.nodes[e][s].add(t);else if(t instanceof g)for(let e=0,s=this.nodes.length;e&lt;s;++e)for(let s=0,r=this.nodes[0].length;s&lt;r;++s)this.nodes[e][s]=this.nodes[e][s].transform(t)}scale(t){for(let e=0,s=this.nodes.length;e&lt;s;++e)for(let s=0,r=this.nodes[0].length;s&lt;r;++s)this.nodes[e][s]=this.nodes[e][s].scale(t)}}document.querySelectorAll(&quot;rect,circle,ellipse,path,text&quot;).forEach((r,n)=&gt;{let o=r.getAttribute(&quot;id&quot;);o||(o=&quot;patchjs_shape&quot;+n,r.setAttribute(&quot;id&quot;,o));const i=r.style.fill.match(/^url\(\s*&quot;?\s*#([^\s&quot;]+)&quot;?\s*\)/),a=r.style.stroke.match(/^url\(\s*&quot;?\s*#([^\s&quot;]+)&quot;?\s*\)/);if(i&amp;&amp;i[1]){const a=document.getElementById(i[1]);if(a&amp;&amp;&quot;meshgradient&quot;===a.nodeName){const i=r.getBBox();let l=document.createElementNS(s,&quot;canvas&quot;);d(l,{width:i.width,height:i.height});const c=l.getContext(&quot;2d&quot;);let u=c.createImageData(i.width,i.height);const f=new b(a);&quot;objectBoundingBox&quot;===a.getAttribute(&quot;gradientUnits&quot;)&amp;&amp;f.scale(new x(i.width,i.height));const p=a.getAttribute(&quot;gradientTransform&quot;);null!=p&amp;&amp;f.transform(h(p)),&quot;userSpaceOnUse&quot;===a.getAttribute(&quot;gradientUnits&quot;)&amp;&amp;f.transform(new x(-i.x,-i.y)),f.paintMesh(u.data,l.width),c.putImageData(u,0,0);const y=document.createElementNS(t,&quot;image&quot;);d(y,{width:i.width,height:i.height,x:i.x,y:i.y});let g=l.toDataURL();y.setAttributeNS(e,&quot;xlink:href&quot;,g),r.parentNode.insertBefore(y,r),r.style.fill=&quot;none&quot;;const w=document.createElementNS(t,&quot;use&quot;);w.setAttributeNS(e,&quot;xlink:href&quot;,&quot;#&quot;+o);const m=&quot;patchjs_clip&quot;+n,M=document.createElementNS(t,&quot;clipPath&quot;);M.setAttribute(&quot;id&quot;,m),M.appendChild(w),r.parentElement.insertBefore(M,r),y.setAttribute(&quot;clip-path&quot;,&quot;url(#&quot;+m+&quot;)&quot;),u=null,l=null,g=null}}if(a&amp;&amp;a[1]){const o=document.getElementById(a[1]);if(o&amp;&amp;&quot;meshgradient&quot;===o.nodeName){const i=parseFloat(r.style.strokeWidth.slice(0,-2))*(parseFloat(r.style.strokeMiterlimit)||parseFloat(r.getAttribute(&quot;stroke-miterlimit&quot;))||1),a=r.getBBox(),l=Math.trunc(a.width+i),c=Math.trunc(a.height+i),u=Math.trunc(a.x-i/2),f=Math.trunc(a.y-i/2);let p=document.createElementNS(s,&quot;canvas&quot;);d(p,{width:l,height:c});const y=p.getContext(&quot;2d&quot;);let g=y.createImageData(l,c);const w=new b(o);&quot;objectBoundingBox&quot;===o.getAttribute(&quot;gradientUnits&quot;)&amp;&amp;w.scale(new x(l,c));const m=o.getAttribute(&quot;gradientTransform&quot;);null!=m&amp;&amp;w.transform(h(m)),&quot;userSpaceOnUse&quot;===o.getAttribute(&quot;gradientUnits&quot;)&amp;&amp;w.transform(new x(-u,-f)),w.paintMesh(g.data,p.width),y.putImageData(g,0,0);const M=document.createElementNS(t,&quot;image&quot;);d(M,{width:l,height:c,x:0,y:0});let S=p.toDataURL();M.setAttributeNS(e,&quot;xlink:href&quot;,S);const k=&quot;pattern_clip&quot;+n,A=document.createElementNS(t,&quot;pattern&quot;);d(A,{id:k,patternUnits:&quot;userSpaceOnUse&quot;,width:l,height:c,x:u,y:f}),A.appendChild(M),o.parentNode.appendChild(A),r.style.stroke=&quot;url(#&quot;+k+&quot;)&quot;,g=null,p=null,S=null}}})}();
</script>
</svg>

JavaScript Code:

var s = Snap(svgnode);
var t1 =s.select("#Panel-1-1");
var t =t1.selectAll("text");
t[0].node.innerHTML = ctrl.series[0].datapoints[0][0];
var nodeValue = t.items[0].node.innerHTML;

if(nodeValue < 0 || nodeValue === "") {
console.log('Gray');
} else if(nodeValue < 30 && nodeValue > 0) {
console.log('Green');
} else if(nodeValue < 41 && nodeValue > 30) {
console.log('Yellow');
} else {
console.log('Red');
}

if no values is grey
values under 30 is green
values between 31 – 40 is yellow
values over 41 is red

image

image

What I need to do for Events???

Troubles with event

Hi,
I'm exploring Grafana's possibilities and i came across this plug-in. I'm a completely beginner in JS and SVG but i'm trying anyway.
But currently i have troubles with event management. Is it possible to do some specific function after user event such as mouse click or something else ? I saw the "element.click()" or "element.mouseup()" functions on Snap.svg doc but cannot make them work properly.
If it is possible, could you provide a minimal example code ?
Thanks a lot !

How load script src?

Hi Marcus,
Is it possible to integrate the TweenMax library?
It is very helpful for animating svg elements

<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/2.0.2/TweenMax.min.js"></script>

Linear graph in SVG model

Hi, Marcus!

I was trying to understand how it would be possible to add linear graphics inside an SVG. It is possible?

I would like to put something like a capacity gauge inside an SVG hard disk. This data would be delivered by Zabbix through the metric of an item.

Thanks!

Custom repository isnt picked

I have added an additonal repository 'testrepo' in repositories.json. Unfortunately, the 'testrepo' still does not appear in the drop down menu. Any idea why?

{
    "rtmaster" : {
        "url": "https://github.com/rtmaster",
        "description": "simple examples",
        "license": "Apache 2.0",
        "items" : [
                {
                    "category": "arrows",
                    "name": "arrow-up",
                    "path": "rtmaster/arrows/arrow-up.svg",
                    "description": "Arrow facing up"
                }
            ]
    }
    "testrepo" : {
        "description": "Test repo",
        "license": "Apache 2.0",
        "items" : [
                {
                    "category": "testcategory",
                    "name": "testfile",
                    "path": "testrepo/arrows/testfile.svg",
                    "description": "test file"
                }
            ]
}
# tree testrepo
testrepo
└── testcategory
    └── testfile.svg

1 directory, 1 file

Scaling of graphics

Hi Marcus,

thanks for your excellent contribution.

Do you know if there is an easy way to enable scaling of the svg panels? On my desktop, the panel looks fine. However, on my mobile the graph is not scaled but shown with its original size which does not fit on the screen.

Best,

Dennis

Animation driven from a metric

Hi Marcus,

Thanks for the responding to the other issues. I have another question for you.

Is it possible to drive an animation using a metric e.g. Like a progress bar linked to metric?

In the main page of the repo, you have an example of a tank filling up. It would nice if there was an example which demonstrates that.

Thanks

Any example to store data dynamically in table format in Elasticsearch

Hi, @saurla @MarcusCalidus. Could you provide an example of the table format? I can see that if there are multiple queries the data of both queries are stored sequentially in an array.
Screenshot (108)
Here when I checked ctrl. data in the console. I see that array returns 60 elements where it is difficult to recognize which data belongs to which query. But the query inspector shows two array responses
Screenshot (110) where each object gives a response of every query.
Here data stored sequentially is creating issues while writing code. Is it possible if you could store the multiple query responses in multiple arrays?

Events. Too many errors. (37% scanned).

Hey. I was writing some code in events and it said "Too many errors. (37% scanned)."
I copied the code to JSHint, and the only thing it was complaining about was.

Two undefined variables

1 | Snap
1 | svgnode

My first line is :
var s = Snap(svgnode);

How do I fix that?

Cannot get full data when querying for zabbix triggers

I use Zabbix-connector to get monitoring data from Zabbix. When I query triggers (alarms) without count, I get a table result with additional informations.

However, I cannot access raw results in the svg plugin (ctr.data contains filtered data).
Could you please add something like a "rawData" attribute ?

Here is the JSON result of the zabbix data source query (ajax) :

{
  "jsonrpc": "2.0",
  "result": [
    {
      "triggerid": "16632",
      "expression": "{19418}=1 and {19419}>0",
      "description": "System name has changed (new name: acb7abc30cb7)",
      "url": "",
      "status": "0",
      "value": "1",
      "priority": "1",
      "lastchange": "1574785369",
      "comments": "System name has changed. Ack to close.",
      "error": "",
      "templateid": "16615",
      "type": "0",
      "state": "0",
      "flags": "0",
      "recovery_mode": "2",
      "recovery_expression": "",
      "correlation_mode": "0",
      "correlation_tag": "",
      "manual_close": "1",
      "opdata": "",
      "groups": [
        {
          "groupid": "2",
          "name": "Linux servers",
          "internal": "0",
          "flags": "0"
        }
      ],
      "hosts": [
        {
          "hostid": "10305",
          "host": "zabbix-agent-1",
          "name": "zabbix-agent-1"
        }
      ],
      "lastEvent": {
        "eventid": "184",
        "source": "0",
        "object": "0",
        "objectid": "16632",
        "clock": "1574785369",
        "value": "1",
        "acknowledged": "0",
        "ns": "538615508",
        "name": "System name has changed (new name: acb7abc30cb7)",
        "severity": "1"
      }
    }
  ],
  "id": 1
}

Here is ctrl.data content :

[
  {
    "columnNames": [
      "Host group",
      "Disaster",
      "High",
      "Average",
      "Warning",
      "Information",
      "Not classified"
    ],
    "rows": [
      {
        "Host group": "Linux servers",
        "Disaster": 0,
        "High": 0,
        "Average": 0,
        "Warning": 0,
        "Information": 1,
        "Not classified": 0
      }
    ]
  }
]

If it helps I can provide you a DockerFile with Zabbix and Grafana configured.

reference by alias instead of series name

Hi, ich am currently referencing so my metrics by the series number (i.e. here: 0)

var bhkwleist = s.select("#txtbhkwleist");
bhkwleist.attr({"text": "Leistung: " + ctrl.series[0].stats.current.toFixed(1)+ " kW"});

How can I reference to a specifiy alias instead?

Example to use ctrl.data

Hi,

  1. I just upgraded to 0.3.0 where you have specified ctrl.series will be deprecated.
    Could you please help me with an example to see console.log(ctrl.data) for mapping an elasticsearch data source query.
  2. Also in case there is a string output from my query which i need to plot on my SVG text, how do we go about that.
  3. Using old visualization with ctrl.series, some of the metrics such as 0.01 or 0.25 are not being displayed and hence showing as null.
  4. How to enable zoom functionality on the plugin

Tall svg?

Hi Marcus,

I am trying to put a relatively tall SVG (it is like 440px X 825px) but for some reason the SVG panel won't extend my SVG's div to the bottom of the panel.

Here is my SVG:

<svg x="0px" y="0px" width="440" height="825" viewBox="0 0 440 825">
<style type="text/css">
    svg { background-color: red; }
	.st0{fill:#999999;}
	.st1{fill:#1A1A1A;}
</style>
<rect id="bgbox" x="11" y="13" class="st0" width="420" height="802"/>
<rect id="box4" x="22" y="22" class="st1" width="113" height="313"/>
<rect id="box3" x="22" y="492" class="st1" width="113" height="313"/>
<rect id="box2" x="308" y="24" class="st1" width="113" height="313"/>
<rect id="box1" x="308" y="494" class="st1" width="113" height="313"/>
</svg>

I put a red background just to see what is going on, and this is how it looks like:

svgtest

I am wondering how it would be possible to make this SVG the full height of this panel?

Thanks,
zoell

How to use table format

Hi.
Im trying to use the table format but i am stuck in ctrl.tables.
Could u please show an example of using tables in svg panel?

.animate broken?

While inserting

var s = Snap(svgnode);
var test=s.polyline([143,127],[41,164],[157,40]);
test.animate({transform:'r360,150,150'},10000);

at the onInit section, there is not animation applied to the poly. Inspecting the ground I found that you user snap-svg 0.5.1. Using the same code in 0.4 all seems to be fully working.

panel.doInit is not a function in Grafana 5

Hello, I'm testing this in Grafana 5 beta and when I configure the plugin in first time, they works, but then when i update the dashboard then show the SVG, but with this error (panel.doInit is not a function)
screenshot_20180206_162025

Source of the tank example?

Dear Markus,
is it possible to share the code of the tank example?
these parts of code you have as pictures?

It would be very useful

Best Regards

paskalare

SVG Preview at github

do you know why the SVG preview does not work while browsing to the SVG at Github

How-to connect SVG object attributes to data source?

How do I connect the datasource with parameters of the SVG objects?
For instance, suppose I have three squares. with the simplest type of datasource, I have a binary decision:
a = on/pff
b = on/off
c = on/off
if ON then color red, else color green
Just to start, thats what I am asking

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.