Tangle Matlab scripts

This commit is contained in:
tdehaeze committed 2026-10-12 11:16:59 +02:00
1 parent 6826e2b049
commit 8f5334da31
36 files changed
+9508 -4265

No files matched your search

Binary file not shown.
+201 -207
View File
@@ -1,239 +1,233 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="251.786pt" height="107.617pt" viewBox="0 0 251.786 107.617" version="1.2"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="251.786" height="107.617" viewBox="0 0 251.786 107.617">
<defs> <defs>
<g> <g>
<symbol overflow="visible" id="glyph0-0"> <g id="glyph-0-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph0-1">
<path style="stroke:none;" d="M 11.546875 -4.265625 C 11.546875 -4.578125 11.265625 -4.578125 11.015625 -4.578125 L 6.46875 -4.578125 L 6.46875 -9.125 C 6.46875 -9.375 6.46875 -9.65625 6.171875 -9.65625 C 5.875 -9.65625 5.875 -9.390625 5.875 -9.125 L 5.875 -4.578125 L 1.328125 -4.578125 C 1.078125 -4.578125 0.796875 -4.578125 0.796875 -4.296875 C 0.796875 -3.984375 1.0625 -3.984375 1.328125 -3.984375 L 5.875 -3.984375 L 5.875 0.5625 C 5.875 0.8125 5.875 1.09375 6.15625 1.09375 C 6.46875 1.09375 6.46875 0.828125 6.46875 0.5625 L 6.46875 -3.984375 L 11.015625 -3.984375 C 11.25 -3.984375 11.546875 -3.984375 11.546875 -4.265625 Z M 11.546875 -4.265625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph1-1">
<path style="stroke:none;" d="M 6.890625 -2.484375 C 6.890625 -2.671875 6.703125 -2.671875 6.5625 -2.671875 L 1.15625 -2.671875 C 1.015625 -2.671875 0.828125 -2.671875 0.828125 -2.484375 C 0.828125 -2.28125 1.015625 -2.28125 1.15625 -2.28125 L 6.5625 -2.28125 C 6.703125 -2.28125 6.890625 -2.28125 6.890625 -2.484375 Z M 6.890625 -2.484375 "/>
</symbol>
<symbol overflow="visible" id="glyph2-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph2-1">
<path style="stroke:none;" d="M 6.59375 -2.3125 C 6.59375 -2.40625 6.59375 -2.484375 6.46875 -2.484375 C 6.359375 -2.484375 6.359375 -2.421875 6.34375 -2.328125 C 6.265625 -0.90625 5.203125 -0.09375 4.125 -0.09375 C 3.515625 -0.09375 1.578125 -0.421875 1.578125 -3.390625 C 1.578125 -6.34375 3.515625 -6.6875 4.125 -6.6875 C 5.203125 -6.6875 6.078125 -5.78125 6.28125 -4.328125 C 6.296875 -4.203125 6.296875 -4.171875 6.4375 -4.171875 C 6.59375 -4.171875 6.59375 -4.203125 6.59375 -4.40625 L 6.59375 -6.75 C 6.59375 -6.921875 6.59375 -7 6.484375 -7 C 6.453125 -7 6.40625 -7 6.328125 -6.875 L 5.828125 -6.140625 C 5.46875 -6.5 4.953125 -7 4.015625 -7 C 2.15625 -7 0.5625 -5.421875 0.5625 -3.390625 C 0.5625 -1.34375 2.15625 0.21875 4.015625 0.21875 C 5.625 0.21875 6.59375 -1.15625 6.59375 -2.3125 Z M 6.59375 -2.3125 "/>
</symbol>
<symbol overflow="visible" id="glyph2-2">
<path style="stroke:none;" d="M 4.671875 -2.125 C 4.671875 -3.390625 3.6875 -4.4375 2.484375 -4.4375 C 1.234375 -4.4375 0.28125 -3.359375 0.28125 -2.125 C 0.28125 -0.84375 1.3125 0.109375 2.46875 0.109375 C 3.671875 0.109375 4.671875 -0.859375 4.671875 -2.125 Z M 3.84375 -2.203125 C 3.84375 -1.84375 3.84375 -1.3125 3.625 -0.875 C 3.40625 -0.421875 2.96875 -0.140625 2.484375 -0.140625 C 2.046875 -0.140625 1.625 -0.34375 1.34375 -0.796875 C 1.09375 -1.234375 1.09375 -1.84375 1.09375 -2.203125 C 1.09375 -2.59375 1.09375 -3.125 1.34375 -3.5625 C 1.609375 -4.015625 2.078125 -4.234375 2.46875 -4.234375 C 2.90625 -4.234375 3.328125 -4.015625 3.59375 -3.578125 C 3.84375 -3.15625 3.84375 -2.578125 3.84375 -2.203125 Z M 3.84375 -2.203125 "/>
</symbol>
<symbol overflow="visible" id="glyph2-3">
<path style="stroke:none;" d="M 5.3125 0 L 5.3125 -0.3125 C 4.796875 -0.3125 4.546875 -0.3125 4.53125 -0.609375 L 4.53125 -2.5 C 4.53125 -3.359375 4.53125 -3.65625 4.234375 -4.015625 C 4.09375 -4.1875 3.765625 -4.390625 3.1875 -4.390625 C 2.453125 -4.390625 2 -3.953125 1.71875 -3.34375 L 1.71875 -4.390625 L 0.3125 -4.28125 L 0.3125 -3.96875 C 1.015625 -3.96875 1.09375 -3.90625 1.09375 -3.40625 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.3125 -0.3125 L 0.3125 0 L 1.4375 -0.03125 L 2.546875 0 L 2.546875 -0.3125 C 1.890625 -0.3125 1.78125 -0.3125 1.78125 -0.75 L 1.78125 -2.578125 C 1.78125 -3.609375 2.484375 -4.171875 3.109375 -4.171875 C 3.734375 -4.171875 3.84375 -3.625 3.84375 -3.0625 L 3.84375 -0.75 C 3.84375 -0.3125 3.734375 -0.3125 3.078125 -0.3125 L 3.078125 0 L 4.203125 -0.03125 Z M 5.3125 0 "/>
</symbol>
<symbol overflow="visible" id="glyph2-4">
<path style="stroke:none;" d="M 3.296875 -1.234375 L 3.296875 -1.796875 L 3.046875 -1.796875 L 3.046875 -1.25 C 3.046875 -0.515625 2.75 -0.140625 2.375 -0.140625 C 1.71875 -0.140625 1.71875 -1.046875 1.71875 -1.203125 L 1.71875 -3.96875 L 3.140625 -3.96875 L 3.140625 -4.28125 L 1.71875 -4.28125 L 1.71875 -6.109375 L 1.46875 -6.109375 C 1.453125 -5.28125 1.15625 -4.234375 0.1875 -4.1875 L 0.1875 -3.96875 L 1.03125 -3.96875 L 1.03125 -1.234375 C 1.03125 -0.015625 1.953125 0.109375 2.3125 0.109375 C 3.015625 0.109375 3.296875 -0.59375 3.296875 -1.234375 Z M 3.296875 -1.234375 "/>
</symbol>
<symbol overflow="visible" id="glyph2-5">
<path style="stroke:none;" d="M 3.609375 -3.78125 C 3.609375 -4.09375 3.296875 -4.390625 2.875 -4.390625 C 2.15625 -4.390625 1.796875 -3.71875 1.65625 -3.296875 L 1.65625 -4.390625 L 0.28125 -4.28125 L 0.28125 -3.96875 C 0.96875 -3.96875 1.046875 -3.90625 1.046875 -3.40625 L 1.046875 -0.75 C 1.046875 -0.3125 0.9375 -0.3125 0.28125 -0.3125 L 0.28125 0 L 1.40625 -0.03125 C 1.8125 -0.03125 2.265625 -0.03125 2.671875 0 L 2.671875 -0.3125 L 2.453125 -0.3125 C 1.71875 -0.3125 1.703125 -0.421875 1.703125 -0.78125 L 1.703125 -2.296875 C 1.703125 -3.28125 2.125 -4.171875 2.875 -4.171875 C 2.953125 -4.171875 2.96875 -4.171875 2.984375 -4.15625 C 2.953125 -4.140625 2.765625 -4.03125 2.765625 -3.765625 C 2.765625 -3.5 2.96875 -3.34375 3.1875 -3.34375 C 3.359375 -3.34375 3.609375 -3.46875 3.609375 -3.78125 Z M 3.609375 -3.78125 "/>
</symbol>
<symbol overflow="visible" id="glyph2-6">
<path style="stroke:none;" d="M 2.53125 0 L 2.53125 -0.3125 C 1.859375 -0.3125 1.75 -0.3125 1.75 -0.75 L 1.75 -6.890625 L 0.328125 -6.78125 L 0.328125 -6.46875 C 1.015625 -6.46875 1.09375 -6.40625 1.09375 -5.90625 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.328125 -0.3125 L 0.328125 0 L 1.421875 -0.03125 Z M 2.53125 0 "/>
</symbol>
<symbol overflow="visible" id="glyph2-7">
<path style="stroke:none;" d="M 4.125 -1.1875 C 4.125 -1.28125 4.03125 -1.296875 3.984375 -1.296875 C 3.90625 -1.296875 3.875 -1.234375 3.859375 -1.15625 C 3.515625 -0.140625 2.625 -0.140625 2.515625 -0.140625 C 2.03125 -0.140625 1.625 -0.4375 1.40625 -0.796875 C 1.09375 -1.28125 1.09375 -1.9375 1.09375 -2.296875 L 3.875 -2.296875 C 4.09375 -2.296875 4.125 -2.296875 4.125 -2.5 C 4.125 -3.484375 3.578125 -4.4375 2.34375 -4.4375 C 1.1875 -4.4375 0.28125 -3.421875 0.28125 -2.1875 C 0.28125 -0.859375 1.3125 0.109375 2.453125 0.109375 C 3.671875 0.109375 4.125 -0.984375 4.125 -1.1875 Z M 3.46875 -2.5 L 1.109375 -2.5 C 1.171875 -3.984375 2 -4.234375 2.34375 -4.234375 C 3.359375 -4.234375 3.46875 -2.890625 3.46875 -2.5 Z M 3.46875 -2.5 "/>
</symbol>
<symbol overflow="visible" id="glyph2-8">
<path style="stroke:none;" d="M 6.1875 -4.9375 C 6.1875 -5.90625 5.203125 -6.78125 3.84375 -6.78125 L 0.34375 -6.78125 L 0.34375 -6.46875 L 0.578125 -6.46875 C 1.34375 -6.46875 1.375 -6.359375 1.375 -6 L 1.375 -0.78125 C 1.375 -0.421875 1.34375 -0.3125 0.578125 -0.3125 L 0.34375 -0.3125 L 0.34375 0 C 0.6875 -0.03125 1.421875 -0.03125 1.8125 -0.03125 C 2.1875 -0.03125 2.921875 -0.03125 3.28125 0 L 3.28125 -0.3125 L 3.03125 -0.3125 C 2.265625 -0.3125 2.25 -0.421875 2.25 -0.78125 L 2.25 -3.140625 L 3.921875 -3.140625 C 5.125 -3.140625 6.1875 -3.9375 6.1875 -4.9375 Z M 5.171875 -4.9375 C 5.171875 -4.46875 5.171875 -3.390625 3.59375 -3.390625 L 2.21875 -3.390625 L 2.21875 -6.078125 C 2.21875 -6.40625 2.25 -6.46875 2.703125 -6.46875 L 3.59375 -6.46875 C 5.171875 -6.46875 5.171875 -5.421875 5.171875 -4.9375 Z M 5.171875 -4.9375 "/>
</symbol>
<symbol overflow="visible" id="glyph2-9">
<path style="stroke:none;" d="M 4.796875 -0.890625 L 4.796875 -1.4375 L 4.546875 -1.4375 L 4.546875 -0.890625 C 4.546875 -0.3125 4.296875 -0.25 4.1875 -0.25 C 3.859375 -0.25 3.8125 -0.6875 3.8125 -0.75 L 3.8125 -2.734375 C 3.8125 -3.140625 3.8125 -3.53125 3.46875 -3.90625 C 3.078125 -4.28125 2.578125 -4.4375 2.109375 -4.4375 C 1.296875 -4.4375 0.609375 -3.984375 0.609375 -3.328125 C 0.609375 -3.03125 0.796875 -2.859375 1.0625 -2.859375 C 1.34375 -2.859375 1.515625 -3.0625 1.515625 -3.3125 C 1.515625 -3.4375 1.46875 -3.765625 1.015625 -3.765625 C 1.28125 -4.125 1.765625 -4.234375 2.078125 -4.234375 C 2.5625 -4.234375 3.140625 -3.84375 3.140625 -2.953125 L 3.140625 -2.59375 C 2.625 -2.5625 1.9375 -2.53125 1.3125 -2.234375 C 0.5625 -1.890625 0.3125 -1.375 0.3125 -0.9375 C 0.3125 -0.140625 1.28125 0.109375 1.90625 0.109375 C 2.5625 0.109375 3.015625 -0.28125 3.203125 -0.75 C 3.25 -0.359375 3.515625 0.0625 3.984375 0.0625 C 4.1875 0.0625 4.796875 -0.078125 4.796875 -0.890625 Z M 3.140625 -1.390625 C 3.140625 -0.453125 2.421875 -0.109375 1.96875 -0.109375 C 1.484375 -0.109375 1.078125 -0.453125 1.078125 -0.953125 C 1.078125 -1.5 1.5 -2.328125 3.140625 -2.375 Z M 3.140625 -1.390625 "/>
</symbol>
<symbol overflow="visible" id="glyph2-10">
<path style="stroke:none;" d="M 4.953125 -1.84375 C 4.953125 -2.84375 4.296875 -3.65625 3.46875 -3.84375 L 2.1875 -4.15625 C 1.578125 -4.3125 1.1875 -4.84375 1.1875 -5.421875 C 1.1875 -6.109375 1.71875 -6.71875 2.5 -6.71875 C 4.15625 -6.71875 4.375 -5.09375 4.4375 -4.640625 C 4.4375 -4.578125 4.4375 -4.53125 4.546875 -4.53125 C 4.6875 -4.53125 4.6875 -4.578125 4.6875 -4.765625 L 4.6875 -6.75 C 4.6875 -6.921875 4.6875 -7 4.578125 -7 C 4.5 -7 4.5 -6.984375 4.421875 -6.859375 L 4.078125 -6.296875 C 3.78125 -6.59375 3.375 -7 2.484375 -7 C 1.390625 -7 0.5625 -6.125 0.5625 -5.0625 C 0.5625 -4.25 1.078125 -3.515625 1.859375 -3.25 C 1.96875 -3.21875 2.46875 -3.09375 3.171875 -2.921875 C 3.4375 -2.859375 3.734375 -2.78125 4.015625 -2.421875 C 4.21875 -2.15625 4.3125 -1.828125 4.3125 -1.515625 C 4.3125 -0.796875 3.8125 -0.09375 2.984375 -0.09375 C 2.703125 -0.09375 1.9375 -0.140625 1.421875 -0.625 C 0.84375 -1.15625 0.8125 -1.796875 0.796875 -2.15625 C 0.796875 -2.25 0.71875 -2.25 0.6875 -2.25 C 0.5625 -2.25 0.5625 -2.1875 0.5625 -2 L 0.5625 -0.015625 C 0.5625 0.15625 0.5625 0.21875 0.671875 0.21875 C 0.734375 0.21875 0.75 0.203125 0.8125 0.09375 C 0.8125 0.09375 0.84375 0.046875 1.171875 -0.46875 C 1.484375 -0.140625 2.109375 0.21875 3 0.21875 C 4.15625 0.21875 4.953125 -0.75 4.953125 -1.84375 Z M 4.953125 -1.84375 "/>
</symbol>
<symbol overflow="visible" id="glyph2-11">
<path style="stroke:none;" d="M 5.046875 -3.96875 L 5.046875 -4.28125 C 4.8125 -4.25 4.53125 -4.25 4.296875 -4.25 L 3.4375 -4.28125 L 3.4375 -3.96875 C 3.734375 -3.953125 3.90625 -3.796875 3.90625 -3.546875 C 3.90625 -3.4375 3.890625 -3.421875 3.84375 -3.296875 L 2.84375 -0.859375 L 1.734375 -3.53125 C 1.703125 -3.625 1.671875 -3.671875 1.671875 -3.703125 C 1.671875 -3.96875 2.046875 -3.96875 2.234375 -3.96875 L 2.234375 -4.28125 L 1.15625 -4.25 C 0.890625 -4.25 0.484375 -4.25 0.1875 -4.28125 L 0.1875 -3.96875 C 0.671875 -3.96875 0.859375 -3.96875 0.984375 -3.625 L 2.484375 0 L 2.234375 0.578125 C 2.015625 1.125 1.734375 1.8125 1.09375 1.8125 C 1.046875 1.8125 0.828125 1.8125 0.640625 1.640625 C 0.9375 1.59375 1.015625 1.375 1.015625 1.21875 C 1.015625 0.96875 0.828125 0.796875 0.609375 0.796875 C 0.40625 0.796875 0.1875 0.9375 0.1875 1.234375 C 0.1875 1.671875 0.609375 2.03125 1.09375 2.03125 C 1.71875 2.03125 2.140625 1.46875 2.375 0.90625 L 4.125 -3.328125 C 4.375 -3.953125 4.875 -3.96875 5.046875 -3.96875 Z M 5.046875 -3.96875 "/>
</symbol>
<symbol overflow="visible" id="glyph2-12">
<path style="stroke:none;" d="M 5.3125 0 L 5.3125 -0.3125 C 4.796875 -0.3125 4.546875 -0.3125 4.53125 -0.609375 L 4.53125 -2.5 C 4.53125 -3.359375 4.53125 -3.65625 4.234375 -4.015625 C 4.09375 -4.1875 3.765625 -4.390625 3.1875 -4.390625 C 2.34375 -4.390625 1.921875 -3.796875 1.75 -3.4375 L 1.75 -6.890625 L 0.3125 -6.78125 L 0.3125 -6.46875 C 1.015625 -6.46875 1.09375 -6.40625 1.09375 -5.90625 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.3125 -0.3125 L 0.3125 0 L 1.4375 -0.03125 L 2.546875 0 L 2.546875 -0.3125 C 1.890625 -0.3125 1.78125 -0.3125 1.78125 -0.75 L 1.78125 -2.578125 C 1.78125 -3.609375 2.484375 -4.171875 3.109375 -4.171875 C 3.734375 -4.171875 3.84375 -3.625 3.84375 -3.0625 L 3.84375 -0.75 C 3.84375 -0.3125 3.734375 -0.3125 3.078125 -0.3125 L 3.078125 0 L 4.203125 -0.03125 Z M 5.3125 0 "/>
</symbol>
<symbol overflow="visible" id="glyph2-13">
<path style="stroke:none;" d="M 3.578125 -1.265625 C 3.578125 -1.796875 3.28125 -2.09375 3.15625 -2.21875 C 2.828125 -2.53125 2.4375 -2.609375 2.03125 -2.6875 C 1.46875 -2.796875 0.796875 -2.921875 0.796875 -3.5 C 0.796875 -3.84375 1.0625 -4.25 1.921875 -4.25 C 3 -4.25 3.0625 -3.359375 3.078125 -3.0625 C 3.078125 -2.96875 3.1875 -2.96875 3.1875 -2.96875 C 3.328125 -2.96875 3.328125 -3.015625 3.328125 -3.203125 L 3.328125 -4.203125 C 3.328125 -4.375 3.328125 -4.4375 3.21875 -4.4375 C 3.171875 -4.4375 3.140625 -4.4375 3.015625 -4.328125 C 2.984375 -4.28125 2.890625 -4.203125 2.84375 -4.171875 C 2.46875 -4.4375 2.0625 -4.4375 1.921875 -4.4375 C 0.703125 -4.4375 0.328125 -3.78125 0.328125 -3.21875 C 0.328125 -2.875 0.484375 -2.59375 0.75 -2.375 C 1.078125 -2.125 1.34375 -2.0625 2.0625 -1.921875 C 2.28125 -1.890625 3.09375 -1.71875 3.09375 -1.015625 C 3.09375 -0.5 2.75 -0.109375 1.96875 -0.109375 C 1.140625 -0.109375 0.78125 -0.671875 0.59375 -1.515625 C 0.5625 -1.640625 0.5625 -1.6875 0.453125 -1.6875 C 0.328125 -1.6875 0.328125 -1.625 0.328125 -1.4375 L 0.328125 -0.125 C 0.328125 0.046875 0.328125 0.109375 0.4375 0.109375 C 0.484375 0.109375 0.5 0.09375 0.6875 -0.09375 C 0.703125 -0.109375 0.703125 -0.125 0.890625 -0.3125 C 1.3125 0.09375 1.765625 0.109375 1.96875 0.109375 C 3.109375 0.109375 3.578125 -0.5625 3.578125 -1.265625 Z M 3.578125 -1.265625 "/>
</symbol>
<symbol overflow="visible" id="glyph2-14">
<path style="stroke:none;" d="M 2.453125 0 L 2.453125 -0.3125 C 1.796875 -0.3125 1.75 -0.359375 1.75 -0.75 L 1.75 -4.390625 L 0.359375 -4.28125 L 0.359375 -3.96875 C 1.015625 -3.96875 1.09375 -3.90625 1.09375 -3.421875 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.328125 -0.3125 L 0.328125 0 L 1.421875 -0.03125 C 1.765625 -0.03125 2.109375 -0.015625 2.453125 0 Z M 1.90625 -6 C 1.90625 -6.265625 1.671875 -6.515625 1.375 -6.515625 C 1.046875 -6.515625 0.84375 -6.234375 0.84375 -6 C 0.84375 -5.71875 1.078125 -5.46875 1.375 -5.46875 C 1.703125 -5.46875 1.90625 -5.75 1.90625 -6 Z M 1.90625 -6 "/>
</symbol>
<symbol overflow="visible" id="glyph2-15">
<path style="stroke:none;" d="M 8.71875 0 L 8.71875 -0.3125 L 8.484375 -0.3125 C 7.71875 -0.3125 7.703125 -0.421875 7.703125 -0.78125 L 7.703125 -6 C 7.703125 -6.359375 7.71875 -6.46875 8.484375 -6.46875 L 8.71875 -6.46875 L 8.71875 -6.78125 L 7.046875 -6.78125 C 6.78125 -6.78125 6.78125 -6.765625 6.71875 -6.59375 L 4.546875 -1 L 2.390625 -6.5625 C 2.296875 -6.78125 2.265625 -6.78125 2.046875 -6.78125 L 0.359375 -6.78125 L 0.359375 -6.46875 L 0.609375 -6.46875 C 1.375 -6.46875 1.390625 -6.359375 1.390625 -6 L 1.390625 -1.046875 C 1.390625 -0.78125 1.390625 -0.3125 0.359375 -0.3125 L 0.359375 0 L 1.53125 -0.03125 L 2.6875 0 L 2.6875 -0.3125 C 1.671875 -0.3125 1.671875 -0.78125 1.671875 -1.046875 L 1.671875 -6.390625 L 4.0625 -0.21875 C 4.125 -0.09375 4.171875 0 4.265625 0 C 4.375 0 4.40625 -0.078125 4.4375 -0.1875 L 6.890625 -6.46875 L 6.890625 -0.78125 C 6.890625 -0.421875 6.875 -0.3125 6.109375 -0.3125 L 5.875 -0.3125 L 5.875 0 C 6.234375 -0.03125 6.921875 -0.03125 7.296875 -0.03125 C 7.6875 -0.03125 8.359375 -0.03125 8.71875 0 Z M 8.71875 0 "/>
</symbol>
<symbol overflow="visible" id="glyph2-16">
<path style="stroke:none;" d="M 5.234375 0 L 5.234375 -0.3125 C 4.53125 -0.3125 4.453125 -0.375 4.453125 -0.859375 L 4.453125 -6.890625 L 3.03125 -6.78125 L 3.03125 -6.46875 C 3.71875 -6.46875 3.796875 -6.40625 3.796875 -5.90625 L 3.796875 -3.765625 C 3.515625 -4.125 3.078125 -4.390625 2.546875 -4.390625 C 1.375 -4.390625 0.34375 -3.40625 0.34375 -2.140625 C 0.34375 -0.875 1.3125 0.109375 2.4375 0.109375 C 3.078125 0.109375 3.515625 -0.234375 3.765625 -0.546875 L 3.765625 0.109375 Z M 3.765625 -1.171875 C 3.765625 -0.984375 3.765625 -0.96875 3.65625 -0.796875 C 3.359375 -0.328125 2.921875 -0.109375 2.484375 -0.109375 C 2.046875 -0.109375 1.6875 -0.359375 1.453125 -0.75 C 1.1875 -1.15625 1.15625 -1.71875 1.15625 -2.125 C 1.15625 -2.484375 1.1875 -3.078125 1.46875 -3.53125 C 1.671875 -3.84375 2.046875 -4.171875 2.59375 -4.171875 C 2.9375 -4.171875 3.359375 -4.015625 3.65625 -3.578125 C 3.765625 -3.40625 3.765625 -3.390625 3.765625 -3.203125 Z M 3.765625 -1.171875 "/>
</symbol>
<symbol overflow="visible" id="glyph2-17">
<path style="stroke:none;" d="M 4.15625 0 L 4.15625 -0.3125 L 3.84375 -0.3125 C 2.953125 -0.3125 2.921875 -0.421875 2.921875 -0.78125 L 2.921875 -6.34375 C 2.921875 -6.59375 2.921875 -6.609375 2.6875 -6.609375 C 2.078125 -5.96875 1.203125 -5.96875 0.890625 -5.96875 L 0.890625 -5.671875 C 1.078125 -5.671875 1.671875 -5.671875 2.1875 -5.921875 L 2.1875 -0.78125 C 2.1875 -0.421875 2.15625 -0.3125 1.265625 -0.3125 L 0.9375 -0.3125 L 0.9375 0 C 1.296875 -0.03125 2.15625 -0.03125 2.546875 -0.03125 C 2.953125 -0.03125 3.8125 -0.03125 4.15625 0 Z M 4.15625 0 "/>
</symbol>
<symbol overflow="visible" id="glyph2-18">
<path style="stroke:none;" d="M 4.53125 -1.703125 C 4.53125 -2.515625 3.90625 -3.28125 2.875 -3.5 C 3.6875 -3.765625 4.265625 -4.453125 4.265625 -5.234375 C 4.265625 -6.046875 3.390625 -6.609375 2.4375 -6.609375 C 1.4375 -6.609375 0.6875 -6.015625 0.6875 -5.265625 C 0.6875 -4.9375 0.90625 -4.75 1.1875 -4.75 C 1.5 -4.75 1.703125 -4.953125 1.703125 -5.25 C 1.703125 -5.75 1.234375 -5.75 1.078125 -5.75 C 1.390625 -6.234375 2.046875 -6.359375 2.40625 -6.359375 C 2.8125 -6.359375 3.359375 -6.140625 3.359375 -5.25 C 3.359375 -5.125 3.328125 -4.546875 3.078125 -4.125 C 2.78125 -3.640625 2.4375 -3.609375 2.1875 -3.609375 C 2.109375 -3.59375 1.875 -3.578125 1.8125 -3.578125 C 1.71875 -3.5625 1.65625 -3.546875 1.65625 -3.453125 C 1.65625 -3.34375 1.71875 -3.34375 1.890625 -3.34375 L 2.328125 -3.34375 C 3.140625 -3.34375 3.515625 -2.671875 3.515625 -1.703125 C 3.515625 -0.34375 2.828125 -0.0625 2.390625 -0.0625 C 1.96875 -0.0625 1.21875 -0.234375 0.875 -0.8125 C 1.21875 -0.765625 1.53125 -0.984375 1.53125 -1.359375 C 1.53125 -1.71875 1.265625 -1.921875 0.96875 -1.921875 C 0.734375 -1.921875 0.421875 -1.78125 0.421875 -1.34375 C 0.421875 -0.4375 1.34375 0.21875 2.421875 0.21875 C 3.625 0.21875 4.53125 -0.6875 4.53125 -1.703125 Z M 4.53125 -1.703125 "/>
</symbol>
<symbol overflow="visible" id="glyph2-19">
<path style="stroke:none;" d="M 4.453125 -1.71875 L 4.203125 -1.71875 C 4.15625 -1.421875 4.09375 -0.984375 3.984375 -0.84375 C 3.921875 -0.765625 3.265625 -0.765625 3.046875 -0.765625 L 1.265625 -0.765625 L 2.3125 -1.78125 C 3.859375 -3.15625 4.453125 -3.6875 4.453125 -4.6875 C 4.453125 -5.8125 3.5625 -6.609375 2.34375 -6.609375 C 1.234375 -6.609375 0.5 -5.6875 0.5 -4.8125 C 0.5 -4.25 0.984375 -4.25 1.015625 -4.25 C 1.1875 -4.25 1.53125 -4.375 1.53125 -4.78125 C 1.53125 -5.046875 1.359375 -5.296875 1.015625 -5.296875 C 0.9375 -5.296875 0.90625 -5.296875 0.890625 -5.28125 C 1.109375 -5.9375 1.640625 -6.296875 2.21875 -6.296875 C 3.125 -6.296875 3.546875 -5.5 3.546875 -4.6875 C 3.546875 -3.890625 3.0625 -3.109375 2.515625 -2.484375 L 0.609375 -0.359375 C 0.5 -0.265625 0.5 -0.234375 0.5 0 L 4.171875 0 Z M 4.453125 -1.71875 "/>
</symbol>
<symbol overflow="visible" id="glyph2-20">
<path style="stroke:none;" d="M 5.171875 -2.140625 C 5.171875 -3.40625 4.203125 -4.390625 3.09375 -4.390625 C 2.328125 -4.390625 1.90625 -3.953125 1.703125 -3.734375 L 1.703125 -4.390625 L 0.28125 -4.28125 L 0.28125 -3.96875 C 0.984375 -3.96875 1.046875 -3.90625 1.046875 -3.46875 L 1.046875 1.171875 C 1.046875 1.625 0.9375 1.625 0.28125 1.625 L 0.28125 1.921875 L 1.390625 1.890625 L 2.515625 1.921875 L 2.515625 1.625 C 1.84375 1.625 1.734375 1.625 1.734375 1.171875 L 1.734375 -0.578125 C 1.78125 -0.421875 2.203125 0.109375 2.953125 0.109375 C 4.140625 0.109375 5.171875 -0.859375 5.171875 -2.140625 Z M 4.34375 -2.140625 C 4.34375 -0.9375 3.65625 -0.109375 2.921875 -0.109375 C 2.515625 -0.109375 2.140625 -0.3125 1.875 -0.71875 C 1.734375 -0.921875 1.734375 -0.9375 1.734375 -1.125 L 1.734375 -3.34375 C 2.03125 -3.84375 2.515625 -4.140625 3.015625 -4.140625 C 3.734375 -4.140625 4.34375 -3.265625 4.34375 -2.140625 Z M 4.34375 -2.140625 "/>
</symbol>
<symbol overflow="visible" id="glyph2-21">
<path style="stroke:none;" d="M 4.125 -1.1875 C 4.125 -1.28125 4.015625 -1.28125 3.984375 -1.28125 C 3.90625 -1.28125 3.875 -1.234375 3.859375 -1.1875 C 3.578125 -0.265625 2.921875 -0.140625 2.5625 -0.140625 C 2.03125 -0.140625 1.15625 -0.5625 1.15625 -2.15625 C 1.15625 -3.78125 1.96875 -4.203125 2.5 -4.203125 C 2.59375 -4.203125 3.21875 -4.1875 3.5625 -3.828125 C 3.15625 -3.796875 3.09375 -3.5 3.09375 -3.375 C 3.09375 -3.109375 3.28125 -2.921875 3.546875 -2.921875 C 3.8125 -2.921875 4.015625 -3.078125 4.015625 -3.390625 C 4.015625 -4.0625 3.25 -4.4375 2.484375 -4.4375 C 1.25 -4.4375 0.34375 -3.375 0.34375 -2.140625 C 0.34375 -0.875 1.3125 0.109375 2.46875 0.109375 C 3.796875 0.109375 4.125 -1.078125 4.125 -1.1875 Z M 4.125 -1.1875 "/>
</symbol>
<symbol overflow="visible" id="glyph2-22">
<path style="stroke:none;" d="M 5.234375 0 L 5.234375 -0.3125 C 4.5625 -0.3125 4.453125 -0.3125 4.453125 -0.75 L 4.453125 -4.390625 L 3.203125 -4.3125 C 3.046875 -4.296875 3.03125 -4.28125 3.03125 -4.28125 C 3 -4.28125 2.984375 -4.28125 2.84375 -4.28125 L 1.671875 -4.28125 L 1.671875 -5.390625 C 1.671875 -6.375 2.53125 -6.78125 3.140625 -6.78125 C 3.4375 -6.78125 3.796875 -6.671875 4 -6.453125 C 3.59375 -6.421875 3.53125 -6.15625 3.53125 -6 C 3.53125 -5.671875 3.796875 -5.53125 3.984375 -5.53125 C 4.203125 -5.53125 4.4375 -5.6875 4.4375 -6 C 4.4375 -6.578125 3.890625 -7 3.15625 -7 C 2.234375 -7 1.046875 -6.484375 1.046875 -5.40625 L 1.046875 -4.28125 L 0.265625 -4.28125 L 0.265625 -3.96875 L 1.046875 -3.96875 L 1.046875 -0.75 C 1.046875 -0.3125 0.9375 -0.3125 0.28125 -0.3125 L 0.28125 0 L 1.375 -0.03125 L 2.484375 0 L 2.484375 -0.3125 C 1.8125 -0.3125 1.703125 -0.3125 1.703125 -0.75 L 1.703125 -3.96875 L 3.28125 -3.96875 C 3.734375 -3.96875 3.796875 -3.84375 3.796875 -3.4375 L 3.796875 -0.75 C 3.796875 -0.3125 3.6875 -0.3125 3.03125 -0.3125 L 3.03125 0 L 4.125 -0.03125 Z M 5.234375 0 "/>
</symbol>
<symbol overflow="visible" id="glyph3-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph3-1">
<path style="stroke:none;" d="M 4.328125 -3.734375 C 4.328125 -4.09375 4.015625 -4.390625 3.5 -4.390625 C 2.859375 -4.390625 2.421875 -3.90625 2.234375 -3.625 C 2.15625 -4.0625 1.796875 -4.390625 1.328125 -4.390625 C 0.875 -4.390625 0.6875 -4 0.59375 -3.8125 C 0.421875 -3.484375 0.28125 -2.890625 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.765625 0.578125 -2.984375 C 0.75 -3.6875 0.9375 -4.171875 1.296875 -4.171875 C 1.46875 -4.171875 1.609375 -4.09375 1.609375 -3.703125 C 1.609375 -3.5 1.578125 -3.390625 1.453125 -2.875 L 0.875 -0.578125 C 0.84375 -0.4375 0.78125 -0.203125 0.78125 -0.15625 C 0.78125 0.015625 0.921875 0.109375 1.078125 0.109375 C 1.1875 0.109375 1.375 0.03125 1.4375 -0.171875 C 1.453125 -0.203125 1.796875 -1.5625 1.828125 -1.734375 L 2.15625 -3.03125 C 2.1875 -3.15625 2.46875 -3.625 2.703125 -3.84375 C 2.78125 -3.90625 3.078125 -4.171875 3.5 -4.171875 C 3.765625 -4.171875 3.921875 -4.046875 3.921875 -4.046875 C 3.625 -4 3.40625 -3.765625 3.40625 -3.5 C 3.40625 -3.34375 3.515625 -3.15625 3.78125 -3.15625 C 4.046875 -3.15625 4.328125 -3.390625 4.328125 -3.734375 Z M 4.328125 -3.734375 "/>
</symbol>
<symbol overflow="visible" id="glyph3-2">
<path style="stroke:none;" d="M 3.546875 -0.390625 C 3.546875 -0.421875 3.546875 -0.53125 3.453125 -0.53125 C 3.453125 -0.53125 3.40625 -0.53125 3.328125 -0.46875 C 3.015625 -0.28125 2.65625 -0.109375 2.28125 -0.109375 C 1.703125 -0.109375 1.203125 -0.53125 1.203125 -1.40625 C 1.203125 -1.75 1.296875 -2.125 1.3125 -2.25 L 2.953125 -2.25 C 3.109375 -2.25 3.296875 -2.25 3.296875 -2.40625 C 3.296875 -2.546875 3.171875 -2.546875 3 -2.546875 L 1.40625 -2.546875 C 1.640625 -3.390625 2.1875 -3.96875 3.09375 -3.96875 L 3.40625 -3.96875 C 3.578125 -3.96875 3.734375 -3.96875 3.734375 -4.140625 C 3.734375 -4.28125 3.609375 -4.28125 3.4375 -4.28125 L 3.078125 -4.28125 C 1.796875 -4.28125 0.46875 -3.28125 0.46875 -1.765625 C 0.46875 -0.671875 1.203125 0.109375 2.265625 0.109375 C 2.90625 0.109375 3.546875 -0.28125 3.546875 -0.390625 Z M 3.546875 -0.390625 "/>
</symbol>
<symbol overflow="visible" id="glyph3-3">
<path style="stroke:none;" d="M 5.390625 -1.421875 C 5.390625 -1.515625 5.296875 -1.515625 5.265625 -1.515625 C 5.171875 -1.515625 5.15625 -1.484375 5.125 -1.34375 C 4.984375 -0.78125 4.796875 -0.109375 4.390625 -0.109375 C 4.171875 -0.109375 4.078125 -0.234375 4.078125 -0.5625 C 4.078125 -0.78125 4.203125 -1.25 4.28125 -1.59375 L 4.546875 -2.671875 C 4.578125 -2.8125 4.6875 -3.1875 4.71875 -3.34375 C 4.765625 -3.578125 4.875 -3.953125 4.875 -4.015625 C 4.875 -4.1875 4.734375 -4.28125 4.578125 -4.28125 C 4.53125 -4.28125 4.28125 -4.265625 4.203125 -3.921875 L 3.453125 -0.9375 C 3.4375 -0.90625 3.046875 -0.109375 2.328125 -0.109375 C 1.8125 -0.109375 1.703125 -0.5625 1.703125 -0.921875 C 1.703125 -1.484375 1.984375 -2.265625 2.25 -2.953125 C 2.359375 -3.25 2.40625 -3.390625 2.40625 -3.578125 C 2.40625 -4.015625 2.09375 -4.390625 1.59375 -4.390625 C 0.65625 -4.390625 0.28125 -2.953125 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.78125 0.5625 -2.9375 C 0.8125 -3.796875 1.1875 -4.171875 1.5625 -4.171875 C 1.65625 -4.171875 1.8125 -4.15625 1.8125 -3.84375 C 1.8125 -3.609375 1.703125 -3.3125 1.640625 -3.171875 C 1.28125 -2.1875 1.078125 -1.5625 1.078125 -1.078125 C 1.078125 -0.140625 1.75 0.109375 2.296875 0.109375 C 2.953125 0.109375 3.296875 -0.34375 3.46875 -0.5625 C 3.578125 -0.15625 3.921875 0.109375 4.359375 0.109375 C 4.703125 0.109375 4.9375 -0.125 5.09375 -0.4375 C 5.265625 -0.796875 5.390625 -1.421875 5.390625 -1.421875 Z M 5.390625 -1.421875 "/>
</symbol>
<symbol overflow="visible" id="glyph3-4">
<path style="stroke:none;" d="M 4.828125 -3.78125 C 4.859375 -3.921875 4.859375 -3.9375 4.859375 -4.015625 C 4.859375 -4.1875 4.71875 -4.28125 4.578125 -4.28125 C 4.46875 -4.28125 4.3125 -4.21875 4.234375 -4.0625 C 4.203125 -4.015625 4.125 -3.703125 4.09375 -3.53125 L 3.890625 -2.734375 L 3.4375 -0.953125 C 3.40625 -0.796875 2.96875 -0.109375 2.328125 -0.109375 C 1.8125 -0.109375 1.703125 -0.546875 1.703125 -0.90625 C 1.703125 -1.375 1.875 -1.984375 2.21875 -2.859375 C 2.375 -3.265625 2.40625 -3.375 2.40625 -3.578125 C 2.40625 -4.015625 2.09375 -4.390625 1.59375 -4.390625 C 0.65625 -4.390625 0.28125 -2.953125 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.78125 0.5625 -2.9375 C 0.828125 -3.875 1.234375 -4.171875 1.5625 -4.171875 C 1.640625 -4.171875 1.8125 -4.171875 1.8125 -3.84375 C 1.8125 -3.609375 1.71875 -3.34375 1.640625 -3.15625 C 1.25 -2.109375 1.078125 -1.53125 1.078125 -1.078125 C 1.078125 -0.1875 1.703125 0.109375 2.28125 0.109375 C 2.671875 0.109375 3 -0.0625 3.28125 -0.34375 C 3.15625 0.171875 3.03125 0.671875 2.640625 1.1875 C 2.375 1.53125 2 1.8125 1.546875 1.8125 C 1.40625 1.8125 0.96875 1.78125 0.796875 1.40625 C 0.953125 1.40625 1.078125 1.40625 1.21875 1.28125 C 1.3125 1.1875 1.421875 1.0625 1.421875 0.875 C 1.421875 0.5625 1.15625 0.53125 1.046875 0.53125 C 0.828125 0.53125 0.5 0.6875 0.5 1.171875 C 0.5 1.671875 0.9375 2.03125 1.546875 2.03125 C 2.5625 2.03125 3.59375 1.125 3.875 0.015625 Z M 4.828125 -3.78125 "/>
</symbol>
</g> </g>
<clipPath id="clip1"> <g id="glyph-0-1">
<path d="M 230 62 L 251.234375 62 L 251.234375 94 L 230 94 Z M 230 62 "/> <path d="M 11.546875 -4.265625 C 11.546875 -4.578125 11.265625 -4.578125 11.015625 -4.578125 L 6.46875 -4.578125 L 6.46875 -9.125 C 6.46875 -9.375 6.46875 -9.65625 6.171875 -9.65625 C 5.875 -9.65625 5.875 -9.390625 5.875 -9.125 L 5.875 -4.578125 L 1.328125 -4.578125 C 1.078125 -4.578125 0.796875 -4.578125 0.796875 -4.296875 C 0.796875 -3.984375 1.0625 -3.984375 1.328125 -3.984375 L 5.875 -3.984375 L 5.875 0.5625 C 5.875 0.8125 5.875 1.09375 6.15625 1.09375 C 6.46875 1.09375 6.46875 0.828125 6.46875 0.5625 L 6.46875 -3.984375 L 11.015625 -3.984375 C 11.25 -3.984375 11.546875 -3.984375 11.546875 -4.265625 Z M 11.546875 -4.265625 "/>
</g>
<g id="glyph-1-0">
</g>
<g id="glyph-1-1">
<path d="M 6.890625 -2.484375 C 6.890625 -2.671875 6.703125 -2.671875 6.5625 -2.671875 L 1.15625 -2.671875 C 1.015625 -2.671875 0.828125 -2.671875 0.828125 -2.484375 C 0.828125 -2.28125 1.015625 -2.28125 1.15625 -2.28125 L 6.5625 -2.28125 C 6.703125 -2.28125 6.890625 -2.28125 6.890625 -2.484375 Z M 6.890625 -2.484375 "/>
</g>
<g id="glyph-2-0">
</g>
<g id="glyph-2-1">
<path d="M 6.59375 -2.3125 C 6.59375 -2.40625 6.59375 -2.484375 6.46875 -2.484375 C 6.359375 -2.484375 6.359375 -2.421875 6.34375 -2.328125 C 6.265625 -0.90625 5.203125 -0.09375 4.125 -0.09375 C 3.515625 -0.09375 1.578125 -0.421875 1.578125 -3.390625 C 1.578125 -6.34375 3.515625 -6.6875 4.125 -6.6875 C 5.203125 -6.6875 6.078125 -5.78125 6.28125 -4.328125 C 6.296875 -4.203125 6.296875 -4.171875 6.4375 -4.171875 C 6.59375 -4.171875 6.59375 -4.203125 6.59375 -4.40625 L 6.59375 -6.75 C 6.59375 -6.921875 6.59375 -7 6.484375 -7 C 6.453125 -7 6.40625 -7 6.328125 -6.875 L 5.828125 -6.140625 C 5.46875 -6.5 4.953125 -7 4.015625 -7 C 2.15625 -7 0.5625 -5.421875 0.5625 -3.390625 C 0.5625 -1.34375 2.15625 0.21875 4.015625 0.21875 C 5.625 0.21875 6.59375 -1.15625 6.59375 -2.3125 Z M 6.59375 -2.3125 "/>
</g>
<g id="glyph-2-2">
<path d="M 4.671875 -2.125 C 4.671875 -3.390625 3.6875 -4.4375 2.484375 -4.4375 C 1.234375 -4.4375 0.28125 -3.359375 0.28125 -2.125 C 0.28125 -0.84375 1.3125 0.109375 2.46875 0.109375 C 3.671875 0.109375 4.671875 -0.859375 4.671875 -2.125 Z M 3.84375 -2.203125 C 3.84375 -1.84375 3.84375 -1.3125 3.625 -0.875 C 3.40625 -0.421875 2.96875 -0.140625 2.484375 -0.140625 C 2.046875 -0.140625 1.625 -0.34375 1.34375 -0.796875 C 1.09375 -1.234375 1.09375 -1.84375 1.09375 -2.203125 C 1.09375 -2.59375 1.09375 -3.125 1.34375 -3.5625 C 1.609375 -4.015625 2.078125 -4.234375 2.46875 -4.234375 C 2.90625 -4.234375 3.328125 -4.015625 3.59375 -3.578125 C 3.84375 -3.15625 3.84375 -2.578125 3.84375 -2.203125 Z M 3.84375 -2.203125 "/>
</g>
<g id="glyph-2-3">
<path d="M 5.3125 0 L 5.3125 -0.3125 C 4.796875 -0.3125 4.546875 -0.3125 4.53125 -0.609375 L 4.53125 -2.5 C 4.53125 -3.359375 4.53125 -3.65625 4.234375 -4.015625 C 4.09375 -4.1875 3.765625 -4.390625 3.1875 -4.390625 C 2.453125 -4.390625 2 -3.953125 1.71875 -3.34375 L 1.71875 -4.390625 L 0.3125 -4.28125 L 0.3125 -3.96875 C 1.015625 -3.96875 1.09375 -3.90625 1.09375 -3.40625 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.3125 -0.3125 L 0.3125 0 L 1.4375 -0.03125 L 2.546875 0 L 2.546875 -0.3125 C 1.890625 -0.3125 1.78125 -0.3125 1.78125 -0.75 L 1.78125 -2.578125 C 1.78125 -3.609375 2.484375 -4.171875 3.109375 -4.171875 C 3.734375 -4.171875 3.84375 -3.625 3.84375 -3.0625 L 3.84375 -0.75 C 3.84375 -0.3125 3.734375 -0.3125 3.078125 -0.3125 L 3.078125 0 L 4.203125 -0.03125 Z M 5.3125 0 "/>
</g>
<g id="glyph-2-4">
<path d="M 3.296875 -1.234375 L 3.296875 -1.796875 L 3.046875 -1.796875 L 3.046875 -1.25 C 3.046875 -0.515625 2.75 -0.140625 2.375 -0.140625 C 1.71875 -0.140625 1.71875 -1.046875 1.71875 -1.203125 L 1.71875 -3.96875 L 3.140625 -3.96875 L 3.140625 -4.28125 L 1.71875 -4.28125 L 1.71875 -6.109375 L 1.46875 -6.109375 C 1.453125 -5.28125 1.15625 -4.234375 0.1875 -4.1875 L 0.1875 -3.96875 L 1.03125 -3.96875 L 1.03125 -1.234375 C 1.03125 -0.015625 1.953125 0.109375 2.3125 0.109375 C 3.015625 0.109375 3.296875 -0.59375 3.296875 -1.234375 Z M 3.296875 -1.234375 "/>
</g>
<g id="glyph-2-5">
<path d="M 3.609375 -3.78125 C 3.609375 -4.09375 3.296875 -4.390625 2.875 -4.390625 C 2.15625 -4.390625 1.796875 -3.71875 1.65625 -3.296875 L 1.65625 -4.390625 L 0.28125 -4.28125 L 0.28125 -3.96875 C 0.96875 -3.96875 1.046875 -3.90625 1.046875 -3.40625 L 1.046875 -0.75 C 1.046875 -0.3125 0.9375 -0.3125 0.28125 -0.3125 L 0.28125 0 L 1.40625 -0.03125 C 1.8125 -0.03125 2.265625 -0.03125 2.671875 0 L 2.671875 -0.3125 L 2.453125 -0.3125 C 1.71875 -0.3125 1.703125 -0.421875 1.703125 -0.78125 L 1.703125 -2.296875 C 1.703125 -3.28125 2.125 -4.171875 2.875 -4.171875 C 2.953125 -4.171875 2.96875 -4.171875 2.984375 -4.15625 C 2.953125 -4.140625 2.765625 -4.03125 2.765625 -3.765625 C 2.765625 -3.5 2.96875 -3.34375 3.1875 -3.34375 C 3.359375 -3.34375 3.609375 -3.46875 3.609375 -3.78125 Z M 3.609375 -3.78125 "/>
</g>
<g id="glyph-2-6">
<path d="M 2.53125 0 L 2.53125 -0.3125 C 1.859375 -0.3125 1.75 -0.3125 1.75 -0.75 L 1.75 -6.890625 L 0.328125 -6.78125 L 0.328125 -6.46875 C 1.015625 -6.46875 1.09375 -6.40625 1.09375 -5.90625 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.328125 -0.3125 L 0.328125 0 L 1.421875 -0.03125 Z M 2.53125 0 "/>
</g>
<g id="glyph-2-7">
<path d="M 4.125 -1.1875 C 4.125 -1.28125 4.03125 -1.296875 3.984375 -1.296875 C 3.90625 -1.296875 3.875 -1.234375 3.859375 -1.15625 C 3.515625 -0.140625 2.625 -0.140625 2.515625 -0.140625 C 2.03125 -0.140625 1.625 -0.4375 1.40625 -0.796875 C 1.09375 -1.28125 1.09375 -1.9375 1.09375 -2.296875 L 3.875 -2.296875 C 4.09375 -2.296875 4.125 -2.296875 4.125 -2.5 C 4.125 -3.484375 3.578125 -4.4375 2.34375 -4.4375 C 1.1875 -4.4375 0.28125 -3.421875 0.28125 -2.1875 C 0.28125 -0.859375 1.3125 0.109375 2.453125 0.109375 C 3.671875 0.109375 4.125 -0.984375 4.125 -1.1875 Z M 3.46875 -2.5 L 1.109375 -2.5 C 1.171875 -3.984375 2 -4.234375 2.34375 -4.234375 C 3.359375 -4.234375 3.46875 -2.890625 3.46875 -2.5 Z M 3.46875 -2.5 "/>
</g>
<g id="glyph-2-8">
<path d="M 6.1875 -4.9375 C 6.1875 -5.90625 5.203125 -6.78125 3.84375 -6.78125 L 0.34375 -6.78125 L 0.34375 -6.46875 L 0.578125 -6.46875 C 1.34375 -6.46875 1.375 -6.359375 1.375 -6 L 1.375 -0.78125 C 1.375 -0.421875 1.34375 -0.3125 0.578125 -0.3125 L 0.34375 -0.3125 L 0.34375 0 C 0.6875 -0.03125 1.421875 -0.03125 1.8125 -0.03125 C 2.1875 -0.03125 2.921875 -0.03125 3.28125 0 L 3.28125 -0.3125 L 3.03125 -0.3125 C 2.265625 -0.3125 2.25 -0.421875 2.25 -0.78125 L 2.25 -3.140625 L 3.921875 -3.140625 C 5.125 -3.140625 6.1875 -3.9375 6.1875 -4.9375 Z M 5.171875 -4.9375 C 5.171875 -4.46875 5.171875 -3.390625 3.59375 -3.390625 L 2.21875 -3.390625 L 2.21875 -6.078125 C 2.21875 -6.40625 2.25 -6.46875 2.703125 -6.46875 L 3.59375 -6.46875 C 5.171875 -6.46875 5.171875 -5.421875 5.171875 -4.9375 Z M 5.171875 -4.9375 "/>
</g>
<g id="glyph-2-9">
<path d="M 4.796875 -0.890625 L 4.796875 -1.4375 L 4.546875 -1.4375 L 4.546875 -0.890625 C 4.546875 -0.3125 4.296875 -0.25 4.1875 -0.25 C 3.859375 -0.25 3.8125 -0.6875 3.8125 -0.75 L 3.8125 -2.734375 C 3.8125 -3.140625 3.8125 -3.53125 3.46875 -3.90625 C 3.078125 -4.28125 2.578125 -4.4375 2.109375 -4.4375 C 1.296875 -4.4375 0.609375 -3.984375 0.609375 -3.328125 C 0.609375 -3.03125 0.796875 -2.859375 1.0625 -2.859375 C 1.34375 -2.859375 1.515625 -3.0625 1.515625 -3.3125 C 1.515625 -3.4375 1.46875 -3.765625 1.015625 -3.765625 C 1.28125 -4.125 1.765625 -4.234375 2.078125 -4.234375 C 2.5625 -4.234375 3.140625 -3.84375 3.140625 -2.953125 L 3.140625 -2.59375 C 2.625 -2.5625 1.9375 -2.53125 1.3125 -2.234375 C 0.5625 -1.890625 0.3125 -1.375 0.3125 -0.9375 C 0.3125 -0.140625 1.28125 0.109375 1.90625 0.109375 C 2.5625 0.109375 3.015625 -0.28125 3.203125 -0.75 C 3.25 -0.359375 3.515625 0.0625 3.984375 0.0625 C 4.1875 0.0625 4.796875 -0.078125 4.796875 -0.890625 Z M 3.140625 -1.390625 C 3.140625 -0.453125 2.421875 -0.109375 1.96875 -0.109375 C 1.484375 -0.109375 1.078125 -0.453125 1.078125 -0.953125 C 1.078125 -1.5 1.5 -2.328125 3.140625 -2.375 Z M 3.140625 -1.390625 "/>
</g>
<g id="glyph-2-10">
<path d="M 4.953125 -1.84375 C 4.953125 -2.84375 4.296875 -3.65625 3.46875 -3.84375 L 2.1875 -4.15625 C 1.578125 -4.3125 1.1875 -4.84375 1.1875 -5.421875 C 1.1875 -6.109375 1.71875 -6.71875 2.5 -6.71875 C 4.15625 -6.71875 4.375 -5.09375 4.4375 -4.640625 C 4.4375 -4.578125 4.4375 -4.53125 4.546875 -4.53125 C 4.6875 -4.53125 4.6875 -4.578125 4.6875 -4.765625 L 4.6875 -6.75 C 4.6875 -6.921875 4.6875 -7 4.578125 -7 C 4.5 -7 4.5 -6.984375 4.421875 -6.859375 L 4.078125 -6.296875 C 3.78125 -6.59375 3.375 -7 2.484375 -7 C 1.390625 -7 0.5625 -6.125 0.5625 -5.0625 C 0.5625 -4.25 1.078125 -3.515625 1.859375 -3.25 C 1.96875 -3.21875 2.46875 -3.09375 3.171875 -2.921875 C 3.4375 -2.859375 3.734375 -2.78125 4.015625 -2.421875 C 4.21875 -2.15625 4.3125 -1.828125 4.3125 -1.515625 C 4.3125 -0.796875 3.8125 -0.09375 2.984375 -0.09375 C 2.703125 -0.09375 1.9375 -0.140625 1.421875 -0.625 C 0.84375 -1.15625 0.8125 -1.796875 0.796875 -2.15625 C 0.796875 -2.25 0.71875 -2.25 0.6875 -2.25 C 0.5625 -2.25 0.5625 -2.1875 0.5625 -2 L 0.5625 -0.015625 C 0.5625 0.15625 0.5625 0.21875 0.671875 0.21875 C 0.734375 0.21875 0.75 0.203125 0.8125 0.09375 C 0.8125 0.09375 0.84375 0.046875 1.171875 -0.46875 C 1.484375 -0.140625 2.109375 0.21875 3 0.21875 C 4.15625 0.21875 4.953125 -0.75 4.953125 -1.84375 Z M 4.953125 -1.84375 "/>
</g>
<g id="glyph-2-11">
<path d="M 5.046875 -3.96875 L 5.046875 -4.28125 C 4.8125 -4.25 4.53125 -4.25 4.296875 -4.25 L 3.4375 -4.28125 L 3.4375 -3.96875 C 3.734375 -3.953125 3.90625 -3.796875 3.90625 -3.546875 C 3.90625 -3.4375 3.890625 -3.421875 3.84375 -3.296875 L 2.84375 -0.859375 L 1.734375 -3.53125 C 1.703125 -3.625 1.671875 -3.671875 1.671875 -3.703125 C 1.671875 -3.96875 2.046875 -3.96875 2.234375 -3.96875 L 2.234375 -4.28125 L 1.15625 -4.25 C 0.890625 -4.25 0.484375 -4.25 0.1875 -4.28125 L 0.1875 -3.96875 C 0.671875 -3.96875 0.859375 -3.96875 0.984375 -3.625 L 2.484375 0 L 2.234375 0.578125 C 2.015625 1.125 1.734375 1.8125 1.09375 1.8125 C 1.046875 1.8125 0.828125 1.8125 0.640625 1.640625 C 0.9375 1.59375 1.015625 1.375 1.015625 1.21875 C 1.015625 0.96875 0.828125 0.796875 0.609375 0.796875 C 0.40625 0.796875 0.1875 0.9375 0.1875 1.234375 C 0.1875 1.671875 0.609375 2.03125 1.09375 2.03125 C 1.71875 2.03125 2.140625 1.46875 2.375 0.90625 L 4.125 -3.328125 C 4.375 -3.953125 4.875 -3.96875 5.046875 -3.96875 Z M 5.046875 -3.96875 "/>
</g>
<g id="glyph-2-12">
<path d="M 5.3125 0 L 5.3125 -0.3125 C 4.796875 -0.3125 4.546875 -0.3125 4.53125 -0.609375 L 4.53125 -2.5 C 4.53125 -3.359375 4.53125 -3.65625 4.234375 -4.015625 C 4.09375 -4.1875 3.765625 -4.390625 3.1875 -4.390625 C 2.34375 -4.390625 1.921875 -3.796875 1.75 -3.4375 L 1.75 -6.890625 L 0.3125 -6.78125 L 0.3125 -6.46875 C 1.015625 -6.46875 1.09375 -6.40625 1.09375 -5.90625 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.3125 -0.3125 L 0.3125 0 L 1.4375 -0.03125 L 2.546875 0 L 2.546875 -0.3125 C 1.890625 -0.3125 1.78125 -0.3125 1.78125 -0.75 L 1.78125 -2.578125 C 1.78125 -3.609375 2.484375 -4.171875 3.109375 -4.171875 C 3.734375 -4.171875 3.84375 -3.625 3.84375 -3.0625 L 3.84375 -0.75 C 3.84375 -0.3125 3.734375 -0.3125 3.078125 -0.3125 L 3.078125 0 L 4.203125 -0.03125 Z M 5.3125 0 "/>
</g>
<g id="glyph-2-13">
<path d="M 3.578125 -1.265625 C 3.578125 -1.796875 3.28125 -2.09375 3.15625 -2.21875 C 2.828125 -2.53125 2.4375 -2.609375 2.03125 -2.6875 C 1.46875 -2.796875 0.796875 -2.921875 0.796875 -3.5 C 0.796875 -3.84375 1.0625 -4.25 1.921875 -4.25 C 3 -4.25 3.0625 -3.359375 3.078125 -3.0625 C 3.078125 -2.96875 3.1875 -2.96875 3.1875 -2.96875 C 3.328125 -2.96875 3.328125 -3.015625 3.328125 -3.203125 L 3.328125 -4.203125 C 3.328125 -4.375 3.328125 -4.4375 3.21875 -4.4375 C 3.171875 -4.4375 3.140625 -4.4375 3.015625 -4.328125 C 2.984375 -4.28125 2.890625 -4.203125 2.84375 -4.171875 C 2.46875 -4.4375 2.0625 -4.4375 1.921875 -4.4375 C 0.703125 -4.4375 0.328125 -3.78125 0.328125 -3.21875 C 0.328125 -2.875 0.484375 -2.59375 0.75 -2.375 C 1.078125 -2.125 1.34375 -2.0625 2.0625 -1.921875 C 2.28125 -1.890625 3.09375 -1.71875 3.09375 -1.015625 C 3.09375 -0.5 2.75 -0.109375 1.96875 -0.109375 C 1.140625 -0.109375 0.78125 -0.671875 0.59375 -1.515625 C 0.5625 -1.640625 0.5625 -1.6875 0.453125 -1.6875 C 0.328125 -1.6875 0.328125 -1.625 0.328125 -1.4375 L 0.328125 -0.125 C 0.328125 0.046875 0.328125 0.109375 0.4375 0.109375 C 0.484375 0.109375 0.5 0.09375 0.6875 -0.09375 C 0.703125 -0.109375 0.703125 -0.125 0.890625 -0.3125 C 1.3125 0.09375 1.765625 0.109375 1.96875 0.109375 C 3.109375 0.109375 3.578125 -0.5625 3.578125 -1.265625 Z M 3.578125 -1.265625 "/>
</g>
<g id="glyph-2-14">
<path d="M 2.453125 0 L 2.453125 -0.3125 C 1.796875 -0.3125 1.75 -0.359375 1.75 -0.75 L 1.75 -4.390625 L 0.359375 -4.28125 L 0.359375 -3.96875 C 1.015625 -3.96875 1.09375 -3.90625 1.09375 -3.421875 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.328125 -0.3125 L 0.328125 0 L 1.421875 -0.03125 C 1.765625 -0.03125 2.109375 -0.015625 2.453125 0 Z M 1.90625 -6 C 1.90625 -6.265625 1.671875 -6.515625 1.375 -6.515625 C 1.046875 -6.515625 0.84375 -6.234375 0.84375 -6 C 0.84375 -5.71875 1.078125 -5.46875 1.375 -5.46875 C 1.703125 -5.46875 1.90625 -5.75 1.90625 -6 Z M 1.90625 -6 "/>
</g>
<g id="glyph-2-15">
<path d="M 8.71875 0 L 8.71875 -0.3125 L 8.484375 -0.3125 C 7.71875 -0.3125 7.703125 -0.421875 7.703125 -0.78125 L 7.703125 -6 C 7.703125 -6.359375 7.71875 -6.46875 8.484375 -6.46875 L 8.71875 -6.46875 L 8.71875 -6.78125 L 7.046875 -6.78125 C 6.78125 -6.78125 6.78125 -6.765625 6.71875 -6.59375 L 4.546875 -1 L 2.390625 -6.5625 C 2.296875 -6.78125 2.265625 -6.78125 2.046875 -6.78125 L 0.359375 -6.78125 L 0.359375 -6.46875 L 0.609375 -6.46875 C 1.375 -6.46875 1.390625 -6.359375 1.390625 -6 L 1.390625 -1.046875 C 1.390625 -0.78125 1.390625 -0.3125 0.359375 -0.3125 L 0.359375 0 L 1.53125 -0.03125 L 2.6875 0 L 2.6875 -0.3125 C 1.671875 -0.3125 1.671875 -0.78125 1.671875 -1.046875 L 1.671875 -6.390625 L 4.0625 -0.21875 C 4.125 -0.09375 4.171875 0 4.265625 0 C 4.375 0 4.40625 -0.078125 4.4375 -0.1875 L 6.890625 -6.46875 L 6.890625 -0.78125 C 6.890625 -0.421875 6.875 -0.3125 6.109375 -0.3125 L 5.875 -0.3125 L 5.875 0 C 6.234375 -0.03125 6.921875 -0.03125 7.296875 -0.03125 C 7.6875 -0.03125 8.359375 -0.03125 8.71875 0 Z M 8.71875 0 "/>
</g>
<g id="glyph-2-16">
<path d="M 5.234375 0 L 5.234375 -0.3125 C 4.53125 -0.3125 4.453125 -0.375 4.453125 -0.859375 L 4.453125 -6.890625 L 3.03125 -6.78125 L 3.03125 -6.46875 C 3.71875 -6.46875 3.796875 -6.40625 3.796875 -5.90625 L 3.796875 -3.765625 C 3.515625 -4.125 3.078125 -4.390625 2.546875 -4.390625 C 1.375 -4.390625 0.34375 -3.40625 0.34375 -2.140625 C 0.34375 -0.875 1.3125 0.109375 2.4375 0.109375 C 3.078125 0.109375 3.515625 -0.234375 3.765625 -0.546875 L 3.765625 0.109375 Z M 3.765625 -1.171875 C 3.765625 -0.984375 3.765625 -0.96875 3.65625 -0.796875 C 3.359375 -0.328125 2.921875 -0.109375 2.484375 -0.109375 C 2.046875 -0.109375 1.6875 -0.359375 1.453125 -0.75 C 1.1875 -1.15625 1.15625 -1.71875 1.15625 -2.125 C 1.15625 -2.484375 1.1875 -3.078125 1.46875 -3.53125 C 1.671875 -3.84375 2.046875 -4.171875 2.59375 -4.171875 C 2.9375 -4.171875 3.359375 -4.015625 3.65625 -3.578125 C 3.765625 -3.40625 3.765625 -3.390625 3.765625 -3.203125 Z M 3.765625 -1.171875 "/>
</g>
<g id="glyph-2-17">
<path d="M 4.15625 0 L 4.15625 -0.3125 L 3.84375 -0.3125 C 2.953125 -0.3125 2.921875 -0.421875 2.921875 -0.78125 L 2.921875 -6.34375 C 2.921875 -6.59375 2.921875 -6.609375 2.6875 -6.609375 C 2.078125 -5.96875 1.203125 -5.96875 0.890625 -5.96875 L 0.890625 -5.671875 C 1.078125 -5.671875 1.671875 -5.671875 2.1875 -5.921875 L 2.1875 -0.78125 C 2.1875 -0.421875 2.15625 -0.3125 1.265625 -0.3125 L 0.9375 -0.3125 L 0.9375 0 C 1.296875 -0.03125 2.15625 -0.03125 2.546875 -0.03125 C 2.953125 -0.03125 3.8125 -0.03125 4.15625 0 Z M 4.15625 0 "/>
</g>
<g id="glyph-2-18">
<path d="M 4.53125 -1.703125 C 4.53125 -2.515625 3.90625 -3.28125 2.875 -3.5 C 3.6875 -3.765625 4.265625 -4.453125 4.265625 -5.234375 C 4.265625 -6.046875 3.390625 -6.609375 2.4375 -6.609375 C 1.4375 -6.609375 0.6875 -6.015625 0.6875 -5.265625 C 0.6875 -4.9375 0.90625 -4.75 1.1875 -4.75 C 1.5 -4.75 1.703125 -4.953125 1.703125 -5.25 C 1.703125 -5.75 1.234375 -5.75 1.078125 -5.75 C 1.390625 -6.234375 2.046875 -6.359375 2.40625 -6.359375 C 2.8125 -6.359375 3.359375 -6.140625 3.359375 -5.25 C 3.359375 -5.125 3.328125 -4.546875 3.078125 -4.125 C 2.78125 -3.640625 2.4375 -3.609375 2.1875 -3.609375 C 2.109375 -3.59375 1.875 -3.578125 1.8125 -3.578125 C 1.71875 -3.5625 1.65625 -3.546875 1.65625 -3.453125 C 1.65625 -3.34375 1.71875 -3.34375 1.890625 -3.34375 L 2.328125 -3.34375 C 3.140625 -3.34375 3.515625 -2.671875 3.515625 -1.703125 C 3.515625 -0.34375 2.828125 -0.0625 2.390625 -0.0625 C 1.96875 -0.0625 1.21875 -0.234375 0.875 -0.8125 C 1.21875 -0.765625 1.53125 -0.984375 1.53125 -1.359375 C 1.53125 -1.71875 1.265625 -1.921875 0.96875 -1.921875 C 0.734375 -1.921875 0.421875 -1.78125 0.421875 -1.34375 C 0.421875 -0.4375 1.34375 0.21875 2.421875 0.21875 C 3.625 0.21875 4.53125 -0.6875 4.53125 -1.703125 Z M 4.53125 -1.703125 "/>
</g>
<g id="glyph-2-19">
<path d="M 4.453125 -1.71875 L 4.203125 -1.71875 C 4.15625 -1.421875 4.09375 -0.984375 3.984375 -0.84375 C 3.921875 -0.765625 3.265625 -0.765625 3.046875 -0.765625 L 1.265625 -0.765625 L 2.3125 -1.78125 C 3.859375 -3.15625 4.453125 -3.6875 4.453125 -4.6875 C 4.453125 -5.8125 3.5625 -6.609375 2.34375 -6.609375 C 1.234375 -6.609375 0.5 -5.6875 0.5 -4.8125 C 0.5 -4.25 0.984375 -4.25 1.015625 -4.25 C 1.1875 -4.25 1.53125 -4.375 1.53125 -4.78125 C 1.53125 -5.046875 1.359375 -5.296875 1.015625 -5.296875 C 0.9375 -5.296875 0.90625 -5.296875 0.890625 -5.28125 C 1.109375 -5.9375 1.640625 -6.296875 2.21875 -6.296875 C 3.125 -6.296875 3.546875 -5.5 3.546875 -4.6875 C 3.546875 -3.890625 3.0625 -3.109375 2.515625 -2.484375 L 0.609375 -0.359375 C 0.5 -0.265625 0.5 -0.234375 0.5 0 L 4.171875 0 Z M 4.453125 -1.71875 "/>
</g>
<g id="glyph-2-20">
<path d="M 5.171875 -2.140625 C 5.171875 -3.40625 4.203125 -4.390625 3.09375 -4.390625 C 2.328125 -4.390625 1.90625 -3.953125 1.703125 -3.734375 L 1.703125 -4.390625 L 0.28125 -4.28125 L 0.28125 -3.96875 C 0.984375 -3.96875 1.046875 -3.90625 1.046875 -3.46875 L 1.046875 1.171875 C 1.046875 1.625 0.9375 1.625 0.28125 1.625 L 0.28125 1.921875 L 1.390625 1.890625 L 2.515625 1.921875 L 2.515625 1.625 C 1.84375 1.625 1.734375 1.625 1.734375 1.171875 L 1.734375 -0.578125 C 1.78125 -0.421875 2.203125 0.109375 2.953125 0.109375 C 4.140625 0.109375 5.171875 -0.859375 5.171875 -2.140625 Z M 4.34375 -2.140625 C 4.34375 -0.9375 3.65625 -0.109375 2.921875 -0.109375 C 2.515625 -0.109375 2.140625 -0.3125 1.875 -0.71875 C 1.734375 -0.921875 1.734375 -0.9375 1.734375 -1.125 L 1.734375 -3.34375 C 2.03125 -3.84375 2.515625 -4.140625 3.015625 -4.140625 C 3.734375 -4.140625 4.34375 -3.265625 4.34375 -2.140625 Z M 4.34375 -2.140625 "/>
</g>
<g id="glyph-2-21">
<path d="M 4.125 -1.1875 C 4.125 -1.28125 4.015625 -1.28125 3.984375 -1.28125 C 3.90625 -1.28125 3.875 -1.234375 3.859375 -1.1875 C 3.578125 -0.265625 2.921875 -0.140625 2.5625 -0.140625 C 2.03125 -0.140625 1.15625 -0.5625 1.15625 -2.15625 C 1.15625 -3.78125 1.96875 -4.203125 2.5 -4.203125 C 2.59375 -4.203125 3.21875 -4.1875 3.5625 -3.828125 C 3.15625 -3.796875 3.09375 -3.5 3.09375 -3.375 C 3.09375 -3.109375 3.28125 -2.921875 3.546875 -2.921875 C 3.8125 -2.921875 4.015625 -3.078125 4.015625 -3.390625 C 4.015625 -4.0625 3.25 -4.4375 2.484375 -4.4375 C 1.25 -4.4375 0.34375 -3.375 0.34375 -2.140625 C 0.34375 -0.875 1.3125 0.109375 2.46875 0.109375 C 3.796875 0.109375 4.125 -1.078125 4.125 -1.1875 Z M 4.125 -1.1875 "/>
</g>
<g id="glyph-2-22">
<path d="M 5.234375 0 L 5.234375 -0.3125 C 4.5625 -0.3125 4.453125 -0.3125 4.453125 -0.75 L 4.453125 -4.390625 L 3.203125 -4.3125 C 3.046875 -4.296875 3.03125 -4.28125 3.03125 -4.28125 C 3 -4.28125 2.984375 -4.28125 2.84375 -4.28125 L 1.671875 -4.28125 L 1.671875 -5.390625 C 1.671875 -6.375 2.53125 -6.78125 3.140625 -6.78125 C 3.4375 -6.78125 3.796875 -6.671875 4 -6.453125 C 3.59375 -6.421875 3.53125 -6.15625 3.53125 -6 C 3.53125 -5.671875 3.796875 -5.53125 3.984375 -5.53125 C 4.203125 -5.53125 4.4375 -5.6875 4.4375 -6 C 4.4375 -6.578125 3.890625 -7 3.15625 -7 C 2.234375 -7 1.046875 -6.484375 1.046875 -5.40625 L 1.046875 -4.28125 L 0.265625 -4.28125 L 0.265625 -3.96875 L 1.046875 -3.96875 L 1.046875 -0.75 C 1.046875 -0.3125 0.9375 -0.3125 0.28125 -0.3125 L 0.28125 0 L 1.375 -0.03125 L 2.484375 0 L 2.484375 -0.3125 C 1.8125 -0.3125 1.703125 -0.3125 1.703125 -0.75 L 1.703125 -3.96875 L 3.28125 -3.96875 C 3.734375 -3.96875 3.796875 -3.84375 3.796875 -3.4375 L 3.796875 -0.75 C 3.796875 -0.3125 3.6875 -0.3125 3.03125 -0.3125 L 3.03125 0 L 4.125 -0.03125 Z M 5.234375 0 "/>
</g>
<g id="glyph-3-0">
</g>
<g id="glyph-3-1">
<path d="M 4.328125 -3.734375 C 4.328125 -4.09375 4.015625 -4.390625 3.5 -4.390625 C 2.859375 -4.390625 2.421875 -3.90625 2.234375 -3.625 C 2.15625 -4.0625 1.796875 -4.390625 1.328125 -4.390625 C 0.875 -4.390625 0.6875 -4 0.59375 -3.8125 C 0.421875 -3.484375 0.28125 -2.890625 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.765625 0.578125 -2.984375 C 0.75 -3.6875 0.9375 -4.171875 1.296875 -4.171875 C 1.46875 -4.171875 1.609375 -4.09375 1.609375 -3.703125 C 1.609375 -3.5 1.578125 -3.390625 1.453125 -2.875 L 0.875 -0.578125 C 0.84375 -0.4375 0.78125 -0.203125 0.78125 -0.15625 C 0.78125 0.015625 0.921875 0.109375 1.078125 0.109375 C 1.1875 0.109375 1.375 0.03125 1.4375 -0.171875 C 1.453125 -0.203125 1.796875 -1.5625 1.828125 -1.734375 L 2.15625 -3.03125 C 2.1875 -3.15625 2.46875 -3.625 2.703125 -3.84375 C 2.78125 -3.90625 3.078125 -4.171875 3.5 -4.171875 C 3.765625 -4.171875 3.921875 -4.046875 3.921875 -4.046875 C 3.625 -4 3.40625 -3.765625 3.40625 -3.5 C 3.40625 -3.34375 3.515625 -3.15625 3.78125 -3.15625 C 4.046875 -3.15625 4.328125 -3.390625 4.328125 -3.734375 Z M 4.328125 -3.734375 "/>
</g>
<g id="glyph-3-2">
<path d="M 3.546875 -0.390625 C 3.546875 -0.421875 3.546875 -0.53125 3.453125 -0.53125 C 3.453125 -0.53125 3.40625 -0.53125 3.328125 -0.46875 C 3.015625 -0.28125 2.65625 -0.109375 2.28125 -0.109375 C 1.703125 -0.109375 1.203125 -0.53125 1.203125 -1.40625 C 1.203125 -1.75 1.296875 -2.125 1.3125 -2.25 L 2.953125 -2.25 C 3.109375 -2.25 3.296875 -2.25 3.296875 -2.40625 C 3.296875 -2.546875 3.171875 -2.546875 3 -2.546875 L 1.40625 -2.546875 C 1.640625 -3.390625 2.1875 -3.96875 3.09375 -3.96875 L 3.40625 -3.96875 C 3.578125 -3.96875 3.734375 -3.96875 3.734375 -4.140625 C 3.734375 -4.28125 3.609375 -4.28125 3.4375 -4.28125 L 3.078125 -4.28125 C 1.796875 -4.28125 0.46875 -3.28125 0.46875 -1.765625 C 0.46875 -0.671875 1.203125 0.109375 2.265625 0.109375 C 2.90625 0.109375 3.546875 -0.28125 3.546875 -0.390625 Z M 3.546875 -0.390625 "/>
</g>
<g id="glyph-3-3">
<path d="M 5.390625 -1.421875 C 5.390625 -1.515625 5.296875 -1.515625 5.265625 -1.515625 C 5.171875 -1.515625 5.15625 -1.484375 5.125 -1.34375 C 4.984375 -0.78125 4.796875 -0.109375 4.390625 -0.109375 C 4.171875 -0.109375 4.078125 -0.234375 4.078125 -0.5625 C 4.078125 -0.78125 4.203125 -1.25 4.28125 -1.59375 L 4.546875 -2.671875 C 4.578125 -2.8125 4.6875 -3.1875 4.71875 -3.34375 C 4.765625 -3.578125 4.875 -3.953125 4.875 -4.015625 C 4.875 -4.1875 4.734375 -4.28125 4.578125 -4.28125 C 4.53125 -4.28125 4.28125 -4.265625 4.203125 -3.921875 L 3.453125 -0.9375 C 3.4375 -0.90625 3.046875 -0.109375 2.328125 -0.109375 C 1.8125 -0.109375 1.703125 -0.5625 1.703125 -0.921875 C 1.703125 -1.484375 1.984375 -2.265625 2.25 -2.953125 C 2.359375 -3.25 2.40625 -3.390625 2.40625 -3.578125 C 2.40625 -4.015625 2.09375 -4.390625 1.59375 -4.390625 C 0.65625 -4.390625 0.28125 -2.953125 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.78125 0.5625 -2.9375 C 0.8125 -3.796875 1.1875 -4.171875 1.5625 -4.171875 C 1.65625 -4.171875 1.8125 -4.15625 1.8125 -3.84375 C 1.8125 -3.609375 1.703125 -3.3125 1.640625 -3.171875 C 1.28125 -2.1875 1.078125 -1.5625 1.078125 -1.078125 C 1.078125 -0.140625 1.75 0.109375 2.296875 0.109375 C 2.953125 0.109375 3.296875 -0.34375 3.46875 -0.5625 C 3.578125 -0.15625 3.921875 0.109375 4.359375 0.109375 C 4.703125 0.109375 4.9375 -0.125 5.09375 -0.4375 C 5.265625 -0.796875 5.390625 -1.421875 5.390625 -1.421875 Z M 5.390625 -1.421875 "/>
</g>
<g id="glyph-3-4">
<path d="M 4.828125 -3.78125 C 4.859375 -3.921875 4.859375 -3.9375 4.859375 -4.015625 C 4.859375 -4.1875 4.71875 -4.28125 4.578125 -4.28125 C 4.46875 -4.28125 4.3125 -4.21875 4.234375 -4.0625 C 4.203125 -4.015625 4.125 -3.703125 4.09375 -3.53125 L 3.890625 -2.734375 L 3.4375 -0.953125 C 3.40625 -0.796875 2.96875 -0.109375 2.328125 -0.109375 C 1.8125 -0.109375 1.703125 -0.546875 1.703125 -0.90625 C 1.703125 -1.375 1.875 -1.984375 2.21875 -2.859375 C 2.375 -3.265625 2.40625 -3.375 2.40625 -3.578125 C 2.40625 -4.015625 2.09375 -4.390625 1.59375 -4.390625 C 0.65625 -4.390625 0.28125 -2.953125 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.78125 0.5625 -2.9375 C 0.828125 -3.875 1.234375 -4.171875 1.5625 -4.171875 C 1.640625 -4.171875 1.8125 -4.171875 1.8125 -3.84375 C 1.8125 -3.609375 1.71875 -3.34375 1.640625 -3.15625 C 1.25 -2.109375 1.078125 -1.53125 1.078125 -1.078125 C 1.078125 -0.1875 1.703125 0.109375 2.28125 0.109375 C 2.671875 0.109375 3 -0.0625 3.28125 -0.34375 C 3.15625 0.171875 3.03125 0.671875 2.640625 1.1875 C 2.375 1.53125 2 1.8125 1.546875 1.8125 C 1.40625 1.8125 0.96875 1.78125 0.796875 1.40625 C 0.953125 1.40625 1.078125 1.40625 1.21875 1.28125 C 1.3125 1.1875 1.421875 1.0625 1.421875 0.875 C 1.421875 0.5625 1.15625 0.53125 1.046875 0.53125 C 0.828125 0.53125 0.5 0.6875 0.5 1.171875 C 0.5 1.671875 0.9375 2.03125 1.546875 2.03125 C 2.5625 2.03125 3.59375 1.125 3.875 0.015625 Z M 4.828125 -3.78125 "/>
</g>
</g>
<clipPath id="clip-0">
<path clip-rule="nonzero" d="M 230 62 L 251.234375 62 L 251.234375 94 L 230 94 Z M 230 62 "/>
</clipPath> </clipPath>
<clipPath id="clip2"> <clipPath id="clip-1">
<path d="M 25 75 L 57 75 L 57 107.234375 L 25 107.234375 Z M 25 75 "/> <path clip-rule="nonzero" d="M 25 75 L 57 75 L 57 107.234375 L 25 107.234375 Z M 25 75 "/>
</clipPath> </clipPath>
</defs> </defs>
<g id="surface1"> <path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 9.962416 -0.0016754 C 9.962416 5.502218 5.501283 9.963351 0.0013101 9.963351 C -5.502583 9.963351 -9.963716 5.502218 -9.963716 -0.0016754 C -9.963716 -5.501649 -5.502583 -9.962782 0.0013101 -9.962782 C 5.501283 -9.962782 9.962416 -5.501649 9.962416 -0.0016754 Z M 9.962416 -0.0016754 " transform="matrix(0.996454, 0, 0, -0.996454, 40.928382, 77.994424)"/>
<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 9.962416 -0.0016754 C 9.962416 5.502218 5.501283 9.963351 0.0013101 9.963351 C -5.502583 9.963351 -9.963716 5.502218 -9.963716 -0.0016754 C -9.963716 -5.501649 -5.502583 -9.962782 0.0013101 -9.962782 C 5.501283 -9.962782 9.962416 -5.501649 9.962416 -0.0016754 Z M 9.962416 -0.0016754 " transform="matrix(0.996454,0,0,-0.996454,40.928382,77.994424)"/> <g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <use xlink:href="#glyph-0-1" x="34.754355" y="82.146647"/>
<use xlink:href="#glyph0-1" x="34.754355" y="82.146647"/>
</g> </g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph1-1" x="31.221927" y="95.698417"/> <use xlink:href="#glyph-1-1" x="31.221927" y="95.698417"/>
</g> </g>
<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 52.982165 -14.173025 L 103.681491 -14.173025 L 103.681491 14.173594 L 52.982165 14.173594 Z M 52.982165 -14.173025 " transform="matrix(0.996454,0,0,-0.996454,40.928382,77.994424)"/> <path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 52.982165 -14.173025 L 103.681491 -14.173025 L 103.681491 14.173594 L 52.982165 14.173594 Z M 52.982165 -14.173025 " transform="matrix(0.996454, 0, 0, -0.996454, 40.928382, 77.994424)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph2-1" x="97.029722" y="81.414253"/> <use xlink:href="#glyph-2-1" x="97.029722" y="81.414253"/>
<use xlink:href="#glyph2-2" x="104.199196" y="81.414253"/> <use xlink:href="#glyph-2-2" x="104.199196" y="81.414253"/>
<use xlink:href="#glyph2-3" x="109.162831" y="81.414253"/> <use xlink:href="#glyph-2-3" x="109.162831" y="81.414253"/>
</g> </g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph2-4" x="114.400458" y="81.414253"/> <use xlink:href="#glyph-2-4" x="114.400458" y="81.414253"/>
<use xlink:href="#glyph2-5" x="118.261174" y="81.414253"/> <use xlink:href="#glyph-2-5" x="118.261174" y="81.414253"/>
<use xlink:href="#glyph2-2" x="122.149685" y="81.414253"/> <use xlink:href="#glyph-2-2" x="122.149685" y="81.414253"/>
<use xlink:href="#glyph2-6" x="127.11332" y="81.414253"/> <use xlink:href="#glyph-2-6" x="127.11332" y="81.414253"/>
<use xlink:href="#glyph2-6" x="129.871116" y="81.414253"/> <use xlink:href="#glyph-2-6" x="129.871116" y="81.414253"/>
<use xlink:href="#glyph2-7" x="132.628911" y="81.414253"/> <use xlink:href="#glyph-2-7" x="132.628911" y="81.414253"/>
<use xlink:href="#glyph2-5" x="137.041582" y="81.414253"/> <use xlink:href="#glyph-2-5" x="137.041582" y="81.414253"/>
</g> </g>
<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 147.195178 -14.173025 L 181.210337 -14.173025 L 181.210337 14.173594 L 147.195178 14.173594 Z M 147.195178 -14.173025 " transform="matrix(0.996454,0,0,-0.996454,40.928382,77.994424)"/> <path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 147.195178 -14.173025 L 181.210337 -14.173025 L 181.210337 14.173594 L 147.195178 14.173594 Z M 147.195178 -14.173025 " transform="matrix(0.996454, 0, 0, -0.996454, 40.928382, 77.994424)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph2-8" x="192.760026" y="81.414253"/> <use xlink:href="#glyph-2-8" x="192.760026" y="81.414253"/>
<use xlink:href="#glyph2-6" x="199.516526" y="81.414253"/> <use xlink:href="#glyph-2-6" x="199.516526" y="81.414253"/>
<use xlink:href="#glyph2-9" x="202.274321" y="81.414253"/> <use xlink:href="#glyph-2-9" x="202.274321" y="81.414253"/>
<use xlink:href="#glyph2-3" x="207.237956" y="81.414253"/> <use xlink:href="#glyph-2-3" x="207.237956" y="81.414253"/>
</g> </g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph2-4" x="212.475583" y="81.414253"/> <use xlink:href="#glyph-2-4" x="212.475583" y="81.414253"/>
</g> </g>
<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 54.750153 43.515932 L 101.909582 43.515932 L 101.909582 71.862551 L 54.750153 71.862551 Z M 54.750153 43.515932 " transform="matrix(0.996454,0,0,-0.996454,40.928382,77.994424)"/> <path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 54.750153 43.515932 L 101.909582 43.515932 L 101.909582 71.862551 L 54.750153 71.862551 Z M 54.750153 43.515932 " transform="matrix(0.996454, 0, 0, -0.996454, 40.928382, 77.994424)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph2-10" x="98.794442" y="22.964272"/> <use xlink:href="#glyph-2-10" x="98.794442" y="22.964272"/>
<use xlink:href="#glyph2-11" x="104.310033" y="22.964272"/> <use xlink:href="#glyph-2-11" x="104.310033" y="22.964272"/>
<use xlink:href="#glyph2-3" x="109.549645" y="22.964272"/> <use xlink:href="#glyph-2-3" x="109.549645" y="22.964272"/>
</g> </g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph2-4" x="114.787273" y="22.964272"/> <use xlink:href="#glyph-2-4" x="114.787273" y="22.964272"/>
<use xlink:href="#glyph2-12" x="118.647988" y="22.964272"/> <use xlink:href="#glyph-2-12" x="118.647988" y="22.964272"/>
<use xlink:href="#glyph2-7" x="124.163579" y="22.964272"/> <use xlink:href="#glyph-2-7" x="124.163579" y="22.964272"/>
<use xlink:href="#glyph2-13" x="128.576251" y="22.964272"/> <use xlink:href="#glyph-2-13" x="128.576251" y="22.964272"/>
<use xlink:href="#glyph2-14" x="132.492558" y="22.964272"/> <use xlink:href="#glyph-2-14" x="132.492558" y="22.964272"/>
<use xlink:href="#glyph2-13" x="135.250354" y="22.964272"/> <use xlink:href="#glyph-2-13" x="135.250354" y="22.964272"/>
</g> </g>
<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 147.195178 43.515932 L 181.210337 43.515932 L 181.210337 71.862551 L 147.195178 71.862551 Z M 147.195178 43.515932 " transform="matrix(0.996454,0,0,-0.996454,40.928382,77.994424)"/> <path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 147.195178 43.515932 L 181.210337 43.515932 L 181.210337 71.862551 L 147.195178 71.862551 Z M 147.195178 43.515932 " transform="matrix(0.996454, 0, 0, -0.996454, 40.928382, 77.994424)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph2-15" x="191.036161" y="23.929836"/> <use xlink:href="#glyph-2-15" x="191.036161" y="23.929836"/>
<use xlink:href="#glyph2-2" x="200.136489" y="23.929836"/> <use xlink:href="#glyph-2-2" x="200.136489" y="23.929836"/>
</g> </g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph2-16" x="205.378087" y="23.929836"/> <use xlink:href="#glyph-2-16" x="205.378087" y="23.929836"/>
<use xlink:href="#glyph2-7" x="210.893678" y="23.929836"/> <use xlink:href="#glyph-2-7" x="210.893678" y="23.929836"/>
<use xlink:href="#glyph2-6" x="215.30635" y="23.929836"/> <use xlink:href="#glyph-2-6" x="215.30635" y="23.929836"/>
</g> </g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -14.597336 -0.0016754 L -38.310336 -0.0016754 " transform="matrix(0.996454,0,0,-0.996454,40.928382,77.994424)"/> <path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -14.597336 -0.0016754 L -38.310336 -0.0016754 " transform="matrix(0.996454, 0, 0, -0.996454, 40.928382, 77.994424)"/>
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.052029 -0.0016754 L 1.610496 1.68399 L 3.088394 -0.0016754 L 1.610496 -1.683421 Z M 6.052029 -0.0016754 " transform="matrix(0.996454,0,0,-0.996454,23.555371,77.994424)"/> <path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052029 -0.0016754 L 1.610496 1.68399 L 3.088394 -0.0016754 L 1.610496 -1.683421 Z M 6.052029 -0.0016754 " transform="matrix(0.996454, 0, 0, -0.996454, 23.555371, 77.994424)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph3-1" x="6.560694" y="74.189964"/> <use xlink:href="#glyph-3-1" x="6.560694" y="74.189964"/>
</g> </g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 9.962416 -0.0016754 L 47.850686 -0.0016754 " transform="matrix(0.996454,0,0,-0.996454,40.928382,77.994424)"/> <path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 9.962416 -0.0016754 L 47.850686 -0.0016754 " transform="matrix(0.996454, 0, 0, -0.996454, 40.928382, 77.994424)"/>
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.05431 -0.0016754 L 1.608858 1.68399 L 3.086755 -0.0016754 L 1.608858 -1.683421 Z M 6.05431 -0.0016754 " transform="matrix(0.996454,0,0,-0.996454,85.77966,77.994424)"/> <path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.05431 -0.0016754 L 1.608858 1.68399 L 3.086755 -0.0016754 L 1.608858 -1.683421 Z M 6.05431 -0.0016754 " transform="matrix(0.996454, 0, 0, -0.996454, 85.77966, 77.994424)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph3-2" x="85.390146" y="74.189964"/> <use xlink:href="#glyph-3-2" x="85.390146" y="74.189964"/>
</g> </g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 104.17935 -0.0016754 L 142.063699 -0.0016754 " transform="matrix(0.996454,0,0,-0.996454,40.928382,77.994424)"/> <path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 104.17935 -0.0016754 L 142.063699 -0.0016754 " transform="matrix(0.996454, 0, 0, -0.996454, 40.928382, 77.994424)"/>
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.052284 -0.0016754 L 1.606831 1.68399 L 3.088649 -0.0016754 L 1.606831 -1.683421 Z M 6.052284 -0.0016754 " transform="matrix(0.996454,0,0,-0.996454,179.660586,77.994424)"/> <path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052284 -0.0016754 L 1.606831 1.68399 L 3.088649 -0.0016754 L 1.606831 -1.683421 Z M 6.052284 -0.0016754 " transform="matrix(0.996454, 0, 0, -0.996454, 179.660586, 77.994424)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph3-3" x="177.616919" y="74.189964"/> <use xlink:href="#glyph-3-3" x="177.616919" y="74.189964"/>
</g> </g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 181.712117 -0.0016754 L 205.425116 -0.0016754 " transform="matrix(0.996454,0,0,-0.996454,40.928382,77.994424)"/> <path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 181.712117 -0.0016754 L 205.425116 -0.0016754 " transform="matrix(0.996454, 0, 0, -0.996454, 40.928382, 77.994424)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 248.828125 77.996094 L 244.398438 76.316406 L 245.871094 77.996094 L 244.398438 79.671875 Z M 248.828125 77.996094 "/> <path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 248.828125 77.996094 L 244.398438 76.316406 L 245.871094 77.996094 L 244.398438 79.671875 Z M 248.828125 77.996094 "/>
<g clip-path="url(#clip1)" clip-rule="nonzero"> <g clip-path="url(#clip-0)">
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.054511 -0.0016754 L 1.609059 1.68399 L 3.086956 -0.0016754 L 1.609059 -1.683421 Z M 6.054511 -0.0016754 " transform="matrix(0.996454,0,0,-0.996454,242.795085,77.994424)"/> <path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.054511 -0.0016754 L 1.609059 1.68399 L 3.086956 -0.0016754 L 1.609059 -1.683421 Z M 6.054511 -0.0016754 " transform="matrix(0.996454, 0, 0, -0.996454, 242.795085, 77.994424)"/>
</g> </g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph3-4" x="241.209598" y="72.259833"/> <use xlink:href="#glyph-3-4" x="241.209598" y="72.259833"/>
</g> </g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 195.883466 -0.0016754 L 195.883466 -28.348295 " transform="matrix(0.996454,0,0,-0.996454,40.928382,77.994424)"/> <path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 195.883466 -0.0016754 L 195.883466 -28.348295 " transform="matrix(0.996454, 0, 0, -0.996454, 40.928382, 77.994424)"/>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 195.883466 -28.348295 L 0.0013101 -28.348295 L 0.0013101 -14.596401 " transform="matrix(0.996454,0,0,-0.996454,40.928382,77.994424)"/> <path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 195.883466 -28.348295 L 0.0013101 -28.348295 L 0.0013101 -14.596401 " transform="matrix(0.996454, 0, 0, -0.996454, 40.928382, 77.994424)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 40.929688 89.335938 L 39.25 93.765625 L 40.929688 92.289062 L 42.605469 93.765625 Z M 40.929688 89.335938 "/> <path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 40.929688 89.335938 L 39.25 93.765625 L 40.929688 92.289062 L 42.605469 93.765625 Z M 40.929688 89.335938 "/>
<g clip-path="url(#clip2)" clip-rule="nonzero"> <g clip-path="url(#clip-1)">
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.052963 -0.0013101 L 1.607511 1.684355 L 3.089328 -0.0013101 L 1.607511 -1.683055 Z M 6.052963 -0.0013101 " transform="matrix(0,-0.996454,-0.996454,0,40.928382,95.367435)"/> <path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052963 -0.0013101 L 1.607511 1.684355 L 3.089328 -0.0013101 L 1.607511 -1.683055 Z M 6.052963 -0.0013101 " transform="matrix(0, -0.996454, -0.996454, 0, 40.928382, 95.367435)"/>
</g> </g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:2.98883,2.98883;stroke-miterlimit:10;" d="M 164.204718 14.671454 L 164.204718 38.384453 " transform="matrix(0.996454,0,0,-0.996454,40.928382,77.994424)"/> <path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-dasharray="2.98883 2.98883" stroke-miterlimit="10" d="M 164.204718 14.671454 L 164.204718 38.384453 " transform="matrix(0.996454, 0, 0, -0.996454, 40.928382, 77.994424)"/>
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.052718 -0.000507786 L 1.607265 1.681237 L 3.089083 -0.000507786 L 1.607265 -1.682253 Z M 6.052718 -0.000507786 " transform="matrix(0,-0.996454,-0.996454,0,204.550275,42.574222)"/> <path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052718 -0.000507786 L 1.607265 1.681237 L 3.089083 -0.000507786 L 1.607265 -1.682253 Z M 6.052718 -0.000507786 " transform="matrix(0, -0.996454, -0.996454, 0, 204.550275, 42.574222)"/>
<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 183.789797 28.846723 C 183.789797 32.602229 180.743839 35.648187 176.984413 35.648187 C 173.228908 35.648187 170.18295 32.602229 170.18295 28.846723 C 170.18295 25.087298 173.228908 22.041339 176.984413 22.041339 C 180.743839 22.041339 183.789797 25.087298 183.789797 28.846723 Z M 183.789797 28.846723 " transform="matrix(0.996454,0,0,-0.996454,40.928382,77.994424)"/> <path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 183.789797 28.846723 C 183.789797 32.602229 180.743839 35.648187 176.984413 35.648187 C 173.228908 35.648187 170.18295 32.602229 170.18295 28.846723 C 170.18295 25.087298 173.228908 22.041339 176.984413 22.041339 C 180.743839 22.041339 183.789797 25.087298 183.789797 28.846723 Z M 183.789797 28.846723 " transform="matrix(0.996454, 0, 0, -0.996454, 40.928382, 77.994424)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph2-17" x="214.802578" y="52.378589"/> <use xlink:href="#glyph-2-17" x="214.802578" y="52.378589"/>
</g> </g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:2.98883,2.98883;stroke-miterlimit:10;" d="M 78.329868 43.018073 L 78.329868 19.305073 " transform="matrix(0.996454,0,0,-0.996454,40.928382,77.994424)"/> <path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-dasharray="2.98883 2.98883" stroke-miterlimit="10" d="M 78.329868 43.018073 L 78.329868 19.305073 " transform="matrix(0.996454, 0, 0, -0.996454, 40.928382, 77.994424)"/>
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.053051 -0.000512377 L 1.607599 1.681233 L 3.089416 -0.000512377 L 1.607599 -1.682258 Z M 6.053051 -0.000512377 " transform="matrix(0,0.996454,0.996454,0,118.980979,55.929352)"/> <path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053051 -0.000512377 L 1.607599 1.681233 L 3.089416 -0.000512377 L 1.607599 -1.682258 Z M 6.053051 -0.000512377 " transform="matrix(0, 0.996454, 0.996454, 0, 118.980979, 55.929352)"/>
<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 97.914947 28.846723 C 97.914947 32.602229 94.868989 35.648187 91.113483 35.648187 C 87.354058 35.648187 84.308099 32.602229 84.308099 28.846723 C 84.308099 25.087298 87.354058 22.041339 91.113483 22.041339 C 94.868989 22.041339 97.914947 25.087298 97.914947 28.846723 Z M 97.914947 28.846723 " transform="matrix(0.996454,0,0,-0.996454,40.928382,77.994424)"/> <path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 97.914947 28.846723 C 97.914947 32.602229 94.868989 35.648187 91.113483 35.648187 C 87.354058 35.648187 84.308099 32.602229 84.308099 28.846723 C 84.308099 25.087298 87.354058 22.041339 91.113483 22.041339 C 94.868989 22.041339 97.914947 25.087298 97.914947 28.846723 Z M 97.914947 28.846723 " transform="matrix(0.996454, 0, 0, -0.996454, 40.928382, 77.994424)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph2-18" x="129.234109" y="52.378589"/> <use xlink:href="#glyph-2-18" x="129.234109" y="52.378589"/>
</g> </g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:2.98883,2.98883;stroke-miterlimit:10;" d="M 146.697319 57.691202 L 107.041061 57.691202 " transform="matrix(0.996454,0,0,-0.996454,40.928382,77.994424)"/> <path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-dasharray="2.98883 2.98883" stroke-miterlimit="10" d="M 146.697319 57.691202 L 107.041061 57.691202 " transform="matrix(0.996454, 0, 0, -0.996454, 40.928382, 77.994424)"/>
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.052404 -0.00132189 L 1.606951 1.684343 L 3.088769 -0.00132189 L 1.606951 -1.683067 Z M 6.052404 -0.00132189 " transform="matrix(-0.996454,0,0,0.996454,150.417659,20.50913)"/> <path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052404 -0.00132189 L 1.606951 1.684343 L 3.088769 -0.00132189 L 1.606951 -1.683067 Z M 6.052404 -0.00132189 " transform="matrix(-0.996454, 0, 0, 0.996454, 150.417659, 20.50913)"/>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:2.98883,2.98883;stroke-miterlimit:10;" d="M 49.618674 57.691202 L 25.905675 57.691202 " transform="matrix(0.996454,0,0,-0.996454,40.928382,77.994424)"/> <path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-dasharray="2.98883 2.98883" stroke-miterlimit="10" d="M 49.618674 57.691202 L 25.905675 57.691202 " transform="matrix(0.996454, 0, 0, -0.996454, 40.928382, 77.994424)"/>
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.055269 0.00132189 L 1.609817 1.683067 L 3.087714 0.00132189 L 1.609817 -1.684343 Z M 6.055269 0.00132189 " transform="matrix(0.996454,0,0,-0.996454,87.54433,20.50913)"/> <path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.055269 0.00132189 L 1.609817 1.683067 L 3.087714 0.00132189 L 1.609817 -1.684343 Z M 6.055269 0.00132189 " transform="matrix(0.996454, 0, 0, -0.996454, 87.54433, 20.50913)"/>
<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 46.882408 70.470897 C 46.882408 74.230323 43.83645 77.276281 40.080944 77.276281 C 36.321519 77.276281 33.27556 74.230323 33.27556 70.470897 C 33.27556 66.715392 36.321519 63.669434 40.080944 63.669434 C 43.83645 63.669434 46.882408 66.715392 46.882408 70.470897 Z M 46.882408 70.470897 " transform="matrix(0.996454,0,0,-0.996454,40.928382,77.994424)"/> <path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 46.882408 70.470897 C 46.882408 74.230323 43.83645 77.276281 40.080944 77.276281 C 36.321519 77.276281 33.27556 74.230323 33.27556 70.470897 C 33.27556 66.715392 36.321519 63.669434 40.080944 63.669434 C 43.83645 63.669434 46.882408 66.715392 46.882408 70.470897 Z M 46.882408 70.470897 " transform="matrix(0.996454, 0, 0, -0.996454, 40.928382, 77.994424)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph2-19" x="78.385077" y="10.900207"/> <use xlink:href="#glyph-2-19" x="78.385077" y="10.900207"/>
</g> </g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph2-10" x="4.146286" y="22.964272"/> <use xlink:href="#glyph-2-10" x="4.146286" y="22.964272"/>
<use xlink:href="#glyph2-20" x="9.661878" y="22.964272"/> <use xlink:href="#glyph-2-20" x="9.661878" y="22.964272"/>
</g> </g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph2-7" x="15.455432" y="22.964272"/> <use xlink:href="#glyph-2-7" x="15.455432" y="22.964272"/>
<use xlink:href="#glyph2-21" x="19.868103" y="22.964272"/> <use xlink:href="#glyph-2-21" x="19.868103" y="22.964272"/>
<use xlink:href="#glyph2-14" x="24.280775" y="22.964272"/> <use xlink:href="#glyph-2-14" x="24.280775" y="22.964272"/>
<use xlink:href="#glyph2-22" x="27.03857" y="22.964272"/> <use xlink:href="#glyph-2-22" x="27.03857" y="22.964272"/>
<use xlink:href="#glyph2-21" x="32.554161" y="22.964272"/> <use xlink:href="#glyph-2-21" x="32.554161" y="22.964272"/>
<use xlink:href="#glyph2-9" x="36.966833" y="22.964272"/> <use xlink:href="#glyph-2-9" x="36.966833" y="22.964272"/>
<use xlink:href="#glyph2-4" x="41.930468" y="22.964272"/> <use xlink:href="#glyph-2-4" x="41.930468" y="22.964272"/>
<use xlink:href="#glyph2-14" x="45.791183" y="22.964272"/> <use xlink:href="#glyph-2-14" x="45.791183" y="22.964272"/>
</g> </g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph2-2" x="48.539051" y="22.964272"/> <use xlink:href="#glyph-2-2" x="48.539051" y="22.964272"/>
</g> </g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> <g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph2-3" x="53.512613" y="22.964272"/> <use xlink:href="#glyph-2-3" x="53.512613" y="22.964272"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-13" x="59.018277" y="22.964272"/>
</g> </g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-2-13" x="59.018277" y="22.964272"/>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 40 KiB

+1382 -669
View File
File diff suppressed because it is too large. Load diff
Binary file not shown.

Before

Width:  |  Height:  |  Size: 184 KiB

After

Width:  |  Height:  |  Size: 219 KiB

+1553 -738
View File
File diff suppressed because it is too large. Load diff
Binary file not shown.

Before

Width:  |  Height:  |  Size: 182 KiB

After

Width:  |  Height:  |  Size: 243 KiB

+1629 -756
View File
File diff suppressed because it is too large. Load diff
Binary file not shown.

Before

Width:  |  Height:  |  Size: 192 KiB

After

Width:  |  Height:  |  Size: 257 KiB

+1734 -897
View File
File diff suppressed because it is too large. Load diff
Binary file not shown.

Before

Width:  |  Height:  |  Size: 212 KiB

After

Width:  |  Height:  |  Size: 283 KiB

Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 52 KiB

File diff suppressed because it is too large. Load diff

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

+849 -746
View File
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -15,6 +15,6 @@ function [W] = generateWeight(args)
s = zpk('s'); s = zpk('s');
W = (((1/args.wc)*sqrt((1-(args.G0/args.Gc)^(2/args.n))/(1-(args.Gc/args.G1)^(2/args.n)))*s + (args.G0/args.Gc)^(1/args.n))/((1/args.G1)^(1/args.n)*(1/args.wc)*sqrt((1-(args.G0/args.Gc)^(2/args.n))/(1-(args.Gc/args.G1)^(2/args.n)))*s + (1/args.Gc)^(1/args.n)))^args.n; W = (((1/args.wc) * sqrt((1-(args.G0/args.Gc)^(2/args.n))/(1-(args.Gc/args.G1)^(2/args.n)))*s + (args.G0/args.Gc)^(1/args.n)) / ((1/args.G1)^(1/args.n) * (1/args.wc) * sqrt((1-(args.G0/args.Gc)^(2/args.n))/(1-(args.Gc/args.G1)^(2/args.n)))*s + (1/args.Gc)^(1/args.n)))^args.n;
end end
+204
View File
@@ -0,0 +1,204 @@
%% Clear Workspace and Close figures
clear; close all; clc;
%% Intialize Laplace variable
s = zpk('s');
% Let's define the system parameters on Matlab.
k = 1e6; % Stiffness [N/m]
c = 4e2; % Damping [N/(m/s)]
m = 10; % Mass [kg]
% And now the system dynamics $G(s)$ and $G_d(s)$.
G = 1/(m*s^2 + c*s + k); % Plant
Gd = (c*s + k)/(m*s^2 + c*s + k); % Disturbance
% #+HTML: <details><summary>Hint</summary>
% #+LATEX: \tcbsubtitle{Hint}
% You can follow this procedure:
% 1. In order to have good disturbance rejection at low frequency, add a simple or double *integrator*
% 2. In terms of the loop gain, the *bandwidth* can be defined at the frequency $\omega_c$ where $|l(j\omega_c)|$ first crosses 1 from above.
% Therefore, adjust the *gain* such that $L(j\omega)$ crosses 1 at around 10Hz
% 3. The roll-off at high frequency for noise attenuation should already be good enough.
% If not, add a *low pass filter*
% 4. Add a *Lead* centered around the crossover frequency (10 Hz) and tune it such that sufficient phase margin is added.
% Verify that the gain margin is good enough.
% #+HTML: </details>
% #+end_exercice
% Let's say we came up with the following controller.
K = 14e8 * ... % Gain
1/(s^2) * ... % Double Integrator
1/(1 + s/2/pi/40) * ... % Low Pass Filter
(1 + s/(2*pi*10/sqrt(8)))/(1 + s/(2*pi*10*sqrt(8))); % Lead
% The bode plot of the Loop Gain is shown in Figure [[fig:loop_gain_manual_afm]] and we can verify that we have the wanted stability margins using the =margin= command:
[Gm, Pm, ~, Wc] = margin(G*K);
% #+RESULTS:
% | Requirements | Manual Method |
% |-----------------------------+---------------|
% | Gain Margin $> 3$ [dB] | 3.1 |
% | Phase Margin $> 30$ [deg] | 35.4 |
% | Crossover $\approx 10$ [Hz] | 10.1 |
freqs = logspace(0, 3, 1000);
figure;
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
ax1 = nexttile([2,1]);
hold on;
plot(freqs, abs(squeeze(freqresp(G*K, freqs, 'Hz'))));
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Magnitude'); set(gca, 'XTickLabel',[]);
hold off;
ylim([1e-4, 1e1])
ax2 = nexttile;
hold on;
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(G*K, freqs, 'Hz')))));
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
yticks(-360:90:360); ylim([-360, 0]);
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
hold off;
linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]);
% Example of the $\mathcal{H}_\infty$ Loop Shaping Synthesis
% <<sec:h_infinity_open_loop_shaping_example>>
% To apply the $\mathcal{H}_\infty$ Loop Shaping Synthesis, the wanted shape of the loop gain should be determined from the specifications.
% This is summarized in Table [[tab:open_loop_shaping_specifications]].
% Such shape corresponds to the typical wanted Loop gain Shape shown in Figure [[fig:open_loop_shaping_shape]].
% #+name: tab:open_loop_shaping_specifications
% #+caption: Wanted Loop Shape corresponding to each specification
% #+attr_latex: :environment tabularx :width \linewidth :align lXX
% | | *Specification* | *Corresponding Loop Shape* |
% |--------------+----------------------------------------+------------------------------------------|
% | *Dist. Rej.* | Highest possible rejection below 1Hz | Slope of -40dB/dec at low frequency |
% | *Pos. Speed* | Bandwidth of approximately 10Hz | $L$ crosses 1 at 10Hz |
% | *Noise Att.* | Roll-off of -40dB/decade past 30Hz | Roll-off of -40dB/decade past 30Hz |
% | *Robustness* | $\Delta G > 3dB$, $\Delta \phi > 30^o$ | Slope of -20dB/decade near the crossover |
% Then, a (stable, minimum phase) transfer function $L_w(s)$ should be created that has the same gain as the wanted shape of the Loop gain.
% For this example, a double integrator and a lead centered on 10Hz are used.
% Then the gain is adjusted such that the $|L_w(j2 \pi 10)| = 1$.
% Using Matlab, we have:
Lw = 2.3e3 * ...
1/(s^2) * ... % Double Integrator
(1 + s/(2*pi*10/sqrt(3)))/(1 + s/(2*pi*10*sqrt(3))); % Lead
% The $\mathcal{H}_\infty$ open loop shaping synthesis is then performed using the =loopsyn= command:
[K, ~, GAM] = loopsyn(G, Lw);
% The obtained Loop Gain is shown in Figure [[fig:open_loop_shaping_hinf_L]] and matches the specified one by a factor $\gamma \approx 2$.
freqs = logspace(0, 3, 1000);
figure;
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
ax1 = nexttile([2,1]);
hold on;
plot(freqs, abs(squeeze(freqresp(G*K, freqs, 'Hz'))), 'DisplayName', '$L(s)$');
plot(freqs, abs(squeeze(freqresp(Lw, freqs, 'Hz'))), 'k--', 'DisplayName', '$L_w(s)$');
plot(freqs, abs(squeeze(freqresp(Lw, freqs, 'Hz')))*GAM, 'k-.', 'DisplayName', '$L_w(s) / \gamma$, $L_w(s) \cdot \gamma$');
plot(freqs, abs(squeeze(freqresp(Lw, freqs, 'Hz')))/GAM, 'k-.', 'HandleVisibility', 'off');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Magnitude'); set(gca, 'XTickLabel',[]);
hold off;
legend('location', 'northeast');
ylim([1e-4, 1e2]);
ax2 = nexttile;
hold on;
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(G*K, freqs, 'Hz')))));
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
yticks(-360:90:360); ylim([-360, 0]);
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
hold off;
linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]);
% #+name: fig:open_loop_shaping_hinf_L
% #+caption: Obtained Open Loop Gain $L(s) = G(s) K(s)$ and comparison with the wanted Loop gain $L_w$
% #+RESULTS:
% [[file:figs/open_loop_shaping_hinf_L.png]]
% #+begin_important
% When using the $\mathcal{H}_\infty$ Synthesis, it is usually recommended to analyze the obtained controller.
% This is usually done by breaking down the controller into simple elements such as low pass filters, high pass filters, notches, leads, etc.
% #+end_important
% Let's briefly analyze the obtained controller which bode plot is shown in Figure [[fig:open_loop_shaping_hinf_K]]:
% - two integrators are used at low frequency to have the wanted low frequency high gain
% - a lead is added centered with the crossover frequency to increase the phase margin
% - a notch is added at the resonance of the plant to increase the gain margin (this is very typical of $\mathcal{H}_\infty$ controllers, and can be an issue, more info on that latter)
freqs = logspace(0, 3, 1000);
figure;
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
ax1 = nexttile([2,1]);
plot(freqs, abs(squeeze(freqresp(K, freqs, 'Hz'))));
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Magnitude'); set(gca, 'XTickLabel',[]);
hold off;
ax2 = nexttile;
plot(freqs, 180/pi*angle(squeeze(freqresp(K, freqs, 'Hz'))));
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
yticks(-360:90:360); ylim([-180, 90]);
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]);
% #+name: fig:open_loop_shaping_hinf_K
% #+caption: Obtained controller $K$ using the open-loop $\mathcal{H}_\infty$ shaping
% #+RESULTS:
% [[file:figs/open_loop_shaping_hinf_K.png]]
% Let's finally compare the obtained stability margins of the $\mathcal{H}_\infty$ controller and of the manually developed controller in Table [[tab:open_loop_shaping_compare]].
[Gm_2, Pm_2, ~, Wc_2] = margin(G*K);
@@ -0,0 +1,308 @@
%% Clear Workspace and Close figures
clear; close all; clc;
%% Intialize Laplace variable
s = zpk('s');
% Let's define the system parameters on Matlab.
k = 1e6; % Stiffness [N/m]
c = 4e2; % Damping [N/(m/s)]
m = 10; % Mass [kg]
% And now the system dynamics $G(s)$ and $G_d(s)$.
G = 1/(m*s^2 + c*s + k); % Plant
Gd = (c*s + k)/(m*s^2 + c*s + k); % Disturbance
% The Sensitivity Function
% <<sec:sensitivity_transfer_functions>>
% The sensitivity function is indisputably the most important closed-loop transfer function of a feedback system.
% In this section, we will see how the shape of the sensitivity function will impact the performances of the closed-loop system.
% Suppose we have developed a "/reference/" controller $K_r(s)$ and made three small changes to obtained three controllers $K_1(s)$, $K_2(s)$ and $K_3(s)$.
% The obtained sensitivity functions for these four controllers are shown in Figure [[fig:sensitivity_shape_effect]] and the corresponding step responses are shown in Figure [[fig:sensitivity_shape_effect_step]].
% The comparison of the sensitivity functions shapes and their effect on the step response is summarized in Table [[tab:compare_sensitivity_shapes]].
% #+name: tab:compare_sensitivity_shapes
% #+caption: Comparison of the sensitivity function shape and the corresponding step response for the three controller variations
% #+attr_latex: :environment tabularx :width 0.9\linewidth :align lXX
% | *Controller* | *Sensitivity Function Shape* | *Change of the Step Response* |
% |--------------+----------------------------------------------------+----------------------------------|
% | $K_1(s)$ | Larger bandwidth $\omega_b$ | Faster rise time |
% | $K_2(s)$ | Larger peak value $\Vert S\Vert_\infty$ | Large overshoot and oscillations |
% | $K_3(s)$ | Larger low frequency gain $\vert S(j\cdot 0)\vert$ | Larger static error |
wc = 2*pi*1; L_w = 8; wi = 2*pi*0.02;
Kr = 1/((s + wi)^2) * ... % Double Integrator
(1 + s/(wc/sqrt(L_w)))/(1 + s/(wc*sqrt(L_w))); % Lead
Kr = Kr/abs(evalfr(Kr*G, 1j*wc));
wc = 2*pi*2; L_w = 8; wi = 2*pi*0.045;
K1 = 1/((s + wi)^2) * ... % Double Integrator
(1 + s/(wc/sqrt(L_w)))/(1 + s/(wc*sqrt(L_w))); % Lead
K1 = K1/abs(evalfr(K1*G, 1j*wc));
wc = 2*pi*1; L_w = 2; wi = 2*pi*0.03;
K2 = 1/((s + wi)^2) * ... % Double Integrator
(1 + s/(wc/sqrt(L_w)))/(1 + s/(wc*sqrt(L_w))); % Lead
K2 = K2/abs(evalfr(K2*G, 1j*wc));
wc = 2*pi*1; L_w = 8; wi = 2*pi*0.2;
K3 = 1/((s + wi)^2) * ... % Double Integrator
(1 + s/(wc/sqrt(L_w)))/(1 + s/(wc*sqrt(L_w))); % Lead
K3 = K3/abs(evalfr(K3*G, 1j*wc));
Sr = 1/(1 + Kr*G);
S1 = 1/(1 + K1*G);
S2 = 1/(1 + K2*G);
S3 = 1/(1 + K3*G);
Tr = Kr*G/(1 + Kr*G);
T1 = K1*G/(1 + K1*G);
T2 = K2*G/(1 + K2*G);
T3 = K3*G/(1 + K3*G);
freqs = logspace(-2, 2, 1000);
figure;
hold on;
plot(freqs, abs(squeeze(freqresp(S1, freqs, 'Hz'))), 'DisplayName', '$K_1(s)$');
plot(freqs, abs(squeeze(freqresp(S2, freqs, 'Hz'))), 'DisplayName', '$K_2(s)$');
plot(freqs, abs(squeeze(freqresp(S3, freqs, 'Hz'))), 'DisplayName', '$K_3(s)$');
plot(freqs, abs(squeeze(freqresp(Sr, freqs, 'Hz'))), 'k-', 'DisplayName', '$K_r(s)$');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Sensitivity Magnitude');
hold off;
legend('location', 'southeast');
ylim([1e-3, 3]);
% #+name: fig:sensitivity_shape_effect
% #+caption: Sensitivity function magnitude $|S(j\omega)|$ corresponding to the reference controller $K_r(s)$ and the three modified controllers $K_i(s)$
% #+RESULTS:
% [[file:figs/sensitivity_shape_effect.png]]
t = linspace(0, 5, 1000);
figure;
hold on;
plot(t, step(T1, t), 'DisplayName', '$K_1(s)$')
plot(t, step(T2, t), 'DisplayName', '$K_2(s)$')
plot(t, step(T3, t), 'DisplayName', '$K_3(s)$')
plot(t, step(Tr, t), 'k-', 'DisplayName', '$K_r(s)$')
hold off
xlabel('Time [s]'); ylabel('Step Response');
legend('location', 'northeast');
ylim([0, 1.7])
% Robustness: Module Margin
% <<sec:module_margin>>
% Let's start this section by an example demonstrating why the phase and gain margins might not be good indicators of robustness.
% Will follow a discussion about the module margin, a robustness indicator that can be linked to the $\mathcal{H}_\infty$ norm of $S$ and that will prove to be very useful.
% #+begin_exampl
% Consider the following plant $G_t(s)$:
w0 = 2*pi*100;
xi = 0.1;
k = 1e7;
Gt = 1/k*(s/w0/4 + 1)/(s^2/w0^2 + 2*xi*s/w0 + 1);
% Let's say we have designed a controller $K_t(s)$ that gives the loop gain shown in Figure [[fig:phase_gain_margin_model_plant]].
Kt = 1.2e6*(s + w0)/s;
% The following characteristics can be determined from the Loop gain in Figure [[fig:phase_gain_margin_model_plant]]:
% - Control bandwidth of $\approx 10\, \text{Hz}$
% - Infinite gain margin (the phase of the loop-gain never reaches $-180^o$)
% - More than $90^o$ of phase margin
% This clearly indicate very good robustness of the closed-loop system!
% Or does it? Let's find out.
freqs = logspace(0, 3, 1000);
figure;
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
ax1 = nexttile([2,1]);
hold on;
plot(freqs, abs(squeeze(freqresp(Gt*Kt, freqs, 'Hz'))), 'DisplayName', '$L(s)$');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Magnitude'); set(gca, 'XTickLabel',[]);
hold off;
legend('location', 'northeast');
ax2 = nexttile;
hold on;
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Gt*Kt, freqs, 'Hz')))));
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
yticks(-360:90:360); ylim([-200, 0]);
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
hold off;
linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]);
% #+name: fig:phase_gain_margin_model_plant
% #+caption: Bode plot of the obtained Loop Gain $L(s)$
% #+attr_latex: :float nil
% #+RESULTS:
% [[file:figs/phase_gain_margin_model_plant.png]]
% Now let's suppose the controller is implemented in practice, and the "real" plant $G_r(s)$ as a slightly lower damping factor than the one estimated for the model:
xi = 0.03;
Gr = 1/k*(s/w0/4 + 1)/(s^2/w0^2 + 2*xi*s/w0 + 1);
% The obtained "real" loop gain is shown in Figure [[fig:phase_gain_margin_real_plant]].
% At a frequency little bit above 100Hz, the phase of the loop gain reaches -180 degrees while its magnitude is more than one which indicates instability.
% It is confirmed by checking the stability of the closed loop system:
isstable(feedback(Gr,Kt))
% #+RESULTS:
% : 0
freqs = logspace(0, 3, 1000);
figure;
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
ax1 = nexttile([2,1]);
hold on;
plot(freqs, abs(squeeze(freqresp(Gt*Kt, freqs, 'Hz'))), 'DisplayName', '$L(s)$');
plot(freqs, abs(squeeze(freqresp(Gr*Kt, freqs, 'Hz'))), 'DisplayName', '$L_r(s)$');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Magnitude'); set(gca, 'XTickLabel',[]);
hold off;
legend('location', 'northeast');
ax2 = nexttile;
hold on;
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Gt*Kt, freqs, 'Hz')))));
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Gr*Kt, freqs, 'Hz')))));
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
yticks(-360:90:360); ylim([-200, 0]);
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
hold off;
linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]);
% #+name: fig:phase_gain_margin_real_plant
% #+caption: Bode plots of $L(s)$ (loop gain corresponding the nominal plant) and $L_r(s)$ (loop gain corresponding to the real plant)
% #+attr_latex: :float nil
% #+RESULTS:
% [[file:figs/phase_gain_margin_real_plant.png]]
% Therefore, even a small change of the plant parameter renders the system unstable even though both the gain margin and the phase margin for the nominal plant are excellent.
% This is due to the fact that the gain and phase margin are robustness indicators corresponding a *pure* change or gain or a *pure* change of phase but not a combination of both.
% #+end_exampl
% Let's now determine a new robustness indicator based on the Nyquist Stability Criteria.
% #+begin_definition
% - Nyquist Stability Criteria (for stable systems) ::
% If the open-loop transfer function $L(s)$ is stable, then the closed-loop system will be unstable for any encirclement of the point $-1$ on the Nyquist plot.
% - Nyquist Plot ::
% The Nyquist plot shows the evolution of $L(j\omega)$ in the complex plane from $\omega = 0 \to \infty$.
% #+end_definition
% #+begin_seealso
% For more information about the /general/ Nyquist Stability Criteria, you may want to look at [[https://www.youtube.com/watch?v=sof3meN96MA][this]] video.
% #+end_seealso
% From the Nyquist stability criteria, it is clear that we want $L(j\omega)$ to be as far as possible from the $-1$ point (called the /unstable point/) in the complex plane.
% This minimum distance is called the *module margin*.
% #+begin_definition
% - Module Margin ::
% The Module Margin $\Delta M$ is defined as the *minimum distance* between the point $-1$ and the loop gain $L(j\omega)$ in the complex plane.
% #+end_definition
% #+begin_exampl
% A typical Nyquist plot is shown in Figure [[fig:module_margin_example]].
% The gain, phase and module margins are graphically shown to have an idea of what they represent.
% Example Plant
k = 1e6; % Stiffness [N/m]
c = 4e2; % Damping [N/(m/s)]
m = 10; % Mass [kg]
G = 1/(m*s^2 + c*s + k); % Plant
% Example Controller
K = 14e8 * ... % Gain
1/(s^2) * ... % Double Integrator
(1 + s/(2*pi*10/sqrt(8)))/(1 + s/(2*pi*10*sqrt(8))); % Lead
L = G*K;
L_resp = squeeze(freqresp(L, freqs, 'Hz'));
% Module Margin
Dm = min(abs(1 + L_resp));
% Phase Gain Margin
[Gm, Pm, Wcg, Wcp] = margin(L);
freqs = logspace(0, 3, 1000);
figure;
hold on;
% Gain Margin
plot([-1, -1/Gm], [0, 0], '-', 'DisplayName', sprintf('$\\Delta G = %.1f$', Gm))
% Phase Margin
theta = -pi:0.01:-pi+Pm*pi/180;
plot(cos(theta), sin(theta), '-', 'DisplayName', sprintf('$\\Delta \\phi = %.1f^o$', Pm));
% Module Margin
theta = 0 : 0.01 : 2*pi;
plot(Dm*cos(theta)-1, Dm*sin(theta), '-', 'DisplayName', sprintf('$\\Delta M = %.1f$', Dm));
% Nyquist Plot
plot(real(L_resp), imag(L_resp), 'k-', 'DisplayName', '$L(j\omega)$')
plot(-1, 0, 'k*', 'HandleVisibility', 'off');
hold off;
xlabel('Real Axis'); ylabel('Imaginary Axis');
xlim([-1.5, 0.5]); ylim([-1, 1]);
axis equal;
legend('location', 'southeast');
+138
View File
@@ -0,0 +1,138 @@
%% Clear Workspace and Close figures
clear; close all; clc;
%% Intialize Laplace variable
s = zpk('s');
% Let's define the system parameters on Matlab.
k = 1e6; % Stiffness [N/m]
c = 4e2; % Damping [N/(m/s)]
m = 10; % Mass [kg]
% And now the system dynamics $G(s)$ and $G_d(s)$.
G = 1/(m*s^2 + c*s + k); % Plant
Gd = (c*s + k)/(m*s^2 + c*s + k); % Disturbance
% with:
% - =dcgain=: low frequency gain
% - =[freq,mag]=: frequency =freq= at which the gain is =mag=
% - =hfgain=: high frequency gain
% #+begin_exampl
% The Matlab code below produces a weighting function with the following characteristics (Figure [[fig:first_order_weight]]):
% - Low frequency gain of 100
% - Gain of 1 at 10Hz
% - High frequency gain of 0.5
Ws = makeweight(1e2, [2*pi*10, 1], 1/2);
freqs = logspace(-2, 2, 1000);
figure;
hold on;
plot(freqs, abs(squeeze(freqresp(Ws, freqs, 'Hz'))), 'k-');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
hold off;
% Let's use this function to generate three weights with the same high and low frequency gains, but but different slopes.
W1 = generateWeight('G0', 1e2, 'G1', 1/2, 'Gc', 1, 'wc', 2*pi*10, 'n', 1);
W2 = generateWeight('G0', 1e2, 'G1', 1/2, 'Gc', 1, 'wc', 2*pi*10, 'n', 2);
W3 = generateWeight('G0', 1e2, 'G1', 1/2, 'Gc', 1, 'wc', 2*pi*10, 'n', 3);
% The obtained shapes are shown in Figure [[fig:high_order_weight]].
freqs = logspace(-2, 2, 1000);
figure;
hold on;
plot(freqs, abs(squeeze(freqresp(W1, freqs, 'Hz'))), ...
'DisplayName', '$n = 1$');
plot(freqs, abs(squeeze(freqresp(W2, freqs, 'Hz'))), ...
'DisplayName', '$n = 2$');
plot(freqs, abs(squeeze(freqresp(W3, freqs, 'Hz'))), ...
'DisplayName', '$n = 3$');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
legend('location', 'northeast');
% #+HTML: </details>
% #+end_exercice
% Let's say we came up with the following weighting function:
Ws = generateWeight('G0', 1e3, ...
'G1', 1/2, ...
'Gc', sqrt(2), 'wc', 2*pi*10, ...
'n', 2);
% The weighting function is then added to the generalized plant.
P = [1 -G;
1 -G];
Pw = blkdiag(Ws, 1)*P;
% And the $\mathcal{H}_\infty$ synthesis is performed on the /weighted/ generalized plant.
K = hinfsyn(Pw, 1, 1, 'Display', 'on');
% #+RESULTS:
% #+begin_example
% Test bounds: 0.5 <= gamma <= 0.51
% gamma X>=0 Y>=0 rho(XY)<1 p/f
% 5.05e-01 0.0e+00 0.0e+00 3.000e-16 p
% Limiting gains...
% 5.05e-01 0.0e+00 0.0e+00 3.461e-16 p
% 5.05e-01 -3.5e+01 # -4.9e-14 1.732e-26 f
% Best performance (actual): 0.503
% #+end_example
% $\gamma \approx 0.5$ means that the $\mathcal{H}_\infty$ synthesis generated a controller $K(s)$ that stabilizes the closed-loop system, and such that the $\mathcal{H}_\infty$ norm of the closed-loop transfer function from $w$ to $z$ is less than $\gamma$:
% \begin{align*}
% & \| W_s(s) S(s) \|_\infty \approx 0.5 \\
% & \Leftrightarrow |S(j\omega)| < \frac{0.5}{|W_s(j\omega)|} \quad \forall \omega
% \end{align*}
% This is indeed what we can see by comparing $|S|$ and $|W_S|$ in Figure [[fig:results_sensitivity_hinf]].
% #+begin_important
% Obtaining $\gamma < 1$ means that the $\mathcal{H}_\infty$ synthesis found a controller such that the specified closed-loop transfer functions are bellow the specified upper bounds.
% Yet, obtaining a $\gamma$ slightly above one does not necessary means the synthesis is unsuccessful.
% It just means that at some frequency, one of the closed-loop transfer functions is above the specified upper bound by a factor $\gamma$.
% #+end_important
figure;
hold on;
plot(freqs, 1./abs(squeeze(freqresp(Ws, freqs, 'Hz'))), 'k--', 'DisplayName', '$|W_s|^{-1}$');
plot(freqs, abs(squeeze(freqresp(1/(1 + K*G), freqs, 'Hz'))), 'k-', 'DisplayName', '$|S|$');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
legend('location', 'southeast', 'FontSize', 8);
@@ -0,0 +1,605 @@
%% Clear Workspace and Close figures
clear; close all; clc;
%% Intialize Laplace variable
s = zpk('s');
% #+name: fig:classical_feedback_test_system_bis
% #+caption: Block diagram corresponding to the example system
% #+RESULTS:
% [[file:figs/ex_test_system_feedback.png]]
% The two transfer functions present in the system are derived and defined below:
k = 1e6; % Stiffness [N/m]
c = 4e2; % Damping [N/(m/s)]
m = 10; % Mass [kg]
% Control Plant
G = 1/(m*s^2 + c*s + k);
% Disturbance dynamics
Gd = (c*s + k)/(m*s^2 + c*s + k);
% We also define the inputs signals that will be used for time domain simulations.
% They are graphically shown in Figure [[fig:ex_inputs_signals]].
% Time Vector
t = 0:1e-4:0.5;
% Reference Input
r = zeros(size(t));
r(t>0.05 & t<=0.25) = 1e-4*(t(t>0.05 & t<=0.25)-0.05);
r(t>0.25) = 2e-5;
% Measurement Noise
Fs = 1e3; % Sampling Frequency [Hz]
Ts = 1/Fs; % Sampling Time [s]
n = sqrt(Fs/2)*randn(1, length(t)); % Signal with an ASD equal to one
n = lsim(1e-6*(s + 2*pi*1e2)^2/(s + 2*pi*1e3)^2/(1+s/2/pi/500), n, t)'; % Shaped noise
% Disturbance
d = zeros(size(t));
d(t>0.3) = 5e-6;
figure;
tiledlayout(2, 2, 'TileSpacing', 'None', 'Padding', 'None');
nexttile;
plot(t, 1e6*r, 'k-')
xlabel('Time [s]');
ylabel('Reference Signal $[\mu m]$');
nexttile;
plot(t, 1e6*n, 'k-')
xlabel('Time [s]');
ylabel('Measurement Noise $[\mu m]$');
nexttile;
plot(t, 1e6*d, 'k-')
xlabel('Time [s]');
ylabel('Disturbance Motion $[\mu m]$');
% #+name: fig:ex_general_plant_sim
% #+caption: Generalized plant that will be used for simulations
% #+RESULTS:
% [[file:figs/ex_general_plant_sim.png]]
% The Generalized plant of Figure [[fig:ex_general_plant_sim]] is defined on Matlab as follows:
Psim = [0 0 Gd G
0 0 0 1
1 -1 -Gd -G];
Psim.InputName = {'r', 'n', 'd', 'u'};
Psim.OutputName = {'y', 'u', 'e'};
% Modern Interpretation of control specifications
% <<sec:ex_specification_interpretation>>
% #+begin_exercice
% 1. Translate the control specifications into wanted shape of closed-loop transfer functions
% 2. Conclude and the closed-loop transfer functions to be shaped
% 3. Chose a general configuration architecture that allows to shape these transfer function
% 4. Using Matlab, define the generalized plant
% #+HTML: <details><summary>Hint</summary>
% #+LATEX: \tcbsubtitle{Hint}
% 1. Make use of Table [[tab:usual_shaping_gang_four]]
% 2. Make use of Table [[tab:usual_shaping_gang_four]]
% 3. See Section [[sec:shaping_multiple_tf]]
% 4. See Section [[sec:shaping_multiple_tf]]
% #+HTML: </details>
% #+end_exercice
% After converting the control specifications into wanted shape of closed-loop transfer functions, we might come up with the Table [[tab:ex_specification_shapes]].
% In such case, we want to shape $S$, $GS$ and $T$.
% #+name: tab:ex_specification_shapes
% #+caption: Control Specifications and associated wanted shape of the closed-loop transfer functions
% #+attr_latex: :environment tabularx :width 0.7\linewidth :align llX
% | <l> | <c> | <l> |
% | *Specification* | *TF* | *Wanted Shape* |
% |--------------------------+-----------+------------------------------------|
% | Follow Step Reference | $S$ | +40dB of slope at low frequency |
% | Reject Disturbances | $S$, $GS$ | Small gain |
% | Reject measurement noise | $T$ | Small high frequency (>100Hz) gain |
% | Robust System | $S$ | Small $\Vert S \Vert_\infty$ |
% To do so, we use to generalized plant shown in Figure [[fig:ex_general_plant]] for the synthesis where the three closed-loop tranfert functions from $w$ to $[z_1\,,z_2\,,z_3]$ are respectively $S$, $GS$ and $T$.
% This generalized plant is defined on Matlab as follows:
P = [1 -1
G -G
0 1
G -G];
% Step 1 - Shaping of $S$
% <<sec:ex_shaping_S>>
% Let's first shape the Sensitivity function as it is usually the most important of the /Gang of four/ closed-loop transfer functions.
% To do so, we have to create a weight $W_1(s)$ that defines the wanted upper bound on $|S(j\omega)|$:
% - small low frequency gain: $|S(j\cdot 0)| = 10^{-3}$
% - minimum crossover frequency of $\approx 10Hz$: $|S(j2\pi 10)| < \frac{1}{\sqrt{2}}$
% - small maximum peak magnitude for robustness properties: $\|S\|_\infty < 2$
% The weighting function is design using the =generateWeigh= function and its inverse shape can be seen in Figure
W1 = generateWeight('G0', 1e3, ...
'G1', 1/2, ...
'Gc', sqrt(2), 'wc', 2*pi*10, ...
'n', 1);
% To not constrain $GS$ and $T$ for the shaping of $S$, $W_2$ and $W_3$ are first taken as very small gains:
W2 = tf(1e-8);
W3 = tf(1e-8);
% The $\mathcal{H}_\infty$ synthesis is performed and the obtained closed-loop transfer functions $S$, $GS$, and $T$ and compared with the upper bounds set by the weighting functions in Figure [[fig:ex_results_1]].
Pw = blkdiag(W1, W2, W3, 1)*P;
K1 = hinfsyn(Pw, 1, 1, 'Display', 'on');
% #+RESULTS:
% #+begin_example
% Test bounds: 0.5 <= gamma <= 0.51
% gamma X>=0 Y>=0 rho(XY)<1 p/f
% 5.05e-01 0.0e+00 0.0e+00 5.511e-14 p
% Limiting gains...
% 5.05e-01 0.0e+00 0.0e+00 1.867e-14 p
% Best performance (actual): 0.502
% #+end_example
% Closed-loop tranfer functions are computed
Z1 = lft(P, K1);
freqs = logspace(-1, 3, 1000);
figure;
tiledlayout(2, 2, 'TileSpacing', 'Tight', 'Padding', 'None');
ax1 = nexttile;
hold on;
plot(freqs, abs(squeeze(freqresp(Z1(1,1), freqs, 'Hz'))), 'DisplayName', 'Step 1');
plot(freqs, 1./abs(squeeze(freqresp(W1, freqs, 'Hz'))), 'k--', 'DisplayName', '$|W|^{-1}$');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
title('S');
legend('location', 'southeast');
ax2 = nexttile;
hold on;
plot(freqs, abs(squeeze(freqresp(Z1(2,1), freqs, 'Hz'))));
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
title('GS');
ax3 = nexttile;
hold on;
plot(freqs, abs(squeeze(freqresp(Z1(3,1), freqs, 'Hz'))));
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
title('T');
ax4 = nexttile;
hold on;
plot(freqs, abs(squeeze(freqresp(K1, freqs, 'Hz'))));
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
title('K');
linkaxes([ax1, ax2, ax3, ax4], 'x')
xlim([freqs(1), freqs(end)]);
% #+name: fig:ex_results_1
% #+caption: Obtained Shape Closed-Loop transfer functions (dashed black lines indicate inverse magnitude of the weighting functions)
% #+RESULTS:
% [[file:figs/ex_results_1.png]]
% Time domain simulation is then performed and the obtained output displacement and control inputs are shown in Figure [[fig:ex_time_domain_1]].
% We can see:
% - we are not able to follow the ramp input. This have to be solved by modifying the weighting function $W_1(s)$
% - we have poor rejection of disturbances. This we be solve by shaping $GS$ in Section [[sec:ex_shaping_GS]]
% - we have quite large effect of the measurement noise. This will be solved by shaping $T$ in Section [[sec:ex_shaping_T]]
% Closed-loop simulation
Z1sim = lft(Psim, K1);
z = lsim(Z1sim, [r;n;d], t);
y1 = z(:,1);
u1 = z(:,2);
figure;
tiledlayout(1, 1, 'TileSpacing', 'None', 'Padding', 'None');
nexttile;
hold on;
plot(t, 1e6*y1, 'DisplayName', 'Step 1');
plot(t, 1e6*r, 'k--', 'DisplayName', '$r$');
hold off;
xlabel('Time [s]'); ylabel('Output $y$ [$\mu m$]');
legend('location', 'southeast');
% #+name: fig:ex_time_domain_1
% #+caption: Time domain simulation results
% #+RESULTS:
% [[file:figs/ex_time_domain_1.png]]
% Remember that in order to follow ramp inputs, the sensitivity function should have a slope of +40dB/dec at low frequency (Table [[tab:usual_shaping_gang_four]]).
% To do so, let's modify $W_1$ to impose a slope of +40dB/dec at low frequency.
% This can simple be done by using a second order weight:
W1 = generateWeight('G0', 1e3, ...
'G1', 1/2, ...
'Gc', sqrt(2), 'wc', 2*pi*15, ...
'n', 2);
% The $\mathcal{H}_\infty$ synthesis is performed using the new weights and the obtained closed-loop shaped are shown in figure [[fig:ex_results_1b]].
% The time domain signals are shown in Figure [[fig:ex_time_domain_1b]] and it is confirmed that the ramps are now follows without static errors.
Pw = blkdiag(W1, W2, W3, 1)*P;
K1b = hinfsyn(Pw, 1, 1, 'Display', 'on');
% Compute the closed-loop transfer function
Z1b = lft(P, K1b);
freqs = logspace(-1, 3, 1000);
figure;
tiledlayout(2, 2, 'TileSpacing', 'Tight', 'Padding', 'None');
ax1 = nexttile;
hold on;
plot(freqs, abs(squeeze(freqresp(Z1(1,1), freqs, 'Hz'))), 'DisplayName', 'Step 1');
plot(freqs, abs(squeeze(freqresp(Z1b(1,1), freqs, 'Hz'))), 'DisplayName', 'Step 1b');
plot(freqs, 1./abs(squeeze(freqresp(W1, freqs, 'Hz'))), 'k--', 'DisplayName', '$|W^{-1}|$');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
title('S');
legend('location', 'southeast');
ax2 = nexttile;
hold on;
plot(freqs, abs(squeeze(freqresp(Z1(2,1), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(Z1b(2,1), freqs, 'Hz'))));
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
title('GS');
ax3 = nexttile;
hold on;
plot(freqs, abs(squeeze(freqresp(Z1(3,1), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(Z1b(3,1), freqs, 'Hz'))));
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
title('T');
ax4 = nexttile;
hold on;
plot(freqs, abs(squeeze(freqresp(K1, freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(K1b, freqs, 'Hz'))));
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
title('K');
linkaxes([ax1, ax2, ax3, ax4], 'x')
xlim([freqs(1), freqs(end)]);
% #+name: fig:ex_results_1b
% #+caption: Obtained Shape Closed-Loop transfer functions
% #+RESULTS:
% [[file:figs/ex_results_1b.png]]
% Closed-loop simulations
Z1bsim = lft(Psim, K1b);
z = lsim(Z1bsim, [r;n;d], t);
y1b = z(:,1);
u1b = z(:,2);
figure;
tiledlayout(1, 1, 'TileSpacing', 'None', 'Padding', 'None');
hold on;
plot(t, 1e6*y1, 'DisplayName', 'Step 1');
plot(t, 1e6*y1b, 'DisplayName', 'Step 1b');
plot(t, 1e6*r, 'k--', 'DisplayName', '$r$');
hold off;
xlabel('Time [s]'); ylabel('Output $y$ [$\mu m$]');
legend('location', 'southeast');
% Step 2 - Shaping of $GS$
% <<sec:ex_shaping_GS>>
% Looking at Figure [[fig:ex_results_2]], it is clear that the rejection of disturbances is not satisfactory.
% This can also be seen by the large peak of $GS$ in Figure [[fig:ex_results_1b]].
% This poor rejection of disturbances is actually due to the fact that the obtain controller has at notch at the resonance frequency of the plant.
% To overcome this issue, we can simply increase the magnitude of $W_2$ to limit the peak magnitude of $GS$
% Let's take $W_2$ as a simple constant gain:
W2 = tf(4e5);
% The $\mathcal{H}_\infty$ Synthesis is performed and the obtained closed-loop transfer functions are shown in Figure [[fig:ex_results_2]].
Pw = blkdiag(W1, W2, W3, 1)*P;
K2 = hinfsyn(Pw, 1, 1, 'Display', 'on');
Z2 = lft(P, K2);
freqs = logspace(-1, 3, 1000);
figure;
tiledlayout(2, 2, 'TileSpacing', 'Tight', 'Padding', 'None');
ax1 = nexttile;
hold on;
plot(freqs, abs(squeeze(freqresp(Z1(1,1), freqs, 'Hz'))), 'DisplayName', 'Step 1');
plot(freqs, abs(squeeze(freqresp(Z1b(1,1), freqs, 'Hz'))), 'DisplayName', 'Step 1b');
plot(freqs, abs(squeeze(freqresp(Z2(1,1), freqs, 'Hz'))), 'DisplayName', 'Step 2');
plot(freqs, 1./abs(squeeze(freqresp(W1, freqs, 'Hz'))), 'k--', 'DisplayName', '$|W^{-1}|$');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
title('S');
legend('location', 'southeast');
ax2 = nexttile;
hold on;
plot(freqs, abs(squeeze(freqresp(Z1(2,1), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(Z1b(2,1), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(Z2(2,1), freqs, 'Hz'))));
plot(freqs, 1./abs(squeeze(freqresp(W2, freqs, 'Hz'))), 'k--');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
title('GS');
ax3 = nexttile;
hold on;
plot(freqs, abs(squeeze(freqresp(Z1(3,1), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(Z1b(3,1), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(Z2(3,1), freqs, 'Hz'))));
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
title('T');
ax4 = nexttile;
hold on;
plot(freqs, abs(squeeze(freqresp(K1, freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(K1b, freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(K2, freqs, 'Hz'))));
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
title('K');
linkaxes([ax1, ax2, ax3, ax4], 'x')
xlim([freqs(1), freqs(end)]);
% #+name: fig:ex_results_2
% #+caption: Obtained Shape Closed-Loop transfer functions
% #+RESULTS:
% [[file:figs/ex_results_2.png]]
% Time domain simulation results are shown in Figure [[fig:ex_time_domain_2]].
% If is shown that indeed, the disturbance rejection performance are much better and only very small oscillation is obtained.
Z2sim = lft(Psim, K2);
z = lsim(Z2sim, [r;n;d], t);
y2 = z(:,1);
u2 = z(:,2);
figure;
tiledlayout(1, 2, 'TileSpacing', 'None', 'Padding', 'None');
hold on;
plot(t, 1e6*y1, 'DisplayName', 'Step 1');
plot(t, 1e6*y1b, 'DisplayName', 'Step 1b');
plot(t, 1e6*y2, 'DisplayName', 'Step 2');
plot(t, 1e6*r, 'k--', 'DisplayName', '$r$');
hold off;
xlabel('Time [s]'); ylabel('Output $y$ [$\mu m$]');
legend('location', 'southeast');
% Step 3 - Shaping of $T$
% <<sec:ex_shaping_T>>
% Finally, we want to limit the effect of the noise on the displacement output.
% To do so, $T$ is shaped such that its high frequency gain is reduced.
% This is done by increasing the high frequency gain of the weighting function $W_3$ until the $\mathcal{H}_\infty$ synthesis gives $\gamma \approx 1$.
% The final weighting function $W_3$ is defined as follows:
W3 = generateWeight('G0', 1e-1, ...
'G1', 1e4, ...
'Gc', 1, 'wc', 2*pi*70, ...
'n', 2);
% The $\mathcal{H}_\infty$ synthesis is performed and $\gamma$ is closed to one.
Pw = blkdiag(W1, W2, W3, 1)*P;
K3 = hinfsyn(Pw, 1, 1, 'Display', 'on');
% #+RESULTS:
% #+begin_example
% Test bounds: 0.622 <= gamma <= 1.62
% gamma X>=0 Y>=0 rho(XY)<1 p/f
% 1.01e+00 -1.3e+07 # -6.4e-18 3.459e-04 f
% 1.28e+00 0.0e+00 0.0e+00 5.369e-02 p
% 1.13e+00 3.8e-15 0.0e+00 1.695e-01 p
% 1.07e+00 -5.0e-08 -1.2e-19 1.622e+00 # f
% 1.10e+00 0.0e+00 0.0e+00 3.147e-01 p
% 1.08e+00 0.0e+00 0.0e+00 5.327e-01 p
% 1.08e+00 3.4e-15 0.0e+00 8.052e-01 p
% Best performance (actual): 1.08
% #+end_example
% The obtained closed-loop transfer functions are shown in Figure [[fig:ex_results_3]] and we can obverse that:
% - The high frequency gain of $T$ is indeed reduced
% - This comes as the expense of a large magnitude both $GS$ and $S$.
% This means we will probably have slightly less good disturbance rejection and tracking performances.
Z3 = lft(P, K3);
freqs = logspace(-1, 3, 1000);
figure;
tiledlayout(2, 2, 'TileSpacing', 'Tight', 'Padding', 'None');
ax1 = nexttile;
hold on;
plot(freqs, abs(squeeze(freqresp(Z1(1,1), freqs, 'Hz'))), 'DisplayName', 'Step 1');
plot(freqs, abs(squeeze(freqresp(Z1b(1,1), freqs, 'Hz'))), 'DisplayName', 'Step 1b');
plot(freqs, abs(squeeze(freqresp(Z2(1,1), freqs, 'Hz'))), 'DisplayName', 'Step 2');
plot(freqs, abs(squeeze(freqresp(Z3(1,1), freqs, 'Hz'))), 'DisplayName', 'Step 3');
plot(freqs, 1./abs(squeeze(freqresp(W1, freqs, 'Hz'))), 'k--', 'DisplayName', '$|W^{-1}|$');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
title('S');
legend('location', 'southeast');
ax2 = nexttile;
hold on;
plot(freqs, abs(squeeze(freqresp(Z1(2,1), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(Z1b(2,1), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(Z2(2,1), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(Z3(2,1), freqs, 'Hz'))));
plot(freqs, 1./abs(squeeze(freqresp(W2, freqs, 'Hz'))), 'k--');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
title('GS');
ax3 = nexttile;
hold on;
plot(freqs, abs(squeeze(freqresp(Z1(3,1), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(Z1b(3,1), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(Z2(3,1), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(Z3(3,1), freqs, 'Hz'))));
plot(freqs, 1./abs(squeeze(freqresp(W3, freqs, 'Hz'))), 'k--');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
title('T');
ax4 = nexttile;
hold on;
plot(freqs, abs(squeeze(freqresp(K1, freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(K1b, freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(K2, freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(K3, freqs, 'Hz'))));
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
title('K');
linkaxes([ax1, ax2, ax3, ax4], 'x')
xlim([freqs(1), freqs(end)]);
% #+name: fig:ex_results_3
% #+caption: Obtained Shape Closed-Loop transfer functions
% #+RESULTS:
% [[file:figs/ex_results_3.png]]
% The time domain simulation signals are shown in Figure [[fig:ex_time_domain_3]].
% We can indeed see a slightly less good disturbance rejection.
% However, the vibrations induced by the sensor noise is well reduced.
% This can be seen when zooming on the output signal in Figure [[fig:ex_time_domaim_3_zoom]].
Z3sim = lft(Psim, K3);
z = lsim(Z3sim, [r;n;d], t);
y3 = z(:,1);
u3 = z(:,2);
figure;
tiledlayout(1, 1, 'TileSpacing', 'None', 'Padding', 'None');
hold on;
plot(t, 1e6*y1, 'DisplayName', 'Step 1');
plot(t, 1e6*y1b, 'DisplayName', 'Step 1b');
plot(t, 1e6*y2, 'DisplayName', 'Step 2');
plot(t, 1e6*y3, 'DisplayName', 'Step 3');
plot(t, 1e6*r, 'k--', 'DisplayName', '$r$');
hold off;
xlabel('Time [s]'); ylabel('Output $y$ [$\mu m$]');
legend('location', 'southeast');
% #+name: fig:ex_time_domain_3
% #+caption: Time domain simulation results
% #+RESULTS:
% [[file:figs/ex_time_domain_3.png]]
figure;
hold on;
plot(t, 1e6*y1, 'DisplayName', 'Step 1');
plot(t, 1e6*y1b, 'DisplayName', 'Step 1b');
plot(t, 1e6*y2, 'DisplayName', 'Step 2');
plot(t, 1e6*y3, 'DisplayName', 'Step 3');
plot(t, 1e6*r, 'k--', 'DisplayName', '$r$');
hold off;
xlabel('Time [s]'); ylabel('Output $y$ [$\mu m$]');
legend('location', 'southeast');
xlim([0.4, 0.5])
+73 -73
View File
@@ -3,111 +3,111 @@
\usepackage{caption,tabularx,booktabs} \usepackage{caption,tabularx,booktabs}
\usepackage{biblatex} \usepackage{biblatex}
\addbibresource{ref.bib} \addbibresource{ref.bib}
\usepackage{fontawesome} \usepackage{fontawesome}
\usepackage{caption} \usepackage{caption}
\usepackage{subcaption} \usepackage{subcaption}
\captionsetup[figure]{labelfont=bf} \captionsetup[figure]{labelfont=bf}
\captionsetup[subfigure]{labelfont=bf} \captionsetup[subfigure]{labelfont=bf}
\captionsetup[listing]{labelfont=bf} \captionsetup[listing]{labelfont=bf}
\captionsetup[table]{labelfont=bf} \captionsetup[table]{labelfont=bf}
\usepackage{xcolor} \usepackage{xcolor}
\definecolor{my-blue}{HTML}{6b7adb} \definecolor{my-blue}{HTML}{6b7adb}
\definecolor{my-pale-blue}{HTML}{e6e9f9} \definecolor{my-pale-blue}{HTML}{e6e9f9}
\definecolor{my-red}{HTML}{db6b6b} \definecolor{my-red}{HTML}{db6b6b}
\definecolor{my-pale-red}{HTML}{f9e6e6} \definecolor{my-pale-red}{HTML}{f9e6e6}
\definecolor{my-green}{HTML}{6bdbb6} \definecolor{my-green}{HTML}{6bdbb6}
\definecolor{my-pale-green}{HTML}{e6f9f3} \definecolor{my-pale-green}{HTML}{e6f9f3}
\definecolor{my-yellow}{HTML}{dbd26b} \definecolor{my-yellow}{HTML}{dbd26b}
\definecolor{my-pale-yellow}{HTML}{f9f7e6} \definecolor{my-pale-yellow}{HTML}{f9f7e6}
\definecolor{my-orange}{HTML}{dba76b} \definecolor{my-orange}{HTML}{dba76b}
\definecolor{my-pale-orange}{HTML}{f9f0e6} \definecolor{my-pale-orange}{HTML}{f9f0e6}
\definecolor{my-grey}{HTML}{a3a3a3} \definecolor{my-grey}{HTML}{a3a3a3}
\definecolor{my-pale-grey}{HTML}{f0f0f0} \definecolor{my-pale-grey}{HTML}{f0f0f0}
\definecolor{my-turq}{HTML}{6bc7db} \definecolor{my-turq}{HTML}{6bc7db}
\definecolor{my-pale-turq}{HTML}{e6f6f9} \definecolor{my-pale-turq}{HTML}{e6f6f9}
\usepackage{inconsolata} \usepackage{inconsolata}
\usepackage[newfloat=true, chapter]{minted} \usepackage[newfloat=true, chapter]{minted}
\usemintedstyle{autumn} \usemintedstyle{autumn}
\setminted{frame=lines,breaklines=true,tabsize=4,fontsize=\scriptsize,autogobble=true,labelposition=topline,bgcolor=my-pale-grey} \setminted{frame=lines,breaklines=true,tabsize=4,fontsize=\scriptsize,autogobble=true,labelposition=topline,bgcolor=my-pale-grey}
\setminted[matlab]{label=Matlab} \setminted[matlab]{label=Matlab}
\setminted[latex]{label=LaTeX} \setminted[latex]{label=LaTeX}
\setminted[bash]{label=Bash} \setminted[bash]{label=Bash}
\setminted[python]{label=Python} \setminted[python]{label=Python}
\setminted[text]{label=Results} \setminted[text]{label=Results}
\setmintedinline{fontsize=\normalsize,bgcolor=my-pale-grey} \setmintedinline{fontsize=\normalsize,bgcolor=my-pale-grey}
\usepackage[most]{tcolorbox} \usepackage[most]{tcolorbox}
\tcbuselibrary{minted} \tcbuselibrary{minted}
\newtcolorbox{seealso}{ enhanced,breakable,colback=my-pale-grey,colframe=my-grey,fonttitle=\bfseries,title=See Also} \newtcolorbox{seealso}[1][]{ enhanced,breakable,colback=my-pale-grey,colframe=my-grey,fonttitle=\bfseries,title=See Also,#1}
\newtcolorbox{hint}{ enhanced,breakable,colback=my-pale-grey,colframe=my-grey,fonttitle=\bfseries,title=Hint} \newtcolorbox{hint}[1][]{ enhanced,breakable,colback=my-pale-grey,colframe=my-grey,fonttitle=\bfseries,title=Hint,#1}
\newtcolorbox{definition}{enhanced,breakable,colback=my-pale-red, colframe=my-red, fonttitle=\bfseries,title=Definition} \newtcolorbox{definition}[1][]{enhanced,breakable,colback=my-pale-red, colframe=my-red, fonttitle=\bfseries,title=Definition,#1}
\newtcolorbox{important}{ enhanced,breakable,colback=my-pale-red, colframe=my-red, fonttitle=\bfseries,title=Important} \newtcolorbox{important}[1][]{ enhanced,breakable,colback=my-pale-red, colframe=my-red, fonttitle=\bfseries,title=Important,#1}
\newtcolorbox{exampl}[1][]{ enhanced,breakable,colback=my-pale-green,colframe=my-green,fonttitle=\bfseries,title=Example,#1} \newtcolorbox{exampl}[1][]{ enhanced,breakable,colback=my-pale-green,colframe=my-green,fonttitle=\bfseries,title=Example,#1}
\newtcolorbox{exercice}{ enhanced,breakable,colback=my-pale-yellow,colframe=my-yellow,fonttitle=\bfseries,title=Exercice} \newtcolorbox{exercice}[1][]{ enhanced,breakable,colback=my-pale-yellow,colframe=my-yellow,fonttitle=\bfseries,title=Exercice,#1}
\newtcolorbox{question}{ enhanced,breakable,colback=my-pale-yellow,colframe=my-yellow,fonttitle=\bfseries,title=Question} \newtcolorbox{question}[1][]{ enhanced,breakable,colback=my-pale-yellow,colframe=my-yellow,fonttitle=\bfseries,title=Question,#1}
\newtcolorbox{answer}{ enhanced,breakable,colback=my-pale-turq,colframe=my-turq,fonttitle=\bfseries,title=Answer} \newtcolorbox{answer}[1][]{ enhanced,breakable,colback=my-pale-turq,colframe=my-turq,fonttitle=\bfseries,title=Answer,#1}
\newtcolorbox{summary}{ enhanced,breakable,colback=my-pale-blue,colframe=my-blue,fonttitle=\bfseries,title=Summary} \newtcolorbox{summary}[1][]{ enhanced,breakable,colback=my-pale-blue,colframe=my-blue,fonttitle=\bfseries,title=Summary,#1}
\newtcolorbox{caution}{ enhanced,breakable,colback=my-pale-orange,colframe=my-orange,fonttitle=\bfseries,title=Caution} \newtcolorbox{caution}[1][]{ enhanced,breakable,colback=my-pale-orange,colframe=my-orange,fonttitle=\bfseries,title=Caution,#1}
\newtcolorbox{warning}{ enhanced,breakable,colback=my-pale-orange,colframe=my-orange,fonttitle=\bfseries,title=Warning} \newtcolorbox{warning}[1][]{ enhanced,breakable,colback=my-pale-orange,colframe=my-orange,fonttitle=\bfseries,title=Warning,#1}
\newtcolorbox{my-quote}[1]{% \newtcolorbox{my-quote}[1]{%
colback=my-pale-grey, colback=my-pale-grey,
grow to right by=-10mm, grow to right by=-10mm,
grow to left by=-10mm, grow to left by=-10mm,
boxrule=0pt, boxrule=0pt,
boxsep=0pt, boxsep=0pt,
breakable, breakable,
enhanced jigsaw, enhanced jigsaw,
borderline west={4pt}{0pt}{my-grey}} borderline west={4pt}{0pt}{my-grey}}
\renewenvironment{quote}{\begin{my-quote}}{\end{my-quote}} \renewenvironment{quote}{\begin{my-quote}}{\end{my-quote}}
\newtcolorbox{my-verse}[1]{% \newtcolorbox{my-verse}[1]{%
colback=my-pale-grey, colback=my-pale-grey,
grow to right by=-10mm, grow to right by=-10mm,
grow to left by=-10mm, grow to left by=-10mm,
boxrule=0pt, boxrule=0pt,
boxsep=0pt, boxsep=0pt,
breakable, breakable,
enhanced jigsaw, enhanced jigsaw,
borderline west={4pt}{0pt}{my-grey}} borderline west={4pt}{0pt}{my-grey}}
\renewenvironment{verse}{\begin{my-verse}}{\end{my-verse}} \renewenvironment{verse}{\begin{my-verse}}{\end{my-verse}}
\usepackage{environ}% http://ctan.org/pkg/environ \usepackage{environ}% http://ctan.org/pkg/environ
\NewEnviron{aside}{% \NewEnviron{aside}{%
\marginpar{\BODY} \marginpar{\BODY}
} }
\renewenvironment{verbatim}{\VerbatimEnvironment\begin{minted}[]{text}}{\end{minted}} \renewenvironment{verbatim}{\VerbatimEnvironment\begin{minted}[]{text}}{\end{minted}}
\usepackage{soul} \usepackage{soul}
\sethlcolor{my-pale-grey} \sethlcolor{my-pale-grey}
\let\OldTexttt\texttt \let\OldTexttt\texttt
\renewcommand{\texttt}[1]{{\ttfamily\hl{\mbox{\,#1\,}}}} \renewcommand{\texttt}[1]{{\ttfamily\hl{\mbox{\,#1\,}}}}
\makeatletter \makeatletter
\preto\Gin@extensions{png,} \preto\Gin@extensions{png,}
\DeclareGraphicsRule{.png}{pdf}{.pdf}{\noexpand\Gin@base.pdf} \DeclareGraphicsRule{.png}{pdf}{.pdf}{\noexpand\Gin@base.pdf}
\makeatother \makeatother
\usepackage{hyperref} \usepackage{hyperref}
\hypersetup{ \hypersetup{
colorlinks = true, colorlinks = true,
allcolors = my-blue allcolors = my-blue
} }
\usepackage{hypcap} \usepackage{hypcap}